Merge "Prevent unnecessary connector been created in fallback connection."
diff --git a/Android.bp b/Android.bp
index 7e97e66..f032e62 100644
--- a/Android.bp
+++ b/Android.bp
@@ -191,10 +191,6 @@
"core/java/android/hardware/input/IInputDevicesChangedListener.aidl",
"core/java/android/hardware/input/ITabletModeChangedListener.aidl",
"core/java/android/hardware/iris/IIrisService.aidl",
- "core/java/android/hardware/location/IActivityRecognitionHardware.aidl",
- "core/java/android/hardware/location/IActivityRecognitionHardwareClient.aidl",
- "core/java/android/hardware/location/IActivityRecognitionHardwareSink.aidl",
- "core/java/android/hardware/location/IActivityRecognitionHardwareWatcher.aidl",
"core/java/android/hardware/location/IGeofenceHardware.aidl",
"core/java/android/hardware/location/IGeofenceHardwareCallback.aidl",
"core/java/android/hardware/location/IGeofenceHardwareMonitorCallback.aidl",
@@ -305,6 +301,7 @@
"core/java/android/service/euicc/IUpdateSubscriptionNicknameCallback.aidl",
"core/java/android/service/gatekeeper/IGateKeeperService.aidl",
"core/java/android/service/contentcapture/IContentCaptureService.aidl",
+ "core/java/android/service/contentcapture/IContentCaptureServiceCallback.aidl",
"core/java/android/service/notification/INotificationListener.aidl",
"core/java/android/service/notification/IStatusBarNotificationHolder.aidl",
"core/java/android/service/notification/IConditionListener.aidl",
@@ -357,6 +354,8 @@
"core/java/android/service/textclassifier/ITextLanguageCallback.aidl",
"core/java/android/service/textclassifier/ITextLinksCallback.aidl",
"core/java/android/service/textclassifier/ITextSelectionCallback.aidl",
+ "core/java/android/service/attention/IAttentionService.aidl",
+ "core/java/android/service/attention/IAttentionCallback.aidl",
"core/java/android/view/accessibility/IAccessibilityInteractionConnection.aidl",
"core/java/android/view/accessibility/IAccessibilityInteractionConnectionCallback.aidl",
"core/java/android/view/accessibility/IAccessibilityManager.aidl",
@@ -476,6 +475,7 @@
"media/java/android/media/IMediaRouterClient.aidl",
"media/java/android/media/IMediaRouterService.aidl",
"media/java/android/media/IMediaSession2.aidl",
+ "media/java/android/media/IMediaSession2Service.aidl",
"media/java/android/media/IMediaScannerListener.aidl",
"media/java/android/media/IMediaScannerService.aidl",
"media/java/android/media/IPlaybackConfigDispatcher.aidl",
@@ -887,7 +887,12 @@
"core/java/android/net/IIpMemoryStore.aidl",
"core/java/android/net/INetworkStackConnector.aidl",
"core/java/android/net/INetworkStackStatusCallback.aidl",
+ "core/java/android/net/IpPrefixParcelable.aidl",
+ "core/java/android/net/LinkAddressParcelable.aidl",
+ "core/java/android/net/LinkPropertiesParcelable.aidl",
"core/java/android/net/PrivateDnsConfigParcel.aidl",
+ "core/java/android/net/ProxyInfoParcelable.aidl",
+ "core/java/android/net/RouteInfoParcelable.aidl",
"core/java/android/net/dhcp/DhcpServingParamsParcel.aidl",
"core/java/android/net/dhcp/IDhcpServer.aidl",
"core/java/android/net/dhcp/IDhcpServerCallbacks.aidl",
@@ -1067,6 +1072,7 @@
"core/java/android/annotation/IntDef.java",
"core/java/android/annotation/NonNull.java",
"core/java/android/annotation/SystemApi.java",
+ "core/java/android/annotation/TestApi.java",
"core/java/android/os/HwBinder.java",
"core/java/android/os/HwBlob.java",
"core/java/android/os/HwParcel.java",
@@ -1316,7 +1322,6 @@
"ext",
"framework",
"voip-common",
- "android.test.mock.impl",
],
local_sourcepaths: frameworks_base_subdirs,
installable: false,
diff --git a/Android.mk b/Android.mk
index e3cc275..9f7bf99 100644
--- a/Android.mk
+++ b/Android.mk
@@ -80,6 +80,8 @@
# ==== hiddenapi lists =======================================
.KATI_RESTAT: $(INTERNAL_PLATFORM_HIDDENAPI_FLAGS)
$(INTERNAL_PLATFORM_HIDDENAPI_FLAGS): \
+ PRIVATE_FLAGS_INPUTS := $(PRIVATE_FLAGS_INPUTS) $(SOONG_HIDDENAPI_FLAGS)
+$(INTERNAL_PLATFORM_HIDDENAPI_FLAGS): \
frameworks/base/tools/hiddenapi/generate_hiddenapi_lists.py \
frameworks/base/config/hiddenapi-greylist.txt \
frameworks/base/config/hiddenapi-greylist-max-p.txt \
@@ -87,7 +89,8 @@
frameworks/base/config/hiddenapi-force-blacklist.txt \
$(INTERNAL_PLATFORM_HIDDENAPI_PUBLIC_LIST) \
$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST) \
- $(INTERNAL_PLATFORM_REMOVED_DEX_API_FILE)
+ $(INTERNAL_PLATFORM_REMOVED_DEX_API_FILE) \
+ $(SOONG_HIDDENAPI_FLAGS)
frameworks/base/tools/hiddenapi/generate_hiddenapi_lists.py \
--public $(INTERNAL_PLATFORM_HIDDENAPI_PUBLIC_LIST) \
--private $(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST) \
diff --git a/api/current.txt b/api/current.txt
index 88da7e9..6122e52 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -1,3 +1,4 @@
+// Signature format: 2.0
package android {
public final class Manifest {
@@ -6,183 +7,183 @@
public static final class Manifest.permission {
ctor public Manifest.permission();
- field public static final java.lang.String ACCEPT_HANDOVER = "android.permission.ACCEPT_HANDOVER";
- field public static final java.lang.String ACCESS_BACKGROUND_LOCATION = "android.permission.ACCESS_BACKGROUND_LOCATION";
- field public static final java.lang.String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES";
- field public static final java.lang.String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION";
- field public static final java.lang.String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION";
- field public static final java.lang.String ACCESS_LOCATION_EXTRA_COMMANDS = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS";
- field public static final java.lang.String ACCESS_MEDIA_LOCATION = "android.permission.ACCESS_MEDIA_LOCATION";
- field public static final java.lang.String ACCESS_NETWORK_STATE = "android.permission.ACCESS_NETWORK_STATE";
- field public static final java.lang.String ACCESS_NOTIFICATION_POLICY = "android.permission.ACCESS_NOTIFICATION_POLICY";
- field public static final java.lang.String ACCESS_WIFI_STATE = "android.permission.ACCESS_WIFI_STATE";
- field public static final java.lang.String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER";
- field public static final java.lang.String ACTIVITY_RECOGNITION = "android.permission.ACTIVITY_RECOGNITION";
- field public static final java.lang.String ADD_VOICEMAIL = "com.android.voicemail.permission.ADD_VOICEMAIL";
- field public static final java.lang.String ANSWER_PHONE_CALLS = "android.permission.ANSWER_PHONE_CALLS";
- field public static final java.lang.String BATTERY_STATS = "android.permission.BATTERY_STATS";
- field public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
- field public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
- field public static final java.lang.String BIND_AUTOFILL_SERVICE = "android.permission.BIND_AUTOFILL_SERVICE";
- field public static final java.lang.String BIND_CALL_REDIRECTION_SERVICE = "android.permission.BIND_CALL_REDIRECTION_SERVICE";
- field public static final deprecated java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
- field public static final java.lang.String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
- field public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
- field public static final java.lang.String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE";
- field public static final java.lang.String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN";
- field public static final java.lang.String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE";
- field public static final java.lang.String BIND_INCALL_SERVICE = "android.permission.BIND_INCALL_SERVICE";
- field public static final java.lang.String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD";
- field public static final java.lang.String BIND_MIDI_DEVICE_SERVICE = "android.permission.BIND_MIDI_DEVICE_SERVICE";
- field public static final java.lang.String BIND_NFC_SERVICE = "android.permission.BIND_NFC_SERVICE";
- field public static final java.lang.String BIND_NOTIFICATION_LISTENER_SERVICE = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
- field public static final java.lang.String BIND_PRINT_SERVICE = "android.permission.BIND_PRINT_SERVICE";
- field public static final java.lang.String BIND_QUICK_SETTINGS_TILE = "android.permission.BIND_QUICK_SETTINGS_TILE";
- field public static final java.lang.String BIND_REMOTEVIEWS = "android.permission.BIND_REMOTEVIEWS";
- field public static final java.lang.String BIND_SCREENING_SERVICE = "android.permission.BIND_SCREENING_SERVICE";
- field public static final java.lang.String BIND_SMS_APP_SERVICE = "android.permission.BIND_SMS_APP_SERVICE";
- field public static final java.lang.String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE";
- field public static final java.lang.String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE";
- field public static final java.lang.String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT";
- field public static final java.lang.String BIND_VISUAL_VOICEMAIL_SERVICE = "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE";
- field public static final java.lang.String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION";
- field public static final java.lang.String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE";
- field public static final java.lang.String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE";
- field public static final java.lang.String BIND_WALLPAPER = "android.permission.BIND_WALLPAPER";
- field public static final java.lang.String BLUETOOTH = "android.permission.BLUETOOTH";
- field public static final java.lang.String BLUETOOTH_ADMIN = "android.permission.BLUETOOTH_ADMIN";
- field public static final java.lang.String BLUETOOTH_PRIVILEGED = "android.permission.BLUETOOTH_PRIVILEGED";
- field public static final java.lang.String BODY_SENSORS = "android.permission.BODY_SENSORS";
- field public static final java.lang.String BROADCAST_PACKAGE_REMOVED = "android.permission.BROADCAST_PACKAGE_REMOVED";
- field public static final java.lang.String BROADCAST_SMS = "android.permission.BROADCAST_SMS";
- field public static final java.lang.String BROADCAST_STICKY = "android.permission.BROADCAST_STICKY";
- field public static final java.lang.String BROADCAST_WAP_PUSH = "android.permission.BROADCAST_WAP_PUSH";
- field public static final java.lang.String CALL_COMPANION_APP = "android.permission.CALL_COMPANION_APP";
- field public static final java.lang.String CALL_PHONE = "android.permission.CALL_PHONE";
- field public static final java.lang.String CALL_PRIVILEGED = "android.permission.CALL_PRIVILEGED";
- field public static final java.lang.String CAMERA = "android.permission.CAMERA";
- field public static final java.lang.String CAPTURE_AUDIO_OUTPUT = "android.permission.CAPTURE_AUDIO_OUTPUT";
- field public static final java.lang.String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE";
- field public static final java.lang.String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION";
- field public static final java.lang.String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE";
- field public static final java.lang.String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE";
- field public static final java.lang.String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE";
- field public static final java.lang.String CLEAR_APP_CACHE = "android.permission.CLEAR_APP_CACHE";
- field public static final java.lang.String CONTROL_LOCATION_UPDATES = "android.permission.CONTROL_LOCATION_UPDATES";
- field public static final java.lang.String DELETE_CACHE_FILES = "android.permission.DELETE_CACHE_FILES";
- field public static final java.lang.String DELETE_PACKAGES = "android.permission.DELETE_PACKAGES";
- field public static final java.lang.String DIAGNOSTIC = "android.permission.DIAGNOSTIC";
- field public static final java.lang.String DISABLE_KEYGUARD = "android.permission.DISABLE_KEYGUARD";
- field public static final java.lang.String DUMP = "android.permission.DUMP";
- field public static final java.lang.String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR";
- field public static final java.lang.String FACTORY_TEST = "android.permission.FACTORY_TEST";
- field public static final java.lang.String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE";
- field public static final java.lang.String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS";
- field public static final java.lang.String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED";
- field public static final java.lang.String GET_AND_REQUEST_SCREEN_LOCK_COMPLEXITY = "android.permission.GET_AND_REQUEST_SCREEN_LOCK_COMPLEXITY";
- field public static final java.lang.String GET_PACKAGE_SIZE = "android.permission.GET_PACKAGE_SIZE";
- field public static final deprecated java.lang.String GET_TASKS = "android.permission.GET_TASKS";
- field public static final java.lang.String GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH";
- field public static final java.lang.String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER";
- field public static final java.lang.String INSTALL_PACKAGES = "android.permission.INSTALL_PACKAGES";
- field public static final java.lang.String INSTALL_SHORTCUT = "com.android.launcher.permission.INSTALL_SHORTCUT";
- field public static final java.lang.String INSTANT_APP_FOREGROUND_SERVICE = "android.permission.INSTANT_APP_FOREGROUND_SERVICE";
- field public static final java.lang.String INTERNET = "android.permission.INTERNET";
- field public static final java.lang.String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES";
- field public static final java.lang.String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
- field public static final java.lang.String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS";
- field public static final java.lang.String MANAGE_OWN_CALLS = "android.permission.MANAGE_OWN_CALLS";
- field public static final java.lang.String MASTER_CLEAR = "android.permission.MASTER_CLEAR";
- field public static final java.lang.String MEDIA_CONTENT_CONTROL = "android.permission.MEDIA_CONTENT_CONTROL";
- field public static final java.lang.String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS";
- field public static final java.lang.String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE";
- field public static final java.lang.String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS";
- field public static final java.lang.String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS";
- field public static final java.lang.String NFC = "android.permission.NFC";
- field public static final java.lang.String NFC_TRANSACTION_EVENT = "android.permission.NFC_TRANSACTION_EVENT";
- field public static final java.lang.String PACKAGE_USAGE_STATS = "android.permission.PACKAGE_USAGE_STATS";
- field public static final deprecated java.lang.String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";
- field public static final java.lang.String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";
- field public static final java.lang.String READ_CALENDAR = "android.permission.READ_CALENDAR";
- field public static final java.lang.String READ_CALL_LOG = "android.permission.READ_CALL_LOG";
- field public static final java.lang.String READ_CONTACTS = "android.permission.READ_CONTACTS";
- field public static final deprecated java.lang.String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";
- field public static final deprecated java.lang.String READ_INPUT_STATE = "android.permission.READ_INPUT_STATE";
- field public static final java.lang.String READ_LOGS = "android.permission.READ_LOGS";
- field public static final java.lang.String READ_MEDIA_AUDIO = "android.permission.READ_MEDIA_AUDIO";
- field public static final java.lang.String READ_MEDIA_IMAGES = "android.permission.READ_MEDIA_IMAGES";
- field public static final java.lang.String READ_MEDIA_VIDEO = "android.permission.READ_MEDIA_VIDEO";
- field public static final java.lang.String READ_PHONE_NUMBERS = "android.permission.READ_PHONE_NUMBERS";
- field public static final java.lang.String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE";
- field public static final java.lang.String READ_SMS = "android.permission.READ_SMS";
- field public static final java.lang.String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS";
- field public static final java.lang.String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS";
- field public static final java.lang.String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL";
- field public static final java.lang.String REBOOT = "android.permission.REBOOT";
- field public static final java.lang.String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";
- field public static final java.lang.String RECEIVE_MMS = "android.permission.RECEIVE_MMS";
- field public static final java.lang.String RECEIVE_SMS = "android.permission.RECEIVE_SMS";
- field public static final java.lang.String RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH";
- field public static final java.lang.String RECORD_AUDIO = "android.permission.RECORD_AUDIO";
- field public static final java.lang.String REORDER_TASKS = "android.permission.REORDER_TASKS";
- field public static final java.lang.String REQUEST_COMPANION_RUN_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND";
- field public static final java.lang.String REQUEST_COMPANION_USE_DATA_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND";
- field public static final java.lang.String REQUEST_DELETE_PACKAGES = "android.permission.REQUEST_DELETE_PACKAGES";
- field public static final java.lang.String REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
- field public static final java.lang.String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES";
- field public static final deprecated java.lang.String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";
- field public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
- field public static final java.lang.String SEND_SMS = "android.permission.SEND_SMS";
- field public static final java.lang.String SET_ALARM = "com.android.alarm.permission.SET_ALARM";
- field public static final java.lang.String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";
- field public static final java.lang.String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";
- field public static final java.lang.String SET_DEBUG_APP = "android.permission.SET_DEBUG_APP";
- field public static final deprecated java.lang.String SET_PREFERRED_APPLICATIONS = "android.permission.SET_PREFERRED_APPLICATIONS";
- field public static final java.lang.String SET_PROCESS_LIMIT = "android.permission.SET_PROCESS_LIMIT";
- field public static final java.lang.String SET_TIME = "android.permission.SET_TIME";
- field public static final java.lang.String SET_TIME_ZONE = "android.permission.SET_TIME_ZONE";
- field public static final java.lang.String SET_WALLPAPER = "android.permission.SET_WALLPAPER";
- field public static final java.lang.String SET_WALLPAPER_HINTS = "android.permission.SET_WALLPAPER_HINTS";
- field public static final java.lang.String SIGNAL_PERSISTENT_PROCESSES = "android.permission.SIGNAL_PERSISTENT_PROCESSES";
- field public static final java.lang.String SMS_FINANCIAL_TRANSACTIONS = "android.permission.SMS_FINANCIAL_TRANSACTIONS";
- field public static final java.lang.String STATUS_BAR = "android.permission.STATUS_BAR";
- field public static final java.lang.String SYSTEM_ALERT_WINDOW = "android.permission.SYSTEM_ALERT_WINDOW";
- field public static final java.lang.String TRANSMIT_IR = "android.permission.TRANSMIT_IR";
- field public static final java.lang.String UNINSTALL_SHORTCUT = "com.android.launcher.permission.UNINSTALL_SHORTCUT";
- field public static final java.lang.String UPDATE_DEVICE_STATS = "android.permission.UPDATE_DEVICE_STATS";
- field public static final java.lang.String USE_BIOMETRIC = "android.permission.USE_BIOMETRIC";
- field public static final deprecated java.lang.String USE_FINGERPRINT = "android.permission.USE_FINGERPRINT";
- field public static final java.lang.String USE_FULL_SCREEN_INTENT = "android.permission.USE_FULL_SCREEN_INTENT";
- field public static final java.lang.String USE_SIP = "android.permission.USE_SIP";
- field public static final java.lang.String VIBRATE = "android.permission.VIBRATE";
- field public static final java.lang.String WAKE_LOCK = "android.permission.WAKE_LOCK";
- field public static final java.lang.String WRITE_APN_SETTINGS = "android.permission.WRITE_APN_SETTINGS";
- field public static final java.lang.String WRITE_CALENDAR = "android.permission.WRITE_CALENDAR";
- field public static final java.lang.String WRITE_CALL_LOG = "android.permission.WRITE_CALL_LOG";
- field public static final java.lang.String WRITE_CONTACTS = "android.permission.WRITE_CONTACTS";
- field public static final deprecated java.lang.String WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE";
- field public static final java.lang.String WRITE_GSERVICES = "android.permission.WRITE_GSERVICES";
- field public static final java.lang.String WRITE_SECURE_SETTINGS = "android.permission.WRITE_SECURE_SETTINGS";
- field public static final java.lang.String WRITE_SETTINGS = "android.permission.WRITE_SETTINGS";
- field public static final java.lang.String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS";
- field public static final java.lang.String WRITE_VOICEMAIL = "com.android.voicemail.permission.WRITE_VOICEMAIL";
+ field public static final String ACCEPT_HANDOVER = "android.permission.ACCEPT_HANDOVER";
+ field public static final String ACCESS_BACKGROUND_LOCATION = "android.permission.ACCESS_BACKGROUND_LOCATION";
+ field public static final String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES";
+ field public static final String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION";
+ field public static final String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION";
+ field public static final String ACCESS_LOCATION_EXTRA_COMMANDS = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS";
+ field public static final String ACCESS_MEDIA_LOCATION = "android.permission.ACCESS_MEDIA_LOCATION";
+ field public static final String ACCESS_NETWORK_STATE = "android.permission.ACCESS_NETWORK_STATE";
+ field public static final String ACCESS_NOTIFICATION_POLICY = "android.permission.ACCESS_NOTIFICATION_POLICY";
+ field public static final String ACCESS_WIFI_STATE = "android.permission.ACCESS_WIFI_STATE";
+ field public static final String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER";
+ field public static final String ACTIVITY_RECOGNITION = "android.permission.ACTIVITY_RECOGNITION";
+ field public static final String ADD_VOICEMAIL = "com.android.voicemail.permission.ADD_VOICEMAIL";
+ field public static final String ANSWER_PHONE_CALLS = "android.permission.ANSWER_PHONE_CALLS";
+ field public static final String BATTERY_STATS = "android.permission.BATTERY_STATS";
+ field public static final String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
+ field public static final String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
+ field public static final String BIND_AUTOFILL_SERVICE = "android.permission.BIND_AUTOFILL_SERVICE";
+ field public static final String BIND_CALL_REDIRECTION_SERVICE = "android.permission.BIND_CALL_REDIRECTION_SERVICE";
+ field @Deprecated public static final String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
+ field public static final String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
+ field public static final String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
+ field public static final String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE";
+ field public static final String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN";
+ field public static final String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE";
+ field public static final String BIND_INCALL_SERVICE = "android.permission.BIND_INCALL_SERVICE";
+ field public static final String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD";
+ field public static final String BIND_MIDI_DEVICE_SERVICE = "android.permission.BIND_MIDI_DEVICE_SERVICE";
+ field public static final String BIND_NFC_SERVICE = "android.permission.BIND_NFC_SERVICE";
+ field public static final String BIND_NOTIFICATION_LISTENER_SERVICE = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
+ field public static final String BIND_PRINT_SERVICE = "android.permission.BIND_PRINT_SERVICE";
+ field public static final String BIND_QUICK_SETTINGS_TILE = "android.permission.BIND_QUICK_SETTINGS_TILE";
+ field public static final String BIND_REMOTEVIEWS = "android.permission.BIND_REMOTEVIEWS";
+ field public static final String BIND_SCREENING_SERVICE = "android.permission.BIND_SCREENING_SERVICE";
+ field public static final String BIND_SMS_APP_SERVICE = "android.permission.BIND_SMS_APP_SERVICE";
+ field public static final String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE";
+ field public static final String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE";
+ field public static final String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT";
+ field public static final String BIND_VISUAL_VOICEMAIL_SERVICE = "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE";
+ field public static final String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION";
+ field public static final String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE";
+ field public static final String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE";
+ field public static final String BIND_WALLPAPER = "android.permission.BIND_WALLPAPER";
+ field public static final String BLUETOOTH = "android.permission.BLUETOOTH";
+ field public static final String BLUETOOTH_ADMIN = "android.permission.BLUETOOTH_ADMIN";
+ field public static final String BLUETOOTH_PRIVILEGED = "android.permission.BLUETOOTH_PRIVILEGED";
+ field public static final String BODY_SENSORS = "android.permission.BODY_SENSORS";
+ field public static final String BROADCAST_PACKAGE_REMOVED = "android.permission.BROADCAST_PACKAGE_REMOVED";
+ field public static final String BROADCAST_SMS = "android.permission.BROADCAST_SMS";
+ field public static final String BROADCAST_STICKY = "android.permission.BROADCAST_STICKY";
+ field public static final String BROADCAST_WAP_PUSH = "android.permission.BROADCAST_WAP_PUSH";
+ field public static final String CALL_COMPANION_APP = "android.permission.CALL_COMPANION_APP";
+ field public static final String CALL_PHONE = "android.permission.CALL_PHONE";
+ field public static final String CALL_PRIVILEGED = "android.permission.CALL_PRIVILEGED";
+ field public static final String CAMERA = "android.permission.CAMERA";
+ field public static final String CAPTURE_AUDIO_OUTPUT = "android.permission.CAPTURE_AUDIO_OUTPUT";
+ field public static final String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE";
+ field public static final String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION";
+ field public static final String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE";
+ field public static final String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE";
+ field public static final String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE";
+ field public static final String CLEAR_APP_CACHE = "android.permission.CLEAR_APP_CACHE";
+ field public static final String CONTROL_LOCATION_UPDATES = "android.permission.CONTROL_LOCATION_UPDATES";
+ field public static final String DELETE_CACHE_FILES = "android.permission.DELETE_CACHE_FILES";
+ field public static final String DELETE_PACKAGES = "android.permission.DELETE_PACKAGES";
+ field public static final String DIAGNOSTIC = "android.permission.DIAGNOSTIC";
+ field public static final String DISABLE_KEYGUARD = "android.permission.DISABLE_KEYGUARD";
+ field public static final String DUMP = "android.permission.DUMP";
+ field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR";
+ field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST";
+ field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE";
+ field public static final String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS";
+ field public static final String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED";
+ field public static final String GET_AND_REQUEST_SCREEN_LOCK_COMPLEXITY = "android.permission.GET_AND_REQUEST_SCREEN_LOCK_COMPLEXITY";
+ field public static final String GET_PACKAGE_SIZE = "android.permission.GET_PACKAGE_SIZE";
+ field @Deprecated public static final String GET_TASKS = "android.permission.GET_TASKS";
+ field public static final String GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH";
+ field public static final String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER";
+ field public static final String INSTALL_PACKAGES = "android.permission.INSTALL_PACKAGES";
+ field public static final String INSTALL_SHORTCUT = "com.android.launcher.permission.INSTALL_SHORTCUT";
+ field public static final String INSTANT_APP_FOREGROUND_SERVICE = "android.permission.INSTANT_APP_FOREGROUND_SERVICE";
+ field public static final String INTERNET = "android.permission.INTERNET";
+ field public static final String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES";
+ field public static final String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
+ field public static final String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS";
+ field public static final String MANAGE_OWN_CALLS = "android.permission.MANAGE_OWN_CALLS";
+ field public static final String MASTER_CLEAR = "android.permission.MASTER_CLEAR";
+ field public static final String MEDIA_CONTENT_CONTROL = "android.permission.MEDIA_CONTENT_CONTROL";
+ field public static final String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS";
+ field public static final String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE";
+ field public static final String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS";
+ field public static final String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS";
+ field public static final String NFC = "android.permission.NFC";
+ field public static final String NFC_TRANSACTION_EVENT = "android.permission.NFC_TRANSACTION_EVENT";
+ field public static final String PACKAGE_USAGE_STATS = "android.permission.PACKAGE_USAGE_STATS";
+ field @Deprecated public static final String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";
+ field public static final String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";
+ field public static final String READ_CALENDAR = "android.permission.READ_CALENDAR";
+ field public static final String READ_CALL_LOG = "android.permission.READ_CALL_LOG";
+ field public static final String READ_CONTACTS = "android.permission.READ_CONTACTS";
+ field @Deprecated public static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";
+ field @Deprecated public static final String READ_INPUT_STATE = "android.permission.READ_INPUT_STATE";
+ field public static final String READ_LOGS = "android.permission.READ_LOGS";
+ field public static final String READ_MEDIA_AUDIO = "android.permission.READ_MEDIA_AUDIO";
+ field public static final String READ_MEDIA_IMAGES = "android.permission.READ_MEDIA_IMAGES";
+ field public static final String READ_MEDIA_VIDEO = "android.permission.READ_MEDIA_VIDEO";
+ field public static final String READ_PHONE_NUMBERS = "android.permission.READ_PHONE_NUMBERS";
+ field public static final String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE";
+ field public static final String READ_SMS = "android.permission.READ_SMS";
+ field public static final String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS";
+ field public static final String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS";
+ field public static final String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL";
+ field public static final String REBOOT = "android.permission.REBOOT";
+ field public static final String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";
+ field public static final String RECEIVE_MMS = "android.permission.RECEIVE_MMS";
+ field public static final String RECEIVE_SMS = "android.permission.RECEIVE_SMS";
+ field public static final String RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH";
+ field public static final String RECORD_AUDIO = "android.permission.RECORD_AUDIO";
+ field public static final String REORDER_TASKS = "android.permission.REORDER_TASKS";
+ field public static final String REQUEST_COMPANION_RUN_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND";
+ field public static final String REQUEST_COMPANION_USE_DATA_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND";
+ field public static final String REQUEST_DELETE_PACKAGES = "android.permission.REQUEST_DELETE_PACKAGES";
+ field public static final String REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
+ field public static final String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES";
+ field @Deprecated public static final String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";
+ field public static final String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
+ field public static final String SEND_SMS = "android.permission.SEND_SMS";
+ field public static final String SET_ALARM = "com.android.alarm.permission.SET_ALARM";
+ field public static final String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";
+ field public static final String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";
+ field public static final String SET_DEBUG_APP = "android.permission.SET_DEBUG_APP";
+ field @Deprecated public static final String SET_PREFERRED_APPLICATIONS = "android.permission.SET_PREFERRED_APPLICATIONS";
+ field public static final String SET_PROCESS_LIMIT = "android.permission.SET_PROCESS_LIMIT";
+ field public static final String SET_TIME = "android.permission.SET_TIME";
+ field public static final String SET_TIME_ZONE = "android.permission.SET_TIME_ZONE";
+ field public static final String SET_WALLPAPER = "android.permission.SET_WALLPAPER";
+ field public static final String SET_WALLPAPER_HINTS = "android.permission.SET_WALLPAPER_HINTS";
+ field public static final String SIGNAL_PERSISTENT_PROCESSES = "android.permission.SIGNAL_PERSISTENT_PROCESSES";
+ field public static final String SMS_FINANCIAL_TRANSACTIONS = "android.permission.SMS_FINANCIAL_TRANSACTIONS";
+ field public static final String STATUS_BAR = "android.permission.STATUS_BAR";
+ field public static final String SYSTEM_ALERT_WINDOW = "android.permission.SYSTEM_ALERT_WINDOW";
+ field public static final String TRANSMIT_IR = "android.permission.TRANSMIT_IR";
+ field public static final String UNINSTALL_SHORTCUT = "com.android.launcher.permission.UNINSTALL_SHORTCUT";
+ field public static final String UPDATE_DEVICE_STATS = "android.permission.UPDATE_DEVICE_STATS";
+ field public static final String USE_BIOMETRIC = "android.permission.USE_BIOMETRIC";
+ field @Deprecated public static final String USE_FINGERPRINT = "android.permission.USE_FINGERPRINT";
+ field public static final String USE_FULL_SCREEN_INTENT = "android.permission.USE_FULL_SCREEN_INTENT";
+ field public static final String USE_SIP = "android.permission.USE_SIP";
+ field public static final String VIBRATE = "android.permission.VIBRATE";
+ field public static final String WAKE_LOCK = "android.permission.WAKE_LOCK";
+ field public static final String WRITE_APN_SETTINGS = "android.permission.WRITE_APN_SETTINGS";
+ field public static final String WRITE_CALENDAR = "android.permission.WRITE_CALENDAR";
+ field public static final String WRITE_CALL_LOG = "android.permission.WRITE_CALL_LOG";
+ field public static final String WRITE_CONTACTS = "android.permission.WRITE_CONTACTS";
+ field @Deprecated public static final String WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE";
+ field public static final String WRITE_GSERVICES = "android.permission.WRITE_GSERVICES";
+ field public static final String WRITE_SECURE_SETTINGS = "android.permission.WRITE_SECURE_SETTINGS";
+ field public static final String WRITE_SETTINGS = "android.permission.WRITE_SETTINGS";
+ field public static final String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS";
+ field public static final String WRITE_VOICEMAIL = "com.android.voicemail.permission.WRITE_VOICEMAIL";
}
public static final class Manifest.permission_group {
ctor public Manifest.permission_group();
- field public static final java.lang.String ACTIVITY_RECOGNITION = "android.permission-group.ACTIVITY_RECOGNITION";
- field public static final java.lang.String CALENDAR = "android.permission-group.CALENDAR";
- field public static final java.lang.String CALL_LOG = "android.permission-group.CALL_LOG";
- field public static final java.lang.String CAMERA = "android.permission-group.CAMERA";
- field public static final java.lang.String CONTACTS = "android.permission-group.CONTACTS";
- field public static final java.lang.String LOCATION = "android.permission-group.LOCATION";
- field public static final java.lang.String MEDIA_AURAL = "android.permission-group.MEDIA_AURAL";
- field public static final java.lang.String MEDIA_VISUAL = "android.permission-group.MEDIA_VISUAL";
- field public static final java.lang.String MICROPHONE = "android.permission-group.MICROPHONE";
- field public static final java.lang.String PHONE = "android.permission-group.PHONE";
- field public static final java.lang.String SENSORS = "android.permission-group.SENSORS";
- field public static final java.lang.String SMS = "android.permission-group.SMS";
- field public static final deprecated java.lang.String STORAGE = "android.permission-group.STORAGE";
+ field public static final String ACTIVITY_RECOGNITION = "android.permission-group.ACTIVITY_RECOGNITION";
+ field public static final String CALENDAR = "android.permission-group.CALENDAR";
+ field public static final String CALL_LOG = "android.permission-group.CALL_LOG";
+ field public static final String CAMERA = "android.permission-group.CAMERA";
+ field public static final String CONTACTS = "android.permission-group.CONTACTS";
+ field public static final String LOCATION = "android.permission-group.LOCATION";
+ field public static final String MEDIA_AURAL = "android.permission-group.MEDIA_AURAL";
+ field public static final String MEDIA_VISUAL = "android.permission-group.MEDIA_VISUAL";
+ field public static final String MICROPHONE = "android.permission-group.MICROPHONE";
+ field public static final String PHONE = "android.permission-group.PHONE";
+ field public static final String SENSORS = "android.permission-group.SENSORS";
+ field public static final String SMS = "android.permission-group.SMS";
+ field @Deprecated public static final String STORAGE = "android.permission-group.STORAGE";
}
public final class R {
@@ -293,8 +294,8 @@
field public static final int alphabeticShortcut = 16843235; // 0x10101e3
field public static final int alwaysDrawnWithCache = 16842991; // 0x10100ef
field public static final int alwaysRetainTaskState = 16843267; // 0x1010203
- field public static final deprecated int amPmBackgroundColor = 16843941; // 0x10104a5
- field public static final deprecated int amPmTextColor = 16843940; // 0x10104a4
+ field @Deprecated public static final int amPmBackgroundColor = 16843941; // 0x10104a5
+ field @Deprecated public static final int amPmTextColor = 16843940; // 0x10104a4
field public static final int ambientShadowAlpha = 16843966; // 0x10104be
field public static final int angle = 16843168; // 0x10101a0
field public static final int animateFirstView = 16843477; // 0x10102d5
@@ -304,7 +305,7 @@
field public static final int animationCache = 16842989; // 0x10100ed
field public static final int animationDuration = 16843026; // 0x1010112
field public static final int animationOrder = 16843214; // 0x10101ce
- field public static final deprecated int animationResolution = 16843546; // 0x101031a
+ field @Deprecated public static final int animationResolution = 16843546; // 0x101031a
field public static final int antialias = 16843034; // 0x101011a
field public static final int anyDensity = 16843372; // 0x101026c
field public static final int apduServiceBanner = 16843757; // 0x10103ed
@@ -324,7 +325,7 @@
field public static final int autoSizeStepGranularity = 16844086; // 0x1010536
field public static final int autoSizeTextType = 16844085; // 0x1010535
field public static final int autoStart = 16843445; // 0x10102b5
- field public static final deprecated int autoText = 16843114; // 0x101016a
+ field @Deprecated public static final int autoText = 16843114; // 0x101016a
field public static final int autoUrlDetect = 16843404; // 0x101028c
field public static final int autoVerify = 16844014; // 0x10104ee
field public static final int autofillHints = 16844118; // 0x1010556
@@ -377,14 +378,14 @@
field public static final int canControlMagnification = 16844039; // 0x1010507
field public static final int canPerformGestures = 16844045; // 0x101050d
field public static final int canRecord = 16844060; // 0x101051c
- field public static final deprecated int canRequestEnhancedWebAccessibility = 16843736; // 0x10103d8
+ field @Deprecated public static final int canRequestEnhancedWebAccessibility = 16843736; // 0x10103d8
field public static final int canRequestFilterKeyEvents = 16843737; // 0x10103d9
field public static final int canRequestFingerprintGestures = 16844109; // 0x101054d
field public static final int canRequestTouchExplorationMode = 16843735; // 0x10103d7
field public static final int canRetrieveWindowContent = 16843653; // 0x1010385
field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230
field public static final int cantSaveState = 16844142; // 0x101056e
- field public static final deprecated int capitalize = 16843113; // 0x1010169
+ field @Deprecated public static final int capitalize = 16843113; // 0x1010169
field public static final int category = 16843752; // 0x10103e8
field public static final int centerBright = 16842956; // 0x10100cc
field public static final int centerColor = 16843275; // 0x101020b
@@ -417,7 +418,7 @@
field public static final int clipOrientation = 16843274; // 0x101020a
field public static final int clipToPadding = 16842987; // 0x10100eb
field public static final int closeIcon = 16843905; // 0x1010481
- field public static final deprecated int codes = 16843330; // 0x1010242
+ field @Deprecated public static final int codes = 16843330; // 0x1010242
field public static final int collapseColumns = 16843083; // 0x101014b
field public static final int collapseContentDescription = 16843984; // 0x10104d0
field public static final int collapseIcon = 16844031; // 0x10104ff
@@ -491,8 +492,8 @@
field public static final int datePickerMode = 16843955; // 0x10104b3
field public static final int datePickerStyle = 16843612; // 0x101035c
field public static final int dateTextAppearance = 16843593; // 0x1010349
- field public static final deprecated int dayOfWeekBackground = 16843924; // 0x1010494
- field public static final deprecated int dayOfWeekTextAppearance = 16843925; // 0x1010495
+ field @Deprecated public static final int dayOfWeekBackground = 16843924; // 0x1010494
+ field @Deprecated public static final int dayOfWeekTextAppearance = 16843925; // 0x1010495
field public static final int debuggable = 16842767; // 0x101000f
field public static final int defaultFocusHighlightEnabled = 16844130; // 0x1010562
field public static final int defaultHeight = 16844021; // 0x10104f5
@@ -519,7 +520,7 @@
field public static final int digits = 16843110; // 0x1010166
field public static final int directBootAware = 16844037; // 0x1010505
field public static final int direction = 16843217; // 0x10101d1
- field public static final deprecated int directionDescriptions = 16843681; // 0x10103a1
+ field @Deprecated public static final int directionDescriptions = 16843681; // 0x10103a1
field public static final int directionPriority = 16843218; // 0x10101d2
field public static final int disableDependentsState = 16843249; // 0x10101f1
field public static final int disabledAlpha = 16842803; // 0x1010033
@@ -559,7 +560,7 @@
field public static final int editTextColor = 16843601; // 0x1010351
field public static final int editTextPreferenceStyle = 16842898; // 0x1010092
field public static final int editTextStyle = 16842862; // 0x101006e
- field public static final deprecated int editable = 16843115; // 0x101016b
+ field @Deprecated public static final int editable = 16843115; // 0x101016b
field public static final int editorExtras = 16843300; // 0x1010224
field public static final int elegantTextHeight = 16843869; // 0x101045d
field public static final int elevation = 16843840; // 0x1010440
@@ -571,7 +572,7 @@
field public static final int endColor = 16843166; // 0x101019e
field public static final int endX = 16844050; // 0x1010512
field public static final int endY = 16844051; // 0x1010513
- field public static final deprecated int endYear = 16843133; // 0x101017d
+ field @Deprecated public static final int endYear = 16843133; // 0x101017d
field public static final int enterFadeDuration = 16843532; // 0x101030c
field public static final int entries = 16842930; // 0x10100b2
field public static final int entryValues = 16843256; // 0x10101f8
@@ -630,7 +631,7 @@
field public static final int focusable = 16842970; // 0x10100da
field public static final int focusableInTouchMode = 16842971; // 0x10100db
field public static final int focusedByDefault = 16844100; // 0x1010544
- field public static final deprecated int focusedMonthDateColor = 16843587; // 0x1010343
+ field @Deprecated public static final int focusedMonthDateColor = 16843587; // 0x1010343
field public static final int font = 16844082; // 0x1010532
field public static final int fontFamily = 16843692; // 0x10103ac
field public static final int fontFeatureSettings = 16843959; // 0x10104b7
@@ -705,20 +706,20 @@
field public static final int hardwareAccelerated = 16843475; // 0x10102d3
field public static final int hasCode = 16842764; // 0x101000c
field public static final int hasFragileUserData = 16844192; // 0x10105a0
- field public static final deprecated int headerAmPmTextAppearance = 16843936; // 0x10104a0
+ field @Deprecated public static final int headerAmPmTextAppearance = 16843936; // 0x10104a0
field public static final int headerBackground = 16843055; // 0x101012f
- field public static final deprecated int headerDayOfMonthTextAppearance = 16843927; // 0x1010497
+ field @Deprecated public static final int headerDayOfMonthTextAppearance = 16843927; // 0x1010497
field public static final int headerDividersEnabled = 16843310; // 0x101022e
- field public static final deprecated int headerMonthTextAppearance = 16843926; // 0x1010496
- field public static final deprecated int headerTimeTextAppearance = 16843935; // 0x101049f
- field public static final deprecated int headerYearTextAppearance = 16843928; // 0x1010498
+ field @Deprecated public static final int headerMonthTextAppearance = 16843926; // 0x1010496
+ field @Deprecated public static final int headerTimeTextAppearance = 16843935; // 0x101049f
+ field @Deprecated public static final int headerYearTextAppearance = 16843928; // 0x1010498
field public static final int height = 16843093; // 0x1010155
field public static final int hideOnContentScroll = 16843843; // 0x1010443
field public static final int hint = 16843088; // 0x1010150
field public static final int homeAsUpIndicator = 16843531; // 0x101030b
field public static final int homeLayout = 16843549; // 0x101031d
field public static final int horizontalDivider = 16843053; // 0x101012d
- field public static final deprecated int horizontalGap = 16843327; // 0x101023f
+ field @Deprecated public static final int horizontalGap = 16843327; // 0x101023f
field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353
field public static final int horizontalSpacing = 16843028; // 0x1010114
field public static final int host = 16842792; // 0x1010028
@@ -726,7 +727,7 @@
field public static final int hotSpotY = 16844056; // 0x1010518
field public static final int hyphenationFrequency = 16843998; // 0x10104de
field public static final int icon = 16842754; // 0x1010002
- field public static final deprecated int iconPreview = 16843337; // 0x1010249
+ field @Deprecated public static final int iconPreview = 16843337; // 0x1010249
field public static final int iconSpaceReserved = 16844129; // 0x1010561
field public static final int iconTint = 16844126; // 0x101055e
field public static final int iconTintMode = 16844127; // 0x101055f
@@ -769,7 +770,7 @@
field public static final int initialLayout = 16843345; // 0x1010251
field public static final int innerRadius = 16843359; // 0x101025f
field public static final int innerRadiusRatio = 16843163; // 0x101019b
- field public static final deprecated int inputMethod = 16843112; // 0x1010168
+ field @Deprecated public static final int inputMethod = 16843112; // 0x1010168
field public static final int inputType = 16843296; // 0x1010220
field public static final int inset = 16843957; // 0x10104b5
field public static final int insetBottom = 16843194; // 0x10101ba
@@ -787,12 +788,12 @@
field public static final int isGame = 16843764; // 0x10103f4
field public static final int isIndicator = 16843079; // 0x1010147
field public static final int isLightTheme = 16844176; // 0x1010590
- field public static final deprecated int isModifier = 16843334; // 0x1010246
- field public static final deprecated int isRepeatable = 16843336; // 0x1010248
+ field @Deprecated public static final int isModifier = 16843334; // 0x1010246
+ field @Deprecated public static final int isRepeatable = 16843336; // 0x1010248
field public static final int isScrollContainer = 16843342; // 0x101024e
field public static final int isSplitRequired = 16844177; // 0x1010591
field public static final int isStatic = 16844122; // 0x101055a
- field public static final deprecated int isSticky = 16843335; // 0x1010247
+ field @Deprecated public static final int isSticky = 16843335; // 0x1010247
field public static final int isolatedProcess = 16843689; // 0x10103a9
field public static final int isolatedSplits = 16844107; // 0x101054b
field public static final int itemBackground = 16843056; // 0x1010130
@@ -802,27 +803,27 @@
field public static final int justificationMode = 16844135; // 0x1010567
field public static final int keepScreenOn = 16843286; // 0x1010216
field public static final int key = 16843240; // 0x10101e8
- field public static final deprecated int keyBackground = 16843315; // 0x1010233
- field public static final deprecated int keyEdgeFlags = 16843333; // 0x1010245
- field public static final deprecated int keyHeight = 16843326; // 0x101023e
- field public static final deprecated int keyIcon = 16843340; // 0x101024c
- field public static final deprecated int keyLabel = 16843339; // 0x101024b
- field public static final deprecated int keyOutputText = 16843338; // 0x101024a
- field public static final deprecated int keyPreviewHeight = 16843321; // 0x1010239
- field public static final deprecated int keyPreviewLayout = 16843319; // 0x1010237
- field public static final deprecated int keyPreviewOffset = 16843320; // 0x1010238
+ field @Deprecated public static final int keyBackground = 16843315; // 0x1010233
+ field @Deprecated public static final int keyEdgeFlags = 16843333; // 0x1010245
+ field @Deprecated public static final int keyHeight = 16843326; // 0x101023e
+ field @Deprecated public static final int keyIcon = 16843340; // 0x101024c
+ field @Deprecated public static final int keyLabel = 16843339; // 0x101024b
+ field @Deprecated public static final int keyOutputText = 16843338; // 0x101024a
+ field @Deprecated public static final int keyPreviewHeight = 16843321; // 0x1010239
+ field @Deprecated public static final int keyPreviewLayout = 16843319; // 0x1010237
+ field @Deprecated public static final int keyPreviewOffset = 16843320; // 0x1010238
field public static final int keySet = 16843739; // 0x10103db
- field public static final deprecated int keyTextColor = 16843318; // 0x1010236
- field public static final deprecated int keyTextSize = 16843316; // 0x1010234
- field public static final deprecated int keyWidth = 16843325; // 0x101023d
+ field @Deprecated public static final int keyTextColor = 16843318; // 0x1010236
+ field @Deprecated public static final int keyTextSize = 16843316; // 0x1010234
+ field @Deprecated public static final int keyWidth = 16843325; // 0x101023d
field public static final int keyboardLayout = 16843691; // 0x10103ab
- field public static final deprecated int keyboardMode = 16843341; // 0x101024d
+ field @Deprecated public static final int keyboardMode = 16843341; // 0x101024d
field public static final int keyboardNavigationCluster = 16844096; // 0x1010540
field public static final int keycode = 16842949; // 0x10100c5
field public static final int killAfterRestore = 16843420; // 0x101029c
field public static final int label = 16842753; // 0x1010001
field public static final int labelFor = 16843718; // 0x10103c6
- field public static final deprecated int labelTextSize = 16843317; // 0x1010235
+ field @Deprecated public static final int labelTextSize = 16843317; // 0x1010235
field public static final int languageTag = 16844040; // 0x1010508
field public static final int largeHeap = 16843610; // 0x101035a
field public static final int largeScreens = 16843398; // 0x1010286
@@ -984,7 +985,7 @@
field public static final int numbersInnerTextColor = 16844001; // 0x10104e1
field public static final int numbersSelectorColor = 16843939; // 0x10104a3
field public static final int numbersTextColor = 16843937; // 0x10104a1
- field public static final deprecated int numeric = 16843109; // 0x1010165
+ field @Deprecated public static final int numeric = 16843109; // 0x1010165
field public static final int numericModifiers = 16844111; // 0x101054f
field public static final int numericShortcut = 16843236; // 0x10101e4
field public static final int offset = 16844052; // 0x1010514
@@ -1027,7 +1028,7 @@
field public static final int panelFullBackground = 16842847; // 0x101005f
field public static final int panelTextAppearance = 16842850; // 0x1010062
field public static final int parentActivityName = 16843687; // 0x10103a7
- field public static final deprecated int password = 16843100; // 0x101015c
+ field @Deprecated public static final int password = 16843100; // 0x101015c
field public static final int path = 16842794; // 0x101002a
field public static final int pathData = 16843781; // 0x1010405
field public static final int pathPattern = 16842796; // 0x101002c
@@ -1041,18 +1042,18 @@
field public static final int persistent = 16842765; // 0x101000d
field public static final int persistentDrawingCache = 16842990; // 0x10100ee
field public static final int persistentWhenFeatureAvailable = 16844131; // 0x1010563
- field public static final deprecated int phoneNumber = 16843111; // 0x1010167
+ field @Deprecated public static final int phoneNumber = 16843111; // 0x1010167
field public static final int pivotX = 16843189; // 0x10101b5
field public static final int pivotY = 16843190; // 0x10101b6
field public static final int pointerIcon = 16844041; // 0x1010509
field public static final int popupAnimationStyle = 16843465; // 0x10102c9
field public static final int popupBackground = 16843126; // 0x1010176
- field public static final deprecated int popupCharacters = 16843332; // 0x1010244
+ field @Deprecated public static final int popupCharacters = 16843332; // 0x1010244
field public static final int popupElevation = 16843916; // 0x101048c
field public static final int popupEnterTransition = 16844063; // 0x101051f
field public static final int popupExitTransition = 16844064; // 0x1010520
- field public static final deprecated int popupKeyboard = 16843331; // 0x1010243
- field public static final deprecated int popupLayout = 16843323; // 0x101023b
+ field @Deprecated public static final int popupKeyboard = 16843331; // 0x1010243
+ field @Deprecated public static final int popupLayout = 16843323; // 0x101023b
field public static final int popupMenuStyle = 16843520; // 0x1010300
field public static final int popupTheme = 16843945; // 0x10104a9
field public static final int popupWindowStyle = 16842870; // 0x1010076
@@ -1135,7 +1136,7 @@
field public static final int resizeableActivity = 16844022; // 0x10104f6
field public static final int resource = 16842789; // 0x1010025
field public static final int restoreAnyVersion = 16843450; // 0x10102ba
- field public static final deprecated int restoreNeedsApplication = 16843421; // 0x101029d
+ field @Deprecated public static final int restoreNeedsApplication = 16843421; // 0x101029d
field public static final int restrictedAccountType = 16843733; // 0x10103d5
field public static final int restrictionType = 16843923; // 0x1010493
field public static final int resumeWhilePausing = 16843954; // 0x10104b2
@@ -1151,7 +1152,7 @@
field public static final int roundIcon = 16844076; // 0x101052c
field public static final int rowCount = 16843637; // 0x1010375
field public static final int rowDelay = 16843216; // 0x10101d0
- field public static final deprecated int rowEdgeFlags = 16843329; // 0x1010241
+ field @Deprecated public static final int rowEdgeFlags = 16843329; // 0x1010241
field public static final int rowHeight = 16843058; // 0x1010132
field public static final int rowOrderPreserved = 16843638; // 0x1010376
field public static final int saveEnabled = 16842983; // 0x10100e7
@@ -1183,7 +1184,7 @@
field public static final int scrollbarTrackVertical = 16842855; // 0x1010067
field public static final int scrollbars = 16842974; // 0x10100de
field public static final int scrollingCache = 16843006; // 0x10100fe
- field public static final deprecated int searchButtonText = 16843269; // 0x1010205
+ field @Deprecated public static final int searchButtonText = 16843269; // 0x1010205
field public static final int searchHintIcon = 16843988; // 0x10104d4
field public static final int searchIcon = 16843907; // 0x1010483
field public static final int searchMode = 16843221; // 0x10101d5
@@ -1205,8 +1206,8 @@
field public static final int selectable = 16843238; // 0x10101e6
field public static final int selectableItemBackground = 16843534; // 0x101030e
field public static final int selectableItemBackgroundBorderless = 16843868; // 0x101045c
- field public static final deprecated int selectedDateVerticalBar = 16843591; // 0x1010347
- field public static final deprecated int selectedWeekBackgroundColor = 16843586; // 0x1010342
+ field @Deprecated public static final int selectedDateVerticalBar = 16843591; // 0x1010347
+ field @Deprecated public static final int selectedWeekBackgroundColor = 16843586; // 0x1010342
field public static final int selectionDividerHeight = 16844190; // 0x101059e
field public static final int sessionService = 16843837; // 0x101043d
field public static final int settingsActivity = 16843301; // 0x1010225
@@ -1231,14 +1232,14 @@
field public static final int showDividers = 16843561; // 0x1010329
field public static final int showForAllUsers = 16844015; // 0x10104ef
field public static final int showMetadataInPreview = 16844079; // 0x101052f
- field public static final deprecated int showOnLockScreen = 16843721; // 0x10103c9
+ field @Deprecated public static final int showOnLockScreen = 16843721; // 0x10103c9
field public static final int showSilent = 16843259; // 0x10101fb
field public static final int showText = 16843949; // 0x10104ad
- field public static final deprecated int showWeekNumber = 16843582; // 0x101033e
+ field @Deprecated public static final int showWeekNumber = 16843582; // 0x101033e
field public static final int showWhenLocked = 16844137; // 0x1010569
- field public static final deprecated int shownWeekCount = 16843585; // 0x1010341
+ field @Deprecated public static final int shownWeekCount = 16843585; // 0x1010341
field public static final int shrinkColumns = 16843082; // 0x101014a
- field public static final deprecated int singleLine = 16843101; // 0x101015d
+ field @Deprecated public static final int singleLine = 16843101; // 0x101015d
field public static final int singleLineTitle = 16844124; // 0x101055c
field public static final int singleUser = 16843711; // 0x10103bf
field public static final int slideEdge = 16843824; // 0x1010430
@@ -1269,7 +1270,7 @@
field public static final int startOffset = 16843198; // 0x10101be
field public static final int startX = 16844048; // 0x1010510
field public static final int startY = 16844049; // 0x1010511
- field public static final deprecated int startYear = 16843132; // 0x101017c
+ field @Deprecated public static final int startYear = 16843132; // 0x101017c
field public static final int stateListAnimator = 16843848; // 0x1010448
field public static final int stateNotNeeded = 16842774; // 0x1010016
field public static final int state_above_anchor = 16842922; // 0x10100aa
@@ -1287,7 +1288,7 @@
field public static final int state_focused = 16842908; // 0x101009c
field public static final int state_hovered = 16843623; // 0x1010367
field public static final int state_last = 16842918; // 0x10100a6
- field public static final deprecated int state_long_pressable = 16843324; // 0x101023c
+ field @Deprecated public static final int state_long_pressable = 16843324; // 0x101023c
field public static final int state_middle = 16842917; // 0x10100a5
field public static final int state_multiline = 16843597; // 0x101034d
field public static final int state_pressed = 16842919; // 0x10100a7
@@ -1346,12 +1347,12 @@
field public static final int tag = 16842961; // 0x10100d1
field public static final int targetActivity = 16843266; // 0x1010202
field public static final int targetClass = 16842799; // 0x101002f
- field public static final deprecated int targetDescriptions = 16843680; // 0x10103a0
+ field @Deprecated public static final int targetDescriptions = 16843680; // 0x10103a0
field public static final int targetId = 16843740; // 0x10103dc
field public static final int targetName = 16843853; // 0x101044d
field public static final int targetPackage = 16842785; // 0x1010021
field public static final int targetProcesses = 16844097; // 0x1010541
- field public static final deprecated int targetSandboxVersion = 16844108; // 0x101054c
+ field @Deprecated public static final int targetSandboxVersion = 16844108; // 0x101054c
field public static final int targetSdkVersion = 16843376; // 0x1010270
field public static final int taskAffinity = 16842770; // 0x1010012
field public static final int taskCloseEnterAnimation = 16842942; // 0x10100be
@@ -1503,7 +1504,7 @@
field public static final int typeface = 16842902; // 0x1010096
field public static final int uiOptions = 16843672; // 0x1010398
field public static final int uncertainGestureColor = 16843382; // 0x1010276
- field public static final deprecated int unfocusedMonthDateColor = 16843588; // 0x1010344
+ field @Deprecated public static final int unfocusedMonthDateColor = 16843588; // 0x1010344
field public static final int unselectedAlpha = 16843278; // 0x101020e
field public static final int updatePeriodMillis = 16843344; // 0x1010250
field public static final int usageInfoRequired = 16844185; // 0x1010599
@@ -1525,9 +1526,9 @@
field public static final int versionCodeMajor = 16844150; // 0x1010576
field public static final int versionMajor = 16844151; // 0x1010577
field public static final int versionName = 16843292; // 0x101021c
- field public static final deprecated int verticalCorrection = 16843322; // 0x101023a
+ field @Deprecated public static final int verticalCorrection = 16843322; // 0x101023a
field public static final int verticalDivider = 16843054; // 0x101012e
- field public static final deprecated int verticalGap = 16843328; // 0x1010240
+ field @Deprecated public static final int verticalGap = 16843328; // 0x1010240
field public static final int verticalScrollbarPosition = 16843572; // 0x1010334
field public static final int verticalSpacing = 16843029; // 0x1010115
field public static final int viewportHeight = 16843779; // 0x1010403
@@ -1553,8 +1554,8 @@
field public static final int webTextViewStyle = 16843449; // 0x10102b9
field public static final int webViewStyle = 16842885; // 0x1010085
field public static final int weekDayTextAppearance = 16843592; // 0x1010348
- field public static final deprecated int weekNumberColor = 16843589; // 0x1010345
- field public static final deprecated int weekSeparatorLineColor = 16843590; // 0x1010346
+ field @Deprecated public static final int weekNumberColor = 16843589; // 0x1010345
+ field @Deprecated public static final int weekSeparatorLineColor = 16843590; // 0x1010346
field public static final int weightSum = 16843048; // 0x1010128
field public static final int widgetCategory = 16843716; // 0x10103c4
field public static final int widgetFeatures = 16844153; // 0x1010579
@@ -1617,8 +1618,8 @@
field public static final int x = 16842924; // 0x10100ac
field public static final int xlargeScreens = 16843455; // 0x10102bf
field public static final int y = 16842925; // 0x10100ad
- field public static final deprecated int yearListItemTextAppearance = 16843929; // 0x1010499
- field public static final deprecated int yearListSelectorColor = 16843930; // 0x101049a
+ field @Deprecated public static final int yearListItemTextAppearance = 16843929; // 0x1010499
+ field @Deprecated public static final int yearListSelectorColor = 16843930; // 0x101049a
field public static final int yesNoPreferenceStyle = 16842896; // 0x1010090
field public static final int zAdjustment = 16843201; // 0x10101c1
}
@@ -1643,17 +1644,17 @@
field public static final int holo_purple = 17170458; // 0x106001a
field public static final int holo_red_dark = 17170455; // 0x1060017
field public static final int holo_red_light = 17170454; // 0x1060016
- field public static final deprecated int primary_text_dark = 17170433; // 0x1060001
- field public static final deprecated int primary_text_dark_nodisable = 17170434; // 0x1060002
- field public static final deprecated int primary_text_light = 17170435; // 0x1060003
- field public static final deprecated int primary_text_light_nodisable = 17170436; // 0x1060004
- field public static final deprecated int secondary_text_dark = 17170437; // 0x1060005
- field public static final deprecated int secondary_text_dark_nodisable = 17170438; // 0x1060006
- field public static final deprecated int secondary_text_light = 17170439; // 0x1060007
- field public static final deprecated int secondary_text_light_nodisable = 17170440; // 0x1060008
+ field @Deprecated public static final int primary_text_dark = 17170433; // 0x1060001
+ field @Deprecated public static final int primary_text_dark_nodisable = 17170434; // 0x1060002
+ field @Deprecated public static final int primary_text_light = 17170435; // 0x1060003
+ field @Deprecated public static final int primary_text_light_nodisable = 17170436; // 0x1060004
+ field @Deprecated public static final int secondary_text_dark = 17170437; // 0x1060005
+ field @Deprecated public static final int secondary_text_dark_nodisable = 17170438; // 0x1060006
+ field @Deprecated public static final int secondary_text_light = 17170439; // 0x1060007
+ field @Deprecated public static final int secondary_text_light_nodisable = 17170440; // 0x1060008
field public static final int tab_indicator_text = 17170441; // 0x1060009
- field public static final deprecated int tertiary_text_dark = 17170448; // 0x1060010
- field public static final deprecated int tertiary_text_light = 17170449; // 0x1060011
+ field @Deprecated public static final int tertiary_text_dark = 17170448; // 0x1060010
+ field @Deprecated public static final int tertiary_text_light = 17170449; // 0x1060011
field public static final int transparent = 17170445; // 0x106000d
field public static final int white = 17170443; // 0x106000b
field public static final int widget_edittext_dark = 17170442; // 0x106000a
@@ -1823,14 +1824,14 @@
field public static final int stat_sys_download = 17301633; // 0x1080081
field public static final int stat_sys_download_done = 17301634; // 0x1080082
field public static final int stat_sys_headset = 17301635; // 0x1080083
- field public static final deprecated int stat_sys_phone_call = 17301636; // 0x1080084
- field public static final deprecated int stat_sys_phone_call_forward = 17301637; // 0x1080085
- field public static final deprecated int stat_sys_phone_call_on_hold = 17301638; // 0x1080086
+ field @Deprecated public static final int stat_sys_phone_call = 17301636; // 0x1080084
+ field @Deprecated public static final int stat_sys_phone_call_forward = 17301637; // 0x1080085
+ field @Deprecated public static final int stat_sys_phone_call_on_hold = 17301638; // 0x1080086
field public static final int stat_sys_speakerphone = 17301639; // 0x1080087
field public static final int stat_sys_upload = 17301640; // 0x1080088
field public static final int stat_sys_upload_done = 17301641; // 0x1080089
- field public static final deprecated int stat_sys_vp_phone_call = 17301671; // 0x10800a7
- field public static final deprecated int stat_sys_vp_phone_call_on_hold = 17301672; // 0x10800a8
+ field @Deprecated public static final int stat_sys_vp_phone_call = 17301671; // 0x10800a7
+ field @Deprecated public static final int stat_sys_vp_phone_call_on_hold = 17301672; // 0x10800a8
field public static final int stat_sys_warning = 17301642; // 0x108008a
field public static final int status_bar_item_app_background = 17301643; // 0x108008b
field public static final int status_bar_item_background = 17301644; // 0x108008c
@@ -1895,7 +1896,7 @@
field public static final int input = 16908297; // 0x1020009
field public static final int inputArea = 16908318; // 0x102001e
field public static final int inputExtractEditText = 16908325; // 0x1020025
- field public static final deprecated int keyboardView = 16908326; // 0x1020026
+ field @Deprecated public static final int keyboardView = 16908326; // 0x1020026
field public static final int list = 16908298; // 0x102000a
field public static final int list_container = 16908351; // 0x102003f
field public static final int mask = 16908334; // 0x102002e
@@ -2077,13 +2078,13 @@
field public static final int TextAppearance_DeviceDefault_Widget = 16974265; // 0x10301b9
field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Menu = 16974286; // 0x10301ce
field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle = 16974279; // 0x10301c7
- field public static final deprecated int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse = 16974283; // 0x10301cb
+ field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse = 16974283; // 0x10301cb
field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title = 16974278; // 0x10301c6
- field public static final deprecated int TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse = 16974282; // 0x10301ca
+ field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse = 16974282; // 0x10301ca
field public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle = 16974281; // 0x10301c9
- field public static final deprecated int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse = 16974285; // 0x10301cd
+ field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse = 16974285; // 0x10301cd
field public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title = 16974280; // 0x10301c8
- field public static final deprecated int TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse = 16974284; // 0x10301cc
+ field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse = 16974284; // 0x10301cc
field public static final int TextAppearance_DeviceDefault_Widget_Button = 16974266; // 0x10301ba
field public static final int TextAppearance_DeviceDefault_Widget_DropDownHint = 16974271; // 0x10301bf
field public static final int TextAppearance_DeviceDefault_Widget_DropDownItem = 16974272; // 0x10301c0
@@ -2260,34 +2261,34 @@
field public static final int Theme_DeviceDefault_Wallpaper = 16974140; // 0x103013c
field public static final int Theme_DeviceDefault_Wallpaper_NoTitleBar = 16974141; // 0x103013d
field public static final int Theme_Dialog = 16973835; // 0x103000b
- field public static final deprecated int Theme_Holo = 16973931; // 0x103006b
- field public static final deprecated int Theme_Holo_Dialog = 16973935; // 0x103006f
- field public static final deprecated int Theme_Holo_DialogWhenLarge = 16973943; // 0x1030077
- field public static final deprecated int Theme_Holo_DialogWhenLarge_NoActionBar = 16973944; // 0x1030078
- field public static final deprecated int Theme_Holo_Dialog_MinWidth = 16973936; // 0x1030070
- field public static final deprecated int Theme_Holo_Dialog_NoActionBar = 16973937; // 0x1030071
- field public static final deprecated int Theme_Holo_Dialog_NoActionBar_MinWidth = 16973938; // 0x1030072
- field public static final deprecated int Theme_Holo_InputMethod = 16973951; // 0x103007f
- field public static final deprecated int Theme_Holo_Light = 16973934; // 0x103006e
- field public static final deprecated int Theme_Holo_Light_DarkActionBar = 16974105; // 0x1030119
- field public static final deprecated int Theme_Holo_Light_Dialog = 16973939; // 0x1030073
- field public static final deprecated int Theme_Holo_Light_DialogWhenLarge = 16973945; // 0x1030079
- field public static final deprecated int Theme_Holo_Light_DialogWhenLarge_NoActionBar = 16973946; // 0x103007a
- field public static final deprecated int Theme_Holo_Light_Dialog_MinWidth = 16973940; // 0x1030074
- field public static final deprecated int Theme_Holo_Light_Dialog_NoActionBar = 16973941; // 0x1030075
- field public static final deprecated int Theme_Holo_Light_Dialog_NoActionBar_MinWidth = 16973942; // 0x1030076
- field public static final deprecated int Theme_Holo_Light_NoActionBar = 16974064; // 0x10300f0
- field public static final deprecated int Theme_Holo_Light_NoActionBar_Fullscreen = 16974065; // 0x10300f1
- field public static final deprecated int Theme_Holo_Light_NoActionBar_Overscan = 16974302; // 0x10301de
- field public static final deprecated int Theme_Holo_Light_NoActionBar_TranslucentDecor = 16974306; // 0x10301e2
- field public static final deprecated int Theme_Holo_Light_Panel = 16973948; // 0x103007c
- field public static final deprecated int Theme_Holo_NoActionBar = 16973932; // 0x103006c
- field public static final deprecated int Theme_Holo_NoActionBar_Fullscreen = 16973933; // 0x103006d
- field public static final deprecated int Theme_Holo_NoActionBar_Overscan = 16974301; // 0x10301dd
- field public static final deprecated int Theme_Holo_NoActionBar_TranslucentDecor = 16974305; // 0x10301e1
- field public static final deprecated int Theme_Holo_Panel = 16973947; // 0x103007b
- field public static final deprecated int Theme_Holo_Wallpaper = 16973949; // 0x103007d
- field public static final deprecated int Theme_Holo_Wallpaper_NoTitleBar = 16973950; // 0x103007e
+ field @Deprecated public static final int Theme_Holo = 16973931; // 0x103006b
+ field @Deprecated public static final int Theme_Holo_Dialog = 16973935; // 0x103006f
+ field @Deprecated public static final int Theme_Holo_DialogWhenLarge = 16973943; // 0x1030077
+ field @Deprecated public static final int Theme_Holo_DialogWhenLarge_NoActionBar = 16973944; // 0x1030078
+ field @Deprecated public static final int Theme_Holo_Dialog_MinWidth = 16973936; // 0x1030070
+ field @Deprecated public static final int Theme_Holo_Dialog_NoActionBar = 16973937; // 0x1030071
+ field @Deprecated public static final int Theme_Holo_Dialog_NoActionBar_MinWidth = 16973938; // 0x1030072
+ field @Deprecated public static final int Theme_Holo_InputMethod = 16973951; // 0x103007f
+ field @Deprecated public static final int Theme_Holo_Light = 16973934; // 0x103006e
+ field @Deprecated public static final int Theme_Holo_Light_DarkActionBar = 16974105; // 0x1030119
+ field @Deprecated public static final int Theme_Holo_Light_Dialog = 16973939; // 0x1030073
+ field @Deprecated public static final int Theme_Holo_Light_DialogWhenLarge = 16973945; // 0x1030079
+ field @Deprecated public static final int Theme_Holo_Light_DialogWhenLarge_NoActionBar = 16973946; // 0x103007a
+ field @Deprecated public static final int Theme_Holo_Light_Dialog_MinWidth = 16973940; // 0x1030074
+ field @Deprecated public static final int Theme_Holo_Light_Dialog_NoActionBar = 16973941; // 0x1030075
+ field @Deprecated public static final int Theme_Holo_Light_Dialog_NoActionBar_MinWidth = 16973942; // 0x1030076
+ field @Deprecated public static final int Theme_Holo_Light_NoActionBar = 16974064; // 0x10300f0
+ field @Deprecated public static final int Theme_Holo_Light_NoActionBar_Fullscreen = 16974065; // 0x10300f1
+ field @Deprecated public static final int Theme_Holo_Light_NoActionBar_Overscan = 16974302; // 0x10301de
+ field @Deprecated public static final int Theme_Holo_Light_NoActionBar_TranslucentDecor = 16974306; // 0x10301e2
+ field @Deprecated public static final int Theme_Holo_Light_Panel = 16973948; // 0x103007c
+ field @Deprecated public static final int Theme_Holo_NoActionBar = 16973932; // 0x103006c
+ field @Deprecated public static final int Theme_Holo_NoActionBar_Fullscreen = 16973933; // 0x103006d
+ field @Deprecated public static final int Theme_Holo_NoActionBar_Overscan = 16974301; // 0x10301dd
+ field @Deprecated public static final int Theme_Holo_NoActionBar_TranslucentDecor = 16974305; // 0x10301e1
+ field @Deprecated public static final int Theme_Holo_Panel = 16973947; // 0x103007b
+ field @Deprecated public static final int Theme_Holo_Wallpaper = 16973949; // 0x103007d
+ field @Deprecated public static final int Theme_Holo_Wallpaper_NoTitleBar = 16973950; // 0x103007e
field public static final int Theme_InputMethod = 16973908; // 0x1030054
field public static final int Theme_Light = 16973836; // 0x103000c
field public static final int Theme_Light_NoTitleBar = 16973837; // 0x103000d
@@ -2401,18 +2402,18 @@
field public static final int Widget_DeviceDefault_Light = 16974196; // 0x1030174
field public static final int Widget_DeviceDefault_Light_ActionBar = 16974243; // 0x10301a3
field public static final int Widget_DeviceDefault_Light_ActionBar_Solid = 16974247; // 0x10301a7
- field public static final deprecated int Widget_DeviceDefault_Light_ActionBar_Solid_Inverse = 16974248; // 0x10301a8
+ field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_Solid_Inverse = 16974248; // 0x10301a8
field public static final int Widget_DeviceDefault_Light_ActionBar_TabBar = 16974246; // 0x10301a6
- field public static final deprecated int Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse = 16974249; // 0x10301a9
+ field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse = 16974249; // 0x10301a9
field public static final int Widget_DeviceDefault_Light_ActionBar_TabText = 16974245; // 0x10301a5
- field public static final deprecated int Widget_DeviceDefault_Light_ActionBar_TabText_Inverse = 16974251; // 0x10301ab
+ field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabText_Inverse = 16974251; // 0x10301ab
field public static final int Widget_DeviceDefault_Light_ActionBar_TabView = 16974244; // 0x10301a4
- field public static final deprecated int Widget_DeviceDefault_Light_ActionBar_TabView_Inverse = 16974250; // 0x10301aa
+ field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabView_Inverse = 16974250; // 0x10301aa
field public static final int Widget_DeviceDefault_Light_ActionButton = 16974239; // 0x103019f
field public static final int Widget_DeviceDefault_Light_ActionButton_CloseMode = 16974242; // 0x10301a2
field public static final int Widget_DeviceDefault_Light_ActionButton_Overflow = 16974240; // 0x10301a0
field public static final int Widget_DeviceDefault_Light_ActionMode = 16974241; // 0x10301a1
- field public static final deprecated int Widget_DeviceDefault_Light_ActionMode_Inverse = 16974252; // 0x10301ac
+ field @Deprecated public static final int Widget_DeviceDefault_Light_ActionMode_Inverse = 16974252; // 0x10301ac
field public static final int Widget_DeviceDefault_Light_AutoCompleteTextView = 16974203; // 0x103017b
field public static final int Widget_DeviceDefault_Light_Button = 16974197; // 0x1030175
field public static final int Widget_DeviceDefault_Light_Button_Borderless_Small = 16974201; // 0x1030179
@@ -2606,7 +2607,7 @@
field public static final int Widget_Holo_WebView = 16973993; // 0x10300a9
field public static final int Widget_ImageButton = 16973862; // 0x1030026
field public static final int Widget_ImageWell = 16973861; // 0x1030025
- field public static final deprecated int Widget_KeyboardView = 16973911; // 0x1030057
+ field @Deprecated public static final int Widget_KeyboardView = 16973911; // 0x1030057
field public static final int Widget_ListPopupWindow = 16973957; // 0x1030085
field public static final int Widget_ListView = 16973870; // 0x103002e
field public static final int Widget_ListView_DropDown = 16973872; // 0x1030030
@@ -2795,12 +2796,12 @@
public final class AccessibilityButtonController {
method public boolean isAccessibilityButtonAvailable();
- method public void registerAccessibilityButtonCallback(android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
- method public void registerAccessibilityButtonCallback(android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback, android.os.Handler);
- method public void unregisterAccessibilityButtonCallback(android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
+ method public void registerAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
+ method public void registerAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback, @NonNull android.os.Handler);
+ method public void unregisterAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
}
- public static abstract class AccessibilityButtonController.AccessibilityButtonCallback {
+ public abstract static class AccessibilityButtonController.AccessibilityButtonCallback {
ctor public AccessibilityButtonController.AccessibilityButtonCallback();
method public void onAvailabilityChanged(android.accessibilityservice.AccessibilityButtonController, boolean);
method public void onClicked(android.accessibilityservice.AccessibilityButtonController);
@@ -2809,14 +2810,14 @@
public abstract class AccessibilityService extends android.app.Service {
ctor public AccessibilityService();
method public final void disableSelf();
- method public final boolean dispatchGesture(android.accessibilityservice.GestureDescription, android.accessibilityservice.AccessibilityService.GestureResultCallback, android.os.Handler);
+ method public final boolean dispatchGesture(@NonNull android.accessibilityservice.GestureDescription, @Nullable android.accessibilityservice.AccessibilityService.GestureResultCallback, @Nullable android.os.Handler);
method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
- method public final android.accessibilityservice.AccessibilityButtonController getAccessibilityButtonController();
- method public final android.accessibilityservice.FingerprintGestureController getFingerprintGestureController();
- method public final android.accessibilityservice.AccessibilityService.MagnificationController getMagnificationController();
+ method @NonNull public final android.accessibilityservice.AccessibilityButtonController getAccessibilityButtonController();
+ method @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) @NonNull public final android.accessibilityservice.FingerprintGestureController getFingerprintGestureController();
+ method @NonNull public final android.accessibilityservice.AccessibilityService.MagnificationController getMagnificationController();
method public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
method public final android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
- method public final android.accessibilityservice.AccessibilityService.SoftKeyboardController getSoftKeyboardController();
+ method @NonNull public final android.accessibilityservice.AccessibilityService.SoftKeyboardController getSoftKeyboardController();
method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows();
method public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
method public final android.os.IBinder onBind(android.content.Intent);
@@ -2851,70 +2852,70 @@
field public static final int GLOBAL_ACTION_RECENTS = 3; // 0x3
field public static final int GLOBAL_ACTION_TAKE_SCREENSHOT = 9; // 0x9
field public static final int GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN = 7; // 0x7
- field public static final java.lang.String SERVICE_INTERFACE = "android.accessibilityservice.AccessibilityService";
- field public static final java.lang.String SERVICE_META_DATA = "android.accessibilityservice";
+ field public static final String SERVICE_INTERFACE = "android.accessibilityservice.AccessibilityService";
+ field public static final String SERVICE_META_DATA = "android.accessibilityservice";
field public static final int SHOW_MODE_AUTO = 0; // 0x0
field public static final int SHOW_MODE_HIDDEN = 1; // 0x1
field public static final int SHOW_MODE_IGNORE_HARD_KEYBOARD = 2; // 0x2
}
- public static abstract class AccessibilityService.GestureResultCallback {
+ public abstract static class AccessibilityService.GestureResultCallback {
ctor public AccessibilityService.GestureResultCallback();
method public void onCancelled(android.accessibilityservice.GestureDescription);
method public void onCompleted(android.accessibilityservice.GestureDescription);
}
public static final class AccessibilityService.MagnificationController {
- method public void addListener(android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
- method public void addListener(android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener, android.os.Handler);
+ method public void addListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
+ method public void addListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener, @Nullable android.os.Handler);
method public float getCenterX();
method public float getCenterY();
- method public android.graphics.Region getMagnificationRegion();
+ method @NonNull public android.graphics.Region getMagnificationRegion();
method public float getScale();
- method public boolean removeListener(android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
+ method public boolean removeListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
method public boolean reset(boolean);
method public boolean setCenter(float, float, boolean);
method public boolean setScale(float, boolean);
}
- public static abstract interface AccessibilityService.MagnificationController.OnMagnificationChangedListener {
- method public abstract void onMagnificationChanged(android.accessibilityservice.AccessibilityService.MagnificationController, android.graphics.Region, float, float, float);
+ public static interface AccessibilityService.MagnificationController.OnMagnificationChangedListener {
+ method public void onMagnificationChanged(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController, @NonNull android.graphics.Region, float, float, float);
}
public static final class AccessibilityService.SoftKeyboardController {
- method public void addOnShowModeChangedListener(android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
- method public void addOnShowModeChangedListener(android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener, android.os.Handler);
+ method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
+ method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener, @Nullable android.os.Handler);
method public int getShowMode();
- method public boolean removeOnShowModeChangedListener(android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
+ method public boolean removeOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
method public boolean setShowMode(int);
}
- public static abstract interface AccessibilityService.SoftKeyboardController.OnShowModeChangedListener {
- method public abstract void onShowModeChanged(android.accessibilityservice.AccessibilityService.SoftKeyboardController, int);
+ public static interface AccessibilityService.SoftKeyboardController.OnShowModeChangedListener {
+ method public void onShowModeChanged(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController, int);
}
public class AccessibilityServiceInfo implements android.os.Parcelable {
ctor public AccessibilityServiceInfo();
- method public static java.lang.String capabilityToString(int);
+ method public static String capabilityToString(int);
method public int describeContents();
- method public static java.lang.String feedbackTypeToString(int);
- method public static java.lang.String flagToString(int);
- method public deprecated boolean getCanRetrieveWindowContent();
+ method public static String feedbackTypeToString(int);
+ method public static String flagToString(int);
+ method @Deprecated public boolean getCanRetrieveWindowContent();
method public int getCapabilities();
- method public deprecated java.lang.String getDescription();
- method public java.lang.String getId();
+ method @Deprecated public String getDescription();
+ method public String getId();
method public int getInteractiveUiTimeoutMillis();
method public int getNonInteractiveUiTimeoutMillis();
method public android.content.pm.ResolveInfo getResolveInfo();
- method public java.lang.String getSettingsActivityName();
- method public java.lang.String loadDescription(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadSummary(android.content.pm.PackageManager);
- method public void setInteractiveUiTimeoutMillis(int);
- method public void setNonInteractiveUiTimeoutMillis(int);
+ method public String getSettingsActivityName();
+ method public String loadDescription(android.content.pm.PackageManager);
+ method public CharSequence loadSummary(android.content.pm.PackageManager);
+ method public void setInteractiveUiTimeoutMillis(@IntRange(from=0) int);
+ method public void setNonInteractiveUiTimeoutMillis(@IntRange(from=0) int);
method public void writeToParcel(android.os.Parcel, int);
field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10
field public static final int CAPABILITY_CAN_PERFORM_GESTURES = 32; // 0x20
- field public static final deprecated int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
+ field @Deprecated public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
field public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 8; // 0x8
field public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 64; // 0x40
field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
@@ -2932,7 +2933,7 @@
field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
field public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 256; // 0x100
- field public static final deprecated int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
+ field @Deprecated public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
field public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 512; // 0x200
field public static final int FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK = 1024; // 0x400
@@ -2942,12 +2943,12 @@
field public int feedbackType;
field public int flags;
field public long notificationTimeout;
- field public java.lang.String[] packageNames;
+ field public String[] packageNames;
}
public final class FingerprintGestureController {
method public boolean isGestureDetectionAvailable();
- method public void registerFingerprintGestureCallback(android.accessibilityservice.FingerprintGestureController.FingerprintGestureCallback, android.os.Handler);
+ method public void registerFingerprintGestureCallback(@NonNull android.accessibilityservice.FingerprintGestureController.FingerprintGestureCallback, @Nullable android.os.Handler);
method public void unregisterFingerprintGestureCallback(android.accessibilityservice.FingerprintGestureController.FingerprintGestureCallback);
field public static final int FINGERPRINT_GESTURE_SWIPE_DOWN = 8; // 0x8
field public static final int FINGERPRINT_GESTURE_SWIPE_LEFT = 2; // 0x2
@@ -2955,7 +2956,7 @@
field public static final int FINGERPRINT_GESTURE_SWIPE_UP = 4; // 0x4
}
- public static abstract class FingerprintGestureController.FingerprintGestureCallback {
+ public abstract static class FingerprintGestureController.FingerprintGestureCallback {
ctor public FingerprintGestureController.FingerprintGestureCallback();
method public void onGestureDetected(int);
method public void onGestureDetectionAvailabilityChanged(boolean);
@@ -2964,19 +2965,19 @@
public final class GestureDescription {
method public static long getMaxGestureDuration();
method public static int getMaxStrokeCount();
- method public android.accessibilityservice.GestureDescription.StrokeDescription getStroke(int);
+ method public android.accessibilityservice.GestureDescription.StrokeDescription getStroke(@IntRange(from=0) int);
method public int getStrokeCount();
}
public static class GestureDescription.Builder {
ctor public GestureDescription.Builder();
- method public android.accessibilityservice.GestureDescription.Builder addStroke(android.accessibilityservice.GestureDescription.StrokeDescription);
+ method public android.accessibilityservice.GestureDescription.Builder addStroke(@NonNull android.accessibilityservice.GestureDescription.StrokeDescription);
method public android.accessibilityservice.GestureDescription build();
}
public static class GestureDescription.StrokeDescription {
- ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long);
- ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long, boolean);
+ ctor public GestureDescription.StrokeDescription(@NonNull android.graphics.Path, @IntRange(from=0) long, @IntRange(from=0) long);
+ ctor public GestureDescription.StrokeDescription(@NonNull android.graphics.Path, @IntRange(from=0) long, @IntRange(from=0) long, boolean);
method public android.accessibilityservice.GestureDescription.StrokeDescription continueStroke(android.graphics.Path, long, long, boolean);
method public long getDuration();
method public android.graphics.Path getPath();
@@ -2990,32 +2991,32 @@
public abstract class AbstractAccountAuthenticator {
ctor public AbstractAccountAuthenticator(android.content.Context);
- method public abstract android.os.Bundle addAccount(android.accounts.AccountAuthenticatorResponse, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
+ method public abstract android.os.Bundle addAccount(android.accounts.AccountAuthenticatorResponse, String, String, String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
method public android.os.Bundle addAccountFromCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
method public abstract android.os.Bundle confirmCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
- method public abstract android.os.Bundle editProperties(android.accounts.AccountAuthenticatorResponse, java.lang.String);
- method public android.os.Bundle finishSession(android.accounts.AccountAuthenticatorResponse, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
+ method public abstract android.os.Bundle editProperties(android.accounts.AccountAuthenticatorResponse, String);
+ method public android.os.Bundle finishSession(android.accounts.AccountAuthenticatorResponse, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
method public android.os.Bundle getAccountCredentialsForCloning(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
method public android.os.Bundle getAccountRemovalAllowed(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
- method public abstract android.os.Bundle getAuthToken(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
- method public abstract java.lang.String getAuthTokenLabel(java.lang.String);
+ method public abstract android.os.Bundle getAuthToken(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
+ method public abstract String getAuthTokenLabel(String);
method public final android.os.IBinder getIBinder();
- method public abstract android.os.Bundle hasFeatures(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String[]) throws android.accounts.NetworkErrorException;
- method public android.os.Bundle isCredentialsUpdateSuggested(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String) throws android.accounts.NetworkErrorException;
- method public android.os.Bundle startAddAccountSession(android.accounts.AccountAuthenticatorResponse, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
- method public android.os.Bundle startUpdateCredentialsSession(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
- method public abstract android.os.Bundle updateCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
- field public static final java.lang.String KEY_CUSTOM_TOKEN_EXPIRY = "android.accounts.expiry";
+ method public abstract android.os.Bundle hasFeatures(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String[]) throws android.accounts.NetworkErrorException;
+ method public android.os.Bundle isCredentialsUpdateSuggested(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String) throws android.accounts.NetworkErrorException;
+ method public android.os.Bundle startAddAccountSession(android.accounts.AccountAuthenticatorResponse, String, String, String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
+ method public android.os.Bundle startUpdateCredentialsSession(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
+ method public abstract android.os.Bundle updateCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
+ field public static final String KEY_CUSTOM_TOKEN_EXPIRY = "android.accounts.expiry";
}
public class Account implements android.os.Parcelable {
- ctor public Account(java.lang.String, java.lang.String);
+ ctor public Account(String, String);
ctor public Account(android.os.Parcel);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.accounts.Account> CREATOR;
- field public final java.lang.String name;
- field public final java.lang.String type;
+ field public final String name;
+ field public final String type;
}
public class AccountAuthenticatorActivity extends android.app.Activity {
@@ -3026,7 +3027,7 @@
public class AccountAuthenticatorResponse implements android.os.Parcelable {
ctor public AccountAuthenticatorResponse(android.os.Parcel);
method public int describeContents();
- method public void onError(int, java.lang.String);
+ method public void onError(int, String);
method public void onRequestContinued();
method public void onResult(android.os.Bundle);
method public void writeToParcel(android.os.Parcel, int);
@@ -3034,55 +3035,55 @@
}
public class AccountManager {
- method public android.accounts.AccountManagerFuture<android.os.Bundle> addAccount(java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
- method public boolean addAccountExplicitly(android.accounts.Account, java.lang.String, android.os.Bundle);
- method public boolean addAccountExplicitly(android.accounts.Account, java.lang.String, android.os.Bundle, java.util.Map<java.lang.String, java.lang.Integer>);
- method public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean);
- method public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[]);
- method public java.lang.String blockingGetAuthToken(android.accounts.Account, java.lang.String, boolean) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
- method public void clearPassword(android.accounts.Account);
- method public android.accounts.AccountManagerFuture<android.os.Bundle> confirmCredentials(android.accounts.Account, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
- method public android.accounts.AccountManagerFuture<android.os.Bundle> editProperties(java.lang.String, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> addAccount(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean addAccountExplicitly(android.accounts.Account, String, android.os.Bundle);
+ method public boolean addAccountExplicitly(android.accounts.Account, String, android.os.Bundle, java.util.Map<java.lang.String,java.lang.Integer>);
+ method @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean);
+ method public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, String[]);
+ method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public String blockingGetAuthToken(android.accounts.Account, String, boolean) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
+ method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public void clearPassword(android.accounts.Account);
+ method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> confirmCredentials(android.accounts.Account, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> editProperties(String, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
method public android.accounts.AccountManagerFuture<android.os.Bundle> finishSession(android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
method public static android.accounts.AccountManager get(android.content.Context);
- method public int getAccountVisibility(android.accounts.Account, java.lang.String);
- method public android.accounts.Account[] getAccounts();
- method public java.util.Map<android.accounts.Account, java.lang.Integer> getAccountsAndVisibilityForPackage(java.lang.String, java.lang.String);
- method public android.accounts.Account[] getAccountsByType(java.lang.String);
- method public android.accounts.AccountManagerFuture<android.accounts.Account[]> getAccountsByTypeAndFeatures(java.lang.String, java.lang.String[], android.accounts.AccountManagerCallback<android.accounts.Account[]>, android.os.Handler);
- method public android.accounts.Account[] getAccountsByTypeForPackage(java.lang.String, java.lang.String);
- method public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, java.lang.String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
- method public deprecated android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, java.lang.String, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
- method public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, java.lang.String, android.os.Bundle, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
- method public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthTokenByFeatures(java.lang.String, java.lang.String, java.lang.String[], android.app.Activity, android.os.Bundle, android.os.Bundle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method public int getAccountVisibility(android.accounts.Account, String);
+ method @NonNull @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public android.accounts.Account[] getAccounts();
+ method public java.util.Map<android.accounts.Account,java.lang.Integer> getAccountsAndVisibilityForPackage(String, String);
+ method @NonNull @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public android.accounts.Account[] getAccountsByType(String);
+ method public android.accounts.AccountManagerFuture<android.accounts.Account[]> getAccountsByTypeAndFeatures(String, String[], android.accounts.AccountManagerCallback<android.accounts.Account[]>, android.os.Handler);
+ method @NonNull public android.accounts.Account[] getAccountsByTypeForPackage(String, String);
+ method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method @Deprecated @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, android.os.Bundle, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthTokenByFeatures(String, String, String[], android.app.Activity, android.os.Bundle, android.os.Bundle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
method public android.accounts.AuthenticatorDescription[] getAuthenticatorTypes();
- method public java.util.Map<java.lang.String, java.lang.Integer> getPackagesAndVisibilityForAccount(android.accounts.Account);
- method public java.lang.String getPassword(android.accounts.Account);
- method public java.lang.String getPreviousName(android.accounts.Account);
- method public java.lang.String getUserData(android.accounts.Account, java.lang.String);
- method public android.accounts.AccountManagerFuture<java.lang.Boolean> hasFeatures(android.accounts.Account, java.lang.String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
- method public void invalidateAuthToken(java.lang.String, java.lang.String);
- method public android.accounts.AccountManagerFuture<java.lang.Boolean> isCredentialsUpdateSuggested(android.accounts.Account, java.lang.String, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
- method public static deprecated android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, java.lang.String[], boolean, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle);
- method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.List<android.accounts.Account>, java.lang.String[], java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle);
- method public boolean notifyAccountAuthenticated(android.accounts.Account);
- method public java.lang.String peekAuthToken(android.accounts.Account, java.lang.String);
- method public deprecated android.accounts.AccountManagerFuture<java.lang.Boolean> removeAccount(android.accounts.Account, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
- method public android.accounts.AccountManagerFuture<android.os.Bundle> removeAccount(android.accounts.Account, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
- method public boolean removeAccountExplicitly(android.accounts.Account);
+ method public java.util.Map<java.lang.String,java.lang.Integer> getPackagesAndVisibilityForAccount(android.accounts.Account);
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String getPassword(android.accounts.Account);
+ method public String getPreviousName(android.accounts.Account);
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String getUserData(android.accounts.Account, String);
+ method public android.accounts.AccountManagerFuture<java.lang.Boolean> hasFeatures(android.accounts.Account, String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
+ method @RequiresPermission(anyOf={"android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS"}, apis="..22") public void invalidateAuthToken(String, String);
+ method public android.accounts.AccountManagerFuture<java.lang.Boolean> isCredentialsUpdateSuggested(android.accounts.Account, String, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
+ method @Deprecated public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, String[], boolean, String, String, String[], android.os.Bundle);
+ method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.List<android.accounts.Account>, String[], String, String, String[], android.os.Bundle);
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean notifyAccountAuthenticated(android.accounts.Account);
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String peekAuthToken(android.accounts.Account, String);
+ method @Deprecated @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<java.lang.Boolean> removeAccount(android.accounts.Account, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
+ method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> removeAccount(android.accounts.Account, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean removeAccountExplicitly(android.accounts.Account);
method public void removeOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener);
- method public android.accounts.AccountManagerFuture<android.accounts.Account> renameAccount(android.accounts.Account, java.lang.String, android.accounts.AccountManagerCallback<android.accounts.Account>, android.os.Handler);
- method public boolean setAccountVisibility(android.accounts.Account, java.lang.String, int);
- method public void setAuthToken(android.accounts.Account, java.lang.String, java.lang.String);
- method public void setPassword(android.accounts.Account, java.lang.String);
- method public void setUserData(android.accounts.Account, java.lang.String, java.lang.String);
- method public android.accounts.AccountManagerFuture<android.os.Bundle> startAddAccountSession(java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
- method public android.accounts.AccountManagerFuture<android.os.Bundle> startUpdateCredentialsSession(android.accounts.Account, java.lang.String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
- method public android.accounts.AccountManagerFuture<android.os.Bundle> updateCredentials(android.accounts.Account, java.lang.String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
- field public static final java.lang.String ACTION_ACCOUNT_REMOVED = "android.accounts.action.ACCOUNT_REMOVED";
- field public static final java.lang.String ACTION_AUTHENTICATOR_INTENT = "android.accounts.AccountAuthenticator";
- field public static final java.lang.String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator";
- field public static final java.lang.String AUTHENTICATOR_META_DATA_NAME = "android.accounts.AccountAuthenticator";
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.accounts.Account> renameAccount(android.accounts.Account, @Size(min=1) String, android.accounts.AccountManagerCallback<android.accounts.Account>, android.os.Handler);
+ method public boolean setAccountVisibility(android.accounts.Account, String, int);
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setAuthToken(android.accounts.Account, String, String);
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setPassword(android.accounts.Account, String);
+ method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setUserData(android.accounts.Account, String, String);
+ method public android.accounts.AccountManagerFuture<android.os.Bundle> startAddAccountSession(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method public android.accounts.AccountManagerFuture<android.os.Bundle> startUpdateCredentialsSession(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> updateCredentials(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ field public static final String ACTION_ACCOUNT_REMOVED = "android.accounts.action.ACCOUNT_REMOVED";
+ field public static final String ACTION_AUTHENTICATOR_INTENT = "android.accounts.AccountAuthenticator";
+ field public static final String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator";
+ field public static final String AUTHENTICATOR_META_DATA_NAME = "android.accounts.AccountAuthenticator";
field public static final int ERROR_CODE_BAD_ARGUMENTS = 7; // 0x7
field public static final int ERROR_CODE_BAD_AUTHENTICATION = 9; // 0x9
field public static final int ERROR_CODE_BAD_REQUEST = 8; // 0x8
@@ -3091,30 +3092,30 @@
field public static final int ERROR_CODE_NETWORK_ERROR = 3; // 0x3
field public static final int ERROR_CODE_REMOTE_EXCEPTION = 1; // 0x1
field public static final int ERROR_CODE_UNSUPPORTED_OPERATION = 6; // 0x6
- field public static final java.lang.String KEY_ACCOUNTS = "accounts";
- field public static final java.lang.String KEY_ACCOUNT_AUTHENTICATOR_RESPONSE = "accountAuthenticatorResponse";
- field public static final java.lang.String KEY_ACCOUNT_MANAGER_RESPONSE = "accountManagerResponse";
- field public static final java.lang.String KEY_ACCOUNT_NAME = "authAccount";
- field public static final java.lang.String KEY_ACCOUNT_SESSION_BUNDLE = "accountSessionBundle";
- field public static final java.lang.String KEY_ACCOUNT_STATUS_TOKEN = "accountStatusToken";
- field public static final java.lang.String KEY_ACCOUNT_TYPE = "accountType";
- field public static final java.lang.String KEY_ANDROID_PACKAGE_NAME = "androidPackageName";
- field public static final java.lang.String KEY_AUTHENTICATOR_TYPES = "authenticator_types";
- field public static final java.lang.String KEY_AUTHTOKEN = "authtoken";
- field public static final java.lang.String KEY_AUTH_FAILED_MESSAGE = "authFailedMessage";
- field public static final java.lang.String KEY_AUTH_TOKEN_LABEL = "authTokenLabelKey";
- field public static final java.lang.String KEY_BOOLEAN_RESULT = "booleanResult";
- field public static final java.lang.String KEY_CALLER_PID = "callerPid";
- field public static final java.lang.String KEY_CALLER_UID = "callerUid";
- field public static final java.lang.String KEY_ERROR_CODE = "errorCode";
- field public static final java.lang.String KEY_ERROR_MESSAGE = "errorMessage";
- field public static final java.lang.String KEY_INTENT = "intent";
- field public static final java.lang.String KEY_LAST_AUTHENTICATED_TIME = "lastAuthenticatedTime";
- field public static final java.lang.String KEY_PASSWORD = "password";
- field public static final java.lang.String KEY_USERDATA = "userdata";
- field public static final deprecated java.lang.String LOGIN_ACCOUNTS_CHANGED_ACTION = "android.accounts.LOGIN_ACCOUNTS_CHANGED";
- field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android:accounts:key_legacy_not_visible";
- field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android:accounts:key_legacy_visible";
+ field public static final String KEY_ACCOUNTS = "accounts";
+ field public static final String KEY_ACCOUNT_AUTHENTICATOR_RESPONSE = "accountAuthenticatorResponse";
+ field public static final String KEY_ACCOUNT_MANAGER_RESPONSE = "accountManagerResponse";
+ field public static final String KEY_ACCOUNT_NAME = "authAccount";
+ field public static final String KEY_ACCOUNT_SESSION_BUNDLE = "accountSessionBundle";
+ field public static final String KEY_ACCOUNT_STATUS_TOKEN = "accountStatusToken";
+ field public static final String KEY_ACCOUNT_TYPE = "accountType";
+ field public static final String KEY_ANDROID_PACKAGE_NAME = "androidPackageName";
+ field public static final String KEY_AUTHENTICATOR_TYPES = "authenticator_types";
+ field public static final String KEY_AUTHTOKEN = "authtoken";
+ field public static final String KEY_AUTH_FAILED_MESSAGE = "authFailedMessage";
+ field public static final String KEY_AUTH_TOKEN_LABEL = "authTokenLabelKey";
+ field public static final String KEY_BOOLEAN_RESULT = "booleanResult";
+ field public static final String KEY_CALLER_PID = "callerPid";
+ field public static final String KEY_CALLER_UID = "callerUid";
+ field public static final String KEY_ERROR_CODE = "errorCode";
+ field public static final String KEY_ERROR_MESSAGE = "errorMessage";
+ field public static final String KEY_INTENT = "intent";
+ field public static final String KEY_LAST_AUTHENTICATED_TIME = "lastAuthenticatedTime";
+ field public static final String KEY_PASSWORD = "password";
+ field public static final String KEY_USERDATA = "userdata";
+ field @Deprecated public static final String LOGIN_ACCOUNTS_CHANGED_ACTION = "android.accounts.LOGIN_ACCOUNTS_CHANGED";
+ field public static final String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android:accounts:key_legacy_not_visible";
+ field public static final String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android:accounts:key_legacy_visible";
field public static final int VISIBILITY_NOT_VISIBLE = 3; // 0x3
field public static final int VISIBILITY_UNDEFINED = 0; // 0x0
field public static final int VISIBILITY_USER_MANAGED_NOT_VISIBLE = 4; // 0x4
@@ -3122,64 +3123,64 @@
field public static final int VISIBILITY_VISIBLE = 1; // 0x1
}
- public abstract interface AccountManagerCallback<V> {
- method public abstract void run(android.accounts.AccountManagerFuture<V>);
+ public interface AccountManagerCallback<V> {
+ method public void run(android.accounts.AccountManagerFuture<V>);
}
- public abstract interface AccountManagerFuture<V> {
- method public abstract boolean cancel(boolean);
- method public abstract V getResult() throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
- method public abstract V getResult(long, java.util.concurrent.TimeUnit) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
- method public abstract boolean isCancelled();
- method public abstract boolean isDone();
+ public interface AccountManagerFuture<V> {
+ method public boolean cancel(boolean);
+ method public V getResult() throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
+ method public V getResult(long, java.util.concurrent.TimeUnit) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
+ method public boolean isCancelled();
+ method public boolean isDone();
}
public class AccountsException extends java.lang.Exception {
ctor public AccountsException();
- ctor public AccountsException(java.lang.String);
- ctor public AccountsException(java.lang.String, java.lang.Throwable);
- ctor public AccountsException(java.lang.Throwable);
+ ctor public AccountsException(String);
+ ctor public AccountsException(String, Throwable);
+ ctor public AccountsException(Throwable);
}
public class AuthenticatorDescription implements android.os.Parcelable {
- ctor public AuthenticatorDescription(java.lang.String, java.lang.String, int, int, int, int, boolean);
- ctor public AuthenticatorDescription(java.lang.String, java.lang.String, int, int, int, int);
+ ctor public AuthenticatorDescription(String, String, int, int, int, int, boolean);
+ ctor public AuthenticatorDescription(String, String, int, int, int, int);
method public int describeContents();
- method public static android.accounts.AuthenticatorDescription newKey(java.lang.String);
+ method public static android.accounts.AuthenticatorDescription newKey(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.accounts.AuthenticatorDescription> CREATOR;
field public final int accountPreferencesId;
field public final boolean customTokens;
field public final int iconId;
field public final int labelId;
- field public final java.lang.String packageName;
+ field public final String packageName;
field public final int smallIconId;
- field public final java.lang.String type;
+ field public final String type;
}
public class AuthenticatorException extends android.accounts.AccountsException {
ctor public AuthenticatorException();
- ctor public AuthenticatorException(java.lang.String);
- ctor public AuthenticatorException(java.lang.String, java.lang.Throwable);
- ctor public AuthenticatorException(java.lang.Throwable);
+ ctor public AuthenticatorException(String);
+ ctor public AuthenticatorException(String, Throwable);
+ ctor public AuthenticatorException(Throwable);
}
public class NetworkErrorException extends android.accounts.AccountsException {
ctor public NetworkErrorException();
- ctor public NetworkErrorException(java.lang.String);
- ctor public NetworkErrorException(java.lang.String, java.lang.Throwable);
- ctor public NetworkErrorException(java.lang.Throwable);
+ ctor public NetworkErrorException(String);
+ ctor public NetworkErrorException(String, Throwable);
+ ctor public NetworkErrorException(Throwable);
}
- public abstract interface OnAccountsUpdateListener {
- method public abstract void onAccountsUpdated(android.accounts.Account[]);
+ public interface OnAccountsUpdateListener {
+ method public void onAccountsUpdated(android.accounts.Account[]);
}
public class OperationCanceledException extends android.accounts.AccountsException {
ctor public OperationCanceledException();
- ctor public OperationCanceledException(java.lang.String);
- ctor public OperationCanceledException(java.lang.String, java.lang.Throwable);
- ctor public OperationCanceledException(java.lang.Throwable);
+ ctor public OperationCanceledException(String);
+ ctor public OperationCanceledException(String, Throwable);
+ ctor public OperationCanceledException(Throwable);
}
}
@@ -3209,30 +3210,30 @@
method public abstract android.animation.Animator setDuration(long);
method public abstract void setInterpolator(android.animation.TimeInterpolator);
method public abstract void setStartDelay(long);
- method public void setTarget(java.lang.Object);
+ method public void setTarget(@Nullable Object);
method public void setupEndValues();
method public void setupStartValues();
method public void start();
field public static final long DURATION_INFINITE = -1L; // 0xffffffffffffffffL
}
- public static abstract interface Animator.AnimatorListener {
- method public abstract void onAnimationCancel(android.animation.Animator);
+ public static interface Animator.AnimatorListener {
+ method public void onAnimationCancel(android.animation.Animator);
method public default void onAnimationEnd(android.animation.Animator, boolean);
- method public abstract void onAnimationEnd(android.animation.Animator);
- method public abstract void onAnimationRepeat(android.animation.Animator);
+ method public void onAnimationEnd(android.animation.Animator);
+ method public void onAnimationRepeat(android.animation.Animator);
method public default void onAnimationStart(android.animation.Animator, boolean);
- method public abstract void onAnimationStart(android.animation.Animator);
+ method public void onAnimationStart(android.animation.Animator);
}
- public static abstract interface Animator.AnimatorPauseListener {
- method public abstract void onAnimationPause(android.animation.Animator);
- method public abstract void onAnimationResume(android.animation.Animator);
+ public static interface Animator.AnimatorPauseListener {
+ method public void onAnimationPause(android.animation.Animator);
+ method public void onAnimationResume(android.animation.Animator);
}
public class AnimatorInflater {
ctor public AnimatorInflater();
- method public static android.animation.Animator loadAnimator(android.content.Context, int) throws android.content.res.Resources.NotFoundException;
+ method public static android.animation.Animator loadAnimator(android.content.Context, @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
method public static android.animation.StateListAnimator loadStateListAnimator(android.content.Context, int) throws android.content.res.Resources.NotFoundException;
}
@@ -3275,35 +3276,35 @@
public class ArgbEvaluator implements android.animation.TypeEvaluator {
ctor public ArgbEvaluator();
- method public java.lang.Object evaluate(float, java.lang.Object, java.lang.Object);
+ method public Object evaluate(float, Object, Object);
}
- public abstract class BidirectionalTypeConverter<T, V> extends android.animation.TypeConverter {
- ctor public BidirectionalTypeConverter(java.lang.Class<T>, java.lang.Class<V>);
+ public abstract class BidirectionalTypeConverter<T, V> extends android.animation.TypeConverter<T,V> {
+ ctor public BidirectionalTypeConverter(Class<T>, Class<V>);
method public abstract T convertBack(V);
- method public android.animation.BidirectionalTypeConverter<V, T> invert();
+ method public android.animation.BidirectionalTypeConverter<V,T> invert();
}
- public class FloatArrayEvaluator implements android.animation.TypeEvaluator {
+ public class FloatArrayEvaluator implements android.animation.TypeEvaluator<float[]> {
ctor public FloatArrayEvaluator();
ctor public FloatArrayEvaluator(float[]);
method public float[] evaluate(float, float[], float[]);
}
- public class FloatEvaluator implements android.animation.TypeEvaluator {
+ public class FloatEvaluator implements android.animation.TypeEvaluator<java.lang.Number> {
ctor public FloatEvaluator();
- method public java.lang.Float evaluate(float, java.lang.Number, java.lang.Number);
+ method public Float evaluate(float, Number, Number);
}
- public class IntArrayEvaluator implements android.animation.TypeEvaluator {
+ public class IntArrayEvaluator implements android.animation.TypeEvaluator<int[]> {
ctor public IntArrayEvaluator();
ctor public IntArrayEvaluator(int[]);
method public int[] evaluate(float, int[], int[]);
}
- public class IntEvaluator implements android.animation.TypeEvaluator {
+ public class IntEvaluator implements android.animation.TypeEvaluator<java.lang.Integer> {
ctor public IntEvaluator();
- method public java.lang.Integer evaluate(float, java.lang.Integer, java.lang.Integer);
+ method public Integer evaluate(float, Integer, Integer);
}
public abstract class Keyframe implements java.lang.Cloneable {
@@ -3311,18 +3312,18 @@
method public abstract android.animation.Keyframe clone();
method public float getFraction();
method public android.animation.TimeInterpolator getInterpolator();
- method public java.lang.Class getType();
- method public abstract java.lang.Object getValue();
+ method public Class getType();
+ method public abstract Object getValue();
method public boolean hasValue();
method public static android.animation.Keyframe ofFloat(float, float);
method public static android.animation.Keyframe ofFloat(float);
method public static android.animation.Keyframe ofInt(float, int);
method public static android.animation.Keyframe ofInt(float);
- method public static android.animation.Keyframe ofObject(float, java.lang.Object);
+ method public static android.animation.Keyframe ofObject(float, Object);
method public static android.animation.Keyframe ofObject(float);
method public void setFraction(float);
method public void setInterpolator(android.animation.TimeInterpolator);
- method public abstract void setValue(java.lang.Object);
+ method public abstract void setValue(Object);
}
public class LayoutTransition {
@@ -3337,7 +3338,7 @@
method public long getStagger(int);
method public long getStartDelay(int);
method public java.util.List<android.animation.LayoutTransition.TransitionListener> getTransitionListeners();
- method public deprecated void hideChild(android.view.ViewGroup, android.view.View);
+ method @Deprecated public void hideChild(android.view.ViewGroup, android.view.View);
method public void hideChild(android.view.ViewGroup, android.view.View, int);
method public boolean isChangingLayout();
method public boolean isRunning();
@@ -3351,7 +3352,7 @@
method public void setInterpolator(int, android.animation.TimeInterpolator);
method public void setStagger(int, long);
method public void setStartDelay(int, long);
- method public deprecated void showChild(android.view.ViewGroup, android.view.View);
+ method @Deprecated public void showChild(android.view.ViewGroup, android.view.View);
method public void showChild(android.view.ViewGroup, android.view.View, int);
field public static final int APPEARING = 2; // 0x2
field public static final int CHANGE_APPEARING = 0; // 0x0
@@ -3360,45 +3361,45 @@
field public static final int DISAPPEARING = 3; // 0x3
}
- public static abstract interface LayoutTransition.TransitionListener {
- method public abstract void endTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
- method public abstract void startTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
+ public static interface LayoutTransition.TransitionListener {
+ method public void endTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
+ method public void startTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
}
public final class ObjectAnimator extends android.animation.ValueAnimator {
ctor public ObjectAnimator();
method public android.animation.ObjectAnimator clone();
- method public java.lang.String getPropertyName();
- method public java.lang.Object getTarget();
- method public static android.animation.ObjectAnimator ofArgb(java.lang.Object, java.lang.String, int...);
- method public static <T> android.animation.ObjectAnimator ofArgb(T, android.util.Property<T, java.lang.Integer>, int...);
- method public static android.animation.ObjectAnimator ofFloat(java.lang.Object, java.lang.String, float...);
- method public static android.animation.ObjectAnimator ofFloat(java.lang.Object, java.lang.String, java.lang.String, android.graphics.Path);
- method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T, java.lang.Float>, float...);
- method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T, java.lang.Float>, android.util.Property<T, java.lang.Float>, android.graphics.Path);
- method public static android.animation.ObjectAnimator ofInt(java.lang.Object, java.lang.String, int...);
- method public static android.animation.ObjectAnimator ofInt(java.lang.Object, java.lang.String, java.lang.String, android.graphics.Path);
- method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T, java.lang.Integer>, int...);
- method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T, java.lang.Integer>, android.util.Property<T, java.lang.Integer>, android.graphics.Path);
- method public static android.animation.ObjectAnimator ofMultiFloat(java.lang.Object, java.lang.String, float[][]);
- method public static android.animation.ObjectAnimator ofMultiFloat(java.lang.Object, java.lang.String, android.graphics.Path);
- method public static <T> android.animation.ObjectAnimator ofMultiFloat(java.lang.Object, java.lang.String, android.animation.TypeConverter<T, float[]>, android.animation.TypeEvaluator<T>, T...);
- method public static android.animation.ObjectAnimator ofMultiInt(java.lang.Object, java.lang.String, int[][]);
- method public static android.animation.ObjectAnimator ofMultiInt(java.lang.Object, java.lang.String, android.graphics.Path);
- method public static <T> android.animation.ObjectAnimator ofMultiInt(java.lang.Object, java.lang.String, android.animation.TypeConverter<T, int[]>, android.animation.TypeEvaluator<T>, T...);
- method public static android.animation.ObjectAnimator ofObject(java.lang.Object, java.lang.String, android.animation.TypeEvaluator, java.lang.Object...);
- method public static android.animation.ObjectAnimator ofObject(java.lang.Object, java.lang.String, android.animation.TypeConverter<android.graphics.PointF, ?>, android.graphics.Path);
- method public static <T, V> android.animation.ObjectAnimator ofObject(T, android.util.Property<T, V>, android.animation.TypeEvaluator<V>, V...);
- method public static <T, V, P> android.animation.ObjectAnimator ofObject(T, android.util.Property<T, P>, android.animation.TypeConverter<V, P>, android.animation.TypeEvaluator<V>, V...);
- method public static <T, V> android.animation.ObjectAnimator ofObject(T, android.util.Property<T, V>, android.animation.TypeConverter<android.graphics.PointF, V>, android.graphics.Path);
- method public static android.animation.ObjectAnimator ofPropertyValuesHolder(java.lang.Object, android.animation.PropertyValuesHolder...);
+ method @Nullable public String getPropertyName();
+ method @Nullable public Object getTarget();
+ method public static android.animation.ObjectAnimator ofArgb(Object, String, int...);
+ method public static <T> android.animation.ObjectAnimator ofArgb(T, android.util.Property<T,java.lang.Integer>, int...);
+ method public static android.animation.ObjectAnimator ofFloat(Object, String, float...);
+ method public static android.animation.ObjectAnimator ofFloat(Object, String, String, android.graphics.Path);
+ method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T,java.lang.Float>, float...);
+ method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T,java.lang.Float>, android.util.Property<T,java.lang.Float>, android.graphics.Path);
+ method public static android.animation.ObjectAnimator ofInt(Object, String, int...);
+ method public static android.animation.ObjectAnimator ofInt(Object, String, String, android.graphics.Path);
+ method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T,java.lang.Integer>, int...);
+ method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T,java.lang.Integer>, android.util.Property<T,java.lang.Integer>, android.graphics.Path);
+ method public static android.animation.ObjectAnimator ofMultiFloat(Object, String, float[][]);
+ method public static android.animation.ObjectAnimator ofMultiFloat(Object, String, android.graphics.Path);
+ method @java.lang.SafeVarargs public static <T> android.animation.ObjectAnimator ofMultiFloat(Object, String, android.animation.TypeConverter<T,float[]>, android.animation.TypeEvaluator<T>, T...);
+ method public static android.animation.ObjectAnimator ofMultiInt(Object, String, int[][]);
+ method public static android.animation.ObjectAnimator ofMultiInt(Object, String, android.graphics.Path);
+ method @java.lang.SafeVarargs public static <T> android.animation.ObjectAnimator ofMultiInt(Object, String, android.animation.TypeConverter<T,int[]>, android.animation.TypeEvaluator<T>, T...);
+ method public static android.animation.ObjectAnimator ofObject(Object, String, android.animation.TypeEvaluator, java.lang.Object...);
+ method @NonNull public static android.animation.ObjectAnimator ofObject(Object, String, @Nullable android.animation.TypeConverter<android.graphics.PointF,?>, android.graphics.Path);
+ method @NonNull @java.lang.SafeVarargs public static <T, V> android.animation.ObjectAnimator ofObject(T, android.util.Property<T,V>, android.animation.TypeEvaluator<V>, V...);
+ method @NonNull @java.lang.SafeVarargs public static <T, V, P> android.animation.ObjectAnimator ofObject(T, android.util.Property<T,P>, android.animation.TypeConverter<V,P>, android.animation.TypeEvaluator<V>, V...);
+ method @NonNull public static <T, V> android.animation.ObjectAnimator ofObject(T, @NonNull android.util.Property<T,V>, @Nullable android.animation.TypeConverter<android.graphics.PointF,V>, android.graphics.Path);
+ method @NonNull public static android.animation.ObjectAnimator ofPropertyValuesHolder(Object, android.animation.PropertyValuesHolder...);
method public void setAutoCancel(boolean);
- method public android.animation.ObjectAnimator setDuration(long);
- method public void setProperty(android.util.Property);
- method public void setPropertyName(java.lang.String);
+ method @NonNull public android.animation.ObjectAnimator setDuration(long);
+ method public void setProperty(@NonNull android.util.Property);
+ method public void setPropertyName(@NonNull String);
}
- public class PointFEvaluator implements android.animation.TypeEvaluator {
+ public class PointFEvaluator implements android.animation.TypeEvaluator<android.graphics.PointF> {
ctor public PointFEvaluator();
ctor public PointFEvaluator(android.graphics.PointF);
method public android.graphics.PointF evaluate(float, android.graphics.PointF, android.graphics.PointF);
@@ -3406,26 +3407,26 @@
public class PropertyValuesHolder implements java.lang.Cloneable {
method public android.animation.PropertyValuesHolder clone();
- method public java.lang.String getPropertyName();
- method public static android.animation.PropertyValuesHolder ofFloat(java.lang.String, float...);
- method public static android.animation.PropertyValuesHolder ofFloat(android.util.Property<?, java.lang.Float>, float...);
- method public static android.animation.PropertyValuesHolder ofInt(java.lang.String, int...);
- method public static android.animation.PropertyValuesHolder ofInt(android.util.Property<?, java.lang.Integer>, int...);
- method public static android.animation.PropertyValuesHolder ofKeyframe(java.lang.String, android.animation.Keyframe...);
+ method public String getPropertyName();
+ method public static android.animation.PropertyValuesHolder ofFloat(String, float...);
+ method public static android.animation.PropertyValuesHolder ofFloat(android.util.Property<?,java.lang.Float>, float...);
+ method public static android.animation.PropertyValuesHolder ofInt(String, int...);
+ method public static android.animation.PropertyValuesHolder ofInt(android.util.Property<?,java.lang.Integer>, int...);
+ method public static android.animation.PropertyValuesHolder ofKeyframe(String, android.animation.Keyframe...);
method public static android.animation.PropertyValuesHolder ofKeyframe(android.util.Property, android.animation.Keyframe...);
- method public static android.animation.PropertyValuesHolder ofMultiFloat(java.lang.String, float[][]);
- method public static android.animation.PropertyValuesHolder ofMultiFloat(java.lang.String, android.graphics.Path);
- method public static <V> android.animation.PropertyValuesHolder ofMultiFloat(java.lang.String, android.animation.TypeConverter<V, float[]>, android.animation.TypeEvaluator<V>, V...);
- method public static <T> android.animation.PropertyValuesHolder ofMultiFloat(java.lang.String, android.animation.TypeConverter<T, float[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
- method public static android.animation.PropertyValuesHolder ofMultiInt(java.lang.String, int[][]);
- method public static android.animation.PropertyValuesHolder ofMultiInt(java.lang.String, android.graphics.Path);
- method public static <V> android.animation.PropertyValuesHolder ofMultiInt(java.lang.String, android.animation.TypeConverter<V, int[]>, android.animation.TypeEvaluator<V>, V...);
- method public static <T> android.animation.PropertyValuesHolder ofMultiInt(java.lang.String, android.animation.TypeConverter<T, int[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
- method public static android.animation.PropertyValuesHolder ofObject(java.lang.String, android.animation.TypeEvaluator, java.lang.Object...);
- method public static android.animation.PropertyValuesHolder ofObject(java.lang.String, android.animation.TypeConverter<android.graphics.PointF, ?>, android.graphics.Path);
- method public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property, android.animation.TypeEvaluator<V>, V...);
- method public static <T, V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?, V>, android.animation.TypeConverter<T, V>, android.animation.TypeEvaluator<T>, T...);
- method public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?, V>, android.animation.TypeConverter<android.graphics.PointF, V>, android.graphics.Path);
+ method public static android.animation.PropertyValuesHolder ofMultiFloat(String, float[][]);
+ method public static android.animation.PropertyValuesHolder ofMultiFloat(String, android.graphics.Path);
+ method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofMultiFloat(String, android.animation.TypeConverter<V,float[]>, android.animation.TypeEvaluator<V>, V...);
+ method public static <T> android.animation.PropertyValuesHolder ofMultiFloat(String, android.animation.TypeConverter<T,float[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
+ method public static android.animation.PropertyValuesHolder ofMultiInt(String, int[][]);
+ method public static android.animation.PropertyValuesHolder ofMultiInt(String, android.graphics.Path);
+ method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofMultiInt(String, android.animation.TypeConverter<V,int[]>, android.animation.TypeEvaluator<V>, V...);
+ method public static <T> android.animation.PropertyValuesHolder ofMultiInt(String, android.animation.TypeConverter<T,int[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
+ method public static android.animation.PropertyValuesHolder ofObject(String, android.animation.TypeEvaluator, java.lang.Object...);
+ method public static android.animation.PropertyValuesHolder ofObject(String, android.animation.TypeConverter<android.graphics.PointF,?>, android.graphics.Path);
+ method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property, android.animation.TypeEvaluator<V>, V...);
+ method @java.lang.SafeVarargs public static <T, V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?,V>, android.animation.TypeConverter<T,V>, android.animation.TypeEvaluator<T>, T...);
+ method public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?,V>, android.animation.TypeConverter<android.graphics.PointF,V>, android.graphics.Path);
method public void setConverter(android.animation.TypeConverter);
method public void setEvaluator(android.animation.TypeEvaluator);
method public void setFloatValues(float...);
@@ -3433,10 +3434,10 @@
method public void setKeyframes(android.animation.Keyframe...);
method public void setObjectValues(java.lang.Object...);
method public void setProperty(android.util.Property);
- method public void setPropertyName(java.lang.String);
+ method public void setPropertyName(String);
}
- public class RectEvaluator implements android.animation.TypeEvaluator {
+ public class RectEvaluator implements android.animation.TypeEvaluator<android.graphics.Rect> {
ctor public RectEvaluator();
ctor public RectEvaluator(android.graphics.Rect);
method public android.graphics.Rect evaluate(float, android.graphics.Rect, android.graphics.Rect);
@@ -3454,21 +3455,21 @@
method public void setTimeListener(android.animation.TimeAnimator.TimeListener);
}
- public static abstract interface TimeAnimator.TimeListener {
- method public abstract void onTimeUpdate(android.animation.TimeAnimator, long, long);
+ public static interface TimeAnimator.TimeListener {
+ method public void onTimeUpdate(android.animation.TimeAnimator, long, long);
}
- public abstract interface TimeInterpolator {
- method public abstract float getInterpolation(float);
+ public interface TimeInterpolator {
+ method public float getInterpolation(float);
}
public abstract class TypeConverter<T, V> {
- ctor public TypeConverter(java.lang.Class<T>, java.lang.Class<V>);
+ ctor public TypeConverter(Class<T>, Class<V>);
method public abstract V convert(T);
}
- public abstract interface TypeEvaluator<T> {
- method public abstract T evaluate(float, T, T);
+ public interface TypeEvaluator<T> {
+ method public T evaluate(float, T, T);
}
public class ValueAnimator extends android.animation.Animator {
@@ -3477,8 +3478,8 @@
method public static boolean areAnimatorsEnabled();
method public android.animation.ValueAnimator clone();
method public float getAnimatedFraction();
- method public java.lang.Object getAnimatedValue();
- method public java.lang.Object getAnimatedValue(java.lang.String);
+ method public Object getAnimatedValue();
+ method public Object getAnimatedValue(String);
method public long getCurrentPlayTime();
method public long getDuration();
method public static long getFrameDelay();
@@ -3513,18 +3514,20 @@
field public static final int REVERSE = 2; // 0x2
}
- public static abstract interface ValueAnimator.AnimatorUpdateListener {
- method public abstract void onAnimationUpdate(android.animation.ValueAnimator);
+ public static interface ValueAnimator.AnimatorUpdateListener {
+ method public void onAnimationUpdate(android.animation.ValueAnimator);
}
}
package android.annotation {
- public abstract class SuppressLint implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.LOCAL_VARIABLE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface SuppressLint {
+ method public abstract String[] value();
}
- public abstract class TargetApi implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface TargetApi {
+ method public abstract int value();
}
}
@@ -3534,37 +3537,37 @@
public abstract class ActionBar {
ctor public ActionBar();
method public abstract void addOnMenuVisibilityListener(android.app.ActionBar.OnMenuVisibilityListener);
- method public abstract deprecated void addTab(android.app.ActionBar.Tab);
- method public abstract deprecated void addTab(android.app.ActionBar.Tab, boolean);
- method public abstract deprecated void addTab(android.app.ActionBar.Tab, int);
- method public abstract deprecated void addTab(android.app.ActionBar.Tab, int, boolean);
+ method @Deprecated public abstract void addTab(android.app.ActionBar.Tab);
+ method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, boolean);
+ method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, int);
+ method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, int, boolean);
method public abstract android.view.View getCustomView();
method public abstract int getDisplayOptions();
method public float getElevation();
method public abstract int getHeight();
method public int getHideOffset();
- method public abstract deprecated int getNavigationItemCount();
- method public abstract deprecated int getNavigationMode();
- method public abstract deprecated int getSelectedNavigationIndex();
- method public abstract deprecated android.app.ActionBar.Tab getSelectedTab();
- method public abstract java.lang.CharSequence getSubtitle();
- method public abstract deprecated android.app.ActionBar.Tab getTabAt(int);
- method public abstract deprecated int getTabCount();
+ method @Deprecated public abstract int getNavigationItemCount();
+ method @Deprecated public abstract int getNavigationMode();
+ method @Deprecated public abstract int getSelectedNavigationIndex();
+ method @Deprecated public abstract android.app.ActionBar.Tab getSelectedTab();
+ method public abstract CharSequence getSubtitle();
+ method @Deprecated public abstract android.app.ActionBar.Tab getTabAt(int);
+ method @Deprecated public abstract int getTabCount();
method public android.content.Context getThemedContext();
- method public abstract java.lang.CharSequence getTitle();
+ method public abstract CharSequence getTitle();
method public abstract void hide();
method public boolean isHideOnContentScrollEnabled();
method public abstract boolean isShowing();
- method public abstract deprecated android.app.ActionBar.Tab newTab();
- method public abstract deprecated void removeAllTabs();
+ method @Deprecated public abstract android.app.ActionBar.Tab newTab();
+ method @Deprecated public abstract void removeAllTabs();
method public abstract void removeOnMenuVisibilityListener(android.app.ActionBar.OnMenuVisibilityListener);
- method public abstract deprecated void removeTab(android.app.ActionBar.Tab);
- method public abstract deprecated void removeTabAt(int);
- method public abstract deprecated void selectTab(android.app.ActionBar.Tab);
- method public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable);
+ method @Deprecated public abstract void removeTab(android.app.ActionBar.Tab);
+ method @Deprecated public abstract void removeTabAt(int);
+ method @Deprecated public abstract void selectTab(android.app.ActionBar.Tab);
+ method public abstract void setBackgroundDrawable(@Nullable android.graphics.drawable.Drawable);
method public abstract void setCustomView(android.view.View);
method public abstract void setCustomView(android.view.View, android.app.ActionBar.LayoutParams);
- method public abstract void setCustomView(int);
+ method public abstract void setCustomView(@LayoutRes int);
method public abstract void setDisplayHomeAsUpEnabled(boolean);
method public abstract void setDisplayOptions(int);
method public abstract void setDisplayOptions(int, int);
@@ -3575,79 +3578,79 @@
method public void setElevation(float);
method public void setHideOffset(int);
method public void setHideOnContentScrollEnabled(boolean);
- method public void setHomeActionContentDescription(java.lang.CharSequence);
- method public void setHomeActionContentDescription(int);
+ method public void setHomeActionContentDescription(CharSequence);
+ method public void setHomeActionContentDescription(@StringRes int);
method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable);
- method public void setHomeAsUpIndicator(int);
+ method public void setHomeAsUpIndicator(@DrawableRes int);
method public void setHomeButtonEnabled(boolean);
- method public abstract void setIcon(int);
+ method public abstract void setIcon(@DrawableRes int);
method public abstract void setIcon(android.graphics.drawable.Drawable);
- method public abstract deprecated void setListNavigationCallbacks(android.widget.SpinnerAdapter, android.app.ActionBar.OnNavigationListener);
- method public abstract void setLogo(int);
+ method @Deprecated public abstract void setListNavigationCallbacks(android.widget.SpinnerAdapter, android.app.ActionBar.OnNavigationListener);
+ method public abstract void setLogo(@DrawableRes int);
method public abstract void setLogo(android.graphics.drawable.Drawable);
- method public abstract deprecated void setNavigationMode(int);
- method public abstract deprecated void setSelectedNavigationItem(int);
+ method @Deprecated public abstract void setNavigationMode(int);
+ method @Deprecated public abstract void setSelectedNavigationItem(int);
method public void setSplitBackgroundDrawable(android.graphics.drawable.Drawable);
method public void setStackedBackgroundDrawable(android.graphics.drawable.Drawable);
- method public abstract void setSubtitle(java.lang.CharSequence);
- method public abstract void setSubtitle(int);
- method public abstract void setTitle(java.lang.CharSequence);
- method public abstract void setTitle(int);
+ method public abstract void setSubtitle(CharSequence);
+ method public abstract void setSubtitle(@StringRes int);
+ method public abstract void setTitle(CharSequence);
+ method public abstract void setTitle(@StringRes int);
method public abstract void show();
field public static final int DISPLAY_HOME_AS_UP = 4; // 0x4
field public static final int DISPLAY_SHOW_CUSTOM = 16; // 0x10
field public static final int DISPLAY_SHOW_HOME = 2; // 0x2
field public static final int DISPLAY_SHOW_TITLE = 8; // 0x8
field public static final int DISPLAY_USE_LOGO = 1; // 0x1
- field public static final deprecated int NAVIGATION_MODE_LIST = 1; // 0x1
- field public static final deprecated int NAVIGATION_MODE_STANDARD = 0; // 0x0
- field public static final deprecated int NAVIGATION_MODE_TABS = 2; // 0x2
+ field @Deprecated public static final int NAVIGATION_MODE_LIST = 1; // 0x1
+ field @Deprecated public static final int NAVIGATION_MODE_STANDARD = 0; // 0x0
+ field @Deprecated public static final int NAVIGATION_MODE_TABS = 2; // 0x2
}
public static class ActionBar.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
- ctor public ActionBar.LayoutParams(android.content.Context, android.util.AttributeSet);
+ ctor public ActionBar.LayoutParams(@NonNull android.content.Context, android.util.AttributeSet);
ctor public ActionBar.LayoutParams(int, int);
ctor public ActionBar.LayoutParams(int, int, int);
ctor public ActionBar.LayoutParams(int);
ctor public ActionBar.LayoutParams(android.app.ActionBar.LayoutParams);
ctor public ActionBar.LayoutParams(android.view.ViewGroup.LayoutParams);
- field public int gravity;
+ field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=0xffffffff, to="NONE"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.NO_GRAVITY, to="NONE"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.TOP, to="TOP"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.BOTTOM, to="BOTTOM"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.LEFT, to="LEFT"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.RIGHT, to="RIGHT"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.START, to="START"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.END, to="END"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.CENTER_VERTICAL, to="CENTER_VERTICAL"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.FILL_VERTICAL, to="FILL_VERTICAL"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.CENTER_HORIZONTAL, to="CENTER_HORIZONTAL"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.FILL_HORIZONTAL, to="FILL_HORIZONTAL"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.CENTER, to="CENTER"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.FILL, to="FILL")}) public int gravity;
}
- public static abstract interface ActionBar.OnMenuVisibilityListener {
- method public abstract void onMenuVisibilityChanged(boolean);
+ public static interface ActionBar.OnMenuVisibilityListener {
+ method public void onMenuVisibilityChanged(boolean);
}
- public static abstract deprecated interface ActionBar.OnNavigationListener {
- method public abstract boolean onNavigationItemSelected(int, long);
+ @Deprecated public static interface ActionBar.OnNavigationListener {
+ method @Deprecated public boolean onNavigationItemSelected(int, long);
}
- public static abstract deprecated class ActionBar.Tab {
- ctor public ActionBar.Tab();
- method public abstract java.lang.CharSequence getContentDescription();
- method public abstract android.view.View getCustomView();
- method public abstract android.graphics.drawable.Drawable getIcon();
- method public abstract int getPosition();
- method public abstract java.lang.Object getTag();
- method public abstract java.lang.CharSequence getText();
- method public abstract void select();
- method public abstract android.app.ActionBar.Tab setContentDescription(int);
- method public abstract android.app.ActionBar.Tab setContentDescription(java.lang.CharSequence);
- method public abstract android.app.ActionBar.Tab setCustomView(android.view.View);
- method public abstract android.app.ActionBar.Tab setCustomView(int);
- method public abstract android.app.ActionBar.Tab setIcon(android.graphics.drawable.Drawable);
- method public abstract android.app.ActionBar.Tab setIcon(int);
- method public abstract android.app.ActionBar.Tab setTabListener(android.app.ActionBar.TabListener);
- method public abstract android.app.ActionBar.Tab setTag(java.lang.Object);
- method public abstract android.app.ActionBar.Tab setText(java.lang.CharSequence);
- method public abstract android.app.ActionBar.Tab setText(int);
- field public static final int INVALID_POSITION = -1; // 0xffffffff
+ @Deprecated public abstract static class ActionBar.Tab {
+ ctor @Deprecated public ActionBar.Tab();
+ method @Deprecated public abstract CharSequence getContentDescription();
+ method @Deprecated public abstract android.view.View getCustomView();
+ method @Deprecated public abstract android.graphics.drawable.Drawable getIcon();
+ method @Deprecated public abstract int getPosition();
+ method @Deprecated public abstract Object getTag();
+ method @Deprecated public abstract CharSequence getText();
+ method @Deprecated public abstract void select();
+ method @Deprecated public abstract android.app.ActionBar.Tab setContentDescription(@StringRes int);
+ method @Deprecated public abstract android.app.ActionBar.Tab setContentDescription(CharSequence);
+ method @Deprecated public abstract android.app.ActionBar.Tab setCustomView(android.view.View);
+ method @Deprecated public abstract android.app.ActionBar.Tab setCustomView(@LayoutRes int);
+ method @Deprecated public abstract android.app.ActionBar.Tab setIcon(android.graphics.drawable.Drawable);
+ method @Deprecated public abstract android.app.ActionBar.Tab setIcon(@DrawableRes int);
+ method @Deprecated public abstract android.app.ActionBar.Tab setTabListener(android.app.ActionBar.TabListener);
+ method @Deprecated public abstract android.app.ActionBar.Tab setTag(Object);
+ method @Deprecated public abstract android.app.ActionBar.Tab setText(CharSequence);
+ method @Deprecated public abstract android.app.ActionBar.Tab setText(@StringRes int);
+ field @Deprecated public static final int INVALID_POSITION = -1; // 0xffffffff
}
- public static abstract deprecated interface ActionBar.TabListener {
- method public abstract void onTabReselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
- method public abstract void onTabSelected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
- method public abstract void onTabUnselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
+ @Deprecated public static interface ActionBar.TabListener {
+ method @Deprecated public void onTabReselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
+ method @Deprecated public void onTabSelected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
+ method @Deprecated public void onTabUnselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
}
public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
@@ -3655,8 +3658,8 @@
method public void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
method public void closeContextMenu();
method public void closeOptionsMenu();
- method public android.app.PendingIntent createPendingResult(int, android.content.Intent, int);
- method public final deprecated void dismissDialog(int);
+ method public android.app.PendingIntent createPendingResult(int, @NonNull android.content.Intent, int);
+ method @Deprecated public final void dismissDialog(int);
method public final void dismissKeyboardShortcutsHelper();
method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
method public boolean dispatchKeyEvent(android.view.KeyEvent);
@@ -3664,43 +3667,43 @@
method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
method public boolean dispatchTouchEvent(android.view.MotionEvent);
method public boolean dispatchTrackballEvent(android.view.MotionEvent);
- method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method public deprecated void enterPictureInPictureMode();
- method public boolean enterPictureInPictureMode(android.app.PictureInPictureParams);
- method public <T extends android.view.View> T findViewById(int);
+ method public void dump(@NonNull String, @Nullable java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]);
+ method @Deprecated public void enterPictureInPictureMode();
+ method public boolean enterPictureInPictureMode(@NonNull android.app.PictureInPictureParams);
+ method public <T extends android.view.View> T findViewById(@IdRes int);
method public void finish();
method public void finishActivity(int);
- method public void finishActivityFromChild(android.app.Activity, int);
+ method public void finishActivityFromChild(@NonNull android.app.Activity, int);
method public void finishAffinity();
method public void finishAfterTransition();
method public void finishAndRemoveTask();
method public void finishFromChild(android.app.Activity);
- method public android.app.ActionBar getActionBar();
+ method @Nullable public android.app.ActionBar getActionBar();
method public final android.app.Application getApplication();
- method public android.content.ComponentName getCallingActivity();
- method public java.lang.String getCallingPackage();
+ method @Nullable public android.content.ComponentName getCallingActivity();
+ method @Nullable public String getCallingPackage();
method public int getChangingConfigurations();
method public android.content.ComponentName getComponentName();
method public android.transition.Scene getContentScene();
method public android.transition.TransitionManager getContentTransitionManager();
- method public android.view.View getCurrentFocus();
- method public deprecated android.app.FragmentManager getFragmentManager();
+ method @Nullable public android.view.View getCurrentFocus();
+ method @Deprecated public android.app.FragmentManager getFragmentManager();
method public android.content.Intent getIntent();
- method public java.lang.Object getLastNonConfigurationInstance();
- method public android.view.LayoutInflater getLayoutInflater();
- method public deprecated android.app.LoaderManager getLoaderManager();
- method public java.lang.String getLocalClassName();
+ method @Nullable public Object getLastNonConfigurationInstance();
+ method @NonNull public android.view.LayoutInflater getLayoutInflater();
+ method @Deprecated public android.app.LoaderManager getLoaderManager();
+ method @NonNull public String getLocalClassName();
method public int getMaxNumPictureInPictureActions();
method public final android.media.session.MediaController getMediaController();
- method public android.view.MenuInflater getMenuInflater();
+ method @NonNull public android.view.MenuInflater getMenuInflater();
method public final android.app.Activity getParent();
- method public android.content.Intent getParentActivityIntent();
+ method @Nullable public android.content.Intent getParentActivityIntent();
method public android.content.SharedPreferences getPreferences(int);
- method public android.net.Uri getReferrer();
+ method @Nullable public android.net.Uri getReferrer();
method public int getRequestedOrientation();
method public final android.view.SearchEvent getSearchEvent();
method public int getTaskId();
- method public final java.lang.CharSequence getTitle();
+ method public final CharSequence getTitle();
method public final int getTitleColor();
method public android.app.VoiceInteractor getVoiceInteractor();
method public final int getVolumeControlStream();
@@ -3720,36 +3723,36 @@
method public boolean isTaskRoot();
method public boolean isVoiceInteraction();
method public boolean isVoiceInteractionRoot();
- method public final deprecated android.database.Cursor managedQuery(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
+ method @Deprecated public final android.database.Cursor managedQuery(android.net.Uri, String[], String, String[], String);
method public boolean moveTaskToBack(boolean);
method public boolean navigateUpTo(android.content.Intent);
method public boolean navigateUpToFromChild(android.app.Activity, android.content.Intent);
- method public void onActionModeFinished(android.view.ActionMode);
- method public void onActionModeStarted(android.view.ActionMode);
+ method @CallSuper public void onActionModeFinished(android.view.ActionMode);
+ method @CallSuper public void onActionModeStarted(android.view.ActionMode);
method public void onActivityReenter(int, android.content.Intent);
method protected void onActivityResult(int, int, android.content.Intent);
- method public deprecated void onAttachFragment(android.app.Fragment);
+ method @Deprecated public void onAttachFragment(android.app.Fragment);
method public void onAttachedToWindow();
method public void onBackPressed();
- method protected void onChildTitleChanged(android.app.Activity, java.lang.CharSequence);
- method public void onConfigurationChanged(android.content.res.Configuration);
+ method protected void onChildTitleChanged(android.app.Activity, CharSequence);
+ method public void onConfigurationChanged(@NonNull android.content.res.Configuration);
method public void onContentChanged();
- method public boolean onContextItemSelected(android.view.MenuItem);
- method public void onContextMenuClosed(android.view.Menu);
- method protected void onCreate(android.os.Bundle);
- method public void onCreate(android.os.Bundle, android.os.PersistableBundle);
+ method public boolean onContextItemSelected(@NonNull android.view.MenuItem);
+ method public void onContextMenuClosed(@NonNull android.view.Menu);
+ method @MainThread @CallSuper protected void onCreate(@Nullable android.os.Bundle);
+ method public void onCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
- method public java.lang.CharSequence onCreateDescription();
- method protected deprecated android.app.Dialog onCreateDialog(int);
- method protected deprecated android.app.Dialog onCreateDialog(int, android.os.Bundle);
+ method @Nullable public CharSequence onCreateDescription();
+ method @Deprecated protected android.app.Dialog onCreateDialog(int);
+ method @Deprecated @Nullable protected android.app.Dialog onCreateDialog(int, android.os.Bundle);
method public void onCreateNavigateUpTaskStack(android.app.TaskStackBuilder);
method public boolean onCreateOptionsMenu(android.view.Menu);
- method public boolean onCreatePanelMenu(int, android.view.Menu);
- method public android.view.View onCreatePanelView(int);
- method public deprecated boolean onCreateThumbnail(android.graphics.Bitmap, android.graphics.Canvas);
- method public android.view.View onCreateView(java.lang.String, android.content.Context, android.util.AttributeSet);
- method public android.view.View onCreateView(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet);
- method protected void onDestroy();
+ method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
+ method @Nullable public android.view.View onCreatePanelView(int);
+ method @Deprecated public boolean onCreateThumbnail(android.graphics.Bitmap, android.graphics.Canvas);
+ method @Nullable public android.view.View onCreateView(@NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
+ method @Nullable public android.view.View onCreateView(@Nullable android.view.View, @NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
+ method @CallSuper protected void onDestroy();
method public void onDetachedFromWindow();
method public void onEnterAnimationComplete();
method public boolean onGenericMotionEvent(android.view.MotionEvent);
@@ -3761,74 +3764,74 @@
method public void onLocalVoiceInteractionStarted();
method public void onLocalVoiceInteractionStopped();
method public void onLowMemory();
- method public boolean onMenuItemSelected(int, android.view.MenuItem);
- method public boolean onMenuOpened(int, android.view.Menu);
+ method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
+ method public boolean onMenuOpened(int, @NonNull android.view.Menu);
method public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
- method public deprecated void onMultiWindowModeChanged(boolean);
+ method @Deprecated public void onMultiWindowModeChanged(boolean);
method public boolean onNavigateUp();
method public boolean onNavigateUpFromChild(android.app.Activity);
method protected void onNewIntent(android.content.Intent);
- method public boolean onOptionsItemSelected(android.view.MenuItem);
+ method public boolean onOptionsItemSelected(@NonNull android.view.MenuItem);
method public void onOptionsMenuClosed(android.view.Menu);
- method public void onPanelClosed(int, android.view.Menu);
- method protected void onPause();
+ method public void onPanelClosed(int, @NonNull android.view.Menu);
+ method @CallSuper protected void onPause();
method public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
- method public deprecated void onPictureInPictureModeChanged(boolean);
- method protected void onPostCreate(android.os.Bundle);
- method public void onPostCreate(android.os.Bundle, android.os.PersistableBundle);
- method protected void onPostResume();
- method protected deprecated void onPrepareDialog(int, android.app.Dialog);
- method protected deprecated void onPrepareDialog(int, android.app.Dialog, android.os.Bundle);
+ method @Deprecated public void onPictureInPictureModeChanged(boolean);
+ method @CallSuper protected void onPostCreate(@Nullable android.os.Bundle);
+ method public void onPostCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
+ method @CallSuper protected void onPostResume();
+ method @Deprecated protected void onPrepareDialog(int, android.app.Dialog);
+ method @Deprecated protected void onPrepareDialog(int, android.app.Dialog, android.os.Bundle);
method public void onPrepareNavigateUpTaskStack(android.app.TaskStackBuilder);
method public boolean onPrepareOptionsMenu(android.view.Menu);
- method public boolean onPreparePanel(int, android.view.View, android.view.Menu);
+ method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
method public void onProvideAssistContent(android.app.assist.AssistContent);
method public void onProvideAssistData(android.os.Bundle);
method public android.net.Uri onProvideReferrer();
- method public void onRequestPermissionsResult(int, java.lang.String[], int[]);
- method protected void onRestart();
- method protected void onRestoreInstanceState(android.os.Bundle);
- method public void onRestoreInstanceState(android.os.Bundle, android.os.PersistableBundle);
- method protected void onResume();
- method public java.lang.Object onRetainNonConfigurationInstance();
- method protected void onSaveInstanceState(android.os.Bundle);
- method public void onSaveInstanceState(android.os.Bundle, android.os.PersistableBundle);
- method public boolean onSearchRequested(android.view.SearchEvent);
+ method public void onRequestPermissionsResult(int, @NonNull String[], @NonNull int[]);
+ method @CallSuper protected void onRestart();
+ method protected void onRestoreInstanceState(@NonNull android.os.Bundle);
+ method public void onRestoreInstanceState(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
+ method @CallSuper protected void onResume();
+ method public Object onRetainNonConfigurationInstance();
+ method protected void onSaveInstanceState(@NonNull android.os.Bundle);
+ method public void onSaveInstanceState(@NonNull android.os.Bundle, @NonNull android.os.PersistableBundle);
+ method public boolean onSearchRequested(@Nullable android.view.SearchEvent);
method public boolean onSearchRequested();
- method protected void onStart();
- method public deprecated void onStateNotSaved();
- method protected void onStop();
- method protected void onTitleChanged(java.lang.CharSequence, int);
+ method @CallSuper protected void onStart();
+ method @Deprecated public void onStateNotSaved();
+ method @CallSuper protected void onStop();
+ method protected void onTitleChanged(CharSequence, int);
method public boolean onTouchEvent(android.view.MotionEvent);
method public boolean onTrackballEvent(android.view.MotionEvent);
method public void onTrimMemory(int);
method public void onUserInteraction();
method protected void onUserLeaveHint();
- method public deprecated void onVisibleBehindCanceled();
+ method @Deprecated @CallSuper public void onVisibleBehindCanceled();
method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
method public void onWindowFocusChanged(boolean);
- method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
- method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
+ method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
+ method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
method public void openContextMenu(android.view.View);
method public void openOptionsMenu();
method public void overridePendingTransition(int, int);
method public void postponeEnterTransition();
method public void recreate();
- method public void registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
+ method public void registerActivityLifecycleCallbacks(@NonNull android.app.Application.ActivityLifecycleCallbacks);
method public void registerForContextMenu(android.view.View);
method public boolean releaseInstance();
- method public final deprecated void removeDialog(int);
+ method @Deprecated public final void removeDialog(int);
method public void reportFullyDrawn();
method public android.view.DragAndDropPermissions requestDragAndDropPermissions(android.view.DragEvent);
- method public final void requestPermissions(java.lang.String[], int);
+ method public final void requestPermissions(@NonNull String[], int);
method public final void requestShowKeyboardShortcuts();
- method public deprecated boolean requestVisibleBehind(boolean);
+ method @Deprecated public boolean requestVisibleBehind(boolean);
method public final boolean requestWindowFeature(int);
- method public final <T extends android.view.View> T requireViewById(int);
- method public final void runOnUiThread(java.lang.Runnable);
- method public void setActionBar(android.widget.Toolbar);
+ method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
+ method public final void runOnUiThread(Runnable);
+ method public void setActionBar(@Nullable android.widget.Toolbar);
method public void setContentTransitionManager(android.transition.TransitionManager);
- method public void setContentView(int);
+ method public void setContentView(@LayoutRes int);
method public void setContentView(android.view.View);
method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
method public final void setDefaultKeyMode(int);
@@ -3836,63 +3839,63 @@
method public void setExitSharedElementCallback(android.app.SharedElementCallback);
method public final void setFeatureDrawable(int, android.graphics.drawable.Drawable);
method public final void setFeatureDrawableAlpha(int, int);
- method public final void setFeatureDrawableResource(int, int);
+ method public final void setFeatureDrawableResource(int, @DrawableRes int);
method public final void setFeatureDrawableUri(int, android.net.Uri);
method public void setFinishOnTouchOutside(boolean);
method public void setImmersive(boolean);
method public void setIntent(android.content.Intent);
method public final void setMediaController(android.media.session.MediaController);
- method public void setPictureInPictureParams(android.app.PictureInPictureParams);
- method public final deprecated void setProgress(int);
- method public final deprecated void setProgressBarIndeterminate(boolean);
- method public final deprecated void setProgressBarIndeterminateVisibility(boolean);
- method public final deprecated void setProgressBarVisibility(boolean);
+ method public void setPictureInPictureParams(@NonNull android.app.PictureInPictureParams);
+ method @Deprecated public final void setProgress(int);
+ method @Deprecated public final void setProgressBarIndeterminate(boolean);
+ method @Deprecated public final void setProgressBarIndeterminateVisibility(boolean);
+ method @Deprecated public final void setProgressBarVisibility(boolean);
method public void setRequestedOrientation(int);
method public final void setResult(int);
method public final void setResult(int, android.content.Intent);
- method public final deprecated void setSecondaryProgress(int);
+ method @Deprecated public final void setSecondaryProgress(int);
method public void setShowWhenLocked(boolean);
method public void setTaskDescription(android.app.ActivityManager.TaskDescription);
- method public void setTitle(java.lang.CharSequence);
+ method public void setTitle(CharSequence);
method public void setTitle(int);
- method public deprecated void setTitleColor(int);
+ method @Deprecated public void setTitleColor(int);
method public void setTurnScreenOn(boolean);
method public void setVisible(boolean);
method public final void setVolumeControlStream(int);
- method public void setVrModeEnabled(boolean, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
- method public boolean shouldShowRequestPermissionRationale(java.lang.String);
+ method public void setVrModeEnabled(boolean, @NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public boolean shouldShowRequestPermissionRationale(@NonNull String);
method public boolean shouldUpRecreateTask(android.content.Intent);
method public boolean showAssist(android.os.Bundle);
- method public final deprecated void showDialog(int);
- method public final deprecated boolean showDialog(int, android.os.Bundle);
+ method @Deprecated public final void showDialog(int);
+ method @Deprecated public final boolean showDialog(int, android.os.Bundle);
method public void showLockTaskEscapeMessage();
- method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback);
- method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback, int);
- method public void startActivityForResult(android.content.Intent, int);
- method public void startActivityForResult(android.content.Intent, int, android.os.Bundle);
- method public void startActivityFromChild(android.app.Activity, android.content.Intent, int);
- method public void startActivityFromChild(android.app.Activity, android.content.Intent, int, android.os.Bundle);
- method public deprecated void startActivityFromFragment(android.app.Fragment, android.content.Intent, int);
- method public deprecated void startActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle);
- method public boolean startActivityIfNeeded(android.content.Intent, int);
- method public boolean startActivityIfNeeded(android.content.Intent, int, android.os.Bundle);
- method public void startIntentSenderForResult(android.content.IntentSender, int, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
- method public void startIntentSenderForResult(android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+ method @Nullable public android.view.ActionMode startActionMode(android.view.ActionMode.Callback);
+ method @Nullable public android.view.ActionMode startActionMode(android.view.ActionMode.Callback, int);
+ method public void startActivityForResult(@RequiresPermission android.content.Intent, int);
+ method public void startActivityForResult(@RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
+ method public void startActivityFromChild(@NonNull android.app.Activity, @RequiresPermission android.content.Intent, int);
+ method public void startActivityFromChild(@NonNull android.app.Activity, @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
+ method @Deprecated public void startActivityFromFragment(@NonNull android.app.Fragment, @RequiresPermission android.content.Intent, int);
+ method @Deprecated public void startActivityFromFragment(@NonNull android.app.Fragment, @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
+ method public boolean startActivityIfNeeded(@RequiresPermission @NonNull android.content.Intent, int);
+ method public boolean startActivityIfNeeded(@RequiresPermission @NonNull android.content.Intent, int, @Nullable android.os.Bundle);
+ method public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
+ method public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
method public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
- method public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+ method public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int, @Nullable android.os.Bundle) throws android.content.IntentSender.SendIntentException;
method public void startLocalVoiceInteraction(android.os.Bundle);
method public void startLockTask();
- method public deprecated void startManagingCursor(android.database.Cursor);
- method public boolean startNextMatchingActivity(android.content.Intent);
- method public boolean startNextMatchingActivity(android.content.Intent, android.os.Bundle);
+ method @Deprecated public void startManagingCursor(android.database.Cursor);
+ method public boolean startNextMatchingActivity(@RequiresPermission @NonNull android.content.Intent);
+ method public boolean startNextMatchingActivity(@RequiresPermission @NonNull android.content.Intent, @Nullable android.os.Bundle);
method public void startPostponedEnterTransition();
- method public void startSearch(java.lang.String, boolean, android.os.Bundle, boolean);
+ method public void startSearch(@Nullable String, boolean, @Nullable android.os.Bundle, boolean);
method public void stopLocalVoiceInteraction();
method public void stopLockTask();
- method public deprecated void stopManagingCursor(android.database.Cursor);
+ method @Deprecated public void stopManagingCursor(android.database.Cursor);
method public void takeKeyEvents(boolean);
- method public void triggerSearch(java.lang.String, android.os.Bundle);
- method public void unregisterActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
+ method public void triggerSearch(String, @Nullable android.os.Bundle);
+ method public void unregisterActivityLifecycleCallbacks(@NonNull android.app.Application.ActivityLifecycleCallbacks);
method public void unregisterForContextMenu(android.view.View);
field public static final int DEFAULT_KEYS_DIALER = 1; // 0x1
field public static final int DEFAULT_KEYS_DISABLE = 0; // 0x0
@@ -3905,18 +3908,18 @@
field public static final int RESULT_OK = -1; // 0xffffffff
}
- public deprecated class ActivityGroup extends android.app.Activity {
- ctor public ActivityGroup();
- ctor public ActivityGroup(boolean);
- method public android.app.Activity getCurrentActivity();
- method public final android.app.LocalActivityManager getLocalActivityManager();
+ @Deprecated public class ActivityGroup extends android.app.Activity {
+ ctor @Deprecated public ActivityGroup();
+ ctor @Deprecated public ActivityGroup(boolean);
+ method @Deprecated public android.app.Activity getCurrentActivity();
+ method @Deprecated public final android.app.LocalActivityManager getLocalActivityManager();
}
public class ActivityManager {
- method public int addAppTask(android.app.Activity, android.content.Intent, android.app.ActivityManager.TaskDescription, android.graphics.Bitmap);
+ method public int addAppTask(@NonNull android.app.Activity, @NonNull android.content.Intent, @Nullable android.app.ActivityManager.TaskDescription, @NonNull android.graphics.Bitmap);
method public boolean clearApplicationUserData();
method public void clearWatchHeapLimit();
- method public void dumpPackageState(java.io.FileDescriptor, java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.DUMP) public void dumpPackageState(java.io.FileDescriptor, String);
method public android.util.Size getAppTaskThumbnailSize();
method public java.util.List<android.app.ActivityManager.AppTask> getAppTasks();
method public android.content.pm.ConfigurationInfo getDeviceConfigurationInfo();
@@ -3929,28 +3932,28 @@
method public static void getMyMemoryState(android.app.ActivityManager.RunningAppProcessInfo);
method public android.os.Debug.MemoryInfo[] getProcessMemoryInfo(int[]);
method public java.util.List<android.app.ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState();
- method public deprecated java.util.List<android.app.ActivityManager.RecentTaskInfo> getRecentTasks(int, int) throws java.lang.SecurityException;
+ method @Deprecated public java.util.List<android.app.ActivityManager.RecentTaskInfo> getRecentTasks(int, int) throws java.lang.SecurityException;
method public java.util.List<android.app.ActivityManager.RunningAppProcessInfo> getRunningAppProcesses();
method public android.app.PendingIntent getRunningServiceControlPanel(android.content.ComponentName) throws java.lang.SecurityException;
- method public deprecated java.util.List<android.app.ActivityManager.RunningServiceInfo> getRunningServices(int) throws java.lang.SecurityException;
- method public deprecated java.util.List<android.app.ActivityManager.RunningTaskInfo> getRunningTasks(int) throws java.lang.SecurityException;
+ method @Deprecated public java.util.List<android.app.ActivityManager.RunningServiceInfo> getRunningServices(int) throws java.lang.SecurityException;
+ method @Deprecated public java.util.List<android.app.ActivityManager.RunningTaskInfo> getRunningTasks(int) throws java.lang.SecurityException;
method public boolean isActivityStartAllowedOnDisplay(android.content.Context, int, android.content.Intent);
method public boolean isBackgroundRestricted();
- method public deprecated boolean isInLockTaskMode();
+ method @Deprecated public boolean isInLockTaskMode();
method public boolean isLowRamDevice();
method public static boolean isRunningInTestHarness();
method public static boolean isUserAMonkey();
- method public void killBackgroundProcesses(java.lang.String);
- method public void moveTaskToFront(int, int);
- method public void moveTaskToFront(int, int, android.os.Bundle);
- method public deprecated void restartPackage(java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.KILL_BACKGROUND_PROCESSES) public void killBackgroundProcesses(String);
+ method @RequiresPermission(android.Manifest.permission.REORDER_TASKS) public void moveTaskToFront(int, int);
+ method @RequiresPermission(android.Manifest.permission.REORDER_TASKS) public void moveTaskToFront(int, int, android.os.Bundle);
+ method @Deprecated public void restartPackage(String);
method public static void setVrThread(int);
method public void setWatchHeapLimit(long);
- field public static final java.lang.String ACTION_REPORT_HEAP_LIMIT = "android.app.action.REPORT_HEAP_LIMIT";
+ field public static final String ACTION_REPORT_HEAP_LIMIT = "android.app.action.REPORT_HEAP_LIMIT";
field public static final int LOCK_TASK_MODE_LOCKED = 1; // 0x1
field public static final int LOCK_TASK_MODE_NONE = 0; // 0x0
field public static final int LOCK_TASK_MODE_PINNED = 2; // 0x2
- field public static final java.lang.String META_HOME_ALTERNATE = "android.app.home.alternate";
+ field public static final String META_HOME_ALTERNATE = "android.app.home.alternate";
field public static final int MOVE_TASK_NO_USER_ACTION = 2; // 0x2
field public static final int MOVE_TASK_WITH_HOME = 1; // 0x1
field public static final int RECENT_IGNORE_UNAVAILABLE = 2; // 0x2
@@ -3988,12 +3991,12 @@
field public static final int NO_ERROR = 0; // 0x0
field public int condition;
field public byte[] crashData;
- field public java.lang.String longMsg;
+ field public String longMsg;
field public int pid;
- field public java.lang.String processName;
- field public java.lang.String shortMsg;
- field public java.lang.String stackTrace;
- field public java.lang.String tag;
+ field public String processName;
+ field public String shortMsg;
+ field public String stackTrace;
+ field public String tag;
field public int uid;
}
@@ -4003,23 +4006,23 @@
method public void readFromParcel(android.os.Parcel);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.ActivityManager.RecentTaskInfo> CREATOR;
- field public deprecated int affiliatedTaskId;
- field public deprecated java.lang.CharSequence description;
- field public deprecated int id;
- field public deprecated int persistentId;
+ field @Deprecated public int affiliatedTaskId;
+ field @Deprecated public CharSequence description;
+ field @Deprecated public int id;
+ field @Deprecated public int persistentId;
}
public static class ActivityManager.RunningAppProcessInfo implements android.os.Parcelable {
ctor public ActivityManager.RunningAppProcessInfo();
- ctor public ActivityManager.RunningAppProcessInfo(java.lang.String, int, java.lang.String[]);
+ ctor public ActivityManager.RunningAppProcessInfo(String, int, String[]);
method public int describeContents();
method public void readFromParcel(android.os.Parcel);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningAppProcessInfo> CREATOR;
- field public static final deprecated int IMPORTANCE_BACKGROUND = 400; // 0x190
+ field @Deprecated public static final int IMPORTANCE_BACKGROUND = 400; // 0x190
field public static final int IMPORTANCE_CACHED = 400; // 0x190
field public static final int IMPORTANCE_CANT_SAVE_STATE = 350; // 0x15e
- field public static final deprecated int IMPORTANCE_EMPTY = 500; // 0x1f4
+ field @Deprecated public static final int IMPORTANCE_EMPTY = 500; // 0x1f4
field public static final int IMPORTANCE_FOREGROUND = 100; // 0x64
field public static final int IMPORTANCE_FOREGROUND_SERVICE = 125; // 0x7d
field public static final int IMPORTANCE_GONE = 1000; // 0x3e8
@@ -4027,7 +4030,7 @@
field public static final int IMPORTANCE_PERCEPTIBLE_PRE_26 = 130; // 0x82
field public static final int IMPORTANCE_SERVICE = 300; // 0x12c
field public static final int IMPORTANCE_TOP_SLEEPING = 325; // 0x145
- field public static final deprecated int IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; // 0x96
+ field @Deprecated public static final int IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; // 0x96
field public static final int IMPORTANCE_VISIBLE = 200; // 0xc8
field public static final int REASON_PROVIDER_IN_USE = 1; // 0x1
field public static final int REASON_SERVICE_IN_USE = 2; // 0x2
@@ -4039,8 +4042,8 @@
field public int lastTrimLevel;
field public int lru;
field public int pid;
- field public java.lang.String[] pkgList;
- field public java.lang.String processName;
+ field public String[] pkgList;
+ field public String processName;
field public int uid;
}
@@ -4057,13 +4060,13 @@
field public long activeSince;
field public int clientCount;
field public int clientLabel;
- field public java.lang.String clientPackage;
+ field public String clientPackage;
field public int crashCount;
field public int flags;
field public boolean foreground;
field public long lastActivityTime;
field public int pid;
- field public java.lang.String process;
+ field public String process;
field public long restarting;
field public android.content.ComponentName service;
field public boolean started;
@@ -4076,23 +4079,23 @@
method public void readFromParcel(android.os.Parcel);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningTaskInfo> CREATOR;
- field public deprecated java.lang.CharSequence description;
- field public deprecated int id;
- field public deprecated int numRunning;
- field public deprecated android.graphics.Bitmap thumbnail;
+ field @Deprecated public CharSequence description;
+ field @Deprecated public int id;
+ field @Deprecated public int numRunning;
+ field @Deprecated public android.graphics.Bitmap thumbnail;
}
public static class ActivityManager.TaskDescription implements android.os.Parcelable {
- ctor public deprecated ActivityManager.TaskDescription(java.lang.String, android.graphics.Bitmap, int);
- ctor public ActivityManager.TaskDescription(java.lang.String, int, int);
- ctor public deprecated ActivityManager.TaskDescription(java.lang.String, android.graphics.Bitmap);
- ctor public ActivityManager.TaskDescription(java.lang.String, int);
- ctor public ActivityManager.TaskDescription(java.lang.String);
+ ctor @Deprecated public ActivityManager.TaskDescription(String, android.graphics.Bitmap, int);
+ ctor public ActivityManager.TaskDescription(String, @DrawableRes int, int);
+ ctor @Deprecated public ActivityManager.TaskDescription(String, android.graphics.Bitmap);
+ ctor public ActivityManager.TaskDescription(String, @DrawableRes int);
+ ctor public ActivityManager.TaskDescription(String);
ctor public ActivityManager.TaskDescription();
ctor public ActivityManager.TaskDescription(android.app.ActivityManager.TaskDescription);
method public int describeContents();
method public android.graphics.Bitmap getIcon();
- method public java.lang.String getLabel();
+ method public String getLabel();
method public int getPrimaryColor();
method public void readFromParcel(android.os.Parcel);
method public void writeToParcel(android.os.Parcel, int);
@@ -4100,26 +4103,26 @@
}
public class ActivityOptions {
- method public android.graphics.Rect getLaunchBounds();
+ method @Nullable public android.graphics.Rect getLaunchBounds();
method public int getLaunchDisplayId();
method public boolean getLockTaskMode();
method public static android.app.ActivityOptions makeBasic();
method public static android.app.ActivityOptions makeClipRevealAnimation(android.view.View, int, int, int, int);
method public static android.app.ActivityOptions makeCustomAnimation(android.content.Context, int, int);
method public static android.app.ActivityOptions makeScaleUpAnimation(android.view.View, int, int, int, int);
- method public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.view.View, java.lang.String);
- method public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.util.Pair<android.view.View, java.lang.String>...);
+ method public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
+ method @java.lang.SafeVarargs public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.util.Pair<android.view.View,java.lang.String>...);
method public static android.app.ActivityOptions makeTaskLaunchBehind();
method public static android.app.ActivityOptions makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
method public void requestUsageTimeReport(android.app.PendingIntent);
method public android.app.ActivityOptions setAppVerificationBundle(android.os.Bundle);
- method public android.app.ActivityOptions setLaunchBounds(android.graphics.Rect);
+ method public android.app.ActivityOptions setLaunchBounds(@Nullable android.graphics.Rect);
method public android.app.ActivityOptions setLaunchDisplayId(int);
method public android.app.ActivityOptions setLockTaskEnabled(boolean);
method public android.os.Bundle toBundle();
method public void update(android.app.ActivityOptions);
- field public static final java.lang.String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
- field public static final java.lang.String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
+ field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
+ field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
}
public class AlarmManager {
@@ -4127,19 +4130,19 @@
method public void cancel(android.app.AlarmManager.OnAlarmListener);
method public android.app.AlarmManager.AlarmClockInfo getNextAlarmClock();
method public void set(int, long, android.app.PendingIntent);
- method public void set(int, long, java.lang.String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
+ method public void set(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
method public void setAlarmClock(android.app.AlarmManager.AlarmClockInfo, android.app.PendingIntent);
method public void setAndAllowWhileIdle(int, long, android.app.PendingIntent);
method public void setExact(int, long, android.app.PendingIntent);
- method public void setExact(int, long, java.lang.String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
+ method public void setExact(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
method public void setExactAndAllowWhileIdle(int, long, android.app.PendingIntent);
method public void setInexactRepeating(int, long, long, android.app.PendingIntent);
method public void setRepeating(int, long, long, android.app.PendingIntent);
- method public void setTime(long);
- method public void setTimeZone(java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.SET_TIME) public void setTime(long);
+ method @RequiresPermission(android.Manifest.permission.SET_TIME_ZONE) public void setTimeZone(String);
method public void setWindow(int, long, long, android.app.PendingIntent);
- method public void setWindow(int, long, long, java.lang.String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
- field public static final java.lang.String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED";
+ method public void setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
+ field public static final String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED";
field public static final int ELAPSED_REALTIME = 3; // 0x3
field public static final int ELAPSED_REALTIME_WAKEUP = 2; // 0x2
field public static final long INTERVAL_DAY = 86400000L; // 0x5265c00L
@@ -4160,37 +4163,37 @@
field public static final android.os.Parcelable.Creator<android.app.AlarmManager.AlarmClockInfo> CREATOR;
}
- public static abstract interface AlarmManager.OnAlarmListener {
- method public abstract void onAlarm();
+ public static interface AlarmManager.OnAlarmListener {
+ method public void onAlarm();
}
public class AlertDialog extends android.app.Dialog implements android.content.DialogInterface {
ctor protected AlertDialog(android.content.Context);
ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
- ctor protected AlertDialog(android.content.Context, int);
+ ctor protected AlertDialog(android.content.Context, @StyleRes int);
method public android.widget.Button getButton(int);
method public android.widget.ListView getListView();
- method public void setButton(int, java.lang.CharSequence, android.os.Message);
- method public void setButton(int, java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
- method public deprecated void setButton(java.lang.CharSequence, android.os.Message);
- method public deprecated void setButton(java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
- method public deprecated void setButton2(java.lang.CharSequence, android.os.Message);
- method public deprecated void setButton2(java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
- method public deprecated void setButton3(java.lang.CharSequence, android.os.Message);
- method public deprecated void setButton3(java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
+ method public void setButton(int, CharSequence, android.os.Message);
+ method public void setButton(int, CharSequence, android.content.DialogInterface.OnClickListener);
+ method @Deprecated public void setButton(CharSequence, android.os.Message);
+ method @Deprecated public void setButton(CharSequence, android.content.DialogInterface.OnClickListener);
+ method @Deprecated public void setButton2(CharSequence, android.os.Message);
+ method @Deprecated public void setButton2(CharSequence, android.content.DialogInterface.OnClickListener);
+ method @Deprecated public void setButton3(CharSequence, android.os.Message);
+ method @Deprecated public void setButton3(CharSequence, android.content.DialogInterface.OnClickListener);
method public void setCustomTitle(android.view.View);
- method public void setIcon(int);
+ method public void setIcon(@DrawableRes int);
method public void setIcon(android.graphics.drawable.Drawable);
- method public void setIconAttribute(int);
+ method public void setIconAttribute(@AttrRes int);
method public void setInverseBackgroundForced(boolean);
- method public void setMessage(java.lang.CharSequence);
+ method public void setMessage(CharSequence);
method public void setView(android.view.View);
method public void setView(android.view.View, int, int, int, int);
- field public static final deprecated int THEME_DEVICE_DEFAULT_DARK = 4; // 0x4
- field public static final deprecated int THEME_DEVICE_DEFAULT_LIGHT = 5; // 0x5
- field public static final deprecated int THEME_HOLO_DARK = 2; // 0x2
- field public static final deprecated int THEME_HOLO_LIGHT = 3; // 0x3
- field public static final deprecated int THEME_TRADITIONAL = 1; // 0x1
+ field @Deprecated public static final int THEME_DEVICE_DEFAULT_DARK = 4; // 0x4
+ field @Deprecated public static final int THEME_DEVICE_DEFAULT_LIGHT = 5; // 0x5
+ field @Deprecated public static final int THEME_HOLO_DARK = 2; // 0x2
+ field @Deprecated public static final int THEME_HOLO_LIGHT = 3; // 0x3
+ field @Deprecated public static final int THEME_TRADITIONAL = 1; // 0x1
}
public static class AlertDialog.Builder {
@@ -4200,35 +4203,35 @@
method public android.content.Context getContext();
method public android.app.AlertDialog.Builder setAdapter(android.widget.ListAdapter, android.content.DialogInterface.OnClickListener);
method public android.app.AlertDialog.Builder setCancelable(boolean);
- method public android.app.AlertDialog.Builder setCursor(android.database.Cursor, android.content.DialogInterface.OnClickListener, java.lang.String);
+ method public android.app.AlertDialog.Builder setCursor(android.database.Cursor, android.content.DialogInterface.OnClickListener, String);
method public android.app.AlertDialog.Builder setCustomTitle(android.view.View);
- method public android.app.AlertDialog.Builder setIcon(int);
+ method public android.app.AlertDialog.Builder setIcon(@DrawableRes int);
method public android.app.AlertDialog.Builder setIcon(android.graphics.drawable.Drawable);
- method public android.app.AlertDialog.Builder setIconAttribute(int);
- method public deprecated android.app.AlertDialog.Builder setInverseBackgroundForced(boolean);
- method public android.app.AlertDialog.Builder setItems(int, android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setItems(java.lang.CharSequence[], android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setMessage(int);
- method public android.app.AlertDialog.Builder setMessage(java.lang.CharSequence);
- method public android.app.AlertDialog.Builder setMultiChoiceItems(int, boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
- method public android.app.AlertDialog.Builder setMultiChoiceItems(java.lang.CharSequence[], boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
- method public android.app.AlertDialog.Builder setMultiChoiceItems(android.database.Cursor, java.lang.String, java.lang.String, android.content.DialogInterface.OnMultiChoiceClickListener);
- method public android.app.AlertDialog.Builder setNegativeButton(int, android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setNegativeButton(java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setNeutralButton(int, android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setNeutralButton(java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setIconAttribute(@AttrRes int);
+ method @Deprecated public android.app.AlertDialog.Builder setInverseBackgroundForced(boolean);
+ method public android.app.AlertDialog.Builder setItems(@ArrayRes int, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setItems(CharSequence[], android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setMessage(@StringRes int);
+ method public android.app.AlertDialog.Builder setMessage(CharSequence);
+ method public android.app.AlertDialog.Builder setMultiChoiceItems(@ArrayRes int, boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
+ method public android.app.AlertDialog.Builder setMultiChoiceItems(CharSequence[], boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
+ method public android.app.AlertDialog.Builder setMultiChoiceItems(android.database.Cursor, String, String, android.content.DialogInterface.OnMultiChoiceClickListener);
+ method public android.app.AlertDialog.Builder setNegativeButton(@StringRes int, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setNegativeButton(CharSequence, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setNeutralButton(@StringRes int, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setNeutralButton(CharSequence, android.content.DialogInterface.OnClickListener);
method public android.app.AlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener);
method public android.app.AlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener);
method public android.app.AlertDialog.Builder setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
method public android.app.AlertDialog.Builder setOnKeyListener(android.content.DialogInterface.OnKeyListener);
- method public android.app.AlertDialog.Builder setPositiveButton(int, android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setPositiveButton(java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setSingleChoiceItems(int, int, android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setSingleChoiceItems(android.database.Cursor, int, java.lang.String, android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setSingleChoiceItems(java.lang.CharSequence[], int, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setPositiveButton(@StringRes int, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setPositiveButton(CharSequence, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setSingleChoiceItems(@ArrayRes int, int, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setSingleChoiceItems(android.database.Cursor, int, String, android.content.DialogInterface.OnClickListener);
+ method public android.app.AlertDialog.Builder setSingleChoiceItems(CharSequence[], int, android.content.DialogInterface.OnClickListener);
method public android.app.AlertDialog.Builder setSingleChoiceItems(android.widget.ListAdapter, int, android.content.DialogInterface.OnClickListener);
- method public android.app.AlertDialog.Builder setTitle(int);
- method public android.app.AlertDialog.Builder setTitle(java.lang.CharSequence);
+ method public android.app.AlertDialog.Builder setTitle(@StringRes int);
+ method public android.app.AlertDialog.Builder setTitle(CharSequence);
method public android.app.AlertDialog.Builder setView(int);
method public android.app.AlertDialog.Builder setView(android.view.View);
method public android.app.AlertDialog show();
@@ -4241,125 +4244,125 @@
public class AppComponentFactory {
ctor public AppComponentFactory();
method public android.content.pm.ApplicationInfo getApplicationInfo();
- method public android.app.Activity instantiateActivity(java.lang.ClassLoader, java.lang.String, android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public android.app.Application instantiateApplication(java.lang.ClassLoader, java.lang.String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public java.lang.ClassLoader instantiateClassLoader(java.lang.ClassLoader);
- method public android.content.ContentProvider instantiateProvider(java.lang.ClassLoader, java.lang.String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public android.content.BroadcastReceiver instantiateReceiver(java.lang.ClassLoader, java.lang.String, android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public android.app.Service instantiateService(java.lang.ClassLoader, java.lang.String, android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method @NonNull public android.app.Activity instantiateActivity(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method @NonNull public android.app.Application instantiateApplication(@NonNull ClassLoader, @NonNull String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method @NonNull public ClassLoader instantiateClassLoader(@NonNull ClassLoader);
+ method @NonNull public android.content.ContentProvider instantiateProvider(@NonNull ClassLoader, @NonNull String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method @NonNull public android.content.BroadcastReceiver instantiateReceiver(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method @NonNull public android.app.Service instantiateService(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
}
public class AppOpsManager {
- method public deprecated int checkOp(java.lang.String, int, java.lang.String);
- method public deprecated int checkOpNoThrow(java.lang.String, int, java.lang.String);
- method public void checkPackage(int, java.lang.String);
- method public void finishOp(java.lang.String, int, java.lang.String);
- method public int noteOp(java.lang.String, int, java.lang.String);
- method public int noteOpNoThrow(java.lang.String, int, java.lang.String);
- method public int noteProxyOp(java.lang.String, java.lang.String);
- method public int noteProxyOpNoThrow(java.lang.String, java.lang.String);
- method public static java.lang.String permissionToOp(java.lang.String);
- method public int startOp(java.lang.String, int, java.lang.String);
- method public int startOpNoThrow(java.lang.String, int, java.lang.String);
- method public void startWatchingMode(java.lang.String, java.lang.String, android.app.AppOpsManager.OnOpChangedListener);
- method public void startWatchingMode(java.lang.String, java.lang.String, int, android.app.AppOpsManager.OnOpChangedListener);
+ method @Deprecated public int checkOp(String, int, String);
+ method @Deprecated public int checkOpNoThrow(String, int, String);
+ method public void checkPackage(int, String);
+ method public void finishOp(String, int, String);
+ method public int noteOp(String, int, String);
+ method public int noteOpNoThrow(String, int, String);
+ method public int noteProxyOp(String, String);
+ method public int noteProxyOpNoThrow(String, String);
+ method public static String permissionToOp(String);
+ method public int startOp(String, int, String);
+ method public int startOpNoThrow(String, int, String);
+ method public void startWatchingMode(String, String, android.app.AppOpsManager.OnOpChangedListener);
+ method public void startWatchingMode(String, String, int, android.app.AppOpsManager.OnOpChangedListener);
method public void stopWatchingMode(android.app.AppOpsManager.OnOpChangedListener);
- method public int unsafeCheckOp(java.lang.String, int, java.lang.String);
- method public int unsafeCheckOpNoThrow(java.lang.String, int, java.lang.String);
- method public int unsafeCheckOpRaw(java.lang.String, int, java.lang.String);
+ method public int unsafeCheckOp(String, int, String);
+ method public int unsafeCheckOpNoThrow(String, int, String);
+ method public int unsafeCheckOpRaw(String, int, String);
field public static final int MODE_ALLOWED = 0; // 0x0
field public static final int MODE_DEFAULT = 3; // 0x3
field public static final int MODE_ERRORED = 2; // 0x2
field public static final int MODE_FOREGROUND = 4; // 0x4
field public static final int MODE_IGNORED = 1; // 0x1
- field public static final java.lang.String OPSTR_ADD_VOICEMAIL = "android:add_voicemail";
- field public static final java.lang.String OPSTR_ANSWER_PHONE_CALLS = "android:answer_phone_calls";
- field public static final java.lang.String OPSTR_BODY_SENSORS = "android:body_sensors";
- field public static final java.lang.String OPSTR_CALL_PHONE = "android:call_phone";
- field public static final java.lang.String OPSTR_CAMERA = "android:camera";
- field public static final java.lang.String OPSTR_COARSE_LOCATION = "android:coarse_location";
- field public static final java.lang.String OPSTR_FINE_LOCATION = "android:fine_location";
- field public static final java.lang.String OPSTR_GET_USAGE_STATS = "android:get_usage_stats";
- field public static final java.lang.String OPSTR_MOCK_LOCATION = "android:mock_location";
- field public static final java.lang.String OPSTR_MONITOR_HIGH_POWER_LOCATION = "android:monitor_location_high_power";
- field public static final java.lang.String OPSTR_MONITOR_LOCATION = "android:monitor_location";
- field public static final java.lang.String OPSTR_PICTURE_IN_PICTURE = "android:picture_in_picture";
- field public static final java.lang.String OPSTR_PROCESS_OUTGOING_CALLS = "android:process_outgoing_calls";
- field public static final java.lang.String OPSTR_READ_CALENDAR = "android:read_calendar";
- field public static final java.lang.String OPSTR_READ_CALL_LOG = "android:read_call_log";
- field public static final java.lang.String OPSTR_READ_CELL_BROADCASTS = "android:read_cell_broadcasts";
- field public static final java.lang.String OPSTR_READ_CONTACTS = "android:read_contacts";
- field public static final java.lang.String OPSTR_READ_EXTERNAL_STORAGE = "android:read_external_storage";
- field public static final java.lang.String OPSTR_READ_PHONE_NUMBERS = "android:read_phone_numbers";
- field public static final java.lang.String OPSTR_READ_PHONE_STATE = "android:read_phone_state";
- field public static final java.lang.String OPSTR_READ_SMS = "android:read_sms";
- field public static final java.lang.String OPSTR_RECEIVE_MMS = "android:receive_mms";
- field public static final java.lang.String OPSTR_RECEIVE_SMS = "android:receive_sms";
- field public static final java.lang.String OPSTR_RECEIVE_WAP_PUSH = "android:receive_wap_push";
- field public static final java.lang.String OPSTR_RECORD_AUDIO = "android:record_audio";
- field public static final java.lang.String OPSTR_SEND_SMS = "android:send_sms";
- field public static final java.lang.String OPSTR_SYSTEM_ALERT_WINDOW = "android:system_alert_window";
- field public static final java.lang.String OPSTR_USE_FINGERPRINT = "android:use_fingerprint";
- field public static final java.lang.String OPSTR_USE_SIP = "android:use_sip";
- field public static final java.lang.String OPSTR_WRITE_CALENDAR = "android:write_calendar";
- field public static final java.lang.String OPSTR_WRITE_CALL_LOG = "android:write_call_log";
- field public static final java.lang.String OPSTR_WRITE_CONTACTS = "android:write_contacts";
- field public static final java.lang.String OPSTR_WRITE_EXTERNAL_STORAGE = "android:write_external_storage";
- field public static final java.lang.String OPSTR_WRITE_SETTINGS = "android:write_settings";
+ field public static final String OPSTR_ADD_VOICEMAIL = "android:add_voicemail";
+ field public static final String OPSTR_ANSWER_PHONE_CALLS = "android:answer_phone_calls";
+ field public static final String OPSTR_BODY_SENSORS = "android:body_sensors";
+ field public static final String OPSTR_CALL_PHONE = "android:call_phone";
+ field public static final String OPSTR_CAMERA = "android:camera";
+ field public static final String OPSTR_COARSE_LOCATION = "android:coarse_location";
+ field public static final String OPSTR_FINE_LOCATION = "android:fine_location";
+ field public static final String OPSTR_GET_USAGE_STATS = "android:get_usage_stats";
+ field public static final String OPSTR_MOCK_LOCATION = "android:mock_location";
+ field public static final String OPSTR_MONITOR_HIGH_POWER_LOCATION = "android:monitor_location_high_power";
+ field public static final String OPSTR_MONITOR_LOCATION = "android:monitor_location";
+ field public static final String OPSTR_PICTURE_IN_PICTURE = "android:picture_in_picture";
+ field public static final String OPSTR_PROCESS_OUTGOING_CALLS = "android:process_outgoing_calls";
+ field public static final String OPSTR_READ_CALENDAR = "android:read_calendar";
+ field public static final String OPSTR_READ_CALL_LOG = "android:read_call_log";
+ field public static final String OPSTR_READ_CELL_BROADCASTS = "android:read_cell_broadcasts";
+ field public static final String OPSTR_READ_CONTACTS = "android:read_contacts";
+ field public static final String OPSTR_READ_EXTERNAL_STORAGE = "android:read_external_storage";
+ field public static final String OPSTR_READ_PHONE_NUMBERS = "android:read_phone_numbers";
+ field public static final String OPSTR_READ_PHONE_STATE = "android:read_phone_state";
+ field public static final String OPSTR_READ_SMS = "android:read_sms";
+ field public static final String OPSTR_RECEIVE_MMS = "android:receive_mms";
+ field public static final String OPSTR_RECEIVE_SMS = "android:receive_sms";
+ field public static final String OPSTR_RECEIVE_WAP_PUSH = "android:receive_wap_push";
+ field public static final String OPSTR_RECORD_AUDIO = "android:record_audio";
+ field public static final String OPSTR_SEND_SMS = "android:send_sms";
+ field public static final String OPSTR_SYSTEM_ALERT_WINDOW = "android:system_alert_window";
+ field public static final String OPSTR_USE_FINGERPRINT = "android:use_fingerprint";
+ field public static final String OPSTR_USE_SIP = "android:use_sip";
+ field public static final String OPSTR_WRITE_CALENDAR = "android:write_calendar";
+ field public static final String OPSTR_WRITE_CALL_LOG = "android:write_call_log";
+ field public static final String OPSTR_WRITE_CONTACTS = "android:write_contacts";
+ field public static final String OPSTR_WRITE_EXTERNAL_STORAGE = "android:write_external_storage";
+ field public static final String OPSTR_WRITE_SETTINGS = "android:write_settings";
field public static final int WATCH_FOREGROUND_CHANGES = 1; // 0x1
}
- public static abstract interface AppOpsManager.OnOpChangedListener {
- method public abstract void onOpChanged(java.lang.String, java.lang.String);
+ public static interface AppOpsManager.OnOpChangedListener {
+ method public void onOpChanged(String, String);
}
public class Application extends android.content.ContextWrapper implements android.content.ComponentCallbacks2 {
ctor public Application();
- method public static java.lang.String getProcessName();
- method public void onConfigurationChanged(android.content.res.Configuration);
- method public void onCreate();
- method public void onLowMemory();
- method public void onTerminate();
- method public void onTrimMemory(int);
+ method public static String getProcessName();
+ method @CallSuper public void onConfigurationChanged(@NonNull android.content.res.Configuration);
+ method @CallSuper public void onCreate();
+ method @CallSuper public void onLowMemory();
+ method @CallSuper public void onTerminate();
+ method @CallSuper public void onTrimMemory(int);
method public void registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
method public void registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener);
method public void unregisterActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
method public void unregisterOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener);
}
- public static abstract interface Application.ActivityLifecycleCallbacks {
- method public abstract void onActivityCreated(android.app.Activity, android.os.Bundle);
- method public abstract void onActivityDestroyed(android.app.Activity);
- method public abstract void onActivityPaused(android.app.Activity);
- method public default void onActivityPostCreated(android.app.Activity, android.os.Bundle);
- method public default void onActivityPostDestroyed(android.app.Activity);
- method public default void onActivityPostPaused(android.app.Activity);
- method public default void onActivityPostResumed(android.app.Activity);
- method public default void onActivityPostSaveInstanceState(android.app.Activity, android.os.Bundle);
- method public default void onActivityPostStarted(android.app.Activity);
- method public default void onActivityPostStopped(android.app.Activity);
- method public default void onActivityPreCreated(android.app.Activity, android.os.Bundle);
- method public default void onActivityPreDestroyed(android.app.Activity);
- method public default void onActivityPrePaused(android.app.Activity);
- method public default void onActivityPreResumed(android.app.Activity);
- method public default void onActivityPreSaveInstanceState(android.app.Activity, android.os.Bundle);
- method public default void onActivityPreStarted(android.app.Activity);
- method public default void onActivityPreStopped(android.app.Activity);
- method public abstract void onActivityResumed(android.app.Activity);
- method public abstract void onActivitySaveInstanceState(android.app.Activity, android.os.Bundle);
- method public abstract void onActivityStarted(android.app.Activity);
- method public abstract void onActivityStopped(android.app.Activity);
+ public static interface Application.ActivityLifecycleCallbacks {
+ method public void onActivityCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
+ method public void onActivityDestroyed(@NonNull android.app.Activity);
+ method public void onActivityPaused(@NonNull android.app.Activity);
+ method public default void onActivityPostCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
+ method public default void onActivityPostDestroyed(@NonNull android.app.Activity);
+ method public default void onActivityPostPaused(@NonNull android.app.Activity);
+ method public default void onActivityPostResumed(@NonNull android.app.Activity);
+ method public default void onActivityPostSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+ method public default void onActivityPostStarted(@NonNull android.app.Activity);
+ method public default void onActivityPostStopped(@NonNull android.app.Activity);
+ method public default void onActivityPreCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
+ method public default void onActivityPreDestroyed(@NonNull android.app.Activity);
+ method public default void onActivityPrePaused(@NonNull android.app.Activity);
+ method public default void onActivityPreResumed(@NonNull android.app.Activity);
+ method public default void onActivityPreSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+ method public default void onActivityPreStarted(@NonNull android.app.Activity);
+ method public default void onActivityPreStopped(@NonNull android.app.Activity);
+ method public void onActivityResumed(@NonNull android.app.Activity);
+ method public void onActivitySaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+ method public void onActivityStarted(@NonNull android.app.Activity);
+ method public void onActivityStopped(@NonNull android.app.Activity);
}
- public static abstract interface Application.OnProvideAssistDataListener {
- method public abstract void onProvideAssistData(android.app.Activity, android.os.Bundle);
+ public static interface Application.OnProvideAssistDataListener {
+ method public void onProvideAssistData(android.app.Activity, android.os.Bundle);
}
public class ApplicationErrorReport implements android.os.Parcelable {
ctor public ApplicationErrorReport();
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
- method public static android.content.ComponentName getErrorReportReceiver(android.content.Context, java.lang.String, int);
+ method public void dump(android.util.Printer, String);
+ method public static android.content.ComponentName getErrorReportReceiver(android.content.Context, String, int);
method public void readFromParcel(android.os.Parcel);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.ApplicationErrorReport> CREATOR;
@@ -4371,9 +4374,9 @@
field public android.app.ApplicationErrorReport.AnrInfo anrInfo;
field public android.app.ApplicationErrorReport.BatteryInfo batteryInfo;
field public android.app.ApplicationErrorReport.CrashInfo crashInfo;
- field public java.lang.String installerPackageName;
- field public java.lang.String packageName;
- field public java.lang.String processName;
+ field public String installerPackageName;
+ field public String packageName;
+ field public String processName;
field public android.app.ApplicationErrorReport.RunningServiceInfo runningServiceInfo;
field public boolean systemApp;
field public long time;
@@ -4383,50 +4386,50 @@
public static class ApplicationErrorReport.AnrInfo {
ctor public ApplicationErrorReport.AnrInfo();
ctor public ApplicationErrorReport.AnrInfo(android.os.Parcel);
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public void writeToParcel(android.os.Parcel, int);
- field public java.lang.String activity;
- field public java.lang.String cause;
- field public java.lang.String info;
+ field public String activity;
+ field public String cause;
+ field public String info;
}
public static class ApplicationErrorReport.BatteryInfo {
ctor public ApplicationErrorReport.BatteryInfo();
ctor public ApplicationErrorReport.BatteryInfo(android.os.Parcel);
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public void writeToParcel(android.os.Parcel, int);
- field public java.lang.String checkinDetails;
+ field public String checkinDetails;
field public long durationMicros;
- field public java.lang.String usageDetails;
+ field public String usageDetails;
field public int usagePercent;
}
public static class ApplicationErrorReport.CrashInfo {
ctor public ApplicationErrorReport.CrashInfo();
- ctor public ApplicationErrorReport.CrashInfo(java.lang.Throwable);
+ ctor public ApplicationErrorReport.CrashInfo(Throwable);
ctor public ApplicationErrorReport.CrashInfo(android.os.Parcel);
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public void writeToParcel(android.os.Parcel, int);
- field public java.lang.String exceptionClassName;
- field public java.lang.String exceptionMessage;
- field public java.lang.String stackTrace;
- field public java.lang.String throwClassName;
- field public java.lang.String throwFileName;
+ field public String exceptionClassName;
+ field public String exceptionMessage;
+ field public String stackTrace;
+ field public String throwClassName;
+ field public String throwFileName;
field public int throwLineNumber;
- field public java.lang.String throwMethodName;
+ field public String throwMethodName;
}
public static class ApplicationErrorReport.RunningServiceInfo {
ctor public ApplicationErrorReport.RunningServiceInfo();
ctor public ApplicationErrorReport.RunningServiceInfo(android.os.Parcel);
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public void writeToParcel(android.os.Parcel, int);
field public long durationMillis;
- field public java.lang.String serviceDetails;
+ field public String serviceDetails;
}
public final class AuthenticationRequiredException extends java.lang.SecurityException implements android.os.Parcelable {
- ctor public AuthenticationRequiredException(java.lang.Throwable, android.app.PendingIntent);
+ ctor public AuthenticationRequiredException(Throwable, android.app.PendingIntent);
method public int describeContents();
method public android.app.PendingIntent getUserAction();
method public void writeToParcel(android.os.Parcel, int);
@@ -4434,15 +4437,15 @@
}
public final class AutomaticZenRule implements android.os.Parcelable {
- ctor public deprecated AutomaticZenRule(java.lang.String, android.content.ComponentName, android.net.Uri, int, boolean);
- ctor public AutomaticZenRule(java.lang.String, android.content.ComponentName, android.content.ComponentName, android.net.Uri, android.service.notification.ZenPolicy, int, boolean);
+ ctor @Deprecated public AutomaticZenRule(String, android.content.ComponentName, android.net.Uri, int, boolean);
+ ctor public AutomaticZenRule(String, android.content.ComponentName, android.content.ComponentName, android.net.Uri, android.service.notification.ZenPolicy, int, boolean);
ctor public AutomaticZenRule(android.os.Parcel);
method public int describeContents();
method public android.net.Uri getConditionId();
method public android.content.ComponentName getConfigurationActivity();
method public long getCreationTime();
method public int getInterruptionFilter();
- method public java.lang.String getName();
+ method public String getName();
method public android.content.ComponentName getOwner();
method public android.service.notification.ZenPolicy getZenPolicy();
method public boolean isEnabled();
@@ -4450,171 +4453,172 @@
method public void setConfigurationActivity(android.content.ComponentName);
method public void setEnabled(boolean);
method public void setInterruptionFilter(int);
- method public void setName(java.lang.String);
+ method public void setName(String);
method public void setZenPolicy(android.service.notification.ZenPolicy);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AutomaticZenRule> CREATOR;
}
public class DatePickerDialog extends android.app.AlertDialog implements android.widget.DatePicker.OnDateChangedListener android.content.DialogInterface.OnClickListener {
- ctor public DatePickerDialog(android.content.Context);
- ctor public DatePickerDialog(android.content.Context, int);
- ctor public DatePickerDialog(android.content.Context, android.app.DatePickerDialog.OnDateSetListener, int, int, int);
- ctor public DatePickerDialog(android.content.Context, int, android.app.DatePickerDialog.OnDateSetListener, int, int, int);
- method public android.widget.DatePicker getDatePicker();
- method public void onClick(android.content.DialogInterface, int);
- method public void onDateChanged(android.widget.DatePicker, int, int, int);
- method public void setOnDateSetListener(android.app.DatePickerDialog.OnDateSetListener);
+ ctor public DatePickerDialog(@NonNull android.content.Context);
+ ctor public DatePickerDialog(@NonNull android.content.Context, @StyleRes int);
+ ctor public DatePickerDialog(@NonNull android.content.Context, @Nullable android.app.DatePickerDialog.OnDateSetListener, int, int, int);
+ ctor public DatePickerDialog(@NonNull android.content.Context, @StyleRes int, @Nullable android.app.DatePickerDialog.OnDateSetListener, int, int, int);
+ method @NonNull public android.widget.DatePicker getDatePicker();
+ method public void onClick(@NonNull android.content.DialogInterface, int);
+ method public void onDateChanged(@NonNull android.widget.DatePicker, int, int, int);
+ method public void setOnDateSetListener(@Nullable android.app.DatePickerDialog.OnDateSetListener);
method public void updateDate(int, int, int);
}
- public static abstract interface DatePickerDialog.OnDateSetListener {
- method public abstract void onDateSet(android.widget.DatePicker, int, int, int);
+ public static interface DatePickerDialog.OnDateSetListener {
+ method public void onDateSet(android.widget.DatePicker, int, int, int);
}
public class Dialog implements android.content.DialogInterface android.view.KeyEvent.Callback android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
- ctor public Dialog(android.content.Context);
- ctor public Dialog(android.content.Context, int);
- ctor protected Dialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
- method public void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+ ctor public Dialog(@NonNull android.content.Context);
+ ctor public Dialog(@NonNull android.content.Context, @StyleRes int);
+ ctor protected Dialog(@NonNull android.content.Context, boolean, @Nullable android.content.DialogInterface.OnCancelListener);
+ method public void addContentView(@NonNull android.view.View, @Nullable android.view.ViewGroup.LayoutParams);
method public void cancel();
method public void closeOptionsMenu();
method public void create();
method public void dismiss();
- method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
- method public boolean dispatchKeyEvent(android.view.KeyEvent);
- method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
- method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public boolean dispatchTouchEvent(android.view.MotionEvent);
- method public boolean dispatchTrackballEvent(android.view.MotionEvent);
- method public <T extends android.view.View> T findViewById(int);
- method public android.app.ActionBar getActionBar();
- method public final android.content.Context getContext();
- method public android.view.View getCurrentFocus();
- method public android.view.LayoutInflater getLayoutInflater();
- method public final android.app.Activity getOwnerActivity();
- method public final android.view.SearchEvent getSearchEvent();
+ method public boolean dispatchGenericMotionEvent(@NonNull android.view.MotionEvent);
+ method public boolean dispatchKeyEvent(@NonNull android.view.KeyEvent);
+ method public boolean dispatchKeyShortcutEvent(@NonNull android.view.KeyEvent);
+ method public boolean dispatchPopulateAccessibilityEvent(@NonNull android.view.accessibility.AccessibilityEvent);
+ method public boolean dispatchTouchEvent(@NonNull android.view.MotionEvent);
+ method public boolean dispatchTrackballEvent(@NonNull android.view.MotionEvent);
+ method public <T extends android.view.View> T findViewById(@IdRes int);
+ method @Nullable public android.app.ActionBar getActionBar();
+ method @NonNull public final android.content.Context getContext();
+ method @Nullable public android.view.View getCurrentFocus();
+ method @NonNull public android.view.LayoutInflater getLayoutInflater();
+ method @Nullable public final android.app.Activity getOwnerActivity();
+ method @Nullable public final android.view.SearchEvent getSearchEvent();
method public final int getVolumeControlStream();
- method public android.view.Window getWindow();
+ method @Nullable public android.view.Window getWindow();
method public void hide();
method public void invalidateOptionsMenu();
method public boolean isShowing();
- method public void onActionModeFinished(android.view.ActionMode);
- method public void onActionModeStarted(android.view.ActionMode);
+ method @CallSuper public void onActionModeFinished(android.view.ActionMode);
+ method @CallSuper public void onActionModeStarted(android.view.ActionMode);
method public void onAttachedToWindow();
method public void onBackPressed();
method public void onContentChanged();
- method public boolean onContextItemSelected(android.view.MenuItem);
- method public void onContextMenuClosed(android.view.Menu);
+ method public boolean onContextItemSelected(@NonNull android.view.MenuItem);
+ method public void onContextMenuClosed(@NonNull android.view.Menu);
method protected void onCreate(android.os.Bundle);
method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
- method public boolean onCreateOptionsMenu(android.view.Menu);
- method public boolean onCreatePanelMenu(int, android.view.Menu);
+ method public boolean onCreateOptionsMenu(@NonNull android.view.Menu);
+ method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
method public android.view.View onCreatePanelView(int);
method public void onDetachedFromWindow();
- method public boolean onGenericMotionEvent(android.view.MotionEvent);
- method public boolean onKeyDown(int, android.view.KeyEvent);
- method public boolean onKeyLongPress(int, android.view.KeyEvent);
- method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
- method public boolean onKeyShortcut(int, android.view.KeyEvent);
- method public boolean onKeyUp(int, android.view.KeyEvent);
- method public boolean onMenuItemSelected(int, android.view.MenuItem);
- method public boolean onMenuOpened(int, android.view.Menu);
- method public boolean onOptionsItemSelected(android.view.MenuItem);
- method public void onOptionsMenuClosed(android.view.Menu);
- method public void onPanelClosed(int, android.view.Menu);
- method public boolean onPrepareOptionsMenu(android.view.Menu);
- method public boolean onPreparePanel(int, android.view.View, android.view.Menu);
- method public void onRestoreInstanceState(android.os.Bundle);
- method public android.os.Bundle onSaveInstanceState();
- method public boolean onSearchRequested(android.view.SearchEvent);
+ method public boolean onGenericMotionEvent(@NonNull android.view.MotionEvent);
+ method public boolean onKeyDown(int, @NonNull android.view.KeyEvent);
+ method public boolean onKeyLongPress(int, @NonNull android.view.KeyEvent);
+ method public boolean onKeyMultiple(int, int, @NonNull android.view.KeyEvent);
+ method public boolean onKeyShortcut(int, @NonNull android.view.KeyEvent);
+ method public boolean onKeyUp(int, @NonNull android.view.KeyEvent);
+ method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
+ method public boolean onMenuOpened(int, @NonNull android.view.Menu);
+ method public boolean onOptionsItemSelected(@NonNull android.view.MenuItem);
+ method public void onOptionsMenuClosed(@NonNull android.view.Menu);
+ method public void onPanelClosed(int, @NonNull android.view.Menu);
+ method public boolean onPrepareOptionsMenu(@NonNull android.view.Menu);
+ method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
+ method public void onRestoreInstanceState(@NonNull android.os.Bundle);
+ method @NonNull public android.os.Bundle onSaveInstanceState();
+ method public boolean onSearchRequested(@NonNull android.view.SearchEvent);
method public boolean onSearchRequested();
method protected void onStart();
method protected void onStop();
- method public boolean onTouchEvent(android.view.MotionEvent);
- method public boolean onTrackballEvent(android.view.MotionEvent);
+ method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
+ method public boolean onTrackballEvent(@NonNull android.view.MotionEvent);
method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
method public void onWindowFocusChanged(boolean);
method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
- method public void openContextMenu(android.view.View);
+ method public void openContextMenu(@NonNull android.view.View);
method public void openOptionsMenu();
- method public void registerForContextMenu(android.view.View);
+ method public void registerForContextMenu(@NonNull android.view.View);
method public final boolean requestWindowFeature(int);
- method public final <T extends android.view.View> T requireViewById(int);
- method public void setCancelMessage(android.os.Message);
+ method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
+ method public void setCancelMessage(@Nullable android.os.Message);
method public void setCancelable(boolean);
method public void setCanceledOnTouchOutside(boolean);
- method public void setContentView(int);
- method public void setContentView(android.view.View);
- method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
- method public void setDismissMessage(android.os.Message);
- method public final void setFeatureDrawable(int, android.graphics.drawable.Drawable);
+ method public void setContentView(@LayoutRes int);
+ method public void setContentView(@NonNull android.view.View);
+ method public void setContentView(@NonNull android.view.View, @Nullable android.view.ViewGroup.LayoutParams);
+ method public void setDismissMessage(@Nullable android.os.Message);
+ method public final void setFeatureDrawable(int, @Nullable android.graphics.drawable.Drawable);
method public final void setFeatureDrawableAlpha(int, int);
- method public final void setFeatureDrawableResource(int, int);
- method public final void setFeatureDrawableUri(int, android.net.Uri);
- method public void setOnCancelListener(android.content.DialogInterface.OnCancelListener);
- method public void setOnDismissListener(android.content.DialogInterface.OnDismissListener);
- method public void setOnKeyListener(android.content.DialogInterface.OnKeyListener);
- method public void setOnShowListener(android.content.DialogInterface.OnShowListener);
- method public final void setOwnerActivity(android.app.Activity);
- method public void setTitle(java.lang.CharSequence);
- method public void setTitle(int);
+ method public final void setFeatureDrawableResource(int, @DrawableRes int);
+ method public final void setFeatureDrawableUri(int, @Nullable android.net.Uri);
+ method public void setOnCancelListener(@Nullable android.content.DialogInterface.OnCancelListener);
+ method public void setOnDismissListener(@Nullable android.content.DialogInterface.OnDismissListener);
+ method public void setOnKeyListener(@Nullable android.content.DialogInterface.OnKeyListener);
+ method public void setOnShowListener(@Nullable android.content.DialogInterface.OnShowListener);
+ method public final void setOwnerActivity(@NonNull android.app.Activity);
+ method public void setTitle(@Nullable CharSequence);
+ method public void setTitle(@StringRes int);
method public final void setVolumeControlStream(int);
method public void show();
method public void takeKeyEvents(boolean);
- method public void unregisterForContextMenu(android.view.View);
+ method public void unregisterForContextMenu(@NonNull android.view.View);
}
- public deprecated class DialogFragment extends android.app.Fragment implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
- ctor public DialogFragment();
- method public void dismiss();
- method public void dismissAllowingStateLoss();
- method public android.app.Dialog getDialog();
- method public boolean getShowsDialog();
- method public int getTheme();
- method public boolean isCancelable();
- method public void onCancel(android.content.DialogInterface);
- method public android.app.Dialog onCreateDialog(android.os.Bundle);
- method public void onDismiss(android.content.DialogInterface);
- method public void setCancelable(boolean);
- method public void setShowsDialog(boolean);
- method public void setStyle(int, int);
- method public void show(android.app.FragmentManager, java.lang.String);
- method public int show(android.app.FragmentTransaction, java.lang.String);
- field public static final int STYLE_NORMAL = 0; // 0x0
- field public static final int STYLE_NO_FRAME = 2; // 0x2
- field public static final int STYLE_NO_INPUT = 3; // 0x3
- field public static final int STYLE_NO_TITLE = 1; // 0x1
+ @Deprecated public class DialogFragment extends android.app.Fragment implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
+ ctor @Deprecated public DialogFragment();
+ method @Deprecated public void dismiss();
+ method @Deprecated public void dismissAllowingStateLoss();
+ method @Deprecated public android.app.Dialog getDialog();
+ method @Deprecated public boolean getShowsDialog();
+ method @Deprecated public int getTheme();
+ method @Deprecated public boolean isCancelable();
+ method @Deprecated public void onCancel(android.content.DialogInterface);
+ method @Deprecated public android.app.Dialog onCreateDialog(android.os.Bundle);
+ method @Deprecated public void onDismiss(android.content.DialogInterface);
+ method public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
+ method @Deprecated public void setCancelable(boolean);
+ method @Deprecated public void setShowsDialog(boolean);
+ method @Deprecated public void setStyle(int, int);
+ method @Deprecated public void show(android.app.FragmentManager, String);
+ method @Deprecated public int show(android.app.FragmentTransaction, String);
+ field @Deprecated public static final int STYLE_NORMAL = 0; // 0x0
+ field @Deprecated public static final int STYLE_NO_FRAME = 2; // 0x2
+ field @Deprecated public static final int STYLE_NO_INPUT = 3; // 0x3
+ field @Deprecated public static final int STYLE_NO_TITLE = 1; // 0x1
}
public class DownloadManager {
- method public long addCompletedDownload(java.lang.String, java.lang.String, boolean, java.lang.String, java.lang.String, long, boolean);
- method public long addCompletedDownload(java.lang.String, java.lang.String, boolean, java.lang.String, java.lang.String, long, boolean, android.net.Uri, android.net.Uri);
+ method public long addCompletedDownload(String, String, boolean, String, String, long, boolean);
+ method public long addCompletedDownload(String, String, boolean, String, String, long, boolean, android.net.Uri, android.net.Uri);
method public long enqueue(android.app.DownloadManager.Request);
- method public static java.lang.Long getMaxBytesOverMobile(android.content.Context);
- method public java.lang.String getMimeTypeForDownloadedFile(long);
- method public static java.lang.Long getRecommendedMaxBytesOverMobile(android.content.Context);
+ method public static Long getMaxBytesOverMobile(android.content.Context);
+ method public String getMimeTypeForDownloadedFile(long);
+ method public static Long getRecommendedMaxBytesOverMobile(android.content.Context);
method public android.net.Uri getUriForDownloadedFile(long);
method public android.os.ParcelFileDescriptor openDownloadedFile(long) throws java.io.FileNotFoundException;
method public android.database.Cursor query(android.app.DownloadManager.Query);
method public int remove(long...);
- field public static final java.lang.String ACTION_DOWNLOAD_COMPLETE = "android.intent.action.DOWNLOAD_COMPLETE";
- field public static final java.lang.String ACTION_NOTIFICATION_CLICKED = "android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED";
- field public static final java.lang.String ACTION_VIEW_DOWNLOADS = "android.intent.action.VIEW_DOWNLOADS";
- field public static final java.lang.String COLUMN_BYTES_DOWNLOADED_SO_FAR = "bytes_so_far";
- field public static final java.lang.String COLUMN_DESCRIPTION = "description";
- field public static final java.lang.String COLUMN_ID = "_id";
- field public static final java.lang.String COLUMN_LAST_MODIFIED_TIMESTAMP = "last_modified_timestamp";
- field public static final deprecated java.lang.String COLUMN_LOCAL_FILENAME = "local_filename";
- field public static final java.lang.String COLUMN_LOCAL_URI = "local_uri";
- field public static final java.lang.String COLUMN_MEDIAPROVIDER_URI = "mediaprovider_uri";
- field public static final java.lang.String COLUMN_MEDIA_TYPE = "media_type";
- field public static final java.lang.String COLUMN_REASON = "reason";
- field public static final java.lang.String COLUMN_STATUS = "status";
- field public static final java.lang.String COLUMN_TITLE = "title";
- field public static final java.lang.String COLUMN_TOTAL_SIZE_BYTES = "total_size";
- field public static final java.lang.String COLUMN_URI = "uri";
+ field public static final String ACTION_DOWNLOAD_COMPLETE = "android.intent.action.DOWNLOAD_COMPLETE";
+ field public static final String ACTION_NOTIFICATION_CLICKED = "android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED";
+ field public static final String ACTION_VIEW_DOWNLOADS = "android.intent.action.VIEW_DOWNLOADS";
+ field public static final String COLUMN_BYTES_DOWNLOADED_SO_FAR = "bytes_so_far";
+ field public static final String COLUMN_DESCRIPTION = "description";
+ field public static final String COLUMN_ID = "_id";
+ field public static final String COLUMN_LAST_MODIFIED_TIMESTAMP = "last_modified_timestamp";
+ field @Deprecated public static final String COLUMN_LOCAL_FILENAME = "local_filename";
+ field public static final String COLUMN_LOCAL_URI = "local_uri";
+ field public static final String COLUMN_MEDIAPROVIDER_URI = "mediaprovider_uri";
+ field public static final String COLUMN_MEDIA_TYPE = "media_type";
+ field public static final String COLUMN_REASON = "reason";
+ field public static final String COLUMN_STATUS = "status";
+ field public static final String COLUMN_TITLE = "title";
+ field public static final String COLUMN_TOTAL_SIZE_BYTES = "total_size";
+ field public static final String COLUMN_URI = "uri";
field public static final int ERROR_CANNOT_RESUME = 1008; // 0x3f0
field public static final int ERROR_DEVICE_NOT_FOUND = 1007; // 0x3ef
field public static final int ERROR_FILE_ALREADY_EXISTS = 1009; // 0x3f1
@@ -4624,9 +4628,9 @@
field public static final int ERROR_TOO_MANY_REDIRECTS = 1005; // 0x3ed
field public static final int ERROR_UNHANDLED_HTTP_CODE = 1002; // 0x3ea
field public static final int ERROR_UNKNOWN = 1000; // 0x3e8
- field public static final java.lang.String EXTRA_DOWNLOAD_ID = "extra_download_id";
- field public static final java.lang.String EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS = "extra_click_download_ids";
- field public static final java.lang.String INTENT_EXTRAS_SORT_BY_SIZE = "android.app.DownloadManager.extra_sortBySize";
+ field public static final String EXTRA_DOWNLOAD_ID = "extra_download_id";
+ field public static final String EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS = "extra_click_download_ids";
+ field public static final String INTENT_EXTRAS_SORT_BY_SIZE = "android.app.DownloadManager.extra_sortBySize";
field public static final int PAUSED_QUEUED_FOR_WIFI = 3; // 0x3
field public static final int PAUSED_UNKNOWN = 4; // 0x4
field public static final int PAUSED_WAITING_FOR_NETWORK = 2; // 0x2
@@ -4646,21 +4650,21 @@
public static class DownloadManager.Request {
ctor public DownloadManager.Request(android.net.Uri);
- method public android.app.DownloadManager.Request addRequestHeader(java.lang.String, java.lang.String);
+ method public android.app.DownloadManager.Request addRequestHeader(String, String);
method public void allowScanningByMediaScanner();
method public android.app.DownloadManager.Request setAllowedNetworkTypes(int);
method public android.app.DownloadManager.Request setAllowedOverMetered(boolean);
method public android.app.DownloadManager.Request setAllowedOverRoaming(boolean);
- method public android.app.DownloadManager.Request setDescription(java.lang.CharSequence);
- method public android.app.DownloadManager.Request setDestinationInExternalFilesDir(android.content.Context, java.lang.String, java.lang.String);
- method public android.app.DownloadManager.Request setDestinationInExternalPublicDir(java.lang.String, java.lang.String);
+ method public android.app.DownloadManager.Request setDescription(CharSequence);
+ method public android.app.DownloadManager.Request setDestinationInExternalFilesDir(android.content.Context, String, String);
+ method public android.app.DownloadManager.Request setDestinationInExternalPublicDir(String, String);
method public android.app.DownloadManager.Request setDestinationUri(android.net.Uri);
- method public android.app.DownloadManager.Request setMimeType(java.lang.String);
+ method public android.app.DownloadManager.Request setMimeType(String);
method public android.app.DownloadManager.Request setNotificationVisibility(int);
method public android.app.DownloadManager.Request setRequiresCharging(boolean);
method public android.app.DownloadManager.Request setRequiresDeviceIdle(boolean);
- method public deprecated android.app.DownloadManager.Request setShowRunningNotification(boolean);
- method public android.app.DownloadManager.Request setTitle(java.lang.CharSequence);
+ method @Deprecated public android.app.DownloadManager.Request setShowRunningNotification(boolean);
+ method public android.app.DownloadManager.Request setTitle(CharSequence);
method public android.app.DownloadManager.Request setVisibleInDownloadsUi(boolean);
field public static final int NETWORK_MOBILE = 1; // 0x1
field public static final int NETWORK_WIFI = 2; // 0x2
@@ -4684,314 +4688,314 @@
method public void setSelectedGroup(int);
}
- public deprecated class Fragment implements android.content.ComponentCallbacks2 android.view.View.OnCreateContextMenuListener {
- ctor public Fragment();
- method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method public final boolean equals(java.lang.Object);
- method public final android.app.Activity getActivity();
- method public boolean getAllowEnterTransitionOverlap();
- method public boolean getAllowReturnTransitionOverlap();
- method public final android.os.Bundle getArguments();
- method public final android.app.FragmentManager getChildFragmentManager();
- method public android.content.Context getContext();
- method public android.transition.Transition getEnterTransition();
- method public android.transition.Transition getExitTransition();
- method public final android.app.FragmentManager getFragmentManager();
- method public final java.lang.Object getHost();
- method public final int getId();
- method public final android.view.LayoutInflater getLayoutInflater();
- method public deprecated android.app.LoaderManager getLoaderManager();
- method public final android.app.Fragment getParentFragment();
- method public android.transition.Transition getReenterTransition();
- method public final android.content.res.Resources getResources();
- method public final boolean getRetainInstance();
- method public android.transition.Transition getReturnTransition();
- method public android.transition.Transition getSharedElementEnterTransition();
- method public android.transition.Transition getSharedElementReturnTransition();
- method public final java.lang.String getString(int);
- method public final java.lang.String getString(int, java.lang.Object...);
- method public final java.lang.String getTag();
- method public final android.app.Fragment getTargetFragment();
- method public final int getTargetRequestCode();
- method public final java.lang.CharSequence getText(int);
- method public boolean getUserVisibleHint();
- method public android.view.View getView();
- method public final int hashCode();
- method public static android.app.Fragment instantiate(android.content.Context, java.lang.String);
- method public static android.app.Fragment instantiate(android.content.Context, java.lang.String, android.os.Bundle);
- method public final boolean isAdded();
- method public final boolean isDetached();
- method public final boolean isHidden();
- method public final boolean isInLayout();
- method public final boolean isRemoving();
- method public final boolean isResumed();
- method public final boolean isStateSaved();
- method public final boolean isVisible();
- method public void onActivityCreated(android.os.Bundle);
- method public void onActivityResult(int, int, android.content.Intent);
- method public void onAttach(android.content.Context);
- method public deprecated void onAttach(android.app.Activity);
- method public void onAttachFragment(android.app.Fragment);
- method public void onConfigurationChanged(android.content.res.Configuration);
- method public boolean onContextItemSelected(android.view.MenuItem);
- method public void onCreate(android.os.Bundle);
- method public android.animation.Animator onCreateAnimator(int, boolean, int);
- method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
- method public void onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
- method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
- method public void onDestroy();
- method public void onDestroyOptionsMenu();
- method public void onDestroyView();
- method public void onDetach();
- method public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
- method public void onHiddenChanged(boolean);
- method public deprecated void onInflate(android.util.AttributeSet, android.os.Bundle);
- method public void onInflate(android.content.Context, android.util.AttributeSet, android.os.Bundle);
- method public deprecated void onInflate(android.app.Activity, android.util.AttributeSet, android.os.Bundle);
- method public void onLowMemory();
- method public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
- method public deprecated void onMultiWindowModeChanged(boolean);
- method public boolean onOptionsItemSelected(android.view.MenuItem);
- method public void onOptionsMenuClosed(android.view.Menu);
- method public void onPause();
- method public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
- method public deprecated void onPictureInPictureModeChanged(boolean);
- method public void onPrepareOptionsMenu(android.view.Menu);
- method public void onRequestPermissionsResult(int, java.lang.String[], int[]);
- method public void onResume();
- method public void onSaveInstanceState(android.os.Bundle);
- method public void onStart();
- method public void onStop();
- method public void onTrimMemory(int);
- method public void onViewCreated(android.view.View, android.os.Bundle);
- method public void onViewStateRestored(android.os.Bundle);
- method public void postponeEnterTransition();
- method public void registerForContextMenu(android.view.View);
- method public final void requestPermissions(java.lang.String[], int);
- method public void setAllowEnterTransitionOverlap(boolean);
- method public void setAllowReturnTransitionOverlap(boolean);
- method public void setArguments(android.os.Bundle);
- method public void setEnterSharedElementCallback(android.app.SharedElementCallback);
- method public void setEnterTransition(android.transition.Transition);
- method public void setExitSharedElementCallback(android.app.SharedElementCallback);
- method public void setExitTransition(android.transition.Transition);
- method public void setHasOptionsMenu(boolean);
- method public void setInitialSavedState(android.app.Fragment.SavedState);
- method public void setMenuVisibility(boolean);
- method public void setReenterTransition(android.transition.Transition);
- method public void setRetainInstance(boolean);
- method public void setReturnTransition(android.transition.Transition);
- method public void setSharedElementEnterTransition(android.transition.Transition);
- method public void setSharedElementReturnTransition(android.transition.Transition);
- method public void setTargetFragment(android.app.Fragment, int);
- method public void setUserVisibleHint(boolean);
- method public boolean shouldShowRequestPermissionRationale(java.lang.String);
- method public void startActivity(android.content.Intent);
- method public void startActivity(android.content.Intent, android.os.Bundle);
- method public void startActivityForResult(android.content.Intent, int);
- method public void startActivityForResult(android.content.Intent, int, android.os.Bundle);
- method public void startIntentSenderForResult(android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
- method public void startPostponedEnterTransition();
- method public void unregisterForContextMenu(android.view.View);
+ @Deprecated public class Fragment implements android.content.ComponentCallbacks2 android.view.View.OnCreateContextMenuListener {
+ ctor @Deprecated public Fragment();
+ method @Deprecated public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method @Deprecated public final boolean equals(Object);
+ method @Deprecated public final android.app.Activity getActivity();
+ method @Deprecated public boolean getAllowEnterTransitionOverlap();
+ method @Deprecated public boolean getAllowReturnTransitionOverlap();
+ method @Deprecated public final android.os.Bundle getArguments();
+ method @Deprecated public final android.app.FragmentManager getChildFragmentManager();
+ method @Deprecated public android.content.Context getContext();
+ method @Deprecated public android.transition.Transition getEnterTransition();
+ method @Deprecated public android.transition.Transition getExitTransition();
+ method @Deprecated public final android.app.FragmentManager getFragmentManager();
+ method @Deprecated @Nullable public final Object getHost();
+ method @Deprecated public final int getId();
+ method @Deprecated public final android.view.LayoutInflater getLayoutInflater();
+ method @Deprecated public android.app.LoaderManager getLoaderManager();
+ method @Deprecated public final android.app.Fragment getParentFragment();
+ method @Deprecated public android.transition.Transition getReenterTransition();
+ method @Deprecated public final android.content.res.Resources getResources();
+ method @Deprecated public final boolean getRetainInstance();
+ method @Deprecated public android.transition.Transition getReturnTransition();
+ method @Deprecated public android.transition.Transition getSharedElementEnterTransition();
+ method @Deprecated public android.transition.Transition getSharedElementReturnTransition();
+ method @Deprecated public final String getString(@StringRes int);
+ method @Deprecated public final String getString(@StringRes int, java.lang.Object...);
+ method @Deprecated public final String getTag();
+ method @Deprecated public final android.app.Fragment getTargetFragment();
+ method @Deprecated public final int getTargetRequestCode();
+ method @Deprecated public final CharSequence getText(@StringRes int);
+ method @Deprecated public boolean getUserVisibleHint();
+ method @Deprecated @Nullable public android.view.View getView();
+ method @Deprecated public final int hashCode();
+ method @Deprecated public static android.app.Fragment instantiate(android.content.Context, String);
+ method @Deprecated public static android.app.Fragment instantiate(android.content.Context, String, @Nullable android.os.Bundle);
+ method @Deprecated public final boolean isAdded();
+ method @Deprecated public final boolean isDetached();
+ method @Deprecated public final boolean isHidden();
+ method @Deprecated public final boolean isInLayout();
+ method @Deprecated public final boolean isRemoving();
+ method @Deprecated public final boolean isResumed();
+ method @Deprecated public final boolean isStateSaved();
+ method @Deprecated public final boolean isVisible();
+ method @Deprecated @CallSuper public void onActivityCreated(@Nullable android.os.Bundle);
+ method @Deprecated public void onActivityResult(int, int, android.content.Intent);
+ method @Deprecated @CallSuper public void onAttach(android.content.Context);
+ method @Deprecated @CallSuper public void onAttach(android.app.Activity);
+ method @Deprecated public void onAttachFragment(android.app.Fragment);
+ method @Deprecated @CallSuper public void onConfigurationChanged(android.content.res.Configuration);
+ method @Deprecated public boolean onContextItemSelected(android.view.MenuItem);
+ method @Deprecated @CallSuper public void onCreate(@Nullable android.os.Bundle);
+ method @Deprecated public android.animation.Animator onCreateAnimator(int, boolean, int);
+ method @Deprecated public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
+ method @Deprecated public void onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
+ method @Deprecated @Nullable public android.view.View onCreateView(android.view.LayoutInflater, @Nullable android.view.ViewGroup, android.os.Bundle);
+ method @Deprecated @CallSuper public void onDestroy();
+ method @Deprecated public void onDestroyOptionsMenu();
+ method @Deprecated @CallSuper public void onDestroyView();
+ method @Deprecated @CallSuper public void onDetach();
+ method @Deprecated public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
+ method @Deprecated public void onHiddenChanged(boolean);
+ method @Deprecated @CallSuper public void onInflate(android.util.AttributeSet, android.os.Bundle);
+ method @Deprecated @CallSuper public void onInflate(android.content.Context, android.util.AttributeSet, android.os.Bundle);
+ method @Deprecated @CallSuper public void onInflate(android.app.Activity, android.util.AttributeSet, android.os.Bundle);
+ method @Deprecated @CallSuper public void onLowMemory();
+ method @Deprecated public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
+ method @Deprecated public void onMultiWindowModeChanged(boolean);
+ method @Deprecated public boolean onOptionsItemSelected(android.view.MenuItem);
+ method @Deprecated public void onOptionsMenuClosed(android.view.Menu);
+ method @Deprecated @CallSuper public void onPause();
+ method @Deprecated public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
+ method @Deprecated public void onPictureInPictureModeChanged(boolean);
+ method @Deprecated public void onPrepareOptionsMenu(android.view.Menu);
+ method @Deprecated public void onRequestPermissionsResult(int, @NonNull String[], @NonNull int[]);
+ method @Deprecated @CallSuper public void onResume();
+ method @Deprecated public void onSaveInstanceState(android.os.Bundle);
+ method @Deprecated @CallSuper public void onStart();
+ method @Deprecated @CallSuper public void onStop();
+ method @Deprecated @CallSuper public void onTrimMemory(int);
+ method @Deprecated public void onViewCreated(android.view.View, @Nullable android.os.Bundle);
+ method @Deprecated @CallSuper public void onViewStateRestored(android.os.Bundle);
+ method @Deprecated public void postponeEnterTransition();
+ method @Deprecated public void registerForContextMenu(android.view.View);
+ method @Deprecated public final void requestPermissions(@NonNull String[], int);
+ method @Deprecated public void setAllowEnterTransitionOverlap(boolean);
+ method @Deprecated public void setAllowReturnTransitionOverlap(boolean);
+ method @Deprecated public void setArguments(android.os.Bundle);
+ method @Deprecated public void setEnterSharedElementCallback(android.app.SharedElementCallback);
+ method @Deprecated public void setEnterTransition(android.transition.Transition);
+ method @Deprecated public void setExitSharedElementCallback(android.app.SharedElementCallback);
+ method @Deprecated public void setExitTransition(android.transition.Transition);
+ method @Deprecated public void setHasOptionsMenu(boolean);
+ method @Deprecated public void setInitialSavedState(android.app.Fragment.SavedState);
+ method @Deprecated public void setMenuVisibility(boolean);
+ method @Deprecated public void setReenterTransition(android.transition.Transition);
+ method @Deprecated public void setRetainInstance(boolean);
+ method @Deprecated public void setReturnTransition(android.transition.Transition);
+ method @Deprecated public void setSharedElementEnterTransition(android.transition.Transition);
+ method @Deprecated public void setSharedElementReturnTransition(android.transition.Transition);
+ method @Deprecated public void setTargetFragment(android.app.Fragment, int);
+ method @Deprecated public void setUserVisibleHint(boolean);
+ method @Deprecated public boolean shouldShowRequestPermissionRationale(@NonNull String);
+ method @Deprecated public void startActivity(android.content.Intent);
+ method @Deprecated public void startActivity(android.content.Intent, android.os.Bundle);
+ method @Deprecated public void startActivityForResult(android.content.Intent, int);
+ method @Deprecated public void startActivityForResult(android.content.Intent, int, android.os.Bundle);
+ method @Deprecated public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+ method @Deprecated public void startPostponedEnterTransition();
+ method @Deprecated public void unregisterForContextMenu(android.view.View);
}
- public static deprecated class Fragment.InstantiationException extends android.util.AndroidRuntimeException {
- ctor public Fragment.InstantiationException(java.lang.String, java.lang.Exception);
+ @Deprecated public static class Fragment.InstantiationException extends android.util.AndroidRuntimeException {
+ ctor @Deprecated public Fragment.InstantiationException(String, Exception);
}
- public static deprecated class Fragment.SavedState implements android.os.Parcelable {
- method public int describeContents();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.ClassLoaderCreator<android.app.Fragment.SavedState> CREATOR;
+ @Deprecated public static class Fragment.SavedState implements android.os.Parcelable {
+ method @Deprecated public int describeContents();
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.ClassLoaderCreator<android.app.Fragment.SavedState> CREATOR;
}
- public deprecated class FragmentBreadCrumbs extends android.view.ViewGroup implements android.app.FragmentManager.OnBackStackChangedListener {
- ctor public FragmentBreadCrumbs(android.content.Context);
- ctor public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet);
- ctor public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet, int);
- method public void onBackStackChanged();
- method public void setActivity(android.app.Activity);
- method public void setMaxVisible(int);
- method public void setOnBreadCrumbClickListener(android.app.FragmentBreadCrumbs.OnBreadCrumbClickListener);
- method public void setParentTitle(java.lang.CharSequence, java.lang.CharSequence, android.view.View.OnClickListener);
- method public void setTitle(java.lang.CharSequence, java.lang.CharSequence);
+ @Deprecated public class FragmentBreadCrumbs extends android.view.ViewGroup implements android.app.FragmentManager.OnBackStackChangedListener {
+ ctor @Deprecated public FragmentBreadCrumbs(android.content.Context);
+ ctor @Deprecated public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet, int);
+ method @Deprecated public void onBackStackChanged();
+ method @Deprecated public void setActivity(android.app.Activity);
+ method @Deprecated public void setMaxVisible(int);
+ method @Deprecated public void setOnBreadCrumbClickListener(android.app.FragmentBreadCrumbs.OnBreadCrumbClickListener);
+ method @Deprecated public void setParentTitle(CharSequence, CharSequence, android.view.View.OnClickListener);
+ method @Deprecated public void setTitle(CharSequence, CharSequence);
}
- public static abstract deprecated interface FragmentBreadCrumbs.OnBreadCrumbClickListener {
- method public abstract boolean onBreadCrumbClick(android.app.FragmentManager.BackStackEntry, int);
+ @Deprecated public static interface FragmentBreadCrumbs.OnBreadCrumbClickListener {
+ method @Deprecated public boolean onBreadCrumbClick(android.app.FragmentManager.BackStackEntry, int);
}
- public abstract deprecated class FragmentContainer {
- ctor public FragmentContainer();
- method public abstract <T extends android.view.View> T onFindViewById(int);
- method public abstract boolean onHasView();
+ @Deprecated public abstract class FragmentContainer {
+ ctor @Deprecated public FragmentContainer();
+ method @Deprecated @Nullable public abstract <T extends android.view.View> T onFindViewById(@IdRes int);
+ method @Deprecated public abstract boolean onHasView();
}
- public deprecated class FragmentController {
- method public void attachHost(android.app.Fragment);
- method public static final android.app.FragmentController createController(android.app.FragmentHostCallback<?>);
- method public void dispatchActivityCreated();
- method public void dispatchConfigurationChanged(android.content.res.Configuration);
- method public boolean dispatchContextItemSelected(android.view.MenuItem);
- method public void dispatchCreate();
- method public boolean dispatchCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
- method public void dispatchDestroy();
- method public void dispatchDestroyView();
- method public void dispatchLowMemory();
- method public deprecated void dispatchMultiWindowModeChanged(boolean);
- method public void dispatchMultiWindowModeChanged(boolean, android.content.res.Configuration);
- method public boolean dispatchOptionsItemSelected(android.view.MenuItem);
- method public void dispatchOptionsMenuClosed(android.view.Menu);
- method public void dispatchPause();
- method public deprecated void dispatchPictureInPictureModeChanged(boolean);
- method public void dispatchPictureInPictureModeChanged(boolean, android.content.res.Configuration);
- method public boolean dispatchPrepareOptionsMenu(android.view.Menu);
- method public void dispatchResume();
- method public void dispatchStart();
- method public void dispatchStop();
- method public void dispatchTrimMemory(int);
- method public void doLoaderDestroy();
- method public void doLoaderStart();
- method public void doLoaderStop(boolean);
- method public void dumpLoaders(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method public boolean execPendingActions();
- method public android.app.Fragment findFragmentByWho(java.lang.String);
- method public android.app.FragmentManager getFragmentManager();
- method public android.app.LoaderManager getLoaderManager();
- method public void noteStateNotSaved();
- method public android.view.View onCreateView(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet);
- method public void reportLoaderStart();
- method public deprecated void restoreAllState(android.os.Parcelable, java.util.List<android.app.Fragment>);
- method public void restoreAllState(android.os.Parcelable, android.app.FragmentManagerNonConfig);
- method public void restoreLoaderNonConfig(android.util.ArrayMap<java.lang.String, android.app.LoaderManager>);
- method public android.util.ArrayMap<java.lang.String, android.app.LoaderManager> retainLoaderNonConfig();
- method public android.app.FragmentManagerNonConfig retainNestedNonConfig();
- method public deprecated java.util.List<android.app.Fragment> retainNonConfig();
- method public android.os.Parcelable saveAllState();
+ @Deprecated public class FragmentController {
+ method @Deprecated public void attachHost(android.app.Fragment);
+ method @Deprecated public static final android.app.FragmentController createController(android.app.FragmentHostCallback<?>);
+ method @Deprecated public void dispatchActivityCreated();
+ method @Deprecated public void dispatchConfigurationChanged(android.content.res.Configuration);
+ method @Deprecated public boolean dispatchContextItemSelected(android.view.MenuItem);
+ method @Deprecated public void dispatchCreate();
+ method @Deprecated public boolean dispatchCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
+ method @Deprecated public void dispatchDestroy();
+ method @Deprecated public void dispatchDestroyView();
+ method @Deprecated public void dispatchLowMemory();
+ method @Deprecated public void dispatchMultiWindowModeChanged(boolean);
+ method @Deprecated public void dispatchMultiWindowModeChanged(boolean, android.content.res.Configuration);
+ method @Deprecated public boolean dispatchOptionsItemSelected(android.view.MenuItem);
+ method @Deprecated public void dispatchOptionsMenuClosed(android.view.Menu);
+ method @Deprecated public void dispatchPause();
+ method @Deprecated public void dispatchPictureInPictureModeChanged(boolean);
+ method @Deprecated public void dispatchPictureInPictureModeChanged(boolean, android.content.res.Configuration);
+ method @Deprecated public boolean dispatchPrepareOptionsMenu(android.view.Menu);
+ method @Deprecated public void dispatchResume();
+ method @Deprecated public void dispatchStart();
+ method @Deprecated public void dispatchStop();
+ method @Deprecated public void dispatchTrimMemory(int);
+ method @Deprecated public void doLoaderDestroy();
+ method @Deprecated public void doLoaderStart();
+ method @Deprecated public void doLoaderStop(boolean);
+ method @Deprecated public void dumpLoaders(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method @Deprecated public boolean execPendingActions();
+ method @Deprecated @Nullable public android.app.Fragment findFragmentByWho(String);
+ method @Deprecated public android.app.FragmentManager getFragmentManager();
+ method @Deprecated public android.app.LoaderManager getLoaderManager();
+ method @Deprecated public void noteStateNotSaved();
+ method @Deprecated public android.view.View onCreateView(android.view.View, String, android.content.Context, android.util.AttributeSet);
+ method @Deprecated public void reportLoaderStart();
+ method @Deprecated public void restoreAllState(android.os.Parcelable, java.util.List<android.app.Fragment>);
+ method @Deprecated public void restoreAllState(android.os.Parcelable, android.app.FragmentManagerNonConfig);
+ method @Deprecated public void restoreLoaderNonConfig(android.util.ArrayMap<java.lang.String,android.app.LoaderManager>);
+ method @Deprecated public android.util.ArrayMap<java.lang.String,android.app.LoaderManager> retainLoaderNonConfig();
+ method @Deprecated public android.app.FragmentManagerNonConfig retainNestedNonConfig();
+ method @Deprecated public java.util.List<android.app.Fragment> retainNonConfig();
+ method @Deprecated public android.os.Parcelable saveAllState();
}
- public abstract deprecated class FragmentHostCallback<E> extends android.app.FragmentContainer {
- ctor public FragmentHostCallback(android.content.Context, android.os.Handler, int);
- method public void onAttachFragment(android.app.Fragment);
- method public void onDump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method public <T extends android.view.View> T onFindViewById(int);
- method public abstract E onGetHost();
- method public android.view.LayoutInflater onGetLayoutInflater();
- method public int onGetWindowAnimations();
- method public boolean onHasView();
- method public boolean onHasWindowAnimations();
- method public void onInvalidateOptionsMenu();
- method public void onRequestPermissionsFromFragment(android.app.Fragment, java.lang.String[], int);
- method public boolean onShouldSaveFragmentState(android.app.Fragment);
- method public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle);
- method public void onStartIntentSenderFromFragment(android.app.Fragment, android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
- method public boolean onUseFragmentManagerInflaterFactory();
+ @Deprecated public abstract class FragmentHostCallback<E> extends android.app.FragmentContainer {
+ ctor @Deprecated public FragmentHostCallback(android.content.Context, android.os.Handler, int);
+ method @Deprecated public void onAttachFragment(android.app.Fragment);
+ method @Deprecated public void onDump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method @Deprecated @Nullable public <T extends android.view.View> T onFindViewById(int);
+ method @Deprecated @Nullable public abstract E onGetHost();
+ method @Deprecated public android.view.LayoutInflater onGetLayoutInflater();
+ method @Deprecated public int onGetWindowAnimations();
+ method @Deprecated public boolean onHasView();
+ method @Deprecated public boolean onHasWindowAnimations();
+ method @Deprecated public void onInvalidateOptionsMenu();
+ method @Deprecated public void onRequestPermissionsFromFragment(@NonNull android.app.Fragment, @NonNull String[], int);
+ method @Deprecated public boolean onShouldSaveFragmentState(android.app.Fragment);
+ method @Deprecated public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle);
+ method @Deprecated public void onStartIntentSenderFromFragment(android.app.Fragment, android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+ method @Deprecated public boolean onUseFragmentManagerInflaterFactory();
}
- public abstract deprecated class FragmentManager {
- ctor public FragmentManager();
- method public abstract void addOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
- method public abstract android.app.FragmentTransaction beginTransaction();
- method public abstract void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method public static void enableDebugLogging(boolean);
- method public abstract boolean executePendingTransactions();
- method public abstract android.app.Fragment findFragmentById(int);
- method public abstract android.app.Fragment findFragmentByTag(java.lang.String);
- method public abstract android.app.FragmentManager.BackStackEntry getBackStackEntryAt(int);
- method public abstract int getBackStackEntryCount();
- method public abstract android.app.Fragment getFragment(android.os.Bundle, java.lang.String);
- method public abstract java.util.List<android.app.Fragment> getFragments();
- method public abstract android.app.Fragment getPrimaryNavigationFragment();
- method public void invalidateOptionsMenu();
- method public abstract boolean isDestroyed();
- method public abstract boolean isStateSaved();
- method public abstract void popBackStack();
- method public abstract void popBackStack(java.lang.String, int);
- method public abstract void popBackStack(int, int);
- method public abstract boolean popBackStackImmediate();
- method public abstract boolean popBackStackImmediate(java.lang.String, int);
- method public abstract boolean popBackStackImmediate(int, int);
- method public abstract void putFragment(android.os.Bundle, java.lang.String, android.app.Fragment);
- method public abstract void registerFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks, boolean);
- method public abstract void removeOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
- method public abstract android.app.Fragment.SavedState saveFragmentInstanceState(android.app.Fragment);
- method public abstract void unregisterFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks);
- field public static final int POP_BACK_STACK_INCLUSIVE = 1; // 0x1
+ @Deprecated public abstract class FragmentManager {
+ ctor @Deprecated public FragmentManager();
+ method @Deprecated public abstract void addOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
+ method @Deprecated public abstract android.app.FragmentTransaction beginTransaction();
+ method @Deprecated public abstract void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method @Deprecated public static void enableDebugLogging(boolean);
+ method @Deprecated public abstract boolean executePendingTransactions();
+ method @Deprecated public abstract android.app.Fragment findFragmentById(int);
+ method @Deprecated public abstract android.app.Fragment findFragmentByTag(String);
+ method @Deprecated public abstract android.app.FragmentManager.BackStackEntry getBackStackEntryAt(int);
+ method @Deprecated public abstract int getBackStackEntryCount();
+ method @Deprecated public abstract android.app.Fragment getFragment(android.os.Bundle, String);
+ method @Deprecated public abstract java.util.List<android.app.Fragment> getFragments();
+ method @Deprecated public abstract android.app.Fragment getPrimaryNavigationFragment();
+ method @Deprecated public void invalidateOptionsMenu();
+ method @Deprecated public abstract boolean isDestroyed();
+ method @Deprecated public abstract boolean isStateSaved();
+ method @Deprecated public abstract void popBackStack();
+ method @Deprecated public abstract void popBackStack(String, int);
+ method @Deprecated public abstract void popBackStack(int, int);
+ method @Deprecated public abstract boolean popBackStackImmediate();
+ method @Deprecated public abstract boolean popBackStackImmediate(String, int);
+ method @Deprecated public abstract boolean popBackStackImmediate(int, int);
+ method @Deprecated public abstract void putFragment(android.os.Bundle, String, android.app.Fragment);
+ method @Deprecated public abstract void registerFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks, boolean);
+ method @Deprecated public abstract void removeOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
+ method @Deprecated public abstract android.app.Fragment.SavedState saveFragmentInstanceState(android.app.Fragment);
+ method @Deprecated public abstract void unregisterFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks);
+ field @Deprecated public static final int POP_BACK_STACK_INCLUSIVE = 1; // 0x1
}
- public static abstract deprecated interface FragmentManager.BackStackEntry {
- method public abstract java.lang.CharSequence getBreadCrumbShortTitle();
- method public abstract int getBreadCrumbShortTitleRes();
- method public abstract java.lang.CharSequence getBreadCrumbTitle();
- method public abstract int getBreadCrumbTitleRes();
- method public abstract int getId();
- method public abstract java.lang.String getName();
+ @Deprecated public static interface FragmentManager.BackStackEntry {
+ method @Deprecated public CharSequence getBreadCrumbShortTitle();
+ method @Deprecated public int getBreadCrumbShortTitleRes();
+ method @Deprecated public CharSequence getBreadCrumbTitle();
+ method @Deprecated public int getBreadCrumbTitleRes();
+ method @Deprecated public int getId();
+ method @Deprecated public String getName();
}
- public static abstract deprecated class FragmentManager.FragmentLifecycleCallbacks {
- ctor public FragmentManager.FragmentLifecycleCallbacks();
- method public void onFragmentActivityCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
- method public void onFragmentAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
- method public void onFragmentCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
- method public void onFragmentDestroyed(android.app.FragmentManager, android.app.Fragment);
- method public void onFragmentDetached(android.app.FragmentManager, android.app.Fragment);
- method public void onFragmentPaused(android.app.FragmentManager, android.app.Fragment);
- method public void onFragmentPreAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
- method public void onFragmentPreCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
- method public void onFragmentResumed(android.app.FragmentManager, android.app.Fragment);
- method public void onFragmentSaveInstanceState(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
- method public void onFragmentStarted(android.app.FragmentManager, android.app.Fragment);
- method public void onFragmentStopped(android.app.FragmentManager, android.app.Fragment);
- method public void onFragmentViewCreated(android.app.FragmentManager, android.app.Fragment, android.view.View, android.os.Bundle);
- method public void onFragmentViewDestroyed(android.app.FragmentManager, android.app.Fragment);
+ @Deprecated public abstract static class FragmentManager.FragmentLifecycleCallbacks {
+ ctor @Deprecated public FragmentManager.FragmentLifecycleCallbacks();
+ method @Deprecated public void onFragmentActivityCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
+ method @Deprecated public void onFragmentAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
+ method @Deprecated public void onFragmentCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
+ method @Deprecated public void onFragmentDestroyed(android.app.FragmentManager, android.app.Fragment);
+ method @Deprecated public void onFragmentDetached(android.app.FragmentManager, android.app.Fragment);
+ method @Deprecated public void onFragmentPaused(android.app.FragmentManager, android.app.Fragment);
+ method @Deprecated public void onFragmentPreAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
+ method @Deprecated public void onFragmentPreCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
+ method @Deprecated public void onFragmentResumed(android.app.FragmentManager, android.app.Fragment);
+ method @Deprecated public void onFragmentSaveInstanceState(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
+ method @Deprecated public void onFragmentStarted(android.app.FragmentManager, android.app.Fragment);
+ method @Deprecated public void onFragmentStopped(android.app.FragmentManager, android.app.Fragment);
+ method @Deprecated public void onFragmentViewCreated(android.app.FragmentManager, android.app.Fragment, android.view.View, android.os.Bundle);
+ method @Deprecated public void onFragmentViewDestroyed(android.app.FragmentManager, android.app.Fragment);
}
- public static abstract deprecated interface FragmentManager.OnBackStackChangedListener {
- method public abstract void onBackStackChanged();
+ @Deprecated public static interface FragmentManager.OnBackStackChangedListener {
+ method @Deprecated public void onBackStackChanged();
}
- public deprecated class FragmentManagerNonConfig {
+ @Deprecated public class FragmentManagerNonConfig {
}
- public abstract deprecated class FragmentTransaction {
- ctor public FragmentTransaction();
- method public abstract android.app.FragmentTransaction add(android.app.Fragment, java.lang.String);
- method public abstract android.app.FragmentTransaction add(int, android.app.Fragment);
- method public abstract android.app.FragmentTransaction add(int, android.app.Fragment, java.lang.String);
- method public abstract android.app.FragmentTransaction addSharedElement(android.view.View, java.lang.String);
- method public abstract android.app.FragmentTransaction addToBackStack(java.lang.String);
- method public abstract android.app.FragmentTransaction attach(android.app.Fragment);
- method public abstract int commit();
- method public abstract int commitAllowingStateLoss();
- method public abstract void commitNow();
- method public abstract void commitNowAllowingStateLoss();
- method public abstract android.app.FragmentTransaction detach(android.app.Fragment);
- method public abstract android.app.FragmentTransaction disallowAddToBackStack();
- method public abstract android.app.FragmentTransaction hide(android.app.Fragment);
- method public abstract boolean isAddToBackStackAllowed();
- method public abstract boolean isEmpty();
- method public abstract android.app.FragmentTransaction remove(android.app.Fragment);
- method public abstract android.app.FragmentTransaction replace(int, android.app.Fragment);
- method public abstract android.app.FragmentTransaction replace(int, android.app.Fragment, java.lang.String);
- method public abstract android.app.FragmentTransaction runOnCommit(java.lang.Runnable);
- method public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(int);
- method public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(java.lang.CharSequence);
- method public abstract android.app.FragmentTransaction setBreadCrumbTitle(int);
- method public abstract android.app.FragmentTransaction setBreadCrumbTitle(java.lang.CharSequence);
- method public abstract android.app.FragmentTransaction setCustomAnimations(int, int);
- method public abstract android.app.FragmentTransaction setCustomAnimations(int, int, int, int);
- method public abstract android.app.FragmentTransaction setPrimaryNavigationFragment(android.app.Fragment);
- method public abstract android.app.FragmentTransaction setReorderingAllowed(boolean);
- method public abstract android.app.FragmentTransaction setTransition(int);
- method public abstract android.app.FragmentTransaction setTransitionStyle(int);
- method public abstract android.app.FragmentTransaction show(android.app.Fragment);
- field public static final int TRANSIT_ENTER_MASK = 4096; // 0x1000
- field public static final int TRANSIT_EXIT_MASK = 8192; // 0x2000
- field public static final int TRANSIT_FRAGMENT_CLOSE = 8194; // 0x2002
- field public static final int TRANSIT_FRAGMENT_FADE = 4099; // 0x1003
- field public static final int TRANSIT_FRAGMENT_OPEN = 4097; // 0x1001
- field public static final int TRANSIT_NONE = 0; // 0x0
- field public static final int TRANSIT_UNSET = -1; // 0xffffffff
+ @Deprecated public abstract class FragmentTransaction {
+ ctor @Deprecated public FragmentTransaction();
+ method @Deprecated public abstract android.app.FragmentTransaction add(android.app.Fragment, String);
+ method @Deprecated public abstract android.app.FragmentTransaction add(@IdRes int, android.app.Fragment);
+ method @Deprecated public abstract android.app.FragmentTransaction add(@IdRes int, android.app.Fragment, String);
+ method @Deprecated public abstract android.app.FragmentTransaction addSharedElement(android.view.View, String);
+ method @Deprecated public abstract android.app.FragmentTransaction addToBackStack(@Nullable String);
+ method @Deprecated public abstract android.app.FragmentTransaction attach(android.app.Fragment);
+ method @Deprecated public abstract int commit();
+ method @Deprecated public abstract int commitAllowingStateLoss();
+ method @Deprecated public abstract void commitNow();
+ method @Deprecated public abstract void commitNowAllowingStateLoss();
+ method @Deprecated public abstract android.app.FragmentTransaction detach(android.app.Fragment);
+ method @Deprecated public abstract android.app.FragmentTransaction disallowAddToBackStack();
+ method @Deprecated public abstract android.app.FragmentTransaction hide(android.app.Fragment);
+ method @Deprecated public abstract boolean isAddToBackStackAllowed();
+ method @Deprecated public abstract boolean isEmpty();
+ method @Deprecated public abstract android.app.FragmentTransaction remove(android.app.Fragment);
+ method @Deprecated public abstract android.app.FragmentTransaction replace(@IdRes int, android.app.Fragment);
+ method @Deprecated public abstract android.app.FragmentTransaction replace(@IdRes int, android.app.Fragment, String);
+ method @Deprecated public abstract android.app.FragmentTransaction runOnCommit(Runnable);
+ method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(@StringRes int);
+ method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(CharSequence);
+ method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbTitle(@StringRes int);
+ method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbTitle(CharSequence);
+ method @Deprecated public abstract android.app.FragmentTransaction setCustomAnimations(@AnimatorRes int, @AnimatorRes int);
+ method @Deprecated public abstract android.app.FragmentTransaction setCustomAnimations(@AnimatorRes int, @AnimatorRes int, @AnimatorRes int, @AnimatorRes int);
+ method @Deprecated public abstract android.app.FragmentTransaction setPrimaryNavigationFragment(android.app.Fragment);
+ method @Deprecated public abstract android.app.FragmentTransaction setReorderingAllowed(boolean);
+ method @Deprecated public abstract android.app.FragmentTransaction setTransition(int);
+ method @Deprecated public abstract android.app.FragmentTransaction setTransitionStyle(@StyleRes int);
+ method @Deprecated public abstract android.app.FragmentTransaction show(android.app.Fragment);
+ field @Deprecated public static final int TRANSIT_ENTER_MASK = 4096; // 0x1000
+ field @Deprecated public static final int TRANSIT_EXIT_MASK = 8192; // 0x2000
+ field @Deprecated public static final int TRANSIT_FRAGMENT_CLOSE = 8194; // 0x2002
+ field @Deprecated public static final int TRANSIT_FRAGMENT_FADE = 4099; // 0x1003
+ field @Deprecated public static final int TRANSIT_FRAGMENT_OPEN = 4097; // 0x1001
+ field @Deprecated public static final int TRANSIT_NONE = 0; // 0x0
+ field @Deprecated public static final int TRANSIT_UNSET = -1; // 0xffffffff
}
public class Instrumentation {
@@ -4999,21 +5003,21 @@
method public android.os.TestLooperManager acquireLooperManager(android.os.Looper);
method public void addMonitor(android.app.Instrumentation.ActivityMonitor);
method public android.app.Instrumentation.ActivityMonitor addMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean);
- method public android.app.Instrumentation.ActivityMonitor addMonitor(java.lang.String, android.app.Instrumentation.ActivityResult, boolean);
+ method public android.app.Instrumentation.ActivityMonitor addMonitor(String, android.app.Instrumentation.ActivityResult, boolean);
method public void addResults(android.os.Bundle);
method public void callActivityOnCreate(android.app.Activity, android.os.Bundle);
method public void callActivityOnCreate(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
method public void callActivityOnDestroy(android.app.Activity);
method public void callActivityOnNewIntent(android.app.Activity, android.content.Intent);
method public void callActivityOnPause(android.app.Activity);
- method public void callActivityOnPostCreate(android.app.Activity, android.os.Bundle);
- method public void callActivityOnPostCreate(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
+ method public void callActivityOnPostCreate(@NonNull android.app.Activity, @Nullable android.os.Bundle);
+ method public void callActivityOnPostCreate(@NonNull android.app.Activity, @Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
method public void callActivityOnRestart(android.app.Activity);
- method public void callActivityOnRestoreInstanceState(android.app.Activity, android.os.Bundle);
- method public void callActivityOnRestoreInstanceState(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
+ method public void callActivityOnRestoreInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+ method public void callActivityOnRestoreInstanceState(@NonNull android.app.Activity, @Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
method public void callActivityOnResume(android.app.Activity);
- method public void callActivityOnSaveInstanceState(android.app.Activity, android.os.Bundle);
- method public void callActivityOnSaveInstanceState(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
+ method public void callActivityOnSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+ method public void callActivityOnSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle, @NonNull android.os.PersistableBundle);
method public void callActivityOnStart(android.app.Activity);
method public void callActivityOnStop(android.app.Activity);
method public void callActivityOnUserLeaving(android.app.Activity);
@@ -5025,51 +5029,51 @@
method public android.os.Bundle getBinderCounts();
method public android.content.ComponentName getComponentName();
method public android.content.Context getContext();
- method public java.lang.String getProcessName();
+ method public String getProcessName();
method public android.content.Context getTargetContext();
method public android.app.UiAutomation getUiAutomation();
method public android.app.UiAutomation getUiAutomation(int);
method public boolean invokeContextMenuAction(android.app.Activity, int, int);
method public boolean invokeMenuActionSync(android.app.Activity, int, int);
method public boolean isProfiling();
- method public android.app.Activity newActivity(java.lang.Class<?>, android.content.Context, android.os.IBinder, android.app.Application, android.content.Intent, android.content.pm.ActivityInfo, java.lang.CharSequence, android.app.Activity, java.lang.String, java.lang.Object) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public android.app.Activity newActivity(java.lang.ClassLoader, java.lang.String, android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public android.app.Application newApplication(java.lang.ClassLoader, java.lang.String, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public static android.app.Application newApplication(java.lang.Class<?>, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Activity newActivity(Class<?>, android.content.Context, android.os.IBinder, android.app.Application, android.content.Intent, android.content.pm.ActivityInfo, CharSequence, android.app.Activity, String, Object) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Activity newActivity(ClassLoader, String, android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Application newApplication(ClassLoader, String, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public static android.app.Application newApplication(Class<?>, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
method public void onCreate(android.os.Bundle);
method public void onDestroy();
- method public boolean onException(java.lang.Object, java.lang.Throwable);
+ method public boolean onException(Object, Throwable);
method public void onStart();
method public void removeMonitor(android.app.Instrumentation.ActivityMonitor);
- method public void runOnMainSync(java.lang.Runnable);
+ method public void runOnMainSync(Runnable);
method public void sendCharacterSync(int);
method public void sendKeyDownUpSync(int);
method public void sendKeySync(android.view.KeyEvent);
method public void sendPointerSync(android.view.MotionEvent);
method public void sendStatus(int, android.os.Bundle);
- method public void sendStringSync(java.lang.String);
+ method public void sendStringSync(String);
method public void sendTrackballEventSync(android.view.MotionEvent);
method public void setAutomaticPerformanceSnapshots();
method public void setInTouchMode(boolean);
method public void start();
method public android.app.Activity startActivitySync(android.content.Intent);
- method public android.app.Activity startActivitySync(android.content.Intent, android.os.Bundle);
- method public deprecated void startAllocCounting();
+ method @NonNull public android.app.Activity startActivitySync(@NonNull android.content.Intent, @Nullable android.os.Bundle);
+ method @Deprecated public void startAllocCounting();
method public void startPerformanceSnapshot();
method public void startProfiling();
- method public deprecated void stopAllocCounting();
+ method @Deprecated public void stopAllocCounting();
method public void stopProfiling();
- method public void waitForIdle(java.lang.Runnable);
+ method public void waitForIdle(Runnable);
method public void waitForIdleSync();
method public android.app.Activity waitForMonitor(android.app.Instrumentation.ActivityMonitor);
method public android.app.Activity waitForMonitorWithTimeout(android.app.Instrumentation.ActivityMonitor, long);
- field public static final java.lang.String REPORT_KEY_IDENTIFIER = "id";
- field public static final java.lang.String REPORT_KEY_STREAMRESULT = "stream";
+ field public static final String REPORT_KEY_IDENTIFIER = "id";
+ field public static final String REPORT_KEY_STREAMRESULT = "stream";
}
public static class Instrumentation.ActivityMonitor {
ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean);
- ctor public Instrumentation.ActivityMonitor(java.lang.String, android.app.Instrumentation.ActivityResult, boolean);
+ ctor public Instrumentation.ActivityMonitor(String, android.app.Instrumentation.ActivityResult, boolean);
ctor public Instrumentation.ActivityMonitor();
method public final android.content.IntentFilter getFilter();
method public final int getHits();
@@ -5088,39 +5092,39 @@
}
public abstract class IntentService extends android.app.Service {
- ctor public IntentService(java.lang.String);
- method public android.os.IBinder onBind(android.content.Intent);
- method protected abstract void onHandleIntent(android.content.Intent);
- method public void onStart(android.content.Intent, int);
+ ctor public IntentService(String);
+ method @Nullable public android.os.IBinder onBind(android.content.Intent);
+ method @WorkerThread protected abstract void onHandleIntent(@Nullable android.content.Intent);
+ method public void onStart(@Nullable android.content.Intent, int);
method public void setIntentRedelivery(boolean);
}
public class KeyguardManager {
- method public android.content.Intent createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence);
- method public deprecated void exitKeyguardSecurely(android.app.KeyguardManager.OnKeyguardExitResult);
- method public deprecated boolean inKeyguardRestrictedInputMode();
+ method public android.content.Intent createConfirmDeviceCredentialIntent(CharSequence, CharSequence);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void exitKeyguardSecurely(android.app.KeyguardManager.OnKeyguardExitResult);
+ method @Deprecated public boolean inKeyguardRestrictedInputMode();
method public boolean isDeviceLocked();
method public boolean isDeviceSecure();
method public boolean isKeyguardLocked();
method public boolean isKeyguardSecure();
- method public deprecated android.app.KeyguardManager.KeyguardLock newKeyguardLock(java.lang.String);
- method public void requestDismissKeyguard(android.app.Activity, android.app.KeyguardManager.KeyguardDismissCallback);
+ method @Deprecated public android.app.KeyguardManager.KeyguardLock newKeyguardLock(String);
+ method public void requestDismissKeyguard(@NonNull android.app.Activity, @Nullable android.app.KeyguardManager.KeyguardDismissCallback);
}
- public static abstract class KeyguardManager.KeyguardDismissCallback {
+ public abstract static class KeyguardManager.KeyguardDismissCallback {
ctor public KeyguardManager.KeyguardDismissCallback();
method public void onDismissCancelled();
method public void onDismissError();
method public void onDismissSucceeded();
}
- public deprecated class KeyguardManager.KeyguardLock {
- method public void disableKeyguard();
- method public void reenableKeyguard();
+ @Deprecated public class KeyguardManager.KeyguardLock {
+ method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void disableKeyguard();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void reenableKeyguard();
}
- public static abstract deprecated interface KeyguardManager.OnKeyguardExitResult {
- method public abstract void onKeyguardExitResult(boolean);
+ @Deprecated public static interface KeyguardManager.OnKeyguardExitResult {
+ method @Deprecated public void onKeyguardExitResult(boolean);
}
public abstract class LauncherActivity extends android.app.ListActivity {
@@ -5140,11 +5144,11 @@
public static class LauncherActivity.ListItem {
ctor public LauncherActivity.ListItem();
- field public java.lang.String className;
+ field public String className;
field public android.os.Bundle extras;
field public android.graphics.drawable.Drawable icon;
- field public java.lang.CharSequence label;
- field public java.lang.String packageName;
+ field public CharSequence label;
+ field public String packageName;
field public android.content.pm.ResolveInfo resolveInfo;
}
@@ -5159,50 +5163,50 @@
method public void setSelection(int);
}
- public deprecated class ListFragment extends android.app.Fragment {
- ctor public ListFragment();
- method public android.widget.ListAdapter getListAdapter();
- method public android.widget.ListView getListView();
- method public long getSelectedItemId();
- method public int getSelectedItemPosition();
- method public void onListItemClick(android.widget.ListView, android.view.View, int, long);
- method public void setEmptyText(java.lang.CharSequence);
- method public void setListAdapter(android.widget.ListAdapter);
- method public void setListShown(boolean);
- method public void setListShownNoAnimation(boolean);
- method public void setSelection(int);
+ @Deprecated public class ListFragment extends android.app.Fragment {
+ ctor @Deprecated public ListFragment();
+ method @Deprecated public android.widget.ListAdapter getListAdapter();
+ method @Deprecated public android.widget.ListView getListView();
+ method @Deprecated public long getSelectedItemId();
+ method @Deprecated public int getSelectedItemPosition();
+ method @Deprecated public void onListItemClick(android.widget.ListView, android.view.View, int, long);
+ method @Deprecated public void setEmptyText(CharSequence);
+ method @Deprecated public void setListAdapter(android.widget.ListAdapter);
+ method @Deprecated public void setListShown(boolean);
+ method @Deprecated public void setListShownNoAnimation(boolean);
+ method @Deprecated public void setSelection(int);
}
- public abstract deprecated class LoaderManager {
- ctor public LoaderManager();
- method public abstract void destroyLoader(int);
- method public abstract void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method public static void enableDebugLogging(boolean);
- method public abstract <D> android.content.Loader<D> getLoader(int);
- method public abstract <D> android.content.Loader<D> initLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
- method public abstract <D> android.content.Loader<D> restartLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
+ @Deprecated public abstract class LoaderManager {
+ ctor @Deprecated public LoaderManager();
+ method @Deprecated public abstract void destroyLoader(int);
+ method @Deprecated public abstract void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method @Deprecated public static void enableDebugLogging(boolean);
+ method @Deprecated public abstract <D> android.content.Loader<D> getLoader(int);
+ method @Deprecated public abstract <D> android.content.Loader<D> initLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
+ method @Deprecated public abstract <D> android.content.Loader<D> restartLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
}
- public static abstract deprecated interface LoaderManager.LoaderCallbacks<D> {
- method public abstract android.content.Loader<D> onCreateLoader(int, android.os.Bundle);
- method public abstract void onLoadFinished(android.content.Loader<D>, D);
- method public abstract void onLoaderReset(android.content.Loader<D>);
+ @Deprecated public static interface LoaderManager.LoaderCallbacks<D> {
+ method @Deprecated public android.content.Loader<D> onCreateLoader(int, android.os.Bundle);
+ method @Deprecated public void onLoadFinished(android.content.Loader<D>, D);
+ method @Deprecated public void onLoaderReset(android.content.Loader<D>);
}
- public deprecated class LocalActivityManager {
- ctor public LocalActivityManager(android.app.Activity, boolean);
- method public android.view.Window destroyActivity(java.lang.String, boolean);
- method public void dispatchCreate(android.os.Bundle);
- method public void dispatchDestroy(boolean);
- method public void dispatchPause(boolean);
- method public void dispatchResume();
- method public void dispatchStop();
- method public android.app.Activity getActivity(java.lang.String);
- method public android.app.Activity getCurrentActivity();
- method public java.lang.String getCurrentId();
- method public void removeAllActivities();
- method public android.os.Bundle saveInstanceState();
- method public android.view.Window startActivity(java.lang.String, android.content.Intent);
+ @Deprecated public class LocalActivityManager {
+ ctor @Deprecated public LocalActivityManager(android.app.Activity, boolean);
+ method @Deprecated public android.view.Window destroyActivity(String, boolean);
+ method @Deprecated public void dispatchCreate(android.os.Bundle);
+ method @Deprecated public void dispatchDestroy(boolean);
+ method @Deprecated public void dispatchPause(boolean);
+ method @Deprecated public void dispatchResume();
+ method @Deprecated public void dispatchStop();
+ method @Deprecated public android.app.Activity getActivity(String);
+ method @Deprecated public android.app.Activity getCurrentActivity();
+ method @Deprecated public String getCurrentId();
+ method @Deprecated public void removeAllActivities();
+ method @Deprecated public android.os.Bundle saveInstanceState();
+ method @Deprecated public android.view.Window startActivity(String, android.content.Intent);
}
public class MediaRouteActionProvider extends android.view.ActionProvider {
@@ -5234,149 +5238,149 @@
method public void surfaceCreated(android.view.SurfaceHolder);
method public void surfaceDestroyed(android.view.SurfaceHolder);
method public void surfaceRedrawNeeded(android.view.SurfaceHolder);
- field public static final java.lang.String META_DATA_FUNC_NAME = "android.app.func_name";
- field public static final java.lang.String META_DATA_LIB_NAME = "android.app.lib_name";
+ field public static final String META_DATA_FUNC_NAME = "android.app.func_name";
+ field public static final String META_DATA_LIB_NAME = "android.app.lib_name";
}
public class Notification implements android.os.Parcelable {
ctor public Notification();
- ctor public deprecated Notification(int, java.lang.CharSequence, long);
+ ctor @Deprecated public Notification(int, CharSequence, long);
ctor public Notification(android.os.Parcel);
method public android.app.Notification clone();
method public int describeContents();
method public boolean getAllowSystemGeneratedContextualActions();
- method public android.app.PendingIntent getAppOverlayIntent();
method public int getBadgeIconType();
- method public java.lang.String getChannelId();
- method public java.lang.String getGroup();
+ method public android.app.Notification.BubbleMetadata getBubbleMetadata();
+ method public String getChannelId();
+ method public String getGroup();
method public int getGroupAlertBehavior();
method public android.graphics.drawable.Icon getLargeIcon();
- method public java.lang.CharSequence getSettingsText();
- method public java.lang.String getShortcutId();
+ method public CharSequence getSettingsText();
+ method public String getShortcutId();
method public android.graphics.drawable.Icon getSmallIcon();
- method public java.lang.String getSortKey();
+ method public String getSortKey();
method public long getTimeoutAfter();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.media.AudioAttributes AUDIO_ATTRIBUTES_DEFAULT;
field public static final int BADGE_ICON_LARGE = 2; // 0x2
field public static final int BADGE_ICON_NONE = 0; // 0x0
field public static final int BADGE_ICON_SMALL = 1; // 0x1
- field public static final java.lang.String CATEGORY_ALARM = "alarm";
- field public static final java.lang.String CATEGORY_CALL = "call";
- field public static final java.lang.String CATEGORY_EMAIL = "email";
- field public static final java.lang.String CATEGORY_ERROR = "err";
- field public static final java.lang.String CATEGORY_EVENT = "event";
- field public static final java.lang.String CATEGORY_MESSAGE = "msg";
- field public static final java.lang.String CATEGORY_NAVIGATION = "navigation";
- field public static final java.lang.String CATEGORY_PROGRESS = "progress";
- field public static final java.lang.String CATEGORY_PROMO = "promo";
- field public static final java.lang.String CATEGORY_RECOMMENDATION = "recommendation";
- field public static final java.lang.String CATEGORY_REMINDER = "reminder";
- field public static final java.lang.String CATEGORY_SERVICE = "service";
- field public static final java.lang.String CATEGORY_SOCIAL = "social";
- field public static final java.lang.String CATEGORY_STATUS = "status";
- field public static final java.lang.String CATEGORY_SYSTEM = "sys";
- field public static final java.lang.String CATEGORY_TRANSPORT = "transport";
- field public static final int COLOR_DEFAULT = 0; // 0x0
+ field public static final String CATEGORY_ALARM = "alarm";
+ field public static final String CATEGORY_CALL = "call";
+ field public static final String CATEGORY_EMAIL = "email";
+ field public static final String CATEGORY_ERROR = "err";
+ field public static final String CATEGORY_EVENT = "event";
+ field public static final String CATEGORY_MESSAGE = "msg";
+ field public static final String CATEGORY_NAVIGATION = "navigation";
+ field public static final String CATEGORY_PROGRESS = "progress";
+ field public static final String CATEGORY_PROMO = "promo";
+ field public static final String CATEGORY_RECOMMENDATION = "recommendation";
+ field public static final String CATEGORY_REMINDER = "reminder";
+ field public static final String CATEGORY_SERVICE = "service";
+ field public static final String CATEGORY_SOCIAL = "social";
+ field public static final String CATEGORY_STATUS = "status";
+ field public static final String CATEGORY_SYSTEM = "sys";
+ field public static final String CATEGORY_TRANSPORT = "transport";
+ field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
field public static final android.os.Parcelable.Creator<android.app.Notification> CREATOR;
field public static final int DEFAULT_ALL = -1; // 0xffffffff
field public static final int DEFAULT_LIGHTS = 4; // 0x4
field public static final int DEFAULT_SOUND = 1; // 0x1
field public static final int DEFAULT_VIBRATE = 2; // 0x2
- field public static final java.lang.String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
- field public static final java.lang.String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
- field public static final java.lang.String EXTRA_BIG_TEXT = "android.bigText";
- field public static final java.lang.String EXTRA_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
- field public static final java.lang.String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
- field public static final java.lang.String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
- field public static final java.lang.String EXTRA_COLORIZED = "android.colorized";
- field public static final java.lang.String EXTRA_COMPACT_ACTIONS = "android.compactActions";
- field public static final java.lang.String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
- field public static final java.lang.String EXTRA_HISTORIC_MESSAGES = "android.messages.historic";
- field public static final java.lang.String EXTRA_INFO_TEXT = "android.infoText";
- field public static final java.lang.String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
- field public static final deprecated java.lang.String EXTRA_LARGE_ICON = "android.largeIcon";
- field public static final java.lang.String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
- field public static final java.lang.String EXTRA_MEDIA_SESSION = "android.mediaSession";
- field public static final java.lang.String EXTRA_MESSAGES = "android.messages";
- field public static final java.lang.String EXTRA_MESSAGING_PERSON = "android.messagingUser";
- field public static final java.lang.String EXTRA_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
- field public static final java.lang.String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
- field public static final deprecated java.lang.String EXTRA_PEOPLE = "android.people";
- field public static final java.lang.String EXTRA_PEOPLE_LIST = "android.people.list";
- field public static final java.lang.String EXTRA_PICTURE = "android.picture";
- field public static final java.lang.String EXTRA_PROGRESS = "android.progress";
- field public static final java.lang.String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
- field public static final java.lang.String EXTRA_PROGRESS_MAX = "android.progressMax";
- field public static final java.lang.String EXTRA_REMOTE_INPUT_DRAFT = "android.remoteInputDraft";
- field public static final java.lang.String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
- field public static final deprecated java.lang.String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
- field public static final java.lang.String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
- field public static final java.lang.String EXTRA_SHOW_WHEN = "android.showWhen";
- field public static final deprecated java.lang.String EXTRA_SMALL_ICON = "android.icon";
- field public static final java.lang.String EXTRA_SUB_TEXT = "android.subText";
- field public static final java.lang.String EXTRA_SUMMARY_TEXT = "android.summaryText";
- field public static final java.lang.String EXTRA_TEMPLATE = "android.template";
- field public static final java.lang.String EXTRA_TEXT = "android.text";
- field public static final java.lang.String EXTRA_TEXT_LINES = "android.textLines";
- field public static final java.lang.String EXTRA_TITLE = "android.title";
- field public static final java.lang.String EXTRA_TITLE_BIG = "android.title.big";
+ field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
+ field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
+ field public static final String EXTRA_BIG_TEXT = "android.bigText";
+ field public static final String EXTRA_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
+ field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
+ field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
+ field public static final String EXTRA_COLORIZED = "android.colorized";
+ field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+ field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
+ field public static final String EXTRA_HISTORIC_MESSAGES = "android.messages.historic";
+ field public static final String EXTRA_INFO_TEXT = "android.infoText";
+ field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
+ field @Deprecated public static final String EXTRA_LARGE_ICON = "android.largeIcon";
+ field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
+ field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
+ field public static final String EXTRA_MESSAGES = "android.messages";
+ field public static final String EXTRA_MESSAGING_PERSON = "android.messagingUser";
+ field public static final String EXTRA_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
+ field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
+ field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
+ field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
+ field public static final String EXTRA_PICTURE = "android.picture";
+ field public static final String EXTRA_PROGRESS = "android.progress";
+ field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
+ field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
+ field public static final String EXTRA_REMOTE_INPUT_DRAFT = "android.remoteInputDraft";
+ field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
+ field @Deprecated public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
+ field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
+ field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
+ field @Deprecated public static final String EXTRA_SMALL_ICON = "android.icon";
+ field public static final String EXTRA_SUB_TEXT = "android.subText";
+ field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
+ field public static final String EXTRA_TEMPLATE = "android.template";
+ field public static final String EXTRA_TEXT = "android.text";
+ field public static final String EXTRA_TEXT_LINES = "android.textLines";
+ field public static final String EXTRA_TITLE = "android.title";
+ field public static final String EXTRA_TITLE_BIG = "android.title.big";
field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
- field public static final deprecated int FLAG_HIGH_PRIORITY = 128; // 0x80
+ field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
field public static final int FLAG_INSISTENT = 4; // 0x4
field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
field public static final int FLAG_NO_CLEAR = 32; // 0x20
field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
- field public static final deprecated int FLAG_SHOW_LIGHTS = 1; // 0x1
+ field @Deprecated public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
field public static final int GROUP_ALERT_ALL = 0; // 0x0
field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
- field public static final java.lang.String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
- field public static final deprecated int PRIORITY_DEFAULT = 0; // 0x0
- field public static final deprecated int PRIORITY_HIGH = 1; // 0x1
- field public static final deprecated int PRIORITY_LOW = -1; // 0xffffffff
- field public static final deprecated int PRIORITY_MAX = 2; // 0x2
- field public static final deprecated int PRIORITY_MIN = -2; // 0xfffffffe
- field public static final deprecated int STREAM_DEFAULT = -1; // 0xffffffff
+ field public static final String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
+ field @Deprecated public static final int PRIORITY_DEFAULT = 0; // 0x0
+ field @Deprecated public static final int PRIORITY_HIGH = 1; // 0x1
+ field @Deprecated public static final int PRIORITY_LOW = -1; // 0xffffffff
+ field @Deprecated public static final int PRIORITY_MAX = 2; // 0x2
+ field @Deprecated public static final int PRIORITY_MIN = -2; // 0xfffffffe
+ field @Deprecated public static final int STREAM_DEFAULT = -1; // 0xffffffff
field public static final int VISIBILITY_PRIVATE = 0; // 0x0
field public static final int VISIBILITY_PUBLIC = 1; // 0x1
field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
field public android.app.Notification.Action[] actions;
- field public deprecated android.media.AudioAttributes audioAttributes;
- field public deprecated int audioStreamType;
- field public deprecated android.widget.RemoteViews bigContentView;
- field public java.lang.String category;
- field public int color;
+ field @Deprecated public android.media.AudioAttributes audioAttributes;
+ field @Deprecated public int audioStreamType;
+ field @Deprecated public android.widget.RemoteViews bigContentView;
+ field public String category;
+ field @ColorInt public int color;
field public android.app.PendingIntent contentIntent;
- field public deprecated android.widget.RemoteViews contentView;
- field public deprecated int defaults;
+ field @Deprecated public android.widget.RemoteViews contentView;
+ field @Deprecated public int defaults;
field public android.app.PendingIntent deleteIntent;
field public android.os.Bundle extras;
field public int flags;
field public android.app.PendingIntent fullScreenIntent;
- field public deprecated android.widget.RemoteViews headsUpContentView;
- field public deprecated int icon;
+ field @Deprecated public android.widget.RemoteViews headsUpContentView;
+ field @Deprecated @DrawableRes public int icon;
field public int iconLevel;
- field public deprecated android.graphics.Bitmap largeIcon;
- field public deprecated int ledARGB;
- field public deprecated int ledOffMS;
- field public deprecated int ledOnMS;
+ field @Deprecated public android.graphics.Bitmap largeIcon;
+ field @Deprecated @ColorInt public int ledARGB;
+ field @Deprecated public int ledOffMS;
+ field @Deprecated public int ledOnMS;
field public int number;
- field public deprecated int priority;
+ field @Deprecated public int priority;
field public android.app.Notification publicVersion;
- field public deprecated android.net.Uri sound;
- field public java.lang.CharSequence tickerText;
- field public deprecated android.widget.RemoteViews tickerView;
- field public deprecated long[] vibrate;
+ field @Deprecated public android.net.Uri sound;
+ field public CharSequence tickerText;
+ field @Deprecated public android.widget.RemoteViews tickerView;
+ field @Deprecated public long[] vibrate;
field public int visibility;
field public long when;
}
public static class Notification.Action implements android.os.Parcelable {
- ctor public deprecated Notification.Action(int, java.lang.CharSequence, android.app.PendingIntent);
+ ctor @Deprecated public Notification.Action(int, CharSequence, android.app.PendingIntent);
method public android.app.Notification.Action clone();
method public int describeContents();
method public boolean getAllowGeneratedReplies();
@@ -5400,13 +5404,13 @@
field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
field public android.app.PendingIntent actionIntent;
- field public deprecated int icon;
- field public java.lang.CharSequence title;
+ field @Deprecated public int icon;
+ field public CharSequence title;
}
public static final class Notification.Action.Builder {
- ctor public deprecated Notification.Action.Builder(int, java.lang.CharSequence, android.app.PendingIntent);
- ctor public Notification.Action.Builder(android.graphics.drawable.Icon, java.lang.CharSequence, android.app.PendingIntent);
+ ctor @Deprecated public Notification.Action.Builder(int, CharSequence, android.app.PendingIntent);
+ ctor public Notification.Action.Builder(android.graphics.drawable.Icon, CharSequence, android.app.PendingIntent);
ctor public Notification.Action.Builder(android.app.Notification.Action);
method public android.app.Notification.Action.Builder addExtras(android.os.Bundle);
method public android.app.Notification.Action.Builder addRemoteInput(android.app.RemoteInput);
@@ -5418,8 +5422,8 @@
method public android.app.Notification.Action.Builder setSemanticAction(int);
}
- public static abstract interface Notification.Action.Extender {
- method public abstract android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
+ public static interface Notification.Action.Extender {
+ method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
}
public static final class Notification.Action.WearableExtender implements android.app.Notification.Action.Extender {
@@ -5427,45 +5431,64 @@
ctor public Notification.Action.WearableExtender(android.app.Notification.Action);
method public android.app.Notification.Action.WearableExtender clone();
method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
- method public deprecated java.lang.CharSequence getCancelLabel();
- method public deprecated java.lang.CharSequence getConfirmLabel();
+ method @Deprecated public CharSequence getCancelLabel();
+ method @Deprecated public CharSequence getConfirmLabel();
method public boolean getHintDisplayActionInline();
method public boolean getHintLaunchesActivity();
- method public deprecated java.lang.CharSequence getInProgressLabel();
+ method @Deprecated public CharSequence getInProgressLabel();
method public boolean isAvailableOffline();
method public android.app.Notification.Action.WearableExtender setAvailableOffline(boolean);
- method public deprecated android.app.Notification.Action.WearableExtender setCancelLabel(java.lang.CharSequence);
- method public deprecated android.app.Notification.Action.WearableExtender setConfirmLabel(java.lang.CharSequence);
+ method @Deprecated public android.app.Notification.Action.WearableExtender setCancelLabel(CharSequence);
+ method @Deprecated public android.app.Notification.Action.WearableExtender setConfirmLabel(CharSequence);
method public android.app.Notification.Action.WearableExtender setHintDisplayActionInline(boolean);
method public android.app.Notification.Action.WearableExtender setHintLaunchesActivity(boolean);
- method public deprecated android.app.Notification.Action.WearableExtender setInProgressLabel(java.lang.CharSequence);
+ method @Deprecated public android.app.Notification.Action.WearableExtender setInProgressLabel(CharSequence);
}
public static class Notification.BigPictureStyle extends android.app.Notification.Style {
ctor public Notification.BigPictureStyle();
- ctor public deprecated Notification.BigPictureStyle(android.app.Notification.Builder);
+ ctor @Deprecated public Notification.BigPictureStyle(android.app.Notification.Builder);
method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.Bitmap);
method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon);
method public android.app.Notification.BigPictureStyle bigPicture(android.graphics.Bitmap);
- method public android.app.Notification.BigPictureStyle setBigContentTitle(java.lang.CharSequence);
- method public android.app.Notification.BigPictureStyle setSummaryText(java.lang.CharSequence);
+ method public android.app.Notification.BigPictureStyle setBigContentTitle(CharSequence);
+ method public android.app.Notification.BigPictureStyle setSummaryText(CharSequence);
}
public static class Notification.BigTextStyle extends android.app.Notification.Style {
ctor public Notification.BigTextStyle();
- ctor public deprecated Notification.BigTextStyle(android.app.Notification.Builder);
- method public android.app.Notification.BigTextStyle bigText(java.lang.CharSequence);
- method public android.app.Notification.BigTextStyle setBigContentTitle(java.lang.CharSequence);
- method public android.app.Notification.BigTextStyle setSummaryText(java.lang.CharSequence);
+ ctor @Deprecated public Notification.BigTextStyle(android.app.Notification.Builder);
+ method public android.app.Notification.BigTextStyle bigText(CharSequence);
+ method public android.app.Notification.BigTextStyle setBigContentTitle(CharSequence);
+ method public android.app.Notification.BigTextStyle setSummaryText(CharSequence);
+ }
+
+ public static final class Notification.BubbleMetadata implements android.os.Parcelable {
+ method public int describeContents();
+ method public int getDesiredHeight();
+ method public android.graphics.drawable.Icon getIcon();
+ method public android.app.PendingIntent getIntent();
+ method public CharSequence getTitle();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator<android.app.Notification.BubbleMetadata> CREATOR;
+ }
+
+ public static class Notification.BubbleMetadata.Builder {
+ ctor public Notification.BubbleMetadata.Builder();
+ method public android.app.Notification.BubbleMetadata build();
+ method public android.app.Notification.BubbleMetadata.Builder setDesiredHeight(int);
+ method public android.app.Notification.BubbleMetadata.Builder setIcon(android.graphics.drawable.Icon);
+ method public android.app.Notification.BubbleMetadata.Builder setIntent(android.app.PendingIntent);
+ method public android.app.Notification.BubbleMetadata.Builder setTitle(CharSequence);
}
public static class Notification.Builder {
- ctor public Notification.Builder(android.content.Context, java.lang.String);
- ctor public deprecated Notification.Builder(android.content.Context);
- method public deprecated android.app.Notification.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
+ ctor public Notification.Builder(android.content.Context, String);
+ ctor @Deprecated public Notification.Builder(android.content.Context);
+ method @Deprecated public android.app.Notification.Builder addAction(int, CharSequence, android.app.PendingIntent);
method public android.app.Notification.Builder addAction(android.app.Notification.Action);
method public android.app.Notification.Builder addExtras(android.os.Bundle);
- method public deprecated android.app.Notification.Builder addPerson(java.lang.String);
+ method @Deprecated public android.app.Notification.Builder addPerson(String);
method public android.app.Notification.Builder addPerson(android.app.Person);
method public android.app.Notification build();
method public android.widget.RemoteViews createBigContentView();
@@ -5473,62 +5496,62 @@
method public android.widget.RemoteViews createHeadsUpContentView();
method public android.app.Notification.Builder extend(android.app.Notification.Extender);
method public android.os.Bundle getExtras();
- method public deprecated android.app.Notification getNotification();
+ method @Deprecated public android.app.Notification getNotification();
method public android.app.Notification.Style getStyle();
method public static android.app.Notification.Builder recoverBuilder(android.content.Context, android.app.Notification);
method public android.app.Notification.Builder setActions(android.app.Notification.Action...);
method public android.app.Notification.Builder setAllowSystemGeneratedContextualActions(boolean);
- method public android.app.Notification.Builder setAppOverlayIntent(android.app.PendingIntent);
method public android.app.Notification.Builder setAutoCancel(boolean);
method public android.app.Notification.Builder setBadgeIconType(int);
- method public android.app.Notification.Builder setCategory(java.lang.String);
- method public android.app.Notification.Builder setChannelId(java.lang.String);
+ method public android.app.Notification.Builder setBubbleMetadata(android.app.Notification.BubbleMetadata);
+ method public android.app.Notification.Builder setCategory(String);
+ method public android.app.Notification.Builder setChannelId(String);
method public android.app.Notification.Builder setChronometerCountDown(boolean);
- method public android.app.Notification.Builder setColor(int);
+ method public android.app.Notification.Builder setColor(@ColorInt int);
method public android.app.Notification.Builder setColorized(boolean);
- method public deprecated android.app.Notification.Builder setContent(android.widget.RemoteViews);
- method public deprecated android.app.Notification.Builder setContentInfo(java.lang.CharSequence);
+ method @Deprecated public android.app.Notification.Builder setContent(android.widget.RemoteViews);
+ method @Deprecated public android.app.Notification.Builder setContentInfo(CharSequence);
method public android.app.Notification.Builder setContentIntent(android.app.PendingIntent);
- method public android.app.Notification.Builder setContentText(java.lang.CharSequence);
- method public android.app.Notification.Builder setContentTitle(java.lang.CharSequence);
+ method public android.app.Notification.Builder setContentText(CharSequence);
+ method public android.app.Notification.Builder setContentTitle(CharSequence);
method public android.app.Notification.Builder setCustomBigContentView(android.widget.RemoteViews);
method public android.app.Notification.Builder setCustomContentView(android.widget.RemoteViews);
method public android.app.Notification.Builder setCustomHeadsUpContentView(android.widget.RemoteViews);
- method public deprecated android.app.Notification.Builder setDefaults(int);
+ method @Deprecated public android.app.Notification.Builder setDefaults(int);
method public android.app.Notification.Builder setDeleteIntent(android.app.PendingIntent);
method public android.app.Notification.Builder setExtras(android.os.Bundle);
method public android.app.Notification.Builder setFullScreenIntent(android.app.PendingIntent, boolean);
- method public android.app.Notification.Builder setGroup(java.lang.String);
+ method public android.app.Notification.Builder setGroup(String);
method public android.app.Notification.Builder setGroupAlertBehavior(int);
method public android.app.Notification.Builder setGroupSummary(boolean);
method public android.app.Notification.Builder setLargeIcon(android.graphics.Bitmap);
method public android.app.Notification.Builder setLargeIcon(android.graphics.drawable.Icon);
- method public deprecated android.app.Notification.Builder setLights(int, int, int);
+ method @Deprecated public android.app.Notification.Builder setLights(@ColorInt int, int, int);
method public android.app.Notification.Builder setLocalOnly(boolean);
method public android.app.Notification.Builder setNumber(int);
method public android.app.Notification.Builder setOngoing(boolean);
method public android.app.Notification.Builder setOnlyAlertOnce(boolean);
- method public deprecated android.app.Notification.Builder setPriority(int);
+ method @Deprecated public android.app.Notification.Builder setPriority(int);
method public android.app.Notification.Builder setProgress(int, int, boolean);
method public android.app.Notification.Builder setPublicVersion(android.app.Notification);
- method public android.app.Notification.Builder setRemoteInputHistory(java.lang.CharSequence[]);
- method public android.app.Notification.Builder setSettingsText(java.lang.CharSequence);
- method public android.app.Notification.Builder setShortcutId(java.lang.String);
+ method public android.app.Notification.Builder setRemoteInputHistory(CharSequence[]);
+ method public android.app.Notification.Builder setSettingsText(CharSequence);
+ method public android.app.Notification.Builder setShortcutId(String);
method public android.app.Notification.Builder setShowWhen(boolean);
- method public android.app.Notification.Builder setSmallIcon(int);
- method public android.app.Notification.Builder setSmallIcon(int, int);
+ method public android.app.Notification.Builder setSmallIcon(@DrawableRes int);
+ method public android.app.Notification.Builder setSmallIcon(@DrawableRes int, int);
method public android.app.Notification.Builder setSmallIcon(android.graphics.drawable.Icon);
- method public android.app.Notification.Builder setSortKey(java.lang.String);
- method public deprecated android.app.Notification.Builder setSound(android.net.Uri);
- method public deprecated android.app.Notification.Builder setSound(android.net.Uri, int);
- method public deprecated android.app.Notification.Builder setSound(android.net.Uri, android.media.AudioAttributes);
+ method public android.app.Notification.Builder setSortKey(String);
+ method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri);
+ method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri, int);
+ method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri, android.media.AudioAttributes);
method public android.app.Notification.Builder setStyle(android.app.Notification.Style);
- method public android.app.Notification.Builder setSubText(java.lang.CharSequence);
- method public android.app.Notification.Builder setTicker(java.lang.CharSequence);
- method public deprecated android.app.Notification.Builder setTicker(java.lang.CharSequence, android.widget.RemoteViews);
+ method public android.app.Notification.Builder setSubText(CharSequence);
+ method public android.app.Notification.Builder setTicker(CharSequence);
+ method @Deprecated public android.app.Notification.Builder setTicker(CharSequence, android.widget.RemoteViews);
method public android.app.Notification.Builder setTimeoutAfter(long);
method public android.app.Notification.Builder setUsesChronometer(boolean);
- method public deprecated android.app.Notification.Builder setVibrate(long[]);
+ method @Deprecated public android.app.Notification.Builder setVibrate(long[]);
method public android.app.Notification.Builder setVisibility(int);
method public android.app.Notification.Builder setWhen(long);
}
@@ -5537,17 +5560,17 @@
ctor public Notification.CarExtender();
ctor public Notification.CarExtender(android.app.Notification);
method public android.app.Notification.Builder extend(android.app.Notification.Builder);
- method public int getColor();
+ method @ColorInt public int getColor();
method public android.graphics.Bitmap getLargeIcon();
method public android.app.Notification.CarExtender.UnreadConversation getUnreadConversation();
- method public android.app.Notification.CarExtender setColor(int);
+ method public android.app.Notification.CarExtender setColor(@ColorInt int);
method public android.app.Notification.CarExtender setLargeIcon(android.graphics.Bitmap);
method public android.app.Notification.CarExtender setUnreadConversation(android.app.Notification.CarExtender.UnreadConversation);
}
public static class Notification.CarExtender.Builder {
- ctor public Notification.CarExtender.Builder(java.lang.String);
- method public android.app.Notification.CarExtender.Builder addMessage(java.lang.String);
+ ctor public Notification.CarExtender.Builder(String);
+ method public android.app.Notification.CarExtender.Builder addMessage(String);
method public android.app.Notification.CarExtender.UnreadConversation build();
method public android.app.Notification.CarExtender.Builder setLatestTimestamp(long);
method public android.app.Notification.CarExtender.Builder setReadPendingIntent(android.app.PendingIntent);
@@ -5556,9 +5579,9 @@
public static class Notification.CarExtender.UnreadConversation {
method public long getLatestTimestamp();
- method public java.lang.String[] getMessages();
- method public java.lang.String getParticipant();
- method public java.lang.String[] getParticipants();
+ method public String[] getMessages();
+ method public String getParticipant();
+ method public String[] getParticipants();
method public android.app.PendingIntent getReadPendingIntent();
method public android.app.RemoteInput getRemoteInput();
method public android.app.PendingIntent getReplyPendingIntent();
@@ -5572,63 +5595,63 @@
ctor public Notification.DecoratedMediaCustomViewStyle();
}
- public static abstract interface Notification.Extender {
- method public abstract android.app.Notification.Builder extend(android.app.Notification.Builder);
+ public static interface Notification.Extender {
+ method public android.app.Notification.Builder extend(android.app.Notification.Builder);
}
public static class Notification.InboxStyle extends android.app.Notification.Style {
ctor public Notification.InboxStyle();
- ctor public deprecated Notification.InboxStyle(android.app.Notification.Builder);
- method public android.app.Notification.InboxStyle addLine(java.lang.CharSequence);
- method public android.app.Notification.InboxStyle setBigContentTitle(java.lang.CharSequence);
- method public android.app.Notification.InboxStyle setSummaryText(java.lang.CharSequence);
+ ctor @Deprecated public Notification.InboxStyle(android.app.Notification.Builder);
+ method public android.app.Notification.InboxStyle addLine(CharSequence);
+ method public android.app.Notification.InboxStyle setBigContentTitle(CharSequence);
+ method public android.app.Notification.InboxStyle setSummaryText(CharSequence);
}
public static class Notification.MediaStyle extends android.app.Notification.Style {
ctor public Notification.MediaStyle();
- ctor public deprecated Notification.MediaStyle(android.app.Notification.Builder);
+ ctor @Deprecated public Notification.MediaStyle(android.app.Notification.Builder);
method public android.app.Notification.MediaStyle setMediaSession(android.media.session.MediaSession.Token);
method public android.app.Notification.MediaStyle setShowActionsInCompactView(int...);
}
public static class Notification.MessagingStyle extends android.app.Notification.Style {
- ctor public deprecated Notification.MessagingStyle(java.lang.CharSequence);
- ctor public Notification.MessagingStyle(android.app.Person);
+ ctor @Deprecated public Notification.MessagingStyle(@NonNull CharSequence);
+ ctor public Notification.MessagingStyle(@NonNull android.app.Person);
method public android.app.Notification.MessagingStyle addHistoricMessage(android.app.Notification.MessagingStyle.Message);
- method public deprecated android.app.Notification.MessagingStyle addMessage(java.lang.CharSequence, long, java.lang.CharSequence);
- method public android.app.Notification.MessagingStyle addMessage(java.lang.CharSequence, long, android.app.Person);
+ method @Deprecated public android.app.Notification.MessagingStyle addMessage(CharSequence, long, CharSequence);
+ method public android.app.Notification.MessagingStyle addMessage(@NonNull CharSequence, long, @Nullable android.app.Person);
method public android.app.Notification.MessagingStyle addMessage(android.app.Notification.MessagingStyle.Message);
- method public java.lang.CharSequence getConversationTitle();
+ method @Nullable public CharSequence getConversationTitle();
method public java.util.List<android.app.Notification.MessagingStyle.Message> getHistoricMessages();
method public java.util.List<android.app.Notification.MessagingStyle.Message> getMessages();
- method public android.app.Person getUser();
- method public deprecated java.lang.CharSequence getUserDisplayName();
+ method @NonNull public android.app.Person getUser();
+ method @Deprecated public CharSequence getUserDisplayName();
method public boolean isGroupConversation();
- method public android.app.Notification.MessagingStyle setConversationTitle(java.lang.CharSequence);
+ method public android.app.Notification.MessagingStyle setConversationTitle(@Nullable CharSequence);
method public android.app.Notification.MessagingStyle setGroupConversation(boolean);
field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
}
public static final class Notification.MessagingStyle.Message {
- ctor public deprecated Notification.MessagingStyle.Message(java.lang.CharSequence, long, java.lang.CharSequence);
- ctor public Notification.MessagingStyle.Message(java.lang.CharSequence, long, android.app.Person);
- method public java.lang.String getDataMimeType();
+ ctor @Deprecated public Notification.MessagingStyle.Message(CharSequence, long, CharSequence);
+ ctor public Notification.MessagingStyle.Message(@NonNull CharSequence, long, @Nullable android.app.Person);
+ method public String getDataMimeType();
method public android.net.Uri getDataUri();
method public android.os.Bundle getExtras();
- method public deprecated java.lang.CharSequence getSender();
- method public android.app.Person getSenderPerson();
- method public java.lang.CharSequence getText();
+ method @Deprecated public CharSequence getSender();
+ method @Nullable public android.app.Person getSenderPerson();
+ method public CharSequence getText();
method public long getTimestamp();
- method public android.app.Notification.MessagingStyle.Message setData(java.lang.String, android.net.Uri);
+ method public android.app.Notification.MessagingStyle.Message setData(String, android.net.Uri);
}
- public static abstract class Notification.Style {
+ public abstract static class Notification.Style {
ctor public Notification.Style();
method public android.app.Notification build();
method protected void checkBuilder();
method protected android.widget.RemoteViews getStandardView(int);
- method protected void internalSetBigContentTitle(java.lang.CharSequence);
- method protected void internalSetSummaryText(java.lang.CharSequence);
+ method protected void internalSetBigContentTitle(CharSequence);
+ method protected void internalSetSummaryText(CharSequence);
method public void setBuilder(android.app.Notification.Builder);
field protected android.app.Notification.Builder mBuilder;
}
@@ -5638,88 +5661,88 @@
ctor public Notification.WearableExtender(android.app.Notification);
method public android.app.Notification.WearableExtender addAction(android.app.Notification.Action);
method public android.app.Notification.WearableExtender addActions(java.util.List<android.app.Notification.Action>);
- method public deprecated android.app.Notification.WearableExtender addPage(android.app.Notification);
- method public deprecated android.app.Notification.WearableExtender addPages(java.util.List<android.app.Notification>);
+ method @Deprecated public android.app.Notification.WearableExtender addPage(android.app.Notification);
+ method @Deprecated public android.app.Notification.WearableExtender addPages(java.util.List<android.app.Notification>);
method public android.app.Notification.WearableExtender clearActions();
- method public deprecated android.app.Notification.WearableExtender clearPages();
+ method @Deprecated public android.app.Notification.WearableExtender clearPages();
method public android.app.Notification.WearableExtender clone();
method public android.app.Notification.Builder extend(android.app.Notification.Builder);
method public java.util.List<android.app.Notification.Action> getActions();
- method public deprecated android.graphics.Bitmap getBackground();
- method public java.lang.String getBridgeTag();
+ method @Deprecated public android.graphics.Bitmap getBackground();
+ method public String getBridgeTag();
method public int getContentAction();
- method public deprecated int getContentIcon();
- method public deprecated int getContentIconGravity();
+ method @Deprecated public int getContentIcon();
+ method @Deprecated public int getContentIconGravity();
method public boolean getContentIntentAvailableOffline();
- method public deprecated int getCustomContentHeight();
- method public deprecated int getCustomSizePreset();
- method public java.lang.String getDismissalId();
- method public deprecated android.app.PendingIntent getDisplayIntent();
- method public deprecated int getGravity();
- method public deprecated boolean getHintAmbientBigPicture();
- method public deprecated boolean getHintAvoidBackgroundClipping();
+ method @Deprecated public int getCustomContentHeight();
+ method @Deprecated public int getCustomSizePreset();
+ method public String getDismissalId();
+ method @Deprecated public android.app.PendingIntent getDisplayIntent();
+ method @Deprecated public int getGravity();
+ method @Deprecated public boolean getHintAmbientBigPicture();
+ method @Deprecated public boolean getHintAvoidBackgroundClipping();
method public boolean getHintContentIntentLaunchesActivity();
- method public deprecated boolean getHintHideIcon();
- method public deprecated int getHintScreenTimeout();
- method public deprecated boolean getHintShowBackgroundOnly();
- method public deprecated java.util.List<android.app.Notification> getPages();
+ method @Deprecated public boolean getHintHideIcon();
+ method @Deprecated public int getHintScreenTimeout();
+ method @Deprecated public boolean getHintShowBackgroundOnly();
+ method @Deprecated public java.util.List<android.app.Notification> getPages();
method public boolean getStartScrollBottom();
- method public deprecated android.app.Notification.WearableExtender setBackground(android.graphics.Bitmap);
- method public android.app.Notification.WearableExtender setBridgeTag(java.lang.String);
+ method @Deprecated public android.app.Notification.WearableExtender setBackground(android.graphics.Bitmap);
+ method public android.app.Notification.WearableExtender setBridgeTag(String);
method public android.app.Notification.WearableExtender setContentAction(int);
- method public deprecated android.app.Notification.WearableExtender setContentIcon(int);
- method public deprecated android.app.Notification.WearableExtender setContentIconGravity(int);
+ method @Deprecated public android.app.Notification.WearableExtender setContentIcon(int);
+ method @Deprecated public android.app.Notification.WearableExtender setContentIconGravity(int);
method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
- method public deprecated android.app.Notification.WearableExtender setCustomContentHeight(int);
- method public deprecated android.app.Notification.WearableExtender setCustomSizePreset(int);
- method public android.app.Notification.WearableExtender setDismissalId(java.lang.String);
- method public deprecated android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
- method public deprecated android.app.Notification.WearableExtender setGravity(int);
- method public deprecated android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
- method public deprecated android.app.Notification.WearableExtender setHintAvoidBackgroundClipping(boolean);
+ method @Deprecated public android.app.Notification.WearableExtender setCustomContentHeight(int);
+ method @Deprecated public android.app.Notification.WearableExtender setCustomSizePreset(int);
+ method public android.app.Notification.WearableExtender setDismissalId(String);
+ method @Deprecated public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
+ method @Deprecated public android.app.Notification.WearableExtender setGravity(int);
+ method @Deprecated public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
+ method @Deprecated public android.app.Notification.WearableExtender setHintAvoidBackgroundClipping(boolean);
method public android.app.Notification.WearableExtender setHintContentIntentLaunchesActivity(boolean);
- method public deprecated android.app.Notification.WearableExtender setHintHideIcon(boolean);
- method public deprecated android.app.Notification.WearableExtender setHintScreenTimeout(int);
- method public deprecated android.app.Notification.WearableExtender setHintShowBackgroundOnly(boolean);
+ method @Deprecated public android.app.Notification.WearableExtender setHintHideIcon(boolean);
+ method @Deprecated public android.app.Notification.WearableExtender setHintScreenTimeout(int);
+ method @Deprecated public android.app.Notification.WearableExtender setHintShowBackgroundOnly(boolean);
method public android.app.Notification.WearableExtender setStartScrollBottom(boolean);
- field public static final deprecated int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
- field public static final deprecated int SCREEN_TIMEOUT_SHORT = 0; // 0x0
- field public static final deprecated int SIZE_DEFAULT = 0; // 0x0
- field public static final deprecated int SIZE_FULL_SCREEN = 5; // 0x5
- field public static final deprecated int SIZE_LARGE = 4; // 0x4
- field public static final deprecated int SIZE_MEDIUM = 3; // 0x3
- field public static final deprecated int SIZE_SMALL = 2; // 0x2
- field public static final deprecated int SIZE_XSMALL = 1; // 0x1
+ field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
+ field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
+ field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
+ field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
+ field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
+ field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
+ field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
+ field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
}
public final class NotificationChannel implements android.os.Parcelable {
- ctor public NotificationChannel(java.lang.String, java.lang.CharSequence, int);
+ ctor public NotificationChannel(String, CharSequence, int);
+ method public boolean canBubble();
method public boolean canBypassDnd();
- method public boolean canOverlayApps();
method public boolean canShowBadge();
method public int describeContents();
method public void enableLights(boolean);
method public void enableVibration(boolean);
method public android.media.AudioAttributes getAudioAttributes();
- method public java.lang.String getDescription();
- method public java.lang.String getGroup();
- method public java.lang.String getId();
+ method public String getDescription();
+ method public String getGroup();
+ method public String getId();
method public int getImportance();
method public int getLightColor();
method public int getLockscreenVisibility();
- method public java.lang.CharSequence getName();
+ method public CharSequence getName();
method public android.net.Uri getSound();
method public long[] getVibrationPattern();
method public boolean hasUserSetImportance();
- method public void setAllowAppOverlay(boolean);
+ method public void setAllowBubbles(boolean);
method public void setBypassDnd(boolean);
- method public void setDescription(java.lang.String);
- method public void setGroup(java.lang.String);
+ method public void setDescription(String);
+ method public void setGroup(String);
method public void setImportance(int);
method public void setLightColor(int);
method public void setLockscreenVisibility(int);
- method public void setName(java.lang.CharSequence);
+ method public void setName(CharSequence);
method public void setShowBadge(boolean);
method public void setSound(android.net.Uri, android.media.AudioAttributes);
method public void setVibrationPattern(long[]);
@@ -5727,71 +5750,71 @@
method public boolean shouldVibrate();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.NotificationChannel> CREATOR;
- field public static final java.lang.String DEFAULT_CHANNEL_ID = "miscellaneous";
+ field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
}
public final class NotificationChannelGroup implements android.os.Parcelable {
- ctor public NotificationChannelGroup(java.lang.String, java.lang.CharSequence);
+ ctor public NotificationChannelGroup(String, CharSequence);
method public android.app.NotificationChannelGroup clone();
method public int describeContents();
method public java.util.List<android.app.NotificationChannel> getChannels();
- method public java.lang.String getDescription();
- method public java.lang.String getId();
- method public java.lang.CharSequence getName();
+ method public String getDescription();
+ method public String getId();
+ method public CharSequence getName();
method public boolean isBlocked();
- method public void setDescription(java.lang.String);
+ method public void setDescription(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.NotificationChannelGroup> CREATOR;
}
public class NotificationManager {
- method public java.lang.String addAutomaticZenRule(android.app.AutomaticZenRule);
- method public boolean areAppOverlaysAllowed();
+ method public String addAutomaticZenRule(android.app.AutomaticZenRule);
+ method public boolean areBubblesAllowed();
method public boolean areNotificationsEnabled();
- method public boolean canNotifyAsPackage(java.lang.String);
+ method public boolean canNotifyAsPackage(String);
method public void cancel(int);
- method public void cancel(java.lang.String, int);
+ method public void cancel(String, int);
method public void cancelAll();
- method public void createNotificationChannel(android.app.NotificationChannel);
- method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
- method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup>);
- method public void createNotificationChannels(java.util.List<android.app.NotificationChannel>);
- method public void deleteNotificationChannel(java.lang.String);
- method public void deleteNotificationChannelGroup(java.lang.String);
+ method public void createNotificationChannel(@NonNull android.app.NotificationChannel);
+ method public void createNotificationChannelGroup(@NonNull android.app.NotificationChannelGroup);
+ method public void createNotificationChannelGroups(@NonNull java.util.List<android.app.NotificationChannelGroup>);
+ method public void createNotificationChannels(@NonNull java.util.List<android.app.NotificationChannel>);
+ method public void deleteNotificationChannel(String);
+ method public void deleteNotificationChannelGroup(String);
method public android.service.notification.StatusBarNotification[] getActiveNotifications();
- method public android.app.AutomaticZenRule getAutomaticZenRule(java.lang.String);
- method public java.util.Map<java.lang.String, android.app.AutomaticZenRule> getAutomaticZenRules();
+ method public android.app.AutomaticZenRule getAutomaticZenRule(String);
+ method public java.util.Map<java.lang.String,android.app.AutomaticZenRule> getAutomaticZenRules();
method public final int getCurrentInterruptionFilter();
method public int getImportance();
- method public android.app.NotificationChannel getNotificationChannel(java.lang.String);
- method public android.app.NotificationChannelGroup getNotificationChannelGroup(java.lang.String);
+ method public android.app.NotificationChannel getNotificationChannel(String);
+ method public android.app.NotificationChannelGroup getNotificationChannelGroup(String);
method public java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups();
method public java.util.List<android.app.NotificationChannel> getNotificationChannels();
- method public java.lang.String getNotificationDelegate();
+ method @Nullable public String getNotificationDelegate();
method public android.app.NotificationManager.Policy getNotificationPolicy();
method public boolean isNotificationListenerAccessGranted(android.content.ComponentName);
method public boolean isNotificationPolicyAccessGranted();
method public void notify(int, android.app.Notification);
- method public void notify(java.lang.String, int, android.app.Notification);
- method public void notifyAsPackage(java.lang.String, java.lang.String, int, android.app.Notification);
- method public boolean removeAutomaticZenRule(java.lang.String);
+ method public void notify(String, int, android.app.Notification);
+ method public void notifyAsPackage(@NonNull String, @NonNull String, int, android.app.Notification);
+ method public boolean removeAutomaticZenRule(String);
method public void revokeNotificationDelegate();
- method public void setAutomaticZenRuleState(java.lang.String, android.service.notification.Condition);
+ method public void setAutomaticZenRuleState(String, android.service.notification.Condition);
method public final void setInterruptionFilter(int);
- method public void setNotificationDelegate(java.lang.String);
- method public void setNotificationPolicy(android.app.NotificationManager.Policy);
- method public boolean updateAutomaticZenRule(java.lang.String, android.app.AutomaticZenRule);
- field public static final java.lang.String ACTION_APP_BLOCK_STATE_CHANGED = "android.app.action.APP_BLOCK_STATE_CHANGED";
- field public static final java.lang.String ACTION_AUTOMATIC_ZEN_RULE = "android.app.action.AUTOMATIC_ZEN_RULE";
- field public static final java.lang.String ACTION_INTERRUPTION_FILTER_CHANGED = "android.app.action.INTERRUPTION_FILTER_CHANGED";
- field public static final java.lang.String ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED";
- field public static final java.lang.String ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED";
- field public static final java.lang.String ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED = "android.app.action.NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED";
- field public static final java.lang.String ACTION_NOTIFICATION_POLICY_CHANGED = "android.app.action.NOTIFICATION_POLICY_CHANGED";
- field public static final java.lang.String EXTRA_AUTOMATIC_RULE_ID = "android.app.extra.AUTOMATIC_RULE_ID";
- field public static final java.lang.String EXTRA_BLOCKED_STATE = "android.app.extra.BLOCKED_STATE";
- field public static final java.lang.String EXTRA_NOTIFICATION_CHANNEL_GROUP_ID = "android.app.extra.NOTIFICATION_CHANNEL_GROUP_ID";
- field public static final java.lang.String EXTRA_NOTIFICATION_CHANNEL_ID = "android.app.extra.NOTIFICATION_CHANNEL_ID";
+ method public void setNotificationDelegate(@NonNull String);
+ method public void setNotificationPolicy(@NonNull android.app.NotificationManager.Policy);
+ method public boolean updateAutomaticZenRule(String, android.app.AutomaticZenRule);
+ field public static final String ACTION_APP_BLOCK_STATE_CHANGED = "android.app.action.APP_BLOCK_STATE_CHANGED";
+ field public static final String ACTION_AUTOMATIC_ZEN_RULE = "android.app.action.AUTOMATIC_ZEN_RULE";
+ field public static final String ACTION_INTERRUPTION_FILTER_CHANGED = "android.app.action.INTERRUPTION_FILTER_CHANGED";
+ field public static final String ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED";
+ field public static final String ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED";
+ field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED = "android.app.action.NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED";
+ field public static final String ACTION_NOTIFICATION_POLICY_CHANGED = "android.app.action.NOTIFICATION_POLICY_CHANGED";
+ field public static final String EXTRA_AUTOMATIC_RULE_ID = "android.app.extra.AUTOMATIC_RULE_ID";
+ field public static final String EXTRA_BLOCKED_STATE = "android.app.extra.BLOCKED_STATE";
+ field public static final String EXTRA_NOTIFICATION_CHANNEL_GROUP_ID = "android.app.extra.NOTIFICATION_CHANNEL_GROUP_ID";
+ field public static final String EXTRA_NOTIFICATION_CHANNEL_ID = "android.app.extra.NOTIFICATION_CHANNEL_ID";
field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
field public static final int IMPORTANCE_HIGH = 4; // 0x4
field public static final int IMPORTANCE_LOW = 2; // 0x2
@@ -5804,17 +5827,17 @@
field public static final int INTERRUPTION_FILTER_NONE = 3; // 0x3
field public static final int INTERRUPTION_FILTER_PRIORITY = 2; // 0x2
field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0
- field public static final java.lang.String META_DATA_AUTOMATIC_RULE_TYPE = "android.app.automatic.ruleType";
- field public static final java.lang.String META_DATA_RULE_INSTANCE_LIMIT = "android.app.zen.automatic.ruleInstanceLimit";
+ field public static final String META_DATA_AUTOMATIC_RULE_TYPE = "android.app.automatic.ruleType";
+ field public static final String META_DATA_RULE_INSTANCE_LIMIT = "android.app.zen.automatic.ruleInstanceLimit";
}
public static class NotificationManager.Policy implements android.os.Parcelable {
ctor public NotificationManager.Policy(int, int, int);
ctor public NotificationManager.Policy(int, int, int, int);
method public int describeContents();
- method public static java.lang.String priorityCategoriesToString(int);
- method public static java.lang.String prioritySendersToString(int);
- method public static java.lang.String suppressedEffectsToString(int);
+ method public static String priorityCategoriesToString(int);
+ method public static String prioritySendersToString(int);
+ method public static String suppressedEffectsToString(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.NotificationManager.Policy> CREATOR;
field public static final int PRIORITY_CATEGORY_ALARMS = 32; // 0x20
@@ -5834,8 +5857,8 @@
field public static final int SUPPRESSED_EFFECT_LIGHTS = 8; // 0x8
field public static final int SUPPRESSED_EFFECT_NOTIFICATION_LIST = 256; // 0x100
field public static final int SUPPRESSED_EFFECT_PEEK = 16; // 0x10
- field public static final deprecated int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
- field public static final deprecated int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
+ field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
+ field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
field public static final int SUPPRESSED_EFFECT_STATUS_BAR = 32; // 0x20
field public final int priorityCallSenders;
field public final int priorityCategories;
@@ -5846,27 +5869,27 @@
public final class PendingIntent implements android.os.Parcelable {
method public void cancel();
method public int describeContents();
- method public static android.app.PendingIntent getActivities(android.content.Context, int, android.content.Intent[], int);
- method public static android.app.PendingIntent getActivities(android.content.Context, int, android.content.Intent[], int, android.os.Bundle);
+ method public static android.app.PendingIntent getActivities(android.content.Context, int, @NonNull android.content.Intent[], int);
+ method public static android.app.PendingIntent getActivities(android.content.Context, int, @NonNull android.content.Intent[], int, @Nullable android.os.Bundle);
method public static android.app.PendingIntent getActivity(android.content.Context, int, android.content.Intent, int);
- method public static android.app.PendingIntent getActivity(android.content.Context, int, android.content.Intent, int, android.os.Bundle);
+ method public static android.app.PendingIntent getActivity(android.content.Context, int, @NonNull android.content.Intent, int, @Nullable android.os.Bundle);
method public static android.app.PendingIntent getBroadcast(android.content.Context, int, android.content.Intent, int);
- method public java.lang.String getCreatorPackage();
+ method @Nullable public String getCreatorPackage();
method public int getCreatorUid();
- method public android.os.UserHandle getCreatorUserHandle();
- method public static android.app.PendingIntent getForegroundService(android.content.Context, int, android.content.Intent, int);
+ method @Nullable public android.os.UserHandle getCreatorUserHandle();
+ method public static android.app.PendingIntent getForegroundService(android.content.Context, int, @NonNull android.content.Intent, int);
method public android.content.IntentSender getIntentSender();
- method public static android.app.PendingIntent getService(android.content.Context, int, android.content.Intent, int);
- method public deprecated java.lang.String getTargetPackage();
- method public static android.app.PendingIntent readPendingIntentOrNullFromParcel(android.os.Parcel);
+ method public static android.app.PendingIntent getService(android.content.Context, int, @NonNull android.content.Intent, int);
+ method @Deprecated public String getTargetPackage();
+ method @Nullable public static android.app.PendingIntent readPendingIntentOrNullFromParcel(@NonNull android.os.Parcel);
method public void send() throws android.app.PendingIntent.CanceledException;
method public void send(int) throws android.app.PendingIntent.CanceledException;
- method public void send(android.content.Context, int, android.content.Intent) throws android.app.PendingIntent.CanceledException;
- method public void send(int, android.app.PendingIntent.OnFinished, android.os.Handler) throws android.app.PendingIntent.CanceledException;
- method public void send(android.content.Context, int, android.content.Intent, android.app.PendingIntent.OnFinished, android.os.Handler) throws android.app.PendingIntent.CanceledException;
- method public void send(android.content.Context, int, android.content.Intent, android.app.PendingIntent.OnFinished, android.os.Handler, java.lang.String) throws android.app.PendingIntent.CanceledException;
- method public void send(android.content.Context, int, android.content.Intent, android.app.PendingIntent.OnFinished, android.os.Handler, java.lang.String, android.os.Bundle) throws android.app.PendingIntent.CanceledException;
- method public static void writePendingIntentOrNullToParcel(android.app.PendingIntent, android.os.Parcel);
+ method public void send(android.content.Context, int, @Nullable android.content.Intent) throws android.app.PendingIntent.CanceledException;
+ method public void send(int, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler) throws android.app.PendingIntent.CanceledException;
+ method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler) throws android.app.PendingIntent.CanceledException;
+ method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler, @Nullable String) throws android.app.PendingIntent.CanceledException;
+ method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler, @Nullable String, @Nullable android.os.Bundle) throws android.app.PendingIntent.CanceledException;
+ method public static void writePendingIntentOrNullToParcel(@Nullable android.app.PendingIntent, @NonNull android.os.Parcel);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.PendingIntent> CREATOR;
field public static final int FLAG_CANCEL_CURRENT = 268435456; // 0x10000000
@@ -5878,20 +5901,20 @@
public static class PendingIntent.CanceledException extends android.util.AndroidException {
ctor public PendingIntent.CanceledException();
- ctor public PendingIntent.CanceledException(java.lang.String);
- ctor public PendingIntent.CanceledException(java.lang.Exception);
+ ctor public PendingIntent.CanceledException(String);
+ ctor public PendingIntent.CanceledException(Exception);
}
- public static abstract interface PendingIntent.OnFinished {
- method public abstract void onSendFinished(android.app.PendingIntent, android.content.Intent, int, java.lang.String, android.os.Bundle);
+ public static interface PendingIntent.OnFinished {
+ method public void onSendFinished(android.app.PendingIntent, android.content.Intent, int, String, android.os.Bundle);
}
public final class Person implements android.os.Parcelable {
method public int describeContents();
- method public android.graphics.drawable.Icon getIcon();
- method public java.lang.String getKey();
- method public java.lang.CharSequence getName();
- method public java.lang.String getUri();
+ method @Nullable public android.graphics.drawable.Icon getIcon();
+ method @Nullable public String getKey();
+ method @Nullable public CharSequence getName();
+ method @Nullable public String getUri();
method public boolean isBot();
method public boolean isImportant();
method public android.app.Person.Builder toBuilder();
@@ -5901,13 +5924,13 @@
public static class Person.Builder {
ctor public Person.Builder();
- method public android.app.Person build();
- method public android.app.Person.Builder setBot(boolean);
- method public android.app.Person.Builder setIcon(android.graphics.drawable.Icon);
- method public android.app.Person.Builder setImportant(boolean);
- method public android.app.Person.Builder setKey(java.lang.String);
- method public android.app.Person.Builder setName(java.lang.CharSequence);
- method public android.app.Person.Builder setUri(java.lang.String);
+ method @NonNull public android.app.Person build();
+ method @NonNull public android.app.Person.Builder setBot(boolean);
+ method @NonNull public android.app.Person.Builder setIcon(@Nullable android.graphics.drawable.Icon);
+ method @NonNull public android.app.Person.Builder setImportant(boolean);
+ method @NonNull public android.app.Person.Builder setKey(@Nullable String);
+ method @NonNull public android.app.Person.Builder setName(@Nullable CharSequence);
+ method @NonNull public android.app.Person.Builder setUri(@Nullable String);
}
public final class PictureInPictureParams implements android.os.Parcelable {
@@ -5933,51 +5956,51 @@
method public void onDisplayRemoved();
}
- public deprecated class ProgressDialog extends android.app.AlertDialog {
- ctor public ProgressDialog(android.content.Context);
- ctor public ProgressDialog(android.content.Context, int);
- method public int getMax();
- method public int getProgress();
- method public int getSecondaryProgress();
- method public void incrementProgressBy(int);
- method public void incrementSecondaryProgressBy(int);
- method public boolean isIndeterminate();
- method public void onStart();
- method public void setIndeterminate(boolean);
- method public void setIndeterminateDrawable(android.graphics.drawable.Drawable);
- method public void setMax(int);
- method public void setProgress(int);
- method public void setProgressDrawable(android.graphics.drawable.Drawable);
- method public void setProgressNumberFormat(java.lang.String);
- method public void setProgressPercentFormat(java.text.NumberFormat);
- method public void setProgressStyle(int);
- method public void setSecondaryProgress(int);
- method public static android.app.ProgressDialog show(android.content.Context, java.lang.CharSequence, java.lang.CharSequence);
- method public static android.app.ProgressDialog show(android.content.Context, java.lang.CharSequence, java.lang.CharSequence, boolean);
- method public static android.app.ProgressDialog show(android.content.Context, java.lang.CharSequence, java.lang.CharSequence, boolean, boolean);
- method public static android.app.ProgressDialog show(android.content.Context, java.lang.CharSequence, java.lang.CharSequence, boolean, boolean, android.content.DialogInterface.OnCancelListener);
- field public static final int STYLE_HORIZONTAL = 1; // 0x1
- field public static final int STYLE_SPINNER = 0; // 0x0
+ @Deprecated public class ProgressDialog extends android.app.AlertDialog {
+ ctor @Deprecated public ProgressDialog(android.content.Context);
+ ctor @Deprecated public ProgressDialog(android.content.Context, int);
+ method @Deprecated public int getMax();
+ method @Deprecated public int getProgress();
+ method @Deprecated public int getSecondaryProgress();
+ method @Deprecated public void incrementProgressBy(int);
+ method @Deprecated public void incrementSecondaryProgressBy(int);
+ method @Deprecated public boolean isIndeterminate();
+ method @Deprecated public void onStart();
+ method @Deprecated public void setIndeterminate(boolean);
+ method @Deprecated public void setIndeterminateDrawable(android.graphics.drawable.Drawable);
+ method @Deprecated public void setMax(int);
+ method @Deprecated public void setProgress(int);
+ method @Deprecated public void setProgressDrawable(android.graphics.drawable.Drawable);
+ method @Deprecated public void setProgressNumberFormat(String);
+ method @Deprecated public void setProgressPercentFormat(java.text.NumberFormat);
+ method @Deprecated public void setProgressStyle(int);
+ method @Deprecated public void setSecondaryProgress(int);
+ method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence);
+ method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean);
+ method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean, boolean);
+ method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean, boolean, android.content.DialogInterface.OnCancelListener);
+ field @Deprecated public static final int STYLE_HORIZONTAL = 1; // 0x1
+ field @Deprecated public static final int STYLE_SPINNER = 0; // 0x0
}
public final class RecoverableSecurityException extends java.lang.SecurityException implements android.os.Parcelable {
- ctor public RecoverableSecurityException(java.lang.Throwable, java.lang.CharSequence, android.app.RemoteAction);
+ ctor public RecoverableSecurityException(@NonNull Throwable, @NonNull CharSequence, @NonNull android.app.RemoteAction);
method public int describeContents();
- method public android.app.RemoteAction getUserAction();
- method public java.lang.CharSequence getUserMessage();
+ method @NonNull public android.app.RemoteAction getUserAction();
+ method @NonNull public CharSequence getUserMessage();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.RecoverableSecurityException> CREATOR;
}
public final class RemoteAction implements android.os.Parcelable {
- ctor public RemoteAction(android.graphics.drawable.Icon, java.lang.CharSequence, java.lang.CharSequence, android.app.PendingIntent);
+ ctor public RemoteAction(@NonNull android.graphics.drawable.Icon, @NonNull CharSequence, @NonNull CharSequence, @NonNull android.app.PendingIntent);
method public android.app.RemoteAction clone();
method public int describeContents();
- method public void dump(java.lang.String, java.io.PrintWriter);
- method public android.app.PendingIntent getActionIntent();
- method public java.lang.CharSequence getContentDescription();
- method public android.graphics.drawable.Icon getIcon();
- method public java.lang.CharSequence getTitle();
+ method public void dump(String, java.io.PrintWriter);
+ method @NonNull public android.app.PendingIntent getActionIntent();
+ method @NonNull public CharSequence getContentDescription();
+ method @NonNull public android.graphics.drawable.Icon getIcon();
+ method @NonNull public CharSequence getTitle();
method public boolean isEnabled();
method public void setEnabled(boolean);
method public void setShouldShowIcon(boolean);
@@ -5987,17 +6010,17 @@
}
public final class RemoteInput implements android.os.Parcelable {
- method public static void addDataResultToIntent(android.app.RemoteInput, android.content.Intent, java.util.Map<java.lang.String, android.net.Uri>);
+ method public static void addDataResultToIntent(android.app.RemoteInput, android.content.Intent, java.util.Map<java.lang.String,android.net.Uri>);
method public static void addResultsToIntent(android.app.RemoteInput[], android.content.Intent, android.os.Bundle);
method public int describeContents();
method public boolean getAllowFreeFormInput();
method public java.util.Set<java.lang.String> getAllowedDataTypes();
- method public java.lang.CharSequence[] getChoices();
- method public static java.util.Map<java.lang.String, android.net.Uri> getDataResultsFromIntent(android.content.Intent, java.lang.String);
+ method public CharSequence[] getChoices();
+ method public static java.util.Map<java.lang.String,android.net.Uri> getDataResultsFromIntent(android.content.Intent, String);
method public int getEditChoicesBeforeSending();
method public android.os.Bundle getExtras();
- method public java.lang.CharSequence getLabel();
- method public java.lang.String getResultKey();
+ method public CharSequence getLabel();
+ method public String getResultKey();
method public static android.os.Bundle getResultsFromIntent(android.content.Intent);
method public static int getResultsSource(android.content.Intent);
method public boolean isDataOnly();
@@ -6007,95 +6030,95 @@
field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
- field public static final java.lang.String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
- field public static final java.lang.String RESULTS_CLIP_LABEL = "android.remoteinput.results";
+ field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
+ field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
field public static final int SOURCE_CHOICE = 1; // 0x1
field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
}
public static final class RemoteInput.Builder {
- ctor public RemoteInput.Builder(java.lang.String);
- method public android.app.RemoteInput.Builder addExtras(android.os.Bundle);
- method public android.app.RemoteInput build();
- method public android.os.Bundle getExtras();
- method public android.app.RemoteInput.Builder setAllowDataType(java.lang.String, boolean);
- method public android.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
- method public android.app.RemoteInput.Builder setChoices(java.lang.CharSequence[]);
- method public android.app.RemoteInput.Builder setEditChoicesBeforeSending(int);
- method public android.app.RemoteInput.Builder setLabel(java.lang.CharSequence);
+ ctor public RemoteInput.Builder(@NonNull String);
+ method @NonNull public android.app.RemoteInput.Builder addExtras(@NonNull android.os.Bundle);
+ method @NonNull public android.app.RemoteInput build();
+ method @NonNull public android.os.Bundle getExtras();
+ method @NonNull public android.app.RemoteInput.Builder setAllowDataType(@NonNull String, boolean);
+ method @NonNull public android.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
+ method @NonNull public android.app.RemoteInput.Builder setChoices(@Nullable CharSequence[]);
+ method @NonNull public android.app.RemoteInput.Builder setEditChoicesBeforeSending(int);
+ method @NonNull public android.app.RemoteInput.Builder setLabel(@Nullable CharSequence);
}
public class SearchManager implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
method public android.content.ComponentName getGlobalSearchActivity();
method public android.app.SearchableInfo getSearchableInfo(android.content.ComponentName);
method public java.util.List<android.app.SearchableInfo> getSearchablesInGlobalSearch();
- method public deprecated void onCancel(android.content.DialogInterface);
- method public deprecated void onDismiss(android.content.DialogInterface);
+ method @Deprecated public void onCancel(android.content.DialogInterface);
+ method @Deprecated public void onDismiss(android.content.DialogInterface);
method public void setOnCancelListener(android.app.SearchManager.OnCancelListener);
method public void setOnDismissListener(android.app.SearchManager.OnDismissListener);
- method public void startSearch(java.lang.String, boolean, android.content.ComponentName, android.os.Bundle, boolean);
+ method public void startSearch(String, boolean, android.content.ComponentName, android.os.Bundle, boolean);
method public void stopSearch();
- method public void triggerSearch(java.lang.String, android.content.ComponentName, android.os.Bundle);
- field public static final java.lang.String ACTION_KEY = "action_key";
- field public static final java.lang.String ACTION_MSG = "action_msg";
- field public static final java.lang.String APP_DATA = "app_data";
- field public static final java.lang.String CURSOR_EXTRA_KEY_IN_PROGRESS = "in_progress";
- field public static final java.lang.String EXTRA_DATA_KEY = "intent_extra_data_key";
- field public static final java.lang.String EXTRA_NEW_SEARCH = "new_search";
- field public static final java.lang.String EXTRA_SELECT_QUERY = "select_query";
- field public static final java.lang.String EXTRA_WEB_SEARCH_PENDINGINTENT = "web_search_pendingintent";
+ method public void triggerSearch(String, android.content.ComponentName, android.os.Bundle);
+ field public static final String ACTION_KEY = "action_key";
+ field public static final String ACTION_MSG = "action_msg";
+ field public static final String APP_DATA = "app_data";
+ field public static final String CURSOR_EXTRA_KEY_IN_PROGRESS = "in_progress";
+ field public static final String EXTRA_DATA_KEY = "intent_extra_data_key";
+ field public static final String EXTRA_NEW_SEARCH = "new_search";
+ field public static final String EXTRA_SELECT_QUERY = "select_query";
+ field public static final String EXTRA_WEB_SEARCH_PENDINGINTENT = "web_search_pendingintent";
field public static final int FLAG_QUERY_REFINEMENT = 1; // 0x1
- field public static final java.lang.String INTENT_ACTION_GLOBAL_SEARCH = "android.search.action.GLOBAL_SEARCH";
- field public static final java.lang.String INTENT_ACTION_SEARCHABLES_CHANGED = "android.search.action.SEARCHABLES_CHANGED";
- field public static final java.lang.String INTENT_ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
- field public static final java.lang.String INTENT_ACTION_SEARCH_SETTINGS_CHANGED = "android.search.action.SETTINGS_CHANGED";
- field public static final java.lang.String INTENT_ACTION_WEB_SEARCH_SETTINGS = "android.search.action.WEB_SEARCH_SETTINGS";
- field public static final java.lang.String INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED = "android.search.action.GLOBAL_SEARCH_ACTIVITY_CHANGED";
+ field public static final String INTENT_ACTION_GLOBAL_SEARCH = "android.search.action.GLOBAL_SEARCH";
+ field public static final String INTENT_ACTION_SEARCHABLES_CHANGED = "android.search.action.SEARCHABLES_CHANGED";
+ field public static final String INTENT_ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
+ field public static final String INTENT_ACTION_SEARCH_SETTINGS_CHANGED = "android.search.action.SETTINGS_CHANGED";
+ field public static final String INTENT_ACTION_WEB_SEARCH_SETTINGS = "android.search.action.WEB_SEARCH_SETTINGS";
+ field public static final String INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED = "android.search.action.GLOBAL_SEARCH_ACTIVITY_CHANGED";
field public static final char MENU_KEY = 115; // 0x0073 's'
field public static final int MENU_KEYCODE = 47; // 0x2f
- field public static final java.lang.String QUERY = "query";
- field public static final java.lang.String SHORTCUT_MIME_TYPE = "vnd.android.cursor.item/vnd.android.search.suggest";
- field public static final java.lang.String SUGGEST_COLUMN_AUDIO_CHANNEL_CONFIG = "suggest_audio_channel_config";
- field public static final java.lang.String SUGGEST_COLUMN_CONTENT_TYPE = "suggest_content_type";
- field public static final java.lang.String SUGGEST_COLUMN_DURATION = "suggest_duration";
- field public static final java.lang.String SUGGEST_COLUMN_FLAGS = "suggest_flags";
- field public static final java.lang.String SUGGEST_COLUMN_FORMAT = "suggest_format";
- field public static final java.lang.String SUGGEST_COLUMN_ICON_1 = "suggest_icon_1";
- field public static final java.lang.String SUGGEST_COLUMN_ICON_2 = "suggest_icon_2";
- field public static final java.lang.String SUGGEST_COLUMN_INTENT_ACTION = "suggest_intent_action";
- field public static final java.lang.String SUGGEST_COLUMN_INTENT_DATA = "suggest_intent_data";
- field public static final java.lang.String SUGGEST_COLUMN_INTENT_DATA_ID = "suggest_intent_data_id";
- field public static final java.lang.String SUGGEST_COLUMN_INTENT_EXTRA_DATA = "suggest_intent_extra_data";
- field public static final java.lang.String SUGGEST_COLUMN_IS_LIVE = "suggest_is_live";
- field public static final java.lang.String SUGGEST_COLUMN_LAST_ACCESS_HINT = "suggest_last_access_hint";
- field public static final java.lang.String SUGGEST_COLUMN_PRODUCTION_YEAR = "suggest_production_year";
- field public static final java.lang.String SUGGEST_COLUMN_PURCHASE_PRICE = "suggest_purchase_price";
- field public static final java.lang.String SUGGEST_COLUMN_QUERY = "suggest_intent_query";
- field public static final java.lang.String SUGGEST_COLUMN_RATING_SCORE = "suggest_rating_score";
- field public static final java.lang.String SUGGEST_COLUMN_RATING_STYLE = "suggest_rating_style";
- field public static final java.lang.String SUGGEST_COLUMN_RENTAL_PRICE = "suggest_rental_price";
- field public static final java.lang.String SUGGEST_COLUMN_RESULT_CARD_IMAGE = "suggest_result_card_image";
- field public static final java.lang.String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id";
- field public static final java.lang.String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING = "suggest_spinner_while_refreshing";
- field public static final java.lang.String SUGGEST_COLUMN_TEXT_1 = "suggest_text_1";
- field public static final java.lang.String SUGGEST_COLUMN_TEXT_2 = "suggest_text_2";
- field public static final java.lang.String SUGGEST_COLUMN_TEXT_2_URL = "suggest_text_2_url";
- field public static final java.lang.String SUGGEST_COLUMN_VIDEO_HEIGHT = "suggest_video_height";
- field public static final java.lang.String SUGGEST_COLUMN_VIDEO_WIDTH = "suggest_video_width";
- field public static final java.lang.String SUGGEST_MIME_TYPE = "vnd.android.cursor.dir/vnd.android.search.suggest";
- field public static final java.lang.String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1";
- field public static final java.lang.String SUGGEST_PARAMETER_LIMIT = "limit";
- field public static final java.lang.String SUGGEST_URI_PATH_QUERY = "search_suggest_query";
- field public static final java.lang.String SUGGEST_URI_PATH_SHORTCUT = "search_suggest_shortcut";
- field public static final java.lang.String USER_QUERY = "user_query";
+ field public static final String QUERY = "query";
+ field public static final String SHORTCUT_MIME_TYPE = "vnd.android.cursor.item/vnd.android.search.suggest";
+ field public static final String SUGGEST_COLUMN_AUDIO_CHANNEL_CONFIG = "suggest_audio_channel_config";
+ field public static final String SUGGEST_COLUMN_CONTENT_TYPE = "suggest_content_type";
+ field public static final String SUGGEST_COLUMN_DURATION = "suggest_duration";
+ field public static final String SUGGEST_COLUMN_FLAGS = "suggest_flags";
+ field public static final String SUGGEST_COLUMN_FORMAT = "suggest_format";
+ field public static final String SUGGEST_COLUMN_ICON_1 = "suggest_icon_1";
+ field public static final String SUGGEST_COLUMN_ICON_2 = "suggest_icon_2";
+ field public static final String SUGGEST_COLUMN_INTENT_ACTION = "suggest_intent_action";
+ field public static final String SUGGEST_COLUMN_INTENT_DATA = "suggest_intent_data";
+ field public static final String SUGGEST_COLUMN_INTENT_DATA_ID = "suggest_intent_data_id";
+ field public static final String SUGGEST_COLUMN_INTENT_EXTRA_DATA = "suggest_intent_extra_data";
+ field public static final String SUGGEST_COLUMN_IS_LIVE = "suggest_is_live";
+ field public static final String SUGGEST_COLUMN_LAST_ACCESS_HINT = "suggest_last_access_hint";
+ field public static final String SUGGEST_COLUMN_PRODUCTION_YEAR = "suggest_production_year";
+ field public static final String SUGGEST_COLUMN_PURCHASE_PRICE = "suggest_purchase_price";
+ field public static final String SUGGEST_COLUMN_QUERY = "suggest_intent_query";
+ field public static final String SUGGEST_COLUMN_RATING_SCORE = "suggest_rating_score";
+ field public static final String SUGGEST_COLUMN_RATING_STYLE = "suggest_rating_style";
+ field public static final String SUGGEST_COLUMN_RENTAL_PRICE = "suggest_rental_price";
+ field public static final String SUGGEST_COLUMN_RESULT_CARD_IMAGE = "suggest_result_card_image";
+ field public static final String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id";
+ field public static final String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING = "suggest_spinner_while_refreshing";
+ field public static final String SUGGEST_COLUMN_TEXT_1 = "suggest_text_1";
+ field public static final String SUGGEST_COLUMN_TEXT_2 = "suggest_text_2";
+ field public static final String SUGGEST_COLUMN_TEXT_2_URL = "suggest_text_2_url";
+ field public static final String SUGGEST_COLUMN_VIDEO_HEIGHT = "suggest_video_height";
+ field public static final String SUGGEST_COLUMN_VIDEO_WIDTH = "suggest_video_width";
+ field public static final String SUGGEST_MIME_TYPE = "vnd.android.cursor.dir/vnd.android.search.suggest";
+ field public static final String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1";
+ field public static final String SUGGEST_PARAMETER_LIMIT = "limit";
+ field public static final String SUGGEST_URI_PATH_QUERY = "search_suggest_query";
+ field public static final String SUGGEST_URI_PATH_SHORTCUT = "search_suggest_shortcut";
+ field public static final String USER_QUERY = "user_query";
}
- public static abstract interface SearchManager.OnCancelListener {
- method public abstract void onCancel();
+ public static interface SearchManager.OnCancelListener {
+ method public void onCancel();
}
- public static abstract interface SearchManager.OnDismissListener {
- method public abstract void onDismiss();
+ public static interface SearchManager.OnDismissListener {
+ method public void onDismiss();
}
public final class SearchableInfo implements android.os.Parcelable {
@@ -6106,17 +6129,17 @@
method public int getInputType();
method public android.content.ComponentName getSearchActivity();
method public int getSettingsDescriptionId();
- method public java.lang.String getSuggestAuthority();
- method public java.lang.String getSuggestIntentAction();
- method public java.lang.String getSuggestIntentData();
- method public java.lang.String getSuggestPackage();
- method public java.lang.String getSuggestPath();
- method public java.lang.String getSuggestSelection();
+ method public String getSuggestAuthority();
+ method public String getSuggestIntentAction();
+ method public String getSuggestIntentData();
+ method public String getSuggestPackage();
+ method public String getSuggestPath();
+ method public String getSuggestSelection();
method public int getSuggestThreshold();
- method public int getVoiceLanguageId();
- method public int getVoiceLanguageModeId();
+ method @StringRes public int getVoiceLanguageId();
+ method @StringRes public int getVoiceLanguageModeId();
method public int getVoiceMaxResults();
- method public int getVoicePromptTextId();
+ method @StringRes public int getVoicePromptTextId();
method public boolean getVoiceSearchEnabled();
method public boolean getVoiceSearchLaunchRecognizer();
method public boolean getVoiceSearchLaunchWebSearch();
@@ -6130,15 +6153,15 @@
public abstract class Service extends android.content.ContextWrapper implements android.content.ComponentCallbacks2 {
ctor public Service();
- method protected void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
+ method protected void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
method public final android.app.Application getApplication();
- method public abstract android.os.IBinder onBind(android.content.Intent);
+ method @Nullable public abstract android.os.IBinder onBind(android.content.Intent);
method public void onConfigurationChanged(android.content.res.Configuration);
method public void onCreate();
method public void onDestroy();
method public void onLowMemory();
method public void onRebind(android.content.Intent);
- method public deprecated void onStart(android.content.Intent, int);
+ method @Deprecated public void onStart(android.content.Intent, int);
method public int onStartCommand(android.content.Intent, int, int);
method public void onTaskRemoved(android.content.Intent);
method public void onTrimMemory(int);
@@ -6164,15 +6187,15 @@
ctor public SharedElementCallback();
method public android.os.Parcelable onCaptureSharedElementSnapshot(android.view.View, android.graphics.Matrix, android.graphics.RectF);
method public android.view.View onCreateSnapshotView(android.content.Context, android.os.Parcelable);
- method public void onMapSharedElements(java.util.List<java.lang.String>, java.util.Map<java.lang.String, android.view.View>);
+ method public void onMapSharedElements(java.util.List<java.lang.String>, java.util.Map<java.lang.String,android.view.View>);
method public void onRejectSharedElements(java.util.List<android.view.View>);
method public void onSharedElementEnd(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
method public void onSharedElementStart(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
method public void onSharedElementsArrived(java.util.List<java.lang.String>, java.util.List<android.view.View>, android.app.SharedElementCallback.OnSharedElementsReadyListener);
}
- public static abstract interface SharedElementCallback.OnSharedElementsReadyListener {
- method public abstract void onSharedElementsReady();
+ public static interface SharedElementCallback.OnSharedElementsReadyListener {
+ method public void onSharedElementsReady();
}
public class SmsAppService extends android.app.Service {
@@ -6180,12 +6203,12 @@
method public final android.os.IBinder onBind(android.content.Intent);
}
- public deprecated class TabActivity extends android.app.ActivityGroup {
- ctor public TabActivity();
- method public android.widget.TabHost getTabHost();
- method public android.widget.TabWidget getTabWidget();
- method public void setDefaultTab(java.lang.String);
- method public void setDefaultTab(int);
+ @Deprecated public class TabActivity extends android.app.ActivityGroup {
+ ctor @Deprecated public TabActivity();
+ method @Deprecated public android.widget.TabHost getTabHost();
+ method @Deprecated public android.widget.TabWidget getTabWidget();
+ method @Deprecated public void setDefaultTab(String);
+ method @Deprecated public void setDefaultTab(int);
}
public class TaskInfo {
@@ -6203,12 +6226,12 @@
method public android.app.TaskStackBuilder addNextIntent(android.content.Intent);
method public android.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
method public android.app.TaskStackBuilder addParentStack(android.app.Activity);
- method public android.app.TaskStackBuilder addParentStack(java.lang.Class<?>);
+ method public android.app.TaskStackBuilder addParentStack(Class<?>);
method public android.app.TaskStackBuilder addParentStack(android.content.ComponentName);
method public static android.app.TaskStackBuilder create(android.content.Context);
method public android.content.Intent editIntentAt(int);
method public int getIntentCount();
- method public android.content.Intent[] getIntents();
+ method @NonNull public android.content.Intent[] getIntents();
method public android.app.PendingIntent getPendingIntent(int, int);
method public android.app.PendingIntent getPendingIntent(int, int, android.os.Bundle);
method public void startActivities();
@@ -6223,8 +6246,8 @@
method public void updateTime(int, int);
}
- public static abstract interface TimePickerDialog.OnTimeSetListener {
- method public abstract void onTimeSet(android.widget.TimePicker, int, int);
+ public static interface TimePickerDialog.OnTimeSetListener {
+ method public void onTimeSet(android.widget.TimePicker, int, int);
}
public final class UiAutomation {
@@ -6233,20 +6256,20 @@
method public void clearWindowAnimationFrameStats();
method public boolean clearWindowContentFrameStats(int);
method public void dropShellPermissionIdentity();
- method public android.view.accessibility.AccessibilityEvent executeAndWaitForEvent(java.lang.Runnable, android.app.UiAutomation.AccessibilityEventFilter, long) throws java.util.concurrent.TimeoutException;
- method public android.os.ParcelFileDescriptor executeShellCommand(java.lang.String);
+ method public android.view.accessibility.AccessibilityEvent executeAndWaitForEvent(Runnable, android.app.UiAutomation.AccessibilityEventFilter, long) throws java.util.concurrent.TimeoutException;
+ method public android.os.ParcelFileDescriptor executeShellCommand(String);
method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
method public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
method public android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
method public android.view.WindowAnimationFrameStats getWindowAnimationFrameStats();
method public android.view.WindowContentFrameStats getWindowContentFrameStats(int);
method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows();
- method public void grantRuntimePermission(java.lang.String, java.lang.String);
- method public void grantRuntimePermissionAsUser(java.lang.String, java.lang.String, android.os.UserHandle);
+ method public void grantRuntimePermission(String, String);
+ method public void grantRuntimePermissionAsUser(String, String, android.os.UserHandle);
method public boolean injectInputEvent(android.view.InputEvent, boolean);
method public boolean performGlobalAction(int);
- method public void revokeRuntimePermission(java.lang.String, java.lang.String);
- method public void revokeRuntimePermissionAsUser(java.lang.String, java.lang.String, android.os.UserHandle);
+ method public void revokeRuntimePermission(String, String);
+ method public void revokeRuntimePermissionAsUser(String, String, android.os.UserHandle);
method public void setOnAccessibilityEventListener(android.app.UiAutomation.OnAccessibilityEventListener);
method public boolean setRotation(int);
method public void setRunAsMonkey(boolean);
@@ -6262,12 +6285,12 @@
field public static final int ROTATION_UNFREEZE = -2; // 0xfffffffe
}
- public static abstract interface UiAutomation.AccessibilityEventFilter {
- method public abstract boolean accept(android.view.accessibility.AccessibilityEvent);
+ public static interface UiAutomation.AccessibilityEventFilter {
+ method public boolean accept(android.view.accessibility.AccessibilityEvent);
}
- public static abstract interface UiAutomation.OnAccessibilityEventListener {
- method public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+ public static interface UiAutomation.OnAccessibilityEventListener {
+ method public void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
}
public class UiModeManager {
@@ -6276,10 +6299,10 @@
method public int getCurrentModeType();
method public int getNightMode();
method public void setNightMode(int);
- field public static java.lang.String ACTION_ENTER_CAR_MODE;
- field public static java.lang.String ACTION_ENTER_DESK_MODE;
- field public static java.lang.String ACTION_EXIT_CAR_MODE;
- field public static java.lang.String ACTION_EXIT_DESK_MODE;
+ field public static String ACTION_ENTER_CAR_MODE;
+ field public static String ACTION_ENTER_DESK_MODE;
+ field public static String ACTION_EXIT_CAR_MODE;
+ field public static String ACTION_EXIT_DESK_MODE;
field public static final int DISABLE_CAR_MODE_GO_HOME = 1; // 0x1
field public static final int ENABLE_CAR_MODE_ALLOW_SLEEP = 2; // 0x2
field public static final int ENABLE_CAR_MODE_GO_CAR_HOME = 1; // 0x1
@@ -6289,68 +6312,68 @@
}
public final class VoiceInteractor {
- method public android.app.VoiceInteractor.Request getActiveRequest(java.lang.String);
+ method public android.app.VoiceInteractor.Request getActiveRequest(String);
method public android.app.VoiceInteractor.Request[] getActiveRequests();
method public boolean submitRequest(android.app.VoiceInteractor.Request);
- method public boolean submitRequest(android.app.VoiceInteractor.Request, java.lang.String);
- method public boolean[] supportsCommands(java.lang.String[]);
+ method public boolean submitRequest(android.app.VoiceInteractor.Request, String);
+ method public boolean[] supportsCommands(String[]);
}
public static class VoiceInteractor.AbortVoiceRequest extends android.app.VoiceInteractor.Request {
- ctor public VoiceInteractor.AbortVoiceRequest(android.app.VoiceInteractor.Prompt, android.os.Bundle);
+ ctor public VoiceInteractor.AbortVoiceRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
method public void onAbortResult(android.os.Bundle);
}
public static class VoiceInteractor.CommandRequest extends android.app.VoiceInteractor.Request {
- ctor public VoiceInteractor.CommandRequest(java.lang.String, android.os.Bundle);
+ ctor public VoiceInteractor.CommandRequest(String, android.os.Bundle);
method public void onCommandResult(boolean, android.os.Bundle);
}
public static class VoiceInteractor.CompleteVoiceRequest extends android.app.VoiceInteractor.Request {
- ctor public VoiceInteractor.CompleteVoiceRequest(android.app.VoiceInteractor.Prompt, android.os.Bundle);
+ ctor public VoiceInteractor.CompleteVoiceRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
method public void onCompleteResult(android.os.Bundle);
}
public static class VoiceInteractor.ConfirmationRequest extends android.app.VoiceInteractor.Request {
- ctor public VoiceInteractor.ConfirmationRequest(android.app.VoiceInteractor.Prompt, android.os.Bundle);
+ ctor public VoiceInteractor.ConfirmationRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
method public void onConfirmationResult(boolean, android.os.Bundle);
}
public static class VoiceInteractor.PickOptionRequest extends android.app.VoiceInteractor.Request {
- ctor public VoiceInteractor.PickOptionRequest(android.app.VoiceInteractor.Prompt, android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
+ ctor public VoiceInteractor.PickOptionRequest(@Nullable android.app.VoiceInteractor.Prompt, android.app.VoiceInteractor.PickOptionRequest.Option[], @Nullable android.os.Bundle);
method public void onPickOptionResult(boolean, android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
}
public static final class VoiceInteractor.PickOptionRequest.Option implements android.os.Parcelable {
- ctor public VoiceInteractor.PickOptionRequest.Option(java.lang.CharSequence, int);
- method public android.app.VoiceInteractor.PickOptionRequest.Option addSynonym(java.lang.CharSequence);
+ ctor public VoiceInteractor.PickOptionRequest.Option(CharSequence, int);
+ method public android.app.VoiceInteractor.PickOptionRequest.Option addSynonym(CharSequence);
method public int countSynonyms();
method public int describeContents();
method public android.os.Bundle getExtras();
method public int getIndex();
- method public java.lang.CharSequence getLabel();
- method public java.lang.CharSequence getSynonymAt(int);
+ method public CharSequence getLabel();
+ method public CharSequence getSynonymAt(int);
method public void setExtras(android.os.Bundle);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.VoiceInteractor.PickOptionRequest.Option> CREATOR;
}
public static class VoiceInteractor.Prompt implements android.os.Parcelable {
- ctor public VoiceInteractor.Prompt(java.lang.CharSequence[], java.lang.CharSequence);
- ctor public VoiceInteractor.Prompt(java.lang.CharSequence);
+ ctor public VoiceInteractor.Prompt(@NonNull CharSequence[], @NonNull CharSequence);
+ ctor public VoiceInteractor.Prompt(@NonNull CharSequence);
method public int countVoicePrompts();
method public int describeContents();
- method public java.lang.CharSequence getVisualPrompt();
- method public java.lang.CharSequence getVoicePromptAt(int);
+ method @NonNull public CharSequence getVisualPrompt();
+ method @NonNull public CharSequence getVoicePromptAt(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.VoiceInteractor.Prompt> CREATOR;
}
- public static abstract class VoiceInteractor.Request {
+ public abstract static class VoiceInteractor.Request {
method public void cancel();
method public android.app.Activity getActivity();
method public android.content.Context getContext();
- method public java.lang.String getName();
+ method public String getName();
method public void onAttached(android.app.Activity);
method public void onCancel();
method public void onDetached();
@@ -6358,13 +6381,13 @@
public final class WallpaperColors implements android.os.Parcelable {
ctor public WallpaperColors(android.os.Parcel);
- ctor public WallpaperColors(android.graphics.Color, android.graphics.Color, android.graphics.Color);
+ ctor public WallpaperColors(@NonNull android.graphics.Color, @Nullable android.graphics.Color, @Nullable android.graphics.Color);
method public int describeContents();
- method public static android.app.WallpaperColors fromBitmap(android.graphics.Bitmap);
+ method public static android.app.WallpaperColors fromBitmap(@NonNull android.graphics.Bitmap);
method public static android.app.WallpaperColors fromDrawable(android.graphics.drawable.Drawable);
- method public android.graphics.Color getPrimaryColor();
- method public android.graphics.Color getSecondaryColor();
- method public android.graphics.Color getTertiaryColor();
+ method @NonNull public android.graphics.Color getPrimaryColor();
+ method @Nullable public android.graphics.Color getSecondaryColor();
+ method @Nullable public android.graphics.Color getTertiaryColor();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.WallpaperColors> CREATOR;
}
@@ -6372,20 +6395,20 @@
public final class WallpaperInfo implements android.os.Parcelable {
ctor public WallpaperInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public android.content.ComponentName getComponent();
- method public java.lang.String getPackageName();
+ method public String getPackageName();
method public android.content.pm.ServiceInfo getServiceInfo();
- method public java.lang.String getServiceName();
- method public java.lang.String getSettingsActivity();
+ method public String getServiceName();
+ method public String getSettingsActivity();
method public android.net.Uri getSettingsSliceUri();
method public boolean getShowMetadataInPreview();
- method public java.lang.CharSequence loadAuthor(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
- method public java.lang.CharSequence loadContextDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
+ method public CharSequence loadAuthor(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
+ method public CharSequence loadContextDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
method public android.net.Uri loadContextUri(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
- method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
+ method public CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ method public CharSequence loadLabel(android.content.pm.PackageManager);
method public android.graphics.drawable.Drawable loadThumbnail(android.content.pm.PackageManager);
method public boolean supportsMultipleDisplays();
method public void writeToParcel(android.os.Parcel, int);
@@ -6393,10 +6416,10 @@
}
public class WallpaperManager {
- method public void addOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener, android.os.Handler);
- method public void clear() throws java.io.IOException;
- method public void clear(int) throws java.io.IOException;
- method public void clearWallpaper();
+ method public void addOnColorsChangedListener(@NonNull android.app.WallpaperManager.OnColorsChangedListener, @NonNull android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear() throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear(int) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clearWallpaper();
method public void clearWallpaperOffsets(android.os.IBinder);
method public void forgetLoadedWallpaper();
method public android.graphics.drawable.Drawable getBuiltInDrawable();
@@ -6407,45 +6430,45 @@
method public int getDesiredMinimumHeight();
method public int getDesiredMinimumWidth();
method public android.graphics.drawable.Drawable getDrawable();
- method public android.graphics.drawable.Drawable getFastDrawable();
+ method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.graphics.drawable.Drawable getFastDrawable();
method public static android.app.WallpaperManager getInstance(android.content.Context);
- method public android.app.WallpaperColors getWallpaperColors(int);
- method public android.os.ParcelFileDescriptor getWallpaperFile(int);
+ method @Nullable public android.app.WallpaperColors getWallpaperColors(int);
+ method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.os.ParcelFileDescriptor getWallpaperFile(int);
method public int getWallpaperId(int);
method public android.app.WallpaperInfo getWallpaperInfo();
- method public boolean hasResourceWallpaper(int);
+ method public boolean hasResourceWallpaper(@RawRes int);
method public boolean isSetWallpaperAllowed();
method public boolean isWallpaperSupported();
method public android.graphics.drawable.Drawable peekDrawable();
- method public android.graphics.drawable.Drawable peekFastDrawable();
- method public void removeOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener);
- method public void sendWallpaperCommand(android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle);
- method public void setBitmap(android.graphics.Bitmap) throws java.io.IOException;
- method public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean) throws java.io.IOException;
- method public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean, int) throws java.io.IOException;
- method public void setDisplayPadding(android.graphics.Rect);
- method public void setResource(int) throws java.io.IOException;
- method public int setResource(int, int) throws java.io.IOException;
- method public void setStream(java.io.InputStream) throws java.io.IOException;
- method public int setStream(java.io.InputStream, android.graphics.Rect, boolean) throws java.io.IOException;
- method public int setStream(java.io.InputStream, android.graphics.Rect, boolean, int) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.graphics.drawable.Drawable peekFastDrawable();
+ method public void removeOnColorsChangedListener(@NonNull android.app.WallpaperManager.OnColorsChangedListener);
+ method public void sendWallpaperCommand(android.os.IBinder, String, int, int, int, android.os.Bundle);
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setBitmap(android.graphics.Bitmap) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean, int) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_HINTS) public void setDisplayPadding(android.graphics.Rect);
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setResource(@RawRes int) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setResource(@RawRes int, int) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setStream(java.io.InputStream) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(java.io.InputStream, android.graphics.Rect, boolean) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(java.io.InputStream, android.graphics.Rect, boolean, int) throws java.io.IOException;
method public void setWallpaperOffsetSteps(float, float);
method public void setWallpaperOffsets(android.os.IBinder, float, float);
method public void suggestDesiredDimensions(int, int);
- field public static final java.lang.String ACTION_CHANGE_LIVE_WALLPAPER = "android.service.wallpaper.CHANGE_LIVE_WALLPAPER";
- field public static final java.lang.String ACTION_CROP_AND_SET_WALLPAPER = "android.service.wallpaper.CROP_AND_SET_WALLPAPER";
- field public static final java.lang.String ACTION_LIVE_WALLPAPER_CHOOSER = "android.service.wallpaper.LIVE_WALLPAPER_CHOOSER";
- field public static final java.lang.String COMMAND_DROP = "android.home.drop";
- field public static final java.lang.String COMMAND_SECONDARY_TAP = "android.wallpaper.secondaryTap";
- field public static final java.lang.String COMMAND_TAP = "android.wallpaper.tap";
- field public static final java.lang.String EXTRA_LIVE_WALLPAPER_COMPONENT = "android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT";
+ field public static final String ACTION_CHANGE_LIVE_WALLPAPER = "android.service.wallpaper.CHANGE_LIVE_WALLPAPER";
+ field public static final String ACTION_CROP_AND_SET_WALLPAPER = "android.service.wallpaper.CROP_AND_SET_WALLPAPER";
+ field public static final String ACTION_LIVE_WALLPAPER_CHOOSER = "android.service.wallpaper.LIVE_WALLPAPER_CHOOSER";
+ field public static final String COMMAND_DROP = "android.home.drop";
+ field public static final String COMMAND_SECONDARY_TAP = "android.wallpaper.secondaryTap";
+ field public static final String COMMAND_TAP = "android.wallpaper.tap";
+ field public static final String EXTRA_LIVE_WALLPAPER_COMPONENT = "android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT";
field public static final int FLAG_LOCK = 2; // 0x2
field public static final int FLAG_SYSTEM = 1; // 0x1
- field public static final java.lang.String WALLPAPER_PREVIEW_META_DATA = "android.wallpaper.preview";
+ field public static final String WALLPAPER_PREVIEW_META_DATA = "android.wallpaper.preview";
}
- public static abstract interface WallpaperManager.OnColorsChangedListener {
- method public abstract void onColorsChanged(android.app.WallpaperColors, int);
+ public static interface WallpaperManager.OnColorsChangedListener {
+ method public void onColorsChanged(android.app.WallpaperColors, int);
}
}
@@ -6461,7 +6484,7 @@
public class DelegatedAdminReceiver extends android.content.BroadcastReceiver {
ctor public DelegatedAdminReceiver();
- method public java.lang.String onChoosePrivateKeyAlias(android.content.Context, android.content.Intent, int, android.net.Uri, java.lang.String);
+ method public String onChoosePrivateKeyAlias(android.content.Context, android.content.Intent, int, android.net.Uri, String);
method public void onNetworkLogsAvailable(android.content.Context, android.content.Intent, long, int);
method public void onReceive(android.content.Context, android.content.Intent);
}
@@ -6469,16 +6492,16 @@
public final class DeviceAdminInfo implements android.os.Parcelable {
ctor public DeviceAdminInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public android.content.pm.ActivityInfo getActivityInfo();
- method public android.content.ComponentName getComponent();
- method public java.lang.String getPackageName();
- method public java.lang.String getReceiverName();
- method public java.lang.String getTagForPolicy(int);
+ method @NonNull public android.content.ComponentName getComponent();
+ method public String getPackageName();
+ method public String getReceiverName();
+ method public String getTagForPolicy(int);
method public boolean isVisible();
- method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
+ method public CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ method public CharSequence loadLabel(android.content.pm.PackageManager);
method public boolean supportsTransferOwnership();
method public boolean usesPolicy(int);
method public void writeToParcel(android.os.Parcel, int);
@@ -6499,53 +6522,53 @@
method public android.app.admin.DevicePolicyManager getManager(android.content.Context);
method public android.content.ComponentName getWho(android.content.Context);
method public void onBugreportFailed(android.content.Context, android.content.Intent, int);
- method public void onBugreportShared(android.content.Context, android.content.Intent, java.lang.String);
+ method public void onBugreportShared(android.content.Context, android.content.Intent, String);
method public void onBugreportSharingDeclined(android.content.Context, android.content.Intent);
- method public java.lang.String onChoosePrivateKeyAlias(android.content.Context, android.content.Intent, int, android.net.Uri, java.lang.String);
- method public java.lang.CharSequence onDisableRequested(android.content.Context, android.content.Intent);
+ method public String onChoosePrivateKeyAlias(android.content.Context, android.content.Intent, int, android.net.Uri, String);
+ method public CharSequence onDisableRequested(android.content.Context, android.content.Intent);
method public void onDisabled(android.content.Context, android.content.Intent);
method public void onEnabled(android.content.Context, android.content.Intent);
- method public void onLockTaskModeEntering(android.content.Context, android.content.Intent, java.lang.String);
+ method public void onLockTaskModeEntering(android.content.Context, android.content.Intent, String);
method public void onLockTaskModeExiting(android.content.Context, android.content.Intent);
method public void onNetworkLogsAvailable(android.content.Context, android.content.Intent, long, int);
- method public deprecated void onPasswordChanged(android.content.Context, android.content.Intent);
+ method @Deprecated public void onPasswordChanged(android.content.Context, android.content.Intent);
method public void onPasswordChanged(android.content.Context, android.content.Intent, android.os.UserHandle);
- method public deprecated void onPasswordExpiring(android.content.Context, android.content.Intent);
+ method @Deprecated public void onPasswordExpiring(android.content.Context, android.content.Intent);
method public void onPasswordExpiring(android.content.Context, android.content.Intent, android.os.UserHandle);
- method public deprecated void onPasswordFailed(android.content.Context, android.content.Intent);
+ method @Deprecated public void onPasswordFailed(android.content.Context, android.content.Intent);
method public void onPasswordFailed(android.content.Context, android.content.Intent, android.os.UserHandle);
- method public deprecated void onPasswordSucceeded(android.content.Context, android.content.Intent);
+ method @Deprecated public void onPasswordSucceeded(android.content.Context, android.content.Intent);
method public void onPasswordSucceeded(android.content.Context, android.content.Intent, android.os.UserHandle);
method public void onProfileProvisioningComplete(android.content.Context, android.content.Intent);
- method public deprecated void onReadyForUserInitialization(android.content.Context, android.content.Intent);
+ method @Deprecated public void onReadyForUserInitialization(android.content.Context, android.content.Intent);
method public void onReceive(android.content.Context, android.content.Intent);
method public void onSecurityLogsAvailable(android.content.Context, android.content.Intent);
method public void onSystemUpdatePending(android.content.Context, android.content.Intent, long);
method public void onTransferAffiliatedProfileOwnershipComplete(android.content.Context, android.os.UserHandle);
- method public void onTransferOwnershipComplete(android.content.Context, android.os.PersistableBundle);
- method public void onUserAdded(android.content.Context, android.content.Intent, android.os.UserHandle);
- method public void onUserRemoved(android.content.Context, android.content.Intent, android.os.UserHandle);
- method public void onUserStarted(android.content.Context, android.content.Intent, android.os.UserHandle);
- method public void onUserStopped(android.content.Context, android.content.Intent, android.os.UserHandle);
- method public void onUserSwitched(android.content.Context, android.content.Intent, android.os.UserHandle);
- field public static final java.lang.String ACTION_CHOOSE_PRIVATE_KEY_ALIAS = "android.app.action.CHOOSE_PRIVATE_KEY_ALIAS";
- field public static final java.lang.String ACTION_DEVICE_ADMIN_DISABLED = "android.app.action.DEVICE_ADMIN_DISABLED";
- field public static final java.lang.String ACTION_DEVICE_ADMIN_DISABLE_REQUESTED = "android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED";
- field public static final java.lang.String ACTION_DEVICE_ADMIN_ENABLED = "android.app.action.DEVICE_ADMIN_ENABLED";
- field public static final java.lang.String ACTION_LOCK_TASK_ENTERING = "android.app.action.LOCK_TASK_ENTERING";
- field public static final java.lang.String ACTION_LOCK_TASK_EXITING = "android.app.action.LOCK_TASK_EXITING";
- field public static final java.lang.String ACTION_NETWORK_LOGS_AVAILABLE = "android.app.action.NETWORK_LOGS_AVAILABLE";
- field public static final java.lang.String ACTION_PASSWORD_CHANGED = "android.app.action.ACTION_PASSWORD_CHANGED";
- field public static final java.lang.String ACTION_PASSWORD_EXPIRING = "android.app.action.ACTION_PASSWORD_EXPIRING";
- field public static final java.lang.String ACTION_PASSWORD_FAILED = "android.app.action.ACTION_PASSWORD_FAILED";
- field public static final java.lang.String ACTION_PASSWORD_SUCCEEDED = "android.app.action.ACTION_PASSWORD_SUCCEEDED";
- field public static final java.lang.String ACTION_PROFILE_PROVISIONING_COMPLETE = "android.app.action.PROFILE_PROVISIONING_COMPLETE";
+ method public void onTransferOwnershipComplete(@NonNull android.content.Context, @Nullable android.os.PersistableBundle);
+ method public void onUserAdded(android.content.Context, android.content.Intent, @NonNull android.os.UserHandle);
+ method public void onUserRemoved(android.content.Context, android.content.Intent, @NonNull android.os.UserHandle);
+ method public void onUserStarted(android.content.Context, android.content.Intent, @NonNull android.os.UserHandle);
+ method public void onUserStopped(android.content.Context, android.content.Intent, @NonNull android.os.UserHandle);
+ method public void onUserSwitched(android.content.Context, android.content.Intent, @NonNull android.os.UserHandle);
+ field public static final String ACTION_CHOOSE_PRIVATE_KEY_ALIAS = "android.app.action.CHOOSE_PRIVATE_KEY_ALIAS";
+ field public static final String ACTION_DEVICE_ADMIN_DISABLED = "android.app.action.DEVICE_ADMIN_DISABLED";
+ field public static final String ACTION_DEVICE_ADMIN_DISABLE_REQUESTED = "android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED";
+ field public static final String ACTION_DEVICE_ADMIN_ENABLED = "android.app.action.DEVICE_ADMIN_ENABLED";
+ field public static final String ACTION_LOCK_TASK_ENTERING = "android.app.action.LOCK_TASK_ENTERING";
+ field public static final String ACTION_LOCK_TASK_EXITING = "android.app.action.LOCK_TASK_EXITING";
+ field public static final String ACTION_NETWORK_LOGS_AVAILABLE = "android.app.action.NETWORK_LOGS_AVAILABLE";
+ field public static final String ACTION_PASSWORD_CHANGED = "android.app.action.ACTION_PASSWORD_CHANGED";
+ field public static final String ACTION_PASSWORD_EXPIRING = "android.app.action.ACTION_PASSWORD_EXPIRING";
+ field public static final String ACTION_PASSWORD_FAILED = "android.app.action.ACTION_PASSWORD_FAILED";
+ field public static final String ACTION_PASSWORD_SUCCEEDED = "android.app.action.ACTION_PASSWORD_SUCCEEDED";
+ field public static final String ACTION_PROFILE_PROVISIONING_COMPLETE = "android.app.action.PROFILE_PROVISIONING_COMPLETE";
field public static final int BUGREPORT_FAILURE_FAILED_COMPLETING = 0; // 0x0
field public static final int BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE = 1; // 0x1
- field public static final java.lang.String DEVICE_ADMIN_META_DATA = "android.app.device_admin";
- field public static final java.lang.String EXTRA_DISABLE_WARNING = "android.app.extra.DISABLE_WARNING";
- field public static final java.lang.String EXTRA_LOCK_TASK_PACKAGE = "android.app.extra.LOCK_TASK_PACKAGE";
- field public static final java.lang.String EXTRA_TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE = "android.app.extra.TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE";
+ field public static final String DEVICE_ADMIN_META_DATA = "android.app.device_admin";
+ field public static final String EXTRA_DISABLE_WARNING = "android.app.extra.DISABLE_WARNING";
+ field public static final String EXTRA_LOCK_TASK_PACKAGE = "android.app.extra.LOCK_TASK_PACKAGE";
+ field public static final String EXTRA_TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE = "android.app.extra.TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE";
}
public class DeviceAdminService extends android.app.Service {
@@ -6554,286 +6577,291 @@
}
public class DevicePolicyManager {
- method public void addCrossProfileCalendarPackage(android.content.ComponentName, java.lang.String);
- method public void addCrossProfileIntentFilter(android.content.ComponentName, android.content.IntentFilter, int);
- method public boolean addCrossProfileWidgetProvider(android.content.ComponentName, java.lang.String);
- method public int addOverrideApn(android.content.ComponentName, android.telephony.data.ApnSetting);
- method public void addPersistentPreferredActivity(android.content.ComponentName, android.content.IntentFilter, android.content.ComponentName);
- method public void addUserRestriction(android.content.ComponentName, java.lang.String);
- method public boolean bindDeviceAdminServiceAsUser(android.content.ComponentName, android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle);
- method public void clearApplicationUserData(android.content.ComponentName, java.lang.String, java.util.concurrent.Executor, android.app.admin.DevicePolicyManager.OnClearApplicationUserDataListener);
- method public void clearCrossProfileIntentFilters(android.content.ComponentName);
- method public deprecated void clearDeviceOwnerApp(java.lang.String);
- method public void clearPackagePersistentPreferredActivities(android.content.ComponentName, java.lang.String);
- method public deprecated void clearProfileOwner(android.content.ComponentName);
+ method public void addCrossProfileCalendarPackage(@NonNull android.content.ComponentName, @NonNull String);
+ method public void addCrossProfileIntentFilter(@NonNull android.content.ComponentName, android.content.IntentFilter, int);
+ method public boolean addCrossProfileWidgetProvider(@NonNull android.content.ComponentName, String);
+ method public int addOverrideApn(@NonNull android.content.ComponentName, @NonNull android.telephony.data.ApnSetting);
+ method public void addPersistentPreferredActivity(@NonNull android.content.ComponentName, android.content.IntentFilter, @NonNull android.content.ComponentName);
+ method public void addUserRestriction(@NonNull android.content.ComponentName, String);
+ method public boolean bindDeviceAdminServiceAsUser(@NonNull android.content.ComponentName, android.content.Intent, @NonNull android.content.ServiceConnection, int, @NonNull android.os.UserHandle);
+ method public void clearApplicationUserData(@NonNull android.content.ComponentName, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.OnClearApplicationUserDataListener);
+ method public void clearCrossProfileIntentFilters(@NonNull android.content.ComponentName);
+ method @Deprecated public void clearDeviceOwnerApp(String);
+ method public void clearPackagePersistentPreferredActivities(@NonNull android.content.ComponentName, String);
+ method @Deprecated public void clearProfileOwner(@NonNull android.content.ComponentName);
method public boolean clearResetPasswordToken(android.content.ComponentName);
- method public void clearUserRestriction(android.content.ComponentName, java.lang.String);
- method public android.content.Intent createAdminSupportIntent(java.lang.String);
- method public android.os.UserHandle createAndManageUser(android.content.ComponentName, java.lang.String, android.content.ComponentName, android.os.PersistableBundle, int);
- method public void enableSystemApp(android.content.ComponentName, java.lang.String);
- method public int enableSystemApp(android.content.ComponentName, android.content.Intent);
- method public android.security.AttestedKeyPair generateKeyPair(android.content.ComponentName, java.lang.String, android.security.keystore.KeyGenParameterSpec, int);
- method public java.lang.String[] getAccountTypesWithManagementDisabled();
- method public java.util.List<android.content.ComponentName> getActiveAdmins();
- method public java.util.Set<java.lang.String> getAffiliationIds(android.content.ComponentName);
- method public java.lang.String getAlwaysOnVpnPackage(android.content.ComponentName);
- method public android.os.Bundle getApplicationRestrictions(android.content.ComponentName, java.lang.String);
- method public deprecated java.lang.String getApplicationRestrictionsManagingPackage(android.content.ComponentName);
+ method public void clearUserRestriction(@NonNull android.content.ComponentName, String);
+ method public android.content.Intent createAdminSupportIntent(@NonNull String);
+ method @Nullable public android.os.UserHandle createAndManageUser(@NonNull android.content.ComponentName, @NonNull String, @NonNull android.content.ComponentName, @Nullable android.os.PersistableBundle, int);
+ method public void enableSystemApp(@NonNull android.content.ComponentName, String);
+ method public int enableSystemApp(@NonNull android.content.ComponentName, android.content.Intent);
+ method public android.security.AttestedKeyPair generateKeyPair(@Nullable android.content.ComponentName, @NonNull String, @NonNull android.security.keystore.KeyGenParameterSpec, int);
+ method @Nullable public String[] getAccountTypesWithManagementDisabled();
+ method @Nullable public java.util.List<android.content.ComponentName> getActiveAdmins();
+ method @NonNull public java.util.Set<java.lang.String> getAffiliationIds(@NonNull android.content.ComponentName);
+ method @Nullable public String getAlwaysOnVpnPackage(@NonNull android.content.ComponentName);
+ method @WorkerThread @NonNull public android.os.Bundle getApplicationRestrictions(@Nullable android.content.ComponentName, String);
+ method @Deprecated @Nullable public String getApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName);
method public boolean getAutoTimeRequired();
- method public java.util.List<android.os.UserHandle> getBindDeviceAdminTargetUsers(android.content.ComponentName);
- method public boolean getBluetoothContactSharingDisabled(android.content.ComponentName);
- method public boolean getCameraDisabled(android.content.ComponentName);
- method public deprecated java.lang.String getCertInstallerPackage(android.content.ComponentName) throws java.lang.SecurityException;
- method public java.util.Set<java.lang.String> getCrossProfileCalendarPackages(android.content.ComponentName);
- method public boolean getCrossProfileCallerIdDisabled(android.content.ComponentName);
- method public boolean getCrossProfileContactsSearchDisabled(android.content.ComponentName);
- method public java.util.List<java.lang.String> getCrossProfileWidgetProviders(android.content.ComponentName);
+ method @NonNull public java.util.List<android.os.UserHandle> getBindDeviceAdminTargetUsers(@NonNull android.content.ComponentName);
+ method public boolean getBluetoothContactSharingDisabled(@NonNull android.content.ComponentName);
+ method public boolean getCameraDisabled(@Nullable android.content.ComponentName);
+ method @Deprecated @Nullable public String getCertInstallerPackage(@NonNull android.content.ComponentName) throws java.lang.SecurityException;
+ method @NonNull public java.util.Set<java.lang.String> getCrossProfileCalendarPackages(@NonNull android.content.ComponentName);
+ method public boolean getCrossProfileCallerIdDisabled(@NonNull android.content.ComponentName);
+ method public boolean getCrossProfileContactsSearchDisabled(@NonNull android.content.ComponentName);
+ method @NonNull public java.util.List<java.lang.String> getCrossProfileWidgetProviders(@NonNull android.content.ComponentName);
method public int getCurrentFailedPasswordAttempts();
- method public java.util.List<java.lang.String> getDelegatePackages(android.content.ComponentName, java.lang.String);
- method public java.util.List<java.lang.String> getDelegatedScopes(android.content.ComponentName, java.lang.String);
- method public java.lang.CharSequence getDeviceOwnerLockScreenInfo();
- method public java.lang.CharSequence getEndUserSessionMessage(android.content.ComponentName);
- method public java.lang.String getGlobalPrivateDnsHost(android.content.ComponentName);
- method public int getGlobalPrivateDnsMode(android.content.ComponentName);
- method public java.util.List<byte[]> getInstalledCaCerts(android.content.ComponentName);
- method public java.util.List<java.lang.String> getKeepUninstalledPackages(android.content.ComponentName);
- method public int getKeyguardDisabledFeatures(android.content.ComponentName);
- method public int getLockTaskFeatures(android.content.ComponentName);
- method public java.lang.String[] getLockTaskPackages(android.content.ComponentName);
- method public java.lang.CharSequence getLongSupportMessage(android.content.ComponentName);
- method public int getMaximumFailedPasswordsForWipe(android.content.ComponentName);
- method public long getMaximumTimeToLock(android.content.ComponentName);
- method public java.util.List<java.lang.String> getMeteredDataDisabledPackages(android.content.ComponentName);
- method public int getOrganizationColor(android.content.ComponentName);
- method public java.lang.CharSequence getOrganizationName(android.content.ComponentName);
- method public java.util.List<android.telephony.data.ApnSetting> getOverrideApns(android.content.ComponentName);
- method public android.app.admin.DevicePolicyManager getParentProfileInstance(android.content.ComponentName);
- method public int getPasswordComplexity();
- method public long getPasswordExpiration(android.content.ComponentName);
- method public long getPasswordExpirationTimeout(android.content.ComponentName);
- method public int getPasswordHistoryLength(android.content.ComponentName);
+ method @Nullable public java.util.List<java.lang.String> getDelegatePackages(@NonNull android.content.ComponentName, @NonNull String);
+ method @NonNull public java.util.List<java.lang.String> getDelegatedScopes(@Nullable android.content.ComponentName, @NonNull String);
+ method public CharSequence getDeviceOwnerLockScreenInfo();
+ method public CharSequence getEndUserSessionMessage(@NonNull android.content.ComponentName);
+ method public String getGlobalPrivateDnsHost(@NonNull android.content.ComponentName);
+ method public int getGlobalPrivateDnsMode(@NonNull android.content.ComponentName);
+ method @NonNull public java.util.List<byte[]> getInstalledCaCerts(@Nullable android.content.ComponentName);
+ method @Nullable public java.util.List<java.lang.String> getKeepUninstalledPackages(@Nullable android.content.ComponentName);
+ method public int getKeyguardDisabledFeatures(@Nullable android.content.ComponentName);
+ method public int getLockTaskFeatures(@NonNull android.content.ComponentName);
+ method @NonNull public String[] getLockTaskPackages(@NonNull android.content.ComponentName);
+ method @Nullable public CharSequence getLongSupportMessage(@NonNull android.content.ComponentName);
+ method public int getMaximumFailedPasswordsForWipe(@Nullable android.content.ComponentName);
+ method public long getMaximumTimeToLock(@Nullable android.content.ComponentName);
+ method @NonNull public java.util.List<java.lang.String> getMeteredDataDisabledPackages(@NonNull android.content.ComponentName);
+ method @ColorInt public int getOrganizationColor(@NonNull android.content.ComponentName);
+ method @Nullable public CharSequence getOrganizationName(@NonNull android.content.ComponentName);
+ method public java.util.List<android.telephony.data.ApnSetting> getOverrideApns(@NonNull android.content.ComponentName);
+ method @NonNull public android.app.admin.DevicePolicyManager getParentProfileInstance(@NonNull android.content.ComponentName);
+ method @RequiresPermission(android.Manifest.permission.GET_AND_REQUEST_SCREEN_LOCK_COMPLEXITY) public int getPasswordComplexity();
+ method public long getPasswordExpiration(@Nullable android.content.ComponentName);
+ method public long getPasswordExpirationTimeout(@Nullable android.content.ComponentName);
+ method public int getPasswordHistoryLength(@Nullable android.content.ComponentName);
method public int getPasswordMaximumLength(int);
- method public int getPasswordMinimumLength(android.content.ComponentName);
- method public int getPasswordMinimumLetters(android.content.ComponentName);
- method public int getPasswordMinimumLowerCase(android.content.ComponentName);
- method public int getPasswordMinimumNonLetter(android.content.ComponentName);
- method public int getPasswordMinimumNumeric(android.content.ComponentName);
- method public int getPasswordMinimumSymbols(android.content.ComponentName);
- method public int getPasswordMinimumUpperCase(android.content.ComponentName);
- method public int getPasswordQuality(android.content.ComponentName);
- method public android.app.admin.SystemUpdateInfo getPendingSystemUpdate(android.content.ComponentName);
- method public int getPermissionGrantState(android.content.ComponentName, java.lang.String, java.lang.String);
+ method public int getPasswordMinimumLength(@Nullable android.content.ComponentName);
+ method public int getPasswordMinimumLetters(@Nullable android.content.ComponentName);
+ method public int getPasswordMinimumLowerCase(@Nullable android.content.ComponentName);
+ method public int getPasswordMinimumNonLetter(@Nullable android.content.ComponentName);
+ method public int getPasswordMinimumNumeric(@Nullable android.content.ComponentName);
+ method public int getPasswordMinimumSymbols(@Nullable android.content.ComponentName);
+ method public int getPasswordMinimumUpperCase(@Nullable android.content.ComponentName);
+ method public int getPasswordQuality(@Nullable android.content.ComponentName);
+ method @Nullable public android.app.admin.SystemUpdateInfo getPendingSystemUpdate(@NonNull android.content.ComponentName);
+ method public int getPermissionGrantState(@Nullable android.content.ComponentName, String, String);
method public int getPermissionPolicy(android.content.ComponentName);
- method public java.util.List<java.lang.String> getPermittedAccessibilityServices(android.content.ComponentName);
- method public java.util.List<java.lang.String> getPermittedCrossProfileNotificationListeners(android.content.ComponentName);
- method public java.util.List<java.lang.String> getPermittedInputMethods(android.content.ComponentName);
- method public long getRequiredStrongAuthTimeout(android.content.ComponentName);
- method public boolean getScreenCaptureDisabled(android.content.ComponentName);
- method public java.util.List<android.os.UserHandle> getSecondaryUsers(android.content.ComponentName);
- method public java.lang.CharSequence getShortSupportMessage(android.content.ComponentName);
- method public java.lang.CharSequence getStartUserSessionMessage(android.content.ComponentName);
- method public boolean getStorageEncryption(android.content.ComponentName);
+ method @Nullable public java.util.List<java.lang.String> getPermittedAccessibilityServices(@NonNull android.content.ComponentName);
+ method @Nullable public java.util.List<java.lang.String> getPermittedCrossProfileNotificationListeners(@NonNull android.content.ComponentName);
+ method @Nullable public java.util.List<java.lang.String> getPermittedInputMethods(@NonNull android.content.ComponentName);
+ method public long getRequiredStrongAuthTimeout(@Nullable android.content.ComponentName);
+ method public boolean getScreenCaptureDisabled(@Nullable android.content.ComponentName);
+ method public java.util.List<android.os.UserHandle> getSecondaryUsers(@NonNull android.content.ComponentName);
+ method public CharSequence getShortSupportMessage(@NonNull android.content.ComponentName);
+ method public CharSequence getStartUserSessionMessage(@NonNull android.content.ComponentName);
+ method public boolean getStorageEncryption(@Nullable android.content.ComponentName);
method public int getStorageEncryptionStatus();
- method public android.app.admin.SystemUpdatePolicy getSystemUpdatePolicy();
- method public android.os.PersistableBundle getTransferOwnershipBundle();
- method public java.util.List<android.os.PersistableBundle> getTrustAgentConfiguration(android.content.ComponentName, android.content.ComponentName);
- method public android.os.Bundle getUserRestrictions(android.content.ComponentName);
- method public java.lang.String getWifiMacAddress(android.content.ComponentName);
- method public boolean hasCaCertInstalled(android.content.ComponentName, byte[]);
- method public boolean hasGrantedPolicy(android.content.ComponentName, int);
- method public boolean installCaCert(android.content.ComponentName, byte[]);
- method public boolean installExistingPackage(android.content.ComponentName, java.lang.String);
- method public boolean installKeyPair(android.content.ComponentName, java.security.PrivateKey, java.security.cert.Certificate, java.lang.String);
- method public boolean installKeyPair(android.content.ComponentName, java.security.PrivateKey, java.security.cert.Certificate[], java.lang.String, boolean);
- method public boolean installKeyPair(android.content.ComponentName, java.security.PrivateKey, java.security.cert.Certificate[], java.lang.String, int);
- method public void installSystemUpdate(android.content.ComponentName, android.net.Uri, java.util.concurrent.Executor, android.app.admin.DevicePolicyManager.InstallUpdateCallback);
+ method @Nullable public android.app.admin.SystemUpdatePolicy getSystemUpdatePolicy();
+ method @Nullable public android.os.PersistableBundle getTransferOwnershipBundle();
+ method @Nullable public java.util.List<android.os.PersistableBundle> getTrustAgentConfiguration(@Nullable android.content.ComponentName, @NonNull android.content.ComponentName);
+ method @NonNull public android.os.Bundle getUserRestrictions(@NonNull android.content.ComponentName);
+ method @Nullable public String getWifiMacAddress(@NonNull android.content.ComponentName);
+ method public boolean hasCaCertInstalled(@Nullable android.content.ComponentName, byte[]);
+ method public boolean hasGrantedPolicy(@NonNull android.content.ComponentName, int);
+ method public boolean installCaCert(@Nullable android.content.ComponentName, byte[]);
+ method public boolean installExistingPackage(@NonNull android.content.ComponentName, String);
+ method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate, @NonNull String);
+ method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, boolean);
+ method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, int);
+ method public void installSystemUpdate(@NonNull android.content.ComponentName, @NonNull android.net.Uri, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.InstallUpdateCallback);
method public boolean isActivePasswordSufficient();
- method public boolean isAdminActive(android.content.ComponentName);
+ method public boolean isAdminActive(@NonNull android.content.ComponentName);
method public boolean isAffiliatedUser();
- method public boolean isApplicationHidden(android.content.ComponentName, java.lang.String);
- method public boolean isBackupServiceEnabled(android.content.ComponentName);
- method public deprecated boolean isCallerApplicationRestrictionsManagingPackage();
+ method public boolean isApplicationHidden(@NonNull android.content.ComponentName, String);
+ method public boolean isBackupServiceEnabled(@NonNull android.content.ComponentName);
+ method @Deprecated public boolean isCallerApplicationRestrictionsManagingPackage();
method public boolean isDeviceIdAttestationSupported();
- method public boolean isDeviceOwnerApp(java.lang.String);
- method public boolean isEphemeralUser(android.content.ComponentName);
- method public boolean isLockTaskPermitted(java.lang.String);
+ method public boolean isDeviceOwnerApp(String);
+ method public boolean isEphemeralUser(@NonNull android.content.ComponentName);
+ method public boolean isLockTaskPermitted(String);
method public boolean isLogoutEnabled();
- method public boolean isManagedProfile(android.content.ComponentName);
- method public boolean isMasterVolumeMuted(android.content.ComponentName);
- method public boolean isNetworkLoggingEnabled(android.content.ComponentName);
- method public boolean isOverrideApnEnabled(android.content.ComponentName);
- method public boolean isPackageSuspended(android.content.ComponentName, java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public boolean isProfileOwnerApp(java.lang.String);
- method public boolean isProvisioningAllowed(java.lang.String);
+ method public boolean isManagedProfile(@NonNull android.content.ComponentName);
+ method public boolean isMasterVolumeMuted(@NonNull android.content.ComponentName);
+ method public boolean isNetworkLoggingEnabled(@Nullable android.content.ComponentName);
+ method public boolean isOverrideApnEnabled(@NonNull android.content.ComponentName);
+ method public boolean isPackageSuspended(@NonNull android.content.ComponentName, String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public boolean isProfileOwnerApp(String);
+ method public boolean isProvisioningAllowed(@NonNull String);
method public boolean isResetPasswordTokenActive(android.content.ComponentName);
- method public boolean isSecurityLoggingEnabled(android.content.ComponentName);
- method public boolean isUninstallBlocked(android.content.ComponentName, java.lang.String);
- method public boolean isUsingUnifiedPassword(android.content.ComponentName);
+ method public boolean isSecurityLoggingEnabled(@Nullable android.content.ComponentName);
+ method public boolean isUninstallBlocked(@Nullable android.content.ComponentName, String);
+ method public boolean isUsingUnifiedPassword(@NonNull android.content.ComponentName);
method public void lockNow();
method public void lockNow(int);
- method public int logoutUser(android.content.ComponentName);
- method public void reboot(android.content.ComponentName);
- method public void removeActiveAdmin(android.content.ComponentName);
- method public boolean removeCrossProfileCalendarPackage(android.content.ComponentName, java.lang.String);
- method public boolean removeCrossProfileWidgetProvider(android.content.ComponentName, java.lang.String);
- method public boolean removeKeyPair(android.content.ComponentName, java.lang.String);
- method public boolean removeOverrideApn(android.content.ComponentName, int);
- method public boolean removeUser(android.content.ComponentName, android.os.UserHandle);
- method public boolean requestBugreport(android.content.ComponentName);
- method public boolean resetPassword(java.lang.String, int);
- method public boolean resetPasswordWithToken(android.content.ComponentName, java.lang.String, byte[], int);
- method public java.util.List<android.app.admin.NetworkEvent> retrieveNetworkLogs(android.content.ComponentName, long);
- method public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrievePreRebootSecurityLogs(android.content.ComponentName);
- method public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrieveSecurityLogs(android.content.ComponentName);
- method public void setAccountManagementDisabled(android.content.ComponentName, java.lang.String, boolean);
- method public void setAffiliationIds(android.content.ComponentName, java.util.Set<java.lang.String>);
- method public void setAlwaysOnVpnPackage(android.content.ComponentName, java.lang.String, boolean) throws android.content.pm.PackageManager.NameNotFoundException, java.lang.UnsupportedOperationException;
- method public boolean setApplicationHidden(android.content.ComponentName, java.lang.String, boolean);
- method public void setApplicationRestrictions(android.content.ComponentName, java.lang.String, android.os.Bundle);
- method public deprecated void setApplicationRestrictionsManagingPackage(android.content.ComponentName, java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public void setAutoTimeRequired(android.content.ComponentName, boolean);
- method public void setBackupServiceEnabled(android.content.ComponentName, boolean);
- method public void setBluetoothContactSharingDisabled(android.content.ComponentName, boolean);
- method public void setCameraDisabled(android.content.ComponentName, boolean);
- method public deprecated void setCertInstallerPackage(android.content.ComponentName, java.lang.String) throws java.lang.SecurityException;
- method public void setCrossProfileCallerIdDisabled(android.content.ComponentName, boolean);
- method public void setCrossProfileContactsSearchDisabled(android.content.ComponentName, boolean);
- method public void setDelegatedScopes(android.content.ComponentName, java.lang.String, java.util.List<java.lang.String>);
- method public void setDeviceOwnerLockScreenInfo(android.content.ComponentName, java.lang.CharSequence);
- method public void setEndUserSessionMessage(android.content.ComponentName, java.lang.CharSequence);
- method public int setGlobalPrivateDns(android.content.ComponentName, int, java.lang.String);
- method public void setGlobalSetting(android.content.ComponentName, java.lang.String, java.lang.String);
- method public void setKeepUninstalledPackages(android.content.ComponentName, java.util.List<java.lang.String>);
- method public boolean setKeyPairCertificate(android.content.ComponentName, java.lang.String, java.util.List<java.security.cert.Certificate>, boolean);
- method public boolean setKeyguardDisabled(android.content.ComponentName, boolean);
- method public void setKeyguardDisabledFeatures(android.content.ComponentName, int);
- method public void setLockTaskFeatures(android.content.ComponentName, int);
- method public void setLockTaskPackages(android.content.ComponentName, java.lang.String[]) throws java.lang.SecurityException;
- method public void setLogoutEnabled(android.content.ComponentName, boolean);
- method public void setLongSupportMessage(android.content.ComponentName, java.lang.CharSequence);
- method public void setMasterVolumeMuted(android.content.ComponentName, boolean);
- method public void setMaximumFailedPasswordsForWipe(android.content.ComponentName, int);
- method public void setMaximumTimeToLock(android.content.ComponentName, long);
- method public java.util.List<java.lang.String> setMeteredDataDisabledPackages(android.content.ComponentName, java.util.List<java.lang.String>);
- method public void setNetworkLoggingEnabled(android.content.ComponentName, boolean);
- method public void setOrganizationColor(android.content.ComponentName, int);
- method public void setOrganizationName(android.content.ComponentName, java.lang.CharSequence);
- method public void setOverrideApnsEnabled(android.content.ComponentName, boolean);
- method public java.lang.String[] setPackagesSuspended(android.content.ComponentName, java.lang.String[], boolean);
- method public void setPasswordExpirationTimeout(android.content.ComponentName, long);
- method public void setPasswordHistoryLength(android.content.ComponentName, int);
- method public void setPasswordMinimumLength(android.content.ComponentName, int);
- method public void setPasswordMinimumLetters(android.content.ComponentName, int);
- method public void setPasswordMinimumLowerCase(android.content.ComponentName, int);
- method public void setPasswordMinimumNonLetter(android.content.ComponentName, int);
- method public void setPasswordMinimumNumeric(android.content.ComponentName, int);
- method public void setPasswordMinimumSymbols(android.content.ComponentName, int);
- method public void setPasswordMinimumUpperCase(android.content.ComponentName, int);
- method public void setPasswordQuality(android.content.ComponentName, int);
- method public boolean setPermissionGrantState(android.content.ComponentName, java.lang.String, java.lang.String, int);
- method public void setPermissionPolicy(android.content.ComponentName, int);
- method public boolean setPermittedAccessibilityServices(android.content.ComponentName, java.util.List<java.lang.String>);
- method public boolean setPermittedCrossProfileNotificationListeners(android.content.ComponentName, java.util.List<java.lang.String>);
- method public boolean setPermittedInputMethods(android.content.ComponentName, java.util.List<java.lang.String>);
- method public void setProfileEnabled(android.content.ComponentName);
- method public void setProfileName(android.content.ComponentName, java.lang.String);
- method public void setRecommendedGlobalProxy(android.content.ComponentName, android.net.ProxyInfo);
- method public void setRequiredStrongAuthTimeout(android.content.ComponentName, long);
+ method public int logoutUser(@NonNull android.content.ComponentName);
+ method public void reboot(@NonNull android.content.ComponentName);
+ method public void removeActiveAdmin(@NonNull android.content.ComponentName);
+ method public boolean removeCrossProfileCalendarPackage(@NonNull android.content.ComponentName, @NonNull String);
+ method public boolean removeCrossProfileWidgetProvider(@NonNull android.content.ComponentName, String);
+ method public boolean removeKeyPair(@Nullable android.content.ComponentName, @NonNull String);
+ method public boolean removeOverrideApn(@NonNull android.content.ComponentName, int);
+ method public boolean removeUser(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
+ method public boolean requestBugreport(@NonNull android.content.ComponentName);
+ method public boolean resetPassword(String, int);
+ method public boolean resetPasswordWithToken(@NonNull android.content.ComponentName, String, byte[], int);
+ method @Nullable public java.util.List<android.app.admin.NetworkEvent> retrieveNetworkLogs(@Nullable android.content.ComponentName, long);
+ method @Nullable public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrievePreRebootSecurityLogs(@NonNull android.content.ComponentName);
+ method @Nullable public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrieveSecurityLogs(@NonNull android.content.ComponentName);
+ method public void setAccountManagementDisabled(@NonNull android.content.ComponentName, String, boolean);
+ method public void setAffiliationIds(@NonNull android.content.ComponentName, @NonNull java.util.Set<java.lang.String>);
+ method public void setAlwaysOnVpnPackage(@NonNull android.content.ComponentName, @Nullable String, boolean) throws android.content.pm.PackageManager.NameNotFoundException, java.lang.UnsupportedOperationException;
+ method public boolean setApplicationHidden(@NonNull android.content.ComponentName, String, boolean);
+ method @WorkerThread public void setApplicationRestrictions(@Nullable android.content.ComponentName, String, android.os.Bundle);
+ method @Deprecated public void setApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName, @Nullable String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public void setAutoTimeRequired(@NonNull android.content.ComponentName, boolean);
+ method public void setBackupServiceEnabled(@NonNull android.content.ComponentName, boolean);
+ method public void setBluetoothContactSharingDisabled(@NonNull android.content.ComponentName, boolean);
+ method public void setCameraDisabled(@NonNull android.content.ComponentName, boolean);
+ method @Deprecated public void setCertInstallerPackage(@NonNull android.content.ComponentName, @Nullable String) throws java.lang.SecurityException;
+ method public void setCrossProfileCallerIdDisabled(@NonNull android.content.ComponentName, boolean);
+ method public void setCrossProfileContactsSearchDisabled(@NonNull android.content.ComponentName, boolean);
+ method public void setDelegatedScopes(@NonNull android.content.ComponentName, @NonNull String, @NonNull java.util.List<java.lang.String>);
+ method public void setDeviceOwnerLockScreenInfo(@NonNull android.content.ComponentName, CharSequence);
+ method public void setEndUserSessionMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
+ method public int setGlobalPrivateDns(@NonNull android.content.ComponentName, int, @Nullable String);
+ method public void setGlobalSetting(@NonNull android.content.ComponentName, String, String);
+ method public void setKeepUninstalledPackages(@Nullable android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
+ method public boolean setKeyPairCertificate(@Nullable android.content.ComponentName, @NonNull String, @NonNull java.util.List<java.security.cert.Certificate>, boolean);
+ method public boolean setKeyguardDisabled(@NonNull android.content.ComponentName, boolean);
+ method public void setKeyguardDisabledFeatures(@NonNull android.content.ComponentName, int);
+ method public void setLockTaskFeatures(@NonNull android.content.ComponentName, int);
+ method public void setLockTaskPackages(@NonNull android.content.ComponentName, @NonNull String[]) throws java.lang.SecurityException;
+ method public void setLogoutEnabled(@NonNull android.content.ComponentName, boolean);
+ method public void setLongSupportMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
+ method public void setMasterVolumeMuted(@NonNull android.content.ComponentName, boolean);
+ method public void setMaximumFailedPasswordsForWipe(@NonNull android.content.ComponentName, int);
+ method public void setMaximumTimeToLock(@NonNull android.content.ComponentName, long);
+ method @NonNull public java.util.List<java.lang.String> setMeteredDataDisabledPackages(@NonNull android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
+ method public void setNetworkLoggingEnabled(@Nullable android.content.ComponentName, boolean);
+ method public void setOrganizationColor(@NonNull android.content.ComponentName, int);
+ method public void setOrganizationName(@NonNull android.content.ComponentName, @Nullable CharSequence);
+ method public void setOverrideApnsEnabled(@NonNull android.content.ComponentName, boolean);
+ method @NonNull public String[] setPackagesSuspended(@NonNull android.content.ComponentName, @NonNull String[], boolean);
+ method public void setPasswordExpirationTimeout(@NonNull android.content.ComponentName, long);
+ method public void setPasswordHistoryLength(@NonNull android.content.ComponentName, int);
+ method public void setPasswordMinimumLength(@NonNull android.content.ComponentName, int);
+ method public void setPasswordMinimumLetters(@NonNull android.content.ComponentName, int);
+ method public void setPasswordMinimumLowerCase(@NonNull android.content.ComponentName, int);
+ method public void setPasswordMinimumNonLetter(@NonNull android.content.ComponentName, int);
+ method public void setPasswordMinimumNumeric(@NonNull android.content.ComponentName, int);
+ method public void setPasswordMinimumSymbols(@NonNull android.content.ComponentName, int);
+ method public void setPasswordMinimumUpperCase(@NonNull android.content.ComponentName, int);
+ method public void setPasswordQuality(@NonNull android.content.ComponentName, int);
+ method public boolean setPermissionGrantState(@NonNull android.content.ComponentName, String, String, int);
+ method public void setPermissionPolicy(@NonNull android.content.ComponentName, int);
+ method public boolean setPermittedAccessibilityServices(@NonNull android.content.ComponentName, java.util.List<java.lang.String>);
+ method public boolean setPermittedCrossProfileNotificationListeners(@NonNull android.content.ComponentName, @Nullable java.util.List<java.lang.String>);
+ method public boolean setPermittedInputMethods(@NonNull android.content.ComponentName, java.util.List<java.lang.String>);
+ method public void setProfileEnabled(@NonNull android.content.ComponentName);
+ method public void setProfileName(@NonNull android.content.ComponentName, String);
+ method public void setRecommendedGlobalProxy(@NonNull android.content.ComponentName, @Nullable android.net.ProxyInfo);
+ method public void setRequiredStrongAuthTimeout(@NonNull android.content.ComponentName, long);
method public boolean setResetPasswordToken(android.content.ComponentName, byte[]);
- method public void setRestrictionsProvider(android.content.ComponentName, android.content.ComponentName);
- method public void setScreenCaptureDisabled(android.content.ComponentName, boolean);
- method public void setSecureSetting(android.content.ComponentName, java.lang.String, java.lang.String);
- method public void setSecurityLoggingEnabled(android.content.ComponentName, boolean);
- method public void setShortSupportMessage(android.content.ComponentName, java.lang.CharSequence);
- method public void setStartUserSessionMessage(android.content.ComponentName, java.lang.CharSequence);
- method public boolean setStatusBarDisabled(android.content.ComponentName, boolean);
- method public int setStorageEncryption(android.content.ComponentName, boolean);
- method public void setSystemSetting(android.content.ComponentName, java.lang.String, java.lang.String);
- method public void setSystemUpdatePolicy(android.content.ComponentName, android.app.admin.SystemUpdatePolicy);
- method public boolean setTime(android.content.ComponentName, long);
- method public boolean setTimeZone(android.content.ComponentName, java.lang.String);
- method public void setTrustAgentConfiguration(android.content.ComponentName, android.content.ComponentName, android.os.PersistableBundle);
- method public void setUninstallBlocked(android.content.ComponentName, java.lang.String, boolean);
- method public void setUserIcon(android.content.ComponentName, android.graphics.Bitmap);
- method public int startUserInBackground(android.content.ComponentName, android.os.UserHandle);
- method public int stopUser(android.content.ComponentName, android.os.UserHandle);
- method public boolean switchUser(android.content.ComponentName, android.os.UserHandle);
- method public void transferOwnership(android.content.ComponentName, android.content.ComponentName, android.os.PersistableBundle);
- method public void uninstallAllUserCaCerts(android.content.ComponentName);
- method public void uninstallCaCert(android.content.ComponentName, byte[]);
- method public boolean updateOverrideApn(android.content.ComponentName, int, android.telephony.data.ApnSetting);
+ method public void setRestrictionsProvider(@NonNull android.content.ComponentName, @Nullable android.content.ComponentName);
+ method public void setScreenCaptureDisabled(@NonNull android.content.ComponentName, boolean);
+ method public void setSecureSetting(@NonNull android.content.ComponentName, String, String);
+ method public void setSecurityLoggingEnabled(@NonNull android.content.ComponentName, boolean);
+ method public void setShortSupportMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
+ method public void setStartUserSessionMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
+ method public boolean setStatusBarDisabled(@NonNull android.content.ComponentName, boolean);
+ method public int setStorageEncryption(@NonNull android.content.ComponentName, boolean);
+ method public void setSystemSetting(@NonNull android.content.ComponentName, @NonNull String, String);
+ method public void setSystemUpdatePolicy(@NonNull android.content.ComponentName, android.app.admin.SystemUpdatePolicy);
+ method public boolean setTime(@NonNull android.content.ComponentName, long);
+ method public boolean setTimeZone(@NonNull android.content.ComponentName, String);
+ method public void setTrustAgentConfiguration(@NonNull android.content.ComponentName, @NonNull android.content.ComponentName, android.os.PersistableBundle);
+ method public void setUninstallBlocked(@Nullable android.content.ComponentName, String, boolean);
+ method public void setUserIcon(@NonNull android.content.ComponentName, android.graphics.Bitmap);
+ method public int startUserInBackground(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
+ method public int stopUser(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
+ method public boolean switchUser(@NonNull android.content.ComponentName, @Nullable android.os.UserHandle);
+ method public void transferOwnership(@NonNull android.content.ComponentName, @NonNull android.content.ComponentName, @Nullable android.os.PersistableBundle);
+ method public void uninstallAllUserCaCerts(@Nullable android.content.ComponentName);
+ method public void uninstallCaCert(@Nullable android.content.ComponentName, byte[]);
+ method public boolean updateOverrideApn(@NonNull android.content.ComponentName, int, @NonNull android.telephony.data.ApnSetting);
method public void wipeData(int);
- method public void wipeData(int, java.lang.CharSequence);
- field public static final java.lang.String ACTION_ADD_DEVICE_ADMIN = "android.app.action.ADD_DEVICE_ADMIN";
- field public static final java.lang.String ACTION_APPLICATION_DELEGATION_SCOPES_CHANGED = "android.app.action.APPLICATION_DELEGATION_SCOPES_CHANGED";
- field public static final java.lang.String ACTION_DEVICE_ADMIN_SERVICE = "android.app.action.DEVICE_ADMIN_SERVICE";
- field public static final java.lang.String ACTION_DEVICE_OWNER_CHANGED = "android.app.action.DEVICE_OWNER_CHANGED";
- field public static final java.lang.String ACTION_MANAGED_PROFILE_PROVISIONED = "android.app.action.MANAGED_PROFILE_PROVISIONED";
- field public static final java.lang.String ACTION_PROFILE_OWNER_CHANGED = "android.app.action.PROFILE_OWNER_CHANGED";
- field public static final java.lang.String ACTION_PROVISIONING_SUCCESSFUL = "android.app.action.PROVISIONING_SUCCESSFUL";
- field public static final java.lang.String ACTION_PROVISION_MANAGED_DEVICE = "android.app.action.PROVISION_MANAGED_DEVICE";
- field public static final java.lang.String ACTION_PROVISION_MANAGED_PROFILE = "android.app.action.PROVISION_MANAGED_PROFILE";
- field public static final java.lang.String ACTION_SET_NEW_PARENT_PROFILE_PASSWORD = "android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD";
- field public static final java.lang.String ACTION_SET_NEW_PASSWORD = "android.app.action.SET_NEW_PASSWORD";
- field public static final java.lang.String ACTION_START_ENCRYPTION = "android.app.action.START_ENCRYPTION";
- field public static final java.lang.String ACTION_SYSTEM_UPDATE_POLICY_CHANGED = "android.app.action.SYSTEM_UPDATE_POLICY_CHANGED";
- field public static final java.lang.String DELEGATION_APP_RESTRICTIONS = "delegation-app-restrictions";
- field public static final java.lang.String DELEGATION_BLOCK_UNINSTALL = "delegation-block-uninstall";
- field public static final java.lang.String DELEGATION_CERT_INSTALL = "delegation-cert-install";
- field public static final java.lang.String DELEGATION_CERT_SELECTION = "delegation-cert-selection";
- field public static final java.lang.String DELEGATION_ENABLE_SYSTEM_APP = "delegation-enable-system-app";
- field public static final java.lang.String DELEGATION_INSTALL_EXISTING_PACKAGE = "delegation-install-existing-package";
- field public static final java.lang.String DELEGATION_KEEP_UNINSTALLED_PACKAGES = "delegation-keep-uninstalled-packages";
- field public static final java.lang.String DELEGATION_NETWORK_LOGGING = "delegation-network-logging";
- field public static final java.lang.String DELEGATION_PACKAGE_ACCESS = "delegation-package-access";
- field public static final java.lang.String DELEGATION_PACKAGE_INSTALLATION = "delegation-package-installation";
- field public static final java.lang.String DELEGATION_PERMISSION_GRANT = "delegation-permission-grant";
+ method public void wipeData(int, CharSequence);
+ field public static final String ACTION_ADD_DEVICE_ADMIN = "android.app.action.ADD_DEVICE_ADMIN";
+ field public static final String ACTION_ADMIN_POLICY_COMPLIANCE = "android.app.action.ADMIN_POLICY_COMPLIANCE";
+ field public static final String ACTION_APPLICATION_DELEGATION_SCOPES_CHANGED = "android.app.action.APPLICATION_DELEGATION_SCOPES_CHANGED";
+ field public static final String ACTION_DEVICE_ADMIN_SERVICE = "android.app.action.DEVICE_ADMIN_SERVICE";
+ field public static final String ACTION_DEVICE_OWNER_CHANGED = "android.app.action.DEVICE_OWNER_CHANGED";
+ field public static final String ACTION_GET_PROVISIONING_MODE = "android.app.action.GET_PROVISIONING_MODE";
+ field public static final String ACTION_MANAGED_PROFILE_PROVISIONED = "android.app.action.MANAGED_PROFILE_PROVISIONED";
+ field public static final String ACTION_PROFILE_OWNER_CHANGED = "android.app.action.PROFILE_OWNER_CHANGED";
+ field public static final String ACTION_PROVISIONING_SUCCESSFUL = "android.app.action.PROVISIONING_SUCCESSFUL";
+ field public static final String ACTION_PROVISION_MANAGED_DEVICE = "android.app.action.PROVISION_MANAGED_DEVICE";
+ field public static final String ACTION_PROVISION_MANAGED_PROFILE = "android.app.action.PROVISION_MANAGED_PROFILE";
+ field public static final String ACTION_SET_NEW_PARENT_PROFILE_PASSWORD = "android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD";
+ field public static final String ACTION_SET_NEW_PASSWORD = "android.app.action.SET_NEW_PASSWORD";
+ field public static final String ACTION_START_ENCRYPTION = "android.app.action.START_ENCRYPTION";
+ field public static final String ACTION_SYSTEM_UPDATE_POLICY_CHANGED = "android.app.action.SYSTEM_UPDATE_POLICY_CHANGED";
+ field public static final String DELEGATION_APP_RESTRICTIONS = "delegation-app-restrictions";
+ field public static final String DELEGATION_BLOCK_UNINSTALL = "delegation-block-uninstall";
+ field public static final String DELEGATION_CERT_INSTALL = "delegation-cert-install";
+ field public static final String DELEGATION_CERT_SELECTION = "delegation-cert-selection";
+ field public static final String DELEGATION_ENABLE_SYSTEM_APP = "delegation-enable-system-app";
+ field public static final String DELEGATION_INSTALL_EXISTING_PACKAGE = "delegation-install-existing-package";
+ field public static final String DELEGATION_KEEP_UNINSTALLED_PACKAGES = "delegation-keep-uninstalled-packages";
+ field public static final String DELEGATION_NETWORK_LOGGING = "delegation-network-logging";
+ field public static final String DELEGATION_PACKAGE_ACCESS = "delegation-package-access";
+ field public static final String DELEGATION_PACKAGE_INSTALLATION = "delegation-package-installation";
+ field public static final String DELEGATION_PERMISSION_GRANT = "delegation-permission-grant";
field public static final int ENCRYPTION_STATUS_ACTIVATING = 2; // 0x2
field public static final int ENCRYPTION_STATUS_ACTIVE = 3; // 0x3
field public static final int ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY = 4; // 0x4
field public static final int ENCRYPTION_STATUS_ACTIVE_PER_USER = 5; // 0x5
field public static final int ENCRYPTION_STATUS_INACTIVE = 1; // 0x1
field public static final int ENCRYPTION_STATUS_UNSUPPORTED = 0; // 0x0
- field public static final java.lang.String EXTRA_ADD_EXPLANATION = "android.app.extra.ADD_EXPLANATION";
- field public static final java.lang.String EXTRA_DELEGATION_SCOPES = "android.app.extra.DELEGATION_SCOPES";
- field public static final java.lang.String EXTRA_DEVICE_ADMIN = "android.app.extra.DEVICE_ADMIN";
- field public static final java.lang.String EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE = "android.app.extra.PROVISIONING_ACCOUNT_TO_MIGRATE";
- field public static final java.lang.String EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE = "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE";
- field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME";
- field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE = "android.app.extra.PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE";
- field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM";
- field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER";
- field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION";
- field public static final deprecated java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME";
- field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM";
- field public static final java.lang.String EXTRA_PROVISIONING_DISCLAIMERS = "android.app.extra.PROVISIONING_DISCLAIMERS";
- field public static final java.lang.String EXTRA_PROVISIONING_DISCLAIMER_CONTENT = "android.app.extra.PROVISIONING_DISCLAIMER_CONTENT";
- field public static final java.lang.String EXTRA_PROVISIONING_DISCLAIMER_HEADER = "android.app.extra.PROVISIONING_DISCLAIMER_HEADER";
- field public static final deprecated java.lang.String EXTRA_PROVISIONING_EMAIL_ADDRESS = "android.app.extra.PROVISIONING_EMAIL_ADDRESS";
- field public static final java.lang.String EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION = "android.app.extra.PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION";
- field public static final java.lang.String EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED = "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED";
- field public static final java.lang.String EXTRA_PROVISIONING_LOCALE = "android.app.extra.PROVISIONING_LOCALE";
- field public static final java.lang.String EXTRA_PROVISIONING_LOCAL_TIME = "android.app.extra.PROVISIONING_LOCAL_TIME";
- field public static final java.lang.String EXTRA_PROVISIONING_LOGO_URI = "android.app.extra.PROVISIONING_LOGO_URI";
- field public static final java.lang.String EXTRA_PROVISIONING_MAIN_COLOR = "android.app.extra.PROVISIONING_MAIN_COLOR";
- field public static final java.lang.String EXTRA_PROVISIONING_SKIP_ENCRYPTION = "android.app.extra.PROVISIONING_SKIP_ENCRYPTION";
- field public static final java.lang.String EXTRA_PROVISIONING_SKIP_USER_CONSENT = "android.app.extra.PROVISIONING_SKIP_USER_CONSENT";
- field public static final java.lang.String EXTRA_PROVISIONING_TIME_ZONE = "android.app.extra.PROVISIONING_TIME_ZONE";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY = "android.app.extra.PROVISIONING_WIFI_ANONYMOUS_IDENTITY";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_CA_CERTIFICATE";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_DOMAIN = "android.app.extra.PROVISIONING_WIFI_DOMAIN";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_EAP_METHOD = "android.app.extra.PROVISIONING_WIFI_EAP_METHOD";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_HIDDEN = "android.app.extra.PROVISIONING_WIFI_HIDDEN";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_IDENTITY = "android.app.extra.PROVISIONING_WIFI_IDENTITY";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_PAC_URL = "android.app.extra.PROVISIONING_WIFI_PAC_URL";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_PASSWORD = "android.app.extra.PROVISIONING_WIFI_PASSWORD";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_PHASE2_AUTH = "android.app.extra.PROVISIONING_WIFI_PHASE2_AUTH";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_PROXY_BYPASS = "android.app.extra.PROVISIONING_WIFI_PROXY_BYPASS";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_PROXY_HOST = "android.app.extra.PROVISIONING_WIFI_PROXY_HOST";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_PROXY_PORT = "android.app.extra.PROVISIONING_WIFI_PROXY_PORT";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_SECURITY_TYPE = "android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_SSID = "android.app.extra.PROVISIONING_WIFI_SSID";
- field public static final java.lang.String EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_USER_CERTIFICATE";
+ field public static final String EXTRA_ADD_EXPLANATION = "android.app.extra.ADD_EXPLANATION";
+ field public static final String EXTRA_DELEGATION_SCOPES = "android.app.extra.DELEGATION_SCOPES";
+ field public static final String EXTRA_DEVICE_ADMIN = "android.app.extra.DEVICE_ADMIN";
+ field public static final String EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE = "android.app.extra.PROVISIONING_ACCOUNT_TO_MIGRATE";
+ field public static final String EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE = "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE";
+ field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME";
+ field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE = "android.app.extra.PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE";
+ field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM";
+ field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER";
+ field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION";
+ field @Deprecated public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME";
+ field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM";
+ field public static final String EXTRA_PROVISIONING_DISCLAIMERS = "android.app.extra.PROVISIONING_DISCLAIMERS";
+ field public static final String EXTRA_PROVISIONING_DISCLAIMER_CONTENT = "android.app.extra.PROVISIONING_DISCLAIMER_CONTENT";
+ field public static final String EXTRA_PROVISIONING_DISCLAIMER_HEADER = "android.app.extra.PROVISIONING_DISCLAIMER_HEADER";
+ field @Deprecated public static final String EXTRA_PROVISIONING_EMAIL_ADDRESS = "android.app.extra.PROVISIONING_EMAIL_ADDRESS";
+ field public static final String EXTRA_PROVISIONING_IMEI = "android.app.extra.PROVISIONING_IMEI";
+ field public static final String EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION = "android.app.extra.PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION";
+ field public static final String EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED = "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED";
+ field public static final String EXTRA_PROVISIONING_LOCALE = "android.app.extra.PROVISIONING_LOCALE";
+ field public static final String EXTRA_PROVISIONING_LOCAL_TIME = "android.app.extra.PROVISIONING_LOCAL_TIME";
+ field public static final String EXTRA_PROVISIONING_LOGO_URI = "android.app.extra.PROVISIONING_LOGO_URI";
+ field public static final String EXTRA_PROVISIONING_MAIN_COLOR = "android.app.extra.PROVISIONING_MAIN_COLOR";
+ field public static final String EXTRA_PROVISIONING_MODE = "android.app.extra.PROVISIONING_MODE";
+ field public static final String EXTRA_PROVISIONING_SERIAL_NUMBER = "android.app.extra.PROVISIONING_SERIAL_NUMBER";
+ field public static final String EXTRA_PROVISIONING_SKIP_ENCRYPTION = "android.app.extra.PROVISIONING_SKIP_ENCRYPTION";
+ field public static final String EXTRA_PROVISIONING_SKIP_USER_CONSENT = "android.app.extra.PROVISIONING_SKIP_USER_CONSENT";
+ field public static final String EXTRA_PROVISIONING_TIME_ZONE = "android.app.extra.PROVISIONING_TIME_ZONE";
+ field public static final String EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY = "android.app.extra.PROVISIONING_WIFI_ANONYMOUS_IDENTITY";
+ field public static final String EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_CA_CERTIFICATE";
+ field public static final String EXTRA_PROVISIONING_WIFI_DOMAIN = "android.app.extra.PROVISIONING_WIFI_DOMAIN";
+ field public static final String EXTRA_PROVISIONING_WIFI_EAP_METHOD = "android.app.extra.PROVISIONING_WIFI_EAP_METHOD";
+ field public static final String EXTRA_PROVISIONING_WIFI_HIDDEN = "android.app.extra.PROVISIONING_WIFI_HIDDEN";
+ field public static final String EXTRA_PROVISIONING_WIFI_IDENTITY = "android.app.extra.PROVISIONING_WIFI_IDENTITY";
+ field public static final String EXTRA_PROVISIONING_WIFI_PAC_URL = "android.app.extra.PROVISIONING_WIFI_PAC_URL";
+ field public static final String EXTRA_PROVISIONING_WIFI_PASSWORD = "android.app.extra.PROVISIONING_WIFI_PASSWORD";
+ field public static final String EXTRA_PROVISIONING_WIFI_PHASE2_AUTH = "android.app.extra.PROVISIONING_WIFI_PHASE2_AUTH";
+ field public static final String EXTRA_PROVISIONING_WIFI_PROXY_BYPASS = "android.app.extra.PROVISIONING_WIFI_PROXY_BYPASS";
+ field public static final String EXTRA_PROVISIONING_WIFI_PROXY_HOST = "android.app.extra.PROVISIONING_WIFI_PROXY_HOST";
+ field public static final String EXTRA_PROVISIONING_WIFI_PROXY_PORT = "android.app.extra.PROVISIONING_WIFI_PROXY_PORT";
+ field public static final String EXTRA_PROVISIONING_WIFI_SECURITY_TYPE = "android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE";
+ field public static final String EXTRA_PROVISIONING_WIFI_SSID = "android.app.extra.PROVISIONING_WIFI_SSID";
+ field public static final String EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_USER_CERTIFICATE";
field public static final int FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY = 1; // 0x1
field public static final int FLAG_MANAGED_CAN_ACCESS_PARENT = 2; // 0x2
field public static final int FLAG_PARENT_CAN_ACCESS_MANAGED = 1; // 0x1
@@ -6864,7 +6892,7 @@
field public static final int LOCK_TASK_FEATURE_OVERVIEW = 8; // 0x8
field public static final int LOCK_TASK_FEATURE_SYSTEM_INFO = 1; // 0x1
field public static final int MAKE_USER_EPHEMERAL = 2; // 0x2
- field public static final java.lang.String MIME_TYPE_PROVISIONING_NFC = "application/com.android.managedprovisioning";
+ field public static final String MIME_TYPE_PROVISIONING_NFC = "application/com.android.managedprovisioning";
field public static final int PASSWORD_COMPLEXITY_HIGH = 327680; // 0x50000
field public static final int PASSWORD_COMPLEXITY_LOW = 65536; // 0x10000
field public static final int PASSWORD_COMPLEXITY_MEDIUM = 196608; // 0x30000
@@ -6883,8 +6911,8 @@
field public static final int PERMISSION_POLICY_AUTO_DENY = 2; // 0x2
field public static final int PERMISSION_POLICY_AUTO_GRANT = 1; // 0x1
field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
- field public static final java.lang.String POLICY_DISABLE_CAMERA = "policy_disable_camera";
- field public static final java.lang.String POLICY_DISABLE_SCREEN_CAPTURE = "policy_disable_screen_capture";
+ field public static final String POLICY_DISABLE_CAMERA = "policy_disable_camera";
+ field public static final String POLICY_DISABLE_SCREEN_CAPTURE = "policy_disable_screen_capture";
field public static final int PRIVATE_DNS_MODE_OFF = 1; // 0x1
field public static final int PRIVATE_DNS_MODE_OPPORTUNISTIC = 2; // 0x2
field public static final int PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = 3; // 0x3
@@ -6892,6 +6920,9 @@
field public static final int PRIVATE_DNS_SET_ERROR_FAILURE_SETTING = 2; // 0x2
field public static final int PRIVATE_DNS_SET_ERROR_HOST_NOT_SERVING = 1; // 0x1
field public static final int PRIVATE_DNS_SET_SUCCESS = 0; // 0x0
+ field public static final int PROVISIONING_MODE_FULLY_MANAGED_DEVICE = 1; // 0x1
+ field public static final int PROVISIONING_MODE_MANAGED_PROFILE = 2; // 0x2
+ field public static final int PROVISIONING_MODE_MANAGED_PROFILE_ON_FULLY_MANAGED_DEVICE = 3; // 0x3
field public static final int RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT = 2; // 0x2
field public static final int RESET_PASSWORD_REQUIRE_ENTRY = 1; // 0x1
field public static final int SKIP_SETUP_WIZARD = 1; // 0x1
@@ -6900,9 +6931,9 @@
field public static final int WIPE_RESET_PROTECTION_DATA = 2; // 0x2
}
- public static abstract class DevicePolicyManager.InstallUpdateCallback {
+ public abstract static class DevicePolicyManager.InstallUpdateCallback {
ctor public DevicePolicyManager.InstallUpdateCallback();
- method public void onInstallUpdateError(int, java.lang.String);
+ method public void onInstallUpdateError(int, String);
field public static final int UPDATE_ERROR_BATTERY_LOW = 5; // 0x5
field public static final int UPDATE_ERROR_FILE_NOT_FOUND = 4; // 0x4
field public static final int UPDATE_ERROR_INCORRECT_OS_VERSION = 2; // 0x2
@@ -6910,12 +6941,12 @@
field public static final int UPDATE_ERROR_UPDATE_FILE_INVALID = 3; // 0x3
}
- public static abstract interface DevicePolicyManager.OnClearApplicationUserDataListener {
- method public abstract void onApplicationUserDataCleared(java.lang.String, boolean);
+ public static interface DevicePolicyManager.OnClearApplicationUserDataListener {
+ method public void onApplicationUserDataCleared(String, boolean);
}
public final class DnsEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
- method public java.lang.String getHostname();
+ method public String getHostname();
method public java.util.List<java.net.InetAddress> getInetAddresses();
method public int getTotalResolvedAddressCount();
method public void writeToParcel(android.os.Parcel, int);
@@ -6931,7 +6962,7 @@
public abstract class NetworkEvent implements android.os.Parcelable {
method public int describeContents();
method public long getId();
- method public java.lang.String getPackageName();
+ method public String getPackageName();
method public long getTimestamp();
field public static final android.os.Parcelable.Creator<android.app.admin.NetworkEvent> CREATOR;
}
@@ -6978,7 +7009,7 @@
public static final class SecurityLog.SecurityEvent implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.Object getData();
+ method public Object getData();
method public long getId();
method public int getLogLevel();
method public int getTag();
@@ -7038,13 +7069,13 @@
method public android.content.ClipData getClipData();
method public android.os.Bundle getExtras();
method public android.content.Intent getIntent();
- method public java.lang.String getStructuredData();
+ method public String getStructuredData();
method public android.net.Uri getWebUri();
method public boolean isAppProvidedIntent();
method public boolean isAppProvidedWebUri();
method public void setClipData(android.content.ClipData);
method public void setIntent(android.content.Intent);
- method public void setStructuredData(java.lang.String);
+ method public void setStructuredData(String);
method public void setWebUri(android.net.Uri);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.assist.AssistContent> CREATOR;
@@ -7065,37 +7096,37 @@
public static class AssistStructure.ViewNode {
method public float getAlpha();
- method public java.lang.String[] getAutofillHints();
- method public android.view.autofill.AutofillId getAutofillId();
- method public java.lang.CharSequence[] getAutofillOptions();
+ method @Nullable public String[] getAutofillHints();
+ method @Nullable public android.view.autofill.AutofillId getAutofillId();
+ method @Nullable public CharSequence[] getAutofillOptions();
method public int getAutofillType();
- method public android.view.autofill.AutofillValue getAutofillValue();
+ method @Nullable public android.view.autofill.AutofillValue getAutofillValue();
method public android.app.assist.AssistStructure.ViewNode getChildAt(int);
method public int getChildCount();
- method public java.lang.String getClassName();
- method public java.lang.CharSequence getContentDescription();
+ method public String getClassName();
+ method public CharSequence getContentDescription();
method public float getElevation();
method public android.os.Bundle getExtras();
method public int getHeight();
- method public java.lang.String getHint();
- method public android.view.ViewStructure.HtmlInfo getHtmlInfo();
+ method public String getHint();
+ method @Nullable public android.view.ViewStructure.HtmlInfo getHtmlInfo();
method public int getId();
- method public java.lang.String getIdEntry();
- method public java.lang.String getIdPackage();
- method public java.lang.String getIdType();
+ method public String getIdEntry();
+ method public String getIdPackage();
+ method public String getIdType();
method public int getImportantForAutofill();
method public int getInputType();
method public int getLeft();
- method public android.os.LocaleList getLocaleList();
+ method @Nullable public android.os.LocaleList getLocaleList();
method public int getMaxTextEms();
method public int getMaxTextLength();
method public int getMinTextEms();
method public int getScrollX();
method public int getScrollY();
- method public java.lang.CharSequence getText();
+ method public CharSequence getText();
method public int getTextBackgroundColor();
method public int getTextColor();
- method public java.lang.String getTextIdEntry();
+ method @Nullable public String getTextIdEntry();
method public int[] getTextLineBaselines();
method public int[] getTextLineCharOffsets();
method public int getTextSelectionEnd();
@@ -7105,8 +7136,8 @@
method public int getTop();
method public android.graphics.Matrix getTransformation();
method public int getVisibility();
- method public java.lang.String getWebDomain();
- method public java.lang.String getWebScheme();
+ method @Nullable public String getWebDomain();
+ method @Nullable public String getWebScheme();
method public int getWidth();
method public boolean isAccessibilityFocused();
method public boolean isActivated();
@@ -7133,7 +7164,7 @@
method public int getHeight();
method public int getLeft();
method public android.app.assist.AssistStructure.ViewNode getRootViewNode();
- method public java.lang.CharSequence getTitle();
+ method public CharSequence getTitle();
method public int getTop();
method public int getWidth();
}
@@ -7162,21 +7193,21 @@
public class BackupAgentHelper extends android.app.backup.BackupAgent {
ctor public BackupAgentHelper();
- method public void addHelper(java.lang.String, android.app.backup.BackupHelper);
+ method public void addHelper(String, android.app.backup.BackupHelper);
method public void onBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor) throws java.io.IOException;
method public void onRestore(android.app.backup.BackupDataInput, int, android.os.ParcelFileDescriptor) throws java.io.IOException;
}
public class BackupDataInput {
method public int getDataSize();
- method public java.lang.String getKey();
+ method public String getKey();
method public int readEntityData(byte[], int, int) throws java.io.IOException;
method public boolean readNextHeader() throws java.io.IOException;
method public void skipEntityData() throws java.io.IOException;
}
public class BackupDataInputStream extends java.io.InputStream {
- method public java.lang.String getKey();
+ method public String getKey();
method public int read() throws java.io.IOException;
method public int size();
}
@@ -7185,26 +7216,27 @@
method public long getQuota();
method public int getTransportFlags();
method public int writeEntityData(byte[], int) throws java.io.IOException;
- method public int writeEntityHeader(java.lang.String, int) throws java.io.IOException;
+ method public int writeEntityHeader(String, int) throws java.io.IOException;
}
- public abstract interface BackupHelper {
- method public abstract void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
- method public abstract void restoreEntity(android.app.backup.BackupDataInputStream);
- method public abstract void writeNewStateDescription(android.os.ParcelFileDescriptor);
+ public interface BackupHelper {
+ method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
+ method public void restoreEntity(android.app.backup.BackupDataInputStream);
+ method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
}
public class BackupManager {
ctor public BackupManager(android.content.Context);
method public void dataChanged();
- method public static void dataChanged(java.lang.String);
- method public deprecated int requestRestore(android.app.backup.RestoreObserver);
+ method public static void dataChanged(String);
+ method @Deprecated public int requestRestore(android.app.backup.RestoreObserver);
}
public class FileBackupHelper implements android.app.backup.BackupHelper {
ctor public FileBackupHelper(android.content.Context, java.lang.String...);
method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
method public void restoreEntity(android.app.backup.BackupDataInputStream);
+ method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
}
public class FullBackupDataOutput {
@@ -7214,7 +7246,7 @@
public abstract class RestoreObserver {
ctor public RestoreObserver();
- method public void onUpdate(int, java.lang.String);
+ method public void onUpdate(int, String);
method public void restoreFinished(int);
method public void restoreStarting(int);
}
@@ -7223,6 +7255,7 @@
ctor public SharedPreferencesBackupHelper(android.content.Context, java.lang.String...);
method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
method public void restoreEntity(android.app.backup.BackupDataInputStream);
+ method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
}
}
@@ -7232,11 +7265,11 @@
public class JobInfo implements android.os.Parcelable {
method public int describeContents();
method public int getBackoffPolicy();
- method public android.content.ClipData getClipData();
+ method @Nullable public android.content.ClipData getClipData();
method public int getClipGrantFlags();
method public long getEstimatedNetworkDownloadBytes();
method public long getEstimatedNetworkUploadBytes();
- method public android.os.PersistableBundle getExtras();
+ method @NonNull public android.os.PersistableBundle getExtras();
method public long getFlexMillis();
method public int getId();
method public long getInitialBackoffMillis();
@@ -7245,13 +7278,13 @@
method public static final long getMinFlexMillis();
method public long getMinLatencyMillis();
method public static final long getMinPeriodMillis();
- method public deprecated int getNetworkType();
- method public android.net.NetworkRequest getRequiredNetwork();
- method public android.content.ComponentName getService();
- method public android.os.Bundle getTransientExtras();
+ method @Deprecated public int getNetworkType();
+ method @Nullable public android.net.NetworkRequest getRequiredNetwork();
+ method @NonNull public android.content.ComponentName getService();
+ method @NonNull public android.os.Bundle getTransientExtras();
method public long getTriggerContentMaxDelay();
method public long getTriggerContentUpdateDelay();
- method public android.app.job.JobInfo.TriggerContentUri[] getTriggerContentUris();
+ method @Nullable public android.app.job.JobInfo.TriggerContentUri[] getTriggerContentUris();
method public boolean isImportantWhileForeground();
method public boolean isPeriodic();
method public boolean isPersisted();
@@ -7269,40 +7302,40 @@
field public static final int NETWORK_BYTES_UNKNOWN = -1; // 0xffffffff
field public static final int NETWORK_TYPE_ANY = 1; // 0x1
field public static final int NETWORK_TYPE_CELLULAR = 4; // 0x4
- field public static final deprecated int NETWORK_TYPE_METERED = 4; // 0x4
+ field @Deprecated public static final int NETWORK_TYPE_METERED = 4; // 0x4
field public static final int NETWORK_TYPE_NONE = 0; // 0x0
field public static final int NETWORK_TYPE_NOT_ROAMING = 3; // 0x3
field public static final int NETWORK_TYPE_UNMETERED = 2; // 0x2
}
public static final class JobInfo.Builder {
- ctor public JobInfo.Builder(int, android.content.ComponentName);
- method public android.app.job.JobInfo.Builder addTriggerContentUri(android.app.job.JobInfo.TriggerContentUri);
+ ctor public JobInfo.Builder(int, @NonNull android.content.ComponentName);
+ method public android.app.job.JobInfo.Builder addTriggerContentUri(@NonNull android.app.job.JobInfo.TriggerContentUri);
method public android.app.job.JobInfo build();
method public android.app.job.JobInfo.Builder setBackoffCriteria(long, int);
- method public android.app.job.JobInfo.Builder setClipData(android.content.ClipData, int);
+ method public android.app.job.JobInfo.Builder setClipData(@Nullable android.content.ClipData, int);
method public android.app.job.JobInfo.Builder setEstimatedNetworkBytes(long, long);
- method public android.app.job.JobInfo.Builder setExtras(android.os.PersistableBundle);
+ method public android.app.job.JobInfo.Builder setExtras(@NonNull android.os.PersistableBundle);
method public android.app.job.JobInfo.Builder setImportantWhileForeground(boolean);
method public android.app.job.JobInfo.Builder setMinimumLatency(long);
method public android.app.job.JobInfo.Builder setOverrideDeadline(long);
method public android.app.job.JobInfo.Builder setPeriodic(long);
method public android.app.job.JobInfo.Builder setPeriodic(long, long);
- method public android.app.job.JobInfo.Builder setPersisted(boolean);
+ method @RequiresPermission(android.Manifest.permission.RECEIVE_BOOT_COMPLETED) public android.app.job.JobInfo.Builder setPersisted(boolean);
method public android.app.job.JobInfo.Builder setPrefetch(boolean);
- method public android.app.job.JobInfo.Builder setRequiredNetwork(android.net.NetworkRequest);
+ method public android.app.job.JobInfo.Builder setRequiredNetwork(@Nullable android.net.NetworkRequest);
method public android.app.job.JobInfo.Builder setRequiredNetworkType(int);
method public android.app.job.JobInfo.Builder setRequiresBatteryNotLow(boolean);
method public android.app.job.JobInfo.Builder setRequiresCharging(boolean);
method public android.app.job.JobInfo.Builder setRequiresDeviceIdle(boolean);
method public android.app.job.JobInfo.Builder setRequiresStorageNotLow(boolean);
- method public android.app.job.JobInfo.Builder setTransientExtras(android.os.Bundle);
+ method public android.app.job.JobInfo.Builder setTransientExtras(@NonNull android.os.Bundle);
method public android.app.job.JobInfo.Builder setTriggerContentMaxDelay(long);
method public android.app.job.JobInfo.Builder setTriggerContentUpdateDelay(long);
}
public static final class JobInfo.TriggerContentUri implements android.os.Parcelable {
- ctor public JobInfo.TriggerContentUri(android.net.Uri, int);
+ ctor public JobInfo.TriggerContentUri(@NonNull android.net.Uri, int);
method public int describeContents();
method public int getFlags();
method public android.net.Uri getUri();
@@ -7312,17 +7345,17 @@
}
public class JobParameters implements android.os.Parcelable {
- method public void completeWork(android.app.job.JobWorkItem);
- method public android.app.job.JobWorkItem dequeueWork();
+ method public void completeWork(@NonNull android.app.job.JobWorkItem);
+ method @Nullable public android.app.job.JobWorkItem dequeueWork();
method public int describeContents();
- method public android.content.ClipData getClipData();
+ method @Nullable public android.content.ClipData getClipData();
method public int getClipGrantFlags();
- method public android.os.PersistableBundle getExtras();
+ method @NonNull public android.os.PersistableBundle getExtras();
method public int getJobId();
- method public android.net.Network getNetwork();
- method public android.os.Bundle getTransientExtras();
- method public java.lang.String[] getTriggeredContentAuthorities();
- method public android.net.Uri[] getTriggeredContentUris();
+ method @Nullable public android.net.Network getNetwork();
+ method @NonNull public android.os.Bundle getTransientExtras();
+ method @Nullable public String[] getTriggeredContentAuthorities();
+ method @Nullable public android.net.Uri[] getTriggeredContentUris();
method public boolean isOverrideDeadlineExpired();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.job.JobParameters> CREATOR;
@@ -7332,10 +7365,10 @@
ctor public JobScheduler();
method public abstract void cancel(int);
method public abstract void cancelAll();
- method public abstract int enqueue(android.app.job.JobInfo, android.app.job.JobWorkItem);
- method public abstract java.util.List<android.app.job.JobInfo> getAllPendingJobs();
- method public abstract android.app.job.JobInfo getPendingJob(int);
- method public abstract int schedule(android.app.job.JobInfo);
+ method public abstract int enqueue(@NonNull android.app.job.JobInfo, @NonNull android.app.job.JobWorkItem);
+ method @NonNull public abstract java.util.List<android.app.job.JobInfo> getAllPendingJobs();
+ method @Nullable public abstract android.app.job.JobInfo getPendingJob(int);
+ method public abstract int schedule(@NonNull android.app.job.JobInfo);
field public static final int RESULT_FAILURE = 0; // 0x0
field public static final int RESULT_SUCCESS = 1; // 0x1
}
@@ -7346,7 +7379,7 @@
method public final android.os.IBinder onBind(android.content.Intent);
method public abstract boolean onStartJob(android.app.job.JobParameters);
method public abstract boolean onStopJob(android.app.job.JobParameters);
- field public static final java.lang.String PERMISSION_BIND = "android.permission.BIND_JOB_SERVICE";
+ field public static final String PERMISSION_BIND = "android.permission.BIND_JOB_SERVICE";
}
public abstract class JobServiceEngine {
@@ -7374,16 +7407,16 @@
package android.app.role {
public final class RoleManager {
- method public android.content.Intent createRequestRoleIntent(java.lang.String);
- method public boolean isRoleAvailable(java.lang.String);
- method public boolean isRoleHeld(java.lang.String);
- field public static final java.lang.String ROLE_BROWSER = "android.app.role.BROWSER";
- field public static final java.lang.String ROLE_DIALER = "android.app.role.DIALER";
- field public static final java.lang.String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
- field public static final java.lang.String ROLE_GALLERY = "android.app.role.GALLERY";
- field public static final java.lang.String ROLE_HOME = "android.app.role.HOME";
- field public static final java.lang.String ROLE_MUSIC = "android.app.role.MUSIC";
- field public static final java.lang.String ROLE_SMS = "android.app.role.SMS";
+ method @NonNull public android.content.Intent createRequestRoleIntent(@NonNull String);
+ method public boolean isRoleAvailable(@NonNull String);
+ method public boolean isRoleHeld(@NonNull String);
+ field public static final String ROLE_BROWSER = "android.app.role.BROWSER";
+ field public static final String ROLE_DIALER = "android.app.role.DIALER";
+ field public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
+ field public static final String ROLE_GALLERY = "android.app.role.GALLERY";
+ field public static final String ROLE_HOME = "android.app.role.HOME";
+ field public static final String ROLE_MUSIC = "android.app.role.MUSIC";
+ field public static final String ROLE_SMS = "android.app.role.SMS";
}
}
@@ -7395,55 +7428,55 @@
method public int describeContents();
method public java.util.List<java.lang.String> getHints();
method public java.util.List<android.app.slice.SliceItem> getItems();
- method public android.app.slice.SliceSpec getSpec();
+ method @Nullable public android.app.slice.SliceSpec getSpec();
method public android.net.Uri getUri();
method public boolean isCallerNeeded();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.slice.Slice> CREATOR;
- field public static final java.lang.String EXTRA_RANGE_VALUE = "android.app.slice.extra.RANGE_VALUE";
- field public static final java.lang.String EXTRA_TOGGLE_STATE = "android.app.slice.extra.TOGGLE_STATE";
- field public static final java.lang.String HINT_ACTIONS = "actions";
- field public static final java.lang.String HINT_ERROR = "error";
- field public static final java.lang.String HINT_HORIZONTAL = "horizontal";
- field public static final java.lang.String HINT_KEYWORDS = "keywords";
- field public static final java.lang.String HINT_LARGE = "large";
- field public static final java.lang.String HINT_LAST_UPDATED = "last_updated";
- field public static final java.lang.String HINT_LIST = "list";
- field public static final java.lang.String HINT_LIST_ITEM = "list_item";
- field public static final java.lang.String HINT_NO_TINT = "no_tint";
- field public static final java.lang.String HINT_PARTIAL = "partial";
- field public static final java.lang.String HINT_PERMISSION_REQUEST = "permission_request";
- field public static final java.lang.String HINT_SEE_MORE = "see_more";
- field public static final java.lang.String HINT_SELECTED = "selected";
- field public static final java.lang.String HINT_SHORTCUT = "shortcut";
- field public static final java.lang.String HINT_SUMMARY = "summary";
- field public static final java.lang.String HINT_TITLE = "title";
- field public static final java.lang.String HINT_TTL = "ttl";
- field public static final java.lang.String SUBTYPE_COLOR = "color";
- field public static final java.lang.String SUBTYPE_CONTENT_DESCRIPTION = "content_description";
- field public static final java.lang.String SUBTYPE_LAYOUT_DIRECTION = "layout_direction";
- field public static final java.lang.String SUBTYPE_MAX = "max";
- field public static final java.lang.String SUBTYPE_MESSAGE = "message";
- field public static final java.lang.String SUBTYPE_MILLIS = "millis";
- field public static final java.lang.String SUBTYPE_PRIORITY = "priority";
- field public static final java.lang.String SUBTYPE_RANGE = "range";
- field public static final java.lang.String SUBTYPE_SOURCE = "source";
- field public static final java.lang.String SUBTYPE_TOGGLE = "toggle";
- field public static final java.lang.String SUBTYPE_VALUE = "value";
+ field public static final String EXTRA_RANGE_VALUE = "android.app.slice.extra.RANGE_VALUE";
+ field public static final String EXTRA_TOGGLE_STATE = "android.app.slice.extra.TOGGLE_STATE";
+ field public static final String HINT_ACTIONS = "actions";
+ field public static final String HINT_ERROR = "error";
+ field public static final String HINT_HORIZONTAL = "horizontal";
+ field public static final String HINT_KEYWORDS = "keywords";
+ field public static final String HINT_LARGE = "large";
+ field public static final String HINT_LAST_UPDATED = "last_updated";
+ field public static final String HINT_LIST = "list";
+ field public static final String HINT_LIST_ITEM = "list_item";
+ field public static final String HINT_NO_TINT = "no_tint";
+ field public static final String HINT_PARTIAL = "partial";
+ field public static final String HINT_PERMISSION_REQUEST = "permission_request";
+ field public static final String HINT_SEE_MORE = "see_more";
+ field public static final String HINT_SELECTED = "selected";
+ field public static final String HINT_SHORTCUT = "shortcut";
+ field public static final String HINT_SUMMARY = "summary";
+ field public static final String HINT_TITLE = "title";
+ field public static final String HINT_TTL = "ttl";
+ field public static final String SUBTYPE_COLOR = "color";
+ field public static final String SUBTYPE_CONTENT_DESCRIPTION = "content_description";
+ field public static final String SUBTYPE_LAYOUT_DIRECTION = "layout_direction";
+ field public static final String SUBTYPE_MAX = "max";
+ field public static final String SUBTYPE_MESSAGE = "message";
+ field public static final String SUBTYPE_MILLIS = "millis";
+ field public static final String SUBTYPE_PRIORITY = "priority";
+ field public static final String SUBTYPE_RANGE = "range";
+ field public static final String SUBTYPE_SOURCE = "source";
+ field public static final String SUBTYPE_TOGGLE = "toggle";
+ field public static final String SUBTYPE_VALUE = "value";
}
public static class Slice.Builder {
- ctor public Slice.Builder(android.net.Uri, android.app.slice.SliceSpec);
- ctor public Slice.Builder(android.app.slice.Slice.Builder);
- method public android.app.slice.Slice.Builder addAction(android.app.PendingIntent, android.app.slice.Slice, java.lang.String);
- method public android.app.slice.Slice.Builder addBundle(android.os.Bundle, java.lang.String, java.util.List<java.lang.String>);
+ ctor public Slice.Builder(@NonNull android.net.Uri, android.app.slice.SliceSpec);
+ ctor public Slice.Builder(@NonNull android.app.slice.Slice.Builder);
+ method public android.app.slice.Slice.Builder addAction(@NonNull android.app.PendingIntent, @NonNull android.app.slice.Slice, @Nullable String);
+ method public android.app.slice.Slice.Builder addBundle(android.os.Bundle, @Nullable String, java.util.List<java.lang.String>);
method public android.app.slice.Slice.Builder addHints(java.util.List<java.lang.String>);
- method public android.app.slice.Slice.Builder addIcon(android.graphics.drawable.Icon, java.lang.String, java.util.List<java.lang.String>);
- method public android.app.slice.Slice.Builder addInt(int, java.lang.String, java.util.List<java.lang.String>);
- method public android.app.slice.Slice.Builder addLong(long, java.lang.String, java.util.List<java.lang.String>);
- method public android.app.slice.Slice.Builder addRemoteInput(android.app.RemoteInput, java.lang.String, java.util.List<java.lang.String>);
- method public android.app.slice.Slice.Builder addSubSlice(android.app.slice.Slice, java.lang.String);
- method public android.app.slice.Slice.Builder addText(java.lang.CharSequence, java.lang.String, java.util.List<java.lang.String>);
+ method public android.app.slice.Slice.Builder addIcon(android.graphics.drawable.Icon, @Nullable String, java.util.List<java.lang.String>);
+ method public android.app.slice.Slice.Builder addInt(int, @Nullable String, java.util.List<java.lang.String>);
+ method public android.app.slice.Slice.Builder addLong(long, @Nullable String, java.util.List<java.lang.String>);
+ method public android.app.slice.Slice.Builder addRemoteInput(android.app.RemoteInput, @Nullable String, java.util.List<java.lang.String>);
+ method public android.app.slice.Slice.Builder addSubSlice(@NonNull android.app.slice.Slice, @Nullable String);
+ method public android.app.slice.Slice.Builder addText(CharSequence, @Nullable String, java.util.List<java.lang.String>);
method public android.app.slice.Slice build();
method public android.app.slice.Slice.Builder setCallerNeeded(boolean);
}
@@ -7452,76 +7485,76 @@
method public int describeContents();
method public android.app.PendingIntent getAction();
method public android.os.Bundle getBundle();
- method public java.lang.String getFormat();
- method public java.util.List<java.lang.String> getHints();
+ method public String getFormat();
+ method @NonNull public java.util.List<java.lang.String> getHints();
method public android.graphics.drawable.Icon getIcon();
method public int getInt();
method public long getLong();
method public android.app.RemoteInput getRemoteInput();
method public android.app.slice.Slice getSlice();
- method public java.lang.String getSubType();
- method public java.lang.CharSequence getText();
- method public boolean hasHint(java.lang.String);
+ method public String getSubType();
+ method public CharSequence getText();
+ method public boolean hasHint(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.slice.SliceItem> CREATOR;
- field public static final java.lang.String FORMAT_ACTION = "action";
- field public static final java.lang.String FORMAT_BUNDLE = "bundle";
- field public static final java.lang.String FORMAT_IMAGE = "image";
- field public static final java.lang.String FORMAT_INT = "int";
- field public static final java.lang.String FORMAT_LONG = "long";
- field public static final java.lang.String FORMAT_REMOTE_INPUT = "input";
- field public static final java.lang.String FORMAT_SLICE = "slice";
- field public static final java.lang.String FORMAT_TEXT = "text";
+ field public static final String FORMAT_ACTION = "action";
+ field public static final String FORMAT_BUNDLE = "bundle";
+ field public static final String FORMAT_IMAGE = "image";
+ field public static final String FORMAT_INT = "int";
+ field public static final String FORMAT_LONG = "long";
+ field public static final String FORMAT_REMOTE_INPUT = "input";
+ field public static final String FORMAT_SLICE = "slice";
+ field public static final String FORMAT_TEXT = "text";
}
public class SliceManager {
- method public android.app.slice.Slice bindSlice(android.net.Uri, java.util.Set<android.app.slice.SliceSpec>);
- method public android.app.slice.Slice bindSlice(android.content.Intent, java.util.Set<android.app.slice.SliceSpec>);
- method public int checkSlicePermission(android.net.Uri, int, int);
- method public java.util.List<android.net.Uri> getPinnedSlices();
- method public java.util.Set<android.app.slice.SliceSpec> getPinnedSpecs(android.net.Uri);
- method public java.util.Collection<android.net.Uri> getSliceDescendants(android.net.Uri);
- method public void grantSlicePermission(java.lang.String, android.net.Uri);
- method public android.net.Uri mapIntentToUri(android.content.Intent);
- method public void pinSlice(android.net.Uri, java.util.Set<android.app.slice.SliceSpec>);
- method public void revokeSlicePermission(java.lang.String, android.net.Uri);
- method public void unpinSlice(android.net.Uri);
- field public static final java.lang.String CATEGORY_SLICE = "android.app.slice.category.SLICE";
- field public static final java.lang.String SLICE_METADATA_KEY = "android.metadata.SLICE_URI";
+ method @Nullable public android.app.slice.Slice bindSlice(@NonNull android.net.Uri, @NonNull java.util.Set<android.app.slice.SliceSpec>);
+ method @Nullable public android.app.slice.Slice bindSlice(@NonNull android.content.Intent, @NonNull java.util.Set<android.app.slice.SliceSpec>);
+ method public int checkSlicePermission(@NonNull android.net.Uri, int, int);
+ method @NonNull public java.util.List<android.net.Uri> getPinnedSlices();
+ method @NonNull public java.util.Set<android.app.slice.SliceSpec> getPinnedSpecs(android.net.Uri);
+ method @WorkerThread @NonNull public java.util.Collection<android.net.Uri> getSliceDescendants(@NonNull android.net.Uri);
+ method public void grantSlicePermission(@NonNull String, @NonNull android.net.Uri);
+ method @Nullable public android.net.Uri mapIntentToUri(@NonNull android.content.Intent);
+ method public void pinSlice(@NonNull android.net.Uri, @NonNull java.util.Set<android.app.slice.SliceSpec>);
+ method public void revokeSlicePermission(@NonNull String, @NonNull android.net.Uri);
+ method public void unpinSlice(@NonNull android.net.Uri);
+ field public static final String CATEGORY_SLICE = "android.app.slice.category.SLICE";
+ field public static final String SLICE_METADATA_KEY = "android.metadata.SLICE_URI";
}
public class SliceMetrics {
- ctor public SliceMetrics(android.content.Context, android.net.Uri);
+ ctor public SliceMetrics(@NonNull android.content.Context, @NonNull android.net.Uri);
method public void logHidden();
- method public void logTouch(int, android.net.Uri);
+ method public void logTouch(int, @NonNull android.net.Uri);
method public void logVisible();
}
public abstract class SliceProvider extends android.content.ContentProvider {
- ctor public SliceProvider(java.lang.String...);
+ ctor public SliceProvider(@NonNull java.lang.String...);
ctor public SliceProvider();
- method public final int delete(android.net.Uri, java.lang.String, java.lang.String[]);
- method public final java.lang.String getType(android.net.Uri);
+ method public final int delete(android.net.Uri, String, String[]);
+ method public final String getType(android.net.Uri);
method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
method public android.app.slice.Slice onBindSlice(android.net.Uri, java.util.Set<android.app.slice.SliceSpec>);
- method public android.app.PendingIntent onCreatePermissionRequest(android.net.Uri);
- method public java.util.Collection<android.net.Uri> onGetSliceDescendants(android.net.Uri);
- method public android.net.Uri onMapIntentToUri(android.content.Intent);
+ method @NonNull public android.app.PendingIntent onCreatePermissionRequest(android.net.Uri);
+ method @NonNull public java.util.Collection<android.net.Uri> onGetSliceDescendants(@NonNull android.net.Uri);
+ method @NonNull public android.net.Uri onMapIntentToUri(android.content.Intent);
method public void onSlicePinned(android.net.Uri);
method public void onSliceUnpinned(android.net.Uri);
- method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
- method public final android.database.Cursor query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal);
- method public final int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
- field public static final java.lang.String SLICE_TYPE = "vnd.android.slice";
+ method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String);
+ method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String, android.os.CancellationSignal);
+ method public final android.database.Cursor query(android.net.Uri, String[], android.os.Bundle, android.os.CancellationSignal);
+ method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
+ field public static final String SLICE_TYPE = "vnd.android.slice";
}
public final class SliceSpec implements android.os.Parcelable {
- ctor public SliceSpec(java.lang.String, int);
- method public boolean canRender(android.app.slice.SliceSpec);
+ ctor public SliceSpec(@NonNull String, int);
+ method public boolean canRender(@NonNull android.app.slice.SliceSpec);
method public int describeContents();
method public int getRevision();
- method public java.lang.String getType();
+ method public String getType();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.slice.SliceSpec> CREATOR;
}
@@ -7607,21 +7640,21 @@
}
public class NetworkStatsManager {
- method public android.app.usage.NetworkStats queryDetails(int, java.lang.String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
- method public android.app.usage.NetworkStats queryDetailsForUid(int, java.lang.String, long, long, int) throws java.lang.SecurityException;
- method public android.app.usage.NetworkStats queryDetailsForUidTag(int, java.lang.String, long, long, int, int) throws java.lang.SecurityException;
- method public android.app.usage.NetworkStats queryDetailsForUidTagState(int, java.lang.String, long, long, int, int, int) throws java.lang.SecurityException;
- method public android.app.usage.NetworkStats querySummary(int, java.lang.String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
- method public android.app.usage.NetworkStats.Bucket querySummaryForDevice(int, java.lang.String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
- method public android.app.usage.NetworkStats.Bucket querySummaryForUser(int, java.lang.String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
- method public void registerUsageCallback(int, java.lang.String, long, android.app.usage.NetworkStatsManager.UsageCallback);
- method public void registerUsageCallback(int, java.lang.String, long, android.app.usage.NetworkStatsManager.UsageCallback, android.os.Handler);
+ method public android.app.usage.NetworkStats queryDetails(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
+ method public android.app.usage.NetworkStats queryDetailsForUid(int, String, long, long, int) throws java.lang.SecurityException;
+ method public android.app.usage.NetworkStats queryDetailsForUidTag(int, String, long, long, int, int) throws java.lang.SecurityException;
+ method public android.app.usage.NetworkStats queryDetailsForUidTagState(int, String, long, long, int, int, int) throws java.lang.SecurityException;
+ method public android.app.usage.NetworkStats querySummary(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
+ method public android.app.usage.NetworkStats.Bucket querySummaryForDevice(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
+ method public android.app.usage.NetworkStats.Bucket querySummaryForUser(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
+ method public void registerUsageCallback(int, String, long, android.app.usage.NetworkStatsManager.UsageCallback);
+ method public void registerUsageCallback(int, String, long, android.app.usage.NetworkStatsManager.UsageCallback, @Nullable android.os.Handler);
method public void unregisterUsageCallback(android.app.usage.NetworkStatsManager.UsageCallback);
}
- public static abstract class NetworkStatsManager.UsageCallback {
+ public abstract static class NetworkStatsManager.UsageCallback {
ctor public NetworkStatsManager.UsageCallback();
- method public abstract void onThresholdReached(int, java.lang.String);
+ method public abstract void onThresholdReached(int, String);
}
public final class StorageStats implements android.os.Parcelable {
@@ -7634,12 +7667,12 @@
}
public class StorageStatsManager {
- method public long getFreeBytes(java.util.UUID) throws java.io.IOException;
- method public long getTotalBytes(java.util.UUID) throws java.io.IOException;
- method public android.app.usage.ExternalStorageStats queryExternalStatsForUser(java.util.UUID, android.os.UserHandle) throws java.io.IOException;
- method public android.app.usage.StorageStats queryStatsForPackage(java.util.UUID, java.lang.String, android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
- method public android.app.usage.StorageStats queryStatsForUid(java.util.UUID, int) throws java.io.IOException;
- method public android.app.usage.StorageStats queryStatsForUser(java.util.UUID, android.os.UserHandle) throws java.io.IOException;
+ method @WorkerThread public long getFreeBytes(@NonNull java.util.UUID) throws java.io.IOException;
+ method @WorkerThread public long getTotalBytes(@NonNull java.util.UUID) throws java.io.IOException;
+ method @WorkerThread @NonNull public android.app.usage.ExternalStorageStats queryExternalStatsForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException;
+ method @WorkerThread @NonNull public android.app.usage.StorageStats queryStatsForPackage(@NonNull java.util.UUID, @NonNull String, @NonNull android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
+ method @WorkerThread @NonNull public android.app.usage.StorageStats queryStatsForUid(@NonNull java.util.UUID, int) throws java.io.IOException;
+ method @WorkerThread @NonNull public android.app.usage.StorageStats queryStatsForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException;
}
public final class UsageEvents implements android.os.Parcelable {
@@ -7653,22 +7686,23 @@
public static final class UsageEvents.Event {
ctor public UsageEvents.Event();
method public int getAppStandbyBucket();
- method public java.lang.String getClassName();
+ method public String getClassName();
method public android.content.res.Configuration getConfiguration();
method public int getEventType();
- method public java.lang.String getPackageName();
- method public java.lang.String getShortcutId();
+ method public String getPackageName();
+ method public String getShortcutId();
method public long getTimeStamp();
field public static final int ACTIVITY_PAUSED = 2; // 0x2
field public static final int ACTIVITY_RESUMED = 1; // 0x1
field public static final int ACTIVITY_STOPPED = 23; // 0x17
field public static final int CONFIGURATION_CHANGE = 5; // 0x5
+ field public static final int DEVICE_SHUTDOWN = 26; // 0x1a
field public static final int FOREGROUND_SERVICE_START = 19; // 0x13
field public static final int FOREGROUND_SERVICE_STOP = 20; // 0x14
field public static final int KEYGUARD_HIDDEN = 18; // 0x12
field public static final int KEYGUARD_SHOWN = 17; // 0x11
- field public static final deprecated int MOVE_TO_BACKGROUND = 2; // 0x2
- field public static final deprecated int MOVE_TO_FOREGROUND = 1; // 0x1
+ field @Deprecated public static final int MOVE_TO_BACKGROUND = 2; // 0x2
+ field @Deprecated public static final int MOVE_TO_FOREGROUND = 1; // 0x1
field public static final int NONE = 0; // 0x0
field public static final int SCREEN_INTERACTIVE = 15; // 0xf
field public static final int SCREEN_NON_INTERACTIVE = 16; // 0x10
@@ -7686,7 +7720,7 @@
method public long getLastTimeStamp();
method public long getLastTimeUsed();
method public long getLastTimeVisible();
- method public java.lang.String getPackageName();
+ method public String getPackageName();
method public long getTotalTimeForegroundServiceUsed();
method public long getTotalTimeInForeground();
method public long getTotalTimeVisible();
@@ -7696,8 +7730,8 @@
public final class UsageStatsManager {
method public int getAppStandbyBucket();
- method public boolean isAppInactive(java.lang.String);
- method public java.util.Map<java.lang.String, android.app.usage.UsageStats> queryAndAggregateUsageStats(long, long);
+ method public boolean isAppInactive(String);
+ method public java.util.Map<java.lang.String,android.app.usage.UsageStats> queryAndAggregateUsageStats(long, long);
method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long);
method public java.util.List<android.app.usage.EventStats> queryEventStats(int, long, long);
method public android.app.usage.UsageEvents queryEvents(long, long);
@@ -7730,7 +7764,7 @@
method protected android.appwidget.AppWidgetHostView onCreateView(android.content.Context, int, android.appwidget.AppWidgetProviderInfo);
method protected void onProviderChanged(int, android.appwidget.AppWidgetProviderInfo);
method protected void onProvidersChanged();
- method public final void startAppWidgetConfigureActivityForResult(android.app.Activity, int, int, int, android.os.Bundle);
+ method public final void startAppWidgetConfigureActivityForResult(@NonNull android.app.Activity, int, int, int, @Nullable android.os.Bundle);
method public void startListening();
method public void stopListening();
}
@@ -7760,47 +7794,47 @@
method public android.appwidget.AppWidgetProviderInfo getAppWidgetInfo(int);
method public android.os.Bundle getAppWidgetOptions(int);
method public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProviders();
- method public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForPackage(java.lang.String, android.os.UserHandle);
- method public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForProfile(android.os.UserHandle);
+ method @NonNull public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForPackage(@NonNull String, @Nullable android.os.UserHandle);
+ method @NonNull public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForProfile(@Nullable android.os.UserHandle);
method public static android.appwidget.AppWidgetManager getInstance(android.content.Context);
method public boolean isRequestPinAppWidgetSupported();
method public void notifyAppWidgetViewDataChanged(int[], int);
method public void notifyAppWidgetViewDataChanged(int, int);
method public void partiallyUpdateAppWidget(int[], android.widget.RemoteViews);
method public void partiallyUpdateAppWidget(int, android.widget.RemoteViews);
- method public boolean requestPinAppWidget(android.content.ComponentName, android.os.Bundle, android.app.PendingIntent);
+ method public boolean requestPinAppWidget(@NonNull android.content.ComponentName, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent);
method public void updateAppWidget(int[], android.widget.RemoteViews);
method public void updateAppWidget(int, android.widget.RemoteViews);
method public void updateAppWidget(android.content.ComponentName, android.widget.RemoteViews);
method public void updateAppWidgetOptions(int, android.os.Bundle);
- method public void updateAppWidgetProviderInfo(android.content.ComponentName, java.lang.String);
- field public static final java.lang.String ACTION_APPWIDGET_BIND = "android.appwidget.action.APPWIDGET_BIND";
- field public static final java.lang.String ACTION_APPWIDGET_CONFIGURE = "android.appwidget.action.APPWIDGET_CONFIGURE";
- field public static final java.lang.String ACTION_APPWIDGET_DELETED = "android.appwidget.action.APPWIDGET_DELETED";
- field public static final java.lang.String ACTION_APPWIDGET_DISABLED = "android.appwidget.action.APPWIDGET_DISABLED";
- field public static final java.lang.String ACTION_APPWIDGET_ENABLED = "android.appwidget.action.APPWIDGET_ENABLED";
- field public static final java.lang.String ACTION_APPWIDGET_HOST_RESTORED = "android.appwidget.action.APPWIDGET_HOST_RESTORED";
- field public static final java.lang.String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
- field public static final java.lang.String ACTION_APPWIDGET_PICK = "android.appwidget.action.APPWIDGET_PICK";
- field public static final java.lang.String ACTION_APPWIDGET_RESTORED = "android.appwidget.action.APPWIDGET_RESTORED";
- field public static final java.lang.String ACTION_APPWIDGET_UPDATE = "android.appwidget.action.APPWIDGET_UPDATE";
- field public static final java.lang.String EXTRA_APPWIDGET_ID = "appWidgetId";
- field public static final java.lang.String EXTRA_APPWIDGET_IDS = "appWidgetIds";
- field public static final java.lang.String EXTRA_APPWIDGET_OLD_IDS = "appWidgetOldIds";
- field public static final java.lang.String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
- field public static final java.lang.String EXTRA_APPWIDGET_PREVIEW = "appWidgetPreview";
- field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider";
- field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER_PROFILE = "appWidgetProviderProfile";
- field public static final java.lang.String EXTRA_CUSTOM_EXTRAS = "customExtras";
- field public static final java.lang.String EXTRA_CUSTOM_INFO = "customInfo";
- field public static final java.lang.String EXTRA_HOST_ID = "hostId";
+ method public void updateAppWidgetProviderInfo(android.content.ComponentName, @Nullable String);
+ field public static final String ACTION_APPWIDGET_BIND = "android.appwidget.action.APPWIDGET_BIND";
+ field public static final String ACTION_APPWIDGET_CONFIGURE = "android.appwidget.action.APPWIDGET_CONFIGURE";
+ field public static final String ACTION_APPWIDGET_DELETED = "android.appwidget.action.APPWIDGET_DELETED";
+ field public static final String ACTION_APPWIDGET_DISABLED = "android.appwidget.action.APPWIDGET_DISABLED";
+ field public static final String ACTION_APPWIDGET_ENABLED = "android.appwidget.action.APPWIDGET_ENABLED";
+ field public static final String ACTION_APPWIDGET_HOST_RESTORED = "android.appwidget.action.APPWIDGET_HOST_RESTORED";
+ field public static final String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
+ field public static final String ACTION_APPWIDGET_PICK = "android.appwidget.action.APPWIDGET_PICK";
+ field public static final String ACTION_APPWIDGET_RESTORED = "android.appwidget.action.APPWIDGET_RESTORED";
+ field public static final String ACTION_APPWIDGET_UPDATE = "android.appwidget.action.APPWIDGET_UPDATE";
+ field public static final String EXTRA_APPWIDGET_ID = "appWidgetId";
+ field public static final String EXTRA_APPWIDGET_IDS = "appWidgetIds";
+ field public static final String EXTRA_APPWIDGET_OLD_IDS = "appWidgetOldIds";
+ field public static final String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
+ field public static final String EXTRA_APPWIDGET_PREVIEW = "appWidgetPreview";
+ field public static final String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider";
+ field public static final String EXTRA_APPWIDGET_PROVIDER_PROFILE = "appWidgetProviderProfile";
+ field public static final String EXTRA_CUSTOM_EXTRAS = "customExtras";
+ field public static final String EXTRA_CUSTOM_INFO = "customInfo";
+ field public static final String EXTRA_HOST_ID = "hostId";
field public static final int INVALID_APPWIDGET_ID = 0; // 0x0
- field public static final java.lang.String META_DATA_APPWIDGET_PROVIDER = "android.appwidget.provider";
- field public static final java.lang.String OPTION_APPWIDGET_HOST_CATEGORY = "appWidgetCategory";
- field public static final java.lang.String OPTION_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight";
- field public static final java.lang.String OPTION_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth";
- field public static final java.lang.String OPTION_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight";
- field public static final java.lang.String OPTION_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth";
+ field public static final String META_DATA_APPWIDGET_PROVIDER = "android.appwidget.provider";
+ field public static final String OPTION_APPWIDGET_HOST_CATEGORY = "appWidgetCategory";
+ field public static final String OPTION_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight";
+ field public static final String OPTION_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth";
+ field public static final String OPTION_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight";
+ field public static final String OPTION_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth";
}
public class AppWidgetProvider extends android.content.BroadcastReceiver {
@@ -7820,9 +7854,9 @@
method public android.appwidget.AppWidgetProviderInfo clone();
method public int describeContents();
method public final android.os.UserHandle getProfile();
- method public final android.graphics.drawable.Drawable loadIcon(android.content.Context, int);
- method public final java.lang.String loadLabel(android.content.pm.PackageManager);
- method public final android.graphics.drawable.Drawable loadPreviewImage(android.content.Context, int);
+ method public final android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context, int);
+ method public final String loadLabel(android.content.pm.PackageManager);
+ method public final android.graphics.drawable.Drawable loadPreviewImage(@NonNull android.content.Context, int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.appwidget.AppWidgetProviderInfo> CREATOR;
field public static final int RESIZE_BOTH = 3; // 0x3
@@ -7839,7 +7873,7 @@
field public int icon;
field public int initialKeyguardLayout;
field public int initialLayout;
- field public deprecated java.lang.String label;
+ field @Deprecated public String label;
field public int minHeight;
field public int minResizeHeight;
field public int minResizeWidth;
@@ -7862,33 +7896,33 @@
method public int getConnectionState(android.bluetooth.BluetoothDevice);
method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
method public boolean isA2dpPlaying(android.bluetooth.BluetoothDevice);
- field public static final java.lang.String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED";
- field public static final java.lang.String ACTION_PLAYING_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED";
+ field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED";
+ field public static final String ACTION_PLAYING_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED";
field public static final int STATE_NOT_PLAYING = 11; // 0xb
field public static final int STATE_PLAYING = 10; // 0xa
}
public final class BluetoothAdapter {
- method public boolean cancelDiscovery();
- method public static boolean checkBluetoothAddress(java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean cancelDiscovery();
+ method public static boolean checkBluetoothAddress(String);
method public void closeProfileProxy(int, android.bluetooth.BluetoothProfile);
- method public boolean disable();
- method public boolean enable();
- method public java.lang.String getAddress();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disable();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean enable();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getAddress();
method public android.bluetooth.le.BluetoothLeAdvertiser getBluetoothLeAdvertiser();
method public android.bluetooth.le.BluetoothLeScanner getBluetoothLeScanner();
- method public java.util.Set<android.bluetooth.BluetoothDevice> getBondedDevices();
- method public static synchronized android.bluetooth.BluetoothAdapter getDefaultAdapter();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.Set<android.bluetooth.BluetoothDevice> getBondedDevices();
+ method public static android.bluetooth.BluetoothAdapter getDefaultAdapter();
method public int getLeMaximumAdvertisingDataLength();
- method public java.lang.String getName();
- method public int getProfileConnectionState(int);
+ method public String getName();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getProfileConnectionState(int);
method public boolean getProfileProxy(android.content.Context, android.bluetooth.BluetoothProfile.ServiceListener, int);
- method public android.bluetooth.BluetoothDevice getRemoteDevice(java.lang.String);
+ method public android.bluetooth.BluetoothDevice getRemoteDevice(String);
method public android.bluetooth.BluetoothDevice getRemoteDevice(byte[]);
- method public int getScanMode();
- method public int getState();
- method public boolean isDiscovering();
- method public boolean isEnabled();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getScanMode();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getState();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isDiscovering();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEnabled();
method public boolean isLe2MPhySupported();
method public boolean isLeCodedPhySupported();
method public boolean isLeExtendedAdvertisingSupported();
@@ -7896,32 +7930,32 @@
method public boolean isMultipleAdvertisementSupported();
method public boolean isOffloadedFilteringSupported();
method public boolean isOffloadedScanBatchingSupported();
- method public android.bluetooth.BluetoothServerSocket listenUsingInsecureL2capChannel() throws java.io.IOException;
- method public android.bluetooth.BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord(java.lang.String, java.util.UUID) throws java.io.IOException;
- method public android.bluetooth.BluetoothServerSocket listenUsingL2capChannel() throws java.io.IOException;
- method public android.bluetooth.BluetoothServerSocket listenUsingRfcommWithServiceRecord(java.lang.String, java.util.UUID) throws java.io.IOException;
- method public boolean setName(java.lang.String);
- method public boolean startDiscovery();
- method public deprecated boolean startLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
- method public deprecated boolean startLeScan(java.util.UUID[], android.bluetooth.BluetoothAdapter.LeScanCallback);
- method public deprecated void stopLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
- field public static final java.lang.String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED";
- field public static final java.lang.String ACTION_DISCOVERY_FINISHED = "android.bluetooth.adapter.action.DISCOVERY_FINISHED";
- field public static final java.lang.String ACTION_DISCOVERY_STARTED = "android.bluetooth.adapter.action.DISCOVERY_STARTED";
- field public static final java.lang.String ACTION_LOCAL_NAME_CHANGED = "android.bluetooth.adapter.action.LOCAL_NAME_CHANGED";
- field public static final java.lang.String ACTION_REQUEST_DISCOVERABLE = "android.bluetooth.adapter.action.REQUEST_DISCOVERABLE";
- field public static final java.lang.String ACTION_REQUEST_ENABLE = "android.bluetooth.adapter.action.REQUEST_ENABLE";
- field public static final java.lang.String ACTION_SCAN_MODE_CHANGED = "android.bluetooth.adapter.action.SCAN_MODE_CHANGED";
- field public static final java.lang.String ACTION_STATE_CHANGED = "android.bluetooth.adapter.action.STATE_CHANGED";
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingInsecureL2capChannel() throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord(String, java.util.UUID) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingL2capChannel() throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingRfcommWithServiceRecord(String, java.util.UUID) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setName(String);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startDiscovery();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startLeScan(java.util.UUID[], android.bluetooth.BluetoothAdapter.LeScanCallback);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
+ field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED";
+ field public static final String ACTION_DISCOVERY_FINISHED = "android.bluetooth.adapter.action.DISCOVERY_FINISHED";
+ field public static final String ACTION_DISCOVERY_STARTED = "android.bluetooth.adapter.action.DISCOVERY_STARTED";
+ field public static final String ACTION_LOCAL_NAME_CHANGED = "android.bluetooth.adapter.action.LOCAL_NAME_CHANGED";
+ field public static final String ACTION_REQUEST_DISCOVERABLE = "android.bluetooth.adapter.action.REQUEST_DISCOVERABLE";
+ field public static final String ACTION_REQUEST_ENABLE = "android.bluetooth.adapter.action.REQUEST_ENABLE";
+ field public static final String ACTION_SCAN_MODE_CHANGED = "android.bluetooth.adapter.action.SCAN_MODE_CHANGED";
+ field public static final String ACTION_STATE_CHANGED = "android.bluetooth.adapter.action.STATE_CHANGED";
field public static final int ERROR = -2147483648; // 0x80000000
- field public static final java.lang.String EXTRA_CONNECTION_STATE = "android.bluetooth.adapter.extra.CONNECTION_STATE";
- field public static final java.lang.String EXTRA_DISCOVERABLE_DURATION = "android.bluetooth.adapter.extra.DISCOVERABLE_DURATION";
- field public static final java.lang.String EXTRA_LOCAL_NAME = "android.bluetooth.adapter.extra.LOCAL_NAME";
- field public static final java.lang.String EXTRA_PREVIOUS_CONNECTION_STATE = "android.bluetooth.adapter.extra.PREVIOUS_CONNECTION_STATE";
- field public static final java.lang.String EXTRA_PREVIOUS_SCAN_MODE = "android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE";
- field public static final java.lang.String EXTRA_PREVIOUS_STATE = "android.bluetooth.adapter.extra.PREVIOUS_STATE";
- field public static final java.lang.String EXTRA_SCAN_MODE = "android.bluetooth.adapter.extra.SCAN_MODE";
- field public static final java.lang.String EXTRA_STATE = "android.bluetooth.adapter.extra.STATE";
+ field public static final String EXTRA_CONNECTION_STATE = "android.bluetooth.adapter.extra.CONNECTION_STATE";
+ field public static final String EXTRA_DISCOVERABLE_DURATION = "android.bluetooth.adapter.extra.DISCOVERABLE_DURATION";
+ field public static final String EXTRA_LOCAL_NAME = "android.bluetooth.adapter.extra.LOCAL_NAME";
+ field public static final String EXTRA_PREVIOUS_CONNECTION_STATE = "android.bluetooth.adapter.extra.PREVIOUS_CONNECTION_STATE";
+ field public static final String EXTRA_PREVIOUS_SCAN_MODE = "android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE";
+ field public static final String EXTRA_PREVIOUS_STATE = "android.bluetooth.adapter.extra.PREVIOUS_STATE";
+ field public static final String EXTRA_SCAN_MODE = "android.bluetooth.adapter.extra.SCAN_MODE";
+ field public static final String EXTRA_STATE = "android.bluetooth.adapter.extra.STATE";
field public static final int SCAN_MODE_CONNECTABLE = 21; // 0x15
field public static final int SCAN_MODE_CONNECTABLE_DISCOVERABLE = 23; // 0x17
field public static final int SCAN_MODE_NONE = 20; // 0x14
@@ -7935,8 +7969,8 @@
field public static final int STATE_TURNING_ON = 11; // 0xb
}
- public static abstract interface BluetoothAdapter.LeScanCallback {
- method public abstract void onLeScan(android.bluetooth.BluetoothDevice, int, byte[]);
+ public static interface BluetoothAdapter.LeScanCallback {
+ method public void onLeScan(android.bluetooth.BluetoothDevice, int, byte[]);
}
public class BluetoothAssignedNumbers {
@@ -8265,31 +8299,31 @@
method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int);
method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int);
method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int, android.os.Handler);
- method public boolean createBond();
- method public android.bluetooth.BluetoothSocket createInsecureL2capChannel(int) throws java.io.IOException;
- method public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
- method public android.bluetooth.BluetoothSocket createL2capChannel(int) throws java.io.IOException;
- method public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean createBond();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createInsecureL2capChannel(int) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createL2capChannel(int) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
method public int describeContents();
- method public boolean fetchUuidsWithSdp();
- method public java.lang.String getAddress();
- method public android.bluetooth.BluetoothClass getBluetoothClass();
- method public int getBondState();
- method public java.lang.String getName();
- method public int getType();
- method public android.os.ParcelUuid[] getUuids();
- method public boolean setPairingConfirmation(boolean);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean fetchUuidsWithSdp();
+ method public String getAddress();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothClass getBluetoothClass();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getBondState();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getName();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getType();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.os.ParcelUuid[] getUuids();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPairingConfirmation(boolean);
method public boolean setPin(byte[]);
method public void writeToParcel(android.os.Parcel, int);
- field public static final java.lang.String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
- field public static final java.lang.String ACTION_ACL_DISCONNECTED = "android.bluetooth.device.action.ACL_DISCONNECTED";
- field public static final java.lang.String ACTION_ACL_DISCONNECT_REQUESTED = "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED";
- field public static final java.lang.String ACTION_BOND_STATE_CHANGED = "android.bluetooth.device.action.BOND_STATE_CHANGED";
- field public static final java.lang.String ACTION_CLASS_CHANGED = "android.bluetooth.device.action.CLASS_CHANGED";
- field public static final java.lang.String ACTION_FOUND = "android.bluetooth.device.action.FOUND";
- field public static final java.lang.String ACTION_NAME_CHANGED = "android.bluetooth.device.action.NAME_CHANGED";
- field public static final java.lang.String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST";
- field public static final java.lang.String ACTION_UUID = "android.bluetooth.device.action.UUID";
+ field public static final String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
+ field public static final String ACTION_ACL_DISCONNECTED = "android.bluetooth.device.action.ACL_DISCONNECTED";
+ field public static final String ACTION_ACL_DISCONNECT_REQUESTED = "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED";
+ field public static final String ACTION_BOND_STATE_CHANGED = "android.bluetooth.device.action.BOND_STATE_CHANGED";
+ field public static final String ACTION_CLASS_CHANGED = "android.bluetooth.device.action.CLASS_CHANGED";
+ field public static final String ACTION_FOUND = "android.bluetooth.device.action.FOUND";
+ field public static final String ACTION_NAME_CHANGED = "android.bluetooth.device.action.NAME_CHANGED";
+ field public static final String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST";
+ field public static final String ACTION_UUID = "android.bluetooth.device.action.UUID";
field public static final int BOND_BONDED = 12; // 0xc
field public static final int BOND_BONDING = 11; // 0xb
field public static final int BOND_NONE = 10; // 0xa
@@ -8299,15 +8333,15 @@
field public static final int DEVICE_TYPE_LE = 2; // 0x2
field public static final int DEVICE_TYPE_UNKNOWN = 0; // 0x0
field public static final int ERROR = -2147483648; // 0x80000000
- field public static final java.lang.String EXTRA_BOND_STATE = "android.bluetooth.device.extra.BOND_STATE";
- field public static final java.lang.String EXTRA_CLASS = "android.bluetooth.device.extra.CLASS";
- field public static final java.lang.String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
- field public static final java.lang.String EXTRA_NAME = "android.bluetooth.device.extra.NAME";
- field public static final java.lang.String EXTRA_PAIRING_KEY = "android.bluetooth.device.extra.PAIRING_KEY";
- field public static final java.lang.String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT";
- field public static final java.lang.String EXTRA_PREVIOUS_BOND_STATE = "android.bluetooth.device.extra.PREVIOUS_BOND_STATE";
- field public static final java.lang.String EXTRA_RSSI = "android.bluetooth.device.extra.RSSI";
- field public static final java.lang.String EXTRA_UUID = "android.bluetooth.device.extra.UUID";
+ field public static final String EXTRA_BOND_STATE = "android.bluetooth.device.extra.BOND_STATE";
+ field public static final String EXTRA_CLASS = "android.bluetooth.device.extra.CLASS";
+ field public static final String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
+ field public static final String EXTRA_NAME = "android.bluetooth.device.extra.NAME";
+ field public static final String EXTRA_PAIRING_KEY = "android.bluetooth.device.extra.PAIRING_KEY";
+ field public static final String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT";
+ field public static final String EXTRA_PREVIOUS_BOND_STATE = "android.bluetooth.device.extra.PREVIOUS_BOND_STATE";
+ field public static final String EXTRA_RSSI = "android.bluetooth.device.extra.RSSI";
+ field public static final String EXTRA_UUID = "android.bluetooth.device.extra.UUID";
field public static final int PAIRING_VARIANT_PASSKEY_CONFIRMATION = 2; // 0x2
field public static final int PAIRING_VARIANT_PIN = 0; // 0x0
field public static final int PHY_LE_1M = 1; // 0x1
@@ -8326,7 +8360,7 @@
public final class BluetoothGatt implements android.bluetooth.BluetoothProfile {
method public void abortReliableWrite();
- method public deprecated void abortReliableWrite(android.bluetooth.BluetoothDevice);
+ method @Deprecated public void abortReliableWrite(android.bluetooth.BluetoothDevice);
method public boolean beginReliableWrite();
method public void close();
method public boolean connect();
@@ -8386,20 +8420,20 @@
method public int describeContents();
method public android.bluetooth.BluetoothGattDescriptor getDescriptor(java.util.UUID);
method public java.util.List<android.bluetooth.BluetoothGattDescriptor> getDescriptors();
- method public java.lang.Float getFloatValue(int, int);
+ method public Float getFloatValue(int, int);
method public int getInstanceId();
- method public java.lang.Integer getIntValue(int, int);
+ method public Integer getIntValue(int, int);
method public int getPermissions();
method public int getProperties();
method public android.bluetooth.BluetoothGattService getService();
- method public java.lang.String getStringValue(int);
+ method public String getStringValue(int);
method public java.util.UUID getUuid();
method public byte[] getValue();
method public int getWriteType();
method public boolean setValue(byte[]);
method public boolean setValue(int, int, int);
method public boolean setValue(int, int, int, int);
- method public boolean setValue(java.lang.String);
+ method public boolean setValue(String);
method public void setWriteType(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattCharacteristic> CREATOR;
@@ -8513,65 +8547,65 @@
method public int getConnectionState(android.bluetooth.BluetoothDevice);
method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
method public boolean isAudioConnected(android.bluetooth.BluetoothDevice);
- method public boolean sendVendorSpecificResultCode(android.bluetooth.BluetoothDevice, java.lang.String, java.lang.String);
+ method public boolean sendVendorSpecificResultCode(android.bluetooth.BluetoothDevice, String, String);
method public boolean startVoiceRecognition(android.bluetooth.BluetoothDevice);
method public boolean stopVoiceRecognition(android.bluetooth.BluetoothDevice);
- field public static final java.lang.String ACTION_AUDIO_STATE_CHANGED = "android.bluetooth.headset.profile.action.AUDIO_STATE_CHANGED";
- field public static final java.lang.String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED";
- field public static final java.lang.String ACTION_VENDOR_SPECIFIC_HEADSET_EVENT = "android.bluetooth.headset.action.VENDOR_SPECIFIC_HEADSET_EVENT";
+ field public static final String ACTION_AUDIO_STATE_CHANGED = "android.bluetooth.headset.profile.action.AUDIO_STATE_CHANGED";
+ field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED";
+ field public static final String ACTION_VENDOR_SPECIFIC_HEADSET_EVENT = "android.bluetooth.headset.action.VENDOR_SPECIFIC_HEADSET_EVENT";
field public static final int AT_CMD_TYPE_ACTION = 4; // 0x4
field public static final int AT_CMD_TYPE_BASIC = 3; // 0x3
field public static final int AT_CMD_TYPE_READ = 0; // 0x0
field public static final int AT_CMD_TYPE_SET = 2; // 0x2
field public static final int AT_CMD_TYPE_TEST = 1; // 0x1
- field public static final java.lang.String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_ARGS";
- field public static final java.lang.String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD";
- field public static final java.lang.String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE";
+ field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_ARGS";
+ field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD";
+ field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE";
field public static final int STATE_AUDIO_CONNECTED = 12; // 0xc
field public static final int STATE_AUDIO_CONNECTING = 11; // 0xb
field public static final int STATE_AUDIO_DISCONNECTED = 10; // 0xa
- field public static final java.lang.String VENDOR_RESULT_CODE_COMMAND_ANDROID = "+ANDROID";
- field public static final java.lang.String VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY = "android.bluetooth.headset.intent.category.companyid";
+ field public static final String VENDOR_RESULT_CODE_COMMAND_ANDROID = "+ANDROID";
+ field public static final String VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY = "android.bluetooth.headset.intent.category.companyid";
}
- public final deprecated class BluetoothHealth implements android.bluetooth.BluetoothProfile {
- ctor public BluetoothHealth();
- method public deprecated boolean connectChannelToSource(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
- method public deprecated boolean disconnectChannel(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration, int);
- method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
- method public int getConnectionState(android.bluetooth.BluetoothDevice);
- method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
- method public deprecated android.os.ParcelFileDescriptor getMainChannelFd(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
- method public deprecated boolean registerSinkAppConfiguration(java.lang.String, int, android.bluetooth.BluetoothHealthCallback);
- method public deprecated boolean unregisterAppConfiguration(android.bluetooth.BluetoothHealthAppConfiguration);
- field public static final deprecated int APP_CONFIG_REGISTRATION_FAILURE = 1; // 0x1
- field public static final deprecated int APP_CONFIG_REGISTRATION_SUCCESS = 0; // 0x0
- field public static final deprecated int APP_CONFIG_UNREGISTRATION_FAILURE = 3; // 0x3
- field public static final deprecated int APP_CONFIG_UNREGISTRATION_SUCCESS = 2; // 0x2
- field public static final deprecated int CHANNEL_TYPE_RELIABLE = 10; // 0xa
- field public static final deprecated int CHANNEL_TYPE_STREAMING = 11; // 0xb
- field public static final deprecated int SINK_ROLE = 2; // 0x2
- field public static final deprecated int SOURCE_ROLE = 1; // 0x1
- field public static final deprecated int STATE_CHANNEL_CONNECTED = 2; // 0x2
- field public static final deprecated int STATE_CHANNEL_CONNECTING = 1; // 0x1
- field public static final deprecated int STATE_CHANNEL_DISCONNECTED = 0; // 0x0
- field public static final deprecated int STATE_CHANNEL_DISCONNECTING = 3; // 0x3
+ @Deprecated public final class BluetoothHealth implements android.bluetooth.BluetoothProfile {
+ ctor @Deprecated public BluetoothHealth();
+ method @Deprecated public boolean connectChannelToSource(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
+ method @Deprecated public boolean disconnectChannel(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration, int);
+ method @Deprecated public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+ method @Deprecated public int getConnectionState(android.bluetooth.BluetoothDevice);
+ method @Deprecated public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
+ method @Deprecated public android.os.ParcelFileDescriptor getMainChannelFd(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
+ method @Deprecated public boolean registerSinkAppConfiguration(String, int, android.bluetooth.BluetoothHealthCallback);
+ method @Deprecated public boolean unregisterAppConfiguration(android.bluetooth.BluetoothHealthAppConfiguration);
+ field @Deprecated public static final int APP_CONFIG_REGISTRATION_FAILURE = 1; // 0x1
+ field @Deprecated public static final int APP_CONFIG_REGISTRATION_SUCCESS = 0; // 0x0
+ field @Deprecated public static final int APP_CONFIG_UNREGISTRATION_FAILURE = 3; // 0x3
+ field @Deprecated public static final int APP_CONFIG_UNREGISTRATION_SUCCESS = 2; // 0x2
+ field @Deprecated public static final int CHANNEL_TYPE_RELIABLE = 10; // 0xa
+ field @Deprecated public static final int CHANNEL_TYPE_STREAMING = 11; // 0xb
+ field @Deprecated public static final int SINK_ROLE = 2; // 0x2
+ field @Deprecated public static final int SOURCE_ROLE = 1; // 0x1
+ field @Deprecated public static final int STATE_CHANNEL_CONNECTED = 2; // 0x2
+ field @Deprecated public static final int STATE_CHANNEL_CONNECTING = 1; // 0x1
+ field @Deprecated public static final int STATE_CHANNEL_DISCONNECTED = 0; // 0x0
+ field @Deprecated public static final int STATE_CHANNEL_DISCONNECTING = 3; // 0x3
}
- public final deprecated class BluetoothHealthAppConfiguration implements android.os.Parcelable {
- ctor public BluetoothHealthAppConfiguration();
- method public int describeContents();
- method public deprecated int getDataType();
- method public deprecated java.lang.String getName();
- method public deprecated int getRole();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final deprecated android.os.Parcelable.Creator<android.bluetooth.BluetoothHealthAppConfiguration> CREATOR;
+ @Deprecated public final class BluetoothHealthAppConfiguration implements android.os.Parcelable {
+ ctor @Deprecated public BluetoothHealthAppConfiguration();
+ method @Deprecated public int describeContents();
+ method @Deprecated public int getDataType();
+ method @Deprecated public String getName();
+ method @Deprecated public int getRole();
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHealthAppConfiguration> CREATOR;
}
- public abstract deprecated class BluetoothHealthCallback {
- ctor public BluetoothHealthCallback();
- method public deprecated void onHealthAppConfigurationStatusChange(android.bluetooth.BluetoothHealthAppConfiguration, int);
- method public deprecated void onHealthChannelStateChange(android.bluetooth.BluetoothHealthAppConfiguration, android.bluetooth.BluetoothDevice, int, int, android.os.ParcelFileDescriptor, int);
+ @Deprecated public abstract class BluetoothHealthCallback {
+ ctor @Deprecated public BluetoothHealthCallback();
+ method @Deprecated @BinderThread public void onHealthAppConfigurationStatusChange(android.bluetooth.BluetoothHealthAppConfiguration, int);
+ method @Deprecated @BinderThread public void onHealthChannelStateChange(android.bluetooth.BluetoothHealthAppConfiguration, android.bluetooth.BluetoothDevice, int, int, android.os.ParcelFileDescriptor, int);
}
public final class BluetoothHidDevice implements android.bluetooth.BluetoothProfile {
@@ -8585,7 +8619,7 @@
method public boolean reportError(android.bluetooth.BluetoothDevice, byte);
method public boolean sendReport(android.bluetooth.BluetoothDevice, int, byte[]);
method public boolean unregisterApp();
- field public static final java.lang.String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.hiddevice.profile.action.CONNECTION_STATE_CHANGED";
+ field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.hiddevice.profile.action.CONNECTION_STATE_CHANGED";
field public static final byte ERROR_RSP_INVALID_PARAM = 4; // 0x4
field public static final byte ERROR_RSP_INVALID_RPT_ID = 2; // 0x2
field public static final byte ERROR_RSP_NOT_READY = 1; // 0x1
@@ -8610,7 +8644,7 @@
field public static final byte SUBCLASS2_UNCATEGORIZED = 0; // 0x0
}
- public static abstract class BluetoothHidDevice.Callback {
+ public abstract static class BluetoothHidDevice.Callback {
ctor public BluetoothHidDevice.Callback();
method public void onAppStatusChanged(android.bluetooth.BluetoothDevice, boolean);
method public void onConnectionStateChanged(android.bluetooth.BluetoothDevice, int);
@@ -8639,12 +8673,12 @@
}
public final class BluetoothHidDeviceAppSdpSettings implements android.os.Parcelable {
- ctor public BluetoothHidDeviceAppSdpSettings(java.lang.String, java.lang.String, java.lang.String, byte, byte[]);
+ ctor public BluetoothHidDeviceAppSdpSettings(String, String, String, byte, byte[]);
method public int describeContents();
- method public java.lang.String getDescription();
+ method public String getDescription();
method public byte[] getDescriptors();
- method public java.lang.String getName();
- method public java.lang.String getProvider();
+ method public String getName();
+ method public String getProvider();
method public byte getSubclass();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHidDeviceAppSdpSettings> CREATOR;
@@ -8652,23 +8686,23 @@
public final class BluetoothManager {
method public android.bluetooth.BluetoothAdapter getAdapter();
- method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices(int);
- method public int getConnectionState(android.bluetooth.BluetoothDevice, int);
- method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int, int[]);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices(int);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionState(android.bluetooth.BluetoothDevice, int);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int, int[]);
method public android.bluetooth.BluetoothGattServer openGattServer(android.content.Context, android.bluetooth.BluetoothGattServerCallback);
}
- public abstract interface BluetoothProfile {
- method public abstract java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
- method public abstract int getConnectionState(android.bluetooth.BluetoothDevice);
- method public abstract java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
+ public interface BluetoothProfile {
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionState(android.bluetooth.BluetoothDevice);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
field public static final int A2DP = 2; // 0x2
- field public static final java.lang.String EXTRA_PREVIOUS_STATE = "android.bluetooth.profile.extra.PREVIOUS_STATE";
- field public static final java.lang.String EXTRA_STATE = "android.bluetooth.profile.extra.STATE";
+ field public static final String EXTRA_PREVIOUS_STATE = "android.bluetooth.profile.extra.PREVIOUS_STATE";
+ field public static final String EXTRA_STATE = "android.bluetooth.profile.extra.STATE";
field public static final int GATT = 7; // 0x7
field public static final int GATT_SERVER = 8; // 0x8
field public static final int HEADSET = 1; // 0x1
- field public static final deprecated int HEALTH = 3; // 0x3
+ field @Deprecated public static final int HEALTH = 3; // 0x3
field public static final int HID_DEVICE = 19; // 0x13
field public static final int SAP = 10; // 0xa
field public static final int STATE_CONNECTED = 2; // 0x2
@@ -8677,9 +8711,9 @@
field public static final int STATE_DISCONNECTING = 3; // 0x3
}
- public static abstract interface BluetoothProfile.ServiceListener {
- method public abstract void onServiceConnected(int, android.bluetooth.BluetoothProfile);
- method public abstract void onServiceDisconnected(int);
+ public static interface BluetoothProfile.ServiceListener {
+ method public void onServiceConnected(int, android.bluetooth.BluetoothProfile);
+ method public void onServiceDisconnected(int);
}
public final class BluetoothServerSocket implements java.io.Closeable {
@@ -8724,7 +8758,7 @@
method public boolean getIncludeDeviceName();
method public boolean getIncludeTxPowerLevel();
method public android.util.SparseArray<byte[]> getManufacturerSpecificData();
- method public java.util.Map<android.os.ParcelUuid, byte[]> getServiceData();
+ method public java.util.Map<android.os.ParcelUuid,byte[]> getServiceData();
method public java.util.List<android.os.ParcelUuid> getServiceUuids();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertiseData> CREATOR;
@@ -8848,14 +8882,14 @@
public final class BluetoothLeScanner {
method public void flushPendingScanResults(android.bluetooth.le.ScanCallback);
- method public void startScan(android.bluetooth.le.ScanCallback);
- method public void startScan(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
- method public int startScan(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.app.PendingIntent);
- method public void stopScan(android.bluetooth.le.ScanCallback);
- method public void stopScan(android.app.PendingIntent);
- field public static final java.lang.String EXTRA_CALLBACK_TYPE = "android.bluetooth.le.extra.CALLBACK_TYPE";
- field public static final java.lang.String EXTRA_ERROR_CODE = "android.bluetooth.le.extra.ERROR_CODE";
- field public static final java.lang.String EXTRA_LIST_SCAN_RESULT = "android.bluetooth.le.extra.LIST_SCAN_RESULT";
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void startScan(android.bluetooth.le.ScanCallback);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void startScan(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public int startScan(@Nullable java.util.List<android.bluetooth.le.ScanFilter>, @Nullable android.bluetooth.le.ScanSettings, @NonNull android.app.PendingIntent);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopScan(android.bluetooth.le.ScanCallback);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopScan(android.app.PendingIntent);
+ field public static final String EXTRA_CALLBACK_TYPE = "android.bluetooth.le.extra.CALLBACK_TYPE";
+ field public static final String EXTRA_ERROR_CODE = "android.bluetooth.le.extra.ERROR_CODE";
+ field public static final String EXTRA_LIST_SCAN_RESULT = "android.bluetooth.le.extra.LIST_SCAN_RESULT";
}
public final class PeriodicAdvertisingParameters implements android.os.Parcelable {
@@ -8886,18 +8920,18 @@
public final class ScanFilter implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getDeviceAddress();
- method public java.lang.String getDeviceName();
- method public byte[] getManufacturerData();
- method public byte[] getManufacturerDataMask();
+ method @Nullable public String getDeviceAddress();
+ method @Nullable public String getDeviceName();
+ method @Nullable public byte[] getManufacturerData();
+ method @Nullable public byte[] getManufacturerDataMask();
method public int getManufacturerId();
- method public byte[] getServiceData();
- method public byte[] getServiceDataMask();
- method public android.os.ParcelUuid getServiceDataUuid();
- method public android.os.ParcelUuid getServiceSolicitationUuid();
- method public android.os.ParcelUuid getServiceSolicitationUuidMask();
- method public android.os.ParcelUuid getServiceUuid();
- method public android.os.ParcelUuid getServiceUuidMask();
+ method @Nullable public byte[] getServiceData();
+ method @Nullable public byte[] getServiceDataMask();
+ method @Nullable public android.os.ParcelUuid getServiceDataUuid();
+ method @Nullable public android.os.ParcelUuid getServiceSolicitationUuid();
+ method @Nullable public android.os.ParcelUuid getServiceSolicitationUuidMask();
+ method @Nullable public android.os.ParcelUuid getServiceUuid();
+ method @Nullable public android.os.ParcelUuid getServiceUuidMask();
method public boolean matches(android.bluetooth.le.ScanResult);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanFilter> CREATOR;
@@ -8906,8 +8940,8 @@
public static final class ScanFilter.Builder {
ctor public ScanFilter.Builder();
method public android.bluetooth.le.ScanFilter build();
- method public android.bluetooth.le.ScanFilter.Builder setDeviceAddress(java.lang.String);
- method public android.bluetooth.le.ScanFilter.Builder setDeviceName(java.lang.String);
+ method public android.bluetooth.le.ScanFilter.Builder setDeviceAddress(String);
+ method public android.bluetooth.le.ScanFilter.Builder setDeviceName(String);
method public android.bluetooth.le.ScanFilter.Builder setManufacturerData(int, byte[]);
method public android.bluetooth.le.ScanFilter.Builder setManufacturerData(int, byte[], byte[]);
method public android.bluetooth.le.ScanFilter.Builder setServiceData(android.os.ParcelUuid, byte[]);
@@ -8921,18 +8955,18 @@
public final class ScanRecord {
method public int getAdvertiseFlags();
method public byte[] getBytes();
- method public java.lang.String getDeviceName();
+ method @Nullable public String getDeviceName();
method public android.util.SparseArray<byte[]> getManufacturerSpecificData();
- method public byte[] getManufacturerSpecificData(int);
- method public java.util.Map<android.os.ParcelUuid, byte[]> getServiceData();
- method public byte[] getServiceData(android.os.ParcelUuid);
- method public java.util.List<android.os.ParcelUuid> getServiceSolicitationUuids();
+ method @Nullable public byte[] getManufacturerSpecificData(int);
+ method public java.util.Map<android.os.ParcelUuid,byte[]> getServiceData();
+ method @Nullable public byte[] getServiceData(android.os.ParcelUuid);
+ method @Nullable public java.util.List<android.os.ParcelUuid> getServiceSolicitationUuids();
method public java.util.List<android.os.ParcelUuid> getServiceUuids();
method public int getTxPowerLevel();
}
public final class ScanResult implements android.os.Parcelable {
- ctor public deprecated ScanResult(android.bluetooth.BluetoothDevice, android.bluetooth.le.ScanRecord, int, long);
+ ctor @Deprecated public ScanResult(android.bluetooth.BluetoothDevice, android.bluetooth.le.ScanRecord, int, long);
ctor public ScanResult(android.bluetooth.BluetoothDevice, int, int, int, int, int, int, int, android.bluetooth.le.ScanRecord, long);
method public int describeContents();
method public int getAdvertisingSid();
@@ -8941,7 +8975,7 @@
method public int getPeriodicAdvertisingInterval();
method public int getPrimaryPhy();
method public int getRssi();
- method public android.bluetooth.le.ScanRecord getScanRecord();
+ method @Nullable public android.bluetooth.le.ScanRecord getScanRecord();
method public int getSecondaryPhy();
method public long getTimestampNanos();
method public int getTxPower();
@@ -9006,12 +9040,12 @@
public static final class AssociationRequest.Builder {
ctor public AssociationRequest.Builder();
- method public android.companion.AssociationRequest.Builder addDeviceFilter(android.companion.DeviceFilter<?>);
- method public android.companion.AssociationRequest build();
- method public android.companion.AssociationRequest.Builder setSingleDevice(boolean);
+ method @NonNull public android.companion.AssociationRequest.Builder addDeviceFilter(@Nullable android.companion.DeviceFilter<?>);
+ method @NonNull public android.companion.AssociationRequest build();
+ method @NonNull public android.companion.AssociationRequest.Builder setSingleDevice(boolean);
}
- public final class BluetoothDeviceFilter implements android.companion.DeviceFilter {
+ public final class BluetoothDeviceFilter implements android.companion.DeviceFilter<android.bluetooth.BluetoothDevice> {
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.companion.BluetoothDeviceFilter> CREATOR;
@@ -9019,13 +9053,13 @@
public static final class BluetoothDeviceFilter.Builder {
ctor public BluetoothDeviceFilter.Builder();
- method public android.companion.BluetoothDeviceFilter.Builder addServiceUuid(android.os.ParcelUuid, android.os.ParcelUuid);
- method public android.companion.BluetoothDeviceFilter build();
- method public android.companion.BluetoothDeviceFilter.Builder setAddress(java.lang.String);
- method public android.companion.BluetoothDeviceFilter.Builder setNamePattern(java.util.regex.Pattern);
+ method @NonNull public android.companion.BluetoothDeviceFilter.Builder addServiceUuid(@Nullable android.os.ParcelUuid, @Nullable android.os.ParcelUuid);
+ method @NonNull public android.companion.BluetoothDeviceFilter build();
+ method @NonNull public android.companion.BluetoothDeviceFilter.Builder setAddress(@Nullable String);
+ method public android.companion.BluetoothDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
}
- public final class BluetoothLeDeviceFilter implements android.companion.DeviceFilter {
+ public final class BluetoothLeDeviceFilter implements android.companion.DeviceFilter<android.bluetooth.le.ScanResult> {
method public int describeContents();
method public static int getRenamePrefixLengthLimit();
method public void writeToParcel(android.os.Parcel, int);
@@ -9034,33 +9068,33 @@
public static final class BluetoothLeDeviceFilter.Builder {
ctor public BluetoothLeDeviceFilter.Builder();
- method public android.companion.BluetoothLeDeviceFilter build();
- method public android.companion.BluetoothLeDeviceFilter.Builder setNamePattern(java.util.regex.Pattern);
- method public android.companion.BluetoothLeDeviceFilter.Builder setRawDataFilter(byte[], byte[]);
- method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(java.lang.String, java.lang.String, int, int, java.nio.ByteOrder);
- method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromName(java.lang.String, java.lang.String, int, int);
- method public android.companion.BluetoothLeDeviceFilter.Builder setScanFilter(android.bluetooth.le.ScanFilter);
+ method @NonNull public android.companion.BluetoothLeDeviceFilter build();
+ method public android.companion.BluetoothLeDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
+ method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRawDataFilter(@NonNull byte[], @Nullable byte[]);
+ method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(@NonNull String, @NonNull String, int, int, java.nio.ByteOrder);
+ method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromName(@NonNull String, @NonNull String, int, int);
+ method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setScanFilter(@Nullable android.bluetooth.le.ScanFilter);
}
public final class CompanionDeviceManager {
- method public void associate(android.companion.AssociationRequest, android.companion.CompanionDeviceManager.Callback, android.os.Handler);
- method public void disassociate(java.lang.String);
- method public java.util.List<java.lang.String> getAssociations();
+ method public void associate(@NonNull android.companion.AssociationRequest, @NonNull android.companion.CompanionDeviceManager.Callback, @Nullable android.os.Handler);
+ method public void disassociate(@NonNull String);
+ method @NonNull public java.util.List<java.lang.String> getAssociations();
method public boolean hasNotificationAccess(android.content.ComponentName);
method public void requestNotificationAccess(android.content.ComponentName);
- field public static final java.lang.String EXTRA_DEVICE = "android.companion.extra.DEVICE";
+ field public static final String EXTRA_DEVICE = "android.companion.extra.DEVICE";
}
- public static abstract class CompanionDeviceManager.Callback {
+ public abstract static class CompanionDeviceManager.Callback {
ctor public CompanionDeviceManager.Callback();
method public abstract void onDeviceFound(android.content.IntentSender);
- method public abstract void onFailure(java.lang.CharSequence);
+ method public abstract void onFailure(CharSequence);
}
- public abstract interface DeviceFilter<D extends android.os.Parcelable> implements android.os.Parcelable {
+ public interface DeviceFilter<D extends android.os.Parcelable> extends android.os.Parcelable {
}
- public final class WifiDeviceFilter implements android.companion.DeviceFilter {
+ public final class WifiDeviceFilter implements android.companion.DeviceFilter<android.net.wifi.ScanResult> {
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.companion.WifiDeviceFilter> CREATOR;
@@ -9068,8 +9102,8 @@
public static final class WifiDeviceFilter.Builder {
ctor public WifiDeviceFilter.Builder();
- method public android.companion.WifiDeviceFilter build();
- method public android.companion.WifiDeviceFilter.Builder setNamePattern(java.util.regex.Pattern);
+ method @NonNull public android.companion.WifiDeviceFilter build();
+ method public android.companion.WifiDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
}
}
@@ -9081,42 +9115,42 @@
ctor public AbstractThreadedSyncAdapter(android.content.Context, boolean, boolean);
method public android.content.Context getContext();
method public final android.os.IBinder getSyncAdapterBinder();
- method public abstract void onPerformSync(android.accounts.Account, android.os.Bundle, java.lang.String, android.content.ContentProviderClient, android.content.SyncResult);
- method public void onSecurityException(android.accounts.Account, android.os.Bundle, java.lang.String, android.content.SyncResult);
+ method public abstract void onPerformSync(android.accounts.Account, android.os.Bundle, String, android.content.ContentProviderClient, android.content.SyncResult);
+ method public void onSecurityException(android.accounts.Account, android.os.Bundle, String, android.content.SyncResult);
method public void onSyncCanceled();
- method public void onSyncCanceled(java.lang.Thread);
- method public boolean onUnsyncableAccount();
- field public static final deprecated int LOG_SYNC_DETAILS = 2743; // 0xab7
+ method public void onSyncCanceled(Thread);
+ method @MainThread public boolean onUnsyncableAccount();
+ field @Deprecated public static final int LOG_SYNC_DETAILS = 2743; // 0xab7
}
public class ActivityNotFoundException extends java.lang.RuntimeException {
ctor public ActivityNotFoundException();
- ctor public ActivityNotFoundException(java.lang.String);
+ ctor public ActivityNotFoundException(String);
}
public abstract class AsyncQueryHandler extends android.os.Handler {
ctor public AsyncQueryHandler(android.content.ContentResolver);
method public final void cancelOperation(int);
method protected android.os.Handler createHandler(android.os.Looper);
- method protected void onDeleteComplete(int, java.lang.Object, int);
- method protected void onInsertComplete(int, java.lang.Object, android.net.Uri);
- method protected void onQueryComplete(int, java.lang.Object, android.database.Cursor);
- method protected void onUpdateComplete(int, java.lang.Object, int);
- method public final void startDelete(int, java.lang.Object, android.net.Uri, java.lang.String, java.lang.String[]);
- method public final void startInsert(int, java.lang.Object, android.net.Uri, android.content.ContentValues);
- method public void startQuery(int, java.lang.Object, android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public final void startUpdate(int, java.lang.Object, android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ method protected void onDeleteComplete(int, Object, int);
+ method protected void onInsertComplete(int, Object, android.net.Uri);
+ method protected void onQueryComplete(int, Object, android.database.Cursor);
+ method protected void onUpdateComplete(int, Object, int);
+ method public final void startDelete(int, Object, android.net.Uri, String, String[]);
+ method public final void startInsert(int, Object, android.net.Uri, android.content.ContentValues);
+ method public void startQuery(int, Object, android.net.Uri, String[], String, String[], String);
+ method public final void startUpdate(int, Object, android.net.Uri, android.content.ContentValues, String, String[]);
}
protected static final class AsyncQueryHandler.WorkerArgs {
ctor protected AsyncQueryHandler.WorkerArgs();
- field public java.lang.Object cookie;
+ field public Object cookie;
field public android.os.Handler handler;
- field public java.lang.String orderBy;
- field public java.lang.String[] projection;
- field public java.lang.Object result;
- field public java.lang.String selection;
- field public java.lang.String[] selectionArgs;
+ field public String orderBy;
+ field public String[] projection;
+ field public Object result;
+ field public String selection;
+ field public String[] selectionArgs;
field public android.net.Uri uri;
field public android.content.ContentValues values;
}
@@ -9125,14 +9159,14 @@
ctor public AsyncQueryHandler.WorkerHandler(android.os.Looper);
}
- public abstract deprecated class AsyncTaskLoader<D> extends android.content.Loader {
- ctor public AsyncTaskLoader(android.content.Context);
- method public void cancelLoadInBackground();
- method public boolean isLoadInBackgroundCanceled();
- method public abstract D loadInBackground();
- method public void onCanceled(D);
- method protected D onLoadInBackground();
- method public void setUpdateThrottle(long);
+ @Deprecated public abstract class AsyncTaskLoader<D> extends android.content.Loader<D> {
+ ctor @Deprecated public AsyncTaskLoader(android.content.Context);
+ method @Deprecated public void cancelLoadInBackground();
+ method @Deprecated public boolean isLoadInBackgroundCanceled();
+ method @Deprecated public abstract D loadInBackground();
+ method @Deprecated public void onCanceled(D);
+ method @Deprecated protected D onLoadInBackground();
+ method @Deprecated public void setUpdateThrottle(long);
}
public abstract class BroadcastReceiver {
@@ -9142,7 +9176,7 @@
method public final boolean getAbortBroadcast();
method public final boolean getDebugUnregister();
method public final int getResultCode();
- method public final java.lang.String getResultData();
+ method public final String getResultData();
method public final android.os.Bundle getResultExtras(boolean);
method public final android.content.BroadcastReceiver.PendingResult goAsync();
method public final boolean isInitialStickyBroadcast();
@@ -9151,9 +9185,9 @@
method public android.os.IBinder peekService(android.content.Context, android.content.Intent);
method public final void setDebugUnregister(boolean);
method public final void setOrderedHint(boolean);
- method public final void setResult(int, java.lang.String, android.os.Bundle);
+ method public final void setResult(int, String, android.os.Bundle);
method public final void setResultCode(int);
- method public final void setResultData(java.lang.String);
+ method public final void setResultData(String);
method public final void setResultExtras(android.os.Bundle);
}
@@ -9163,16 +9197,16 @@
method public final void finish();
method public final boolean getAbortBroadcast();
method public final int getResultCode();
- method public final java.lang.String getResultData();
+ method public final String getResultData();
method public final android.os.Bundle getResultExtras(boolean);
- method public final void setResult(int, java.lang.String, android.os.Bundle);
+ method public final void setResult(int, String, android.os.Bundle);
method public final void setResultCode(int);
- method public final void setResultData(java.lang.String);
+ method public final void setResultData(String);
method public final void setResultExtras(android.os.Bundle);
}
public class ClipData implements android.os.Parcelable {
- ctor public ClipData(java.lang.CharSequence, java.lang.String[], android.content.ClipData.Item);
+ ctor public ClipData(CharSequence, String[], android.content.ClipData.Item);
ctor public ClipData(android.content.ClipDescription, android.content.ClipData.Item);
ctor public ClipData(android.content.ClipData);
method public void addItem(android.content.ClipData.Item);
@@ -9181,76 +9215,76 @@
method public android.content.ClipDescription getDescription();
method public android.content.ClipData.Item getItemAt(int);
method public int getItemCount();
- method public static android.content.ClipData newHtmlText(java.lang.CharSequence, java.lang.CharSequence, java.lang.String);
- method public static android.content.ClipData newIntent(java.lang.CharSequence, android.content.Intent);
- method public static android.content.ClipData newPlainText(java.lang.CharSequence, java.lang.CharSequence);
- method public static android.content.ClipData newRawUri(java.lang.CharSequence, android.net.Uri);
- method public static android.content.ClipData newUri(android.content.ContentResolver, java.lang.CharSequence, android.net.Uri);
+ method public static android.content.ClipData newHtmlText(CharSequence, CharSequence, String);
+ method public static android.content.ClipData newIntent(CharSequence, android.content.Intent);
+ method public static android.content.ClipData newPlainText(CharSequence, CharSequence);
+ method public static android.content.ClipData newRawUri(CharSequence, android.net.Uri);
+ method public static android.content.ClipData newUri(android.content.ContentResolver, CharSequence, android.net.Uri);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.ClipData> CREATOR;
}
public static class ClipData.Item {
- ctor public ClipData.Item(java.lang.CharSequence);
- ctor public ClipData.Item(java.lang.CharSequence, java.lang.String);
+ ctor public ClipData.Item(CharSequence);
+ ctor public ClipData.Item(CharSequence, String);
ctor public ClipData.Item(android.content.Intent);
ctor public ClipData.Item(android.net.Uri);
- ctor public ClipData.Item(java.lang.CharSequence, android.content.Intent, android.net.Uri);
- ctor public ClipData.Item(java.lang.CharSequence, java.lang.String, android.content.Intent, android.net.Uri);
- method public java.lang.String coerceToHtmlText(android.content.Context);
- method public java.lang.CharSequence coerceToStyledText(android.content.Context);
- method public java.lang.CharSequence coerceToText(android.content.Context);
- method public java.lang.String getHtmlText();
+ ctor public ClipData.Item(CharSequence, android.content.Intent, android.net.Uri);
+ ctor public ClipData.Item(CharSequence, String, android.content.Intent, android.net.Uri);
+ method public String coerceToHtmlText(android.content.Context);
+ method public CharSequence coerceToStyledText(android.content.Context);
+ method public CharSequence coerceToText(android.content.Context);
+ method public String getHtmlText();
method public android.content.Intent getIntent();
- method public java.lang.CharSequence getText();
+ method public CharSequence getText();
method public android.net.Uri getUri();
}
public class ClipDescription implements android.os.Parcelable {
- ctor public ClipDescription(java.lang.CharSequence, java.lang.String[]);
+ ctor public ClipDescription(CharSequence, String[]);
ctor public ClipDescription(android.content.ClipDescription);
- method public static boolean compareMimeTypes(java.lang.String, java.lang.String);
+ method public static boolean compareMimeTypes(String, String);
method public int describeContents();
- method public java.lang.String[] filterMimeTypes(java.lang.String);
+ method public String[] filterMimeTypes(String);
method public android.os.PersistableBundle getExtras();
- method public java.lang.CharSequence getLabel();
- method public java.lang.String getMimeType(int);
+ method public CharSequence getLabel();
+ method public String getMimeType(int);
method public int getMimeTypeCount();
method public long getTimestamp();
- method public boolean hasMimeType(java.lang.String);
+ method public boolean hasMimeType(String);
method public void setExtras(android.os.PersistableBundle);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.ClipDescription> CREATOR;
- field public static final java.lang.String MIMETYPE_TEXT_HTML = "text/html";
- field public static final java.lang.String MIMETYPE_TEXT_INTENT = "text/vnd.android.intent";
- field public static final java.lang.String MIMETYPE_TEXT_PLAIN = "text/plain";
- field public static final java.lang.String MIMETYPE_TEXT_URILIST = "text/uri-list";
+ field public static final String MIMETYPE_TEXT_HTML = "text/html";
+ field public static final String MIMETYPE_TEXT_INTENT = "text/vnd.android.intent";
+ field public static final String MIMETYPE_TEXT_PLAIN = "text/plain";
+ field public static final String MIMETYPE_TEXT_URILIST = "text/uri-list";
}
public class ClipboardManager extends android.text.ClipboardManager {
method public void addPrimaryClipChangedListener(android.content.ClipboardManager.OnPrimaryClipChangedListener);
method public void clearPrimaryClip();
- method public android.content.ClipData getPrimaryClip();
- method public android.content.ClipDescription getPrimaryClipDescription();
- method public deprecated java.lang.CharSequence getText();
+ method @Nullable public android.content.ClipData getPrimaryClip();
+ method @Nullable public android.content.ClipDescription getPrimaryClipDescription();
+ method @Deprecated public CharSequence getText();
method public boolean hasPrimaryClip();
- method public deprecated boolean hasText();
+ method @Deprecated public boolean hasText();
method public void removePrimaryClipChangedListener(android.content.ClipboardManager.OnPrimaryClipChangedListener);
- method public void setPrimaryClip(android.content.ClipData);
- method public deprecated void setText(java.lang.CharSequence);
+ method public void setPrimaryClip(@NonNull android.content.ClipData);
+ method @Deprecated public void setText(CharSequence);
}
- public static abstract interface ClipboardManager.OnPrimaryClipChangedListener {
- method public abstract void onPrimaryClipChanged();
+ public static interface ClipboardManager.OnPrimaryClipChangedListener {
+ method public void onPrimaryClipChanged();
}
- public abstract interface ComponentCallbacks {
- method public abstract void onConfigurationChanged(android.content.res.Configuration);
- method public abstract void onLowMemory();
+ public interface ComponentCallbacks {
+ method public void onConfigurationChanged(@NonNull android.content.res.Configuration);
+ method public void onLowMemory();
}
- public abstract interface ComponentCallbacks2 implements android.content.ComponentCallbacks {
- method public abstract void onTrimMemory(int);
+ public interface ComponentCallbacks2 extends android.content.ComponentCallbacks {
+ method public void onTrimMemory(int);
field public static final int TRIM_MEMORY_BACKGROUND = 40; // 0x28
field public static final int TRIM_MEMORY_COMPLETE = 80; // 0x50
field public static final int TRIM_MEMORY_MODERATE = 60; // 0x3c
@@ -9260,128 +9294,128 @@
field public static final int TRIM_MEMORY_UI_HIDDEN = 20; // 0x14
}
- public final class ComponentName implements java.lang.Cloneable java.lang.Comparable android.os.Parcelable {
- ctor public ComponentName(java.lang.String, java.lang.String);
- ctor public ComponentName(android.content.Context, java.lang.String);
- ctor public ComponentName(android.content.Context, java.lang.Class<?>);
+ public final class ComponentName implements java.lang.Cloneable java.lang.Comparable<android.content.ComponentName> android.os.Parcelable {
+ ctor public ComponentName(@NonNull String, @NonNull String);
+ ctor public ComponentName(@NonNull android.content.Context, @NonNull String);
+ ctor public ComponentName(@NonNull android.content.Context, @NonNull Class<?>);
ctor public ComponentName(android.os.Parcel);
method public android.content.ComponentName clone();
method public int compareTo(android.content.ComponentName);
- method public static android.content.ComponentName createRelative(java.lang.String, java.lang.String);
- method public static android.content.ComponentName createRelative(android.content.Context, java.lang.String);
+ method @NonNull public static android.content.ComponentName createRelative(@NonNull String, @NonNull String);
+ method @NonNull public static android.content.ComponentName createRelative(@NonNull android.content.Context, @NonNull String);
method public int describeContents();
- method public java.lang.String flattenToShortString();
- method public java.lang.String flattenToString();
- method public java.lang.String getClassName();
- method public java.lang.String getPackageName();
- method public java.lang.String getShortClassName();
+ method @NonNull public String flattenToShortString();
+ method @NonNull public String flattenToString();
+ method @NonNull public String getClassName();
+ method @NonNull public String getPackageName();
+ method public String getShortClassName();
method public static android.content.ComponentName readFromParcel(android.os.Parcel);
- method public java.lang.String toShortString();
- method public static android.content.ComponentName unflattenFromString(java.lang.String);
+ method public String toShortString();
+ method @Nullable public static android.content.ComponentName unflattenFromString(@NonNull String);
method public void writeToParcel(android.os.Parcel, int);
method public static void writeToParcel(android.content.ComponentName, android.os.Parcel);
field public static final android.os.Parcelable.Creator<android.content.ComponentName> CREATOR;
}
- public abstract interface ContentInterface {
- method public abstract android.content.ContentProviderResult[] applyBatch(java.lang.String, java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
- method public abstract int bulkInsert(android.net.Uri, android.content.ContentValues[]) throws android.os.RemoteException;
- method public abstract android.os.Bundle call(java.lang.String, java.lang.String, java.lang.String, android.os.Bundle) throws android.os.RemoteException;
- method public abstract android.net.Uri canonicalize(android.net.Uri) throws android.os.RemoteException;
- method public abstract int delete(android.net.Uri, java.lang.String, java.lang.String[]) throws android.os.RemoteException;
- method public abstract java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String) throws android.os.RemoteException;
- method public abstract java.lang.String getType(android.net.Uri) throws android.os.RemoteException;
- method public abstract android.net.Uri insert(android.net.Uri, android.content.ContentValues) throws android.os.RemoteException;
- method public abstract android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public abstract android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public abstract android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public abstract android.database.Cursor query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal) throws android.os.RemoteException;
- method public abstract boolean refresh(android.net.Uri, android.os.Bundle, android.os.CancellationSignal) throws android.os.RemoteException;
- method public abstract android.net.Uri uncanonicalize(android.net.Uri) throws android.os.RemoteException;
- method public abstract int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]) throws android.os.RemoteException;
+ public interface ContentInterface {
+ method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
+ method public int bulkInsert(@NonNull android.net.Uri, @NonNull android.content.ContentValues[]) throws android.os.RemoteException;
+ method @Nullable public android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle) throws android.os.RemoteException;
+ method @Nullable public android.net.Uri canonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
+ method public int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
+ method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String) throws android.os.RemoteException;
+ method @Nullable public String getType(@NonNull android.net.Uri) throws android.os.RemoteException;
+ method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues) throws android.os.RemoteException;
+ method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
+ method public boolean refresh(@NonNull android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
+ method @Nullable public android.net.Uri uncanonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
+ method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
}
public abstract class ContentProvider implements android.content.ComponentCallbacks2 android.content.ContentInterface {
ctor public ContentProvider();
- method public android.content.ContentProviderResult[] applyBatch(java.lang.String, java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
- method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
+ method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
+ method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
method public void attachInfo(android.content.Context, android.content.pm.ProviderInfo);
- method public int bulkInsert(android.net.Uri, android.content.ContentValues[]);
- method public android.os.Bundle call(java.lang.String, java.lang.String, java.lang.String, android.os.Bundle);
- method public android.os.Bundle call(java.lang.String, java.lang.String, android.os.Bundle);
- method public android.net.Uri canonicalize(android.net.Uri);
- method public final android.content.ContentProvider.CallingIdentity clearCallingIdentity();
- method public abstract int delete(android.net.Uri, java.lang.String, java.lang.String[]);
- method public void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method public final java.lang.String getCallingPackage();
- method public final android.content.Context getContext();
- method public final android.content.pm.PathPermission[] getPathPermissions();
- method public final java.lang.String getReadPermission();
- method public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String);
- method public abstract java.lang.String getType(android.net.Uri);
- method public final java.lang.String getWritePermission();
- method public abstract android.net.Uri insert(android.net.Uri, android.content.ContentValues);
+ method public int bulkInsert(@NonNull android.net.Uri, @NonNull android.content.ContentValues[]);
+ method @Nullable public android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
+ method @Nullable public android.os.Bundle call(@NonNull String, @Nullable String, @Nullable android.os.Bundle);
+ method @Nullable public android.net.Uri canonicalize(@NonNull android.net.Uri);
+ method @NonNull public final android.content.ContentProvider.CallingIdentity clearCallingIdentity();
+ method public abstract int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]);
+ method public void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method @Nullable public final String getCallingPackage();
+ method @Nullable public final android.content.Context getContext();
+ method @Nullable public final android.content.pm.PathPermission[] getPathPermissions();
+ method @Nullable public final String getReadPermission();
+ method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String);
+ method @Nullable public abstract String getType(@NonNull android.net.Uri);
+ method @Nullable public final String getWritePermission();
+ method @Nullable public abstract android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues);
method protected boolean isTemporary();
method public void onConfigurationChanged(android.content.res.Configuration);
method public abstract boolean onCreate();
method public void onLowMemory();
method public void onTrimMemory(int);
- method public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- method public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- method public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method protected final android.os.ParcelFileDescriptor openFileHelper(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- method public <T> android.os.ParcelFileDescriptor openPipeHelper(android.net.Uri, java.lang.String, android.os.Bundle, T, android.content.ContentProvider.PipeDataWriter<T>) throws java.io.FileNotFoundException;
- method public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle) throws java.io.FileNotFoundException;
- method public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public abstract android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal);
- method public boolean refresh(android.net.Uri, android.os.Bundle, android.os.CancellationSignal);
- method public final void restoreCallingIdentity(android.content.ContentProvider.CallingIdentity);
- method protected final void setPathPermissions(android.content.pm.PathPermission[]);
- method protected final void setReadPermission(java.lang.String);
- method protected final void setWritePermission(java.lang.String);
+ method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+ method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+ method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method @NonNull protected final android.os.ParcelFileDescriptor openFileHelper(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+ method @NonNull public <T> android.os.ParcelFileDescriptor openPipeHelper(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable T, @NonNull android.content.ContentProvider.PipeDataWriter<T>) throws java.io.FileNotFoundException;
+ method @Nullable public android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
+ method @Nullable public android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method @Nullable public abstract android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String);
+ method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal);
+ method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
+ method public boolean refresh(android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
+ method public final void restoreCallingIdentity(@NonNull android.content.ContentProvider.CallingIdentity);
+ method protected final void setPathPermissions(@Nullable android.content.pm.PathPermission[]);
+ method protected final void setReadPermission(@Nullable String);
+ method protected final void setWritePermission(@Nullable String);
method public void shutdown();
- method public android.net.Uri uncanonicalize(android.net.Uri);
- method public abstract int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ method @Nullable public android.net.Uri uncanonicalize(@NonNull android.net.Uri);
+ method public abstract int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
}
public final class ContentProvider.CallingIdentity {
}
- public static abstract interface ContentProvider.PipeDataWriter<T> {
- method public abstract void writeDataToPipe(android.os.ParcelFileDescriptor, android.net.Uri, java.lang.String, android.os.Bundle, T);
+ public static interface ContentProvider.PipeDataWriter<T> {
+ method public void writeDataToPipe(@NonNull android.os.ParcelFileDescriptor, @NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable T);
}
public class ContentProviderClient implements java.lang.AutoCloseable android.content.ContentInterface {
- method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
- method public android.content.ContentProviderResult[] applyBatch(java.lang.String, java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
- method public int bulkInsert(android.net.Uri, android.content.ContentValues[]) throws android.os.RemoteException;
- method public android.os.Bundle call(java.lang.String, java.lang.String, android.os.Bundle) throws android.os.RemoteException;
- method public android.os.Bundle call(java.lang.String, java.lang.String, java.lang.String, android.os.Bundle) throws android.os.RemoteException;
- method public final android.net.Uri canonicalize(android.net.Uri) throws android.os.RemoteException;
+ method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
+ method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
+ method public int bulkInsert(@NonNull android.net.Uri, @NonNull android.content.ContentValues[]) throws android.os.RemoteException;
+ method @Nullable public android.os.Bundle call(@NonNull String, @Nullable String, @Nullable android.os.Bundle) throws android.os.RemoteException;
+ method @Nullable public android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle) throws android.os.RemoteException;
+ method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
method public void close();
method public static void closeQuietly(android.content.ContentProviderClient);
- method public int delete(android.net.Uri, java.lang.String, java.lang.String[]) throws android.os.RemoteException;
- method public android.content.ContentProvider getLocalContentProvider();
- method public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String) throws android.os.RemoteException;
- method public java.lang.String getType(android.net.Uri) throws android.os.RemoteException;
- method public android.net.Uri insert(android.net.Uri, android.content.ContentValues) throws android.os.RemoteException;
- method public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String) throws android.os.RemoteException;
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal) throws android.os.RemoteException;
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal) throws android.os.RemoteException;
- method public boolean refresh(android.net.Uri, android.os.Bundle, android.os.CancellationSignal) throws android.os.RemoteException;
- method public deprecated boolean release();
- method public final android.net.Uri uncanonicalize(android.net.Uri) throws android.os.RemoteException;
- method public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]) throws android.os.RemoteException;
+ method public int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
+ method @Nullable public android.content.ContentProvider getLocalContentProvider();
+ method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String) throws android.os.RemoteException;
+ method @Nullable public String getType(@NonNull android.net.Uri) throws android.os.RemoteException;
+ method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues) throws android.os.RemoteException;
+ method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+ method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String) throws android.os.RemoteException;
+ method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
+ method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
+ method public boolean refresh(android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
+ method @Deprecated public boolean release();
+ method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
+ method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
}
public class ContentProviderOperation implements android.os.Parcelable {
@@ -9399,7 +9433,7 @@
method public static android.content.ContentProviderOperation.Builder newDelete(android.net.Uri);
method public static android.content.ContentProviderOperation.Builder newInsert(android.net.Uri);
method public static android.content.ContentProviderOperation.Builder newUpdate(android.net.Uri);
- method public java.lang.String[] resolveSelectionArgsBackReferences(android.content.ContentProviderResult[], int);
+ method public String[] resolveSelectionArgsBackReferences(android.content.ContentProviderResult[], int);
method public android.content.ContentValues resolveValueBackReferences(android.content.ContentProviderResult[], int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.ContentProviderOperation> CREATOR;
@@ -9408,10 +9442,10 @@
public static class ContentProviderOperation.Builder {
method public android.content.ContentProviderOperation build();
method public android.content.ContentProviderOperation.Builder withExpectedCount(int);
- method public android.content.ContentProviderOperation.Builder withSelection(java.lang.String, java.lang.String[]);
+ method public android.content.ContentProviderOperation.Builder withSelection(String, String[]);
method public android.content.ContentProviderOperation.Builder withSelectionBackReference(int, int);
- method public android.content.ContentProviderOperation.Builder withValue(java.lang.String, java.lang.Object);
- method public android.content.ContentProviderOperation.Builder withValueBackReference(java.lang.String, int);
+ method public android.content.ContentProviderOperation.Builder withValue(String, Object);
+ method public android.content.ContentProviderOperation.Builder withValueBackReference(String, int);
method public android.content.ContentProviderOperation.Builder withValueBackReferences(android.content.ContentValues);
method public android.content.ContentProviderOperation.Builder withValues(android.content.ContentValues);
method public android.content.ContentProviderOperation.Builder withYieldAllowed(boolean);
@@ -9424,121 +9458,121 @@
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.ContentProviderResult> CREATOR;
- field public final java.lang.Integer count;
+ field public final Integer count;
field public final android.net.Uri uri;
}
public class ContentQueryMap extends java.util.Observable {
- ctor public ContentQueryMap(android.database.Cursor, java.lang.String, boolean, android.os.Handler);
- method public synchronized void close();
- method public synchronized java.util.Map<java.lang.String, android.content.ContentValues> getRows();
- method public synchronized android.content.ContentValues getValues(java.lang.String);
+ ctor public ContentQueryMap(android.database.Cursor, String, boolean, android.os.Handler);
+ method public void close();
+ method public java.util.Map<java.lang.String,android.content.ContentValues> getRows();
+ method public android.content.ContentValues getValues(String);
method public void requery();
method public void setKeepUpdated(boolean);
}
public abstract class ContentResolver implements android.content.ContentInterface {
ctor public ContentResolver(android.content.Context);
- method public final android.content.ContentProviderClient acquireContentProviderClient(android.net.Uri);
- method public final android.content.ContentProviderClient acquireContentProviderClient(java.lang.String);
- method public final android.content.ContentProviderClient acquireUnstableContentProviderClient(android.net.Uri);
- method public final android.content.ContentProviderClient acquireUnstableContentProviderClient(java.lang.String);
- method public static void addPeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle, long);
- method public static java.lang.Object addStatusChangeListener(int, android.content.SyncStatusObserver);
- method public android.content.ContentProviderResult[] applyBatch(java.lang.String, java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
- method public final int bulkInsert(android.net.Uri, android.content.ContentValues[]);
- method public final android.os.Bundle call(android.net.Uri, java.lang.String, java.lang.String, android.os.Bundle);
- method public final android.os.Bundle call(java.lang.String, java.lang.String, java.lang.String, android.os.Bundle);
- method public deprecated void cancelSync(android.net.Uri);
- method public static void cancelSync(android.accounts.Account, java.lang.String);
+ method @Nullable public final android.content.ContentProviderClient acquireContentProviderClient(@NonNull android.net.Uri);
+ method @Nullable public final android.content.ContentProviderClient acquireContentProviderClient(@NonNull String);
+ method @Nullable public final android.content.ContentProviderClient acquireUnstableContentProviderClient(@NonNull android.net.Uri);
+ method @Nullable public final android.content.ContentProviderClient acquireUnstableContentProviderClient(@NonNull String);
+ method public static void addPeriodicSync(android.accounts.Account, String, android.os.Bundle, long);
+ method public static Object addStatusChangeListener(int, android.content.SyncStatusObserver);
+ method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
+ method public final int bulkInsert(@RequiresPermission.Write @NonNull android.net.Uri, @NonNull android.content.ContentValues[]);
+ method @Nullable public final android.os.Bundle call(@NonNull android.net.Uri, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
+ method @Nullable public final android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
+ method @Deprecated public void cancelSync(android.net.Uri);
+ method public static void cancelSync(android.accounts.Account, String);
method public static void cancelSync(android.content.SyncRequest);
- method public final android.net.Uri canonicalize(android.net.Uri);
- method public final int delete(android.net.Uri, java.lang.String, java.lang.String[]);
+ method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri);
+ method public final int delete(@RequiresPermission.Write @NonNull android.net.Uri, @Nullable String, @Nullable String[]);
method public android.os.Bundle getCache(android.net.Uri);
- method public static deprecated android.content.SyncInfo getCurrentSync();
+ method @Deprecated public static android.content.SyncInfo getCurrentSync();
method public static java.util.List<android.content.SyncInfo> getCurrentSyncs();
- method public static int getIsSyncable(android.accounts.Account, java.lang.String);
+ method public static int getIsSyncable(android.accounts.Account, String);
method public static boolean getMasterSyncAutomatically();
- method public java.util.List<android.content.UriPermission> getOutgoingPersistedUriPermissions();
- method public static java.util.List<android.content.PeriodicSync> getPeriodicSyncs(android.accounts.Account, java.lang.String);
- method public java.util.List<android.content.UriPermission> getPersistedUriPermissions();
- method public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String);
+ method @NonNull public java.util.List<android.content.UriPermission> getOutgoingPersistedUriPermissions();
+ method public static java.util.List<android.content.PeriodicSync> getPeriodicSyncs(android.accounts.Account, String);
+ method @NonNull public java.util.List<android.content.UriPermission> getPersistedUriPermissions();
+ method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String);
method public static android.content.SyncAdapterType[] getSyncAdapterTypes();
- method public static boolean getSyncAutomatically(android.accounts.Account, java.lang.String);
- method public final java.lang.String getType(android.net.Uri);
- method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
- method public static boolean isSyncActive(android.accounts.Account, java.lang.String);
- method public static boolean isSyncPending(android.accounts.Account, java.lang.String);
- method public android.graphics.Bitmap loadThumbnail(android.net.Uri, android.util.Size, android.os.CancellationSignal) throws java.io.IOException;
- method public void notifyChange(android.net.Uri, android.database.ContentObserver);
- method public void notifyChange(android.net.Uri, android.database.ContentObserver, boolean);
- method public void notifyChange(android.net.Uri, android.database.ContentObserver, int);
- method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- method public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public final android.os.ParcelFileDescriptor openFileDescriptor(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- method public final android.os.ParcelFileDescriptor openFileDescriptor(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public final java.io.InputStream openInputStream(android.net.Uri) throws java.io.FileNotFoundException;
- method public final java.io.OutputStream openOutputStream(android.net.Uri) throws java.io.FileNotFoundException;
- method public final java.io.OutputStream openOutputStream(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle) throws java.io.FileNotFoundException;
- method public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method public static boolean getSyncAutomatically(android.accounts.Account, String);
+ method @Nullable public final String getType(@NonNull android.net.Uri);
+ method @Nullable public final android.net.Uri insert(@RequiresPermission.Write @NonNull android.net.Uri, @Nullable android.content.ContentValues);
+ method public static boolean isSyncActive(android.accounts.Account, String);
+ method public static boolean isSyncPending(android.accounts.Account, String);
+ method @NonNull public android.graphics.Bitmap loadThumbnail(@NonNull android.net.Uri, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
+ method public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver);
+ method public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver, boolean);
+ method public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver, int);
+ method @Nullable public final android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method @Nullable public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+ method @Nullable public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method @Nullable public final android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method @Nullable public final android.os.ParcelFileDescriptor openFileDescriptor(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+ method @Nullable public final android.os.ParcelFileDescriptor openFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method @Nullable public final java.io.InputStream openInputStream(@NonNull android.net.Uri) throws java.io.FileNotFoundException;
+ method @Nullable public final java.io.OutputStream openOutputStream(@NonNull android.net.Uri) throws java.io.FileNotFoundException;
+ method @Nullable public final java.io.OutputStream openOutputStream(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+ method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
+ method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
method public void putCache(android.net.Uri, android.os.Bundle);
- method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
- method public final android.database.Cursor query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal);
- method public final boolean refresh(android.net.Uri, android.os.Bundle, android.os.CancellationSignal);
- method public final void registerContentObserver(android.net.Uri, boolean, android.database.ContentObserver);
- method public void releasePersistableUriPermission(android.net.Uri, int);
- method public static void removePeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle);
- method public static void removeStatusChangeListener(java.lang.Object);
- method public static void requestSync(android.accounts.Account, java.lang.String, android.os.Bundle);
+ method @Nullable public final android.database.Cursor query(@RequiresPermission.Read @NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String);
+ method @Nullable public final android.database.Cursor query(@RequiresPermission.Read @NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal);
+ method @Nullable public final android.database.Cursor query(@RequiresPermission.Read @NonNull android.net.Uri, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
+ method public final boolean refresh(@NonNull android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
+ method public final void registerContentObserver(@NonNull android.net.Uri, boolean, @NonNull android.database.ContentObserver);
+ method public void releasePersistableUriPermission(@NonNull android.net.Uri, int);
+ method public static void removePeriodicSync(android.accounts.Account, String, android.os.Bundle);
+ method public static void removeStatusChangeListener(Object);
+ method public static void requestSync(android.accounts.Account, String, android.os.Bundle);
method public static void requestSync(android.content.SyncRequest);
- method public static void setIsSyncable(android.accounts.Account, java.lang.String, int);
+ method public static void setIsSyncable(android.accounts.Account, String, int);
method public static void setMasterSyncAutomatically(boolean);
- method public static void setSyncAutomatically(android.accounts.Account, java.lang.String, boolean);
- method public deprecated void startSync(android.net.Uri, android.os.Bundle);
- method public void takePersistableUriPermission(android.net.Uri, int);
- method public final android.net.Uri uncanonicalize(android.net.Uri);
- method public final void unregisterContentObserver(android.database.ContentObserver);
- method public final int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ method public static void setSyncAutomatically(android.accounts.Account, String, boolean);
+ method @Deprecated public void startSync(android.net.Uri, android.os.Bundle);
+ method public void takePersistableUriPermission(@NonNull android.net.Uri, int);
+ method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri);
+ method public final void unregisterContentObserver(@NonNull android.database.ContentObserver);
+ method public final int update(@RequiresPermission.Write @NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
method public static void validateSyncExtrasBundle(android.os.Bundle);
- field public static final java.lang.String ANY_CURSOR_ITEM_TYPE = "vnd.android.cursor.item/*";
- field public static final java.lang.String CURSOR_DIR_BASE_TYPE = "vnd.android.cursor.dir";
- field public static final java.lang.String CURSOR_ITEM_BASE_TYPE = "vnd.android.cursor.item";
- field public static final java.lang.String EXTRA_HONORED_ARGS = "android.content.extra.HONORED_ARGS";
- field public static final java.lang.String EXTRA_REFRESH_SUPPORTED = "android.content.extra.REFRESH_SUPPORTED";
- field public static final java.lang.String EXTRA_SIZE = "android.content.extra.SIZE";
- field public static final java.lang.String EXTRA_TOTAL_COUNT = "android.content.extra.TOTAL_COUNT";
+ field public static final String ANY_CURSOR_ITEM_TYPE = "vnd.android.cursor.item/*";
+ field public static final String CURSOR_DIR_BASE_TYPE = "vnd.android.cursor.dir";
+ field public static final String CURSOR_ITEM_BASE_TYPE = "vnd.android.cursor.item";
+ field public static final String EXTRA_HONORED_ARGS = "android.content.extra.HONORED_ARGS";
+ field public static final String EXTRA_REFRESH_SUPPORTED = "android.content.extra.REFRESH_SUPPORTED";
+ field public static final String EXTRA_SIZE = "android.content.extra.SIZE";
+ field public static final String EXTRA_TOTAL_COUNT = "android.content.extra.TOTAL_COUNT";
field public static final int NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS = 2; // 0x2
field public static final int NOTIFY_SYNC_TO_NETWORK = 1; // 0x1
- field public static final java.lang.String QUERY_ARG_LIMIT = "android:query-arg-limit";
- field public static final java.lang.String QUERY_ARG_OFFSET = "android:query-arg-offset";
- field public static final java.lang.String QUERY_ARG_SORT_COLLATION = "android:query-arg-sort-collation";
- field public static final java.lang.String QUERY_ARG_SORT_COLUMNS = "android:query-arg-sort-columns";
- field public static final java.lang.String QUERY_ARG_SORT_DIRECTION = "android:query-arg-sort-direction";
- field public static final java.lang.String QUERY_ARG_SQL_SELECTION = "android:query-arg-sql-selection";
- field public static final java.lang.String QUERY_ARG_SQL_SELECTION_ARGS = "android:query-arg-sql-selection-args";
- field public static final java.lang.String QUERY_ARG_SQL_SORT_ORDER = "android:query-arg-sql-sort-order";
+ field public static final String QUERY_ARG_LIMIT = "android:query-arg-limit";
+ field public static final String QUERY_ARG_OFFSET = "android:query-arg-offset";
+ field public static final String QUERY_ARG_SORT_COLLATION = "android:query-arg-sort-collation";
+ field public static final String QUERY_ARG_SORT_COLUMNS = "android:query-arg-sort-columns";
+ field public static final String QUERY_ARG_SORT_DIRECTION = "android:query-arg-sort-direction";
+ field public static final String QUERY_ARG_SQL_SELECTION = "android:query-arg-sql-selection";
+ field public static final String QUERY_ARG_SQL_SELECTION_ARGS = "android:query-arg-sql-selection-args";
+ field public static final String QUERY_ARG_SQL_SORT_ORDER = "android:query-arg-sql-sort-order";
field public static final int QUERY_SORT_DIRECTION_ASCENDING = 0; // 0x0
field public static final int QUERY_SORT_DIRECTION_DESCENDING = 1; // 0x1
- field public static final java.lang.String SCHEME_ANDROID_RESOURCE = "android.resource";
- field public static final java.lang.String SCHEME_CONTENT = "content";
- field public static final java.lang.String SCHEME_FILE = "file";
- field public static final deprecated java.lang.String SYNC_EXTRAS_ACCOUNT = "account";
- field public static final java.lang.String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS = "discard_deletions";
- field public static final java.lang.String SYNC_EXTRAS_DO_NOT_RETRY = "do_not_retry";
- field public static final java.lang.String SYNC_EXTRAS_EXPEDITED = "expedited";
- field public static final deprecated java.lang.String SYNC_EXTRAS_FORCE = "force";
- field public static final java.lang.String SYNC_EXTRAS_IGNORE_BACKOFF = "ignore_backoff";
- field public static final java.lang.String SYNC_EXTRAS_IGNORE_SETTINGS = "ignore_settings";
- field public static final java.lang.String SYNC_EXTRAS_INITIALIZE = "initialize";
- field public static final java.lang.String SYNC_EXTRAS_MANUAL = "force";
- field public static final java.lang.String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS = "deletions_override";
- field public static final java.lang.String SYNC_EXTRAS_REQUIRE_CHARGING = "require_charging";
- field public static final java.lang.String SYNC_EXTRAS_UPLOAD = "upload";
+ field public static final String SCHEME_ANDROID_RESOURCE = "android.resource";
+ field public static final String SCHEME_CONTENT = "content";
+ field public static final String SCHEME_FILE = "file";
+ field @Deprecated public static final String SYNC_EXTRAS_ACCOUNT = "account";
+ field public static final String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS = "discard_deletions";
+ field public static final String SYNC_EXTRAS_DO_NOT_RETRY = "do_not_retry";
+ field public static final String SYNC_EXTRAS_EXPEDITED = "expedited";
+ field @Deprecated public static final String SYNC_EXTRAS_FORCE = "force";
+ field public static final String SYNC_EXTRAS_IGNORE_BACKOFF = "ignore_backoff";
+ field public static final String SYNC_EXTRAS_IGNORE_SETTINGS = "ignore_settings";
+ field public static final String SYNC_EXTRAS_INITIALIZE = "initialize";
+ field public static final String SYNC_EXTRAS_MANUAL = "force";
+ field public static final String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS = "deletions_override";
+ field public static final String SYNC_EXTRAS_REQUIRE_CHARGING = "require_charging";
+ field public static final String SYNC_EXTRAS_UPLOAD = "upload";
field public static final int SYNC_OBSERVER_TYPE_ACTIVE = 4; // 0x4
field public static final int SYNC_OBSERVER_TYPE_PENDING = 2; // 0x2
field public static final int SYNC_OBSERVER_TYPE_SETTINGS = 1; // 0x1
@@ -9557,169 +9591,169 @@
ctor public ContentValues(int);
ctor public ContentValues(android.content.ContentValues);
method public void clear();
- method public boolean containsKey(java.lang.String);
+ method public boolean containsKey(String);
method public int describeContents();
- method public java.lang.Object get(java.lang.String);
- method public java.lang.Boolean getAsBoolean(java.lang.String);
- method public java.lang.Byte getAsByte(java.lang.String);
- method public byte[] getAsByteArray(java.lang.String);
- method public java.lang.Double getAsDouble(java.lang.String);
- method public java.lang.Float getAsFloat(java.lang.String);
- method public java.lang.Integer getAsInteger(java.lang.String);
- method public java.lang.Long getAsLong(java.lang.String);
- method public java.lang.Short getAsShort(java.lang.String);
- method public java.lang.String getAsString(java.lang.String);
+ method public Object get(String);
+ method public Boolean getAsBoolean(String);
+ method public Byte getAsByte(String);
+ method public byte[] getAsByteArray(String);
+ method public Double getAsDouble(String);
+ method public Float getAsFloat(String);
+ method public Integer getAsInteger(String);
+ method public Long getAsLong(String);
+ method public Short getAsShort(String);
+ method public String getAsString(String);
method public java.util.Set<java.lang.String> keySet();
- method public void put(java.lang.String, java.lang.String);
- method public void put(java.lang.String, java.lang.Byte);
- method public void put(java.lang.String, java.lang.Short);
- method public void put(java.lang.String, java.lang.Integer);
- method public void put(java.lang.String, java.lang.Long);
- method public void put(java.lang.String, java.lang.Float);
- method public void put(java.lang.String, java.lang.Double);
- method public void put(java.lang.String, java.lang.Boolean);
- method public void put(java.lang.String, byte[]);
+ method public void put(String, String);
+ method public void put(String, Byte);
+ method public void put(String, Short);
+ method public void put(String, Integer);
+ method public void put(String, Long);
+ method public void put(String, Float);
+ method public void put(String, Double);
+ method public void put(String, Boolean);
+ method public void put(String, byte[]);
method public void putAll(android.content.ContentValues);
- method public void putNull(java.lang.String);
- method public void remove(java.lang.String);
+ method public void putNull(String);
+ method public void remove(String);
method public int size();
- method public java.util.Set<java.util.Map.Entry<java.lang.String, java.lang.Object>> valueSet();
+ method public java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>> valueSet();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.ContentValues> CREATOR;
- field public static final java.lang.String TAG = "ContentValues";
+ field public static final String TAG = "ContentValues";
}
public abstract class Context {
ctor public Context();
- method public abstract boolean bindIsolatedService(android.content.Intent, android.content.ServiceConnection, int, java.lang.String);
- method public abstract boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
- method public abstract int checkCallingOrSelfPermission(java.lang.String);
- method public abstract int checkCallingOrSelfUriPermission(android.net.Uri, int);
- method public abstract int checkCallingPermission(java.lang.String);
- method public abstract int checkCallingUriPermission(android.net.Uri, int);
- method public abstract int checkPermission(java.lang.String, int, int);
- method public abstract int checkSelfPermission(java.lang.String);
- method public abstract int checkUriPermission(android.net.Uri, int, int, int);
- method public abstract int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
- method public abstract deprecated void clearWallpaper() throws java.io.IOException;
- method public abstract android.content.Context createConfigurationContext(android.content.res.Configuration);
- method public abstract android.content.Context createContextForSplit(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract boolean bindIsolatedService(@RequiresPermission android.content.Intent, @NonNull android.content.ServiceConnection, int, @NonNull String);
+ method public abstract boolean bindService(@RequiresPermission android.content.Intent, @NonNull android.content.ServiceConnection, int);
+ method @CheckResult(suggest="#enforceCallingOrSelfPermission(String,String)") public abstract int checkCallingOrSelfPermission(@NonNull String);
+ method @CheckResult(suggest="#enforceCallingOrSelfUriPermission(Uri,int,String)") public abstract int checkCallingOrSelfUriPermission(android.net.Uri, int);
+ method @CheckResult(suggest="#enforceCallingPermission(String,String)") public abstract int checkCallingPermission(@NonNull String);
+ method @CheckResult(suggest="#enforceCallingUriPermission(Uri,int,String)") public abstract int checkCallingUriPermission(android.net.Uri, int);
+ method @CheckResult(suggest="#enforcePermission(String,int,int,String)") public abstract int checkPermission(@NonNull String, int, int);
+ method public abstract int checkSelfPermission(@NonNull String);
+ method @CheckResult(suggest="#enforceUriPermission(Uri,int,int,String)") public abstract int checkUriPermission(android.net.Uri, int, int, int);
+ method @CheckResult(suggest="#enforceUriPermission(Uri,String,String,int,int,int,String)") public abstract int checkUriPermission(@Nullable android.net.Uri, @Nullable String, @Nullable String, int, int, int);
+ method @Deprecated public abstract void clearWallpaper() throws java.io.IOException;
+ method public abstract android.content.Context createConfigurationContext(@NonNull android.content.res.Configuration);
+ method public abstract android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.content.Context createDeviceProtectedStorageContext();
- method public abstract android.content.Context createDisplayContext(android.view.Display);
- method public abstract android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract java.lang.String[] databaseList();
- method public abstract boolean deleteDatabase(java.lang.String);
- method public abstract boolean deleteFile(java.lang.String);
- method public abstract boolean deleteSharedPreferences(java.lang.String);
- method public abstract void enforceCallingOrSelfPermission(java.lang.String, java.lang.String);
- method public abstract void enforceCallingOrSelfUriPermission(android.net.Uri, int, java.lang.String);
- method public abstract void enforceCallingPermission(java.lang.String, java.lang.String);
- method public abstract void enforceCallingUriPermission(android.net.Uri, int, java.lang.String);
- method public abstract void enforcePermission(java.lang.String, int, int, java.lang.String);
- method public abstract void enforceUriPermission(android.net.Uri, int, int, int, java.lang.String);
- method public abstract void enforceUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int, java.lang.String);
- method public abstract java.lang.String[] fileList();
+ method public abstract android.content.Context createDisplayContext(@NonNull android.view.Display);
+ method public abstract android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract String[] databaseList();
+ method public abstract boolean deleteDatabase(String);
+ method public abstract boolean deleteFile(String);
+ method public abstract boolean deleteSharedPreferences(String);
+ method public abstract void enforceCallingOrSelfPermission(@NonNull String, @Nullable String);
+ method public abstract void enforceCallingOrSelfUriPermission(android.net.Uri, int, String);
+ method public abstract void enforceCallingPermission(@NonNull String, @Nullable String);
+ method public abstract void enforceCallingUriPermission(android.net.Uri, int, String);
+ method public abstract void enforcePermission(@NonNull String, int, int, @Nullable String);
+ method public abstract void enforceUriPermission(android.net.Uri, int, int, int, String);
+ method public abstract void enforceUriPermission(@Nullable android.net.Uri, @Nullable String, @Nullable String, int, int, int, @Nullable String);
+ method public abstract String[] fileList();
method public abstract android.content.Context getApplicationContext();
method public abstract android.content.pm.ApplicationInfo getApplicationInfo();
method public abstract android.content.res.AssetManager getAssets();
method public abstract java.io.File getCacheDir();
- method public abstract java.lang.ClassLoader getClassLoader();
+ method public abstract ClassLoader getClassLoader();
method public abstract java.io.File getCodeCacheDir();
- method public final int getColor(int);
- method public final android.content.res.ColorStateList getColorStateList(int);
+ method @ColorInt public final int getColor(@ColorRes int);
+ method @NonNull public final android.content.res.ColorStateList getColorStateList(@ColorRes int);
method public abstract android.content.ContentResolver getContentResolver();
method public abstract java.io.File getDataDir();
- method public abstract java.io.File getDatabasePath(java.lang.String);
- method public abstract java.io.File getDir(java.lang.String, int);
- method public final android.graphics.drawable.Drawable getDrawable(int);
- method public abstract java.io.File getExternalCacheDir();
+ method public abstract java.io.File getDatabasePath(String);
+ method public abstract java.io.File getDir(String, int);
+ method @Nullable public final android.graphics.drawable.Drawable getDrawable(@DrawableRes int);
+ method @Nullable public abstract java.io.File getExternalCacheDir();
method public abstract java.io.File[] getExternalCacheDirs();
- method public abstract java.io.File getExternalFilesDir(java.lang.String);
- method public abstract java.io.File[] getExternalFilesDirs(java.lang.String);
+ method @Nullable public abstract java.io.File getExternalFilesDir(@Nullable String);
+ method public abstract java.io.File[] getExternalFilesDirs(String);
method public abstract java.io.File[] getExternalMediaDirs();
- method public abstract java.io.File getFileStreamPath(java.lang.String);
+ method public abstract java.io.File getFileStreamPath(String);
method public abstract java.io.File getFilesDir();
method public java.util.concurrent.Executor getMainExecutor();
method public abstract android.os.Looper getMainLooper();
method public abstract java.io.File getNoBackupFilesDir();
method public abstract java.io.File getObbDir();
method public abstract java.io.File[] getObbDirs();
- method public abstract java.lang.String getOpPackageName();
- method public abstract java.lang.String getPackageCodePath();
+ method public abstract String getOpPackageName();
+ method public abstract String getPackageCodePath();
method public abstract android.content.pm.PackageManager getPackageManager();
- method public abstract java.lang.String getPackageName();
- method public abstract java.lang.String getPackageResourcePath();
+ method public abstract String getPackageName();
+ method public abstract String getPackageResourcePath();
method public abstract android.content.res.Resources getResources();
- method public abstract android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
- method public final java.lang.String getString(int);
- method public final java.lang.String getString(int, java.lang.Object...);
- method public abstract java.lang.Object getSystemService(java.lang.String);
- method public final <T> T getSystemService(java.lang.Class<T>);
- method public abstract java.lang.String getSystemServiceName(java.lang.Class<?>);
- method public final java.lang.CharSequence getText(int);
- method public abstract android.content.res.Resources.Theme getTheme();
- method public abstract deprecated android.graphics.drawable.Drawable getWallpaper();
- method public abstract deprecated int getWallpaperDesiredMinimumHeight();
- method public abstract deprecated int getWallpaperDesiredMinimumWidth();
- method public abstract void grantUriPermission(java.lang.String, android.net.Uri, int);
+ method public abstract android.content.SharedPreferences getSharedPreferences(String, int);
+ method @NonNull public final String getString(@StringRes int);
+ method @NonNull public final String getString(@StringRes int, java.lang.Object...);
+ method public abstract Object getSystemService(@NonNull String);
+ method public final <T> T getSystemService(@NonNull Class<T>);
+ method @Nullable public abstract String getSystemServiceName(@NonNull Class<?>);
+ method @NonNull public final CharSequence getText(@StringRes int);
+ method @android.view.ViewDebug.ExportedProperty(deepExport=true) public abstract android.content.res.Resources.Theme getTheme();
+ method @Deprecated public abstract android.graphics.drawable.Drawable getWallpaper();
+ method @Deprecated public abstract int getWallpaperDesiredMinimumHeight();
+ method @Deprecated public abstract int getWallpaperDesiredMinimumWidth();
+ method public abstract void grantUriPermission(String, android.net.Uri, int);
method public abstract boolean isDeviceProtectedStorage();
method public boolean isRestricted();
- method public abstract boolean moveDatabaseFrom(android.content.Context, java.lang.String);
- method public abstract boolean moveSharedPreferencesFrom(android.content.Context, java.lang.String);
- method public final android.content.res.TypedArray obtainStyledAttributes(int[]);
- method public final android.content.res.TypedArray obtainStyledAttributes(int, int[]) throws android.content.res.Resources.NotFoundException;
- method public final android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet, int[]);
- method public final android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet, int[], int, int);
- method public abstract java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException;
- method public abstract java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException;
- method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
- method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
- method public abstract deprecated android.graphics.drawable.Drawable peekWallpaper();
+ method public abstract boolean moveDatabaseFrom(android.content.Context, String);
+ method public abstract boolean moveSharedPreferencesFrom(android.content.Context, String);
+ method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@NonNull @StyleableRes int[]);
+ method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@StyleRes int, @NonNull @StyleableRes int[]) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[]);
+ method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[], @AttrRes int, @StyleRes int);
+ method public abstract java.io.FileInputStream openFileInput(String) throws java.io.FileNotFoundException;
+ method public abstract java.io.FileOutputStream openFileOutput(String, int) throws java.io.FileNotFoundException;
+ method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
+ method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, @Nullable android.database.DatabaseErrorHandler);
+ method @Deprecated public abstract android.graphics.drawable.Drawable peekWallpaper();
method public void registerComponentCallbacks(android.content.ComponentCallbacks);
- method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
- method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int);
- method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler);
- method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int);
- method public abstract deprecated void removeStickyBroadcast(android.content.Intent);
- method public abstract deprecated void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
+ method @Nullable public abstract android.content.Intent registerReceiver(@Nullable android.content.BroadcastReceiver, android.content.IntentFilter);
+ method @Nullable public abstract android.content.Intent registerReceiver(@Nullable android.content.BroadcastReceiver, android.content.IntentFilter, int);
+ method @Nullable public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler);
+ method @Nullable public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler, int);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void removeStickyBroadcast(@RequiresPermission android.content.Intent);
+ method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void removeStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
method public abstract void revokeUriPermission(android.net.Uri, int);
- method public abstract void revokeUriPermission(java.lang.String, android.net.Uri, int);
- method public abstract void sendBroadcast(android.content.Intent);
- method public abstract void sendBroadcast(android.content.Intent, java.lang.String);
- method public abstract void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
- method public abstract void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String);
- method public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String);
- method public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public abstract void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public abstract deprecated void sendStickyBroadcast(android.content.Intent);
- method public abstract deprecated void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
- method public abstract deprecated void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public abstract deprecated void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public abstract void setTheme(int);
- method public abstract deprecated void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
- method public abstract deprecated void setWallpaper(java.io.InputStream) throws java.io.IOException;
- method public abstract void startActivities(android.content.Intent[]);
- method public abstract void startActivities(android.content.Intent[], android.os.Bundle);
- method public abstract void startActivity(android.content.Intent);
- method public abstract void startActivity(android.content.Intent, android.os.Bundle);
- method public abstract android.content.ComponentName startForegroundService(android.content.Intent);
- method public abstract boolean startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle);
- method public abstract void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
- method public abstract void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
- method public abstract android.content.ComponentName startService(android.content.Intent);
+ method public abstract void revokeUriPermission(String, android.net.Uri, int);
+ method public abstract void sendBroadcast(@RequiresPermission android.content.Intent);
+ method public abstract void sendBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
+ method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
+ method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String);
+ method public abstract void sendOrderedBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
+ method public abstract void sendOrderedBroadcast(@RequiresPermission @NonNull android.content.Intent, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+ method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyBroadcast(@RequiresPermission android.content.Intent);
+ method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyOrderedBroadcast(@RequiresPermission android.content.Intent, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+ method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+ method public abstract void setTheme(@StyleRes int);
+ method @Deprecated public abstract void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
+ method @Deprecated public abstract void setWallpaper(java.io.InputStream) throws java.io.IOException;
+ method public abstract void startActivities(@RequiresPermission android.content.Intent[]);
+ method public abstract void startActivities(@RequiresPermission android.content.Intent[], android.os.Bundle);
+ method public abstract void startActivity(@RequiresPermission android.content.Intent);
+ method public abstract void startActivity(@RequiresPermission android.content.Intent, @Nullable android.os.Bundle);
+ method @Nullable public abstract android.content.ComponentName startForegroundService(android.content.Intent);
+ method public abstract boolean startInstrumentation(@NonNull android.content.ComponentName, @Nullable String, @Nullable android.os.Bundle);
+ method public abstract void startIntentSender(android.content.IntentSender, @Nullable android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
+ method public abstract void startIntentSender(android.content.IntentSender, @Nullable android.content.Intent, int, int, int, @Nullable android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+ method @Nullable public abstract android.content.ComponentName startService(android.content.Intent);
method public abstract boolean stopService(android.content.Intent);
- method public abstract void unbindService(android.content.ServiceConnection);
+ method public abstract void unbindService(@NonNull android.content.ServiceConnection);
method public void unregisterComponentCallbacks(android.content.ComponentCallbacks);
method public abstract void unregisterReceiver(android.content.BroadcastReceiver);
- method public abstract void updateServiceGroup(android.content.ServiceConnection, int, int);
- field public static final java.lang.String ACCESSIBILITY_SERVICE = "accessibility";
- field public static final java.lang.String ACCOUNT_SERVICE = "account";
- field public static final java.lang.String ACTIVITY_SERVICE = "activity";
- field public static final java.lang.String ALARM_SERVICE = "alarm";
- field public static final java.lang.String APPWIDGET_SERVICE = "appwidget";
- field public static final java.lang.String APP_OPS_SERVICE = "appops";
- field public static final java.lang.String AUDIO_SERVICE = "audio";
- field public static final java.lang.String BATTERY_SERVICE = "batterymanager";
+ method public abstract void updateServiceGroup(@NonNull android.content.ServiceConnection, int, int);
+ field public static final String ACCESSIBILITY_SERVICE = "accessibility";
+ field public static final String ACCOUNT_SERVICE = "account";
+ field public static final String ACTIVITY_SERVICE = "activity";
+ field public static final String ALARM_SERVICE = "alarm";
+ field public static final String APPWIDGET_SERVICE = "appwidget";
+ field public static final String APP_OPS_SERVICE = "appops";
+ field public static final String AUDIO_SERVICE = "audio";
+ field public static final String BATTERY_SERVICE = "batterymanager";
field public static final int BIND_ABOVE_CLIENT = 8; // 0x8
field public static final int BIND_ADJUST_WITH_ACTIVITY = 128; // 0x80
field public static final int BIND_ALLOW_OOM_MANAGEMENT = 16; // 0x10
@@ -9729,182 +9763,182 @@
field public static final int BIND_IMPORTANT = 64; // 0x40
field public static final int BIND_NOT_FOREGROUND = 4; // 0x4
field public static final int BIND_WAIVE_PRIORITY = 32; // 0x20
- field public static final java.lang.String BIOMETRIC_SERVICE = "biometric";
- field public static final java.lang.String BLUETOOTH_SERVICE = "bluetooth";
- field public static final java.lang.String CAMERA_SERVICE = "camera";
- field public static final java.lang.String CAPTIONING_SERVICE = "captioning";
- field public static final java.lang.String CARRIER_CONFIG_SERVICE = "carrier_config";
- field public static final java.lang.String CLIPBOARD_SERVICE = "clipboard";
- field public static final java.lang.String COMPANION_DEVICE_SERVICE = "companiondevice";
- field public static final java.lang.String CONNECTIVITY_SERVICE = "connectivity";
- field public static final java.lang.String CONSUMER_IR_SERVICE = "consumer_ir";
+ field public static final String BIOMETRIC_SERVICE = "biometric";
+ field public static final String BLUETOOTH_SERVICE = "bluetooth";
+ field public static final String CAMERA_SERVICE = "camera";
+ field public static final String CAPTIONING_SERVICE = "captioning";
+ field public static final String CARRIER_CONFIG_SERVICE = "carrier_config";
+ field public static final String CLIPBOARD_SERVICE = "clipboard";
+ field public static final String COMPANION_DEVICE_SERVICE = "companiondevice";
+ field public static final String CONNECTIVITY_SERVICE = "connectivity";
+ field public static final String CONSUMER_IR_SERVICE = "consumer_ir";
field public static final int CONTEXT_IGNORE_SECURITY = 2; // 0x2
field public static final int CONTEXT_INCLUDE_CODE = 1; // 0x1
field public static final int CONTEXT_RESTRICTED = 4; // 0x4
- field public static final java.lang.String CROSS_PROFILE_APPS_SERVICE = "crossprofileapps";
- field public static final java.lang.String DEVICE_POLICY_SERVICE = "device_policy";
- field public static final java.lang.String DISPLAY_SERVICE = "display";
- field public static final java.lang.String DOWNLOAD_SERVICE = "download";
- field public static final java.lang.String DROPBOX_SERVICE = "dropbox";
- field public static final java.lang.String EUICC_SERVICE = "euicc";
- field public static final java.lang.String FINGERPRINT_SERVICE = "fingerprint";
- field public static final java.lang.String HARDWARE_PROPERTIES_SERVICE = "hardware_properties";
- field public static final java.lang.String INPUT_METHOD_SERVICE = "input_method";
- field public static final java.lang.String INPUT_SERVICE = "input";
- field public static final java.lang.String IPSEC_SERVICE = "ipsec";
- field public static final java.lang.String JOB_SCHEDULER_SERVICE = "jobscheduler";
- field public static final java.lang.String KEYGUARD_SERVICE = "keyguard";
- field public static final java.lang.String LAUNCHER_APPS_SERVICE = "launcherapps";
- field public static final java.lang.String LAYOUT_INFLATER_SERVICE = "layout_inflater";
- field public static final java.lang.String LOCATION_SERVICE = "location";
- field public static final java.lang.String MEDIA_PROJECTION_SERVICE = "media_projection";
- field public static final java.lang.String MEDIA_ROUTER_SERVICE = "media_router";
- field public static final java.lang.String MEDIA_SESSION_SERVICE = "media_session";
- field public static final java.lang.String MIDI_SERVICE = "midi";
+ field public static final String CROSS_PROFILE_APPS_SERVICE = "crossprofileapps";
+ field public static final String DEVICE_POLICY_SERVICE = "device_policy";
+ field public static final String DISPLAY_SERVICE = "display";
+ field public static final String DOWNLOAD_SERVICE = "download";
+ field public static final String DROPBOX_SERVICE = "dropbox";
+ field public static final String EUICC_SERVICE = "euicc";
+ field public static final String FINGERPRINT_SERVICE = "fingerprint";
+ field public static final String HARDWARE_PROPERTIES_SERVICE = "hardware_properties";
+ field public static final String INPUT_METHOD_SERVICE = "input_method";
+ field public static final String INPUT_SERVICE = "input";
+ field public static final String IPSEC_SERVICE = "ipsec";
+ field public static final String JOB_SCHEDULER_SERVICE = "jobscheduler";
+ field public static final String KEYGUARD_SERVICE = "keyguard";
+ field public static final String LAUNCHER_APPS_SERVICE = "launcherapps";
+ field public static final String LAYOUT_INFLATER_SERVICE = "layout_inflater";
+ field public static final String LOCATION_SERVICE = "location";
+ field public static final String MEDIA_PROJECTION_SERVICE = "media_projection";
+ field public static final String MEDIA_ROUTER_SERVICE = "media_router";
+ field public static final String MEDIA_SESSION_SERVICE = "media_session";
+ field public static final String MIDI_SERVICE = "midi";
field public static final int MODE_APPEND = 32768; // 0x8000
field public static final int MODE_ENABLE_WRITE_AHEAD_LOGGING = 8; // 0x8
- field public static final deprecated int MODE_MULTI_PROCESS = 4; // 0x4
+ field @Deprecated public static final int MODE_MULTI_PROCESS = 4; // 0x4
field public static final int MODE_NO_LOCALIZED_COLLATORS = 16; // 0x10
field public static final int MODE_PRIVATE = 0; // 0x0
- field public static final deprecated int MODE_WORLD_READABLE = 1; // 0x1
- field public static final deprecated int MODE_WORLD_WRITEABLE = 2; // 0x2
- field public static final java.lang.String NETWORK_STATS_SERVICE = "netstats";
- field public static final java.lang.String NFC_SERVICE = "nfc";
- field public static final java.lang.String NOTIFICATION_SERVICE = "notification";
- field public static final java.lang.String NSD_SERVICE = "servicediscovery";
- field public static final java.lang.String POWER_SERVICE = "power";
- field public static final java.lang.String PRINT_SERVICE = "print";
+ field @Deprecated public static final int MODE_WORLD_READABLE = 1; // 0x1
+ field @Deprecated public static final int MODE_WORLD_WRITEABLE = 2; // 0x2
+ field public static final String NETWORK_STATS_SERVICE = "netstats";
+ field public static final String NFC_SERVICE = "nfc";
+ field public static final String NOTIFICATION_SERVICE = "notification";
+ field public static final String NSD_SERVICE = "servicediscovery";
+ field public static final String POWER_SERVICE = "power";
+ field public static final String PRINT_SERVICE = "print";
field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1
- field public static final java.lang.String RESTRICTIONS_SERVICE = "restrictions";
- field public static final java.lang.String ROLE_SERVICE = "role";
- field public static final java.lang.String SEARCH_SERVICE = "search";
- field public static final java.lang.String SENSOR_SERVICE = "sensor";
- field public static final java.lang.String SHORTCUT_SERVICE = "shortcut";
- field public static final java.lang.String STORAGE_SERVICE = "storage";
- field public static final java.lang.String STORAGE_STATS_SERVICE = "storagestats";
- field public static final java.lang.String SYSTEM_HEALTH_SERVICE = "systemhealth";
- field public static final java.lang.String TELECOM_SERVICE = "telecom";
- field public static final java.lang.String TELEPHONY_SERVICE = "phone";
- field public static final java.lang.String TELEPHONY_SUBSCRIPTION_SERVICE = "telephony_subscription_service";
- field public static final java.lang.String TEXT_CLASSIFICATION_SERVICE = "textclassification";
- field public static final java.lang.String TEXT_SERVICES_MANAGER_SERVICE = "textservices";
- field public static final java.lang.String TV_INPUT_SERVICE = "tv_input";
- field public static final java.lang.String UI_MODE_SERVICE = "uimode";
- field public static final java.lang.String USAGE_STATS_SERVICE = "usagestats";
- field public static final java.lang.String USB_SERVICE = "usb";
- field public static final java.lang.String USER_SERVICE = "user";
- field public static final java.lang.String VIBRATOR_SERVICE = "vibrator";
- field public static final java.lang.String WALLPAPER_SERVICE = "wallpaper";
- field public static final java.lang.String WIFI_AWARE_SERVICE = "wifiaware";
- field public static final java.lang.String WIFI_P2P_SERVICE = "wifip2p";
- field public static final java.lang.String WIFI_RTT_RANGING_SERVICE = "wifirtt";
- field public static final java.lang.String WIFI_SERVICE = "wifi";
- field public static final java.lang.String WINDOW_SERVICE = "window";
+ field public static final String RESTRICTIONS_SERVICE = "restrictions";
+ field public static final String ROLE_SERVICE = "role";
+ field public static final String SEARCH_SERVICE = "search";
+ field public static final String SENSOR_SERVICE = "sensor";
+ field public static final String SHORTCUT_SERVICE = "shortcut";
+ field public static final String STORAGE_SERVICE = "storage";
+ field public static final String STORAGE_STATS_SERVICE = "storagestats";
+ field public static final String SYSTEM_HEALTH_SERVICE = "systemhealth";
+ field public static final String TELECOM_SERVICE = "telecom";
+ field public static final String TELEPHONY_SERVICE = "phone";
+ field public static final String TELEPHONY_SUBSCRIPTION_SERVICE = "telephony_subscription_service";
+ field public static final String TEXT_CLASSIFICATION_SERVICE = "textclassification";
+ field public static final String TEXT_SERVICES_MANAGER_SERVICE = "textservices";
+ field public static final String TV_INPUT_SERVICE = "tv_input";
+ field public static final String UI_MODE_SERVICE = "uimode";
+ field public static final String USAGE_STATS_SERVICE = "usagestats";
+ field public static final String USB_SERVICE = "usb";
+ field public static final String USER_SERVICE = "user";
+ field public static final String VIBRATOR_SERVICE = "vibrator";
+ field public static final String WALLPAPER_SERVICE = "wallpaper";
+ field public static final String WIFI_AWARE_SERVICE = "wifiaware";
+ field public static final String WIFI_P2P_SERVICE = "wifip2p";
+ field public static final String WIFI_RTT_RANGING_SERVICE = "wifirtt";
+ field public static final String WIFI_SERVICE = "wifi";
+ field public static final String WINDOW_SERVICE = "window";
}
public class ContextWrapper extends android.content.Context {
ctor public ContextWrapper(android.content.Context);
method protected void attachBaseContext(android.content.Context);
- method public boolean bindIsolatedService(android.content.Intent, android.content.ServiceConnection, int, java.lang.String);
+ method public boolean bindIsolatedService(android.content.Intent, android.content.ServiceConnection, int, String);
method public boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
- method public int checkCallingOrSelfPermission(java.lang.String);
+ method public int checkCallingOrSelfPermission(String);
method public int checkCallingOrSelfUriPermission(android.net.Uri, int);
- method public int checkCallingPermission(java.lang.String);
+ method public int checkCallingPermission(String);
method public int checkCallingUriPermission(android.net.Uri, int);
- method public int checkPermission(java.lang.String, int, int);
- method public int checkSelfPermission(java.lang.String);
+ method public int checkPermission(String, int, int);
+ method public int checkSelfPermission(String);
method public int checkUriPermission(android.net.Uri, int, int, int);
- method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
- method public deprecated void clearWallpaper() throws java.io.IOException;
+ method public int checkUriPermission(android.net.Uri, String, String, int, int, int);
+ method @Deprecated public void clearWallpaper() throws java.io.IOException;
method public android.content.Context createConfigurationContext(android.content.res.Configuration);
- method public android.content.Context createContextForSplit(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.content.Context createDeviceProtectedStorageContext();
method public android.content.Context createDisplayContext(android.view.Display);
- method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public java.lang.String[] databaseList();
- method public boolean deleteDatabase(java.lang.String);
- method public boolean deleteFile(java.lang.String);
- method public boolean deleteSharedPreferences(java.lang.String);
- method public void enforceCallingOrSelfPermission(java.lang.String, java.lang.String);
- method public void enforceCallingOrSelfUriPermission(android.net.Uri, int, java.lang.String);
- method public void enforceCallingPermission(java.lang.String, java.lang.String);
- method public void enforceCallingUriPermission(android.net.Uri, int, java.lang.String);
- method public void enforcePermission(java.lang.String, int, int, java.lang.String);
- method public void enforceUriPermission(android.net.Uri, int, int, int, java.lang.String);
- method public void enforceUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int, java.lang.String);
- method public java.lang.String[] fileList();
+ method public android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public String[] databaseList();
+ method public boolean deleteDatabase(String);
+ method public boolean deleteFile(String);
+ method public boolean deleteSharedPreferences(String);
+ method public void enforceCallingOrSelfPermission(String, String);
+ method public void enforceCallingOrSelfUriPermission(android.net.Uri, int, String);
+ method public void enforceCallingPermission(String, String);
+ method public void enforceCallingUriPermission(android.net.Uri, int, String);
+ method public void enforcePermission(String, int, int, String);
+ method public void enforceUriPermission(android.net.Uri, int, int, int, String);
+ method public void enforceUriPermission(android.net.Uri, String, String, int, int, int, String);
+ method public String[] fileList();
method public android.content.Context getApplicationContext();
method public android.content.pm.ApplicationInfo getApplicationInfo();
method public android.content.res.AssetManager getAssets();
method public android.content.Context getBaseContext();
method public java.io.File getCacheDir();
- method public java.lang.ClassLoader getClassLoader();
+ method public ClassLoader getClassLoader();
method public java.io.File getCodeCacheDir();
method public android.content.ContentResolver getContentResolver();
method public java.io.File getDataDir();
- method public java.io.File getDatabasePath(java.lang.String);
- method public java.io.File getDir(java.lang.String, int);
+ method public java.io.File getDatabasePath(String);
+ method public java.io.File getDir(String, int);
method public java.io.File getExternalCacheDir();
method public java.io.File[] getExternalCacheDirs();
- method public java.io.File getExternalFilesDir(java.lang.String);
- method public java.io.File[] getExternalFilesDirs(java.lang.String);
+ method public java.io.File getExternalFilesDir(String);
+ method public java.io.File[] getExternalFilesDirs(String);
method public java.io.File[] getExternalMediaDirs();
- method public java.io.File getFileStreamPath(java.lang.String);
+ method public java.io.File getFileStreamPath(String);
method public java.io.File getFilesDir();
method public android.os.Looper getMainLooper();
method public java.io.File getNoBackupFilesDir();
method public java.io.File getObbDir();
method public java.io.File[] getObbDirs();
- method public java.lang.String getOpPackageName();
- method public java.lang.String getPackageCodePath();
+ method public String getOpPackageName();
+ method public String getPackageCodePath();
method public android.content.pm.PackageManager getPackageManager();
- method public java.lang.String getPackageName();
- method public java.lang.String getPackageResourcePath();
+ method public String getPackageName();
+ method public String getPackageResourcePath();
method public android.content.res.Resources getResources();
- method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
- method public java.lang.Object getSystemService(java.lang.String);
- method public java.lang.String getSystemServiceName(java.lang.Class<?>);
+ method public android.content.SharedPreferences getSharedPreferences(String, int);
+ method public Object getSystemService(String);
+ method public String getSystemServiceName(Class<?>);
method public android.content.res.Resources.Theme getTheme();
- method public deprecated android.graphics.drawable.Drawable getWallpaper();
- method public deprecated int getWallpaperDesiredMinimumHeight();
- method public deprecated int getWallpaperDesiredMinimumWidth();
- method public void grantUriPermission(java.lang.String, android.net.Uri, int);
+ method @Deprecated public android.graphics.drawable.Drawable getWallpaper();
+ method @Deprecated public int getWallpaperDesiredMinimumHeight();
+ method @Deprecated public int getWallpaperDesiredMinimumWidth();
+ method public void grantUriPermission(String, android.net.Uri, int);
method public boolean isDeviceProtectedStorage();
- method public boolean moveDatabaseFrom(android.content.Context, java.lang.String);
- method public boolean moveSharedPreferencesFrom(android.content.Context, java.lang.String);
- method public java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException;
- method public java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException;
- method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
- method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
- method public deprecated android.graphics.drawable.Drawable peekWallpaper();
+ method public boolean moveDatabaseFrom(android.content.Context, String);
+ method public boolean moveSharedPreferencesFrom(android.content.Context, String);
+ method public java.io.FileInputStream openFileInput(String) throws java.io.FileNotFoundException;
+ method public java.io.FileOutputStream openFileOutput(String, int) throws java.io.FileNotFoundException;
+ method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
+ method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
+ method @Deprecated public android.graphics.drawable.Drawable peekWallpaper();
method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int);
- method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler);
- method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int);
- method public deprecated void removeStickyBroadcast(android.content.Intent);
- method public deprecated void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
+ method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler);
+ method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler, int);
+ method @Deprecated public void removeStickyBroadcast(android.content.Intent);
+ method @Deprecated public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
method public void revokeUriPermission(android.net.Uri, int);
- method public void revokeUriPermission(java.lang.String, android.net.Uri, int);
+ method public void revokeUriPermission(String, android.net.Uri, int);
method public void sendBroadcast(android.content.Intent);
- method public void sendBroadcast(android.content.Intent, java.lang.String);
+ method public void sendBroadcast(android.content.Intent, String);
method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
- method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String);
- method public void sendOrderedBroadcast(android.content.Intent, java.lang.String);
- method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public deprecated void sendStickyBroadcast(android.content.Intent);
- method public deprecated void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
- method public deprecated void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public deprecated void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+ method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String);
+ method public void sendOrderedBroadcast(android.content.Intent, String);
+ method public void sendOrderedBroadcast(android.content.Intent, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+ method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+ method @Deprecated public void sendStickyBroadcast(android.content.Intent);
+ method @Deprecated public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
+ method @Deprecated public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+ method @Deprecated public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
method public void setTheme(int);
- method public deprecated void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
- method public deprecated void setWallpaper(java.io.InputStream) throws java.io.IOException;
+ method @Deprecated public void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
+ method @Deprecated public void setWallpaper(java.io.InputStream) throws java.io.IOException;
method public void startActivities(android.content.Intent[]);
method public void startActivities(android.content.Intent[], android.os.Bundle);
method public void startActivity(android.content.Intent);
method public void startActivity(android.content.Intent, android.os.Bundle);
method public android.content.ComponentName startForegroundService(android.content.Intent);
- method public boolean startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle);
+ method public boolean startInstrumentation(android.content.ComponentName, String, android.os.Bundle);
method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
method public android.content.ComponentName startService(android.content.Intent);
@@ -9914,57 +9948,57 @@
method public void updateServiceGroup(android.content.ServiceConnection, int, int);
}
- public deprecated class CursorLoader extends android.content.AsyncTaskLoader {
- ctor public CursorLoader(android.content.Context);
- ctor public CursorLoader(android.content.Context, android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public void deliverResult(android.database.Cursor);
- method public java.lang.String[] getProjection();
- method public java.lang.String getSelection();
- method public java.lang.String[] getSelectionArgs();
- method public java.lang.String getSortOrder();
- method public android.net.Uri getUri();
- method public android.database.Cursor loadInBackground();
- method public void onCanceled(android.database.Cursor);
- method public void setProjection(java.lang.String[]);
- method public void setSelection(java.lang.String);
- method public void setSelectionArgs(java.lang.String[]);
- method public void setSortOrder(java.lang.String);
- method public void setUri(android.net.Uri);
+ @Deprecated public class CursorLoader extends android.content.AsyncTaskLoader<android.database.Cursor> {
+ ctor @Deprecated public CursorLoader(android.content.Context);
+ ctor @Deprecated public CursorLoader(android.content.Context, android.net.Uri, String[], String, String[], String);
+ method @Deprecated public void deliverResult(android.database.Cursor);
+ method @Deprecated public String[] getProjection();
+ method @Deprecated public String getSelection();
+ method @Deprecated public String[] getSelectionArgs();
+ method @Deprecated public String getSortOrder();
+ method @Deprecated public android.net.Uri getUri();
+ method @Deprecated public android.database.Cursor loadInBackground();
+ method @Deprecated public void onCanceled(android.database.Cursor);
+ method @Deprecated public void setProjection(String[]);
+ method @Deprecated public void setSelection(String);
+ method @Deprecated public void setSelectionArgs(String[]);
+ method @Deprecated public void setSortOrder(String);
+ method @Deprecated public void setUri(android.net.Uri);
}
- public abstract interface DialogInterface {
- method public abstract void cancel();
- method public abstract void dismiss();
- field public static final deprecated int BUTTON1 = -1; // 0xffffffff
- field public static final deprecated int BUTTON2 = -2; // 0xfffffffe
- field public static final deprecated int BUTTON3 = -3; // 0xfffffffd
+ public interface DialogInterface {
+ method public void cancel();
+ method public void dismiss();
+ field @Deprecated public static final int BUTTON1 = -1; // 0xffffffff
+ field @Deprecated public static final int BUTTON2 = -2; // 0xfffffffe
+ field @Deprecated public static final int BUTTON3 = -3; // 0xfffffffd
field public static final int BUTTON_NEGATIVE = -2; // 0xfffffffe
field public static final int BUTTON_NEUTRAL = -3; // 0xfffffffd
field public static final int BUTTON_POSITIVE = -1; // 0xffffffff
}
- public static abstract interface DialogInterface.OnCancelListener {
- method public abstract void onCancel(android.content.DialogInterface);
+ public static interface DialogInterface.OnCancelListener {
+ method public void onCancel(android.content.DialogInterface);
}
- public static abstract interface DialogInterface.OnClickListener {
- method public abstract void onClick(android.content.DialogInterface, int);
+ public static interface DialogInterface.OnClickListener {
+ method public void onClick(android.content.DialogInterface, int);
}
- public static abstract interface DialogInterface.OnDismissListener {
- method public abstract void onDismiss(android.content.DialogInterface);
+ public static interface DialogInterface.OnDismissListener {
+ method public void onDismiss(android.content.DialogInterface);
}
- public static abstract interface DialogInterface.OnKeyListener {
- method public abstract boolean onKey(android.content.DialogInterface, int, android.view.KeyEvent);
+ public static interface DialogInterface.OnKeyListener {
+ method public boolean onKey(android.content.DialogInterface, int, android.view.KeyEvent);
}
- public static abstract interface DialogInterface.OnMultiChoiceClickListener {
- method public abstract void onClick(android.content.DialogInterface, int, boolean);
+ public static interface DialogInterface.OnMultiChoiceClickListener {
+ method public void onClick(android.content.DialogInterface, int, boolean);
}
- public static abstract interface DialogInterface.OnShowListener {
- method public abstract void onShow(android.content.DialogInterface);
+ public static interface DialogInterface.OnShowListener {
+ method public void onShow(android.content.DialogInterface);
}
public final class Entity {
@@ -9980,385 +10014,386 @@
field public final android.content.ContentValues values;
}
- public abstract interface EntityIterator implements java.util.Iterator {
- method public abstract void close();
- method public abstract void reset();
+ public interface EntityIterator extends java.util.Iterator<android.content.Entity> {
+ method public void close();
+ method public void reset();
}
public class Intent implements java.lang.Cloneable android.os.Parcelable {
ctor public Intent();
ctor public Intent(android.content.Intent);
- ctor public Intent(java.lang.String);
- ctor public Intent(java.lang.String, android.net.Uri);
- ctor public Intent(android.content.Context, java.lang.Class<?>);
- ctor public Intent(java.lang.String, android.net.Uri, android.content.Context, java.lang.Class<?>);
- method public android.content.Intent addCategory(java.lang.String);
- method public android.content.Intent addFlags(int);
- method public java.lang.Object clone();
- method public android.content.Intent cloneFilter();
- method public static android.content.Intent createChooser(android.content.Intent, java.lang.CharSequence);
- method public static android.content.Intent createChooser(android.content.Intent, java.lang.CharSequence, android.content.IntentSender);
+ ctor public Intent(String);
+ ctor public Intent(String, android.net.Uri);
+ ctor public Intent(android.content.Context, Class<?>);
+ ctor public Intent(String, android.net.Uri, android.content.Context, Class<?>);
+ method @NonNull public android.content.Intent addCategory(String);
+ method @NonNull public android.content.Intent addFlags(int);
+ method public Object clone();
+ method @NonNull public android.content.Intent cloneFilter();
+ method public static android.content.Intent createChooser(android.content.Intent, CharSequence);
+ method public static android.content.Intent createChooser(android.content.Intent, CharSequence, android.content.IntentSender);
method public int describeContents();
- method public int fillIn(android.content.Intent, int);
+ method public int fillIn(@NonNull android.content.Intent, int);
method public boolean filterEquals(android.content.Intent);
method public int filterHashCode();
- method public java.lang.String getAction();
- method public boolean[] getBooleanArrayExtra(java.lang.String);
- method public boolean getBooleanExtra(java.lang.String, boolean);
- method public android.os.Bundle getBundleExtra(java.lang.String);
- method public byte[] getByteArrayExtra(java.lang.String);
- method public byte getByteExtra(java.lang.String, byte);
+ method @Nullable public String getAction();
+ method @Nullable public boolean[] getBooleanArrayExtra(String);
+ method public boolean getBooleanExtra(String, boolean);
+ method @Nullable public android.os.Bundle getBundleExtra(String);
+ method @Nullable public byte[] getByteArrayExtra(String);
+ method public byte getByteExtra(String, byte);
method public java.util.Set<java.lang.String> getCategories();
- method public char[] getCharArrayExtra(java.lang.String);
- method public char getCharExtra(java.lang.String, char);
- method public java.lang.CharSequence[] getCharSequenceArrayExtra(java.lang.String);
- method public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayListExtra(java.lang.String);
- method public java.lang.CharSequence getCharSequenceExtra(java.lang.String);
- method public android.content.ClipData getClipData();
- method public android.content.ComponentName getComponent();
- method public android.net.Uri getData();
- method public java.lang.String getDataString();
- method public double[] getDoubleArrayExtra(java.lang.String);
- method public double getDoubleExtra(java.lang.String, double);
- method public android.os.Bundle getExtras();
+ method @Nullable public char[] getCharArrayExtra(String);
+ method public char getCharExtra(String, char);
+ method @Nullable public CharSequence[] getCharSequenceArrayExtra(String);
+ method @Nullable public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayListExtra(String);
+ method @Nullable public CharSequence getCharSequenceExtra(String);
+ method @Nullable public android.content.ClipData getClipData();
+ method @Nullable public android.content.ComponentName getComponent();
+ method @Nullable public android.net.Uri getData();
+ method @Nullable public String getDataString();
+ method @Nullable public double[] getDoubleArrayExtra(String);
+ method public double getDoubleExtra(String, double);
+ method @Nullable public android.os.Bundle getExtras();
method public int getFlags();
- method public float[] getFloatArrayExtra(java.lang.String);
- method public float getFloatExtra(java.lang.String, float);
- method public int[] getIntArrayExtra(java.lang.String);
- method public int getIntExtra(java.lang.String, int);
- method public java.util.ArrayList<java.lang.Integer> getIntegerArrayListExtra(java.lang.String);
- method public static deprecated android.content.Intent getIntent(java.lang.String) throws java.net.URISyntaxException;
- method public static android.content.Intent getIntentOld(java.lang.String) throws java.net.URISyntaxException;
- method public long[] getLongArrayExtra(java.lang.String);
- method public long getLongExtra(java.lang.String, long);
- method public java.lang.String getPackage();
- method public android.os.Parcelable[] getParcelableArrayExtra(java.lang.String);
- method public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayListExtra(java.lang.String);
- method public <T extends android.os.Parcelable> T getParcelableExtra(java.lang.String);
- method public java.lang.String getScheme();
- method public android.content.Intent getSelector();
- method public java.io.Serializable getSerializableExtra(java.lang.String);
- method public short[] getShortArrayExtra(java.lang.String);
- method public short getShortExtra(java.lang.String, short);
- method public android.graphics.Rect getSourceBounds();
- method public java.lang.String[] getStringArrayExtra(java.lang.String);
- method public java.util.ArrayList<java.lang.String> getStringArrayListExtra(java.lang.String);
- method public java.lang.String getStringExtra(java.lang.String);
- method public java.lang.String getType();
- method public boolean hasCategory(java.lang.String);
- method public boolean hasExtra(java.lang.String);
+ method @Nullable public float[] getFloatArrayExtra(String);
+ method public float getFloatExtra(String, float);
+ method @Nullable public int[] getIntArrayExtra(String);
+ method public int getIntExtra(String, int);
+ method @Nullable public java.util.ArrayList<java.lang.Integer> getIntegerArrayListExtra(String);
+ method @Deprecated public static android.content.Intent getIntent(String) throws java.net.URISyntaxException;
+ method public static android.content.Intent getIntentOld(String) throws java.net.URISyntaxException;
+ method @Nullable public long[] getLongArrayExtra(String);
+ method public long getLongExtra(String, long);
+ method @Nullable public String getPackage();
+ method @Nullable public android.os.Parcelable[] getParcelableArrayExtra(String);
+ method @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayListExtra(String);
+ method @Nullable public <T extends android.os.Parcelable> T getParcelableExtra(String);
+ method @Nullable public String getScheme();
+ method @Nullable public android.content.Intent getSelector();
+ method @Nullable public java.io.Serializable getSerializableExtra(String);
+ method @Nullable public short[] getShortArrayExtra(String);
+ method public short getShortExtra(String, short);
+ method @Nullable public android.graphics.Rect getSourceBounds();
+ method @Nullable public String[] getStringArrayExtra(String);
+ method @Nullable public java.util.ArrayList<java.lang.String> getStringArrayListExtra(String);
+ method @Nullable public String getStringExtra(String);
+ method @Nullable public String getType();
+ method public boolean hasCategory(String);
+ method public boolean hasExtra(String);
method public boolean hasFileDescriptors();
method public static android.content.Intent makeMainActivity(android.content.ComponentName);
- method public static android.content.Intent makeMainSelectorActivity(java.lang.String, java.lang.String);
+ method public static android.content.Intent makeMainSelectorActivity(String, String);
method public static android.content.Intent makeRestartActivityTask(android.content.ComponentName);
- method public static java.lang.String normalizeMimeType(java.lang.String);
- method public static android.content.Intent parseIntent(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public static android.content.Intent parseUri(java.lang.String, int) throws java.net.URISyntaxException;
- method public android.content.Intent putCharSequenceArrayListExtra(java.lang.String, java.util.ArrayList<java.lang.CharSequence>);
- method public android.content.Intent putExtra(java.lang.String, boolean);
- method public android.content.Intent putExtra(java.lang.String, byte);
- method public android.content.Intent putExtra(java.lang.String, char);
- method public android.content.Intent putExtra(java.lang.String, short);
- method public android.content.Intent putExtra(java.lang.String, int);
- method public android.content.Intent putExtra(java.lang.String, long);
- method public android.content.Intent putExtra(java.lang.String, float);
- method public android.content.Intent putExtra(java.lang.String, double);
- method public android.content.Intent putExtra(java.lang.String, java.lang.String);
- method public android.content.Intent putExtra(java.lang.String, java.lang.CharSequence);
- method public android.content.Intent putExtra(java.lang.String, android.os.Parcelable);
- method public android.content.Intent putExtra(java.lang.String, android.os.Parcelable[]);
- method public android.content.Intent putExtra(java.lang.String, java.io.Serializable);
- method public android.content.Intent putExtra(java.lang.String, boolean[]);
- method public android.content.Intent putExtra(java.lang.String, byte[]);
- method public android.content.Intent putExtra(java.lang.String, short[]);
- method public android.content.Intent putExtra(java.lang.String, char[]);
- method public android.content.Intent putExtra(java.lang.String, int[]);
- method public android.content.Intent putExtra(java.lang.String, long[]);
- method public android.content.Intent putExtra(java.lang.String, float[]);
- method public android.content.Intent putExtra(java.lang.String, double[]);
- method public android.content.Intent putExtra(java.lang.String, java.lang.String[]);
- method public android.content.Intent putExtra(java.lang.String, java.lang.CharSequence[]);
- method public android.content.Intent putExtra(java.lang.String, android.os.Bundle);
- method public android.content.Intent putExtras(android.content.Intent);
- method public android.content.Intent putExtras(android.os.Bundle);
- method public android.content.Intent putIntegerArrayListExtra(java.lang.String, java.util.ArrayList<java.lang.Integer>);
- method public android.content.Intent putParcelableArrayListExtra(java.lang.String, java.util.ArrayList<? extends android.os.Parcelable>);
- method public android.content.Intent putStringArrayListExtra(java.lang.String, java.util.ArrayList<java.lang.String>);
+ method @Nullable public static String normalizeMimeType(@Nullable String);
+ method @NonNull public static android.content.Intent parseIntent(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public static android.content.Intent parseUri(String, int) throws java.net.URISyntaxException;
+ method @NonNull public android.content.Intent putCharSequenceArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.CharSequence>);
+ method @NonNull public android.content.Intent putExtra(String, boolean);
+ method @NonNull public android.content.Intent putExtra(String, byte);
+ method @NonNull public android.content.Intent putExtra(String, char);
+ method @NonNull public android.content.Intent putExtra(String, short);
+ method @NonNull public android.content.Intent putExtra(String, int);
+ method @NonNull public android.content.Intent putExtra(String, long);
+ method @NonNull public android.content.Intent putExtra(String, float);
+ method @NonNull public android.content.Intent putExtra(String, double);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable String);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable CharSequence);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Parcelable);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Parcelable[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable java.io.Serializable);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable boolean[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable byte[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable short[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable char[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable int[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable long[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable float[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable double[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable String[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable CharSequence[]);
+ method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Bundle);
+ method @NonNull public android.content.Intent putExtras(@NonNull android.content.Intent);
+ method @NonNull public android.content.Intent putExtras(@NonNull android.os.Bundle);
+ method @NonNull public android.content.Intent putIntegerArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.Integer>);
+ method @NonNull public android.content.Intent putParcelableArrayListExtra(String, @Nullable java.util.ArrayList<? extends android.os.Parcelable>);
+ method @NonNull public android.content.Intent putStringArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.String>);
method public void readFromParcel(android.os.Parcel);
- method public void removeCategory(java.lang.String);
- method public void removeExtra(java.lang.String);
+ method public void removeCategory(String);
+ method public void removeExtra(String);
method public void removeFlags(int);
- method public android.content.Intent replaceExtras(android.content.Intent);
- method public android.content.Intent replaceExtras(android.os.Bundle);
- method public android.content.ComponentName resolveActivity(android.content.pm.PackageManager);
- method public android.content.pm.ActivityInfo resolveActivityInfo(android.content.pm.PackageManager, int);
- method public java.lang.String resolveType(android.content.Context);
- method public java.lang.String resolveType(android.content.ContentResolver);
- method public java.lang.String resolveTypeIfNeeded(android.content.ContentResolver);
- method public android.content.Intent setAction(java.lang.String);
- method public android.content.Intent setClass(android.content.Context, java.lang.Class<?>);
- method public android.content.Intent setClassName(android.content.Context, java.lang.String);
- method public android.content.Intent setClassName(java.lang.String, java.lang.String);
- method public void setClipData(android.content.ClipData);
- method public android.content.Intent setComponent(android.content.ComponentName);
- method public android.content.Intent setData(android.net.Uri);
- method public android.content.Intent setDataAndNormalize(android.net.Uri);
- method public android.content.Intent setDataAndType(android.net.Uri, java.lang.String);
- method public android.content.Intent setDataAndTypeAndNormalize(android.net.Uri, java.lang.String);
- method public void setExtrasClassLoader(java.lang.ClassLoader);
- method public android.content.Intent setFlags(int);
- method public android.content.Intent setPackage(java.lang.String);
- method public void setSelector(android.content.Intent);
- method public void setSourceBounds(android.graphics.Rect);
- method public android.content.Intent setType(java.lang.String);
- method public android.content.Intent setTypeAndNormalize(java.lang.String);
- method public deprecated java.lang.String toURI();
- method public java.lang.String toUri(int);
+ method @NonNull public android.content.Intent replaceExtras(@NonNull android.content.Intent);
+ method @NonNull public android.content.Intent replaceExtras(@Nullable android.os.Bundle);
+ method public android.content.ComponentName resolveActivity(@NonNull android.content.pm.PackageManager);
+ method public android.content.pm.ActivityInfo resolveActivityInfo(@NonNull android.content.pm.PackageManager, int);
+ method @Nullable public String resolveType(@NonNull android.content.Context);
+ method @Nullable public String resolveType(@NonNull android.content.ContentResolver);
+ method @Nullable public String resolveTypeIfNeeded(@NonNull android.content.ContentResolver);
+ method @NonNull public android.content.Intent setAction(@Nullable String);
+ method @NonNull public android.content.Intent setClass(@NonNull android.content.Context, @NonNull Class<?>);
+ method @NonNull public android.content.Intent setClassName(@NonNull android.content.Context, @NonNull String);
+ method @NonNull public android.content.Intent setClassName(@NonNull String, @NonNull String);
+ method public void setClipData(@Nullable android.content.ClipData);
+ method @NonNull public android.content.Intent setComponent(@Nullable android.content.ComponentName);
+ method @NonNull public android.content.Intent setData(@Nullable android.net.Uri);
+ method @NonNull public android.content.Intent setDataAndNormalize(@NonNull android.net.Uri);
+ method @NonNull public android.content.Intent setDataAndType(@Nullable android.net.Uri, @Nullable String);
+ method @NonNull public android.content.Intent setDataAndTypeAndNormalize(@NonNull android.net.Uri, @Nullable String);
+ method public void setExtrasClassLoader(@Nullable ClassLoader);
+ method @NonNull public android.content.Intent setFlags(int);
+ method @NonNull public android.content.Intent setPackage(@Nullable String);
+ method public void setSelector(@Nullable android.content.Intent);
+ method public void setSourceBounds(@Nullable android.graphics.Rect);
+ method @NonNull public android.content.Intent setType(@Nullable String);
+ method @NonNull public android.content.Intent setTypeAndNormalize(@Nullable String);
+ method @Deprecated public String toURI();
+ method public String toUri(int);
method public void writeToParcel(android.os.Parcel, int);
- field public static final java.lang.String ACTION_AIRPLANE_MODE_CHANGED = "android.intent.action.AIRPLANE_MODE";
- field public static final java.lang.String ACTION_ALL_APPS = "android.intent.action.ALL_APPS";
- field public static final java.lang.String ACTION_ANSWER = "android.intent.action.ANSWER";
- field public static final java.lang.String ACTION_APPLICATION_PREFERENCES = "android.intent.action.APPLICATION_PREFERENCES";
- field public static final java.lang.String ACTION_APPLICATION_RESTRICTIONS_CHANGED = "android.intent.action.APPLICATION_RESTRICTIONS_CHANGED";
- field public static final java.lang.String ACTION_APP_ERROR = "android.intent.action.APP_ERROR";
- field public static final java.lang.String ACTION_ASSIST = "android.intent.action.ASSIST";
- field public static final java.lang.String ACTION_ATTACH_DATA = "android.intent.action.ATTACH_DATA";
- field public static final java.lang.String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";
- field public static final java.lang.String ACTION_BATTERY_LOW = "android.intent.action.BATTERY_LOW";
- field public static final java.lang.String ACTION_BATTERY_OKAY = "android.intent.action.BATTERY_OKAY";
- field public static final java.lang.String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
- field public static final java.lang.String ACTION_BUG_REPORT = "android.intent.action.BUG_REPORT";
- field public static final java.lang.String ACTION_CALL = "android.intent.action.CALL";
- field public static final java.lang.String ACTION_CALL_BUTTON = "android.intent.action.CALL_BUTTON";
- field public static final java.lang.String ACTION_CAMERA_BUTTON = "android.intent.action.CAMERA_BUTTON";
- field public static final java.lang.String ACTION_CARRIER_SETUP = "android.intent.action.CARRIER_SETUP";
- field public static final java.lang.String ACTION_CHOOSER = "android.intent.action.CHOOSER";
- field public static final java.lang.String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS";
- field public static final java.lang.String ACTION_CONFIGURATION_CHANGED = "android.intent.action.CONFIGURATION_CHANGED";
- field public static final java.lang.String ACTION_CREATE_DOCUMENT = "android.intent.action.CREATE_DOCUMENT";
- field public static final java.lang.String ACTION_CREATE_SHORTCUT = "android.intent.action.CREATE_SHORTCUT";
- field public static final java.lang.String ACTION_DATE_CHANGED = "android.intent.action.DATE_CHANGED";
- field public static final java.lang.String ACTION_DEFAULT = "android.intent.action.VIEW";
- field public static final java.lang.String ACTION_DEFINE = "android.intent.action.DEFINE";
- field public static final java.lang.String ACTION_DELETE = "android.intent.action.DELETE";
- field public static final deprecated java.lang.String ACTION_DEVICE_STORAGE_LOW = "android.intent.action.DEVICE_STORAGE_LOW";
- field public static final deprecated java.lang.String ACTION_DEVICE_STORAGE_OK = "android.intent.action.DEVICE_STORAGE_OK";
- field public static final java.lang.String ACTION_DIAL = "android.intent.action.DIAL";
- field public static final java.lang.String ACTION_DOCK_EVENT = "android.intent.action.DOCK_EVENT";
- field public static final java.lang.String ACTION_DREAMING_STARTED = "android.intent.action.DREAMING_STARTED";
- field public static final java.lang.String ACTION_DREAMING_STOPPED = "android.intent.action.DREAMING_STOPPED";
- field public static final java.lang.String ACTION_EDIT = "android.intent.action.EDIT";
- field public static final java.lang.String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE";
- field public static final java.lang.String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE";
- field public static final java.lang.String ACTION_FACTORY_TEST = "android.intent.action.FACTORY_TEST";
- field public static final java.lang.String ACTION_GET_CONTENT = "android.intent.action.GET_CONTENT";
- field public static final java.lang.String ACTION_GET_RESTRICTION_ENTRIES = "android.intent.action.GET_RESTRICTION_ENTRIES";
- field public static final java.lang.String ACTION_GTALK_SERVICE_CONNECTED = "android.intent.action.GTALK_CONNECTED";
- field public static final java.lang.String ACTION_GTALK_SERVICE_DISCONNECTED = "android.intent.action.GTALK_DISCONNECTED";
- field public static final java.lang.String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
- field public static final java.lang.String ACTION_INPUT_METHOD_CHANGED = "android.intent.action.INPUT_METHOD_CHANGED";
- field public static final java.lang.String ACTION_INSERT = "android.intent.action.INSERT";
- field public static final java.lang.String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT";
- field public static final java.lang.String ACTION_INSTALL_FAILURE = "android.intent.action.INSTALL_FAILURE";
- field public static final deprecated java.lang.String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE";
- field public static final java.lang.String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";
- field public static final java.lang.String ACTION_LOCKED_BOOT_COMPLETED = "android.intent.action.LOCKED_BOOT_COMPLETED";
- field public static final java.lang.String ACTION_MAIN = "android.intent.action.MAIN";
- field public static final java.lang.String ACTION_MANAGED_PROFILE_ADDED = "android.intent.action.MANAGED_PROFILE_ADDED";
- field public static final java.lang.String ACTION_MANAGED_PROFILE_AVAILABLE = "android.intent.action.MANAGED_PROFILE_AVAILABLE";
- field public static final java.lang.String ACTION_MANAGED_PROFILE_REMOVED = "android.intent.action.MANAGED_PROFILE_REMOVED";
- field public static final java.lang.String ACTION_MANAGED_PROFILE_UNAVAILABLE = "android.intent.action.MANAGED_PROFILE_UNAVAILABLE";
- field public static final java.lang.String ACTION_MANAGED_PROFILE_UNLOCKED = "android.intent.action.MANAGED_PROFILE_UNLOCKED";
- field public static final java.lang.String ACTION_MANAGE_NETWORK_USAGE = "android.intent.action.MANAGE_NETWORK_USAGE";
- field public static final java.lang.String ACTION_MANAGE_PACKAGE_STORAGE = "android.intent.action.MANAGE_PACKAGE_STORAGE";
- field public static final java.lang.String ACTION_MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL";
- field public static final java.lang.String ACTION_MEDIA_BUTTON = "android.intent.action.MEDIA_BUTTON";
- field public static final java.lang.String ACTION_MEDIA_CHECKING = "android.intent.action.MEDIA_CHECKING";
- field public static final java.lang.String ACTION_MEDIA_EJECT = "android.intent.action.MEDIA_EJECT";
- field public static final java.lang.String ACTION_MEDIA_MOUNTED = "android.intent.action.MEDIA_MOUNTED";
- field public static final java.lang.String ACTION_MEDIA_NOFS = "android.intent.action.MEDIA_NOFS";
- field public static final java.lang.String ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED";
- field public static final java.lang.String ACTION_MEDIA_SCANNER_FINISHED = "android.intent.action.MEDIA_SCANNER_FINISHED";
- field public static final java.lang.String ACTION_MEDIA_SCANNER_SCAN_FILE = "android.intent.action.MEDIA_SCANNER_SCAN_FILE";
- field public static final java.lang.String ACTION_MEDIA_SCANNER_STARTED = "android.intent.action.MEDIA_SCANNER_STARTED";
- field public static final java.lang.String ACTION_MEDIA_SHARED = "android.intent.action.MEDIA_SHARED";
- field public static final java.lang.String ACTION_MEDIA_UNMOUNTABLE = "android.intent.action.MEDIA_UNMOUNTABLE";
- field public static final java.lang.String ACTION_MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED";
- field public static final java.lang.String ACTION_MY_PACKAGE_REPLACED = "android.intent.action.MY_PACKAGE_REPLACED";
- field public static final java.lang.String ACTION_MY_PACKAGE_SUSPENDED = "android.intent.action.MY_PACKAGE_SUSPENDED";
- field public static final java.lang.String ACTION_MY_PACKAGE_UNSUSPENDED = "android.intent.action.MY_PACKAGE_UNSUSPENDED";
- field public static final java.lang.String ACTION_NEW_OUTGOING_CALL = "android.intent.action.NEW_OUTGOING_CALL";
- field public static final java.lang.String ACTION_OPEN_DOCUMENT = "android.intent.action.OPEN_DOCUMENT";
- field public static final java.lang.String ACTION_OPEN_DOCUMENT_TREE = "android.intent.action.OPEN_DOCUMENT_TREE";
- field public static final java.lang.String ACTION_PACKAGES_SUSPENDED = "android.intent.action.PACKAGES_SUSPENDED";
- field public static final java.lang.String ACTION_PACKAGES_UNSUSPENDED = "android.intent.action.PACKAGES_UNSUSPENDED";
- field public static final java.lang.String ACTION_PACKAGE_ADDED = "android.intent.action.PACKAGE_ADDED";
- field public static final java.lang.String ACTION_PACKAGE_CHANGED = "android.intent.action.PACKAGE_CHANGED";
- field public static final java.lang.String ACTION_PACKAGE_DATA_CLEARED = "android.intent.action.PACKAGE_DATA_CLEARED";
- field public static final java.lang.String ACTION_PACKAGE_FIRST_LAUNCH = "android.intent.action.PACKAGE_FIRST_LAUNCH";
- field public static final java.lang.String ACTION_PACKAGE_FULLY_REMOVED = "android.intent.action.PACKAGE_FULLY_REMOVED";
- field public static final deprecated java.lang.String ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL";
- field public static final java.lang.String ACTION_PACKAGE_NEEDS_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_VERIFICATION";
- field public static final java.lang.String ACTION_PACKAGE_REMOVED = "android.intent.action.PACKAGE_REMOVED";
- field public static final java.lang.String ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED";
- field public static final java.lang.String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED";
- field public static final java.lang.String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED";
- field public static final java.lang.String ACTION_PASTE = "android.intent.action.PASTE";
- field public static final java.lang.String ACTION_PERMISSION_USAGE_DETAILS = "android.intent.action.PERMISSION_USAGE_DETAILS";
- field public static final java.lang.String ACTION_PICK = "android.intent.action.PICK";
- field public static final java.lang.String ACTION_PICK_ACTIVITY = "android.intent.action.PICK_ACTIVITY";
- field public static final java.lang.String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED";
- field public static final java.lang.String ACTION_POWER_DISCONNECTED = "android.intent.action.ACTION_POWER_DISCONNECTED";
- field public static final java.lang.String ACTION_POWER_USAGE_SUMMARY = "android.intent.action.POWER_USAGE_SUMMARY";
- field public static final java.lang.String ACTION_PROCESS_TEXT = "android.intent.action.PROCESS_TEXT";
- field public static final java.lang.String ACTION_PROVIDER_CHANGED = "android.intent.action.PROVIDER_CHANGED";
- field public static final java.lang.String ACTION_QUICK_CLOCK = "android.intent.action.QUICK_CLOCK";
- field public static final java.lang.String ACTION_QUICK_VIEW = "android.intent.action.QUICK_VIEW";
- field public static final java.lang.String ACTION_REBOOT = "android.intent.action.REBOOT";
- field public static final java.lang.String ACTION_RUN = "android.intent.action.RUN";
- field public static final java.lang.String ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF";
- field public static final java.lang.String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON";
- field public static final java.lang.String ACTION_SEARCH = "android.intent.action.SEARCH";
- field public static final java.lang.String ACTION_SEARCH_LONG_PRESS = "android.intent.action.SEARCH_LONG_PRESS";
- field public static final java.lang.String ACTION_SEND = "android.intent.action.SEND";
- field public static final java.lang.String ACTION_SENDTO = "android.intent.action.SENDTO";
- field public static final java.lang.String ACTION_SEND_MULTIPLE = "android.intent.action.SEND_MULTIPLE";
- field public static final java.lang.String ACTION_SET_WALLPAPER = "android.intent.action.SET_WALLPAPER";
- field public static final java.lang.String ACTION_SHOW_APP_INFO = "android.intent.action.SHOW_APP_INFO";
- field public static final java.lang.String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";
- field public static final java.lang.String ACTION_SYNC = "android.intent.action.SYNC";
- field public static final java.lang.String ACTION_SYSTEM_TUTORIAL = "android.intent.action.SYSTEM_TUTORIAL";
- field public static final java.lang.String ACTION_TIMEZONE_CHANGED = "android.intent.action.TIMEZONE_CHANGED";
- field public static final java.lang.String ACTION_TIME_CHANGED = "android.intent.action.TIME_SET";
- field public static final java.lang.String ACTION_TIME_TICK = "android.intent.action.TIME_TICK";
- field public static final java.lang.String ACTION_TRANSLATE = "android.intent.action.TRANSLATE";
- field public static final java.lang.String ACTION_UID_REMOVED = "android.intent.action.UID_REMOVED";
- field public static final deprecated java.lang.String ACTION_UMS_CONNECTED = "android.intent.action.UMS_CONNECTED";
- field public static final deprecated java.lang.String ACTION_UMS_DISCONNECTED = "android.intent.action.UMS_DISCONNECTED";
- field public static final deprecated java.lang.String ACTION_UNINSTALL_PACKAGE = "android.intent.action.UNINSTALL_PACKAGE";
- field public static final java.lang.String ACTION_USER_BACKGROUND = "android.intent.action.USER_BACKGROUND";
- field public static final java.lang.String ACTION_USER_FOREGROUND = "android.intent.action.USER_FOREGROUND";
- field public static final java.lang.String ACTION_USER_INITIALIZE = "android.intent.action.USER_INITIALIZE";
- field public static final java.lang.String ACTION_USER_PRESENT = "android.intent.action.USER_PRESENT";
- field public static final java.lang.String ACTION_USER_UNLOCKED = "android.intent.action.USER_UNLOCKED";
- field public static final java.lang.String ACTION_VIEW = "android.intent.action.VIEW";
- field public static final java.lang.String ACTION_VOICE_COMMAND = "android.intent.action.VOICE_COMMAND";
- field public static final deprecated java.lang.String ACTION_WALLPAPER_CHANGED = "android.intent.action.WALLPAPER_CHANGED";
- field public static final java.lang.String ACTION_WEB_SEARCH = "android.intent.action.WEB_SEARCH";
- field public static final java.lang.String CATEGORY_ALTERNATIVE = "android.intent.category.ALTERNATIVE";
- field public static final java.lang.String CATEGORY_APP_BROWSER = "android.intent.category.APP_BROWSER";
- field public static final java.lang.String CATEGORY_APP_CALCULATOR = "android.intent.category.APP_CALCULATOR";
- field public static final java.lang.String CATEGORY_APP_CALENDAR = "android.intent.category.APP_CALENDAR";
- field public static final java.lang.String CATEGORY_APP_CONTACTS = "android.intent.category.APP_CONTACTS";
- field public static final java.lang.String CATEGORY_APP_EMAIL = "android.intent.category.APP_EMAIL";
- field public static final java.lang.String CATEGORY_APP_GALLERY = "android.intent.category.APP_GALLERY";
- field public static final java.lang.String CATEGORY_APP_MAPS = "android.intent.category.APP_MAPS";
- field public static final java.lang.String CATEGORY_APP_MARKET = "android.intent.category.APP_MARKET";
- field public static final java.lang.String CATEGORY_APP_MESSAGING = "android.intent.category.APP_MESSAGING";
- field public static final java.lang.String CATEGORY_APP_MUSIC = "android.intent.category.APP_MUSIC";
- field public static final java.lang.String CATEGORY_BROWSABLE = "android.intent.category.BROWSABLE";
- field public static final java.lang.String CATEGORY_CAR_DOCK = "android.intent.category.CAR_DOCK";
- field public static final java.lang.String CATEGORY_CAR_MODE = "android.intent.category.CAR_MODE";
- field public static final java.lang.String CATEGORY_DEFAULT = "android.intent.category.DEFAULT";
- field public static final java.lang.String CATEGORY_DESK_DOCK = "android.intent.category.DESK_DOCK";
- field public static final java.lang.String CATEGORY_DEVELOPMENT_PREFERENCE = "android.intent.category.DEVELOPMENT_PREFERENCE";
- field public static final java.lang.String CATEGORY_EMBED = "android.intent.category.EMBED";
- field public static final java.lang.String CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST = "android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST";
- field public static final java.lang.String CATEGORY_HE_DESK_DOCK = "android.intent.category.HE_DESK_DOCK";
- field public static final java.lang.String CATEGORY_HOME = "android.intent.category.HOME";
- field public static final java.lang.String CATEGORY_INFO = "android.intent.category.INFO";
- field public static final java.lang.String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER";
- field public static final java.lang.String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
- field public static final java.lang.String CATEGORY_LE_DESK_DOCK = "android.intent.category.LE_DESK_DOCK";
- field public static final java.lang.String CATEGORY_MONKEY = "android.intent.category.MONKEY";
- field public static final java.lang.String CATEGORY_OPENABLE = "android.intent.category.OPENABLE";
- field public static final java.lang.String CATEGORY_PREFERENCE = "android.intent.category.PREFERENCE";
- field public static final java.lang.String CATEGORY_SAMPLE_CODE = "android.intent.category.SAMPLE_CODE";
- field public static final java.lang.String CATEGORY_SECONDARY_HOME = "android.intent.category.SECONDARY_HOME";
- field public static final java.lang.String CATEGORY_SELECTED_ALTERNATIVE = "android.intent.category.SELECTED_ALTERNATIVE";
- field public static final java.lang.String CATEGORY_TAB = "android.intent.category.TAB";
- field public static final java.lang.String CATEGORY_TEST = "android.intent.category.TEST";
- field public static final java.lang.String CATEGORY_TYPED_OPENABLE = "android.intent.category.TYPED_OPENABLE";
- field public static final java.lang.String CATEGORY_UNIT_TEST = "android.intent.category.UNIT_TEST";
- field public static final java.lang.String CATEGORY_VOICE = "android.intent.category.VOICE";
- field public static final java.lang.String CATEGORY_VR_HOME = "android.intent.category.VR_HOME";
+ field public static final String ACTION_AIRPLANE_MODE_CHANGED = "android.intent.action.AIRPLANE_MODE";
+ field public static final String ACTION_ALL_APPS = "android.intent.action.ALL_APPS";
+ field public static final String ACTION_ANSWER = "android.intent.action.ANSWER";
+ field public static final String ACTION_APPLICATION_PREFERENCES = "android.intent.action.APPLICATION_PREFERENCES";
+ field public static final String ACTION_APPLICATION_RESTRICTIONS_CHANGED = "android.intent.action.APPLICATION_RESTRICTIONS_CHANGED";
+ field public static final String ACTION_APP_ERROR = "android.intent.action.APP_ERROR";
+ field public static final String ACTION_ASSIST = "android.intent.action.ASSIST";
+ field public static final String ACTION_ATTACH_DATA = "android.intent.action.ATTACH_DATA";
+ field public static final String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";
+ field public static final String ACTION_BATTERY_LOW = "android.intent.action.BATTERY_LOW";
+ field public static final String ACTION_BATTERY_OKAY = "android.intent.action.BATTERY_OKAY";
+ field public static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
+ field public static final String ACTION_BUG_REPORT = "android.intent.action.BUG_REPORT";
+ field public static final String ACTION_CALL = "android.intent.action.CALL";
+ field public static final String ACTION_CALL_BUTTON = "android.intent.action.CALL_BUTTON";
+ field public static final String ACTION_CAMERA_BUTTON = "android.intent.action.CAMERA_BUTTON";
+ field public static final String ACTION_CARRIER_SETUP = "android.intent.action.CARRIER_SETUP";
+ field public static final String ACTION_CHOOSER = "android.intent.action.CHOOSER";
+ field public static final String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS";
+ field public static final String ACTION_CONFIGURATION_CHANGED = "android.intent.action.CONFIGURATION_CHANGED";
+ field public static final String ACTION_CREATE_DOCUMENT = "android.intent.action.CREATE_DOCUMENT";
+ field public static final String ACTION_CREATE_SHORTCUT = "android.intent.action.CREATE_SHORTCUT";
+ field public static final String ACTION_DATE_CHANGED = "android.intent.action.DATE_CHANGED";
+ field public static final String ACTION_DEFAULT = "android.intent.action.VIEW";
+ field public static final String ACTION_DEFINE = "android.intent.action.DEFINE";
+ field public static final String ACTION_DELETE = "android.intent.action.DELETE";
+ field @Deprecated public static final String ACTION_DEVICE_STORAGE_LOW = "android.intent.action.DEVICE_STORAGE_LOW";
+ field @Deprecated public static final String ACTION_DEVICE_STORAGE_OK = "android.intent.action.DEVICE_STORAGE_OK";
+ field public static final String ACTION_DIAL = "android.intent.action.DIAL";
+ field public static final String ACTION_DOCK_EVENT = "android.intent.action.DOCK_EVENT";
+ field public static final String ACTION_DREAMING_STARTED = "android.intent.action.DREAMING_STARTED";
+ field public static final String ACTION_DREAMING_STOPPED = "android.intent.action.DREAMING_STOPPED";
+ field public static final String ACTION_EDIT = "android.intent.action.EDIT";
+ field public static final String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE";
+ field public static final String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE";
+ field public static final String ACTION_FACTORY_TEST = "android.intent.action.FACTORY_TEST";
+ field public static final String ACTION_GET_CONTENT = "android.intent.action.GET_CONTENT";
+ field public static final String ACTION_GET_RESTRICTION_ENTRIES = "android.intent.action.GET_RESTRICTION_ENTRIES";
+ field public static final String ACTION_GTALK_SERVICE_CONNECTED = "android.intent.action.GTALK_CONNECTED";
+ field public static final String ACTION_GTALK_SERVICE_DISCONNECTED = "android.intent.action.GTALK_DISCONNECTED";
+ field public static final String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
+ field public static final String ACTION_INPUT_METHOD_CHANGED = "android.intent.action.INPUT_METHOD_CHANGED";
+ field public static final String ACTION_INSERT = "android.intent.action.INSERT";
+ field public static final String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT";
+ field public static final String ACTION_INSTALL_FAILURE = "android.intent.action.INSTALL_FAILURE";
+ field @Deprecated public static final String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE";
+ field public static final String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";
+ field public static final String ACTION_LOCKED_BOOT_COMPLETED = "android.intent.action.LOCKED_BOOT_COMPLETED";
+ field public static final String ACTION_MAIN = "android.intent.action.MAIN";
+ field public static final String ACTION_MANAGED_PROFILE_ADDED = "android.intent.action.MANAGED_PROFILE_ADDED";
+ field public static final String ACTION_MANAGED_PROFILE_AVAILABLE = "android.intent.action.MANAGED_PROFILE_AVAILABLE";
+ field public static final String ACTION_MANAGED_PROFILE_REMOVED = "android.intent.action.MANAGED_PROFILE_REMOVED";
+ field public static final String ACTION_MANAGED_PROFILE_UNAVAILABLE = "android.intent.action.MANAGED_PROFILE_UNAVAILABLE";
+ field public static final String ACTION_MANAGED_PROFILE_UNLOCKED = "android.intent.action.MANAGED_PROFILE_UNLOCKED";
+ field public static final String ACTION_MANAGE_NETWORK_USAGE = "android.intent.action.MANAGE_NETWORK_USAGE";
+ field public static final String ACTION_MANAGE_PACKAGE_STORAGE = "android.intent.action.MANAGE_PACKAGE_STORAGE";
+ field public static final String ACTION_MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL";
+ field public static final String ACTION_MEDIA_BUTTON = "android.intent.action.MEDIA_BUTTON";
+ field public static final String ACTION_MEDIA_CHECKING = "android.intent.action.MEDIA_CHECKING";
+ field public static final String ACTION_MEDIA_EJECT = "android.intent.action.MEDIA_EJECT";
+ field public static final String ACTION_MEDIA_MOUNTED = "android.intent.action.MEDIA_MOUNTED";
+ field public static final String ACTION_MEDIA_NOFS = "android.intent.action.MEDIA_NOFS";
+ field public static final String ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED";
+ field public static final String ACTION_MEDIA_SCANNER_FINISHED = "android.intent.action.MEDIA_SCANNER_FINISHED";
+ field public static final String ACTION_MEDIA_SCANNER_SCAN_FILE = "android.intent.action.MEDIA_SCANNER_SCAN_FILE";
+ field public static final String ACTION_MEDIA_SCANNER_STARTED = "android.intent.action.MEDIA_SCANNER_STARTED";
+ field public static final String ACTION_MEDIA_SHARED = "android.intent.action.MEDIA_SHARED";
+ field public static final String ACTION_MEDIA_UNMOUNTABLE = "android.intent.action.MEDIA_UNMOUNTABLE";
+ field public static final String ACTION_MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED";
+ field public static final String ACTION_MY_PACKAGE_REPLACED = "android.intent.action.MY_PACKAGE_REPLACED";
+ field public static final String ACTION_MY_PACKAGE_SUSPENDED = "android.intent.action.MY_PACKAGE_SUSPENDED";
+ field public static final String ACTION_MY_PACKAGE_UNSUSPENDED = "android.intent.action.MY_PACKAGE_UNSUSPENDED";
+ field public static final String ACTION_NEW_OUTGOING_CALL = "android.intent.action.NEW_OUTGOING_CALL";
+ field public static final String ACTION_OPEN_DOCUMENT = "android.intent.action.OPEN_DOCUMENT";
+ field public static final String ACTION_OPEN_DOCUMENT_TREE = "android.intent.action.OPEN_DOCUMENT_TREE";
+ field public static final String ACTION_PACKAGES_SUSPENDED = "android.intent.action.PACKAGES_SUSPENDED";
+ field public static final String ACTION_PACKAGES_UNSUSPENDED = "android.intent.action.PACKAGES_UNSUSPENDED";
+ field public static final String ACTION_PACKAGE_ADDED = "android.intent.action.PACKAGE_ADDED";
+ field public static final String ACTION_PACKAGE_CHANGED = "android.intent.action.PACKAGE_CHANGED";
+ field public static final String ACTION_PACKAGE_DATA_CLEARED = "android.intent.action.PACKAGE_DATA_CLEARED";
+ field public static final String ACTION_PACKAGE_FIRST_LAUNCH = "android.intent.action.PACKAGE_FIRST_LAUNCH";
+ field public static final String ACTION_PACKAGE_FULLY_REMOVED = "android.intent.action.PACKAGE_FULLY_REMOVED";
+ field @Deprecated public static final String ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL";
+ field public static final String ACTION_PACKAGE_NEEDS_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_VERIFICATION";
+ field public static final String ACTION_PACKAGE_REMOVED = "android.intent.action.PACKAGE_REMOVED";
+ field public static final String ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED";
+ field public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED";
+ field public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED";
+ field public static final String ACTION_PASTE = "android.intent.action.PASTE";
+ field public static final String ACTION_PERMISSION_USAGE_DETAILS = "android.intent.action.PERMISSION_USAGE_DETAILS";
+ field public static final String ACTION_PICK = "android.intent.action.PICK";
+ field public static final String ACTION_PICK_ACTIVITY = "android.intent.action.PICK_ACTIVITY";
+ field public static final String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED";
+ field public static final String ACTION_POWER_DISCONNECTED = "android.intent.action.ACTION_POWER_DISCONNECTED";
+ field public static final String ACTION_POWER_USAGE_SUMMARY = "android.intent.action.POWER_USAGE_SUMMARY";
+ field public static final String ACTION_PROCESS_TEXT = "android.intent.action.PROCESS_TEXT";
+ field public static final String ACTION_PROVIDER_CHANGED = "android.intent.action.PROVIDER_CHANGED";
+ field public static final String ACTION_QUICK_CLOCK = "android.intent.action.QUICK_CLOCK";
+ field public static final String ACTION_QUICK_VIEW = "android.intent.action.QUICK_VIEW";
+ field public static final String ACTION_REBOOT = "android.intent.action.REBOOT";
+ field public static final String ACTION_RUN = "android.intent.action.RUN";
+ field public static final String ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF";
+ field public static final String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON";
+ field public static final String ACTION_SEARCH = "android.intent.action.SEARCH";
+ field public static final String ACTION_SEARCH_LONG_PRESS = "android.intent.action.SEARCH_LONG_PRESS";
+ field public static final String ACTION_SEND = "android.intent.action.SEND";
+ field public static final String ACTION_SENDTO = "android.intent.action.SENDTO";
+ field public static final String ACTION_SEND_MULTIPLE = "android.intent.action.SEND_MULTIPLE";
+ field public static final String ACTION_SET_WALLPAPER = "android.intent.action.SET_WALLPAPER";
+ field public static final String ACTION_SHOW_APP_INFO = "android.intent.action.SHOW_APP_INFO";
+ field public static final String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";
+ field public static final String ACTION_SYNC = "android.intent.action.SYNC";
+ field public static final String ACTION_SYSTEM_TUTORIAL = "android.intent.action.SYSTEM_TUTORIAL";
+ field public static final String ACTION_TIMEZONE_CHANGED = "android.intent.action.TIMEZONE_CHANGED";
+ field public static final String ACTION_TIME_CHANGED = "android.intent.action.TIME_SET";
+ field public static final String ACTION_TIME_TICK = "android.intent.action.TIME_TICK";
+ field public static final String ACTION_TRANSLATE = "android.intent.action.TRANSLATE";
+ field public static final String ACTION_UID_REMOVED = "android.intent.action.UID_REMOVED";
+ field @Deprecated public static final String ACTION_UMS_CONNECTED = "android.intent.action.UMS_CONNECTED";
+ field @Deprecated public static final String ACTION_UMS_DISCONNECTED = "android.intent.action.UMS_DISCONNECTED";
+ field @Deprecated public static final String ACTION_UNINSTALL_PACKAGE = "android.intent.action.UNINSTALL_PACKAGE";
+ field public static final String ACTION_USER_BACKGROUND = "android.intent.action.USER_BACKGROUND";
+ field public static final String ACTION_USER_FOREGROUND = "android.intent.action.USER_FOREGROUND";
+ field public static final String ACTION_USER_INITIALIZE = "android.intent.action.USER_INITIALIZE";
+ field public static final String ACTION_USER_PRESENT = "android.intent.action.USER_PRESENT";
+ field public static final String ACTION_USER_UNLOCKED = "android.intent.action.USER_UNLOCKED";
+ field public static final String ACTION_VIEW = "android.intent.action.VIEW";
+ field public static final String ACTION_VOICE_COMMAND = "android.intent.action.VOICE_COMMAND";
+ field @Deprecated public static final String ACTION_WALLPAPER_CHANGED = "android.intent.action.WALLPAPER_CHANGED";
+ field public static final String ACTION_WEB_SEARCH = "android.intent.action.WEB_SEARCH";
+ field public static final String CATEGORY_ALTERNATIVE = "android.intent.category.ALTERNATIVE";
+ field public static final String CATEGORY_APP_BROWSER = "android.intent.category.APP_BROWSER";
+ field public static final String CATEGORY_APP_CALCULATOR = "android.intent.category.APP_CALCULATOR";
+ field public static final String CATEGORY_APP_CALENDAR = "android.intent.category.APP_CALENDAR";
+ field public static final String CATEGORY_APP_CONTACTS = "android.intent.category.APP_CONTACTS";
+ field public static final String CATEGORY_APP_EMAIL = "android.intent.category.APP_EMAIL";
+ field public static final String CATEGORY_APP_GALLERY = "android.intent.category.APP_GALLERY";
+ field public static final String CATEGORY_APP_MAPS = "android.intent.category.APP_MAPS";
+ field public static final String CATEGORY_APP_MARKET = "android.intent.category.APP_MARKET";
+ field public static final String CATEGORY_APP_MESSAGING = "android.intent.category.APP_MESSAGING";
+ field public static final String CATEGORY_APP_MUSIC = "android.intent.category.APP_MUSIC";
+ field public static final String CATEGORY_BROWSABLE = "android.intent.category.BROWSABLE";
+ field public static final String CATEGORY_CAR_DOCK = "android.intent.category.CAR_DOCK";
+ field public static final String CATEGORY_CAR_MODE = "android.intent.category.CAR_MODE";
+ field public static final String CATEGORY_DEFAULT = "android.intent.category.DEFAULT";
+ field public static final String CATEGORY_DESK_DOCK = "android.intent.category.DESK_DOCK";
+ field public static final String CATEGORY_DEVELOPMENT_PREFERENCE = "android.intent.category.DEVELOPMENT_PREFERENCE";
+ field public static final String CATEGORY_EMBED = "android.intent.category.EMBED";
+ field public static final String CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST = "android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST";
+ field public static final String CATEGORY_HE_DESK_DOCK = "android.intent.category.HE_DESK_DOCK";
+ field public static final String CATEGORY_HOME = "android.intent.category.HOME";
+ field public static final String CATEGORY_INFO = "android.intent.category.INFO";
+ field public static final String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER";
+ field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+ field public static final String CATEGORY_LE_DESK_DOCK = "android.intent.category.LE_DESK_DOCK";
+ field public static final String CATEGORY_MONKEY = "android.intent.category.MONKEY";
+ field public static final String CATEGORY_OPENABLE = "android.intent.category.OPENABLE";
+ field public static final String CATEGORY_PREFERENCE = "android.intent.category.PREFERENCE";
+ field public static final String CATEGORY_SAMPLE_CODE = "android.intent.category.SAMPLE_CODE";
+ field public static final String CATEGORY_SECONDARY_HOME = "android.intent.category.SECONDARY_HOME";
+ field public static final String CATEGORY_SELECTED_ALTERNATIVE = "android.intent.category.SELECTED_ALTERNATIVE";
+ field public static final String CATEGORY_TAB = "android.intent.category.TAB";
+ field public static final String CATEGORY_TEST = "android.intent.category.TEST";
+ field public static final String CATEGORY_TYPED_OPENABLE = "android.intent.category.TYPED_OPENABLE";
+ field public static final String CATEGORY_UNIT_TEST = "android.intent.category.UNIT_TEST";
+ field public static final String CATEGORY_VOICE = "android.intent.category.VOICE";
+ field public static final String CATEGORY_VR_HOME = "android.intent.category.VR_HOME";
field public static final android.os.Parcelable.Creator<android.content.Intent> CREATOR;
- field public static final java.lang.String EXTRA_ALARM_COUNT = "android.intent.extra.ALARM_COUNT";
- field public static final java.lang.String EXTRA_ALLOW_MULTIPLE = "android.intent.extra.ALLOW_MULTIPLE";
- field public static final deprecated java.lang.String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
- field public static final java.lang.String EXTRA_ALTERNATE_INTENTS = "android.intent.extra.ALTERNATE_INTENTS";
- field public static final java.lang.String EXTRA_ASSIST_CONTEXT = "android.intent.extra.ASSIST_CONTEXT";
- field public static final java.lang.String EXTRA_ASSIST_INPUT_DEVICE_ID = "android.intent.extra.ASSIST_INPUT_DEVICE_ID";
- field public static final java.lang.String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
- field public static final java.lang.String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
- field public static final java.lang.String EXTRA_ASSIST_UID = "android.intent.extra.ASSIST_UID";
- field public static final java.lang.String EXTRA_AUTO_LAUNCH_SINGLE_CHOICE = "android.intent.extra.AUTO_LAUNCH_SINGLE_CHOICE";
- field public static final java.lang.String EXTRA_BCC = "android.intent.extra.BCC";
- field public static final java.lang.String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
- field public static final java.lang.String EXTRA_CC = "android.intent.extra.CC";
- field public static final deprecated java.lang.String EXTRA_CHANGED_COMPONENT_NAME = "android.intent.extra.changed_component_name";
- field public static final java.lang.String EXTRA_CHANGED_COMPONENT_NAME_LIST = "android.intent.extra.changed_component_name_list";
- field public static final java.lang.String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list";
- field public static final java.lang.String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list";
- field public static final java.lang.String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER";
- field public static final java.lang.String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
- field public static final java.lang.String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
- field public static final java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
- field public static final java.lang.String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME";
- field public static final java.lang.String EXTRA_CONTENT_ANNOTATIONS = "android.intent.extra.CONTENT_ANNOTATIONS";
- field public static final java.lang.String EXTRA_CONTENT_QUERY = "android.intent.extra.CONTENT_QUERY";
- field public static final java.lang.String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED";
- field public static final java.lang.String EXTRA_DOCK_STATE = "android.intent.extra.DOCK_STATE";
+ field public static final String EXTRA_ALARM_COUNT = "android.intent.extra.ALARM_COUNT";
+ field public static final String EXTRA_ALLOW_MULTIPLE = "android.intent.extra.ALLOW_MULTIPLE";
+ field @Deprecated public static final String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
+ field public static final String EXTRA_ALTERNATE_INTENTS = "android.intent.extra.ALTERNATE_INTENTS";
+ field public static final String EXTRA_ASSIST_CONTEXT = "android.intent.extra.ASSIST_CONTEXT";
+ field public static final String EXTRA_ASSIST_INPUT_DEVICE_ID = "android.intent.extra.ASSIST_INPUT_DEVICE_ID";
+ field public static final String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
+ field public static final String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
+ field public static final String EXTRA_ASSIST_UID = "android.intent.extra.ASSIST_UID";
+ field public static final String EXTRA_AUTO_LAUNCH_SINGLE_CHOICE = "android.intent.extra.AUTO_LAUNCH_SINGLE_CHOICE";
+ field public static final String EXTRA_BCC = "android.intent.extra.BCC";
+ field public static final String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
+ field public static final String EXTRA_CC = "android.intent.extra.CC";
+ field @Deprecated public static final String EXTRA_CHANGED_COMPONENT_NAME = "android.intent.extra.changed_component_name";
+ field public static final String EXTRA_CHANGED_COMPONENT_NAME_LIST = "android.intent.extra.changed_component_name_list";
+ field public static final String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list";
+ field public static final String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list";
+ field public static final String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER";
+ field public static final String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
+ field public static final String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
+ field public static final String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
+ field public static final String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME";
+ field public static final String EXTRA_CONTENT_ANNOTATIONS = "android.intent.extra.CONTENT_ANNOTATIONS";
+ field public static final String EXTRA_CONTENT_QUERY = "android.intent.extra.CONTENT_QUERY";
+ field public static final String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED";
+ field public static final String EXTRA_DOCK_STATE = "android.intent.extra.DOCK_STATE";
field public static final int EXTRA_DOCK_STATE_CAR = 2; // 0x2
field public static final int EXTRA_DOCK_STATE_DESK = 1; // 0x1
field public static final int EXTRA_DOCK_STATE_HE_DESK = 4; // 0x4
field public static final int EXTRA_DOCK_STATE_LE_DESK = 3; // 0x3
field public static final int EXTRA_DOCK_STATE_UNDOCKED = 0; // 0x0
- field public static final java.lang.String EXTRA_DONT_KILL_APP = "android.intent.extra.DONT_KILL_APP";
- field public static final java.lang.String EXTRA_EMAIL = "android.intent.extra.EMAIL";
- field public static final java.lang.String EXTRA_EXCLUDE_COMPONENTS = "android.intent.extra.EXCLUDE_COMPONENTS";
- field public static final java.lang.String EXTRA_FROM_STORAGE = "android.intent.extra.FROM_STORAGE";
- field public static final java.lang.String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
- field public static final java.lang.String EXTRA_INDEX = "android.intent.extra.INDEX";
- field public static final java.lang.String EXTRA_INITIAL_INTENTS = "android.intent.extra.INITIAL_INTENTS";
- field public static final java.lang.String EXTRA_INSTALLER_PACKAGE_NAME = "android.intent.extra.INSTALLER_PACKAGE_NAME";
- field public static final java.lang.String EXTRA_INTENT = "android.intent.extra.INTENT";
- field public static final java.lang.String EXTRA_KEY_EVENT = "android.intent.extra.KEY_EVENT";
- field public static final java.lang.String EXTRA_LOCAL_ONLY = "android.intent.extra.LOCAL_ONLY";
- field public static final java.lang.String EXTRA_MIME_TYPES = "android.intent.extra.MIME_TYPES";
- field public static final java.lang.String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE";
- field public static final java.lang.String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI";
- field public static final java.lang.String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME";
- field public static final java.lang.String EXTRA_PERMISSION_USAGE_PERMISSIONS = "android.intent.extra.PERMISSION_USAGE_PERMISSIONS";
- field public static final java.lang.String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER";
- field public static final java.lang.String EXTRA_PROCESS_TEXT = "android.intent.extra.PROCESS_TEXT";
- field public static final java.lang.String EXTRA_PROCESS_TEXT_READONLY = "android.intent.extra.PROCESS_TEXT_READONLY";
- field public static final java.lang.String EXTRA_QUICK_VIEW_FEATURES = "android.intent.extra.QUICK_VIEW_FEATURES";
- field public static final java.lang.String EXTRA_QUIET_MODE = "android.intent.extra.QUIET_MODE";
- field public static final java.lang.String EXTRA_REFERRER = "android.intent.extra.REFERRER";
- field public static final java.lang.String EXTRA_REFERRER_NAME = "android.intent.extra.REFERRER_NAME";
- field public static final java.lang.String EXTRA_REMOTE_INTENT_TOKEN = "android.intent.extra.remote_intent_token";
- field public static final java.lang.String EXTRA_REPLACEMENT_EXTRAS = "android.intent.extra.REPLACEMENT_EXTRAS";
- field public static final java.lang.String EXTRA_REPLACING = "android.intent.extra.REPLACING";
- field public static final java.lang.String EXTRA_RESTRICTIONS_BUNDLE = "android.intent.extra.restrictions_bundle";
- field public static final java.lang.String EXTRA_RESTRICTIONS_INTENT = "android.intent.extra.restrictions_intent";
- field public static final java.lang.String EXTRA_RESTRICTIONS_LIST = "android.intent.extra.restrictions_list";
- field public static final java.lang.String EXTRA_RESULT_RECEIVER = "android.intent.extra.RESULT_RECEIVER";
- field public static final java.lang.String EXTRA_RETURN_RESULT = "android.intent.extra.RETURN_RESULT";
- field public static final deprecated java.lang.String EXTRA_SHORTCUT_ICON = "android.intent.extra.shortcut.ICON";
- field public static final deprecated java.lang.String EXTRA_SHORTCUT_ICON_RESOURCE = "android.intent.extra.shortcut.ICON_RESOURCE";
- field public static final deprecated java.lang.String EXTRA_SHORTCUT_INTENT = "android.intent.extra.shortcut.INTENT";
- field public static final deprecated java.lang.String EXTRA_SHORTCUT_NAME = "android.intent.extra.shortcut.NAME";
- field public static final java.lang.String EXTRA_SHUTDOWN_USERSPACE_ONLY = "android.intent.extra.SHUTDOWN_USERSPACE_ONLY";
- field public static final java.lang.String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME";
- field public static final java.lang.String EXTRA_STREAM = "android.intent.extra.STREAM";
- field public static final java.lang.String EXTRA_SUBJECT = "android.intent.extra.SUBJECT";
- field public static final java.lang.String EXTRA_SUSPENDED_PACKAGE_EXTRAS = "android.intent.extra.SUSPENDED_PACKAGE_EXTRAS";
- field public static final java.lang.String EXTRA_TEMPLATE = "android.intent.extra.TEMPLATE";
- field public static final java.lang.String EXTRA_TEXT = "android.intent.extra.TEXT";
- field public static final java.lang.String EXTRA_TITLE = "android.intent.extra.TITLE";
- field public static final java.lang.String EXTRA_UID = "android.intent.extra.UID";
- field public static final java.lang.String EXTRA_USER = "android.intent.extra.USER";
+ field public static final String EXTRA_DONT_KILL_APP = "android.intent.extra.DONT_KILL_APP";
+ field public static final String EXTRA_EMAIL = "android.intent.extra.EMAIL";
+ field public static final String EXTRA_EXCLUDE_COMPONENTS = "android.intent.extra.EXCLUDE_COMPONENTS";
+ field public static final String EXTRA_FROM_STORAGE = "android.intent.extra.FROM_STORAGE";
+ field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
+ field public static final String EXTRA_INDEX = "android.intent.extra.INDEX";
+ field public static final String EXTRA_INITIAL_INTENTS = "android.intent.extra.INITIAL_INTENTS";
+ field public static final String EXTRA_INSTALLER_PACKAGE_NAME = "android.intent.extra.INSTALLER_PACKAGE_NAME";
+ field public static final String EXTRA_INTENT = "android.intent.extra.INTENT";
+ field public static final String EXTRA_KEY_EVENT = "android.intent.extra.KEY_EVENT";
+ field public static final String EXTRA_LOCAL_ONLY = "android.intent.extra.LOCAL_ONLY";
+ field public static final String EXTRA_MIME_TYPES = "android.intent.extra.MIME_TYPES";
+ field public static final String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE";
+ field public static final String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI";
+ field public static final String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME";
+ field public static final String EXTRA_PERMISSION_USAGE_PERMISSIONS = "android.intent.extra.PERMISSION_USAGE_PERMISSIONS";
+ field public static final String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER";
+ field public static final String EXTRA_PROCESS_TEXT = "android.intent.extra.PROCESS_TEXT";
+ field public static final String EXTRA_PROCESS_TEXT_READONLY = "android.intent.extra.PROCESS_TEXT_READONLY";
+ field public static final String EXTRA_QUICK_VIEW_FEATURES = "android.intent.extra.QUICK_VIEW_FEATURES";
+ field public static final String EXTRA_QUIET_MODE = "android.intent.extra.QUIET_MODE";
+ field public static final String EXTRA_REFERRER = "android.intent.extra.REFERRER";
+ field public static final String EXTRA_REFERRER_NAME = "android.intent.extra.REFERRER_NAME";
+ field public static final String EXTRA_REMOTE_INTENT_TOKEN = "android.intent.extra.remote_intent_token";
+ field public static final String EXTRA_REPLACEMENT_EXTRAS = "android.intent.extra.REPLACEMENT_EXTRAS";
+ field public static final String EXTRA_REPLACING = "android.intent.extra.REPLACING";
+ field public static final String EXTRA_RESTRICTIONS_BUNDLE = "android.intent.extra.restrictions_bundle";
+ field public static final String EXTRA_RESTRICTIONS_INTENT = "android.intent.extra.restrictions_intent";
+ field public static final String EXTRA_RESTRICTIONS_LIST = "android.intent.extra.restrictions_list";
+ field public static final String EXTRA_RESULT_RECEIVER = "android.intent.extra.RESULT_RECEIVER";
+ field public static final String EXTRA_RETURN_RESULT = "android.intent.extra.RETURN_RESULT";
+ field @Deprecated public static final String EXTRA_SHORTCUT_ICON = "android.intent.extra.shortcut.ICON";
+ field @Deprecated public static final String EXTRA_SHORTCUT_ICON_RESOURCE = "android.intent.extra.shortcut.ICON_RESOURCE";
+ field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+ field @Deprecated public static final String EXTRA_SHORTCUT_INTENT = "android.intent.extra.shortcut.INTENT";
+ field @Deprecated public static final String EXTRA_SHORTCUT_NAME = "android.intent.extra.shortcut.NAME";
+ field public static final String EXTRA_SHUTDOWN_USERSPACE_ONLY = "android.intent.extra.SHUTDOWN_USERSPACE_ONLY";
+ field public static final String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME";
+ field public static final String EXTRA_STREAM = "android.intent.extra.STREAM";
+ field public static final String EXTRA_SUBJECT = "android.intent.extra.SUBJECT";
+ field public static final String EXTRA_SUSPENDED_PACKAGE_EXTRAS = "android.intent.extra.SUSPENDED_PACKAGE_EXTRAS";
+ field public static final String EXTRA_TEMPLATE = "android.intent.extra.TEMPLATE";
+ field public static final String EXTRA_TEXT = "android.intent.extra.TEXT";
+ field public static final String EXTRA_TITLE = "android.intent.extra.TITLE";
+ field public static final String EXTRA_UID = "android.intent.extra.UID";
+ field public static final String EXTRA_USER = "android.intent.extra.USER";
field public static final int FILL_IN_ACTION = 1; // 0x1
field public static final int FILL_IN_CATEGORIES = 4; // 0x4
field public static final int FILL_IN_CLIP_DATA = 128; // 0x80
@@ -10370,7 +10405,7 @@
field public static final int FLAG_ACTIVITY_BROUGHT_TO_FRONT = 4194304; // 0x400000
field public static final int FLAG_ACTIVITY_CLEAR_TASK = 32768; // 0x8000
field public static final int FLAG_ACTIVITY_CLEAR_TOP = 67108864; // 0x4000000
- field public static final deprecated int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 524288; // 0x80000
+ field @Deprecated public static final int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 524288; // 0x80000
field public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 8388608; // 0x800000
field public static final int FLAG_ACTIVITY_FORWARD_RESULT = 33554432; // 0x2000000
field public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY = 1048576; // 0x100000
@@ -10402,7 +10437,7 @@
field public static final int FLAG_RECEIVER_REGISTERED_ONLY = 1073741824; // 0x40000000
field public static final int FLAG_RECEIVER_REPLACE_PENDING = 536870912; // 0x20000000
field public static final int FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS = 2097152; // 0x200000
- field public static final java.lang.String METADATA_DOCK_HOME = "android.dock_home";
+ field public static final String METADATA_DOCK_HOME = "android.dock_home";
field public static final int URI_ALLOW_UNSAFE = 4; // 0x4
field public static final int URI_ANDROID_APP_SCHEME = 2; // 0x2
field public static final int URI_INTENT_SCHEME = 1; // 0x1
@@ -10416,26 +10451,26 @@
public static class Intent.ShortcutIconResource implements android.os.Parcelable {
ctor public Intent.ShortcutIconResource();
method public int describeContents();
- method public static android.content.Intent.ShortcutIconResource fromContext(android.content.Context, int);
+ method public static android.content.Intent.ShortcutIconResource fromContext(android.content.Context, @AnyRes int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.Intent.ShortcutIconResource> CREATOR;
- field public java.lang.String packageName;
- field public java.lang.String resourceName;
+ field public String packageName;
+ field public String resourceName;
}
public class IntentFilter implements android.os.Parcelable {
ctor public IntentFilter();
- ctor public IntentFilter(java.lang.String);
- ctor public IntentFilter(java.lang.String, java.lang.String) throws android.content.IntentFilter.MalformedMimeTypeException;
+ ctor public IntentFilter(String);
+ ctor public IntentFilter(String, String) throws android.content.IntentFilter.MalformedMimeTypeException;
ctor public IntentFilter(android.content.IntentFilter);
method public final java.util.Iterator<java.lang.String> actionsIterator();
- method public final void addAction(java.lang.String);
- method public final void addCategory(java.lang.String);
- method public final void addDataAuthority(java.lang.String, java.lang.String);
- method public final void addDataPath(java.lang.String, int);
- method public final void addDataScheme(java.lang.String);
- method public final void addDataSchemeSpecificPart(java.lang.String, int);
- method public final void addDataType(java.lang.String) throws android.content.IntentFilter.MalformedMimeTypeException;
+ method public final void addAction(String);
+ method public final void addCategory(String);
+ method public final void addDataAuthority(String, String);
+ method public final void addDataPath(String, int);
+ method public final void addDataScheme(String);
+ method public final void addDataSchemeSpecificPart(String, int);
+ method public final void addDataType(String) throws android.content.IntentFilter.MalformedMimeTypeException;
method public final java.util.Iterator<android.content.IntentFilter.AuthorityEntry> authoritiesIterator();
method public final java.util.Iterator<java.lang.String> categoriesIterator();
method public final int countActions();
@@ -10445,29 +10480,29 @@
method public final int countDataSchemeSpecificParts();
method public final int countDataSchemes();
method public final int countDataTypes();
- method public static android.content.IntentFilter create(java.lang.String, java.lang.String);
+ method public static android.content.IntentFilter create(String, String);
method public final int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
- method public final java.lang.String getAction(int);
- method public final java.lang.String getCategory(int);
+ method public void dump(android.util.Printer, String);
+ method public final String getAction(int);
+ method public final String getCategory(int);
method public final android.content.IntentFilter.AuthorityEntry getDataAuthority(int);
method public final android.os.PatternMatcher getDataPath(int);
- method public final java.lang.String getDataScheme(int);
+ method public final String getDataScheme(int);
method public final android.os.PatternMatcher getDataSchemeSpecificPart(int);
- method public final java.lang.String getDataType(int);
+ method public final String getDataType(int);
method public final int getPriority();
- method public final boolean hasAction(java.lang.String);
- method public final boolean hasCategory(java.lang.String);
+ method public final boolean hasAction(String);
+ method public final boolean hasCategory(String);
method public final boolean hasDataAuthority(android.net.Uri);
- method public final boolean hasDataPath(java.lang.String);
- method public final boolean hasDataScheme(java.lang.String);
- method public final boolean hasDataSchemeSpecificPart(java.lang.String);
- method public final boolean hasDataType(java.lang.String);
- method public final int match(android.content.ContentResolver, android.content.Intent, boolean, java.lang.String);
- method public final int match(java.lang.String, java.lang.String, java.lang.String, android.net.Uri, java.util.Set<java.lang.String>, java.lang.String);
- method public final boolean matchAction(java.lang.String);
- method public final java.lang.String matchCategories(java.util.Set<java.lang.String>);
- method public final int matchData(java.lang.String, java.lang.String, android.net.Uri);
+ method public final boolean hasDataPath(String);
+ method public final boolean hasDataScheme(String);
+ method public final boolean hasDataSchemeSpecificPart(String);
+ method public final boolean hasDataType(String);
+ method public final int match(android.content.ContentResolver, android.content.Intent, boolean, String);
+ method public final int match(String, String, String, android.net.Uri, java.util.Set<java.lang.String>, String);
+ method public final boolean matchAction(String);
+ method public final String matchCategories(java.util.Set<java.lang.String>);
+ method public final int matchData(String, String, android.net.Uri);
method public final int matchDataAuthority(android.net.Uri);
method public final java.util.Iterator<android.os.PatternMatcher> pathsIterator();
method public void readFromXml(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
@@ -10497,84 +10532,84 @@
}
public static final class IntentFilter.AuthorityEntry {
- ctor public IntentFilter.AuthorityEntry(java.lang.String, java.lang.String);
- method public java.lang.String getHost();
+ ctor public IntentFilter.AuthorityEntry(String, String);
+ method public String getHost();
method public int getPort();
method public int match(android.net.Uri);
}
public static class IntentFilter.MalformedMimeTypeException extends android.util.AndroidException {
ctor public IntentFilter.MalformedMimeTypeException();
- ctor public IntentFilter.MalformedMimeTypeException(java.lang.String);
+ ctor public IntentFilter.MalformedMimeTypeException(String);
}
public class IntentSender implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getCreatorPackage();
+ method public String getCreatorPackage();
method public int getCreatorUid();
method public android.os.UserHandle getCreatorUserHandle();
- method public deprecated java.lang.String getTargetPackage();
+ method @Deprecated public String getTargetPackage();
method public static android.content.IntentSender readIntentSenderOrNullFromParcel(android.os.Parcel);
method public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender.OnFinished, android.os.Handler) throws android.content.IntentSender.SendIntentException;
- method public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender.OnFinished, android.os.Handler, java.lang.String) throws android.content.IntentSender.SendIntentException;
+ method public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender.OnFinished, android.os.Handler, String) throws android.content.IntentSender.SendIntentException;
method public static void writeIntentSenderOrNullToParcel(android.content.IntentSender, android.os.Parcel);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.IntentSender> CREATOR;
}
- public static abstract interface IntentSender.OnFinished {
- method public abstract void onSendFinished(android.content.IntentSender, android.content.Intent, int, java.lang.String, android.os.Bundle);
+ public static interface IntentSender.OnFinished {
+ method public void onSendFinished(android.content.IntentSender, android.content.Intent, int, String, android.os.Bundle);
}
public static class IntentSender.SendIntentException extends android.util.AndroidException {
ctor public IntentSender.SendIntentException();
- ctor public IntentSender.SendIntentException(java.lang.String);
- ctor public IntentSender.SendIntentException(java.lang.Exception);
+ ctor public IntentSender.SendIntentException(String);
+ ctor public IntentSender.SendIntentException(Exception);
}
- public deprecated class Loader<D> {
- ctor public Loader(android.content.Context);
- method public void abandon();
- method public boolean cancelLoad();
- method public void commitContentChanged();
- method public java.lang.String dataToString(D);
- method public void deliverCancellation();
- method public void deliverResult(D);
- method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method public void forceLoad();
- method public android.content.Context getContext();
- method public int getId();
- method public boolean isAbandoned();
- method public boolean isReset();
- method public boolean isStarted();
- method protected void onAbandon();
- method protected boolean onCancelLoad();
- method public void onContentChanged();
- method protected void onForceLoad();
- method protected void onReset();
- method protected void onStartLoading();
- method protected void onStopLoading();
- method public void registerListener(int, android.content.Loader.OnLoadCompleteListener<D>);
- method public void registerOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
- method public void reset();
- method public void rollbackContentChanged();
- method public final void startLoading();
- method public void stopLoading();
- method public boolean takeContentChanged();
- method public void unregisterListener(android.content.Loader.OnLoadCompleteListener<D>);
- method public void unregisterOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
+ @Deprecated public class Loader<D> {
+ ctor @Deprecated public Loader(android.content.Context);
+ method @Deprecated public void abandon();
+ method @Deprecated public boolean cancelLoad();
+ method @Deprecated public void commitContentChanged();
+ method @Deprecated public String dataToString(D);
+ method @Deprecated public void deliverCancellation();
+ method @Deprecated public void deliverResult(D);
+ method @Deprecated public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method @Deprecated public void forceLoad();
+ method @Deprecated public android.content.Context getContext();
+ method @Deprecated public int getId();
+ method @Deprecated public boolean isAbandoned();
+ method @Deprecated public boolean isReset();
+ method @Deprecated public boolean isStarted();
+ method @Deprecated protected void onAbandon();
+ method @Deprecated protected boolean onCancelLoad();
+ method @Deprecated public void onContentChanged();
+ method @Deprecated protected void onForceLoad();
+ method @Deprecated protected void onReset();
+ method @Deprecated protected void onStartLoading();
+ method @Deprecated protected void onStopLoading();
+ method @Deprecated public void registerListener(int, android.content.Loader.OnLoadCompleteListener<D>);
+ method @Deprecated public void registerOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
+ method @Deprecated public void reset();
+ method @Deprecated public void rollbackContentChanged();
+ method @Deprecated public final void startLoading();
+ method @Deprecated public void stopLoading();
+ method @Deprecated public boolean takeContentChanged();
+ method @Deprecated public void unregisterListener(android.content.Loader.OnLoadCompleteListener<D>);
+ method @Deprecated public void unregisterOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
}
- public final deprecated class Loader.ForceLoadContentObserver extends android.database.ContentObserver {
- ctor public Loader.ForceLoadContentObserver();
+ @Deprecated public final class Loader.ForceLoadContentObserver extends android.database.ContentObserver {
+ ctor @Deprecated public Loader.ForceLoadContentObserver();
}
- public static abstract deprecated interface Loader.OnLoadCanceledListener<D> {
- method public abstract void onLoadCanceled(android.content.Loader<D>);
+ @Deprecated public static interface Loader.OnLoadCanceledListener<D> {
+ method @Deprecated public void onLoadCanceled(android.content.Loader<D>);
}
- public static abstract deprecated interface Loader.OnLoadCompleteListener<D> {
- method public abstract void onLoadComplete(android.content.Loader<D>, D);
+ @Deprecated public static interface Loader.OnLoadCompleteListener<D> {
+ method @Deprecated public void onLoadComplete(android.content.Loader<D>, D);
}
public class MutableContextWrapper extends android.content.ContextWrapper {
@@ -10584,70 +10619,70 @@
public class OperationApplicationException extends java.lang.Exception {
ctor public OperationApplicationException();
- ctor public OperationApplicationException(java.lang.String);
- ctor public OperationApplicationException(java.lang.String, java.lang.Throwable);
- ctor public OperationApplicationException(java.lang.Throwable);
+ ctor public OperationApplicationException(String);
+ ctor public OperationApplicationException(String, Throwable);
+ ctor public OperationApplicationException(Throwable);
ctor public OperationApplicationException(int);
- ctor public OperationApplicationException(java.lang.String, int);
+ ctor public OperationApplicationException(String, int);
method public int getNumSuccessfulYieldPoints();
}
public class PeriodicSync implements android.os.Parcelable {
- ctor public PeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle, long);
+ ctor public PeriodicSync(android.accounts.Account, String, android.os.Bundle, long);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.PeriodicSync> CREATOR;
field public final android.accounts.Account account;
- field public final java.lang.String authority;
+ field public final String authority;
field public final android.os.Bundle extras;
field public final long period;
}
public class QuickViewConstants {
- field public static final java.lang.String FEATURE_DELETE = "android:delete";
- field public static final java.lang.String FEATURE_DOWNLOAD = "android:download";
- field public static final java.lang.String FEATURE_EDIT = "android:edit";
- field public static final java.lang.String FEATURE_PRINT = "android:print";
- field public static final java.lang.String FEATURE_SEND = "android:send";
- field public static final java.lang.String FEATURE_VIEW = "android:view";
+ field public static final String FEATURE_DELETE = "android:delete";
+ field public static final String FEATURE_DOWNLOAD = "android:download";
+ field public static final String FEATURE_EDIT = "android:edit";
+ field public static final String FEATURE_PRINT = "android:print";
+ field public static final String FEATURE_SEND = "android:send";
+ field public static final String FEATURE_VIEW = "android:view";
}
public class ReceiverCallNotAllowedException extends android.util.AndroidRuntimeException {
- ctor public ReceiverCallNotAllowedException(java.lang.String);
+ ctor public ReceiverCallNotAllowedException(String);
}
public class RestrictionEntry implements android.os.Parcelable {
- ctor public RestrictionEntry(int, java.lang.String);
- ctor public RestrictionEntry(java.lang.String, java.lang.String);
- ctor public RestrictionEntry(java.lang.String, boolean);
- ctor public RestrictionEntry(java.lang.String, java.lang.String[]);
- ctor public RestrictionEntry(java.lang.String, int);
+ ctor public RestrictionEntry(int, String);
+ ctor public RestrictionEntry(String, String);
+ ctor public RestrictionEntry(String, boolean);
+ ctor public RestrictionEntry(String, String[]);
+ ctor public RestrictionEntry(String, int);
ctor public RestrictionEntry(android.os.Parcel);
- method public static android.content.RestrictionEntry createBundleArrayEntry(java.lang.String, android.content.RestrictionEntry[]);
- method public static android.content.RestrictionEntry createBundleEntry(java.lang.String, android.content.RestrictionEntry[]);
+ method public static android.content.RestrictionEntry createBundleArrayEntry(String, android.content.RestrictionEntry[]);
+ method public static android.content.RestrictionEntry createBundleEntry(String, android.content.RestrictionEntry[]);
method public int describeContents();
- method public java.lang.String[] getAllSelectedStrings();
- method public java.lang.String[] getChoiceEntries();
- method public java.lang.String[] getChoiceValues();
- method public java.lang.String getDescription();
+ method public String[] getAllSelectedStrings();
+ method public String[] getChoiceEntries();
+ method public String[] getChoiceValues();
+ method public String getDescription();
method public int getIntValue();
- method public java.lang.String getKey();
+ method public String getKey();
method public android.content.RestrictionEntry[] getRestrictions();
method public boolean getSelectedState();
- method public java.lang.String getSelectedString();
- method public java.lang.String getTitle();
+ method public String getSelectedString();
+ method public String getTitle();
method public int getType();
- method public void setAllSelectedStrings(java.lang.String[]);
- method public void setChoiceEntries(java.lang.String[]);
- method public void setChoiceEntries(android.content.Context, int);
- method public void setChoiceValues(java.lang.String[]);
- method public void setChoiceValues(android.content.Context, int);
- method public void setDescription(java.lang.String);
+ method public void setAllSelectedStrings(String[]);
+ method public void setChoiceEntries(String[]);
+ method public void setChoiceEntries(android.content.Context, @ArrayRes int);
+ method public void setChoiceValues(String[]);
+ method public void setChoiceValues(android.content.Context, @ArrayRes int);
+ method public void setDescription(String);
method public void setIntValue(int);
method public void setRestrictions(android.content.RestrictionEntry[]);
method public void setSelectedState(boolean);
- method public void setSelectedString(java.lang.String);
- method public void setTitle(java.lang.String);
+ method public void setSelectedString(String);
+ method public void setTitle(String);
method public void setType(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.RestrictionEntry> CREATOR;
@@ -10665,32 +10700,32 @@
method public static android.os.Bundle convertRestrictionsToBundle(java.util.List<android.content.RestrictionEntry>);
method public android.content.Intent createLocalApprovalIntent();
method public android.os.Bundle getApplicationRestrictions();
- method public java.util.List<android.content.RestrictionEntry> getManifestRestrictions(java.lang.String);
+ method public java.util.List<android.content.RestrictionEntry> getManifestRestrictions(String);
method public boolean hasRestrictionsProvider();
- method public void notifyPermissionResponse(java.lang.String, android.os.PersistableBundle);
- method public void requestPermission(java.lang.String, java.lang.String, android.os.PersistableBundle);
- field public static final java.lang.String ACTION_PERMISSION_RESPONSE_RECEIVED = "android.content.action.PERMISSION_RESPONSE_RECEIVED";
- field public static final java.lang.String ACTION_REQUEST_LOCAL_APPROVAL = "android.content.action.REQUEST_LOCAL_APPROVAL";
- field public static final java.lang.String ACTION_REQUEST_PERMISSION = "android.content.action.REQUEST_PERMISSION";
- field public static final java.lang.String EXTRA_PACKAGE_NAME = "android.content.extra.PACKAGE_NAME";
- field public static final java.lang.String EXTRA_REQUEST_BUNDLE = "android.content.extra.REQUEST_BUNDLE";
- field public static final java.lang.String EXTRA_REQUEST_ID = "android.content.extra.REQUEST_ID";
- field public static final java.lang.String EXTRA_REQUEST_TYPE = "android.content.extra.REQUEST_TYPE";
- field public static final java.lang.String EXTRA_RESPONSE_BUNDLE = "android.content.extra.RESPONSE_BUNDLE";
- field public static final java.lang.String META_DATA_APP_RESTRICTIONS = "android.content.APP_RESTRICTIONS";
- field public static final java.lang.String REQUEST_KEY_APPROVE_LABEL = "android.request.approve_label";
- field public static final java.lang.String REQUEST_KEY_DATA = "android.request.data";
- field public static final java.lang.String REQUEST_KEY_DENY_LABEL = "android.request.deny_label";
- field public static final java.lang.String REQUEST_KEY_ICON = "android.request.icon";
- field public static final java.lang.String REQUEST_KEY_ID = "android.request.id";
- field public static final java.lang.String REQUEST_KEY_MESSAGE = "android.request.mesg";
- field public static final java.lang.String REQUEST_KEY_NEW_REQUEST = "android.request.new_request";
- field public static final java.lang.String REQUEST_KEY_TITLE = "android.request.title";
- field public static final java.lang.String REQUEST_TYPE_APPROVAL = "android.request.type.approval";
- field public static final java.lang.String RESPONSE_KEY_ERROR_CODE = "android.response.errorcode";
- field public static final java.lang.String RESPONSE_KEY_MESSAGE = "android.response.msg";
- field public static final java.lang.String RESPONSE_KEY_RESPONSE_TIMESTAMP = "android.response.timestamp";
- field public static final java.lang.String RESPONSE_KEY_RESULT = "android.response.result";
+ method public void notifyPermissionResponse(String, android.os.PersistableBundle);
+ method public void requestPermission(String, String, android.os.PersistableBundle);
+ field public static final String ACTION_PERMISSION_RESPONSE_RECEIVED = "android.content.action.PERMISSION_RESPONSE_RECEIVED";
+ field public static final String ACTION_REQUEST_LOCAL_APPROVAL = "android.content.action.REQUEST_LOCAL_APPROVAL";
+ field public static final String ACTION_REQUEST_PERMISSION = "android.content.action.REQUEST_PERMISSION";
+ field public static final String EXTRA_PACKAGE_NAME = "android.content.extra.PACKAGE_NAME";
+ field public static final String EXTRA_REQUEST_BUNDLE = "android.content.extra.REQUEST_BUNDLE";
+ field public static final String EXTRA_REQUEST_ID = "android.content.extra.REQUEST_ID";
+ field public static final String EXTRA_REQUEST_TYPE = "android.content.extra.REQUEST_TYPE";
+ field public static final String EXTRA_RESPONSE_BUNDLE = "android.content.extra.RESPONSE_BUNDLE";
+ field public static final String META_DATA_APP_RESTRICTIONS = "android.content.APP_RESTRICTIONS";
+ field public static final String REQUEST_KEY_APPROVE_LABEL = "android.request.approve_label";
+ field public static final String REQUEST_KEY_DATA = "android.request.data";
+ field public static final String REQUEST_KEY_DENY_LABEL = "android.request.deny_label";
+ field public static final String REQUEST_KEY_ICON = "android.request.icon";
+ field public static final String REQUEST_KEY_ID = "android.request.id";
+ field public static final String REQUEST_KEY_MESSAGE = "android.request.mesg";
+ field public static final String REQUEST_KEY_NEW_REQUEST = "android.request.new_request";
+ field public static final String REQUEST_KEY_TITLE = "android.request.title";
+ field public static final String REQUEST_TYPE_APPROVAL = "android.request.type.approval";
+ field public static final String RESPONSE_KEY_ERROR_CODE = "android.response.errorcode";
+ field public static final String RESPONSE_KEY_MESSAGE = "android.response.msg";
+ field public static final String RESPONSE_KEY_RESPONSE_TIMESTAMP = "android.response.timestamp";
+ field public static final String RESPONSE_KEY_RESULT = "android.response.result";
field public static final int RESULT_APPROVED = 1; // 0x1
field public static final int RESULT_DENIED = 2; // 0x2
field public static final int RESULT_ERROR = 5; // 0x5
@@ -10703,69 +10738,69 @@
public class SearchRecentSuggestionsProvider extends android.content.ContentProvider {
ctor public SearchRecentSuggestionsProvider();
- method public int delete(android.net.Uri, java.lang.String, java.lang.String[]);
- method public java.lang.String getType(android.net.Uri);
+ method public int delete(android.net.Uri, String, String[]);
+ method public String getType(android.net.Uri);
method public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
method public boolean onCreate();
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method protected void setupSuggestions(java.lang.String, int);
- method public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
+ method protected void setupSuggestions(String, int);
+ method public int update(android.net.Uri, android.content.ContentValues, String, String[]);
field public static final int DATABASE_MODE_2LINES = 2; // 0x2
field public static final int DATABASE_MODE_QUERIES = 1; // 0x1
}
- public abstract interface ServiceConnection {
+ public interface ServiceConnection {
method public default void onBindingDied(android.content.ComponentName);
method public default void onNullBinding(android.content.ComponentName);
- method public abstract void onServiceConnected(android.content.ComponentName, android.os.IBinder);
- method public abstract void onServiceDisconnected(android.content.ComponentName);
+ method public void onServiceConnected(android.content.ComponentName, android.os.IBinder);
+ method public void onServiceDisconnected(android.content.ComponentName);
}
- public abstract interface SharedPreferences {
- method public abstract boolean contains(java.lang.String);
- method public abstract android.content.SharedPreferences.Editor edit();
- method public abstract java.util.Map<java.lang.String, ?> getAll();
- method public abstract boolean getBoolean(java.lang.String, boolean);
- method public abstract float getFloat(java.lang.String, float);
- method public abstract int getInt(java.lang.String, int);
- method public abstract long getLong(java.lang.String, long);
- method public abstract java.lang.String getString(java.lang.String, java.lang.String);
- method public abstract java.util.Set<java.lang.String> getStringSet(java.lang.String, java.util.Set<java.lang.String>);
- method public abstract void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
- method public abstract void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
+ public interface SharedPreferences {
+ method public boolean contains(String);
+ method public android.content.SharedPreferences.Editor edit();
+ method public java.util.Map<java.lang.String,?> getAll();
+ method public boolean getBoolean(String, boolean);
+ method public float getFloat(String, float);
+ method public int getInt(String, int);
+ method public long getLong(String, long);
+ method @Nullable public String getString(String, @Nullable String);
+ method @Nullable public java.util.Set<java.lang.String> getStringSet(String, @Nullable java.util.Set<java.lang.String>);
+ method public void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
+ method public void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
}
- public static abstract interface SharedPreferences.Editor {
- method public abstract void apply();
- method public abstract android.content.SharedPreferences.Editor clear();
- method public abstract boolean commit();
- method public abstract android.content.SharedPreferences.Editor putBoolean(java.lang.String, boolean);
- method public abstract android.content.SharedPreferences.Editor putFloat(java.lang.String, float);
- method public abstract android.content.SharedPreferences.Editor putInt(java.lang.String, int);
- method public abstract android.content.SharedPreferences.Editor putLong(java.lang.String, long);
- method public abstract android.content.SharedPreferences.Editor putString(java.lang.String, java.lang.String);
- method public abstract android.content.SharedPreferences.Editor putStringSet(java.lang.String, java.util.Set<java.lang.String>);
- method public abstract android.content.SharedPreferences.Editor remove(java.lang.String);
+ public static interface SharedPreferences.Editor {
+ method public void apply();
+ method public android.content.SharedPreferences.Editor clear();
+ method public boolean commit();
+ method public android.content.SharedPreferences.Editor putBoolean(String, boolean);
+ method public android.content.SharedPreferences.Editor putFloat(String, float);
+ method public android.content.SharedPreferences.Editor putInt(String, int);
+ method public android.content.SharedPreferences.Editor putLong(String, long);
+ method public android.content.SharedPreferences.Editor putString(String, @Nullable String);
+ method public android.content.SharedPreferences.Editor putStringSet(String, @Nullable java.util.Set<java.lang.String>);
+ method public android.content.SharedPreferences.Editor remove(String);
}
- public static abstract interface SharedPreferences.OnSharedPreferenceChangeListener {
- method public abstract void onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String);
+ public static interface SharedPreferences.OnSharedPreferenceChangeListener {
+ method public void onSharedPreferenceChanged(android.content.SharedPreferences, String);
}
public class SyncAdapterType implements android.os.Parcelable {
- ctor public SyncAdapterType(java.lang.String, java.lang.String, boolean, boolean);
+ ctor public SyncAdapterType(String, String, boolean, boolean);
ctor public SyncAdapterType(android.os.Parcel);
method public boolean allowParallelSyncs();
method public int describeContents();
- method public java.lang.String getSettingsActivity();
+ method public String getSettingsActivity();
method public boolean isAlwaysSyncable();
method public boolean isUserVisible();
- method public static android.content.SyncAdapterType newKey(java.lang.String, java.lang.String);
+ method public static android.content.SyncAdapterType newKey(String, String);
method public boolean supportsUploading();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.SyncAdapterType> CREATOR;
- field public final java.lang.String accountType;
- field public final java.lang.String authority;
+ field public final String accountType;
+ field public final String authority;
field public final boolean isKey;
}
@@ -10778,7 +10813,7 @@
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public final android.accounts.Account account;
- field public final java.lang.String authority;
+ field public final String authority;
field public final long startTime;
}
@@ -10799,7 +10834,7 @@
method public android.content.SyncRequest.Builder setManual(boolean);
method public android.content.SyncRequest.Builder setNoRetry(boolean);
method public android.content.SyncRequest.Builder setRequiresCharging(boolean);
- method public android.content.SyncRequest.Builder setSyncAdapter(android.accounts.Account, java.lang.String);
+ method public android.content.SyncRequest.Builder setSyncAdapter(android.accounts.Account, String);
method public android.content.SyncRequest.Builder syncOnce();
method public android.content.SyncRequest.Builder syncPeriodic(long, long);
}
@@ -10812,7 +10847,7 @@
method public boolean hasHardError();
method public boolean hasSoftError();
method public boolean madeSomeProgress();
- method public java.lang.String toDebugString();
+ method public String toDebugString();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.content.SyncResult ALREADY_IN_PROGRESS;
field public static final android.os.Parcelable.Creator<android.content.SyncResult> CREATOR;
@@ -10845,13 +10880,13 @@
field public long numUpdates;
}
- public abstract interface SyncStatusObserver {
- method public abstract void onStatusChanged(int);
+ public interface SyncStatusObserver {
+ method public void onStatusChanged(int);
}
public class UriMatcher {
ctor public UriMatcher(int);
- method public void addURI(java.lang.String, java.lang.String, int);
+ method public void addURI(String, String, int);
method public int match(android.net.Uri);
field public static final int NO_MATCH = -1; // 0xffffffff
}
@@ -10875,7 +10910,7 @@
ctor public ActivityInfo();
ctor public ActivityInfo(android.content.pm.ActivityInfo);
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public final int getThemeResource();
field public static final int COLOR_MODE_DEFAULT = 0; // 0x0
field public static final int COLOR_MODE_HDR = 2; // 0x2
@@ -10947,13 +10982,13 @@
field public int flags;
field public int launchMode;
field public int maxRecents;
- field public java.lang.String parentActivityName;
- field public java.lang.String permission;
+ field public String parentActivityName;
+ field public String permission;
field public int persistableMode;
field public int screenOrientation;
field public int softInputMode;
- field public java.lang.String targetActivity;
- field public java.lang.String taskAffinity;
+ field public String targetActivity;
+ field public String taskAffinity;
field public int theme;
field public int uiOptions;
field public android.content.pm.ActivityInfo.WindowLayout windowLayout;
@@ -10974,11 +11009,11 @@
ctor public ApplicationInfo();
ctor public ApplicationInfo(android.content.pm.ApplicationInfo);
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
- method public static java.lang.CharSequence getCategoryTitle(android.content.Context, int);
+ method public void dump(android.util.Printer, String);
+ method public static CharSequence getCategoryTitle(android.content.Context, int);
method public boolean isProfileableByShell();
method public boolean isVirtualPreload();
- method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
+ method public CharSequence loadDescription(android.content.pm.PackageManager);
field public static final int CATEGORY_AUDIO = 1; // 0x1
field public static final int CATEGORY_GAME = 0; // 0x0
field public static final int CATEGORY_IMAGE = 3; // 0x3
@@ -11001,7 +11036,7 @@
field public static final int FLAG_HAS_CODE = 4; // 0x4
field public static final int FLAG_INSTALLED = 8388608; // 0x800000
field public static final int FLAG_IS_DATA_ONLY = 16777216; // 0x1000000
- field public static final deprecated int FLAG_IS_GAME = 33554432; // 0x2000000
+ field @Deprecated public static final int FLAG_IS_GAME = 33554432; // 0x2000000
field public static final int FLAG_KILL_AFTER_RESTORE = 65536; // 0x10000
field public static final int FLAG_LARGE_HEAP = 1048576; // 0x100000
field public static final int FLAG_MULTIARCH = -2147483648; // 0x80000000
@@ -11021,46 +11056,46 @@
field public static final int FLAG_UPDATED_SYSTEM_APP = 128; // 0x80
field public static final int FLAG_USES_CLEARTEXT_TRAFFIC = 134217728; // 0x8000000
field public static final int FLAG_VM_SAFE_MODE = 16384; // 0x4000
- field public java.lang.String appComponentFactory;
- field public java.lang.String backupAgentName;
+ field public String appComponentFactory;
+ field public String backupAgentName;
field public int category;
- field public java.lang.String className;
+ field public String className;
field public int compatibleWidthLimitDp;
- field public java.lang.String dataDir;
+ field public String dataDir;
field public int descriptionRes;
- field public java.lang.String deviceProtectedDataDir;
+ field public String deviceProtectedDataDir;
field public boolean enabled;
field public int flags;
field public int largestWidthLimitDp;
- field public java.lang.String manageSpaceActivityName;
+ field public String manageSpaceActivityName;
field public int minSdkVersion;
- field public java.lang.String nativeLibraryDir;
- field public java.lang.String permission;
- field public java.lang.String processName;
- field public java.lang.String publicSourceDir;
+ field public String nativeLibraryDir;
+ field public String permission;
+ field public String processName;
+ field public String publicSourceDir;
field public int requiresSmallestWidthDp;
- field public java.lang.String[] sharedLibraryFiles;
- field public java.lang.String sourceDir;
- field public java.lang.String[] splitNames;
- field public java.lang.String[] splitPublicSourceDirs;
- field public java.lang.String[] splitSourceDirs;
+ field public String[] sharedLibraryFiles;
+ field public String sourceDir;
+ field public String[] splitNames;
+ field public String[] splitPublicSourceDirs;
+ field public String[] splitSourceDirs;
field public java.util.UUID storageUuid;
field public int targetSdkVersion;
- field public java.lang.String taskAffinity;
+ field public String taskAffinity;
field public int theme;
field public int uiOptions;
field public int uid;
}
- public static class ApplicationInfo.DisplayNameComparator implements java.util.Comparator {
+ public static class ApplicationInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.ApplicationInfo> {
ctor public ApplicationInfo.DisplayNameComparator(android.content.pm.PackageManager);
method public final int compare(android.content.pm.ApplicationInfo, android.content.pm.ApplicationInfo);
}
public final class ChangedPackages implements android.os.Parcelable {
- ctor public ChangedPackages(int, java.util.List<java.lang.String>);
+ ctor public ChangedPackages(int, @NonNull java.util.List<java.lang.String>);
method public int describeContents();
- method public java.util.List<java.lang.String> getPackageNames();
+ method @NonNull public java.util.List<java.lang.String> getPackageNames();
method public int getSequenceNumber();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.ChangedPackages> CREATOR;
@@ -11079,15 +11114,15 @@
field public boolean directBootAware;
field public boolean enabled;
field public boolean exported;
- field public java.lang.String processName;
- field public java.lang.String splitName;
+ field public String processName;
+ field public String splitName;
}
public class ConfigurationInfo implements android.os.Parcelable {
ctor public ConfigurationInfo();
ctor public ConfigurationInfo(android.content.pm.ConfigurationInfo);
method public int describeContents();
- method public java.lang.String getGlEsVersion();
+ method public String getGlEsVersion();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.ConfigurationInfo> CREATOR;
field public static final int GL_ES_VERSION_UNDEFINED = 0; // 0x0
@@ -11101,10 +11136,10 @@
}
public class CrossProfileApps {
- method public android.graphics.drawable.Drawable getProfileSwitchingIconDrawable(android.os.UserHandle);
- method public java.lang.CharSequence getProfileSwitchingLabel(android.os.UserHandle);
- method public java.util.List<android.os.UserHandle> getTargetUserProfiles();
- method public void startMainActivity(android.content.ComponentName, android.os.UserHandle);
+ method @NonNull public android.graphics.drawable.Drawable getProfileSwitchingIconDrawable(@NonNull android.os.UserHandle);
+ method @NonNull public CharSequence getProfileSwitchingLabel(@NonNull android.os.UserHandle);
+ method @NonNull public java.util.List<android.os.UserHandle> getTargetUserProfiles();
+ method public void startMainActivity(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
}
public final class FeatureGroupInfo implements android.os.Parcelable {
@@ -11120,13 +11155,13 @@
ctor public FeatureInfo();
ctor public FeatureInfo(android.content.pm.FeatureInfo);
method public int describeContents();
- method public java.lang.String getGlEsVersion();
+ method public String getGlEsVersion();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.FeatureInfo> CREATOR;
field public static final int FLAG_REQUIRED = 1; // 0x1
field public static final int GL_ES_VERSION_UNDEFINED = 0; // 0x0
field public int flags;
- field public java.lang.String name;
+ field public String name;
field public int reqGlEsVersion;
field public int version;
}
@@ -11136,29 +11171,29 @@
ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo);
method public int describeContents();
field public static final android.os.Parcelable.Creator<android.content.pm.InstrumentationInfo> CREATOR;
- field public java.lang.String dataDir;
+ field public String dataDir;
field public boolean functionalTest;
field public boolean handleProfiling;
- field public java.lang.String publicSourceDir;
- field public java.lang.String sourceDir;
- field public java.lang.String[] splitNames;
- field public java.lang.String[] splitPublicSourceDirs;
- field public java.lang.String[] splitSourceDirs;
- field public java.lang.String targetPackage;
- field public java.lang.String targetProcesses;
+ field public String publicSourceDir;
+ field public String sourceDir;
+ field public String[] splitNames;
+ field public String[] splitPublicSourceDirs;
+ field public String[] splitSourceDirs;
+ field public String targetPackage;
+ field public String targetProcesses;
}
public class LabeledIntent extends android.content.Intent {
- ctor public LabeledIntent(android.content.Intent, java.lang.String, int, int);
- ctor public LabeledIntent(android.content.Intent, java.lang.String, java.lang.CharSequence, int);
- ctor public LabeledIntent(java.lang.String, int, int);
- ctor public LabeledIntent(java.lang.String, java.lang.CharSequence, int);
+ ctor public LabeledIntent(android.content.Intent, String, int, int);
+ ctor public LabeledIntent(android.content.Intent, String, CharSequence, int);
+ ctor public LabeledIntent(String, int, int);
+ ctor public LabeledIntent(String, CharSequence, int);
method public int getIconResource();
method public int getLabelResource();
- method public java.lang.CharSequence getNonLocalizedLabel();
- method public java.lang.String getSourcePackage();
+ method public CharSequence getNonLocalizedLabel();
+ method public String getSourcePackage();
method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ method public CharSequence loadLabel(android.content.pm.PackageManager);
field public static final android.os.Parcelable.Creator<android.content.pm.LabeledIntent> CREATOR;
}
@@ -11168,61 +11203,61 @@
method public android.content.ComponentName getComponentName();
method public long getFirstInstallTime();
method public android.graphics.drawable.Drawable getIcon(int);
- method public java.lang.CharSequence getLabel();
- method public java.lang.String getName();
+ method public CharSequence getLabel();
+ method public String getName();
method public android.os.UserHandle getUser();
}
public class LauncherApps {
- method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(java.lang.String, android.os.UserHandle);
- method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(String, android.os.UserHandle);
+ method public android.content.pm.ApplicationInfo getApplicationInfo(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.content.pm.LauncherApps.PinItemRequest getPinItemRequest(android.content.Intent);
method public java.util.List<android.os.UserHandle> getProfiles();
method public android.graphics.drawable.Drawable getShortcutBadgedIconDrawable(android.content.pm.ShortcutInfo, int);
- method public android.content.IntentSender getShortcutConfigActivityIntent(android.content.pm.LauncherActivityInfo);
- method public java.util.List<android.content.pm.LauncherActivityInfo> getShortcutConfigActivityList(java.lang.String, android.os.UserHandle);
- method public android.graphics.drawable.Drawable getShortcutIconDrawable(android.content.pm.ShortcutInfo, int);
- method public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(android.content.pm.LauncherApps.ShortcutQuery, android.os.UserHandle);
- method public android.os.Bundle getSuspendedPackageLauncherExtras(java.lang.String, android.os.UserHandle);
+ method @Nullable public android.content.IntentSender getShortcutConfigActivityIntent(@NonNull android.content.pm.LauncherActivityInfo);
+ method public java.util.List<android.content.pm.LauncherActivityInfo> getShortcutConfigActivityList(@Nullable String, @NonNull android.os.UserHandle);
+ method public android.graphics.drawable.Drawable getShortcutIconDrawable(@NonNull android.content.pm.ShortcutInfo, int);
+ method @Nullable public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(@NonNull android.content.pm.LauncherApps.ShortcutQuery, @NonNull android.os.UserHandle);
+ method @Nullable public android.os.Bundle getSuspendedPackageLauncherExtras(String, android.os.UserHandle);
method public boolean hasShortcutHostPermission();
method public boolean isActivityEnabled(android.content.ComponentName, android.os.UserHandle);
- method public boolean isPackageEnabled(java.lang.String, android.os.UserHandle);
- method public void pinShortcuts(java.lang.String, java.util.List<java.lang.String>, android.os.UserHandle);
+ method public boolean isPackageEnabled(String, android.os.UserHandle);
+ method public void pinShortcuts(@NonNull String, @NonNull java.util.List<java.lang.String>, @NonNull android.os.UserHandle);
method public void registerCallback(android.content.pm.LauncherApps.Callback);
method public void registerCallback(android.content.pm.LauncherApps.Callback, android.os.Handler);
method public android.content.pm.LauncherActivityInfo resolveActivity(android.content.Intent, android.os.UserHandle);
- method public boolean shouldHideFromSuggestions(java.lang.String, android.os.UserHandle);
+ method public boolean shouldHideFromSuggestions(@NonNull String, @NonNull android.os.UserHandle);
method public void startAppDetailsActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
method public void startMainActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
- method public void startShortcut(java.lang.String, java.lang.String, android.graphics.Rect, android.os.Bundle, android.os.UserHandle);
- method public void startShortcut(android.content.pm.ShortcutInfo, android.graphics.Rect, android.os.Bundle);
+ method public void startShortcut(@NonNull String, @NonNull String, @Nullable android.graphics.Rect, @Nullable android.os.Bundle, @NonNull android.os.UserHandle);
+ method public void startShortcut(@NonNull android.content.pm.ShortcutInfo, @Nullable android.graphics.Rect, @Nullable android.os.Bundle);
method public void unregisterCallback(android.content.pm.LauncherApps.Callback);
- field public static final java.lang.String ACTION_CONFIRM_PIN_APPWIDGET = "android.content.pm.action.CONFIRM_PIN_APPWIDGET";
- field public static final java.lang.String ACTION_CONFIRM_PIN_SHORTCUT = "android.content.pm.action.CONFIRM_PIN_SHORTCUT";
- field public static final java.lang.String EXTRA_PIN_ITEM_REQUEST = "android.content.pm.extra.PIN_ITEM_REQUEST";
+ field public static final String ACTION_CONFIRM_PIN_APPWIDGET = "android.content.pm.action.CONFIRM_PIN_APPWIDGET";
+ field public static final String ACTION_CONFIRM_PIN_SHORTCUT = "android.content.pm.action.CONFIRM_PIN_SHORTCUT";
+ field public static final String EXTRA_PIN_ITEM_REQUEST = "android.content.pm.extra.PIN_ITEM_REQUEST";
}
- public static abstract class LauncherApps.Callback {
+ public abstract static class LauncherApps.Callback {
ctor public LauncherApps.Callback();
- method public abstract void onPackageAdded(java.lang.String, android.os.UserHandle);
- method public abstract void onPackageChanged(java.lang.String, android.os.UserHandle);
- method public abstract void onPackageRemoved(java.lang.String, android.os.UserHandle);
- method public abstract void onPackagesAvailable(java.lang.String[], android.os.UserHandle, boolean);
- method public void onPackagesSuspended(java.lang.String[], android.os.UserHandle);
- method public void onPackagesSuspended(java.lang.String[], android.os.UserHandle, android.os.Bundle);
- method public abstract void onPackagesUnavailable(java.lang.String[], android.os.UserHandle, boolean);
- method public void onPackagesUnsuspended(java.lang.String[], android.os.UserHandle);
- method public void onShortcutsChanged(java.lang.String, java.util.List<android.content.pm.ShortcutInfo>, android.os.UserHandle);
+ method public abstract void onPackageAdded(String, android.os.UserHandle);
+ method public abstract void onPackageChanged(String, android.os.UserHandle);
+ method public abstract void onPackageRemoved(String, android.os.UserHandle);
+ method public abstract void onPackagesAvailable(String[], android.os.UserHandle, boolean);
+ method public void onPackagesSuspended(String[], android.os.UserHandle);
+ method public void onPackagesSuspended(String[], android.os.UserHandle, @Nullable android.os.Bundle);
+ method public abstract void onPackagesUnavailable(String[], android.os.UserHandle, boolean);
+ method public void onPackagesUnsuspended(String[], android.os.UserHandle);
+ method public void onShortcutsChanged(@NonNull String, @NonNull java.util.List<android.content.pm.ShortcutInfo>, @NonNull android.os.UserHandle);
}
public static final class LauncherApps.PinItemRequest implements android.os.Parcelable {
- method public boolean accept(android.os.Bundle);
+ method public boolean accept(@Nullable android.os.Bundle);
method public boolean accept();
method public int describeContents();
- method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
- method public android.os.Bundle getExtras();
+ method @Nullable public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
+ method @Nullable public android.os.Bundle getExtras();
method public int getRequestType();
- method public android.content.pm.ShortcutInfo getShortcutInfo();
+ method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
method public boolean isValid();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.PinItemRequest> CREATOR;
@@ -11232,11 +11267,11 @@
public static class LauncherApps.ShortcutQuery {
ctor public LauncherApps.ShortcutQuery();
- method public android.content.pm.LauncherApps.ShortcutQuery setActivity(android.content.ComponentName);
+ method public android.content.pm.LauncherApps.ShortcutQuery setActivity(@Nullable android.content.ComponentName);
method public android.content.pm.LauncherApps.ShortcutQuery setChangedSince(long);
- method public android.content.pm.LauncherApps.ShortcutQuery setPackage(java.lang.String);
+ method public android.content.pm.LauncherApps.ShortcutQuery setPackage(@Nullable String);
method public android.content.pm.LauncherApps.ShortcutQuery setQueryFlags(int);
- method public android.content.pm.LauncherApps.ShortcutQuery setShortcutIds(java.util.List<java.lang.String>);
+ method public android.content.pm.LauncherApps.ShortcutQuery setShortcutIds(@Nullable java.util.List<java.lang.String>);
field public static final int FLAG_GET_KEY_FIELDS_ONLY = 4; // 0x4
field public static final int FLAG_MATCH_DYNAMIC = 1; // 0x1
field public static final int FLAG_MATCH_MANIFEST = 8; // 0x8
@@ -11246,8 +11281,8 @@
public final class ModuleInfo implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getName();
- method public java.lang.String getPackageName();
+ method @Nullable public String getName();
+ method @Nullable public String getPackageName();
method public boolean isHidden();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.ModuleInfo> CREATOR;
@@ -11275,50 +11310,50 @@
field public android.content.pm.InstrumentationInfo[] instrumentation;
field public boolean isApex;
field public long lastUpdateTime;
- field public java.lang.String packageName;
+ field public String packageName;
field public android.content.pm.PermissionInfo[] permissions;
field public android.content.pm.ProviderInfo[] providers;
field public android.content.pm.ActivityInfo[] receivers;
field public android.content.pm.FeatureInfo[] reqFeatures;
- field public deprecated java.lang.String[] requestedPermissions;
- field public deprecated int[] requestedPermissionsFlags;
+ field @Deprecated public String[] requestedPermissions;
+ field @Deprecated public int[] requestedPermissionsFlags;
field public android.content.pm.ServiceInfo[] services;
- field public java.lang.String sharedUserId;
+ field public String sharedUserId;
field public int sharedUserLabel;
- field public deprecated android.content.pm.Signature[] signatures;
+ field @Deprecated public android.content.pm.Signature[] signatures;
field public android.content.pm.SigningInfo signingInfo;
- field public java.lang.String[] splitNames;
+ field public String[] splitNames;
field public int[] splitRevisionCodes;
field public android.content.pm.UsesPermissionInfo[] usesPermissions;
- field public deprecated int versionCode;
- field public java.lang.String versionName;
+ field @Deprecated public int versionCode;
+ field public String versionName;
}
public class PackageInstaller {
method public void abandonSession(int);
- method public int createSession(android.content.pm.PackageInstaller.SessionParams) throws java.io.IOException;
- method public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllSessions();
- method public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getMySessions();
- method public android.content.pm.PackageInstaller.SessionInfo getSessionInfo(int);
- method public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getStagedSessions();
- method public android.content.pm.PackageInstaller.Session openSession(int) throws java.io.IOException;
- method public void registerSessionCallback(android.content.pm.PackageInstaller.SessionCallback);
- method public void registerSessionCallback(android.content.pm.PackageInstaller.SessionCallback, android.os.Handler);
- method public void uninstall(java.lang.String, android.content.IntentSender);
- method public void uninstall(android.content.pm.VersionedPackage, android.content.IntentSender);
- method public void unregisterSessionCallback(android.content.pm.PackageInstaller.SessionCallback);
- method public void updateSessionAppIcon(int, android.graphics.Bitmap);
- method public void updateSessionAppLabel(int, java.lang.CharSequence);
- field public static final java.lang.String ACTION_SESSION_COMMITTED = "android.content.pm.action.SESSION_COMMITTED";
- field public static final java.lang.String ACTION_SESSION_DETAILS = "android.content.pm.action.SESSION_DETAILS";
- field public static final java.lang.String ACTION_SESSION_UPDATED = "android.content.pm.action.SESSION_UPDATED";
- field public static final java.lang.String EXTRA_OTHER_PACKAGE_NAME = "android.content.pm.extra.OTHER_PACKAGE_NAME";
- field public static final java.lang.String EXTRA_PACKAGE_NAME = "android.content.pm.extra.PACKAGE_NAME";
- field public static final java.lang.String EXTRA_SESSION = "android.content.pm.extra.SESSION";
- field public static final java.lang.String EXTRA_SESSION_ID = "android.content.pm.extra.SESSION_ID";
- field public static final java.lang.String EXTRA_STATUS = "android.content.pm.extra.STATUS";
- field public static final java.lang.String EXTRA_STATUS_MESSAGE = "android.content.pm.extra.STATUS_MESSAGE";
- field public static final java.lang.String EXTRA_STORAGE_PATH = "android.content.pm.extra.STORAGE_PATH";
+ method public int createSession(@NonNull android.content.pm.PackageInstaller.SessionParams) throws java.io.IOException;
+ method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllSessions();
+ method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getMySessions();
+ method @Nullable public android.content.pm.PackageInstaller.SessionInfo getSessionInfo(int);
+ method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getStagedSessions();
+ method @NonNull public android.content.pm.PackageInstaller.Session openSession(int) throws java.io.IOException;
+ method public void registerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
+ method public void registerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback, @NonNull android.os.Handler);
+ method @RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES, android.Manifest.permission.REQUEST_DELETE_PACKAGES}) public void uninstall(@NonNull String, @NonNull android.content.IntentSender);
+ method @RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES, android.Manifest.permission.REQUEST_DELETE_PACKAGES}) public void uninstall(@NonNull android.content.pm.VersionedPackage, @NonNull android.content.IntentSender);
+ method public void unregisterSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
+ method public void updateSessionAppIcon(int, @Nullable android.graphics.Bitmap);
+ method public void updateSessionAppLabel(int, @Nullable CharSequence);
+ field public static final String ACTION_SESSION_COMMITTED = "android.content.pm.action.SESSION_COMMITTED";
+ field public static final String ACTION_SESSION_DETAILS = "android.content.pm.action.SESSION_DETAILS";
+ field public static final String ACTION_SESSION_UPDATED = "android.content.pm.action.SESSION_UPDATED";
+ field public static final String EXTRA_OTHER_PACKAGE_NAME = "android.content.pm.extra.OTHER_PACKAGE_NAME";
+ field public static final String EXTRA_PACKAGE_NAME = "android.content.pm.extra.PACKAGE_NAME";
+ field public static final String EXTRA_SESSION = "android.content.pm.extra.SESSION";
+ field public static final String EXTRA_SESSION_ID = "android.content.pm.extra.SESSION_ID";
+ field public static final String EXTRA_STATUS = "android.content.pm.extra.STATUS";
+ field public static final String EXTRA_STATUS_MESSAGE = "android.content.pm.extra.STATUS_MESSAGE";
+ field public static final String EXTRA_STORAGE_PATH = "android.content.pm.extra.STORAGE_PATH";
field public static final int STATUS_FAILURE = 1; // 0x1
field public static final int STATUS_FAILURE_ABORTED = 3; // 0x3
field public static final int STATUS_FAILURE_BLOCKED = 2; // 0x2
@@ -11334,22 +11369,22 @@
method public void abandon();
method public void addChildSessionId(int);
method public void close();
- method public void commit(android.content.IntentSender);
- method public void fsync(java.io.OutputStream) throws java.io.IOException;
- method public int[] getChildSessionIds();
- method public java.lang.String[] getNames() throws java.io.IOException;
+ method public void commit(@NonNull android.content.IntentSender);
+ method public void fsync(@NonNull java.io.OutputStream) throws java.io.IOException;
+ method @NonNull public int[] getChildSessionIds();
+ method @NonNull public String[] getNames() throws java.io.IOException;
method public int getParentSessionId();
method public boolean isMultiPackage();
method public boolean isStaged();
- method public java.io.InputStream openRead(java.lang.String) throws java.io.IOException;
- method public java.io.OutputStream openWrite(java.lang.String, long, long) throws java.io.IOException;
+ method @NonNull public java.io.InputStream openRead(@NonNull String) throws java.io.IOException;
+ method @NonNull public java.io.OutputStream openWrite(@NonNull String, long, long) throws java.io.IOException;
method public void removeChildSessionId(int);
- method public void removeSplit(java.lang.String) throws java.io.IOException;
+ method public void removeSplit(@NonNull String) throws java.io.IOException;
method public void setStagingProgress(float);
- method public void transfer(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public void transfer(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
}
- public static abstract class PackageInstaller.SessionCallback {
+ public abstract static class PackageInstaller.SessionCallback {
ctor public PackageInstaller.SessionCallback();
method public abstract void onActiveChanged(int, boolean);
method public abstract void onBadgingChanged(int);
@@ -11359,21 +11394,21 @@
}
public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
- method public android.content.Intent createDetailsIntent();
+ method @Nullable public android.content.Intent createDetailsIntent();
method public int describeContents();
- method public android.graphics.Bitmap getAppIcon();
- method public java.lang.CharSequence getAppLabel();
- method public java.lang.String getAppPackageName();
+ method @Nullable public android.graphics.Bitmap getAppIcon();
+ method @Nullable public CharSequence getAppLabel();
+ method @Nullable public String getAppPackageName();
method public int[] getChildSessionIds();
method public int getInstallLocation();
method public int getInstallReason();
- method public java.lang.String getInstallerPackageName();
+ method @Nullable public String getInstallerPackageName();
method public int getMode();
method public int getOriginatingUid();
- method public android.net.Uri getOriginatingUri();
+ method @Nullable public android.net.Uri getOriginatingUri();
method public int getParentSessionId();
method public float getProgress();
- method public android.net.Uri getReferrerUri();
+ method @Nullable public android.net.Uri getReferrerUri();
method public int getSessionId();
method public long getSize();
method public int getStagedSessionErrorCode();
@@ -11395,15 +11430,15 @@
public static class PackageInstaller.SessionParams implements android.os.Parcelable {
ctor public PackageInstaller.SessionParams(int);
method public int describeContents();
- method public void setAppIcon(android.graphics.Bitmap);
- method public void setAppLabel(java.lang.CharSequence);
- method public void setAppPackageName(java.lang.String);
+ method public void setAppIcon(@Nullable android.graphics.Bitmap);
+ method public void setAppLabel(@Nullable CharSequence);
+ method public void setAppPackageName(@Nullable String);
method public void setInstallLocation(int);
method public void setInstallReason(int);
method public void setMultiPackage();
method public void setOriginatingUid(int);
- method public void setOriginatingUri(android.net.Uri);
- method public void setReferrerUri(android.net.Uri);
+ method public void setOriginatingUri(@Nullable android.net.Uri);
+ method public void setReferrerUri(@Nullable android.net.Uri);
method public void setSize(long);
method public void setStaged();
method public void writeToParcel(android.os.Parcel, int);
@@ -11416,44 +11451,44 @@
ctor public PackageItemInfo();
ctor public PackageItemInfo(android.content.pm.PackageItemInfo);
ctor protected PackageItemInfo(android.os.Parcel);
- method protected void dumpBack(android.util.Printer, java.lang.String);
- method protected void dumpFront(android.util.Printer, java.lang.String);
+ method protected void dumpBack(android.util.Printer, String);
+ method protected void dumpFront(android.util.Printer, String);
method public android.graphics.drawable.Drawable loadBanner(android.content.pm.PackageManager);
method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ method @NonNull public CharSequence loadLabel(@NonNull android.content.pm.PackageManager);
method public android.graphics.drawable.Drawable loadLogo(android.content.pm.PackageManager);
method public android.graphics.drawable.Drawable loadUnbadgedIcon(android.content.pm.PackageManager);
- method public android.content.res.XmlResourceParser loadXmlMetaData(android.content.pm.PackageManager, java.lang.String);
+ method public android.content.res.XmlResourceParser loadXmlMetaData(android.content.pm.PackageManager, String);
method public void writeToParcel(android.os.Parcel, int);
field public int banner;
field public int icon;
field public int labelRes;
field public int logo;
field public android.os.Bundle metaData;
- field public java.lang.String name;
- field public java.lang.CharSequence nonLocalizedLabel;
- field public java.lang.String packageName;
+ field public String name;
+ field public CharSequence nonLocalizedLabel;
+ field public String packageName;
}
- public static class PackageItemInfo.DisplayNameComparator implements java.util.Comparator {
+ public static class PackageItemInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.PackageItemInfo> {
ctor public PackageItemInfo.DisplayNameComparator(android.content.pm.PackageManager);
method public final int compare(android.content.pm.PackageItemInfo, android.content.pm.PackageItemInfo);
}
public abstract class PackageManager {
ctor public PackageManager();
- method public abstract deprecated void addPackageToPreferred(java.lang.String);
+ method @Deprecated public abstract void addPackageToPreferred(String);
method public abstract boolean addPermission(android.content.pm.PermissionInfo);
method public abstract boolean addPermissionAsync(android.content.pm.PermissionInfo);
- method public abstract deprecated void addPreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName);
+ method @Deprecated public abstract void addPreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName);
method public abstract boolean canRequestPackageInstalls();
- method public abstract java.lang.String[] canonicalToCurrentPackageNames(java.lang.String[]);
- method public abstract int checkPermission(java.lang.String, java.lang.String);
- method public abstract int checkSignatures(java.lang.String, java.lang.String);
- method public abstract int checkSignatures(int, int);
+ method public abstract String[] canonicalToCurrentPackageNames(String[]);
+ method @CheckResult public abstract int checkPermission(String, String);
+ method @CheckResult public abstract int checkSignatures(String, String);
+ method @CheckResult public abstract int checkSignatures(int, int);
method public abstract void clearInstantAppCookie();
- method public abstract deprecated void clearPackagePreferredActivities(java.lang.String);
- method public abstract java.lang.String[] currentToCanonicalPackageNames(java.lang.String[]);
+ method @Deprecated public abstract void clearPackagePreferredActivities(String);
+ method public abstract String[] currentToCanonicalPackageNames(String[]);
method public abstract void extendVerificationTimeout(int, int, long);
method public abstract android.graphics.drawable.Drawable getActivityBanner(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.graphics.drawable.Drawable getActivityBanner(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
@@ -11464,85 +11499,85 @@
method public abstract android.graphics.drawable.Drawable getActivityLogo(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract java.util.List<android.content.pm.PermissionGroupInfo> getAllPermissionGroups(int);
method public abstract android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo);
- method public abstract android.graphics.drawable.Drawable getApplicationBanner(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract int getApplicationEnabledSetting(java.lang.String);
+ method public abstract android.graphics.drawable.Drawable getApplicationBanner(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract int getApplicationEnabledSetting(String);
method public abstract android.graphics.drawable.Drawable getApplicationIcon(android.content.pm.ApplicationInfo);
- method public abstract android.graphics.drawable.Drawable getApplicationIcon(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract java.lang.CharSequence getApplicationLabel(android.content.pm.ApplicationInfo);
+ method public abstract android.graphics.drawable.Drawable getApplicationIcon(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract android.content.pm.ApplicationInfo getApplicationInfo(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract CharSequence getApplicationLabel(android.content.pm.ApplicationInfo);
method public abstract android.graphics.drawable.Drawable getApplicationLogo(android.content.pm.ApplicationInfo);
- method public abstract android.graphics.drawable.Drawable getApplicationLogo(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract android.content.pm.ChangedPackages getChangedPackages(int);
+ method public abstract android.graphics.drawable.Drawable getApplicationLogo(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Nullable public abstract android.content.pm.ChangedPackages getChangedPackages(@IntRange(from=0) int);
method public abstract int getComponentEnabledSetting(android.content.ComponentName);
method public abstract android.graphics.drawable.Drawable getDefaultActivityIcon();
- method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo);
+ method public abstract android.graphics.drawable.Drawable getDrawable(String, @DrawableRes int, android.content.pm.ApplicationInfo);
method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
- method public java.util.List<android.content.pm.ModuleInfo> getInstalledModules(int);
+ method @NonNull public java.util.List<android.content.pm.ModuleInfo> getInstalledModules(int);
method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
- method public abstract java.lang.String getInstallerPackageName(java.lang.String);
- method public abstract byte[] getInstantAppCookie();
+ method @Nullable public abstract String getInstallerPackageName(String);
+ method @NonNull public abstract byte[] getInstantAppCookie();
method public abstract int getInstantAppCookieMaxBytes();
method public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract android.content.Intent getLaunchIntentForPackage(java.lang.String);
- method public abstract android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String);
- method public android.content.pm.ModuleInfo getModuleInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract java.lang.String getNameForUid(int);
- method public android.content.pm.PackageInfo getPackageArchiveInfo(java.lang.String, int);
- method public abstract int[] getPackageGids(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract int[] getPackageGids(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract android.content.pm.PackageInfo getPackageInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Nullable public abstract android.content.Intent getLaunchIntentForPackage(@NonNull String);
+ method @Nullable public abstract android.content.Intent getLeanbackLaunchIntentForPackage(@NonNull String);
+ method public android.content.pm.ModuleInfo getModuleInfo(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Nullable public abstract String getNameForUid(int);
+ method public android.content.pm.PackageInfo getPackageArchiveInfo(String, int);
+ method public abstract int[] getPackageGids(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract int[] getPackageGids(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract android.content.pm.PackageInfo getPackageInfo(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.content.pm.PackageInfo getPackageInfo(android.content.pm.VersionedPackage, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract android.content.pm.PackageInstaller getPackageInstaller();
- method public abstract int getPackageUid(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract java.lang.String[] getPackagesForUid(int);
- method public abstract java.util.List<android.content.pm.PackageInfo> getPackagesHoldingPermissions(java.lang.String[], int);
- method public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract android.content.pm.PermissionInfo getPermissionInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract deprecated int getPreferredActivities(java.util.List<android.content.IntentFilter>, java.util.List<android.content.ComponentName>, java.lang.String);
- method public abstract deprecated java.util.List<android.content.pm.PackageInfo> getPreferredPackages(int);
+ method @NonNull public abstract android.content.pm.PackageInstaller getPackageInstaller();
+ method public abstract int getPackageUid(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Nullable public abstract String[] getPackagesForUid(int);
+ method public abstract java.util.List<android.content.pm.PackageInfo> getPackagesHoldingPermissions(String[], int);
+ method public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract android.content.pm.PermissionInfo getPermissionInfo(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public abstract int getPreferredActivities(@NonNull java.util.List<android.content.IntentFilter>, @NonNull java.util.List<android.content.ComponentName>, String);
+ method @Deprecated public abstract java.util.List<android.content.pm.PackageInfo> getPreferredPackages(int);
method public abstract android.content.pm.ProviderInfo getProviderInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.content.pm.ActivityInfo getReceiverInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.content.res.Resources getResourcesForActivity(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.content.res.Resources getResourcesForApplication(android.content.pm.ApplicationInfo) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract android.content.res.Resources getResourcesForApplication(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract android.content.res.Resources getResourcesForApplication(String) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.content.pm.ServiceInfo getServiceInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract java.util.List<android.content.pm.SharedLibraryInfo> getSharedLibraries(int);
- method public android.os.Bundle getSuspendedPackageAppExtras();
+ method @NonNull public abstract java.util.List<android.content.pm.SharedLibraryInfo> getSharedLibraries(int);
+ method @Nullable public android.os.Bundle getSuspendedPackageAppExtras();
method public abstract android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
- method public abstract java.lang.String[] getSystemSharedLibraryNames();
- method public abstract java.lang.CharSequence getText(java.lang.String, int, android.content.pm.ApplicationInfo);
+ method public abstract String[] getSystemSharedLibraryNames();
+ method public abstract CharSequence getText(String, @StringRes int, android.content.pm.ApplicationInfo);
method public abstract android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
method public abstract android.graphics.drawable.Drawable getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle);
- method public abstract java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle);
- method public abstract android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo);
- method public boolean hasSigningCertificate(java.lang.String, byte[], int);
+ method public abstract CharSequence getUserBadgedLabel(CharSequence, android.os.UserHandle);
+ method public abstract android.content.res.XmlResourceParser getXml(String, @XmlRes int, android.content.pm.ApplicationInfo);
+ method public boolean hasSigningCertificate(String, byte[], int);
method public boolean hasSigningCertificate(int, byte[], int);
- method public abstract boolean hasSystemFeature(java.lang.String);
- method public abstract boolean hasSystemFeature(java.lang.String, int);
+ method public abstract boolean hasSystemFeature(String);
+ method public abstract boolean hasSystemFeature(String, int);
method public abstract boolean isInstantApp();
- method public abstract boolean isInstantApp(java.lang.String);
- method public boolean isPackageSuspended(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract boolean isInstantApp(String);
+ method public boolean isPackageSuspended(String) throws android.content.pm.PackageManager.NameNotFoundException;
method public boolean isPackageSuspended();
- method public abstract boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String);
+ method @CheckResult public abstract boolean isPermissionRevokedByPolicy(@NonNull String, @NonNull String);
method public abstract boolean isSafeMode();
method public abstract java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int);
- method public abstract java.util.List<android.content.pm.ProviderInfo> queryContentProviders(java.lang.String, int, int);
- method public abstract java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(java.lang.String, int);
+ method public abstract java.util.List<android.content.pm.ProviderInfo> queryContentProviders(String, int, int);
+ method public abstract java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(String, int);
method public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivities(android.content.Intent, int);
- method public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], android.content.Intent, int);
+ method public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivityOptions(@Nullable android.content.ComponentName, @Nullable android.content.Intent[], android.content.Intent, int);
method public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentContentProviders(android.content.Intent, int);
method public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentServices(android.content.Intent, int);
- method public abstract java.util.List<android.content.pm.PermissionInfo> queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract deprecated void removePackageFromPreferred(java.lang.String);
- method public abstract void removePermission(java.lang.String);
+ method public abstract java.util.List<android.content.pm.PermissionInfo> queryPermissionsByGroup(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public abstract void removePackageFromPreferred(String);
+ method public abstract void removePermission(String);
method public abstract android.content.pm.ResolveInfo resolveActivity(android.content.Intent, int);
- method public abstract android.content.pm.ProviderInfo resolveContentProvider(java.lang.String, int);
+ method public abstract android.content.pm.ProviderInfo resolveContentProvider(String, int);
method public abstract android.content.pm.ResolveInfo resolveService(android.content.Intent, int);
- method public abstract void setApplicationCategoryHint(java.lang.String, int);
- method public abstract void setApplicationEnabledSetting(java.lang.String, int, int);
- method public abstract void setComponentEnabledSetting(android.content.ComponentName, int, int);
- method public abstract void setInstallerPackageName(java.lang.String, java.lang.String);
- method public abstract void updateInstantAppCookie(byte[]);
+ method public abstract void setApplicationCategoryHint(@NonNull String, int);
+ method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public abstract void setApplicationEnabledSetting(String, int, int);
+ method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public abstract void setComponentEnabledSetting(android.content.ComponentName, int, int);
+ method public abstract void setInstallerPackageName(String, String);
+ method public abstract void updateInstantAppCookie(@Nullable byte[]);
method public abstract void verifyPendingInstall(int, int);
field public static final int CERT_INPUT_RAW_X509 = 0; // 0x0
field public static final int CERT_INPUT_SHA256 = 1; // 0x1
@@ -11552,119 +11587,119 @@
field public static final int COMPONENT_ENABLED_STATE_DISABLED_USER = 3; // 0x3
field public static final int COMPONENT_ENABLED_STATE_ENABLED = 1; // 0x1
field public static final int DONT_KILL_APP = 1; // 0x1
- field public static final java.lang.String EXTRA_VERIFICATION_ID = "android.content.pm.extra.VERIFICATION_ID";
- field public static final java.lang.String EXTRA_VERIFICATION_RESULT = "android.content.pm.extra.VERIFICATION_RESULT";
- field public static final java.lang.String FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS = "android.software.activities_on_secondary_displays";
- field public static final java.lang.String FEATURE_APP_WIDGETS = "android.software.app_widgets";
- field public static final java.lang.String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
- field public static final java.lang.String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
- field public static final java.lang.String FEATURE_AUDIO_PRO = "android.hardware.audio.pro";
- field public static final java.lang.String FEATURE_AUTOFILL = "android.software.autofill";
- field public static final java.lang.String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
- field public static final java.lang.String FEATURE_BACKUP = "android.software.backup";
- field public static final java.lang.String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
- field public static final java.lang.String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le";
- field public static final java.lang.String FEATURE_CAMERA = "android.hardware.camera";
- field public static final java.lang.String FEATURE_CAMERA_ANY = "android.hardware.camera.any";
- field public static final java.lang.String FEATURE_CAMERA_AR = "android.hardware.camera.ar";
- field public static final java.lang.String FEATURE_CAMERA_AUTOFOCUS = "android.hardware.camera.autofocus";
- field public static final java.lang.String FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING = "android.hardware.camera.capability.manual_post_processing";
- field public static final java.lang.String FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR = "android.hardware.camera.capability.manual_sensor";
- field public static final java.lang.String FEATURE_CAMERA_CAPABILITY_RAW = "android.hardware.camera.capability.raw";
- field public static final java.lang.String FEATURE_CAMERA_EXTERNAL = "android.hardware.camera.external";
- field public static final java.lang.String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash";
- field public static final java.lang.String FEATURE_CAMERA_FRONT = "android.hardware.camera.front";
- field public static final java.lang.String FEATURE_CAMERA_LEVEL_FULL = "android.hardware.camera.level.full";
- field public static final java.lang.String FEATURE_CANT_SAVE_STATE = "android.software.cant_save_state";
- field public static final java.lang.String FEATURE_COMPANION_DEVICE_SETUP = "android.software.companion_device_setup";
- field public static final java.lang.String FEATURE_CONNECTION_SERVICE = "android.software.connectionservice";
- field public static final java.lang.String FEATURE_CONSUMER_IR = "android.hardware.consumerir";
- field public static final java.lang.String FEATURE_DEVICE_ADMIN = "android.software.device_admin";
- field public static final java.lang.String FEATURE_EMBEDDED = "android.hardware.type.embedded";
- field public static final java.lang.String FEATURE_ETHERNET = "android.hardware.ethernet";
- field public static final java.lang.String FEATURE_FACE = "android.hardware.biometrics.face";
- field public static final java.lang.String FEATURE_FAKETOUCH = "android.hardware.faketouch";
- field public static final java.lang.String FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT = "android.hardware.faketouch.multitouch.distinct";
- field public static final java.lang.String FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND = "android.hardware.faketouch.multitouch.jazzhand";
- field public static final java.lang.String FEATURE_FINGERPRINT = "android.hardware.biometrics.fingerprint";
- field public static final java.lang.String FEATURE_FINGERPRINT_PRE_29 = "android.hardware.fingerprint";
- field public static final java.lang.String FEATURE_FREEFORM_WINDOW_MANAGEMENT = "android.software.freeform_window_management";
- field public static final java.lang.String FEATURE_GAMEPAD = "android.hardware.gamepad";
- field public static final java.lang.String FEATURE_HIFI_SENSORS = "android.hardware.sensor.hifi_sensors";
- field public static final java.lang.String FEATURE_HOME_SCREEN = "android.software.home_screen";
- field public static final java.lang.String FEATURE_INPUT_METHODS = "android.software.input_methods";
- field public static final java.lang.String FEATURE_IPSEC_TUNNELS = "android.software.ipsec_tunnels";
- field public static final java.lang.String FEATURE_IRIS = "android.hardware.biometrics.iris";
- field public static final java.lang.String FEATURE_LEANBACK = "android.software.leanback";
- field public static final java.lang.String FEATURE_LEANBACK_ONLY = "android.software.leanback_only";
- field public static final java.lang.String FEATURE_LIVE_TV = "android.software.live_tv";
- field public static final java.lang.String FEATURE_LIVE_WALLPAPER = "android.software.live_wallpaper";
- field public static final java.lang.String FEATURE_LOCATION = "android.hardware.location";
- field public static final java.lang.String FEATURE_LOCATION_GPS = "android.hardware.location.gps";
- field public static final java.lang.String FEATURE_LOCATION_NETWORK = "android.hardware.location.network";
- field public static final java.lang.String FEATURE_MANAGED_USERS = "android.software.managed_users";
- field public static final java.lang.String FEATURE_MICROPHONE = "android.hardware.microphone";
- field public static final java.lang.String FEATURE_MIDI = "android.software.midi";
- field public static final java.lang.String FEATURE_NFC = "android.hardware.nfc";
- field public static final java.lang.String FEATURE_NFC_BEAM = "android.sofware.nfc.beam";
- field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce";
- field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef";
- field public static final java.lang.String FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE = "android.hardware.nfc.ese";
- field public static final java.lang.String FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC = "android.hardware.nfc.uicc";
- field public static final java.lang.String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep";
- field public static final java.lang.String FEATURE_PC = "android.hardware.type.pc";
- field public static final java.lang.String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture";
- field public static final java.lang.String FEATURE_PRINTING = "android.software.print";
- field public static final java.lang.String FEATURE_RAM_LOW = "android.hardware.ram.low";
- field public static final java.lang.String FEATURE_RAM_NORMAL = "android.hardware.ram.normal";
- field public static final java.lang.String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape";
- field public static final java.lang.String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait";
- field public static final java.lang.String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users";
- field public static final java.lang.String FEATURE_SENSOR_ACCELEROMETER = "android.hardware.sensor.accelerometer";
- field public static final java.lang.String FEATURE_SENSOR_AMBIENT_TEMPERATURE = "android.hardware.sensor.ambient_temperature";
- field public static final java.lang.String FEATURE_SENSOR_BAROMETER = "android.hardware.sensor.barometer";
- field public static final java.lang.String FEATURE_SENSOR_COMPASS = "android.hardware.sensor.compass";
- field public static final java.lang.String FEATURE_SENSOR_GYROSCOPE = "android.hardware.sensor.gyroscope";
- field public static final java.lang.String FEATURE_SENSOR_HEART_RATE = "android.hardware.sensor.heartrate";
- field public static final java.lang.String FEATURE_SENSOR_HEART_RATE_ECG = "android.hardware.sensor.heartrate.ecg";
- field public static final java.lang.String FEATURE_SENSOR_LIGHT = "android.hardware.sensor.light";
- field public static final java.lang.String FEATURE_SENSOR_PROXIMITY = "android.hardware.sensor.proximity";
- field public static final java.lang.String FEATURE_SENSOR_RELATIVE_HUMIDITY = "android.hardware.sensor.relative_humidity";
- field public static final java.lang.String FEATURE_SENSOR_STEP_COUNTER = "android.hardware.sensor.stepcounter";
- field public static final java.lang.String FEATURE_SENSOR_STEP_DETECTOR = "android.hardware.sensor.stepdetector";
- field public static final java.lang.String FEATURE_SIP = "android.software.sip";
- field public static final java.lang.String FEATURE_SIP_VOIP = "android.software.sip.voip";
- field public static final java.lang.String FEATURE_STRONGBOX_KEYSTORE = "android.hardware.strongbox_keystore";
- field public static final java.lang.String FEATURE_TELEPHONY = "android.hardware.telephony";
- field public static final java.lang.String FEATURE_TELEPHONY_CDMA = "android.hardware.telephony.cdma";
- field public static final java.lang.String FEATURE_TELEPHONY_EUICC = "android.hardware.telephony.euicc";
- field public static final java.lang.String FEATURE_TELEPHONY_GSM = "android.hardware.telephony.gsm";
- field public static final java.lang.String FEATURE_TELEPHONY_MBMS = "android.hardware.telephony.mbms";
- field public static final deprecated java.lang.String FEATURE_TELEVISION = "android.hardware.type.television";
- field public static final java.lang.String FEATURE_TOUCHSCREEN = "android.hardware.touchscreen";
- field public static final java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH = "android.hardware.touchscreen.multitouch";
- field public static final java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT = "android.hardware.touchscreen.multitouch.distinct";
- field public static final java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND = "android.hardware.touchscreen.multitouch.jazzhand";
- field public static final java.lang.String FEATURE_USB_ACCESSORY = "android.hardware.usb.accessory";
- field public static final java.lang.String FEATURE_USB_HOST = "android.hardware.usb.host";
- field public static final java.lang.String FEATURE_VERIFIED_BOOT = "android.software.verified_boot";
- field public static final java.lang.String FEATURE_VR_HEADTRACKING = "android.hardware.vr.headtracking";
- field public static final deprecated java.lang.String FEATURE_VR_MODE = "android.software.vr.mode";
- field public static final java.lang.String FEATURE_VR_MODE_HIGH_PERFORMANCE = "android.hardware.vr.high_performance";
- field public static final java.lang.String FEATURE_VULKAN_HARDWARE_COMPUTE = "android.hardware.vulkan.compute";
- field public static final java.lang.String FEATURE_VULKAN_HARDWARE_LEVEL = "android.hardware.vulkan.level";
- field public static final java.lang.String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version";
- field public static final java.lang.String FEATURE_WATCH = "android.hardware.type.watch";
- field public static final java.lang.String FEATURE_WEBVIEW = "android.software.webview";
- field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi";
- field public static final java.lang.String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware";
- field public static final java.lang.String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct";
- field public static final java.lang.String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint";
- field public static final java.lang.String FEATURE_WIFI_RTT = "android.hardware.wifi.rtt";
+ field public static final String EXTRA_VERIFICATION_ID = "android.content.pm.extra.VERIFICATION_ID";
+ field public static final String EXTRA_VERIFICATION_RESULT = "android.content.pm.extra.VERIFICATION_RESULT";
+ field public static final String FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS = "android.software.activities_on_secondary_displays";
+ field public static final String FEATURE_APP_WIDGETS = "android.software.app_widgets";
+ field public static final String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
+ field public static final String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
+ field public static final String FEATURE_AUDIO_PRO = "android.hardware.audio.pro";
+ field public static final String FEATURE_AUTOFILL = "android.software.autofill";
+ field public static final String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
+ field public static final String FEATURE_BACKUP = "android.software.backup";
+ field public static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
+ field public static final String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le";
+ field public static final String FEATURE_CAMERA = "android.hardware.camera";
+ field public static final String FEATURE_CAMERA_ANY = "android.hardware.camera.any";
+ field public static final String FEATURE_CAMERA_AR = "android.hardware.camera.ar";
+ field public static final String FEATURE_CAMERA_AUTOFOCUS = "android.hardware.camera.autofocus";
+ field public static final String FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING = "android.hardware.camera.capability.manual_post_processing";
+ field public static final String FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR = "android.hardware.camera.capability.manual_sensor";
+ field public static final String FEATURE_CAMERA_CAPABILITY_RAW = "android.hardware.camera.capability.raw";
+ field public static final String FEATURE_CAMERA_EXTERNAL = "android.hardware.camera.external";
+ field public static final String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash";
+ field public static final String FEATURE_CAMERA_FRONT = "android.hardware.camera.front";
+ field public static final String FEATURE_CAMERA_LEVEL_FULL = "android.hardware.camera.level.full";
+ field public static final String FEATURE_CANT_SAVE_STATE = "android.software.cant_save_state";
+ field public static final String FEATURE_COMPANION_DEVICE_SETUP = "android.software.companion_device_setup";
+ field public static final String FEATURE_CONNECTION_SERVICE = "android.software.connectionservice";
+ field public static final String FEATURE_CONSUMER_IR = "android.hardware.consumerir";
+ field public static final String FEATURE_DEVICE_ADMIN = "android.software.device_admin";
+ field public static final String FEATURE_EMBEDDED = "android.hardware.type.embedded";
+ field public static final String FEATURE_ETHERNET = "android.hardware.ethernet";
+ field public static final String FEATURE_FACE = "android.hardware.biometrics.face";
+ field public static final String FEATURE_FAKETOUCH = "android.hardware.faketouch";
+ field public static final String FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT = "android.hardware.faketouch.multitouch.distinct";
+ field public static final String FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND = "android.hardware.faketouch.multitouch.jazzhand";
+ field public static final String FEATURE_FINGERPRINT = "android.hardware.biometrics.fingerprint";
+ field public static final String FEATURE_FINGERPRINT_PRE_29 = "android.hardware.fingerprint";
+ field public static final String FEATURE_FREEFORM_WINDOW_MANAGEMENT = "android.software.freeform_window_management";
+ field public static final String FEATURE_GAMEPAD = "android.hardware.gamepad";
+ field public static final String FEATURE_HIFI_SENSORS = "android.hardware.sensor.hifi_sensors";
+ field public static final String FEATURE_HOME_SCREEN = "android.software.home_screen";
+ field public static final String FEATURE_INPUT_METHODS = "android.software.input_methods";
+ field public static final String FEATURE_IPSEC_TUNNELS = "android.software.ipsec_tunnels";
+ field public static final String FEATURE_IRIS = "android.hardware.biometrics.iris";
+ field public static final String FEATURE_LEANBACK = "android.software.leanback";
+ field public static final String FEATURE_LEANBACK_ONLY = "android.software.leanback_only";
+ field public static final String FEATURE_LIVE_TV = "android.software.live_tv";
+ field public static final String FEATURE_LIVE_WALLPAPER = "android.software.live_wallpaper";
+ field public static final String FEATURE_LOCATION = "android.hardware.location";
+ field public static final String FEATURE_LOCATION_GPS = "android.hardware.location.gps";
+ field public static final String FEATURE_LOCATION_NETWORK = "android.hardware.location.network";
+ field public static final String FEATURE_MANAGED_USERS = "android.software.managed_users";
+ field public static final String FEATURE_MICROPHONE = "android.hardware.microphone";
+ field public static final String FEATURE_MIDI = "android.software.midi";
+ field public static final String FEATURE_NFC = "android.hardware.nfc";
+ field public static final String FEATURE_NFC_BEAM = "android.sofware.nfc.beam";
+ field public static final String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce";
+ field public static final String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef";
+ field public static final String FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE = "android.hardware.nfc.ese";
+ field public static final String FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC = "android.hardware.nfc.uicc";
+ field public static final String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep";
+ field public static final String FEATURE_PC = "android.hardware.type.pc";
+ field public static final String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture";
+ field public static final String FEATURE_PRINTING = "android.software.print";
+ field public static final String FEATURE_RAM_LOW = "android.hardware.ram.low";
+ field public static final String FEATURE_RAM_NORMAL = "android.hardware.ram.normal";
+ field public static final String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape";
+ field public static final String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait";
+ field public static final String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users";
+ field public static final String FEATURE_SENSOR_ACCELEROMETER = "android.hardware.sensor.accelerometer";
+ field public static final String FEATURE_SENSOR_AMBIENT_TEMPERATURE = "android.hardware.sensor.ambient_temperature";
+ field public static final String FEATURE_SENSOR_BAROMETER = "android.hardware.sensor.barometer";
+ field public static final String FEATURE_SENSOR_COMPASS = "android.hardware.sensor.compass";
+ field public static final String FEATURE_SENSOR_GYROSCOPE = "android.hardware.sensor.gyroscope";
+ field public static final String FEATURE_SENSOR_HEART_RATE = "android.hardware.sensor.heartrate";
+ field public static final String FEATURE_SENSOR_HEART_RATE_ECG = "android.hardware.sensor.heartrate.ecg";
+ field public static final String FEATURE_SENSOR_LIGHT = "android.hardware.sensor.light";
+ field public static final String FEATURE_SENSOR_PROXIMITY = "android.hardware.sensor.proximity";
+ field public static final String FEATURE_SENSOR_RELATIVE_HUMIDITY = "android.hardware.sensor.relative_humidity";
+ field public static final String FEATURE_SENSOR_STEP_COUNTER = "android.hardware.sensor.stepcounter";
+ field public static final String FEATURE_SENSOR_STEP_DETECTOR = "android.hardware.sensor.stepdetector";
+ field public static final String FEATURE_SIP = "android.software.sip";
+ field public static final String FEATURE_SIP_VOIP = "android.software.sip.voip";
+ field public static final String FEATURE_STRONGBOX_KEYSTORE = "android.hardware.strongbox_keystore";
+ field public static final String FEATURE_TELEPHONY = "android.hardware.telephony";
+ field public static final String FEATURE_TELEPHONY_CDMA = "android.hardware.telephony.cdma";
+ field public static final String FEATURE_TELEPHONY_EUICC = "android.hardware.telephony.euicc";
+ field public static final String FEATURE_TELEPHONY_GSM = "android.hardware.telephony.gsm";
+ field public static final String FEATURE_TELEPHONY_MBMS = "android.hardware.telephony.mbms";
+ field @Deprecated public static final String FEATURE_TELEVISION = "android.hardware.type.television";
+ field public static final String FEATURE_TOUCHSCREEN = "android.hardware.touchscreen";
+ field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH = "android.hardware.touchscreen.multitouch";
+ field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT = "android.hardware.touchscreen.multitouch.distinct";
+ field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND = "android.hardware.touchscreen.multitouch.jazzhand";
+ field public static final String FEATURE_USB_ACCESSORY = "android.hardware.usb.accessory";
+ field public static final String FEATURE_USB_HOST = "android.hardware.usb.host";
+ field public static final String FEATURE_VERIFIED_BOOT = "android.software.verified_boot";
+ field public static final String FEATURE_VR_HEADTRACKING = "android.hardware.vr.headtracking";
+ field @Deprecated public static final String FEATURE_VR_MODE = "android.software.vr.mode";
+ field public static final String FEATURE_VR_MODE_HIGH_PERFORMANCE = "android.hardware.vr.high_performance";
+ field public static final String FEATURE_VULKAN_HARDWARE_COMPUTE = "android.hardware.vulkan.compute";
+ field public static final String FEATURE_VULKAN_HARDWARE_LEVEL = "android.hardware.vulkan.level";
+ field public static final String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version";
+ field public static final String FEATURE_WATCH = "android.hardware.type.watch";
+ field public static final String FEATURE_WEBVIEW = "android.software.webview";
+ field public static final String FEATURE_WIFI = "android.hardware.wifi";
+ field public static final String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware";
+ field public static final String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct";
+ field public static final String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint";
+ field public static final String FEATURE_WIFI_RTT = "android.hardware.wifi.rtt";
field public static final int GET_ACTIVITIES = 1; // 0x1
field public static final int GET_CONFIGURATIONS = 16384; // 0x4000
- field public static final deprecated int GET_DISABLED_COMPONENTS = 512; // 0x200
- field public static final deprecated int GET_DISABLED_UNTIL_USED_COMPONENTS = 32768; // 0x8000
+ field @Deprecated public static final int GET_DISABLED_COMPONENTS = 512; // 0x200
+ field @Deprecated public static final int GET_DISABLED_UNTIL_USED_COMPONENTS = 32768; // 0x8000
field public static final int GET_GIDS = 256; // 0x100
field public static final int GET_INSTRUMENTATION = 16; // 0x10
field public static final int GET_INTENT_FILTERS = 32; // 0x20
@@ -11675,9 +11710,9 @@
field public static final int GET_RESOLVED_FILTER = 64; // 0x40
field public static final int GET_SERVICES = 4; // 0x4
field public static final int GET_SHARED_LIBRARY_FILES = 1024; // 0x400
- field public static final deprecated int GET_SIGNATURES = 64; // 0x40
+ field @Deprecated public static final int GET_SIGNATURES = 64; // 0x40
field public static final int GET_SIGNING_CERTIFICATES = 134217728; // 0x8000000
- field public static final deprecated int GET_UNINSTALLED_PACKAGES = 8192; // 0x2000
+ field @Deprecated public static final int GET_UNINSTALLED_PACKAGES = 8192; // 0x2000
field public static final int GET_URI_PERMISSION_PATTERNS = 2048; // 0x800
field public static final int INSTALL_REASON_DEVICE_RESTORE = 2; // 0x2
field public static final int INSTALL_REASON_DEVICE_SETUP = 3; // 0x3
@@ -11710,32 +11745,32 @@
public static class PackageManager.NameNotFoundException extends android.util.AndroidException {
ctor public PackageManager.NameNotFoundException();
- ctor public PackageManager.NameNotFoundException(java.lang.String);
+ ctor public PackageManager.NameNotFoundException(String);
}
- public deprecated class PackageStats implements android.os.Parcelable {
- ctor public PackageStats(java.lang.String);
- ctor public PackageStats(android.os.Parcel);
- ctor public PackageStats(android.content.pm.PackageStats);
- method public int describeContents();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.content.pm.PackageStats> CREATOR;
- field public long cacheSize;
- field public long codeSize;
- field public long dataSize;
- field public long externalCacheSize;
- field public long externalCodeSize;
- field public long externalDataSize;
- field public long externalMediaSize;
- field public long externalObbSize;
- field public java.lang.String packageName;
+ @Deprecated public class PackageStats implements android.os.Parcelable {
+ ctor @Deprecated public PackageStats(String);
+ ctor @Deprecated public PackageStats(android.os.Parcel);
+ ctor @Deprecated public PackageStats(android.content.pm.PackageStats);
+ method @Deprecated public int describeContents();
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.content.pm.PackageStats> CREATOR;
+ field @Deprecated public long cacheSize;
+ field @Deprecated public long codeSize;
+ field @Deprecated public long dataSize;
+ field @Deprecated public long externalCacheSize;
+ field @Deprecated public long externalCodeSize;
+ field @Deprecated public long externalDataSize;
+ field @Deprecated public long externalMediaSize;
+ field @Deprecated public long externalObbSize;
+ field @Deprecated public String packageName;
}
public class PathPermission extends android.os.PatternMatcher {
- ctor public PathPermission(java.lang.String, int, java.lang.String, java.lang.String);
+ ctor public PathPermission(String, int, String, String);
ctor public PathPermission(android.os.Parcel);
- method public java.lang.String getReadPermission();
- method public java.lang.String getWritePermission();
+ method public String getReadPermission();
+ method public String getWritePermission();
field public static final android.os.Parcelable.Creator<android.content.pm.PathPermission> CREATOR;
}
@@ -11743,12 +11778,12 @@
ctor public PermissionGroupInfo();
ctor public PermissionGroupInfo(android.content.pm.PermissionGroupInfo);
method public int describeContents();
- method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
+ method public CharSequence loadDescription(android.content.pm.PackageManager);
field public static final android.os.Parcelable.Creator<android.content.pm.PermissionGroupInfo> CREATOR;
field public static final int FLAG_PERSONAL_INFO = 1; // 0x1
field public int descriptionRes;
field public int flags;
- field public java.lang.CharSequence nonLocalizedDescription;
+ field public CharSequence nonLocalizedDescription;
field public int priority;
}
@@ -11758,7 +11793,7 @@
method public int describeContents();
method public int getProtection();
method public int getProtectionFlags();
- method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
+ method public CharSequence loadDescription(android.content.pm.PackageManager);
field public static final android.os.Parcelable.Creator<android.content.pm.PermissionInfo> CREATOR;
field public static final int FLAG_COSTS_MONEY = 1; // 0x1
field public static final int FLAG_INSTALLED = 1073741824; // 0x40000000
@@ -11772,18 +11807,18 @@
field public static final int PROTECTION_FLAG_PRIVILEGED = 16; // 0x10
field public static final int PROTECTION_FLAG_RUNTIME_ONLY = 8192; // 0x2000
field public static final int PROTECTION_FLAG_SETUP = 2048; // 0x800
- field public static final deprecated int PROTECTION_FLAG_SYSTEM = 16; // 0x10
+ field @Deprecated public static final int PROTECTION_FLAG_SYSTEM = 16; // 0x10
field public static final int PROTECTION_FLAG_VERIFIER = 512; // 0x200
- field public static final deprecated int PROTECTION_MASK_BASE = 15; // 0xf
- field public static final deprecated int PROTECTION_MASK_FLAGS = 65520; // 0xfff0
+ field @Deprecated public static final int PROTECTION_MASK_BASE = 15; // 0xf
+ field @Deprecated public static final int PROTECTION_MASK_FLAGS = 65520; // 0xfff0
field public static final int PROTECTION_NORMAL = 0; // 0x0
field public static final int PROTECTION_SIGNATURE = 2; // 0x2
- field public static final deprecated int PROTECTION_SIGNATURE_OR_SYSTEM = 3; // 0x3
+ field @Deprecated public static final int PROTECTION_SIGNATURE_OR_SYSTEM = 3; // 0x3
field public int descriptionRes;
field public int flags;
- field public java.lang.String group;
- field public java.lang.CharSequence nonLocalizedDescription;
- field public deprecated int protectionLevel;
+ field public String group;
+ field public CharSequence nonLocalizedDescription;
+ field @Deprecated public int protectionLevel;
field public boolean usageInfoRequired;
}
@@ -11791,29 +11826,29 @@
ctor public ProviderInfo();
ctor public ProviderInfo(android.content.pm.ProviderInfo);
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
field public static final android.os.Parcelable.Creator<android.content.pm.ProviderInfo> CREATOR;
field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
- field public java.lang.String authority;
+ field public String authority;
field public int flags;
field public boolean grantUriPermissions;
field public int initOrder;
- field public deprecated boolean isSyncable;
+ field @Deprecated public boolean isSyncable;
field public boolean multiprocess;
field public android.content.pm.PathPermission[] pathPermissions;
- field public java.lang.String readPermission;
+ field public String readPermission;
field public android.os.PatternMatcher[] uriPermissionPatterns;
- field public java.lang.String writePermission;
+ field public String writePermission;
}
public class ResolveInfo implements android.os.Parcelable {
ctor public ResolveInfo();
ctor public ResolveInfo(android.content.pm.ResolveInfo);
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public final int getIconResource();
method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ method public CharSequence loadLabel(android.content.pm.PackageManager);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.ResolveInfo> CREATOR;
field public android.content.pm.ActivityInfo activityInfo;
@@ -11823,16 +11858,16 @@
field public boolean isInstantAppAvailable;
field public int labelRes;
field public int match;
- field public java.lang.CharSequence nonLocalizedLabel;
+ field public CharSequence nonLocalizedLabel;
field public int preferredOrder;
field public int priority;
field public android.content.pm.ProviderInfo providerInfo;
- field public java.lang.String resolvePackageName;
+ field public String resolvePackageName;
field public android.content.pm.ServiceInfo serviceInfo;
field public int specificIndex;
}
- public static class ResolveInfo.DisplayNameComparator implements java.util.Comparator {
+ public static class ResolveInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.ResolveInfo> {
ctor public ResolveInfo.DisplayNameComparator(android.content.pm.PackageManager);
method public final int compare(android.content.pm.ResolveInfo, android.content.pm.ResolveInfo);
}
@@ -11841,7 +11876,7 @@
ctor public ServiceInfo();
ctor public ServiceInfo(android.content.pm.ServiceInfo);
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public int getForegroundServiceType();
field public static final android.os.Parcelable.Creator<android.content.pm.ServiceInfo> CREATOR;
field public static final int FLAG_EXTERNAL_SERVICE = 4; // 0x4
@@ -11857,17 +11892,17 @@
field public static final int FOREGROUND_SERVICE_TYPE_SYNC = 1; // 0x1
field public static final int FOREGROUND_SERVICE_TYPE_UNSPECIFIED = 0; // 0x0
field public int flags;
- field public java.lang.String permission;
+ field public String permission;
}
public final class SharedLibraryInfo implements android.os.Parcelable {
method public int describeContents();
- method public android.content.pm.VersionedPackage getDeclaringPackage();
- method public java.util.List<android.content.pm.VersionedPackage> getDependentPackages();
- method public long getLongVersion();
- method public java.lang.String getName();
+ method @NonNull public android.content.pm.VersionedPackage getDeclaringPackage();
+ method @NonNull public java.util.List<android.content.pm.VersionedPackage> getDependentPackages();
+ method @IntRange(from=0xffffffff) public long getLongVersion();
+ method public String getName();
method public int getType();
- method public deprecated int getVersion();
+ method @Deprecated @IntRange(from=0xffffffff) public int getVersion();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.SharedLibraryInfo> CREATOR;
field public static final int TYPE_BUILTIN = 0; // 0x0
@@ -11878,19 +11913,19 @@
public final class ShortcutInfo implements android.os.Parcelable {
method public int describeContents();
- method public android.content.ComponentName getActivity();
- method public java.util.Set<java.lang.String> getCategories();
- method public java.lang.CharSequence getDisabledMessage();
+ method @Nullable public android.content.ComponentName getActivity();
+ method @Nullable public java.util.Set<java.lang.String> getCategories();
+ method @Nullable public CharSequence getDisabledMessage();
method public int getDisabledReason();
- method public android.os.PersistableBundle getExtras();
- method public java.lang.String getId();
- method public android.content.Intent getIntent();
- method public android.content.Intent[] getIntents();
+ method @Nullable public android.os.PersistableBundle getExtras();
+ method @NonNull public String getId();
+ method @Nullable public android.content.Intent getIntent();
+ method @Nullable public android.content.Intent[] getIntents();
method public long getLastChangedTimestamp();
- method public java.lang.CharSequence getLongLabel();
- method public java.lang.String getPackage();
+ method @Nullable public CharSequence getLongLabel();
+ method @NonNull public String getPackage();
method public int getRank();
- method public java.lang.CharSequence getShortLabel();
+ method @Nullable public CharSequence getShortLabel();
method public android.os.UserHandle getUserHandle();
method public boolean hasKeyFieldsOnly();
method public boolean isDeclaredInManifest();
@@ -11908,54 +11943,57 @@
field public static final int DISABLED_REASON_SIGNATURE_MISMATCH = 102; // 0x66
field public static final int DISABLED_REASON_UNKNOWN = 3; // 0x3
field public static final int DISABLED_REASON_VERSION_LOWER = 100; // 0x64
- field public static final java.lang.String SHORTCUT_CATEGORY_CONVERSATION = "android.shortcut.conversation";
+ field public static final String SHORTCUT_CATEGORY_CONVERSATION = "android.shortcut.conversation";
}
public static class ShortcutInfo.Builder {
- ctor public ShortcutInfo.Builder(android.content.Context, java.lang.String);
- method public android.content.pm.ShortcutInfo build();
- method public android.content.pm.ShortcutInfo.Builder setActivity(android.content.ComponentName);
- method public android.content.pm.ShortcutInfo.Builder setCategories(java.util.Set<java.lang.String>);
- method public android.content.pm.ShortcutInfo.Builder setDisabledMessage(java.lang.CharSequence);
- method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
- method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
- method public android.content.pm.ShortcutInfo.Builder setIntent(android.content.Intent);
- method public android.content.pm.ShortcutInfo.Builder setIntents(android.content.Intent[]);
- method public android.content.pm.ShortcutInfo.Builder setLongLabel(java.lang.CharSequence);
- method public android.content.pm.ShortcutInfo.Builder setRank(int);
- method public android.content.pm.ShortcutInfo.Builder setShortLabel(java.lang.CharSequence);
+ ctor public ShortcutInfo.Builder(android.content.Context, String);
+ method @NonNull public android.content.pm.ShortcutInfo build();
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setActivity(@NonNull android.content.ComponentName);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setCategories(java.util.Set<java.lang.String>);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setDisabledMessage(@NonNull CharSequence);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setExtras(@NonNull android.os.PersistableBundle);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setIntent(@NonNull android.content.Intent);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setIntents(@NonNull android.content.Intent[]);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setLongLabel(@NonNull CharSequence);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setLongLived();
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setPerson(@NonNull android.app.Person);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setPersons(@NonNull android.app.Person[]);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setRank(int);
+ method @NonNull public android.content.pm.ShortcutInfo.Builder setShortLabel(@NonNull CharSequence);
}
public class ShortcutManager {
- method public boolean addDynamicShortcuts(java.util.List<android.content.pm.ShortcutInfo>);
- method public android.content.Intent createShortcutResultIntent(android.content.pm.ShortcutInfo);
- method public void disableShortcuts(java.util.List<java.lang.String>);
- method public void disableShortcuts(java.util.List<java.lang.String>, java.lang.CharSequence);
- method public void enableShortcuts(java.util.List<java.lang.String>);
- method public java.util.List<android.content.pm.ShortcutInfo> getDynamicShortcuts();
+ method public boolean addDynamicShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
+ method public android.content.Intent createShortcutResultIntent(@NonNull android.content.pm.ShortcutInfo);
+ method public void disableShortcuts(@NonNull java.util.List<java.lang.String>);
+ method public void disableShortcuts(@NonNull java.util.List<java.lang.String>, CharSequence);
+ method public void enableShortcuts(@NonNull java.util.List<java.lang.String>);
+ method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getDynamicShortcuts();
method public int getIconMaxHeight();
method public int getIconMaxWidth();
- method public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
+ method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
method public int getMaxShortcutCountPerActivity();
- method public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
+ method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
method public boolean isRateLimitingActive();
method public boolean isRequestPinShortcutSupported();
method public void removeAllDynamicShortcuts();
- method public void removeDynamicShortcuts(java.util.List<java.lang.String>);
- method public void reportShortcutUsed(java.lang.String);
- method public boolean requestPinShortcut(android.content.pm.ShortcutInfo, android.content.IntentSender);
- method public boolean setDynamicShortcuts(java.util.List<android.content.pm.ShortcutInfo>);
- method public boolean updateShortcuts(java.util.List<android.content.pm.ShortcutInfo>);
+ method public void removeDynamicShortcuts(@NonNull java.util.List<java.lang.String>);
+ method public void reportShortcutUsed(String);
+ method public boolean requestPinShortcut(@NonNull android.content.pm.ShortcutInfo, @Nullable android.content.IntentSender);
+ method public boolean setDynamicShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
+ method public boolean updateShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
}
public class Signature implements android.os.Parcelable {
ctor public Signature(byte[]);
- ctor public Signature(java.lang.String);
+ ctor public Signature(String);
method public int describeContents();
method public byte[] toByteArray();
method public char[] toChars();
method public char[] toChars(char[], int[]);
- method public java.lang.String toCharsString();
+ method public String toCharsString();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.Signature> CREATOR;
}
@@ -11980,7 +12018,7 @@
method public int getDataSharedWithThirdParty();
method public int getDataUsedForMonetization();
method public int getFlags();
- method public java.lang.String getPermission();
+ method public String getPermission();
field public static final android.os.Parcelable.Creator<android.content.pm.UsesPermissionInfo> CREATOR;
field public static final int FLAG_REQUESTED_PERMISSION_GRANTED = 2; // 0x2
field public static final int RETENTION_NOT_RETAINED = 1; // 0x1
@@ -11995,12 +12033,12 @@
}
public final class VersionedPackage implements android.os.Parcelable {
- ctor public VersionedPackage(java.lang.String, int);
- ctor public VersionedPackage(java.lang.String, long);
+ ctor public VersionedPackage(@NonNull String, int);
+ ctor public VersionedPackage(@NonNull String, long);
method public int describeContents();
method public long getLongVersionCode();
- method public java.lang.String getPackageName();
- method public deprecated int getVersionCode();
+ method @NonNull public String getPackageName();
+ method @Deprecated public int getVersionCode();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.VersionedPackage> CREATOR;
}
@@ -12029,7 +12067,6 @@
public static class AssetFileDescriptor.AutoCloseInputStream extends android.os.ParcelFileDescriptor.AutoCloseInputStream {
ctor public AssetFileDescriptor.AutoCloseInputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException;
- method public void mark(int);
}
public static class AssetFileDescriptor.AutoCloseOutputStream extends android.os.ParcelFileDescriptor.AutoCloseOutputStream {
@@ -12038,15 +12075,15 @@
public final class AssetManager implements java.lang.AutoCloseable {
method public void close();
- method public java.lang.String[] getLocales();
- method public java.lang.String[] list(java.lang.String) throws java.io.IOException;
- method public java.io.InputStream open(java.lang.String) throws java.io.IOException;
- method public java.io.InputStream open(java.lang.String, int) throws java.io.IOException;
- method public android.content.res.AssetFileDescriptor openFd(java.lang.String) throws java.io.IOException;
- method public android.content.res.AssetFileDescriptor openNonAssetFd(java.lang.String) throws java.io.IOException;
- method public android.content.res.AssetFileDescriptor openNonAssetFd(int, java.lang.String) throws java.io.IOException;
- method public android.content.res.XmlResourceParser openXmlResourceParser(java.lang.String) throws java.io.IOException;
- method public android.content.res.XmlResourceParser openXmlResourceParser(int, java.lang.String) throws java.io.IOException;
+ method public String[] getLocales();
+ method @Nullable public String[] list(@NonNull String) throws java.io.IOException;
+ method @NonNull public java.io.InputStream open(@NonNull String) throws java.io.IOException;
+ method @NonNull public java.io.InputStream open(@NonNull String, int) throws java.io.IOException;
+ method @NonNull public android.content.res.AssetFileDescriptor openFd(@NonNull String) throws java.io.IOException;
+ method @NonNull public android.content.res.AssetFileDescriptor openNonAssetFd(@NonNull String) throws java.io.IOException;
+ method @NonNull public android.content.res.AssetFileDescriptor openNonAssetFd(int, @NonNull String) throws java.io.IOException;
+ method @NonNull public android.content.res.XmlResourceParser openXmlResourceParser(@NonNull String) throws java.io.IOException;
+ method @NonNull public android.content.res.XmlResourceParser openXmlResourceParser(int, @NonNull String) throws java.io.IOException;
field public static final int ACCESS_BUFFER = 3; // 0x3
field public static final int ACCESS_RANDOM = 1; // 0x1
field public static final int ACCESS_STREAMING = 2; // 0x2
@@ -12054,28 +12091,26 @@
}
public final class AssetManager.AssetInputStream extends java.io.InputStream {
- method public void mark(int);
method public int read() throws java.io.IOException;
- method public void reset() throws java.io.IOException;
}
public class ColorStateList implements android.os.Parcelable {
- ctor public ColorStateList(int[][], int[]);
- method public static deprecated android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ ctor public ColorStateList(int[][], @ColorInt int[]);
+ method @Deprecated @NonNull public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method @NonNull public static android.content.res.ColorStateList createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
method public int describeContents();
method public int getChangingConfigurations();
- method public int getColorForState(int[], int);
- method public int getDefaultColor();
+ method public int getColorForState(@Nullable int[], int);
+ method @ColorInt public int getDefaultColor();
method public boolean isOpaque();
method public boolean isStateful();
- method public static android.content.res.ColorStateList valueOf(int);
- method public android.content.res.ColorStateList withAlpha(int);
+ method @NonNull public static android.content.res.ColorStateList valueOf(@ColorInt int);
+ method @NonNull public android.content.res.ColorStateList withAlpha(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.res.ColorStateList> CREATOR;
}
- public final class Configuration implements java.lang.Comparable android.os.Parcelable {
+ public final class Configuration implements java.lang.Comparable<android.content.res.Configuration> android.os.Parcelable {
ctor public Configuration();
ctor public Configuration(android.content.res.Configuration);
method public int compareTo(android.content.res.Configuration);
@@ -12083,7 +12118,7 @@
method public int diff(android.content.res.Configuration);
method public boolean equals(android.content.res.Configuration);
method public int getLayoutDirection();
- method public android.os.LocaleList getLocales();
+ method @NonNull public android.os.LocaleList getLocales();
method public boolean isLayoutSizeAtLeast(int);
method public boolean isScreenHdr();
method public boolean isScreenRound();
@@ -12091,11 +12126,11 @@
method public static boolean needNewResources(int, int);
method public void readFromParcel(android.os.Parcel);
method public void setLayoutDirection(java.util.Locale);
- method public void setLocale(java.util.Locale);
- method public void setLocales(android.os.LocaleList);
+ method public void setLocale(@Nullable java.util.Locale);
+ method public void setLocales(@Nullable android.os.LocaleList);
method public void setTo(android.content.res.Configuration);
method public void setToDefaults();
- method public int updateFrom(android.content.res.Configuration);
+ method public int updateFrom(@NonNull android.content.res.Configuration);
method public void writeToParcel(android.os.Parcel, int);
field public static final int COLOR_MODE_HDR_MASK = 12; // 0xc
field public static final int COLOR_MODE_HDR_NO = 4; // 0x4
@@ -12130,7 +12165,7 @@
field public static final int NAVIGATION_WHEEL = 4; // 0x4
field public static final int ORIENTATION_LANDSCAPE = 2; // 0x2
field public static final int ORIENTATION_PORTRAIT = 1; // 0x1
- field public static final deprecated int ORIENTATION_SQUARE = 3; // 0x3
+ field @Deprecated public static final int ORIENTATION_SQUARE = 3; // 0x3
field public static final int ORIENTATION_UNDEFINED = 0; // 0x0
field public static final int SCREENLAYOUT_LAYOUTDIR_LTR = 64; // 0x40
field public static final int SCREENLAYOUT_LAYOUTDIR_MASK = 192; // 0xc0
@@ -12157,7 +12192,7 @@
field public static final int SMALLEST_SCREEN_WIDTH_DP_UNDEFINED = 0; // 0x0
field public static final int TOUCHSCREEN_FINGER = 3; // 0x3
field public static final int TOUCHSCREEN_NOTOUCH = 1; // 0x1
- field public static final deprecated int TOUCHSCREEN_STYLUS = 2; // 0x2
+ field @Deprecated public static final int TOUCHSCREEN_STYLUS = 2; // 0x2
field public static final int TOUCHSCREEN_UNDEFINED = 0; // 0x0
field public static final int UI_MODE_NIGHT_MASK = 48; // 0x30
field public static final int UI_MODE_NIGHT_NO = 16; // 0x10
@@ -12178,7 +12213,7 @@
field public int hardKeyboardHidden;
field public int keyboard;
field public int keyboardHidden;
- field public deprecated java.util.Locale locale;
+ field @Deprecated public java.util.Locale locale;
field public int mcc;
field public int mnc;
field public int navigation;
@@ -12197,128 +12232,130 @@
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.res.ObbInfo> CREATOR;
field public static final int OBB_OVERLAY = 1; // 0x1
- field public java.lang.String filename;
+ field public String filename;
field public int flags;
- field public java.lang.String packageName;
+ field public String packageName;
field public int version;
}
public class ObbScanner {
- method public static android.content.res.ObbInfo getObbInfo(java.lang.String) throws java.io.IOException;
+ method public static android.content.res.ObbInfo getObbInfo(String) throws java.io.IOException;
}
public class Resources {
- ctor public deprecated Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
+ ctor @Deprecated public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
method public final void finishPreloading();
method public final void flushLayoutCache();
- method public android.content.res.XmlResourceParser getAnimation(int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public android.content.res.XmlResourceParser getAnimation(@AnimatorRes @AnimRes int) throws android.content.res.Resources.NotFoundException;
method public final android.content.res.AssetManager getAssets();
- method public boolean getBoolean(int) throws android.content.res.Resources.NotFoundException;
- method public deprecated int getColor(int) throws android.content.res.Resources.NotFoundException;
- method public int getColor(int, android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
- method public deprecated android.content.res.ColorStateList getColorStateList(int) throws android.content.res.Resources.NotFoundException;
- method public android.content.res.ColorStateList getColorStateList(int, android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
+ method public boolean getBoolean(@BoolRes int) throws android.content.res.Resources.NotFoundException;
+ method @Deprecated @ColorInt public int getColor(@ColorRes int) throws android.content.res.Resources.NotFoundException;
+ method @ColorInt public int getColor(@ColorRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
+ method @Deprecated @NonNull public android.content.res.ColorStateList getColorStateList(@ColorRes int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public android.content.res.ColorStateList getColorStateList(@ColorRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
method public android.content.res.Configuration getConfiguration();
- method public float getDimension(int) throws android.content.res.Resources.NotFoundException;
- method public int getDimensionPixelOffset(int) throws android.content.res.Resources.NotFoundException;
- method public int getDimensionPixelSize(int) throws android.content.res.Resources.NotFoundException;
+ method public float getDimension(@DimenRes int) throws android.content.res.Resources.NotFoundException;
+ method public int getDimensionPixelOffset(@DimenRes int) throws android.content.res.Resources.NotFoundException;
+ method public int getDimensionPixelSize(@DimenRes int) throws android.content.res.Resources.NotFoundException;
method public android.util.DisplayMetrics getDisplayMetrics();
- method public deprecated android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException;
- method public android.graphics.drawable.Drawable getDrawable(int, android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
- method public deprecated android.graphics.drawable.Drawable getDrawableForDensity(int, int) throws android.content.res.Resources.NotFoundException;
- method public android.graphics.drawable.Drawable getDrawableForDensity(int, int, android.content.res.Resources.Theme);
- method public float getFloat(int);
- method public android.graphics.Typeface getFont(int) throws android.content.res.Resources.NotFoundException;
- method public float getFraction(int, int, int);
- method public int getIdentifier(java.lang.String, java.lang.String, java.lang.String);
- method public int[] getIntArray(int) throws android.content.res.Resources.NotFoundException;
- method public int getInteger(int) throws android.content.res.Resources.NotFoundException;
- method public android.content.res.XmlResourceParser getLayout(int) throws android.content.res.Resources.NotFoundException;
- method public deprecated android.graphics.Movie getMovie(int) throws android.content.res.Resources.NotFoundException;
- method public java.lang.String getQuantityString(int, int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
- method public java.lang.String getQuantityString(int, int) throws android.content.res.Resources.NotFoundException;
- method public java.lang.CharSequence getQuantityText(int, int) throws android.content.res.Resources.NotFoundException;
- method public java.lang.String getResourceEntryName(int) throws android.content.res.Resources.NotFoundException;
- method public java.lang.String getResourceName(int) throws android.content.res.Resources.NotFoundException;
- method public java.lang.String getResourcePackageName(int) throws android.content.res.Resources.NotFoundException;
- method public java.lang.String getResourceTypeName(int) throws android.content.res.Resources.NotFoundException;
- method public java.lang.String getString(int) throws android.content.res.Resources.NotFoundException;
- method public java.lang.String getString(int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
- method public java.lang.String[] getStringArray(int) throws android.content.res.Resources.NotFoundException;
+ method @Deprecated public android.graphics.drawable.Drawable getDrawable(@DrawableRes int) throws android.content.res.Resources.NotFoundException;
+ method public android.graphics.drawable.Drawable getDrawable(@DrawableRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
+ method @Deprecated @Nullable public android.graphics.drawable.Drawable getDrawableForDensity(@DrawableRes int, int) throws android.content.res.Resources.NotFoundException;
+ method @Nullable public android.graphics.drawable.Drawable getDrawableForDensity(@DrawableRes int, int, @Nullable android.content.res.Resources.Theme);
+ method public float getFloat(@DimenRes int);
+ method @NonNull public android.graphics.Typeface getFont(@FontRes int) throws android.content.res.Resources.NotFoundException;
+ method public float getFraction(@FractionRes int, int, int);
+ method public int getIdentifier(String, String, String);
+ method @NonNull public int[] getIntArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
+ method public int getInteger(@IntegerRes int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public android.content.res.XmlResourceParser getLayout(@LayoutRes int) throws android.content.res.Resources.NotFoundException;
+ method @Deprecated public android.graphics.Movie getMovie(@RawRes int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public String getQuantityString(@PluralsRes int, int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public String getQuantityString(@PluralsRes int, int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public CharSequence getQuantityText(@PluralsRes int, int) throws android.content.res.Resources.NotFoundException;
+ method public String getResourceEntryName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
+ method public String getResourceName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
+ method public String getResourcePackageName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
+ method public String getResourceTypeName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public String getString(@StringRes int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public String getString(@StringRes int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public String[] getStringArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
method public static android.content.res.Resources getSystem();
- method public java.lang.CharSequence getText(int) throws android.content.res.Resources.NotFoundException;
- method public java.lang.CharSequence getText(int, java.lang.CharSequence);
- method public java.lang.CharSequence[] getTextArray(int) throws android.content.res.Resources.NotFoundException;
- method public void getValue(int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
- method public void getValue(java.lang.String, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
- method public void getValueForDensity(int, int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
- method public android.content.res.XmlResourceParser getXml(int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public CharSequence getText(@StringRes int) throws android.content.res.Resources.NotFoundException;
+ method public CharSequence getText(@StringRes int, CharSequence);
+ method @NonNull public CharSequence[] getTextArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
+ method public void getValue(@AnyRes int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
+ method public void getValue(String, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
+ method public void getValueForDensity(@AnyRes int, int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public android.content.res.XmlResourceParser getXml(@XmlRes int) throws android.content.res.Resources.NotFoundException;
method public final android.content.res.Resources.Theme newTheme();
- method public android.content.res.TypedArray obtainAttributes(android.util.AttributeSet, int[]);
- method public android.content.res.TypedArray obtainTypedArray(int) throws android.content.res.Resources.NotFoundException;
- method public java.io.InputStream openRawResource(int) throws android.content.res.Resources.NotFoundException;
- method public java.io.InputStream openRawResource(int, android.util.TypedValue) throws android.content.res.Resources.NotFoundException;
- method public android.content.res.AssetFileDescriptor openRawResourceFd(int) throws android.content.res.Resources.NotFoundException;
- method public void parseBundleExtra(java.lang.String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
+ method public android.content.res.TypedArray obtainAttributes(android.util.AttributeSet, @StyleableRes int[]);
+ method @NonNull public android.content.res.TypedArray obtainTypedArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public java.io.InputStream openRawResource(@RawRes int) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public java.io.InputStream openRawResource(@RawRes int, android.util.TypedValue) throws android.content.res.Resources.NotFoundException;
+ method public android.content.res.AssetFileDescriptor openRawResourceFd(@RawRes int) throws android.content.res.Resources.NotFoundException;
+ method public void parseBundleExtra(String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public deprecated void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+ method @Deprecated public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+ field @AnyRes public static final int ID_NULL = 0; // 0x0
}
public static class Resources.NotFoundException extends java.lang.RuntimeException {
ctor public Resources.NotFoundException();
- ctor public Resources.NotFoundException(java.lang.String);
- ctor public Resources.NotFoundException(java.lang.String, java.lang.Exception);
+ ctor public Resources.NotFoundException(String);
+ ctor public Resources.NotFoundException(String, Exception);
}
public final class Resources.Theme {
method public void applyStyle(int, boolean);
- method public void dump(int, java.lang.String, java.lang.String);
+ method public void dump(int, String, String);
method public int getChangingConfigurations();
- method public android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException;
+ method public android.graphics.drawable.Drawable getDrawable(@DrawableRes int) throws android.content.res.Resources.NotFoundException;
method public android.content.res.Resources getResources();
- method public android.content.res.TypedArray obtainStyledAttributes(int[]);
- method public android.content.res.TypedArray obtainStyledAttributes(int, int[]) throws android.content.res.Resources.NotFoundException;
- method public android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet, int[], int, int);
+ method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@NonNull @StyleableRes int[]);
+ method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@StyleRes int, @NonNull @StyleableRes int[]) throws android.content.res.Resources.NotFoundException;
+ method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[], @AttrRes int, @StyleRes int);
method public boolean resolveAttribute(int, android.util.TypedValue, boolean);
method public void setTo(android.content.res.Resources.Theme);
}
public class TypedArray {
- method public boolean getBoolean(int, boolean);
+ method public boolean getBoolean(@StyleableRes int, boolean);
method public int getChangingConfigurations();
- method public int getColor(int, int);
- method public android.content.res.ColorStateList getColorStateList(int);
- method public float getDimension(int, float);
- method public int getDimensionPixelOffset(int, int);
- method public int getDimensionPixelSize(int, int);
- method public android.graphics.drawable.Drawable getDrawable(int);
- method public float getFloat(int, float);
- method public android.graphics.Typeface getFont(int);
- method public float getFraction(int, int, int, float);
+ method @ColorInt public int getColor(@StyleableRes int, @ColorInt int);
+ method @Nullable public android.content.res.ColorStateList getColorStateList(@StyleableRes int);
+ method public float getDimension(@StyleableRes int, float);
+ method public int getDimensionPixelOffset(@StyleableRes int, int);
+ method public int getDimensionPixelSize(@StyleableRes int, int);
+ method @Nullable public android.graphics.drawable.Drawable getDrawable(@StyleableRes int);
+ method public float getFloat(@StyleableRes int, float);
+ method @Nullable public android.graphics.Typeface getFont(@StyleableRes int);
+ method public float getFraction(@StyleableRes int, int, int, float);
method public int getIndex(int);
method public int getIndexCount();
- method public int getInt(int, int);
- method public int getInteger(int, int);
- method public int getLayoutDimension(int, java.lang.String);
- method public int getLayoutDimension(int, int);
- method public java.lang.String getNonResourceString(int);
- method public java.lang.String getPositionDescription();
- method public int getResourceId(int, int);
+ method public int getInt(@StyleableRes int, int);
+ method public int getInteger(@StyleableRes int, int);
+ method public int getLayoutDimension(@StyleableRes int, String);
+ method public int getLayoutDimension(@StyleableRes int, int);
+ method public String getNonResourceString(@StyleableRes int);
+ method public String getPositionDescription();
+ method @AnyRes public int getResourceId(@StyleableRes int, int);
method public android.content.res.Resources getResources();
- method public java.lang.String getString(int);
- method public java.lang.CharSequence getText(int);
- method public java.lang.CharSequence[] getTextArray(int);
- method public int getType(int);
- method public boolean getValue(int, android.util.TypedValue);
- method public boolean hasValue(int);
- method public boolean hasValueOrEmpty(int);
+ method @StyleRes public int getSourceStyleResourceId(@StyleableRes int, @StyleRes int);
+ method @Nullable public String getString(@StyleableRes int);
+ method public CharSequence getText(@StyleableRes int);
+ method public CharSequence[] getTextArray(@StyleableRes int);
+ method public int getType(@StyleableRes int);
+ method public boolean getValue(@StyleableRes int, android.util.TypedValue);
+ method public boolean hasValue(@StyleableRes int);
+ method public boolean hasValueOrEmpty(@StyleableRes int);
method public int length();
- method public android.util.TypedValue peekValue(int);
+ method public android.util.TypedValue peekValue(@StyleableRes int);
method public void recycle();
}
- public abstract interface XmlResourceParser implements android.util.AttributeSet java.lang.AutoCloseable org.xmlpull.v1.XmlPullParser {
- method public abstract void close();
+ public interface XmlResourceParser extends org.xmlpull.v1.XmlPullParser android.util.AttributeSet java.lang.AutoCloseable {
+ method public void close();
}
}
@@ -12335,20 +12372,20 @@
method protected void finalize();
method public byte[] getBlob(int);
method public int getColumnCount();
- method public int getColumnIndex(java.lang.String);
- method public int getColumnIndexOrThrow(java.lang.String);
- method public java.lang.String getColumnName(int);
+ method public int getColumnIndex(String);
+ method public int getColumnIndexOrThrow(String);
+ method public String getColumnName(int);
method public android.os.Bundle getExtras();
method public android.net.Uri getNotificationUri();
method public final int getPosition();
method public int getType(int);
- method protected deprecated java.lang.Object getUpdatedField(int);
+ method @Deprecated protected Object getUpdatedField(int);
method public boolean getWantsAllOnMoveCalls();
method public android.database.CursorWindow getWindow();
method public final boolean isAfterLast();
method public final boolean isBeforeFirst();
method public boolean isClosed();
- method protected deprecated boolean isFieldUpdated(int);
+ method @Deprecated protected boolean isFieldUpdated(int);
method public final boolean isFirst();
method public final boolean isLast();
method public final boolean move(int);
@@ -12367,9 +12404,9 @@
method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
method public void unregisterContentObserver(android.database.ContentObserver);
method public void unregisterDataSetObserver(android.database.DataSetObserver);
- field protected deprecated boolean mClosed;
- field protected deprecated android.content.ContentResolver mContentResolver;
- field protected deprecated int mPos;
+ field @Deprecated protected boolean mClosed;
+ field @Deprecated protected android.content.ContentResolver mContentResolver;
+ field @Deprecated protected int mPos;
}
protected static class AbstractCursor.SelfContentObserver extends android.database.ContentObserver {
@@ -12383,13 +12420,13 @@
method public int getInt(int);
method public long getLong(int);
method public short getShort(int);
- method public java.lang.String getString(int);
+ method public String getString(int);
method public boolean hasWindow();
- method public deprecated boolean isBlob(int);
- method public deprecated boolean isFloat(int);
- method public deprecated boolean isLong(int);
+ method @Deprecated public boolean isBlob(int);
+ method @Deprecated public boolean isFloat(int);
+ method @Deprecated public boolean isLong(int);
method public boolean isNull(int);
- method public deprecated boolean isString(int);
+ method @Deprecated public boolean isString(int);
method public void setWindow(android.database.CursorWindow);
field protected android.database.CursorWindow mWindow;
}
@@ -12401,27 +12438,27 @@
field public int sizeCopied;
}
- public class ContentObservable extends android.database.Observable {
+ public class ContentObservable extends android.database.Observable<android.database.ContentObserver> {
ctor public ContentObservable();
- method public deprecated void dispatchChange(boolean);
+ method @Deprecated public void dispatchChange(boolean);
method public void dispatchChange(boolean, android.net.Uri);
- method public deprecated void notifyChange(boolean);
+ method @Deprecated public void notifyChange(boolean);
method public void registerObserver(android.database.ContentObserver);
}
public abstract class ContentObserver {
ctor public ContentObserver(android.os.Handler);
method public boolean deliverSelfNotifications();
- method public final deprecated void dispatchChange(boolean);
+ method @Deprecated public final void dispatchChange(boolean);
method public final void dispatchChange(boolean, android.net.Uri);
method public void onChange(boolean);
method public void onChange(boolean, android.net.Uri);
}
- public abstract interface CrossProcessCursor implements android.database.Cursor {
- method public abstract void fillWindow(int, android.database.CursorWindow);
- method public abstract android.database.CursorWindow getWindow();
- method public abstract boolean onMove(int, int);
+ public interface CrossProcessCursor extends android.database.Cursor {
+ method public void fillWindow(int, android.database.CursorWindow);
+ method public android.database.CursorWindow getWindow();
+ method public boolean onMove(int, int);
}
public class CrossProcessCursorWrapper extends android.database.CursorWrapper implements android.database.CrossProcessCursor {
@@ -12431,48 +12468,48 @@
method public boolean onMove(int, int);
}
- public abstract interface Cursor implements java.io.Closeable {
- method public abstract void close();
- method public abstract void copyStringToBuffer(int, android.database.CharArrayBuffer);
- method public abstract deprecated void deactivate();
- method public abstract byte[] getBlob(int);
- method public abstract int getColumnCount();
- method public abstract int getColumnIndex(java.lang.String);
- method public abstract int getColumnIndexOrThrow(java.lang.String) throws java.lang.IllegalArgumentException;
- method public abstract java.lang.String getColumnName(int);
- method public abstract java.lang.String[] getColumnNames();
- method public abstract int getCount();
- method public abstract double getDouble(int);
- method public abstract android.os.Bundle getExtras();
- method public abstract float getFloat(int);
- method public abstract int getInt(int);
- method public abstract long getLong(int);
- method public abstract android.net.Uri getNotificationUri();
- method public abstract int getPosition();
- method public abstract short getShort(int);
- method public abstract java.lang.String getString(int);
- method public abstract int getType(int);
- method public abstract boolean getWantsAllOnMoveCalls();
- method public abstract boolean isAfterLast();
- method public abstract boolean isBeforeFirst();
- method public abstract boolean isClosed();
- method public abstract boolean isFirst();
- method public abstract boolean isLast();
- method public abstract boolean isNull(int);
- method public abstract boolean move(int);
- method public abstract boolean moveToFirst();
- method public abstract boolean moveToLast();
- method public abstract boolean moveToNext();
- method public abstract boolean moveToPosition(int);
- method public abstract boolean moveToPrevious();
- method public abstract void registerContentObserver(android.database.ContentObserver);
- method public abstract void registerDataSetObserver(android.database.DataSetObserver);
- method public abstract deprecated boolean requery();
- method public abstract android.os.Bundle respond(android.os.Bundle);
- method public abstract void setExtras(android.os.Bundle);
- method public abstract void setNotificationUri(android.content.ContentResolver, android.net.Uri);
- method public abstract void unregisterContentObserver(android.database.ContentObserver);
- method public abstract void unregisterDataSetObserver(android.database.DataSetObserver);
+ public interface Cursor extends java.io.Closeable {
+ method public void close();
+ method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
+ method @Deprecated public void deactivate();
+ method public byte[] getBlob(int);
+ method public int getColumnCount();
+ method public int getColumnIndex(String);
+ method public int getColumnIndexOrThrow(String) throws java.lang.IllegalArgumentException;
+ method public String getColumnName(int);
+ method public String[] getColumnNames();
+ method public int getCount();
+ method public double getDouble(int);
+ method public android.os.Bundle getExtras();
+ method public float getFloat(int);
+ method public int getInt(int);
+ method public long getLong(int);
+ method public android.net.Uri getNotificationUri();
+ method public int getPosition();
+ method public short getShort(int);
+ method public String getString(int);
+ method public int getType(int);
+ method public boolean getWantsAllOnMoveCalls();
+ method public boolean isAfterLast();
+ method public boolean isBeforeFirst();
+ method public boolean isClosed();
+ method public boolean isFirst();
+ method public boolean isLast();
+ method public boolean isNull(int);
+ method public boolean move(int);
+ method public boolean moveToFirst();
+ method public boolean moveToLast();
+ method public boolean moveToNext();
+ method public boolean moveToPosition(int);
+ method public boolean moveToPrevious();
+ method public void registerContentObserver(android.database.ContentObserver);
+ method public void registerDataSetObserver(android.database.DataSetObserver);
+ method @Deprecated public boolean requery();
+ method public android.os.Bundle respond(android.os.Bundle);
+ method public void setExtras(android.os.Bundle);
+ method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
+ method public void unregisterContentObserver(android.database.ContentObserver);
+ method public void unregisterDataSetObserver(android.database.DataSetObserver);
field public static final int FIELD_TYPE_BLOB = 4; // 0x4
field public static final int FIELD_TYPE_FLOAT = 2; // 0x2
field public static final int FIELD_TYPE_INTEGER = 1; // 0x1
@@ -12482,28 +12519,26 @@
public class CursorIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
ctor public CursorIndexOutOfBoundsException(int, int);
- ctor public CursorIndexOutOfBoundsException(java.lang.String);
+ ctor public CursorIndexOutOfBoundsException(String);
}
- public final class CursorJoiner implements java.lang.Iterable java.util.Iterator {
- ctor public CursorJoiner(android.database.Cursor, java.lang.String[], android.database.Cursor, java.lang.String[]);
+ public final class CursorJoiner implements java.lang.Iterable<android.database.CursorJoiner.Result> java.util.Iterator<android.database.CursorJoiner.Result> {
+ ctor public CursorJoiner(android.database.Cursor, String[], android.database.Cursor, String[]);
method public boolean hasNext();
method public java.util.Iterator<android.database.CursorJoiner.Result> iterator();
method public android.database.CursorJoiner.Result next();
}
- public static final class CursorJoiner.Result extends java.lang.Enum {
- method public static android.database.CursorJoiner.Result valueOf(java.lang.String);
- method public static final android.database.CursorJoiner.Result[] values();
+ public enum CursorJoiner.Result {
enum_constant public static final android.database.CursorJoiner.Result BOTH;
enum_constant public static final android.database.CursorJoiner.Result LEFT;
enum_constant public static final android.database.CursorJoiner.Result RIGHT;
}
public class CursorWindow extends android.database.sqlite.SQLiteClosable implements android.os.Parcelable {
- ctor public CursorWindow(java.lang.String);
- ctor public CursorWindow(java.lang.String, long);
- ctor public deprecated CursorWindow(boolean);
+ ctor public CursorWindow(String);
+ ctor public CursorWindow(String, long);
+ ctor @Deprecated public CursorWindow(boolean);
method public boolean allocRow();
method public void clear();
method public void copyStringToBuffer(int, int, android.database.CharArrayBuffer);
@@ -12517,20 +12552,20 @@
method public int getNumRows();
method public short getShort(int, int);
method public int getStartPosition();
- method public java.lang.String getString(int, int);
+ method public String getString(int, int);
method public int getType(int, int);
- method public deprecated boolean isBlob(int, int);
- method public deprecated boolean isFloat(int, int);
- method public deprecated boolean isLong(int, int);
- method public deprecated boolean isNull(int, int);
- method public deprecated boolean isString(int, int);
+ method @Deprecated public boolean isBlob(int, int);
+ method @Deprecated public boolean isFloat(int, int);
+ method @Deprecated public boolean isLong(int, int);
+ method @Deprecated public boolean isNull(int, int);
+ method @Deprecated public boolean isString(int, int);
method public static android.database.CursorWindow newFromParcel(android.os.Parcel);
method protected void onAllReferencesReleased();
method public boolean putBlob(byte[], int, int);
method public boolean putDouble(double, int, int);
method public boolean putLong(long, int, int);
method public boolean putNull(int, int);
- method public boolean putString(java.lang.String, int, int);
+ method public boolean putString(String, int, int);
method public boolean setNumColumns(int);
method public void setStartPosition(int);
method public void writeToParcel(android.os.Parcel, int);
@@ -12541,13 +12576,13 @@
ctor public CursorWrapper(android.database.Cursor);
method public void close();
method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
- method public deprecated void deactivate();
+ method @Deprecated public void deactivate();
method public byte[] getBlob(int);
method public int getColumnCount();
- method public int getColumnIndex(java.lang.String);
- method public int getColumnIndexOrThrow(java.lang.String) throws java.lang.IllegalArgumentException;
- method public java.lang.String getColumnName(int);
- method public java.lang.String[] getColumnNames();
+ method public int getColumnIndex(String);
+ method public int getColumnIndexOrThrow(String) throws java.lang.IllegalArgumentException;
+ method public String getColumnName(int);
+ method public String[] getColumnNames();
method public int getCount();
method public double getDouble(int);
method public android.os.Bundle getExtras();
@@ -12557,7 +12592,7 @@
method public android.net.Uri getNotificationUri();
method public int getPosition();
method public short getShort(int);
- method public java.lang.String getString(int);
+ method public String getString(int);
method public int getType(int);
method public boolean getWantsAllOnMoveCalls();
method public android.database.Cursor getWrappedCursor();
@@ -12575,7 +12610,7 @@
method public boolean moveToPrevious();
method public void registerContentObserver(android.database.ContentObserver);
method public void registerDataSetObserver(android.database.DataSetObserver);
- method public deprecated boolean requery();
+ method @Deprecated public boolean requery();
method public android.os.Bundle respond(android.os.Bundle);
method public void setExtras(android.os.Bundle);
method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
@@ -12583,7 +12618,7 @@
method public void unregisterDataSetObserver(android.database.DataSetObserver);
}
- public class DataSetObservable extends android.database.Observable {
+ public class DataSetObservable extends android.database.Observable<android.database.DataSetObserver> {
ctor public DataSetObservable();
method public void notifyChanged();
method public void notifyInvalidated();
@@ -12595,59 +12630,59 @@
method public void onInvalidated();
}
- public abstract interface DatabaseErrorHandler {
- method public abstract void onCorruption(android.database.sqlite.SQLiteDatabase);
+ public interface DatabaseErrorHandler {
+ method public void onCorruption(android.database.sqlite.SQLiteDatabase);
}
public class DatabaseUtils {
ctor public DatabaseUtils();
- method public static void appendEscapedSQLString(java.lang.StringBuilder, java.lang.String);
- method public static java.lang.String[] appendSelectionArgs(java.lang.String[], java.lang.String[]);
- method public static final void appendValueToSql(java.lang.StringBuilder, java.lang.Object);
- method public static void bindObjectToProgram(android.database.sqlite.SQLiteProgram, int, java.lang.Object);
- method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteDatabase, java.lang.String, java.lang.String[]);
- method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteStatement, java.lang.String[]);
- method public static java.lang.String concatenateWhere(java.lang.String, java.lang.String);
- method public static void createDbFromSqlStatements(android.content.Context, java.lang.String, int, java.lang.String);
- method public static void cursorDoubleToContentValues(android.database.Cursor, java.lang.String, android.content.ContentValues, java.lang.String);
- method public static void cursorDoubleToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, java.lang.String);
- method public static void cursorDoubleToCursorValues(android.database.Cursor, java.lang.String, android.content.ContentValues);
- method public static void cursorFloatToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, java.lang.String);
- method public static void cursorIntToContentValues(android.database.Cursor, java.lang.String, android.content.ContentValues);
- method public static void cursorIntToContentValues(android.database.Cursor, java.lang.String, android.content.ContentValues, java.lang.String);
- method public static void cursorIntToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, java.lang.String);
- method public static void cursorLongToContentValues(android.database.Cursor, java.lang.String, android.content.ContentValues);
- method public static void cursorLongToContentValues(android.database.Cursor, java.lang.String, android.content.ContentValues, java.lang.String);
- method public static void cursorLongToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, java.lang.String);
+ method public static void appendEscapedSQLString(StringBuilder, String);
+ method public static String[] appendSelectionArgs(String[], String[]);
+ method public static final void appendValueToSql(StringBuilder, Object);
+ method public static void bindObjectToProgram(android.database.sqlite.SQLiteProgram, int, Object);
+ method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
+ method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteStatement, String[]);
+ method public static String concatenateWhere(String, String);
+ method public static void createDbFromSqlStatements(android.content.Context, String, int, String);
+ method public static void cursorDoubleToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
+ method public static void cursorDoubleToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+ method public static void cursorDoubleToCursorValues(android.database.Cursor, String, android.content.ContentValues);
+ method public static void cursorFloatToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+ method public static void cursorIntToContentValues(android.database.Cursor, String, android.content.ContentValues);
+ method public static void cursorIntToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
+ method public static void cursorIntToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+ method public static void cursorLongToContentValues(android.database.Cursor, String, android.content.ContentValues);
+ method public static void cursorLongToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
+ method public static void cursorLongToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
method public static void cursorRowToContentValues(android.database.Cursor, android.content.ContentValues);
- method public static void cursorShortToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, java.lang.String);
- method public static void cursorStringToContentValues(android.database.Cursor, java.lang.String, android.content.ContentValues);
- method public static void cursorStringToContentValues(android.database.Cursor, java.lang.String, android.content.ContentValues, java.lang.String);
- method public static void cursorStringToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, java.lang.String);
- method public static void cursorStringToInsertHelper(android.database.Cursor, java.lang.String, android.database.DatabaseUtils.InsertHelper, int);
+ method public static void cursorShortToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+ method public static void cursorStringToContentValues(android.database.Cursor, String, android.content.ContentValues);
+ method public static void cursorStringToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
+ method public static void cursorStringToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+ method public static void cursorStringToInsertHelper(android.database.Cursor, String, android.database.DatabaseUtils.InsertHelper, int);
method public static void dumpCurrentRow(android.database.Cursor);
method public static void dumpCurrentRow(android.database.Cursor, java.io.PrintStream);
- method public static void dumpCurrentRow(android.database.Cursor, java.lang.StringBuilder);
- method public static java.lang.String dumpCurrentRowToString(android.database.Cursor);
+ method public static void dumpCurrentRow(android.database.Cursor, StringBuilder);
+ method public static String dumpCurrentRowToString(android.database.Cursor);
method public static void dumpCursor(android.database.Cursor);
method public static void dumpCursor(android.database.Cursor, java.io.PrintStream);
- method public static void dumpCursor(android.database.Cursor, java.lang.StringBuilder);
- method public static java.lang.String dumpCursorToString(android.database.Cursor);
- method public static java.lang.String getCollationKey(java.lang.String);
- method public static java.lang.String getHexCollationKey(java.lang.String);
- method public static int getSqlStatementType(java.lang.String);
- method public static long longForQuery(android.database.sqlite.SQLiteDatabase, java.lang.String, java.lang.String[]);
- method public static long longForQuery(android.database.sqlite.SQLiteStatement, java.lang.String[]);
- method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, java.lang.String);
- method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, java.lang.String, java.lang.String);
- method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, java.lang.String, java.lang.String, java.lang.String[]);
+ method public static void dumpCursor(android.database.Cursor, StringBuilder);
+ method public static String dumpCursorToString(android.database.Cursor);
+ method public static String getCollationKey(String);
+ method public static String getHexCollationKey(String);
+ method public static int getSqlStatementType(String);
+ method public static long longForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
+ method public static long longForQuery(android.database.sqlite.SQLiteStatement, String[]);
+ method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String);
+ method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String, String);
+ method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String, String, String[]);
method public static final void readExceptionFromParcel(android.os.Parcel);
method public static void readExceptionWithFileNotFoundExceptionFromParcel(android.os.Parcel) throws java.io.FileNotFoundException;
method public static void readExceptionWithOperationApplicationExceptionFromParcel(android.os.Parcel) throws android.content.OperationApplicationException;
- method public static java.lang.String sqlEscapeString(java.lang.String);
- method public static java.lang.String stringForQuery(android.database.sqlite.SQLiteDatabase, java.lang.String, java.lang.String[]);
- method public static java.lang.String stringForQuery(android.database.sqlite.SQLiteStatement, java.lang.String[]);
- method public static final void writeExceptionToParcel(android.os.Parcel, java.lang.Exception);
+ method public static String sqlEscapeString(String);
+ method public static String stringForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
+ method public static String stringForQuery(android.database.sqlite.SQLiteStatement, String[]);
+ method public static final void writeExceptionToParcel(android.os.Parcel, Exception);
field public static final int STATEMENT_ABORT = 6; // 0x6
field public static final int STATEMENT_ATTACH = 3; // 0x3
field public static final int STATEMENT_BEGIN = 4; // 0x4
@@ -12660,23 +12695,23 @@
field public static final int STATEMENT_UPDATE = 2; // 0x2
}
- public static deprecated class DatabaseUtils.InsertHelper {
- ctor public DatabaseUtils.InsertHelper(android.database.sqlite.SQLiteDatabase, java.lang.String);
- method public void bind(int, double);
- method public void bind(int, float);
- method public void bind(int, long);
- method public void bind(int, int);
- method public void bind(int, boolean);
- method public void bind(int, byte[]);
- method public void bind(int, java.lang.String);
- method public void bindNull(int);
- method public void close();
- method public long execute();
- method public int getColumnIndex(java.lang.String);
- method public long insert(android.content.ContentValues);
- method public void prepareForInsert();
- method public void prepareForReplace();
- method public long replace(android.content.ContentValues);
+ @Deprecated public static class DatabaseUtils.InsertHelper {
+ ctor @Deprecated public DatabaseUtils.InsertHelper(android.database.sqlite.SQLiteDatabase, String);
+ method @Deprecated public void bind(int, double);
+ method @Deprecated public void bind(int, float);
+ method @Deprecated public void bind(int, long);
+ method @Deprecated public void bind(int, int);
+ method @Deprecated public void bind(int, boolean);
+ method @Deprecated public void bind(int, byte[]);
+ method @Deprecated public void bind(int, String);
+ method @Deprecated public void bindNull(int);
+ method @Deprecated public void close();
+ method @Deprecated public long execute();
+ method @Deprecated public int getColumnIndex(String);
+ method @Deprecated public long insert(android.content.ContentValues);
+ method @Deprecated public void prepareForInsert();
+ method @Deprecated public void prepareForReplace();
+ method @Deprecated public long replace(android.content.ContentValues);
}
public final class DefaultDatabaseErrorHandler implements android.database.DatabaseErrorHandler {
@@ -12685,37 +12720,37 @@
}
public class MatrixCursor extends android.database.AbstractCursor {
- ctor public MatrixCursor(java.lang.String[], int);
- ctor public MatrixCursor(java.lang.String[]);
- method public void addRow(java.lang.Object[]);
- method public void addRow(java.lang.Iterable<?>);
- method public java.lang.String[] getColumnNames();
+ ctor public MatrixCursor(String[], int);
+ ctor public MatrixCursor(String[]);
+ method public void addRow(Object[]);
+ method public void addRow(Iterable<?>);
+ method public String[] getColumnNames();
method public int getCount();
method public double getDouble(int);
method public float getFloat(int);
method public int getInt(int);
method public long getLong(int);
method public short getShort(int);
- method public java.lang.String getString(int);
+ method public String getString(int);
method public boolean isNull(int);
method public android.database.MatrixCursor.RowBuilder newRow();
}
public class MatrixCursor.RowBuilder {
- method public android.database.MatrixCursor.RowBuilder add(java.lang.Object);
- method public android.database.MatrixCursor.RowBuilder add(java.lang.String, java.lang.Object);
+ method public android.database.MatrixCursor.RowBuilder add(Object);
+ method public android.database.MatrixCursor.RowBuilder add(String, Object);
}
public class MergeCursor extends android.database.AbstractCursor {
ctor public MergeCursor(android.database.Cursor[]);
- method public java.lang.String[] getColumnNames();
+ method public String[] getColumnNames();
method public int getCount();
method public double getDouble(int);
method public float getFloat(int);
method public int getInt(int);
method public long getLong(int);
method public short getShort(int);
- method public java.lang.String getString(int);
+ method public String getString(int);
method public boolean isNull(int);
}
@@ -12729,13 +12764,13 @@
public class SQLException extends java.lang.RuntimeException {
ctor public SQLException();
- ctor public SQLException(java.lang.String);
- ctor public SQLException(java.lang.String, java.lang.Throwable);
+ ctor public SQLException(String);
+ ctor public SQLException(String, Throwable);
}
public class StaleDataException extends java.lang.RuntimeException {
ctor public StaleDataException();
- ctor public StaleDataException(java.lang.String);
+ ctor public StaleDataException(String);
}
}
@@ -12744,27 +12779,27 @@
public class SQLiteAbortException extends android.database.sqlite.SQLiteException {
ctor public SQLiteAbortException();
- ctor public SQLiteAbortException(java.lang.String);
+ ctor public SQLiteAbortException(String);
}
public class SQLiteAccessPermException extends android.database.sqlite.SQLiteException {
ctor public SQLiteAccessPermException();
- ctor public SQLiteAccessPermException(java.lang.String);
+ ctor public SQLiteAccessPermException(String);
}
public class SQLiteBindOrColumnIndexOutOfRangeException extends android.database.sqlite.SQLiteException {
ctor public SQLiteBindOrColumnIndexOutOfRangeException();
- ctor public SQLiteBindOrColumnIndexOutOfRangeException(java.lang.String);
+ ctor public SQLiteBindOrColumnIndexOutOfRangeException(String);
}
public class SQLiteBlobTooBigException extends android.database.sqlite.SQLiteException {
ctor public SQLiteBlobTooBigException();
- ctor public SQLiteBlobTooBigException(java.lang.String);
+ ctor public SQLiteBlobTooBigException(String);
}
public class SQLiteCantOpenDatabaseException extends android.database.sqlite.SQLiteException {
ctor public SQLiteCantOpenDatabaseException();
- ctor public SQLiteCantOpenDatabaseException(java.lang.String);
+ ctor public SQLiteCantOpenDatabaseException(String);
}
public abstract class SQLiteClosable implements java.io.Closeable {
@@ -12772,32 +12807,32 @@
method public void acquireReference();
method public void close();
method protected abstract void onAllReferencesReleased();
- method protected deprecated void onAllReferencesReleasedFromContainer();
+ method @Deprecated protected void onAllReferencesReleasedFromContainer();
method public void releaseReference();
- method public deprecated void releaseReferenceFromContainer();
+ method @Deprecated public void releaseReferenceFromContainer();
}
public class SQLiteConstraintException extends android.database.sqlite.SQLiteException {
ctor public SQLiteConstraintException();
- ctor public SQLiteConstraintException(java.lang.String);
+ ctor public SQLiteConstraintException(String);
}
public class SQLiteCursor extends android.database.AbstractWindowedCursor {
- ctor public deprecated SQLiteCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery);
- ctor public SQLiteCursor(android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery);
- method public java.lang.String[] getColumnNames();
+ ctor @Deprecated public SQLiteCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
+ ctor public SQLiteCursor(android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
+ method public String[] getColumnNames();
method public int getCount();
method public android.database.sqlite.SQLiteDatabase getDatabase();
method public void setFillWindowForwardOnly(boolean);
- method public void setSelectionArguments(java.lang.String[]);
+ method public void setSelectionArguments(String[]);
}
- public abstract interface SQLiteCursorDriver {
- method public abstract void cursorClosed();
- method public abstract void cursorDeactivated();
- method public abstract void cursorRequeried(android.database.Cursor);
- method public abstract android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, java.lang.String[]);
- method public abstract void setBindArguments(java.lang.String[]);
+ public interface SQLiteCursorDriver {
+ method public void cursorClosed();
+ method public void cursorDeactivated();
+ method public void cursorRequeried(android.database.Cursor);
+ method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]);
+ method public void setBindArguments(String[]);
}
public final class SQLiteDatabase extends android.database.sqlite.SQLiteClosable {
@@ -12805,68 +12840,68 @@
method public void beginTransactionNonExclusive();
method public void beginTransactionWithListener(android.database.sqlite.SQLiteTransactionListener);
method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener);
- method public android.database.sqlite.SQLiteStatement compileStatement(java.lang.String) throws android.database.SQLException;
- method public static android.database.sqlite.SQLiteDatabase create(android.database.sqlite.SQLiteDatabase.CursorFactory);
- method public static android.database.sqlite.SQLiteDatabase createInMemory(android.database.sqlite.SQLiteDatabase.OpenParams);
- method public int delete(java.lang.String, java.lang.String, java.lang.String[]);
- method public static boolean deleteDatabase(java.io.File);
+ method public android.database.sqlite.SQLiteStatement compileStatement(String) throws android.database.SQLException;
+ method @NonNull public static android.database.sqlite.SQLiteDatabase create(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
+ method @NonNull public static android.database.sqlite.SQLiteDatabase createInMemory(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
+ method public int delete(String, String, String[]);
+ method public static boolean deleteDatabase(@NonNull java.io.File);
method public void disableWriteAheadLogging();
method public boolean enableWriteAheadLogging();
method public void endTransaction();
- method public void execSQL(java.lang.String) throws android.database.SQLException;
- method public void execSQL(java.lang.String, java.lang.Object[]) throws android.database.SQLException;
- method public static java.lang.String findEditTable(java.lang.String);
- method public java.util.List<android.util.Pair<java.lang.String, java.lang.String>> getAttachedDbs();
+ method public void execSQL(String) throws android.database.SQLException;
+ method public void execSQL(String, Object[]) throws android.database.SQLException;
+ method public static String findEditTable(String);
+ method public java.util.List<android.util.Pair<java.lang.String,java.lang.String>> getAttachedDbs();
method public long getMaximumSize();
method public long getPageSize();
- method public java.lang.String getPath();
- method public deprecated java.util.Map<java.lang.String, java.lang.String> getSyncedTables();
+ method public String getPath();
+ method @Deprecated public java.util.Map<java.lang.String,java.lang.String> getSyncedTables();
method public int getVersion();
method public boolean inTransaction();
- method public long insert(java.lang.String, java.lang.String, android.content.ContentValues);
- method public long insertOrThrow(java.lang.String, java.lang.String, android.content.ContentValues) throws android.database.SQLException;
- method public long insertWithOnConflict(java.lang.String, java.lang.String, android.content.ContentValues, int);
+ method public long insert(String, String, android.content.ContentValues);
+ method public long insertOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException;
+ method public long insertWithOnConflict(String, String, android.content.ContentValues, int);
method public boolean isDatabaseIntegrityOk();
method public boolean isDbLockedByCurrentThread();
- method public deprecated boolean isDbLockedByOtherThreads();
+ method @Deprecated public boolean isDbLockedByOtherThreads();
method public boolean isOpen();
method public boolean isReadOnly();
method public boolean isWriteAheadLoggingEnabled();
- method public deprecated void markTableSyncable(java.lang.String, java.lang.String);
- method public deprecated void markTableSyncable(java.lang.String, java.lang.String, java.lang.String);
+ method @Deprecated public void markTableSyncable(String, String);
+ method @Deprecated public void markTableSyncable(String, String, String);
method public boolean needUpgrade(int);
method protected void onAllReferencesReleased();
- method public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int);
- method public static android.database.sqlite.SQLiteDatabase openDatabase(java.io.File, android.database.sqlite.SQLiteDatabase.OpenParams);
- method public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int, android.database.DatabaseErrorHandler);
- method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.io.File, android.database.sqlite.SQLiteDatabase.CursorFactory);
- method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory);
- method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
- method public android.database.Cursor query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public android.database.Cursor query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
- method public android.database.Cursor query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String);
- method public android.database.Cursor query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
- method public android.database.Cursor rawQuery(java.lang.String, java.lang.String[]);
- method public android.database.Cursor rawQuery(java.lang.String, java.lang.String[], android.os.CancellationSignal);
- method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, java.lang.String, java.lang.String[], java.lang.String);
- method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
+ method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int);
+ method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull java.io.File, @NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
+ method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int, @Nullable android.database.DatabaseErrorHandler);
+ method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull java.io.File, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
+ method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
+ method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, @Nullable android.database.DatabaseErrorHandler);
+ method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String);
+ method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
+ method public android.database.Cursor query(String, String[], String, String[], String, String, String);
+ method public android.database.Cursor query(String, String[], String, String[], String, String, String, String);
+ method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String);
+ method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
+ method public android.database.Cursor rawQuery(String, String[]);
+ method public android.database.Cursor rawQuery(String, String[], android.os.CancellationSignal);
+ method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String);
+ method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String, android.os.CancellationSignal);
method public static int releaseMemory();
- method public long replace(java.lang.String, java.lang.String, android.content.ContentValues);
- method public long replaceOrThrow(java.lang.String, java.lang.String, android.content.ContentValues) throws android.database.SQLException;
+ method public long replace(String, String, android.content.ContentValues);
+ method public long replaceOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException;
method public void setForeignKeyConstraintsEnabled(boolean);
method public void setLocale(java.util.Locale);
- method public deprecated void setLockingEnabled(boolean);
+ method @Deprecated public void setLockingEnabled(boolean);
method public void setMaxSqlCacheSize(int);
method public long setMaximumSize(long);
method public void setPageSize(long);
method public void setTransactionSuccessful();
method public void setVersion(int);
- method public int update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[]);
- method public int updateWithOnConflict(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[], int);
- method public void validateSql(java.lang.String, android.os.CancellationSignal);
- method public deprecated boolean yieldIfContended();
+ method public int update(String, android.content.ContentValues, String, String[]);
+ method public int updateWithOnConflict(String, android.content.ContentValues, String, String[], int);
+ method public void validateSql(@NonNull String, @Nullable android.os.CancellationSignal);
+ method @Deprecated public boolean yieldIfContended();
method public boolean yieldIfContendedSafely();
method public boolean yieldIfContendedSafely(long);
field public static final int CONFLICT_ABORT = 2; // 0x2
@@ -12884,83 +12919,83 @@
field public static final int SQLITE_MAX_LIKE_PATTERN_LENGTH = 50000; // 0xc350
}
- public static abstract interface SQLiteDatabase.CursorFactory {
- method public abstract android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery);
+ public static interface SQLiteDatabase.CursorFactory {
+ method public android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
}
public static final class SQLiteDatabase.OpenParams {
- method public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory();
- method public android.database.DatabaseErrorHandler getErrorHandler();
+ method @Nullable public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory();
+ method @Nullable public android.database.DatabaseErrorHandler getErrorHandler();
method public long getIdleConnectionTimeout();
- method public java.lang.String getJournalMode();
- method public int getLookasideSlotCount();
- method public int getLookasideSlotSize();
+ method @Nullable public String getJournalMode();
+ method @IntRange(from=0xffffffff) public int getLookasideSlotCount();
+ method @IntRange(from=0xffffffff) public int getLookasideSlotSize();
method public int getOpenFlags();
- method public java.lang.String getSynchronousMode();
+ method @Nullable public String getSynchronousMode();
}
public static final class SQLiteDatabase.OpenParams.Builder {
ctor public SQLiteDatabase.OpenParams.Builder();
ctor public SQLiteDatabase.OpenParams.Builder(android.database.sqlite.SQLiteDatabase.OpenParams);
- method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder addOpenFlags(int);
- method public android.database.sqlite.SQLiteDatabase.OpenParams build();
- method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder removeOpenFlags(int);
- method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setCursorFactory(android.database.sqlite.SQLiteDatabase.CursorFactory);
- method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setErrorHandler(android.database.DatabaseErrorHandler);
- method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setIdleConnectionTimeout(long);
- method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setJournalMode(java.lang.String);
- method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setLookasideConfig(int, int);
- method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setOpenFlags(int);
- method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setSynchronousMode(java.lang.String);
+ method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder addOpenFlags(int);
+ method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams build();
+ method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder removeOpenFlags(int);
+ method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setCursorFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
+ method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setErrorHandler(@Nullable android.database.DatabaseErrorHandler);
+ method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setIdleConnectionTimeout(@IntRange(from=0) long);
+ method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setJournalMode(@NonNull String);
+ method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setLookasideConfig(@IntRange(from=0) int, @IntRange(from=0) int);
+ method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setOpenFlags(int);
+ method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setSynchronousMode(@NonNull String);
}
public class SQLiteDatabaseCorruptException extends android.database.sqlite.SQLiteException {
ctor public SQLiteDatabaseCorruptException();
- ctor public SQLiteDatabaseCorruptException(java.lang.String);
+ ctor public SQLiteDatabaseCorruptException(String);
}
public class SQLiteDatabaseLockedException extends android.database.sqlite.SQLiteException {
ctor public SQLiteDatabaseLockedException();
- ctor public SQLiteDatabaseLockedException(java.lang.String);
+ ctor public SQLiteDatabaseLockedException(String);
}
public class SQLiteDatatypeMismatchException extends android.database.sqlite.SQLiteException {
ctor public SQLiteDatatypeMismatchException();
- ctor public SQLiteDatatypeMismatchException(java.lang.String);
+ ctor public SQLiteDatatypeMismatchException(String);
}
public class SQLiteDiskIOException extends android.database.sqlite.SQLiteException {
ctor public SQLiteDiskIOException();
- ctor public SQLiteDiskIOException(java.lang.String);
+ ctor public SQLiteDiskIOException(String);
}
public class SQLiteDoneException extends android.database.sqlite.SQLiteException {
ctor public SQLiteDoneException();
- ctor public SQLiteDoneException(java.lang.String);
+ ctor public SQLiteDoneException(String);
}
public class SQLiteException extends android.database.SQLException {
ctor public SQLiteException();
- ctor public SQLiteException(java.lang.String);
- ctor public SQLiteException(java.lang.String, java.lang.Throwable);
+ ctor public SQLiteException(String);
+ ctor public SQLiteException(String, Throwable);
}
public class SQLiteFullException extends android.database.sqlite.SQLiteException {
ctor public SQLiteFullException();
- ctor public SQLiteFullException(java.lang.String);
+ ctor public SQLiteFullException(String);
}
public class SQLiteMisuseException extends android.database.sqlite.SQLiteException {
ctor public SQLiteMisuseException();
- ctor public SQLiteMisuseException(java.lang.String);
+ ctor public SQLiteMisuseException(String);
}
public abstract class SQLiteOpenHelper implements java.lang.AutoCloseable {
- ctor public SQLiteOpenHelper(android.content.Context, java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int);
- ctor public SQLiteOpenHelper(android.content.Context, java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int, android.database.DatabaseErrorHandler);
- ctor public SQLiteOpenHelper(android.content.Context, java.lang.String, int, android.database.sqlite.SQLiteDatabase.OpenParams);
- method public synchronized void close();
- method public java.lang.String getDatabaseName();
+ ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int);
+ ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int, @Nullable android.database.DatabaseErrorHandler);
+ ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, int, @NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
+ method public void close();
+ method public String getDatabaseName();
method public android.database.sqlite.SQLiteDatabase getReadableDatabase();
method public android.database.sqlite.SQLiteDatabase getWritableDatabase();
method public void onConfigure(android.database.sqlite.SQLiteDatabase);
@@ -12968,26 +13003,26 @@
method public void onDowngrade(android.database.sqlite.SQLiteDatabase, int, int);
method public void onOpen(android.database.sqlite.SQLiteDatabase);
method public abstract void onUpgrade(android.database.sqlite.SQLiteDatabase, int, int);
- method public void setIdleConnectionTimeout(long);
- method public void setLookasideConfig(int, int);
- method public void setOpenParams(android.database.sqlite.SQLiteDatabase.OpenParams);
+ method public void setIdleConnectionTimeout(@IntRange(from=0) long);
+ method public void setLookasideConfig(@IntRange(from=0) int, @IntRange(from=0) int);
+ method public void setOpenParams(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
method public void setWriteAheadLoggingEnabled(boolean);
}
public class SQLiteOutOfMemoryException extends android.database.sqlite.SQLiteException {
ctor public SQLiteOutOfMemoryException();
- ctor public SQLiteOutOfMemoryException(java.lang.String);
+ ctor public SQLiteOutOfMemoryException(String);
}
public abstract class SQLiteProgram extends android.database.sqlite.SQLiteClosable {
- method public void bindAllArgsAsStrings(java.lang.String[]);
+ method public void bindAllArgsAsStrings(String[]);
method public void bindBlob(int, byte[]);
method public void bindDouble(int, double);
method public void bindLong(int, long);
method public void bindNull(int);
- method public void bindString(int, java.lang.String);
+ method public void bindString(int, String);
method public void clearBindings();
- method public final deprecated int getUniqueId();
+ method @Deprecated public final int getUniqueId();
method protected void onAllReferencesReleased();
}
@@ -12996,32 +13031,32 @@
public class SQLiteQueryBuilder {
ctor public SQLiteQueryBuilder();
- method public static void appendColumns(java.lang.StringBuilder, java.lang.String[]);
- method public void appendWhere(java.lang.CharSequence);
- method public void appendWhereEscapeString(java.lang.String);
- method public void appendWhereStandalone(java.lang.CharSequence);
- method public java.lang.String buildQuery(java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public deprecated java.lang.String buildQuery(java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public static java.lang.String buildQueryString(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public java.lang.String buildUnionQuery(java.lang.String[], java.lang.String, java.lang.String);
- method public java.lang.String buildUnionSubQuery(java.lang.String, java.lang.String[], java.util.Set<java.lang.String>, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public deprecated java.lang.String buildUnionSubQuery(java.lang.String, java.lang.String[], java.util.Set<java.lang.String>, int, java.lang.String, java.lang.String, java.lang.String[], java.lang.String, java.lang.String);
- method public int delete(android.database.sqlite.SQLiteDatabase, java.lang.String, java.lang.String[]);
- method public java.lang.String getTables();
- method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String);
- method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
+ method public static void appendColumns(StringBuilder, String[]);
+ method public void appendWhere(@NonNull CharSequence);
+ method public void appendWhereEscapeString(@NonNull String);
+ method public void appendWhereStandalone(@NonNull CharSequence);
+ method public String buildQuery(String[], String, String, String, String, String);
+ method @Deprecated public String buildQuery(String[], String, String[], String, String, String, String);
+ method public static String buildQueryString(boolean, String, String[], String, String, String, String, String);
+ method public String buildUnionQuery(String[], String, String);
+ method public String buildUnionSubQuery(String, String[], java.util.Set<java.lang.String>, int, String, String, String, String);
+ method @Deprecated public String buildUnionSubQuery(String, String[], java.util.Set<java.lang.String>, int, String, String, String[], String, String);
+ method public int delete(@NonNull android.database.sqlite.SQLiteDatabase, @Nullable String, @Nullable String[]);
+ method public String getTables();
+ method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String);
+ method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String, String);
+ method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
method public void setCursorFactory(android.database.sqlite.SQLiteDatabase.CursorFactory);
method public void setDistinct(boolean);
- method public void setProjectionMap(java.util.Map<java.lang.String, java.lang.String>);
+ method public void setProjectionMap(java.util.Map<java.lang.String,java.lang.String>);
method public void setStrict(boolean);
- method public void setTables(java.lang.String);
- method public int update(android.database.sqlite.SQLiteDatabase, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ method public void setTables(String);
+ method public int update(@NonNull android.database.sqlite.SQLiteDatabase, @NonNull android.content.ContentValues, @Nullable String, @Nullable String[]);
}
public class SQLiteReadOnlyDatabaseException extends android.database.sqlite.SQLiteException {
ctor public SQLiteReadOnlyDatabaseException();
- ctor public SQLiteReadOnlyDatabaseException(java.lang.String);
+ ctor public SQLiteReadOnlyDatabaseException(String);
}
public final class SQLiteStatement extends android.database.sqlite.SQLiteProgram {
@@ -13030,18 +13065,18 @@
method public int executeUpdateDelete();
method public android.os.ParcelFileDescriptor simpleQueryForBlobFileDescriptor();
method public long simpleQueryForLong();
- method public java.lang.String simpleQueryForString();
+ method public String simpleQueryForString();
}
public class SQLiteTableLockedException extends android.database.sqlite.SQLiteException {
ctor public SQLiteTableLockedException();
- ctor public SQLiteTableLockedException(java.lang.String);
+ ctor public SQLiteTableLockedException(String);
}
- public abstract interface SQLiteTransactionListener {
- method public abstract void onBegin();
- method public abstract void onCommit();
- method public abstract void onRollback();
+ public interface SQLiteTransactionListener {
+ method public void onBegin();
+ method public void onCommit();
+ method public void onRollback();
}
}
@@ -13059,8 +13094,8 @@
}
public class DrmErrorEvent extends android.drm.DrmEvent {
- ctor public DrmErrorEvent(int, int, java.lang.String);
- ctor public DrmErrorEvent(int, int, java.lang.String, java.util.HashMap<java.lang.String, java.lang.Object>);
+ ctor public DrmErrorEvent(int, int, String);
+ ctor public DrmErrorEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
field public static final int TYPE_ACQUIRE_DRM_INFO_FAILED = 2008; // 0x7d8
field public static final int TYPE_NOT_SUPPORTED = 2003; // 0x7d3
field public static final int TYPE_NO_INTERNET_CONNECTION = 2005; // 0x7d5
@@ -13072,33 +13107,33 @@
}
public class DrmEvent {
- ctor protected DrmEvent(int, int, java.lang.String, java.util.HashMap<java.lang.String, java.lang.Object>);
- ctor protected DrmEvent(int, int, java.lang.String);
- method public java.lang.Object getAttribute(java.lang.String);
- method public java.lang.String getMessage();
+ ctor protected DrmEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
+ ctor protected DrmEvent(int, int, String);
+ method public Object getAttribute(String);
+ method public String getMessage();
method public int getType();
method public int getUniqueId();
- field public static final java.lang.String DRM_INFO_OBJECT = "drm_info_object";
- field public static final java.lang.String DRM_INFO_STATUS_OBJECT = "drm_info_status_object";
+ field public static final String DRM_INFO_OBJECT = "drm_info_object";
+ field public static final String DRM_INFO_STATUS_OBJECT = "drm_info_status_object";
field public static final int TYPE_ALL_RIGHTS_REMOVED = 1001; // 0x3e9
field public static final int TYPE_DRM_INFO_PROCESSED = 1002; // 0x3ea
}
public class DrmInfo {
- ctor public DrmInfo(int, byte[], java.lang.String);
- ctor public DrmInfo(int, java.lang.String, java.lang.String);
- method public java.lang.Object get(java.lang.String);
+ ctor public DrmInfo(int, byte[], String);
+ ctor public DrmInfo(int, String, String);
+ method public Object get(String);
method public byte[] getData();
method public int getInfoType();
- method public java.lang.String getMimeType();
+ method public String getMimeType();
method public java.util.Iterator<java.lang.Object> iterator();
method public java.util.Iterator<java.lang.String> keyIterator();
- method public void put(java.lang.String, java.lang.Object);
+ method public void put(String, Object);
}
public class DrmInfoEvent extends android.drm.DrmEvent {
- ctor public DrmInfoEvent(int, int, java.lang.String);
- ctor public DrmInfoEvent(int, int, java.lang.String, java.util.HashMap<java.lang.String, java.lang.Object>);
+ ctor public DrmInfoEvent(int, int, String);
+ ctor public DrmInfoEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
field public static final int TYPE_ACCOUNT_ALREADY_REGISTERED = 5; // 0x5
field public static final int TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT = 1; // 0x1
field public static final int TYPE_REMOVE_RIGHTS = 2; // 0x2
@@ -13108,15 +13143,15 @@
}
public class DrmInfoRequest {
- ctor public DrmInfoRequest(int, java.lang.String);
- method public java.lang.Object get(java.lang.String);
+ ctor public DrmInfoRequest(int, String);
+ method public Object get(String);
method public int getInfoType();
- method public java.lang.String getMimeType();
+ method public String getMimeType();
method public java.util.Iterator<java.lang.Object> iterator();
method public java.util.Iterator<java.lang.String> keyIterator();
- method public void put(java.lang.String, java.lang.Object);
- field public static final java.lang.String ACCOUNT_ID = "account_id";
- field public static final java.lang.String SUBSCRIPTION_ID = "subscription_id";
+ method public void put(String, Object);
+ field public static final String ACCOUNT_ID = "account_id";
+ field public static final String SUBSCRIPTION_ID = "subscription_id";
field public static final int TYPE_REGISTRATION_INFO = 1; // 0x1
field public static final int TYPE_RIGHTS_ACQUISITION_INFO = 3; // 0x3
field public static final int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4; // 0x4
@@ -13124,12 +13159,12 @@
}
public class DrmInfoStatus {
- ctor public DrmInfoStatus(int, int, android.drm.ProcessedData, java.lang.String);
+ ctor public DrmInfoStatus(int, int, android.drm.ProcessedData, String);
field public static final int STATUS_ERROR = 2; // 0x2
field public static final int STATUS_OK = 1; // 0x1
field public final android.drm.ProcessedData data;
field public final int infoType;
- field public final java.lang.String mimeType;
+ field public final String mimeType;
field public final int statusCode;
}
@@ -13137,68 +13172,68 @@
ctor public DrmManagerClient(android.content.Context);
method public android.drm.DrmInfo acquireDrmInfo(android.drm.DrmInfoRequest);
method public int acquireRights(android.drm.DrmInfoRequest);
- method public boolean canHandle(java.lang.String, java.lang.String);
- method public boolean canHandle(android.net.Uri, java.lang.String);
- method public int checkRightsStatus(java.lang.String);
+ method public boolean canHandle(String, String);
+ method public boolean canHandle(android.net.Uri, String);
+ method public int checkRightsStatus(String);
method public int checkRightsStatus(android.net.Uri);
- method public int checkRightsStatus(java.lang.String, int);
+ method public int checkRightsStatus(String, int);
method public int checkRightsStatus(android.net.Uri, int);
method public void close();
method public android.drm.DrmConvertedStatus closeConvertSession(int);
method public android.drm.DrmConvertedStatus convertData(int, byte[]);
- method public java.lang.String[] getAvailableDrmEngines();
- method public android.content.ContentValues getConstraints(java.lang.String, int);
+ method public String[] getAvailableDrmEngines();
+ method public android.content.ContentValues getConstraints(String, int);
method public android.content.ContentValues getConstraints(android.net.Uri, int);
- method public int getDrmObjectType(java.lang.String, java.lang.String);
- method public int getDrmObjectType(android.net.Uri, java.lang.String);
- method public android.content.ContentValues getMetadata(java.lang.String);
+ method public int getDrmObjectType(String, String);
+ method public int getDrmObjectType(android.net.Uri, String);
+ method public android.content.ContentValues getMetadata(String);
method public android.content.ContentValues getMetadata(android.net.Uri);
- method public java.lang.String getOriginalMimeType(java.lang.String);
- method public java.lang.String getOriginalMimeType(android.net.Uri);
- method public int openConvertSession(java.lang.String);
+ method public String getOriginalMimeType(String);
+ method public String getOriginalMimeType(android.net.Uri);
+ method public int openConvertSession(String);
method public int processDrmInfo(android.drm.DrmInfo);
- method public deprecated void release();
+ method @Deprecated public void release();
method public int removeAllRights();
- method public int removeRights(java.lang.String);
+ method public int removeRights(String);
method public int removeRights(android.net.Uri);
- method public int saveRights(android.drm.DrmRights, java.lang.String, java.lang.String) throws java.io.IOException;
- method public synchronized void setOnErrorListener(android.drm.DrmManagerClient.OnErrorListener);
- method public synchronized void setOnEventListener(android.drm.DrmManagerClient.OnEventListener);
- method public synchronized void setOnInfoListener(android.drm.DrmManagerClient.OnInfoListener);
+ method public int saveRights(android.drm.DrmRights, String, String) throws java.io.IOException;
+ method public void setOnErrorListener(android.drm.DrmManagerClient.OnErrorListener);
+ method public void setOnEventListener(android.drm.DrmManagerClient.OnEventListener);
+ method public void setOnInfoListener(android.drm.DrmManagerClient.OnInfoListener);
field public static final int ERROR_NONE = 0; // 0x0
field public static final int ERROR_UNKNOWN = -2000; // 0xfffff830
}
- public static abstract interface DrmManagerClient.OnErrorListener {
- method public abstract void onError(android.drm.DrmManagerClient, android.drm.DrmErrorEvent);
+ public static interface DrmManagerClient.OnErrorListener {
+ method public void onError(android.drm.DrmManagerClient, android.drm.DrmErrorEvent);
}
- public static abstract interface DrmManagerClient.OnEventListener {
- method public abstract void onEvent(android.drm.DrmManagerClient, android.drm.DrmEvent);
+ public static interface DrmManagerClient.OnEventListener {
+ method public void onEvent(android.drm.DrmManagerClient, android.drm.DrmEvent);
}
- public static abstract interface DrmManagerClient.OnInfoListener {
- method public abstract void onInfo(android.drm.DrmManagerClient, android.drm.DrmInfoEvent);
+ public static interface DrmManagerClient.OnInfoListener {
+ method public void onInfo(android.drm.DrmManagerClient, android.drm.DrmInfoEvent);
}
public class DrmRights {
- ctor public DrmRights(java.lang.String, java.lang.String);
- ctor public DrmRights(java.lang.String, java.lang.String, java.lang.String);
- ctor public DrmRights(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- ctor public DrmRights(java.io.File, java.lang.String);
- ctor public DrmRights(android.drm.ProcessedData, java.lang.String);
- method public java.lang.String getAccountId();
+ ctor public DrmRights(String, String);
+ ctor public DrmRights(String, String, String);
+ ctor public DrmRights(String, String, String, String);
+ ctor public DrmRights(java.io.File, String);
+ ctor public DrmRights(android.drm.ProcessedData, String);
+ method public String getAccountId();
method public byte[] getData();
- method public java.lang.String getMimeType();
- method public java.lang.String getSubscriptionId();
+ method public String getMimeType();
+ method public String getSubscriptionId();
}
public class DrmStore {
- ctor public deprecated DrmStore();
+ ctor @Deprecated public DrmStore();
}
public static class DrmStore.Action {
- ctor public deprecated DrmStore.Action();
+ ctor @Deprecated public DrmStore.Action();
field public static final int DEFAULT = 0; // 0x0
field public static final int DISPLAY = 7; // 0x7
field public static final int EXECUTE = 6; // 0x6
@@ -13209,17 +13244,17 @@
field public static final int TRANSFER = 3; // 0x3
}
- public static abstract interface DrmStore.ConstraintsColumns {
- field public static final java.lang.String EXTENDED_METADATA = "extended_metadata";
- field public static final java.lang.String LICENSE_AVAILABLE_TIME = "license_available_time";
- field public static final java.lang.String LICENSE_EXPIRY_TIME = "license_expiry_time";
- field public static final java.lang.String LICENSE_START_TIME = "license_start_time";
- field public static final java.lang.String MAX_REPEAT_COUNT = "max_repeat_count";
- field public static final java.lang.String REMAINING_REPEAT_COUNT = "remaining_repeat_count";
+ public static interface DrmStore.ConstraintsColumns {
+ field public static final String EXTENDED_METADATA = "extended_metadata";
+ field public static final String LICENSE_AVAILABLE_TIME = "license_available_time";
+ field public static final String LICENSE_EXPIRY_TIME = "license_expiry_time";
+ field public static final String LICENSE_START_TIME = "license_start_time";
+ field public static final String MAX_REPEAT_COUNT = "max_repeat_count";
+ field public static final String REMAINING_REPEAT_COUNT = "remaining_repeat_count";
}
public static class DrmStore.DrmObjectType {
- ctor public deprecated DrmStore.DrmObjectType();
+ ctor @Deprecated public DrmStore.DrmObjectType();
field public static final int CONTENT = 1; // 0x1
field public static final int RIGHTS_OBJECT = 2; // 0x2
field public static final int TRIGGER_OBJECT = 3; // 0x3
@@ -13227,7 +13262,7 @@
}
public static class DrmStore.Playback {
- ctor public deprecated DrmStore.Playback();
+ ctor @Deprecated public DrmStore.Playback();
field public static final int PAUSE = 2; // 0x2
field public static final int RESUME = 3; // 0x3
field public static final int START = 0; // 0x0
@@ -13235,7 +13270,7 @@
}
public static class DrmStore.RightsStatus {
- ctor public deprecated DrmStore.RightsStatus();
+ ctor @Deprecated public DrmStore.RightsStatus();
field public static final int RIGHTS_EXPIRED = 2; // 0x2
field public static final int RIGHTS_INVALID = 1; // 0x1
field public static final int RIGHTS_NOT_ACQUIRED = 3; // 0x3
@@ -13244,13 +13279,13 @@
public class DrmSupportInfo {
ctor public DrmSupportInfo();
- method public void addFileSuffix(java.lang.String);
- method public void addMimeType(java.lang.String);
- method public deprecated java.lang.String getDescriprition();
- method public java.lang.String getDescription();
+ method public void addFileSuffix(String);
+ method public void addMimeType(String);
+ method @Deprecated public String getDescriprition();
+ method public String getDescription();
method public java.util.Iterator<java.lang.String> getFileSuffixIterator();
method public java.util.Iterator<java.lang.String> getMimeTypeIterator();
- method public void setDescription(java.lang.String);
+ method public void setDescription(String);
}
public class DrmUtils {
@@ -13259,15 +13294,15 @@
}
public static class DrmUtils.ExtendedMetadataParser {
- method public java.lang.String get(java.lang.String);
+ method public String get(String);
method public java.util.Iterator<java.lang.String> iterator();
method public java.util.Iterator<java.lang.String> keyIterator();
}
public class ProcessedData {
- method public java.lang.String getAccountId();
+ method public String getAccountId();
method public byte[] getData();
- method public java.lang.String getSubscriptionId();
+ method public String getSubscriptionId();
}
}
@@ -13277,7 +13312,7 @@
public class Gesture implements android.os.Parcelable {
ctor public Gesture();
method public void addStroke(android.gesture.GestureStroke);
- method public java.lang.Object clone();
+ method public Object clone();
method public int describeContents();
method public android.graphics.RectF getBoundingBox();
method public long getID();
@@ -13295,24 +13330,24 @@
}
public final class GestureLibraries {
- method public static android.gesture.GestureLibrary fromFile(java.lang.String);
+ method public static android.gesture.GestureLibrary fromFile(String);
method public static android.gesture.GestureLibrary fromFile(java.io.File);
- method public static android.gesture.GestureLibrary fromPrivateFile(android.content.Context, java.lang.String);
- method public static android.gesture.GestureLibrary fromRawResource(android.content.Context, int);
+ method public static android.gesture.GestureLibrary fromPrivateFile(android.content.Context, String);
+ method public static android.gesture.GestureLibrary fromRawResource(android.content.Context, @RawRes int);
}
public abstract class GestureLibrary {
ctor protected GestureLibrary();
- method public void addGesture(java.lang.String, android.gesture.Gesture);
+ method public void addGesture(String, android.gesture.Gesture);
method public java.util.Set<java.lang.String> getGestureEntries();
- method public java.util.ArrayList<android.gesture.Gesture> getGestures(java.lang.String);
+ method public java.util.ArrayList<android.gesture.Gesture> getGestures(String);
method public int getOrientationStyle();
method public int getSequenceType();
method public boolean isReadOnly();
method public abstract boolean load();
method public java.util.ArrayList<android.gesture.Prediction> recognize(android.gesture.Gesture);
- method public void removeEntry(java.lang.String);
- method public void removeGesture(java.lang.String, android.gesture.Gesture);
+ method public void removeEntry(String);
+ method public void removeGesture(String, android.gesture.Gesture);
method public abstract boolean save();
method public void setOrientationStyle(int);
method public void setSequenceType(int);
@@ -13333,7 +13368,7 @@
method public java.util.ArrayList<android.gesture.GesturePoint> getCurrentStroke();
method public long getFadeOffset();
method public android.gesture.Gesture getGesture();
- method public int getGestureColor();
+ method @ColorInt public int getGestureColor();
method public android.graphics.Path getGesturePath();
method public android.graphics.Path getGesturePath(android.graphics.Path);
method public float getGestureStrokeAngleThreshold();
@@ -13342,7 +13377,7 @@
method public int getGestureStrokeType();
method public float getGestureStrokeWidth();
method public int getOrientation();
- method public int getUncertainGestureColor();
+ method @ColorInt public int getUncertainGestureColor();
method public boolean isEventsInterceptionEnabled();
method public boolean isFadeEnabled();
method public boolean isGestureVisible();
@@ -13357,7 +13392,7 @@
method public void setFadeEnabled(boolean);
method public void setFadeOffset(long);
method public void setGesture(android.gesture.Gesture);
- method public void setGestureColor(int);
+ method public void setGestureColor(@ColorInt int);
method public void setGestureStrokeAngleThreshold(float);
method public void setGestureStrokeLengthThreshold(float);
method public void setGestureStrokeSquarenessTreshold(float);
@@ -13365,32 +13400,32 @@
method public void setGestureStrokeWidth(float);
method public void setGestureVisible(boolean);
method public void setOrientation(int);
- method public void setUncertainGestureColor(int);
+ method public void setUncertainGestureColor(@ColorInt int);
field public static final int GESTURE_STROKE_TYPE_MULTIPLE = 1; // 0x1
field public static final int GESTURE_STROKE_TYPE_SINGLE = 0; // 0x0
field public static final int ORIENTATION_HORIZONTAL = 0; // 0x0
field public static final int ORIENTATION_VERTICAL = 1; // 0x1
}
- public static abstract interface GestureOverlayView.OnGestureListener {
- method public abstract void onGesture(android.gesture.GestureOverlayView, android.view.MotionEvent);
- method public abstract void onGestureCancelled(android.gesture.GestureOverlayView, android.view.MotionEvent);
- method public abstract void onGestureEnded(android.gesture.GestureOverlayView, android.view.MotionEvent);
- method public abstract void onGestureStarted(android.gesture.GestureOverlayView, android.view.MotionEvent);
+ public static interface GestureOverlayView.OnGestureListener {
+ method public void onGesture(android.gesture.GestureOverlayView, android.view.MotionEvent);
+ method public void onGestureCancelled(android.gesture.GestureOverlayView, android.view.MotionEvent);
+ method public void onGestureEnded(android.gesture.GestureOverlayView, android.view.MotionEvent);
+ method public void onGestureStarted(android.gesture.GestureOverlayView, android.view.MotionEvent);
}
- public static abstract interface GestureOverlayView.OnGesturePerformedListener {
- method public abstract void onGesturePerformed(android.gesture.GestureOverlayView, android.gesture.Gesture);
+ public static interface GestureOverlayView.OnGesturePerformedListener {
+ method public void onGesturePerformed(android.gesture.GestureOverlayView, android.gesture.Gesture);
}
- public static abstract interface GestureOverlayView.OnGesturingListener {
- method public abstract void onGesturingEnded(android.gesture.GestureOverlayView);
- method public abstract void onGesturingStarted(android.gesture.GestureOverlayView);
+ public static interface GestureOverlayView.OnGesturingListener {
+ method public void onGesturingEnded(android.gesture.GestureOverlayView);
+ method public void onGesturingStarted(android.gesture.GestureOverlayView);
}
public class GesturePoint {
ctor public GesturePoint(float, float, long);
- method public java.lang.Object clone();
+ method public Object clone();
field public final long timestamp;
field public final float x;
field public final float y;
@@ -13398,17 +13433,17 @@
public class GestureStore {
ctor public GestureStore();
- method public void addGesture(java.lang.String, android.gesture.Gesture);
+ method public void addGesture(String, android.gesture.Gesture);
method public java.util.Set<java.lang.String> getGestureEntries();
- method public java.util.ArrayList<android.gesture.Gesture> getGestures(java.lang.String);
+ method public java.util.ArrayList<android.gesture.Gesture> getGestures(String);
method public int getOrientationStyle();
method public int getSequenceType();
method public boolean hasChanged();
method public void load(java.io.InputStream) throws java.io.IOException;
method public void load(java.io.InputStream, boolean) throws java.io.IOException;
method public java.util.ArrayList<android.gesture.Prediction> recognize(android.gesture.Gesture);
- method public void removeEntry(java.lang.String);
- method public void removeGesture(java.lang.String, android.gesture.Gesture);
+ method public void removeEntry(String);
+ method public void removeGesture(String, android.gesture.Gesture);
method public void save(java.io.OutputStream) throws java.io.IOException;
method public void save(java.io.OutputStream, boolean) throws java.io.IOException;
method public void setOrientationStyle(int);
@@ -13422,7 +13457,7 @@
public class GestureStroke {
ctor public GestureStroke(java.util.ArrayList<android.gesture.GesturePoint>);
method public void clearPath();
- method public java.lang.Object clone();
+ method public Object clone();
method public android.gesture.OrientedBoundingBox computeOrientedBoundingBox();
method public android.graphics.Path getPath();
method public android.graphics.Path toPath(float, float, int);
@@ -13449,7 +13484,7 @@
}
public class Prediction {
- field public final java.lang.String name;
+ field public final String name;
field public double score;
}
@@ -13458,40 +13493,40 @@
package android.graphics {
public final class Bitmap implements android.os.Parcelable {
- method public boolean compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream);
+ method @WorkerThread public boolean compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream);
method public android.graphics.Bitmap copy(android.graphics.Bitmap.Config, boolean);
method public void copyPixelsFromBuffer(java.nio.Buffer);
method public void copyPixelsToBuffer(java.nio.Buffer);
- method public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap);
- method public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap, int, int, int, int);
- method public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap, int, int, int, int, android.graphics.Matrix, boolean);
- method public static android.graphics.Bitmap createBitmap(int, int, android.graphics.Bitmap.Config);
- method public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int, int, android.graphics.Bitmap.Config);
- method public static android.graphics.Bitmap createBitmap(int, int, android.graphics.Bitmap.Config, boolean);
- method public static android.graphics.Bitmap createBitmap(int, int, android.graphics.Bitmap.Config, boolean, android.graphics.ColorSpace);
- method public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int, int, android.graphics.Bitmap.Config, boolean);
- method public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int, int, android.graphics.Bitmap.Config, boolean, android.graphics.ColorSpace);
- method public static android.graphics.Bitmap createBitmap(int[], int, int, int, int, android.graphics.Bitmap.Config);
- method public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int[], int, int, int, int, android.graphics.Bitmap.Config);
- method public static android.graphics.Bitmap createBitmap(int[], int, int, android.graphics.Bitmap.Config);
- method public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int[], int, int, android.graphics.Bitmap.Config);
- method public static android.graphics.Bitmap createBitmap(android.graphics.Picture);
- method public static android.graphics.Bitmap createBitmap(android.graphics.Picture, int, int, android.graphics.Bitmap.Config);
- method public static android.graphics.Bitmap createScaledBitmap(android.graphics.Bitmap, int, int, boolean);
+ method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap);
+ method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap, int, int, int, int);
+ method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap, int, int, int, int, @Nullable android.graphics.Matrix, boolean);
+ method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config);
+ method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config);
+ method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config, boolean);
+ method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config, boolean, @NonNull android.graphics.ColorSpace);
+ method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config, boolean);
+ method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config, boolean, @NonNull android.graphics.ColorSpace);
+ method public static android.graphics.Bitmap createBitmap(@NonNull @ColorInt int[], int, int, int, int, @NonNull android.graphics.Bitmap.Config);
+ method public static android.graphics.Bitmap createBitmap(@NonNull android.util.DisplayMetrics, @NonNull @ColorInt int[], int, int, int, int, @NonNull android.graphics.Bitmap.Config);
+ method public static android.graphics.Bitmap createBitmap(@NonNull @ColorInt int[], int, int, android.graphics.Bitmap.Config);
+ method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, @NonNull @ColorInt int[], int, int, @NonNull android.graphics.Bitmap.Config);
+ method @NonNull public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Picture);
+ method @NonNull public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Picture, int, int, @NonNull android.graphics.Bitmap.Config);
+ method public static android.graphics.Bitmap createScaledBitmap(@NonNull android.graphics.Bitmap, int, int, boolean);
method public int describeContents();
- method public void eraseColor(int);
- method public android.graphics.Bitmap extractAlpha();
- method public android.graphics.Bitmap extractAlpha(android.graphics.Paint, int[]);
+ method public void eraseColor(@ColorInt int);
+ method @CheckResult public android.graphics.Bitmap extractAlpha();
+ method @CheckResult public android.graphics.Bitmap extractAlpha(android.graphics.Paint, int[]);
method public int getAllocationByteCount();
method public int getByteCount();
- method public android.graphics.ColorSpace getColorSpace();
+ method @Nullable public android.graphics.ColorSpace getColorSpace();
method public android.graphics.Bitmap.Config getConfig();
method public int getDensity();
method public int getGenerationId();
method public int getHeight();
method public byte[] getNinePatchChunk();
- method public int getPixel(int, int);
- method public void getPixels(int[], int, int, int, int, int, int);
+ method @ColorInt public int getPixel(int, int);
+ method public void getPixels(@ColorInt int[], int, int, int, int, int, int);
method public int getRowBytes();
method public int getScaledHeight(android.graphics.Canvas);
method public int getScaledHeight(android.util.DisplayMetrics);
@@ -13514,29 +13549,25 @@
method public void setHasAlpha(boolean);
method public void setHasMipMap(boolean);
method public void setHeight(int);
- method public void setPixel(int, int, int);
- method public void setPixels(int[], int, int, int, int, int, int);
+ method public void setPixel(int, int, @ColorInt int);
+ method public void setPixels(@ColorInt int[], int, int, int, int, int, int);
method public void setPremultiplied(boolean);
method public void setWidth(int);
- method public static android.graphics.Bitmap wrapHardwareBuffer(android.hardware.HardwareBuffer, android.graphics.ColorSpace);
+ method @Nullable public static android.graphics.Bitmap wrapHardwareBuffer(@NonNull android.hardware.HardwareBuffer, @Nullable android.graphics.ColorSpace);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.graphics.Bitmap> CREATOR;
field public static final int DENSITY_NONE = 0; // 0x0
}
- public static final class Bitmap.CompressFormat extends java.lang.Enum {
- method public static android.graphics.Bitmap.CompressFormat valueOf(java.lang.String);
- method public static final android.graphics.Bitmap.CompressFormat[] values();
+ public enum Bitmap.CompressFormat {
enum_constant public static final android.graphics.Bitmap.CompressFormat JPEG;
enum_constant public static final android.graphics.Bitmap.CompressFormat PNG;
enum_constant public static final android.graphics.Bitmap.CompressFormat WEBP;
}
- public static final class Bitmap.Config extends java.lang.Enum {
- method public static android.graphics.Bitmap.Config valueOf(java.lang.String);
- method public static final android.graphics.Bitmap.Config[] values();
+ public enum Bitmap.Config {
enum_constant public static final android.graphics.Bitmap.Config ALPHA_8;
- enum_constant public static final deprecated android.graphics.Bitmap.Config ARGB_4444;
+ enum_constant @Deprecated public static final android.graphics.Bitmap.Config ARGB_4444;
enum_constant public static final android.graphics.Bitmap.Config ARGB_8888;
enum_constant public static final android.graphics.Bitmap.Config HARDWARE;
enum_constant public static final android.graphics.Bitmap.Config RGBA_F16;
@@ -13547,41 +13578,41 @@
ctor public BitmapFactory();
method public static android.graphics.Bitmap decodeByteArray(byte[], int, int, android.graphics.BitmapFactory.Options);
method public static android.graphics.Bitmap decodeByteArray(byte[], int, int);
- method public static android.graphics.Bitmap decodeFile(java.lang.String, android.graphics.BitmapFactory.Options);
- method public static android.graphics.Bitmap decodeFile(java.lang.String);
+ method public static android.graphics.Bitmap decodeFile(String, android.graphics.BitmapFactory.Options);
+ method public static android.graphics.Bitmap decodeFile(String);
method public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor, android.graphics.Rect, android.graphics.BitmapFactory.Options);
method public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor);
method public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int, android.graphics.BitmapFactory.Options);
method public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int);
- method public static android.graphics.Bitmap decodeResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, android.graphics.Rect, android.graphics.BitmapFactory.Options);
- method public static android.graphics.Bitmap decodeStream(java.io.InputStream, android.graphics.Rect, android.graphics.BitmapFactory.Options);
+ method @Nullable public static android.graphics.Bitmap decodeResourceStream(@Nullable android.content.res.Resources, @Nullable android.util.TypedValue, @Nullable java.io.InputStream, @Nullable android.graphics.Rect, @Nullable android.graphics.BitmapFactory.Options);
+ method @Nullable public static android.graphics.Bitmap decodeStream(@Nullable java.io.InputStream, @Nullable android.graphics.Rect, @Nullable android.graphics.BitmapFactory.Options);
method public static android.graphics.Bitmap decodeStream(java.io.InputStream);
}
public static class BitmapFactory.Options {
ctor public BitmapFactory.Options();
- method public deprecated void requestCancelDecode();
+ method @Deprecated public void requestCancelDecode();
field public android.graphics.Bitmap inBitmap;
field public int inDensity;
- field public deprecated boolean inDither;
- field public deprecated boolean inInputShareable;
+ field @Deprecated public boolean inDither;
+ field @Deprecated public boolean inInputShareable;
field public boolean inJustDecodeBounds;
field public boolean inMutable;
- field public deprecated boolean inPreferQualityOverSpeed;
+ field @Deprecated public boolean inPreferQualityOverSpeed;
field public android.graphics.ColorSpace inPreferredColorSpace;
field public android.graphics.Bitmap.Config inPreferredConfig;
field public boolean inPremultiplied;
- field public deprecated boolean inPurgeable;
+ field @Deprecated public boolean inPurgeable;
field public int inSampleSize;
field public boolean inScaled;
field public int inScreenDensity;
field public int inTargetDensity;
field public byte[] inTempStorage;
- field public deprecated boolean mCancel;
+ field @Deprecated public boolean mCancel;
field public android.graphics.ColorSpace outColorSpace;
field public android.graphics.Bitmap.Config outConfig;
field public int outHeight;
- field public java.lang.String outMimeType;
+ field public String outMimeType;
field public int outWidth;
}
@@ -13593,17 +13624,15 @@
method public static android.graphics.BitmapRegionDecoder newInstance(byte[], int, int, boolean) throws java.io.IOException;
method public static android.graphics.BitmapRegionDecoder newInstance(java.io.FileDescriptor, boolean) throws java.io.IOException;
method public static android.graphics.BitmapRegionDecoder newInstance(java.io.InputStream, boolean) throws java.io.IOException;
- method public static android.graphics.BitmapRegionDecoder newInstance(java.lang.String, boolean) throws java.io.IOException;
+ method public static android.graphics.BitmapRegionDecoder newInstance(String, boolean) throws java.io.IOException;
method public void recycle();
}
public class BitmapShader extends android.graphics.Shader {
- ctor public BitmapShader(android.graphics.Bitmap, android.graphics.Shader.TileMode, android.graphics.Shader.TileMode);
+ ctor public BitmapShader(@NonNull android.graphics.Bitmap, @NonNull android.graphics.Shader.TileMode, @NonNull android.graphics.Shader.TileMode);
}
- public final class BlendMode extends java.lang.Enum {
- method public static android.graphics.BlendMode valueOf(java.lang.String);
- method public static final android.graphics.BlendMode[] values();
+ public enum BlendMode {
enum_constant public static final android.graphics.BlendMode CLEAR;
enum_constant public static final android.graphics.BlendMode COLOR;
enum_constant public static final android.graphics.BlendMode COLOR_BURN;
@@ -13636,8 +13665,8 @@
}
public final class BlendModeColorFilter extends android.graphics.ColorFilter {
- ctor public BlendModeColorFilter(int, android.graphics.BlendMode);
- method public int getColor();
+ ctor public BlendModeColorFilter(@ColorInt int, @NonNull android.graphics.BlendMode);
+ method @ColorInt public int getColor();
method public android.graphics.BlendMode getMode();
}
@@ -13645,9 +13674,7 @@
ctor public BlurMaskFilter(float, android.graphics.BlurMaskFilter.Blur);
}
- public static final class BlurMaskFilter.Blur extends java.lang.Enum {
- method public static android.graphics.BlurMaskFilter.Blur valueOf(java.lang.String);
- method public static final android.graphics.BlurMaskFilter.Blur[] values();
+ public enum BlurMaskFilter.Blur {
enum_constant public static final android.graphics.BlurMaskFilter.Blur INNER;
enum_constant public static final android.graphics.BlurMaskFilter.Blur NORMAL;
enum_constant public static final android.graphics.BlurMaskFilter.Blur OUTER;
@@ -13674,199 +13701,196 @@
public class Canvas {
ctor public Canvas();
- ctor public Canvas(android.graphics.Bitmap);
- method public boolean clipOutPath(android.graphics.Path);
- method public boolean clipOutRect(android.graphics.RectF);
- method public boolean clipOutRect(android.graphics.Rect);
+ ctor public Canvas(@NonNull android.graphics.Bitmap);
+ method public boolean clipOutPath(@NonNull android.graphics.Path);
+ method public boolean clipOutRect(@NonNull android.graphics.RectF);
+ method public boolean clipOutRect(@NonNull android.graphics.Rect);
method public boolean clipOutRect(float, float, float, float);
method public boolean clipOutRect(int, int, int, int);
- method public deprecated boolean clipPath(android.graphics.Path, android.graphics.Region.Op);
- method public boolean clipPath(android.graphics.Path);
- method public deprecated boolean clipRect(android.graphics.RectF, android.graphics.Region.Op);
- method public deprecated boolean clipRect(android.graphics.Rect, android.graphics.Region.Op);
- method public boolean clipRect(android.graphics.RectF);
- method public boolean clipRect(android.graphics.Rect);
- method public deprecated boolean clipRect(float, float, float, float, android.graphics.Region.Op);
+ method @Deprecated public boolean clipPath(@NonNull android.graphics.Path, @NonNull android.graphics.Region.Op);
+ method public boolean clipPath(@NonNull android.graphics.Path);
+ method @Deprecated public boolean clipRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Region.Op);
+ method @Deprecated public boolean clipRect(@NonNull android.graphics.Rect, @NonNull android.graphics.Region.Op);
+ method public boolean clipRect(@NonNull android.graphics.RectF);
+ method public boolean clipRect(@NonNull android.graphics.Rect);
+ method @Deprecated public boolean clipRect(float, float, float, float, @NonNull android.graphics.Region.Op);
method public boolean clipRect(float, float, float, float);
method public boolean clipRect(int, int, int, int);
- method public void concat(android.graphics.Matrix);
+ method public void concat(@Nullable android.graphics.Matrix);
method public void disableZ();
method public void drawARGB(int, int, int, int);
- method public void drawArc(android.graphics.RectF, float, float, boolean, android.graphics.Paint);
- method public void drawArc(float, float, float, float, float, float, boolean, android.graphics.Paint);
- method public void drawBitmap(android.graphics.Bitmap, float, float, android.graphics.Paint);
- method public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.RectF, android.graphics.Paint);
- method public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Rect, android.graphics.Paint);
- method public deprecated void drawBitmap(int[], int, int, float, float, int, int, boolean, android.graphics.Paint);
- method public deprecated void drawBitmap(int[], int, int, int, int, int, int, boolean, android.graphics.Paint);
- method public void drawBitmap(android.graphics.Bitmap, android.graphics.Matrix, android.graphics.Paint);
- method public void drawBitmapMesh(android.graphics.Bitmap, int, int, float[], int, int[], int, android.graphics.Paint);
- method public void drawCircle(float, float, float, android.graphics.Paint);
- method public void drawColor(int);
- method public deprecated void drawColor(int, android.graphics.PorterDuff.Mode);
- method public void drawColor(int, android.graphics.BlendMode);
- method public void drawDoubleRoundRect(android.graphics.RectF, float, float, android.graphics.RectF, float, float, android.graphics.Paint);
- method public void drawDoubleRoundRect(android.graphics.RectF, float[], android.graphics.RectF, float[], android.graphics.Paint);
- method public void drawLine(float, float, float, float, android.graphics.Paint);
- method public void drawLines(float[], int, int, android.graphics.Paint);
- method public void drawLines(float[], android.graphics.Paint);
- method public void drawOval(android.graphics.RectF, android.graphics.Paint);
- method public void drawOval(float, float, float, float, android.graphics.Paint);
- method public void drawPaint(android.graphics.Paint);
- method public void drawPath(android.graphics.Path, android.graphics.Paint);
- method public void drawPicture(android.graphics.Picture);
- method public void drawPicture(android.graphics.Picture, android.graphics.RectF);
- method public void drawPicture(android.graphics.Picture, android.graphics.Rect);
- method public void drawPoint(float, float, android.graphics.Paint);
- method public void drawPoints(float[], int, int, android.graphics.Paint);
- method public void drawPoints(float[], android.graphics.Paint);
- method public deprecated void drawPosText(char[], int, int, float[], android.graphics.Paint);
- method public deprecated void drawPosText(java.lang.String, float[], android.graphics.Paint);
+ method public void drawArc(@NonNull android.graphics.RectF, float, float, boolean, @NonNull android.graphics.Paint);
+ method public void drawArc(float, float, float, float, float, float, boolean, @NonNull android.graphics.Paint);
+ method public void drawBitmap(@NonNull android.graphics.Bitmap, float, float, @Nullable android.graphics.Paint);
+ method public void drawBitmap(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @NonNull android.graphics.RectF, @Nullable android.graphics.Paint);
+ method public void drawBitmap(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @NonNull android.graphics.Rect, @Nullable android.graphics.Paint);
+ method @Deprecated public void drawBitmap(@NonNull int[], int, int, float, float, int, int, boolean, @Nullable android.graphics.Paint);
+ method @Deprecated public void drawBitmap(@NonNull int[], int, int, int, int, int, int, boolean, @Nullable android.graphics.Paint);
+ method public void drawBitmap(@NonNull android.graphics.Bitmap, @NonNull android.graphics.Matrix, @Nullable android.graphics.Paint);
+ method public void drawBitmapMesh(@NonNull android.graphics.Bitmap, int, int, @NonNull float[], int, @Nullable int[], int, @Nullable android.graphics.Paint);
+ method public void drawCircle(float, float, float, @NonNull android.graphics.Paint);
+ method public void drawColor(@ColorInt int);
+ method @Deprecated public void drawColor(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
+ method public void drawColor(@ColorInt int, @NonNull android.graphics.BlendMode);
+ method public void drawDoubleRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Paint);
+ method public void drawDoubleRoundRect(@NonNull android.graphics.RectF, float[], @NonNull android.graphics.RectF, float[], @NonNull android.graphics.Paint);
+ method public void drawLine(float, float, float, float, @NonNull android.graphics.Paint);
+ method public void drawLines(@Size(multiple=4) @NonNull float[], int, int, @NonNull android.graphics.Paint);
+ method public void drawLines(@Size(multiple=4) @NonNull float[], @NonNull android.graphics.Paint);
+ method public void drawOval(@NonNull android.graphics.RectF, @NonNull android.graphics.Paint);
+ method public void drawOval(float, float, float, float, @NonNull android.graphics.Paint);
+ method public void drawPaint(@NonNull android.graphics.Paint);
+ method public void drawPath(@NonNull android.graphics.Path, @NonNull android.graphics.Paint);
+ method public void drawPicture(@NonNull android.graphics.Picture);
+ method public void drawPicture(@NonNull android.graphics.Picture, @NonNull android.graphics.RectF);
+ method public void drawPicture(@NonNull android.graphics.Picture, @NonNull android.graphics.Rect);
+ method public void drawPoint(float, float, @NonNull android.graphics.Paint);
+ method public void drawPoints(@Size(multiple=2) float[], int, int, @NonNull android.graphics.Paint);
+ method public void drawPoints(@Size(multiple=2) @NonNull float[], @NonNull android.graphics.Paint);
+ method @Deprecated public void drawPosText(@NonNull char[], int, int, @NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
+ method @Deprecated public void drawPosText(@NonNull String, @NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
method public void drawRGB(int, int, int);
- method public void drawRect(android.graphics.RectF, android.graphics.Paint);
- method public void drawRect(android.graphics.Rect, android.graphics.Paint);
- method public void drawRect(float, float, float, float, android.graphics.Paint);
- method public void drawRenderNode(android.graphics.RenderNode);
- method public void drawRoundRect(android.graphics.RectF, float, float, android.graphics.Paint);
- method public void drawRoundRect(float, float, float, float, float, float, android.graphics.Paint);
- method public void drawText(char[], int, int, float, float, android.graphics.Paint);
- method public void drawText(java.lang.String, float, float, android.graphics.Paint);
- method public void drawText(java.lang.String, int, int, float, float, android.graphics.Paint);
- method public void drawText(java.lang.CharSequence, int, int, float, float, android.graphics.Paint);
- method public void drawTextOnPath(char[], int, int, android.graphics.Path, float, float, android.graphics.Paint);
- method public void drawTextOnPath(java.lang.String, android.graphics.Path, float, float, android.graphics.Paint);
- method public void drawTextRun(char[], int, int, int, int, float, float, boolean, android.graphics.Paint);
- method public void drawTextRun(java.lang.CharSequence, int, int, int, int, float, float, boolean, android.graphics.Paint);
- method public void drawVertices(android.graphics.Canvas.VertexMode, int, float[], int, float[], int, int[], int, short[], int, int, android.graphics.Paint);
+ method public void drawRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Paint);
+ method public void drawRect(@NonNull android.graphics.Rect, @NonNull android.graphics.Paint);
+ method public void drawRect(float, float, float, float, @NonNull android.graphics.Paint);
+ method public void drawRenderNode(@NonNull android.graphics.RenderNode);
+ method public void drawRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Paint);
+ method public void drawRoundRect(float, float, float, float, float, float, @NonNull android.graphics.Paint);
+ method public void drawText(@NonNull char[], int, int, float, float, @NonNull android.graphics.Paint);
+ method public void drawText(@NonNull String, float, float, @NonNull android.graphics.Paint);
+ method public void drawText(@NonNull String, int, int, float, float, @NonNull android.graphics.Paint);
+ method public void drawText(@NonNull CharSequence, int, int, float, float, @NonNull android.graphics.Paint);
+ method public void drawTextOnPath(@NonNull char[], int, int, @NonNull android.graphics.Path, float, float, @NonNull android.graphics.Paint);
+ method public void drawTextOnPath(@NonNull String, @NonNull android.graphics.Path, float, float, @NonNull android.graphics.Paint);
+ method public void drawTextRun(@NonNull char[], int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
+ method public void drawTextRun(@NonNull CharSequence, int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
+ method public void drawTextRun(@NonNull android.graphics.text.MeasuredText, int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
+ method public void drawVertices(@NonNull android.graphics.Canvas.VertexMode, int, @NonNull float[], int, @Nullable float[], int, @Nullable int[], int, @Nullable short[], int, int, @NonNull android.graphics.Paint);
method public void enableZ();
- method public boolean getClipBounds(android.graphics.Rect);
- method public final android.graphics.Rect getClipBounds();
+ method public boolean getClipBounds(@Nullable android.graphics.Rect);
+ method @NonNull public final android.graphics.Rect getClipBounds();
method public int getDensity();
- method public android.graphics.DrawFilter getDrawFilter();
+ method @Nullable public android.graphics.DrawFilter getDrawFilter();
method public int getHeight();
- method public deprecated void getMatrix(android.graphics.Matrix);
- method public final deprecated android.graphics.Matrix getMatrix();
+ method @Deprecated public void getMatrix(@NonNull android.graphics.Matrix);
+ method @Deprecated @NonNull public final android.graphics.Matrix getMatrix();
method public int getMaximumBitmapHeight();
method public int getMaximumBitmapWidth();
method public int getSaveCount();
method public int getWidth();
method public boolean isHardwareAccelerated();
method public boolean isOpaque();
- method public boolean quickReject(android.graphics.RectF, android.graphics.Canvas.EdgeType);
- method public boolean quickReject(android.graphics.Path, android.graphics.Canvas.EdgeType);
- method public boolean quickReject(float, float, float, float, android.graphics.Canvas.EdgeType);
+ method public boolean quickReject(@NonNull android.graphics.RectF, @NonNull android.graphics.Canvas.EdgeType);
+ method public boolean quickReject(@NonNull android.graphics.Path, @NonNull android.graphics.Canvas.EdgeType);
+ method public boolean quickReject(float, float, float, float, @NonNull android.graphics.Canvas.EdgeType);
method public void restore();
method public void restoreToCount(int);
method public void rotate(float);
method public final void rotate(float, float, float);
method public int save();
- method public deprecated int saveLayer(android.graphics.RectF, android.graphics.Paint, int);
- method public int saveLayer(android.graphics.RectF, android.graphics.Paint);
- method public deprecated int saveLayer(float, float, float, float, android.graphics.Paint, int);
- method public int saveLayer(float, float, float, float, android.graphics.Paint);
- method public deprecated int saveLayerAlpha(android.graphics.RectF, int, int);
- method public int saveLayerAlpha(android.graphics.RectF, int);
- method public deprecated int saveLayerAlpha(float, float, float, float, int, int);
+ method @Deprecated public int saveLayer(@Nullable android.graphics.RectF, @Nullable android.graphics.Paint, int);
+ method public int saveLayer(@Nullable android.graphics.RectF, @Nullable android.graphics.Paint);
+ method @Deprecated public int saveLayer(float, float, float, float, @Nullable android.graphics.Paint, int);
+ method public int saveLayer(float, float, float, float, @Nullable android.graphics.Paint);
+ method @Deprecated public int saveLayerAlpha(@Nullable android.graphics.RectF, int, int);
+ method public int saveLayerAlpha(@Nullable android.graphics.RectF, int);
+ method @Deprecated public int saveLayerAlpha(float, float, float, float, int, int);
method public int saveLayerAlpha(float, float, float, float, int);
method public void scale(float, float);
method public final void scale(float, float, float, float);
- method public void setBitmap(android.graphics.Bitmap);
+ method public void setBitmap(@Nullable android.graphics.Bitmap);
method public void setDensity(int);
- method public void setDrawFilter(android.graphics.DrawFilter);
- method public void setMatrix(android.graphics.Matrix);
+ method public void setDrawFilter(@Nullable android.graphics.DrawFilter);
+ method public void setMatrix(@Nullable android.graphics.Matrix);
method public void skew(float, float);
method public void translate(float, float);
field public static final int ALL_SAVE_FLAG = 31; // 0x1f
}
- public static final class Canvas.EdgeType extends java.lang.Enum {
- method public static android.graphics.Canvas.EdgeType valueOf(java.lang.String);
- method public static final android.graphics.Canvas.EdgeType[] values();
+ public enum Canvas.EdgeType {
enum_constant public static final android.graphics.Canvas.EdgeType AA;
enum_constant public static final android.graphics.Canvas.EdgeType BW;
}
- public static final class Canvas.VertexMode extends java.lang.Enum {
- method public static android.graphics.Canvas.VertexMode valueOf(java.lang.String);
- method public static final android.graphics.Canvas.VertexMode[] values();
+ public enum Canvas.VertexMode {
enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLES;
enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLE_FAN;
enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLE_STRIP;
}
- public class Color {
+ @AnyThread public class Color {
ctor public Color();
- method public static int HSVToColor(float[]);
- method public static int HSVToColor(int, float[]);
- method public static void RGBToHSV(int, int, int, float[]);
+ method @ColorInt public static int HSVToColor(@Size(3) float[]);
+ method @ColorInt public static int HSVToColor(@IntRange(from=0, to=255) int, @Size(3) float[]);
+ method public static void RGBToHSV(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @Size(3) float[]);
method public float alpha();
- method public static float alpha(long);
- method public static int alpha(int);
- method public static int argb(int, int, int, int);
- method public static int argb(float, float, float, float);
+ method public static float alpha(@ColorLong long);
+ method @IntRange(from=0, to=255) public static int alpha(int);
+ method @ColorInt public static int argb(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int);
+ method @ColorInt public static int argb(float, float, float, float);
method public float blue();
- method public static float blue(long);
- method public static int blue(int);
- method public static android.graphics.ColorSpace colorSpace(long);
- method public static void colorToHSV(int, float[]);
- method public android.graphics.Color convert(android.graphics.ColorSpace);
- method public static long convert(int, android.graphics.ColorSpace);
- method public static long convert(long, android.graphics.ColorSpace);
- method public static long convert(float, float, float, float, android.graphics.ColorSpace, android.graphics.ColorSpace);
- method public static long convert(long, android.graphics.ColorSpace.Connector);
- method public static long convert(float, float, float, float, android.graphics.ColorSpace.Connector);
- method public android.graphics.ColorSpace getColorSpace();
- method public float getComponent(int);
- method public int getComponentCount();
- method public float[] getComponents();
- method public float[] getComponents(float[]);
+ method public static float blue(@ColorLong long);
+ method @IntRange(from=0, to=255) public static int blue(int);
+ method @NonNull public static android.graphics.ColorSpace colorSpace(@ColorLong long);
+ method public static void colorToHSV(@ColorInt int, @Size(3) float[]);
+ method @NonNull public android.graphics.Color convert(@NonNull android.graphics.ColorSpace);
+ method @ColorLong public static long convert(@ColorInt int, @NonNull android.graphics.ColorSpace);
+ method @ColorLong public static long convert(@ColorLong long, @NonNull android.graphics.ColorSpace);
+ method @ColorLong public static long convert(float, float, float, float, @NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace);
+ method @ColorLong public static long convert(@ColorLong long, @NonNull android.graphics.ColorSpace.Connector);
+ method @ColorLong public static long convert(float, float, float, float, @NonNull android.graphics.ColorSpace.Connector);
+ method @NonNull public android.graphics.ColorSpace getColorSpace();
+ method public float getComponent(@IntRange(from=0, to=4) int);
+ method @IntRange(from=4, to=5) public int getComponentCount();
+ method @NonNull @Size(min=4, max=5) public float[] getComponents();
+ method @NonNull @Size(min=4) public float[] getComponents(@Nullable @Size(min=4) float[]);
method public android.graphics.ColorSpace.Model getModel();
method public float green();
- method public static float green(long);
- method public static int green(int);
- method public static boolean isInColorSpace(long, android.graphics.ColorSpace);
+ method public static float green(@ColorLong long);
+ method @IntRange(from=0, to=255) public static int green(int);
+ method public static boolean isInColorSpace(@ColorLong long, @NonNull android.graphics.ColorSpace);
method public boolean isSrgb();
- method public static boolean isSrgb(long);
+ method public static boolean isSrgb(@ColorLong long);
method public boolean isWideGamut();
- method public static boolean isWideGamut(long);
+ method public static boolean isWideGamut(@ColorLong long);
method public float luminance();
- method public static float luminance(long);
- method public static float luminance(int);
- method public long pack();
- method public static long pack(int);
- method public static long pack(float, float, float);
- method public static long pack(float, float, float, float);
- method public static long pack(float, float, float, float, android.graphics.ColorSpace);
- method public static int parseColor(java.lang.String);
+ method public static float luminance(@ColorLong long);
+ method public static float luminance(@ColorInt int);
+ method @ColorLong public long pack();
+ method @ColorLong public static long pack(@ColorInt int);
+ method @ColorLong public static long pack(float, float, float);
+ method @ColorLong public static long pack(float, float, float, float);
+ method @ColorLong public static long pack(float, float, float, float, @NonNull android.graphics.ColorSpace);
+ method @ColorInt public static int parseColor(@Size(min=1) String);
method public float red();
- method public static float red(long);
- method public static int red(int);
- method public static int rgb(int, int, int);
- method public static int rgb(float, float, float);
- method public int toArgb();
- method public static int toArgb(long);
- method public static android.graphics.Color valueOf(int);
- method public static android.graphics.Color valueOf(long);
- method public static android.graphics.Color valueOf(float, float, float);
- method public static android.graphics.Color valueOf(float, float, float, float);
- method public static android.graphics.Color valueOf(float, float, float, float, android.graphics.ColorSpace);
- method public static android.graphics.Color valueOf(float[], android.graphics.ColorSpace);
- field public static final int BLACK = -16777216; // 0xff000000
- field public static final int BLUE = -16776961; // 0xff0000ff
- field public static final int CYAN = -16711681; // 0xff00ffff
- field public static final int DKGRAY = -12303292; // 0xff444444
- field public static final int GRAY = -7829368; // 0xff888888
- field public static final int GREEN = -16711936; // 0xff00ff00
- field public static final int LTGRAY = -3355444; // 0xffcccccc
- field public static final int MAGENTA = -65281; // 0xffff00ff
- field public static final int RED = -65536; // 0xffff0000
- field public static final int TRANSPARENT = 0; // 0x0
- field public static final int WHITE = -1; // 0xffffffff
- field public static final int YELLOW = -256; // 0xffffff00
+ method public static float red(@ColorLong long);
+ method @IntRange(from=0, to=255) public static int red(int);
+ method @ColorInt public static int rgb(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int);
+ method @ColorInt public static int rgb(float, float, float);
+ method @ColorInt public int toArgb();
+ method @ColorInt public static int toArgb(@ColorLong long);
+ method @NonNull public static android.graphics.Color valueOf(@ColorInt int);
+ method @NonNull public static android.graphics.Color valueOf(@ColorLong long);
+ method @NonNull public static android.graphics.Color valueOf(float, float, float);
+ method @NonNull public static android.graphics.Color valueOf(float, float, float, float);
+ method @NonNull public static android.graphics.Color valueOf(float, float, float, float, @NonNull android.graphics.ColorSpace);
+ method @NonNull public static android.graphics.Color valueOf(@NonNull @Size(min=4, max=5) float[], @NonNull android.graphics.ColorSpace);
+ field @ColorInt public static final int BLACK = -16777216; // 0xff000000
+ field @ColorInt public static final int BLUE = -16776961; // 0xff0000ff
+ field @ColorInt public static final int CYAN = -16711681; // 0xff00ffff
+ field @ColorInt public static final int DKGRAY = -12303292; // 0xff444444
+ field @ColorInt public static final int GRAY = -7829368; // 0xff888888
+ field @ColorInt public static final int GREEN = -16711936; // 0xff00ff00
+ field @ColorInt public static final int LTGRAY = -3355444; // 0xffcccccc
+ field @ColorInt public static final int MAGENTA = -65281; // 0xffff00ff
+ field @ColorInt public static final int RED = -65536; // 0xffff0000
+ field @ColorInt public static final int TRANSPARENT = 0; // 0x0
+ field @ColorInt public static final int WHITE = -1; // 0xffffffff
+ field @ColorInt public static final int YELLOW = -256; // 0xffffff00
}
public class ColorFilter {
- ctor public deprecated ColorFilter();
+ ctor @Deprecated public ColorFilter();
}
public class ColorMatrix {
@@ -13888,34 +13912,34 @@
}
public class ColorMatrixColorFilter extends android.graphics.ColorFilter {
- ctor public ColorMatrixColorFilter(android.graphics.ColorMatrix);
- ctor public ColorMatrixColorFilter(float[]);
+ ctor public ColorMatrixColorFilter(@NonNull android.graphics.ColorMatrix);
+ ctor public ColorMatrixColorFilter(@NonNull float[]);
method public void getColorMatrix(android.graphics.ColorMatrix);
}
- public abstract class ColorSpace {
- method public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[]);
- method public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[], android.graphics.ColorSpace.Adaptation);
- method public static float[] cctToIlluminantdXyz(int);
- method public static float[] chromaticAdaptation(android.graphics.ColorSpace.Adaptation, float[], float[]);
- method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace);
- method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent);
- method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace);
- method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent);
- method public float[] fromXyz(float, float, float);
- method public abstract float[] fromXyz(float[]);
- method public static android.graphics.ColorSpace get(android.graphics.ColorSpace.Named);
- method public int getComponentCount();
- method public int getId();
- method public abstract float getMaxValue(int);
- method public abstract float getMinValue(int);
- method public android.graphics.ColorSpace.Model getModel();
- method public java.lang.String getName();
+ @AnyThread public abstract class ColorSpace {
+ method @NonNull public static android.graphics.ColorSpace adapt(@NonNull android.graphics.ColorSpace, @NonNull @Size(min=2, max=3) float[]);
+ method @NonNull public static android.graphics.ColorSpace adapt(@NonNull android.graphics.ColorSpace, @NonNull @Size(min=2, max=3) float[], @NonNull android.graphics.ColorSpace.Adaptation);
+ method @NonNull @Size(3) public static float[] cctToIlluminantdXyz(@IntRange(from=1) int);
+ method @NonNull @Size(9) public static float[] chromaticAdaptation(@NonNull android.graphics.ColorSpace.Adaptation, @NonNull @Size(min=2, max=3) float[], @NonNull @Size(min=2, max=3) float[]);
+ method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace);
+ method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace.RenderIntent);
+ method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace);
+ method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace.RenderIntent);
+ method @NonNull @Size(min=3) public float[] fromXyz(float, float, float);
+ method @NonNull @Size(min=3) public abstract float[] fromXyz(@NonNull @Size(min=3) float[]);
+ method @NonNull public static android.graphics.ColorSpace get(@NonNull android.graphics.ColorSpace.Named);
+ method @IntRange(from=1, to=4) public int getComponentCount();
+ method @IntRange(from=android.graphics.ColorSpace.MIN_ID, to=android.graphics.ColorSpace.MAX_ID) public int getId();
+ method public abstract float getMaxValue(@IntRange(from=0, to=3) int);
+ method public abstract float getMinValue(@IntRange(from=0, to=3) int);
+ method @NonNull public android.graphics.ColorSpace.Model getModel();
+ method @NonNull public String getName();
method public boolean isSrgb();
method public abstract boolean isWideGamut();
- method public static android.graphics.ColorSpace match(float[], android.graphics.ColorSpace.Rgb.TransferParameters);
- method public float[] toXyz(float, float, float);
- method public abstract float[] toXyz(float[]);
+ method @Nullable public static android.graphics.ColorSpace match(@NonNull @Size(9) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
+ method @NonNull @Size(3) public float[] toXyz(float, float, float);
+ method @NonNull @Size(min=3) public abstract float[] toXyz(@NonNull @Size(min=3) float[]);
field public static final float[] ILLUMINANT_A;
field public static final float[] ILLUMINANT_B;
field public static final float[] ILLUMINANT_C;
@@ -13929,35 +13953,29 @@
field public static final int MIN_ID = -1; // 0xffffffff
}
- public static final class ColorSpace.Adaptation extends java.lang.Enum {
- method public static android.graphics.ColorSpace.Adaptation valueOf(java.lang.String);
- method public static final android.graphics.ColorSpace.Adaptation[] values();
+ public enum ColorSpace.Adaptation {
enum_constant public static final android.graphics.ColorSpace.Adaptation BRADFORD;
enum_constant public static final android.graphics.ColorSpace.Adaptation CIECAT02;
enum_constant public static final android.graphics.ColorSpace.Adaptation VON_KRIES;
}
- public static class ColorSpace.Connector {
- method public android.graphics.ColorSpace getDestination();
+ @AnyThread public static class ColorSpace.Connector {
+ method @NonNull public android.graphics.ColorSpace getDestination();
method public android.graphics.ColorSpace.RenderIntent getRenderIntent();
- method public android.graphics.ColorSpace getSource();
- method public float[] transform(float, float, float);
- method public float[] transform(float[]);
+ method @NonNull public android.graphics.ColorSpace getSource();
+ method @NonNull @Size(3) public float[] transform(float, float, float);
+ method @NonNull @Size(min=3) public float[] transform(@NonNull @Size(min=3) float[]);
}
- public static final class ColorSpace.Model extends java.lang.Enum {
- method public int getComponentCount();
- method public static android.graphics.ColorSpace.Model valueOf(java.lang.String);
- method public static final android.graphics.ColorSpace.Model[] values();
+ public enum ColorSpace.Model {
+ method @IntRange(from=1, to=4) public int getComponentCount();
enum_constant public static final android.graphics.ColorSpace.Model CMYK;
enum_constant public static final android.graphics.ColorSpace.Model LAB;
enum_constant public static final android.graphics.ColorSpace.Model RGB;
enum_constant public static final android.graphics.ColorSpace.Model XYZ;
}
- public static final class ColorSpace.Named extends java.lang.Enum {
- method public static android.graphics.ColorSpace.Named valueOf(java.lang.String);
- method public static final android.graphics.ColorSpace.Named[] values();
+ public enum ColorSpace.Named {
enum_constant public static final android.graphics.ColorSpace.Named ACES;
enum_constant public static final android.graphics.ColorSpace.Named ACESCG;
enum_constant public static final android.graphics.ColorSpace.Named ADOBE_RGB;
@@ -13976,42 +13994,40 @@
enum_constant public static final android.graphics.ColorSpace.Named SRGB;
}
- public static final class ColorSpace.RenderIntent extends java.lang.Enum {
- method public static android.graphics.ColorSpace.RenderIntent valueOf(java.lang.String);
- method public static final android.graphics.ColorSpace.RenderIntent[] values();
+ public enum ColorSpace.RenderIntent {
enum_constant public static final android.graphics.ColorSpace.RenderIntent ABSOLUTE;
enum_constant public static final android.graphics.ColorSpace.RenderIntent PERCEPTUAL;
enum_constant public static final android.graphics.ColorSpace.RenderIntent RELATIVE;
enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION;
}
- public static class ColorSpace.Rgb extends android.graphics.ColorSpace {
- ctor public ColorSpace.Rgb(java.lang.String, float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator);
- ctor public ColorSpace.Rgb(java.lang.String, float[], float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator, float, float);
- ctor public ColorSpace.Rgb(java.lang.String, float[], android.graphics.ColorSpace.Rgb.TransferParameters);
- ctor public ColorSpace.Rgb(java.lang.String, float[], float[], android.graphics.ColorSpace.Rgb.TransferParameters);
- ctor public ColorSpace.Rgb(java.lang.String, float[], double);
- ctor public ColorSpace.Rgb(java.lang.String, float[], float[], double);
- method public float[] fromLinear(float, float, float);
- method public float[] fromLinear(float[]);
- method public float[] fromXyz(float[]);
- method public java.util.function.DoubleUnaryOperator getEotf();
- method public float[] getInverseTransform(float[]);
- method public float[] getInverseTransform();
+ @AnyThread public static class ColorSpace.Rgb extends android.graphics.ColorSpace {
+ ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], @NonNull java.util.function.DoubleUnaryOperator, @NonNull java.util.function.DoubleUnaryOperator);
+ ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], @NonNull java.util.function.DoubleUnaryOperator, @NonNull java.util.function.DoubleUnaryOperator, float, float);
+ ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
+ ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
+ ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], double);
+ ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], double);
+ method @NonNull @Size(3) public float[] fromLinear(float, float, float);
+ method @NonNull @Size(min=3) public float[] fromLinear(@NonNull @Size(min=3) float[]);
+ method @NonNull @Size(min=3) public float[] fromXyz(@NonNull @Size(min=3) float[]);
+ method @NonNull public java.util.function.DoubleUnaryOperator getEotf();
+ method @NonNull @Size(min=9) public float[] getInverseTransform(@NonNull @Size(min=9) float[]);
+ method @NonNull @Size(9) public float[] getInverseTransform();
method public float getMaxValue(int);
method public float getMinValue(int);
- method public java.util.function.DoubleUnaryOperator getOetf();
- method public float[] getPrimaries(float[]);
- method public float[] getPrimaries();
- method public android.graphics.ColorSpace.Rgb.TransferParameters getTransferParameters();
- method public float[] getTransform(float[]);
- method public float[] getTransform();
- method public float[] getWhitePoint(float[]);
- method public float[] getWhitePoint();
+ method @NonNull public java.util.function.DoubleUnaryOperator getOetf();
+ method @NonNull @Size(min=6) public float[] getPrimaries(@NonNull @Size(min=6) float[]);
+ method @NonNull @Size(6) public float[] getPrimaries();
+ method @Nullable public android.graphics.ColorSpace.Rgb.TransferParameters getTransferParameters();
+ method @NonNull @Size(min=9) public float[] getTransform(@NonNull @Size(min=9) float[]);
+ method @NonNull @Size(9) public float[] getTransform();
+ method @NonNull @Size(min=2) public float[] getWhitePoint(@NonNull @Size(min=2) float[]);
+ method @NonNull @Size(2) public float[] getWhitePoint();
method public boolean isWideGamut();
- method public float[] toLinear(float, float, float);
- method public float[] toLinear(float[]);
- method public float[] toXyz(float[]);
+ method @NonNull @Size(3) public float[] toLinear(float, float, float);
+ method @NonNull @Size(min=3) public float[] toLinear(@NonNull @Size(min=3) float[]);
+ method @NonNull @Size(min=3) public float[] toXyz(@NonNull @Size(min=3) float[]);
}
public static class ColorSpace.Rgb.TransferParameters {
@@ -14031,8 +14047,8 @@
}
public class ComposeShader extends android.graphics.Shader {
- ctor public ComposeShader(android.graphics.Shader, android.graphics.Shader, android.graphics.Xfermode);
- ctor public ComposeShader(android.graphics.Shader, android.graphics.Shader, android.graphics.PorterDuff.Mode);
+ ctor public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.Xfermode);
+ ctor public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.PorterDuff.Mode);
}
public class CornerPathEffect extends android.graphics.PathEffect {
@@ -14052,39 +14068,39 @@
}
public class EmbossMaskFilter extends android.graphics.MaskFilter {
- ctor public deprecated EmbossMaskFilter(float[], float, float, float);
+ ctor @Deprecated public EmbossMaskFilter(float[], float, float, float);
}
public final class ImageDecoder implements java.lang.AutoCloseable {
method public void close();
- method public static android.graphics.ImageDecoder.Source createSource(android.content.res.Resources, int);
- method public static android.graphics.ImageDecoder.Source createSource(android.content.ContentResolver, android.net.Uri);
- method public static android.graphics.ImageDecoder.Source createSource(android.content.res.AssetManager, java.lang.String);
- method public static android.graphics.ImageDecoder.Source createSource(java.nio.ByteBuffer);
- method public static android.graphics.ImageDecoder.Source createSource(java.io.File);
- method public static android.graphics.ImageDecoder.Source createSource(java.util.concurrent.Callable<android.content.res.AssetFileDescriptor>);
- method public static android.graphics.Bitmap decodeBitmap(android.graphics.ImageDecoder.Source, android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
- method public static android.graphics.Bitmap decodeBitmap(android.graphics.ImageDecoder.Source) throws java.io.IOException;
- method public static android.graphics.drawable.Drawable decodeDrawable(android.graphics.ImageDecoder.Source, android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
- method public static android.graphics.drawable.Drawable decodeDrawable(android.graphics.ImageDecoder.Source) throws java.io.IOException;
+ method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.Resources, int);
+ method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.ContentResolver, @NonNull android.net.Uri);
+ method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.AssetManager, @NonNull String);
+ method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.nio.ByteBuffer);
+ method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.io.File);
+ method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.util.concurrent.Callable<android.content.res.AssetFileDescriptor>);
+ method @WorkerThread @NonNull public static android.graphics.Bitmap decodeBitmap(@NonNull android.graphics.ImageDecoder.Source, @NonNull android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
+ method @WorkerThread @NonNull public static android.graphics.Bitmap decodeBitmap(@NonNull android.graphics.ImageDecoder.Source) throws java.io.IOException;
+ method @WorkerThread @NonNull public static android.graphics.drawable.Drawable decodeDrawable(@NonNull android.graphics.ImageDecoder.Source, @NonNull android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
+ method @WorkerThread @NonNull public static android.graphics.drawable.Drawable decodeDrawable(@NonNull android.graphics.ImageDecoder.Source) throws java.io.IOException;
method public int getAllocator();
- method public android.graphics.Rect getCrop();
+ method @Nullable public android.graphics.Rect getCrop();
method public int getMemorySizePolicy();
- method public android.graphics.ImageDecoder.OnPartialImageListener getOnPartialImageListener();
- method public android.graphics.PostProcessor getPostProcessor();
+ method @Nullable public android.graphics.ImageDecoder.OnPartialImageListener getOnPartialImageListener();
+ method @Nullable public android.graphics.PostProcessor getPostProcessor();
method public boolean isDecodeAsAlphaMaskEnabled();
method public boolean isMutableRequired();
method public boolean isUnpremultipliedRequired();
method public void setAllocator(int);
- method public void setCrop(android.graphics.Rect);
+ method public void setCrop(@Nullable android.graphics.Rect);
method public void setDecodeAsAlphaMaskEnabled(boolean);
method public void setMemorySizePolicy(int);
method public void setMutableRequired(boolean);
- method public void setOnPartialImageListener(android.graphics.ImageDecoder.OnPartialImageListener);
- method public void setPostProcessor(android.graphics.PostProcessor);
+ method public void setOnPartialImageListener(@Nullable android.graphics.ImageDecoder.OnPartialImageListener);
+ method public void setPostProcessor(@Nullable android.graphics.PostProcessor);
method public void setTargetColorSpace(android.graphics.ColorSpace);
- method public void setTargetSampleSize(int);
- method public void setTargetSize(int, int);
+ method public void setTargetSampleSize(@IntRange(from=1) int);
+ method public void setTargetSize(@Px @IntRange(from=1) int, @Px @IntRange(from=1) int);
method public void setUnpremultipliedRequired(boolean);
field public static final int ALLOCATOR_DEFAULT = 0; // 0x0
field public static final int ALLOCATOR_HARDWARE = 3; // 0x3
@@ -14096,28 +14112,28 @@
public static final class ImageDecoder.DecodeException extends java.io.IOException {
method public int getError();
- method public android.graphics.ImageDecoder.Source getSource();
+ method @NonNull public android.graphics.ImageDecoder.Source getSource();
field public static final int SOURCE_EXCEPTION = 1; // 0x1
field public static final int SOURCE_INCOMPLETE = 2; // 0x2
field public static final int SOURCE_MALFORMED_DATA = 3; // 0x3
}
public static class ImageDecoder.ImageInfo {
- method public android.graphics.ColorSpace getColorSpace();
- method public java.lang.String getMimeType();
- method public android.util.Size getSize();
+ method @Nullable public android.graphics.ColorSpace getColorSpace();
+ method @NonNull public String getMimeType();
+ method @NonNull public android.util.Size getSize();
method public boolean isAnimated();
}
- public static abstract interface ImageDecoder.OnHeaderDecodedListener {
- method public abstract void onHeaderDecoded(android.graphics.ImageDecoder, android.graphics.ImageDecoder.ImageInfo, android.graphics.ImageDecoder.Source);
+ public static interface ImageDecoder.OnHeaderDecodedListener {
+ method public void onHeaderDecoded(@NonNull android.graphics.ImageDecoder, @NonNull android.graphics.ImageDecoder.ImageInfo, @NonNull android.graphics.ImageDecoder.Source);
}
- public static abstract interface ImageDecoder.OnPartialImageListener {
- method public abstract boolean onPartialImage(android.graphics.ImageDecoder.DecodeException);
+ public static interface ImageDecoder.OnPartialImageListener {
+ method public boolean onPartialImage(@NonNull android.graphics.ImageDecoder.DecodeException);
}
- public static abstract class ImageDecoder.Source {
+ public abstract static class ImageDecoder.Source {
}
public class ImageFormat {
@@ -14146,12 +14162,12 @@
}
public final class Insets {
- method public static android.graphics.Insets add(android.graphics.Insets, android.graphics.Insets);
- method public static android.graphics.Insets max(android.graphics.Insets, android.graphics.Insets);
- method public static android.graphics.Insets min(android.graphics.Insets, android.graphics.Insets);
- method public static android.graphics.Insets of(int, int, int, int);
- method public static android.graphics.Insets of(android.graphics.Rect);
- method public static android.graphics.Insets subtract(android.graphics.Insets, android.graphics.Insets);
+ method @NonNull public static android.graphics.Insets add(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
+ method @NonNull public static android.graphics.Insets max(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
+ method @NonNull public static android.graphics.Insets min(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
+ method @NonNull public static android.graphics.Insets of(int, int, int, int);
+ method @NonNull public static android.graphics.Insets of(@Nullable android.graphics.Rect);
+ method @NonNull public static android.graphics.Insets subtract(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
field public static final android.graphics.Insets NONE;
field public final int bottom;
field public final int left;
@@ -14173,23 +14189,21 @@
method public android.graphics.Interpolator.Result timeToValues(int, float[]);
}
- public static final class Interpolator.Result extends java.lang.Enum {
- method public static android.graphics.Interpolator.Result valueOf(java.lang.String);
- method public static final android.graphics.Interpolator.Result[] values();
+ public enum Interpolator.Result {
enum_constant public static final android.graphics.Interpolator.Result FREEZE_END;
enum_constant public static final android.graphics.Interpolator.Result FREEZE_START;
enum_constant public static final android.graphics.Interpolator.Result NORMAL;
}
public class LightingColorFilter extends android.graphics.ColorFilter {
- ctor public LightingColorFilter(int, int);
- method public int getColorAdd();
- method public int getColorMultiply();
+ ctor public LightingColorFilter(@ColorInt int, @ColorInt int);
+ method @ColorInt public int getColorAdd();
+ method @ColorInt public int getColorMultiply();
}
public class LinearGradient extends android.graphics.Shader {
- ctor public LinearGradient(float, float, float, float, int[], float[], android.graphics.Shader.TileMode);
- ctor public LinearGradient(float, float, float, float, int, int, android.graphics.Shader.TileMode);
+ ctor public LinearGradient(float, float, float, float, @NonNull @ColorInt int[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
+ ctor public LinearGradient(float, float, float, float, @ColorInt int, @ColorInt int, @NonNull android.graphics.Shader.TileMode);
}
public class MaskFilter {
@@ -14244,7 +14258,7 @@
method public void setSkew(float, float);
method public void setTranslate(float, float);
method public void setValues(float[]);
- method public java.lang.String toShortString();
+ method public String toShortString();
field public static final int MPERSP_0 = 6; // 0x6
field public static final int MPERSP_1 = 7; // 0x7
field public static final int MPERSP_2 = 8; // 0x8
@@ -14256,38 +14270,36 @@
field public static final int MTRANS_Y = 5; // 0x5
}
- public static final class Matrix.ScaleToFit extends java.lang.Enum {
- method public static android.graphics.Matrix.ScaleToFit valueOf(java.lang.String);
- method public static final android.graphics.Matrix.ScaleToFit[] values();
+ public enum Matrix.ScaleToFit {
enum_constant public static final android.graphics.Matrix.ScaleToFit CENTER;
enum_constant public static final android.graphics.Matrix.ScaleToFit END;
enum_constant public static final android.graphics.Matrix.ScaleToFit FILL;
enum_constant public static final android.graphics.Matrix.ScaleToFit START;
}
- public deprecated class Movie {
- method public static android.graphics.Movie decodeByteArray(byte[], int, int);
- method public static android.graphics.Movie decodeFile(java.lang.String);
- method public static android.graphics.Movie decodeStream(java.io.InputStream);
- method public void draw(android.graphics.Canvas, float, float, android.graphics.Paint);
- method public void draw(android.graphics.Canvas, float, float);
- method public int duration();
- method public int height();
- method public boolean isOpaque();
- method public boolean setTime(int);
- method public int width();
+ @Deprecated public class Movie {
+ method @Deprecated public static android.graphics.Movie decodeByteArray(byte[], int, int);
+ method @Deprecated public static android.graphics.Movie decodeFile(String);
+ method @Deprecated public static android.graphics.Movie decodeStream(java.io.InputStream);
+ method @Deprecated public void draw(android.graphics.Canvas, float, float, android.graphics.Paint);
+ method @Deprecated public void draw(android.graphics.Canvas, float, float);
+ method @Deprecated public int duration();
+ method @Deprecated public int height();
+ method @Deprecated public boolean isOpaque();
+ method @Deprecated public boolean setTime(int);
+ method @Deprecated public int width();
}
public class NinePatch {
ctor public NinePatch(android.graphics.Bitmap, byte[]);
- ctor public NinePatch(android.graphics.Bitmap, byte[], java.lang.String);
+ ctor public NinePatch(android.graphics.Bitmap, byte[], String);
method public void draw(android.graphics.Canvas, android.graphics.RectF);
method public void draw(android.graphics.Canvas, android.graphics.Rect);
method public void draw(android.graphics.Canvas, android.graphics.Rect, android.graphics.Paint);
method public android.graphics.Bitmap getBitmap();
method public int getDensity();
method public int getHeight();
- method public java.lang.String getName();
+ method public String getName();
method public android.graphics.Paint getPaint();
method public final android.graphics.Region getTransparentRegion(android.graphics.Rect);
method public int getWidth();
@@ -14298,23 +14310,23 @@
public final class Outline {
ctor public Outline();
- ctor public Outline(android.graphics.Outline);
+ ctor public Outline(@NonNull android.graphics.Outline);
method public boolean canClip();
method public float getAlpha();
method public float getRadius();
- method public boolean getRect(android.graphics.Rect);
+ method public boolean getRect(@NonNull android.graphics.Rect);
method public boolean isEmpty();
method public void offset(int, int);
- method public void set(android.graphics.Outline);
- method public void setAlpha(float);
- method public void setConvexPath(android.graphics.Path);
+ method public void set(@NonNull android.graphics.Outline);
+ method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
+ method public void setConvexPath(@NonNull android.graphics.Path);
method public void setEmpty();
method public void setOval(int, int, int, int);
- method public void setOval(android.graphics.Rect);
+ method public void setOval(@NonNull android.graphics.Rect);
method public void setRect(int, int, int, int);
- method public void setRect(android.graphics.Rect);
+ method public void setRect(@NonNull android.graphics.Rect);
method public void setRoundRect(int, int, int, int, float);
- method public void setRoundRect(android.graphics.Rect, float);
+ method public void setRoundRect(@NonNull android.graphics.Rect, float);
}
public class Paint {
@@ -14323,69 +14335,69 @@
ctor public Paint(android.graphics.Paint);
method public float ascent();
method public int breakText(char[], int, int, float, float[]);
- method public int breakText(java.lang.CharSequence, int, int, boolean, float, float[]);
- method public int breakText(java.lang.String, boolean, float, float[]);
+ method public int breakText(CharSequence, int, int, boolean, float, float[]);
+ method public int breakText(String, boolean, float, float[]);
method public void clearShadowLayer();
method public float descent();
- method public boolean equalsForTextMeasurement(android.graphics.Paint);
+ method public boolean equalsForTextMeasurement(@NonNull android.graphics.Paint);
method public int getAlpha();
- method public android.graphics.BlendMode getBlendMode();
- method public int getColor();
+ method @Nullable public android.graphics.BlendMode getBlendMode();
+ method @ColorInt public int getColor();
method public android.graphics.ColorFilter getColorFilter();
method public boolean getFillPath(android.graphics.Path, android.graphics.Path);
method public int getFlags();
- method public java.lang.String getFontFeatureSettings();
+ method public String getFontFeatureSettings();
method public float getFontMetrics(android.graphics.Paint.FontMetrics);
method public android.graphics.Paint.FontMetrics getFontMetrics();
method public int getFontMetricsInt(android.graphics.Paint.FontMetricsInt);
method public android.graphics.Paint.FontMetricsInt getFontMetricsInt();
method public float getFontSpacing();
- method public java.lang.String getFontVariationSettings();
+ method public String getFontVariationSettings();
method public int getHinting();
method public int getHyphenEdit();
method public float getLetterSpacing();
method public android.graphics.MaskFilter getMaskFilter();
method public int getOffsetForAdvance(char[], int, int, int, int, boolean, float);
- method public int getOffsetForAdvance(java.lang.CharSequence, int, int, int, int, boolean, float);
+ method public int getOffsetForAdvance(CharSequence, int, int, int, int, boolean, float);
method public android.graphics.PathEffect getPathEffect();
method public float getRunAdvance(char[], int, int, int, int, boolean, int);
- method public float getRunAdvance(java.lang.CharSequence, int, int, int, int, boolean, int);
+ method public float getRunAdvance(CharSequence, int, int, int, int, boolean, int);
method public android.graphics.Shader getShader();
- method public int getShadowLayerColor();
+ method @ColorInt public int getShadowLayerColor();
method public float getShadowLayerDx();
method public float getShadowLayerDy();
method public float getShadowLayerRadius();
- method public float getStrikeThruPosition();
- method public float getStrikeThruThickness();
+ method @Px public float getStrikeThruPosition();
+ method @Px public float getStrikeThruThickness();
method public android.graphics.Paint.Cap getStrokeCap();
method public android.graphics.Paint.Join getStrokeJoin();
method public float getStrokeMiter();
method public float getStrokeWidth();
method public android.graphics.Paint.Style getStyle();
method public android.graphics.Paint.Align getTextAlign();
- method public void getTextBounds(java.lang.String, int, int, android.graphics.Rect);
- method public void getTextBounds(java.lang.CharSequence, int, int, android.graphics.Rect);
+ method public void getTextBounds(String, int, int, android.graphics.Rect);
+ method public void getTextBounds(CharSequence, int, int, android.graphics.Rect);
method public void getTextBounds(char[], int, int, android.graphics.Rect);
- method public java.util.Locale getTextLocale();
- method public android.os.LocaleList getTextLocales();
+ method @NonNull public java.util.Locale getTextLocale();
+ method @NonNull @Size(min=1) public android.os.LocaleList getTextLocales();
method public void getTextPath(char[], int, int, float, float, android.graphics.Path);
- method public void getTextPath(java.lang.String, int, int, float, float, android.graphics.Path);
- method public float getTextRunAdvances(char[], int, int, int, int, boolean, float[], int);
- method public int getTextRunCursor(char[], int, int, boolean, int, int);
- method public int getTextRunCursor(java.lang.CharSequence, int, int, boolean, int, int);
+ method public void getTextPath(String, int, int, float, float, android.graphics.Path);
+ method public float getTextRunAdvances(@NonNull char[], @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, boolean, @Nullable float[], @IntRange(from=0) int);
+ method public int getTextRunCursor(@NonNull char[], @IntRange(from=0) int, @IntRange(from=0) int, boolean, @IntRange(from=0) int, int);
+ method public int getTextRunCursor(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, boolean, @IntRange(from=0) int, int);
method public float getTextScaleX();
method public float getTextSize();
method public float getTextSkewX();
method public int getTextWidths(char[], int, int, float[]);
- method public int getTextWidths(java.lang.CharSequence, int, int, float[]);
- method public int getTextWidths(java.lang.String, int, int, float[]);
- method public int getTextWidths(java.lang.String, float[]);
+ method public int getTextWidths(CharSequence, int, int, float[]);
+ method public int getTextWidths(String, int, int, float[]);
+ method public int getTextWidths(String, float[]);
method public android.graphics.Typeface getTypeface();
- method public float getUnderlinePosition();
- method public float getUnderlineThickness();
+ method @Px public float getUnderlinePosition();
+ method @Px public float getUnderlineThickness();
method public float getWordSpacing();
- method public deprecated android.graphics.Xfermode getXfermode();
- method public boolean hasGlyph(java.lang.String);
+ method @Deprecated public android.graphics.Xfermode getXfermode();
+ method public boolean hasGlyph(String);
method public final boolean isAntiAlias();
method public final boolean isDither();
method public boolean isElegantTextHeight();
@@ -14396,24 +14408,24 @@
method public final boolean isSubpixelText();
method public final boolean isUnderlineText();
method public float measureText(char[], int, int);
- method public float measureText(java.lang.String, int, int);
- method public float measureText(java.lang.String);
- method public float measureText(java.lang.CharSequence, int, int);
+ method public float measureText(String, int, int);
+ method public float measureText(String);
+ method public float measureText(CharSequence, int, int);
method public void reset();
method public void set(android.graphics.Paint);
method public void setARGB(int, int, int, int);
method public void setAlpha(int);
method public void setAntiAlias(boolean);
- method public void setBlendMode(android.graphics.BlendMode);
- method public void setColor(int);
+ method public void setBlendMode(@Nullable android.graphics.BlendMode);
+ method public void setColor(@ColorInt int);
method public android.graphics.ColorFilter setColorFilter(android.graphics.ColorFilter);
method public void setDither(boolean);
method public void setElegantTextHeight(boolean);
method public void setFakeBoldText(boolean);
method public void setFilterBitmap(boolean);
method public void setFlags(int);
- method public void setFontFeatureSettings(java.lang.String);
- method public boolean setFontVariationSettings(java.lang.String);
+ method public void setFontFeatureSettings(String);
+ method public boolean setFontVariationSettings(String);
method public void setHinting(int);
method public void setHyphenEdit(int);
method public void setLetterSpacing(float);
@@ -14421,7 +14433,7 @@
method public android.graphics.MaskFilter setMaskFilter(android.graphics.MaskFilter);
method public android.graphics.PathEffect setPathEffect(android.graphics.PathEffect);
method public android.graphics.Shader setShader(android.graphics.Shader);
- method public void setShadowLayer(float, float, float, int);
+ method public void setShadowLayer(float, float, float, @ColorInt int);
method public void setStrikeThruText(boolean);
method public void setStrokeCap(android.graphics.Paint.Cap);
method public void setStrokeJoin(android.graphics.Paint.Join);
@@ -14430,15 +14442,15 @@
method public void setStyle(android.graphics.Paint.Style);
method public void setSubpixelText(boolean);
method public void setTextAlign(android.graphics.Paint.Align);
- method public void setTextLocale(java.util.Locale);
- method public void setTextLocales(android.os.LocaleList);
+ method public void setTextLocale(@NonNull java.util.Locale);
+ method public void setTextLocales(@NonNull @Size(min=1) android.os.LocaleList);
method public void setTextScaleX(float);
method public void setTextSize(float);
method public void setTextSkewX(float);
method public android.graphics.Typeface setTypeface(android.graphics.Typeface);
method public void setUnderlineText(boolean);
method public void setWordSpacing(float);
- method public deprecated android.graphics.Xfermode setXfermode(android.graphics.Xfermode);
+ method @Deprecated public android.graphics.Xfermode setXfermode(android.graphics.Xfermode);
field public static final int ANTI_ALIAS_FLAG = 1; // 0x1
field public static final int CURSOR_AFTER = 0; // 0x0
field public static final int CURSOR_AT = 4; // 0x4
@@ -14458,17 +14470,13 @@
field public static final int UNDERLINE_TEXT_FLAG = 8; // 0x8
}
- public static final class Paint.Align extends java.lang.Enum {
- method public static android.graphics.Paint.Align valueOf(java.lang.String);
- method public static final android.graphics.Paint.Align[] values();
+ public enum Paint.Align {
enum_constant public static final android.graphics.Paint.Align CENTER;
enum_constant public static final android.graphics.Paint.Align LEFT;
enum_constant public static final android.graphics.Paint.Align RIGHT;
}
- public static final class Paint.Cap extends java.lang.Enum {
- method public static android.graphics.Paint.Cap valueOf(java.lang.String);
- method public static final android.graphics.Paint.Cap[] values();
+ public enum Paint.Cap {
enum_constant public static final android.graphics.Paint.Cap BUTT;
enum_constant public static final android.graphics.Paint.Cap ROUND;
enum_constant public static final android.graphics.Paint.Cap SQUARE;
@@ -14492,17 +14500,13 @@
field public int top;
}
- public static final class Paint.Join extends java.lang.Enum {
- method public static android.graphics.Paint.Join valueOf(java.lang.String);
- method public static final android.graphics.Paint.Join[] values();
+ public enum Paint.Join {
enum_constant public static final android.graphics.Paint.Join BEVEL;
enum_constant public static final android.graphics.Paint.Join MITER;
enum_constant public static final android.graphics.Paint.Join ROUND;
}
- public static final class Paint.Style extends java.lang.Enum {
- method public static android.graphics.Paint.Style valueOf(java.lang.String);
- method public static final android.graphics.Paint.Style[] values();
+ public enum Paint.Style {
enum_constant public static final android.graphics.Paint.Style FILL;
enum_constant public static final android.graphics.Paint.Style FILL_AND_STROKE;
enum_constant public static final android.graphics.Paint.Style STROKE;
@@ -14514,40 +14518,40 @@
public class Path {
ctor public Path();
- ctor public Path(android.graphics.Path);
- method public void addArc(android.graphics.RectF, float, float);
+ ctor public Path(@Nullable android.graphics.Path);
+ method public void addArc(@NonNull android.graphics.RectF, float, float);
method public void addArc(float, float, float, float, float, float);
- method public void addCircle(float, float, float, android.graphics.Path.Direction);
- method public void addOval(android.graphics.RectF, android.graphics.Path.Direction);
- method public void addOval(float, float, float, float, android.graphics.Path.Direction);
- method public void addPath(android.graphics.Path, float, float);
- method public void addPath(android.graphics.Path);
- method public void addPath(android.graphics.Path, android.graphics.Matrix);
- method public void addRect(android.graphics.RectF, android.graphics.Path.Direction);
- method public void addRect(float, float, float, float, android.graphics.Path.Direction);
- method public void addRoundRect(android.graphics.RectF, float, float, android.graphics.Path.Direction);
- method public void addRoundRect(float, float, float, float, float, float, android.graphics.Path.Direction);
- method public void addRoundRect(android.graphics.RectF, float[], android.graphics.Path.Direction);
- method public void addRoundRect(float, float, float, float, float[], android.graphics.Path.Direction);
- method public float[] approximate(float);
- method public void arcTo(android.graphics.RectF, float, float, boolean);
- method public void arcTo(android.graphics.RectF, float, float);
+ method public void addCircle(float, float, float, @NonNull android.graphics.Path.Direction);
+ method public void addOval(@NonNull android.graphics.RectF, @NonNull android.graphics.Path.Direction);
+ method public void addOval(float, float, float, float, @NonNull android.graphics.Path.Direction);
+ method public void addPath(@NonNull android.graphics.Path, float, float);
+ method public void addPath(@NonNull android.graphics.Path);
+ method public void addPath(@NonNull android.graphics.Path, @NonNull android.graphics.Matrix);
+ method public void addRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Path.Direction);
+ method public void addRect(float, float, float, float, @NonNull android.graphics.Path.Direction);
+ method public void addRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Path.Direction);
+ method public void addRoundRect(float, float, float, float, float, float, @NonNull android.graphics.Path.Direction);
+ method public void addRoundRect(@NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.Path.Direction);
+ method public void addRoundRect(float, float, float, float, @NonNull float[], @NonNull android.graphics.Path.Direction);
+ method @NonNull @Size(min=6, multiple=3) public float[] approximate(@FloatRange(from=0) float);
+ method public void arcTo(@NonNull android.graphics.RectF, float, float, boolean);
+ method public void arcTo(@NonNull android.graphics.RectF, float, float);
method public void arcTo(float, float, float, float, float, float, boolean);
method public void close();
- method public void computeBounds(android.graphics.RectF, boolean);
+ method public void computeBounds(@NonNull android.graphics.RectF, boolean);
method public void cubicTo(float, float, float, float, float, float);
- method public android.graphics.Path.FillType getFillType();
+ method @NonNull public android.graphics.Path.FillType getFillType();
method public void incReserve(int);
method public boolean isConvex();
method public boolean isEmpty();
method public boolean isInverseFillType();
- method public boolean isRect(android.graphics.RectF);
+ method public boolean isRect(@Nullable android.graphics.RectF);
method public void lineTo(float, float);
method public void moveTo(float, float);
- method public void offset(float, float, android.graphics.Path);
+ method public void offset(float, float, @Nullable android.graphics.Path);
method public void offset(float, float);
- method public boolean op(android.graphics.Path, android.graphics.Path.Op);
- method public boolean op(android.graphics.Path, android.graphics.Path, android.graphics.Path.Op);
+ method public boolean op(@NonNull android.graphics.Path, @NonNull android.graphics.Path.Op);
+ method public boolean op(@NonNull android.graphics.Path, @NonNull android.graphics.Path, @NonNull android.graphics.Path.Op);
method public void quadTo(float, float, float, float);
method public void rCubicTo(float, float, float, float, float, float);
method public void rLineTo(float, float);
@@ -14555,33 +14559,27 @@
method public void rQuadTo(float, float, float, float);
method public void reset();
method public void rewind();
- method public void set(android.graphics.Path);
- method public void setFillType(android.graphics.Path.FillType);
+ method public void set(@NonNull android.graphics.Path);
+ method public void setFillType(@NonNull android.graphics.Path.FillType);
method public void setLastPoint(float, float);
method public void toggleInverseFillType();
- method public void transform(android.graphics.Matrix, android.graphics.Path);
- method public void transform(android.graphics.Matrix);
+ method public void transform(@NonNull android.graphics.Matrix, @Nullable android.graphics.Path);
+ method public void transform(@NonNull android.graphics.Matrix);
}
- public static final class Path.Direction extends java.lang.Enum {
- method public static android.graphics.Path.Direction valueOf(java.lang.String);
- method public static final android.graphics.Path.Direction[] values();
+ public enum Path.Direction {
enum_constant public static final android.graphics.Path.Direction CCW;
enum_constant public static final android.graphics.Path.Direction CW;
}
- public static final class Path.FillType extends java.lang.Enum {
- method public static android.graphics.Path.FillType valueOf(java.lang.String);
- method public static final android.graphics.Path.FillType[] values();
+ public enum Path.FillType {
enum_constant public static final android.graphics.Path.FillType EVEN_ODD;
enum_constant public static final android.graphics.Path.FillType INVERSE_EVEN_ODD;
enum_constant public static final android.graphics.Path.FillType INVERSE_WINDING;
enum_constant public static final android.graphics.Path.FillType WINDING;
}
- public static final class Path.Op extends java.lang.Enum {
- method public static android.graphics.Path.Op valueOf(java.lang.String);
- method public static final android.graphics.Path.Op[] values();
+ public enum Path.Op {
enum_constant public static final android.graphics.Path.Op DIFFERENCE;
enum_constant public static final android.graphics.Path.Op INTERSECT;
enum_constant public static final android.graphics.Path.Op REVERSE_DIFFERENCE;
@@ -14593,9 +14591,7 @@
ctor public PathDashPathEffect(android.graphics.Path, float, float, android.graphics.PathDashPathEffect.Style);
}
- public static final class PathDashPathEffect.Style extends java.lang.Enum {
- method public static android.graphics.PathDashPathEffect.Style valueOf(java.lang.String);
- method public static final android.graphics.PathDashPathEffect.Style[] values();
+ public enum PathDashPathEffect.Style {
enum_constant public static final android.graphics.PathDashPathEffect.Style MORPH;
enum_constant public static final android.graphics.PathDashPathEffect.Style ROTATE;
enum_constant public static final android.graphics.PathDashPathEffect.Style TRANSLATE;
@@ -14634,26 +14630,26 @@
ctor public PixelFormat();
method public static boolean formatHasAlpha(int);
method public static void getPixelFormatInfo(int, android.graphics.PixelFormat);
- field public static final deprecated int A_8 = 8; // 0x8
- field public static final deprecated int JPEG = 256; // 0x100
- field public static final deprecated int LA_88 = 10; // 0xa
- field public static final deprecated int L_8 = 9; // 0x9
+ field @Deprecated public static final int A_8 = 8; // 0x8
+ field @Deprecated public static final int JPEG = 256; // 0x100
+ field @Deprecated public static final int LA_88 = 10; // 0xa
+ field @Deprecated public static final int L_8 = 9; // 0x9
field public static final int OPAQUE = -1; // 0xffffffff
field public static final int RGBA_1010102 = 43; // 0x2b
- field public static final deprecated int RGBA_4444 = 7; // 0x7
- field public static final deprecated int RGBA_5551 = 6; // 0x6
+ field @Deprecated public static final int RGBA_4444 = 7; // 0x7
+ field @Deprecated public static final int RGBA_5551 = 6; // 0x6
field public static final int RGBA_8888 = 1; // 0x1
field public static final int RGBA_F16 = 22; // 0x16
field public static final int RGBX_8888 = 2; // 0x2
- field public static final deprecated int RGB_332 = 11; // 0xb
+ field @Deprecated public static final int RGB_332 = 11; // 0xb
field public static final int RGB_565 = 4; // 0x4
field public static final int RGB_888 = 3; // 0x3
field public static final int TRANSLUCENT = -3; // 0xfffffffd
field public static final int TRANSPARENT = -2; // 0xfffffffe
field public static final int UNKNOWN = 0; // 0x0
- field public static final deprecated int YCbCr_420_SP = 17; // 0x11
- field public static final deprecated int YCbCr_422_I = 20; // 0x14
- field public static final deprecated int YCbCr_422_SP = 16; // 0x10
+ field @Deprecated public static final int YCbCr_420_SP = 17; // 0x11
+ field @Deprecated public static final int YCbCr_422_I = 20; // 0x14
+ field @Deprecated public static final int YCbCr_422_SP = 16; // 0x10
field public int bitsPerPixel;
field public int bytesPerPixel;
}
@@ -14661,12 +14657,12 @@
public class Point implements android.os.Parcelable {
ctor public Point();
ctor public Point(int, int);
- ctor public Point(android.graphics.Point);
+ ctor public Point(@NonNull android.graphics.Point);
method public int describeContents();
method public final boolean equals(int, int);
method public final void negate();
method public final void offset(int, int);
- method public void readFromParcel(android.os.Parcel);
+ method public void readFromParcel(@NonNull android.os.Parcel);
method public void set(int, int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.graphics.Point> CREATOR;
@@ -14677,16 +14673,16 @@
public class PointF implements android.os.Parcelable {
ctor public PointF();
ctor public PointF(float, float);
- ctor public PointF(android.graphics.Point);
+ ctor public PointF(@NonNull android.graphics.Point);
method public int describeContents();
method public final boolean equals(float, float);
method public final float length();
method public static float length(float, float);
method public final void negate();
method public final void offset(float, float);
- method public void readFromParcel(android.os.Parcel);
+ method public void readFromParcel(@NonNull android.os.Parcel);
method public final void set(float, float);
- method public final void set(android.graphics.PointF);
+ method public final void set(@NonNull android.graphics.PointF);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.graphics.PointF> CREATOR;
field public float x;
@@ -14697,9 +14693,7 @@
ctor public PorterDuff();
}
- public static final class PorterDuff.Mode extends java.lang.Enum {
- method public static android.graphics.PorterDuff.Mode valueOf(java.lang.String);
- method public static final android.graphics.PorterDuff.Mode[] values();
+ public enum PorterDuff.Mode {
enum_constant public static final android.graphics.PorterDuff.Mode ADD;
enum_constant public static final android.graphics.PorterDuff.Mode CLEAR;
enum_constant public static final android.graphics.PorterDuff.Mode DARKEN;
@@ -14720,58 +14714,60 @@
enum_constant public static final android.graphics.PorterDuff.Mode XOR;
}
- public deprecated class PorterDuffColorFilter extends android.graphics.ColorFilter {
- ctor public PorterDuffColorFilter(int, android.graphics.PorterDuff.Mode);
+ @Deprecated public class PorterDuffColorFilter extends android.graphics.ColorFilter {
+ ctor @Deprecated public PorterDuffColorFilter(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
}
public class PorterDuffXfermode extends android.graphics.Xfermode {
ctor public PorterDuffXfermode(android.graphics.PorterDuff.Mode);
}
- public abstract interface PostProcessor {
- method public abstract int onPostProcess(android.graphics.Canvas);
+ public interface PostProcessor {
+ method public int onPostProcess(@NonNull android.graphics.Canvas);
}
public class RadialGradient extends android.graphics.Shader {
- ctor public RadialGradient(float, float, float, int[], float[], android.graphics.Shader.TileMode);
- ctor public RadialGradient(float, float, float, int, int, android.graphics.Shader.TileMode);
+ ctor public RadialGradient(float, float, float, @NonNull @ColorInt int[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
+ ctor public RadialGradient(float, float, float, @ColorInt int, @ColorInt int, @NonNull android.graphics.Shader.TileMode);
}
public final class RecordingCanvas extends android.graphics.Canvas {
+ method public final void drawPatch(@NonNull android.graphics.NinePatch, @NonNull android.graphics.Rect, @Nullable android.graphics.Paint);
+ method public final void drawPatch(@NonNull android.graphics.NinePatch, @NonNull android.graphics.RectF, @Nullable android.graphics.Paint);
}
public final class Rect implements android.os.Parcelable {
ctor public Rect();
ctor public Rect(int, int, int, int);
- ctor public Rect(android.graphics.Rect);
+ ctor public Rect(@Nullable android.graphics.Rect);
method public int centerX();
method public int centerY();
method public boolean contains(int, int);
method public boolean contains(int, int, int, int);
- method public boolean contains(android.graphics.Rect);
+ method public boolean contains(@NonNull android.graphics.Rect);
method public int describeContents();
method public float exactCenterX();
method public float exactCenterY();
- method public java.lang.String flattenToString();
+ method @NonNull public String flattenToString();
method public int height();
method public void inset(int, int);
- method public boolean intersect(int, int, int, int);
- method public boolean intersect(android.graphics.Rect);
+ method @CheckResult public boolean intersect(int, int, int, int);
+ method @CheckResult public boolean intersect(@NonNull android.graphics.Rect);
method public boolean intersects(int, int, int, int);
- method public static boolean intersects(android.graphics.Rect, android.graphics.Rect);
+ method public static boolean intersects(@NonNull android.graphics.Rect, @NonNull android.graphics.Rect);
method public boolean isEmpty();
method public void offset(int, int);
method public void offsetTo(int, int);
- method public void readFromParcel(android.os.Parcel);
+ method public void readFromParcel(@NonNull android.os.Parcel);
method public void set(int, int, int, int);
- method public void set(android.graphics.Rect);
+ method public void set(@NonNull android.graphics.Rect);
method public void setEmpty();
- method public boolean setIntersect(android.graphics.Rect, android.graphics.Rect);
+ method @CheckResult public boolean setIntersect(@NonNull android.graphics.Rect, @NonNull android.graphics.Rect);
method public void sort();
- method public java.lang.String toShortString();
- method public static android.graphics.Rect unflattenFromString(java.lang.String);
+ method @NonNull public String toShortString();
+ method @Nullable public static android.graphics.Rect unflattenFromString(@Nullable String);
method public void union(int, int, int, int);
- method public void union(android.graphics.Rect);
+ method public void union(@NonNull android.graphics.Rect);
method public void union(int, int);
method public int width();
method public void writeToParcel(android.os.Parcel, int);
@@ -14785,35 +14781,35 @@
public class RectF implements android.os.Parcelable {
ctor public RectF();
ctor public RectF(float, float, float, float);
- ctor public RectF(android.graphics.RectF);
- ctor public RectF(android.graphics.Rect);
+ ctor public RectF(@Nullable android.graphics.RectF);
+ ctor public RectF(@Nullable android.graphics.Rect);
method public final float centerX();
method public final float centerY();
method public boolean contains(float, float);
method public boolean contains(float, float, float, float);
- method public boolean contains(android.graphics.RectF);
+ method public boolean contains(@NonNull android.graphics.RectF);
method public int describeContents();
method public final float height();
method public void inset(float, float);
method public boolean intersect(float, float, float, float);
- method public boolean intersect(android.graphics.RectF);
+ method public boolean intersect(@NonNull android.graphics.RectF);
method public boolean intersects(float, float, float, float);
- method public static boolean intersects(android.graphics.RectF, android.graphics.RectF);
+ method public static boolean intersects(@NonNull android.graphics.RectF, @NonNull android.graphics.RectF);
method public final boolean isEmpty();
method public void offset(float, float);
method public void offsetTo(float, float);
- method public void readFromParcel(android.os.Parcel);
- method public void round(android.graphics.Rect);
- method public void roundOut(android.graphics.Rect);
+ method public void readFromParcel(@NonNull android.os.Parcel);
+ method public void round(@NonNull android.graphics.Rect);
+ method public void roundOut(@NonNull android.graphics.Rect);
method public void set(float, float, float, float);
- method public void set(android.graphics.RectF);
- method public void set(android.graphics.Rect);
+ method public void set(@NonNull android.graphics.RectF);
+ method public void set(@NonNull android.graphics.Rect);
method public void setEmpty();
- method public boolean setIntersect(android.graphics.RectF, android.graphics.RectF);
+ method public boolean setIntersect(@NonNull android.graphics.RectF, @NonNull android.graphics.RectF);
method public void sort();
- method public java.lang.String toShortString();
+ method @NonNull public String toShortString();
method public void union(float, float, float, float);
- method public void union(android.graphics.RectF);
+ method public void union(@NonNull android.graphics.RectF);
method public void union(float, float);
method public final float width();
method public void writeToParcel(android.os.Parcel, int);
@@ -14826,43 +14822,41 @@
public class Region implements android.os.Parcelable {
ctor public Region();
- ctor public Region(android.graphics.Region);
- ctor public Region(android.graphics.Rect);
+ ctor public Region(@NonNull android.graphics.Region);
+ ctor public Region(@NonNull android.graphics.Rect);
ctor public Region(int, int, int, int);
method public boolean contains(int, int);
method public int describeContents();
- method public android.graphics.Path getBoundaryPath();
- method public boolean getBoundaryPath(android.graphics.Path);
- method public android.graphics.Rect getBounds();
- method public boolean getBounds(android.graphics.Rect);
+ method @NonNull public android.graphics.Path getBoundaryPath();
+ method public boolean getBoundaryPath(@NonNull android.graphics.Path);
+ method @NonNull public android.graphics.Rect getBounds();
+ method public boolean getBounds(@NonNull android.graphics.Rect);
method public boolean isComplex();
method public boolean isEmpty();
method public boolean isRect();
- method public boolean op(android.graphics.Rect, android.graphics.Region.Op);
- method public boolean op(int, int, int, int, android.graphics.Region.Op);
- method public boolean op(android.graphics.Region, android.graphics.Region.Op);
- method public boolean op(android.graphics.Rect, android.graphics.Region, android.graphics.Region.Op);
- method public boolean op(android.graphics.Region, android.graphics.Region, android.graphics.Region.Op);
- method public boolean quickContains(android.graphics.Rect);
+ method public boolean op(@NonNull android.graphics.Rect, @NonNull android.graphics.Region.Op);
+ method public boolean op(int, int, int, int, @NonNull android.graphics.Region.Op);
+ method public boolean op(@NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
+ method public boolean op(@NonNull android.graphics.Rect, @NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
+ method public boolean op(@NonNull android.graphics.Region, @NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
+ method public boolean quickContains(@NonNull android.graphics.Rect);
method public boolean quickContains(int, int, int, int);
- method public boolean quickReject(android.graphics.Rect);
+ method public boolean quickReject(@NonNull android.graphics.Rect);
method public boolean quickReject(int, int, int, int);
method public boolean quickReject(android.graphics.Region);
- method public boolean set(android.graphics.Region);
- method public boolean set(android.graphics.Rect);
+ method public boolean set(@NonNull android.graphics.Region);
+ method public boolean set(@NonNull android.graphics.Rect);
method public boolean set(int, int, int, int);
method public void setEmpty();
- method public boolean setPath(android.graphics.Path, android.graphics.Region);
+ method public boolean setPath(@NonNull android.graphics.Path, @NonNull android.graphics.Region);
method public void translate(int, int);
method public void translate(int, int, android.graphics.Region);
- method public final boolean union(android.graphics.Rect);
+ method public final boolean union(@NonNull android.graphics.Rect);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.graphics.Region> CREATOR;
}
- public static final class Region.Op extends java.lang.Enum {
- method public static android.graphics.Region.Op valueOf(java.lang.String);
- method public static final android.graphics.Region.Op[] values();
+ public enum Region.Op {
enum_constant public static final android.graphics.Region.Op DIFFERENCE;
enum_constant public static final android.graphics.Region.Op INTERSECT;
enum_constant public static final android.graphics.Region.Op REPLACE;
@@ -14877,7 +14871,7 @@
}
public final class RenderNode {
- ctor public RenderNode(java.lang.String);
+ ctor public RenderNode(String);
method public int computeApproximateMemoryUsage();
method public void discardDisplayList();
method public void endRecording();
@@ -14889,9 +14883,9 @@
method public boolean getClipToOutline();
method public float getElevation();
method public int getHeight();
- method public void getInverseMatrix(android.graphics.Matrix);
+ method public void getInverseMatrix(@NonNull android.graphics.Matrix);
method public int getLeft();
- method public void getMatrix(android.graphics.Matrix);
+ method public void getMatrix(@NonNull android.graphics.Matrix);
method public float getPivotX();
method public float getPivotY();
method public int getRight();
@@ -14921,7 +14915,7 @@
method public boolean setAmbientShadowColor(int);
method public boolean setBottom(int);
method public boolean setCameraDistance(float);
- method public boolean setClipBounds(android.graphics.Rect);
+ method public boolean setClipBounds(@Nullable android.graphics.Rect);
method public boolean setClipToBounds(boolean);
method public boolean setClipToOutline(boolean);
method public boolean setElevation(float);
@@ -14929,7 +14923,7 @@
method public boolean setHasOverlappingRendering(boolean);
method public boolean setLeft(int);
method public boolean setLeftTopRightBottom(int, int, int, int);
- method public boolean setOutline(android.graphics.Outline);
+ method public boolean setOutline(@Nullable android.graphics.Outline);
method public boolean setPivotX(float);
method public boolean setPivotY(float);
method public boolean setProjectBackwards(boolean);
@@ -14945,20 +14939,18 @@
method public boolean setTranslationX(float);
method public boolean setTranslationY(float);
method public boolean setTranslationZ(float);
- method public boolean setUseCompositingLayer(boolean, android.graphics.Paint);
+ method public boolean setUseCompositingLayer(boolean, @Nullable android.graphics.Paint);
method public android.graphics.RecordingCanvas startRecording(int, int);
method public android.graphics.RecordingCanvas startRecording();
}
public class Shader {
- ctor public deprecated Shader();
- method public boolean getLocalMatrix(android.graphics.Matrix);
- method public void setLocalMatrix(android.graphics.Matrix);
+ ctor @Deprecated public Shader();
+ method public boolean getLocalMatrix(@NonNull android.graphics.Matrix);
+ method public void setLocalMatrix(@Nullable android.graphics.Matrix);
}
- public static final class Shader.TileMode extends java.lang.Enum {
- method public static android.graphics.Shader.TileMode valueOf(java.lang.String);
- method public static final android.graphics.Shader.TileMode[] values();
+ public enum Shader.TileMode {
enum_constant public static final android.graphics.Shader.TileMode CLAMP;
enum_constant public static final android.graphics.Shader.TileMode MIRROR;
enum_constant public static final android.graphics.Shader.TileMode REPEAT;
@@ -14980,35 +14972,35 @@
method public void release();
method public void releaseTexImage();
method public void setDefaultBufferSize(int, int);
- method public void setOnFrameAvailableListener(android.graphics.SurfaceTexture.OnFrameAvailableListener);
- method public void setOnFrameAvailableListener(android.graphics.SurfaceTexture.OnFrameAvailableListener, android.os.Handler);
+ method public void setOnFrameAvailableListener(@Nullable android.graphics.SurfaceTexture.OnFrameAvailableListener);
+ method public void setOnFrameAvailableListener(@Nullable android.graphics.SurfaceTexture.OnFrameAvailableListener, @Nullable android.os.Handler);
method public void updateTexImage();
}
- public static abstract interface SurfaceTexture.OnFrameAvailableListener {
- method public abstract void onFrameAvailable(android.graphics.SurfaceTexture);
+ public static interface SurfaceTexture.OnFrameAvailableListener {
+ method public void onFrameAvailable(android.graphics.SurfaceTexture);
}
- public static deprecated class SurfaceTexture.OutOfResourcesException extends java.lang.Exception {
- ctor public SurfaceTexture.OutOfResourcesException();
- ctor public SurfaceTexture.OutOfResourcesException(java.lang.String);
+ @Deprecated public static class SurfaceTexture.OutOfResourcesException extends java.lang.Exception {
+ ctor @Deprecated public SurfaceTexture.OutOfResourcesException();
+ ctor @Deprecated public SurfaceTexture.OutOfResourcesException(String);
}
public class SweepGradient extends android.graphics.Shader {
- ctor public SweepGradient(float, float, int[], float[]);
- ctor public SweepGradient(float, float, int, int);
+ ctor public SweepGradient(float, float, @NonNull @ColorInt int[], @Nullable float[]);
+ ctor public SweepGradient(float, float, @ColorInt int, @ColorInt int);
}
public class Typeface {
- method public static android.graphics.Typeface create(java.lang.String, int);
+ method public static android.graphics.Typeface create(String, int);
method public static android.graphics.Typeface create(android.graphics.Typeface, int);
- method public static android.graphics.Typeface create(android.graphics.Typeface, int, boolean);
- method public static android.graphics.Typeface createFromAsset(android.content.res.AssetManager, java.lang.String);
- method public static android.graphics.Typeface createFromFile(java.io.File);
- method public static android.graphics.Typeface createFromFile(java.lang.String);
+ method @NonNull public static android.graphics.Typeface create(@Nullable android.graphics.Typeface, @IntRange(from=1, to=1000) int, boolean);
+ method public static android.graphics.Typeface createFromAsset(android.content.res.AssetManager, String);
+ method public static android.graphics.Typeface createFromFile(@Nullable java.io.File);
+ method public static android.graphics.Typeface createFromFile(@Nullable String);
method public static android.graphics.Typeface defaultFromStyle(int);
method public int getStyle();
- method public int getWeight();
+ method @IntRange(from=0, to=1000) public int getWeight();
method public final boolean isBold();
method public final boolean isItalic();
field public static final int BOLD = 1; // 0x1
@@ -15023,26 +15015,26 @@
}
public static final class Typeface.Builder {
- ctor public Typeface.Builder(java.io.File);
- ctor public Typeface.Builder(java.io.FileDescriptor);
- ctor public Typeface.Builder(java.lang.String);
- ctor public Typeface.Builder(android.content.res.AssetManager, java.lang.String);
+ ctor public Typeface.Builder(@NonNull java.io.File);
+ ctor public Typeface.Builder(@NonNull java.io.FileDescriptor);
+ ctor public Typeface.Builder(@NonNull String);
+ ctor public Typeface.Builder(@NonNull android.content.res.AssetManager, @NonNull String);
method public android.graphics.Typeface build();
- method public android.graphics.Typeface.Builder setFallback(java.lang.String);
- method public android.graphics.Typeface.Builder setFontVariationSettings(java.lang.String);
- method public android.graphics.Typeface.Builder setFontVariationSettings(android.graphics.fonts.FontVariationAxis[]);
+ method public android.graphics.Typeface.Builder setFallback(@Nullable String);
+ method public android.graphics.Typeface.Builder setFontVariationSettings(@Nullable String);
+ method public android.graphics.Typeface.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
method public android.graphics.Typeface.Builder setItalic(boolean);
- method public android.graphics.Typeface.Builder setTtcIndex(int);
- method public android.graphics.Typeface.Builder setWeight(int);
+ method public android.graphics.Typeface.Builder setTtcIndex(@IntRange(from=0) int);
+ method public android.graphics.Typeface.Builder setWeight(@IntRange(from=1, to=1000) int);
}
public static class Typeface.CustomFallbackBuilder {
- ctor public Typeface.CustomFallbackBuilder(android.graphics.fonts.FontFamily);
- method public android.graphics.Typeface.CustomFallbackBuilder addCustomFallback(android.graphics.fonts.FontFamily);
+ ctor public Typeface.CustomFallbackBuilder(@NonNull android.graphics.fonts.FontFamily);
+ method public android.graphics.Typeface.CustomFallbackBuilder addCustomFallback(@NonNull android.graphics.fonts.FontFamily);
method public android.graphics.Typeface build();
- method public static int getMaxCustomFallbackCount();
- method public android.graphics.Typeface.CustomFallbackBuilder setStyle(android.graphics.fonts.FontStyle);
- method public android.graphics.Typeface.CustomFallbackBuilder setSystemFallback(java.lang.String);
+ method @IntRange(from=64) public static int getMaxCustomFallbackCount();
+ method public android.graphics.Typeface.CustomFallbackBuilder setStyle(@NonNull android.graphics.fonts.FontStyle);
+ method public android.graphics.Typeface.CustomFallbackBuilder setSystemFallback(@NonNull String);
}
public class Xfermode {
@@ -15071,28 +15063,28 @@
method public android.graphics.drawable.Drawable getForeground();
method public android.graphics.Path getIconMask();
method public int getOpacity();
- method public void invalidateDrawable(android.graphics.drawable.Drawable);
- method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
+ method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+ method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
method public void setAlpha(int);
method public void setColorFilter(android.graphics.ColorFilter);
method public void setDither(boolean);
method public void setOpacity(int);
- method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+ method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
}
- public abstract interface Animatable {
- method public abstract boolean isRunning();
- method public abstract void start();
- method public abstract void stop();
+ public interface Animatable {
+ method public boolean isRunning();
+ method public void start();
+ method public void stop();
}
- public abstract interface Animatable2 implements android.graphics.drawable.Animatable {
- method public abstract void clearAnimationCallbacks();
- method public abstract void registerAnimationCallback(android.graphics.drawable.Animatable2.AnimationCallback);
- method public abstract boolean unregisterAnimationCallback(android.graphics.drawable.Animatable2.AnimationCallback);
+ public interface Animatable2 extends android.graphics.drawable.Animatable {
+ method public void clearAnimationCallbacks();
+ method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
+ method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
}
- public static abstract class Animatable2.AnimationCallback {
+ public abstract static class Animatable2.AnimationCallback {
ctor public Animatable2.AnimationCallback();
method public void onAnimationEnd(android.graphics.drawable.Drawable);
method public void onAnimationStart(android.graphics.drawable.Drawable);
@@ -15101,25 +15093,25 @@
public class AnimatedImageDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
ctor public AnimatedImageDrawable();
method public void clearAnimationCallbacks();
- method public void draw(android.graphics.Canvas);
+ method public void draw(@NonNull android.graphics.Canvas);
method public int getOpacity();
method public int getRepeatCount();
method public final boolean isAutoMirrored();
method public boolean isRunning();
- method public void registerAnimationCallback(android.graphics.drawable.Animatable2.AnimationCallback);
- method public void setAlpha(int);
- method public void setColorFilter(android.graphics.ColorFilter);
- method public void setRepeatCount(int);
+ method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
+ method public void setAlpha(@IntRange(from=0, to=255) int);
+ method public void setColorFilter(@Nullable android.graphics.ColorFilter);
+ method public void setRepeatCount(@IntRange(from=android.graphics.drawable.AnimatedImageDrawable.REPEAT_INFINITE) int);
method public void start();
method public void stop();
- method public boolean unregisterAnimationCallback(android.graphics.drawable.Animatable2.AnimationCallback);
+ method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
field public static final int REPEAT_INFINITE = -1; // 0xffffffff
}
public class AnimatedStateListDrawable extends android.graphics.drawable.StateListDrawable {
ctor public AnimatedStateListDrawable();
- method public void addState(int[], android.graphics.drawable.Drawable, int);
- method public <T extends android.graphics.drawable.Drawable & android.graphics.drawable.Animatable> void addTransition(int, int, T, boolean);
+ method public void addState(@NonNull int[], @NonNull android.graphics.drawable.Drawable, int);
+ method public <T extends android.graphics.drawable.Drawable & android.graphics.drawable.Animatable> void addTransition(int, int, @NonNull T, boolean);
}
public class AnimatedVectorDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
@@ -15128,18 +15120,18 @@
method public void draw(android.graphics.Canvas);
method public int getOpacity();
method public boolean isRunning();
- method public void registerAnimationCallback(android.graphics.drawable.Animatable2.AnimationCallback);
+ method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
method public void reset();
method public void setAlpha(int);
method public void setColorFilter(android.graphics.ColorFilter);
method public void start();
method public void stop();
- method public boolean unregisterAnimationCallback(android.graphics.drawable.Animatable2.AnimationCallback);
+ method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
}
public class AnimationDrawable extends android.graphics.drawable.DrawableContainer implements android.graphics.drawable.Animatable java.lang.Runnable {
ctor public AnimationDrawable();
- method public void addFrame(android.graphics.drawable.Drawable, int);
+ method public void addFrame(@NonNull android.graphics.drawable.Drawable, int);
method public int getDuration(int);
method public android.graphics.drawable.Drawable getFrame(int);
method public int getNumberOfFrames();
@@ -15152,13 +15144,13 @@
}
public class BitmapDrawable extends android.graphics.drawable.Drawable {
- ctor public deprecated BitmapDrawable();
- ctor public deprecated BitmapDrawable(android.content.res.Resources);
- ctor public deprecated BitmapDrawable(android.graphics.Bitmap);
+ ctor @Deprecated public BitmapDrawable();
+ ctor @Deprecated public BitmapDrawable(android.content.res.Resources);
+ ctor @Deprecated public BitmapDrawable(android.graphics.Bitmap);
ctor public BitmapDrawable(android.content.res.Resources, android.graphics.Bitmap);
- ctor public deprecated BitmapDrawable(java.lang.String);
- ctor public BitmapDrawable(android.content.res.Resources, java.lang.String);
- ctor public deprecated BitmapDrawable(java.io.InputStream);
+ ctor @Deprecated public BitmapDrawable(String);
+ ctor public BitmapDrawable(android.content.res.Resources, String);
+ ctor @Deprecated public BitmapDrawable(java.io.InputStream);
ctor public BitmapDrawable(android.content.res.Resources, java.io.InputStream);
method public void draw(android.graphics.Canvas);
method public final android.graphics.Bitmap getBitmap();
@@ -15193,12 +15185,12 @@
public class ColorDrawable extends android.graphics.drawable.Drawable {
ctor public ColorDrawable();
- ctor public ColorDrawable(int);
+ ctor public ColorDrawable(@ColorInt int);
method public void draw(android.graphics.Canvas);
- method public int getColor();
+ method @ColorInt public int getColor();
method public int getOpacity();
method public void setAlpha(int);
- method public void setColor(int);
+ method public void setColor(@ColorInt int);
method public void setColorFilter(android.graphics.ColorFilter);
}
@@ -15207,56 +15199,56 @@
ctor public ColorStateListDrawable(android.content.res.ColorStateList);
method public void clearAlpha();
method public void draw(android.graphics.Canvas);
- method public android.content.res.ColorStateList getColorStateList();
+ method @NonNull public android.content.res.ColorStateList getColorStateList();
method public int getOpacity();
method public boolean hasFocusStateSpecified();
method public void invalidateDrawable(android.graphics.drawable.Drawable);
- method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
- method public void setAlpha(int);
+ method public void scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long);
+ method public void setAlpha(@IntRange(from=0, to=255) int);
method public void setColorFilter(android.graphics.ColorFilter);
method public void setColorStateList(android.content.res.ColorStateList);
- method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+ method public void unscheduleDrawable(android.graphics.drawable.Drawable, Runnable);
}
public abstract class Drawable {
ctor public Drawable();
- method public void applyTheme(android.content.res.Resources.Theme);
+ method public void applyTheme(@NonNull android.content.res.Resources.Theme);
method public boolean canApplyTheme();
method public void clearColorFilter();
- method public final void copyBounds(android.graphics.Rect);
- method public final android.graphics.Rect copyBounds();
- method public static android.graphics.drawable.Drawable createFromPath(java.lang.String);
- method public static android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, java.lang.String);
- method public static deprecated android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, java.lang.String, android.graphics.BitmapFactory.Options);
- method public static android.graphics.drawable.Drawable createFromStream(java.io.InputStream, java.lang.String);
- method public static android.graphics.drawable.Drawable createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public static android.graphics.drawable.Drawable createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public static android.graphics.drawable.Drawable createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public static android.graphics.drawable.Drawable createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public abstract void draw(android.graphics.Canvas);
- method public int getAlpha();
- method public final android.graphics.Rect getBounds();
- method public android.graphics.drawable.Drawable.Callback getCallback();
+ method public final void copyBounds(@NonNull android.graphics.Rect);
+ method @NonNull public final android.graphics.Rect copyBounds();
+ method @Nullable public static android.graphics.drawable.Drawable createFromPath(String);
+ method public static android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, String);
+ method @Deprecated @Nullable public static android.graphics.drawable.Drawable createFromResourceStream(@Nullable android.content.res.Resources, @Nullable android.util.TypedValue, @Nullable java.io.InputStream, @Nullable String, @Nullable android.graphics.BitmapFactory.Options);
+ method public static android.graphics.drawable.Drawable createFromStream(java.io.InputStream, String);
+ method @NonNull public static android.graphics.drawable.Drawable createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method @NonNull public static android.graphics.drawable.Drawable createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method @NonNull public static android.graphics.drawable.Drawable createFromXmlInner(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method @NonNull public static android.graphics.drawable.Drawable createFromXmlInner(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public abstract void draw(@NonNull android.graphics.Canvas);
+ method @IntRange(from=0, to=255) public int getAlpha();
+ method @NonNull public final android.graphics.Rect getBounds();
+ method @Nullable public android.graphics.drawable.Drawable.Callback getCallback();
method public int getChangingConfigurations();
- method public android.graphics.ColorFilter getColorFilter();
- method public android.graphics.drawable.Drawable.ConstantState getConstantState();
- method public android.graphics.drawable.Drawable getCurrent();
- method public android.graphics.Rect getDirtyBounds();
- method public void getHotspotBounds(android.graphics.Rect);
+ method @Nullable public android.graphics.ColorFilter getColorFilter();
+ method @Nullable public android.graphics.drawable.Drawable.ConstantState getConstantState();
+ method @NonNull public android.graphics.drawable.Drawable getCurrent();
+ method @NonNull public android.graphics.Rect getDirtyBounds();
+ method public void getHotspotBounds(@NonNull android.graphics.Rect);
method public int getIntrinsicHeight();
method public int getIntrinsicWidth();
method public int getLayoutDirection();
- method public final int getLevel();
+ method @IntRange(from=0, to=10000) public final int getLevel();
method public int getMinimumHeight();
method public int getMinimumWidth();
- method public abstract deprecated int getOpacity();
- method public android.graphics.Insets getOpticalInsets();
- method public void getOutline(android.graphics.Outline);
- method public boolean getPadding(android.graphics.Rect);
- method public int[] getState();
- method public android.graphics.Region getTransparentRegion();
- method public void inflate(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public void inflate(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method @Deprecated public abstract int getOpacity();
+ method @NonNull public android.graphics.Insets getOpticalInsets();
+ method public void getOutline(@NonNull android.graphics.Outline);
+ method public boolean getPadding(@NonNull android.graphics.Rect);
+ method @NonNull public int[] getState();
+ method @Nullable public android.graphics.Region getTransparentRegion();
+ method public void inflate(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public void inflate(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
method public void invalidateSelf();
method public boolean isAutoMirrored();
method public boolean isFilterBitmap();
@@ -15264,56 +15256,56 @@
method public boolean isStateful();
method public final boolean isVisible();
method public void jumpToCurrentState();
- method public android.graphics.drawable.Drawable mutate();
+ method @NonNull public android.graphics.drawable.Drawable mutate();
method protected void onBoundsChange(android.graphics.Rect);
method public boolean onLayoutDirectionChanged(int);
method protected boolean onLevelChange(int);
method protected boolean onStateChange(int[]);
method public static int resolveOpacity(int, int);
- method public void scheduleSelf(java.lang.Runnable, long);
- method public abstract void setAlpha(int);
+ method public void scheduleSelf(@NonNull Runnable, long);
+ method public abstract void setAlpha(@IntRange(from=0, to=255) int);
method public void setAutoMirrored(boolean);
method public void setBounds(int, int, int, int);
- method public void setBounds(android.graphics.Rect);
- method public final void setCallback(android.graphics.drawable.Drawable.Callback);
+ method public void setBounds(@NonNull android.graphics.Rect);
+ method public final void setCallback(@Nullable android.graphics.drawable.Drawable.Callback);
method public void setChangingConfigurations(int);
- method public abstract void setColorFilter(android.graphics.ColorFilter);
- method public deprecated void setColorFilter(int, android.graphics.PorterDuff.Mode);
- method public deprecated void setDither(boolean);
+ method public abstract void setColorFilter(@Nullable android.graphics.ColorFilter);
+ method @Deprecated public void setColorFilter(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
+ method @Deprecated public void setDither(boolean);
method public void setFilterBitmap(boolean);
method public void setHotspot(float, float);
method public void setHotspotBounds(int, int, int, int);
method public final boolean setLayoutDirection(int);
- method public final boolean setLevel(int);
- method public boolean setState(int[]);
- method public void setTint(int);
- method public void setTintList(android.content.res.ColorStateList);
- method public void setTintMode(android.graphics.PorterDuff.Mode);
+ method public final boolean setLevel(@IntRange(from=0, to=10000) int);
+ method public boolean setState(@NonNull int[]);
+ method public void setTint(@ColorInt int);
+ method public void setTintList(@Nullable android.content.res.ColorStateList);
+ method public void setTintMode(@NonNull android.graphics.PorterDuff.Mode);
method public boolean setVisible(boolean, boolean);
- method public void unscheduleSelf(java.lang.Runnable);
+ method public void unscheduleSelf(@NonNull Runnable);
}
- public static abstract interface Drawable.Callback {
- method public abstract void invalidateDrawable(android.graphics.drawable.Drawable);
- method public abstract void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
- method public abstract void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+ public static interface Drawable.Callback {
+ method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+ method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
+ method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
}
- public static abstract class Drawable.ConstantState {
+ public abstract static class Drawable.ConstantState {
ctor public Drawable.ConstantState();
method public boolean canApplyTheme();
method public abstract int getChangingConfigurations();
- method public abstract android.graphics.drawable.Drawable newDrawable();
- method public android.graphics.drawable.Drawable newDrawable(android.content.res.Resources);
- method public android.graphics.drawable.Drawable newDrawable(android.content.res.Resources, android.content.res.Resources.Theme);
+ method @NonNull public abstract android.graphics.drawable.Drawable newDrawable();
+ method @NonNull public android.graphics.drawable.Drawable newDrawable(@Nullable android.content.res.Resources);
+ method @NonNull public android.graphics.drawable.Drawable newDrawable(@Nullable android.content.res.Resources, @Nullable android.content.res.Resources.Theme);
}
public class DrawableContainer extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
ctor public DrawableContainer();
method public void draw(android.graphics.Canvas);
method public int getOpacity();
- method public void invalidateDrawable(android.graphics.drawable.Drawable);
- method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
+ method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+ method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
method public boolean selectDrawable(int);
method public void setAlpha(int);
method public void setColorFilter(android.graphics.ColorFilter);
@@ -15321,12 +15313,12 @@
method public void setDither(boolean);
method public void setEnterFadeDuration(int);
method public void setExitFadeDuration(int);
- method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+ method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
}
- public static abstract class DrawableContainer.DrawableContainerState extends android.graphics.drawable.Drawable.ConstantState {
+ public abstract static class DrawableContainer.DrawableContainerState extends android.graphics.drawable.Drawable.ConstantState {
method public final int addChild(android.graphics.drawable.Drawable);
- method public synchronized boolean canConstantState();
+ method public boolean canConstantState();
method protected void computeConstantSize();
method public int getChangingConfigurations();
method public final android.graphics.drawable.Drawable getChild(int);
@@ -15350,25 +15342,25 @@
}
public abstract class DrawableWrapper extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
- ctor public DrawableWrapper(android.graphics.drawable.Drawable);
- method public void draw(android.graphics.Canvas);
- method public android.graphics.drawable.Drawable getDrawable();
+ ctor public DrawableWrapper(@Nullable android.graphics.drawable.Drawable);
+ method public void draw(@NonNull android.graphics.Canvas);
+ method @Nullable public android.graphics.drawable.Drawable getDrawable();
method public int getOpacity();
- method public void invalidateDrawable(android.graphics.drawable.Drawable);
- method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
+ method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+ method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
method public void setAlpha(int);
- method public void setColorFilter(android.graphics.ColorFilter);
- method public void setDrawable(android.graphics.drawable.Drawable);
- method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+ method public void setColorFilter(@Nullable android.graphics.ColorFilter);
+ method public void setDrawable(@Nullable android.graphics.drawable.Drawable);
+ method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
}
public class GradientDrawable extends android.graphics.drawable.Drawable {
ctor public GradientDrawable();
- ctor public GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation, int[]);
+ ctor public GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation, @ColorInt int[]);
method public void draw(android.graphics.Canvas);
- method public android.content.res.ColorStateList getColor();
- method public int[] getColors();
- method public float[] getCornerRadii();
+ method @Nullable public android.content.res.ColorStateList getColor();
+ method @Nullable public int[] getColors();
+ method @Nullable public float[] getCornerRadii();
method public float getCornerRadius();
method public float getGradientCenterX();
method public float getGradientCenterY();
@@ -15379,11 +15371,11 @@
method public int getShape();
method public boolean getUseLevel();
method public void setAlpha(int);
- method public void setColor(int);
- method public void setColor(android.content.res.ColorStateList);
- method public void setColorFilter(android.graphics.ColorFilter);
- method public void setColors(int[]);
- method public void setCornerRadii(float[]);
+ method public void setColor(@ColorInt int);
+ method public void setColor(@Nullable android.content.res.ColorStateList);
+ method public void setColorFilter(@Nullable android.graphics.ColorFilter);
+ method public void setColors(@ColorInt int[]);
+ method public void setCornerRadii(@Nullable float[]);
method public void setCornerRadius(float);
method public void setDither(boolean);
method public void setGradientCenter(float, float);
@@ -15392,9 +15384,9 @@
method public void setOrientation(android.graphics.drawable.GradientDrawable.Orientation);
method public void setShape(int);
method public void setSize(int, int);
- method public void setStroke(int, int);
+ method public void setStroke(int, @ColorInt int);
method public void setStroke(int, android.content.res.ColorStateList);
- method public void setStroke(int, int, float, float);
+ method public void setStroke(int, @ColorInt int, float, float);
method public void setStroke(int, android.content.res.ColorStateList, float, float);
method public void setUseLevel(boolean);
field public static final int LINE = 2; // 0x2
@@ -15406,9 +15398,7 @@
field public static final int SWEEP_GRADIENT = 2; // 0x2
}
- public static final class GradientDrawable.Orientation extends java.lang.Enum {
- method public static android.graphics.drawable.GradientDrawable.Orientation valueOf(java.lang.String);
- method public static final android.graphics.drawable.GradientDrawable.Orientation[] values();
+ public enum GradientDrawable.Orientation {
enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BL_TR;
enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BOTTOM_TOP;
enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BR_TL;
@@ -15422,21 +15412,21 @@
public final class Icon implements android.os.Parcelable {
method public static android.graphics.drawable.Icon createWithAdaptiveBitmap(android.graphics.Bitmap);
method public static android.graphics.drawable.Icon createWithBitmap(android.graphics.Bitmap);
- method public static android.graphics.drawable.Icon createWithContentUri(java.lang.String);
+ method public static android.graphics.drawable.Icon createWithContentUri(String);
method public static android.graphics.drawable.Icon createWithContentUri(android.net.Uri);
method public static android.graphics.drawable.Icon createWithData(byte[], int, int);
- method public static android.graphics.drawable.Icon createWithFilePath(java.lang.String);
- method public static android.graphics.drawable.Icon createWithResource(android.content.Context, int);
- method public static android.graphics.drawable.Icon createWithResource(java.lang.String, int);
+ method public static android.graphics.drawable.Icon createWithFilePath(String);
+ method public static android.graphics.drawable.Icon createWithResource(android.content.Context, @DrawableRes int);
+ method public static android.graphics.drawable.Icon createWithResource(String, @DrawableRes int);
method public int describeContents();
- method public int getResId();
- method public java.lang.String getResPackage();
+ method @IdRes public int getResId();
+ method @NonNull public String getResPackage();
method public int getType();
- method public android.net.Uri getUri();
+ method @NonNull public android.net.Uri getUri();
method public android.graphics.drawable.Drawable loadDrawable(android.content.Context);
method public void loadDrawableAsync(android.content.Context, android.os.Message);
method public void loadDrawableAsync(android.content.Context, android.graphics.drawable.Icon.OnDrawableLoadedListener, android.os.Handler);
- method public android.graphics.drawable.Icon setTint(int);
+ method public android.graphics.drawable.Icon setTint(@ColorInt int);
method public android.graphics.drawable.Icon setTintList(android.content.res.ColorStateList);
method public android.graphics.drawable.Icon setTintMode(android.graphics.PorterDuff.Mode);
method public void writeToParcel(android.os.Parcel, int);
@@ -15448,19 +15438,19 @@
field public static final int TYPE_URI = 4; // 0x4
}
- public static abstract interface Icon.OnDrawableLoadedListener {
- method public abstract void onDrawableLoaded(android.graphics.drawable.Drawable);
+ public static interface Icon.OnDrawableLoadedListener {
+ method public void onDrawableLoaded(android.graphics.drawable.Drawable);
}
public class InsetDrawable extends android.graphics.drawable.DrawableWrapper {
- ctor public InsetDrawable(android.graphics.drawable.Drawable, int);
- ctor public InsetDrawable(android.graphics.drawable.Drawable, float);
- ctor public InsetDrawable(android.graphics.drawable.Drawable, int, int, int, int);
- ctor public InsetDrawable(android.graphics.drawable.Drawable, float, float, float, float);
+ ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, int);
+ ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, float);
+ ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, int, int, int, int);
+ ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, float, float, float, float);
}
public class LayerDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
- ctor public LayerDrawable(android.graphics.drawable.Drawable[]);
+ ctor public LayerDrawable(@NonNull android.graphics.drawable.Drawable[]);
method public int addLayer(android.graphics.drawable.Drawable);
method public void draw(android.graphics.Canvas);
method public android.graphics.drawable.Drawable findDrawableByLayerId(int);
@@ -15485,8 +15475,8 @@
method public int getRightPadding();
method public int getStartPadding();
method public int getTopPadding();
- method public void invalidateDrawable(android.graphics.drawable.Drawable);
- method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
+ method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+ method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
method public void setAlpha(int);
method public void setColorFilter(android.graphics.ColorFilter);
method public void setDither(boolean);
@@ -15509,7 +15499,7 @@
method public void setPadding(int, int, int, int);
method public void setPaddingMode(int);
method public void setPaddingRelative(int, int, int, int);
- method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+ method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
field public static final int INSET_UNDEFINED = -2147483648; // 0x80000000
field public static final int PADDING_MODE_NEST = 0; // 0x0
field public static final int PADDING_MODE_STACK = 1; // 0x1
@@ -15521,18 +15511,18 @@
}
public class NinePatchDrawable extends android.graphics.drawable.Drawable {
- ctor public deprecated NinePatchDrawable(android.graphics.Bitmap, byte[], android.graphics.Rect, java.lang.String);
- ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.Bitmap, byte[], android.graphics.Rect, java.lang.String);
- ctor public deprecated NinePatchDrawable(android.graphics.NinePatch);
- ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.NinePatch);
+ ctor @Deprecated public NinePatchDrawable(android.graphics.Bitmap, byte[], android.graphics.Rect, String);
+ ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.Bitmap, byte[], android.graphics.Rect, String);
+ ctor @Deprecated public NinePatchDrawable(@NonNull android.graphics.NinePatch);
+ ctor public NinePatchDrawable(@Nullable android.content.res.Resources, @NonNull android.graphics.NinePatch);
method public void draw(android.graphics.Canvas);
method public int getOpacity();
- method public android.graphics.Paint getPaint();
+ method @NonNull public android.graphics.Paint getPaint();
method public void setAlpha(int);
- method public void setColorFilter(android.graphics.ColorFilter);
+ method public void setColorFilter(@Nullable android.graphics.ColorFilter);
method public void setDither(boolean);
- method public void setTargetDensity(android.graphics.Canvas);
- method public void setTargetDensity(android.util.DisplayMetrics);
+ method public void setTargetDensity(@NonNull android.graphics.Canvas);
+ method public void setTargetDensity(@NonNull android.util.DisplayMetrics);
method public void setTargetDensity(int);
}
@@ -15554,7 +15544,7 @@
}
public class RippleDrawable extends android.graphics.drawable.LayerDrawable {
- ctor public RippleDrawable(android.content.res.ColorStateList, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
+ ctor public RippleDrawable(@NonNull android.content.res.ColorStateList, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
method public int getRadius();
method public void setColor(android.content.res.ColorStateList);
method public void setRadius(int);
@@ -15589,7 +15579,7 @@
method public android.graphics.Paint getPaint();
method public android.graphics.drawable.ShapeDrawable.ShaderFactory getShaderFactory();
method public android.graphics.drawable.shapes.Shape getShape();
- method protected boolean inflateTag(java.lang.String, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
+ method protected boolean inflateTag(String, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
method protected void onDraw(android.graphics.drawable.shapes.Shape, android.graphics.Canvas, android.graphics.Paint);
method public void setAlpha(int);
method public void setColorFilter(android.graphics.ColorFilter);
@@ -15602,7 +15592,7 @@
method public void setShape(android.graphics.drawable.shapes.Shape);
}
- public static abstract class ShapeDrawable.ShaderFactory {
+ public abstract static class ShapeDrawable.ShaderFactory {
ctor public ShapeDrawable.ShaderFactory();
method public abstract android.graphics.Shader resize(int, int);
}
@@ -15650,7 +15640,7 @@
}
public class PathShape extends android.graphics.drawable.shapes.Shape {
- ctor public PathShape(android.graphics.Path, float, float);
+ ctor public PathShape(@NonNull android.graphics.Path, float, float);
method public android.graphics.drawable.shapes.PathShape clone() throws java.lang.CloneNotSupportedException;
method public void draw(android.graphics.Canvas, android.graphics.Paint);
}
@@ -15663,7 +15653,7 @@
}
public class RoundRectShape extends android.graphics.drawable.shapes.RectShape {
- ctor public RoundRectShape(float[], android.graphics.RectF, float[]);
+ ctor public RoundRectShape(@Nullable float[], @Nullable android.graphics.RectF, @Nullable float[]);
method public android.graphics.drawable.shapes.RoundRectShape clone() throws java.lang.CloneNotSupportedException;
}
@@ -15672,7 +15662,7 @@
method public android.graphics.drawable.shapes.Shape clone() throws java.lang.CloneNotSupportedException;
method public abstract void draw(android.graphics.Canvas, android.graphics.Paint);
method public final float getHeight();
- method public void getOutline(android.graphics.Outline);
+ method public void getOutline(@NonNull android.graphics.Outline);
method public final float getWidth();
method public boolean hasAlpha();
method protected void onResize(float, float);
@@ -15684,45 +15674,45 @@
package android.graphics.fonts {
public final class Font {
- method public android.graphics.fonts.FontVariationAxis[] getAxes();
- method public java.nio.ByteBuffer getBuffer();
- method public java.io.File getFile();
- method public android.os.LocaleList getLocaleList();
+ method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes();
+ method @NonNull public java.nio.ByteBuffer getBuffer();
+ method @Nullable public java.io.File getFile();
+ method @NonNull public android.os.LocaleList getLocaleList();
method public android.graphics.fonts.FontStyle getStyle();
- method public int getTtcIndex();
+ method @IntRange(from=0) public int getTtcIndex();
}
public static class Font.Builder {
- ctor public Font.Builder(java.nio.ByteBuffer);
- ctor public Font.Builder(java.io.File);
- ctor public Font.Builder(java.io.FileDescriptor);
- ctor public Font.Builder(java.io.FileDescriptor, long, long);
- ctor public Font.Builder(android.content.res.AssetManager, java.lang.String);
- ctor public Font.Builder(android.content.res.Resources, int);
- method public android.graphics.fonts.Font build() throws java.io.IOException;
- method public android.graphics.fonts.Font.Builder setFontVariationSettings(java.lang.String);
- method public android.graphics.fonts.Font.Builder setFontVariationSettings(android.graphics.fonts.FontVariationAxis[]);
- method public android.graphics.fonts.Font.Builder setSlant(int);
- method public android.graphics.fonts.Font.Builder setTtcIndex(int);
- method public android.graphics.fonts.Font.Builder setWeight(int);
+ ctor public Font.Builder(@NonNull java.nio.ByteBuffer);
+ ctor public Font.Builder(@NonNull java.io.File);
+ ctor public Font.Builder(@NonNull java.io.FileDescriptor);
+ ctor public Font.Builder(@NonNull java.io.FileDescriptor, @IntRange(from=0) long, @IntRange(from=0xffffffff) long);
+ ctor public Font.Builder(@NonNull android.content.res.AssetManager, @NonNull String);
+ ctor public Font.Builder(@NonNull android.content.res.Resources, int);
+ method @Nullable public android.graphics.fonts.Font build() throws java.io.IOException;
+ method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable String);
+ method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
+ method @NonNull public android.graphics.fonts.Font.Builder setSlant(int);
+ method @NonNull public android.graphics.fonts.Font.Builder setTtcIndex(@IntRange(from=0) int);
+ method @NonNull public android.graphics.fonts.Font.Builder setWeight(@IntRange(from=android.graphics.fonts.FontStyle.FONT_WEIGHT_MIN, to=android.graphics.fonts.FontStyle.FONT_WEIGHT_MAX) int);
}
public final class FontFamily {
- method public android.graphics.fonts.Font getFont(int);
+ method public android.graphics.fonts.Font getFont(@IntRange(from=0) int);
method public int getSize();
}
public static class FontFamily.Builder {
- ctor public FontFamily.Builder(android.graphics.fonts.Font);
- method public android.graphics.fonts.FontFamily.Builder addFont(android.graphics.fonts.Font);
- method public android.graphics.fonts.FontFamily build();
+ ctor public FontFamily.Builder(@NonNull android.graphics.fonts.Font);
+ method @NonNull public android.graphics.fonts.FontFamily.Builder addFont(@NonNull android.graphics.fonts.Font);
+ method @NonNull public android.graphics.fonts.FontFamily build();
}
public final class FontStyle {
ctor public FontStyle();
ctor public FontStyle(int, int);
method public int getSlant();
- method public int getWeight();
+ method @IntRange(from=0, to=1000) public int getWeight();
field public static final int FONT_SLANT_ITALIC = 1; // 0x1
field public static final int FONT_SLANT_UPRIGHT = 0; // 0x0
field public static final int FONT_WEIGHT_BLACK = 900; // 0x384
@@ -15739,15 +15729,15 @@
}
public final class FontVariationAxis {
- ctor public FontVariationAxis(java.lang.String, float);
- method public static android.graphics.fonts.FontVariationAxis[] fromFontVariationSettings(java.lang.String);
+ ctor public FontVariationAxis(@NonNull String, float);
+ method @Nullable public static android.graphics.fonts.FontVariationAxis[] fromFontVariationSettings(@Nullable String);
method public float getStyleValue();
- method public java.lang.String getTag();
- method public static java.lang.String toFontVariationSettings(android.graphics.fonts.FontVariationAxis[]);
+ method public String getTag();
+ method @NonNull public static String toFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
}
public final class SystemFonts {
- method public static java.util.Set<android.graphics.fonts.Font> getAvailableFonts();
+ method @NonNull public static java.util.Set<android.graphics.fonts.Font> getAvailableFonts();
}
}
@@ -15782,7 +15772,7 @@
}
public final class PdfRenderer implements java.lang.AutoCloseable {
- ctor public PdfRenderer(android.os.ParcelFileDescriptor) throws java.io.IOException;
+ ctor public PdfRenderer(@NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
method public void close();
method public int getPageCount();
method public android.graphics.pdf.PdfRenderer.Page openPage(int);
@@ -15794,7 +15784,7 @@
method public int getHeight();
method public int getIndex();
method public int getWidth();
- method public void render(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Matrix, int);
+ method public void render(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @Nullable android.graphics.Matrix, int);
field public static final int RENDER_MODE_FOR_DISPLAY = 1; // 0x1
field public static final int RENDER_MODE_FOR_PRINT = 2; // 0x2
}
@@ -15804,7 +15794,7 @@
package android.graphics.text {
public class LineBreaker {
- method public android.graphics.text.LineBreaker.Result computeLineBreaks(android.graphics.text.MeasuredText, android.graphics.text.LineBreaker.ParagraphConstraints, int);
+ method public android.graphics.text.LineBreaker.Result computeLineBreaks(@NonNull android.graphics.text.MeasuredText, @NonNull android.graphics.text.LineBreaker.ParagraphConstraints, @IntRange(from=0) int);
field public static final int BREAK_STRATEGY_BALANCED = 2; // 0x2
field public static final int BREAK_STRATEGY_HIGH_QUALITY = 1; // 0x1
field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0
@@ -15820,44 +15810,44 @@
method public android.graphics.text.LineBreaker build();
method public android.graphics.text.LineBreaker.Builder setBreakStrategy(int);
method public android.graphics.text.LineBreaker.Builder setHyphenationFrequency(int);
- method public android.graphics.text.LineBreaker.Builder setIndents(int[]);
+ method public android.graphics.text.LineBreaker.Builder setIndents(@Nullable int[]);
method public android.graphics.text.LineBreaker.Builder setJustified(int);
}
public static class LineBreaker.ParagraphConstraints {
ctor public LineBreaker.ParagraphConstraints();
- method public int getDefaultTabStop();
- method public float getFirstWidth();
- method public int getFirstWidthLineCount();
- method public int[] getTabStops();
- method public float getWidth();
- method public void setIndent(float, int);
- method public void setTabStops(int[], int);
- method public void setWidth(float);
+ method @Px @IntRange(from=0) public int getDefaultTabStop();
+ method @Px @FloatRange(from=0.0f) public float getFirstWidth();
+ method @Px @IntRange(from=0) public int getFirstWidthLineCount();
+ method @Nullable public int[] getTabStops();
+ method @Px @FloatRange(from=0.0f) public float getWidth();
+ method public void setIndent(@Px @FloatRange(from=0.0f) float, @Px @IntRange(from=0) int);
+ method public void setTabStops(@Nullable int[], @Px @IntRange(from=0) int);
+ method public void setWidth(@Px @FloatRange(from=0.0f) float);
}
public static class LineBreaker.Result {
- method public float getLineAscent(int);
- method public int getLineBreakOffset(int);
- method public int getLineCount();
- method public float getLineDescent(int);
+ method @Px public float getLineAscent(@IntRange(from=0) int);
+ method @IntRange(from=0) public int getLineBreakOffset(@IntRange(from=0) int);
+ method @IntRange(from=0) public int getLineCount();
+ method @Px public float getLineDescent(@IntRange(from=0) int);
method public int getLineHyphenEdit(int);
- method public float getLineWidth(int);
+ method @Px public float getLineWidth(@IntRange(from=0) int);
method public boolean hasLineTab(int);
}
public class MeasuredText {
- method public void getBounds(int, int, android.graphics.Rect);
- method public float getCharWidthAt(int);
- method public char[] getChars();
- method public float getWidth(int, int);
+ method public void getBounds(@IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.graphics.Rect);
+ method @FloatRange(from=0.0f) @Px public float getCharWidthAt(@IntRange(from=0) int);
+ method @NonNull public char[] getChars();
+ method @FloatRange(from=0.0) @Px public float getWidth(@IntRange(from=0) int, @IntRange(from=0) int);
}
public static class MeasuredText.Builder {
- ctor public MeasuredText.Builder(char[]);
- ctor public MeasuredText.Builder(android.graphics.text.MeasuredText);
- method public android.graphics.text.MeasuredText.Builder appendReplacementRun(android.graphics.Paint, int, float);
- method public android.graphics.text.MeasuredText.Builder appendStyleRun(android.graphics.Paint, int, boolean);
+ ctor public MeasuredText.Builder(@NonNull char[]);
+ ctor public MeasuredText.Builder(@NonNull android.graphics.text.MeasuredText);
+ method public android.graphics.text.MeasuredText.Builder appendReplacementRun(@NonNull android.graphics.Paint, @IntRange(from=0) int, @FloatRange(from=0) float);
+ method public android.graphics.text.MeasuredText.Builder appendStyleRun(@NonNull android.graphics.Paint, @IntRange(from=0) int, boolean);
method public android.graphics.text.MeasuredText build();
method public android.graphics.text.MeasuredText.Builder setComputeHyphenation(boolean);
method public android.graphics.text.MeasuredText.Builder setComputeLayout(boolean);
@@ -15867,258 +15857,258 @@
package android.hardware {
- public deprecated class Camera {
- method public final void addCallbackBuffer(byte[]);
- method public final void autoFocus(android.hardware.Camera.AutoFocusCallback);
- method public final void cancelAutoFocus();
- method public final boolean enableShutterSound(boolean);
- method protected void finalize();
- method public static void getCameraInfo(int, android.hardware.Camera.CameraInfo);
- method public static int getNumberOfCameras();
- method public android.hardware.Camera.Parameters getParameters();
- method public final void lock();
- method public static android.hardware.Camera open(int);
- method public static android.hardware.Camera open();
- method public final void reconnect() throws java.io.IOException;
- method public final void release();
- method public void setAutoFocusMoveCallback(android.hardware.Camera.AutoFocusMoveCallback);
- method public final void setDisplayOrientation(int);
- method public final void setErrorCallback(android.hardware.Camera.ErrorCallback);
- method public final void setFaceDetectionListener(android.hardware.Camera.FaceDetectionListener);
- method public final void setOneShotPreviewCallback(android.hardware.Camera.PreviewCallback);
- method public void setParameters(android.hardware.Camera.Parameters);
- method public final void setPreviewCallback(android.hardware.Camera.PreviewCallback);
- method public final void setPreviewCallbackWithBuffer(android.hardware.Camera.PreviewCallback);
- method public final void setPreviewDisplay(android.view.SurfaceHolder) throws java.io.IOException;
- method public final void setPreviewTexture(android.graphics.SurfaceTexture) throws java.io.IOException;
- method public final void setZoomChangeListener(android.hardware.Camera.OnZoomChangeListener);
- method public final void startFaceDetection();
- method public final void startPreview();
- method public final void startSmoothZoom(int);
- method public final void stopFaceDetection();
- method public final void stopPreview();
- method public final void stopSmoothZoom();
- method public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
- method public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
- method public final void unlock();
- field public static final java.lang.String ACTION_NEW_PICTURE = "android.hardware.action.NEW_PICTURE";
- field public static final java.lang.String ACTION_NEW_VIDEO = "android.hardware.action.NEW_VIDEO";
- field public static final int CAMERA_ERROR_EVICTED = 2; // 0x2
- field public static final int CAMERA_ERROR_SERVER_DIED = 100; // 0x64
- field public static final int CAMERA_ERROR_UNKNOWN = 1; // 0x1
+ @Deprecated public class Camera {
+ method @Deprecated public final void addCallbackBuffer(byte[]);
+ method @Deprecated public final void autoFocus(android.hardware.Camera.AutoFocusCallback);
+ method @Deprecated public final void cancelAutoFocus();
+ method @Deprecated public final boolean enableShutterSound(boolean);
+ method @Deprecated protected void finalize();
+ method @Deprecated public static void getCameraInfo(int, android.hardware.Camera.CameraInfo);
+ method @Deprecated public static int getNumberOfCameras();
+ method @Deprecated public android.hardware.Camera.Parameters getParameters();
+ method @Deprecated public final void lock();
+ method @Deprecated public static android.hardware.Camera open(int);
+ method @Deprecated public static android.hardware.Camera open();
+ method @Deprecated public final void reconnect() throws java.io.IOException;
+ method @Deprecated public final void release();
+ method @Deprecated public void setAutoFocusMoveCallback(android.hardware.Camera.AutoFocusMoveCallback);
+ method @Deprecated public final void setDisplayOrientation(int);
+ method @Deprecated public final void setErrorCallback(android.hardware.Camera.ErrorCallback);
+ method @Deprecated public final void setFaceDetectionListener(android.hardware.Camera.FaceDetectionListener);
+ method @Deprecated public final void setOneShotPreviewCallback(android.hardware.Camera.PreviewCallback);
+ method @Deprecated public void setParameters(android.hardware.Camera.Parameters);
+ method @Deprecated public final void setPreviewCallback(android.hardware.Camera.PreviewCallback);
+ method @Deprecated public final void setPreviewCallbackWithBuffer(android.hardware.Camera.PreviewCallback);
+ method @Deprecated public final void setPreviewDisplay(android.view.SurfaceHolder) throws java.io.IOException;
+ method @Deprecated public final void setPreviewTexture(android.graphics.SurfaceTexture) throws java.io.IOException;
+ method @Deprecated public final void setZoomChangeListener(android.hardware.Camera.OnZoomChangeListener);
+ method @Deprecated public final void startFaceDetection();
+ method @Deprecated public final void startPreview();
+ method @Deprecated public final void startSmoothZoom(int);
+ method @Deprecated public final void stopFaceDetection();
+ method @Deprecated public final void stopPreview();
+ method @Deprecated public final void stopSmoothZoom();
+ method @Deprecated public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
+ method @Deprecated public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
+ method @Deprecated public final void unlock();
+ field @Deprecated public static final String ACTION_NEW_PICTURE = "android.hardware.action.NEW_PICTURE";
+ field @Deprecated public static final String ACTION_NEW_VIDEO = "android.hardware.action.NEW_VIDEO";
+ field @Deprecated public static final int CAMERA_ERROR_EVICTED = 2; // 0x2
+ field @Deprecated public static final int CAMERA_ERROR_SERVER_DIED = 100; // 0x64
+ field @Deprecated public static final int CAMERA_ERROR_UNKNOWN = 1; // 0x1
}
- public static deprecated class Camera.Area {
- ctor public Camera.Area(android.graphics.Rect, int);
- field public android.graphics.Rect rect;
- field public int weight;
+ @Deprecated public static class Camera.Area {
+ ctor @Deprecated public Camera.Area(android.graphics.Rect, int);
+ field @Deprecated public android.graphics.Rect rect;
+ field @Deprecated public int weight;
}
- public static abstract deprecated interface Camera.AutoFocusCallback {
- method public abstract void onAutoFocus(boolean, android.hardware.Camera);
+ @Deprecated public static interface Camera.AutoFocusCallback {
+ method @Deprecated public void onAutoFocus(boolean, android.hardware.Camera);
}
- public static abstract deprecated interface Camera.AutoFocusMoveCallback {
- method public abstract void onAutoFocusMoving(boolean, android.hardware.Camera);
+ @Deprecated public static interface Camera.AutoFocusMoveCallback {
+ method @Deprecated public void onAutoFocusMoving(boolean, android.hardware.Camera);
}
- public static deprecated class Camera.CameraInfo {
- ctor public Camera.CameraInfo();
- field public static final int CAMERA_FACING_BACK = 0; // 0x0
- field public static final int CAMERA_FACING_FRONT = 1; // 0x1
- field public boolean canDisableShutterSound;
- field public int facing;
- field public int orientation;
+ @Deprecated public static class Camera.CameraInfo {
+ ctor @Deprecated public Camera.CameraInfo();
+ field @Deprecated public static final int CAMERA_FACING_BACK = 0; // 0x0
+ field @Deprecated public static final int CAMERA_FACING_FRONT = 1; // 0x1
+ field @Deprecated public boolean canDisableShutterSound;
+ field @Deprecated public int facing;
+ field @Deprecated public int orientation;
}
- public static abstract deprecated interface Camera.ErrorCallback {
- method public abstract void onError(int, android.hardware.Camera);
+ @Deprecated public static interface Camera.ErrorCallback {
+ method @Deprecated public void onError(int, android.hardware.Camera);
}
- public static deprecated class Camera.Face {
- ctor public Camera.Face();
- field public int id;
- field public android.graphics.Point leftEye;
- field public android.graphics.Point mouth;
- field public android.graphics.Rect rect;
- field public android.graphics.Point rightEye;
- field public int score;
+ @Deprecated public static class Camera.Face {
+ ctor @Deprecated public Camera.Face();
+ field @Deprecated public int id;
+ field @Deprecated public android.graphics.Point leftEye;
+ field @Deprecated public android.graphics.Point mouth;
+ field @Deprecated public android.graphics.Rect rect;
+ field @Deprecated public android.graphics.Point rightEye;
+ field @Deprecated public int score;
}
- public static abstract deprecated interface Camera.FaceDetectionListener {
- method public abstract void onFaceDetection(android.hardware.Camera.Face[], android.hardware.Camera);
+ @Deprecated public static interface Camera.FaceDetectionListener {
+ method @Deprecated public void onFaceDetection(android.hardware.Camera.Face[], android.hardware.Camera);
}
- public static abstract deprecated interface Camera.OnZoomChangeListener {
- method public abstract void onZoomChange(int, boolean, android.hardware.Camera);
+ @Deprecated public static interface Camera.OnZoomChangeListener {
+ method @Deprecated public void onZoomChange(int, boolean, android.hardware.Camera);
}
- public deprecated class Camera.Parameters {
- method public java.lang.String flatten();
- method public java.lang.String get(java.lang.String);
- method public java.lang.String getAntibanding();
- method public boolean getAutoExposureLock();
- method public boolean getAutoWhiteBalanceLock();
- method public java.lang.String getColorEffect();
- method public int getExposureCompensation();
- method public float getExposureCompensationStep();
- method public java.lang.String getFlashMode();
- method public float getFocalLength();
- method public java.util.List<android.hardware.Camera.Area> getFocusAreas();
- method public void getFocusDistances(float[]);
- method public java.lang.String getFocusMode();
- method public float getHorizontalViewAngle();
- method public int getInt(java.lang.String);
- method public int getJpegQuality();
- method public int getJpegThumbnailQuality();
- method public android.hardware.Camera.Size getJpegThumbnailSize();
- method public int getMaxExposureCompensation();
- method public int getMaxNumDetectedFaces();
- method public int getMaxNumFocusAreas();
- method public int getMaxNumMeteringAreas();
- method public int getMaxZoom();
- method public java.util.List<android.hardware.Camera.Area> getMeteringAreas();
- method public int getMinExposureCompensation();
- method public int getPictureFormat();
- method public android.hardware.Camera.Size getPictureSize();
- method public android.hardware.Camera.Size getPreferredPreviewSizeForVideo();
- method public int getPreviewFormat();
- method public void getPreviewFpsRange(int[]);
- method public deprecated int getPreviewFrameRate();
- method public android.hardware.Camera.Size getPreviewSize();
- method public java.lang.String getSceneMode();
- method public java.util.List<java.lang.String> getSupportedAntibanding();
- method public java.util.List<java.lang.String> getSupportedColorEffects();
- method public java.util.List<java.lang.String> getSupportedFlashModes();
- method public java.util.List<java.lang.String> getSupportedFocusModes();
- method public java.util.List<android.hardware.Camera.Size> getSupportedJpegThumbnailSizes();
- method public java.util.List<java.lang.Integer> getSupportedPictureFormats();
- method public java.util.List<android.hardware.Camera.Size> getSupportedPictureSizes();
- method public java.util.List<java.lang.Integer> getSupportedPreviewFormats();
- method public java.util.List<int[]> getSupportedPreviewFpsRange();
- method public deprecated java.util.List<java.lang.Integer> getSupportedPreviewFrameRates();
- method public java.util.List<android.hardware.Camera.Size> getSupportedPreviewSizes();
- method public java.util.List<java.lang.String> getSupportedSceneModes();
- method public java.util.List<android.hardware.Camera.Size> getSupportedVideoSizes();
- method public java.util.List<java.lang.String> getSupportedWhiteBalance();
- method public float getVerticalViewAngle();
- method public boolean getVideoStabilization();
- method public java.lang.String getWhiteBalance();
- method public int getZoom();
- method public java.util.List<java.lang.Integer> getZoomRatios();
- method public boolean isAutoExposureLockSupported();
- method public boolean isAutoWhiteBalanceLockSupported();
- method public boolean isSmoothZoomSupported();
- method public boolean isVideoSnapshotSupported();
- method public boolean isVideoStabilizationSupported();
- method public boolean isZoomSupported();
- method public void remove(java.lang.String);
- method public void removeGpsData();
- method public void set(java.lang.String, java.lang.String);
- method public void set(java.lang.String, int);
- method public void setAntibanding(java.lang.String);
- method public void setAutoExposureLock(boolean);
- method public void setAutoWhiteBalanceLock(boolean);
- method public void setColorEffect(java.lang.String);
- method public void setExposureCompensation(int);
- method public void setFlashMode(java.lang.String);
- method public void setFocusAreas(java.util.List<android.hardware.Camera.Area>);
- method public void setFocusMode(java.lang.String);
- method public void setGpsAltitude(double);
- method public void setGpsLatitude(double);
- method public void setGpsLongitude(double);
- method public void setGpsProcessingMethod(java.lang.String);
- method public void setGpsTimestamp(long);
- method public void setJpegQuality(int);
- method public void setJpegThumbnailQuality(int);
- method public void setJpegThumbnailSize(int, int);
- method public void setMeteringAreas(java.util.List<android.hardware.Camera.Area>);
- method public void setPictureFormat(int);
- method public void setPictureSize(int, int);
- method public void setPreviewFormat(int);
- method public void setPreviewFpsRange(int, int);
- method public deprecated void setPreviewFrameRate(int);
- method public void setPreviewSize(int, int);
- method public void setRecordingHint(boolean);
- method public void setRotation(int);
- method public void setSceneMode(java.lang.String);
- method public void setVideoStabilization(boolean);
- method public void setWhiteBalance(java.lang.String);
- method public void setZoom(int);
- method public void unflatten(java.lang.String);
- field public static final java.lang.String ANTIBANDING_50HZ = "50hz";
- field public static final java.lang.String ANTIBANDING_60HZ = "60hz";
- field public static final java.lang.String ANTIBANDING_AUTO = "auto";
- field public static final java.lang.String ANTIBANDING_OFF = "off";
- field public static final java.lang.String EFFECT_AQUA = "aqua";
- field public static final java.lang.String EFFECT_BLACKBOARD = "blackboard";
- field public static final java.lang.String EFFECT_MONO = "mono";
- field public static final java.lang.String EFFECT_NEGATIVE = "negative";
- field public static final java.lang.String EFFECT_NONE = "none";
- field public static final java.lang.String EFFECT_POSTERIZE = "posterize";
- field public static final java.lang.String EFFECT_SEPIA = "sepia";
- field public static final java.lang.String EFFECT_SOLARIZE = "solarize";
- field public static final java.lang.String EFFECT_WHITEBOARD = "whiteboard";
- field public static final java.lang.String FLASH_MODE_AUTO = "auto";
- field public static final java.lang.String FLASH_MODE_OFF = "off";
- field public static final java.lang.String FLASH_MODE_ON = "on";
- field public static final java.lang.String FLASH_MODE_RED_EYE = "red-eye";
- field public static final java.lang.String FLASH_MODE_TORCH = "torch";
- field public static final int FOCUS_DISTANCE_FAR_INDEX = 2; // 0x2
- field public static final int FOCUS_DISTANCE_NEAR_INDEX = 0; // 0x0
- field public static final int FOCUS_DISTANCE_OPTIMAL_INDEX = 1; // 0x1
- field public static final java.lang.String FOCUS_MODE_AUTO = "auto";
- field public static final java.lang.String FOCUS_MODE_CONTINUOUS_PICTURE = "continuous-picture";
- field public static final java.lang.String FOCUS_MODE_CONTINUOUS_VIDEO = "continuous-video";
- field public static final java.lang.String FOCUS_MODE_EDOF = "edof";
- field public static final java.lang.String FOCUS_MODE_FIXED = "fixed";
- field public static final java.lang.String FOCUS_MODE_INFINITY = "infinity";
- field public static final java.lang.String FOCUS_MODE_MACRO = "macro";
- field public static final int PREVIEW_FPS_MAX_INDEX = 1; // 0x1
- field public static final int PREVIEW_FPS_MIN_INDEX = 0; // 0x0
- field public static final java.lang.String SCENE_MODE_ACTION = "action";
- field public static final java.lang.String SCENE_MODE_AUTO = "auto";
- field public static final java.lang.String SCENE_MODE_BARCODE = "barcode";
- field public static final java.lang.String SCENE_MODE_BEACH = "beach";
- field public static final java.lang.String SCENE_MODE_CANDLELIGHT = "candlelight";
- field public static final java.lang.String SCENE_MODE_FIREWORKS = "fireworks";
- field public static final java.lang.String SCENE_MODE_HDR = "hdr";
- field public static final java.lang.String SCENE_MODE_LANDSCAPE = "landscape";
- field public static final java.lang.String SCENE_MODE_NIGHT = "night";
- field public static final java.lang.String SCENE_MODE_NIGHT_PORTRAIT = "night-portrait";
- field public static final java.lang.String SCENE_MODE_PARTY = "party";
- field public static final java.lang.String SCENE_MODE_PORTRAIT = "portrait";
- field public static final java.lang.String SCENE_MODE_SNOW = "snow";
- field public static final java.lang.String SCENE_MODE_SPORTS = "sports";
- field public static final java.lang.String SCENE_MODE_STEADYPHOTO = "steadyphoto";
- field public static final java.lang.String SCENE_MODE_SUNSET = "sunset";
- field public static final java.lang.String SCENE_MODE_THEATRE = "theatre";
- field public static final java.lang.String WHITE_BALANCE_AUTO = "auto";
- field public static final java.lang.String WHITE_BALANCE_CLOUDY_DAYLIGHT = "cloudy-daylight";
- field public static final java.lang.String WHITE_BALANCE_DAYLIGHT = "daylight";
- field public static final java.lang.String WHITE_BALANCE_FLUORESCENT = "fluorescent";
- field public static final java.lang.String WHITE_BALANCE_INCANDESCENT = "incandescent";
- field public static final java.lang.String WHITE_BALANCE_SHADE = "shade";
- field public static final java.lang.String WHITE_BALANCE_TWILIGHT = "twilight";
- field public static final java.lang.String WHITE_BALANCE_WARM_FLUORESCENT = "warm-fluorescent";
+ @Deprecated public class Camera.Parameters {
+ method @Deprecated public String flatten();
+ method @Deprecated public String get(String);
+ method @Deprecated public String getAntibanding();
+ method @Deprecated public boolean getAutoExposureLock();
+ method @Deprecated public boolean getAutoWhiteBalanceLock();
+ method @Deprecated public String getColorEffect();
+ method @Deprecated public int getExposureCompensation();
+ method @Deprecated public float getExposureCompensationStep();
+ method @Deprecated public String getFlashMode();
+ method @Deprecated public float getFocalLength();
+ method @Deprecated public java.util.List<android.hardware.Camera.Area> getFocusAreas();
+ method @Deprecated public void getFocusDistances(float[]);
+ method @Deprecated public String getFocusMode();
+ method @Deprecated public float getHorizontalViewAngle();
+ method @Deprecated public int getInt(String);
+ method @Deprecated public int getJpegQuality();
+ method @Deprecated public int getJpegThumbnailQuality();
+ method @Deprecated public android.hardware.Camera.Size getJpegThumbnailSize();
+ method @Deprecated public int getMaxExposureCompensation();
+ method @Deprecated public int getMaxNumDetectedFaces();
+ method @Deprecated public int getMaxNumFocusAreas();
+ method @Deprecated public int getMaxNumMeteringAreas();
+ method @Deprecated public int getMaxZoom();
+ method @Deprecated public java.util.List<android.hardware.Camera.Area> getMeteringAreas();
+ method @Deprecated public int getMinExposureCompensation();
+ method @Deprecated public int getPictureFormat();
+ method @Deprecated public android.hardware.Camera.Size getPictureSize();
+ method @Deprecated public android.hardware.Camera.Size getPreferredPreviewSizeForVideo();
+ method @Deprecated public int getPreviewFormat();
+ method @Deprecated public void getPreviewFpsRange(int[]);
+ method @Deprecated public int getPreviewFrameRate();
+ method @Deprecated public android.hardware.Camera.Size getPreviewSize();
+ method @Deprecated public String getSceneMode();
+ method @Deprecated public java.util.List<java.lang.String> getSupportedAntibanding();
+ method @Deprecated public java.util.List<java.lang.String> getSupportedColorEffects();
+ method @Deprecated public java.util.List<java.lang.String> getSupportedFlashModes();
+ method @Deprecated public java.util.List<java.lang.String> getSupportedFocusModes();
+ method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedJpegThumbnailSizes();
+ method @Deprecated public java.util.List<java.lang.Integer> getSupportedPictureFormats();
+ method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedPictureSizes();
+ method @Deprecated public java.util.List<java.lang.Integer> getSupportedPreviewFormats();
+ method @Deprecated public java.util.List<int[]> getSupportedPreviewFpsRange();
+ method @Deprecated public java.util.List<java.lang.Integer> getSupportedPreviewFrameRates();
+ method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedPreviewSizes();
+ method @Deprecated public java.util.List<java.lang.String> getSupportedSceneModes();
+ method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedVideoSizes();
+ method @Deprecated public java.util.List<java.lang.String> getSupportedWhiteBalance();
+ method @Deprecated public float getVerticalViewAngle();
+ method @Deprecated public boolean getVideoStabilization();
+ method @Deprecated public String getWhiteBalance();
+ method @Deprecated public int getZoom();
+ method @Deprecated public java.util.List<java.lang.Integer> getZoomRatios();
+ method @Deprecated public boolean isAutoExposureLockSupported();
+ method @Deprecated public boolean isAutoWhiteBalanceLockSupported();
+ method @Deprecated public boolean isSmoothZoomSupported();
+ method @Deprecated public boolean isVideoSnapshotSupported();
+ method @Deprecated public boolean isVideoStabilizationSupported();
+ method @Deprecated public boolean isZoomSupported();
+ method @Deprecated public void remove(String);
+ method @Deprecated public void removeGpsData();
+ method @Deprecated public void set(String, String);
+ method @Deprecated public void set(String, int);
+ method @Deprecated public void setAntibanding(String);
+ method @Deprecated public void setAutoExposureLock(boolean);
+ method @Deprecated public void setAutoWhiteBalanceLock(boolean);
+ method @Deprecated public void setColorEffect(String);
+ method @Deprecated public void setExposureCompensation(int);
+ method @Deprecated public void setFlashMode(String);
+ method @Deprecated public void setFocusAreas(java.util.List<android.hardware.Camera.Area>);
+ method @Deprecated public void setFocusMode(String);
+ method @Deprecated public void setGpsAltitude(double);
+ method @Deprecated public void setGpsLatitude(double);
+ method @Deprecated public void setGpsLongitude(double);
+ method @Deprecated public void setGpsProcessingMethod(String);
+ method @Deprecated public void setGpsTimestamp(long);
+ method @Deprecated public void setJpegQuality(int);
+ method @Deprecated public void setJpegThumbnailQuality(int);
+ method @Deprecated public void setJpegThumbnailSize(int, int);
+ method @Deprecated public void setMeteringAreas(java.util.List<android.hardware.Camera.Area>);
+ method @Deprecated public void setPictureFormat(int);
+ method @Deprecated public void setPictureSize(int, int);
+ method @Deprecated public void setPreviewFormat(int);
+ method @Deprecated public void setPreviewFpsRange(int, int);
+ method @Deprecated public void setPreviewFrameRate(int);
+ method @Deprecated public void setPreviewSize(int, int);
+ method @Deprecated public void setRecordingHint(boolean);
+ method @Deprecated public void setRotation(int);
+ method @Deprecated public void setSceneMode(String);
+ method @Deprecated public void setVideoStabilization(boolean);
+ method @Deprecated public void setWhiteBalance(String);
+ method @Deprecated public void setZoom(int);
+ method @Deprecated public void unflatten(String);
+ field @Deprecated public static final String ANTIBANDING_50HZ = "50hz";
+ field @Deprecated public static final String ANTIBANDING_60HZ = "60hz";
+ field @Deprecated public static final String ANTIBANDING_AUTO = "auto";
+ field @Deprecated public static final String ANTIBANDING_OFF = "off";
+ field @Deprecated public static final String EFFECT_AQUA = "aqua";
+ field @Deprecated public static final String EFFECT_BLACKBOARD = "blackboard";
+ field @Deprecated public static final String EFFECT_MONO = "mono";
+ field @Deprecated public static final String EFFECT_NEGATIVE = "negative";
+ field @Deprecated public static final String EFFECT_NONE = "none";
+ field @Deprecated public static final String EFFECT_POSTERIZE = "posterize";
+ field @Deprecated public static final String EFFECT_SEPIA = "sepia";
+ field @Deprecated public static final String EFFECT_SOLARIZE = "solarize";
+ field @Deprecated public static final String EFFECT_WHITEBOARD = "whiteboard";
+ field @Deprecated public static final String FLASH_MODE_AUTO = "auto";
+ field @Deprecated public static final String FLASH_MODE_OFF = "off";
+ field @Deprecated public static final String FLASH_MODE_ON = "on";
+ field @Deprecated public static final String FLASH_MODE_RED_EYE = "red-eye";
+ field @Deprecated public static final String FLASH_MODE_TORCH = "torch";
+ field @Deprecated public static final int FOCUS_DISTANCE_FAR_INDEX = 2; // 0x2
+ field @Deprecated public static final int FOCUS_DISTANCE_NEAR_INDEX = 0; // 0x0
+ field @Deprecated public static final int FOCUS_DISTANCE_OPTIMAL_INDEX = 1; // 0x1
+ field @Deprecated public static final String FOCUS_MODE_AUTO = "auto";
+ field @Deprecated public static final String FOCUS_MODE_CONTINUOUS_PICTURE = "continuous-picture";
+ field @Deprecated public static final String FOCUS_MODE_CONTINUOUS_VIDEO = "continuous-video";
+ field @Deprecated public static final String FOCUS_MODE_EDOF = "edof";
+ field @Deprecated public static final String FOCUS_MODE_FIXED = "fixed";
+ field @Deprecated public static final String FOCUS_MODE_INFINITY = "infinity";
+ field @Deprecated public static final String FOCUS_MODE_MACRO = "macro";
+ field @Deprecated public static final int PREVIEW_FPS_MAX_INDEX = 1; // 0x1
+ field @Deprecated public static final int PREVIEW_FPS_MIN_INDEX = 0; // 0x0
+ field @Deprecated public static final String SCENE_MODE_ACTION = "action";
+ field @Deprecated public static final String SCENE_MODE_AUTO = "auto";
+ field @Deprecated public static final String SCENE_MODE_BARCODE = "barcode";
+ field @Deprecated public static final String SCENE_MODE_BEACH = "beach";
+ field @Deprecated public static final String SCENE_MODE_CANDLELIGHT = "candlelight";
+ field @Deprecated public static final String SCENE_MODE_FIREWORKS = "fireworks";
+ field @Deprecated public static final String SCENE_MODE_HDR = "hdr";
+ field @Deprecated public static final String SCENE_MODE_LANDSCAPE = "landscape";
+ field @Deprecated public static final String SCENE_MODE_NIGHT = "night";
+ field @Deprecated public static final String SCENE_MODE_NIGHT_PORTRAIT = "night-portrait";
+ field @Deprecated public static final String SCENE_MODE_PARTY = "party";
+ field @Deprecated public static final String SCENE_MODE_PORTRAIT = "portrait";
+ field @Deprecated public static final String SCENE_MODE_SNOW = "snow";
+ field @Deprecated public static final String SCENE_MODE_SPORTS = "sports";
+ field @Deprecated public static final String SCENE_MODE_STEADYPHOTO = "steadyphoto";
+ field @Deprecated public static final String SCENE_MODE_SUNSET = "sunset";
+ field @Deprecated public static final String SCENE_MODE_THEATRE = "theatre";
+ field @Deprecated public static final String WHITE_BALANCE_AUTO = "auto";
+ field @Deprecated public static final String WHITE_BALANCE_CLOUDY_DAYLIGHT = "cloudy-daylight";
+ field @Deprecated public static final String WHITE_BALANCE_DAYLIGHT = "daylight";
+ field @Deprecated public static final String WHITE_BALANCE_FLUORESCENT = "fluorescent";
+ field @Deprecated public static final String WHITE_BALANCE_INCANDESCENT = "incandescent";
+ field @Deprecated public static final String WHITE_BALANCE_SHADE = "shade";
+ field @Deprecated public static final String WHITE_BALANCE_TWILIGHT = "twilight";
+ field @Deprecated public static final String WHITE_BALANCE_WARM_FLUORESCENT = "warm-fluorescent";
}
- public static abstract deprecated interface Camera.PictureCallback {
- method public abstract void onPictureTaken(byte[], android.hardware.Camera);
+ @Deprecated public static interface Camera.PictureCallback {
+ method @Deprecated public void onPictureTaken(byte[], android.hardware.Camera);
}
- public static abstract deprecated interface Camera.PreviewCallback {
- method public abstract void onPreviewFrame(byte[], android.hardware.Camera);
+ @Deprecated public static interface Camera.PreviewCallback {
+ method @Deprecated public void onPreviewFrame(byte[], android.hardware.Camera);
}
- public static abstract deprecated interface Camera.ShutterCallback {
- method public abstract void onShutter();
+ @Deprecated public static interface Camera.ShutterCallback {
+ method @Deprecated public void onShutter();
}
- public deprecated class Camera.Size {
- ctor public Camera.Size(int, int);
- field public int height;
- field public int width;
+ @Deprecated public class Camera.Size {
+ ctor @Deprecated public Camera.Size(int, int);
+ field @Deprecated public int height;
+ field @Deprecated public int width;
}
public final class ConsumerIrManager {
@@ -16146,7 +16136,7 @@
public final class HardwareBuffer implements java.lang.AutoCloseable android.os.Parcelable {
method public void close();
- method public static android.hardware.HardwareBuffer create(int, int, int, int, long);
+ method @NonNull public static android.hardware.HardwareBuffer create(int, int, int, int, long);
method public int describeContents();
method public int getFormat();
method public int getHeight();
@@ -16191,13 +16181,13 @@
method public int getMaxDelay();
method public float getMaximumRange();
method public int getMinDelay();
- method public java.lang.String getName();
+ method public String getName();
method public float getPower();
method public int getReportingMode();
method public float getResolution();
- method public java.lang.String getStringType();
+ method public String getStringType();
method public int getType();
- method public java.lang.String getVendor();
+ method public String getVendor();
method public int getVersion();
method public boolean isAdditionalInfoSupported();
method public boolean isDirectChannelTypeSupported(int);
@@ -16207,33 +16197,33 @@
field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
field public static final int REPORTING_MODE_ON_CHANGE = 1; // 0x1
field public static final int REPORTING_MODE_SPECIAL_TRIGGER = 3; // 0x3
- field public static final java.lang.String STRING_TYPE_ACCELEROMETER = "android.sensor.accelerometer";
- field public static final java.lang.String STRING_TYPE_ACCELEROMETER_UNCALIBRATED = "android.sensor.accelerometer_uncalibrated";
- field public static final java.lang.String STRING_TYPE_AMBIENT_TEMPERATURE = "android.sensor.ambient_temperature";
- field public static final java.lang.String STRING_TYPE_GAME_ROTATION_VECTOR = "android.sensor.game_rotation_vector";
- field public static final java.lang.String STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR = "android.sensor.geomagnetic_rotation_vector";
- field public static final java.lang.String STRING_TYPE_GRAVITY = "android.sensor.gravity";
- field public static final java.lang.String STRING_TYPE_GYROSCOPE = "android.sensor.gyroscope";
- field public static final java.lang.String STRING_TYPE_GYROSCOPE_UNCALIBRATED = "android.sensor.gyroscope_uncalibrated";
- field public static final java.lang.String STRING_TYPE_HEART_BEAT = "android.sensor.heart_beat";
- field public static final java.lang.String STRING_TYPE_HEART_RATE = "android.sensor.heart_rate";
- field public static final java.lang.String STRING_TYPE_LIGHT = "android.sensor.light";
- field public static final java.lang.String STRING_TYPE_LINEAR_ACCELERATION = "android.sensor.linear_acceleration";
- field public static final java.lang.String STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT = "android.sensor.low_latency_offbody_detect";
- field public static final java.lang.String STRING_TYPE_MAGNETIC_FIELD = "android.sensor.magnetic_field";
- field public static final java.lang.String STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED = "android.sensor.magnetic_field_uncalibrated";
- field public static final java.lang.String STRING_TYPE_MOTION_DETECT = "android.sensor.motion_detect";
- field public static final deprecated java.lang.String STRING_TYPE_ORIENTATION = "android.sensor.orientation";
- field public static final java.lang.String STRING_TYPE_POSE_6DOF = "android.sensor.pose_6dof";
- field public static final java.lang.String STRING_TYPE_PRESSURE = "android.sensor.pressure";
- field public static final java.lang.String STRING_TYPE_PROXIMITY = "android.sensor.proximity";
- field public static final java.lang.String STRING_TYPE_RELATIVE_HUMIDITY = "android.sensor.relative_humidity";
- field public static final java.lang.String STRING_TYPE_ROTATION_VECTOR = "android.sensor.rotation_vector";
- field public static final java.lang.String STRING_TYPE_SIGNIFICANT_MOTION = "android.sensor.significant_motion";
- field public static final java.lang.String STRING_TYPE_STATIONARY_DETECT = "android.sensor.stationary_detect";
- field public static final java.lang.String STRING_TYPE_STEP_COUNTER = "android.sensor.step_counter";
- field public static final java.lang.String STRING_TYPE_STEP_DETECTOR = "android.sensor.step_detector";
- field public static final deprecated java.lang.String STRING_TYPE_TEMPERATURE = "android.sensor.temperature";
+ field public static final String STRING_TYPE_ACCELEROMETER = "android.sensor.accelerometer";
+ field public static final String STRING_TYPE_ACCELEROMETER_UNCALIBRATED = "android.sensor.accelerometer_uncalibrated";
+ field public static final String STRING_TYPE_AMBIENT_TEMPERATURE = "android.sensor.ambient_temperature";
+ field public static final String STRING_TYPE_GAME_ROTATION_VECTOR = "android.sensor.game_rotation_vector";
+ field public static final String STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR = "android.sensor.geomagnetic_rotation_vector";
+ field public static final String STRING_TYPE_GRAVITY = "android.sensor.gravity";
+ field public static final String STRING_TYPE_GYROSCOPE = "android.sensor.gyroscope";
+ field public static final String STRING_TYPE_GYROSCOPE_UNCALIBRATED = "android.sensor.gyroscope_uncalibrated";
+ field public static final String STRING_TYPE_HEART_BEAT = "android.sensor.heart_beat";
+ field public static final String STRING_TYPE_HEART_RATE = "android.sensor.heart_rate";
+ field public static final String STRING_TYPE_LIGHT = "android.sensor.light";
+ field public static final String STRING_TYPE_LINEAR_ACCELERATION = "android.sensor.linear_acceleration";
+ field public static final String STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT = "android.sensor.low_latency_offbody_detect";
+ field public static final String STRING_TYPE_MAGNETIC_FIELD = "android.sensor.magnetic_field";
+ field public static final String STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED = "android.sensor.magnetic_field_uncalibrated";
+ field public static final String STRING_TYPE_MOTION_DETECT = "android.sensor.motion_detect";
+ field @Deprecated public static final String STRING_TYPE_ORIENTATION = "android.sensor.orientation";
+ field public static final String STRING_TYPE_POSE_6DOF = "android.sensor.pose_6dof";
+ field public static final String STRING_TYPE_PRESSURE = "android.sensor.pressure";
+ field public static final String STRING_TYPE_PROXIMITY = "android.sensor.proximity";
+ field public static final String STRING_TYPE_RELATIVE_HUMIDITY = "android.sensor.relative_humidity";
+ field public static final String STRING_TYPE_ROTATION_VECTOR = "android.sensor.rotation_vector";
+ field public static final String STRING_TYPE_SIGNIFICANT_MOTION = "android.sensor.significant_motion";
+ field public static final String STRING_TYPE_STATIONARY_DETECT = "android.sensor.stationary_detect";
+ field public static final String STRING_TYPE_STEP_COUNTER = "android.sensor.step_counter";
+ field public static final String STRING_TYPE_STEP_DETECTOR = "android.sensor.step_detector";
+ field @Deprecated public static final String STRING_TYPE_TEMPERATURE = "android.sensor.temperature";
field public static final int TYPE_ACCELEROMETER = 1; // 0x1
field public static final int TYPE_ACCELEROMETER_UNCALIBRATED = 35; // 0x23
field public static final int TYPE_ALL = -1; // 0xffffffff
@@ -16252,7 +16242,7 @@
field public static final int TYPE_MAGNETIC_FIELD = 2; // 0x2
field public static final int TYPE_MAGNETIC_FIELD_UNCALIBRATED = 14; // 0xe
field public static final int TYPE_MOTION_DETECT = 30; // 0x1e
- field public static final deprecated int TYPE_ORIENTATION = 3; // 0x3
+ field @Deprecated public static final int TYPE_ORIENTATION = 3; // 0x3
field public static final int TYPE_POSE_6DOF = 28; // 0x1c
field public static final int TYPE_PRESSURE = 6; // 0x6
field public static final int TYPE_PROXIMITY = 8; // 0x8
@@ -16262,7 +16252,7 @@
field public static final int TYPE_STATIONARY_DETECT = 29; // 0x1d
field public static final int TYPE_STEP_COUNTER = 19; // 0x13
field public static final int TYPE_STEP_DETECTOR = 18; // 0x12
- field public static final deprecated int TYPE_TEMPERATURE = 7; // 0x7
+ field @Deprecated public static final int TYPE_TEMPERATURE = 7; // 0x7
}
public class SensorAdditionalInfo {
@@ -16307,18 +16297,18 @@
method public void onSensorChanged(android.hardware.SensorEvent);
}
- public abstract interface SensorEventListener {
- method public abstract void onAccuracyChanged(android.hardware.Sensor, int);
- method public abstract void onSensorChanged(android.hardware.SensorEvent);
+ public interface SensorEventListener {
+ method public void onAccuracyChanged(android.hardware.Sensor, int);
+ method public void onSensorChanged(android.hardware.SensorEvent);
}
- public abstract interface SensorEventListener2 implements android.hardware.SensorEventListener {
- method public abstract void onFlushCompleted(android.hardware.Sensor);
+ public interface SensorEventListener2 extends android.hardware.SensorEventListener {
+ method public void onFlushCompleted(android.hardware.Sensor);
}
- public abstract deprecated interface SensorListener {
- method public abstract void onAccuracyChanged(int, int);
- method public abstract void onSensorChanged(int, float[]);
+ @Deprecated public interface SensorListener {
+ method @Deprecated public void onAccuracyChanged(int, int);
+ method @Deprecated public void onSensorChanged(int, float[]);
}
public abstract class SensorManager {
@@ -16337,12 +16327,12 @@
method public static boolean getRotationMatrix(float[], float[], float[], float[]);
method public static void getRotationMatrixFromVector(float[], float[]);
method public java.util.List<android.hardware.Sensor> getSensorList(int);
- method public deprecated int getSensors();
+ method @Deprecated public int getSensors();
method public boolean isDynamicSensorDiscoverySupported();
method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback, android.os.Handler);
- method public deprecated boolean registerListener(android.hardware.SensorListener, int);
- method public deprecated boolean registerListener(android.hardware.SensorListener, int, int);
+ method @Deprecated public boolean registerListener(android.hardware.SensorListener, int);
+ method @Deprecated public boolean registerListener(android.hardware.SensorListener, int, int);
method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int);
method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, android.os.Handler);
@@ -16350,8 +16340,8 @@
method public static boolean remapCoordinateSystem(float[], int, int, float[]);
method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
- method public deprecated void unregisterListener(android.hardware.SensorListener);
- method public deprecated void unregisterListener(android.hardware.SensorListener, int);
+ method @Deprecated public void unregisterListener(android.hardware.SensorListener);
+ method @Deprecated public void unregisterListener(android.hardware.SensorListener, int);
method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
method public void unregisterListener(android.hardware.SensorEventListener);
field public static final int AXIS_MINUS_X = 129; // 0x81
@@ -16360,9 +16350,9 @@
field public static final int AXIS_X = 1; // 0x1
field public static final int AXIS_Y = 2; // 0x2
field public static final int AXIS_Z = 3; // 0x3
- field public static final deprecated int DATA_X = 0; // 0x0
- field public static final deprecated int DATA_Y = 1; // 0x1
- field public static final deprecated int DATA_Z = 2; // 0x2
+ field @Deprecated public static final int DATA_X = 0; // 0x0
+ field @Deprecated public static final int DATA_Y = 1; // 0x1
+ field @Deprecated public static final int DATA_Z = 2; // 0x2
field public static final float GRAVITY_DEATH_STAR_I = 3.5303614E-7f;
field public static final float GRAVITY_EARTH = 9.80665f;
field public static final float GRAVITY_JUPITER = 23.12f;
@@ -16387,34 +16377,34 @@
field public static final float MAGNETIC_FIELD_EARTH_MAX = 60.0f;
field public static final float MAGNETIC_FIELD_EARTH_MIN = 30.0f;
field public static final float PRESSURE_STANDARD_ATMOSPHERE = 1013.25f;
- field public static final deprecated int RAW_DATA_INDEX = 3; // 0x3
- field public static final deprecated int RAW_DATA_X = 3; // 0x3
- field public static final deprecated int RAW_DATA_Y = 4; // 0x4
- field public static final deprecated int RAW_DATA_Z = 5; // 0x5
- field public static final deprecated int SENSOR_ACCELEROMETER = 2; // 0x2
- field public static final deprecated int SENSOR_ALL = 127; // 0x7f
+ field @Deprecated public static final int RAW_DATA_INDEX = 3; // 0x3
+ field @Deprecated public static final int RAW_DATA_X = 3; // 0x3
+ field @Deprecated public static final int RAW_DATA_Y = 4; // 0x4
+ field @Deprecated public static final int RAW_DATA_Z = 5; // 0x5
+ field @Deprecated public static final int SENSOR_ACCELEROMETER = 2; // 0x2
+ field @Deprecated public static final int SENSOR_ALL = 127; // 0x7f
field public static final int SENSOR_DELAY_FASTEST = 0; // 0x0
field public static final int SENSOR_DELAY_GAME = 1; // 0x1
field public static final int SENSOR_DELAY_NORMAL = 3; // 0x3
field public static final int SENSOR_DELAY_UI = 2; // 0x2
- field public static final deprecated int SENSOR_LIGHT = 16; // 0x10
- field public static final deprecated int SENSOR_MAGNETIC_FIELD = 8; // 0x8
- field public static final deprecated int SENSOR_MAX = 64; // 0x40
- field public static final deprecated int SENSOR_MIN = 1; // 0x1
- field public static final deprecated int SENSOR_ORIENTATION = 1; // 0x1
- field public static final deprecated int SENSOR_ORIENTATION_RAW = 128; // 0x80
- field public static final deprecated int SENSOR_PROXIMITY = 32; // 0x20
+ field @Deprecated public static final int SENSOR_LIGHT = 16; // 0x10
+ field @Deprecated public static final int SENSOR_MAGNETIC_FIELD = 8; // 0x8
+ field @Deprecated public static final int SENSOR_MAX = 64; // 0x40
+ field @Deprecated public static final int SENSOR_MIN = 1; // 0x1
+ field @Deprecated public static final int SENSOR_ORIENTATION = 1; // 0x1
+ field @Deprecated public static final int SENSOR_ORIENTATION_RAW = 128; // 0x80
+ field @Deprecated public static final int SENSOR_PROXIMITY = 32; // 0x20
field public static final int SENSOR_STATUS_ACCURACY_HIGH = 3; // 0x3
field public static final int SENSOR_STATUS_ACCURACY_LOW = 1; // 0x1
field public static final int SENSOR_STATUS_ACCURACY_MEDIUM = 2; // 0x2
field public static final int SENSOR_STATUS_NO_CONTACT = -1; // 0xffffffff
field public static final int SENSOR_STATUS_UNRELIABLE = 0; // 0x0
- field public static final deprecated int SENSOR_TEMPERATURE = 4; // 0x4
- field public static final deprecated int SENSOR_TRICORDER = 64; // 0x40
+ field @Deprecated public static final int SENSOR_TEMPERATURE = 4; // 0x4
+ field @Deprecated public static final int SENSOR_TRICORDER = 64; // 0x40
field public static final float STANDARD_GRAVITY = 9.80665f;
}
- public static abstract class SensorManager.DynamicSensorCallback {
+ public abstract static class SensorManager.DynamicSensorCallback {
ctor public SensorManager.DynamicSensorCallback();
method public void onDynamicSensorConnected(android.hardware.Sensor);
method public void onDynamicSensorDisconnected(android.hardware.Sensor);
@@ -16436,16 +16426,16 @@
package android.hardware.biometrics {
public class BiometricManager {
- method public int canAuthenticate();
- field public static final int BIOMETRIC_ERROR_NO_BIOMETRICS = 11; // 0xb
+ method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public int canAuthenticate();
+ field public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE = 1; // 0x1
+ field public static final int BIOMETRIC_ERROR_NONE_ENROLLED = 11; // 0xb
field public static final int BIOMETRIC_ERROR_NO_HARDWARE = 12; // 0xc
- field public static final int BIOMETRIC_ERROR_UNAVAILABLE = 1; // 0x1
field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
}
public class BiometricPrompt {
- method public void authenticate(android.hardware.biometrics.BiometricPrompt.CryptoObject, android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
- method public void authenticate(android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
+ method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public void authenticate(@NonNull android.hardware.biometrics.BiometricPrompt.CryptoObject, @NonNull android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
+ method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public void authenticate(@NonNull android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
field public static final int BIOMETRIC_ACQUIRED_GOOD = 0; // 0x0
field public static final int BIOMETRIC_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
field public static final int BIOMETRIC_ACQUIRED_INSUFFICIENT = 2; // 0x2
@@ -16465,11 +16455,11 @@
field public static final int BIOMETRIC_ERROR_VENDOR = 8; // 0x8
}
- public static abstract class BiometricPrompt.AuthenticationCallback {
+ public abstract static class BiometricPrompt.AuthenticationCallback {
ctor public BiometricPrompt.AuthenticationCallback();
- method public void onAuthenticationError(int, java.lang.CharSequence);
+ method public void onAuthenticationError(int, CharSequence);
method public void onAuthenticationFailed();
- method public void onAuthenticationHelp(int, java.lang.CharSequence);
+ method public void onAuthenticationHelp(int, CharSequence);
method public void onAuthenticationSucceeded(android.hardware.biometrics.BiometricPrompt.AuthenticationResult);
}
@@ -16480,16 +16470,17 @@
public static class BiometricPrompt.Builder {
ctor public BiometricPrompt.Builder(android.content.Context);
method public android.hardware.biometrics.BiometricPrompt build();
- method public android.hardware.biometrics.BiometricPrompt.Builder setDescription(java.lang.CharSequence);
- method public android.hardware.biometrics.BiometricPrompt.Builder setNegativeButton(java.lang.CharSequence, java.util.concurrent.Executor, android.content.DialogInterface.OnClickListener);
- method public android.hardware.biometrics.BiometricPrompt.Builder setSubtitle(java.lang.CharSequence);
- method public android.hardware.biometrics.BiometricPrompt.Builder setTitle(java.lang.CharSequence);
+ method public android.hardware.biometrics.BiometricPrompt.Builder setDescription(@NonNull CharSequence);
+ method public android.hardware.biometrics.BiometricPrompt.Builder setNegativeButton(@NonNull CharSequence, @NonNull java.util.concurrent.Executor, @NonNull android.content.DialogInterface.OnClickListener);
+ method public android.hardware.biometrics.BiometricPrompt.Builder setRequireConfirmation(boolean);
+ method public android.hardware.biometrics.BiometricPrompt.Builder setSubtitle(@NonNull CharSequence);
+ method public android.hardware.biometrics.BiometricPrompt.Builder setTitle(@NonNull CharSequence);
}
public static final class BiometricPrompt.CryptoObject {
- ctor public BiometricPrompt.CryptoObject(java.security.Signature);
- ctor public BiometricPrompt.CryptoObject(javax.crypto.Cipher);
- ctor public BiometricPrompt.CryptoObject(javax.crypto.Mac);
+ ctor public BiometricPrompt.CryptoObject(@NonNull java.security.Signature);
+ ctor public BiometricPrompt.CryptoObject(@NonNull javax.crypto.Cipher);
+ ctor public BiometricPrompt.CryptoObject(@NonNull javax.crypto.Mac);
method public javax.crypto.Cipher getCipher();
method public javax.crypto.Mac getMac();
method public java.security.Signature getSignature();
@@ -16501,9 +16492,9 @@
public class CameraAccessException extends android.util.AndroidException {
ctor public CameraAccessException(int);
- ctor public CameraAccessException(int, java.lang.String);
- ctor public CameraAccessException(int, java.lang.String, java.lang.Throwable);
- ctor public CameraAccessException(int, java.lang.Throwable);
+ ctor public CameraAccessException(int, String);
+ ctor public CameraAccessException(int, String, Throwable);
+ ctor public CameraAccessException(int, Throwable);
method public final int getReason();
field public static final int CAMERA_DISABLED = 1; // 0x1
field public static final int CAMERA_DISCONNECTED = 2; // 0x2
@@ -16515,56 +16506,56 @@
public abstract class CameraCaptureSession implements java.lang.AutoCloseable {
ctor public CameraCaptureSession();
method public abstract void abortCaptures() throws android.hardware.camera2.CameraAccessException;
- method public abstract int capture(android.hardware.camera2.CaptureRequest, android.hardware.camera2.CameraCaptureSession.CaptureCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
- method public abstract int captureBurst(java.util.List<android.hardware.camera2.CaptureRequest>, android.hardware.camera2.CameraCaptureSession.CaptureCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
- method public int captureBurstRequests(java.util.List<android.hardware.camera2.CaptureRequest>, java.util.concurrent.Executor, android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
- method public int captureSingleRequest(android.hardware.camera2.CaptureRequest, java.util.concurrent.Executor, android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
+ method public abstract int capture(@NonNull android.hardware.camera2.CaptureRequest, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method public abstract int captureBurst(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method public int captureBurstRequests(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
+ method public int captureSingleRequest(@NonNull android.hardware.camera2.CaptureRequest, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
method public abstract void close();
method public abstract void finalizeOutputConfigurations(java.util.List<android.hardware.camera2.params.OutputConfiguration>) throws android.hardware.camera2.CameraAccessException;
- method public abstract android.hardware.camera2.CameraDevice getDevice();
- method public abstract android.view.Surface getInputSurface();
+ method @NonNull public abstract android.hardware.camera2.CameraDevice getDevice();
+ method @Nullable public abstract android.view.Surface getInputSurface();
method public abstract boolean isReprocessable();
- method public abstract void prepare(android.view.Surface) throws android.hardware.camera2.CameraAccessException;
- method public abstract int setRepeatingBurst(java.util.List<android.hardware.camera2.CaptureRequest>, android.hardware.camera2.CameraCaptureSession.CaptureCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
- method public int setRepeatingBurstRequests(java.util.List<android.hardware.camera2.CaptureRequest>, java.util.concurrent.Executor, android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
- method public abstract int setRepeatingRequest(android.hardware.camera2.CaptureRequest, android.hardware.camera2.CameraCaptureSession.CaptureCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
- method public int setSingleRepeatingRequest(android.hardware.camera2.CaptureRequest, java.util.concurrent.Executor, android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
+ method public abstract void prepare(@NonNull android.view.Surface) throws android.hardware.camera2.CameraAccessException;
+ method public abstract int setRepeatingBurst(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method public int setRepeatingBurstRequests(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
+ method public abstract int setRepeatingRequest(@NonNull android.hardware.camera2.CaptureRequest, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method public int setSingleRepeatingRequest(@NonNull android.hardware.camera2.CaptureRequest, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
method public abstract void stopRepeating() throws android.hardware.camera2.CameraAccessException;
method public void updateOutputConfiguration(android.hardware.camera2.params.OutputConfiguration) throws android.hardware.camera2.CameraAccessException;
}
- public static abstract class CameraCaptureSession.CaptureCallback {
+ public abstract static class CameraCaptureSession.CaptureCallback {
ctor public CameraCaptureSession.CaptureCallback();
- method public void onCaptureBufferLost(android.hardware.camera2.CameraCaptureSession, android.hardware.camera2.CaptureRequest, android.view.Surface, long);
- method public void onCaptureCompleted(android.hardware.camera2.CameraCaptureSession, android.hardware.camera2.CaptureRequest, android.hardware.camera2.TotalCaptureResult);
- method public void onCaptureFailed(android.hardware.camera2.CameraCaptureSession, android.hardware.camera2.CaptureRequest, android.hardware.camera2.CaptureFailure);
- method public void onCaptureProgressed(android.hardware.camera2.CameraCaptureSession, android.hardware.camera2.CaptureRequest, android.hardware.camera2.CaptureResult);
- method public void onCaptureSequenceAborted(android.hardware.camera2.CameraCaptureSession, int);
- method public void onCaptureSequenceCompleted(android.hardware.camera2.CameraCaptureSession, int, long);
- method public void onCaptureStarted(android.hardware.camera2.CameraCaptureSession, android.hardware.camera2.CaptureRequest, long, long);
+ method public void onCaptureBufferLost(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.view.Surface, long);
+ method public void onCaptureCompleted(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.TotalCaptureResult);
+ method public void onCaptureFailed(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.CaptureFailure);
+ method public void onCaptureProgressed(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.CaptureResult);
+ method public void onCaptureSequenceAborted(@NonNull android.hardware.camera2.CameraCaptureSession, int);
+ method public void onCaptureSequenceCompleted(@NonNull android.hardware.camera2.CameraCaptureSession, int, long);
+ method public void onCaptureStarted(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, long, long);
}
- public static abstract class CameraCaptureSession.StateCallback {
+ public abstract static class CameraCaptureSession.StateCallback {
ctor public CameraCaptureSession.StateCallback();
- method public void onActive(android.hardware.camera2.CameraCaptureSession);
- method public void onCaptureQueueEmpty(android.hardware.camera2.CameraCaptureSession);
- method public void onClosed(android.hardware.camera2.CameraCaptureSession);
- method public abstract void onConfigureFailed(android.hardware.camera2.CameraCaptureSession);
- method public abstract void onConfigured(android.hardware.camera2.CameraCaptureSession);
- method public void onReady(android.hardware.camera2.CameraCaptureSession);
- method public void onSurfacePrepared(android.hardware.camera2.CameraCaptureSession, android.view.Surface);
+ method public void onActive(@NonNull android.hardware.camera2.CameraCaptureSession);
+ method public void onCaptureQueueEmpty(@NonNull android.hardware.camera2.CameraCaptureSession);
+ method public void onClosed(@NonNull android.hardware.camera2.CameraCaptureSession);
+ method public abstract void onConfigureFailed(@NonNull android.hardware.camera2.CameraCaptureSession);
+ method public abstract void onConfigured(@NonNull android.hardware.camera2.CameraCaptureSession);
+ method public void onReady(@NonNull android.hardware.camera2.CameraCaptureSession);
+ method public void onSurfacePrepared(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.view.Surface);
}
- public final class CameraCharacteristics extends android.hardware.camera2.CameraMetadata {
- method public <T> T get(android.hardware.camera2.CameraCharacteristics.Key<T>);
- method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailableCaptureRequestKeys();
- method public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getAvailableCaptureResultKeys();
+ public final class CameraCharacteristics extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CameraCharacteristics.Key<?>> {
+ method @Nullable public <T> T get(android.hardware.camera2.CameraCharacteristics.Key<T>);
+ method @NonNull public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailableCaptureRequestKeys();
+ method @NonNull public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getAvailableCaptureResultKeys();
method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailablePhysicalCameraRequestKeys();
method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailableSessionKeys();
- method public java.util.List<android.hardware.camera2.CameraCharacteristics.Key<?>> getKeys();
+ method @NonNull public java.util.List<android.hardware.camera2.CameraCharacteristics.Key<?>> getKeys();
method public java.util.List<android.hardware.camera2.CameraCharacteristics.Key<?>> getKeysNeedingPermission();
- method public java.util.Set<java.lang.String> getPhysicalCameraIds();
- method public android.hardware.camera2.params.RecommendedStreamConfigurationMap getRecommendedStreamConfigurationMap(int);
+ method @NonNull public java.util.Set<java.lang.String> getPhysicalCameraIds();
+ method @Nullable public android.hardware.camera2.params.RecommendedStreamConfigurationMap getRecommendedStreamConfigurationMap(int);
field public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES;
field public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AE_AVAILABLE_ANTIBANDING_MODES;
field public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AE_AVAILABLE_MODES;
@@ -16604,7 +16595,7 @@
field public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_POSE_REFERENCE;
field public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_POSE_ROTATION;
field public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_POSE_TRANSLATION;
- field public static final deprecated android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_RADIAL_DISTORTION;
+ field @Deprecated public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_RADIAL_DISTORTION;
field public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE;
field public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES;
field public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REPROCESS_MAX_CAPTURE_STALL;
@@ -16655,27 +16646,27 @@
}
public static final class CameraCharacteristics.Key<T> {
- method public java.lang.String getName();
+ method @NonNull public String getName();
}
public abstract class CameraConstrainedHighSpeedCaptureSession extends android.hardware.camera2.CameraCaptureSession {
ctor public CameraConstrainedHighSpeedCaptureSession();
- method public abstract java.util.List<android.hardware.camera2.CaptureRequest> createHighSpeedRequestList(android.hardware.camera2.CaptureRequest) throws android.hardware.camera2.CameraAccessException;
+ method @NonNull public abstract java.util.List<android.hardware.camera2.CaptureRequest> createHighSpeedRequestList(@NonNull android.hardware.camera2.CaptureRequest) throws android.hardware.camera2.CameraAccessException;
}
public abstract class CameraDevice implements java.lang.AutoCloseable {
method public abstract void close();
- method public abstract android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int) throws android.hardware.camera2.CameraAccessException;
- method public android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int, java.util.Set<java.lang.String>) throws android.hardware.camera2.CameraAccessException;
- method public abstract void createCaptureSession(java.util.List<android.view.Surface>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int) throws android.hardware.camera2.CameraAccessException;
+ method @NonNull public android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int, java.util.Set<java.lang.String>) throws android.hardware.camera2.CameraAccessException;
+ method public abstract void createCaptureSession(@NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
method public void createCaptureSession(android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
- method public abstract void createCaptureSessionByOutputConfigurations(java.util.List<android.hardware.camera2.params.OutputConfiguration>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
- method public abstract void createConstrainedHighSpeedCaptureSession(java.util.List<android.view.Surface>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
- method public abstract android.hardware.camera2.CaptureRequest.Builder createReprocessCaptureRequest(android.hardware.camera2.TotalCaptureResult) throws android.hardware.camera2.CameraAccessException;
- method public abstract void createReprocessableCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.view.Surface>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
- method public abstract void createReprocessableCaptureSessionByConfigurations(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
- method public abstract java.lang.String getId();
- method public boolean isSessionConfigurationSupported(android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
+ method public abstract void createCaptureSessionByOutputConfigurations(java.util.List<android.hardware.camera2.params.OutputConfiguration>, android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method public abstract void createConstrainedHighSpeedCaptureSession(@NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createReprocessCaptureRequest(@NonNull android.hardware.camera2.TotalCaptureResult) throws android.hardware.camera2.CameraAccessException;
+ method public abstract void createReprocessableCaptureSession(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method public abstract void createReprocessableCaptureSessionByConfigurations(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method @NonNull public abstract String getId();
+ method public boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
field public static final int TEMPLATE_MANUAL = 6; // 0x6
field public static final int TEMPLATE_PREVIEW = 1; // 0x1
field public static final int TEMPLATE_RECORD = 3; // 0x3
@@ -16684,12 +16675,12 @@
field public static final int TEMPLATE_ZERO_SHUTTER_LAG = 5; // 0x5
}
- public static abstract class CameraDevice.StateCallback {
+ public abstract static class CameraDevice.StateCallback {
ctor public CameraDevice.StateCallback();
- method public void onClosed(android.hardware.camera2.CameraDevice);
- method public abstract void onDisconnected(android.hardware.camera2.CameraDevice);
- method public abstract void onError(android.hardware.camera2.CameraDevice, int);
- method public abstract void onOpened(android.hardware.camera2.CameraDevice);
+ method public void onClosed(@NonNull android.hardware.camera2.CameraDevice);
+ method public abstract void onDisconnected(@NonNull android.hardware.camera2.CameraDevice);
+ method public abstract void onError(@NonNull android.hardware.camera2.CameraDevice, int);
+ method public abstract void onOpened(@NonNull android.hardware.camera2.CameraDevice);
field public static final int ERROR_CAMERA_DEVICE = 4; // 0x4
field public static final int ERROR_CAMERA_DISABLED = 3; // 0x3
field public static final int ERROR_CAMERA_IN_USE = 1; // 0x1
@@ -16698,33 +16689,33 @@
}
public final class CameraManager {
- method public android.hardware.camera2.CameraCharacteristics getCameraCharacteristics(java.lang.String) throws android.hardware.camera2.CameraAccessException;
- method public java.lang.String[] getCameraIdList() throws android.hardware.camera2.CameraAccessException;
- method public void openCamera(java.lang.String, android.hardware.camera2.CameraDevice.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
- method public void openCamera(java.lang.String, java.util.concurrent.Executor, android.hardware.camera2.CameraDevice.StateCallback) throws android.hardware.camera2.CameraAccessException;
- method public void registerAvailabilityCallback(android.hardware.camera2.CameraManager.AvailabilityCallback, android.os.Handler);
- method public void registerAvailabilityCallback(java.util.concurrent.Executor, android.hardware.camera2.CameraManager.AvailabilityCallback);
- method public void registerTorchCallback(android.hardware.camera2.CameraManager.TorchCallback, android.os.Handler);
- method public void registerTorchCallback(java.util.concurrent.Executor, android.hardware.camera2.CameraManager.TorchCallback);
- method public void setTorchMode(java.lang.String, boolean) throws android.hardware.camera2.CameraAccessException;
- method public void unregisterAvailabilityCallback(android.hardware.camera2.CameraManager.AvailabilityCallback);
- method public void unregisterTorchCallback(android.hardware.camera2.CameraManager.TorchCallback);
+ method @NonNull public android.hardware.camera2.CameraCharacteristics getCameraCharacteristics(@NonNull String) throws android.hardware.camera2.CameraAccessException;
+ method @NonNull public String[] getCameraIdList() throws android.hardware.camera2.CameraAccessException;
+ method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull android.hardware.camera2.CameraDevice.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraDevice.StateCallback) throws android.hardware.camera2.CameraAccessException;
+ method public void registerAvailabilityCallback(@NonNull android.hardware.camera2.CameraManager.AvailabilityCallback, @Nullable android.os.Handler);
+ method public void registerAvailabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraManager.AvailabilityCallback);
+ method public void registerTorchCallback(@NonNull android.hardware.camera2.CameraManager.TorchCallback, @Nullable android.os.Handler);
+ method public void registerTorchCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraManager.TorchCallback);
+ method public void setTorchMode(@NonNull String, boolean) throws android.hardware.camera2.CameraAccessException;
+ method public void unregisterAvailabilityCallback(@NonNull android.hardware.camera2.CameraManager.AvailabilityCallback);
+ method public void unregisterTorchCallback(@NonNull android.hardware.camera2.CameraManager.TorchCallback);
}
- public static abstract class CameraManager.AvailabilityCallback {
+ public abstract static class CameraManager.AvailabilityCallback {
ctor public CameraManager.AvailabilityCallback();
- method public void onCameraAvailable(java.lang.String);
- method public void onCameraUnavailable(java.lang.String);
+ method public void onCameraAvailable(@NonNull String);
+ method public void onCameraUnavailable(@NonNull String);
}
- public static abstract class CameraManager.TorchCallback {
+ public abstract static class CameraManager.TorchCallback {
ctor public CameraManager.TorchCallback();
- method public void onTorchModeChanged(java.lang.String, boolean);
- method public void onTorchModeUnavailable(java.lang.String);
+ method public void onTorchModeChanged(@NonNull String, boolean);
+ method public void onTorchModeUnavailable(@NonNull String);
}
public abstract class CameraMetadata<TKey> {
- method public java.util.List<TKey> getKeys();
+ method @NonNull public java.util.List<TKey> getKeys();
field public static final int COLOR_CORRECTION_ABERRATION_MODE_FAST = 1; // 0x1
field public static final int COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY = 2; // 0x2
field public static final int COLOR_CORRECTION_ABERRATION_MODE_OFF = 0; // 0x0
@@ -16810,7 +16801,7 @@
field public static final int CONTROL_SCENE_MODE_FACE_PRIORITY = 1; // 0x1
field public static final int CONTROL_SCENE_MODE_FIREWORKS = 12; // 0xc
field public static final int CONTROL_SCENE_MODE_HDR = 18; // 0x12
- field public static final deprecated int CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO = 17; // 0x11
+ field @Deprecated public static final int CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO = 17; // 0x11
field public static final int CONTROL_SCENE_MODE_LANDSCAPE = 4; // 0x4
field public static final int CONTROL_SCENE_MODE_NIGHT = 5; // 0x5
field public static final int CONTROL_SCENE_MODE_NIGHT_PORTRAIT = 6; // 0x6
@@ -16941,18 +16932,18 @@
public class CaptureFailure {
method public long getFrameNumber();
method public int getReason();
- method public android.hardware.camera2.CaptureRequest getRequest();
+ method @NonNull public android.hardware.camera2.CaptureRequest getRequest();
method public int getSequenceId();
method public boolean wasImageCaptured();
field public static final int REASON_ERROR = 0; // 0x0
field public static final int REASON_FLUSHED = 1; // 0x1
}
- public final class CaptureRequest extends android.hardware.camera2.CameraMetadata implements android.os.Parcelable {
+ public final class CaptureRequest extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureRequest.Key<?>> implements android.os.Parcelable {
method public int describeContents();
- method public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
- method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getKeys();
- method public java.lang.Object getTag();
+ method @Nullable public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
+ method @NonNull public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getKeys();
+ method @Nullable public Object getTag();
method public boolean isReprocess();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> BLACK_LEVEL_LOCK;
@@ -17015,25 +17006,25 @@
}
public static final class CaptureRequest.Builder {
- method public void addTarget(android.view.Surface);
- method public android.hardware.camera2.CaptureRequest build();
- method public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
- method public <T> T getPhysicalCameraKey(android.hardware.camera2.CaptureRequest.Key<T>, java.lang.String);
- method public void removeTarget(android.view.Surface);
- method public <T> void set(android.hardware.camera2.CaptureRequest.Key<T>, T);
- method public <T> android.hardware.camera2.CaptureRequest.Builder setPhysicalCameraKey(android.hardware.camera2.CaptureRequest.Key<T>, T, java.lang.String);
- method public void setTag(java.lang.Object);
+ method public void addTarget(@NonNull android.view.Surface);
+ method @NonNull public android.hardware.camera2.CaptureRequest build();
+ method @Nullable public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
+ method @Nullable public <T> T getPhysicalCameraKey(android.hardware.camera2.CaptureRequest.Key<T>, @NonNull String);
+ method public void removeTarget(@NonNull android.view.Surface);
+ method public <T> void set(@NonNull android.hardware.camera2.CaptureRequest.Key<T>, T);
+ method public <T> android.hardware.camera2.CaptureRequest.Builder setPhysicalCameraKey(@NonNull android.hardware.camera2.CaptureRequest.Key<T>, T, @NonNull String);
+ method public void setTag(@Nullable Object);
}
public static final class CaptureRequest.Key<T> {
- method public java.lang.String getName();
+ method @NonNull public String getName();
}
- public class CaptureResult extends android.hardware.camera2.CameraMetadata {
- method public <T> T get(android.hardware.camera2.CaptureResult.Key<T>);
+ public class CaptureResult extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureResult.Key<?>> {
+ method @Nullable public <T> T get(android.hardware.camera2.CaptureResult.Key<T>);
method public long getFrameNumber();
- method public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getKeys();
- method public android.hardware.camera2.CaptureRequest getRequest();
+ method @NonNull public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getKeys();
+ method @NonNull public android.hardware.camera2.CaptureRequest getRequest();
method public int getSequenceId();
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> BLACK_LEVEL_LOCK;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> COLOR_CORRECTION_ABERRATION_MODE;
@@ -17079,12 +17070,12 @@
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FILTER_DENSITY;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FOCAL_LENGTH;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FOCUS_DISTANCE;
- field public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Float, java.lang.Float>> LENS_FOCUS_RANGE;
+ field public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Float,java.lang.Float>> LENS_FOCUS_RANGE;
field public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_INTRINSIC_CALIBRATION;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> LENS_OPTICAL_STABILIZATION_MODE;
field public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_POSE_ROTATION;
field public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_POSE_TRANSLATION;
- field public static final deprecated android.hardware.camera2.CaptureResult.Key<float[]> LENS_RADIAL_DISTORTION;
+ field @Deprecated public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_RADIAL_DISTORTION;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> LENS_STATE;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> NOISE_REDUCTION_MODE;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR;
@@ -17096,7 +17087,7 @@
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_FRAME_DURATION;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> SENSOR_GREEN_SPLIT;
field public static final android.hardware.camera2.CaptureResult.Key<android.util.Rational[]> SENSOR_NEUTRAL_COLOR_POINT;
- field public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Double, java.lang.Double>[]> SENSOR_NOISE_PROFILE;
+ field public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Double,java.lang.Double>[]> SENSOR_NOISE_PROFILE;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_ROLLING_SHUTTER_SKEW;
field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_SENSITIVITY;
field public static final android.hardware.camera2.CaptureResult.Key<int[]> SENSOR_TEST_PATTERN_DATA;
@@ -17119,26 +17110,26 @@
}
public static final class CaptureResult.Key<T> {
- method public java.lang.String getName();
+ method @NonNull public String getName();
}
public final class DngCreator implements java.lang.AutoCloseable {
- ctor public DngCreator(android.hardware.camera2.CameraCharacteristics, android.hardware.camera2.CaptureResult);
+ ctor public DngCreator(@NonNull android.hardware.camera2.CameraCharacteristics, @NonNull android.hardware.camera2.CaptureResult);
method public void close();
- method public android.hardware.camera2.DngCreator setDescription(java.lang.String);
- method public android.hardware.camera2.DngCreator setLocation(android.location.Location);
- method public android.hardware.camera2.DngCreator setOrientation(int);
- method public android.hardware.camera2.DngCreator setThumbnail(android.graphics.Bitmap);
- method public android.hardware.camera2.DngCreator setThumbnail(android.media.Image);
- method public void writeByteBuffer(java.io.OutputStream, android.util.Size, java.nio.ByteBuffer, long) throws java.io.IOException;
- method public void writeImage(java.io.OutputStream, android.media.Image) throws java.io.IOException;
- method public void writeInputStream(java.io.OutputStream, android.util.Size, java.io.InputStream, long) throws java.io.IOException;
+ method @NonNull public android.hardware.camera2.DngCreator setDescription(@NonNull String);
+ method @NonNull public android.hardware.camera2.DngCreator setLocation(@NonNull android.location.Location);
+ method @NonNull public android.hardware.camera2.DngCreator setOrientation(int);
+ method @NonNull public android.hardware.camera2.DngCreator setThumbnail(@NonNull android.graphics.Bitmap);
+ method @NonNull public android.hardware.camera2.DngCreator setThumbnail(@NonNull android.media.Image);
+ method public void writeByteBuffer(@NonNull java.io.OutputStream, @NonNull android.util.Size, @NonNull java.nio.ByteBuffer, @IntRange(from=0) long) throws java.io.IOException;
+ method public void writeImage(@NonNull java.io.OutputStream, @NonNull android.media.Image) throws java.io.IOException;
+ method public void writeInputStream(@NonNull java.io.OutputStream, @NonNull android.util.Size, @NonNull java.io.InputStream, @IntRange(from=0) long) throws java.io.IOException;
field public static final int MAX_THUMBNAIL_DIMENSION = 256; // 0x100
}
public final class TotalCaptureResult extends android.hardware.camera2.CaptureResult {
- method public java.util.List<android.hardware.camera2.CaptureResult> getPartialResults();
- method public java.util.Map<java.lang.String, android.hardware.camera2.CaptureResult> getPhysicalCameraResults();
+ method @NonNull public java.util.List<android.hardware.camera2.CaptureResult> getPartialResults();
+ method public java.util.Map<java.lang.String,android.hardware.camera2.CaptureResult> getPhysicalCameraResults();
}
}
@@ -17189,7 +17180,7 @@
}
public final class MandatoryStreamCombination {
- method public java.lang.String getDescription();
+ method public String getDescription();
method public java.util.List<android.hardware.camera2.params.MandatoryStreamCombination.MandatoryStreamInformation> getStreamsInformation();
method public boolean isReprocessable();
}
@@ -17226,42 +17217,42 @@
}
public final class OutputConfiguration implements android.os.Parcelable {
- ctor public OutputConfiguration(android.view.Surface);
- ctor public OutputConfiguration(int, android.view.Surface);
- ctor public OutputConfiguration(android.util.Size, java.lang.Class<T>);
- method public void addSurface(android.view.Surface);
+ ctor public OutputConfiguration(@NonNull android.view.Surface);
+ ctor public OutputConfiguration(int, @NonNull android.view.Surface);
+ ctor public OutputConfiguration(@NonNull android.util.Size, @NonNull Class<T>);
+ method public void addSurface(@NonNull android.view.Surface);
method public int describeContents();
method public void enableSurfaceSharing();
method public int getMaxSharedSurfaceCount();
- method public android.view.Surface getSurface();
+ method @Nullable public android.view.Surface getSurface();
method public int getSurfaceGroupId();
- method public java.util.List<android.view.Surface> getSurfaces();
- method public void removeSurface(android.view.Surface);
- method public void setPhysicalCameraId(java.lang.String);
+ method @NonNull public java.util.List<android.view.Surface> getSurfaces();
+ method public void removeSurface(@NonNull android.view.Surface);
+ method public void setPhysicalCameraId(@Nullable String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.camera2.params.OutputConfiguration> CREATOR;
field public static final int SURFACE_GROUP_ID_NONE = -1; // 0xffffffff
}
public final class RecommendedStreamConfigurationMap {
- method public java.util.Set<android.util.Size> getHighResolutionOutputSizes(int);
- method public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRanges();
- method public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRangesFor(android.util.Size);
- method public java.util.Set<android.util.Size> getHighSpeedVideoSizes();
- method public java.util.Set<android.util.Size> getHighSpeedVideoSizesFor(android.util.Range<java.lang.Integer>);
- method public java.util.Set<java.lang.Integer> getInputFormats();
- method public java.util.Set<android.util.Size> getInputSizes(int);
- method public java.util.Set<java.lang.Integer> getOutputFormats();
- method public long getOutputMinFrameDuration(int, android.util.Size);
- method public <T> long getOutputMinFrameDuration(java.lang.Class<T>, android.util.Size);
- method public java.util.Set<android.util.Size> getOutputSizes(int);
- method public <T> java.util.Set<android.util.Size> getOutputSizes(java.lang.Class<T>);
- method public long getOutputStallDuration(int, android.util.Size);
- method public <T> long getOutputStallDuration(java.lang.Class<T>, android.util.Size);
+ method @Nullable public java.util.Set<android.util.Size> getHighResolutionOutputSizes(int);
+ method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRanges();
+ method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRangesFor(@NonNull android.util.Size);
+ method @Nullable public java.util.Set<android.util.Size> getHighSpeedVideoSizes();
+ method @Nullable public java.util.Set<android.util.Size> getHighSpeedVideoSizesFor(@NonNull android.util.Range<java.lang.Integer>);
+ method @Nullable public java.util.Set<java.lang.Integer> getInputFormats();
+ method @Nullable public java.util.Set<android.util.Size> getInputSizes(int);
+ method @NonNull public java.util.Set<java.lang.Integer> getOutputFormats();
+ method @IntRange(from=0) public long getOutputMinFrameDuration(int, @NonNull android.util.Size);
+ method public <T> long getOutputMinFrameDuration(@NonNull Class<T>, @NonNull android.util.Size);
+ method @Nullable public java.util.Set<android.util.Size> getOutputSizes(int);
+ method public <T> java.util.Set<android.util.Size> getOutputSizes(@NonNull Class<T>);
+ method @IntRange(from=0) public long getOutputStallDuration(int, @NonNull android.util.Size);
+ method public <T> long getOutputStallDuration(@NonNull Class<T>, @NonNull android.util.Size);
method public int getRecommendedUseCase();
- method public java.util.Set<java.lang.Integer> getValidOutputFormatsForInput(int);
+ method @Nullable public java.util.Set<java.lang.Integer> getValidOutputFormatsForInput(int);
method public boolean isOutputSupportedFor(int);
- method public boolean isOutputSupportedFor(android.view.Surface);
+ method public boolean isOutputSupportedFor(@NonNull android.view.Surface);
field public static final int USECASE_PREVIEW = 0; // 0x0
field public static final int USECASE_RAW = 5; // 0x5
field public static final int USECASE_RECORD = 1; // 0x1
@@ -17286,7 +17277,7 @@
}
public final class SessionConfiguration implements android.os.Parcelable {
- ctor public SessionConfiguration(int, java.util.List<android.hardware.camera2.params.OutputConfiguration>, java.util.concurrent.Executor, android.hardware.camera2.CameraCaptureSession.StateCallback);
+ ctor public SessionConfiguration(int, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback);
method public int describeContents();
method public java.util.concurrent.Executor getExecutor();
method public android.hardware.camera2.params.InputConfiguration getInputConfiguration();
@@ -17294,7 +17285,7 @@
method public android.hardware.camera2.CaptureRequest getSessionParameters();
method public int getSessionType();
method public android.hardware.camera2.CameraCaptureSession.StateCallback getStateCallback();
- method public void setInputConfiguration(android.hardware.camera2.params.InputConfiguration);
+ method public void setInputConfiguration(@NonNull android.hardware.camera2.params.InputConfiguration);
method public void setSessionParameters(android.hardware.camera2.CaptureRequest);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.camera2.params.SessionConfiguration> CREATOR;
@@ -17312,14 +17303,14 @@
method public android.util.Size[] getInputSizes(int);
method public int[] getOutputFormats();
method public long getOutputMinFrameDuration(int, android.util.Size);
- method public <T> long getOutputMinFrameDuration(java.lang.Class<T>, android.util.Size);
- method public <T> android.util.Size[] getOutputSizes(java.lang.Class<T>);
+ method public <T> long getOutputMinFrameDuration(Class<T>, android.util.Size);
+ method public <T> android.util.Size[] getOutputSizes(Class<T>);
method public android.util.Size[] getOutputSizes(int);
method public long getOutputStallDuration(int, android.util.Size);
- method public <T> long getOutputStallDuration(java.lang.Class<T>, android.util.Size);
+ method public <T> long getOutputStallDuration(Class<T>, android.util.Size);
method public int[] getValidOutputFormatsForInput(int);
method public boolean isOutputSupportedFor(int);
- method public static <T> boolean isOutputSupportedFor(java.lang.Class<T>);
+ method public static <T> boolean isOutputSupportedFor(Class<T>);
method public boolean isOutputSupportedFor(android.view.Surface);
}
@@ -17341,14 +17332,14 @@
package android.hardware.display {
public final class DisplayManager {
- method public android.hardware.display.VirtualDisplay createVirtualDisplay(java.lang.String, int, int, int, android.view.Surface, int);
- method public android.hardware.display.VirtualDisplay createVirtualDisplay(java.lang.String, int, int, int, android.view.Surface, int, android.hardware.display.VirtualDisplay.Callback, android.os.Handler);
+ method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int);
+ method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int, @Nullable android.hardware.display.VirtualDisplay.Callback, @Nullable android.os.Handler);
method public android.view.Display getDisplay(int);
method public android.view.Display[] getDisplays();
- method public android.view.Display[] getDisplays(java.lang.String);
+ method public android.view.Display[] getDisplays(String);
method public void registerDisplayListener(android.hardware.display.DisplayManager.DisplayListener, android.os.Handler);
method public void unregisterDisplayListener(android.hardware.display.DisplayManager.DisplayListener);
- field public static final java.lang.String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
+ field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
field public static final int VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR = 16; // 0x10
field public static final int VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY = 8; // 0x8
field public static final int VIRTUAL_DISPLAY_FLAG_PRESENTATION = 2; // 0x2
@@ -17356,10 +17347,10 @@
field public static final int VIRTUAL_DISPLAY_FLAG_SECURE = 4; // 0x4
}
- public static abstract interface DisplayManager.DisplayListener {
- method public abstract void onDisplayAdded(int);
- method public abstract void onDisplayChanged(int);
- method public abstract void onDisplayRemoved(int);
+ public static interface DisplayManager.DisplayListener {
+ method public void onDisplayAdded(int);
+ method public void onDisplayChanged(int);
+ method public void onDisplayRemoved(int);
}
public final class VirtualDisplay {
@@ -17370,7 +17361,7 @@
method public void setSurface(android.view.Surface);
}
- public static abstract class VirtualDisplay.Callback {
+ public abstract static class VirtualDisplay.Callback {
ctor public VirtualDisplay.Callback();
method public void onPaused();
method public void onResumed();
@@ -17381,10 +17372,10 @@
package android.hardware.fingerprint {
- public deprecated class FingerprintManager {
- method public deprecated void authenticate(android.hardware.fingerprint.FingerprintManager.CryptoObject, android.os.CancellationSignal, int, android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, android.os.Handler);
- method public deprecated boolean hasEnrolledFingerprints();
- method public deprecated boolean isHardwareDetected();
+ @Deprecated public class FingerprintManager {
+ method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.USE_BIOMETRIC, android.Manifest.permission.USE_FINGERPRINT}) public void authenticate(@Nullable android.hardware.fingerprint.FingerprintManager.CryptoObject, @Nullable android.os.CancellationSignal, int, @NonNull android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, @Nullable android.os.Handler);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
field public static final int FINGERPRINT_ACQUIRED_GOOD = 0; // 0x0
field public static final int FINGERPRINT_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
field public static final int FINGERPRINT_ACQUIRED_INSUFFICIENT = 2; // 0x2
@@ -17404,25 +17395,25 @@
field public static final int FINGERPRINT_ERROR_VENDOR = 8; // 0x8
}
- public static abstract deprecated class FingerprintManager.AuthenticationCallback {
- ctor public FingerprintManager.AuthenticationCallback();
- method public void onAuthenticationError(int, java.lang.CharSequence);
- method public void onAuthenticationFailed();
- method public void onAuthenticationHelp(int, java.lang.CharSequence);
- method public void onAuthenticationSucceeded(android.hardware.fingerprint.FingerprintManager.AuthenticationResult);
+ @Deprecated public abstract static class FingerprintManager.AuthenticationCallback {
+ ctor @Deprecated public FingerprintManager.AuthenticationCallback();
+ method @Deprecated public void onAuthenticationError(int, CharSequence);
+ method @Deprecated public void onAuthenticationFailed();
+ method @Deprecated public void onAuthenticationHelp(int, CharSequence);
+ method @Deprecated public void onAuthenticationSucceeded(android.hardware.fingerprint.FingerprintManager.AuthenticationResult);
}
- public static deprecated class FingerprintManager.AuthenticationResult {
- method public android.hardware.fingerprint.FingerprintManager.CryptoObject getCryptoObject();
+ @Deprecated public static class FingerprintManager.AuthenticationResult {
+ method @Deprecated public android.hardware.fingerprint.FingerprintManager.CryptoObject getCryptoObject();
}
- public static final deprecated class FingerprintManager.CryptoObject {
- ctor public FingerprintManager.CryptoObject(java.security.Signature);
- ctor public FingerprintManager.CryptoObject(javax.crypto.Cipher);
- ctor public FingerprintManager.CryptoObject(javax.crypto.Mac);
- method public javax.crypto.Cipher getCipher();
- method public javax.crypto.Mac getMac();
- method public java.security.Signature getSignature();
+ @Deprecated public static final class FingerprintManager.CryptoObject {
+ ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull java.security.Signature);
+ ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull javax.crypto.Cipher);
+ ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull javax.crypto.Mac);
+ method @Deprecated public javax.crypto.Cipher getCipher();
+ method @Deprecated public javax.crypto.Mac getMac();
+ method @Deprecated public java.security.Signature getSignature();
}
}
@@ -17434,14 +17425,14 @@
method public int[] getInputDeviceIds();
method public void registerInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener, android.os.Handler);
method public void unregisterInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener);
- field public static final java.lang.String ACTION_QUERY_KEYBOARD_LAYOUTS = "android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS";
- field public static final java.lang.String META_DATA_KEYBOARD_LAYOUTS = "android.hardware.input.metadata.KEYBOARD_LAYOUTS";
+ field public static final String ACTION_QUERY_KEYBOARD_LAYOUTS = "android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS";
+ field public static final String META_DATA_KEYBOARD_LAYOUTS = "android.hardware.input.metadata.KEYBOARD_LAYOUTS";
}
- public static abstract interface InputManager.InputDeviceListener {
- method public abstract void onInputDeviceAdded(int);
- method public abstract void onInputDeviceChanged(int);
- method public abstract void onInputDeviceRemoved(int);
+ public static interface InputManager.InputDeviceListener {
+ method public void onInputDeviceAdded(int);
+ method public void onInputDeviceChanged(int);
+ method public void onInputDeviceRemoved(int);
}
}
@@ -17450,12 +17441,12 @@
public class UsbAccessory implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getDescription();
- method public java.lang.String getManufacturer();
- method public java.lang.String getModel();
- method public java.lang.String getSerial();
- method public java.lang.String getUri();
- method public java.lang.String getVersion();
+ method @Nullable public String getDescription();
+ method @NonNull public String getManufacturer();
+ method @NonNull public String getModel();
+ method @Nullable public String getSerial();
+ method @Nullable public String getUri();
+ method @Nullable public String getVersion();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.usb.UsbAccessory> CREATOR;
}
@@ -17463,10 +17454,10 @@
public class UsbConfiguration implements android.os.Parcelable {
method public int describeContents();
method public int getId();
- method public android.hardware.usb.UsbInterface getInterface(int);
+ method @NonNull public android.hardware.usb.UsbInterface getInterface(int);
method public int getInterfaceCount();
method public int getMaxPower();
- method public java.lang.String getName();
+ method @Nullable public String getName();
method public boolean isRemoteWakeup();
method public boolean isSelfPowered();
method public void writeToParcel(android.os.Parcel, int);
@@ -17512,23 +17503,23 @@
public class UsbDevice implements android.os.Parcelable {
method public int describeContents();
- method public android.hardware.usb.UsbConfiguration getConfiguration(int);
+ method @NonNull public android.hardware.usb.UsbConfiguration getConfiguration(int);
method public int getConfigurationCount();
method public int getDeviceClass();
method public int getDeviceId();
- method public static int getDeviceId(java.lang.String);
- method public java.lang.String getDeviceName();
- method public static java.lang.String getDeviceName(int);
+ method public static int getDeviceId(String);
+ method @NonNull public String getDeviceName();
+ method public static String getDeviceName(int);
method public int getDeviceProtocol();
method public int getDeviceSubclass();
- method public android.hardware.usb.UsbInterface getInterface(int);
+ method @NonNull public android.hardware.usb.UsbInterface getInterface(int);
method public int getInterfaceCount();
- method public java.lang.String getManufacturerName();
+ method @Nullable public String getManufacturerName();
method public int getProductId();
- method public java.lang.String getProductName();
- method public java.lang.String getSerialNumber();
+ method @Nullable public String getProductName();
+ method @Nullable public String getSerialNumber();
method public int getVendorId();
- method public java.lang.String getVersion();
+ method @NonNull public String getVersion();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.usb.UsbDevice> CREATOR;
}
@@ -17542,7 +17533,7 @@
method public int controlTransfer(int, int, int, int, byte[], int, int, int);
method public int getFileDescriptor();
method public byte[] getRawDescriptors();
- method public java.lang.String getSerial();
+ method public String getSerial();
method public boolean releaseInterface(android.hardware.usb.UsbInterface);
method public android.hardware.usb.UsbRequest requestWait();
method public android.hardware.usb.UsbRequest requestWait(long) throws java.util.concurrent.TimeoutException;
@@ -17572,39 +17563,39 @@
method public int getInterfaceClass();
method public int getInterfaceProtocol();
method public int getInterfaceSubclass();
- method public java.lang.String getName();
+ method @Nullable public String getName();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.usb.UsbInterface> CREATOR;
}
public class UsbManager {
method public android.hardware.usb.UsbAccessory[] getAccessoryList();
- method public java.util.HashMap<java.lang.String, android.hardware.usb.UsbDevice> getDeviceList();
+ method public java.util.HashMap<java.lang.String,android.hardware.usb.UsbDevice> getDeviceList();
method public boolean hasPermission(android.hardware.usb.UsbDevice);
method public boolean hasPermission(android.hardware.usb.UsbAccessory);
method public android.os.ParcelFileDescriptor openAccessory(android.hardware.usb.UsbAccessory);
method public android.hardware.usb.UsbDeviceConnection openDevice(android.hardware.usb.UsbDevice);
method public void requestPermission(android.hardware.usb.UsbDevice, android.app.PendingIntent);
method public void requestPermission(android.hardware.usb.UsbAccessory, android.app.PendingIntent);
- field public static final java.lang.String ACTION_USB_ACCESSORY_ATTACHED = "android.hardware.usb.action.USB_ACCESSORY_ATTACHED";
- field public static final java.lang.String ACTION_USB_ACCESSORY_DETACHED = "android.hardware.usb.action.USB_ACCESSORY_DETACHED";
- field public static final java.lang.String ACTION_USB_DEVICE_ATTACHED = "android.hardware.usb.action.USB_DEVICE_ATTACHED";
- field public static final java.lang.String ACTION_USB_DEVICE_DETACHED = "android.hardware.usb.action.USB_DEVICE_DETACHED";
- field public static final java.lang.String EXTRA_ACCESSORY = "accessory";
- field public static final java.lang.String EXTRA_DEVICE = "device";
- field public static final java.lang.String EXTRA_PERMISSION_GRANTED = "permission";
+ field public static final String ACTION_USB_ACCESSORY_ATTACHED = "android.hardware.usb.action.USB_ACCESSORY_ATTACHED";
+ field public static final String ACTION_USB_ACCESSORY_DETACHED = "android.hardware.usb.action.USB_ACCESSORY_DETACHED";
+ field public static final String ACTION_USB_DEVICE_ATTACHED = "android.hardware.usb.action.USB_DEVICE_ATTACHED";
+ field public static final String ACTION_USB_DEVICE_DETACHED = "android.hardware.usb.action.USB_DEVICE_DETACHED";
+ field public static final String EXTRA_ACCESSORY = "accessory";
+ field public static final String EXTRA_DEVICE = "device";
+ field public static final String EXTRA_PERMISSION_GRANTED = "permission";
}
public class UsbRequest {
ctor public UsbRequest();
method public boolean cancel();
method public void close();
- method public java.lang.Object getClientData();
+ method public Object getClientData();
method public android.hardware.usb.UsbEndpoint getEndpoint();
method public boolean initialize(android.hardware.usb.UsbDeviceConnection, android.hardware.usb.UsbEndpoint);
- method public deprecated boolean queue(java.nio.ByteBuffer, int);
- method public boolean queue(java.nio.ByteBuffer);
- method public void setClientData(java.lang.Object);
+ method @Deprecated public boolean queue(java.nio.ByteBuffer, int);
+ method public boolean queue(@Nullable java.nio.ByteBuffer);
+ method public void setClientData(Object);
}
}
@@ -17613,47 +17604,47 @@
public final class UCharacter implements android.icu.lang.UCharacterEnums.ECharacterCategory android.icu.lang.UCharacterEnums.ECharacterDirection {
method public static int charCount(int);
- method public static int codePointAt(java.lang.CharSequence, int);
+ method public static int codePointAt(CharSequence, int);
method public static int codePointAt(char[], int);
method public static int codePointAt(char[], int, int);
- method public static int codePointBefore(java.lang.CharSequence, int);
+ method public static int codePointBefore(CharSequence, int);
method public static int codePointBefore(char[], int);
method public static int codePointBefore(char[], int, int);
- method public static int codePointCount(java.lang.CharSequence, int, int);
+ method public static int codePointCount(CharSequence, int, int);
method public static int codePointCount(char[], int, int);
method public static int digit(int, int);
method public static int digit(int);
method public static int foldCase(int, boolean);
- method public static java.lang.String foldCase(java.lang.String, boolean);
+ method public static String foldCase(String, boolean);
method public static int foldCase(int, int);
- method public static java.lang.String foldCase(java.lang.String, int);
+ method public static String foldCase(String, int);
method public static char forDigit(int, int);
method public static android.icu.util.VersionInfo getAge(int);
method public static int getBidiPairedBracket(int);
- method public static int getCharFromExtendedName(java.lang.String);
- method public static int getCharFromName(java.lang.String);
- method public static int getCharFromNameAlias(java.lang.String);
+ method public static int getCharFromExtendedName(String);
+ method public static int getCharFromName(String);
+ method public static int getCharFromNameAlias(String);
method public static int getCodePoint(char, char);
method public static int getCodePoint(char);
method public static int getCombiningClass(int);
method public static int getDirection(int);
method public static byte getDirectionality(int);
- method public static java.lang.String getExtendedName(int);
+ method public static String getExtendedName(int);
method public static android.icu.util.ValueIterator getExtendedNameIterator();
method public static int getHanNumericValue(int);
method public static int getIntPropertyMaxValue(int);
method public static int getIntPropertyMinValue(int);
method public static int getIntPropertyValue(int, int);
method public static int getMirror(int);
- method public static java.lang.String getName(int);
- method public static java.lang.String getName(java.lang.String, java.lang.String);
- method public static java.lang.String getNameAlias(int);
+ method public static String getName(int);
+ method public static String getName(String, String);
+ method public static String getNameAlias(int);
method public static android.icu.util.ValueIterator getNameIterator();
method public static int getNumericValue(int);
- method public static int getPropertyEnum(java.lang.CharSequence);
- method public static java.lang.String getPropertyName(int, int);
- method public static int getPropertyValueEnum(int, java.lang.CharSequence);
- method public static java.lang.String getPropertyValueName(int, int, int);
+ method public static int getPropertyEnum(CharSequence);
+ method public static String getPropertyName(int, int);
+ method public static int getPropertyValueEnum(int, CharSequence);
+ method public static String getPropertyValueName(int, int, int);
method public static int getType(int);
method public static android.icu.util.RangeValueIterator getTypeIterator();
method public static double getUnicodeNumericValue(int);
@@ -17669,7 +17660,7 @@
method public static boolean isJavaIdentifierPart(int);
method public static boolean isJavaIdentifierStart(int);
method public static boolean isLegal(int);
- method public static boolean isLegal(java.lang.String);
+ method public static boolean isLegal(String);
method public static boolean isLetter(int);
method public static boolean isLetterOrDigit(int);
method public static boolean isLowSurrogate(char);
@@ -17690,26 +17681,26 @@
method public static boolean isUpperCase(int);
method public static boolean isValidCodePoint(int);
method public static boolean isWhitespace(int);
- method public static int offsetByCodePoints(java.lang.CharSequence, int, int);
+ method public static int offsetByCodePoints(CharSequence, int, int);
method public static int offsetByCodePoints(char[], int, int, int, int);
method public static int toChars(int, char[], int);
method public static char[] toChars(int);
method public static int toCodePoint(char, char);
method public static int toLowerCase(int);
- method public static java.lang.String toLowerCase(java.lang.String);
- method public static java.lang.String toLowerCase(java.util.Locale, java.lang.String);
- method public static java.lang.String toLowerCase(android.icu.util.ULocale, java.lang.String);
- method public static java.lang.String toString(int);
+ method public static String toLowerCase(String);
+ method public static String toLowerCase(java.util.Locale, String);
+ method public static String toLowerCase(android.icu.util.ULocale, String);
+ method public static String toString(int);
method public static int toTitleCase(int);
- method public static java.lang.String toTitleCase(java.lang.String, android.icu.text.BreakIterator);
- method public static java.lang.String toTitleCase(java.util.Locale, java.lang.String, android.icu.text.BreakIterator);
- method public static java.lang.String toTitleCase(android.icu.util.ULocale, java.lang.String, android.icu.text.BreakIterator);
- method public static java.lang.String toTitleCase(android.icu.util.ULocale, java.lang.String, android.icu.text.BreakIterator, int);
- method public static java.lang.String toTitleCase(java.util.Locale, java.lang.String, android.icu.text.BreakIterator, int);
+ method public static String toTitleCase(String, android.icu.text.BreakIterator);
+ method public static String toTitleCase(java.util.Locale, String, android.icu.text.BreakIterator);
+ method public static String toTitleCase(android.icu.util.ULocale, String, android.icu.text.BreakIterator);
+ method public static String toTitleCase(android.icu.util.ULocale, String, android.icu.text.BreakIterator, int);
+ method public static String toTitleCase(java.util.Locale, String, android.icu.text.BreakIterator, int);
method public static int toUpperCase(int);
- method public static java.lang.String toUpperCase(java.lang.String);
- method public static java.lang.String toUpperCase(java.util.Locale, java.lang.String);
- method public static java.lang.String toUpperCase(android.icu.util.ULocale, java.lang.String);
+ method public static String toUpperCase(String);
+ method public static String toUpperCase(java.util.Locale, String);
+ method public static String toUpperCase(android.icu.util.ULocale, String);
field public static final int FOLD_CASE_DEFAULT = 0; // 0x0
field public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 1; // 0x1
field public static final int MAX_CODE_POINT = 1114111; // 0x10ffff
@@ -17732,13 +17723,13 @@
field public static final int TITLECASE_NO_LOWERCASE = 256; // 0x100
}
- public static abstract interface UCharacter.BidiPairedBracketType {
+ public static interface UCharacter.BidiPairedBracketType {
field public static final int CLOSE = 2; // 0x2
field public static final int NONE = 0; // 0x0
field public static final int OPEN = 1; // 0x1
}
- public static abstract interface UCharacter.DecompositionType {
+ public static interface UCharacter.DecompositionType {
field public static final int CANONICAL = 1; // 0x1
field public static final int CIRCLE = 3; // 0x3
field public static final int COMPAT = 2; // 0x2
@@ -17759,7 +17750,7 @@
field public static final int WIDE = 17; // 0x11
}
- public static abstract interface UCharacter.EastAsianWidth {
+ public static interface UCharacter.EastAsianWidth {
field public static final int AMBIGUOUS = 1; // 0x1
field public static final int FULLWIDTH = 3; // 0x3
field public static final int HALFWIDTH = 2; // 0x2
@@ -17768,7 +17759,7 @@
field public static final int WIDE = 5; // 0x5
}
- public static abstract interface UCharacter.GraphemeClusterBreak {
+ public static interface UCharacter.GraphemeClusterBreak {
field public static final int CONTROL = 1; // 0x1
field public static final int CR = 2; // 0x2
field public static final int EXTEND = 3; // 0x3
@@ -17789,7 +17780,7 @@
field public static final int ZWJ = 17; // 0x11
}
- public static abstract interface UCharacter.HangulSyllableType {
+ public static interface UCharacter.HangulSyllableType {
field public static final int LEADING_JAMO = 1; // 0x1
field public static final int LVT_SYLLABLE = 5; // 0x5
field public static final int LV_SYLLABLE = 4; // 0x4
@@ -17798,7 +17789,7 @@
field public static final int VOWEL_JAMO = 2; // 0x2
}
- public static abstract interface UCharacter.IndicPositionalCategory {
+ public static interface UCharacter.IndicPositionalCategory {
field public static final int BOTTOM = 1; // 0x1
field public static final int BOTTOM_AND_LEFT = 2; // 0x2
field public static final int BOTTOM_AND_RIGHT = 3; // 0x3
@@ -17816,7 +17807,7 @@
field public static final int VISUAL_ORDER_LEFT = 14; // 0xe
}
- public static abstract interface UCharacter.IndicSyllabicCategory {
+ public static interface UCharacter.IndicSyllabicCategory {
field public static final int AVAGRAHA = 1; // 0x1
field public static final int BINDU = 2; // 0x2
field public static final int BRAHMI_JOINING_NUMBER = 3; // 0x3
@@ -17855,7 +17846,7 @@
field public static final int VOWEL_INDEPENDENT = 35; // 0x23
}
- public static abstract interface UCharacter.JoiningGroup {
+ public static interface UCharacter.JoiningGroup {
field public static final int AFRICAN_FEH = 86; // 0x56
field public static final int AFRICAN_NOON = 87; // 0x57
field public static final int AFRICAN_QAF = 88; // 0x58
@@ -17961,7 +17952,7 @@
field public static final int ZHAIN = 53; // 0x35
}
- public static abstract interface UCharacter.JoiningType {
+ public static interface UCharacter.JoiningType {
field public static final int DUAL_JOINING = 2; // 0x2
field public static final int JOIN_CAUSING = 1; // 0x1
field public static final int LEFT_JOINING = 3; // 0x3
@@ -17970,7 +17961,7 @@
field public static final int TRANSPARENT = 5; // 0x5
}
- public static abstract interface UCharacter.LineBreak {
+ public static interface UCharacter.LineBreak {
field public static final int ALPHABETIC = 2; // 0x2
field public static final int AMBIGUOUS = 1; // 0x1
field public static final int BREAK_AFTER = 4; // 0x4
@@ -18017,14 +18008,14 @@
field public static final int ZWSPACE = 28; // 0x1c
}
- public static abstract interface UCharacter.NumericType {
+ public static interface UCharacter.NumericType {
field public static final int DECIMAL = 1; // 0x1
field public static final int DIGIT = 2; // 0x2
field public static final int NONE = 0; // 0x0
field public static final int NUMERIC = 3; // 0x3
}
- public static abstract interface UCharacter.SentenceBreak {
+ public static interface UCharacter.SentenceBreak {
field public static final int ATERM = 1; // 0x1
field public static final int CLOSE = 2; // 0x2
field public static final int CR = 11; // 0xb
@@ -18043,7 +18034,7 @@
}
public static final class UCharacter.UnicodeBlock extends java.lang.Character.Subset {
- method public static android.icu.lang.UCharacter.UnicodeBlock forName(java.lang.String);
+ method public static android.icu.lang.UCharacter.UnicodeBlock forName(String);
method public int getID();
method public static android.icu.lang.UCharacter.UnicodeBlock getInstance(int);
method public static android.icu.lang.UCharacter.UnicodeBlock of(int);
@@ -18638,14 +18629,14 @@
field public static final int ZANABAZAR_SQUARE_ID = 280; // 0x118
}
- public static abstract interface UCharacter.VerticalOrientation {
+ public static interface UCharacter.VerticalOrientation {
field public static final int ROTATED = 0; // 0x0
field public static final int TRANSFORMED_ROTATED = 1; // 0x1
field public static final int TRANSFORMED_UPRIGHT = 2; // 0x2
field public static final int UPRIGHT = 3; // 0x3
}
- public static abstract interface UCharacter.WordBreak {
+ public static interface UCharacter.WordBreak {
field public static final int ALETTER = 1; // 0x1
field public static final int CR = 8; // 0x8
field public static final int DOUBLE_QUOTE = 16; // 0x10
@@ -18672,17 +18663,17 @@
}
public final class UCharacterCategory implements android.icu.lang.UCharacterEnums.ECharacterCategory {
- method public static java.lang.String toString(int);
+ method public static String toString(int);
}
public final class UCharacterDirection implements android.icu.lang.UCharacterEnums.ECharacterDirection {
- method public static java.lang.String toString(int);
+ method public static String toString(int);
}
public class UCharacterEnums {
}
- public static abstract interface UCharacterEnums.ECharacterCategory {
+ public static interface UCharacterEnums.ECharacterCategory {
field public static final byte COMBINING_SPACING_MARK = 8; // 0x8
field public static final byte CONNECTOR_PUNCTUATION = 22; // 0x16
field public static final byte CONTROL = 15; // 0xf
@@ -18718,7 +18709,7 @@
field public static final byte UPPERCASE_LETTER = 1; // 0x1
}
- public static abstract interface UCharacterEnums.ECharacterDirection {
+ public static interface UCharacterEnums.ECharacterDirection {
field public static final int ARABIC_NUMBER = 5; // 0x5
field public static final int BLOCK_SEPARATOR = 7; // 0x7
field public static final int BOUNDARY_NEUTRAL = 18; // 0x12
@@ -18764,7 +18755,7 @@
field public static final int WHITE_SPACE_NEUTRAL = 9; // 0x9
}
- public abstract interface UProperty {
+ public interface UProperty {
field public static final int AGE = 16384; // 0x4000
field public static final int ALPHABETIC = 0; // 0x0
field public static final int ASCII_HEX_DIGIT = 1; // 0x1
@@ -18878,7 +18869,7 @@
field public static final int XID_START = 33; // 0x21
}
- public static abstract interface UProperty.NameChoice {
+ public static interface UProperty.NameChoice {
field public static final int LONG = 1; // 0x1
field public static final int SHORT = 0; // 0x0
}
@@ -18887,13 +18878,13 @@
method public static boolean breaksBetweenLetters(int);
method public static int[] getCode(java.util.Locale);
method public static int[] getCode(android.icu.util.ULocale);
- method public static int[] getCode(java.lang.String);
- method public static int getCodeFromName(java.lang.String);
- method public static java.lang.String getName(int);
- method public static java.lang.String getSampleString(int);
+ method public static int[] getCode(String);
+ method public static int getCodeFromName(String);
+ method public static String getName(int);
+ method public static String getSampleString(int);
method public static int getScript(int);
method public static int getScriptExtensions(int, java.util.BitSet);
- method public static java.lang.String getShortName(int);
+ method public static String getShortName(int);
method public static android.icu.lang.UScript.ScriptUsage getUsage(int);
method public static boolean hasScript(int, int);
method public static boolean isCased(int);
@@ -19091,9 +19082,7 @@
field public static final int ZANABAZAR_SQUARE = 177; // 0xb1
}
- public static final class UScript.ScriptUsage extends java.lang.Enum {
- method public static android.icu.lang.UScript.ScriptUsage valueOf(java.lang.String);
- method public static final android.icu.lang.UScript.ScriptUsage[] values();
+ public enum UScript.ScriptUsage {
enum_constant public static final android.icu.lang.UScript.ScriptUsage ASPIRATIONAL;
enum_constant public static final android.icu.lang.UScript.ScriptUsage EXCLUDED;
enum_constant public static final android.icu.lang.UScript.ScriptUsage LIMITED_USE;
@@ -19106,7 +19095,7 @@
package android.icu.math {
- public class BigDecimal extends java.lang.Number implements java.lang.Comparable java.io.Serializable {
+ public class BigDecimal extends java.lang.Number implements java.lang.Comparable<android.icu.math.BigDecimal> java.io.Serializable {
ctor public BigDecimal(java.math.BigDecimal);
ctor public BigDecimal(java.math.BigInteger);
ctor public BigDecimal(java.math.BigInteger, int);
@@ -19115,7 +19104,7 @@
ctor public BigDecimal(double);
ctor public BigDecimal(int);
ctor public BigDecimal(long);
- ctor public BigDecimal(java.lang.String);
+ ctor public BigDecimal(String);
method public android.icu.math.BigDecimal abs();
method public android.icu.math.BigDecimal abs(android.icu.math.MathContext);
method public android.icu.math.BigDecimal add(android.icu.math.BigDecimal);
@@ -19131,8 +19120,8 @@
method public android.icu.math.BigDecimal divideInteger(android.icu.math.BigDecimal, android.icu.math.MathContext);
method public double doubleValue();
method public float floatValue();
- method public java.lang.String format(int, int);
- method public java.lang.String format(int, int, int, int, int, int);
+ method public String format(int, int);
+ method public String format(int, int, int, int, int, int);
method public int intValue();
method public int intValueExact();
method public long longValue();
@@ -19208,71 +19197,69 @@
package android.icu.text {
- public final class AlphabeticIndex<V> implements java.lang.Iterable {
+ public final class AlphabeticIndex<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Bucket<V>> {
ctor public AlphabeticIndex(android.icu.util.ULocale);
ctor public AlphabeticIndex(java.util.Locale);
ctor public AlphabeticIndex(android.icu.text.RuleBasedCollator);
method public android.icu.text.AlphabeticIndex<V> addLabels(android.icu.text.UnicodeSet);
method public android.icu.text.AlphabeticIndex<V> addLabels(android.icu.util.ULocale...);
method public android.icu.text.AlphabeticIndex<V> addLabels(java.util.Locale...);
- method public android.icu.text.AlphabeticIndex<V> addRecord(java.lang.CharSequence, V);
+ method public android.icu.text.AlphabeticIndex<V> addRecord(CharSequence, V);
method public android.icu.text.AlphabeticIndex.ImmutableIndex<V> buildImmutableIndex();
method public android.icu.text.AlphabeticIndex<V> clearRecords();
method public int getBucketCount();
- method public int getBucketIndex(java.lang.CharSequence);
+ method public int getBucketIndex(CharSequence);
method public java.util.List<java.lang.String> getBucketLabels();
method public android.icu.text.RuleBasedCollator getCollator();
- method public java.lang.String getInflowLabel();
+ method public String getInflowLabel();
method public int getMaxLabelCount();
- method public java.lang.String getOverflowLabel();
+ method public String getOverflowLabel();
method public int getRecordCount();
- method public java.lang.String getUnderflowLabel();
+ method public String getUnderflowLabel();
method public java.util.Iterator<android.icu.text.AlphabeticIndex.Bucket<V>> iterator();
- method public android.icu.text.AlphabeticIndex<V> setInflowLabel(java.lang.String);
+ method public android.icu.text.AlphabeticIndex<V> setInflowLabel(String);
method public android.icu.text.AlphabeticIndex<V> setMaxLabelCount(int);
- method public android.icu.text.AlphabeticIndex<V> setOverflowLabel(java.lang.String);
- method public android.icu.text.AlphabeticIndex<V> setUnderflowLabel(java.lang.String);
+ method public android.icu.text.AlphabeticIndex<V> setOverflowLabel(String);
+ method public android.icu.text.AlphabeticIndex<V> setUnderflowLabel(String);
}
- public static class AlphabeticIndex.Bucket<V> implements java.lang.Iterable {
- method public java.lang.String getLabel();
+ public static class AlphabeticIndex.Bucket<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Record<V>> {
+ method public String getLabel();
method public android.icu.text.AlphabeticIndex.Bucket.LabelType getLabelType();
method public java.util.Iterator<android.icu.text.AlphabeticIndex.Record<V>> iterator();
method public int size();
}
- public static final class AlphabeticIndex.Bucket.LabelType extends java.lang.Enum {
- method public static android.icu.text.AlphabeticIndex.Bucket.LabelType valueOf(java.lang.String);
- method public static final android.icu.text.AlphabeticIndex.Bucket.LabelType[] values();
+ public enum AlphabeticIndex.Bucket.LabelType {
enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType INFLOW;
enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType NORMAL;
enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType OVERFLOW;
enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType UNDERFLOW;
}
- public static final class AlphabeticIndex.ImmutableIndex<V> implements java.lang.Iterable {
+ public static final class AlphabeticIndex.ImmutableIndex<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Bucket<V>> {
method public android.icu.text.AlphabeticIndex.Bucket<V> getBucket(int);
method public int getBucketCount();
- method public int getBucketIndex(java.lang.CharSequence);
+ method public int getBucketIndex(CharSequence);
method public java.util.Iterator<android.icu.text.AlphabeticIndex.Bucket<V>> iterator();
}
public static class AlphabeticIndex.Record<V> {
method public V getData();
- method public java.lang.CharSequence getName();
+ method public CharSequence getName();
}
public class Bidi {
ctor public Bidi();
ctor public Bidi(int, int);
- ctor public Bidi(java.lang.String, int);
+ ctor public Bidi(String, int);
ctor public Bidi(java.text.AttributedCharacterIterator);
ctor public Bidi(char[], int, byte[], int, int, int);
method public boolean baseIsLeftToRight();
method public int countParagraphs();
method public int countRuns();
method public android.icu.text.Bidi createLineBidi(int, int);
- method public static byte getBaseDirection(java.lang.CharSequence);
+ method public static byte getBaseDirection(CharSequence);
method public int getBaseLevel();
method public android.icu.text.BidiClassifier getCustomClassifier();
method public int getCustomizedClass(int);
@@ -19296,7 +19283,7 @@
method public int getRunLimit(int);
method public int getRunStart(int);
method public char[] getText();
- method public java.lang.String getTextAsString();
+ method public String getTextAsString();
method public int getVisualIndex(int);
method public int[] getVisualMap();
method public android.icu.text.BidiRun getVisualRun(int);
@@ -19309,19 +19296,19 @@
method public void orderParagraphsLTR(boolean);
method public static int[] reorderLogical(byte[]);
method public static int[] reorderVisual(byte[]);
- method public static void reorderVisually(byte[], int, java.lang.Object[], int, int);
+ method public static void reorderVisually(byte[], int, Object[], int, int);
method public static boolean requiresBidi(char[], int, int);
- method public void setContext(java.lang.String, java.lang.String);
+ method public void setContext(String, String);
method public void setCustomClassifier(android.icu.text.BidiClassifier);
method public void setInverse(boolean);
method public android.icu.text.Bidi setLine(int, int);
- method public void setPara(java.lang.String, byte, byte[]);
+ method public void setPara(String, byte, byte[]);
method public void setPara(char[], byte, byte[]);
method public void setPara(java.text.AttributedCharacterIterator);
method public void setReorderingMode(int);
method public void setReorderingOptions(int);
- method public java.lang.String writeReordered(int);
- method public static java.lang.String writeReverse(java.lang.String, int);
+ method public String writeReordered(int);
+ method public static String writeReverse(String, int);
field public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = 126; // 0x7e
field public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = 127; // 0x7f
field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
@@ -19354,10 +19341,10 @@
}
public class BidiClassifier {
- ctor public BidiClassifier(java.lang.Object);
+ ctor public BidiClassifier(Object);
method public int classify(int);
- method public java.lang.Object getContext();
- method public void setContext(java.lang.Object);
+ method public Object getContext();
+ method public void setContext(Object);
}
public class BidiRun {
@@ -19372,11 +19359,11 @@
public abstract class BreakIterator implements java.lang.Cloneable {
ctor protected BreakIterator();
- method public java.lang.Object clone();
+ method public Object clone();
method public abstract int current();
method public abstract int first();
method public abstract int following(int);
- method public static synchronized java.util.Locale[] getAvailableLocales();
+ method public static java.util.Locale[] getAvailableLocales();
method public static android.icu.text.BreakIterator getCharacterInstance();
method public static android.icu.text.BreakIterator getCharacterInstance(java.util.Locale);
method public static android.icu.text.BreakIterator getCharacterInstance(android.icu.util.ULocale);
@@ -19401,8 +19388,8 @@
method public abstract int next();
method public int preceding(int);
method public abstract int previous();
- method public void setText(java.lang.String);
- method public void setText(java.lang.CharSequence);
+ method public void setText(String);
+ method public void setText(CharSequence);
method public abstract void setText(java.text.CharacterIterator);
field public static final int DONE = -1; // 0xffffffff
field public static final int KIND_CHARACTER = 0; // 0x0
@@ -19431,22 +19418,22 @@
}
public static final class CaseMap.Fold extends android.icu.text.CaseMap {
- method public java.lang.String apply(java.lang.CharSequence);
- method public <A extends java.lang.Appendable> A apply(java.lang.CharSequence, A, android.icu.text.Edits);
+ method public String apply(CharSequence);
+ method public <A extends java.lang.Appendable> A apply(CharSequence, A, android.icu.text.Edits);
method public android.icu.text.CaseMap.Fold omitUnchangedText();
method public android.icu.text.CaseMap.Fold turkic();
}
public static final class CaseMap.Lower extends android.icu.text.CaseMap {
- method public java.lang.String apply(java.util.Locale, java.lang.CharSequence);
- method public <A extends java.lang.Appendable> A apply(java.util.Locale, java.lang.CharSequence, A, android.icu.text.Edits);
+ method public String apply(java.util.Locale, CharSequence);
+ method public <A extends java.lang.Appendable> A apply(java.util.Locale, CharSequence, A, android.icu.text.Edits);
method public android.icu.text.CaseMap.Lower omitUnchangedText();
}
public static final class CaseMap.Title extends android.icu.text.CaseMap {
method public android.icu.text.CaseMap.Title adjustToCased();
- method public java.lang.String apply(java.util.Locale, android.icu.text.BreakIterator, java.lang.CharSequence);
- method public <A extends java.lang.Appendable> A apply(java.util.Locale, android.icu.text.BreakIterator, java.lang.CharSequence, A, android.icu.text.Edits);
+ method public String apply(java.util.Locale, android.icu.text.BreakIterator, CharSequence);
+ method public <A extends java.lang.Appendable> A apply(java.util.Locale, android.icu.text.BreakIterator, CharSequence, A, android.icu.text.Edits);
method public android.icu.text.CaseMap.Title noBreakAdjustment();
method public android.icu.text.CaseMap.Title noLowercase();
method public android.icu.text.CaseMap.Title omitUnchangedText();
@@ -19455,8 +19442,8 @@
}
public static final class CaseMap.Upper extends android.icu.text.CaseMap {
- method public java.lang.String apply(java.util.Locale, java.lang.CharSequence);
- method public <A extends java.lang.Appendable> A apply(java.util.Locale, java.lang.CharSequence, A, android.icu.text.Edits);
+ method public String apply(java.util.Locale, CharSequence);
+ method public <A extends java.lang.Appendable> A apply(java.util.Locale, CharSequence, A, android.icu.text.Edits);
method public android.icu.text.CaseMap.Upper omitUnchangedText();
}
@@ -19469,7 +19456,7 @@
method public void reset();
method public static int secondaryOrder(int);
method public void setOffset(int);
- method public void setText(java.lang.String);
+ method public void setText(String);
method public void setText(android.icu.text.UCharacterIterator);
method public void setText(java.text.CharacterIterator);
method public static int tertiaryOrder(int);
@@ -19477,12 +19464,12 @@
field public static final int NULLORDER = -1; // 0xffffffff
}
- public final class CollationKey implements java.lang.Comparable {
- ctor public CollationKey(java.lang.String, byte[]);
+ public final class CollationKey implements java.lang.Comparable<android.icu.text.CollationKey> {
+ ctor public CollationKey(String, byte[]);
method public int compareTo(android.icu.text.CollationKey);
method public boolean equals(android.icu.text.CollationKey);
method public android.icu.text.CollationKey getBound(int, int);
- method public java.lang.String getSourceString();
+ method public String getSourceString();
method public android.icu.text.CollationKey merge(android.icu.text.CollationKey);
method public byte[] toByteArray();
}
@@ -19493,31 +19480,31 @@
field public static final int UPPER_LONG = 2; // 0x2
}
- public abstract class Collator implements java.lang.Cloneable java.util.Comparator android.icu.util.Freezable {
+ public abstract class Collator implements java.lang.Cloneable java.util.Comparator<java.lang.Object> android.icu.util.Freezable<android.icu.text.Collator> {
ctor protected Collator();
- method public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
+ method public Object clone() throws java.lang.CloneNotSupportedException;
method public android.icu.text.Collator cloneAsThawed();
- method public abstract int compare(java.lang.String, java.lang.String);
- method public int compare(java.lang.Object, java.lang.Object);
- method public boolean equals(java.lang.String, java.lang.String);
+ method public abstract int compare(String, String);
+ method public int compare(Object, Object);
+ method public boolean equals(String, String);
method public android.icu.text.Collator freeze();
method public static java.util.Locale[] getAvailableLocales();
method public static final android.icu.util.ULocale[] getAvailableULocales();
- method public abstract android.icu.text.CollationKey getCollationKey(java.lang.String);
+ method public abstract android.icu.text.CollationKey getCollationKey(String);
method public int getDecomposition();
- method public static java.lang.String getDisplayName(java.util.Locale, java.util.Locale);
- method public static java.lang.String getDisplayName(android.icu.util.ULocale, android.icu.util.ULocale);
- method public static java.lang.String getDisplayName(java.util.Locale);
- method public static java.lang.String getDisplayName(android.icu.util.ULocale);
+ method public static String getDisplayName(java.util.Locale, java.util.Locale);
+ method public static String getDisplayName(android.icu.util.ULocale, android.icu.util.ULocale);
+ method public static String getDisplayName(java.util.Locale);
+ method public static String getDisplayName(android.icu.util.ULocale);
method public static int[] getEquivalentReorderCodes(int);
- method public static final android.icu.util.ULocale getFunctionalEquivalent(java.lang.String, android.icu.util.ULocale, boolean[]);
- method public static final android.icu.util.ULocale getFunctionalEquivalent(java.lang.String, android.icu.util.ULocale);
+ method public static final android.icu.util.ULocale getFunctionalEquivalent(String, android.icu.util.ULocale, boolean[]);
+ method public static final android.icu.util.ULocale getFunctionalEquivalent(String, android.icu.util.ULocale);
method public static final android.icu.text.Collator getInstance();
method public static final android.icu.text.Collator getInstance(android.icu.util.ULocale);
method public static final android.icu.text.Collator getInstance(java.util.Locale);
- method public static final java.lang.String[] getKeywordValues(java.lang.String);
- method public static final java.lang.String[] getKeywordValuesForLocale(java.lang.String, android.icu.util.ULocale, boolean);
- method public static final java.lang.String[] getKeywords();
+ method public static final String[] getKeywordValues(String);
+ method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
+ method public static final String[] getKeywords();
method public int getMaxVariable();
method public int[] getReorderCodes();
method public int getStrength();
@@ -19540,7 +19527,7 @@
field public static final int TERTIARY = 2; // 0x2
}
- public static abstract interface Collator.ReorderCodes {
+ public static interface Collator.ReorderCodes {
field public static final int CURRENCY = 4099; // 0x1003
field public static final int DEFAULT = -1; // 0xffffffff
field public static final int DIGIT = 4100; // 0x1004
@@ -19557,9 +19544,7 @@
method public static android.icu.text.CompactDecimalFormat getInstance(java.util.Locale, android.icu.text.CompactDecimalFormat.CompactStyle);
}
- public static final class CompactDecimalFormat.CompactStyle extends java.lang.Enum {
- method public static android.icu.text.CompactDecimalFormat.CompactStyle valueOf(java.lang.String);
- method public static final android.icu.text.CompactDecimalFormat.CompactStyle[] values();
+ public enum CompactDecimalFormat.CompactStyle {
enum_constant public static final android.icu.text.CompactDecimalFormat.CompactStyle LONG;
enum_constant public static final android.icu.text.CompactDecimalFormat.CompactStyle SHORT;
}
@@ -19568,24 +19553,24 @@
ctor public CurrencyPluralInfo();
ctor public CurrencyPluralInfo(java.util.Locale);
ctor public CurrencyPluralInfo(android.icu.util.ULocale);
- method public java.lang.Object clone();
- method public java.lang.String getCurrencyPluralPattern(java.lang.String);
+ method public Object clone();
+ method public String getCurrencyPluralPattern(String);
method public static android.icu.text.CurrencyPluralInfo getInstance();
method public static android.icu.text.CurrencyPluralInfo getInstance(java.util.Locale);
method public static android.icu.text.CurrencyPluralInfo getInstance(android.icu.util.ULocale);
method public android.icu.util.ULocale getLocale();
method public android.icu.text.PluralRules getPluralRules();
- method public void setCurrencyPluralPattern(java.lang.String, java.lang.String);
+ method public void setCurrencyPluralPattern(String, String);
method public void setLocale(android.icu.util.ULocale);
- method public void setPluralRules(java.lang.String);
+ method public void setPluralRules(String);
}
public abstract class DateFormat extends android.icu.text.UFormat {
ctor protected DateFormat();
- method public final java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public abstract java.lang.StringBuffer format(android.icu.util.Calendar, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuffer format(java.util.Date, java.lang.StringBuffer, java.text.FieldPosition);
- method public final java.lang.String format(java.util.Date);
+ method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+ method public abstract StringBuffer format(android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(java.util.Date, StringBuffer, java.text.FieldPosition);
+ method public final String format(java.util.Date);
method public static java.util.Locale[] getAvailableLocales();
method public boolean getBooleanAttribute(android.icu.text.DateFormat.BooleanAttribute);
method public android.icu.util.Calendar getCalendar();
@@ -19607,17 +19592,17 @@
method public static final android.icu.text.DateFormat getInstance();
method public static final android.icu.text.DateFormat getInstance(android.icu.util.Calendar, java.util.Locale);
method public static final android.icu.text.DateFormat getInstance(android.icu.util.Calendar);
- method public static final android.icu.text.DateFormat getInstanceForSkeleton(java.lang.String);
- method public static final android.icu.text.DateFormat getInstanceForSkeleton(java.lang.String, java.util.Locale);
- method public static final android.icu.text.DateFormat getInstanceForSkeleton(java.lang.String, android.icu.util.ULocale);
- method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, java.lang.String, java.util.Locale);
- method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, java.lang.String, android.icu.util.ULocale);
+ method public static final android.icu.text.DateFormat getInstanceForSkeleton(String);
+ method public static final android.icu.text.DateFormat getInstanceForSkeleton(String, java.util.Locale);
+ method public static final android.icu.text.DateFormat getInstanceForSkeleton(String, android.icu.util.ULocale);
+ method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, String, java.util.Locale);
+ method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, String, android.icu.util.ULocale);
method public android.icu.text.NumberFormat getNumberFormat();
- method public static final android.icu.text.DateFormat getPatternInstance(java.lang.String);
- method public static final android.icu.text.DateFormat getPatternInstance(java.lang.String, java.util.Locale);
- method public static final android.icu.text.DateFormat getPatternInstance(java.lang.String, android.icu.util.ULocale);
- method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, java.lang.String, java.util.Locale);
- method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, java.lang.String, android.icu.util.ULocale);
+ method public static final android.icu.text.DateFormat getPatternInstance(String);
+ method public static final android.icu.text.DateFormat getPatternInstance(String, java.util.Locale);
+ method public static final android.icu.text.DateFormat getPatternInstance(String, android.icu.util.ULocale);
+ method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, String, java.util.Locale);
+ method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, String, android.icu.util.ULocale);
method public static final android.icu.text.DateFormat getTimeInstance();
method public static final android.icu.text.DateFormat getTimeInstance(int);
method public static final android.icu.text.DateFormat getTimeInstance(int, java.util.Locale);
@@ -19628,10 +19613,10 @@
method public android.icu.util.TimeZone getTimeZone();
method public boolean isCalendarLenient();
method public boolean isLenient();
- method public java.util.Date parse(java.lang.String) throws java.text.ParseException;
- method public abstract void parse(java.lang.String, android.icu.util.Calendar, java.text.ParsePosition);
- method public java.util.Date parse(java.lang.String, java.text.ParsePosition);
- method public java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
+ method public java.util.Date parse(String) throws java.text.ParseException;
+ method public abstract void parse(String, android.icu.util.Calendar, java.text.ParsePosition);
+ method public java.util.Date parse(String, java.text.ParsePosition);
+ method public Object parseObject(String, java.text.ParsePosition);
method public android.icu.text.DateFormat setBooleanAttribute(android.icu.text.DateFormat.BooleanAttribute, boolean);
method public void setCalendar(android.icu.util.Calendar);
method public void setCalendarLenient(boolean);
@@ -19639,18 +19624,18 @@
method public void setLenient(boolean);
method public void setNumberFormat(android.icu.text.NumberFormat);
method public void setTimeZone(android.icu.util.TimeZone);
- field public static final java.lang.String ABBR_GENERIC_TZ = "v";
- field public static final java.lang.String ABBR_MONTH = "MMM";
- field public static final java.lang.String ABBR_MONTH_DAY = "MMMd";
- field public static final java.lang.String ABBR_MONTH_WEEKDAY_DAY = "MMMEd";
- field public static final java.lang.String ABBR_QUARTER = "QQQ";
- field public static final java.lang.String ABBR_SPECIFIC_TZ = "z";
- field public static final java.lang.String ABBR_UTC_TZ = "ZZZZ";
- field public static final java.lang.String ABBR_WEEKDAY = "E";
+ field public static final String ABBR_GENERIC_TZ = "v";
+ field public static final String ABBR_MONTH = "MMM";
+ field public static final String ABBR_MONTH_DAY = "MMMd";
+ field public static final String ABBR_MONTH_WEEKDAY_DAY = "MMMEd";
+ field public static final String ABBR_QUARTER = "QQQ";
+ field public static final String ABBR_SPECIFIC_TZ = "z";
+ field public static final String ABBR_UTC_TZ = "ZZZZ";
+ field public static final String ABBR_WEEKDAY = "E";
field public static final int AM_PM_FIELD = 14; // 0xe
field public static final int AM_PM_MIDNIGHT_NOON_FIELD = 35; // 0x23
field public static final int DATE_FIELD = 3; // 0x3
- field public static final java.lang.String DAY = "d";
+ field public static final String DAY = "d";
field public static final int DAY_OF_WEEK_FIELD = 9; // 0x9
field public static final int DAY_OF_WEEK_IN_MONTH_FIELD = 11; // 0xb
field public static final int DAY_OF_YEAR_FIELD = 10; // 0xa
@@ -19661,35 +19646,35 @@
field public static final int FLEXIBLE_DAY_PERIOD_FIELD = 36; // 0x24
field public static final int FRACTIONAL_SECOND_FIELD = 8; // 0x8
field public static final int FULL = 0; // 0x0
- field public static final java.lang.String GENERIC_TZ = "vvvv";
- field public static final java.lang.String HOUR = "j";
+ field public static final String GENERIC_TZ = "vvvv";
+ field public static final String HOUR = "j";
field public static final int HOUR0_FIELD = 16; // 0x10
field public static final int HOUR1_FIELD = 15; // 0xf
- field public static final java.lang.String HOUR24 = "H";
- field public static final java.lang.String HOUR24_MINUTE = "Hm";
- field public static final java.lang.String HOUR24_MINUTE_SECOND = "Hms";
- field public static final java.lang.String HOUR_MINUTE = "jm";
- field public static final java.lang.String HOUR_MINUTE_SECOND = "jms";
+ field public static final String HOUR24 = "H";
+ field public static final String HOUR24_MINUTE = "Hm";
+ field public static final String HOUR24_MINUTE_SECOND = "Hms";
+ field public static final String HOUR_MINUTE = "jm";
+ field public static final String HOUR_MINUTE_SECOND = "jms";
field public static final int HOUR_OF_DAY0_FIELD = 5; // 0x5
field public static final int HOUR_OF_DAY1_FIELD = 4; // 0x4
field public static final int JULIAN_DAY_FIELD = 21; // 0x15
- field public static final java.lang.String LOCATION_TZ = "VVVV";
+ field public static final String LOCATION_TZ = "VVVV";
field public static final int LONG = 1; // 0x1
field public static final int MEDIUM = 2; // 0x2
field public static final int MILLISECONDS_IN_DAY_FIELD = 22; // 0x16
field public static final int MILLISECOND_FIELD = 8; // 0x8
- field public static final java.lang.String MINUTE = "m";
+ field public static final String MINUTE = "m";
field public static final int MINUTE_FIELD = 6; // 0x6
- field public static final java.lang.String MINUTE_SECOND = "ms";
- field public static final java.lang.String MONTH = "MMMM";
- field public static final java.lang.String MONTH_DAY = "MMMMd";
+ field public static final String MINUTE_SECOND = "ms";
+ field public static final String MONTH = "MMMM";
+ field public static final String MONTH_DAY = "MMMMd";
field public static final int MONTH_FIELD = 2; // 0x2
- field public static final java.lang.String MONTH_WEEKDAY_DAY = "MMMMEEEEd";
+ field public static final String MONTH_WEEKDAY_DAY = "MMMMEEEEd";
field public static final int NONE = -1; // 0xffffffff
- field public static final java.lang.String NUM_MONTH = "M";
- field public static final java.lang.String NUM_MONTH_DAY = "Md";
- field public static final java.lang.String NUM_MONTH_WEEKDAY_DAY = "MEd";
- field public static final java.lang.String QUARTER = "QQQQ";
+ field public static final String NUM_MONTH = "M";
+ field public static final String NUM_MONTH_DAY = "Md";
+ field public static final String NUM_MONTH_WEEKDAY_DAY = "MEd";
+ field public static final String QUARTER = "QQQQ";
field public static final int QUARTER_FIELD = 27; // 0x1b
field public static final int RELATIVE = 128; // 0x80
field public static final int RELATIVE_DEFAULT = 130; // 0x82
@@ -19697,10 +19682,10 @@
field public static final int RELATIVE_LONG = 129; // 0x81
field public static final int RELATIVE_MEDIUM = 130; // 0x82
field public static final int RELATIVE_SHORT = 131; // 0x83
- field public static final java.lang.String SECOND = "s";
+ field public static final String SECOND = "s";
field public static final int SECOND_FIELD = 7; // 0x7
field public static final int SHORT = 3; // 0x3
- field public static final java.lang.String SPECIFIC_TZ = "zzzz";
+ field public static final String SPECIFIC_TZ = "zzzz";
field public static final int STANDALONE_DAY_FIELD = 25; // 0x19
field public static final int STANDALONE_MONTH_FIELD = 26; // 0x1a
field public static final int STANDALONE_QUARTER_FIELD = 28; // 0x1c
@@ -19711,31 +19696,29 @@
field public static final int TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD = 31; // 0x1f
field public static final int TIMEZONE_RFC_FIELD = 23; // 0x17
field public static final int TIMEZONE_SPECIAL_FIELD = 29; // 0x1d
- field public static final java.lang.String WEEKDAY = "EEEE";
+ field public static final String WEEKDAY = "EEEE";
field public static final int WEEK_OF_MONTH_FIELD = 13; // 0xd
field public static final int WEEK_OF_YEAR_FIELD = 12; // 0xc
- field public static final java.lang.String YEAR = "y";
- field public static final java.lang.String YEAR_ABBR_MONTH = "yMMM";
- field public static final java.lang.String YEAR_ABBR_MONTH_DAY = "yMMMd";
- field public static final java.lang.String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd";
- field public static final java.lang.String YEAR_ABBR_QUARTER = "yQQQ";
+ field public static final String YEAR = "y";
+ field public static final String YEAR_ABBR_MONTH = "yMMM";
+ field public static final String YEAR_ABBR_MONTH_DAY = "yMMMd";
+ field public static final String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd";
+ field public static final String YEAR_ABBR_QUARTER = "yQQQ";
field public static final int YEAR_FIELD = 1; // 0x1
- field public static final java.lang.String YEAR_MONTH = "yMMMM";
- field public static final java.lang.String YEAR_MONTH_DAY = "yMMMMd";
- field public static final java.lang.String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd";
+ field public static final String YEAR_MONTH = "yMMMM";
+ field public static final String YEAR_MONTH_DAY = "yMMMMd";
+ field public static final String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd";
field public static final int YEAR_NAME_FIELD = 30; // 0x1e
- field public static final java.lang.String YEAR_NUM_MONTH = "yM";
- field public static final java.lang.String YEAR_NUM_MONTH_DAY = "yMd";
- field public static final java.lang.String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd";
- field public static final java.lang.String YEAR_QUARTER = "yQQQQ";
+ field public static final String YEAR_NUM_MONTH = "yM";
+ field public static final String YEAR_NUM_MONTH_DAY = "yMd";
+ field public static final String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd";
+ field public static final String YEAR_QUARTER = "yQQQQ";
field public static final int YEAR_WOY_FIELD = 18; // 0x12
field protected android.icu.util.Calendar calendar;
field protected android.icu.text.NumberFormat numberFormat;
}
- public static final class DateFormat.BooleanAttribute extends java.lang.Enum {
- method public static android.icu.text.DateFormat.BooleanAttribute valueOf(java.lang.String);
- method public static final android.icu.text.DateFormat.BooleanAttribute[] values();
+ public enum DateFormat.BooleanAttribute {
enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_ALLOW_NUMERIC;
enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_ALLOW_WHITESPACE;
enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_MULTIPLE_PATTERNS_FOR_MATCH;
@@ -19743,7 +19726,7 @@
}
public static class DateFormat.Field extends java.text.Format.Field {
- ctor protected DateFormat.Field(java.lang.String, int);
+ ctor protected DateFormat.Field(String, int);
method public int getCalendarField();
method public static android.icu.text.DateFormat.Field ofCalendarField(int);
field public static final android.icu.text.DateFormat.Field AM_PM;
@@ -19780,44 +19763,44 @@
ctor public DateFormatSymbols(android.icu.util.ULocale);
ctor public DateFormatSymbols(android.icu.util.Calendar, java.util.Locale);
ctor public DateFormatSymbols(android.icu.util.Calendar, android.icu.util.ULocale);
- ctor public DateFormatSymbols(java.lang.Class<? extends android.icu.util.Calendar>, java.util.Locale);
- ctor public DateFormatSymbols(java.lang.Class<? extends android.icu.util.Calendar>, android.icu.util.ULocale);
+ ctor public DateFormatSymbols(Class<? extends android.icu.util.Calendar>, java.util.Locale);
+ ctor public DateFormatSymbols(Class<? extends android.icu.util.Calendar>, android.icu.util.ULocale);
ctor public DateFormatSymbols(java.util.ResourceBundle, java.util.Locale);
ctor public DateFormatSymbols(java.util.ResourceBundle, android.icu.util.ULocale);
- method public java.lang.Object clone();
- method public java.lang.String[] getAmPmStrings();
+ method public Object clone();
+ method public String[] getAmPmStrings();
method public static java.util.Locale[] getAvailableLocales();
- method public java.lang.String[] getEraNames();
- method public java.lang.String[] getEras();
+ method public String[] getEraNames();
+ method public String[] getEras();
method public static android.icu.text.DateFormatSymbols getInstance();
method public static android.icu.text.DateFormatSymbols getInstance(java.util.Locale);
method public static android.icu.text.DateFormatSymbols getInstance(android.icu.util.ULocale);
- method public java.lang.String getLocalPatternChars();
- method public java.lang.String[] getMonths();
- method public java.lang.String[] getMonths(int, int);
- method public java.lang.String[] getQuarters(int, int);
- method public java.lang.String[] getShortMonths();
- method public java.lang.String[] getShortWeekdays();
- method public java.lang.String[] getWeekdays();
- method public java.lang.String[] getWeekdays(int, int);
- method public java.lang.String[] getYearNames(int, int);
- method public java.lang.String[] getZodiacNames(int, int);
- method public java.lang.String[][] getZoneStrings();
- method protected void initializeData(android.icu.util.ULocale, java.lang.String);
- method public void setAmPmStrings(java.lang.String[]);
- method public void setEraNames(java.lang.String[]);
- method public void setEras(java.lang.String[]);
- method public void setLocalPatternChars(java.lang.String);
- method public void setMonths(java.lang.String[]);
- method public void setMonths(java.lang.String[], int, int);
- method public void setQuarters(java.lang.String[], int, int);
- method public void setShortMonths(java.lang.String[]);
- method public void setShortWeekdays(java.lang.String[]);
- method public void setWeekdays(java.lang.String[], int, int);
- method public void setWeekdays(java.lang.String[]);
- method public void setYearNames(java.lang.String[], int, int);
- method public void setZodiacNames(java.lang.String[], int, int);
- method public void setZoneStrings(java.lang.String[][]);
+ method public String getLocalPatternChars();
+ method public String[] getMonths();
+ method public String[] getMonths(int, int);
+ method public String[] getQuarters(int, int);
+ method public String[] getShortMonths();
+ method public String[] getShortWeekdays();
+ method public String[] getWeekdays();
+ method public String[] getWeekdays(int, int);
+ method public String[] getYearNames(int, int);
+ method public String[] getZodiacNames(int, int);
+ method public String[][] getZoneStrings();
+ method protected void initializeData(android.icu.util.ULocale, String);
+ method public void setAmPmStrings(String[]);
+ method public void setEraNames(String[]);
+ method public void setEras(String[]);
+ method public void setLocalPatternChars(String);
+ method public void setMonths(String[]);
+ method public void setMonths(String[], int, int);
+ method public void setQuarters(String[], int, int);
+ method public void setShortMonths(String[]);
+ method public void setShortWeekdays(String[]);
+ method public void setWeekdays(String[], int, int);
+ method public void setWeekdays(String[]);
+ method public void setYearNames(String[], int, int);
+ method public void setZodiacNames(String[], int, int);
+ method public void setZoneStrings(String[][]);
field public static final int ABBREVIATED = 0; // 0x0
field public static final int FORMAT = 0; // 0x0
field public static final int NARROW = 2; // 0x2
@@ -19827,72 +19810,71 @@
}
public class DateIntervalFormat extends android.icu.text.UFormat {
- method public synchronized java.lang.Object clone();
- method public final java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public final synchronized java.lang.StringBuffer format(android.icu.util.DateInterval, java.lang.StringBuffer, java.text.FieldPosition);
- method public final synchronized java.lang.StringBuffer format(android.icu.util.Calendar, android.icu.util.Calendar, java.lang.StringBuffer, java.text.FieldPosition);
- method public synchronized android.icu.text.DateFormat getDateFormat();
+ method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+ method public final StringBuffer format(android.icu.util.DateInterval, StringBuffer, java.text.FieldPosition);
+ method public final StringBuffer format(android.icu.util.Calendar, android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
+ method public android.icu.text.DateFormat getDateFormat();
method public android.icu.text.DateIntervalInfo getDateIntervalInfo();
- method public static final android.icu.text.DateIntervalFormat getInstance(java.lang.String);
- method public static final android.icu.text.DateIntervalFormat getInstance(java.lang.String, java.util.Locale);
- method public static final android.icu.text.DateIntervalFormat getInstance(java.lang.String, android.icu.util.ULocale);
- method public static final android.icu.text.DateIntervalFormat getInstance(java.lang.String, android.icu.text.DateIntervalInfo);
- method public static final android.icu.text.DateIntervalFormat getInstance(java.lang.String, java.util.Locale, android.icu.text.DateIntervalInfo);
- method public static final android.icu.text.DateIntervalFormat getInstance(java.lang.String, android.icu.util.ULocale, android.icu.text.DateIntervalInfo);
+ method public static final android.icu.text.DateIntervalFormat getInstance(String);
+ method public static final android.icu.text.DateIntervalFormat getInstance(String, java.util.Locale);
+ method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.util.ULocale);
+ method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.text.DateIntervalInfo);
+ method public static final android.icu.text.DateIntervalFormat getInstance(String, java.util.Locale, android.icu.text.DateIntervalInfo);
+ method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.util.ULocale, android.icu.text.DateIntervalInfo);
method public android.icu.util.TimeZone getTimeZone();
- method public deprecated java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
+ method @Deprecated public Object parseObject(String, java.text.ParsePosition);
method public void setDateIntervalInfo(android.icu.text.DateIntervalInfo);
method public void setTimeZone(android.icu.util.TimeZone);
}
- public class DateIntervalInfo implements java.lang.Cloneable android.icu.util.Freezable java.io.Serializable {
+ public class DateIntervalInfo implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateIntervalInfo> java.io.Serializable {
ctor public DateIntervalInfo(android.icu.util.ULocale);
ctor public DateIntervalInfo(java.util.Locale);
- method public java.lang.Object clone();
+ method public Object clone();
method public android.icu.text.DateIntervalInfo cloneAsThawed();
method public android.icu.text.DateIntervalInfo freeze();
method public boolean getDefaultOrder();
- method public java.lang.String getFallbackIntervalPattern();
- method public android.icu.text.DateIntervalInfo.PatternInfo getIntervalPattern(java.lang.String, int);
+ method public String getFallbackIntervalPattern();
+ method public android.icu.text.DateIntervalInfo.PatternInfo getIntervalPattern(String, int);
method public boolean isFrozen();
- method public void setFallbackIntervalPattern(java.lang.String);
- method public void setIntervalPattern(java.lang.String, int, java.lang.String);
+ method public void setFallbackIntervalPattern(String);
+ method public void setIntervalPattern(String, int, String);
}
public static final class DateIntervalInfo.PatternInfo implements java.lang.Cloneable java.io.Serializable {
- ctor public DateIntervalInfo.PatternInfo(java.lang.String, java.lang.String, boolean);
+ ctor public DateIntervalInfo.PatternInfo(String, String, boolean);
method public boolean firstDateInPtnIsLaterDate();
- method public java.lang.String getFirstPart();
- method public java.lang.String getSecondPart();
+ method public String getFirstPart();
+ method public String getSecondPart();
}
- public class DateTimePatternGenerator implements java.lang.Cloneable android.icu.util.Freezable {
+ public class DateTimePatternGenerator implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateTimePatternGenerator> {
ctor protected DateTimePatternGenerator();
- method public android.icu.text.DateTimePatternGenerator addPattern(java.lang.String, boolean, android.icu.text.DateTimePatternGenerator.PatternInfo);
- method public java.lang.Object clone();
+ method public android.icu.text.DateTimePatternGenerator addPattern(String, boolean, android.icu.text.DateTimePatternGenerator.PatternInfo);
+ method public Object clone();
method public android.icu.text.DateTimePatternGenerator cloneAsThawed();
method public android.icu.text.DateTimePatternGenerator freeze();
- method public java.lang.String getAppendItemFormat(int);
- method public java.lang.String getAppendItemName(int);
- method public java.lang.String getBaseSkeleton(java.lang.String);
+ method public String getAppendItemFormat(int);
+ method public String getAppendItemName(int);
+ method public String getBaseSkeleton(String);
method public java.util.Set<java.lang.String> getBaseSkeletons(java.util.Set<java.lang.String>);
- method public java.lang.String getBestPattern(java.lang.String);
- method public java.lang.String getBestPattern(java.lang.String, int);
- method public java.lang.String getDateTimeFormat();
- method public java.lang.String getDecimal();
+ method public String getBestPattern(String);
+ method public String getBestPattern(String, int);
+ method public String getDateTimeFormat();
+ method public String getDecimal();
method public static android.icu.text.DateTimePatternGenerator getEmptyInstance();
method public static android.icu.text.DateTimePatternGenerator getInstance();
method public static android.icu.text.DateTimePatternGenerator getInstance(android.icu.util.ULocale);
method public static android.icu.text.DateTimePatternGenerator getInstance(java.util.Locale);
- method public java.lang.String getSkeleton(java.lang.String);
- method public java.util.Map<java.lang.String, java.lang.String> getSkeletons(java.util.Map<java.lang.String, java.lang.String>);
+ method public String getSkeleton(String);
+ method public java.util.Map<java.lang.String,java.lang.String> getSkeletons(java.util.Map<java.lang.String,java.lang.String>);
method public boolean isFrozen();
- method public java.lang.String replaceFieldTypes(java.lang.String, java.lang.String);
- method public java.lang.String replaceFieldTypes(java.lang.String, java.lang.String, int);
- method public void setAppendItemFormat(int, java.lang.String);
- method public void setAppendItemName(int, java.lang.String);
- method public void setDateTimeFormat(java.lang.String);
- method public void setDecimal(java.lang.String);
+ method public String replaceFieldTypes(String, String);
+ method public String replaceFieldTypes(String, String, int);
+ method public void setAppendItemFormat(int, String);
+ method public void setAppendItemName(int, String);
+ method public void setDateTimeFormat(String);
+ method public void setDecimal(String);
field public static final int DAY = 7; // 0x7
field public static final int DAYPERIOD = 10; // 0xa
field public static final int DAY_OF_WEEK_IN_MONTH = 9; // 0x9
@@ -19919,99 +19901,79 @@
field public static final int BASE_CONFLICT = 1; // 0x1
field public static final int CONFLICT = 2; // 0x2
field public static final int OK = 0; // 0x0
- field public java.lang.String conflictingPattern;
+ field public String conflictingPattern;
field public int status;
}
public class DecimalFormat extends android.icu.text.NumberFormat {
ctor public DecimalFormat();
- ctor public DecimalFormat(java.lang.String);
- ctor public DecimalFormat(java.lang.String, android.icu.text.DecimalFormatSymbols);
- ctor public DecimalFormat(java.lang.String, android.icu.text.DecimalFormatSymbols, android.icu.text.CurrencyPluralInfo, int);
- method public synchronized void applyLocalizedPattern(java.lang.String);
- method public synchronized void applyPattern(java.lang.String);
- method public synchronized boolean areSignificantDigitsUsed();
- method public synchronized boolean equals(java.lang.Object);
- method public java.lang.StringBuffer format(double, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuffer format(long, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuffer format(java.math.BigInteger, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuffer format(java.math.BigDecimal, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuffer format(android.icu.math.BigDecimal, java.lang.StringBuffer, java.text.FieldPosition);
- method public synchronized android.icu.util.Currency getCurrency();
- method public synchronized android.icu.text.CurrencyPluralInfo getCurrencyPluralInfo();
- method public synchronized android.icu.util.Currency.CurrencyUsage getCurrencyUsage();
- method public synchronized android.icu.text.DecimalFormatSymbols getDecimalFormatSymbols();
- method public synchronized int getFormatWidth();
- method public synchronized int getGroupingSize();
- method public synchronized java.math.MathContext getMathContext();
- method public synchronized android.icu.math.MathContext getMathContextICU();
- method public synchronized int getMaximumFractionDigits();
- method public synchronized int getMaximumIntegerDigits();
- method public synchronized int getMaximumSignificantDigits();
- method public synchronized byte getMinimumExponentDigits();
- method public synchronized int getMinimumFractionDigits();
- method public synchronized int getMinimumIntegerDigits();
- method public synchronized int getMinimumSignificantDigits();
- method public synchronized int getMultiplier();
- method public synchronized java.lang.String getNegativePrefix();
- method public synchronized java.lang.String getNegativeSuffix();
- method public synchronized char getPadCharacter();
- method public synchronized int getPadPosition();
- method public deprecated int getParseMaxDigits();
- method public synchronized java.lang.String getPositivePrefix();
- method public synchronized java.lang.String getPositiveSuffix();
- method public synchronized java.math.BigDecimal getRoundingIncrement();
- method public synchronized int getRoundingMode();
- method public synchronized int getSecondaryGroupingSize();
- method public synchronized int hashCode();
- method public synchronized boolean isDecimalPatternMatchRequired();
- method public synchronized boolean isDecimalSeparatorAlwaysShown();
- method public synchronized boolean isExponentSignAlwaysShown();
- method public synchronized boolean isGroupingUsed();
- method public synchronized boolean isParseBigDecimal();
- method public synchronized boolean isParseIntegerOnly();
- method public synchronized boolean isParseStrict();
- method public synchronized boolean isScientificNotation();
- method public java.lang.Number parse(java.lang.String, java.text.ParsePosition);
- method public synchronized void setCurrency(android.icu.util.Currency);
- method public synchronized void setCurrencyPluralInfo(android.icu.text.CurrencyPluralInfo);
- method public synchronized void setCurrencyUsage(android.icu.util.Currency.CurrencyUsage);
- method public synchronized void setDecimalFormatSymbols(android.icu.text.DecimalFormatSymbols);
- method public synchronized void setDecimalPatternMatchRequired(boolean);
- method public synchronized void setDecimalSeparatorAlwaysShown(boolean);
- method public synchronized void setExponentSignAlwaysShown(boolean);
- method public synchronized void setFormatWidth(int);
- method public synchronized void setGroupingSize(int);
- method public synchronized void setGroupingUsed(boolean);
- method public synchronized void setMathContext(java.math.MathContext);
- method public synchronized void setMathContextICU(android.icu.math.MathContext);
- method public synchronized void setMaximumFractionDigits(int);
- method public synchronized void setMaximumIntegerDigits(int);
- method public synchronized void setMaximumSignificantDigits(int);
- method public synchronized void setMinimumExponentDigits(byte);
- method public synchronized void setMinimumFractionDigits(int);
- method public synchronized void setMinimumIntegerDigits(int);
- method public synchronized void setMinimumSignificantDigits(int);
- method public synchronized void setMultiplier(int);
- method public synchronized void setNegativePrefix(java.lang.String);
- method public synchronized void setNegativeSuffix(java.lang.String);
- method public synchronized void setPadCharacter(char);
- method public synchronized void setPadPosition(int);
- method public synchronized void setParseBigDecimal(boolean);
- method public synchronized void setParseIntegerOnly(boolean);
- method public deprecated void setParseMaxDigits(int);
- method public synchronized void setParseStrict(boolean);
- method public synchronized void setPositivePrefix(java.lang.String);
- method public synchronized void setPositiveSuffix(java.lang.String);
- method public synchronized void setRoundingIncrement(java.math.BigDecimal);
- method public synchronized void setRoundingIncrement(android.icu.math.BigDecimal);
- method public synchronized void setRoundingIncrement(double);
- method public synchronized void setRoundingMode(int);
- method public synchronized void setScientificNotation(boolean);
- method public synchronized void setSecondaryGroupingSize(int);
- method public synchronized void setSignificantDigitsUsed(boolean);
- method public synchronized java.lang.String toLocalizedPattern();
- method public synchronized java.lang.String toPattern();
+ ctor public DecimalFormat(String);
+ ctor public DecimalFormat(String, android.icu.text.DecimalFormatSymbols);
+ ctor public DecimalFormat(String, android.icu.text.DecimalFormatSymbols, android.icu.text.CurrencyPluralInfo, int);
+ method public void applyLocalizedPattern(String);
+ method public void applyPattern(String);
+ method public boolean areSignificantDigitsUsed();
+ method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(java.math.BigInteger, StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(java.math.BigDecimal, StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(android.icu.math.BigDecimal, StringBuffer, java.text.FieldPosition);
+ method public android.icu.text.CurrencyPluralInfo getCurrencyPluralInfo();
+ method public android.icu.util.Currency.CurrencyUsage getCurrencyUsage();
+ method public android.icu.text.DecimalFormatSymbols getDecimalFormatSymbols();
+ method public int getFormatWidth();
+ method public int getGroupingSize();
+ method public java.math.MathContext getMathContext();
+ method public android.icu.math.MathContext getMathContextICU();
+ method public int getMaximumSignificantDigits();
+ method public byte getMinimumExponentDigits();
+ method public int getMinimumSignificantDigits();
+ method public int getMultiplier();
+ method public String getNegativePrefix();
+ method public String getNegativeSuffix();
+ method public char getPadCharacter();
+ method public int getPadPosition();
+ method @Deprecated public int getParseMaxDigits();
+ method public String getPositivePrefix();
+ method public String getPositiveSuffix();
+ method public java.math.BigDecimal getRoundingIncrement();
+ method public int getSecondaryGroupingSize();
+ method public boolean isDecimalPatternMatchRequired();
+ method public boolean isDecimalSeparatorAlwaysShown();
+ method public boolean isExponentSignAlwaysShown();
+ method public boolean isParseBigDecimal();
+ method public boolean isScientificNotation();
+ method public Number parse(String, java.text.ParsePosition);
+ method public void setCurrencyPluralInfo(android.icu.text.CurrencyPluralInfo);
+ method public void setCurrencyUsage(android.icu.util.Currency.CurrencyUsage);
+ method public void setDecimalFormatSymbols(android.icu.text.DecimalFormatSymbols);
+ method public void setDecimalPatternMatchRequired(boolean);
+ method public void setDecimalSeparatorAlwaysShown(boolean);
+ method public void setExponentSignAlwaysShown(boolean);
+ method public void setFormatWidth(int);
+ method public void setGroupingSize(int);
+ method public void setMathContext(java.math.MathContext);
+ method public void setMathContextICU(android.icu.math.MathContext);
+ method public void setMaximumSignificantDigits(int);
+ method public void setMinimumExponentDigits(byte);
+ method public void setMinimumSignificantDigits(int);
+ method public void setMultiplier(int);
+ method public void setNegativePrefix(String);
+ method public void setNegativeSuffix(String);
+ method public void setPadCharacter(char);
+ method public void setPadPosition(int);
+ method public void setParseBigDecimal(boolean);
+ method @Deprecated public void setParseMaxDigits(int);
+ method public void setPositivePrefix(String);
+ method public void setPositiveSuffix(String);
+ method public void setRoundingIncrement(java.math.BigDecimal);
+ method public void setRoundingIncrement(android.icu.math.BigDecimal);
+ method public void setRoundingIncrement(double);
+ method public void setScientificNotation(boolean);
+ method public void setSecondaryGroupingSize(int);
+ method public void setSignificantDigitsUsed(boolean);
+ method public String toLocalizedPattern();
+ method public String toPattern();
field public static final int PAD_AFTER_PREFIX = 1; // 0x1
field public static final int PAD_AFTER_SUFFIX = 3; // 0x3
field public static final int PAD_BEFORE_PREFIX = 0; // 0x0
@@ -20022,74 +19984,74 @@
ctor public DecimalFormatSymbols();
ctor public DecimalFormatSymbols(java.util.Locale);
ctor public DecimalFormatSymbols(android.icu.util.ULocale);
- method public java.lang.Object clone();
+ method public Object clone();
method public static android.icu.text.DecimalFormatSymbols forNumberingSystem(java.util.Locale, android.icu.text.NumberingSystem);
method public static android.icu.text.DecimalFormatSymbols forNumberingSystem(android.icu.util.ULocale, android.icu.text.NumberingSystem);
method public static java.util.Locale[] getAvailableLocales();
method public android.icu.util.Currency getCurrency();
- method public java.lang.String getCurrencySymbol();
+ method public String getCurrencySymbol();
method public char getDecimalSeparator();
- method public java.lang.String getDecimalSeparatorString();
+ method public String getDecimalSeparatorString();
method public char getDigit();
- method public java.lang.String[] getDigitStrings();
+ method public String[] getDigitStrings();
method public char[] getDigits();
- method public java.lang.String getExponentMultiplicationSign();
- method public java.lang.String getExponentSeparator();
+ method public String getExponentMultiplicationSign();
+ method public String getExponentSeparator();
method public char getGroupingSeparator();
- method public java.lang.String getGroupingSeparatorString();
- method public java.lang.String getInfinity();
+ method public String getGroupingSeparatorString();
+ method public String getInfinity();
method public static android.icu.text.DecimalFormatSymbols getInstance();
method public static android.icu.text.DecimalFormatSymbols getInstance(java.util.Locale);
method public static android.icu.text.DecimalFormatSymbols getInstance(android.icu.util.ULocale);
- method public java.lang.String getInternationalCurrencySymbol();
+ method public String getInternationalCurrencySymbol();
method public java.util.Locale getLocale();
method public char getMinusSign();
- method public java.lang.String getMinusSignString();
+ method public String getMinusSignString();
method public char getMonetaryDecimalSeparator();
- method public java.lang.String getMonetaryDecimalSeparatorString();
+ method public String getMonetaryDecimalSeparatorString();
method public char getMonetaryGroupingSeparator();
- method public java.lang.String getMonetaryGroupingSeparatorString();
- method public java.lang.String getNaN();
+ method public String getMonetaryGroupingSeparatorString();
+ method public String getNaN();
method public char getPadEscape();
- method public java.lang.String getPatternForCurrencySpacing(int, boolean);
+ method public String getPatternForCurrencySpacing(int, boolean);
method public char getPatternSeparator();
method public char getPerMill();
- method public java.lang.String getPerMillString();
+ method public String getPerMillString();
method public char getPercent();
- method public java.lang.String getPercentString();
+ method public String getPercentString();
method public char getPlusSign();
- method public java.lang.String getPlusSignString();
+ method public String getPlusSignString();
method public char getSignificantDigit();
method public android.icu.util.ULocale getULocale();
method public char getZeroDigit();
method public void setCurrency(android.icu.util.Currency);
- method public void setCurrencySymbol(java.lang.String);
+ method public void setCurrencySymbol(String);
method public void setDecimalSeparator(char);
- method public void setDecimalSeparatorString(java.lang.String);
+ method public void setDecimalSeparatorString(String);
method public void setDigit(char);
- method public void setDigitStrings(java.lang.String[]);
- method public void setExponentMultiplicationSign(java.lang.String);
- method public void setExponentSeparator(java.lang.String);
+ method public void setDigitStrings(String[]);
+ method public void setExponentMultiplicationSign(String);
+ method public void setExponentSeparator(String);
method public void setGroupingSeparator(char);
- method public void setGroupingSeparatorString(java.lang.String);
- method public void setInfinity(java.lang.String);
- method public void setInternationalCurrencySymbol(java.lang.String);
+ method public void setGroupingSeparatorString(String);
+ method public void setInfinity(String);
+ method public void setInternationalCurrencySymbol(String);
method public void setMinusSign(char);
- method public void setMinusSignString(java.lang.String);
+ method public void setMinusSignString(String);
method public void setMonetaryDecimalSeparator(char);
- method public void setMonetaryDecimalSeparatorString(java.lang.String);
+ method public void setMonetaryDecimalSeparatorString(String);
method public void setMonetaryGroupingSeparator(char);
- method public void setMonetaryGroupingSeparatorString(java.lang.String);
- method public void setNaN(java.lang.String);
+ method public void setMonetaryGroupingSeparatorString(String);
+ method public void setNaN(String);
method public void setPadEscape(char);
- method public void setPatternForCurrencySpacing(int, boolean, java.lang.String);
+ method public void setPatternForCurrencySpacing(int, boolean, String);
method public void setPatternSeparator(char);
method public void setPerMill(char);
- method public void setPerMillString(java.lang.String);
+ method public void setPerMillString(String);
method public void setPercent(char);
- method public void setPercentString(java.lang.String);
+ method public void setPercentString(String);
method public void setPlusSign(char);
- method public void setPlusSignString(java.lang.String);
+ method public void setPlusSignString(String);
method public void setSignificantDigit(char);
method public void setZeroDigit(char);
field public static final int CURRENCY_SPC_CURRENCY_MATCH = 0; // 0x0
@@ -20097,11 +20059,9 @@
field public static final int CURRENCY_SPC_SURROUNDING_MATCH = 1; // 0x1
}
- public final class DisplayContext extends java.lang.Enum {
+ public enum DisplayContext {
method public android.icu.text.DisplayContext.Type type();
method public int value();
- method public static android.icu.text.DisplayContext valueOf(java.lang.String);
- method public static final android.icu.text.DisplayContext[] values();
enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE;
enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE;
enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_STANDALONE;
@@ -20115,9 +20075,7 @@
enum_constant public static final android.icu.text.DisplayContext SUBSTITUTE;
}
- public static final class DisplayContext.Type extends java.lang.Enum {
- method public static android.icu.text.DisplayContext.Type valueOf(java.lang.String);
- method public static final android.icu.text.DisplayContext.Type[] values();
+ public enum DisplayContext.Type {
enum_constant public static final android.icu.text.DisplayContext.Type CAPITALIZATION;
enum_constant public static final android.icu.text.DisplayContext.Type DIALECT_HANDLING;
enum_constant public static final android.icu.text.DisplayContext.Type DISPLAY_LENGTH;
@@ -20155,10 +20113,10 @@
public abstract class IDNA {
method public static android.icu.text.IDNA getUTS46Instance(int);
- method public abstract java.lang.StringBuilder labelToASCII(java.lang.CharSequence, java.lang.StringBuilder, android.icu.text.IDNA.Info);
- method public abstract java.lang.StringBuilder labelToUnicode(java.lang.CharSequence, java.lang.StringBuilder, android.icu.text.IDNA.Info);
- method public abstract java.lang.StringBuilder nameToASCII(java.lang.CharSequence, java.lang.StringBuilder, android.icu.text.IDNA.Info);
- method public abstract java.lang.StringBuilder nameToUnicode(java.lang.CharSequence, java.lang.StringBuilder, android.icu.text.IDNA.Info);
+ method public abstract StringBuilder labelToASCII(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
+ method public abstract StringBuilder labelToUnicode(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
+ method public abstract StringBuilder nameToASCII(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
+ method public abstract StringBuilder nameToUnicode(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
field public static final int CHECK_BIDI = 4; // 0x4
field public static final int CHECK_CONTEXTJ = 8; // 0x8
field public static final int CHECK_CONTEXTO = 64; // 0x40
@@ -20168,9 +20126,7 @@
field public static final int USE_STD3_RULES = 2; // 0x2
}
- public static final class IDNA.Error extends java.lang.Enum {
- method public static android.icu.text.IDNA.Error valueOf(java.lang.String);
- method public static final android.icu.text.IDNA.Error[] values();
+ public enum IDNA.Error {
enum_constant public static final android.icu.text.IDNA.Error BIDI;
enum_constant public static final android.icu.text.IDNA.Error CONTEXTJ;
enum_constant public static final android.icu.text.IDNA.Error CONTEXTO_DIGITS;
@@ -20196,12 +20152,12 @@
}
public final class ListFormatter {
- method public java.lang.String format(java.lang.Object...);
- method public java.lang.String format(java.util.Collection<?>);
+ method public String format(java.lang.Object...);
+ method public String format(java.util.Collection<?>);
method public static android.icu.text.ListFormatter getInstance(android.icu.util.ULocale);
method public static android.icu.text.ListFormatter getInstance(java.util.Locale);
method public static android.icu.text.ListFormatter getInstance();
- method public java.lang.String getPatternForNumItems(int);
+ method public String getPatternForNumItems(int);
}
public abstract class LocaleDisplayNames {
@@ -20215,40 +20171,38 @@
method public abstract android.icu.util.ULocale getLocale();
method public java.util.List<android.icu.text.LocaleDisplayNames.UiListItem> getUiList(java.util.Set<android.icu.util.ULocale>, boolean, java.util.Comparator<java.lang.Object>);
method public abstract java.util.List<android.icu.text.LocaleDisplayNames.UiListItem> getUiListCompareWholeItems(java.util.Set<android.icu.util.ULocale>, java.util.Comparator<android.icu.text.LocaleDisplayNames.UiListItem>);
- method public abstract java.lang.String keyDisplayName(java.lang.String);
- method public abstract java.lang.String keyValueDisplayName(java.lang.String, java.lang.String);
- method public abstract java.lang.String languageDisplayName(java.lang.String);
- method public abstract java.lang.String localeDisplayName(android.icu.util.ULocale);
- method public abstract java.lang.String localeDisplayName(java.util.Locale);
- method public abstract java.lang.String localeDisplayName(java.lang.String);
- method public abstract java.lang.String regionDisplayName(java.lang.String);
- method public abstract java.lang.String scriptDisplayName(java.lang.String);
- method public abstract java.lang.String scriptDisplayName(int);
- method public abstract java.lang.String variantDisplayName(java.lang.String);
+ method public abstract String keyDisplayName(String);
+ method public abstract String keyValueDisplayName(String, String);
+ method public abstract String languageDisplayName(String);
+ method public abstract String localeDisplayName(android.icu.util.ULocale);
+ method public abstract String localeDisplayName(java.util.Locale);
+ method public abstract String localeDisplayName(String);
+ method public abstract String regionDisplayName(String);
+ method public abstract String scriptDisplayName(String);
+ method public abstract String scriptDisplayName(int);
+ method public abstract String variantDisplayName(String);
}
- public static final class LocaleDisplayNames.DialectHandling extends java.lang.Enum {
- method public static android.icu.text.LocaleDisplayNames.DialectHandling valueOf(java.lang.String);
- method public static final android.icu.text.LocaleDisplayNames.DialectHandling[] values();
+ public enum LocaleDisplayNames.DialectHandling {
enum_constant public static final android.icu.text.LocaleDisplayNames.DialectHandling DIALECT_NAMES;
enum_constant public static final android.icu.text.LocaleDisplayNames.DialectHandling STANDARD_NAMES;
}
public static class LocaleDisplayNames.UiListItem {
- ctor public LocaleDisplayNames.UiListItem(android.icu.util.ULocale, android.icu.util.ULocale, java.lang.String, java.lang.String);
+ ctor public LocaleDisplayNames.UiListItem(android.icu.util.ULocale, android.icu.util.ULocale, String, String);
method public static java.util.Comparator<android.icu.text.LocaleDisplayNames.UiListItem> getComparator(java.util.Comparator<java.lang.Object>, boolean);
field public final android.icu.util.ULocale minimized;
field public final android.icu.util.ULocale modified;
- field public final java.lang.String nameInDisplayLocale;
- field public final java.lang.String nameInSelf;
+ field public final String nameInDisplayLocale;
+ field public final String nameInSelf;
}
public class MeasureFormat extends android.icu.text.UFormat {
- method public final boolean equals(java.lang.Object);
- method public java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuilder formatMeasurePerUnit(android.icu.util.Measure, android.icu.util.MeasureUnit, java.lang.StringBuilder, java.text.FieldPosition);
- method public final java.lang.String formatMeasures(android.icu.util.Measure...);
- method public java.lang.StringBuilder formatMeasures(java.lang.StringBuilder, java.text.FieldPosition, android.icu.util.Measure...);
+ method public final boolean equals(Object);
+ method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+ method public StringBuilder formatMeasurePerUnit(android.icu.util.Measure, android.icu.util.MeasureUnit, StringBuilder, java.text.FieldPosition);
+ method public final String formatMeasures(android.icu.util.Measure...);
+ method public StringBuilder formatMeasures(StringBuilder, java.text.FieldPosition, android.icu.util.Measure...);
method public static android.icu.text.MeasureFormat getCurrencyFormat(android.icu.util.ULocale);
method public static android.icu.text.MeasureFormat getCurrencyFormat(java.util.Locale);
method public static android.icu.text.MeasureFormat getCurrencyFormat();
@@ -20258,15 +20212,13 @@
method public static android.icu.text.MeasureFormat getInstance(java.util.Locale, android.icu.text.MeasureFormat.FormatWidth, android.icu.text.NumberFormat);
method public final android.icu.util.ULocale getLocale();
method public android.icu.text.NumberFormat getNumberFormat();
- method public java.lang.String getUnitDisplayName(android.icu.util.MeasureUnit);
+ method public String getUnitDisplayName(android.icu.util.MeasureUnit);
method public android.icu.text.MeasureFormat.FormatWidth getWidth();
method public final int hashCode();
- method public android.icu.util.Measure parseObject(java.lang.String, java.text.ParsePosition);
+ method public android.icu.util.Measure parseObject(String, java.text.ParsePosition);
}
- public static final class MeasureFormat.FormatWidth extends java.lang.Enum {
- method public static android.icu.text.MeasureFormat.FormatWidth valueOf(java.lang.String);
- method public static final android.icu.text.MeasureFormat.FormatWidth[] values();
+ public enum MeasureFormat.FormatWidth {
enum_constant public static final android.icu.text.MeasureFormat.FormatWidth NARROW;
enum_constant public static final android.icu.text.MeasureFormat.FormatWidth NUMERIC;
enum_constant public static final android.icu.text.MeasureFormat.FormatWidth SHORT;
@@ -20274,54 +20226,54 @@
}
public class MessageFormat extends android.icu.text.UFormat {
- ctor public MessageFormat(java.lang.String);
- ctor public MessageFormat(java.lang.String, java.util.Locale);
- ctor public MessageFormat(java.lang.String, android.icu.util.ULocale);
- method public void applyPattern(java.lang.String);
- method public void applyPattern(java.lang.String, android.icu.text.MessagePattern.ApostropheMode);
- method public static java.lang.String autoQuoteApostrophe(java.lang.String);
- method public final java.lang.StringBuffer format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition);
- method public final java.lang.StringBuffer format(java.util.Map<java.lang.String, java.lang.Object>, java.lang.StringBuffer, java.text.FieldPosition);
- method public static java.lang.String format(java.lang.String, java.lang.Object...);
- method public static java.lang.String format(java.lang.String, java.util.Map<java.lang.String, java.lang.Object>);
- method public final java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
+ ctor public MessageFormat(String);
+ ctor public MessageFormat(String, java.util.Locale);
+ ctor public MessageFormat(String, android.icu.util.ULocale);
+ method public void applyPattern(String);
+ method public void applyPattern(String, android.icu.text.MessagePattern.ApostropheMode);
+ method public static String autoQuoteApostrophe(String);
+ method public final StringBuffer format(Object[], StringBuffer, java.text.FieldPosition);
+ method public final StringBuffer format(java.util.Map<java.lang.String,java.lang.Object>, StringBuffer, java.text.FieldPosition);
+ method public static String format(String, java.lang.Object...);
+ method public static String format(String, java.util.Map<java.lang.String,java.lang.Object>);
+ method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
method public android.icu.text.MessagePattern.ApostropheMode getApostropheMode();
method public java.util.Set<java.lang.String> getArgumentNames();
- method public java.text.Format getFormatByArgumentName(java.lang.String);
+ method public java.text.Format getFormatByArgumentName(String);
method public java.text.Format[] getFormats();
method public java.text.Format[] getFormatsByArgumentIndex();
method public java.util.Locale getLocale();
method public android.icu.util.ULocale getULocale();
- method public java.lang.Object[] parse(java.lang.String, java.text.ParsePosition);
- method public java.lang.Object[] parse(java.lang.String) throws java.text.ParseException;
- method public java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
- method public java.util.Map<java.lang.String, java.lang.Object> parseToMap(java.lang.String, java.text.ParsePosition);
- method public java.util.Map<java.lang.String, java.lang.Object> parseToMap(java.lang.String) throws java.text.ParseException;
+ method public Object[] parse(String, java.text.ParsePosition);
+ method public Object[] parse(String) throws java.text.ParseException;
+ method public Object parseObject(String, java.text.ParsePosition);
+ method public java.util.Map<java.lang.String,java.lang.Object> parseToMap(String, java.text.ParsePosition);
+ method public java.util.Map<java.lang.String,java.lang.Object> parseToMap(String) throws java.text.ParseException;
method public void setFormat(int, java.text.Format);
method public void setFormatByArgumentIndex(int, java.text.Format);
- method public void setFormatByArgumentName(java.lang.String, java.text.Format);
+ method public void setFormatByArgumentName(String, java.text.Format);
method public void setFormats(java.text.Format[]);
method public void setFormatsByArgumentIndex(java.text.Format[]);
- method public void setFormatsByArgumentName(java.util.Map<java.lang.String, java.text.Format>);
+ method public void setFormatsByArgumentName(java.util.Map<java.lang.String,java.text.Format>);
method public void setLocale(java.util.Locale);
method public void setLocale(android.icu.util.ULocale);
- method public java.lang.String toPattern();
+ method public String toPattern();
method public boolean usesNamedArguments();
}
public static class MessageFormat.Field extends java.text.Format.Field {
- ctor protected MessageFormat.Field(java.lang.String);
+ ctor protected MessageFormat.Field(String);
field public static final android.icu.text.MessageFormat.Field ARGUMENT;
}
- public final class MessagePattern implements java.lang.Cloneable android.icu.util.Freezable {
+ public final class MessagePattern implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.MessagePattern> {
ctor public MessagePattern();
ctor public MessagePattern(android.icu.text.MessagePattern.ApostropheMode);
- ctor public MessagePattern(java.lang.String);
- method public java.lang.String autoQuoteApostropheDeep();
+ ctor public MessagePattern(String);
+ method public String autoQuoteApostropheDeep();
method public void clear();
method public void clearPatternAndSetApostropheMode(android.icu.text.MessagePattern.ApostropheMode);
- method public java.lang.Object clone();
+ method public Object clone();
method public android.icu.text.MessagePattern cloneAsThawed();
method public int countParts();
method public android.icu.text.MessagePattern freeze();
@@ -20331,34 +20283,30 @@
method public android.icu.text.MessagePattern.Part getPart(int);
method public android.icu.text.MessagePattern.Part.Type getPartType(int);
method public int getPatternIndex(int);
- method public java.lang.String getPatternString();
+ method public String getPatternString();
method public double getPluralOffset(int);
- method public java.lang.String getSubstring(android.icu.text.MessagePattern.Part);
+ method public String getSubstring(android.icu.text.MessagePattern.Part);
method public boolean hasNamedArguments();
method public boolean hasNumberedArguments();
method public boolean isFrozen();
- method public android.icu.text.MessagePattern parse(java.lang.String);
- method public android.icu.text.MessagePattern parseChoiceStyle(java.lang.String);
- method public android.icu.text.MessagePattern parsePluralStyle(java.lang.String);
- method public android.icu.text.MessagePattern parseSelectStyle(java.lang.String);
- method public boolean partSubstringMatches(android.icu.text.MessagePattern.Part, java.lang.String);
- method public static int validateArgumentName(java.lang.String);
+ method public android.icu.text.MessagePattern parse(String);
+ method public android.icu.text.MessagePattern parseChoiceStyle(String);
+ method public android.icu.text.MessagePattern parsePluralStyle(String);
+ method public android.icu.text.MessagePattern parseSelectStyle(String);
+ method public boolean partSubstringMatches(android.icu.text.MessagePattern.Part, String);
+ method public static int validateArgumentName(String);
field public static final int ARG_NAME_NOT_NUMBER = -1; // 0xffffffff
field public static final int ARG_NAME_NOT_VALID = -2; // 0xfffffffe
field public static final double NO_NUMERIC_VALUE = -1.23456789E8;
}
- public static final class MessagePattern.ApostropheMode extends java.lang.Enum {
- method public static android.icu.text.MessagePattern.ApostropheMode valueOf(java.lang.String);
- method public static final android.icu.text.MessagePattern.ApostropheMode[] values();
+ public enum MessagePattern.ApostropheMode {
enum_constant public static final android.icu.text.MessagePattern.ApostropheMode DOUBLE_OPTIONAL;
enum_constant public static final android.icu.text.MessagePattern.ApostropheMode DOUBLE_REQUIRED;
}
- public static final class MessagePattern.ArgType extends java.lang.Enum {
+ public enum MessagePattern.ArgType {
method public boolean hasPluralStyle();
- method public static android.icu.text.MessagePattern.ArgType valueOf(java.lang.String);
- method public static final android.icu.text.MessagePattern.ArgType[] values();
enum_constant public static final android.icu.text.MessagePattern.ArgType CHOICE;
enum_constant public static final android.icu.text.MessagePattern.ArgType NONE;
enum_constant public static final android.icu.text.MessagePattern.ArgType PLURAL;
@@ -20376,10 +20324,8 @@
method public int getValue();
}
- public static final class MessagePattern.Part.Type extends java.lang.Enum {
+ public enum MessagePattern.Part.Type {
method public boolean hasNumericValue();
- method public static android.icu.text.MessagePattern.Part.Type valueOf(java.lang.String);
- method public static final android.icu.text.MessagePattern.Part.Type[] values();
enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_DOUBLE;
enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_INT;
enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_LIMIT;
@@ -20397,12 +20343,12 @@
}
public final class Normalizer implements java.lang.Cloneable {
- method public deprecated java.lang.Object clone();
+ method @Deprecated public Object clone();
method public static int compare(char[], int, int, char[], int, int, int);
- method public static int compare(java.lang.String, java.lang.String, int);
+ method public static int compare(String, String, int);
method public static int compare(char[], char[], int);
method public static int compare(int, int, int);
- method public static int compare(int, java.lang.String, int);
+ method public static int compare(int, String, int);
field public static final int COMPARE_CODE_POINT_ORDER = 32768; // 0x8000
field public static final int COMPARE_IGNORE_CASE = 65536; // 0x10000
field public static final int FOLD_CASE_DEFAULT = 0; // 0x0
@@ -20417,32 +20363,30 @@
}
public abstract class Normalizer2 {
- method public abstract java.lang.StringBuilder append(java.lang.StringBuilder, java.lang.CharSequence);
+ method public abstract StringBuilder append(StringBuilder, CharSequence);
method public int composePair(int, int);
method public int getCombiningClass(int);
- method public abstract java.lang.String getDecomposition(int);
- method public static android.icu.text.Normalizer2 getInstance(java.io.InputStream, java.lang.String, android.icu.text.Normalizer2.Mode);
+ method public abstract String getDecomposition(int);
+ method public static android.icu.text.Normalizer2 getInstance(java.io.InputStream, String, android.icu.text.Normalizer2.Mode);
method public static android.icu.text.Normalizer2 getNFCInstance();
method public static android.icu.text.Normalizer2 getNFDInstance();
method public static android.icu.text.Normalizer2 getNFKCCasefoldInstance();
method public static android.icu.text.Normalizer2 getNFKCInstance();
method public static android.icu.text.Normalizer2 getNFKDInstance();
- method public java.lang.String getRawDecomposition(int);
+ method public String getRawDecomposition(int);
method public abstract boolean hasBoundaryAfter(int);
method public abstract boolean hasBoundaryBefore(int);
method public abstract boolean isInert(int);
- method public abstract boolean isNormalized(java.lang.CharSequence);
- method public java.lang.String normalize(java.lang.CharSequence);
- method public abstract java.lang.StringBuilder normalize(java.lang.CharSequence, java.lang.StringBuilder);
- method public abstract java.lang.Appendable normalize(java.lang.CharSequence, java.lang.Appendable);
- method public abstract java.lang.StringBuilder normalizeSecondAndAppend(java.lang.StringBuilder, java.lang.CharSequence);
- method public abstract android.icu.text.Normalizer.QuickCheckResult quickCheck(java.lang.CharSequence);
- method public abstract int spanQuickCheckYes(java.lang.CharSequence);
+ method public abstract boolean isNormalized(CharSequence);
+ method public String normalize(CharSequence);
+ method public abstract StringBuilder normalize(CharSequence, StringBuilder);
+ method public abstract Appendable normalize(CharSequence, Appendable);
+ method public abstract StringBuilder normalizeSecondAndAppend(StringBuilder, CharSequence);
+ method public abstract android.icu.text.Normalizer.QuickCheckResult quickCheck(CharSequence);
+ method public abstract int spanQuickCheckYes(CharSequence);
}
- public static final class Normalizer2.Mode extends java.lang.Enum {
- method public static android.icu.text.Normalizer2.Mode valueOf(java.lang.String);
- method public static final android.icu.text.Normalizer2.Mode[] values();
+ public enum Normalizer2.Mode {
enum_constant public static final android.icu.text.Normalizer2.Mode COMPOSE;
enum_constant public static final android.icu.text.Normalizer2.Mode COMPOSE_CONTIGUOUS;
enum_constant public static final android.icu.text.Normalizer2.Mode DECOMPOSE;
@@ -20451,19 +20395,19 @@
public abstract class NumberFormat extends android.icu.text.UFormat {
ctor public NumberFormat();
- method public java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public final java.lang.String format(double);
- method public final java.lang.String format(long);
- method public final java.lang.String format(java.math.BigInteger);
- method public final java.lang.String format(java.math.BigDecimal);
- method public final java.lang.String format(android.icu.math.BigDecimal);
- method public final java.lang.String format(android.icu.util.CurrencyAmount);
- method public abstract java.lang.StringBuffer format(double, java.lang.StringBuffer, java.text.FieldPosition);
- method public abstract java.lang.StringBuffer format(long, java.lang.StringBuffer, java.text.FieldPosition);
- method public abstract java.lang.StringBuffer format(java.math.BigInteger, java.lang.StringBuffer, java.text.FieldPosition);
- method public abstract java.lang.StringBuffer format(java.math.BigDecimal, java.lang.StringBuffer, java.text.FieldPosition);
- method public abstract java.lang.StringBuffer format(android.icu.math.BigDecimal, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuffer format(android.icu.util.CurrencyAmount, java.lang.StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+ method public final String format(double);
+ method public final String format(long);
+ method public final String format(java.math.BigInteger);
+ method public final String format(java.math.BigDecimal);
+ method public final String format(android.icu.math.BigDecimal);
+ method public final String format(android.icu.util.CurrencyAmount);
+ method public abstract StringBuffer format(double, StringBuffer, java.text.FieldPosition);
+ method public abstract StringBuffer format(long, StringBuffer, java.text.FieldPosition);
+ method public abstract StringBuffer format(java.math.BigInteger, StringBuffer, java.text.FieldPosition);
+ method public abstract StringBuffer format(java.math.BigDecimal, StringBuffer, java.text.FieldPosition);
+ method public abstract StringBuffer format(android.icu.math.BigDecimal, StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(android.icu.util.CurrencyAmount, StringBuffer, java.text.FieldPosition);
method public static java.util.Locale[] getAvailableLocales();
method public android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
method public android.icu.util.Currency getCurrency();
@@ -20486,7 +20430,7 @@
method public static final android.icu.text.NumberFormat getNumberInstance();
method public static android.icu.text.NumberFormat getNumberInstance(java.util.Locale);
method public static android.icu.text.NumberFormat getNumberInstance(android.icu.util.ULocale);
- method protected static java.lang.String getPattern(android.icu.util.ULocale, int);
+ method protected static String getPattern(android.icu.util.ULocale, int);
method public static final android.icu.text.NumberFormat getPercentInstance();
method public static android.icu.text.NumberFormat getPercentInstance(java.util.Locale);
method public static android.icu.text.NumberFormat getPercentInstance(android.icu.util.ULocale);
@@ -20497,10 +20441,10 @@
method public boolean isGroupingUsed();
method public boolean isParseIntegerOnly();
method public boolean isParseStrict();
- method public abstract java.lang.Number parse(java.lang.String, java.text.ParsePosition);
- method public java.lang.Number parse(java.lang.String) throws java.text.ParseException;
- method public android.icu.util.CurrencyAmount parseCurrency(java.lang.CharSequence, java.text.ParsePosition);
- method public final java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
+ method public abstract Number parse(String, java.text.ParsePosition);
+ method public Number parse(String) throws java.text.ParseException;
+ method public android.icu.util.CurrencyAmount parseCurrency(CharSequence, java.text.ParsePosition);
+ method public final Object parseObject(String, java.text.ParsePosition);
method public void setContext(android.icu.text.DisplayContext);
method public void setCurrency(android.icu.util.Currency);
method public void setGroupingUsed(boolean);
@@ -20526,7 +20470,7 @@
}
public static class NumberFormat.Field extends java.text.Format.Field {
- ctor protected NumberFormat.Field(java.lang.String);
+ ctor protected NumberFormat.Field(String);
field public static final android.icu.text.NumberFormat.Field CURRENCY;
field public static final android.icu.text.NumberFormat.Field DECIMAL_SEPARATOR;
field public static final android.icu.text.NumberFormat.Field EXPONENT;
@@ -20542,17 +20486,17 @@
public class NumberingSystem {
ctor public NumberingSystem();
- method public static java.lang.String[] getAvailableNames();
- method public java.lang.String getDescription();
- method public static android.icu.text.NumberingSystem getInstance(int, boolean, java.lang.String);
+ method public static String[] getAvailableNames();
+ method public String getDescription();
+ method public static android.icu.text.NumberingSystem getInstance(int, boolean, String);
method public static android.icu.text.NumberingSystem getInstance(java.util.Locale);
method public static android.icu.text.NumberingSystem getInstance(android.icu.util.ULocale);
method public static android.icu.text.NumberingSystem getInstance();
- method public static android.icu.text.NumberingSystem getInstanceByName(java.lang.String);
- method public java.lang.String getName();
+ method public static android.icu.text.NumberingSystem getInstanceByName(String);
+ method public String getName();
method public int getRadix();
method public boolean isAlgorithmic();
- method public static boolean isValidDigitString(java.lang.String);
+ method public static boolean isValidDigitString(String);
field public static final android.icu.text.NumberingSystem LATIN;
}
@@ -20565,57 +20509,55 @@
ctor public PluralFormat(java.util.Locale, android.icu.text.PluralRules);
ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType);
ctor public PluralFormat(java.util.Locale, android.icu.text.PluralRules.PluralType);
- ctor public PluralFormat(java.lang.String);
- ctor public PluralFormat(android.icu.util.ULocale, java.lang.String);
- ctor public PluralFormat(android.icu.text.PluralRules, java.lang.String);
- ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules, java.lang.String);
- ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType, java.lang.String);
- method public void applyPattern(java.lang.String);
+ ctor public PluralFormat(String);
+ ctor public PluralFormat(android.icu.util.ULocale, String);
+ ctor public PluralFormat(android.icu.text.PluralRules, String);
+ ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules, String);
+ ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType, String);
+ method public void applyPattern(String);
method public boolean equals(android.icu.text.PluralFormat);
- method public final java.lang.String format(double);
- method public java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.Number parse(java.lang.String, java.text.ParsePosition);
- method public java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
+ method public final String format(double);
+ method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+ method public Number parse(String, java.text.ParsePosition);
+ method public Object parseObject(String, java.text.ParsePosition);
method public void setNumberFormat(android.icu.text.NumberFormat);
- method public java.lang.String toPattern();
+ method public String toPattern();
}
public class PluralRules implements java.io.Serializable {
- method public static android.icu.text.PluralRules createRules(java.lang.String);
+ method public static android.icu.text.PluralRules createRules(String);
method public boolean equals(android.icu.text.PluralRules);
method public static android.icu.text.PluralRules forLocale(android.icu.util.ULocale);
method public static android.icu.text.PluralRules forLocale(java.util.Locale);
method public static android.icu.text.PluralRules forLocale(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType);
method public static android.icu.text.PluralRules forLocale(java.util.Locale, android.icu.text.PluralRules.PluralType);
- method public java.util.Collection<java.lang.Double> getAllKeywordValues(java.lang.String);
+ method public java.util.Collection<java.lang.Double> getAllKeywordValues(String);
method public java.util.Set<java.lang.String> getKeywords();
- method public java.util.Collection<java.lang.Double> getSamples(java.lang.String);
- method public double getUniqueKeywordValue(java.lang.String);
- method public static android.icu.text.PluralRules parseDescription(java.lang.String) throws java.text.ParseException;
- method public java.lang.String select(double);
+ method public java.util.Collection<java.lang.Double> getSamples(String);
+ method public double getUniqueKeywordValue(String);
+ method public static android.icu.text.PluralRules parseDescription(String) throws java.text.ParseException;
+ method public String select(double);
field public static final android.icu.text.PluralRules DEFAULT;
- field public static final java.lang.String KEYWORD_FEW = "few";
- field public static final java.lang.String KEYWORD_MANY = "many";
- field public static final java.lang.String KEYWORD_ONE = "one";
- field public static final java.lang.String KEYWORD_OTHER = "other";
- field public static final java.lang.String KEYWORD_TWO = "two";
- field public static final java.lang.String KEYWORD_ZERO = "zero";
+ field public static final String KEYWORD_FEW = "few";
+ field public static final String KEYWORD_MANY = "many";
+ field public static final String KEYWORD_ONE = "one";
+ field public static final String KEYWORD_OTHER = "other";
+ field public static final String KEYWORD_TWO = "two";
+ field public static final String KEYWORD_ZERO = "zero";
field public static final double NO_UNIQUE_VALUE = -0.00123456777;
}
- public static final class PluralRules.PluralType extends java.lang.Enum {
- method public static android.icu.text.PluralRules.PluralType valueOf(java.lang.String);
- method public static final android.icu.text.PluralRules.PluralType[] values();
+ public enum PluralRules.PluralType {
enum_constant public static final android.icu.text.PluralRules.PluralType CARDINAL;
enum_constant public static final android.icu.text.PluralRules.PluralType ORDINAL;
}
public final class RelativeDateTimeFormatter {
- method public java.lang.String combineDateAndTime(java.lang.String, java.lang.String);
- method public java.lang.String format(double, android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.RelativeUnit);
- method public java.lang.String format(android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit);
- method public java.lang.String format(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
- method public java.lang.String formatNumeric(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
+ method public String combineDateAndTime(String, String);
+ method public String format(double, android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.RelativeUnit);
+ method public String format(android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit);
+ method public String format(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
+ method public String formatNumeric(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
method public android.icu.text.DisplayContext getCapitalizationContext();
method public android.icu.text.RelativeDateTimeFormatter.Style getFormatStyle();
method public static android.icu.text.RelativeDateTimeFormatter getInstance();
@@ -20627,9 +20569,7 @@
method public android.icu.text.NumberFormat getNumberFormat();
}
- public static final class RelativeDateTimeFormatter.AbsoluteUnit extends java.lang.Enum {
- method public static android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit valueOf(java.lang.String);
- method public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit[] values();
+ public enum RelativeDateTimeFormatter.AbsoluteUnit {
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit DAY;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit FRIDAY;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit MONDAY;
@@ -20644,9 +20584,7 @@
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit YEAR;
}
- public static final class RelativeDateTimeFormatter.Direction extends java.lang.Enum {
- method public static android.icu.text.RelativeDateTimeFormatter.Direction valueOf(java.lang.String);
- method public static final android.icu.text.RelativeDateTimeFormatter.Direction[] values();
+ public enum RelativeDateTimeFormatter.Direction {
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction LAST;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction LAST_2;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction NEXT;
@@ -20655,9 +20593,7 @@
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction THIS;
}
- public static final class RelativeDateTimeFormatter.RelativeDateTimeUnit extends java.lang.Enum {
- method public static android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit valueOf(java.lang.String);
- method public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit[] values();
+ public enum RelativeDateTimeFormatter.RelativeDateTimeUnit {
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit DAY;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit FRIDAY;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit HOUR;
@@ -20675,9 +20611,7 @@
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit YEAR;
}
- public static final class RelativeDateTimeFormatter.RelativeUnit extends java.lang.Enum {
- method public static android.icu.text.RelativeDateTimeFormatter.RelativeUnit valueOf(java.lang.String);
- method public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit[] values();
+ public enum RelativeDateTimeFormatter.RelativeUnit {
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit DAYS;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit HOURS;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit MINUTES;
@@ -20687,37 +20621,35 @@
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit YEARS;
}
- public static final class RelativeDateTimeFormatter.Style extends java.lang.Enum {
- method public static android.icu.text.RelativeDateTimeFormatter.Style valueOf(java.lang.String);
- method public static final android.icu.text.RelativeDateTimeFormatter.Style[] values();
+ public enum RelativeDateTimeFormatter.Style {
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style LONG;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style NARROW;
enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style SHORT;
}
- public abstract interface Replaceable {
- method public abstract int char32At(int);
- method public abstract char charAt(int);
- method public abstract void copy(int, int, int);
- method public abstract void getChars(int, int, char[], int);
- method public abstract boolean hasMetaData();
- method public abstract int length();
- method public abstract void replace(int, int, java.lang.String);
- method public abstract void replace(int, int, char[], int, int);
+ public interface Replaceable {
+ method public int char32At(int);
+ method public char charAt(int);
+ method public void copy(int, int, int);
+ method public void getChars(int, int, char[], int);
+ method public boolean hasMetaData();
+ method public int length();
+ method public void replace(int, int, String);
+ method public void replace(int, int, char[], int, int);
}
public final class RuleBasedCollator extends android.icu.text.Collator {
- ctor public RuleBasedCollator(java.lang.String) throws java.lang.Exception;
+ ctor public RuleBasedCollator(String) throws java.lang.Exception;
method public android.icu.text.RuleBasedCollator cloneAsThawed();
- method public int compare(java.lang.String, java.lang.String);
- method public android.icu.text.CollationElementIterator getCollationElementIterator(java.lang.String);
+ method public int compare(String, String);
+ method public android.icu.text.CollationElementIterator getCollationElementIterator(String);
method public android.icu.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator);
method public android.icu.text.CollationElementIterator getCollationElementIterator(android.icu.text.UCharacterIterator);
- method public android.icu.text.CollationKey getCollationKey(java.lang.String);
+ method public android.icu.text.CollationKey getCollationKey(String);
method public void getContractionsAndExpansions(android.icu.text.UnicodeSet, android.icu.text.UnicodeSet, boolean) throws java.lang.Exception;
method public boolean getNumericCollation();
- method public java.lang.String getRules();
- method public java.lang.String getRules(boolean);
+ method public String getRules();
+ method public String getRules(boolean);
method public android.icu.util.VersionInfo getUCAVersion();
method public int getVariableTop();
method public android.icu.util.VersionInfo getVersion();
@@ -20743,9 +20675,9 @@
}
public final class ScientificNumberFormatter {
- method public java.lang.String format(java.lang.Object);
- method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.util.ULocale, java.lang.String, java.lang.String);
- method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.text.DecimalFormat, java.lang.String, java.lang.String);
+ method public String format(Object);
+ method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.util.ULocale, String, String);
+ method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.text.DecimalFormat, String, String);
method public static android.icu.text.ScientificNumberFormatter getSuperscriptInstance(android.icu.util.ULocale);
method public static android.icu.text.ScientificNumberFormatter getSuperscriptInstance(android.icu.text.DecimalFormat);
}
@@ -20759,7 +20691,7 @@
method public abstract int getIndex();
method public int getMatchLength();
method public int getMatchStart();
- method public java.lang.String getMatchedText();
+ method public String getMatchedText();
method public java.text.CharacterIterator getTarget();
method protected abstract int handleNext(int);
method protected abstract int handlePrevious(int);
@@ -20781,57 +20713,55 @@
field protected java.text.CharacterIterator targetText;
}
- public static final class SearchIterator.ElementComparisonType extends java.lang.Enum {
- method public static android.icu.text.SearchIterator.ElementComparisonType valueOf(java.lang.String);
- method public static final android.icu.text.SearchIterator.ElementComparisonType[] values();
+ public enum SearchIterator.ElementComparisonType {
enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType ANY_BASE_WEIGHT_IS_WILDCARD;
enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType PATTERN_BASE_WEIGHT_IS_WILDCARD;
enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType STANDARD_ELEMENT_COMPARISON;
}
public class SelectFormat extends java.text.Format {
- ctor public SelectFormat(java.lang.String);
- method public void applyPattern(java.lang.String);
- method public final java.lang.String format(java.lang.String);
- method public java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
- method public java.lang.String toPattern();
+ ctor public SelectFormat(String);
+ method public void applyPattern(String);
+ method public final String format(String);
+ method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+ method public Object parseObject(String, java.text.ParsePosition);
+ method public String toPattern();
}
public class SimpleDateFormat extends android.icu.text.DateFormat {
ctor public SimpleDateFormat();
- ctor public SimpleDateFormat(java.lang.String);
- ctor public SimpleDateFormat(java.lang.String, java.util.Locale);
- ctor public SimpleDateFormat(java.lang.String, android.icu.util.ULocale);
- ctor public SimpleDateFormat(java.lang.String, java.lang.String, android.icu.util.ULocale);
- ctor public SimpleDateFormat(java.lang.String, android.icu.text.DateFormatSymbols);
- method public void applyLocalizedPattern(java.lang.String);
- method public void applyPattern(java.lang.String);
- method public java.lang.StringBuffer format(android.icu.util.Calendar, java.lang.StringBuffer, java.text.FieldPosition);
+ ctor public SimpleDateFormat(String);
+ ctor public SimpleDateFormat(String, java.util.Locale);
+ ctor public SimpleDateFormat(String, android.icu.util.ULocale);
+ ctor public SimpleDateFormat(String, String, android.icu.util.ULocale);
+ ctor public SimpleDateFormat(String, android.icu.text.DateFormatSymbols);
+ method public void applyLocalizedPattern(String);
+ method public void applyPattern(String);
+ method public StringBuffer format(android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
method public java.util.Date get2DigitYearStart();
method public android.icu.text.DateFormatSymbols getDateFormatSymbols();
method public android.icu.text.NumberFormat getNumberFormat(char);
method protected android.icu.text.DateFormatSymbols getSymbols();
method public android.icu.text.TimeZoneFormat getTimeZoneFormat();
- method protected int matchQuarterString(java.lang.String, int, int, java.lang.String[], android.icu.util.Calendar);
- method protected int matchString(java.lang.String, int, int, java.lang.String[], android.icu.util.Calendar);
- method public void parse(java.lang.String, android.icu.util.Calendar, java.text.ParsePosition);
+ method protected int matchQuarterString(String, int, int, String[], android.icu.util.Calendar);
+ method protected int matchString(String, int, int, String[], android.icu.util.Calendar);
+ method public void parse(String, android.icu.util.Calendar, java.text.ParsePosition);
method protected android.icu.text.DateFormat.Field patternCharToDateFormatField(char);
method public void set2DigitYearStart(java.util.Date);
method public void setDateFormatSymbols(android.icu.text.DateFormatSymbols);
- method public void setNumberFormat(java.lang.String, android.icu.text.NumberFormat);
+ method public void setNumberFormat(String, android.icu.text.NumberFormat);
method public void setTimeZoneFormat(android.icu.text.TimeZoneFormat);
- method protected java.lang.String subFormat(char, int, int, java.text.FieldPosition, android.icu.text.DateFormatSymbols, android.icu.util.Calendar) throws java.lang.IllegalArgumentException;
- method protected int subParse(java.lang.String, int, char, int, boolean, boolean, boolean[], android.icu.util.Calendar);
- method public java.lang.String toLocalizedPattern();
- method public java.lang.String toPattern();
- method protected java.lang.String zeroPaddingNumber(long, int, int);
+ method protected String subFormat(char, int, int, java.text.FieldPosition, android.icu.text.DateFormatSymbols, android.icu.util.Calendar) throws java.lang.IllegalArgumentException;
+ method protected int subParse(String, int, char, int, boolean, boolean, boolean[], android.icu.util.Calendar);
+ method public String toLocalizedPattern();
+ method public String toPattern();
+ method protected String zeroPaddingNumber(long, int, int);
}
public class StringPrepParseException extends java.text.ParseException {
- ctor public StringPrepParseException(java.lang.String, int);
- ctor public StringPrepParseException(java.lang.String, int, java.lang.String, int);
- ctor public StringPrepParseException(java.lang.String, int, java.lang.String, int, int);
+ ctor public StringPrepParseException(String, int);
+ ctor public StringPrepParseException(String, int, String, int);
+ ctor public StringPrepParseException(String, int, String, int, int);
method public int getError();
field public static final int ACE_PREFIX_ERROR = 6; // 0x6
field public static final int BUFFER_OVERFLOW_ERROR = 9; // 0x9
@@ -20848,68 +20778,66 @@
}
public final class StringSearch extends android.icu.text.SearchIterator {
- ctor public StringSearch(java.lang.String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator, android.icu.text.BreakIterator);
- ctor public StringSearch(java.lang.String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator);
- ctor public StringSearch(java.lang.String, java.text.CharacterIterator, java.util.Locale);
- ctor public StringSearch(java.lang.String, java.text.CharacterIterator, android.icu.util.ULocale);
- ctor public StringSearch(java.lang.String, java.lang.String);
+ ctor public StringSearch(String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator, android.icu.text.BreakIterator);
+ ctor public StringSearch(String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator);
+ ctor public StringSearch(String, java.text.CharacterIterator, java.util.Locale);
+ ctor public StringSearch(String, java.text.CharacterIterator, android.icu.util.ULocale);
+ ctor public StringSearch(String, String);
method public android.icu.text.RuleBasedCollator getCollator();
method public int getIndex();
- method public java.lang.String getPattern();
+ method public String getPattern();
method protected int handleNext(int);
method protected int handlePrevious(int);
method public boolean isCanonical();
method public void setCanonical(boolean);
method public void setCollator(android.icu.text.RuleBasedCollator);
- method public void setPattern(java.lang.String);
+ method public void setPattern(String);
}
- public abstract interface SymbolTable {
- method public abstract char[] lookup(java.lang.String);
- method public abstract android.icu.text.UnicodeMatcher lookupMatcher(int);
- method public abstract java.lang.String parseReference(java.lang.String, java.text.ParsePosition, int);
+ public interface SymbolTable {
+ method public char[] lookup(String);
+ method public android.icu.text.UnicodeMatcher lookupMatcher(int);
+ method public String parseReference(String, java.text.ParsePosition, int);
field public static final char SYMBOL_REF = 36; // 0x0024 '$'
}
- public class TimeZoneFormat extends android.icu.text.UFormat implements android.icu.util.Freezable java.io.Serializable {
+ public class TimeZoneFormat extends android.icu.text.UFormat implements android.icu.util.Freezable<android.icu.text.TimeZoneFormat> java.io.Serializable {
ctor protected TimeZoneFormat(android.icu.util.ULocale);
method public android.icu.text.TimeZoneFormat cloneAsThawed();
- method public final java.lang.String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long);
- method public java.lang.String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
- method public java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public final java.lang.String formatOffsetISO8601Basic(int, boolean, boolean, boolean);
- method public final java.lang.String formatOffsetISO8601Extended(int, boolean, boolean, boolean);
- method public java.lang.String formatOffsetLocalizedGMT(int);
- method public java.lang.String formatOffsetShortLocalizedGMT(int);
+ method public final String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long);
+ method public String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
+ method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+ method public final String formatOffsetISO8601Basic(int, boolean, boolean, boolean);
+ method public final String formatOffsetISO8601Extended(int, boolean, boolean, boolean);
+ method public String formatOffsetLocalizedGMT(int);
+ method public String formatOffsetShortLocalizedGMT(int);
method public android.icu.text.TimeZoneFormat freeze();
method public java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption> getDefaultParseOptions();
- method public java.lang.String getGMTOffsetDigits();
- method public java.lang.String getGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType);
- method public java.lang.String getGMTPattern();
- method public java.lang.String getGMTZeroFormat();
+ method public String getGMTOffsetDigits();
+ method public String getGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType);
+ method public String getGMTPattern();
+ method public String getGMTZeroFormat();
method public static android.icu.text.TimeZoneFormat getInstance(android.icu.util.ULocale);
method public static android.icu.text.TimeZoneFormat getInstance(java.util.Locale);
method public android.icu.text.TimeZoneNames getTimeZoneNames();
method public boolean isFrozen();
- method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, java.lang.String, java.text.ParsePosition, java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption>, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
- method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, java.lang.String, java.text.ParsePosition, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
- method public final android.icu.util.TimeZone parse(java.lang.String, java.text.ParsePosition);
- method public final android.icu.util.TimeZone parse(java.lang.String) throws java.text.ParseException;
- method public java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
- method public final int parseOffsetISO8601(java.lang.String, java.text.ParsePosition);
- method public int parseOffsetLocalizedGMT(java.lang.String, java.text.ParsePosition);
- method public int parseOffsetShortLocalizedGMT(java.lang.String, java.text.ParsePosition);
+ method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, String, java.text.ParsePosition, java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption>, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
+ method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, String, java.text.ParsePosition, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
+ method public final android.icu.util.TimeZone parse(String, java.text.ParsePosition);
+ method public final android.icu.util.TimeZone parse(String) throws java.text.ParseException;
+ method public Object parseObject(String, java.text.ParsePosition);
+ method public final int parseOffsetISO8601(String, java.text.ParsePosition);
+ method public int parseOffsetLocalizedGMT(String, java.text.ParsePosition);
+ method public int parseOffsetShortLocalizedGMT(String, java.text.ParsePosition);
method public android.icu.text.TimeZoneFormat setDefaultParseOptions(java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption>);
- method public android.icu.text.TimeZoneFormat setGMTOffsetDigits(java.lang.String);
- method public android.icu.text.TimeZoneFormat setGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType, java.lang.String);
- method public android.icu.text.TimeZoneFormat setGMTPattern(java.lang.String);
- method public android.icu.text.TimeZoneFormat setGMTZeroFormat(java.lang.String);
+ method public android.icu.text.TimeZoneFormat setGMTOffsetDigits(String);
+ method public android.icu.text.TimeZoneFormat setGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType, String);
+ method public android.icu.text.TimeZoneFormat setGMTPattern(String);
+ method public android.icu.text.TimeZoneFormat setGMTZeroFormat(String);
method public android.icu.text.TimeZoneFormat setTimeZoneNames(android.icu.text.TimeZoneNames);
}
- public static final class TimeZoneFormat.GMTOffsetPatternType extends java.lang.Enum {
- method public static android.icu.text.TimeZoneFormat.GMTOffsetPatternType valueOf(java.lang.String);
- method public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType[] values();
+ public enum TimeZoneFormat.GMTOffsetPatternType {
enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_H;
enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_HM;
enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_HMS;
@@ -20918,16 +20846,12 @@
enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_HMS;
}
- public static final class TimeZoneFormat.ParseOption extends java.lang.Enum {
- method public static android.icu.text.TimeZoneFormat.ParseOption valueOf(java.lang.String);
- method public static final android.icu.text.TimeZoneFormat.ParseOption[] values();
+ public enum TimeZoneFormat.ParseOption {
enum_constant public static final android.icu.text.TimeZoneFormat.ParseOption ALL_STYLES;
enum_constant public static final android.icu.text.TimeZoneFormat.ParseOption TZ_DATABASE_ABBREVIATIONS;
}
- public static final class TimeZoneFormat.Style extends java.lang.Enum {
- method public static android.icu.text.TimeZoneFormat.Style valueOf(java.lang.String);
- method public static final android.icu.text.TimeZoneFormat.Style[] values();
+ public enum TimeZoneFormat.Style {
enum_constant public static final android.icu.text.TimeZoneFormat.Style EXEMPLAR_LOCATION;
enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_LOCATION;
enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_LONG;
@@ -20950,9 +20874,7 @@
enum_constant public static final android.icu.text.TimeZoneFormat.Style ZONE_ID_SHORT;
}
- public static final class TimeZoneFormat.TimeType extends java.lang.Enum {
- method public static android.icu.text.TimeZoneFormat.TimeType valueOf(java.lang.String);
- method public static final android.icu.text.TimeZoneFormat.TimeType[] values();
+ public enum TimeZoneFormat.TimeType {
enum_constant public static final android.icu.text.TimeZoneFormat.TimeType DAYLIGHT;
enum_constant public static final android.icu.text.TimeZoneFormat.TimeType STANDARD;
enum_constant public static final android.icu.text.TimeZoneFormat.TimeType UNKNOWN;
@@ -20960,21 +20882,19 @@
public abstract class TimeZoneNames implements java.io.Serializable {
method public abstract java.util.Set<java.lang.String> getAvailableMetaZoneIDs();
- method public abstract java.util.Set<java.lang.String> getAvailableMetaZoneIDs(java.lang.String);
- method public final java.lang.String getDisplayName(java.lang.String, android.icu.text.TimeZoneNames.NameType, long);
- method public java.lang.String getExemplarLocationName(java.lang.String);
+ method public abstract java.util.Set<java.lang.String> getAvailableMetaZoneIDs(String);
+ method public final String getDisplayName(String, android.icu.text.TimeZoneNames.NameType, long);
+ method public String getExemplarLocationName(String);
method public static android.icu.text.TimeZoneNames getInstance(android.icu.util.ULocale);
method public static android.icu.text.TimeZoneNames getInstance(java.util.Locale);
- method public abstract java.lang.String getMetaZoneDisplayName(java.lang.String, android.icu.text.TimeZoneNames.NameType);
- method public abstract java.lang.String getMetaZoneID(java.lang.String, long);
- method public abstract java.lang.String getReferenceZoneID(java.lang.String, java.lang.String);
+ method public abstract String getMetaZoneDisplayName(String, android.icu.text.TimeZoneNames.NameType);
+ method public abstract String getMetaZoneID(String, long);
+ method public abstract String getReferenceZoneID(String, String);
method public static android.icu.text.TimeZoneNames getTZDBInstance(android.icu.util.ULocale);
- method public abstract java.lang.String getTimeZoneDisplayName(java.lang.String, android.icu.text.TimeZoneNames.NameType);
+ method public abstract String getTimeZoneDisplayName(String, android.icu.text.TimeZoneNames.NameType);
}
- public static final class TimeZoneNames.NameType extends java.lang.Enum {
- method public static android.icu.text.TimeZoneNames.NameType valueOf(java.lang.String);
- method public static final android.icu.text.TimeZoneNames.NameType[] values();
+ public enum TimeZoneNames.NameType {
enum_constant public static final android.icu.text.TimeZoneNames.NameType EXEMPLAR_LOCATION;
enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_DAYLIGHT;
enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_GENERIC;
@@ -20985,31 +20905,31 @@
}
public abstract class Transliterator {
- method public static final android.icu.text.Transliterator createFromRules(java.lang.String, java.lang.String, int);
+ method public static final android.icu.text.Transliterator createFromRules(String, String, int);
method public void filteredTransliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, boolean);
method public final void finishTransliteration(android.icu.text.Replaceable, android.icu.text.Transliterator.Position);
method public static final java.util.Enumeration<java.lang.String> getAvailableIDs();
method public static final java.util.Enumeration<java.lang.String> getAvailableSources();
- method public static final java.util.Enumeration<java.lang.String> getAvailableTargets(java.lang.String);
- method public static final java.util.Enumeration<java.lang.String> getAvailableVariants(java.lang.String, java.lang.String);
- method public static final java.lang.String getDisplayName(java.lang.String);
- method public static java.lang.String getDisplayName(java.lang.String, java.util.Locale);
- method public static java.lang.String getDisplayName(java.lang.String, android.icu.util.ULocale);
+ method public static final java.util.Enumeration<java.lang.String> getAvailableTargets(String);
+ method public static final java.util.Enumeration<java.lang.String> getAvailableVariants(String, String);
+ method public static final String getDisplayName(String);
+ method public static String getDisplayName(String, java.util.Locale);
+ method public static String getDisplayName(String, android.icu.util.ULocale);
method public android.icu.text.Transliterator[] getElements();
method public final android.icu.text.UnicodeFilter getFilter();
- method public final java.lang.String getID();
- method public static final android.icu.text.Transliterator getInstance(java.lang.String);
- method public static android.icu.text.Transliterator getInstance(java.lang.String, int);
+ method public final String getID();
+ method public static final android.icu.text.Transliterator getInstance(String);
+ method public static android.icu.text.Transliterator getInstance(String, int);
method public final android.icu.text.Transliterator getInverse();
method public final int getMaximumContextLength();
method public final android.icu.text.UnicodeSet getSourceSet();
method public android.icu.text.UnicodeSet getTargetSet();
method public void setFilter(android.icu.text.UnicodeFilter);
- method public java.lang.String toRules(boolean);
+ method public String toRules(boolean);
method public final int transliterate(android.icu.text.Replaceable, int, int);
method public final void transliterate(android.icu.text.Replaceable);
- method public final java.lang.String transliterate(java.lang.String);
- method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, java.lang.String);
+ method public final String transliterate(String);
+ method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, String);
method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, int);
method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position);
field public static final int FORWARD = 0; // 0x0
@@ -21031,21 +20951,21 @@
public abstract class UCharacterIterator implements java.lang.Cloneable {
ctor protected UCharacterIterator();
- method public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
+ method public Object clone() throws java.lang.CloneNotSupportedException;
method public abstract int current();
method public int currentCodePoint();
method public java.text.CharacterIterator getCharacterIterator();
method public abstract int getIndex();
method public static final android.icu.text.UCharacterIterator getInstance(android.icu.text.Replaceable);
- method public static final android.icu.text.UCharacterIterator getInstance(java.lang.String);
+ method public static final android.icu.text.UCharacterIterator getInstance(String);
method public static final android.icu.text.UCharacterIterator getInstance(char[]);
method public static final android.icu.text.UCharacterIterator getInstance(char[], int, int);
- method public static final android.icu.text.UCharacterIterator getInstance(java.lang.StringBuffer);
+ method public static final android.icu.text.UCharacterIterator getInstance(StringBuffer);
method public static final android.icu.text.UCharacterIterator getInstance(java.text.CharacterIterator);
method public abstract int getLength();
method public abstract int getText(char[], int);
method public final int getText(char[]);
- method public java.lang.String getText();
+ method public String getText();
method public int moveCodePointIndex(int);
method public int moveIndex(int);
method public abstract int next();
@@ -21067,78 +20987,78 @@
method public int matches(android.icu.text.Replaceable, int[], int, boolean);
}
- public abstract interface UnicodeMatcher {
- method public abstract void addMatchSetTo(android.icu.text.UnicodeSet);
- method public abstract int matches(android.icu.text.Replaceable, int[], int, boolean);
- method public abstract boolean matchesIndexValue(int);
- method public abstract java.lang.String toPattern(boolean);
+ public interface UnicodeMatcher {
+ method public void addMatchSetTo(android.icu.text.UnicodeSet);
+ method public int matches(android.icu.text.Replaceable, int[], int, boolean);
+ method public boolean matchesIndexValue(int);
+ method public String toPattern(boolean);
field public static final char ETHER = 65535; // 0xffff '\uffff'
field public static final int U_MATCH = 2; // 0x2
field public static final int U_MISMATCH = 0; // 0x0
field public static final int U_PARTIAL_MATCH = 1; // 0x1
}
- public class UnicodeSet extends android.icu.text.UnicodeFilter implements java.lang.Comparable android.icu.util.Freezable java.lang.Iterable {
+ public class UnicodeSet extends android.icu.text.UnicodeFilter implements java.lang.Comparable<android.icu.text.UnicodeSet> android.icu.util.Freezable<android.icu.text.UnicodeSet> java.lang.Iterable<java.lang.String> {
ctor public UnicodeSet();
ctor public UnicodeSet(android.icu.text.UnicodeSet);
ctor public UnicodeSet(int, int);
ctor public UnicodeSet(int...);
- ctor public UnicodeSet(java.lang.String);
- ctor public UnicodeSet(java.lang.String, boolean);
- ctor public UnicodeSet(java.lang.String, int);
- ctor public UnicodeSet(java.lang.String, java.text.ParsePosition, android.icu.text.SymbolTable);
- ctor public UnicodeSet(java.lang.String, java.text.ParsePosition, android.icu.text.SymbolTable, int);
- method public java.lang.StringBuffer _generatePattern(java.lang.StringBuffer, boolean);
- method public java.lang.StringBuffer _generatePattern(java.lang.StringBuffer, boolean, boolean);
+ ctor public UnicodeSet(String);
+ ctor public UnicodeSet(String, boolean);
+ ctor public UnicodeSet(String, int);
+ ctor public UnicodeSet(String, java.text.ParsePosition, android.icu.text.SymbolTable);
+ ctor public UnicodeSet(String, java.text.ParsePosition, android.icu.text.SymbolTable, int);
+ method public StringBuffer _generatePattern(StringBuffer, boolean);
+ method public StringBuffer _generatePattern(StringBuffer, boolean, boolean);
method public android.icu.text.UnicodeSet add(int, int);
method public final android.icu.text.UnicodeSet add(int);
- method public final android.icu.text.UnicodeSet add(java.lang.CharSequence);
- method public android.icu.text.UnicodeSet add(java.lang.Iterable<?>);
+ method public final android.icu.text.UnicodeSet add(CharSequence);
+ method public android.icu.text.UnicodeSet add(Iterable<?>);
method public android.icu.text.UnicodeSet addAll(int, int);
- method public final android.icu.text.UnicodeSet addAll(java.lang.CharSequence);
+ method public final android.icu.text.UnicodeSet addAll(CharSequence);
method public android.icu.text.UnicodeSet addAll(android.icu.text.UnicodeSet);
- method public android.icu.text.UnicodeSet addAll(java.lang.Iterable<?>);
+ method public android.icu.text.UnicodeSet addAll(Iterable<?>);
method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet addAll(T...);
method public <T extends java.util.Collection<java.lang.String>> T addAllTo(T);
method public void addMatchSetTo(android.icu.text.UnicodeSet);
method public android.icu.text.UnicodeSet applyIntPropertyValue(int, int);
- method public final android.icu.text.UnicodeSet applyPattern(java.lang.String);
- method public android.icu.text.UnicodeSet applyPattern(java.lang.String, boolean);
- method public android.icu.text.UnicodeSet applyPattern(java.lang.String, int);
- method public android.icu.text.UnicodeSet applyPropertyAlias(java.lang.String, java.lang.String);
- method public android.icu.text.UnicodeSet applyPropertyAlias(java.lang.String, java.lang.String, android.icu.text.SymbolTable);
+ method public final android.icu.text.UnicodeSet applyPattern(String);
+ method public android.icu.text.UnicodeSet applyPattern(String, boolean);
+ method public android.icu.text.UnicodeSet applyPattern(String, int);
+ method public android.icu.text.UnicodeSet applyPropertyAlias(String, String);
+ method public android.icu.text.UnicodeSet applyPropertyAlias(String, String, android.icu.text.SymbolTable);
method public int charAt(int);
method public android.icu.text.UnicodeSet clear();
- method public java.lang.Object clone();
+ method public Object clone();
method public android.icu.text.UnicodeSet cloneAsThawed();
method public android.icu.text.UnicodeSet closeOver(int);
method public android.icu.text.UnicodeSet compact();
method public int compareTo(android.icu.text.UnicodeSet);
method public int compareTo(android.icu.text.UnicodeSet, android.icu.text.UnicodeSet.ComparisonStyle);
- method public int compareTo(java.lang.Iterable<java.lang.String>);
+ method public int compareTo(Iterable<java.lang.String>);
method public android.icu.text.UnicodeSet complement(int, int);
method public final android.icu.text.UnicodeSet complement(int);
method public android.icu.text.UnicodeSet complement();
- method public final android.icu.text.UnicodeSet complement(java.lang.CharSequence);
- method public final android.icu.text.UnicodeSet complementAll(java.lang.CharSequence);
+ method public final android.icu.text.UnicodeSet complement(CharSequence);
+ method public final android.icu.text.UnicodeSet complementAll(CharSequence);
method public android.icu.text.UnicodeSet complementAll(android.icu.text.UnicodeSet);
method public boolean contains(int);
method public boolean contains(int, int);
- method public final boolean contains(java.lang.CharSequence);
+ method public final boolean contains(CharSequence);
method public boolean containsAll(android.icu.text.UnicodeSet);
- method public boolean containsAll(java.lang.String);
- method public <T extends java.lang.CharSequence> boolean containsAll(java.lang.Iterable<T>);
+ method public boolean containsAll(String);
+ method public <T extends java.lang.CharSequence> boolean containsAll(Iterable<T>);
method public boolean containsNone(int, int);
method public boolean containsNone(android.icu.text.UnicodeSet);
- method public boolean containsNone(java.lang.CharSequence);
- method public <T extends java.lang.CharSequence> boolean containsNone(java.lang.Iterable<T>);
+ method public boolean containsNone(CharSequence);
+ method public <T extends java.lang.CharSequence> boolean containsNone(Iterable<T>);
method public final boolean containsSome(int, int);
method public final boolean containsSome(android.icu.text.UnicodeSet);
- method public final boolean containsSome(java.lang.CharSequence);
- method public final <T extends java.lang.CharSequence> boolean containsSome(java.lang.Iterable<T>);
+ method public final boolean containsSome(CharSequence);
+ method public final <T extends java.lang.CharSequence> boolean containsSome(Iterable<T>);
method public android.icu.text.UnicodeSet freeze();
- method public static android.icu.text.UnicodeSet from(java.lang.CharSequence);
- method public static android.icu.text.UnicodeSet fromAll(java.lang.CharSequence);
+ method public static android.icu.text.UnicodeSet from(CharSequence);
+ method public static android.icu.text.UnicodeSet fromAll(CharSequence);
method public int getRangeCount();
method public int getRangeEnd(int);
method public int getRangeStart(int);
@@ -21147,29 +21067,29 @@
method public boolean isFrozen();
method public java.util.Iterator<java.lang.String> iterator();
method public boolean matchesIndexValue(int);
- method public java.lang.Iterable<android.icu.text.UnicodeSet.EntryRange> ranges();
+ method public Iterable<android.icu.text.UnicodeSet.EntryRange> ranges();
method public android.icu.text.UnicodeSet remove(int, int);
method public final android.icu.text.UnicodeSet remove(int);
- method public final android.icu.text.UnicodeSet remove(java.lang.CharSequence);
- method public final android.icu.text.UnicodeSet removeAll(java.lang.CharSequence);
+ method public final android.icu.text.UnicodeSet remove(CharSequence);
+ method public final android.icu.text.UnicodeSet removeAll(CharSequence);
method public android.icu.text.UnicodeSet removeAll(android.icu.text.UnicodeSet);
- method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet removeAll(java.lang.Iterable<T>);
+ method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet removeAll(Iterable<T>);
method public final android.icu.text.UnicodeSet removeAllStrings();
method public android.icu.text.UnicodeSet retain(int, int);
method public final android.icu.text.UnicodeSet retain(int);
- method public final android.icu.text.UnicodeSet retain(java.lang.CharSequence);
- method public final android.icu.text.UnicodeSet retainAll(java.lang.CharSequence);
+ method public final android.icu.text.UnicodeSet retain(CharSequence);
+ method public final android.icu.text.UnicodeSet retainAll(CharSequence);
method public android.icu.text.UnicodeSet retainAll(android.icu.text.UnicodeSet);
- method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet retainAll(java.lang.Iterable<T>);
+ method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet retainAll(Iterable<T>);
method public android.icu.text.UnicodeSet set(int, int);
method public android.icu.text.UnicodeSet set(android.icu.text.UnicodeSet);
method public int size();
- method public int span(java.lang.CharSequence, android.icu.text.UnicodeSet.SpanCondition);
- method public int span(java.lang.CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
- method public int spanBack(java.lang.CharSequence, android.icu.text.UnicodeSet.SpanCondition);
- method public int spanBack(java.lang.CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
+ method public int span(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
+ method public int span(CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
+ method public int spanBack(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
+ method public int spanBack(CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
method public java.util.Collection<java.lang.String> strings();
- method public java.lang.String toPattern(boolean);
+ method public String toPattern(boolean);
field public static final int ADD_CASE_MAPPINGS = 4; // 0x4
field public static final android.icu.text.UnicodeSet ALL_CODE_POINTS;
field public static final int CASE = 2; // 0x2
@@ -21180,9 +21100,7 @@
field public static final int MIN_VALUE = 0; // 0x0
}
- public static final class UnicodeSet.ComparisonStyle extends java.lang.Enum {
- method public static android.icu.text.UnicodeSet.ComparisonStyle valueOf(java.lang.String);
- method public static final android.icu.text.UnicodeSet.ComparisonStyle[] values();
+ public enum UnicodeSet.ComparisonStyle {
enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle LEXICOGRAPHIC;
enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle LONGER_FIRST;
enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle SHORTER_FIRST;
@@ -21193,9 +21111,7 @@
field public int codepointEnd;
}
- public static final class UnicodeSet.SpanCondition extends java.lang.Enum {
- method public static android.icu.text.UnicodeSet.SpanCondition valueOf(java.lang.String);
- method public static final android.icu.text.UnicodeSet.SpanCondition[] values();
+ public enum UnicodeSet.SpanCondition {
enum_constant public static final android.icu.text.UnicodeSet.SpanCondition CONDITION_COUNT;
enum_constant public static final android.icu.text.UnicodeSet.SpanCondition CONTAINED;
enum_constant public static final android.icu.text.UnicodeSet.SpanCondition NOT_CONTAINED;
@@ -21205,7 +21121,7 @@
public class UnicodeSetIterator {
ctor public UnicodeSetIterator(android.icu.text.UnicodeSet);
ctor public UnicodeSetIterator();
- method public java.lang.String getString();
+ method public String getString();
method public boolean next();
method public boolean nextRange();
method public void reset(android.icu.text.UnicodeSet);
@@ -21213,35 +21129,31 @@
field public static int IS_STRING;
field public int codepoint;
field public int codepointEnd;
- field public java.lang.String string;
+ field public String string;
}
public class UnicodeSetSpanner {
ctor public UnicodeSetSpanner(android.icu.text.UnicodeSet);
- method public int countIn(java.lang.CharSequence);
- method public int countIn(java.lang.CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
- method public int countIn(java.lang.CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
- method public java.lang.String deleteFrom(java.lang.CharSequence);
- method public java.lang.String deleteFrom(java.lang.CharSequence, android.icu.text.UnicodeSet.SpanCondition);
+ method public int countIn(CharSequence);
+ method public int countIn(CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
+ method public int countIn(CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
+ method public String deleteFrom(CharSequence);
+ method public String deleteFrom(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
method public android.icu.text.UnicodeSet getUnicodeSet();
- method public java.lang.String replaceFrom(java.lang.CharSequence, java.lang.CharSequence);
- method public java.lang.String replaceFrom(java.lang.CharSequence, java.lang.CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
- method public java.lang.String replaceFrom(java.lang.CharSequence, java.lang.CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
- method public java.lang.CharSequence trim(java.lang.CharSequence);
- method public java.lang.CharSequence trim(java.lang.CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption);
- method public java.lang.CharSequence trim(java.lang.CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption, android.icu.text.UnicodeSet.SpanCondition);
+ method public String replaceFrom(CharSequence, CharSequence);
+ method public String replaceFrom(CharSequence, CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
+ method public String replaceFrom(CharSequence, CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
+ method public CharSequence trim(CharSequence);
+ method public CharSequence trim(CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption);
+ method public CharSequence trim(CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption, android.icu.text.UnicodeSet.SpanCondition);
}
- public static final class UnicodeSetSpanner.CountMethod extends java.lang.Enum {
- method public static android.icu.text.UnicodeSetSpanner.CountMethod valueOf(java.lang.String);
- method public static final android.icu.text.UnicodeSetSpanner.CountMethod[] values();
+ public enum UnicodeSetSpanner.CountMethod {
enum_constant public static final android.icu.text.UnicodeSetSpanner.CountMethod MIN_ELEMENTS;
enum_constant public static final android.icu.text.UnicodeSetSpanner.CountMethod WHOLE_SPAN;
}
- public static final class UnicodeSetSpanner.TrimOption extends java.lang.Enum {
- method public static android.icu.text.UnicodeSetSpanner.TrimOption valueOf(java.lang.String);
- method public static final android.icu.text.UnicodeSetSpanner.TrimOption[] values();
+ public enum UnicodeSetSpanner.TrimOption {
enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption BOTH;
enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption LEADING;
enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption TRAILING;
@@ -21264,27 +21176,27 @@
field public static final int BE = 0; // 0x0
}
- public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable java.io.Serializable {
+ public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable<android.icu.util.Calendar> java.io.Serializable {
ctor protected Calendar();
ctor protected Calendar(android.icu.util.TimeZone, java.util.Locale);
ctor protected Calendar(android.icu.util.TimeZone, android.icu.util.ULocale);
method public void add(int, int);
- method public boolean after(java.lang.Object);
- method public boolean before(java.lang.Object);
+ method public boolean after(Object);
+ method public boolean before(Object);
method public final void clear();
method public final void clear(int);
- method public java.lang.Object clone();
+ method public Object clone();
method public int compareTo(android.icu.util.Calendar);
method protected void complete();
method protected void computeFields();
method protected final void computeGregorianFields(int);
method protected int computeGregorianMonthStart(int, int);
method protected int computeJulianDay();
- method protected deprecated int computeMillisInDay();
+ method @Deprecated protected int computeMillisInDay();
method protected void computeTime();
- method protected deprecated int computeZoneOffset(long, int);
+ method @Deprecated protected int computeZoneOffset(long, int);
method public int fieldDifference(java.util.Date, int);
- method protected java.lang.String fieldName(int);
+ method protected String fieldName(int);
method protected static final long floorDivide(long, long);
method protected static final int floorDivide(int, int);
method protected static final int floorDivide(int, int, int[]);
@@ -21295,8 +21207,8 @@
method public static java.util.Locale[] getAvailableLocales();
method public android.icu.text.DateFormat getDateTimeFormat(int, int, java.util.Locale);
method public android.icu.text.DateFormat getDateTimeFormat(int, int, android.icu.util.ULocale);
- method public java.lang.String getDisplayName(java.util.Locale);
- method public java.lang.String getDisplayName(android.icu.util.ULocale);
+ method public String getDisplayName(java.util.Locale);
+ method public String getDisplayName(android.icu.util.ULocale);
method public final int getFieldCount();
method protected int[][][] getFieldResolutionTable();
method public int getFirstDayOfWeek();
@@ -21311,7 +21223,7 @@
method public static android.icu.util.Calendar getInstance(android.icu.util.ULocale);
method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone, java.util.Locale);
method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone, android.icu.util.ULocale);
- method public static final java.lang.String[] getKeywordValuesForLocale(java.lang.String, android.icu.util.ULocale, boolean);
+ method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
method public final int getLeastMaximum(int);
method protected int getLimit(int, int);
method public final int getMaximum(int);
@@ -21323,18 +21235,18 @@
method public final java.util.Date getTime();
method public long getTimeInMillis();
method public android.icu.util.TimeZone getTimeZone();
- method public java.lang.String getType();
+ method public String getType();
method public android.icu.util.Calendar.WeekData getWeekData();
- method public static android.icu.util.Calendar.WeekData getWeekDataForRegion(java.lang.String);
+ method public static android.icu.util.Calendar.WeekData getWeekDataForRegion(String);
method protected static final int gregorianMonthLength(int, int);
method protected static final int gregorianPreviousMonthLength(int, int);
method protected void handleComputeFields(int);
method protected int handleComputeJulianDay(int);
method protected abstract int handleComputeMonthStart(int, int, boolean);
method protected int[] handleCreateFields();
- method protected android.icu.text.DateFormat handleGetDateFormat(java.lang.String, java.util.Locale);
- method protected android.icu.text.DateFormat handleGetDateFormat(java.lang.String, java.lang.String, java.util.Locale);
- method protected android.icu.text.DateFormat handleGetDateFormat(java.lang.String, android.icu.util.ULocale);
+ method protected android.icu.text.DateFormat handleGetDateFormat(String, java.util.Locale);
+ method protected android.icu.text.DateFormat handleGetDateFormat(String, String, java.util.Locale);
+ method protected android.icu.text.DateFormat handleGetDateFormat(String, android.icu.util.ULocale);
method protected abstract int handleGetExtendedYear();
method protected abstract int handleGetLimit(int, int);
method protected int handleGetMonthLength(int, int);
@@ -21381,7 +21293,7 @@
field public static final int AM_PM = 9; // 0x9
field public static final int APRIL = 3; // 0x3
field public static final int AUGUST = 7; // 0x7
- field protected static final deprecated int BASE_FIELD_COUNT = 23; // 0x17
+ field @Deprecated protected static final int BASE_FIELD_COUNT = 23; // 0x17
field public static final int DATE = 5; // 0x5
field public static final int DAY_OF_MONTH = 5; // 0x5
field public static final int DAY_OF_WEEK = 7; // 0x7
@@ -21409,7 +21321,7 @@
field public static final int MARCH = 2; // 0x2
field protected static final int MAXIMUM = 3; // 0x3
field protected static final java.util.Date MAX_DATE;
- field protected static final deprecated int MAX_FIELD_COUNT = 32; // 0x20
+ field @Deprecated protected static final int MAX_FIELD_COUNT = 32; // 0x20
field protected static final int MAX_JULIAN = 2130706432; // 0x7f000000
field protected static final long MAX_MILLIS = 183882168921600000L; // 0x28d47dbbf19b000L
field public static final int MAY = 4; // 0x4
@@ -21474,7 +21386,7 @@
ctor public ChineseCalendar(android.icu.util.ULocale);
ctor public ChineseCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
method protected int handleComputeMonthStart(int, int, boolean);
- method protected android.icu.text.DateFormat handleGetDateFormat(java.lang.String, java.lang.String, android.icu.util.ULocale);
+ method protected android.icu.text.DateFormat handleGetDateFormat(String, String, android.icu.util.ULocale);
method protected int handleGetExtendedYear();
method protected int handleGetLimit(int, int);
}
@@ -21489,8 +21401,10 @@
ctor public CopticCalendar(int, int, int);
ctor public CopticCalendar(java.util.Date);
ctor public CopticCalendar(int, int, int, int, int, int);
- method protected deprecated void handleComputeFields(int);
- method protected deprecated int handleGetExtendedYear();
+ method @Deprecated protected void handleComputeFields(int);
+ method protected int handleComputeMonthStart(int, int, boolean);
+ method @Deprecated protected int handleGetExtendedYear();
+ method protected int handleGetLimit(int, int);
field public static final int AMSHIR = 5; // 0x5
field public static final int BABA = 1; // 0x1
field public static final int BARAMHAT = 6; // 0x6
@@ -21507,50 +21421,48 @@
}
public class Currency extends android.icu.util.MeasureUnit {
- ctor protected Currency(java.lang.String);
+ ctor protected Currency(String);
method public static android.icu.util.Currency fromJavaCurrency(java.util.Currency);
method public static java.util.Set<android.icu.util.Currency> getAvailableCurrencies();
- method public static java.lang.String[] getAvailableCurrencyCodes(android.icu.util.ULocale, java.util.Date);
- method public static java.lang.String[] getAvailableCurrencyCodes(java.util.Locale, java.util.Date);
+ method public static String[] getAvailableCurrencyCodes(android.icu.util.ULocale, java.util.Date);
+ method public static String[] getAvailableCurrencyCodes(java.util.Locale, java.util.Date);
method public static java.util.Locale[] getAvailableLocales();
method public static android.icu.util.ULocale[] getAvailableULocales();
- method public java.lang.String getCurrencyCode();
+ method public String getCurrencyCode();
method public int getDefaultFractionDigits();
method public int getDefaultFractionDigits(android.icu.util.Currency.CurrencyUsage);
- method public java.lang.String getDisplayName();
- method public java.lang.String getDisplayName(java.util.Locale);
+ method public String getDisplayName();
+ method public String getDisplayName(java.util.Locale);
method public static android.icu.util.Currency getInstance(java.util.Locale);
method public static android.icu.util.Currency getInstance(android.icu.util.ULocale);
- method public static android.icu.util.Currency getInstance(java.lang.String);
- method public static final java.lang.String[] getKeywordValuesForLocale(java.lang.String, android.icu.util.ULocale, boolean);
- method public java.lang.String getName(java.util.Locale, int, boolean[]);
- method public java.lang.String getName(android.icu.util.ULocale, int, boolean[]);
- method public java.lang.String getName(java.util.Locale, int, java.lang.String, boolean[]);
- method public java.lang.String getName(android.icu.util.ULocale, int, java.lang.String, boolean[]);
+ method public static android.icu.util.Currency getInstance(String);
+ method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
+ method public String getName(java.util.Locale, int, boolean[]);
+ method public String getName(android.icu.util.ULocale, int, boolean[]);
+ method public String getName(java.util.Locale, int, String, boolean[]);
+ method public String getName(android.icu.util.ULocale, int, String, boolean[]);
method public int getNumericCode();
method public double getRoundingIncrement();
method public double getRoundingIncrement(android.icu.util.Currency.CurrencyUsage);
- method public java.lang.String getSymbol();
- method public java.lang.String getSymbol(java.util.Locale);
- method public java.lang.String getSymbol(android.icu.util.ULocale);
- method public static boolean isAvailable(java.lang.String, java.util.Date, java.util.Date);
+ method public String getSymbol();
+ method public String getSymbol(java.util.Locale);
+ method public String getSymbol(android.icu.util.ULocale);
+ method public static boolean isAvailable(String, java.util.Date, java.util.Date);
method public java.util.Currency toJavaCurrency();
field public static final int LONG_NAME = 1; // 0x1
field public static final int PLURAL_LONG_NAME = 2; // 0x2
field public static final int SYMBOL_NAME = 0; // 0x0
}
- public static final class Currency.CurrencyUsage extends java.lang.Enum {
- method public static android.icu.util.Currency.CurrencyUsage valueOf(java.lang.String);
- method public static final android.icu.util.Currency.CurrencyUsage[] values();
+ public enum Currency.CurrencyUsage {
enum_constant public static final android.icu.util.Currency.CurrencyUsage CASH;
enum_constant public static final android.icu.util.Currency.CurrencyUsage STANDARD;
}
public class CurrencyAmount extends android.icu.util.Measure {
- ctor public CurrencyAmount(java.lang.Number, android.icu.util.Currency);
+ ctor public CurrencyAmount(Number, android.icu.util.Currency);
ctor public CurrencyAmount(double, android.icu.util.Currency);
- ctor public CurrencyAmount(java.lang.Number, java.util.Currency);
+ ctor public CurrencyAmount(Number, java.util.Currency);
ctor public CurrencyAmount(double, java.util.Currency);
method public android.icu.util.Currency getCurrency();
}
@@ -21571,9 +21483,10 @@
ctor public EthiopicCalendar(int, int, int);
ctor public EthiopicCalendar(java.util.Date);
ctor public EthiopicCalendar(int, int, int, int, int, int);
- method protected deprecated void handleComputeFields(int);
- method protected deprecated int handleGetExtendedYear();
- method protected deprecated int handleGetLimit(int, int);
+ method @Deprecated protected void handleComputeFields(int);
+ method protected int handleComputeMonthStart(int, int, boolean);
+ method @Deprecated protected int handleGetExtendedYear();
+ method @Deprecated protected int handleGetLimit(int, int);
method public boolean isAmeteAlemEra();
method public void setAmeteAlemEra(boolean);
field public static final int GENBOT = 8; // 0x8
@@ -21591,10 +21504,10 @@
field public static final int YEKATIT = 5; // 0x5
}
- public abstract interface Freezable<T> implements java.lang.Cloneable {
- method public abstract T cloneAsThawed();
- method public abstract T freeze();
- method public abstract boolean isFrozen();
+ public interface Freezable<T> extends java.lang.Cloneable {
+ method public T cloneAsThawed();
+ method public T freeze();
+ method public boolean isFrozen();
}
public class GregorianCalendar extends android.icu.util.Calendar {
@@ -21632,7 +21545,7 @@
method protected int handleComputeMonthStart(int, int, boolean);
method protected int handleGetExtendedYear();
method protected int handleGetLimit(int, int);
- method protected deprecated void validateField(int);
+ method @Deprecated protected void validateField(int);
field public static final int ADAR = 6; // 0x6
field public static final int ADAR_1 = 5; // 0x5
field public static final int AV = 11; // 0xb
@@ -21650,15 +21563,15 @@
public class ICUUncheckedIOException extends java.lang.RuntimeException {
ctor public ICUUncheckedIOException();
- ctor public ICUUncheckedIOException(java.lang.String);
- ctor public ICUUncheckedIOException(java.lang.Throwable);
- ctor public ICUUncheckedIOException(java.lang.String, java.lang.Throwable);
+ ctor public ICUUncheckedIOException(String);
+ ctor public ICUUncheckedIOException(Throwable);
+ ctor public ICUUncheckedIOException(String, Throwable);
}
public class IllformedLocaleException extends java.lang.RuntimeException {
ctor public IllformedLocaleException();
- ctor public IllformedLocaleException(java.lang.String);
- ctor public IllformedLocaleException(java.lang.String, int);
+ ctor public IllformedLocaleException(String);
+ ctor public IllformedLocaleException(String, int);
method public int getErrorIndex();
}
@@ -21719,9 +21632,7 @@
field public static final int SHAWWAL = 9; // 0x9
}
- public static final class IslamicCalendar.CalculationType extends java.lang.Enum {
- method public static android.icu.util.IslamicCalendar.CalculationType valueOf(java.lang.String);
- method public static final android.icu.util.IslamicCalendar.CalculationType[] values();
+ public enum IslamicCalendar.CalculationType {
enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC;
enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_CIVIL;
enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_TBLA;
@@ -21748,7 +21659,7 @@
public final class LocaleData {
method public static android.icu.util.VersionInfo getCLDRVersion();
- method public java.lang.String getDelimiter(int);
+ method public String getDelimiter(int);
method public static android.icu.util.LocaleData getInstance(android.icu.util.ULocale);
method public static android.icu.util.LocaleData getInstance();
method public static android.icu.util.LocaleData.MeasurementSystem getMeasurementSystem(android.icu.util.ULocale);
@@ -21773,17 +21684,17 @@
}
public class Measure {
- ctor public Measure(java.lang.Number, android.icu.util.MeasureUnit);
- method public java.lang.Number getNumber();
+ ctor public Measure(Number, android.icu.util.MeasureUnit);
+ method public Number getNumber();
method public android.icu.util.MeasureUnit getUnit();
}
public class MeasureUnit implements java.io.Serializable {
- method public static synchronized java.util.Set<android.icu.util.MeasureUnit> getAvailable(java.lang.String);
- method public static synchronized java.util.Set<android.icu.util.MeasureUnit> getAvailable();
- method public static synchronized java.util.Set<java.lang.String> getAvailableTypes();
- method public java.lang.String getSubtype();
- method public java.lang.String getType();
+ method public static java.util.Set<android.icu.util.MeasureUnit> getAvailable(String);
+ method public static java.util.Set<android.icu.util.MeasureUnit> getAvailable();
+ method public static java.util.Set<java.lang.String> getAvailableTypes();
+ method public String getSubtype();
+ method public String getType();
field public static final android.icu.util.MeasureUnit ACRE;
field public static final android.icu.util.MeasureUnit ACRE_FOOT;
field public static final android.icu.util.MeasureUnit AMPERE;
@@ -21927,9 +21838,9 @@
field public T value;
}
- public abstract interface RangeValueIterator {
- method public abstract boolean next(android.icu.util.RangeValueIterator.Element);
- method public abstract void reset();
+ public interface RangeValueIterator {
+ method public boolean next(android.icu.util.RangeValueIterator.Element);
+ method public void reset();
}
public static class RangeValueIterator.Element {
@@ -21957,44 +21868,44 @@
method public static android.icu.util.TimeUnit[] values();
}
- public abstract class TimeZone implements java.lang.Cloneable android.icu.util.Freezable java.io.Serializable {
+ public abstract class TimeZone implements java.lang.Cloneable android.icu.util.Freezable<android.icu.util.TimeZone> java.io.Serializable {
ctor public TimeZone();
- method public java.lang.Object clone();
+ method public Object clone();
method public android.icu.util.TimeZone cloneAsThawed();
- method public static int countEquivalentIDs(java.lang.String);
+ method public static int countEquivalentIDs(String);
method public android.icu.util.TimeZone freeze();
- method public static java.util.Set<java.lang.String> getAvailableIDs(android.icu.util.TimeZone.SystemTimeZoneType, java.lang.String, java.lang.Integer);
- method public static java.lang.String[] getAvailableIDs(int);
- method public static java.lang.String[] getAvailableIDs(java.lang.String);
- method public static java.lang.String[] getAvailableIDs();
- method public static java.lang.String getCanonicalID(java.lang.String);
- method public static java.lang.String getCanonicalID(java.lang.String, boolean[]);
+ method public static java.util.Set<java.lang.String> getAvailableIDs(android.icu.util.TimeZone.SystemTimeZoneType, String, Integer);
+ method public static String[] getAvailableIDs(int);
+ method public static String[] getAvailableIDs(String);
+ method public static String[] getAvailableIDs();
+ method public static String getCanonicalID(String);
+ method public static String getCanonicalID(String, boolean[]);
method public int getDSTSavings();
method public static android.icu.util.TimeZone getDefault();
- method public final java.lang.String getDisplayName();
- method public final java.lang.String getDisplayName(java.util.Locale);
- method public final java.lang.String getDisplayName(android.icu.util.ULocale);
- method public final java.lang.String getDisplayName(boolean, int);
- method public java.lang.String getDisplayName(boolean, int, java.util.Locale);
- method public java.lang.String getDisplayName(boolean, int, android.icu.util.ULocale);
- method public static java.lang.String getEquivalentID(java.lang.String, int);
- method public static android.icu.util.TimeZone getFrozenTimeZone(java.lang.String);
- method public java.lang.String getID();
- method public static java.lang.String getIDForWindowsID(java.lang.String, java.lang.String);
+ method public final String getDisplayName();
+ method public final String getDisplayName(java.util.Locale);
+ method public final String getDisplayName(android.icu.util.ULocale);
+ method public final String getDisplayName(boolean, int);
+ method public String getDisplayName(boolean, int, java.util.Locale);
+ method public String getDisplayName(boolean, int, android.icu.util.ULocale);
+ method public static String getEquivalentID(String, int);
+ method public static android.icu.util.TimeZone getFrozenTimeZone(String);
+ method public String getID();
+ method public static String getIDForWindowsID(String, String);
method public abstract int getOffset(int, int, int, int, int, int);
method public int getOffset(long);
method public void getOffset(long, boolean, int[]);
method public abstract int getRawOffset();
- method public static java.lang.String getRegion(java.lang.String);
- method public static java.lang.String getTZDataVersion();
- method public static android.icu.util.TimeZone getTimeZone(java.lang.String);
- method public static android.icu.util.TimeZone getTimeZone(java.lang.String, int);
- method public static java.lang.String getWindowsID(java.lang.String);
+ method public static String getRegion(String);
+ method public static String getTZDataVersion();
+ method public static android.icu.util.TimeZone getTimeZone(String);
+ method public static android.icu.util.TimeZone getTimeZone(String, int);
+ method public static String getWindowsID(String);
method public boolean hasSameRules(android.icu.util.TimeZone);
method public abstract boolean inDaylightTime(java.util.Date);
method public boolean isFrozen();
method public boolean observesDaylightTime();
- method public void setID(java.lang.String);
+ method public void setID(String);
method public abstract void setRawOffset(int);
method public abstract boolean useDaylightTime();
field public static final int GENERIC_LOCATION = 7; // 0x7
@@ -22009,111 +21920,109 @@
field public static final int TIMEZONE_ICU = 0; // 0x0
field public static final int TIMEZONE_JDK = 1; // 0x1
field public static final android.icu.util.TimeZone UNKNOWN_ZONE;
- field public static final java.lang.String UNKNOWN_ZONE_ID = "Etc/Unknown";
+ field public static final String UNKNOWN_ZONE_ID = "Etc/Unknown";
}
- public static final class TimeZone.SystemTimeZoneType extends java.lang.Enum {
- method public static android.icu.util.TimeZone.SystemTimeZoneType valueOf(java.lang.String);
- method public static final android.icu.util.TimeZone.SystemTimeZoneType[] values();
+ public enum TimeZone.SystemTimeZoneType {
enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType ANY;
enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType CANONICAL;
enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType CANONICAL_LOCATION;
}
- public final class ULocale implements java.lang.Comparable java.io.Serializable {
- ctor public ULocale(java.lang.String);
- ctor public ULocale(java.lang.String, java.lang.String);
- ctor public ULocale(java.lang.String, java.lang.String, java.lang.String);
- method public static android.icu.util.ULocale acceptLanguage(java.lang.String, android.icu.util.ULocale[], boolean[]);
+ public final class ULocale implements java.lang.Comparable<android.icu.util.ULocale> java.io.Serializable {
+ ctor public ULocale(String);
+ ctor public ULocale(String, String);
+ ctor public ULocale(String, String, String);
+ method public static android.icu.util.ULocale acceptLanguage(String, android.icu.util.ULocale[], boolean[]);
method public static android.icu.util.ULocale acceptLanguage(android.icu.util.ULocale[], android.icu.util.ULocale[], boolean[]);
- method public static android.icu.util.ULocale acceptLanguage(java.lang.String, boolean[]);
+ method public static android.icu.util.ULocale acceptLanguage(String, boolean[]);
method public static android.icu.util.ULocale acceptLanguage(android.icu.util.ULocale[], boolean[]);
method public static android.icu.util.ULocale addLikelySubtags(android.icu.util.ULocale);
- method public static java.lang.String canonicalize(java.lang.String);
- method public java.lang.Object clone();
+ method public static String canonicalize(String);
+ method public Object clone();
method public int compareTo(android.icu.util.ULocale);
- method public static android.icu.util.ULocale createCanonical(java.lang.String);
- method public static android.icu.util.ULocale forLanguageTag(java.lang.String);
+ method public static android.icu.util.ULocale createCanonical(String);
+ method public static android.icu.util.ULocale forLanguageTag(String);
method public static android.icu.util.ULocale forLocale(java.util.Locale);
method public static android.icu.util.ULocale[] getAvailableLocales();
- method public java.lang.String getBaseName();
- method public static java.lang.String getBaseName(java.lang.String);
- method public java.lang.String getCharacterOrientation();
- method public java.lang.String getCountry();
- method public static java.lang.String getCountry(java.lang.String);
+ method public String getBaseName();
+ method public static String getBaseName(String);
+ method public String getCharacterOrientation();
+ method public String getCountry();
+ method public static String getCountry(String);
method public static android.icu.util.ULocale getDefault();
method public static android.icu.util.ULocale getDefault(android.icu.util.ULocale.Category);
- method public java.lang.String getDisplayCountry();
- method public java.lang.String getDisplayCountry(android.icu.util.ULocale);
- method public static java.lang.String getDisplayCountry(java.lang.String, java.lang.String);
- method public static java.lang.String getDisplayCountry(java.lang.String, android.icu.util.ULocale);
- method public static java.lang.String getDisplayKeyword(java.lang.String);
- method public static java.lang.String getDisplayKeyword(java.lang.String, java.lang.String);
- method public static java.lang.String getDisplayKeyword(java.lang.String, android.icu.util.ULocale);
- method public java.lang.String getDisplayKeywordValue(java.lang.String);
- method public java.lang.String getDisplayKeywordValue(java.lang.String, android.icu.util.ULocale);
- method public static java.lang.String getDisplayKeywordValue(java.lang.String, java.lang.String, java.lang.String);
- method public static java.lang.String getDisplayKeywordValue(java.lang.String, java.lang.String, android.icu.util.ULocale);
- method public java.lang.String getDisplayLanguage();
- method public java.lang.String getDisplayLanguage(android.icu.util.ULocale);
- method public static java.lang.String getDisplayLanguage(java.lang.String, java.lang.String);
- method public static java.lang.String getDisplayLanguage(java.lang.String, android.icu.util.ULocale);
- method public java.lang.String getDisplayLanguageWithDialect();
- method public java.lang.String getDisplayLanguageWithDialect(android.icu.util.ULocale);
- method public static java.lang.String getDisplayLanguageWithDialect(java.lang.String, java.lang.String);
- method public static java.lang.String getDisplayLanguageWithDialect(java.lang.String, android.icu.util.ULocale);
- method public java.lang.String getDisplayName();
- method public java.lang.String getDisplayName(android.icu.util.ULocale);
- method public static java.lang.String getDisplayName(java.lang.String, java.lang.String);
- method public static java.lang.String getDisplayName(java.lang.String, android.icu.util.ULocale);
- method public java.lang.String getDisplayNameWithDialect();
- method public java.lang.String getDisplayNameWithDialect(android.icu.util.ULocale);
- method public static java.lang.String getDisplayNameWithDialect(java.lang.String, java.lang.String);
- method public static java.lang.String getDisplayNameWithDialect(java.lang.String, android.icu.util.ULocale);
- method public java.lang.String getDisplayScript();
- method public java.lang.String getDisplayScript(android.icu.util.ULocale);
- method public static java.lang.String getDisplayScript(java.lang.String, java.lang.String);
- method public static java.lang.String getDisplayScript(java.lang.String, android.icu.util.ULocale);
- method public java.lang.String getDisplayVariant();
- method public java.lang.String getDisplayVariant(android.icu.util.ULocale);
- method public static java.lang.String getDisplayVariant(java.lang.String, java.lang.String);
- method public static java.lang.String getDisplayVariant(java.lang.String, android.icu.util.ULocale);
- method public java.lang.String getExtension(char);
+ method public String getDisplayCountry();
+ method public String getDisplayCountry(android.icu.util.ULocale);
+ method public static String getDisplayCountry(String, String);
+ method public static String getDisplayCountry(String, android.icu.util.ULocale);
+ method public static String getDisplayKeyword(String);
+ method public static String getDisplayKeyword(String, String);
+ method public static String getDisplayKeyword(String, android.icu.util.ULocale);
+ method public String getDisplayKeywordValue(String);
+ method public String getDisplayKeywordValue(String, android.icu.util.ULocale);
+ method public static String getDisplayKeywordValue(String, String, String);
+ method public static String getDisplayKeywordValue(String, String, android.icu.util.ULocale);
+ method public String getDisplayLanguage();
+ method public String getDisplayLanguage(android.icu.util.ULocale);
+ method public static String getDisplayLanguage(String, String);
+ method public static String getDisplayLanguage(String, android.icu.util.ULocale);
+ method public String getDisplayLanguageWithDialect();
+ method public String getDisplayLanguageWithDialect(android.icu.util.ULocale);
+ method public static String getDisplayLanguageWithDialect(String, String);
+ method public static String getDisplayLanguageWithDialect(String, android.icu.util.ULocale);
+ method public String getDisplayName();
+ method public String getDisplayName(android.icu.util.ULocale);
+ method public static String getDisplayName(String, String);
+ method public static String getDisplayName(String, android.icu.util.ULocale);
+ method public String getDisplayNameWithDialect();
+ method public String getDisplayNameWithDialect(android.icu.util.ULocale);
+ method public static String getDisplayNameWithDialect(String, String);
+ method public static String getDisplayNameWithDialect(String, android.icu.util.ULocale);
+ method public String getDisplayScript();
+ method public String getDisplayScript(android.icu.util.ULocale);
+ method public static String getDisplayScript(String, String);
+ method public static String getDisplayScript(String, android.icu.util.ULocale);
+ method public String getDisplayVariant();
+ method public String getDisplayVariant(android.icu.util.ULocale);
+ method public static String getDisplayVariant(String, String);
+ method public static String getDisplayVariant(String, android.icu.util.ULocale);
+ method public String getExtension(char);
method public java.util.Set<java.lang.Character> getExtensionKeys();
- method public static java.lang.String getFallback(java.lang.String);
+ method public static String getFallback(String);
method public android.icu.util.ULocale getFallback();
- method public java.lang.String getISO3Country();
- method public static java.lang.String getISO3Country(java.lang.String);
- method public java.lang.String getISO3Language();
- method public static java.lang.String getISO3Language(java.lang.String);
- method public static java.lang.String[] getISOCountries();
- method public static java.lang.String[] getISOLanguages();
- method public java.lang.String getKeywordValue(java.lang.String);
- method public static java.lang.String getKeywordValue(java.lang.String, java.lang.String);
+ method public String getISO3Country();
+ method public static String getISO3Country(String);
+ method public String getISO3Language();
+ method public static String getISO3Language(String);
+ method public static String[] getISOCountries();
+ method public static String[] getISOLanguages();
+ method public String getKeywordValue(String);
+ method public static String getKeywordValue(String, String);
method public java.util.Iterator<java.lang.String> getKeywords();
- method public static java.util.Iterator<java.lang.String> getKeywords(java.lang.String);
- method public java.lang.String getLanguage();
- method public static java.lang.String getLanguage(java.lang.String);
- method public java.lang.String getLineOrientation();
- method public java.lang.String getName();
- method public static java.lang.String getName(java.lang.String);
- method public java.lang.String getScript();
- method public static java.lang.String getScript(java.lang.String);
+ method public static java.util.Iterator<java.lang.String> getKeywords(String);
+ method public String getLanguage();
+ method public static String getLanguage(String);
+ method public String getLineOrientation();
+ method public String getName();
+ method public static String getName(String);
+ method public String getScript();
+ method public static String getScript(String);
method public java.util.Set<java.lang.String> getUnicodeLocaleAttributes();
method public java.util.Set<java.lang.String> getUnicodeLocaleKeys();
- method public java.lang.String getUnicodeLocaleType(java.lang.String);
- method public java.lang.String getVariant();
- method public static java.lang.String getVariant(java.lang.String);
+ method public String getUnicodeLocaleType(String);
+ method public String getVariant();
+ method public static String getVariant(String);
method public boolean isRightToLeft();
method public static android.icu.util.ULocale minimizeSubtags(android.icu.util.ULocale);
- method public android.icu.util.ULocale setKeywordValue(java.lang.String, java.lang.String);
- method public static java.lang.String setKeywordValue(java.lang.String, java.lang.String, java.lang.String);
- method public java.lang.String toLanguageTag();
- method public static java.lang.String toLegacyKey(java.lang.String);
- method public static java.lang.String toLegacyType(java.lang.String, java.lang.String);
+ method public android.icu.util.ULocale setKeywordValue(String, String);
+ method public static String setKeywordValue(String, String, String);
+ method public String toLanguageTag();
+ method public static String toLegacyKey(String);
+ method public static String toLegacyType(String, String);
method public java.util.Locale toLocale();
- method public static java.lang.String toUnicodeLocaleKey(java.lang.String);
- method public static java.lang.String toUnicodeLocaleType(java.lang.String, java.lang.String);
+ method public static String toUnicodeLocaleKey(String);
+ method public static String toUnicodeLocaleType(String, String);
field public static final android.icu.util.ULocale CANADA;
field public static final android.icu.util.ULocale CANADA_FRENCH;
field public static final android.icu.util.ULocale CHINA;
@@ -22142,24 +22051,22 @@
public static final class ULocale.Builder {
ctor public ULocale.Builder();
- method public android.icu.util.ULocale.Builder addUnicodeLocaleAttribute(java.lang.String);
+ method public android.icu.util.ULocale.Builder addUnicodeLocaleAttribute(String);
method public android.icu.util.ULocale build();
method public android.icu.util.ULocale.Builder clear();
method public android.icu.util.ULocale.Builder clearExtensions();
- method public android.icu.util.ULocale.Builder removeUnicodeLocaleAttribute(java.lang.String);
- method public android.icu.util.ULocale.Builder setExtension(char, java.lang.String);
- method public android.icu.util.ULocale.Builder setLanguage(java.lang.String);
- method public android.icu.util.ULocale.Builder setLanguageTag(java.lang.String);
+ method public android.icu.util.ULocale.Builder removeUnicodeLocaleAttribute(String);
+ method public android.icu.util.ULocale.Builder setExtension(char, String);
+ method public android.icu.util.ULocale.Builder setLanguage(String);
+ method public android.icu.util.ULocale.Builder setLanguageTag(String);
method public android.icu.util.ULocale.Builder setLocale(android.icu.util.ULocale);
- method public android.icu.util.ULocale.Builder setRegion(java.lang.String);
- method public android.icu.util.ULocale.Builder setScript(java.lang.String);
- method public android.icu.util.ULocale.Builder setUnicodeLocaleKeyword(java.lang.String, java.lang.String);
- method public android.icu.util.ULocale.Builder setVariant(java.lang.String);
+ method public android.icu.util.ULocale.Builder setRegion(String);
+ method public android.icu.util.ULocale.Builder setScript(String);
+ method public android.icu.util.ULocale.Builder setUnicodeLocaleKeyword(String, String);
+ method public android.icu.util.ULocale.Builder setVariant(String);
}
- public static final class ULocale.Category extends java.lang.Enum {
- method public static android.icu.util.ULocale.Category valueOf(java.lang.String);
- method public static final android.icu.util.ULocale.Category[] values();
+ public enum ULocale.Category {
enum_constant public static final android.icu.util.ULocale.Category DISPLAY;
enum_constant public static final android.icu.util.ULocale.Category FORMAT;
}
@@ -22184,7 +22091,7 @@
field public static final int JAVA_TIME = 0; // 0x0
field public static final int MAC_OLD_TIME = 5; // 0x5
field public static final int MAC_TIME = 6; // 0x6
- field public static final deprecated int MAX_SCALE = 10; // 0xa
+ field @Deprecated public static final int MAX_SCALE = 10; // 0xa
field public static final int TO_MAX_VALUE = 5; // 0x5
field public static final int TO_MIN_VALUE = 4; // 0x4
field public static final int UNITS_VALUE = 0; // 0x0
@@ -22193,21 +22100,21 @@
field public static final int WINDOWS_FILE_TIME = 3; // 0x3
}
- public abstract interface ValueIterator {
- method public abstract boolean next(android.icu.util.ValueIterator.Element);
- method public abstract void reset();
- method public abstract void setRange(int, int);
+ public interface ValueIterator {
+ method public boolean next(android.icu.util.ValueIterator.Element);
+ method public void reset();
+ method public void setRange(int, int);
}
public static final class ValueIterator.Element {
ctor public ValueIterator.Element();
field public int integer;
- field public java.lang.Object value;
+ field public Object value;
}
- public final class VersionInfo implements java.lang.Comparable {
+ public final class VersionInfo implements java.lang.Comparable<android.icu.util.VersionInfo> {
method public int compareTo(android.icu.util.VersionInfo);
- method public static android.icu.util.VersionInfo getInstance(java.lang.String);
+ method public static android.icu.util.VersionInfo getInstance(String);
method public static android.icu.util.VersionInfo getInstance(int, int, int, int);
method public static android.icu.util.VersionInfo getInstance(int, int, int);
method public static android.icu.util.VersionInfo getInstance(int, int);
@@ -22266,9 +22173,9 @@
public abstract class AbstractInputMethodService.AbstractInputMethodImpl implements android.view.inputmethod.InputMethod {
ctor public AbstractInputMethodService.AbstractInputMethodImpl();
- method public void createSession(android.view.inputmethod.InputMethod.SessionCallback);
- method public void revokeSession(android.view.inputmethod.InputMethodSession);
- method public void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
+ method @MainThread public void createSession(android.view.inputmethod.InputMethod.SessionCallback);
+ method @MainThread public void revokeSession(android.view.inputmethod.InputMethodSession);
+ method @MainThread public void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
}
public abstract class AbstractInputMethodService.AbstractInputMethodSessionImpl implements android.view.inputmethod.InputMethodSession {
@@ -22294,17 +22201,17 @@
public class InputMethodService extends android.inputmethodservice.AbstractInputMethodService {
ctor public InputMethodService();
- method public deprecated boolean enableHardwareAcceleration();
+ method @Deprecated public boolean enableHardwareAcceleration();
method public int getBackDisposition();
method public int getCandidatesHiddenVisibility();
method public android.view.inputmethod.InputBinding getCurrentInputBinding();
method public android.view.inputmethod.InputConnection getCurrentInputConnection();
method public android.view.inputmethod.EditorInfo getCurrentInputEditorInfo();
method public boolean getCurrentInputStarted();
- method public deprecated int getInputMethodWindowRecommendedHeight();
+ method @Deprecated public int getInputMethodWindowRecommendedHeight();
method public android.view.LayoutInflater getLayoutInflater();
method public int getMaxWidth();
- method public java.lang.CharSequence getTextForImeAction(int);
+ method public CharSequence getTextForImeAction(int);
method public android.app.Dialog getWindow();
method public void hideStatusIcon();
method public void hideWindow();
@@ -22312,7 +22219,7 @@
method public boolean isFullscreenMode();
method public boolean isInputViewShown();
method public boolean isShowInputRequested();
- method public void onAppPrivateCommand(java.lang.String, android.os.Bundle);
+ method public void onAppPrivateCommand(String, android.os.Bundle);
method public void onBindInput();
method public void onComputeInsets(android.inputmethodservice.InputMethodService.Insets);
method public void onConfigureWindow(android.view.Window, boolean, boolean);
@@ -22324,7 +22231,7 @@
method protected void onCurrentInputMethodSubtypeChanged(android.view.inputmethod.InputMethodSubtype);
method public void onDisplayCompletions(android.view.inputmethod.CompletionInfo[]);
method public boolean onEvaluateFullscreenMode();
- method public boolean onEvaluateInputViewShown();
+ method @CallSuper public boolean onEvaluateInputViewShown();
method public boolean onExtractTextContextMenuItem(int);
method public void onExtractedCursorMovement(int, int);
method public void onExtractedSelectionChanged(int, int);
@@ -22343,7 +22250,7 @@
method public void onStartInput(android.view.inputmethod.EditorInfo, boolean);
method public void onStartInputView(android.view.inputmethod.EditorInfo, boolean);
method public void onUnbindInput();
- method public deprecated void onUpdateCursor(android.graphics.Rect);
+ method @Deprecated public void onUpdateCursor(android.graphics.Rect);
method public void onUpdateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
method public void onUpdateExtractedText(int, android.view.inputmethod.ExtractedText);
method public void onUpdateExtractingViews(android.view.inputmethod.EditorInfo);
@@ -22364,35 +22271,35 @@
method public void setExtractViewShown(boolean);
method public void setInputView(android.view.View);
method public final boolean shouldOfferSwitchingToNextInputMethod();
- method public void showStatusIcon(int);
+ method public void showStatusIcon(@DrawableRes int);
method public void showWindow(boolean);
- method public void switchInputMethod(java.lang.String);
- method public final void switchInputMethod(java.lang.String, android.view.inputmethod.InputMethodSubtype);
+ method public void switchInputMethod(String);
+ method public final void switchInputMethod(String, android.view.inputmethod.InputMethodSubtype);
method public final boolean switchToNextInputMethod(boolean);
method public final boolean switchToPreviousInputMethod();
method public void updateFullscreenMode();
method public void updateInputViewShown();
field public static final int BACK_DISPOSITION_ADJUST_NOTHING = 3; // 0x3
field public static final int BACK_DISPOSITION_DEFAULT = 0; // 0x0
- field public static final deprecated int BACK_DISPOSITION_WILL_DISMISS = 2; // 0x2
- field public static final deprecated int BACK_DISPOSITION_WILL_NOT_DISMISS = 1; // 0x1
+ field @Deprecated public static final int BACK_DISPOSITION_WILL_DISMISS = 2; // 0x2
+ field @Deprecated public static final int BACK_DISPOSITION_WILL_NOT_DISMISS = 1; // 0x1
}
public class InputMethodService.InputMethodImpl extends android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl {
ctor public InputMethodService.InputMethodImpl();
- method public void attachToken(android.os.IBinder);
- method public void bindInput(android.view.inputmethod.InputBinding);
- method public void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
- method public void hideSoftInput(int, android.os.ResultReceiver);
- method public void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
- method public void showSoftInput(int, android.os.ResultReceiver);
- method public void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
- method public void unbindInput();
+ method @MainThread public void attachToken(android.os.IBinder);
+ method @MainThread public void bindInput(android.view.inputmethod.InputBinding);
+ method @MainThread public void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
+ method @MainThread public void hideSoftInput(int, android.os.ResultReceiver);
+ method @MainThread public void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+ method @MainThread public void showSoftInput(int, android.os.ResultReceiver);
+ method @MainThread public void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+ method @MainThread public void unbindInput();
}
public class InputMethodService.InputMethodSessionImpl extends android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl {
ctor public InputMethodService.InputMethodSessionImpl();
- method public void appPrivateCommand(java.lang.String, android.os.Bundle);
+ method public void appPrivateCommand(String, android.os.Bundle);
method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
method public void finishInput();
method public void toggleSoftInput(int, int);
@@ -22415,122 +22322,122 @@
field public int visibleTopInsets;
}
- public deprecated class Keyboard {
- ctor public Keyboard(android.content.Context, int);
- ctor public Keyboard(android.content.Context, int, int, int, int);
- ctor public Keyboard(android.content.Context, int, int);
- ctor public Keyboard(android.content.Context, int, java.lang.CharSequence, int, int);
- method protected android.inputmethodservice.Keyboard.Key createKeyFromXml(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
- method protected android.inputmethodservice.Keyboard.Row createRowFromXml(android.content.res.Resources, android.content.res.XmlResourceParser);
- method public int getHeight();
- method protected int getHorizontalGap();
- method protected int getKeyHeight();
- method protected int getKeyWidth();
- method public java.util.List<android.inputmethodservice.Keyboard.Key> getKeys();
- method public int getMinWidth();
- method public java.util.List<android.inputmethodservice.Keyboard.Key> getModifierKeys();
- method public int[] getNearestKeys(int, int);
- method public int getShiftKeyIndex();
- method protected int getVerticalGap();
- method public boolean isShifted();
- method protected void setHorizontalGap(int);
- method protected void setKeyHeight(int);
- method protected void setKeyWidth(int);
- method public boolean setShifted(boolean);
- method protected void setVerticalGap(int);
- field public static final int EDGE_BOTTOM = 8; // 0x8
- field public static final int EDGE_LEFT = 1; // 0x1
- field public static final int EDGE_RIGHT = 2; // 0x2
- field public static final int EDGE_TOP = 4; // 0x4
- field public static final int KEYCODE_ALT = -6; // 0xfffffffa
- field public static final int KEYCODE_CANCEL = -3; // 0xfffffffd
- field public static final int KEYCODE_DELETE = -5; // 0xfffffffb
- field public static final int KEYCODE_DONE = -4; // 0xfffffffc
- field public static final int KEYCODE_MODE_CHANGE = -2; // 0xfffffffe
- field public static final int KEYCODE_SHIFT = -1; // 0xffffffff
+ @Deprecated public class Keyboard {
+ ctor @Deprecated public Keyboard(android.content.Context, int);
+ ctor @Deprecated public Keyboard(android.content.Context, @XmlRes int, int, int, int);
+ ctor @Deprecated public Keyboard(android.content.Context, @XmlRes int, int);
+ ctor @Deprecated public Keyboard(android.content.Context, int, CharSequence, int, int);
+ method @Deprecated protected android.inputmethodservice.Keyboard.Key createKeyFromXml(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
+ method @Deprecated protected android.inputmethodservice.Keyboard.Row createRowFromXml(android.content.res.Resources, android.content.res.XmlResourceParser);
+ method @Deprecated public int getHeight();
+ method @Deprecated protected int getHorizontalGap();
+ method @Deprecated protected int getKeyHeight();
+ method @Deprecated protected int getKeyWidth();
+ method @Deprecated public java.util.List<android.inputmethodservice.Keyboard.Key> getKeys();
+ method @Deprecated public int getMinWidth();
+ method @Deprecated public java.util.List<android.inputmethodservice.Keyboard.Key> getModifierKeys();
+ method @Deprecated public int[] getNearestKeys(int, int);
+ method @Deprecated public int getShiftKeyIndex();
+ method @Deprecated protected int getVerticalGap();
+ method @Deprecated public boolean isShifted();
+ method @Deprecated protected void setHorizontalGap(int);
+ method @Deprecated protected void setKeyHeight(int);
+ method @Deprecated protected void setKeyWidth(int);
+ method @Deprecated public boolean setShifted(boolean);
+ method @Deprecated protected void setVerticalGap(int);
+ field @Deprecated public static final int EDGE_BOTTOM = 8; // 0x8
+ field @Deprecated public static final int EDGE_LEFT = 1; // 0x1
+ field @Deprecated public static final int EDGE_RIGHT = 2; // 0x2
+ field @Deprecated public static final int EDGE_TOP = 4; // 0x4
+ field @Deprecated public static final int KEYCODE_ALT = -6; // 0xfffffffa
+ field @Deprecated public static final int KEYCODE_CANCEL = -3; // 0xfffffffd
+ field @Deprecated public static final int KEYCODE_DELETE = -5; // 0xfffffffb
+ field @Deprecated public static final int KEYCODE_DONE = -4; // 0xfffffffc
+ field @Deprecated public static final int KEYCODE_MODE_CHANGE = -2; // 0xfffffffe
+ field @Deprecated public static final int KEYCODE_SHIFT = -1; // 0xffffffff
}
- public static class Keyboard.Key {
- ctor public Keyboard.Key(android.inputmethodservice.Keyboard.Row);
- ctor public Keyboard.Key(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
- method public int[] getCurrentDrawableState();
- method public boolean isInside(int, int);
- method public void onPressed();
- method public void onReleased(boolean);
- method public int squaredDistanceFrom(int, int);
- field public int[] codes;
- field public int edgeFlags;
- field public int gap;
- field public int height;
- field public android.graphics.drawable.Drawable icon;
- field public android.graphics.drawable.Drawable iconPreview;
- field public java.lang.CharSequence label;
- field public boolean modifier;
- field public boolean on;
- field public java.lang.CharSequence popupCharacters;
- field public int popupResId;
- field public boolean pressed;
- field public boolean repeatable;
- field public boolean sticky;
- field public java.lang.CharSequence text;
- field public int width;
- field public int x;
- field public int y;
+ @Deprecated public static class Keyboard.Key {
+ ctor @Deprecated public Keyboard.Key(android.inputmethodservice.Keyboard.Row);
+ ctor @Deprecated public Keyboard.Key(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
+ method @Deprecated public int[] getCurrentDrawableState();
+ method @Deprecated public boolean isInside(int, int);
+ method @Deprecated public void onPressed();
+ method @Deprecated public void onReleased(boolean);
+ method @Deprecated public int squaredDistanceFrom(int, int);
+ field @Deprecated public int[] codes;
+ field @Deprecated public int edgeFlags;
+ field @Deprecated public int gap;
+ field @Deprecated public int height;
+ field @Deprecated public android.graphics.drawable.Drawable icon;
+ field @Deprecated public android.graphics.drawable.Drawable iconPreview;
+ field @Deprecated public CharSequence label;
+ field @Deprecated public boolean modifier;
+ field @Deprecated public boolean on;
+ field @Deprecated public CharSequence popupCharacters;
+ field @Deprecated public int popupResId;
+ field @Deprecated public boolean pressed;
+ field @Deprecated public boolean repeatable;
+ field @Deprecated public boolean sticky;
+ field @Deprecated public CharSequence text;
+ field @Deprecated public int width;
+ field @Deprecated public int x;
+ field @Deprecated public int y;
}
- public static class Keyboard.Row {
- ctor public Keyboard.Row(android.inputmethodservice.Keyboard);
- ctor public Keyboard.Row(android.content.res.Resources, android.inputmethodservice.Keyboard, android.content.res.XmlResourceParser);
- field public int defaultHeight;
- field public int defaultHorizontalGap;
- field public int defaultWidth;
- field public int mode;
- field public int rowEdgeFlags;
- field public int verticalGap;
+ @Deprecated public static class Keyboard.Row {
+ ctor @Deprecated public Keyboard.Row(android.inputmethodservice.Keyboard);
+ ctor @Deprecated public Keyboard.Row(android.content.res.Resources, android.inputmethodservice.Keyboard, android.content.res.XmlResourceParser);
+ field @Deprecated public int defaultHeight;
+ field @Deprecated public int defaultHorizontalGap;
+ field @Deprecated public int defaultWidth;
+ field @Deprecated public int mode;
+ field @Deprecated public int rowEdgeFlags;
+ field @Deprecated public int verticalGap;
}
- public deprecated class KeyboardView extends android.view.View implements android.view.View.OnClickListener {
- ctor public KeyboardView(android.content.Context, android.util.AttributeSet);
- ctor public KeyboardView(android.content.Context, android.util.AttributeSet, int);
- ctor public KeyboardView(android.content.Context, android.util.AttributeSet, int, int);
- method public void closing();
- method public android.inputmethodservice.Keyboard getKeyboard();
- method protected android.inputmethodservice.KeyboardView.OnKeyboardActionListener getOnKeyboardActionListener();
- method public boolean handleBack();
- method public void invalidateAllKeys();
- method public void invalidateKey(int);
- method public boolean isPreviewEnabled();
- method public boolean isProximityCorrectionEnabled();
- method public boolean isShifted();
+ @Deprecated public class KeyboardView extends android.view.View implements android.view.View.OnClickListener {
+ ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet, int, int);
+ method @Deprecated public void closing();
+ method @Deprecated public android.inputmethodservice.Keyboard getKeyboard();
+ method @Deprecated protected android.inputmethodservice.KeyboardView.OnKeyboardActionListener getOnKeyboardActionListener();
+ method @Deprecated public boolean handleBack();
+ method @Deprecated public void invalidateAllKeys();
+ method @Deprecated public void invalidateKey(int);
+ method @Deprecated public boolean isPreviewEnabled();
+ method @Deprecated public boolean isProximityCorrectionEnabled();
+ method @Deprecated public boolean isShifted();
method public void onClick(android.view.View);
- method public void onDetachedFromWindow();
- method public void onDraw(android.graphics.Canvas);
- method protected boolean onLongPress(android.inputmethodservice.Keyboard.Key);
- method public void onMeasure(int, int);
- method public void onSizeChanged(int, int, int, int);
- method public void setKeyboard(android.inputmethodservice.Keyboard);
- method public void setOnKeyboardActionListener(android.inputmethodservice.KeyboardView.OnKeyboardActionListener);
- method public void setPopupOffset(int, int);
- method public void setPopupParent(android.view.View);
- method public void setPreviewEnabled(boolean);
- method public void setProximityCorrectionEnabled(boolean);
- method public boolean setShifted(boolean);
- method public void setVerticalCorrection(int);
- method protected void swipeDown();
- method protected void swipeLeft();
- method protected void swipeRight();
- method protected void swipeUp();
+ method @Deprecated public void onDetachedFromWindow();
+ method @Deprecated public void onDraw(android.graphics.Canvas);
+ method @Deprecated protected boolean onLongPress(android.inputmethodservice.Keyboard.Key);
+ method @Deprecated public void onMeasure(int, int);
+ method @Deprecated public void onSizeChanged(int, int, int, int);
+ method @Deprecated public void setKeyboard(android.inputmethodservice.Keyboard);
+ method @Deprecated public void setOnKeyboardActionListener(android.inputmethodservice.KeyboardView.OnKeyboardActionListener);
+ method @Deprecated public void setPopupOffset(int, int);
+ method @Deprecated public void setPopupParent(android.view.View);
+ method @Deprecated public void setPreviewEnabled(boolean);
+ method @Deprecated public void setProximityCorrectionEnabled(boolean);
+ method @Deprecated public boolean setShifted(boolean);
+ method @Deprecated public void setVerticalCorrection(int);
+ method @Deprecated protected void swipeDown();
+ method @Deprecated protected void swipeLeft();
+ method @Deprecated protected void swipeRight();
+ method @Deprecated protected void swipeUp();
}
- public static abstract interface KeyboardView.OnKeyboardActionListener {
- method public abstract void onKey(int, int[]);
- method public abstract void onPress(int);
- method public abstract void onRelease(int);
- method public abstract void onText(java.lang.CharSequence);
- method public abstract void swipeDown();
- method public abstract void swipeLeft();
- method public abstract void swipeRight();
- method public abstract void swipeUp();
+ @Deprecated public static interface KeyboardView.OnKeyboardActionListener {
+ method @Deprecated public void onKey(int, int[]);
+ method @Deprecated public void onPress(int);
+ method @Deprecated public void onRelease(int);
+ method @Deprecated public void onText(CharSequence);
+ method @Deprecated public void swipeDown();
+ method @Deprecated public void swipeLeft();
+ method @Deprecated public void swipeRight();
+ method @Deprecated public void swipeUp();
}
}
@@ -22542,44 +22449,44 @@
method public void clearLatitude();
method public void clearLongitude();
method public int describeContents();
- method public java.lang.String getAddressLine(int);
- method public java.lang.String getAdminArea();
- method public java.lang.String getCountryCode();
- method public java.lang.String getCountryName();
+ method public String getAddressLine(int);
+ method public String getAdminArea();
+ method public String getCountryCode();
+ method public String getCountryName();
method public android.os.Bundle getExtras();
- method public java.lang.String getFeatureName();
+ method public String getFeatureName();
method public double getLatitude();
method public java.util.Locale getLocale();
- method public java.lang.String getLocality();
+ method public String getLocality();
method public double getLongitude();
method public int getMaxAddressLineIndex();
- method public java.lang.String getPhone();
- method public java.lang.String getPostalCode();
- method public java.lang.String getPremises();
- method public java.lang.String getSubAdminArea();
- method public java.lang.String getSubLocality();
- method public java.lang.String getSubThoroughfare();
- method public java.lang.String getThoroughfare();
- method public java.lang.String getUrl();
+ method public String getPhone();
+ method public String getPostalCode();
+ method public String getPremises();
+ method public String getSubAdminArea();
+ method public String getSubLocality();
+ method public String getSubThoroughfare();
+ method public String getThoroughfare();
+ method public String getUrl();
method public boolean hasLatitude();
method public boolean hasLongitude();
- method public void setAddressLine(int, java.lang.String);
- method public void setAdminArea(java.lang.String);
- method public void setCountryCode(java.lang.String);
- method public void setCountryName(java.lang.String);
+ method public void setAddressLine(int, String);
+ method public void setAdminArea(String);
+ method public void setCountryCode(String);
+ method public void setCountryName(String);
method public void setExtras(android.os.Bundle);
- method public void setFeatureName(java.lang.String);
+ method public void setFeatureName(String);
method public void setLatitude(double);
- method public void setLocality(java.lang.String);
+ method public void setLocality(String);
method public void setLongitude(double);
- method public void setPhone(java.lang.String);
- method public void setPostalCode(java.lang.String);
- method public void setPremises(java.lang.String);
- method public void setSubAdminArea(java.lang.String);
- method public void setSubLocality(java.lang.String);
- method public void setSubThoroughfare(java.lang.String);
- method public void setThoroughfare(java.lang.String);
- method public void setUrl(java.lang.String);
+ method public void setPhone(String);
+ method public void setPostalCode(String);
+ method public void setPremises(String);
+ method public void setSubAdminArea(String);
+ method public void setSubLocality(String);
+ method public void setSubThoroughfare(String);
+ method public void setThoroughfare(String);
+ method public void setUrl(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.location.Address> CREATOR;
}
@@ -22625,8 +22532,8 @@
ctor public Geocoder(android.content.Context, java.util.Locale);
ctor public Geocoder(android.content.Context);
method public java.util.List<android.location.Address> getFromLocation(double, double, int) throws java.io.IOException;
- method public java.util.List<android.location.Address> getFromLocationName(java.lang.String, int) throws java.io.IOException;
- method public java.util.List<android.location.Address> getFromLocationName(java.lang.String, int, double, double, double, double) throws java.io.IOException;
+ method public java.util.List<android.location.Address> getFromLocationName(String, int) throws java.io.IOException;
+ method public java.util.List<android.location.Address> getFromLocationName(String, int, double, double, double, double) throws java.io.IOException;
method public static boolean isPresent();
}
@@ -22658,11 +22565,12 @@
method public int getAccumulatedDeltaRangeState();
method public double getAccumulatedDeltaRangeUncertaintyMeters();
method public double getAutomaticGainControlLevelDb();
- method public deprecated long getCarrierCycles();
+ method @Deprecated public long getCarrierCycles();
method public float getCarrierFrequencyHz();
- method public deprecated double getCarrierPhase();
- method public deprecated double getCarrierPhaseUncertainty();
+ method @Deprecated public double getCarrierPhase();
+ method @Deprecated public double getCarrierPhaseUncertainty();
method public double getCn0DbHz();
+ method public int getCodeType();
method public int getConstellationType();
method public int getMultipathIndicator();
method public double getPseudorangeRateMetersPerSecond();
@@ -22674,10 +22582,11 @@
method public int getSvid();
method public double getTimeOffsetNanos();
method public boolean hasAutomaticGainControlLevelDb();
- method public deprecated boolean hasCarrierCycles();
+ method @Deprecated public boolean hasCarrierCycles();
method public boolean hasCarrierFrequencyHz();
- method public deprecated boolean hasCarrierPhase();
- method public deprecated boolean hasCarrierPhaseUncertainty();
+ method @Deprecated public boolean hasCarrierPhase();
+ method @Deprecated public boolean hasCarrierPhaseUncertainty();
+ method public boolean hasCodeType();
method public boolean hasSnrInDb();
method public void writeToParcel(android.os.Parcel, int);
field public static final int ADR_STATE_CYCLE_SLIP = 4; // 0x4
@@ -22686,6 +22595,21 @@
field public static final int ADR_STATE_RESET = 2; // 0x2
field public static final int ADR_STATE_UNKNOWN = 0; // 0x0
field public static final int ADR_STATE_VALID = 1; // 0x1
+ field public static final int CODE_TYPE_A = 0; // 0x0
+ field public static final int CODE_TYPE_B = 1; // 0x1
+ field public static final int CODE_TYPE_C = 2; // 0x2
+ field public static final int CODE_TYPE_CODELESS = 13; // 0xd
+ field public static final int CODE_TYPE_I = 3; // 0x3
+ field public static final int CODE_TYPE_L = 4; // 0x4
+ field public static final int CODE_TYPE_M = 5; // 0x5
+ field public static final int CODE_TYPE_P = 6; // 0x6
+ field public static final int CODE_TYPE_Q = 7; // 0x7
+ field public static final int CODE_TYPE_S = 8; // 0x8
+ field public static final int CODE_TYPE_UNKNOWN = -1; // 0xffffffff
+ field public static final int CODE_TYPE_W = 9; // 0x9
+ field public static final int CODE_TYPE_X = 10; // 0xa
+ field public static final int CODE_TYPE_Y = 11; // 0xb
+ field public static final int CODE_TYPE_Z = 12; // 0xc
field public static final android.os.Parcelable.Creator<android.location.GnssMeasurement> CREATOR;
field public static final int MULTIPATH_INDICATOR_DETECTED = 1; // 0x1
field public static final int MULTIPATH_INDICATOR_NOT_DETECTED = 2; // 0x2
@@ -22711,13 +22635,13 @@
public final class GnssMeasurementsEvent implements android.os.Parcelable {
method public int describeContents();
- method public android.location.GnssClock getClock();
- method public java.util.Collection<android.location.GnssMeasurement> getMeasurements();
+ method @NonNull public android.location.GnssClock getClock();
+ method @NonNull public java.util.Collection<android.location.GnssMeasurement> getMeasurements();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.location.GnssMeasurementsEvent> CREATOR;
}
- public static abstract class GnssMeasurementsEvent.Callback {
+ public abstract static class GnssMeasurementsEvent.Callback {
ctor public GnssMeasurementsEvent.Callback();
method public void onGnssMeasurementsReceived(android.location.GnssMeasurementsEvent);
method public void onStatusChanged(int);
@@ -22729,7 +22653,7 @@
public final class GnssNavigationMessage implements android.os.Parcelable {
method public int describeContents();
- method public byte[] getData();
+ method @NonNull public byte[] getData();
method public int getMessageId();
method public int getStatus();
method public int getSubmessageId();
@@ -22752,7 +22676,7 @@
field public static final int TYPE_UNKNOWN = 0; // 0x0
}
- public static abstract class GnssNavigationMessage.Callback {
+ public abstract static class GnssNavigationMessage.Callback {
ctor public GnssNavigationMessage.Callback();
method public void onGnssNavigationMessageReceived(android.location.GnssNavigationMessage);
method public void onStatusChanged(int);
@@ -22782,7 +22706,7 @@
field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
}
- public static abstract class GnssStatus.Callback {
+ public abstract static class GnssStatus.Callback {
ctor public GnssStatus.Callback();
method public void onFirstFix(int);
method public void onSatelliteStatusChanged(android.location.GnssStatus);
@@ -22790,44 +22714,44 @@
method public void onStopped();
}
- public final deprecated class GpsSatellite {
- method public float getAzimuth();
- method public float getElevation();
- method public int getPrn();
- method public float getSnr();
- method public boolean hasAlmanac();
- method public boolean hasEphemeris();
- method public boolean usedInFix();
+ @Deprecated public final class GpsSatellite {
+ method @Deprecated public float getAzimuth();
+ method @Deprecated public float getElevation();
+ method @Deprecated public int getPrn();
+ method @Deprecated public float getSnr();
+ method @Deprecated public boolean hasAlmanac();
+ method @Deprecated public boolean hasEphemeris();
+ method @Deprecated public boolean usedInFix();
}
- public final deprecated class GpsStatus {
- method public int getMaxSatellites();
- method public java.lang.Iterable<android.location.GpsSatellite> getSatellites();
- method public int getTimeToFirstFix();
- field public static final int GPS_EVENT_FIRST_FIX = 3; // 0x3
- field public static final int GPS_EVENT_SATELLITE_STATUS = 4; // 0x4
- field public static final int GPS_EVENT_STARTED = 1; // 0x1
- field public static final int GPS_EVENT_STOPPED = 2; // 0x2
+ @Deprecated public final class GpsStatus {
+ method @Deprecated public int getMaxSatellites();
+ method @Deprecated public Iterable<android.location.GpsSatellite> getSatellites();
+ method @Deprecated public int getTimeToFirstFix();
+ field @Deprecated public static final int GPS_EVENT_FIRST_FIX = 3; // 0x3
+ field @Deprecated public static final int GPS_EVENT_SATELLITE_STATUS = 4; // 0x4
+ field @Deprecated public static final int GPS_EVENT_STARTED = 1; // 0x1
+ field @Deprecated public static final int GPS_EVENT_STOPPED = 2; // 0x2
}
- public static abstract deprecated interface GpsStatus.Listener {
- method public abstract void onGpsStatusChanged(int);
+ @Deprecated public static interface GpsStatus.Listener {
+ method @Deprecated public void onGpsStatusChanged(int);
}
- public static abstract deprecated interface GpsStatus.NmeaListener {
- method public abstract void onNmeaReceived(long, java.lang.String);
+ @Deprecated public static interface GpsStatus.NmeaListener {
+ method @Deprecated public void onNmeaReceived(long, String);
}
public class Location implements android.os.Parcelable {
- ctor public Location(java.lang.String);
+ ctor public Location(String);
ctor public Location(android.location.Location);
method public float bearingTo(android.location.Location);
- method public static java.lang.String convert(double, int);
- method public static double convert(java.lang.String);
+ method public static String convert(double, int);
+ method public static double convert(String);
method public int describeContents();
method public static void distanceBetween(double, double, double, double, float[]);
method public float distanceTo(android.location.Location);
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public float getAccuracy();
method public double getAltitude();
method public float getBearing();
@@ -22836,7 +22760,7 @@
method public android.os.Bundle getExtras();
method public double getLatitude();
method public double getLongitude();
- method public java.lang.String getProvider();
+ method public String getProvider();
method public float getSpeed();
method public float getSpeedAccuracyMetersPerSecond();
method public long getTime();
@@ -22849,10 +22773,10 @@
method public boolean hasSpeedAccuracy();
method public boolean hasVerticalAccuracy();
method public boolean isFromMockProvider();
- method public deprecated void removeAccuracy();
- method public deprecated void removeAltitude();
- method public deprecated void removeBearing();
- method public deprecated void removeSpeed();
+ method @Deprecated public void removeAccuracy();
+ method @Deprecated public void removeAltitude();
+ method @Deprecated public void removeBearing();
+ method @Deprecated public void removeSpeed();
method public void reset();
method public void set(android.location.Location);
method public void setAccuracy(float);
@@ -22863,7 +22787,7 @@
method public void setExtras(android.os.Bundle);
method public void setLatitude(double);
method public void setLongitude(double);
- method public void setProvider(java.lang.String);
+ method public void setProvider(String);
method public void setSpeed(float);
method public void setSpeedAccuracyMetersPerSecond(float);
method public void setTime(long);
@@ -22875,77 +22799,77 @@
field public static final int FORMAT_SECONDS = 2; // 0x2
}
- public abstract interface LocationListener {
- method public abstract void onLocationChanged(android.location.Location);
- method public abstract void onProviderDisabled(java.lang.String);
- method public abstract void onProviderEnabled(java.lang.String);
- method public abstract deprecated void onStatusChanged(java.lang.String, int, android.os.Bundle);
+ public interface LocationListener {
+ method public void onLocationChanged(android.location.Location);
+ method public void onProviderDisabled(String);
+ method public void onProviderEnabled(String);
+ method @Deprecated public void onStatusChanged(String, int, android.os.Bundle);
}
public class LocationManager {
- method public deprecated boolean addGpsStatusListener(android.location.GpsStatus.Listener);
- method public deprecated boolean addNmeaListener(android.location.GpsStatus.NmeaListener);
- method public boolean addNmeaListener(android.location.OnNmeaMessageListener);
- method public boolean addNmeaListener(android.location.OnNmeaMessageListener, android.os.Handler);
- method public void addProximityAlert(double, double, float, long, android.app.PendingIntent);
- method public void addTestProvider(java.lang.String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int);
- method public deprecated void clearTestProviderEnabled(java.lang.String);
- method public deprecated void clearTestProviderLocation(java.lang.String);
- method public deprecated void clearTestProviderStatus(java.lang.String);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addGpsStatusListener(android.location.GpsStatus.Listener);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(android.location.GpsStatus.NmeaListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(android.location.OnNmeaMessageListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(android.location.OnNmeaMessageListener, android.os.Handler);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void addProximityAlert(double, double, float, long, android.app.PendingIntent);
+ method public void addTestProvider(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int);
+ method @Deprecated public void clearTestProviderEnabled(String);
+ method @Deprecated public void clearTestProviderLocation(String);
+ method @Deprecated public void clearTestProviderStatus(String);
method public java.util.List<java.lang.String> getAllProviders();
- method public java.lang.String getBestProvider(android.location.Criteria, boolean);
- method public java.lang.String getGnssHardwareModelName();
+ method public String getBestProvider(android.location.Criteria, boolean);
+ method @Nullable public String getGnssHardwareModelName();
method public int getGnssYearOfHardware();
- method public deprecated android.location.GpsStatus getGpsStatus(android.location.GpsStatus);
- method public android.location.Location getLastKnownLocation(java.lang.String);
- method public android.location.LocationProvider getProvider(java.lang.String);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.location.GpsStatus getGpsStatus(android.location.GpsStatus);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.location.Location getLastKnownLocation(String);
+ method public android.location.LocationProvider getProvider(String);
method public java.util.List<java.lang.String> getProviders(boolean);
method public java.util.List<java.lang.String> getProviders(android.location.Criteria, boolean);
method public boolean isLocationEnabled();
- method public boolean isProviderEnabled(java.lang.String);
- method public boolean registerGnssMeasurementsCallback(android.location.GnssMeasurementsEvent.Callback);
- method public boolean registerGnssMeasurementsCallback(android.location.GnssMeasurementsEvent.Callback, android.os.Handler);
+ method public boolean isProviderEnabled(String);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(android.location.GnssMeasurementsEvent.Callback);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(android.location.GnssMeasurementsEvent.Callback, android.os.Handler);
method public boolean registerGnssNavigationMessageCallback(android.location.GnssNavigationMessage.Callback);
- method public boolean registerGnssNavigationMessageCallback(android.location.GnssNavigationMessage.Callback, android.os.Handler);
- method public boolean registerGnssStatusCallback(android.location.GnssStatus.Callback);
- method public boolean registerGnssStatusCallback(android.location.GnssStatus.Callback, android.os.Handler);
- method public deprecated void removeGpsStatusListener(android.location.GpsStatus.Listener);
- method public deprecated void removeNmeaListener(android.location.GpsStatus.NmeaListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(android.location.GnssNavigationMessage.Callback, android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(android.location.GnssStatus.Callback);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(android.location.GnssStatus.Callback, android.os.Handler);
+ method @Deprecated public void removeGpsStatusListener(android.location.GpsStatus.Listener);
+ method @Deprecated public void removeNmeaListener(android.location.GpsStatus.NmeaListener);
method public void removeNmeaListener(android.location.OnNmeaMessageListener);
- method public void removeProximityAlert(android.app.PendingIntent);
- method public void removeTestProvider(java.lang.String);
- method public void removeUpdates(android.location.LocationListener);
+ method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeProximityAlert(android.app.PendingIntent);
+ method public void removeTestProvider(String);
+ method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeUpdates(android.location.LocationListener);
method public void removeUpdates(android.app.PendingIntent);
- method public void requestLocationUpdates(java.lang.String, long, float, android.location.LocationListener);
- method public void requestLocationUpdates(java.lang.String, long, float, android.location.LocationListener, android.os.Looper);
- method public void requestLocationUpdates(long, float, android.location.Criteria, android.location.LocationListener, android.os.Looper);
- method public void requestLocationUpdates(java.lang.String, long, float, android.app.PendingIntent);
- method public void requestLocationUpdates(long, float, android.location.Criteria, android.app.PendingIntent);
- method public void requestSingleUpdate(java.lang.String, android.location.LocationListener, android.os.Looper);
- method public void requestSingleUpdate(android.location.Criteria, android.location.LocationListener, android.os.Looper);
- method public void requestSingleUpdate(java.lang.String, android.app.PendingIntent);
- method public void requestSingleUpdate(android.location.Criteria, android.app.PendingIntent);
- method public boolean sendExtraCommand(java.lang.String, java.lang.String, android.os.Bundle);
- method public void setTestProviderEnabled(java.lang.String, boolean);
- method public void setTestProviderLocation(java.lang.String, android.location.Location);
- method public deprecated void setTestProviderStatus(java.lang.String, int, android.os.Bundle, long);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(String, long, float, android.location.LocationListener);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(String, long, float, android.location.LocationListener, android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, android.location.Criteria, android.location.LocationListener, android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(String, long, float, android.app.PendingIntent);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, android.location.Criteria, android.app.PendingIntent);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(String, android.location.LocationListener, android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(android.location.Criteria, android.location.LocationListener, android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(String, android.app.PendingIntent);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(android.location.Criteria, android.app.PendingIntent);
+ method public boolean sendExtraCommand(String, String, android.os.Bundle);
+ method public void setTestProviderEnabled(String, boolean);
+ method public void setTestProviderLocation(String, android.location.Location);
+ method @Deprecated public void setTestProviderStatus(String, int, android.os.Bundle, long);
method public void unregisterGnssMeasurementsCallback(android.location.GnssMeasurementsEvent.Callback);
method public void unregisterGnssNavigationMessageCallback(android.location.GnssNavigationMessage.Callback);
method public void unregisterGnssStatusCallback(android.location.GnssStatus.Callback);
- field public static final java.lang.String GPS_PROVIDER = "gps";
- field public static final java.lang.String KEY_LOCATION_CHANGED = "location";
- field public static final java.lang.String KEY_PROVIDER_ENABLED = "providerEnabled";
- field public static final java.lang.String KEY_PROXIMITY_ENTERING = "entering";
- field public static final deprecated java.lang.String KEY_STATUS_CHANGED = "status";
- field public static final java.lang.String MODE_CHANGED_ACTION = "android.location.MODE_CHANGED";
- field public static final java.lang.String NETWORK_PROVIDER = "network";
- field public static final java.lang.String PASSIVE_PROVIDER = "passive";
- field public static final java.lang.String PROVIDERS_CHANGED_ACTION = "android.location.PROVIDERS_CHANGED";
+ field public static final String GPS_PROVIDER = "gps";
+ field public static final String KEY_LOCATION_CHANGED = "location";
+ field public static final String KEY_PROVIDER_ENABLED = "providerEnabled";
+ field public static final String KEY_PROXIMITY_ENTERING = "entering";
+ field @Deprecated public static final String KEY_STATUS_CHANGED = "status";
+ field public static final String MODE_CHANGED_ACTION = "android.location.MODE_CHANGED";
+ field public static final String NETWORK_PROVIDER = "network";
+ field public static final String PASSIVE_PROVIDER = "passive";
+ field public static final String PROVIDERS_CHANGED_ACTION = "android.location.PROVIDERS_CHANGED";
}
public class LocationProvider {
method public int getAccuracy();
- method public java.lang.String getName();
+ method public String getName();
method public int getPowerRequirement();
method public boolean hasMonetaryCost();
method public boolean meetsCriteria(android.location.Criteria);
@@ -22955,27 +22879,27 @@
method public boolean supportsAltitude();
method public boolean supportsBearing();
method public boolean supportsSpeed();
- field public static final deprecated int AVAILABLE = 2; // 0x2
- field public static final deprecated int OUT_OF_SERVICE = 0; // 0x0
- field public static final deprecated int TEMPORARILY_UNAVAILABLE = 1; // 0x1
+ field @Deprecated public static final int AVAILABLE = 2; // 0x2
+ field @Deprecated public static final int OUT_OF_SERVICE = 0; // 0x0
+ field @Deprecated public static final int TEMPORARILY_UNAVAILABLE = 1; // 0x1
}
- public abstract interface OnNmeaMessageListener {
- method public abstract void onNmeaMessage(java.lang.String, long);
+ public interface OnNmeaMessageListener {
+ method public void onNmeaMessage(String, long);
}
public abstract class SettingInjectorService extends android.app.Service {
- ctor public SettingInjectorService(java.lang.String);
+ ctor public SettingInjectorService(String);
method public final android.os.IBinder onBind(android.content.Intent);
method protected abstract boolean onGetEnabled();
- method protected abstract java.lang.String onGetSummary();
+ method protected abstract String onGetSummary();
method public final void onStart(android.content.Intent, int);
method public final int onStartCommand(android.content.Intent, int, int);
method public static final void refreshSettings(android.content.Context);
- field public static final java.lang.String ACTION_INJECTED_SETTING_CHANGED = "android.location.InjectedSettingChanged";
- field public static final java.lang.String ACTION_SERVICE_INTENT = "android.location.SettingInjectorService";
- field public static final java.lang.String ATTRIBUTES_NAME = "injected-location-setting";
- field public static final java.lang.String META_DATA_NAME = "android.location.SettingInjectorService";
+ field public static final String ACTION_INJECTED_SETTING_CHANGED = "android.location.InjectedSettingChanged";
+ field public static final String ACTION_SERVICE_INTENT = "android.location.SettingInjectorService";
+ field public static final String ATTRIBUTES_NAME = "injected-location-setting";
+ field public static final String META_DATA_NAME = "android.location.SettingInjectorService";
}
}
@@ -22983,9 +22907,9 @@
package android.media {
public class AsyncPlayer {
- ctor public AsyncPlayer(java.lang.String);
- method public deprecated void play(android.content.Context, android.net.Uri, boolean, int);
- method public void play(android.content.Context, android.net.Uri, boolean, android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
+ ctor public AsyncPlayer(String);
+ method @Deprecated public void play(android.content.Context, android.net.Uri, boolean, int);
+ method public void play(@NonNull android.content.Context, @NonNull android.net.Uri, boolean, @NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
method public void stop();
}
@@ -23004,7 +22928,7 @@
field public static final android.os.Parcelable.Creator<android.media.AudioAttributes> CREATOR;
field public static final int FLAG_AUDIBILITY_ENFORCED = 1; // 0x1
field public static final int FLAG_HW_AV_SYNC = 16; // 0x10
- field public static final deprecated int FLAG_LOW_LATENCY = 256; // 0x100
+ field @Deprecated public static final int FLAG_LOW_LATENCY = 256; // 0x100
field public static final int USAGE_ALARM = 4; // 0x4
field public static final int USAGE_ASSISTANCE_ACCESSIBILITY = 11; // 0xb
field public static final int USAGE_ASSISTANCE_NAVIGATION_GUIDANCE = 12; // 0xc
@@ -23040,14 +22964,14 @@
}
public final class AudioDeviceInfo {
- method public java.lang.String getAddress();
- method public int[] getChannelCounts();
- method public int[] getChannelIndexMasks();
- method public int[] getChannelMasks();
- method public int[] getEncodings();
+ method @NonNull public String getAddress();
+ method @NonNull public int[] getChannelCounts();
+ method @NonNull public int[] getChannelIndexMasks();
+ method @NonNull public int[] getChannelMasks();
+ method @NonNull public int[] getEncodings();
method public int getId();
- method public java.lang.CharSequence getProductName();
- method public int[] getSampleRates();
+ method public CharSequence getProductName();
+ method @NonNull public int[] getSampleRates();
method public int getType();
method public boolean isSink();
method public boolean isSource();
@@ -23079,22 +23003,22 @@
public final class AudioFocusRequest {
method public boolean acceptsDelayedFocusGain();
- method public android.media.AudioAttributes getAudioAttributes();
+ method @NonNull public android.media.AudioAttributes getAudioAttributes();
method public int getFocusGain();
method public boolean willPauseWhenDucked();
}
public static final class AudioFocusRequest.Builder {
ctor public AudioFocusRequest.Builder(int);
- ctor public AudioFocusRequest.Builder(android.media.AudioFocusRequest);
+ ctor public AudioFocusRequest.Builder(@NonNull android.media.AudioFocusRequest);
method public android.media.AudioFocusRequest build();
- method public android.media.AudioFocusRequest.Builder setAcceptsDelayedFocusGain(boolean);
- method public android.media.AudioFocusRequest.Builder setAudioAttributes(android.media.AudioAttributes);
- method public android.media.AudioFocusRequest.Builder setFocusGain(int);
- method public android.media.AudioFocusRequest.Builder setForceDucking(boolean);
- method public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(android.media.AudioManager.OnAudioFocusChangeListener);
- method public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(android.media.AudioManager.OnAudioFocusChangeListener, android.os.Handler);
- method public android.media.AudioFocusRequest.Builder setWillPauseWhenDucked(boolean);
+ method @NonNull public android.media.AudioFocusRequest.Builder setAcceptsDelayedFocusGain(boolean);
+ method @NonNull public android.media.AudioFocusRequest.Builder setAudioAttributes(@NonNull android.media.AudioAttributes);
+ method @NonNull public android.media.AudioFocusRequest.Builder setFocusGain(int);
+ method @NonNull public android.media.AudioFocusRequest.Builder setForceDucking(boolean);
+ method @NonNull public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(@NonNull android.media.AudioManager.OnAudioFocusChangeListener);
+ method @NonNull public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(@NonNull android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.os.Handler);
+ method @NonNull public android.media.AudioFocusRequest.Builder setWillPauseWhenDucked(boolean);
}
public final class AudioFormat implements android.os.Parcelable {
@@ -23103,13 +23027,13 @@
method public int getChannelIndexMask();
method public int getChannelMask();
method public int getEncoding();
- method public int getFrameSizeInBytes();
+ method @IntRange(from=1) public int getFrameSizeInBytes();
method public int getSampleRate();
method public void writeToParcel(android.os.Parcel, int);
- field public static final deprecated int CHANNEL_CONFIGURATION_DEFAULT = 1; // 0x1
- field public static final deprecated int CHANNEL_CONFIGURATION_INVALID = 0; // 0x0
- field public static final deprecated int CHANNEL_CONFIGURATION_MONO = 2; // 0x2
- field public static final deprecated int CHANNEL_CONFIGURATION_STEREO = 3; // 0x3
+ field @Deprecated public static final int CHANNEL_CONFIGURATION_DEFAULT = 1; // 0x1
+ field @Deprecated public static final int CHANNEL_CONFIGURATION_INVALID = 0; // 0x0
+ field @Deprecated public static final int CHANNEL_CONFIGURATION_MONO = 2; // 0x2
+ field @Deprecated public static final int CHANNEL_CONFIGURATION_STEREO = 3; // 0x3
field public static final int CHANNEL_INVALID = 0; // 0x0
field public static final int CHANNEL_IN_BACK = 32; // 0x20
field public static final int CHANNEL_IN_BACK_PROCESSED = 512; // 0x200
@@ -23129,7 +23053,7 @@
field public static final int CHANNEL_IN_Y_AXIS = 4096; // 0x1000
field public static final int CHANNEL_IN_Z_AXIS = 8192; // 0x2000
field public static final int CHANNEL_OUT_5POINT1 = 252; // 0xfc
- field public static final deprecated int CHANNEL_OUT_7POINT1 = 1020; // 0x3fc
+ field @Deprecated public static final int CHANNEL_OUT_7POINT1 = 1020; // 0x3fc
field public static final int CHANNEL_OUT_7POINT1_SURROUND = 6396; // 0x18fc
field public static final int CHANNEL_OUT_BACK_CENTER = 1024; // 0x400
field public static final int CHANNEL_OUT_BACK_LEFT = 64; // 0x40
@@ -23175,87 +23099,87 @@
ctor public AudioFormat.Builder();
ctor public AudioFormat.Builder(android.media.AudioFormat);
method public android.media.AudioFormat build();
- method public android.media.AudioFormat.Builder setChannelIndexMask(int);
- method public android.media.AudioFormat.Builder setChannelMask(int);
+ method @NonNull public android.media.AudioFormat.Builder setChannelIndexMask(int);
+ method @NonNull public android.media.AudioFormat.Builder setChannelMask(int);
method public android.media.AudioFormat.Builder setEncoding(int) throws java.lang.IllegalArgumentException;
method public android.media.AudioFormat.Builder setSampleRate(int) throws java.lang.IllegalArgumentException;
}
public class AudioManager {
- method public deprecated int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener);
- method public int abandonAudioFocusRequest(android.media.AudioFocusRequest);
+ method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener);
+ method public int abandonAudioFocusRequest(@NonNull android.media.AudioFocusRequest);
method public void adjustStreamVolume(int, int, int);
method public void adjustSuggestedStreamVolume(int, int, int);
method public void adjustVolume(int, int);
method public void dispatchMediaKeyEvent(android.view.KeyEvent);
method public int generateAudioSessionId();
- method public java.util.List<android.media.AudioPlaybackConfiguration> getActivePlaybackConfigurations();
- method public java.util.List<android.media.AudioRecordingConfiguration> getActiveRecordingConfigurations();
+ method @NonNull public java.util.List<android.media.AudioPlaybackConfiguration> getActivePlaybackConfigurations();
+ method @NonNull public java.util.List<android.media.AudioRecordingConfiguration> getActiveRecordingConfigurations();
method public android.media.AudioDeviceInfo[] getDevices(int);
method public java.util.List<android.media.MicrophoneInfo> getMicrophones() throws java.io.IOException;
method public int getMode();
- method public java.lang.String getParameters(java.lang.String);
- method public java.lang.String getProperty(java.lang.String);
+ method public String getParameters(String);
+ method public String getProperty(String);
method public int getRingerMode();
- method public deprecated int getRouting(int);
+ method @Deprecated public int getRouting(int);
method public int getStreamMaxVolume(int);
method public int getStreamMinVolume(int);
method public int getStreamVolume(int);
method public float getStreamVolumeDb(int, int, int);
- method public deprecated int getVibrateSetting(int);
- method public deprecated boolean isBluetoothA2dpOn();
+ method @Deprecated public int getVibrateSetting(int);
+ method @Deprecated public boolean isBluetoothA2dpOn();
method public boolean isBluetoothScoAvailableOffCall();
method public boolean isBluetoothScoOn();
method public static boolean isHapticPlaybackSupported();
method public boolean isMicrophoneMute();
method public boolean isMusicActive();
- method public static boolean isOffloadedPlaybackSupported(android.media.AudioFormat);
+ method public static boolean isOffloadedPlaybackSupported(@NonNull android.media.AudioFormat);
method public boolean isSpeakerphoneOn();
method public boolean isStreamMute(int);
method public boolean isVolumeFixed();
- method public deprecated boolean isWiredHeadsetOn();
+ method @Deprecated public boolean isWiredHeadsetOn();
method public void loadSoundEffects();
method public void playSoundEffect(int);
method public void playSoundEffect(int, float);
method public void registerAudioDeviceCallback(android.media.AudioDeviceCallback, android.os.Handler);
- method public void registerAudioPlaybackCallback(android.media.AudioManager.AudioPlaybackCallback, android.os.Handler);
- method public void registerAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback, android.os.Handler);
- method public deprecated void registerMediaButtonEventReceiver(android.content.ComponentName);
- method public deprecated void registerMediaButtonEventReceiver(android.app.PendingIntent);
- method public deprecated void registerRemoteControlClient(android.media.RemoteControlClient);
- method public deprecated boolean registerRemoteController(android.media.RemoteController);
- method public deprecated int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int);
- method public int requestAudioFocus(android.media.AudioFocusRequest);
- method public deprecated void setBluetoothA2dpOn(boolean);
+ method public void registerAudioPlaybackCallback(@NonNull android.media.AudioManager.AudioPlaybackCallback, android.os.Handler);
+ method public void registerAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback, android.os.Handler);
+ method @Deprecated public void registerMediaButtonEventReceiver(android.content.ComponentName);
+ method @Deprecated public void registerMediaButtonEventReceiver(android.app.PendingIntent);
+ method @Deprecated public void registerRemoteControlClient(android.media.RemoteControlClient);
+ method @Deprecated public boolean registerRemoteController(android.media.RemoteController);
+ method @Deprecated public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int);
+ method public int requestAudioFocus(@NonNull android.media.AudioFocusRequest);
+ method @Deprecated public void setBluetoothA2dpOn(boolean);
method public void setBluetoothScoOn(boolean);
method public void setMicrophoneMute(boolean);
method public void setMode(int);
- method public void setParameters(java.lang.String);
+ method public void setParameters(String);
method public void setRingerMode(int);
- method public deprecated void setRouting(int, int, int);
+ method @Deprecated public void setRouting(int, int, int);
method public void setSpeakerphoneOn(boolean);
- method public deprecated void setStreamMute(int, boolean);
- method public deprecated void setStreamSolo(int, boolean);
+ method @Deprecated public void setStreamMute(int, boolean);
+ method @Deprecated public void setStreamSolo(int, boolean);
method public void setStreamVolume(int, int, int);
- method public deprecated void setVibrateSetting(int, int);
- method public deprecated void setWiredHeadsetOn(boolean);
- method public deprecated boolean shouldVibrate(int);
+ method @Deprecated public void setVibrateSetting(int, int);
+ method @Deprecated public void setWiredHeadsetOn(boolean);
+ method @Deprecated public boolean shouldVibrate(int);
method public void startBluetoothSco();
method public void stopBluetoothSco();
method public void unloadSoundEffects();
method public void unregisterAudioDeviceCallback(android.media.AudioDeviceCallback);
- method public void unregisterAudioPlaybackCallback(android.media.AudioManager.AudioPlaybackCallback);
- method public void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback);
- method public deprecated void unregisterMediaButtonEventReceiver(android.content.ComponentName);
- method public deprecated void unregisterMediaButtonEventReceiver(android.app.PendingIntent);
- method public deprecated void unregisterRemoteControlClient(android.media.RemoteControlClient);
- method public deprecated void unregisterRemoteController(android.media.RemoteController);
- field public static final java.lang.String ACTION_AUDIO_BECOMING_NOISY = "android.media.AUDIO_BECOMING_NOISY";
- field public static final java.lang.String ACTION_HDMI_AUDIO_PLUG = "android.media.action.HDMI_AUDIO_PLUG";
- field public static final java.lang.String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
- field public static final java.lang.String ACTION_MICROPHONE_MUTE_CHANGED = "android.media.action.MICROPHONE_MUTE_CHANGED";
- field public static final deprecated java.lang.String ACTION_SCO_AUDIO_STATE_CHANGED = "android.media.SCO_AUDIO_STATE_CHANGED";
- field public static final java.lang.String ACTION_SCO_AUDIO_STATE_UPDATED = "android.media.ACTION_SCO_AUDIO_STATE_UPDATED";
+ method public void unregisterAudioPlaybackCallback(@NonNull android.media.AudioManager.AudioPlaybackCallback);
+ method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
+ method @Deprecated public void unregisterMediaButtonEventReceiver(android.content.ComponentName);
+ method @Deprecated public void unregisterMediaButtonEventReceiver(android.app.PendingIntent);
+ method @Deprecated public void unregisterRemoteControlClient(android.media.RemoteControlClient);
+ method @Deprecated public void unregisterRemoteController(android.media.RemoteController);
+ field public static final String ACTION_AUDIO_BECOMING_NOISY = "android.media.AUDIO_BECOMING_NOISY";
+ field public static final String ACTION_HDMI_AUDIO_PLUG = "android.media.action.HDMI_AUDIO_PLUG";
+ field public static final String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
+ field public static final String ACTION_MICROPHONE_MUTE_CHANGED = "android.media.action.MICROPHONE_MUTE_CHANGED";
+ field @Deprecated public static final String ACTION_SCO_AUDIO_STATE_CHANGED = "android.media.SCO_AUDIO_STATE_CHANGED";
+ field public static final String ACTION_SCO_AUDIO_STATE_UPDATED = "android.media.ACTION_SCO_AUDIO_STATE_UPDATED";
field public static final int ADJUST_LOWER = -1; // 0xffffffff
field public static final int ADJUST_MUTE = -100; // 0xffffff9c
field public static final int ADJUST_RAISE = 1; // 0x1
@@ -23276,14 +23200,14 @@
field public static final int AUDIO_SESSION_ID_GENERATE = 0; // 0x0
field public static final int ERROR = -1; // 0xffffffff
field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
- field public static final java.lang.String EXTRA_AUDIO_PLUG_STATE = "android.media.extra.AUDIO_PLUG_STATE";
- field public static final java.lang.String EXTRA_ENCODINGS = "android.media.extra.ENCODINGS";
- field public static final java.lang.String EXTRA_MAX_CHANNEL_COUNT = "android.media.extra.MAX_CHANNEL_COUNT";
- field public static final java.lang.String EXTRA_RINGER_MODE = "android.media.EXTRA_RINGER_MODE";
- field public static final java.lang.String EXTRA_SCO_AUDIO_PREVIOUS_STATE = "android.media.extra.SCO_AUDIO_PREVIOUS_STATE";
- field public static final java.lang.String EXTRA_SCO_AUDIO_STATE = "android.media.extra.SCO_AUDIO_STATE";
- field public static final deprecated java.lang.String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING";
- field public static final deprecated java.lang.String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE";
+ field public static final String EXTRA_AUDIO_PLUG_STATE = "android.media.extra.AUDIO_PLUG_STATE";
+ field public static final String EXTRA_ENCODINGS = "android.media.extra.ENCODINGS";
+ field public static final String EXTRA_MAX_CHANNEL_COUNT = "android.media.extra.MAX_CHANNEL_COUNT";
+ field public static final String EXTRA_RINGER_MODE = "android.media.EXTRA_RINGER_MODE";
+ field public static final String EXTRA_SCO_AUDIO_PREVIOUS_STATE = "android.media.extra.SCO_AUDIO_PREVIOUS_STATE";
+ field public static final String EXTRA_SCO_AUDIO_STATE = "android.media.extra.SCO_AUDIO_STATE";
+ field @Deprecated public static final String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING";
+ field @Deprecated public static final String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE";
field public static final int FLAG_ALLOW_RINGER_MODES = 2; // 0x2
field public static final int FLAG_PLAY_SOUND = 4; // 0x4
field public static final int FLAG_REMOVE_SOUND_AND_VIBRATE = 8; // 0x8
@@ -23308,23 +23232,23 @@
field public static final int MODE_IN_COMMUNICATION = 3; // 0x3
field public static final int MODE_NORMAL = 0; // 0x0
field public static final int MODE_RINGTONE = 1; // 0x1
- field public static final deprecated int NUM_STREAMS = 5; // 0x5
- field public static final java.lang.String PROPERTY_OUTPUT_FRAMES_PER_BUFFER = "android.media.property.OUTPUT_FRAMES_PER_BUFFER";
- field public static final java.lang.String PROPERTY_OUTPUT_SAMPLE_RATE = "android.media.property.OUTPUT_SAMPLE_RATE";
- field public static final java.lang.String PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED = "android.media.property.SUPPORT_AUDIO_SOURCE_UNPROCESSED";
- field public static final java.lang.String PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND = "android.media.property.SUPPORT_MIC_NEAR_ULTRASOUND";
- field public static final java.lang.String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND = "android.media.property.SUPPORT_SPEAKER_NEAR_ULTRASOUND";
- field public static final java.lang.String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED";
+ field @Deprecated public static final int NUM_STREAMS = 5; // 0x5
+ field public static final String PROPERTY_OUTPUT_FRAMES_PER_BUFFER = "android.media.property.OUTPUT_FRAMES_PER_BUFFER";
+ field public static final String PROPERTY_OUTPUT_SAMPLE_RATE = "android.media.property.OUTPUT_SAMPLE_RATE";
+ field public static final String PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED = "android.media.property.SUPPORT_AUDIO_SOURCE_UNPROCESSED";
+ field public static final String PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND = "android.media.property.SUPPORT_MIC_NEAR_ULTRASOUND";
+ field public static final String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND = "android.media.property.SUPPORT_SPEAKER_NEAR_ULTRASOUND";
+ field public static final String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED";
field public static final int RINGER_MODE_NORMAL = 2; // 0x2
field public static final int RINGER_MODE_SILENT = 0; // 0x0
field public static final int RINGER_MODE_VIBRATE = 1; // 0x1
- field public static final deprecated int ROUTE_ALL = -1; // 0xffffffff
- field public static final deprecated int ROUTE_BLUETOOTH = 4; // 0x4
- field public static final deprecated int ROUTE_BLUETOOTH_A2DP = 16; // 0x10
- field public static final deprecated int ROUTE_BLUETOOTH_SCO = 4; // 0x4
- field public static final deprecated int ROUTE_EARPIECE = 1; // 0x1
- field public static final deprecated int ROUTE_HEADSET = 8; // 0x8
- field public static final deprecated int ROUTE_SPEAKER = 2; // 0x2
+ field @Deprecated public static final int ROUTE_ALL = -1; // 0xffffffff
+ field @Deprecated public static final int ROUTE_BLUETOOTH = 4; // 0x4
+ field @Deprecated public static final int ROUTE_BLUETOOTH_A2DP = 16; // 0x10
+ field @Deprecated public static final int ROUTE_BLUETOOTH_SCO = 4; // 0x4
+ field @Deprecated public static final int ROUTE_EARPIECE = 1; // 0x1
+ field @Deprecated public static final int ROUTE_HEADSET = 8; // 0x8
+ field @Deprecated public static final int ROUTE_SPEAKER = 2; // 0x2
field public static final int SCO_AUDIO_STATE_CONNECTED = 1; // 0x1
field public static final int SCO_AUDIO_STATE_CONNECTING = 2; // 0x2
field public static final int SCO_AUDIO_STATE_DISCONNECTED = 0; // 0x0
@@ -23338,26 +23262,26 @@
field public static final int STREAM_SYSTEM = 1; // 0x1
field public static final int STREAM_VOICE_CALL = 0; // 0x0
field public static final int USE_DEFAULT_STREAM_TYPE = -2147483648; // 0x80000000
- field public static final deprecated java.lang.String VIBRATE_SETTING_CHANGED_ACTION = "android.media.VIBRATE_SETTING_CHANGED";
- field public static final deprecated int VIBRATE_SETTING_OFF = 0; // 0x0
- field public static final deprecated int VIBRATE_SETTING_ON = 1; // 0x1
- field public static final deprecated int VIBRATE_SETTING_ONLY_SILENT = 2; // 0x2
- field public static final deprecated int VIBRATE_TYPE_NOTIFICATION = 1; // 0x1
- field public static final deprecated int VIBRATE_TYPE_RINGER = 0; // 0x0
+ field @Deprecated public static final String VIBRATE_SETTING_CHANGED_ACTION = "android.media.VIBRATE_SETTING_CHANGED";
+ field @Deprecated public static final int VIBRATE_SETTING_OFF = 0; // 0x0
+ field @Deprecated public static final int VIBRATE_SETTING_ON = 1; // 0x1
+ field @Deprecated public static final int VIBRATE_SETTING_ONLY_SILENT = 2; // 0x2
+ field @Deprecated public static final int VIBRATE_TYPE_NOTIFICATION = 1; // 0x1
+ field @Deprecated public static final int VIBRATE_TYPE_RINGER = 0; // 0x0
}
- public static abstract class AudioManager.AudioPlaybackCallback {
+ public abstract static class AudioManager.AudioPlaybackCallback {
ctor public AudioManager.AudioPlaybackCallback();
method public void onPlaybackConfigChanged(java.util.List<android.media.AudioPlaybackConfiguration>);
}
- public static abstract class AudioManager.AudioRecordingCallback {
+ public abstract static class AudioManager.AudioRecordingCallback {
ctor public AudioManager.AudioRecordingCallback();
method public void onRecordingConfigChanged(java.util.List<android.media.AudioRecordingConfiguration>);
}
- public static abstract interface AudioManager.OnAudioFocusChangeListener {
- method public abstract void onAudioFocusChange(int);
+ public static interface AudioManager.OnAudioFocusChangeListener {
+ method public void onAudioFocusChange(int);
}
public final class AudioPlaybackConfiguration implements android.os.Parcelable {
@@ -23368,7 +23292,7 @@
}
public final class AudioPresentation {
- method public java.util.Map<java.util.Locale, java.lang.String> getLabels();
+ method public java.util.Map<java.util.Locale,java.lang.String> getLabels();
method public java.util.Locale getLocale();
method public int getMasteringIndication();
method public int getPresentationId();
@@ -23385,30 +23309,30 @@
public static class AudioPresentation.Builder {
ctor public AudioPresentation.Builder(int);
- method public android.media.AudioPresentation build();
- method public android.media.AudioPresentation.Builder setHasAudioDescription(boolean);
- method public android.media.AudioPresentation.Builder setHasDialogueEnhancement(boolean);
- method public android.media.AudioPresentation.Builder setHasSpokenSubtitles(boolean);
- method public android.media.AudioPresentation.Builder setLabels(java.util.Map<android.icu.util.ULocale, java.lang.String>);
- method public android.media.AudioPresentation.Builder setLocale(android.icu.util.ULocale);
- method public android.media.AudioPresentation.Builder setMasteringIndication(int);
- method public android.media.AudioPresentation.Builder setProgramId(int);
+ method @NonNull public android.media.AudioPresentation build();
+ method @NonNull public android.media.AudioPresentation.Builder setHasAudioDescription(boolean);
+ method @NonNull public android.media.AudioPresentation.Builder setHasDialogueEnhancement(boolean);
+ method @NonNull public android.media.AudioPresentation.Builder setHasSpokenSubtitles(boolean);
+ method @NonNull public android.media.AudioPresentation.Builder setLabels(@NonNull java.util.Map<android.icu.util.ULocale,java.lang.String>);
+ method @NonNull public android.media.AudioPresentation.Builder setLocale(android.icu.util.ULocale);
+ method @NonNull public android.media.AudioPresentation.Builder setMasteringIndication(int);
+ method @NonNull public android.media.AudioPresentation.Builder setProgramId(int);
}
public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting {
ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException;
method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
- method public deprecated void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler);
+ method @Deprecated public void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler);
method protected void finalize();
method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
- method public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
+ method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
method public int getAudioFormat();
method public int getAudioSessionId();
method public int getAudioSource();
method public int getBufferSizeInFrames();
method public int getChannelConfiguration();
method public int getChannelCount();
- method public android.media.AudioFormat getFormat();
+ method @NonNull public android.media.AudioFormat getFormat();
method public android.os.PersistableBundle getMetrics();
method public static int getMinBufferSize(int, int, int);
method public int getNotificationMarkerPosition();
@@ -23418,18 +23342,18 @@
method public android.media.AudioDeviceInfo getRoutedDevice();
method public int getSampleRate();
method public int getState();
- method public int getTimestamp(android.media.AudioTimestamp, int);
- method public int read(byte[], int, int);
- method public int read(byte[], int, int, int);
- method public int read(short[], int, int);
- method public int read(short[], int, int, int);
- method public int read(float[], int, int, int);
- method public int read(java.nio.ByteBuffer, int);
- method public int read(java.nio.ByteBuffer, int, int);
- method public void registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback);
+ method public int getTimestamp(@NonNull android.media.AudioTimestamp, int);
+ method public int read(@NonNull byte[], int, int);
+ method public int read(@NonNull byte[], int, int, int);
+ method public int read(@NonNull short[], int, int);
+ method public int read(@NonNull short[], int, int, int);
+ method public int read(@NonNull float[], int, int, int);
+ method public int read(@NonNull java.nio.ByteBuffer, int);
+ method public int read(@NonNull java.nio.ByteBuffer, int, int);
+ method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
method public void release();
method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
- method public deprecated void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener);
+ method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener);
method public int setNotificationMarkerPosition(int);
method public int setPositionNotificationPeriod(int);
method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
@@ -23438,7 +23362,7 @@
method public void startRecording() throws java.lang.IllegalStateException;
method public void startRecording(android.media.MediaSyncEvent) throws java.lang.IllegalStateException;
method public void stop() throws java.lang.IllegalStateException;
- method public void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback);
+ method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
field public static final int ERROR = -1; // 0xffffffff
field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe
field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
@@ -23455,27 +23379,27 @@
public static class AudioRecord.Builder {
ctor public AudioRecord.Builder();
method public android.media.AudioRecord build() throws java.lang.UnsupportedOperationException;
- method public android.media.AudioRecord.Builder setAudioFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException;
+ method public android.media.AudioRecord.Builder setAudioFormat(@NonNull android.media.AudioFormat) throws java.lang.IllegalArgumentException;
method public android.media.AudioRecord.Builder setAudioSource(int) throws java.lang.IllegalArgumentException;
method public android.media.AudioRecord.Builder setBufferSizeInBytes(int) throws java.lang.IllegalArgumentException;
}
public static final class AudioRecord.MetricsConstants {
- field public static final java.lang.String CHANNELS = "android.media.audiorecord.channels";
- field public static final java.lang.String ENCODING = "android.media.audiorecord.encoding";
- field public static final java.lang.String LATENCY = "android.media.audiorecord.latency";
- field public static final java.lang.String SAMPLERATE = "android.media.audiorecord.samplerate";
- field public static final java.lang.String SOURCE = "android.media.audiorecord.source";
+ field public static final String CHANNELS = "android.media.audiorecord.channels";
+ field public static final String ENCODING = "android.media.audiorecord.encoding";
+ field public static final String LATENCY = "android.media.audiorecord.latency";
+ field public static final String SAMPLERATE = "android.media.audiorecord.samplerate";
+ field public static final String SOURCE = "android.media.audiorecord.source";
}
- public static abstract interface AudioRecord.OnRecordPositionUpdateListener {
- method public abstract void onMarkerReached(android.media.AudioRecord);
- method public abstract void onPeriodicNotification(android.media.AudioRecord);
+ public static interface AudioRecord.OnRecordPositionUpdateListener {
+ method public void onMarkerReached(android.media.AudioRecord);
+ method public void onPeriodicNotification(android.media.AudioRecord);
}
- public static abstract deprecated interface AudioRecord.OnRoutingChangedListener implements android.media.AudioRouting.OnRoutingChangedListener {
- method public abstract void onRoutingChanged(android.media.AudioRecord);
- method public default void onRoutingChanged(android.media.AudioRouting);
+ @Deprecated public static interface AudioRecord.OnRoutingChangedListener extends android.media.AudioRouting.OnRoutingChangedListener {
+ method @Deprecated public void onRoutingChanged(android.media.AudioRecord);
+ method @Deprecated public default void onRoutingChanged(android.media.AudioRouting);
}
public final class AudioRecordingConfiguration implements android.os.Parcelable {
@@ -23484,31 +23408,31 @@
method public int getAudioSource();
method public int getClientAudioSessionId();
method public int getClientAudioSource();
- method public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getClientEffects();
+ method @NonNull public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getClientEffects();
method public android.media.AudioFormat getClientFormat();
- method public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getEffects();
+ method @NonNull public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getEffects();
method public android.media.AudioFormat getFormat();
method public boolean isClientSilenced();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.AudioRecordingConfiguration> CREATOR;
}
- public abstract interface AudioRecordingMonitor {
- method public abstract android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
- method public abstract void registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback);
- method public abstract void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback);
+ public interface AudioRecordingMonitor {
+ method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
+ method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
+ method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
}
- public abstract interface AudioRouting {
- method public abstract void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
- method public abstract android.media.AudioDeviceInfo getPreferredDevice();
- method public abstract android.media.AudioDeviceInfo getRoutedDevice();
- method public abstract void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
- method public abstract boolean setPreferredDevice(android.media.AudioDeviceInfo);
+ public interface AudioRouting {
+ method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
+ method public android.media.AudioDeviceInfo getPreferredDevice();
+ method public android.media.AudioDeviceInfo getRoutedDevice();
+ method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
+ method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
}
- public static abstract interface AudioRouting.OnRoutingChangedListener {
- method public abstract void onRoutingChanged(android.media.AudioRouting);
+ public static interface AudioRouting.OnRoutingChangedListener {
+ method public void onRoutingChanged(android.media.AudioRouting);
}
public final class AudioTimestamp {
@@ -23520,34 +23444,35 @@
}
public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
- ctor public deprecated AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
- ctor public deprecated AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
+ ctor @Deprecated public AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
+ ctor @Deprecated public AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException;
method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
- method public deprecated void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler);
+ method @Deprecated public void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler);
method public int attachAuxEffect(int);
- method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
+ method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
+ method public static void deprecateStreamTypeForPlayback(int, String, String) throws java.lang.IllegalArgumentException;
method protected void finalize();
method public void flush();
- method public android.media.AudioAttributes getAudioAttributes();
+ method @NonNull public android.media.AudioAttributes getAudioAttributes();
method public int getAudioFormat();
method public int getAudioSessionId();
method public int getBufferCapacityInFrames();
method public int getBufferSizeInFrames();
method public int getChannelConfiguration();
method public int getChannelCount();
- method public android.media.AudioFormat getFormat();
+ method @NonNull public android.media.AudioFormat getFormat();
method public static float getMaxVolume();
method public android.os.PersistableBundle getMetrics();
method public static int getMinBufferSize(int, int, int);
method public static float getMinVolume();
- method protected deprecated int getNativeFrameCount();
+ method @Deprecated protected int getNativeFrameCount();
method public static int getNativeOutputSampleRate(int);
method public int getNotificationMarkerPosition();
method public int getPerformanceMode();
method public int getPlayState();
method public int getPlaybackHeadPosition();
- method public android.media.PlaybackParams getPlaybackParams();
+ method @NonNull public android.media.PlaybackParams getPlaybackParams();
method public int getPlaybackRate();
method public int getPositionNotificationPeriod();
method public android.media.AudioDeviceInfo getPreferredDevice();
@@ -23557,38 +23482,38 @@
method public int getStreamType();
method public boolean getTimestamp(android.media.AudioTimestamp);
method public int getUnderrunCount();
- method public static boolean isDirectPlaybackSupported(android.media.AudioFormat, android.media.AudioAttributes);
+ method public static boolean isDirectPlaybackSupported(@NonNull android.media.AudioFormat, @NonNull android.media.AudioAttributes);
method public void pause() throws java.lang.IllegalStateException;
method public void play() throws java.lang.IllegalStateException;
- method public void registerStreamEventCallback(java.util.concurrent.Executor, android.media.AudioTrack.StreamEventCallback);
+ method public void registerStreamEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioTrack.StreamEventCallback);
method public void release();
method public int reloadStaticData();
method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
- method public deprecated void removeOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener);
+ method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener);
method public int setAuxEffectSendLevel(float);
method public int setBufferSizeInFrames(int);
method public int setLoopPoints(int, int, int);
method public int setNotificationMarkerPosition(int);
method public int setPlaybackHeadPosition(int);
- method public void setPlaybackParams(android.media.PlaybackParams);
+ method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
method public int setPlaybackRate(int);
method public int setPositionNotificationPeriod(int);
method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
- method public int setPresentation(android.media.AudioPresentation);
- method protected deprecated void setState(int);
- method public deprecated int setStereoVolume(float, float);
+ method public int setPresentation(@NonNull android.media.AudioPresentation);
+ method @Deprecated protected void setState(int);
+ method @Deprecated public int setStereoVolume(float, float);
method public int setVolume(float);
method public void stop() throws java.lang.IllegalStateException;
- method public void unregisterStreamEventCallback(android.media.AudioTrack.StreamEventCallback);
- method public int write(byte[], int, int);
- method public int write(byte[], int, int, int);
- method public int write(short[], int, int);
- method public int write(short[], int, int, int);
- method public int write(float[], int, int, int);
- method public int write(java.nio.ByteBuffer, int, int);
- method public int write(java.nio.ByteBuffer, int, int, long);
+ method public void unregisterStreamEventCallback(@NonNull android.media.AudioTrack.StreamEventCallback);
+ method public int write(@NonNull byte[], int, int);
+ method public int write(@NonNull byte[], int, int, int);
+ method public int write(@NonNull short[], int, int);
+ method public int write(@NonNull short[], int, int, int);
+ method public int write(@NonNull float[], int, int, int);
+ method public int write(@NonNull java.nio.ByteBuffer, int, int);
+ method public int write(@NonNull java.nio.ByteBuffer, int, int, long);
field public static final int ERROR = -1; // 0xffffffff
field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe
field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
@@ -23611,35 +23536,35 @@
public static class AudioTrack.Builder {
ctor public AudioTrack.Builder();
- method public android.media.AudioTrack build() throws java.lang.UnsupportedOperationException;
- method public android.media.AudioTrack.Builder setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
- method public android.media.AudioTrack.Builder setAudioFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException;
- method public android.media.AudioTrack.Builder setBufferSizeInBytes(int) throws java.lang.IllegalArgumentException;
- method public android.media.AudioTrack.Builder setOffloadedPlayback(boolean);
- method public android.media.AudioTrack.Builder setPerformanceMode(int);
- method public android.media.AudioTrack.Builder setSessionId(int) throws java.lang.IllegalArgumentException;
- method public android.media.AudioTrack.Builder setTransferMode(int) throws java.lang.IllegalArgumentException;
+ method @NonNull public android.media.AudioTrack build() throws java.lang.UnsupportedOperationException;
+ method @NonNull public android.media.AudioTrack.Builder setAudioAttributes(@NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
+ method @NonNull public android.media.AudioTrack.Builder setAudioFormat(@NonNull android.media.AudioFormat) throws java.lang.IllegalArgumentException;
+ method @NonNull public android.media.AudioTrack.Builder setBufferSizeInBytes(int) throws java.lang.IllegalArgumentException;
+ method @NonNull public android.media.AudioTrack.Builder setOffloadedPlayback(boolean);
+ method @NonNull public android.media.AudioTrack.Builder setPerformanceMode(int);
+ method @NonNull public android.media.AudioTrack.Builder setSessionId(int) throws java.lang.IllegalArgumentException;
+ method @NonNull public android.media.AudioTrack.Builder setTransferMode(int) throws java.lang.IllegalArgumentException;
}
public static final class AudioTrack.MetricsConstants {
- field public static final java.lang.String CHANNELMASK = "android.media.audiorecord.channelmask";
- field public static final java.lang.String CONTENTTYPE = "android.media.audiotrack.type";
- field public static final java.lang.String SAMPLERATE = "android.media.audiorecord.samplerate";
- field public static final java.lang.String STREAMTYPE = "android.media.audiotrack.streamtype";
- field public static final java.lang.String USAGE = "android.media.audiotrack.usage";
+ field public static final String CHANNELMASK = "android.media.audiorecord.channelmask";
+ field public static final String CONTENTTYPE = "android.media.audiotrack.type";
+ field public static final String SAMPLERATE = "android.media.audiorecord.samplerate";
+ field public static final String STREAMTYPE = "android.media.audiotrack.streamtype";
+ field public static final String USAGE = "android.media.audiotrack.usage";
}
- public static abstract interface AudioTrack.OnPlaybackPositionUpdateListener {
- method public abstract void onMarkerReached(android.media.AudioTrack);
- method public abstract void onPeriodicNotification(android.media.AudioTrack);
+ public static interface AudioTrack.OnPlaybackPositionUpdateListener {
+ method public void onMarkerReached(android.media.AudioTrack);
+ method public void onPeriodicNotification(android.media.AudioTrack);
}
- public static abstract deprecated interface AudioTrack.OnRoutingChangedListener implements android.media.AudioRouting.OnRoutingChangedListener {
- method public abstract void onRoutingChanged(android.media.AudioTrack);
- method public default void onRoutingChanged(android.media.AudioRouting);
+ @Deprecated public static interface AudioTrack.OnRoutingChangedListener extends android.media.AudioRouting.OnRoutingChangedListener {
+ method @Deprecated public void onRoutingChanged(android.media.AudioTrack);
+ method @Deprecated public default void onRoutingChanged(android.media.AudioRouting);
}
- public static abstract class AudioTrack.StreamEventCallback {
+ public abstract static class AudioTrack.StreamEventCallback {
ctor public AudioTrack.StreamEventCallback();
method public void onDataRequest(android.media.AudioTrack, int);
method public void onPresentationEnded(android.media.AudioTrack);
@@ -23650,11 +23575,11 @@
method public android.media.DataSourceCallback getDataSourceCallback();
}
- public static class CallbackDataSourceDesc.Builder extends android.media.DataSourceDesc.BuilderBase {
+ public static class CallbackDataSourceDesc.Builder extends android.media.DataSourceDesc.BuilderBase<android.media.CallbackDataSourceDesc.Builder> {
ctor public CallbackDataSourceDesc.Builder();
ctor public CallbackDataSourceDesc.Builder(android.media.CallbackDataSourceDesc);
- method public android.media.CallbackDataSourceDesc build();
- method public android.media.CallbackDataSourceDesc.Builder setDataSource(android.media.DataSourceCallback);
+ method @NonNull public android.media.CallbackDataSourceDesc build();
+ method @NonNull public android.media.CallbackDataSourceDesc.Builder setDataSource(@NonNull android.media.DataSourceCallback);
}
public class CamcorderProfile {
@@ -23717,20 +23642,20 @@
public class DataSourceDesc {
method public long getEndPosition();
- method public java.lang.String getMediaId();
+ method public String getMediaId();
method public long getStartPosition();
field public static final long LONG_MAX_TIME_MS = 576460752303423L; // 0x20c49ba5e353fL
field public static final long POSITION_UNKNOWN = 576460752303423L; // 0x20c49ba5e353fL
}
protected static class DataSourceDesc.BuilderBase<T extends android.media.DataSourceDesc.BuilderBase> {
- method public T setEndPosition(long);
- method public T setMediaId(java.lang.String);
- method public T setStartPosition(long);
+ method @NonNull public T setEndPosition(long);
+ method @NonNull public T setMediaId(String);
+ method @NonNull public T setStartPosition(long);
}
public final class DeniedByServerException extends android.media.MediaDrmException {
- ctor public DeniedByServerException(java.lang.String);
+ ctor public DeniedByServerException(String);
}
public abstract class DrmInitData {
@@ -23739,29 +23664,29 @@
public static final class DrmInitData.SchemeInitData {
field public final byte[] data;
- field public final java.lang.String mimeType;
+ field public final String mimeType;
}
public class ExifInterface {
- ctor public ExifInterface(java.io.File) throws java.io.IOException;
- ctor public ExifInterface(java.lang.String) throws java.io.IOException;
- ctor public ExifInterface(java.io.FileDescriptor) throws java.io.IOException;
- ctor public ExifInterface(java.io.InputStream) throws java.io.IOException;
+ ctor public ExifInterface(@NonNull java.io.File) throws java.io.IOException;
+ ctor public ExifInterface(@NonNull String) throws java.io.IOException;
+ ctor public ExifInterface(@NonNull java.io.FileDescriptor) throws java.io.IOException;
+ ctor public ExifInterface(@NonNull java.io.InputStream) throws java.io.IOException;
method public double getAltitude(double);
- method public java.lang.String getAttribute(java.lang.String);
- method public double getAttributeDouble(java.lang.String, double);
- method public int getAttributeInt(java.lang.String, int);
- method public long[] getAttributeRange(java.lang.String);
+ method @Nullable public String getAttribute(@NonNull String);
+ method public double getAttributeDouble(@NonNull String, double);
+ method public int getAttributeInt(@NonNull String, int);
+ method @Nullable public long[] getAttributeRange(@NonNull String);
method public boolean getLatLong(float[]);
method public byte[] getThumbnail();
method public android.graphics.Bitmap getThumbnailBitmap();
method public byte[] getThumbnailBytes();
- method public long[] getThumbnailRange();
- method public boolean hasAttribute(java.lang.String);
+ method @Nullable public long[] getThumbnailRange();
+ method public boolean hasAttribute(String);
method public boolean hasThumbnail();
method public boolean isThumbnailCompressed();
method public void saveAttributes() throws java.io.IOException;
- method public void setAttribute(java.lang.String, java.lang.String);
+ method public void setAttribute(@NonNull String, @Nullable String);
field public static final int ORIENTATION_FLIP_HORIZONTAL = 2; // 0x2
field public static final int ORIENTATION_FLIP_VERTICAL = 4; // 0x4
field public static final int ORIENTATION_NORMAL = 1; // 0x1
@@ -23771,144 +23696,144 @@
field public static final int ORIENTATION_TRANSPOSE = 5; // 0x5
field public static final int ORIENTATION_TRANSVERSE = 7; // 0x7
field public static final int ORIENTATION_UNDEFINED = 0; // 0x0
- field public static final deprecated java.lang.String TAG_APERTURE = "FNumber";
- field public static final java.lang.String TAG_APERTURE_VALUE = "ApertureValue";
- field public static final java.lang.String TAG_ARTIST = "Artist";
- field public static final java.lang.String TAG_BITS_PER_SAMPLE = "BitsPerSample";
- field public static final java.lang.String TAG_BRIGHTNESS_VALUE = "BrightnessValue";
- field public static final java.lang.String TAG_CFA_PATTERN = "CFAPattern";
- field public static final java.lang.String TAG_COLOR_SPACE = "ColorSpace";
- field public static final java.lang.String TAG_COMPONENTS_CONFIGURATION = "ComponentsConfiguration";
- field public static final java.lang.String TAG_COMPRESSED_BITS_PER_PIXEL = "CompressedBitsPerPixel";
- field public static final java.lang.String TAG_COMPRESSION = "Compression";
- field public static final java.lang.String TAG_CONTRAST = "Contrast";
- field public static final java.lang.String TAG_COPYRIGHT = "Copyright";
- field public static final java.lang.String TAG_CUSTOM_RENDERED = "CustomRendered";
- field public static final java.lang.String TAG_DATETIME = "DateTime";
- field public static final java.lang.String TAG_DATETIME_DIGITIZED = "DateTimeDigitized";
- field public static final java.lang.String TAG_DATETIME_ORIGINAL = "DateTimeOriginal";
- field public static final java.lang.String TAG_DEFAULT_CROP_SIZE = "DefaultCropSize";
- field public static final java.lang.String TAG_DEVICE_SETTING_DESCRIPTION = "DeviceSettingDescription";
- field public static final java.lang.String TAG_DIGITAL_ZOOM_RATIO = "DigitalZoomRatio";
- field public static final java.lang.String TAG_DNG_VERSION = "DNGVersion";
- field public static final java.lang.String TAG_EXIF_VERSION = "ExifVersion";
- field public static final java.lang.String TAG_EXPOSURE_BIAS_VALUE = "ExposureBiasValue";
- field public static final java.lang.String TAG_EXPOSURE_INDEX = "ExposureIndex";
- field public static final java.lang.String TAG_EXPOSURE_MODE = "ExposureMode";
- field public static final java.lang.String TAG_EXPOSURE_PROGRAM = "ExposureProgram";
- field public static final java.lang.String TAG_EXPOSURE_TIME = "ExposureTime";
- field public static final java.lang.String TAG_FILE_SOURCE = "FileSource";
- field public static final java.lang.String TAG_FLASH = "Flash";
- field public static final java.lang.String TAG_FLASHPIX_VERSION = "FlashpixVersion";
- field public static final java.lang.String TAG_FLASH_ENERGY = "FlashEnergy";
- field public static final java.lang.String TAG_FOCAL_LENGTH = "FocalLength";
- field public static final java.lang.String TAG_FOCAL_LENGTH_IN_35MM_FILM = "FocalLengthIn35mmFilm";
- field public static final java.lang.String TAG_FOCAL_PLANE_RESOLUTION_UNIT = "FocalPlaneResolutionUnit";
- field public static final java.lang.String TAG_FOCAL_PLANE_X_RESOLUTION = "FocalPlaneXResolution";
- field public static final java.lang.String TAG_FOCAL_PLANE_Y_RESOLUTION = "FocalPlaneYResolution";
- field public static final java.lang.String TAG_F_NUMBER = "FNumber";
- field public static final java.lang.String TAG_GAIN_CONTROL = "GainControl";
- field public static final java.lang.String TAG_GPS_ALTITUDE = "GPSAltitude";
- field public static final java.lang.String TAG_GPS_ALTITUDE_REF = "GPSAltitudeRef";
- field public static final java.lang.String TAG_GPS_AREA_INFORMATION = "GPSAreaInformation";
- field public static final java.lang.String TAG_GPS_DATESTAMP = "GPSDateStamp";
- field public static final java.lang.String TAG_GPS_DEST_BEARING = "GPSDestBearing";
- field public static final java.lang.String TAG_GPS_DEST_BEARING_REF = "GPSDestBearingRef";
- field public static final java.lang.String TAG_GPS_DEST_DISTANCE = "GPSDestDistance";
- field public static final java.lang.String TAG_GPS_DEST_DISTANCE_REF = "GPSDestDistanceRef";
- field public static final java.lang.String TAG_GPS_DEST_LATITUDE = "GPSDestLatitude";
- field public static final java.lang.String TAG_GPS_DEST_LATITUDE_REF = "GPSDestLatitudeRef";
- field public static final java.lang.String TAG_GPS_DEST_LONGITUDE = "GPSDestLongitude";
- field public static final java.lang.String TAG_GPS_DEST_LONGITUDE_REF = "GPSDestLongitudeRef";
- field public static final java.lang.String TAG_GPS_DIFFERENTIAL = "GPSDifferential";
- field public static final java.lang.String TAG_GPS_DOP = "GPSDOP";
- field public static final java.lang.String TAG_GPS_IMG_DIRECTION = "GPSImgDirection";
- field public static final java.lang.String TAG_GPS_IMG_DIRECTION_REF = "GPSImgDirectionRef";
- field public static final java.lang.String TAG_GPS_LATITUDE = "GPSLatitude";
- field public static final java.lang.String TAG_GPS_LATITUDE_REF = "GPSLatitudeRef";
- field public static final java.lang.String TAG_GPS_LONGITUDE = "GPSLongitude";
- field public static final java.lang.String TAG_GPS_LONGITUDE_REF = "GPSLongitudeRef";
- field public static final java.lang.String TAG_GPS_MAP_DATUM = "GPSMapDatum";
- field public static final java.lang.String TAG_GPS_MEASURE_MODE = "GPSMeasureMode";
- field public static final java.lang.String TAG_GPS_PROCESSING_METHOD = "GPSProcessingMethod";
- field public static final java.lang.String TAG_GPS_SATELLITES = "GPSSatellites";
- field public static final java.lang.String TAG_GPS_SPEED = "GPSSpeed";
- field public static final java.lang.String TAG_GPS_SPEED_REF = "GPSSpeedRef";
- field public static final java.lang.String TAG_GPS_STATUS = "GPSStatus";
- field public static final java.lang.String TAG_GPS_TIMESTAMP = "GPSTimeStamp";
- field public static final java.lang.String TAG_GPS_TRACK = "GPSTrack";
- field public static final java.lang.String TAG_GPS_TRACK_REF = "GPSTrackRef";
- field public static final java.lang.String TAG_GPS_VERSION_ID = "GPSVersionID";
- field public static final java.lang.String TAG_IMAGE_DESCRIPTION = "ImageDescription";
- field public static final java.lang.String TAG_IMAGE_LENGTH = "ImageLength";
- field public static final java.lang.String TAG_IMAGE_UNIQUE_ID = "ImageUniqueID";
- field public static final java.lang.String TAG_IMAGE_WIDTH = "ImageWidth";
- field public static final java.lang.String TAG_INTEROPERABILITY_INDEX = "InteroperabilityIndex";
- field public static final deprecated java.lang.String TAG_ISO = "ISOSpeedRatings";
- field public static final java.lang.String TAG_ISO_SPEED_RATINGS = "ISOSpeedRatings";
- field public static final java.lang.String TAG_JPEG_INTERCHANGE_FORMAT = "JPEGInterchangeFormat";
- field public static final java.lang.String TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = "JPEGInterchangeFormatLength";
- field public static final java.lang.String TAG_LIGHT_SOURCE = "LightSource";
- field public static final java.lang.String TAG_MAKE = "Make";
- field public static final java.lang.String TAG_MAKER_NOTE = "MakerNote";
- field public static final java.lang.String TAG_MAX_APERTURE_VALUE = "MaxApertureValue";
- field public static final java.lang.String TAG_METERING_MODE = "MeteringMode";
- field public static final java.lang.String TAG_MODEL = "Model";
- field public static final java.lang.String TAG_NEW_SUBFILE_TYPE = "NewSubfileType";
- field public static final java.lang.String TAG_OECF = "OECF";
- field public static final java.lang.String TAG_ORF_ASPECT_FRAME = "AspectFrame";
- field public static final java.lang.String TAG_ORF_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
- field public static final java.lang.String TAG_ORF_PREVIEW_IMAGE_START = "PreviewImageStart";
- field public static final java.lang.String TAG_ORF_THUMBNAIL_IMAGE = "ThumbnailImage";
- field public static final java.lang.String TAG_ORIENTATION = "Orientation";
- field public static final java.lang.String TAG_PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation";
- field public static final java.lang.String TAG_PIXEL_X_DIMENSION = "PixelXDimension";
- field public static final java.lang.String TAG_PIXEL_Y_DIMENSION = "PixelYDimension";
- field public static final java.lang.String TAG_PLANAR_CONFIGURATION = "PlanarConfiguration";
- field public static final java.lang.String TAG_PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
- field public static final java.lang.String TAG_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
- field public static final java.lang.String TAG_RELATED_SOUND_FILE = "RelatedSoundFile";
- field public static final java.lang.String TAG_RESOLUTION_UNIT = "ResolutionUnit";
- field public static final java.lang.String TAG_ROWS_PER_STRIP = "RowsPerStrip";
- field public static final java.lang.String TAG_RW2_ISO = "ISO";
- field public static final java.lang.String TAG_RW2_JPG_FROM_RAW = "JpgFromRaw";
- field public static final java.lang.String TAG_RW2_SENSOR_BOTTOM_BORDER = "SensorBottomBorder";
- field public static final java.lang.String TAG_RW2_SENSOR_LEFT_BORDER = "SensorLeftBorder";
- field public static final java.lang.String TAG_RW2_SENSOR_RIGHT_BORDER = "SensorRightBorder";
- field public static final java.lang.String TAG_RW2_SENSOR_TOP_BORDER = "SensorTopBorder";
- field public static final java.lang.String TAG_SAMPLES_PER_PIXEL = "SamplesPerPixel";
- field public static final java.lang.String TAG_SATURATION = "Saturation";
- field public static final java.lang.String TAG_SCENE_CAPTURE_TYPE = "SceneCaptureType";
- field public static final java.lang.String TAG_SCENE_TYPE = "SceneType";
- field public static final java.lang.String TAG_SENSING_METHOD = "SensingMethod";
- field public static final java.lang.String TAG_SHARPNESS = "Sharpness";
- field public static final java.lang.String TAG_SHUTTER_SPEED_VALUE = "ShutterSpeedValue";
- field public static final java.lang.String TAG_SOFTWARE = "Software";
- field public static final java.lang.String TAG_SPATIAL_FREQUENCY_RESPONSE = "SpatialFrequencyResponse";
- field public static final java.lang.String TAG_SPECTRAL_SENSITIVITY = "SpectralSensitivity";
- field public static final java.lang.String TAG_STRIP_BYTE_COUNTS = "StripByteCounts";
- field public static final java.lang.String TAG_STRIP_OFFSETS = "StripOffsets";
- field public static final java.lang.String TAG_SUBFILE_TYPE = "SubfileType";
- field public static final java.lang.String TAG_SUBJECT_AREA = "SubjectArea";
- field public static final java.lang.String TAG_SUBJECT_DISTANCE = "SubjectDistance";
- field public static final java.lang.String TAG_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
- field public static final java.lang.String TAG_SUBJECT_LOCATION = "SubjectLocation";
- field public static final java.lang.String TAG_SUBSEC_TIME = "SubSecTime";
- field public static final deprecated java.lang.String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
- field public static final java.lang.String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
- field public static final deprecated java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
- field public static final java.lang.String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
- field public static final java.lang.String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
- field public static final java.lang.String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
- field public static final java.lang.String TAG_TRANSFER_FUNCTION = "TransferFunction";
- field public static final java.lang.String TAG_USER_COMMENT = "UserComment";
- field public static final java.lang.String TAG_WHITE_BALANCE = "WhiteBalance";
- field public static final java.lang.String TAG_WHITE_POINT = "WhitePoint";
- field public static final java.lang.String TAG_X_RESOLUTION = "XResolution";
- field public static final java.lang.String TAG_Y_CB_CR_COEFFICIENTS = "YCbCrCoefficients";
- field public static final java.lang.String TAG_Y_CB_CR_POSITIONING = "YCbCrPositioning";
- field public static final java.lang.String TAG_Y_CB_CR_SUB_SAMPLING = "YCbCrSubSampling";
- field public static final java.lang.String TAG_Y_RESOLUTION = "YResolution";
+ field @Deprecated public static final String TAG_APERTURE = "FNumber";
+ field public static final String TAG_APERTURE_VALUE = "ApertureValue";
+ field public static final String TAG_ARTIST = "Artist";
+ field public static final String TAG_BITS_PER_SAMPLE = "BitsPerSample";
+ field public static final String TAG_BRIGHTNESS_VALUE = "BrightnessValue";
+ field public static final String TAG_CFA_PATTERN = "CFAPattern";
+ field public static final String TAG_COLOR_SPACE = "ColorSpace";
+ field public static final String TAG_COMPONENTS_CONFIGURATION = "ComponentsConfiguration";
+ field public static final String TAG_COMPRESSED_BITS_PER_PIXEL = "CompressedBitsPerPixel";
+ field public static final String TAG_COMPRESSION = "Compression";
+ field public static final String TAG_CONTRAST = "Contrast";
+ field public static final String TAG_COPYRIGHT = "Copyright";
+ field public static final String TAG_CUSTOM_RENDERED = "CustomRendered";
+ field public static final String TAG_DATETIME = "DateTime";
+ field public static final String TAG_DATETIME_DIGITIZED = "DateTimeDigitized";
+ field public static final String TAG_DATETIME_ORIGINAL = "DateTimeOriginal";
+ field public static final String TAG_DEFAULT_CROP_SIZE = "DefaultCropSize";
+ field public static final String TAG_DEVICE_SETTING_DESCRIPTION = "DeviceSettingDescription";
+ field public static final String TAG_DIGITAL_ZOOM_RATIO = "DigitalZoomRatio";
+ field public static final String TAG_DNG_VERSION = "DNGVersion";
+ field public static final String TAG_EXIF_VERSION = "ExifVersion";
+ field public static final String TAG_EXPOSURE_BIAS_VALUE = "ExposureBiasValue";
+ field public static final String TAG_EXPOSURE_INDEX = "ExposureIndex";
+ field public static final String TAG_EXPOSURE_MODE = "ExposureMode";
+ field public static final String TAG_EXPOSURE_PROGRAM = "ExposureProgram";
+ field public static final String TAG_EXPOSURE_TIME = "ExposureTime";
+ field public static final String TAG_FILE_SOURCE = "FileSource";
+ field public static final String TAG_FLASH = "Flash";
+ field public static final String TAG_FLASHPIX_VERSION = "FlashpixVersion";
+ field public static final String TAG_FLASH_ENERGY = "FlashEnergy";
+ field public static final String TAG_FOCAL_LENGTH = "FocalLength";
+ field public static final String TAG_FOCAL_LENGTH_IN_35MM_FILM = "FocalLengthIn35mmFilm";
+ field public static final String TAG_FOCAL_PLANE_RESOLUTION_UNIT = "FocalPlaneResolutionUnit";
+ field public static final String TAG_FOCAL_PLANE_X_RESOLUTION = "FocalPlaneXResolution";
+ field public static final String TAG_FOCAL_PLANE_Y_RESOLUTION = "FocalPlaneYResolution";
+ field public static final String TAG_F_NUMBER = "FNumber";
+ field public static final String TAG_GAIN_CONTROL = "GainControl";
+ field public static final String TAG_GPS_ALTITUDE = "GPSAltitude";
+ field public static final String TAG_GPS_ALTITUDE_REF = "GPSAltitudeRef";
+ field public static final String TAG_GPS_AREA_INFORMATION = "GPSAreaInformation";
+ field public static final String TAG_GPS_DATESTAMP = "GPSDateStamp";
+ field public static final String TAG_GPS_DEST_BEARING = "GPSDestBearing";
+ field public static final String TAG_GPS_DEST_BEARING_REF = "GPSDestBearingRef";
+ field public static final String TAG_GPS_DEST_DISTANCE = "GPSDestDistance";
+ field public static final String TAG_GPS_DEST_DISTANCE_REF = "GPSDestDistanceRef";
+ field public static final String TAG_GPS_DEST_LATITUDE = "GPSDestLatitude";
+ field public static final String TAG_GPS_DEST_LATITUDE_REF = "GPSDestLatitudeRef";
+ field public static final String TAG_GPS_DEST_LONGITUDE = "GPSDestLongitude";
+ field public static final String TAG_GPS_DEST_LONGITUDE_REF = "GPSDestLongitudeRef";
+ field public static final String TAG_GPS_DIFFERENTIAL = "GPSDifferential";
+ field public static final String TAG_GPS_DOP = "GPSDOP";
+ field public static final String TAG_GPS_IMG_DIRECTION = "GPSImgDirection";
+ field public static final String TAG_GPS_IMG_DIRECTION_REF = "GPSImgDirectionRef";
+ field public static final String TAG_GPS_LATITUDE = "GPSLatitude";
+ field public static final String TAG_GPS_LATITUDE_REF = "GPSLatitudeRef";
+ field public static final String TAG_GPS_LONGITUDE = "GPSLongitude";
+ field public static final String TAG_GPS_LONGITUDE_REF = "GPSLongitudeRef";
+ field public static final String TAG_GPS_MAP_DATUM = "GPSMapDatum";
+ field public static final String TAG_GPS_MEASURE_MODE = "GPSMeasureMode";
+ field public static final String TAG_GPS_PROCESSING_METHOD = "GPSProcessingMethod";
+ field public static final String TAG_GPS_SATELLITES = "GPSSatellites";
+ field public static final String TAG_GPS_SPEED = "GPSSpeed";
+ field public static final String TAG_GPS_SPEED_REF = "GPSSpeedRef";
+ field public static final String TAG_GPS_STATUS = "GPSStatus";
+ field public static final String TAG_GPS_TIMESTAMP = "GPSTimeStamp";
+ field public static final String TAG_GPS_TRACK = "GPSTrack";
+ field public static final String TAG_GPS_TRACK_REF = "GPSTrackRef";
+ field public static final String TAG_GPS_VERSION_ID = "GPSVersionID";
+ field public static final String TAG_IMAGE_DESCRIPTION = "ImageDescription";
+ field public static final String TAG_IMAGE_LENGTH = "ImageLength";
+ field public static final String TAG_IMAGE_UNIQUE_ID = "ImageUniqueID";
+ field public static final String TAG_IMAGE_WIDTH = "ImageWidth";
+ field public static final String TAG_INTEROPERABILITY_INDEX = "InteroperabilityIndex";
+ field @Deprecated public static final String TAG_ISO = "ISOSpeedRatings";
+ field public static final String TAG_ISO_SPEED_RATINGS = "ISOSpeedRatings";
+ field public static final String TAG_JPEG_INTERCHANGE_FORMAT = "JPEGInterchangeFormat";
+ field public static final String TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = "JPEGInterchangeFormatLength";
+ field public static final String TAG_LIGHT_SOURCE = "LightSource";
+ field public static final String TAG_MAKE = "Make";
+ field public static final String TAG_MAKER_NOTE = "MakerNote";
+ field public static final String TAG_MAX_APERTURE_VALUE = "MaxApertureValue";
+ field public static final String TAG_METERING_MODE = "MeteringMode";
+ field public static final String TAG_MODEL = "Model";
+ field public static final String TAG_NEW_SUBFILE_TYPE = "NewSubfileType";
+ field public static final String TAG_OECF = "OECF";
+ field public static final String TAG_ORF_ASPECT_FRAME = "AspectFrame";
+ field public static final String TAG_ORF_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
+ field public static final String TAG_ORF_PREVIEW_IMAGE_START = "PreviewImageStart";
+ field public static final String TAG_ORF_THUMBNAIL_IMAGE = "ThumbnailImage";
+ field public static final String TAG_ORIENTATION = "Orientation";
+ field public static final String TAG_PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation";
+ field public static final String TAG_PIXEL_X_DIMENSION = "PixelXDimension";
+ field public static final String TAG_PIXEL_Y_DIMENSION = "PixelYDimension";
+ field public static final String TAG_PLANAR_CONFIGURATION = "PlanarConfiguration";
+ field public static final String TAG_PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
+ field public static final String TAG_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
+ field public static final String TAG_RELATED_SOUND_FILE = "RelatedSoundFile";
+ field public static final String TAG_RESOLUTION_UNIT = "ResolutionUnit";
+ field public static final String TAG_ROWS_PER_STRIP = "RowsPerStrip";
+ field public static final String TAG_RW2_ISO = "ISO";
+ field public static final String TAG_RW2_JPG_FROM_RAW = "JpgFromRaw";
+ field public static final String TAG_RW2_SENSOR_BOTTOM_BORDER = "SensorBottomBorder";
+ field public static final String TAG_RW2_SENSOR_LEFT_BORDER = "SensorLeftBorder";
+ field public static final String TAG_RW2_SENSOR_RIGHT_BORDER = "SensorRightBorder";
+ field public static final String TAG_RW2_SENSOR_TOP_BORDER = "SensorTopBorder";
+ field public static final String TAG_SAMPLES_PER_PIXEL = "SamplesPerPixel";
+ field public static final String TAG_SATURATION = "Saturation";
+ field public static final String TAG_SCENE_CAPTURE_TYPE = "SceneCaptureType";
+ field public static final String TAG_SCENE_TYPE = "SceneType";
+ field public static final String TAG_SENSING_METHOD = "SensingMethod";
+ field public static final String TAG_SHARPNESS = "Sharpness";
+ field public static final String TAG_SHUTTER_SPEED_VALUE = "ShutterSpeedValue";
+ field public static final String TAG_SOFTWARE = "Software";
+ field public static final String TAG_SPATIAL_FREQUENCY_RESPONSE = "SpatialFrequencyResponse";
+ field public static final String TAG_SPECTRAL_SENSITIVITY = "SpectralSensitivity";
+ field public static final String TAG_STRIP_BYTE_COUNTS = "StripByteCounts";
+ field public static final String TAG_STRIP_OFFSETS = "StripOffsets";
+ field public static final String TAG_SUBFILE_TYPE = "SubfileType";
+ field public static final String TAG_SUBJECT_AREA = "SubjectArea";
+ field public static final String TAG_SUBJECT_DISTANCE = "SubjectDistance";
+ field public static final String TAG_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
+ field public static final String TAG_SUBJECT_LOCATION = "SubjectLocation";
+ field public static final String TAG_SUBSEC_TIME = "SubSecTime";
+ field @Deprecated public static final String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
+ field public static final String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
+ field @Deprecated public static final String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
+ field public static final String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
+ field public static final String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
+ field public static final String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
+ field public static final String TAG_TRANSFER_FUNCTION = "TransferFunction";
+ field public static final String TAG_USER_COMMENT = "UserComment";
+ field public static final String TAG_WHITE_BALANCE = "WhiteBalance";
+ field public static final String TAG_WHITE_POINT = "WhitePoint";
+ field public static final String TAG_X_RESOLUTION = "XResolution";
+ field public static final String TAG_Y_CB_CR_COEFFICIENTS = "YCbCrCoefficients";
+ field public static final String TAG_Y_CB_CR_POSITIONING = "YCbCrPositioning";
+ field public static final String TAG_Y_CB_CR_SUB_SAMPLING = "YCbCrSubSampling";
+ field public static final String TAG_Y_RESOLUTION = "YResolution";
field public static final int WHITEBALANCE_AUTO = 0; // 0x0
field public static final int WHITEBALANCE_MANUAL = 1; // 0x1
}
@@ -23936,19 +23861,19 @@
field public static final long FD_LENGTH_UNKNOWN = 576460752303423487L; // 0x7ffffffffffffffL
}
- public static class FileDataSourceDesc.Builder extends android.media.DataSourceDesc.BuilderBase {
+ public static class FileDataSourceDesc.Builder extends android.media.DataSourceDesc.BuilderBase<android.media.FileDataSourceDesc.Builder> {
ctor public FileDataSourceDesc.Builder();
ctor public FileDataSourceDesc.Builder(android.media.FileDataSourceDesc);
- method public android.media.FileDataSourceDesc build();
- method public android.media.FileDataSourceDesc.Builder setDataSource(android.os.ParcelFileDescriptor);
- method public android.media.FileDataSourceDesc.Builder setDataSource(android.os.ParcelFileDescriptor, long, long);
+ method @NonNull public android.media.FileDataSourceDesc build();
+ method @NonNull public android.media.FileDataSourceDesc.Builder setDataSource(@NonNull android.os.ParcelFileDescriptor);
+ method @NonNull public android.media.FileDataSourceDesc.Builder setDataSource(@NonNull android.os.ParcelFileDescriptor, long, long);
}
public abstract class Image implements java.lang.AutoCloseable {
method public abstract void close();
method public android.graphics.Rect getCropRect();
method public abstract int getFormat();
- method public android.hardware.HardwareBuffer getHardwareBuffer();
+ method @Nullable public android.hardware.HardwareBuffer getHardwareBuffer();
method public abstract int getHeight();
method public abstract android.media.Image.Plane[] getPlanes();
method public abstract long getTimestamp();
@@ -23957,7 +23882,7 @@
method public void setTimestamp(long);
}
- public static abstract class Image.Plane {
+ public abstract static class Image.Plane {
method public abstract java.nio.ByteBuffer getBuffer();
method public abstract int getPixelStride();
method public abstract int getRowStride();
@@ -23974,11 +23899,12 @@
method public android.view.Surface getSurface();
method public int getWidth();
method public static android.media.ImageReader newInstance(int, int, int, int);
+ method public static android.media.ImageReader newInstance(int, int, int, int, long);
method public void setOnImageAvailableListener(android.media.ImageReader.OnImageAvailableListener, android.os.Handler);
}
- public static abstract interface ImageReader.OnImageAvailableListener {
- method public abstract void onImageAvailable(android.media.ImageReader);
+ public static interface ImageReader.OnImageAvailableListener {
+ method public void onImageAvailable(android.media.ImageReader);
}
public class ImageWriter implements java.lang.AutoCloseable {
@@ -23987,22 +23913,23 @@
method public int getFormat();
method public int getMaxImages();
method public static android.media.ImageWriter newInstance(android.view.Surface, int);
+ method public static android.media.ImageWriter newInstance(android.view.Surface, int, int);
method public void queueInputImage(android.media.Image);
method public void setOnImageReleasedListener(android.media.ImageWriter.OnImageReleasedListener, android.os.Handler);
}
- public static abstract interface ImageWriter.OnImageReleasedListener {
- method public abstract void onImageReleased(android.media.ImageWriter);
+ public static interface ImageWriter.OnImageReleasedListener {
+ method public void onImageReleased(android.media.ImageWriter);
}
public class JetPlayer {
method public boolean clearQueue();
- method public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
+ method public Object clone() throws java.lang.CloneNotSupportedException;
method public boolean closeJetFile();
method protected void finalize();
method public static android.media.JetPlayer getJetPlayer();
method public static int getMaxTracks();
- method public boolean loadJetFile(java.lang.String);
+ method public boolean loadJetFile(String);
method public boolean loadJetFile(android.content.res.AssetFileDescriptor);
method public boolean pause();
method public boolean play();
@@ -24017,11 +23944,11 @@
method public boolean triggerClip(int);
}
- public static abstract interface JetPlayer.OnJetEventListener {
- method public abstract void onJetEvent(android.media.JetPlayer, short, byte, byte, byte, byte);
- method public abstract void onJetNumQueuedSegmentUpdate(android.media.JetPlayer, int);
- method public abstract void onJetPauseUpdate(android.media.JetPlayer, int);
- method public abstract void onJetUserIdUpdate(android.media.JetPlayer, int, int);
+ public static interface JetPlayer.OnJetEventListener {
+ method public void onJetEvent(android.media.JetPlayer, short, byte, byte, byte, byte);
+ method public void onJetNumQueuedSegmentUpdate(android.media.JetPlayer, int);
+ method public void onJetPauseUpdate(android.media.JetPlayer, int);
+ method public void onJetUserIdUpdate(android.media.JetPlayer, int, int);
}
public class MediaActionSound {
@@ -24042,29 +23969,29 @@
method protected void finalize();
method public static boolean isSystemIdSupported(int);
method public android.media.MediaCas.Session openSession() throws android.media.MediaCasException;
- method public void processEmm(byte[], int, int) throws android.media.MediaCasException;
- method public void processEmm(byte[]) throws android.media.MediaCasException;
- method public void provision(java.lang.String) throws android.media.MediaCasException;
- method public void refreshEntitlements(int, byte[]) throws android.media.MediaCasException;
- method public void sendEvent(int, int, byte[]) throws android.media.MediaCasException;
- method public void setEventListener(android.media.MediaCas.EventListener, android.os.Handler);
- method public void setPrivateData(byte[]) throws android.media.MediaCasException;
+ method public void processEmm(@NonNull byte[], int, int) throws android.media.MediaCasException;
+ method public void processEmm(@NonNull byte[]) throws android.media.MediaCasException;
+ method public void provision(@NonNull String) throws android.media.MediaCasException;
+ method public void refreshEntitlements(int, @Nullable byte[]) throws android.media.MediaCasException;
+ method public void sendEvent(int, int, @Nullable byte[]) throws android.media.MediaCasException;
+ method public void setEventListener(@Nullable android.media.MediaCas.EventListener, @Nullable android.os.Handler);
+ method public void setPrivateData(@NonNull byte[]) throws android.media.MediaCasException;
}
- public static abstract interface MediaCas.EventListener {
- method public abstract void onEvent(android.media.MediaCas, int, int, byte[]);
+ public static interface MediaCas.EventListener {
+ method public void onEvent(android.media.MediaCas, int, int, @Nullable byte[]);
}
public static class MediaCas.PluginDescriptor {
- method public java.lang.String getName();
+ method @NonNull public String getName();
method public int getSystemId();
}
public final class MediaCas.Session implements java.lang.AutoCloseable {
method public void close();
- method public void processEcm(byte[], int, int) throws android.media.MediaCasException;
- method public void processEcm(byte[]) throws android.media.MediaCasException;
- method public void setPrivateData(byte[]) throws android.media.MediaCasException;
+ method public void processEcm(@NonNull byte[], int, int) throws android.media.MediaCasException;
+ method public void processEcm(@NonNull byte[]) throws android.media.MediaCasException;
+ method public void setPrivateData(@NonNull byte[]) throws android.media.MediaCasException;
}
public class MediaCasException extends java.lang.Exception {
@@ -24083,46 +24010,47 @@
}
public class MediaCasStateException extends java.lang.IllegalStateException {
- method public java.lang.String getDiagnosticInfo();
+ method @NonNull public String getDiagnosticInfo();
}
public final class MediaCodec {
- method public void configure(android.media.MediaFormat, android.view.Surface, android.media.MediaCrypto, int);
- method public void configure(android.media.MediaFormat, android.view.Surface, int, android.media.MediaDescrambler);
- method public static android.media.MediaCodec createByCodecName(java.lang.String) throws java.io.IOException;
- method public static android.media.MediaCodec createDecoderByType(java.lang.String) throws java.io.IOException;
- method public static android.media.MediaCodec createEncoderByType(java.lang.String) throws java.io.IOException;
- method public android.view.Surface createInputSurface();
- method public static android.view.Surface createPersistentInputSurface();
+ method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, @Nullable android.media.MediaCrypto, int);
+ method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, int, @Nullable android.media.MediaDescrambler);
+ method @NonNull public static android.media.MediaCodec createByCodecName(@NonNull String) throws java.io.IOException;
+ method @NonNull public static android.media.MediaCodec createDecoderByType(@NonNull String) throws java.io.IOException;
+ method @NonNull public static android.media.MediaCodec createEncoderByType(@NonNull String) throws java.io.IOException;
+ method @NonNull public android.view.Surface createInputSurface();
+ method @NonNull public static android.view.Surface createPersistentInputSurface();
method public int dequeueInputBuffer(long);
- method public int dequeueOutputBuffer(android.media.MediaCodec.BufferInfo, long);
+ method public int dequeueOutputBuffer(@NonNull android.media.MediaCodec.BufferInfo, long);
method protected void finalize();
method public void flush();
- method public android.media.MediaCodecInfo getCodecInfo();
- method public java.nio.ByteBuffer getInputBuffer(int);
- method public deprecated java.nio.ByteBuffer[] getInputBuffers();
- method public android.media.MediaFormat getInputFormat();
- method public android.media.Image getInputImage(int);
+ method @NonNull public String getCanonicalName();
+ method @NonNull public android.media.MediaCodecInfo getCodecInfo();
+ method @Nullable public java.nio.ByteBuffer getInputBuffer(int);
+ method @Deprecated @NonNull public java.nio.ByteBuffer[] getInputBuffers();
+ method @NonNull public android.media.MediaFormat getInputFormat();
+ method @Nullable public android.media.Image getInputImage(int);
method public android.os.PersistableBundle getMetrics();
- method public java.lang.String getName();
- method public java.nio.ByteBuffer getOutputBuffer(int);
- method public deprecated java.nio.ByteBuffer[] getOutputBuffers();
- method public android.media.MediaFormat getOutputFormat();
- method public android.media.MediaFormat getOutputFormat(int);
- method public android.media.Image getOutputImage(int);
+ method @NonNull public String getName();
+ method @Nullable public java.nio.ByteBuffer getOutputBuffer(int);
+ method @Deprecated @NonNull public java.nio.ByteBuffer[] getOutputBuffers();
+ method @NonNull public android.media.MediaFormat getOutputFormat();
+ method @NonNull public android.media.MediaFormat getOutputFormat(int);
+ method @Nullable public android.media.Image getOutputImage(int);
method public void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
- method public void queueSecureInputBuffer(int, int, android.media.MediaCodec.CryptoInfo, long, int) throws android.media.MediaCodec.CryptoException;
+ method public void queueSecureInputBuffer(int, int, @NonNull android.media.MediaCodec.CryptoInfo, long, int) throws android.media.MediaCodec.CryptoException;
method public void release();
method public void releaseOutputBuffer(int, boolean);
method public void releaseOutputBuffer(int, long);
method public void reset();
- method public void setAudioPresentation(android.media.AudioPresentation);
- method public void setCallback(android.media.MediaCodec.Callback, android.os.Handler);
- method public void setCallback(android.media.MediaCodec.Callback);
- method public void setInputSurface(android.view.Surface);
- method public void setOnFrameRenderedListener(android.media.MediaCodec.OnFrameRenderedListener, android.os.Handler);
- method public void setOutputSurface(android.view.Surface);
- method public void setParameters(android.os.Bundle);
+ method public void setAudioPresentation(@NonNull android.media.AudioPresentation);
+ method public void setCallback(@Nullable android.media.MediaCodec.Callback, @Nullable android.os.Handler);
+ method public void setCallback(@Nullable android.media.MediaCodec.Callback);
+ method public void setInputSurface(@NonNull android.view.Surface);
+ method public void setOnFrameRenderedListener(@Nullable android.media.MediaCodec.OnFrameRenderedListener, @Nullable android.os.Handler);
+ method public void setOutputSurface(@NonNull android.view.Surface);
+ method public void setParameters(@Nullable android.os.Bundle);
method public void setVideoScalingMode(int);
method public void signalEndOfInputStream();
method public void start();
@@ -24131,18 +24059,18 @@
field public static final int BUFFER_FLAG_END_OF_STREAM = 4; // 0x4
field public static final int BUFFER_FLAG_KEY_FRAME = 1; // 0x1
field public static final int BUFFER_FLAG_PARTIAL_FRAME = 8; // 0x8
- field public static final deprecated int BUFFER_FLAG_SYNC_FRAME = 1; // 0x1
+ field @Deprecated public static final int BUFFER_FLAG_SYNC_FRAME = 1; // 0x1
field public static final int CONFIGURE_FLAG_ENCODE = 1; // 0x1
field public static final int CRYPTO_MODE_AES_CBC = 2; // 0x2
field public static final int CRYPTO_MODE_AES_CTR = 1; // 0x1
field public static final int CRYPTO_MODE_UNENCRYPTED = 0; // 0x0
- field public static final deprecated int INFO_OUTPUT_BUFFERS_CHANGED = -3; // 0xfffffffd
+ field @Deprecated public static final int INFO_OUTPUT_BUFFERS_CHANGED = -3; // 0xfffffffd
field public static final int INFO_OUTPUT_FORMAT_CHANGED = -2; // 0xfffffffe
field public static final int INFO_TRY_AGAIN_LATER = -1; // 0xffffffff
- field public static final java.lang.String PARAMETER_KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
- field public static final java.lang.String PARAMETER_KEY_REQUEST_SYNC_FRAME = "request-sync";
- field public static final java.lang.String PARAMETER_KEY_SUSPEND = "drop-input-frames";
- field public static final java.lang.String PARAMETER_KEY_VIDEO_BITRATE = "video-bitrate";
+ field public static final String PARAMETER_KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
+ field public static final String PARAMETER_KEY_REQUEST_SYNC_FRAME = "request-sync";
+ field public static final String PARAMETER_KEY_SUSPEND = "drop-input-frames";
+ field public static final String PARAMETER_KEY_VIDEO_BITRATE = "video-bitrate";
field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
}
@@ -24156,16 +24084,16 @@
field public int size;
}
- public static abstract class MediaCodec.Callback {
+ public abstract static class MediaCodec.Callback {
ctor public MediaCodec.Callback();
- method public abstract void onError(android.media.MediaCodec, android.media.MediaCodec.CodecException);
- method public abstract void onInputBufferAvailable(android.media.MediaCodec, int);
- method public abstract void onOutputBufferAvailable(android.media.MediaCodec, int, android.media.MediaCodec.BufferInfo);
- method public abstract void onOutputFormatChanged(android.media.MediaCodec, android.media.MediaFormat);
+ method public abstract void onError(@NonNull android.media.MediaCodec, @NonNull android.media.MediaCodec.CodecException);
+ method public abstract void onInputBufferAvailable(@NonNull android.media.MediaCodec, int);
+ method public abstract void onOutputBufferAvailable(@NonNull android.media.MediaCodec, int, @NonNull android.media.MediaCodec.BufferInfo);
+ method public abstract void onOutputFormatChanged(@NonNull android.media.MediaCodec, @NonNull android.media.MediaFormat);
}
public static final class MediaCodec.CodecException extends java.lang.IllegalStateException {
- method public java.lang.String getDiagnosticInfo();
+ method @NonNull public String getDiagnosticInfo();
method public int getErrorCode();
method public boolean isRecoverable();
method public boolean isTransient();
@@ -24174,7 +24102,7 @@
}
public static final class MediaCodec.CryptoException extends java.lang.RuntimeException {
- ctor public MediaCodec.CryptoException(int, java.lang.String);
+ ctor public MediaCodec.CryptoException(int, @Nullable String);
method public int getErrorCode();
field public static final int ERROR_FRAME_TOO_LARGE = 8; // 0x8
field public static final int ERROR_INSUFFICIENT_OUTPUT_PROTECTION = 4; // 0x4
@@ -24189,7 +24117,7 @@
public static final class MediaCodec.CryptoInfo {
ctor public MediaCodec.CryptoInfo();
- method public void set(int, int[], int[], byte[], byte[], int);
+ method public void set(int, @NonNull int[], @NonNull int[], @NonNull byte[], @NonNull byte[], int);
method public void setPattern(android.media.MediaCodec.CryptoInfo.Pattern);
field public byte[] iv;
field public byte[] key;
@@ -24207,27 +24135,32 @@
}
public static final class MediaCodec.MetricsConstants {
- field public static final java.lang.String CODEC = "android.media.mediacodec.codec";
- field public static final java.lang.String ENCODER = "android.media.mediacodec.encoder";
- field public static final java.lang.String HEIGHT = "android.media.mediacodec.height";
- field public static final java.lang.String MIME_TYPE = "android.media.mediacodec.mime";
- field public static final java.lang.String MODE = "android.media.mediacodec.mode";
- field public static final java.lang.String MODE_AUDIO = "audio";
- field public static final java.lang.String MODE_VIDEO = "video";
- field public static final java.lang.String ROTATION = "android.media.mediacodec.rotation";
- field public static final java.lang.String SECURE = "android.media.mediacodec.secure";
- field public static final java.lang.String WIDTH = "android.media.mediacodec.width";
+ field public static final String CODEC = "android.media.mediacodec.codec";
+ field public static final String ENCODER = "android.media.mediacodec.encoder";
+ field public static final String HEIGHT = "android.media.mediacodec.height";
+ field public static final String MIME_TYPE = "android.media.mediacodec.mime";
+ field public static final String MODE = "android.media.mediacodec.mode";
+ field public static final String MODE_AUDIO = "audio";
+ field public static final String MODE_VIDEO = "video";
+ field public static final String ROTATION = "android.media.mediacodec.rotation";
+ field public static final String SECURE = "android.media.mediacodec.secure";
+ field public static final String WIDTH = "android.media.mediacodec.width";
}
- public static abstract interface MediaCodec.OnFrameRenderedListener {
- method public abstract void onFrameRendered(android.media.MediaCodec, long, long);
+ public static interface MediaCodec.OnFrameRenderedListener {
+ method public void onFrameRendered(@NonNull android.media.MediaCodec, long, long);
}
public final class MediaCodecInfo {
- method public android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(java.lang.String);
- method public java.lang.String getName();
- method public java.lang.String[] getSupportedTypes();
+ method @NonNull public String getCanonicalName();
+ method public android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(String);
+ method @NonNull public String getName();
+ method public String[] getSupportedTypes();
+ method public boolean isAlias();
method public boolean isEncoder();
+ method public boolean isHardwareAccelerated();
+ method public boolean isSoftwareOnly();
+ method public boolean isVendor();
}
public static final class MediaCodecInfo.AudioCapabilities {
@@ -24240,73 +24173,76 @@
public static final class MediaCodecInfo.CodecCapabilities {
ctor public MediaCodecInfo.CodecCapabilities();
- method public static android.media.MediaCodecInfo.CodecCapabilities createFromProfileLevel(java.lang.String, int, int);
+ method public static android.media.MediaCodecInfo.CodecCapabilities createFromProfileLevel(String, int, int);
method public android.media.MediaCodecInfo.AudioCapabilities getAudioCapabilities();
method public android.media.MediaFormat getDefaultFormat();
method public android.media.MediaCodecInfo.EncoderCapabilities getEncoderCapabilities();
method public int getMaxSupportedInstances();
- method public java.lang.String getMimeType();
+ method public String getMimeType();
method public android.media.MediaCodecInfo.VideoCapabilities getVideoCapabilities();
- method public boolean isFeatureRequired(java.lang.String);
- method public boolean isFeatureSupported(java.lang.String);
+ method public boolean isFeatureRequired(String);
+ method public boolean isFeatureSupported(String);
method public boolean isFormatSupported(android.media.MediaFormat);
- field public static final deprecated int COLOR_Format12bitRGB444 = 3; // 0x3
- field public static final deprecated int COLOR_Format16bitARGB1555 = 5; // 0x5
- field public static final deprecated int COLOR_Format16bitARGB4444 = 4; // 0x4
- field public static final deprecated int COLOR_Format16bitBGR565 = 7; // 0x7
+ field @Deprecated public static final int COLOR_Format12bitRGB444 = 3; // 0x3
+ field @Deprecated public static final int COLOR_Format16bitARGB1555 = 5; // 0x5
+ field @Deprecated public static final int COLOR_Format16bitARGB4444 = 4; // 0x4
+ field @Deprecated public static final int COLOR_Format16bitBGR565 = 7; // 0x7
field public static final int COLOR_Format16bitRGB565 = 6; // 0x6
- field public static final deprecated int COLOR_Format18BitBGR666 = 41; // 0x29
- field public static final deprecated int COLOR_Format18bitARGB1665 = 9; // 0x9
- field public static final deprecated int COLOR_Format18bitRGB666 = 8; // 0x8
- field public static final deprecated int COLOR_Format19bitARGB1666 = 10; // 0xa
- field public static final deprecated int COLOR_Format24BitABGR6666 = 43; // 0x2b
- field public static final deprecated int COLOR_Format24BitARGB6666 = 42; // 0x2a
- field public static final deprecated int COLOR_Format24bitARGB1887 = 13; // 0xd
+ field @Deprecated public static final int COLOR_Format18BitBGR666 = 41; // 0x29
+ field @Deprecated public static final int COLOR_Format18bitARGB1665 = 9; // 0x9
+ field @Deprecated public static final int COLOR_Format18bitRGB666 = 8; // 0x8
+ field @Deprecated public static final int COLOR_Format19bitARGB1666 = 10; // 0xa
+ field @Deprecated public static final int COLOR_Format24BitABGR6666 = 43; // 0x2b
+ field @Deprecated public static final int COLOR_Format24BitARGB6666 = 42; // 0x2a
+ field @Deprecated public static final int COLOR_Format24bitARGB1887 = 13; // 0xd
field public static final int COLOR_Format24bitBGR888 = 12; // 0xc
- field public static final deprecated int COLOR_Format24bitRGB888 = 11; // 0xb
- field public static final deprecated int COLOR_Format25bitARGB1888 = 14; // 0xe
+ field @Deprecated public static final int COLOR_Format24bitRGB888 = 11; // 0xb
+ field @Deprecated public static final int COLOR_Format25bitARGB1888 = 14; // 0xe
field public static final int COLOR_Format32bitABGR8888 = 2130747392; // 0x7f00a000
- field public static final deprecated int COLOR_Format32bitARGB8888 = 16; // 0x10
- field public static final deprecated int COLOR_Format32bitBGRA8888 = 15; // 0xf
- field public static final deprecated int COLOR_Format8bitRGB332 = 2; // 0x2
- field public static final deprecated int COLOR_FormatCbYCrY = 27; // 0x1b
- field public static final deprecated int COLOR_FormatCrYCbY = 28; // 0x1c
+ field @Deprecated public static final int COLOR_Format32bitARGB8888 = 16; // 0x10
+ field @Deprecated public static final int COLOR_Format32bitBGRA8888 = 15; // 0xf
+ field @Deprecated public static final int COLOR_Format8bitRGB332 = 2; // 0x2
+ field @Deprecated public static final int COLOR_FormatCbYCrY = 27; // 0x1b
+ field @Deprecated public static final int COLOR_FormatCrYCbY = 28; // 0x1c
field public static final int COLOR_FormatL16 = 36; // 0x24
- field public static final deprecated int COLOR_FormatL2 = 33; // 0x21
- field public static final deprecated int COLOR_FormatL24 = 37; // 0x25
- field public static final deprecated int COLOR_FormatL32 = 38; // 0x26
- field public static final deprecated int COLOR_FormatL4 = 34; // 0x22
+ field @Deprecated public static final int COLOR_FormatL2 = 33; // 0x21
+ field @Deprecated public static final int COLOR_FormatL24 = 37; // 0x25
+ field @Deprecated public static final int COLOR_FormatL32 = 38; // 0x26
+ field @Deprecated public static final int COLOR_FormatL4 = 34; // 0x22
field public static final int COLOR_FormatL8 = 35; // 0x23
- field public static final deprecated int COLOR_FormatMonochrome = 1; // 0x1
+ field @Deprecated public static final int COLOR_FormatMonochrome = 1; // 0x1
field public static final int COLOR_FormatRGBAFlexible = 2134288520; // 0x7f36a888
field public static final int COLOR_FormatRGBFlexible = 2134292616; // 0x7f36b888
field public static final int COLOR_FormatRawBayer10bit = 31; // 0x1f
field public static final int COLOR_FormatRawBayer8bit = 30; // 0x1e
field public static final int COLOR_FormatRawBayer8bitcompressed = 32; // 0x20
field public static final int COLOR_FormatSurface = 2130708361; // 0x7f000789
- field public static final deprecated int COLOR_FormatYCbYCr = 25; // 0x19
- field public static final deprecated int COLOR_FormatYCrYCb = 26; // 0x1a
- field public static final deprecated int COLOR_FormatYUV411PackedPlanar = 18; // 0x12
- field public static final deprecated int COLOR_FormatYUV411Planar = 17; // 0x11
+ field @Deprecated public static final int COLOR_FormatYCbYCr = 25; // 0x19
+ field @Deprecated public static final int COLOR_FormatYCrYCb = 26; // 0x1a
+ field @Deprecated public static final int COLOR_FormatYUV411PackedPlanar = 18; // 0x12
+ field @Deprecated public static final int COLOR_FormatYUV411Planar = 17; // 0x11
field public static final int COLOR_FormatYUV420Flexible = 2135033992; // 0x7f420888
- field public static final deprecated int COLOR_FormatYUV420PackedPlanar = 20; // 0x14
- field public static final deprecated int COLOR_FormatYUV420PackedSemiPlanar = 39; // 0x27
- field public static final deprecated int COLOR_FormatYUV420Planar = 19; // 0x13
- field public static final deprecated int COLOR_FormatYUV420SemiPlanar = 21; // 0x15
+ field @Deprecated public static final int COLOR_FormatYUV420PackedPlanar = 20; // 0x14
+ field @Deprecated public static final int COLOR_FormatYUV420PackedSemiPlanar = 39; // 0x27
+ field @Deprecated public static final int COLOR_FormatYUV420Planar = 19; // 0x13
+ field @Deprecated public static final int COLOR_FormatYUV420SemiPlanar = 21; // 0x15
field public static final int COLOR_FormatYUV422Flexible = 2135042184; // 0x7f422888
- field public static final deprecated int COLOR_FormatYUV422PackedPlanar = 23; // 0x17
- field public static final deprecated int COLOR_FormatYUV422PackedSemiPlanar = 40; // 0x28
- field public static final deprecated int COLOR_FormatYUV422Planar = 22; // 0x16
- field public static final deprecated int COLOR_FormatYUV422SemiPlanar = 24; // 0x18
+ field @Deprecated public static final int COLOR_FormatYUV422PackedPlanar = 23; // 0x17
+ field @Deprecated public static final int COLOR_FormatYUV422PackedSemiPlanar = 40; // 0x28
+ field @Deprecated public static final int COLOR_FormatYUV422Planar = 22; // 0x16
+ field @Deprecated public static final int COLOR_FormatYUV422SemiPlanar = 24; // 0x18
field public static final int COLOR_FormatYUV444Flexible = 2135181448; // 0x7f444888
- field public static final deprecated int COLOR_FormatYUV444Interleaved = 29; // 0x1d
- field public static final deprecated int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00
- field public static final deprecated int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100
- field public static final java.lang.String FEATURE_AdaptivePlayback = "adaptive-playback";
- field public static final java.lang.String FEATURE_IntraRefresh = "intra-refresh";
- field public static final java.lang.String FEATURE_PartialFrame = "partial-frame";
- field public static final java.lang.String FEATURE_SecurePlayback = "secure-playback";
- field public static final java.lang.String FEATURE_TunneledPlayback = "tunneled-playback";
+ field @Deprecated public static final int COLOR_FormatYUV444Interleaved = 29; // 0x1d
+ field @Deprecated public static final int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00
+ field @Deprecated public static final int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100
+ field public static final String FEATURE_AdaptivePlayback = "adaptive-playback";
+ field public static final String FEATURE_DynamicTimestamp = "dynamic-timestamp";
+ field public static final String FEATURE_FrameParsing = "frame-parsing";
+ field public static final String FEATURE_IntraRefresh = "intra-refresh";
+ field public static final String FEATURE_MultipleFrames = "multiple-frames";
+ field public static final String FEATURE_PartialFrame = "partial-frame";
+ field public static final String FEATURE_SecurePlayback = "secure-playback";
+ field public static final String FEATURE_TunneledPlayback = "tunneled-playback";
field public int[] colorFormats;
field public android.media.MediaCodecInfo.CodecProfileLevel[] profileLevels;
}
@@ -24325,6 +24261,33 @@
field public static final int AACObjectSSR = 3; // 0x3
field public static final int AACObjectScalable = 6; // 0x6
field public static final int AACObjectXHE = 42; // 0x2a
+ field public static final int AV1Level2 = 1; // 0x1
+ field public static final int AV1Level21 = 2; // 0x2
+ field public static final int AV1Level22 = 4; // 0x4
+ field public static final int AV1Level23 = 8; // 0x8
+ field public static final int AV1Level3 = 16; // 0x10
+ field public static final int AV1Level31 = 32; // 0x20
+ field public static final int AV1Level32 = 64; // 0x40
+ field public static final int AV1Level33 = 128; // 0x80
+ field public static final int AV1Level4 = 256; // 0x100
+ field public static final int AV1Level41 = 512; // 0x200
+ field public static final int AV1Level42 = 1024; // 0x400
+ field public static final int AV1Level43 = 2048; // 0x800
+ field public static final int AV1Level5 = 4096; // 0x1000
+ field public static final int AV1Level51 = 8192; // 0x2000
+ field public static final int AV1Level52 = 16384; // 0x4000
+ field public static final int AV1Level53 = 32768; // 0x8000
+ field public static final int AV1Level6 = 65536; // 0x10000
+ field public static final int AV1Level61 = 131072; // 0x20000
+ field public static final int AV1Level62 = 262144; // 0x40000
+ field public static final int AV1Level63 = 524288; // 0x80000
+ field public static final int AV1Level7 = 1048576; // 0x100000
+ field public static final int AV1Level71 = 2097152; // 0x200000
+ field public static final int AV1Level72 = 4194304; // 0x400000
+ field public static final int AV1Level73 = 8388608; // 0x800000
+ field public static final int AV1Profile0 = 1; // 0x1
+ field public static final int AV1Profile1 = 2; // 0x2
+ field public static final int AV1Profile2 = 4; // 0x4
field public static final int AVCLevel1 = 1; // 0x1
field public static final int AVCLevel11 = 4; // 0x4
field public static final int AVCLevel12 = 8; // 0x8
@@ -24342,6 +24305,9 @@
field public static final int AVCLevel5 = 16384; // 0x4000
field public static final int AVCLevel51 = 32768; // 0x8000
field public static final int AVCLevel52 = 65536; // 0x10000
+ field public static final int AVCLevel6 = 131072; // 0x20000
+ field public static final int AVCLevel61 = 262144; // 0x40000
+ field public static final int AVCLevel62 = 524288; // 0x80000
field public static final int AVCProfileBaseline = 1; // 0x1
field public static final int AVCProfileConstrainedBaseline = 65536; // 0x10000
field public static final int AVCProfileConstrainedHigh = 524288; // 0x80000
@@ -24497,41 +24463,100 @@
public static final class MediaCodecInfo.VideoCapabilities {
method public boolean areSizeAndRateSupported(int, int, double);
- method public android.util.Range<java.lang.Double> getAchievableFrameRatesFor(int, int);
+ method @Nullable public android.util.Range<java.lang.Double> getAchievableFrameRatesFor(int, int);
method public android.util.Range<java.lang.Integer> getBitrateRange();
method public int getHeightAlignment();
method public android.util.Range<java.lang.Integer> getSupportedFrameRates();
method public android.util.Range<java.lang.Double> getSupportedFrameRatesFor(int, int);
method public android.util.Range<java.lang.Integer> getSupportedHeights();
method public android.util.Range<java.lang.Integer> getSupportedHeightsFor(int);
+ method @Nullable public java.util.List<android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint> getSupportedPerformancePoints();
method public android.util.Range<java.lang.Integer> getSupportedWidths();
method public android.util.Range<java.lang.Integer> getSupportedWidthsFor(int);
method public int getWidthAlignment();
method public boolean isSizeSupported(int, int);
}
+ public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint {
+ method public boolean covers(@NonNull android.media.MediaFormat);
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_100;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_120;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_200;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_24;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_240;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_25;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_30;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_50;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_60;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_100;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_120;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_200;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_24;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_240;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_25;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_30;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_50;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_60;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_24;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_25;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_30;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_48;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_50;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_60;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_100;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_120;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_200;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_24;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_240;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_25;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_30;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_50;
+ field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_60;
+ field public final int frameRate;
+ field public final int height;
+ field public final int width;
+ }
+
public final class MediaCodecList {
ctor public MediaCodecList(int);
- method public java.lang.String findDecoderForFormat(android.media.MediaFormat);
- method public java.lang.String findEncoderForFormat(android.media.MediaFormat);
- method public static deprecated int getCodecCount();
- method public static deprecated android.media.MediaCodecInfo getCodecInfoAt(int);
+ method public String findDecoderForFormat(android.media.MediaFormat);
+ method public String findEncoderForFormat(android.media.MediaFormat);
+ method @Deprecated public static int getCodecCount();
+ method @Deprecated public static android.media.MediaCodecInfo getCodecInfoAt(int);
method public android.media.MediaCodecInfo[] getCodecInfos();
field public static final int ALL_CODECS = 1; // 0x1
field public static final int REGULAR_CODECS = 0; // 0x0
}
+ public class MediaController2 implements java.lang.AutoCloseable {
+ ctor public MediaController2(@NonNull android.content.Context, @NonNull android.media.Session2Token);
+ ctor public MediaController2(@NonNull android.content.Context, @NonNull android.media.Session2Token, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaController2.ControllerCallback);
+ method public void cancelSessionCommand(@NonNull Object);
+ method public void close();
+ method public boolean isPlaybackActive();
+ method @NonNull public Object sendSessionCommand(@NonNull android.media.Session2Command, @Nullable android.os.Bundle);
+ }
+
+ public abstract static class MediaController2.ControllerCallback {
+ ctor public MediaController2.ControllerCallback();
+ method public void onCommandResult(@NonNull android.media.MediaController2, @NonNull Object, @NonNull android.media.Session2Command, @NonNull android.media.Session2Command.Result);
+ method public void onConnected(@NonNull android.media.MediaController2, @NonNull android.media.Session2CommandGroup);
+ method public void onDisconnected(@NonNull android.media.MediaController2);
+ method public void onPlaybackActiveChanged(@NonNull android.media.MediaController2, boolean);
+ method @Nullable public android.media.Session2Command.Result onSessionCommand(@NonNull android.media.MediaController2, @NonNull android.media.Session2Command, @Nullable android.os.Bundle);
+ }
+
public final class MediaCrypto {
- ctor public MediaCrypto(java.util.UUID, byte[]) throws android.media.MediaCryptoException;
+ ctor public MediaCrypto(@NonNull java.util.UUID, @NonNull byte[]) throws android.media.MediaCryptoException;
method protected void finalize();
- method public static boolean isCryptoSchemeSupported(java.util.UUID);
+ method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID);
method public void release();
- method public boolean requiresSecureDecoderComponent(java.lang.String);
- method public void setMediaDrmSession(byte[]) throws android.media.MediaCryptoException;
+ method public boolean requiresSecureDecoderComponent(@NonNull String);
+ method public void setMediaDrmSession(@NonNull byte[]) throws android.media.MediaCryptoException;
}
public final class MediaCryptoException extends java.lang.Exception {
- ctor public MediaCryptoException(java.lang.String);
+ ctor public MediaCryptoException(@Nullable String);
}
public abstract class MediaDataSource implements java.io.Closeable {
@@ -24543,10 +24568,10 @@
public final class MediaDescrambler implements java.lang.AutoCloseable {
ctor public MediaDescrambler(int) throws android.media.MediaCasException.UnsupportedCasException;
method public void close();
- method public int descramble(java.nio.ByteBuffer, java.nio.ByteBuffer, android.media.MediaCodec.CryptoInfo);
+ method public int descramble(@NonNull java.nio.ByteBuffer, @NonNull java.nio.ByteBuffer, @NonNull android.media.MediaCodec.CryptoInfo);
method protected void finalize();
- method public boolean requiresSecureDecoderComponent(java.lang.String);
- method public void setMediaCasSession(android.media.MediaCas.Session);
+ method public boolean requiresSecureDecoderComponent(@NonNull String);
+ method public void setMediaCasSession(@NonNull android.media.MediaCas.Session);
field public static final byte SCRAMBLE_CONTROL_EVEN_KEY = 2; // 0x2
field public static final byte SCRAMBLE_CONTROL_ODD_KEY = 3; // 0x3
field public static final byte SCRAMBLE_CONTROL_RESERVED = 1; // 0x1
@@ -24556,14 +24581,14 @@
public class MediaDescription implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.CharSequence getDescription();
- method public android.os.Bundle getExtras();
- method public android.graphics.Bitmap getIconBitmap();
- method public android.net.Uri getIconUri();
- method public java.lang.String getMediaId();
- method public android.net.Uri getMediaUri();
- method public java.lang.CharSequence getSubtitle();
- method public java.lang.CharSequence getTitle();
+ method @Nullable public CharSequence getDescription();
+ method @Nullable public android.os.Bundle getExtras();
+ method @Nullable public android.graphics.Bitmap getIconBitmap();
+ method @Nullable public android.net.Uri getIconUri();
+ method @Nullable public String getMediaId();
+ method @Nullable public android.net.Uri getMediaUri();
+ method @Nullable public CharSequence getSubtitle();
+ method @Nullable public CharSequence getTitle();
method public void writeToParcel(android.os.Parcel, int);
field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
@@ -24573,67 +24598,67 @@
field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
field public static final android.os.Parcelable.Creator<android.media.MediaDescription> CREATOR;
- field public static final java.lang.String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
+ field public static final String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
}
public static class MediaDescription.Builder {
ctor public MediaDescription.Builder();
method public android.media.MediaDescription build();
- method public android.media.MediaDescription.Builder setDescription(java.lang.CharSequence);
- method public android.media.MediaDescription.Builder setExtras(android.os.Bundle);
- method public android.media.MediaDescription.Builder setIconBitmap(android.graphics.Bitmap);
- method public android.media.MediaDescription.Builder setIconUri(android.net.Uri);
- method public android.media.MediaDescription.Builder setMediaId(java.lang.String);
- method public android.media.MediaDescription.Builder setMediaUri(android.net.Uri);
- method public android.media.MediaDescription.Builder setSubtitle(java.lang.CharSequence);
- method public android.media.MediaDescription.Builder setTitle(java.lang.CharSequence);
+ method public android.media.MediaDescription.Builder setDescription(@Nullable CharSequence);
+ method public android.media.MediaDescription.Builder setExtras(@Nullable android.os.Bundle);
+ method public android.media.MediaDescription.Builder setIconBitmap(@Nullable android.graphics.Bitmap);
+ method public android.media.MediaDescription.Builder setIconUri(@Nullable android.net.Uri);
+ method public android.media.MediaDescription.Builder setMediaId(@Nullable String);
+ method public android.media.MediaDescription.Builder setMediaUri(@Nullable android.net.Uri);
+ method public android.media.MediaDescription.Builder setSubtitle(@Nullable CharSequence);
+ method public android.media.MediaDescription.Builder setTitle(@Nullable CharSequence);
}
public final class MediaDrm implements java.lang.AutoCloseable {
- ctor public MediaDrm(java.util.UUID) throws android.media.UnsupportedSchemeException;
+ ctor public MediaDrm(@NonNull java.util.UUID) throws android.media.UnsupportedSchemeException;
method public void close();
- method public void closeSession(byte[]);
- method public int getConnectedHdcpLevel();
- method public android.media.MediaDrm.CryptoSession getCryptoSession(byte[], java.lang.String, java.lang.String);
- method public android.media.MediaDrm.KeyRequest getKeyRequest(byte[], byte[], java.lang.String, int, java.util.HashMap<java.lang.String, java.lang.String>) throws android.media.NotProvisionedException;
- method public int getMaxHdcpLevel();
+ method public void closeSession(@NonNull byte[]);
+ method @android.media.MediaDrm.HdcpLevel public int getConnectedHdcpLevel();
+ method public android.media.MediaDrm.CryptoSession getCryptoSession(@NonNull byte[], @NonNull String, @NonNull String);
+ method @NonNull public android.media.MediaDrm.KeyRequest getKeyRequest(@NonNull byte[], @Nullable byte[], @Nullable String, int, @Nullable java.util.HashMap<java.lang.String,java.lang.String>) throws android.media.NotProvisionedException;
+ method @android.media.MediaDrm.HdcpLevel public int getMaxHdcpLevel();
method public static int getMaxSecurityLevel();
method public int getMaxSessionCount();
method public android.os.PersistableBundle getMetrics();
- method public java.util.List<byte[]> getOfflineLicenseKeySetIds();
- method public int getOfflineLicenseState(byte[]);
+ method @NonNull public java.util.List<byte[]> getOfflineLicenseKeySetIds();
+ method public int getOfflineLicenseState(@NonNull byte[]);
method public int getOpenSessionCount();
- method public byte[] getPropertyByteArray(java.lang.String);
- method public java.lang.String getPropertyString(java.lang.String);
- method public android.media.MediaDrm.ProvisionRequest getProvisionRequest();
- method public byte[] getSecureStop(byte[]);
- method public java.util.List<byte[]> getSecureStopIds();
- method public java.util.List<byte[]> getSecureStops();
- method public int getSecurityLevel(byte[]);
- method public static boolean isCryptoSchemeSupported(java.util.UUID);
- method public static boolean isCryptoSchemeSupported(java.util.UUID, java.lang.String);
- method public byte[] openSession() throws android.media.NotProvisionedException, android.media.ResourceBusyException;
- method public byte[] openSession(int) throws android.media.NotProvisionedException, android.media.ResourceBusyException;
- method public byte[] provideKeyResponse(byte[], byte[]) throws android.media.DeniedByServerException, android.media.NotProvisionedException;
- method public void provideProvisionResponse(byte[]) throws android.media.DeniedByServerException;
- method public java.util.HashMap<java.lang.String, java.lang.String> queryKeyStatus(byte[]);
- method public deprecated void release();
- method public deprecated void releaseAllSecureStops();
- method public void releaseSecureStops(byte[]);
+ method @NonNull public byte[] getPropertyByteArray(String);
+ method @NonNull public String getPropertyString(@NonNull String);
+ method @NonNull public android.media.MediaDrm.ProvisionRequest getProvisionRequest();
+ method @NonNull public byte[] getSecureStop(@NonNull byte[]);
+ method @NonNull public java.util.List<byte[]> getSecureStopIds();
+ method @NonNull public java.util.List<byte[]> getSecureStops();
+ method @android.media.MediaDrm.SecurityLevel public int getSecurityLevel(@NonNull byte[]);
+ method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID);
+ method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID, @NonNull String);
+ method @NonNull public byte[] openSession() throws android.media.NotProvisionedException, android.media.ResourceBusyException;
+ method @NonNull public byte[] openSession(@android.media.MediaDrm.SecurityLevel int) throws android.media.NotProvisionedException, android.media.ResourceBusyException;
+ method @Nullable public byte[] provideKeyResponse(@NonNull byte[], @NonNull byte[]) throws android.media.DeniedByServerException, android.media.NotProvisionedException;
+ method public void provideProvisionResponse(@NonNull byte[]) throws android.media.DeniedByServerException;
+ method @NonNull public java.util.HashMap<java.lang.String,java.lang.String> queryKeyStatus(@NonNull byte[]);
+ method @Deprecated public void release();
+ method @Deprecated public void releaseAllSecureStops();
+ method public void releaseSecureStops(@NonNull byte[]);
method public void removeAllSecureStops();
- method public void removeKeys(byte[]);
- method public void removeOfflineLicense(byte[]);
- method public void removeSecureStop(byte[]);
- method public void restoreKeys(byte[], byte[]);
- method public void setOnEventListener(android.media.MediaDrm.OnEventListener);
- method public void setOnExpirationUpdateListener(android.media.MediaDrm.OnExpirationUpdateListener, android.os.Handler);
- method public void setOnKeyStatusChangeListener(android.media.MediaDrm.OnKeyStatusChangeListener, android.os.Handler);
- method public void setOnSessionLostStateListener(android.media.MediaDrm.OnSessionLostStateListener, android.os.Handler);
- method public void setPropertyByteArray(java.lang.String, byte[]);
- method public void setPropertyString(java.lang.String, java.lang.String);
- field public static final deprecated int EVENT_KEY_EXPIRED = 3; // 0x3
+ method public void removeKeys(@NonNull byte[]);
+ method public void removeOfflineLicense(@NonNull byte[]);
+ method public void removeSecureStop(@NonNull byte[]);
+ method public void restoreKeys(@NonNull byte[], @NonNull byte[]);
+ method public void setOnEventListener(@Nullable android.media.MediaDrm.OnEventListener);
+ method public void setOnExpirationUpdateListener(@Nullable android.media.MediaDrm.OnExpirationUpdateListener, @Nullable android.os.Handler);
+ method public void setOnKeyStatusChangeListener(@Nullable android.media.MediaDrm.OnKeyStatusChangeListener, @Nullable android.os.Handler);
+ method public void setOnSessionLostStateListener(@Nullable android.media.MediaDrm.OnSessionLostStateListener, @Nullable android.os.Handler);
+ method public void setPropertyByteArray(@NonNull String, @NonNull byte[]);
+ method public void setPropertyString(@NonNull String, @NonNull String);
+ field @Deprecated public static final int EVENT_KEY_EXPIRED = 3; // 0x3
field public static final int EVENT_KEY_REQUIRED = 2; // 0x2
- field public static final deprecated int EVENT_PROVISION_REQUIRED = 1; // 0x1
+ field @Deprecated public static final int EVENT_PROVISION_REQUIRED = 1; // 0x1
field public static final int EVENT_SESSION_RECLAIMED = 5; // 0x5
field public static final int EVENT_VENDOR_DEFINED = 4; // 0x4
field public static final int HDCP_LEVEL_UNKNOWN = 0; // 0x0
@@ -24643,17 +24668,18 @@
field public static final int HDCP_V2 = 3; // 0x3
field public static final int HDCP_V2_1 = 4; // 0x4
field public static final int HDCP_V2_2 = 5; // 0x5
+ field public static final int HDCP_V2_3 = 6; // 0x6
field public static final int KEY_TYPE_OFFLINE = 2; // 0x2
field public static final int KEY_TYPE_RELEASE = 3; // 0x3
field public static final int KEY_TYPE_STREAMING = 1; // 0x1
field public static final int OFFLINE_LICENSE_INACTIVE = 2; // 0x2
field public static final int OFFLINE_LICENSE_STATE_UNKNOWN = 0; // 0x0
field public static final int OFFLINE_LICENSE_USABLE = 1; // 0x1
- field public static final java.lang.String PROPERTY_ALGORITHMS = "algorithms";
- field public static final java.lang.String PROPERTY_DESCRIPTION = "description";
- field public static final java.lang.String PROPERTY_DEVICE_UNIQUE_ID = "deviceUniqueId";
- field public static final java.lang.String PROPERTY_VENDOR = "vendor";
- field public static final java.lang.String PROPERTY_VERSION = "version";
+ field public static final String PROPERTY_ALGORITHMS = "algorithms";
+ field public static final String PROPERTY_DESCRIPTION = "description";
+ field public static final String PROPERTY_DEVICE_UNIQUE_ID = "deviceUniqueId";
+ field public static final String PROPERTY_VENDOR = "vendor";
+ field public static final String PROPERTY_VERSION = "version";
field public static final int SECURITY_LEVEL_HW_SECURE_ALL = 5; // 0x5
field public static final int SECURITY_LEVEL_HW_SECURE_CRYPTO = 3; // 0x3
field public static final int SECURITY_LEVEL_HW_SECURE_DECODE = 4; // 0x4
@@ -24663,18 +24689,18 @@
}
public final class MediaDrm.CryptoSession {
- method public byte[] decrypt(byte[], byte[], byte[]);
- method public byte[] encrypt(byte[], byte[], byte[]);
- method public byte[] sign(byte[], byte[]);
- method public boolean verify(byte[], byte[], byte[]);
+ method @NonNull public byte[] decrypt(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
+ method @NonNull public byte[] encrypt(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
+ method @NonNull public byte[] sign(@NonNull byte[], @NonNull byte[]);
+ method public boolean verify(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
}
- public static abstract class MediaDrm.HdcpLevel implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @IntDef({android.media.MediaDrm.HDCP_LEVEL_UNKNOWN, android.media.MediaDrm.HDCP_NONE, android.media.MediaDrm.HDCP_V1, android.media.MediaDrm.HDCP_V2, android.media.MediaDrm.HDCP_V2_1, android.media.MediaDrm.HDCP_V2_2, android.media.MediaDrm.HDCP_V2_3, android.media.MediaDrm.HDCP_NO_DIGITAL_OUTPUT}) public static @interface MediaDrm.HdcpLevel {
}
public static final class MediaDrm.KeyRequest {
- method public byte[] getData();
- method public java.lang.String getDefaultUrl();
+ method @NonNull public byte[] getData();
+ method @NonNull public String getDefaultUrl();
method public int getRequestType();
field public static final int REQUEST_TYPE_INITIAL = 0; // 0x0
field public static final int REQUEST_TYPE_NONE = 3; // 0x3
@@ -24684,7 +24710,7 @@
}
public static final class MediaDrm.KeyStatus {
- method public byte[] getKeyId();
+ method @NonNull public byte[] getKeyId();
method public int getStatusCode();
field public static final int STATUS_EXPIRED = 1; // 0x1
field public static final int STATUS_INTERNAL_ERROR = 4; // 0x4
@@ -24694,115 +24720,115 @@
}
public static final class MediaDrm.MediaDrmStateException extends java.lang.IllegalStateException {
- method public java.lang.String getDiagnosticInfo();
+ method @NonNull public String getDiagnosticInfo();
}
public static final class MediaDrm.MetricsConstants {
- field public static final java.lang.String CLOSE_SESSION_ERROR_COUNT = "drm.mediadrm.close_session.error.count";
- field public static final java.lang.String CLOSE_SESSION_ERROR_LIST = "drm.mediadrm.close_session.error.list";
- field public static final java.lang.String CLOSE_SESSION_OK_COUNT = "drm.mediadrm.close_session.ok.count";
- field public static final java.lang.String EVENT_KEY_EXPIRED_COUNT = "drm.mediadrm.event.KEY_EXPIRED.count";
- field public static final java.lang.String EVENT_KEY_NEEDED_COUNT = "drm.mediadrm.event.KEY_NEEDED.count";
- field public static final java.lang.String EVENT_PROVISION_REQUIRED_COUNT = "drm.mediadrm.event.PROVISION_REQUIRED.count";
- field public static final java.lang.String EVENT_SESSION_RECLAIMED_COUNT = "drm.mediadrm.event.SESSION_RECLAIMED.count";
- field public static final java.lang.String EVENT_VENDOR_DEFINED_COUNT = "drm.mediadrm.event.VENDOR_DEFINED.count";
- field public static final java.lang.String GET_DEVICE_UNIQUE_ID_ERROR_COUNT = "drm.mediadrm.get_device_unique_id.error.count";
- field public static final java.lang.String GET_DEVICE_UNIQUE_ID_ERROR_LIST = "drm.mediadrm.get_device_unique_id.error.list";
- field public static final java.lang.String GET_DEVICE_UNIQUE_ID_OK_COUNT = "drm.mediadrm.get_device_unique_id.ok.count";
- field public static final java.lang.String GET_KEY_REQUEST_ERROR_COUNT = "drm.mediadrm.get_key_request.error.count";
- field public static final java.lang.String GET_KEY_REQUEST_ERROR_LIST = "drm.mediadrm.get_key_request.error.list";
- field public static final java.lang.String GET_KEY_REQUEST_OK_COUNT = "drm.mediadrm.get_key_request.ok.count";
- field public static final java.lang.String GET_KEY_REQUEST_OK_TIME_MICROS = "drm.mediadrm.get_key_request.ok.average_time_micros";
- field public static final java.lang.String GET_PROVISION_REQUEST_ERROR_COUNT = "drm.mediadrm.get_provision_request.error.count";
- field public static final java.lang.String GET_PROVISION_REQUEST_ERROR_LIST = "drm.mediadrm.get_provision_request.error.list";
- field public static final java.lang.String GET_PROVISION_REQUEST_OK_COUNT = "drm.mediadrm.get_provision_request.ok.count";
- field public static final java.lang.String KEY_STATUS_EXPIRED_COUNT = "drm.mediadrm.key_status.EXPIRED.count";
- field public static final java.lang.String KEY_STATUS_INTERNAL_ERROR_COUNT = "drm.mediadrm.key_status.INTERNAL_ERROR.count";
- field public static final java.lang.String KEY_STATUS_OUTPUT_NOT_ALLOWED_COUNT = "drm.mediadrm.key_status_change.OUTPUT_NOT_ALLOWED.count";
- field public static final java.lang.String KEY_STATUS_PENDING_COUNT = "drm.mediadrm.key_status_change.PENDING.count";
- field public static final java.lang.String KEY_STATUS_USABLE_COUNT = "drm.mediadrm.key_status_change.USABLE.count";
- field public static final java.lang.String OPEN_SESSION_ERROR_COUNT = "drm.mediadrm.open_session.error.count";
- field public static final java.lang.String OPEN_SESSION_ERROR_LIST = "drm.mediadrm.open_session.error.list";
- field public static final java.lang.String OPEN_SESSION_OK_COUNT = "drm.mediadrm.open_session.ok.count";
- field public static final java.lang.String PROVIDE_KEY_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_key_response.error.count";
- field public static final java.lang.String PROVIDE_KEY_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_key_response.error.list";
- field public static final java.lang.String PROVIDE_KEY_RESPONSE_OK_COUNT = "drm.mediadrm.provide_key_response.ok.count";
- field public static final java.lang.String PROVIDE_KEY_RESPONSE_OK_TIME_MICROS = "drm.mediadrm.provide_key_response.ok.average_time_micros";
- field public static final java.lang.String PROVIDE_PROVISION_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_provision_response.error.count";
- field public static final java.lang.String PROVIDE_PROVISION_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_provision_response.error.list";
- field public static final java.lang.String PROVIDE_PROVISION_RESPONSE_OK_COUNT = "drm.mediadrm.provide_provision_response.ok.count";
- field public static final java.lang.String SESSION_END_TIMES_MS = "drm.mediadrm.session_end_times_ms";
- field public static final java.lang.String SESSION_START_TIMES_MS = "drm.mediadrm.session_start_times_ms";
+ field public static final String CLOSE_SESSION_ERROR_COUNT = "drm.mediadrm.close_session.error.count";
+ field public static final String CLOSE_SESSION_ERROR_LIST = "drm.mediadrm.close_session.error.list";
+ field public static final String CLOSE_SESSION_OK_COUNT = "drm.mediadrm.close_session.ok.count";
+ field public static final String EVENT_KEY_EXPIRED_COUNT = "drm.mediadrm.event.KEY_EXPIRED.count";
+ field public static final String EVENT_KEY_NEEDED_COUNT = "drm.mediadrm.event.KEY_NEEDED.count";
+ field public static final String EVENT_PROVISION_REQUIRED_COUNT = "drm.mediadrm.event.PROVISION_REQUIRED.count";
+ field public static final String EVENT_SESSION_RECLAIMED_COUNT = "drm.mediadrm.event.SESSION_RECLAIMED.count";
+ field public static final String EVENT_VENDOR_DEFINED_COUNT = "drm.mediadrm.event.VENDOR_DEFINED.count";
+ field public static final String GET_DEVICE_UNIQUE_ID_ERROR_COUNT = "drm.mediadrm.get_device_unique_id.error.count";
+ field public static final String GET_DEVICE_UNIQUE_ID_ERROR_LIST = "drm.mediadrm.get_device_unique_id.error.list";
+ field public static final String GET_DEVICE_UNIQUE_ID_OK_COUNT = "drm.mediadrm.get_device_unique_id.ok.count";
+ field public static final String GET_KEY_REQUEST_ERROR_COUNT = "drm.mediadrm.get_key_request.error.count";
+ field public static final String GET_KEY_REQUEST_ERROR_LIST = "drm.mediadrm.get_key_request.error.list";
+ field public static final String GET_KEY_REQUEST_OK_COUNT = "drm.mediadrm.get_key_request.ok.count";
+ field public static final String GET_KEY_REQUEST_OK_TIME_MICROS = "drm.mediadrm.get_key_request.ok.average_time_micros";
+ field public static final String GET_PROVISION_REQUEST_ERROR_COUNT = "drm.mediadrm.get_provision_request.error.count";
+ field public static final String GET_PROVISION_REQUEST_ERROR_LIST = "drm.mediadrm.get_provision_request.error.list";
+ field public static final String GET_PROVISION_REQUEST_OK_COUNT = "drm.mediadrm.get_provision_request.ok.count";
+ field public static final String KEY_STATUS_EXPIRED_COUNT = "drm.mediadrm.key_status.EXPIRED.count";
+ field public static final String KEY_STATUS_INTERNAL_ERROR_COUNT = "drm.mediadrm.key_status.INTERNAL_ERROR.count";
+ field public static final String KEY_STATUS_OUTPUT_NOT_ALLOWED_COUNT = "drm.mediadrm.key_status_change.OUTPUT_NOT_ALLOWED.count";
+ field public static final String KEY_STATUS_PENDING_COUNT = "drm.mediadrm.key_status_change.PENDING.count";
+ field public static final String KEY_STATUS_USABLE_COUNT = "drm.mediadrm.key_status_change.USABLE.count";
+ field public static final String OPEN_SESSION_ERROR_COUNT = "drm.mediadrm.open_session.error.count";
+ field public static final String OPEN_SESSION_ERROR_LIST = "drm.mediadrm.open_session.error.list";
+ field public static final String OPEN_SESSION_OK_COUNT = "drm.mediadrm.open_session.ok.count";
+ field public static final String PROVIDE_KEY_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_key_response.error.count";
+ field public static final String PROVIDE_KEY_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_key_response.error.list";
+ field public static final String PROVIDE_KEY_RESPONSE_OK_COUNT = "drm.mediadrm.provide_key_response.ok.count";
+ field public static final String PROVIDE_KEY_RESPONSE_OK_TIME_MICROS = "drm.mediadrm.provide_key_response.ok.average_time_micros";
+ field public static final String PROVIDE_PROVISION_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_provision_response.error.count";
+ field public static final String PROVIDE_PROVISION_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_provision_response.error.list";
+ field public static final String PROVIDE_PROVISION_RESPONSE_OK_COUNT = "drm.mediadrm.provide_provision_response.ok.count";
+ field public static final String SESSION_END_TIMES_MS = "drm.mediadrm.session_end_times_ms";
+ field public static final String SESSION_START_TIMES_MS = "drm.mediadrm.session_start_times_ms";
}
- public static abstract interface MediaDrm.OnEventListener {
- method public abstract void onEvent(android.media.MediaDrm, byte[], int, int, byte[]);
+ public static interface MediaDrm.OnEventListener {
+ method public void onEvent(@NonNull android.media.MediaDrm, @Nullable byte[], int, int, @Nullable byte[]);
}
- public static abstract interface MediaDrm.OnExpirationUpdateListener {
- method public abstract void onExpirationUpdate(android.media.MediaDrm, byte[], long);
+ public static interface MediaDrm.OnExpirationUpdateListener {
+ method public void onExpirationUpdate(@NonNull android.media.MediaDrm, @NonNull byte[], long);
}
- public static abstract interface MediaDrm.OnKeyStatusChangeListener {
- method public abstract void onKeyStatusChange(android.media.MediaDrm, byte[], java.util.List<android.media.MediaDrm.KeyStatus>, boolean);
+ public static interface MediaDrm.OnKeyStatusChangeListener {
+ method public void onKeyStatusChange(@NonNull android.media.MediaDrm, @NonNull byte[], @NonNull java.util.List<android.media.MediaDrm.KeyStatus>, boolean);
}
- public static abstract interface MediaDrm.OnSessionLostStateListener {
- method public abstract void onSessionLostState(android.media.MediaDrm, byte[]);
+ public static interface MediaDrm.OnSessionLostStateListener {
+ method public void onSessionLostState(@NonNull android.media.MediaDrm, @NonNull byte[]);
}
public static final class MediaDrm.ProvisionRequest {
- method public byte[] getData();
- method public java.lang.String getDefaultUrl();
+ method @NonNull public byte[] getData();
+ method @NonNull public String getDefaultUrl();
}
- public static abstract class MediaDrm.SecurityLevel implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @IntDef({android.media.MediaDrm.SECURITY_LEVEL_UNKNOWN, android.media.MediaDrm.SECURITY_LEVEL_SW_SECURE_CRYPTO, android.media.MediaDrm.SECURITY_LEVEL_SW_SECURE_DECODE, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_CRYPTO, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_DECODE, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL}) public static @interface MediaDrm.SecurityLevel {
}
public static final class MediaDrm.SessionException extends java.lang.RuntimeException {
- ctor public MediaDrm.SessionException(int, java.lang.String);
+ ctor public MediaDrm.SessionException(int, @Nullable String);
method public int getErrorCode();
field public static final int ERROR_RESOURCE_CONTENTION = 1; // 0x1
}
public class MediaDrmException extends java.lang.Exception {
- ctor public MediaDrmException(java.lang.String);
+ ctor public MediaDrmException(String);
}
public class MediaDrmResetException extends java.lang.IllegalStateException {
- ctor public MediaDrmResetException(java.lang.String);
+ ctor public MediaDrmResetException(String);
}
public final class MediaExtractor {
ctor public MediaExtractor();
method public boolean advance();
method protected void finalize();
- method public java.util.List<android.media.AudioPresentation> getAudioPresentations(int);
+ method @NonNull public java.util.List<android.media.AudioPresentation> getAudioPresentations(int);
method public long getCachedDuration();
method public android.media.MediaExtractor.CasInfo getCasInfo(int);
method public android.media.DrmInitData getDrmInitData();
method public android.os.PersistableBundle getMetrics();
- method public java.util.Map<java.util.UUID, byte[]> getPsshInfo();
- method public boolean getSampleCryptoInfo(android.media.MediaCodec.CryptoInfo);
+ method @Nullable public java.util.Map<java.util.UUID,byte[]> getPsshInfo();
+ method public boolean getSampleCryptoInfo(@NonNull android.media.MediaCodec.CryptoInfo);
method public int getSampleFlags();
method public long getSampleSize();
method public long getSampleTime();
method public int getSampleTrackIndex();
method public int getTrackCount();
- method public android.media.MediaFormat getTrackFormat(int);
+ method @NonNull public android.media.MediaFormat getTrackFormat(int);
method public boolean hasCacheReachedEndOfStream();
- method public int readSampleData(java.nio.ByteBuffer, int);
+ method public int readSampleData(@NonNull java.nio.ByteBuffer, int);
method public void release();
method public void seekTo(long, int);
method public void selectTrack(int);
- method public void setDataSource(android.media.MediaDataSource) throws java.io.IOException;
- method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException;
- method public void setDataSource(java.lang.String, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException;
- method public void setDataSource(java.lang.String) throws java.io.IOException;
- method public void setDataSource(android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public void setDataSource(java.io.FileDescriptor) throws java.io.IOException;
- method public void setDataSource(java.io.FileDescriptor, long, long) throws java.io.IOException;
- method public void setMediaCas(android.media.MediaCas);
+ method public void setDataSource(@NonNull android.media.MediaDataSource) throws java.io.IOException;
+ method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException;
+ method public void setDataSource(@NonNull String, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException;
+ method public void setDataSource(@NonNull String) throws java.io.IOException;
+ method public void setDataSource(@NonNull android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void setDataSource(@NonNull java.io.FileDescriptor) throws java.io.IOException;
+ method public void setDataSource(@NonNull java.io.FileDescriptor, long, long) throws java.io.IOException;
+ method public void setMediaCas(@NonNull android.media.MediaCas);
method public void unselectTrack(int);
field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2
field public static final int SAMPLE_FLAG_PARTIAL_FRAME = 4; // 0x4
@@ -24813,49 +24839,49 @@
}
public static final class MediaExtractor.CasInfo {
- method public byte[] getPrivateData();
+ method @Nullable public byte[] getPrivateData();
method public android.media.MediaCas.Session getSession();
method public int getSystemId();
}
public static final class MediaExtractor.MetricsConstants {
- field public static final java.lang.String FORMAT = "android.media.mediaextractor.fmt";
- field public static final java.lang.String MIME_TYPE = "android.media.mediaextractor.mime";
- field public static final java.lang.String TRACKS = "android.media.mediaextractor.ntrk";
+ field public static final String FORMAT = "android.media.mediaextractor.fmt";
+ field public static final String MIME_TYPE = "android.media.mediaextractor.mime";
+ field public static final String TRACKS = "android.media.mediaextractor.ntrk";
}
public final class MediaFormat {
ctor public MediaFormat();
- ctor public MediaFormat(android.media.MediaFormat);
- method public boolean containsFeature(java.lang.String);
- method public boolean containsKey(java.lang.String);
- method public static android.media.MediaFormat createAudioFormat(java.lang.String, int, int);
- method public static android.media.MediaFormat createSubtitleFormat(java.lang.String, java.lang.String);
- method public static android.media.MediaFormat createVideoFormat(java.lang.String, int, int);
- method public java.nio.ByteBuffer getByteBuffer(java.lang.String);
- method public java.nio.ByteBuffer getByteBuffer(java.lang.String, java.nio.ByteBuffer);
- method public boolean getFeatureEnabled(java.lang.String);
- method public java.util.Set<java.lang.String> getFeatures();
- method public float getFloat(java.lang.String);
- method public float getFloat(java.lang.String, float);
- method public int getInteger(java.lang.String);
- method public int getInteger(java.lang.String, int);
- method public java.util.Set<java.lang.String> getKeys();
- method public long getLong(java.lang.String);
- method public long getLong(java.lang.String, long);
- method public java.lang.Number getNumber(java.lang.String);
- method public java.lang.Number getNumber(java.lang.String, java.lang.Number);
- method public java.lang.String getString(java.lang.String);
- method public java.lang.String getString(java.lang.String, java.lang.String);
- method public int getValueTypeForKey(java.lang.String);
- method public void removeFeature(java.lang.String);
- method public void removeKey(java.lang.String);
- method public void setByteBuffer(java.lang.String, java.nio.ByteBuffer);
- method public void setFeatureEnabled(java.lang.String, boolean);
- method public void setFloat(java.lang.String, float);
- method public void setInteger(java.lang.String, int);
- method public void setLong(java.lang.String, long);
- method public void setString(java.lang.String, java.lang.String);
+ ctor public MediaFormat(@NonNull android.media.MediaFormat);
+ method public boolean containsFeature(@NonNull String);
+ method public boolean containsKey(@NonNull String);
+ method @NonNull public static android.media.MediaFormat createAudioFormat(@NonNull String, int, int);
+ method @NonNull public static android.media.MediaFormat createSubtitleFormat(@NonNull String, String);
+ method @NonNull public static android.media.MediaFormat createVideoFormat(@NonNull String, int, int);
+ method @Nullable public java.nio.ByteBuffer getByteBuffer(@NonNull String);
+ method @NonNull public java.nio.ByteBuffer getByteBuffer(@NonNull String, @NonNull java.nio.ByteBuffer);
+ method public boolean getFeatureEnabled(@NonNull String);
+ method @NonNull public java.util.Set<java.lang.String> getFeatures();
+ method public float getFloat(@NonNull String);
+ method public float getFloat(@NonNull String, float);
+ method public int getInteger(@NonNull String);
+ method public int getInteger(@NonNull String, int);
+ method @NonNull public java.util.Set<java.lang.String> getKeys();
+ method public long getLong(@NonNull String);
+ method public long getLong(@NonNull String, long);
+ method @Nullable public Number getNumber(@NonNull String);
+ method @NonNull public Number getNumber(@NonNull String, @NonNull Number);
+ method @Nullable public String getString(@NonNull String);
+ method @NonNull public String getString(@NonNull String, @NonNull String);
+ method public int getValueTypeForKey(@NonNull String);
+ method public void removeFeature(@NonNull String);
+ method public void removeKey(@NonNull String);
+ method public void setByteBuffer(@NonNull String, @Nullable java.nio.ByteBuffer);
+ method public void setFeatureEnabled(@NonNull String, boolean);
+ method public void setFloat(@NonNull String, float);
+ method public void setInteger(@NonNull String, int);
+ method public void setLong(@NonNull String, long);
+ method public void setString(@NonNull String, @Nullable String);
field public static final int COLOR_RANGE_FULL = 1; // 0x1
field public static final int COLOR_RANGE_LIMITED = 2; // 0x2
field public static final int COLOR_STANDARD_BT2020 = 6; // 0x6
@@ -24866,96 +24892,97 @@
field public static final int COLOR_TRANSFER_LINEAR = 1; // 0x1
field public static final int COLOR_TRANSFER_SDR_VIDEO = 3; // 0x3
field public static final int COLOR_TRANSFER_ST2084 = 6; // 0x6
- field public static final java.lang.String KEY_AAC_DRC_ATTENUATION_FACTOR = "aac-drc-cut-level";
- field public static final java.lang.String KEY_AAC_DRC_BOOST_FACTOR = "aac-drc-boost-level";
- field public static final java.lang.String KEY_AAC_DRC_EFFECT_TYPE = "aac-drc-effect-type";
- field public static final java.lang.String KEY_AAC_DRC_HEAVY_COMPRESSION = "aac-drc-heavy-compression";
- field public static final java.lang.String KEY_AAC_DRC_TARGET_REFERENCE_LEVEL = "aac-target-ref-level";
- field public static final java.lang.String KEY_AAC_ENCODED_TARGET_LEVEL = "aac-encoded-target-level";
- field public static final java.lang.String KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT = "aac-max-output-channel_count";
- field public static final java.lang.String KEY_AAC_PROFILE = "aac-profile";
- field public static final java.lang.String KEY_AAC_SBR_MODE = "aac-sbr-mode";
- field public static final java.lang.String KEY_AUDIO_SESSION_ID = "audio-session-id";
- field public static final java.lang.String KEY_BITRATE_MODE = "bitrate-mode";
- field public static final java.lang.String KEY_BIT_RATE = "bitrate";
- field public static final java.lang.String KEY_CAPTURE_RATE = "capture-rate";
- field public static final java.lang.String KEY_CHANNEL_COUNT = "channel-count";
- field public static final java.lang.String KEY_CHANNEL_MASK = "channel-mask";
- field public static final java.lang.String KEY_COLOR_FORMAT = "color-format";
- field public static final java.lang.String KEY_COLOR_RANGE = "color-range";
- field public static final java.lang.String KEY_COLOR_STANDARD = "color-standard";
- field public static final java.lang.String KEY_COLOR_TRANSFER = "color-transfer";
- field public static final java.lang.String KEY_COMPLEXITY = "complexity";
- field public static final java.lang.String KEY_DURATION = "durationUs";
- field public static final java.lang.String KEY_FLAC_COMPRESSION_LEVEL = "flac-compression-level";
- field public static final java.lang.String KEY_FRAME_RATE = "frame-rate";
- field public static final java.lang.String KEY_GRID_COLUMNS = "grid-cols";
- field public static final java.lang.String KEY_GRID_ROWS = "grid-rows";
- field public static final java.lang.String KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
- field public static final java.lang.String KEY_HDR_STATIC_INFO = "hdr-static-info";
- field public static final java.lang.String KEY_HEIGHT = "height";
- field public static final java.lang.String KEY_INTRA_REFRESH_PERIOD = "intra-refresh-period";
- field public static final java.lang.String KEY_IS_ADTS = "is-adts";
- field public static final java.lang.String KEY_IS_AUTOSELECT = "is-autoselect";
- field public static final java.lang.String KEY_IS_DEFAULT = "is-default";
- field public static final java.lang.String KEY_IS_FORCED_SUBTITLE = "is-forced-subtitle";
- field public static final java.lang.String KEY_I_FRAME_INTERVAL = "i-frame-interval";
- field public static final java.lang.String KEY_LANGUAGE = "language";
- field public static final java.lang.String KEY_LATENCY = "latency";
- field public static final java.lang.String KEY_LEVEL = "level";
- field public static final java.lang.String KEY_MAX_HEIGHT = "max-height";
- field public static final java.lang.String KEY_MAX_INPUT_SIZE = "max-input-size";
- field public static final java.lang.String KEY_MAX_WIDTH = "max-width";
- field public static final java.lang.String KEY_MIME = "mime";
- field public static final java.lang.String KEY_OPERATING_RATE = "operating-rate";
- field public static final java.lang.String KEY_OUTPUT_REORDER_DEPTH = "output-reorder-depth";
- field public static final java.lang.String KEY_PCM_ENCODING = "pcm-encoding";
- field public static final java.lang.String KEY_PRIORITY = "priority";
- field public static final java.lang.String KEY_PROFILE = "profile";
- field public static final java.lang.String KEY_PUSH_BLANK_BUFFERS_ON_STOP = "push-blank-buffers-on-shutdown";
- field public static final java.lang.String KEY_QUALITY = "quality";
- field public static final java.lang.String KEY_REPEAT_PREVIOUS_FRAME_AFTER = "repeat-previous-frame-after";
- field public static final java.lang.String KEY_ROTATION = "rotation-degrees";
- field public static final java.lang.String KEY_SAMPLE_RATE = "sample-rate";
- field public static final java.lang.String KEY_SLICE_HEIGHT = "slice-height";
- field public static final java.lang.String KEY_STRIDE = "stride";
- field public static final java.lang.String KEY_TEMPORAL_LAYERING = "ts-schema";
- field public static final java.lang.String KEY_TILE_HEIGHT = "tile-height";
- field public static final java.lang.String KEY_TILE_WIDTH = "tile-width";
- field public static final java.lang.String KEY_TRACK_ID = "track-id";
- field public static final java.lang.String KEY_WIDTH = "width";
- field public static final java.lang.String MIMETYPE_AUDIO_AAC = "audio/mp4a-latm";
- field public static final java.lang.String MIMETYPE_AUDIO_AC3 = "audio/ac3";
- field public static final java.lang.String MIMETYPE_AUDIO_AC4 = "audio/ac4";
- field public static final java.lang.String MIMETYPE_AUDIO_AMR_NB = "audio/3gpp";
- field public static final java.lang.String MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb";
- field public static final java.lang.String MIMETYPE_AUDIO_EAC3 = "audio/eac3";
- field public static final java.lang.String MIMETYPE_AUDIO_EAC3_JOC = "audio/eac3-joc";
- field public static final java.lang.String MIMETYPE_AUDIO_FLAC = "audio/flac";
- field public static final java.lang.String MIMETYPE_AUDIO_G711_ALAW = "audio/g711-alaw";
- field public static final java.lang.String MIMETYPE_AUDIO_G711_MLAW = "audio/g711-mlaw";
- field public static final java.lang.String MIMETYPE_AUDIO_MPEG = "audio/mpeg";
- field public static final java.lang.String MIMETYPE_AUDIO_MSGSM = "audio/gsm";
- field public static final java.lang.String MIMETYPE_AUDIO_OPUS = "audio/opus";
- field public static final java.lang.String MIMETYPE_AUDIO_QCELP = "audio/qcelp";
- field public static final java.lang.String MIMETYPE_AUDIO_RAW = "audio/raw";
- field public static final java.lang.String MIMETYPE_AUDIO_SCRAMBLED = "audio/scrambled";
- field public static final java.lang.String MIMETYPE_AUDIO_VORBIS = "audio/vorbis";
- field public static final java.lang.String MIMETYPE_IMAGE_ANDROID_HEIC = "image/vnd.android.heic";
- field public static final java.lang.String MIMETYPE_TEXT_CEA_608 = "text/cea-608";
- field public static final java.lang.String MIMETYPE_TEXT_CEA_708 = "text/cea-708";
- field public static final java.lang.String MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
- field public static final java.lang.String MIMETYPE_TEXT_VTT = "text/vtt";
- field public static final java.lang.String MIMETYPE_VIDEO_AVC = "video/avc";
- field public static final java.lang.String MIMETYPE_VIDEO_DOLBY_VISION = "video/dolby-vision";
- field public static final java.lang.String MIMETYPE_VIDEO_H263 = "video/3gpp";
- field public static final java.lang.String MIMETYPE_VIDEO_HEVC = "video/hevc";
- field public static final java.lang.String MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
- field public static final java.lang.String MIMETYPE_VIDEO_MPEG4 = "video/mp4v-es";
- field public static final java.lang.String MIMETYPE_VIDEO_RAW = "video/raw";
- field public static final java.lang.String MIMETYPE_VIDEO_SCRAMBLED = "video/scrambled";
- field public static final java.lang.String MIMETYPE_VIDEO_VP8 = "video/x-vnd.on2.vp8";
- field public static final java.lang.String MIMETYPE_VIDEO_VP9 = "video/x-vnd.on2.vp9";
+ field public static final String KEY_AAC_DRC_ATTENUATION_FACTOR = "aac-drc-cut-level";
+ field public static final String KEY_AAC_DRC_BOOST_FACTOR = "aac-drc-boost-level";
+ field public static final String KEY_AAC_DRC_EFFECT_TYPE = "aac-drc-effect-type";
+ field public static final String KEY_AAC_DRC_HEAVY_COMPRESSION = "aac-drc-heavy-compression";
+ field public static final String KEY_AAC_DRC_TARGET_REFERENCE_LEVEL = "aac-target-ref-level";
+ field public static final String KEY_AAC_ENCODED_TARGET_LEVEL = "aac-encoded-target-level";
+ field public static final String KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT = "aac-max-output-channel_count";
+ field public static final String KEY_AAC_PROFILE = "aac-profile";
+ field public static final String KEY_AAC_SBR_MODE = "aac-sbr-mode";
+ field public static final String KEY_AUDIO_SESSION_ID = "audio-session-id";
+ field public static final String KEY_BITRATE_MODE = "bitrate-mode";
+ field public static final String KEY_BIT_RATE = "bitrate";
+ field public static final String KEY_CAPTURE_RATE = "capture-rate";
+ field public static final String KEY_CHANNEL_COUNT = "channel-count";
+ field public static final String KEY_CHANNEL_MASK = "channel-mask";
+ field public static final String KEY_COLOR_FORMAT = "color-format";
+ field public static final String KEY_COLOR_RANGE = "color-range";
+ field public static final String KEY_COLOR_STANDARD = "color-standard";
+ field public static final String KEY_COLOR_TRANSFER = "color-transfer";
+ field public static final String KEY_COMPLEXITY = "complexity";
+ field public static final String KEY_DURATION = "durationUs";
+ field public static final String KEY_FLAC_COMPRESSION_LEVEL = "flac-compression-level";
+ field public static final String KEY_FRAME_RATE = "frame-rate";
+ field public static final String KEY_GRID_COLUMNS = "grid-cols";
+ field public static final String KEY_GRID_ROWS = "grid-rows";
+ field public static final String KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
+ field public static final String KEY_HDR_STATIC_INFO = "hdr-static-info";
+ field public static final String KEY_HEIGHT = "height";
+ field public static final String KEY_INTRA_REFRESH_PERIOD = "intra-refresh-period";
+ field public static final String KEY_IS_ADTS = "is-adts";
+ field public static final String KEY_IS_AUTOSELECT = "is-autoselect";
+ field public static final String KEY_IS_DEFAULT = "is-default";
+ field public static final String KEY_IS_FORCED_SUBTITLE = "is-forced-subtitle";
+ field public static final String KEY_I_FRAME_INTERVAL = "i-frame-interval";
+ field public static final String KEY_LANGUAGE = "language";
+ field public static final String KEY_LATENCY = "latency";
+ field public static final String KEY_LEVEL = "level";
+ field public static final String KEY_MAX_HEIGHT = "max-height";
+ field public static final String KEY_MAX_INPUT_SIZE = "max-input-size";
+ field public static final String KEY_MAX_WIDTH = "max-width";
+ field public static final String KEY_MIME = "mime";
+ field public static final String KEY_OPERATING_RATE = "operating-rate";
+ field public static final String KEY_OUTPUT_REORDER_DEPTH = "output-reorder-depth";
+ field public static final String KEY_PCM_ENCODING = "pcm-encoding";
+ field public static final String KEY_PRIORITY = "priority";
+ field public static final String KEY_PROFILE = "profile";
+ field public static final String KEY_PUSH_BLANK_BUFFERS_ON_STOP = "push-blank-buffers-on-shutdown";
+ field public static final String KEY_QUALITY = "quality";
+ field public static final String KEY_REPEAT_PREVIOUS_FRAME_AFTER = "repeat-previous-frame-after";
+ field public static final String KEY_ROTATION = "rotation-degrees";
+ field public static final String KEY_SAMPLE_RATE = "sample-rate";
+ field public static final String KEY_SLICE_HEIGHT = "slice-height";
+ field public static final String KEY_STRIDE = "stride";
+ field public static final String KEY_TEMPORAL_LAYERING = "ts-schema";
+ field public static final String KEY_TILE_HEIGHT = "tile-height";
+ field public static final String KEY_TILE_WIDTH = "tile-width";
+ field public static final String KEY_TRACK_ID = "track-id";
+ field public static final String KEY_WIDTH = "width";
+ field public static final String MIMETYPE_AUDIO_AAC = "audio/mp4a-latm";
+ field public static final String MIMETYPE_AUDIO_AC3 = "audio/ac3";
+ field public static final String MIMETYPE_AUDIO_AC4 = "audio/ac4";
+ field public static final String MIMETYPE_AUDIO_AMR_NB = "audio/3gpp";
+ field public static final String MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb";
+ field public static final String MIMETYPE_AUDIO_EAC3 = "audio/eac3";
+ field public static final String MIMETYPE_AUDIO_EAC3_JOC = "audio/eac3-joc";
+ field public static final String MIMETYPE_AUDIO_FLAC = "audio/flac";
+ field public static final String MIMETYPE_AUDIO_G711_ALAW = "audio/g711-alaw";
+ field public static final String MIMETYPE_AUDIO_G711_MLAW = "audio/g711-mlaw";
+ field public static final String MIMETYPE_AUDIO_MPEG = "audio/mpeg";
+ field public static final String MIMETYPE_AUDIO_MSGSM = "audio/gsm";
+ field public static final String MIMETYPE_AUDIO_OPUS = "audio/opus";
+ field public static final String MIMETYPE_AUDIO_QCELP = "audio/qcelp";
+ field public static final String MIMETYPE_AUDIO_RAW = "audio/raw";
+ field public static final String MIMETYPE_AUDIO_SCRAMBLED = "audio/scrambled";
+ field public static final String MIMETYPE_AUDIO_VORBIS = "audio/vorbis";
+ field public static final String MIMETYPE_IMAGE_ANDROID_HEIC = "image/vnd.android.heic";
+ field public static final String MIMETYPE_TEXT_CEA_608 = "text/cea-608";
+ field public static final String MIMETYPE_TEXT_CEA_708 = "text/cea-708";
+ field public static final String MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
+ field public static final String MIMETYPE_TEXT_VTT = "text/vtt";
+ field public static final String MIMETYPE_VIDEO_AV1 = "video/av01";
+ field public static final String MIMETYPE_VIDEO_AVC = "video/avc";
+ field public static final String MIMETYPE_VIDEO_DOLBY_VISION = "video/dolby-vision";
+ field public static final String MIMETYPE_VIDEO_H263 = "video/3gpp";
+ field public static final String MIMETYPE_VIDEO_HEVC = "video/hevc";
+ field public static final String MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
+ field public static final String MIMETYPE_VIDEO_MPEG4 = "video/mp4v-es";
+ field public static final String MIMETYPE_VIDEO_RAW = "video/raw";
+ field public static final String MIMETYPE_VIDEO_SCRAMBLED = "video/scrambled";
+ field public static final String MIMETYPE_VIDEO_VP8 = "video/x-vnd.on2.vp8";
+ field public static final String MIMETYPE_VIDEO_VP9 = "video/x-vnd.on2.vp9";
field public static final int TYPE_BYTE_BUFFER = 5; // 0x5
field public static final int TYPE_FLOAT = 3; // 0x3
field public static final int TYPE_INTEGER = 1; // 0x1
@@ -24967,9 +24994,9 @@
public final class MediaItem2 implements android.os.Parcelable {
method public int describeContents();
method public long getEndPosition();
- method public android.media.MediaMetadata getMetadata();
+ method @Nullable public android.media.MediaMetadata getMetadata();
method public long getStartPosition();
- method public void setMetadata(android.media.MediaMetadata);
+ method public void setMetadata(@Nullable android.media.MediaMetadata);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.MediaItem2> CREATOR;
field public static final long POSITION_UNKNOWN = 576460752303423487L; // 0x7ffffffffffffffL
@@ -24977,106 +25004,106 @@
public static class MediaItem2.Builder {
ctor public MediaItem2.Builder();
- method public android.media.MediaItem2 build();
- method public android.media.MediaItem2.Builder setEndPosition(long);
- method public android.media.MediaItem2.Builder setMetadata(android.media.MediaMetadata);
- method public android.media.MediaItem2.Builder setStartPosition(long);
+ method @NonNull public android.media.MediaItem2 build();
+ method @NonNull public android.media.MediaItem2.Builder setEndPosition(long);
+ method @NonNull public android.media.MediaItem2.Builder setMetadata(@Nullable android.media.MediaMetadata);
+ method @NonNull public android.media.MediaItem2.Builder setStartPosition(long);
}
public final class MediaMetadata implements android.os.Parcelable {
- method public boolean containsKey(java.lang.String);
+ method public boolean containsKey(String);
method public int describeContents();
- method public android.graphics.Bitmap getBitmap(java.lang.String);
- method public android.media.MediaDescription getDescription();
- method public long getLong(java.lang.String);
- method public android.media.Rating getRating(java.lang.String);
- method public java.lang.String getString(java.lang.String);
- method public java.lang.CharSequence getText(java.lang.String);
+ method public android.graphics.Bitmap getBitmap(String);
+ method @NonNull public android.media.MediaDescription getDescription();
+ method public long getLong(String);
+ method public android.media.Rating getRating(String);
+ method public String getString(String);
+ method public CharSequence getText(String);
method public java.util.Set<java.lang.String> keySet();
method public int size();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.MediaMetadata> CREATOR;
- field public static final java.lang.String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
- field public static final java.lang.String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
- field public static final java.lang.String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
- field public static final java.lang.String METADATA_KEY_ALBUM_ART_URI = "android.media.metadata.ALBUM_ART_URI";
- field public static final java.lang.String METADATA_KEY_ART = "android.media.metadata.ART";
- field public static final java.lang.String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
- field public static final java.lang.String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
- field public static final java.lang.String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
- field public static final java.lang.String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
- field public static final java.lang.String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
- field public static final java.lang.String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
- field public static final java.lang.String METADATA_KEY_DATE = "android.media.metadata.DATE";
- field public static final java.lang.String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
- field public static final java.lang.String METADATA_KEY_DISPLAY_DESCRIPTION = "android.media.metadata.DISPLAY_DESCRIPTION";
- field public static final java.lang.String METADATA_KEY_DISPLAY_ICON = "android.media.metadata.DISPLAY_ICON";
- field public static final java.lang.String METADATA_KEY_DISPLAY_ICON_URI = "android.media.metadata.DISPLAY_ICON_URI";
- field public static final java.lang.String METADATA_KEY_DISPLAY_SUBTITLE = "android.media.metadata.DISPLAY_SUBTITLE";
- field public static final java.lang.String METADATA_KEY_DISPLAY_TITLE = "android.media.metadata.DISPLAY_TITLE";
- field public static final java.lang.String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
- field public static final java.lang.String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
- field public static final java.lang.String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
- field public static final java.lang.String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI";
- field public static final java.lang.String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
- field public static final java.lang.String METADATA_KEY_RATING = "android.media.metadata.RATING";
- field public static final java.lang.String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
- field public static final java.lang.String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
- field public static final java.lang.String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
- field public static final java.lang.String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
- field public static final java.lang.String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
+ field public static final String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
+ field public static final String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
+ field public static final String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
+ field public static final String METADATA_KEY_ALBUM_ART_URI = "android.media.metadata.ALBUM_ART_URI";
+ field public static final String METADATA_KEY_ART = "android.media.metadata.ART";
+ field public static final String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
+ field public static final String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
+ field public static final String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
+ field public static final String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
+ field public static final String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
+ field public static final String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
+ field public static final String METADATA_KEY_DATE = "android.media.metadata.DATE";
+ field public static final String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
+ field public static final String METADATA_KEY_DISPLAY_DESCRIPTION = "android.media.metadata.DISPLAY_DESCRIPTION";
+ field public static final String METADATA_KEY_DISPLAY_ICON = "android.media.metadata.DISPLAY_ICON";
+ field public static final String METADATA_KEY_DISPLAY_ICON_URI = "android.media.metadata.DISPLAY_ICON_URI";
+ field public static final String METADATA_KEY_DISPLAY_SUBTITLE = "android.media.metadata.DISPLAY_SUBTITLE";
+ field public static final String METADATA_KEY_DISPLAY_TITLE = "android.media.metadata.DISPLAY_TITLE";
+ field public static final String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
+ field public static final String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
+ field public static final String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
+ field public static final String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI";
+ field public static final String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
+ field public static final String METADATA_KEY_RATING = "android.media.metadata.RATING";
+ field public static final String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
+ field public static final String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
+ field public static final String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
+ field public static final String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
+ field public static final String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
}
public static final class MediaMetadata.Builder {
ctor public MediaMetadata.Builder();
ctor public MediaMetadata.Builder(android.media.MediaMetadata);
method public android.media.MediaMetadata build();
- method public android.media.MediaMetadata.Builder putBitmap(java.lang.String, android.graphics.Bitmap);
- method public android.media.MediaMetadata.Builder putLong(java.lang.String, long);
- method public android.media.MediaMetadata.Builder putRating(java.lang.String, android.media.Rating);
- method public android.media.MediaMetadata.Builder putString(java.lang.String, java.lang.String);
- method public android.media.MediaMetadata.Builder putText(java.lang.String, java.lang.CharSequence);
+ method public android.media.MediaMetadata.Builder putBitmap(String, android.graphics.Bitmap);
+ method public android.media.MediaMetadata.Builder putLong(String, long);
+ method public android.media.MediaMetadata.Builder putRating(String, android.media.Rating);
+ method public android.media.MediaMetadata.Builder putString(String, String);
+ method public android.media.MediaMetadata.Builder putText(String, CharSequence);
}
- public abstract deprecated class MediaMetadataEditor {
- method public synchronized void addEditableKey(int);
- method public abstract void apply();
- method public synchronized void clear();
- method public synchronized android.graphics.Bitmap getBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
- method public synchronized int[] getEditableKeys();
- method public synchronized long getLong(int, long) throws java.lang.IllegalArgumentException;
- method public synchronized java.lang.Object getObject(int, java.lang.Object) throws java.lang.IllegalArgumentException;
- method public synchronized java.lang.String getString(int, java.lang.String) throws java.lang.IllegalArgumentException;
- method public synchronized android.media.MediaMetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
- method public synchronized android.media.MediaMetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
- method public synchronized android.media.MediaMetadataEditor putObject(int, java.lang.Object) throws java.lang.IllegalArgumentException;
- method public synchronized android.media.MediaMetadataEditor putString(int, java.lang.String) throws java.lang.IllegalArgumentException;
- method public synchronized void removeEditableKeys();
- field public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
- field public static final int RATING_KEY_BY_OTHERS = 101; // 0x65
- field public static final int RATING_KEY_BY_USER = 268435457; // 0x10000001
+ @Deprecated public abstract class MediaMetadataEditor {
+ method @Deprecated public void addEditableKey(int);
+ method @Deprecated public abstract void apply();
+ method @Deprecated public void clear();
+ method @Deprecated public android.graphics.Bitmap getBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
+ method @Deprecated public int[] getEditableKeys();
+ method @Deprecated public long getLong(int, long) throws java.lang.IllegalArgumentException;
+ method @Deprecated public Object getObject(int, Object) throws java.lang.IllegalArgumentException;
+ method @Deprecated public String getString(int, String) throws java.lang.IllegalArgumentException;
+ method @Deprecated public android.media.MediaMetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
+ method @Deprecated public android.media.MediaMetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
+ method @Deprecated public android.media.MediaMetadataEditor putObject(int, Object) throws java.lang.IllegalArgumentException;
+ method @Deprecated public android.media.MediaMetadataEditor putString(int, String) throws java.lang.IllegalArgumentException;
+ method @Deprecated public void removeEditableKeys();
+ field @Deprecated public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
+ field @Deprecated public static final int RATING_KEY_BY_OTHERS = 101; // 0x65
+ field @Deprecated public static final int RATING_KEY_BY_USER = 268435457; // 0x10000001
}
public class MediaMetadataRetriever implements java.lang.AutoCloseable {
ctor public MediaMetadataRetriever();
method public void close();
- method public java.lang.String extractMetadata(int);
+ method public String extractMetadata(int);
method public byte[] getEmbeddedPicture();
- method public android.graphics.Bitmap getFrameAtIndex(int, android.media.MediaMetadataRetriever.BitmapParams);
+ method public android.graphics.Bitmap getFrameAtIndex(int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
method public android.graphics.Bitmap getFrameAtIndex(int);
method public android.graphics.Bitmap getFrameAtTime(long, int);
method public android.graphics.Bitmap getFrameAtTime(long);
method public android.graphics.Bitmap getFrameAtTime();
- method public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int, android.media.MediaMetadataRetriever.BitmapParams);
- method public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int);
- method public android.graphics.Bitmap getImageAtIndex(int, android.media.MediaMetadataRetriever.BitmapParams);
+ method @NonNull public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
+ method @NonNull public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int);
+ method public android.graphics.Bitmap getImageAtIndex(int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
method public android.graphics.Bitmap getImageAtIndex(int);
- method public android.graphics.Bitmap getPrimaryImage(android.media.MediaMetadataRetriever.BitmapParams);
+ method public android.graphics.Bitmap getPrimaryImage(@NonNull android.media.MediaMetadataRetriever.BitmapParams);
method public android.graphics.Bitmap getPrimaryImage();
method public android.graphics.Bitmap getScaledFrameAtTime(long, int, int, int);
method public void release();
- method public void setDataSource(java.lang.String) throws java.lang.IllegalArgumentException;
- method public void setDataSource(java.lang.String, java.util.Map<java.lang.String, java.lang.String>) throws java.lang.IllegalArgumentException;
+ method public void setDataSource(String) throws java.lang.IllegalArgumentException;
+ method public void setDataSource(String, java.util.Map<java.lang.String,java.lang.String>) throws java.lang.IllegalArgumentException;
method public void setDataSource(java.io.FileDescriptor, long, long) throws java.lang.IllegalArgumentException;
method public void setDataSource(java.io.FileDescriptor) throws java.lang.IllegalArgumentException;
method public void setDataSource(android.content.Context, android.net.Uri) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
@@ -25120,21 +25147,21 @@
public static final class MediaMetadataRetriever.BitmapParams {
ctor public MediaMetadataRetriever.BitmapParams();
- method public android.graphics.Bitmap.Config getActualConfig();
- method public android.graphics.Bitmap.Config getPreferredConfig();
- method public void setPreferredConfig(android.graphics.Bitmap.Config);
+ method @NonNull public android.graphics.Bitmap.Config getActualConfig();
+ method @NonNull public android.graphics.Bitmap.Config getPreferredConfig();
+ method public void setPreferredConfig(@NonNull android.graphics.Bitmap.Config);
}
public final class MediaMuxer {
- ctor public MediaMuxer(java.lang.String, int) throws java.io.IOException;
- ctor public MediaMuxer(java.io.FileDescriptor, int) throws java.io.IOException;
- method public int addTrack(android.media.MediaFormat);
+ ctor public MediaMuxer(@NonNull String, int) throws java.io.IOException;
+ ctor public MediaMuxer(@NonNull java.io.FileDescriptor, int) throws java.io.IOException;
+ method public int addTrack(@NonNull android.media.MediaFormat);
method public void release();
method public void setLocation(float, float);
method public void setOrientationHint(int);
method public void start();
method public void stop();
- method public void writeSampleData(int, java.nio.ByteBuffer, android.media.MediaCodec.BufferInfo);
+ method public void writeSampleData(int, @NonNull java.nio.ByteBuffer, @NonNull android.media.MediaCodec.BufferInfo);
}
public static final class MediaMuxer.OutputFormat {
@@ -25148,10 +25175,10 @@
public class MediaPlayer implements android.media.AudioRouting android.media.VolumeAutomation {
ctor public MediaPlayer();
method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
- method public void addTimedTextSource(java.lang.String, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public void addTimedTextSource(android.content.Context, android.net.Uri, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public void addTimedTextSource(java.io.FileDescriptor, java.lang.String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public void addTimedTextSource(java.io.FileDescriptor, long, long, java.lang.String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void addTimedTextSource(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void addTimedTextSource(android.content.Context, android.net.Uri, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void addTimedTextSource(java.io.FileDescriptor, String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void addTimedTextSource(java.io.FileDescriptor, long, long, String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
method public void attachAuxEffect(int);
method public void clearOnMediaTimeDiscontinuityListener();
method public void clearOnSubtitleDataListener();
@@ -25160,22 +25187,23 @@
method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder, android.media.AudioAttributes, int);
method public static android.media.MediaPlayer create(android.content.Context, int);
method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int);
- method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
+ method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
+ method public static void deprecateStreamTypeForPlayback(int, String, String) throws java.lang.IllegalArgumentException;
method public void deselectTrack(int) throws java.lang.IllegalStateException;
method protected void finalize();
method public int getAudioSessionId();
method public int getCurrentPosition();
method public android.media.MediaPlayer.DrmInfo getDrmInfo();
- method public java.lang.String getDrmPropertyString(java.lang.String) throws android.media.MediaPlayer.NoDrmSchemeException;
+ method @NonNull public String getDrmPropertyString(@NonNull String) throws android.media.MediaPlayer.NoDrmSchemeException;
method public int getDuration();
- method public android.media.MediaDrm.KeyRequest getKeyRequest(byte[], byte[], java.lang.String, int, java.util.Map<java.lang.String, java.lang.String>) throws android.media.MediaPlayer.NoDrmSchemeException;
+ method @NonNull public android.media.MediaDrm.KeyRequest getKeyRequest(@Nullable byte[], @Nullable byte[], @Nullable String, int, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws android.media.MediaPlayer.NoDrmSchemeException;
method public android.os.PersistableBundle getMetrics();
- method public android.media.PlaybackParams getPlaybackParams();
+ method @NonNull public android.media.PlaybackParams getPlaybackParams();
method public android.media.AudioDeviceInfo getPreferredDevice();
method public android.media.AudioDeviceInfo getRoutedDevice();
method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
- method public android.media.SyncParams getSyncParams();
- method public android.media.MediaTimestamp getTimestamp();
+ method @NonNull public android.media.SyncParams getSyncParams();
+ method @Nullable public android.media.MediaTimestamp getTimestamp();
method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
method public int getVideoHeight();
method public int getVideoWidth();
@@ -25184,30 +25212,30 @@
method public void pause() throws java.lang.IllegalStateException;
method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
method public void prepareAsync() throws java.lang.IllegalStateException;
- method public void prepareDrm(java.util.UUID) throws android.media.MediaPlayer.ProvisioningNetworkErrorException, android.media.MediaPlayer.ProvisioningServerErrorException, android.media.ResourceBusyException, android.media.UnsupportedSchemeException;
- method public byte[] provideKeyResponse(byte[], byte[]) throws android.media.DeniedByServerException, android.media.MediaPlayer.NoDrmSchemeException;
+ method public void prepareDrm(@NonNull java.util.UUID) throws android.media.MediaPlayer.ProvisioningNetworkErrorException, android.media.MediaPlayer.ProvisioningServerErrorException, android.media.ResourceBusyException, android.media.UnsupportedSchemeException;
+ method public byte[] provideKeyResponse(@Nullable byte[], @NonNull byte[]) throws android.media.DeniedByServerException, android.media.MediaPlayer.NoDrmSchemeException;
method public void release();
method public void releaseDrm() throws android.media.MediaPlayer.NoDrmSchemeException;
method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
method public void reset();
- method public void restoreKeys(byte[]) throws android.media.MediaPlayer.NoDrmSchemeException;
+ method public void restoreKeys(@NonNull byte[]) throws android.media.MediaPlayer.NoDrmSchemeException;
method public void seekTo(long, int);
method public void seekTo(int) throws java.lang.IllegalStateException;
method public void selectTrack(int) throws java.lang.IllegalStateException;
method public void setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
method public void setAudioSessionId(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public deprecated void setAudioStreamType(int);
+ method @Deprecated public void setAudioStreamType(int);
method public void setAuxEffectSendLevel(float);
- method public void setDataSource(android.content.Context, android.net.Uri) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
- method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>, java.util.List<java.net.HttpCookie>) throws java.io.IOException;
- method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
- method public void setDataSource(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
- method public void setDataSource(android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
+ method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>, @Nullable java.util.List<java.net.HttpCookie>) throws java.io.IOException;
+ method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
+ method public void setDataSource(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
+ method public void setDataSource(@NonNull android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
method public void setDataSource(java.io.FileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
method public void setDataSource(java.io.FileDescriptor, long, long) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
method public void setDataSource(android.media.MediaDataSource) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
method public void setDisplay(android.view.SurfaceHolder);
- method public void setDrmPropertyString(java.lang.String, java.lang.String) throws android.media.MediaPlayer.NoDrmSchemeException;
+ method public void setDrmPropertyString(@NonNull String, @NonNull String) throws android.media.MediaPlayer.NoDrmSchemeException;
method public void setLooping(boolean);
method public void setNextMediaPlayer(android.media.MediaPlayer);
method public void setOnBufferingUpdateListener(android.media.MediaPlayer.OnBufferingUpdateListener);
@@ -25219,20 +25247,20 @@
method public void setOnDrmPreparedListener(android.media.MediaPlayer.OnDrmPreparedListener, android.os.Handler);
method public void setOnErrorListener(android.media.MediaPlayer.OnErrorListener);
method public void setOnInfoListener(android.media.MediaPlayer.OnInfoListener);
- method public void setOnMediaTimeDiscontinuityListener(android.media.MediaPlayer.OnMediaTimeDiscontinuityListener, android.os.Handler);
- method public void setOnMediaTimeDiscontinuityListener(android.media.MediaPlayer.OnMediaTimeDiscontinuityListener);
+ method public void setOnMediaTimeDiscontinuityListener(@NonNull android.media.MediaPlayer.OnMediaTimeDiscontinuityListener, @NonNull android.os.Handler);
+ method public void setOnMediaTimeDiscontinuityListener(@NonNull android.media.MediaPlayer.OnMediaTimeDiscontinuityListener);
method public void setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener);
method public void setOnSeekCompleteListener(android.media.MediaPlayer.OnSeekCompleteListener);
- method public void setOnSubtitleDataListener(android.media.MediaPlayer.OnSubtitleDataListener, android.os.Handler);
- method public void setOnSubtitleDataListener(android.media.MediaPlayer.OnSubtitleDataListener);
+ method public void setOnSubtitleDataListener(@NonNull android.media.MediaPlayer.OnSubtitleDataListener, @NonNull android.os.Handler);
+ method public void setOnSubtitleDataListener(@NonNull android.media.MediaPlayer.OnSubtitleDataListener);
method public void setOnTimedMetaDataAvailableListener(android.media.MediaPlayer.OnTimedMetaDataAvailableListener);
method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
- method public void setPlaybackParams(android.media.PlaybackParams);
+ method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
method public void setScreenOnWhilePlaying(boolean);
method public void setSurface(android.view.Surface);
- method public void setSyncParams(android.media.SyncParams);
+ method public void setSyncParams(@NonNull android.media.SyncParams);
method public void setVideoScalingMode(int);
method public void setVolume(float, float);
method public void setWakeMode(android.content.Context, int);
@@ -25258,7 +25286,7 @@
field public static final int MEDIA_INFO_VIDEO_NOT_PLAYING = 805; // 0x325
field public static final int MEDIA_INFO_VIDEO_RENDERING_START = 3; // 0x3
field public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; // 0x2bc
- field public static final deprecated java.lang.String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
+ field @Deprecated public static final String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
field public static final int PREPARE_DRM_STATUS_PREPARATION_ERROR = 3; // 0x3
field public static final int PREPARE_DRM_STATUS_PROVISIONING_NETWORK_ERROR = 1; // 0x1
field public static final int PREPARE_DRM_STATUS_PROVISIONING_SERVER_ERROR = 2; // 0x2
@@ -25272,97 +25300,97 @@
}
public static final class MediaPlayer.DrmInfo {
- method public java.util.Map<java.util.UUID, byte[]> getPssh();
+ method public java.util.Map<java.util.UUID,byte[]> getPssh();
method public java.util.UUID[] getSupportedSchemes();
}
public static final class MediaPlayer.MetricsConstants {
- field public static final java.lang.String CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
- field public static final java.lang.String CODEC_VIDEO = "android.media.mediaplayer.video.codec";
- field public static final java.lang.String DURATION = "android.media.mediaplayer.durationMs";
- field public static final java.lang.String ERRORS = "android.media.mediaplayer.err";
- field public static final java.lang.String ERROR_CODE = "android.media.mediaplayer.errcode";
- field public static final java.lang.String FRAMES = "android.media.mediaplayer.frames";
- field public static final java.lang.String FRAMES_DROPPED = "android.media.mediaplayer.dropped";
- field public static final java.lang.String HEIGHT = "android.media.mediaplayer.height";
- field public static final java.lang.String MIME_TYPE_AUDIO = "android.media.mediaplayer.audio.mime";
- field public static final java.lang.String MIME_TYPE_VIDEO = "android.media.mediaplayer.video.mime";
- field public static final java.lang.String PLAYING = "android.media.mediaplayer.playingMs";
- field public static final java.lang.String WIDTH = "android.media.mediaplayer.width";
+ field public static final String CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
+ field public static final String CODEC_VIDEO = "android.media.mediaplayer.video.codec";
+ field public static final String DURATION = "android.media.mediaplayer.durationMs";
+ field public static final String ERRORS = "android.media.mediaplayer.err";
+ field public static final String ERROR_CODE = "android.media.mediaplayer.errcode";
+ field public static final String FRAMES = "android.media.mediaplayer.frames";
+ field public static final String FRAMES_DROPPED = "android.media.mediaplayer.dropped";
+ field public static final String HEIGHT = "android.media.mediaplayer.height";
+ field public static final String MIME_TYPE_AUDIO = "android.media.mediaplayer.audio.mime";
+ field public static final String MIME_TYPE_VIDEO = "android.media.mediaplayer.video.mime";
+ field public static final String PLAYING = "android.media.mediaplayer.playingMs";
+ field public static final String WIDTH = "android.media.mediaplayer.width";
}
public static final class MediaPlayer.NoDrmSchemeException extends android.media.MediaDrmException {
- ctor public MediaPlayer.NoDrmSchemeException(java.lang.String);
+ ctor public MediaPlayer.NoDrmSchemeException(String);
}
- public static abstract interface MediaPlayer.OnBufferingUpdateListener {
- method public abstract void onBufferingUpdate(android.media.MediaPlayer, int);
+ public static interface MediaPlayer.OnBufferingUpdateListener {
+ method public void onBufferingUpdate(android.media.MediaPlayer, int);
}
- public static abstract interface MediaPlayer.OnCompletionListener {
- method public abstract void onCompletion(android.media.MediaPlayer);
+ public static interface MediaPlayer.OnCompletionListener {
+ method public void onCompletion(android.media.MediaPlayer);
}
- public static abstract interface MediaPlayer.OnDrmConfigHelper {
- method public abstract void onDrmConfig(android.media.MediaPlayer);
+ public static interface MediaPlayer.OnDrmConfigHelper {
+ method public void onDrmConfig(android.media.MediaPlayer);
}
- public static abstract interface MediaPlayer.OnDrmInfoListener {
- method public abstract void onDrmInfo(android.media.MediaPlayer, android.media.MediaPlayer.DrmInfo);
+ public static interface MediaPlayer.OnDrmInfoListener {
+ method public void onDrmInfo(android.media.MediaPlayer, android.media.MediaPlayer.DrmInfo);
}
- public static abstract interface MediaPlayer.OnDrmPreparedListener {
- method public abstract void onDrmPrepared(android.media.MediaPlayer, int);
+ public static interface MediaPlayer.OnDrmPreparedListener {
+ method public void onDrmPrepared(android.media.MediaPlayer, int);
}
- public static abstract interface MediaPlayer.OnErrorListener {
- method public abstract boolean onError(android.media.MediaPlayer, int, int);
+ public static interface MediaPlayer.OnErrorListener {
+ method public boolean onError(android.media.MediaPlayer, int, int);
}
- public static abstract interface MediaPlayer.OnInfoListener {
- method public abstract boolean onInfo(android.media.MediaPlayer, int, int);
+ public static interface MediaPlayer.OnInfoListener {
+ method public boolean onInfo(android.media.MediaPlayer, int, int);
}
- public static abstract interface MediaPlayer.OnMediaTimeDiscontinuityListener {
- method public abstract void onMediaTimeDiscontinuity(android.media.MediaPlayer, android.media.MediaTimestamp);
+ public static interface MediaPlayer.OnMediaTimeDiscontinuityListener {
+ method public void onMediaTimeDiscontinuity(@NonNull android.media.MediaPlayer, @NonNull android.media.MediaTimestamp);
}
- public static abstract interface MediaPlayer.OnPreparedListener {
- method public abstract void onPrepared(android.media.MediaPlayer);
+ public static interface MediaPlayer.OnPreparedListener {
+ method public void onPrepared(android.media.MediaPlayer);
}
- public static abstract interface MediaPlayer.OnSeekCompleteListener {
- method public abstract void onSeekComplete(android.media.MediaPlayer);
+ public static interface MediaPlayer.OnSeekCompleteListener {
+ method public void onSeekComplete(android.media.MediaPlayer);
}
- public static abstract interface MediaPlayer.OnSubtitleDataListener {
- method public abstract void onSubtitleData(android.media.MediaPlayer, android.media.SubtitleData);
+ public static interface MediaPlayer.OnSubtitleDataListener {
+ method public void onSubtitleData(@NonNull android.media.MediaPlayer, @NonNull android.media.SubtitleData);
}
- public static abstract interface MediaPlayer.OnTimedMetaDataAvailableListener {
- method public abstract void onTimedMetaDataAvailable(android.media.MediaPlayer, android.media.TimedMetaData);
+ public static interface MediaPlayer.OnTimedMetaDataAvailableListener {
+ method public void onTimedMetaDataAvailable(android.media.MediaPlayer, android.media.TimedMetaData);
}
- public static abstract interface MediaPlayer.OnTimedTextListener {
- method public abstract void onTimedText(android.media.MediaPlayer, android.media.TimedText);
+ public static interface MediaPlayer.OnTimedTextListener {
+ method public void onTimedText(android.media.MediaPlayer, android.media.TimedText);
}
- public static abstract interface MediaPlayer.OnVideoSizeChangedListener {
- method public abstract void onVideoSizeChanged(android.media.MediaPlayer, int, int);
+ public static interface MediaPlayer.OnVideoSizeChangedListener {
+ method public void onVideoSizeChanged(android.media.MediaPlayer, int, int);
}
public static final class MediaPlayer.ProvisioningNetworkErrorException extends android.media.MediaDrmException {
- ctor public MediaPlayer.ProvisioningNetworkErrorException(java.lang.String);
+ ctor public MediaPlayer.ProvisioningNetworkErrorException(String);
}
public static final class MediaPlayer.ProvisioningServerErrorException extends android.media.MediaDrmException {
- ctor public MediaPlayer.ProvisioningServerErrorException(java.lang.String);
+ ctor public MediaPlayer.ProvisioningServerErrorException(String);
}
public static class MediaPlayer.TrackInfo implements android.os.Parcelable {
method public int describeContents();
method public android.media.MediaFormat getFormat();
- method public java.lang.String getLanguage();
+ method public String getLanguage();
method public int getTrackType();
method public void writeToParcel(android.os.Parcel, int);
field public static final int MEDIA_TRACK_TYPE_AUDIO = 2; // 0x2
@@ -25376,63 +25404,64 @@
public class MediaPlayer2 implements android.media.AudioRouting java.lang.AutoCloseable {
ctor public MediaPlayer2(android.content.Context);
method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
- method public java.lang.Object attachAuxEffect(int);
- method public boolean cancelCommand(java.lang.Object);
- method public java.lang.Object clearNextDataSources();
+ method public Object attachAuxEffect(int);
+ method public boolean cancelCommand(@NonNull Object);
+ method public Object clearNextDataSources();
method public void clearPendingCommands();
method public void close();
- method public java.lang.Object deselectTrack(int);
- method public java.lang.Object deselectTrack(android.media.DataSourceDesc, int);
- method public android.media.AudioAttributes getAudioAttributes();
+ method public Object deselectTrack(int);
+ method public Object deselectTrack(@NonNull android.media.DataSourceDesc, int);
+ method @NonNull public android.media.AudioAttributes getAudioAttributes();
method public int getAudioSessionId();
method public long getBufferedPosition();
- method public long getBufferedPosition(android.media.DataSourceDesc);
- method public android.media.DataSourceDesc getCurrentDataSource();
+ method public long getBufferedPosition(@NonNull android.media.DataSourceDesc);
+ method @Nullable public android.media.DataSourceDesc getCurrentDataSource();
method public long getCurrentPosition();
method public long getDuration();
- method public long getDuration(android.media.DataSourceDesc);
+ method public long getDuration(@NonNull android.media.DataSourceDesc);
method public float getMaxPlayerVolume();
method public android.os.PersistableBundle getMetrics();
- method public android.media.PlaybackParams getPlaybackParams();
+ method @NonNull public android.media.PlaybackParams getPlaybackParams();
method public float getPlayerVolume();
method public android.media.AudioDeviceInfo getPreferredDevice();
method public android.media.AudioDeviceInfo getRoutedDevice();
method public int getSelectedTrack(int);
- method public int getSelectedTrack(android.media.DataSourceDesc, int);
+ method public int getSelectedTrack(@NonNull android.media.DataSourceDesc, int);
method public int getState();
- method public android.media.SyncParams getSyncParams();
- method public android.media.MediaTimestamp getTimestamp();
- method public java.util.List<android.media.MediaPlayer2.TrackInfo> getTrackInfo();
- method public java.util.List<android.media.MediaPlayer2.TrackInfo> getTrackInfo(android.media.DataSourceDesc);
+ method @NonNull public android.media.SyncParams getSyncParams();
+ method @Nullable public android.media.MediaTimestamp getTimestamp();
+ method @NonNull public java.util.List<android.media.MediaPlayer2.TrackInfo> getTrackInfo();
+ method @NonNull public java.util.List<android.media.MediaPlayer2.TrackInfo> getTrackInfo(@NonNull android.media.DataSourceDesc);
method public android.media.VideoSize getVideoSize();
method public boolean isLooping();
- method public java.lang.Object loopCurrent(boolean);
- method public java.lang.Object notifyWhenCommandLabelReached(java.lang.Object);
- method public java.lang.Object pause();
- method public java.lang.Object play();
- method public java.lang.Object prepare();
- method public void registerEventCallback(java.util.concurrent.Executor, android.media.MediaPlayer2.EventCallback);
+ method public Object loopCurrent(boolean);
+ method public Object notifyWhenCommandLabelReached(@NonNull Object);
+ method public Object pause();
+ method public Object play();
+ method public Object prepare();
+ method public void registerEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaPlayer2.EventCallback);
method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
method public void reset();
- method public java.lang.Object seekTo(long);
- method public java.lang.Object seekTo(long, int);
- method public java.lang.Object selectTrack(int);
- method public java.lang.Object selectTrack(android.media.DataSourceDesc, int);
- method public java.lang.Object setAudioAttributes(android.media.AudioAttributes);
- method public java.lang.Object setAudioSessionId(int);
- method public java.lang.Object setAuxEffectSendLevel(float);
- method public java.lang.Object setDataSource(android.media.DataSourceDesc);
- method public java.lang.Object setDisplay(android.view.SurfaceHolder);
- method public java.lang.Object setNextDataSource(android.media.DataSourceDesc);
- method public java.lang.Object setNextDataSources(java.util.List<android.media.DataSourceDesc>);
- method public java.lang.Object setPlaybackParams(android.media.PlaybackParams);
- method public java.lang.Object setPlayerVolume(float);
+ method public Object seekTo(long);
+ method public Object seekTo(long, int);
+ method public Object selectTrack(int);
+ method public Object selectTrack(@NonNull android.media.DataSourceDesc, int);
+ method public Object setAudioAttributes(@NonNull android.media.AudioAttributes);
+ method public Object setAudioSessionId(int);
+ method public Object setAuxEffectSendLevel(float);
+ method public Object setDataSource(@NonNull android.media.DataSourceDesc);
+ method public Object setDisplay(android.view.SurfaceHolder);
+ method public void setDrmEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaPlayer2.DrmEventCallback);
+ method public Object setNextDataSource(@NonNull android.media.DataSourceDesc);
+ method public Object setNextDataSources(@NonNull java.util.List<android.media.DataSourceDesc>);
+ method public Object setPlaybackParams(@NonNull android.media.PlaybackParams);
+ method public Object setPlayerVolume(float);
method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
- method public java.lang.Object setScreenOnWhilePlaying(boolean);
- method public java.lang.Object setSurface(android.view.Surface);
- method public java.lang.Object setSyncParams(android.media.SyncParams);
- method public java.lang.Object setWakeLock(android.os.PowerManager.WakeLock);
- method public java.lang.Object skipToNext();
+ method public Object setScreenOnWhilePlaying(boolean);
+ method public Object setSurface(android.view.Surface);
+ method public Object setSyncParams(@NonNull android.media.SyncParams);
+ method public Object setWakeLock(@NonNull android.os.PowerManager.WakeLock);
+ method public Object skipToNext();
method public void unregisterEventCallback(android.media.MediaPlayer2.EventCallback);
field public static final int CALL_COMPLETED_ATTACH_AUX_EFFECT = 1; // 0x1
field public static final int CALL_COMPLETED_CLEAR_NEXT_DATA_SOURCES = 30; // 0x1e
@@ -25501,36 +25530,67 @@
field public static final int SEEK_PREVIOUS_SYNC = 0; // 0x0
}
+ public static class MediaPlayer2.DrmEventCallback {
+ ctor public MediaPlayer2.DrmEventCallback();
+ method public void onDrmConfig(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, @NonNull android.media.MediaDrm);
+ method public android.media.MediaPlayer2.DrmPreparationInfo onDrmInfo(android.media.MediaPlayer2, android.media.DataSourceDesc, android.media.MediaPlayer2.DrmInfo);
+ method public byte[] onDrmKeyRequest(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, @NonNull android.media.MediaDrm.KeyRequest);
+ method public void onDrmPrepared(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, int, @Nullable byte[]);
+ }
+
+ public static final class MediaPlayer2.DrmInfo {
+ method public java.util.Map<java.util.UUID,byte[]> getPssh();
+ method public java.util.List<java.util.UUID> getSupportedSchemes();
+ }
+
+ public static final class MediaPlayer2.DrmPreparationInfo {
+ }
+
+ public static final class MediaPlayer2.DrmPreparationInfo.Builder {
+ ctor public MediaPlayer2.DrmPreparationInfo.Builder();
+ method public android.media.MediaPlayer2.DrmPreparationInfo build();
+ method public android.media.MediaPlayer2.DrmPreparationInfo.Builder setInitData(@Nullable byte[]);
+ method public android.media.MediaPlayer2.DrmPreparationInfo.Builder setKeySetId(@Nullable byte[]);
+ method public android.media.MediaPlayer2.DrmPreparationInfo.Builder setKeyType(int);
+ method public android.media.MediaPlayer2.DrmPreparationInfo.Builder setMimeType(@Nullable String);
+ method public android.media.MediaPlayer2.DrmPreparationInfo.Builder setOptionalParameters(@Nullable java.util.Map<java.lang.String,java.lang.String>);
+ method public android.media.MediaPlayer2.DrmPreparationInfo.Builder setUuid(@NonNull java.util.UUID);
+ }
+
public static class MediaPlayer2.EventCallback {
ctor public MediaPlayer2.EventCallback();
- method public void onCallCompleted(android.media.MediaPlayer2, android.media.DataSourceDesc, int, int);
- method public void onCommandLabelReached(android.media.MediaPlayer2, java.lang.Object);
- method public void onError(android.media.MediaPlayer2, android.media.DataSourceDesc, int, int);
- method public void onInfo(android.media.MediaPlayer2, android.media.DataSourceDesc, int, int);
- method public void onMediaTimeDiscontinuity(android.media.MediaPlayer2, android.media.DataSourceDesc, android.media.MediaTimestamp);
- method public void onSubtitleData(android.media.MediaPlayer2, android.media.DataSourceDesc, android.media.SubtitleData);
- method public void onTimedMetaDataAvailable(android.media.MediaPlayer2, android.media.DataSourceDesc, android.media.TimedMetaData);
- method public void onVideoSizeChanged(android.media.MediaPlayer2, android.media.DataSourceDesc, android.media.VideoSize);
+ method public void onCallCompleted(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, int, int);
+ method public void onCommandLabelReached(@NonNull android.media.MediaPlayer2, @NonNull Object);
+ method public void onError(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, int, int);
+ method public void onInfo(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, int, int);
+ method public void onMediaTimeDiscontinuity(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, @NonNull android.media.MediaTimestamp);
+ method public void onSubtitleData(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, @NonNull android.media.SubtitleData);
+ method public void onTimedMetaDataAvailable(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, @NonNull android.media.TimedMetaData);
+ method public void onVideoSizeChanged(@NonNull android.media.MediaPlayer2, @NonNull android.media.DataSourceDesc, @NonNull android.media.VideoSize);
}
public static final class MediaPlayer2.MetricsConstants {
- field public static final java.lang.String CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
- field public static final java.lang.String CODEC_VIDEO = "android.media.mediaplayer.video.codec";
- field public static final java.lang.String DURATION = "android.media.mediaplayer.durationMs";
- field public static final java.lang.String ERRORS = "android.media.mediaplayer.err";
- field public static final java.lang.String ERROR_CODE = "android.media.mediaplayer.errcode";
- field public static final java.lang.String FRAMES = "android.media.mediaplayer.frames";
- field public static final java.lang.String FRAMES_DROPPED = "android.media.mediaplayer.dropped";
- field public static final java.lang.String HEIGHT = "android.media.mediaplayer.height";
- field public static final java.lang.String MIME_TYPE_AUDIO = "android.media.mediaplayer.audio.mime";
- field public static final java.lang.String MIME_TYPE_VIDEO = "android.media.mediaplayer.video.mime";
- field public static final java.lang.String PLAYING = "android.media.mediaplayer.playingMs";
- field public static final java.lang.String WIDTH = "android.media.mediaplayer.width";
+ field public static final String CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
+ field public static final String CODEC_VIDEO = "android.media.mediaplayer.video.codec";
+ field public static final String DURATION = "android.media.mediaplayer.durationMs";
+ field public static final String ERRORS = "android.media.mediaplayer.err";
+ field public static final String ERROR_CODE = "android.media.mediaplayer.errcode";
+ field public static final String FRAMES = "android.media.mediaplayer.frames";
+ field public static final String FRAMES_DROPPED = "android.media.mediaplayer.dropped";
+ field public static final String HEIGHT = "android.media.mediaplayer.height";
+ field public static final String MIME_TYPE_AUDIO = "android.media.mediaplayer.audio.mime";
+ field public static final String MIME_TYPE_VIDEO = "android.media.mediaplayer.video.mime";
+ field public static final String PLAYING = "android.media.mediaplayer.playingMs";
+ field public static final String WIDTH = "android.media.mediaplayer.width";
+ }
+
+ public static final class MediaPlayer2.NoDrmSchemeException extends android.media.MediaDrmException {
+ ctor public MediaPlayer2.NoDrmSchemeException(String);
}
public static class MediaPlayer2.TrackInfo {
method public android.media.MediaFormat getFormat();
- method public java.lang.String getLanguage();
+ method public String getLanguage();
method public int getTrackType();
field public static final int MEDIA_TRACK_TYPE_AUDIO = 2; // 0x2
field public static final int MEDIA_TRACK_TYPE_METADATA = 5; // 0x5
@@ -25544,7 +25604,7 @@
method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
method protected void finalize();
method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
- method public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
+ method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
method public static final int getAudioSourceMax();
method public int getMaxAmplitude() throws java.lang.IllegalStateException;
method public android.os.PersistableBundle getMetrics();
@@ -25553,7 +25613,7 @@
method public android.view.Surface getSurface();
method public void pause() throws java.lang.IllegalStateException;
method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
- method public void registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback);
+ method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
method public void release();
method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
method public void reset();
@@ -25563,9 +25623,9 @@
method public void setAudioEncodingBitRate(int);
method public void setAudioSamplingRate(int);
method public void setAudioSource(int) throws java.lang.IllegalStateException;
- method public deprecated void setCamera(android.hardware.Camera);
+ method @Deprecated public void setCamera(android.hardware.Camera);
method public void setCaptureRate(double);
- method public void setInputSurface(android.view.Surface);
+ method public void setInputSurface(@NonNull android.view.Surface);
method public void setLocation(float, float);
method public void setMaxDuration(int) throws java.lang.IllegalArgumentException;
method public void setMaxFileSize(long) throws java.lang.IllegalArgumentException;
@@ -25576,7 +25636,7 @@
method public void setOrientationHint(int);
method public void setOutputFile(java.io.FileDescriptor) throws java.lang.IllegalStateException;
method public void setOutputFile(java.io.File);
- method public void setOutputFile(java.lang.String) throws java.lang.IllegalStateException;
+ method public void setOutputFile(String) throws java.lang.IllegalStateException;
method public void setOutputFormat(int) throws java.lang.IllegalStateException;
method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
method public void setPreviewDisplay(android.view.Surface);
@@ -25589,7 +25649,7 @@
method public void setVideoSource(int) throws java.lang.IllegalStateException;
method public void start() throws java.lang.IllegalStateException;
method public void stop() throws java.lang.IllegalStateException;
- method public void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback);
+ method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
field public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1; // 0x1
field public static final int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800; // 0x320
@@ -25614,40 +25674,41 @@
field public static final int CAMCORDER = 5; // 0x5
field public static final int DEFAULT = 0; // 0x0
field public static final int MIC = 1; // 0x1
- field public static final int REMOTE_SUBMIX = 8; // 0x8
+ field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int REMOTE_SUBMIX = 8; // 0x8
field public static final int UNPROCESSED = 9; // 0x9
field public static final int VOICE_CALL = 4; // 0x4
field public static final int VOICE_COMMUNICATION = 7; // 0x7
field public static final int VOICE_DOWNLINK = 3; // 0x3
+ field public static final int VOICE_PERFORMANCE = 10; // 0xa
field public static final int VOICE_RECOGNITION = 6; // 0x6
field public static final int VOICE_UPLINK = 2; // 0x2
}
public static final class MediaRecorder.MetricsConstants {
- field public static final java.lang.String AUDIO_BITRATE = "android.media.mediarecorder.audio-bitrate";
- field public static final java.lang.String AUDIO_CHANNELS = "android.media.mediarecorder.audio-channels";
- field public static final java.lang.String AUDIO_SAMPLERATE = "android.media.mediarecorder.audio-samplerate";
- field public static final java.lang.String AUDIO_TIMESCALE = "android.media.mediarecorder.audio-timescale";
- field public static final java.lang.String CAPTURE_FPS = "android.media.mediarecorder.capture-fps";
- field public static final java.lang.String CAPTURE_FPS_ENABLE = "android.media.mediarecorder.capture-fpsenable";
- field public static final java.lang.String FRAMERATE = "android.media.mediarecorder.frame-rate";
- field public static final java.lang.String HEIGHT = "android.media.mediarecorder.height";
- field public static final java.lang.String MOVIE_TIMESCALE = "android.media.mediarecorder.movie-timescale";
- field public static final java.lang.String ROTATION = "android.media.mediarecorder.rotation";
- field public static final java.lang.String VIDEO_BITRATE = "android.media.mediarecorder.video-bitrate";
- field public static final java.lang.String VIDEO_IFRAME_INTERVAL = "android.media.mediarecorder.video-iframe-interval";
- field public static final java.lang.String VIDEO_LEVEL = "android.media.mediarecorder.video-encoder-level";
- field public static final java.lang.String VIDEO_PROFILE = "android.media.mediarecorder.video-encoder-profile";
- field public static final java.lang.String VIDEO_TIMESCALE = "android.media.mediarecorder.video-timescale";
- field public static final java.lang.String WIDTH = "android.media.mediarecorder.width";
+ field public static final String AUDIO_BITRATE = "android.media.mediarecorder.audio-bitrate";
+ field public static final String AUDIO_CHANNELS = "android.media.mediarecorder.audio-channels";
+ field public static final String AUDIO_SAMPLERATE = "android.media.mediarecorder.audio-samplerate";
+ field public static final String AUDIO_TIMESCALE = "android.media.mediarecorder.audio-timescale";
+ field public static final String CAPTURE_FPS = "android.media.mediarecorder.capture-fps";
+ field public static final String CAPTURE_FPS_ENABLE = "android.media.mediarecorder.capture-fpsenable";
+ field public static final String FRAMERATE = "android.media.mediarecorder.frame-rate";
+ field public static final String HEIGHT = "android.media.mediarecorder.height";
+ field public static final String MOVIE_TIMESCALE = "android.media.mediarecorder.movie-timescale";
+ field public static final String ROTATION = "android.media.mediarecorder.rotation";
+ field public static final String VIDEO_BITRATE = "android.media.mediarecorder.video-bitrate";
+ field public static final String VIDEO_IFRAME_INTERVAL = "android.media.mediarecorder.video-iframe-interval";
+ field public static final String VIDEO_LEVEL = "android.media.mediarecorder.video-encoder-level";
+ field public static final String VIDEO_PROFILE = "android.media.mediarecorder.video-encoder-profile";
+ field public static final String VIDEO_TIMESCALE = "android.media.mediarecorder.video-timescale";
+ field public static final String WIDTH = "android.media.mediarecorder.width";
}
- public static abstract interface MediaRecorder.OnErrorListener {
- method public abstract void onError(android.media.MediaRecorder, int, int);
+ public static interface MediaRecorder.OnErrorListener {
+ method public void onError(android.media.MediaRecorder, int, int);
}
- public static abstract interface MediaRecorder.OnInfoListener {
- method public abstract void onInfo(android.media.MediaRecorder, int, int);
+ public static interface MediaRecorder.OnInfoListener {
+ method public void onInfo(android.media.MediaRecorder, int, int);
}
public final class MediaRecorder.OutputFormat {
@@ -25658,7 +25719,7 @@
field public static final int MPEG_2_TS = 8; // 0x8
field public static final int MPEG_4 = 2; // 0x2
field public static final int OGG = 11; // 0xb
- field public static final deprecated int RAW_AMR = 3; // 0x3
+ field @Deprecated public static final int RAW_AMR = 3; // 0x3
field public static final int THREE_GPP = 1; // 0x1
field public static final int WEBM = 9; // 0x9
}
@@ -25683,7 +25744,7 @@
method public void addCallback(int, android.media.MediaRouter.Callback, int);
method public void addUserRoute(android.media.MediaRouter.UserRouteInfo);
method public void clearUserRoutes();
- method public android.media.MediaRouter.RouteCategory createRouteCategory(java.lang.CharSequence, boolean);
+ method public android.media.MediaRouter.RouteCategory createRouteCategory(CharSequence, boolean);
method public android.media.MediaRouter.RouteCategory createRouteCategory(int, boolean);
method public android.media.MediaRouter.UserRouteInfo createUserRoute(android.media.MediaRouter.RouteCategory);
method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
@@ -25694,7 +25755,7 @@
method public android.media.MediaRouter.RouteInfo getSelectedRoute(int);
method public void removeCallback(android.media.MediaRouter.Callback);
method public void removeUserRoute(android.media.MediaRouter.UserRouteInfo);
- method public void selectRoute(int, android.media.MediaRouter.RouteInfo);
+ method public void selectRoute(int, @NonNull android.media.MediaRouter.RouteInfo);
field public static final int CALLBACK_FLAG_PERFORM_ACTIVE_SCAN = 1; // 0x1
field public static final int CALLBACK_FLAG_UNFILTERED_EVENTS = 2; // 0x2
field public static final int ROUTE_TYPE_LIVE_AUDIO = 1; // 0x1
@@ -25702,7 +25763,7 @@
field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
}
- public static abstract class MediaRouter.Callback {
+ public abstract static class MediaRouter.Callback {
ctor public MediaRouter.Callback();
method public abstract void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
method public abstract void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
@@ -25716,8 +25777,8 @@
}
public static class MediaRouter.RouteCategory {
- method public java.lang.CharSequence getName();
- method public java.lang.CharSequence getName(android.content.Context);
+ method public CharSequence getName();
+ method public CharSequence getName(android.content.Context);
method public java.util.List<android.media.MediaRouter.RouteInfo> getRoutes(java.util.List<android.media.MediaRouter.RouteInfo>);
method public int getSupportedTypes();
method public boolean isGroupable();
@@ -25731,23 +25792,23 @@
method public void removeRoute(android.media.MediaRouter.RouteInfo);
method public void removeRoute(int);
method public void setIconDrawable(android.graphics.drawable.Drawable);
- method public void setIconResource(int);
+ method public void setIconResource(@DrawableRes int);
}
public static class MediaRouter.RouteInfo {
method public android.media.MediaRouter.RouteCategory getCategory();
- method public java.lang.CharSequence getDescription();
+ method public CharSequence getDescription();
method public int getDeviceType();
method public android.media.MediaRouter.RouteGroup getGroup();
method public android.graphics.drawable.Drawable getIconDrawable();
- method public java.lang.CharSequence getName();
- method public java.lang.CharSequence getName(android.content.Context);
+ method public CharSequence getName();
+ method public CharSequence getName(android.content.Context);
method public int getPlaybackStream();
method public int getPlaybackType();
method public android.view.Display getPresentationDisplay();
- method public java.lang.CharSequence getStatus();
+ method public CharSequence getStatus();
method public int getSupportedTypes();
- method public java.lang.Object getTag();
+ method public Object getTag();
method public int getVolume();
method public int getVolumeHandling();
method public int getVolumeMax();
@@ -25755,7 +25816,7 @@
method public boolean isEnabled();
method public void requestSetVolume(int);
method public void requestUpdateVolume(int);
- method public void setTag(java.lang.Object);
+ method public void setTag(Object);
field public static final int DEVICE_TYPE_BLUETOOTH = 3; // 0x3
field public static final int DEVICE_TYPE_SPEAKER = 2; // 0x2
field public static final int DEVICE_TYPE_TV = 1; // 0x1
@@ -25780,22 +25841,22 @@
public static class MediaRouter.UserRouteInfo extends android.media.MediaRouter.RouteInfo {
method public android.media.RemoteControlClient getRemoteControlClient();
- method public void setDescription(java.lang.CharSequence);
+ method public void setDescription(CharSequence);
method public void setIconDrawable(android.graphics.drawable.Drawable);
- method public void setIconResource(int);
- method public void setName(java.lang.CharSequence);
+ method public void setIconResource(@DrawableRes int);
+ method public void setName(CharSequence);
method public void setName(int);
method public void setPlaybackStream(int);
method public void setPlaybackType(int);
method public void setRemoteControlClient(android.media.RemoteControlClient);
- method public void setStatus(java.lang.CharSequence);
+ method public void setStatus(CharSequence);
method public void setVolume(int);
method public void setVolumeCallback(android.media.MediaRouter.VolumeCallback);
method public void setVolumeHandling(int);
method public void setVolumeMax(int);
}
- public static abstract class MediaRouter.VolumeCallback {
+ public abstract static class MediaRouter.VolumeCallback {
ctor public MediaRouter.VolumeCallback();
method public abstract void onVolumeSetRequest(android.media.MediaRouter.RouteInfo, int);
method public abstract void onVolumeUpdateRequest(android.media.MediaRouter.RouteInfo, int);
@@ -25805,48 +25866,81 @@
ctor public MediaScannerConnection(android.content.Context, android.media.MediaScannerConnection.MediaScannerConnectionClient);
method public void connect();
method public void disconnect();
- method public synchronized boolean isConnected();
+ method public boolean isConnected();
method public void onServiceConnected(android.content.ComponentName, android.os.IBinder);
method public void onServiceDisconnected(android.content.ComponentName);
- method public void scanFile(java.lang.String, java.lang.String);
- method public static void scanFile(android.content.Context, java.lang.String[], java.lang.String[], android.media.MediaScannerConnection.OnScanCompletedListener);
+ method public void scanFile(String, String);
+ method public static void scanFile(android.content.Context, String[], String[], android.media.MediaScannerConnection.OnScanCompletedListener);
}
- public static abstract interface MediaScannerConnection.MediaScannerConnectionClient implements android.media.MediaScannerConnection.OnScanCompletedListener {
- method public abstract void onMediaScannerConnected();
+ public static interface MediaScannerConnection.MediaScannerConnectionClient extends android.media.MediaScannerConnection.OnScanCompletedListener {
+ method public void onMediaScannerConnected();
}
- public static abstract interface MediaScannerConnection.OnScanCompletedListener {
- method public abstract void onScanCompleted(java.lang.String, android.net.Uri);
+ public static interface MediaScannerConnection.OnScanCompletedListener {
+ method public void onScanCompleted(String, android.net.Uri);
+ }
+
+ public class MediaSession2 implements java.lang.AutoCloseable {
+ method public void broadcastSessionCommand(@NonNull android.media.Session2Command, @Nullable android.os.Bundle);
+ method public void cancelSessionCommand(@NonNull android.media.MediaSession2.ControllerInfo, @NonNull Object);
+ method public void close();
+ method @NonNull public String getSessionId();
+ method @NonNull public android.media.Session2Token getSessionToken();
+ method public boolean isPlaybackActive();
+ method @NonNull public Object sendSessionCommand(@NonNull android.media.MediaSession2.ControllerInfo, @NonNull android.media.Session2Command, @Nullable android.os.Bundle);
+ method public void setPlaybackActive(boolean);
+ }
+
+ public static final class MediaSession2.Builder {
+ ctor public MediaSession2.Builder(@NonNull android.content.Context);
+ method @NonNull public android.media.MediaSession2 build();
+ method @NonNull public android.media.MediaSession2.Builder setId(@NonNull String);
+ method @NonNull public android.media.MediaSession2.Builder setSessionActivity(@Nullable android.app.PendingIntent);
+ method @NonNull public android.media.MediaSession2.Builder setSessionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaSession2.SessionCallback);
+ }
+
+ public static final class MediaSession2.ControllerInfo {
+ method @NonNull public String getPackageName();
+ method @NonNull public android.media.session.MediaSessionManager.RemoteUserInfo getRemoteUserInfo();
+ method public int getUid();
+ }
+
+ public abstract static class MediaSession2.SessionCallback {
+ ctor public MediaSession2.SessionCallback();
+ method public void onCommandResult(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo, @NonNull Object, @NonNull android.media.Session2Command, @NonNull android.media.Session2Command.Result);
+ method @Nullable public android.media.Session2CommandGroup onConnect(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo);
+ method public void onDisconnected(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo);
+ method @Nullable public android.media.Session2Command.Result onSessionCommand(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo, @NonNull android.media.Session2Command, @Nullable android.os.Bundle);
}
public final class MediaSync {
ctor public MediaSync();
- method public android.view.Surface createInputSurface();
+ method @NonNull public android.view.Surface createInputSurface();
method protected void finalize();
method public void flush();
- method public android.media.PlaybackParams getPlaybackParams();
- method public android.media.SyncParams getSyncParams();
- method public android.media.MediaTimestamp getTimestamp();
- method public void queueAudio(java.nio.ByteBuffer, int, long);
+ method @NonNull public android.media.PlaybackParams getPlaybackParams();
+ method @NonNull public android.media.SyncParams getSyncParams();
+ method @Nullable public android.media.MediaTimestamp getTimestamp();
+ method public void queueAudio(@NonNull java.nio.ByteBuffer, int, long);
method public void release();
- method public void setAudioTrack(android.media.AudioTrack);
- method public void setCallback(android.media.MediaSync.Callback, android.os.Handler);
- method public void setOnErrorListener(android.media.MediaSync.OnErrorListener, android.os.Handler);
- method public void setPlaybackParams(android.media.PlaybackParams);
- method public void setSurface(android.view.Surface);
- method public void setSyncParams(android.media.SyncParams);
+ method public void setAudioTrack(@Nullable android.media.AudioTrack);
+ method public void setCallback(@Nullable android.media.MediaSync.Callback, @Nullable android.os.Handler);
+ method public void setOnErrorListener(@Nullable android.media.MediaSync.OnErrorListener, @Nullable android.os.Handler);
+ method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
+ method public void setSurface(@Nullable android.view.Surface);
+ method public void setSyncParams(@NonNull android.media.SyncParams);
field public static final int MEDIASYNC_ERROR_AUDIOTRACK_FAIL = 1; // 0x1
field public static final int MEDIASYNC_ERROR_SURFACE_FAIL = 2; // 0x2
}
- public static abstract class MediaSync.Callback {
+ public abstract static class MediaSync.Callback {
ctor public MediaSync.Callback();
- method public abstract void onAudioBufferConsumed(android.media.MediaSync, java.nio.ByteBuffer, int);
+ method public abstract void onAudioBufferConsumed(@NonNull android.media.MediaSync, @NonNull java.nio.ByteBuffer, int);
}
- public static abstract interface MediaSync.OnErrorListener {
- method public abstract void onError(android.media.MediaSync, int, int);
+ public static interface MediaSync.OnErrorListener {
+ method public void onError(@NonNull android.media.MediaSync, int, int);
}
public class MediaSyncEvent {
@@ -25861,17 +25955,17 @@
public final class MediaTimestamp {
method public long getAnchorMediaTimeUs();
method public long getAnchorSystemNanoTime();
- method public deprecated long getAnchorSytemNanoTime();
+ method @Deprecated public long getAnchorSytemNanoTime();
method public float getMediaClockRate();
field public static final android.media.MediaTimestamp TIMESTAMP_UNKNOWN;
}
public final class MicrophoneInfo {
- method public java.lang.String getAddress();
- method public java.util.List<android.util.Pair<java.lang.Integer, java.lang.Integer>> getChannelMapping();
- method public java.lang.String getDescription();
+ method @NonNull public String getAddress();
+ method public java.util.List<android.util.Pair<java.lang.Integer,java.lang.Integer>> getChannelMapping();
+ method public String getDescription();
method public int getDirectionality();
- method public java.util.List<android.util.Pair<java.lang.Float, java.lang.Float>> getFrequencyResponse();
+ method public java.util.List<android.util.Pair<java.lang.Float,java.lang.Float>> getFrequencyResponse();
method public int getGroup();
method public int getId();
method public int getIndexInTheGroup();
@@ -25909,7 +26003,7 @@
}
public final class NotProvisionedException extends android.media.MediaDrmException {
- ctor public NotProvisionedException(java.lang.String);
+ ctor public NotProvisionedException(String);
}
public final class PlaybackParams implements android.os.Parcelable {
@@ -25953,102 +26047,102 @@
field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
}
- public deprecated class RemoteControlClient {
- ctor public RemoteControlClient(android.app.PendingIntent);
- ctor public RemoteControlClient(android.app.PendingIntent, android.os.Looper);
- method public android.media.RemoteControlClient.MetadataEditor editMetadata(boolean);
- method public android.media.session.MediaSession getMediaSession();
- method public void setMetadataUpdateListener(android.media.RemoteControlClient.OnMetadataUpdateListener);
- method public void setOnGetPlaybackPositionListener(android.media.RemoteControlClient.OnGetPlaybackPositionListener);
- method public void setPlaybackPositionUpdateListener(android.media.RemoteControlClient.OnPlaybackPositionUpdateListener);
- method public void setPlaybackState(int);
- method public void setPlaybackState(int, long, float);
- method public void setTransportControlFlags(int);
- field public static final int FLAG_KEY_MEDIA_FAST_FORWARD = 64; // 0x40
- field public static final int FLAG_KEY_MEDIA_NEXT = 128; // 0x80
- field public static final int FLAG_KEY_MEDIA_PAUSE = 16; // 0x10
- field public static final int FLAG_KEY_MEDIA_PLAY = 4; // 0x4
- field public static final int FLAG_KEY_MEDIA_PLAY_PAUSE = 8; // 0x8
- field public static final int FLAG_KEY_MEDIA_POSITION_UPDATE = 256; // 0x100
- field public static final int FLAG_KEY_MEDIA_PREVIOUS = 1; // 0x1
- field public static final int FLAG_KEY_MEDIA_RATING = 512; // 0x200
- field public static final int FLAG_KEY_MEDIA_REWIND = 2; // 0x2
- field public static final int FLAG_KEY_MEDIA_STOP = 32; // 0x20
- field public static final int PLAYSTATE_BUFFERING = 8; // 0x8
- field public static final int PLAYSTATE_ERROR = 9; // 0x9
- field public static final int PLAYSTATE_FAST_FORWARDING = 4; // 0x4
- field public static final int PLAYSTATE_PAUSED = 2; // 0x2
- field public static final int PLAYSTATE_PLAYING = 3; // 0x3
- field public static final int PLAYSTATE_REWINDING = 5; // 0x5
- field public static final int PLAYSTATE_SKIPPING_BACKWARDS = 7; // 0x7
- field public static final int PLAYSTATE_SKIPPING_FORWARDS = 6; // 0x6
- field public static final int PLAYSTATE_STOPPED = 1; // 0x1
+ @Deprecated public class RemoteControlClient {
+ ctor @Deprecated public RemoteControlClient(android.app.PendingIntent);
+ ctor @Deprecated public RemoteControlClient(android.app.PendingIntent, android.os.Looper);
+ method @Deprecated public android.media.RemoteControlClient.MetadataEditor editMetadata(boolean);
+ method @Deprecated public android.media.session.MediaSession getMediaSession();
+ method @Deprecated public void setMetadataUpdateListener(android.media.RemoteControlClient.OnMetadataUpdateListener);
+ method @Deprecated public void setOnGetPlaybackPositionListener(android.media.RemoteControlClient.OnGetPlaybackPositionListener);
+ method @Deprecated public void setPlaybackPositionUpdateListener(android.media.RemoteControlClient.OnPlaybackPositionUpdateListener);
+ method @Deprecated public void setPlaybackState(int);
+ method @Deprecated public void setPlaybackState(int, long, float);
+ method @Deprecated public void setTransportControlFlags(int);
+ field @Deprecated public static final int FLAG_KEY_MEDIA_FAST_FORWARD = 64; // 0x40
+ field @Deprecated public static final int FLAG_KEY_MEDIA_NEXT = 128; // 0x80
+ field @Deprecated public static final int FLAG_KEY_MEDIA_PAUSE = 16; // 0x10
+ field @Deprecated public static final int FLAG_KEY_MEDIA_PLAY = 4; // 0x4
+ field @Deprecated public static final int FLAG_KEY_MEDIA_PLAY_PAUSE = 8; // 0x8
+ field @Deprecated public static final int FLAG_KEY_MEDIA_POSITION_UPDATE = 256; // 0x100
+ field @Deprecated public static final int FLAG_KEY_MEDIA_PREVIOUS = 1; // 0x1
+ field @Deprecated public static final int FLAG_KEY_MEDIA_RATING = 512; // 0x200
+ field @Deprecated public static final int FLAG_KEY_MEDIA_REWIND = 2; // 0x2
+ field @Deprecated public static final int FLAG_KEY_MEDIA_STOP = 32; // 0x20
+ field @Deprecated public static final int PLAYSTATE_BUFFERING = 8; // 0x8
+ field @Deprecated public static final int PLAYSTATE_ERROR = 9; // 0x9
+ field @Deprecated public static final int PLAYSTATE_FAST_FORWARDING = 4; // 0x4
+ field @Deprecated public static final int PLAYSTATE_PAUSED = 2; // 0x2
+ field @Deprecated public static final int PLAYSTATE_PLAYING = 3; // 0x3
+ field @Deprecated public static final int PLAYSTATE_REWINDING = 5; // 0x5
+ field @Deprecated public static final int PLAYSTATE_SKIPPING_BACKWARDS = 7; // 0x7
+ field @Deprecated public static final int PLAYSTATE_SKIPPING_FORWARDS = 6; // 0x6
+ field @Deprecated public static final int PLAYSTATE_STOPPED = 1; // 0x1
}
- public deprecated class RemoteControlClient.MetadataEditor extends android.media.MediaMetadataEditor {
- method public synchronized void apply();
- method public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
- method public synchronized android.media.RemoteControlClient.MetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
- method public synchronized android.media.RemoteControlClient.MetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
- method public synchronized android.media.RemoteControlClient.MetadataEditor putObject(int, java.lang.Object) throws java.lang.IllegalArgumentException;
- method public synchronized android.media.RemoteControlClient.MetadataEditor putString(int, java.lang.String) throws java.lang.IllegalArgumentException;
- field public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
+ @Deprecated public class RemoteControlClient.MetadataEditor extends android.media.MediaMetadataEditor {
+ method @Deprecated public void apply();
+ method public Object clone() throws java.lang.CloneNotSupportedException;
+ method @Deprecated public android.media.RemoteControlClient.MetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
+ method @Deprecated public android.media.RemoteControlClient.MetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
+ method @Deprecated public android.media.RemoteControlClient.MetadataEditor putObject(int, Object) throws java.lang.IllegalArgumentException;
+ method @Deprecated public android.media.RemoteControlClient.MetadataEditor putString(int, String) throws java.lang.IllegalArgumentException;
+ field @Deprecated public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
}
- public static abstract interface RemoteControlClient.OnGetPlaybackPositionListener {
- method public abstract long onGetPlaybackPosition();
+ @Deprecated public static interface RemoteControlClient.OnGetPlaybackPositionListener {
+ method @Deprecated public long onGetPlaybackPosition();
}
- public static abstract interface RemoteControlClient.OnMetadataUpdateListener {
- method public abstract void onMetadataUpdate(int, java.lang.Object);
+ @Deprecated public static interface RemoteControlClient.OnMetadataUpdateListener {
+ method @Deprecated public void onMetadataUpdate(int, Object);
}
- public static abstract interface RemoteControlClient.OnPlaybackPositionUpdateListener {
- method public abstract void onPlaybackPositionUpdate(long);
+ @Deprecated public static interface RemoteControlClient.OnPlaybackPositionUpdateListener {
+ method @Deprecated public void onPlaybackPositionUpdate(long);
}
- public final deprecated class RemoteController {
- ctor public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener) throws java.lang.IllegalArgumentException;
- ctor public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener, android.os.Looper) throws java.lang.IllegalArgumentException;
- method public boolean clearArtworkConfiguration();
- method public android.media.RemoteController.MetadataEditor editMetadata();
- method public long getEstimatedMediaPosition();
- method public boolean seekTo(long) throws java.lang.IllegalArgumentException;
- method public boolean sendMediaKeyEvent(android.view.KeyEvent) throws java.lang.IllegalArgumentException;
- method public boolean setArtworkConfiguration(int, int) throws java.lang.IllegalArgumentException;
- method public boolean setSynchronizationMode(int) throws java.lang.IllegalArgumentException;
- field public static final int POSITION_SYNCHRONIZATION_CHECK = 1; // 0x1
- field public static final int POSITION_SYNCHRONIZATION_NONE = 0; // 0x0
+ @Deprecated public final class RemoteController {
+ ctor @Deprecated public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener) throws java.lang.IllegalArgumentException;
+ ctor @Deprecated public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener, android.os.Looper) throws java.lang.IllegalArgumentException;
+ method @Deprecated public boolean clearArtworkConfiguration();
+ method @Deprecated public android.media.RemoteController.MetadataEditor editMetadata();
+ method @Deprecated public long getEstimatedMediaPosition();
+ method @Deprecated public boolean seekTo(long) throws java.lang.IllegalArgumentException;
+ method @Deprecated public boolean sendMediaKeyEvent(android.view.KeyEvent) throws java.lang.IllegalArgumentException;
+ method @Deprecated public boolean setArtworkConfiguration(int, int) throws java.lang.IllegalArgumentException;
+ method @Deprecated public boolean setSynchronizationMode(int) throws java.lang.IllegalArgumentException;
+ field @Deprecated public static final int POSITION_SYNCHRONIZATION_CHECK = 1; // 0x1
+ field @Deprecated public static final int POSITION_SYNCHRONIZATION_NONE = 0; // 0x0
}
- public class RemoteController.MetadataEditor extends android.media.MediaMetadataEditor {
- method public synchronized void apply();
+ @Deprecated public class RemoteController.MetadataEditor extends android.media.MediaMetadataEditor {
+ method @Deprecated public void apply();
}
- public static abstract interface RemoteController.OnClientUpdateListener {
- method public abstract void onClientChange(boolean);
- method public abstract void onClientMetadataUpdate(android.media.RemoteController.MetadataEditor);
- method public abstract void onClientPlaybackStateUpdate(int);
- method public abstract void onClientPlaybackStateUpdate(int, long, long, float);
- method public abstract void onClientTransportControlUpdate(int);
+ @Deprecated public static interface RemoteController.OnClientUpdateListener {
+ method @Deprecated public void onClientChange(boolean);
+ method @Deprecated public void onClientMetadataUpdate(android.media.RemoteController.MetadataEditor);
+ method @Deprecated public void onClientPlaybackStateUpdate(int);
+ method @Deprecated public void onClientPlaybackStateUpdate(int, long, long, float);
+ method @Deprecated public void onClientTransportControlUpdate(int);
}
public final class ResourceBusyException extends android.media.MediaDrmException {
- ctor public ResourceBusyException(java.lang.String);
+ ctor public ResourceBusyException(String);
}
public class Ringtone {
method protected void finalize();
method public android.media.AudioAttributes getAudioAttributes();
- method public deprecated int getStreamType();
- method public java.lang.String getTitle(android.content.Context);
+ method @Deprecated public int getStreamType();
+ method public String getTitle(android.content.Context);
method public float getVolume();
method public boolean isLooping();
method public boolean isPlaying();
method public void play();
method public void setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
method public void setLooping(boolean);
- method public deprecated void setStreamType(int);
+ method @Deprecated public void setStreamType(int);
method public void setVolume(float);
method public void stop();
}
@@ -26060,7 +26154,7 @@
method public android.database.Cursor getCursor();
method public static int getDefaultType(android.net.Uri);
method public static android.net.Uri getDefaultUri(int);
- method public deprecated boolean getIncludeDrm();
+ method @Deprecated public boolean getIncludeDrm();
method public android.media.Ringtone getRingtone(int);
method public static android.media.Ringtone getRingtone(android.content.Context, android.net.Uri);
method public int getRingtonePosition(android.net.Uri);
@@ -26069,21 +26163,21 @@
method public static android.net.Uri getValidRingtoneUri(android.content.Context);
method public int inferStreamType();
method public static boolean isDefault(android.net.Uri);
- method public static android.content.res.AssetFileDescriptor openDefaultRingtoneUri(android.content.Context, android.net.Uri) throws java.io.FileNotFoundException;
+ method @Nullable public static android.content.res.AssetFileDescriptor openDefaultRingtoneUri(@NonNull android.content.Context, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
method public static void setActualDefaultRingtoneUri(android.content.Context, int, android.net.Uri);
- method public deprecated void setIncludeDrm(boolean);
+ method @Deprecated public void setIncludeDrm(boolean);
method public void setStopPreviousRingtone(boolean);
method public void setType(int);
method public void stopPreviousRingtone();
- field public static final java.lang.String ACTION_RINGTONE_PICKER = "android.intent.action.RINGTONE_PICKER";
- field public static final java.lang.String EXTRA_RINGTONE_DEFAULT_URI = "android.intent.extra.ringtone.DEFAULT_URI";
- field public static final java.lang.String EXTRA_RINGTONE_EXISTING_URI = "android.intent.extra.ringtone.EXISTING_URI";
- field public static final deprecated java.lang.String EXTRA_RINGTONE_INCLUDE_DRM = "android.intent.extra.ringtone.INCLUDE_DRM";
- field public static final java.lang.String EXTRA_RINGTONE_PICKED_URI = "android.intent.extra.ringtone.PICKED_URI";
- field public static final java.lang.String EXTRA_RINGTONE_SHOW_DEFAULT = "android.intent.extra.ringtone.SHOW_DEFAULT";
- field public static final java.lang.String EXTRA_RINGTONE_SHOW_SILENT = "android.intent.extra.ringtone.SHOW_SILENT";
- field public static final java.lang.String EXTRA_RINGTONE_TITLE = "android.intent.extra.ringtone.TITLE";
- field public static final java.lang.String EXTRA_RINGTONE_TYPE = "android.intent.extra.ringtone.TYPE";
+ field public static final String ACTION_RINGTONE_PICKER = "android.intent.action.RINGTONE_PICKER";
+ field public static final String EXTRA_RINGTONE_DEFAULT_URI = "android.intent.extra.ringtone.DEFAULT_URI";
+ field public static final String EXTRA_RINGTONE_EXISTING_URI = "android.intent.extra.ringtone.EXISTING_URI";
+ field @Deprecated public static final String EXTRA_RINGTONE_INCLUDE_DRM = "android.intent.extra.ringtone.INCLUDE_DRM";
+ field public static final String EXTRA_RINGTONE_PICKED_URI = "android.intent.extra.ringtone.PICKED_URI";
+ field public static final String EXTRA_RINGTONE_SHOW_DEFAULT = "android.intent.extra.ringtone.SHOW_DEFAULT";
+ field public static final String EXTRA_RINGTONE_SHOW_SILENT = "android.intent.extra.ringtone.SHOW_SILENT";
+ field public static final String EXTRA_RINGTONE_TITLE = "android.intent.extra.ringtone.TITLE";
+ field public static final String EXTRA_RINGTONE_TYPE = "android.intent.extra.ringtone.TYPE";
field public static final int ID_COLUMN_INDEX = 0; // 0x0
field public static final int TITLE_COLUMN_INDEX = 1; // 0x1
field public static final int TYPE_ALARM = 4; // 0x4
@@ -26095,12 +26189,12 @@
public final class Session2Command implements android.os.Parcelable {
ctor public Session2Command(int);
- ctor public Session2Command(java.lang.String, android.os.Bundle);
+ ctor public Session2Command(@NonNull String, @Nullable android.os.Bundle);
method public int describeContents();
method public int getCommandCode();
- method public java.lang.String getCustomCommand();
- method public android.os.Bundle getExtras();
- method public void writeToParcel(android.os.Parcel, int);
+ method @Nullable public String getCustomCommand();
+ method @Nullable public android.os.Bundle getExtras();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final int COMMAND_CODE_CUSTOM = 0; // 0x0
field public static final android.os.Parcelable.Creator<android.media.Session2Command> CREATOR;
field public static final int RESULT_ERROR_UNKNOWN_ERROR = -1; // 0xffffffff
@@ -26109,36 +26203,50 @@
}
public static final class Session2Command.Result {
- ctor public Session2Command.Result(int, android.os.Bundle);
+ ctor public Session2Command.Result(int, @Nullable android.os.Bundle);
method public int getResultCode();
- method public android.os.Bundle getResultData();
+ method @Nullable public android.os.Bundle getResultData();
}
public final class Session2CommandGroup implements android.os.Parcelable {
method public int describeContents();
- method public java.util.Set<android.media.Session2Command> getCommands();
- method public boolean hasCommand(android.media.Session2Command);
+ method @NonNull public java.util.Set<android.media.Session2Command> getCommands();
+ method public boolean hasCommand(@NonNull android.media.Session2Command);
method public boolean hasCommand(int);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.Session2CommandGroup> CREATOR;
}
public static final class Session2CommandGroup.Builder {
ctor public Session2CommandGroup.Builder();
- ctor public Session2CommandGroup.Builder(android.media.Session2CommandGroup);
- method public android.media.Session2CommandGroup.Builder addCommand(android.media.Session2Command);
- method public android.media.Session2CommandGroup.Builder addCommand(int);
- method public android.media.Session2CommandGroup build();
- method public android.media.Session2CommandGroup.Builder removeCommand(android.media.Session2Command);
- method public android.media.Session2CommandGroup.Builder removeCommand(int);
+ ctor public Session2CommandGroup.Builder(@NonNull android.media.Session2CommandGroup);
+ method @NonNull public android.media.Session2CommandGroup.Builder addCommand(@NonNull android.media.Session2Command);
+ method @NonNull public android.media.Session2CommandGroup.Builder addCommand(int);
+ method @NonNull public android.media.Session2CommandGroup build();
+ method @NonNull public android.media.Session2CommandGroup.Builder removeCommand(@NonNull android.media.Session2Command);
+ method @NonNull public android.media.Session2CommandGroup.Builder removeCommand(int);
+ }
+
+ public final class Session2Token implements android.os.Parcelable {
+ ctor public Session2Token(@NonNull android.content.Context, @NonNull android.content.ComponentName);
+ method public int describeContents();
+ method @NonNull public String getPackageName();
+ method @Nullable public String getServiceName();
+ method public int getType();
+ method public int getUid();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator<android.media.Session2Token> CREATOR;
+ field public static final int TYPE_SESSION = 0; // 0x0
+ field public static final int TYPE_SESSION_SERVICE = 1; // 0x1
}
public class SoundPool {
- ctor public deprecated SoundPool(int, int, int);
+ ctor @Deprecated public SoundPool(int, int, int);
method public final void autoPause();
method public final void autoResume();
+ method public static void deprecateStreamTypeForPlayback(int, String, String) throws java.lang.IllegalArgumentException;
method protected void finalize();
- method public int load(java.lang.String, int);
+ method public int load(String, int);
method public int load(android.content.Context, int, int);
method public int load(android.content.res.AssetFileDescriptor, int);
method public int load(java.io.FileDescriptor, long, long, int);
@@ -26162,12 +26270,12 @@
method public android.media.SoundPool.Builder setMaxStreams(int) throws java.lang.IllegalArgumentException;
}
- public static abstract interface SoundPool.OnLoadCompleteListener {
- method public abstract void onLoadComplete(android.media.SoundPool, int, int);
+ public static interface SoundPool.OnLoadCompleteListener {
+ method public void onLoadComplete(android.media.SoundPool, int, int);
}
public final class SubtitleData {
- method public byte[] getData();
+ method @NonNull public byte[] getData();
method public long getDurationUs();
method public long getStartTimeUs();
method public int getTrackIndex();
@@ -26195,12 +26303,12 @@
public class ThumbnailUtils {
ctor public ThumbnailUtils();
- method public static deprecated android.graphics.Bitmap createAudioThumbnail(java.lang.String, int);
- method public static android.graphics.Bitmap createAudioThumbnail(java.io.File, android.util.Size, android.os.CancellationSignal) throws java.io.IOException;
- method public static deprecated android.graphics.Bitmap createImageThumbnail(java.lang.String, int);
- method public static android.graphics.Bitmap createImageThumbnail(java.io.File, android.util.Size, android.os.CancellationSignal) throws java.io.IOException;
- method public static deprecated android.graphics.Bitmap createVideoThumbnail(java.lang.String, int);
- method public static android.graphics.Bitmap createVideoThumbnail(java.io.File, android.util.Size, android.os.CancellationSignal) throws java.io.IOException;
+ method @Deprecated @Nullable public static android.graphics.Bitmap createAudioThumbnail(@NonNull String, int);
+ method @NonNull public static android.graphics.Bitmap createAudioThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
+ method @Deprecated @Nullable public static android.graphics.Bitmap createImageThumbnail(@NonNull String, int);
+ method @NonNull public static android.graphics.Bitmap createImageThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
+ method @Deprecated @Nullable public static android.graphics.Bitmap createVideoThumbnail(@NonNull String, int);
+ method @NonNull public static android.graphics.Bitmap createVideoThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
method public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int);
method public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int, int);
field public static final int OPTIONS_RECYCLE_INPUT = 2; // 0x2
@@ -26213,7 +26321,7 @@
public final class TimedText {
method public android.graphics.Rect getBounds();
- method public java.lang.String getText();
+ method public String getText();
}
public class ToneGenerator {
@@ -26328,22 +26436,22 @@
}
public final class UnsupportedSchemeException extends android.media.MediaDrmException {
- ctor public UnsupportedSchemeException(java.lang.String);
+ ctor public UnsupportedSchemeException(String);
}
public class UriDataSourceDesc extends android.media.DataSourceDesc {
method public android.content.Context getContext();
method public java.util.List<java.net.HttpCookie> getCookies();
- method public java.util.Map<java.lang.String, java.lang.String> getHeaders();
+ method public java.util.Map<java.lang.String,java.lang.String> getHeaders();
method public android.net.Uri getUri();
}
- public static class UriDataSourceDesc.Builder extends android.media.DataSourceDesc.BuilderBase {
+ public static class UriDataSourceDesc.Builder extends android.media.DataSourceDesc.BuilderBase<android.media.UriDataSourceDesc.Builder> {
ctor public UriDataSourceDesc.Builder();
ctor public UriDataSourceDesc.Builder(android.media.UriDataSourceDesc);
- method public android.media.UriDataSourceDesc build();
- method public android.media.UriDataSourceDesc.Builder setDataSource(android.content.Context, android.net.Uri);
- method public android.media.UriDataSourceDesc.Builder setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>, java.util.List<java.net.HttpCookie>);
+ method @NonNull public android.media.UriDataSourceDesc build();
+ method @NonNull public android.media.UriDataSourceDesc.Builder setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri);
+ method @NonNull public android.media.UriDataSourceDesc.Builder setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>, @Nullable java.util.List<java.net.HttpCookie>);
}
public final class VideoSize {
@@ -26351,8 +26459,8 @@
method public int getWidth();
}
- public abstract interface VolumeAutomation {
- method public abstract android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
+ public interface VolumeAutomation {
+ method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
}
public abstract class VolumeProvider {
@@ -26369,11 +26477,11 @@
}
public final class VolumeShaper implements java.lang.AutoCloseable {
- method public void apply(android.media.VolumeShaper.Operation);
+ method public void apply(@NonNull android.media.VolumeShaper.Operation);
method public void close();
method protected void finalize();
method public float getVolume();
- method public void replace(android.media.VolumeShaper.Configuration, android.media.VolumeShaper.Operation, boolean);
+ method public void replace(@NonNull android.media.VolumeShaper.Configuration, @NonNull android.media.VolumeShaper.Operation, boolean);
}
public static final class VolumeShaper.Configuration implements android.os.Parcelable {
@@ -26397,15 +26505,15 @@
public static final class VolumeShaper.Configuration.Builder {
ctor public VolumeShaper.Configuration.Builder();
- ctor public VolumeShaper.Configuration.Builder(android.media.VolumeShaper.Configuration);
- method public android.media.VolumeShaper.Configuration build();
- method public android.media.VolumeShaper.Configuration.Builder invertVolumes();
- method public android.media.VolumeShaper.Configuration.Builder reflectTimes();
- method public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float);
- method public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float);
- method public android.media.VolumeShaper.Configuration.Builder setCurve(float[], float[]);
- method public android.media.VolumeShaper.Configuration.Builder setDuration(long);
- method public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int);
+ ctor public VolumeShaper.Configuration.Builder(@NonNull android.media.VolumeShaper.Configuration);
+ method @NonNull public android.media.VolumeShaper.Configuration build();
+ method @NonNull public android.media.VolumeShaper.Configuration.Builder invertVolumes();
+ method @NonNull public android.media.VolumeShaper.Configuration.Builder reflectTimes();
+ method @NonNull public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float);
+ method @NonNull public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float);
+ method @NonNull public android.media.VolumeShaper.Configuration.Builder setCurve(@NonNull float[], @NonNull float[]);
+ method @NonNull public android.media.VolumeShaper.Configuration.Builder setDuration(long);
+ method @NonNull public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int);
}
public static final class VolumeShaper.Operation implements android.os.Parcelable {
@@ -26436,16 +26544,16 @@
method public void setControlStatusListener(android.media.audiofx.AudioEffect.OnControlStatusChangeListener);
method public void setEnableStatusListener(android.media.audiofx.AudioEffect.OnEnableStatusChangeListener);
method public int setEnabled(boolean) throws java.lang.IllegalStateException;
- field public static final java.lang.String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION";
- field public static final java.lang.String ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL = "android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL";
- field public static final java.lang.String ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION";
+ field public static final String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION";
+ field public static final String ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL = "android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL";
+ field public static final String ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION";
field public static final int ALREADY_EXISTS = -2; // 0xfffffffe
field public static final int CONTENT_TYPE_GAME = 2; // 0x2
field public static final int CONTENT_TYPE_MOVIE = 1; // 0x1
field public static final int CONTENT_TYPE_MUSIC = 0; // 0x0
field public static final int CONTENT_TYPE_VOICE = 3; // 0x3
- field public static final java.lang.String EFFECT_AUXILIARY = "Auxiliary";
- field public static final java.lang.String EFFECT_INSERT = "Insert";
+ field public static final String EFFECT_AUXILIARY = "Auxiliary";
+ field public static final String EFFECT_INSERT = "Insert";
field public static final java.util.UUID EFFECT_TYPE_AEC;
field public static final java.util.UUID EFFECT_TYPE_AGC;
field public static final java.util.UUID EFFECT_TYPE_BASS_BOOST;
@@ -26462,31 +26570,31 @@
field public static final int ERROR_INVALID_OPERATION = -5; // 0xfffffffb
field public static final int ERROR_NO_INIT = -3; // 0xfffffffd
field public static final int ERROR_NO_MEMORY = -6; // 0xfffffffa
- field public static final java.lang.String EXTRA_AUDIO_SESSION = "android.media.extra.AUDIO_SESSION";
- field public static final java.lang.String EXTRA_CONTENT_TYPE = "android.media.extra.CONTENT_TYPE";
- field public static final java.lang.String EXTRA_PACKAGE_NAME = "android.media.extra.PACKAGE_NAME";
+ field public static final String EXTRA_AUDIO_SESSION = "android.media.extra.AUDIO_SESSION";
+ field public static final String EXTRA_CONTENT_TYPE = "android.media.extra.CONTENT_TYPE";
+ field public static final String EXTRA_PACKAGE_NAME = "android.media.extra.PACKAGE_NAME";
field public static final int SUCCESS = 0; // 0x0
}
public static final class AudioEffect.Descriptor implements android.os.Parcelable {
ctor public AudioEffect.Descriptor();
- ctor public AudioEffect.Descriptor(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ ctor public AudioEffect.Descriptor(String, String, String, String, String);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.audiofx.AudioEffect.Descriptor> CREATOR;
- field public java.lang.String connectMode;
- field public java.lang.String implementor;
- field public java.lang.String name;
+ field public String connectMode;
+ field public String implementor;
+ field public String name;
field public java.util.UUID type;
field public java.util.UUID uuid;
}
- public static abstract interface AudioEffect.OnControlStatusChangeListener {
- method public abstract void onControlStatusChange(android.media.audiofx.AudioEffect, boolean);
+ public static interface AudioEffect.OnControlStatusChangeListener {
+ method public void onControlStatusChange(android.media.audiofx.AudioEffect, boolean);
}
- public static abstract interface AudioEffect.OnEnableStatusChangeListener {
- method public abstract void onEnableStatusChange(android.media.audiofx.AudioEffect, boolean);
+ public static interface AudioEffect.OnEnableStatusChangeListener {
+ method public void onEnableStatusChange(android.media.audiofx.AudioEffect, boolean);
}
public class AutomaticGainControl extends android.media.audiofx.AudioEffect {
@@ -26506,19 +26614,19 @@
field public static final int PARAM_STRENGTH_SUPPORTED = 0; // 0x0
}
- public static abstract interface BassBoost.OnParameterChangeListener {
- method public abstract void onParameterChange(android.media.audiofx.BassBoost, int, int, short);
+ public static interface BassBoost.OnParameterChangeListener {
+ method public void onParameterChange(android.media.audiofx.BassBoost, int, int, short);
}
public static class BassBoost.Settings {
ctor public BassBoost.Settings();
- ctor public BassBoost.Settings(java.lang.String);
+ ctor public BassBoost.Settings(String);
field public short strength;
}
public final class DynamicsProcessing extends android.media.audiofx.AudioEffect {
ctor public DynamicsProcessing(int);
- ctor public DynamicsProcessing(int, int, android.media.audiofx.DynamicsProcessing.Config);
+ ctor public DynamicsProcessing(int, int, @Nullable android.media.audiofx.DynamicsProcessing.Config);
method public android.media.audiofx.DynamicsProcessing.Channel getChannelByChannelIndex(int);
method public int getChannelCount();
method public android.media.audiofx.DynamicsProcessing.Config getConfig();
@@ -26748,13 +26856,13 @@
field public static final int PARAM_ROOM_LEVEL = 0; // 0x0
}
- public static abstract interface EnvironmentalReverb.OnParameterChangeListener {
- method public abstract void onParameterChange(android.media.audiofx.EnvironmentalReverb, int, int, int);
+ public static interface EnvironmentalReverb.OnParameterChangeListener {
+ method public void onParameterChange(android.media.audiofx.EnvironmentalReverb, int, int, int);
}
public static class EnvironmentalReverb.Settings {
ctor public EnvironmentalReverb.Settings();
- ctor public EnvironmentalReverb.Settings(java.lang.String);
+ ctor public EnvironmentalReverb.Settings(String);
field public short decayHFRatio;
field public int decayTime;
field public short density;
@@ -26777,7 +26885,7 @@
method public short getCurrentPreset() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
method public short getNumberOfBands() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
method public short getNumberOfPresets() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
- method public java.lang.String getPresetName(short);
+ method public String getPresetName(short);
method public android.media.audiofx.Equalizer.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
method public void setBandLevel(short, short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
method public void setParameterListener(android.media.audiofx.Equalizer.OnParameterChangeListener);
@@ -26795,13 +26903,13 @@
field public static final int PARAM_STRING_SIZE_MAX = 32; // 0x20
}
- public static abstract interface Equalizer.OnParameterChangeListener {
- method public abstract void onParameterChange(android.media.audiofx.Equalizer, int, int, int, int);
+ public static interface Equalizer.OnParameterChangeListener {
+ method public void onParameterChange(android.media.audiofx.Equalizer, int, int, int, int);
}
public static class Equalizer.Settings {
ctor public Equalizer.Settings();
- ctor public Equalizer.Settings(java.lang.String);
+ ctor public Equalizer.Settings(String);
field public short[] bandLevels;
field public short curPreset;
field public short numBands;
@@ -26836,13 +26944,13 @@
field public static final short PRESET_SMALLROOM = 1; // 0x1
}
- public static abstract interface PresetReverb.OnParameterChangeListener {
- method public abstract void onParameterChange(android.media.audiofx.PresetReverb, int, int, short);
+ public static interface PresetReverb.OnParameterChangeListener {
+ method public void onParameterChange(android.media.audiofx.PresetReverb, int, int, short);
}
public static class PresetReverb.Settings {
ctor public PresetReverb.Settings();
- ctor public PresetReverb.Settings(java.lang.String);
+ ctor public PresetReverb.Settings(String);
field public short preset;
}
@@ -26866,13 +26974,13 @@
field public static final int VIRTUALIZATION_MODE_TRANSAURAL = 3; // 0x3
}
- public static abstract interface Virtualizer.OnParameterChangeListener {
- method public abstract void onParameterChange(android.media.audiofx.Virtualizer, int, int, short);
+ public static interface Virtualizer.OnParameterChangeListener {
+ method public void onParameterChange(android.media.audiofx.Virtualizer, int, int, short);
}
public static class Virtualizer.Settings {
ctor public Virtualizer.Settings();
- ctor public Virtualizer.Settings(java.lang.String);
+ ctor public Virtualizer.Settings(String);
field public short strength;
}
@@ -26918,9 +27026,9 @@
field public int mRms;
}
- public static abstract interface Visualizer.OnDataCaptureListener {
- method public abstract void onFftDataCapture(android.media.audiofx.Visualizer, byte[], int);
- method public abstract void onWaveFormDataCapture(android.media.audiofx.Visualizer, byte[], int);
+ public static interface Visualizer.OnDataCaptureListener {
+ method public void onFftDataCapture(android.media.audiofx.Visualizer, byte[], int);
+ method public void onWaveFormDataCapture(android.media.audiofx.Visualizer, byte[], int);
}
}
@@ -26931,18 +27039,18 @@
ctor public MediaBrowser(android.content.Context, android.content.ComponentName, android.media.browse.MediaBrowser.ConnectionCallback, android.os.Bundle);
method public void connect();
method public void disconnect();
- method public android.os.Bundle getExtras();
- method public void getItem(java.lang.String, android.media.browse.MediaBrowser.ItemCallback);
- method public java.lang.String getRoot();
- method public android.content.ComponentName getServiceComponent();
- method public android.media.session.MediaSession.Token getSessionToken();
+ method @Nullable public android.os.Bundle getExtras();
+ method public void getItem(@NonNull String, @NonNull android.media.browse.MediaBrowser.ItemCallback);
+ method @NonNull public String getRoot();
+ method @NonNull public android.content.ComponentName getServiceComponent();
+ method @NonNull public android.media.session.MediaSession.Token getSessionToken();
method public boolean isConnected();
- method public void subscribe(java.lang.String, android.media.browse.MediaBrowser.SubscriptionCallback);
- method public void subscribe(java.lang.String, android.os.Bundle, android.media.browse.MediaBrowser.SubscriptionCallback);
- method public void unsubscribe(java.lang.String);
- method public void unsubscribe(java.lang.String, android.media.browse.MediaBrowser.SubscriptionCallback);
- field public static final java.lang.String EXTRA_PAGE = "android.media.browse.extra.PAGE";
- field public static final java.lang.String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
+ method public void subscribe(@NonNull String, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
+ method public void subscribe(@NonNull String, @NonNull android.os.Bundle, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
+ method public void unsubscribe(@NonNull String);
+ method public void unsubscribe(@NonNull String, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
+ field public static final String EXTRA_PAGE = "android.media.browse.extra.PAGE";
+ field public static final String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
}
public static class MediaBrowser.ConnectionCallback {
@@ -26952,18 +27060,18 @@
method public void onConnectionSuspended();
}
- public static abstract class MediaBrowser.ItemCallback {
+ public abstract static class MediaBrowser.ItemCallback {
ctor public MediaBrowser.ItemCallback();
- method public void onError(java.lang.String);
+ method public void onError(@NonNull String);
method public void onItemLoaded(android.media.browse.MediaBrowser.MediaItem);
}
public static class MediaBrowser.MediaItem implements android.os.Parcelable {
- ctor public MediaBrowser.MediaItem(android.media.MediaDescription, int);
+ ctor public MediaBrowser.MediaItem(@NonNull android.media.MediaDescription, int);
method public int describeContents();
- method public android.media.MediaDescription getDescription();
+ method @NonNull public android.media.MediaDescription getDescription();
method public int getFlags();
- method public java.lang.String getMediaId();
+ method @Nullable public String getMediaId();
method public boolean isBrowsable();
method public boolean isPlayable();
method public void writeToParcel(android.os.Parcel, int);
@@ -26972,12 +27080,12 @@
field public static final int FLAG_PLAYABLE = 2; // 0x2
}
- public static abstract class MediaBrowser.SubscriptionCallback {
+ public abstract static class MediaBrowser.SubscriptionCallback {
ctor public MediaBrowser.SubscriptionCallback();
- method public void onChildrenLoaded(java.lang.String, java.util.List<android.media.browse.MediaBrowser.MediaItem>);
- method public void onChildrenLoaded(java.lang.String, java.util.List<android.media.browse.MediaBrowser.MediaItem>, android.os.Bundle);
- method public void onError(java.lang.String);
- method public void onError(java.lang.String, android.os.Bundle);
+ method public void onChildrenLoaded(@NonNull String, @NonNull java.util.List<android.media.browse.MediaBrowser.MediaItem>);
+ method public void onChildrenLoaded(@NonNull String, @NonNull java.util.List<android.media.browse.MediaBrowser.MediaItem>, @NonNull android.os.Bundle);
+ method public void onError(@NonNull String);
+ method public void onError(@NonNull String, @NonNull android.os.Bundle);
}
}
@@ -26987,9 +27095,9 @@
public abstract class Effect {
ctor public Effect();
method public abstract void apply(int, int, int, int);
- method public abstract java.lang.String getName();
+ method public abstract String getName();
method public abstract void release();
- method public abstract void setParameter(java.lang.String, java.lang.Object);
+ method public abstract void setParameter(String, Object);
method public void setUpdateListener(android.media.effect.EffectUpdateListener);
}
@@ -27000,39 +27108,39 @@
}
public class EffectFactory {
- method public android.media.effect.Effect createEffect(java.lang.String);
- method public static boolean isEffectSupported(java.lang.String);
- field public static final java.lang.String EFFECT_AUTOFIX = "android.media.effect.effects.AutoFixEffect";
- field public static final java.lang.String EFFECT_BACKDROPPER = "android.media.effect.effects.BackDropperEffect";
- field public static final java.lang.String EFFECT_BITMAPOVERLAY = "android.media.effect.effects.BitmapOverlayEffect";
- field public static final java.lang.String EFFECT_BLACKWHITE = "android.media.effect.effects.BlackWhiteEffect";
- field public static final java.lang.String EFFECT_BRIGHTNESS = "android.media.effect.effects.BrightnessEffect";
- field public static final java.lang.String EFFECT_CONTRAST = "android.media.effect.effects.ContrastEffect";
- field public static final java.lang.String EFFECT_CROP = "android.media.effect.effects.CropEffect";
- field public static final java.lang.String EFFECT_CROSSPROCESS = "android.media.effect.effects.CrossProcessEffect";
- field public static final java.lang.String EFFECT_DOCUMENTARY = "android.media.effect.effects.DocumentaryEffect";
- field public static final java.lang.String EFFECT_DUOTONE = "android.media.effect.effects.DuotoneEffect";
- field public static final java.lang.String EFFECT_FILLLIGHT = "android.media.effect.effects.FillLightEffect";
- field public static final java.lang.String EFFECT_FISHEYE = "android.media.effect.effects.FisheyeEffect";
- field public static final java.lang.String EFFECT_FLIP = "android.media.effect.effects.FlipEffect";
- field public static final java.lang.String EFFECT_GRAIN = "android.media.effect.effects.GrainEffect";
- field public static final java.lang.String EFFECT_GRAYSCALE = "android.media.effect.effects.GrayscaleEffect";
- field public static final java.lang.String EFFECT_LOMOISH = "android.media.effect.effects.LomoishEffect";
- field public static final java.lang.String EFFECT_NEGATIVE = "android.media.effect.effects.NegativeEffect";
- field public static final java.lang.String EFFECT_POSTERIZE = "android.media.effect.effects.PosterizeEffect";
- field public static final java.lang.String EFFECT_REDEYE = "android.media.effect.effects.RedEyeEffect";
- field public static final java.lang.String EFFECT_ROTATE = "android.media.effect.effects.RotateEffect";
- field public static final java.lang.String EFFECT_SATURATE = "android.media.effect.effects.SaturateEffect";
- field public static final java.lang.String EFFECT_SEPIA = "android.media.effect.effects.SepiaEffect";
- field public static final java.lang.String EFFECT_SHARPEN = "android.media.effect.effects.SharpenEffect";
- field public static final java.lang.String EFFECT_STRAIGHTEN = "android.media.effect.effects.StraightenEffect";
- field public static final java.lang.String EFFECT_TEMPERATURE = "android.media.effect.effects.ColorTemperatureEffect";
- field public static final java.lang.String EFFECT_TINT = "android.media.effect.effects.TintEffect";
- field public static final java.lang.String EFFECT_VIGNETTE = "android.media.effect.effects.VignetteEffect";
+ method public android.media.effect.Effect createEffect(String);
+ method public static boolean isEffectSupported(String);
+ field public static final String EFFECT_AUTOFIX = "android.media.effect.effects.AutoFixEffect";
+ field public static final String EFFECT_BACKDROPPER = "android.media.effect.effects.BackDropperEffect";
+ field public static final String EFFECT_BITMAPOVERLAY = "android.media.effect.effects.BitmapOverlayEffect";
+ field public static final String EFFECT_BLACKWHITE = "android.media.effect.effects.BlackWhiteEffect";
+ field public static final String EFFECT_BRIGHTNESS = "android.media.effect.effects.BrightnessEffect";
+ field public static final String EFFECT_CONTRAST = "android.media.effect.effects.ContrastEffect";
+ field public static final String EFFECT_CROP = "android.media.effect.effects.CropEffect";
+ field public static final String EFFECT_CROSSPROCESS = "android.media.effect.effects.CrossProcessEffect";
+ field public static final String EFFECT_DOCUMENTARY = "android.media.effect.effects.DocumentaryEffect";
+ field public static final String EFFECT_DUOTONE = "android.media.effect.effects.DuotoneEffect";
+ field public static final String EFFECT_FILLLIGHT = "android.media.effect.effects.FillLightEffect";
+ field public static final String EFFECT_FISHEYE = "android.media.effect.effects.FisheyeEffect";
+ field public static final String EFFECT_FLIP = "android.media.effect.effects.FlipEffect";
+ field public static final String EFFECT_GRAIN = "android.media.effect.effects.GrainEffect";
+ field public static final String EFFECT_GRAYSCALE = "android.media.effect.effects.GrayscaleEffect";
+ field public static final String EFFECT_LOMOISH = "android.media.effect.effects.LomoishEffect";
+ field public static final String EFFECT_NEGATIVE = "android.media.effect.effects.NegativeEffect";
+ field public static final String EFFECT_POSTERIZE = "android.media.effect.effects.PosterizeEffect";
+ field public static final String EFFECT_REDEYE = "android.media.effect.effects.RedEyeEffect";
+ field public static final String EFFECT_ROTATE = "android.media.effect.effects.RotateEffect";
+ field public static final String EFFECT_SATURATE = "android.media.effect.effects.SaturateEffect";
+ field public static final String EFFECT_SEPIA = "android.media.effect.effects.SepiaEffect";
+ field public static final String EFFECT_SHARPEN = "android.media.effect.effects.SharpenEffect";
+ field public static final String EFFECT_STRAIGHTEN = "android.media.effect.effects.StraightenEffect";
+ field public static final String EFFECT_TEMPERATURE = "android.media.effect.effects.ColorTemperatureEffect";
+ field public static final String EFFECT_TINT = "android.media.effect.effects.TintEffect";
+ field public static final String EFFECT_VIGNETTE = "android.media.effect.effects.VignetteEffect";
}
- public abstract interface EffectUpdateListener {
- method public abstract void onEffectUpdated(android.media.effect.Effect, java.lang.Object);
+ public interface EffectUpdateListener {
+ method public void onEffectUpdated(android.media.effect.Effect, Object);
}
}
@@ -27062,20 +27170,20 @@
method public boolean isPrivate();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceInfo> CREATOR;
- field public static final java.lang.String PROPERTY_BLUETOOTH_DEVICE = "bluetooth_device";
- field public static final java.lang.String PROPERTY_MANUFACTURER = "manufacturer";
- field public static final java.lang.String PROPERTY_NAME = "name";
- field public static final java.lang.String PROPERTY_PRODUCT = "product";
- field public static final java.lang.String PROPERTY_SERIAL_NUMBER = "serial_number";
- field public static final java.lang.String PROPERTY_USB_DEVICE = "usb_device";
- field public static final java.lang.String PROPERTY_VERSION = "version";
+ field public static final String PROPERTY_BLUETOOTH_DEVICE = "bluetooth_device";
+ field public static final String PROPERTY_MANUFACTURER = "manufacturer";
+ field public static final String PROPERTY_NAME = "name";
+ field public static final String PROPERTY_PRODUCT = "product";
+ field public static final String PROPERTY_SERIAL_NUMBER = "serial_number";
+ field public static final String PROPERTY_USB_DEVICE = "usb_device";
+ field public static final String PROPERTY_VERSION = "version";
field public static final int TYPE_BLUETOOTH = 3; // 0x3
field public static final int TYPE_USB = 1; // 0x1
field public static final int TYPE_VIRTUAL = 2; // 0x2
}
public static final class MidiDeviceInfo.PortInfo {
- method public java.lang.String getName();
+ method public String getName();
method public int getPortNumber();
method public int getType();
field public static final int TYPE_INPUT = 1; // 0x1
@@ -27090,7 +27198,7 @@
method public void onClose();
method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
method public abstract android.media.midi.MidiReceiver[] onGetInputPortReceivers();
- field public static final java.lang.String SERVICE_INTERFACE = "android.media.midi.MidiDeviceService";
+ field public static final String SERVICE_INTERFACE = "android.media.midi.MidiDeviceService";
}
public final class MidiDeviceStatus implements android.os.Parcelable {
@@ -27123,8 +27231,8 @@
method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
}
- public static abstract interface MidiManager.OnDeviceOpenedListener {
- method public abstract void onDeviceOpened(android.media.midi.MidiDevice);
+ public static interface MidiManager.OnDeviceOpenedListener {
+ method public void onDeviceOpened(android.media.midi.MidiDevice);
}
public final class MidiOutputPort extends android.media.midi.MidiSender implements java.io.Closeable {
@@ -27158,20 +27266,20 @@
package android.media.projection {
public final class MediaProjection {
- method public android.hardware.display.VirtualDisplay createVirtualDisplay(java.lang.String, int, int, int, int, android.view.Surface, android.hardware.display.VirtualDisplay.Callback, android.os.Handler);
+ method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, int, @Nullable android.view.Surface, @Nullable android.hardware.display.VirtualDisplay.Callback, @Nullable android.os.Handler);
method public void registerCallback(android.media.projection.MediaProjection.Callback, android.os.Handler);
method public void stop();
method public void unregisterCallback(android.media.projection.MediaProjection.Callback);
}
- public static abstract class MediaProjection.Callback {
+ public abstract static class MediaProjection.Callback {
ctor public MediaProjection.Callback();
method public void onStop();
}
public final class MediaProjectionManager {
method public android.content.Intent createScreenCaptureIntent();
- method public android.media.projection.MediaProjection getMediaProjection(int, android.content.Intent);
+ method public android.media.projection.MediaProjection getMediaProjection(int, @NonNull android.content.Intent);
}
}
@@ -27180,52 +27288,52 @@
public final class ControllerCallbackLink implements android.os.Parcelable {
method public int describeContents();
- method public android.os.IBinder getBinder();
- method public void notifyEvent(java.lang.String, android.os.Bundle);
- method public void notifyExtrasChanged(android.os.Bundle);
- method public void notifyMetadataChanged(android.media.MediaMetadata);
- method public void notifyPlaybackStateChanged(android.media.session.PlaybackState);
- method public void notifyQueueChanged(java.util.List<android.media.session.MediaSession.QueueItem>);
- method public void notifyQueueTitleChanged(java.lang.CharSequence);
+ method @NonNull public android.os.IBinder getBinder();
+ method public void notifyEvent(@NonNull String, @Nullable android.os.Bundle);
+ method public void notifyExtrasChanged(@Nullable android.os.Bundle);
+ method public void notifyMetadataChanged(@Nullable android.media.MediaMetadata);
+ method public void notifyPlaybackStateChanged(@Nullable android.media.session.PlaybackState);
+ method public void notifyQueueChanged(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
+ method public void notifyQueueTitleChanged(@Nullable CharSequence);
method public void notifySessionDestroyed();
- method public void notifyVolumeInfoChanged(android.media.session.MediaController.PlaybackInfo);
+ method public void notifyVolumeInfoChanged(@NonNull android.media.session.MediaController.PlaybackInfo);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.session.ControllerCallbackLink> CREATOR;
}
public final class MediaController {
- ctor public MediaController(android.content.Context, android.media.session.MediaSession.Token);
+ ctor public MediaController(@NonNull android.content.Context, @NonNull android.media.session.MediaSession.Token);
method public void adjustVolume(int, int);
- method public boolean dispatchMediaButtonEvent(android.view.KeyEvent);
- method public android.os.Bundle getExtras();
+ method public boolean dispatchMediaButtonEvent(@NonNull android.view.KeyEvent);
+ method @Nullable public android.os.Bundle getExtras();
method public long getFlags();
- method public android.media.MediaMetadata getMetadata();
- method public java.lang.String getPackageName();
- method public android.media.session.MediaController.PlaybackInfo getPlaybackInfo();
- method public android.media.session.PlaybackState getPlaybackState();
- method public java.util.List<android.media.session.MediaSession.QueueItem> getQueue();
- method public java.lang.CharSequence getQueueTitle();
+ method @Nullable public android.media.MediaMetadata getMetadata();
+ method public String getPackageName();
+ method @Nullable public android.media.session.MediaController.PlaybackInfo getPlaybackInfo();
+ method @Nullable public android.media.session.PlaybackState getPlaybackState();
+ method @Nullable public java.util.List<android.media.session.MediaSession.QueueItem> getQueue();
+ method @Nullable public CharSequence getQueueTitle();
method public int getRatingType();
- method public android.app.PendingIntent getSessionActivity();
- method public android.media.session.MediaSession.Token getSessionToken();
- method public android.media.session.MediaController.TransportControls getTransportControls();
- method public void registerCallback(android.media.session.MediaController.Callback);
- method public void registerCallback(android.media.session.MediaController.Callback, android.os.Handler);
- method public void sendCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
+ method @Nullable public android.app.PendingIntent getSessionActivity();
+ method @NonNull public android.media.session.MediaSession.Token getSessionToken();
+ method @NonNull public android.media.session.MediaController.TransportControls getTransportControls();
+ method public void registerCallback(@NonNull android.media.session.MediaController.Callback);
+ method public void registerCallback(@NonNull android.media.session.MediaController.Callback, @Nullable android.os.Handler);
+ method public void sendCommand(@NonNull String, @Nullable android.os.Bundle, @Nullable android.os.ResultReceiver);
method public void setVolumeTo(int, int);
- method public void unregisterCallback(android.media.session.MediaController.Callback);
+ method public void unregisterCallback(@NonNull android.media.session.MediaController.Callback);
}
- public static abstract class MediaController.Callback {
+ public abstract static class MediaController.Callback {
ctor public MediaController.Callback();
method public void onAudioInfoChanged(android.media.session.MediaController.PlaybackInfo);
- method public void onExtrasChanged(android.os.Bundle);
- method public void onMetadataChanged(android.media.MediaMetadata);
- method public void onPlaybackStateChanged(android.media.session.PlaybackState);
- method public void onQueueChanged(java.util.List<android.media.session.MediaSession.QueueItem>);
- method public void onQueueTitleChanged(java.lang.CharSequence);
+ method public void onExtrasChanged(@Nullable android.os.Bundle);
+ method public void onMetadataChanged(@Nullable android.media.MediaMetadata);
+ method public void onPlaybackStateChanged(@Nullable android.media.session.PlaybackState);
+ method public void onQueueChanged(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
+ method public void onQueueTitleChanged(@Nullable CharSequence);
method public void onSessionDestroyed();
- method public void onSessionEvent(java.lang.String, android.os.Bundle);
+ method public void onSessionEvent(@NonNull String, @Nullable android.os.Bundle);
}
public static final class MediaController.PlaybackInfo implements android.os.Parcelable {
@@ -27245,17 +27353,17 @@
method public void fastForward();
method public void pause();
method public void play();
- method public void playFromMediaId(java.lang.String, android.os.Bundle);
- method public void playFromSearch(java.lang.String, android.os.Bundle);
+ method public void playFromMediaId(String, android.os.Bundle);
+ method public void playFromSearch(String, android.os.Bundle);
method public void playFromUri(android.net.Uri, android.os.Bundle);
method public void prepare();
- method public void prepareFromMediaId(java.lang.String, android.os.Bundle);
- method public void prepareFromSearch(java.lang.String, android.os.Bundle);
+ method public void prepareFromMediaId(String, android.os.Bundle);
+ method public void prepareFromSearch(String, android.os.Bundle);
method public void prepareFromUri(android.net.Uri, android.os.Bundle);
method public void rewind();
method public void seekTo(long);
- method public void sendCustomAction(android.media.session.PlaybackState.CustomAction, android.os.Bundle);
- method public void sendCustomAction(java.lang.String, android.os.Bundle);
+ method public void sendCustomAction(@NonNull android.media.session.PlaybackState.CustomAction, @Nullable android.os.Bundle);
+ method public void sendCustomAction(@NonNull String, @Nullable android.os.Bundle);
method public void setRating(android.media.Rating);
method public void skipToNext();
method public void skipToPrevious();
@@ -27264,49 +27372,49 @@
}
public final class MediaSession {
- ctor public MediaSession(android.content.Context, java.lang.String);
- method public android.media.session.MediaController getController();
- method public android.media.session.MediaSessionManager.RemoteUserInfo getCurrentControllerInfo();
- method public android.media.session.MediaSession.Token getSessionToken();
+ ctor public MediaSession(@NonNull android.content.Context, @NonNull String);
+ method @NonNull public android.media.session.MediaController getController();
+ method @NonNull public android.media.session.MediaSessionManager.RemoteUserInfo getCurrentControllerInfo();
+ method @NonNull public android.media.session.MediaSession.Token getSessionToken();
method public boolean isActive();
method public void release();
- method public void sendSessionEvent(java.lang.String, android.os.Bundle);
+ method public void sendSessionEvent(@NonNull String, @Nullable android.os.Bundle);
method public void setActive(boolean);
- method public void setCallback(android.media.session.MediaSession.Callback);
- method public void setCallback(android.media.session.MediaSession.Callback, android.os.Handler);
- method public void setExtras(android.os.Bundle);
+ method public void setCallback(@Nullable android.media.session.MediaSession.Callback);
+ method public void setCallback(@Nullable android.media.session.MediaSession.Callback, @Nullable android.os.Handler);
+ method public void setExtras(@Nullable android.os.Bundle);
method public void setFlags(int);
- method public void setMediaButtonReceiver(android.app.PendingIntent);
- method public void setMetadata(android.media.MediaMetadata);
- method public void setPlaybackState(android.media.session.PlaybackState);
+ method public void setMediaButtonReceiver(@Nullable android.app.PendingIntent);
+ method public void setMetadata(@Nullable android.media.MediaMetadata);
+ method public void setPlaybackState(@Nullable android.media.session.PlaybackState);
method public void setPlaybackToLocal(android.media.AudioAttributes);
- method public void setPlaybackToRemote(android.media.VolumeProvider);
- method public void setQueue(java.util.List<android.media.session.MediaSession.QueueItem>);
- method public void setQueueTitle(java.lang.CharSequence);
+ method public void setPlaybackToRemote(@NonNull android.media.VolumeProvider);
+ method public void setQueue(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
+ method public void setQueueTitle(@Nullable CharSequence);
method public void setRatingType(int);
- method public void setSessionActivity(android.app.PendingIntent);
- field public static final deprecated int FLAG_HANDLES_MEDIA_BUTTONS = 1; // 0x1
- field public static final deprecated int FLAG_HANDLES_TRANSPORT_CONTROLS = 2; // 0x2
+ method public void setSessionActivity(@Nullable android.app.PendingIntent);
+ field @Deprecated public static final int FLAG_HANDLES_MEDIA_BUTTONS = 1; // 0x1
+ field @Deprecated public static final int FLAG_HANDLES_TRANSPORT_CONTROLS = 2; // 0x2
}
- public static abstract class MediaSession.Callback {
+ public abstract static class MediaSession.Callback {
ctor public MediaSession.Callback();
- method public void onCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
- method public void onCustomAction(java.lang.String, android.os.Bundle);
+ method public void onCommand(@NonNull String, @Nullable android.os.Bundle, @Nullable android.os.ResultReceiver);
+ method public void onCustomAction(@NonNull String, @Nullable android.os.Bundle);
method public void onFastForward();
- method public boolean onMediaButtonEvent(android.content.Intent);
+ method public boolean onMediaButtonEvent(@NonNull android.content.Intent);
method public void onPause();
method public void onPlay();
- method public void onPlayFromMediaId(java.lang.String, android.os.Bundle);
- method public void onPlayFromSearch(java.lang.String, android.os.Bundle);
+ method public void onPlayFromMediaId(String, android.os.Bundle);
+ method public void onPlayFromSearch(String, android.os.Bundle);
method public void onPlayFromUri(android.net.Uri, android.os.Bundle);
method public void onPrepare();
- method public void onPrepareFromMediaId(java.lang.String, android.os.Bundle);
- method public void onPrepareFromSearch(java.lang.String, android.os.Bundle);
+ method public void onPrepareFromMediaId(String, android.os.Bundle);
+ method public void onPrepareFromSearch(String, android.os.Bundle);
method public void onPrepareFromUri(android.net.Uri, android.os.Bundle);
method public void onRewind();
method public void onSeekTo(long);
- method public void onSetRating(android.media.Rating);
+ method public void onSetRating(@NonNull android.media.Rating);
method public void onSkipToNext();
method public void onSkipToPrevious();
method public void onSkipToQueueItem(long);
@@ -27330,21 +27438,21 @@
}
public final class MediaSessionManager {
- method public void addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, android.content.ComponentName);
- method public void addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, android.content.ComponentName, android.os.Handler);
- method public java.util.List<android.media.session.MediaController> getActiveSessions(android.content.ComponentName);
- method public boolean isTrustedForMediaControl(android.media.session.MediaSessionManager.RemoteUserInfo);
- method public void removeOnActiveSessionsChangedListener(android.media.session.MediaSessionManager.OnActiveSessionsChangedListener);
+ method public void addOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, @Nullable android.content.ComponentName);
+ method public void addOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, @Nullable android.content.ComponentName, @Nullable android.os.Handler);
+ method @NonNull public java.util.List<android.media.session.MediaController> getActiveSessions(@Nullable android.content.ComponentName);
+ method public boolean isTrustedForMediaControl(@NonNull android.media.session.MediaSessionManager.RemoteUserInfo);
+ method public void removeOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener);
}
- public static abstract interface MediaSessionManager.OnActiveSessionsChangedListener {
- method public abstract void onActiveSessionsChanged(java.util.List<android.media.session.MediaController>);
+ public static interface MediaSessionManager.OnActiveSessionsChangedListener {
+ method public void onActiveSessionsChanged(@Nullable java.util.List<android.media.session.MediaController>);
}
public static final class MediaSessionManager.RemoteUserInfo {
- ctor public MediaSessionManager.RemoteUserInfo(java.lang.String, int, int);
- ctor public MediaSessionManager.RemoteUserInfo(java.lang.String, int, int, android.os.IBinder);
- method public java.lang.String getPackageName();
+ ctor public MediaSessionManager.RemoteUserInfo(@NonNull String, int, int);
+ ctor public MediaSessionManager.RemoteUserInfo(String, int, int, android.os.IBinder);
+ method public String getPackageName();
method public int getPid();
method public int getUid();
}
@@ -27355,8 +27463,8 @@
method public long getActiveQueueItemId();
method public long getBufferedPosition();
method public java.util.List<android.media.session.PlaybackState.CustomAction> getCustomActions();
- method public java.lang.CharSequence getErrorMessage();
- method public android.os.Bundle getExtras();
+ method public CharSequence getErrorMessage();
+ method @Nullable public android.os.Bundle getExtras();
method public long getLastPositionUpdateTime();
method public float getPlaybackSpeed();
method public long getPosition();
@@ -27399,13 +27507,13 @@
public static final class PlaybackState.Builder {
ctor public PlaybackState.Builder();
ctor public PlaybackState.Builder(android.media.session.PlaybackState);
- method public android.media.session.PlaybackState.Builder addCustomAction(java.lang.String, java.lang.String, int);
+ method public android.media.session.PlaybackState.Builder addCustomAction(String, String, int);
method public android.media.session.PlaybackState.Builder addCustomAction(android.media.session.PlaybackState.CustomAction);
method public android.media.session.PlaybackState build();
method public android.media.session.PlaybackState.Builder setActions(long);
method public android.media.session.PlaybackState.Builder setActiveQueueItemId(long);
method public android.media.session.PlaybackState.Builder setBufferedPosition(long);
- method public android.media.session.PlaybackState.Builder setErrorMessage(java.lang.CharSequence);
+ method public android.media.session.PlaybackState.Builder setErrorMessage(CharSequence);
method public android.media.session.PlaybackState.Builder setExtras(android.os.Bundle);
method public android.media.session.PlaybackState.Builder setState(int, long, float, long);
method public android.media.session.PlaybackState.Builder setState(int, long, float);
@@ -27413,46 +27521,46 @@
public static final class PlaybackState.CustomAction implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getAction();
+ method public String getAction();
method public android.os.Bundle getExtras();
method public int getIcon();
- method public java.lang.CharSequence getName();
+ method public CharSequence getName();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.session.PlaybackState.CustomAction> CREATOR;
}
public static final class PlaybackState.CustomAction.Builder {
- ctor public PlaybackState.CustomAction.Builder(java.lang.String, java.lang.CharSequence, int);
+ ctor public PlaybackState.CustomAction.Builder(String, CharSequence, @DrawableRes int);
method public android.media.session.PlaybackState.CustomAction build();
method public android.media.session.PlaybackState.CustomAction.Builder setExtras(android.os.Bundle);
}
public final class SessionCallbackLink implements android.os.Parcelable {
method public int describeContents();
- method public android.os.IBinder getBinder();
- method public void notifyAdjustVolume(java.lang.String, int, int, android.media.session.ControllerCallbackLink, int);
- method public void notifyCommand(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle, android.os.ResultReceiver);
- method public void notifyCustomAction(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
- method public void notifyFastForward(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
- method public void notifyMediaButton(java.lang.String, int, int, android.content.Intent, int, android.os.ResultReceiver);
- method public void notifyMediaButtonFromController(java.lang.String, int, int, android.media.session.ControllerCallbackLink, android.content.Intent);
- method public void notifyNext(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
- method public void notifyPause(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
- method public void notifyPlay(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
- method public void notifyPlayFromMediaId(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
- method public void notifyPlayFromSearch(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
- method public void notifyPlayFromUri(java.lang.String, int, int, android.media.session.ControllerCallbackLink, android.net.Uri, android.os.Bundle);
- method public void notifyPrepare(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
- method public void notifyPrepareFromMediaId(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
- method public void notifyPrepareFromSearch(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
- method public void notifyPrepareFromUri(java.lang.String, int, int, android.media.session.ControllerCallbackLink, android.net.Uri, android.os.Bundle);
- method public void notifyPrevious(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
- method public void notifyRate(java.lang.String, int, int, android.media.session.ControllerCallbackLink, android.media.Rating);
- method public void notifyRewind(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
- method public void notifySeekTo(java.lang.String, int, int, android.media.session.ControllerCallbackLink, long);
- method public void notifySetVolumeTo(java.lang.String, int, int, android.media.session.ControllerCallbackLink, int);
- method public void notifySkipToTrack(java.lang.String, int, int, android.media.session.ControllerCallbackLink, long);
- method public void notifyStop(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
+ method @NonNull public android.os.IBinder getBinder();
+ method public void notifyAdjustVolume(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, int);
+ method public void notifyCommand(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.ResultReceiver);
+ method public void notifyCustomAction(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull String, @Nullable android.os.Bundle);
+ method public void notifyFastForward(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink);
+ method public void notifyMediaButton(@NonNull String, int, int, @NonNull android.content.Intent, int, @Nullable android.os.ResultReceiver);
+ method public void notifyMediaButtonFromController(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull android.content.Intent);
+ method public void notifyNext(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink);
+ method public void notifyPause(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink);
+ method public void notifyPlay(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink);
+ method public void notifyPlayFromMediaId(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull String, @Nullable android.os.Bundle);
+ method public void notifyPlayFromSearch(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull String, @Nullable android.os.Bundle);
+ method public void notifyPlayFromUri(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull android.net.Uri, @Nullable android.os.Bundle);
+ method public void notifyPrepare(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink);
+ method public void notifyPrepareFromMediaId(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull String, @Nullable android.os.Bundle);
+ method public void notifyPrepareFromSearch(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull String, @Nullable android.os.Bundle);
+ method public void notifyPrepareFromUri(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull android.net.Uri, @Nullable android.os.Bundle);
+ method public void notifyPrevious(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink);
+ method public void notifyRate(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, @NonNull android.media.Rating);
+ method public void notifyRewind(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink);
+ method public void notifySeekTo(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, long);
+ method public void notifySetVolumeTo(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, int);
+ method public void notifySkipToTrack(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink, long);
+ method public void notifyStop(@NonNull String, int, int, @NonNull android.media.session.ControllerCallbackLink);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.session.SessionCallbackLink> CREATOR;
}
@@ -27462,14 +27570,14 @@
package android.media.tv {
public final class TvContentRating {
- method public boolean contains(android.media.tv.TvContentRating);
- method public static android.media.tv.TvContentRating createRating(java.lang.String, java.lang.String, java.lang.String, java.lang.String...);
- method public java.lang.String flattenToString();
- method public java.lang.String getDomain();
- method public java.lang.String getMainRating();
- method public java.lang.String getRatingSystem();
+ method public boolean contains(@NonNull android.media.tv.TvContentRating);
+ method public static android.media.tv.TvContentRating createRating(String, String, String, java.lang.String...);
+ method public String flattenToString();
+ method public String getDomain();
+ method public String getMainRating();
+ method public String getRatingSystem();
method public java.util.List<java.lang.String> getSubRatings();
- method public static android.media.tv.TvContentRating unflattenFromString(java.lang.String);
+ method public static android.media.tv.TvContentRating unflattenFromString(String);
field public static final android.media.tv.TvContentRating UNRATED;
}
@@ -27477,9 +27585,9 @@
method public static android.net.Uri buildChannelLogoUri(long);
method public static android.net.Uri buildChannelLogoUri(android.net.Uri);
method public static android.net.Uri buildChannelUri(long);
- method public static android.net.Uri buildChannelUriForPassthroughInput(java.lang.String);
- method public static android.net.Uri buildChannelsUriForInput(java.lang.String);
- method public static java.lang.String buildInputId(android.content.ComponentName);
+ method public static android.net.Uri buildChannelUriForPassthroughInput(String);
+ method public static android.net.Uri buildChannelsUriForInput(@Nullable String);
+ method public static String buildInputId(android.content.ComponentName);
method public static android.net.Uri buildPreviewProgramUri(long);
method public static android.net.Uri buildPreviewProgramsUriForChannel(long);
method public static android.net.Uri buildPreviewProgramsUriForChannel(android.net.Uri);
@@ -27490,107 +27598,107 @@
method public static android.net.Uri buildProgramsUriForChannel(android.net.Uri, long, long);
method public static android.net.Uri buildRecordedProgramUri(long);
method public static android.net.Uri buildWatchNextProgramUri(long);
- method public static boolean isChannelUri(android.net.Uri);
- method public static boolean isChannelUriForPassthroughInput(android.net.Uri);
- method public static boolean isChannelUriForTunerInput(android.net.Uri);
- method public static boolean isProgramUri(android.net.Uri);
- method public static boolean isRecordedProgramUri(android.net.Uri);
+ method public static boolean isChannelUri(@NonNull android.net.Uri);
+ method public static boolean isChannelUriForPassthroughInput(@NonNull android.net.Uri);
+ method public static boolean isChannelUriForTunerInput(@NonNull android.net.Uri);
+ method public static boolean isProgramUri(@NonNull android.net.Uri);
+ method public static boolean isRecordedProgramUri(@NonNull android.net.Uri);
method public static void requestChannelBrowsable(android.content.Context, long);
- field public static final java.lang.String ACTION_INITIALIZE_PROGRAMS = "android.media.tv.action.INITIALIZE_PROGRAMS";
- field public static final java.lang.String ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT = "android.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT";
- field public static final java.lang.String ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.PREVIEW_PROGRAM_BROWSABLE_DISABLED";
- field public static final java.lang.String ACTION_REQUEST_CHANNEL_BROWSABLE = "android.media.tv.action.REQUEST_CHANNEL_BROWSABLE";
- field public static final java.lang.String ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED";
- field public static final java.lang.String AUTHORITY = "android.media.tv";
- field public static final java.lang.String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID";
- field public static final java.lang.String EXTRA_PREVIEW_PROGRAM_ID = "android.media.tv.extra.PREVIEW_PROGRAM_ID";
- field public static final java.lang.String EXTRA_WATCH_NEXT_PROGRAM_ID = "android.media.tv.extra.WATCH_NEXT_PROGRAM_ID";
+ field public static final String ACTION_INITIALIZE_PROGRAMS = "android.media.tv.action.INITIALIZE_PROGRAMS";
+ field public static final String ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT = "android.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT";
+ field public static final String ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.PREVIEW_PROGRAM_BROWSABLE_DISABLED";
+ field public static final String ACTION_REQUEST_CHANNEL_BROWSABLE = "android.media.tv.action.REQUEST_CHANNEL_BROWSABLE";
+ field public static final String ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED";
+ field public static final String AUTHORITY = "android.media.tv";
+ field public static final String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID";
+ field public static final String EXTRA_PREVIEW_PROGRAM_ID = "android.media.tv.extra.PREVIEW_PROGRAM_ID";
+ field public static final String EXTRA_WATCH_NEXT_PROGRAM_ID = "android.media.tv.extra.WATCH_NEXT_PROGRAM_ID";
}
- public static abstract interface TvContract.BaseTvColumns implements android.provider.BaseColumns {
- field public static final java.lang.String COLUMN_PACKAGE_NAME = "package_name";
+ public static interface TvContract.BaseTvColumns extends android.provider.BaseColumns {
+ field public static final String COLUMN_PACKAGE_NAME = "package_name";
}
public static final class TvContract.Channels implements android.media.tv.TvContract.BaseTvColumns {
- method public static java.lang.String getVideoResolution(java.lang.String);
- field public static final java.lang.String COLUMN_APP_LINK_COLOR = "app_link_color";
- field public static final java.lang.String COLUMN_APP_LINK_ICON_URI = "app_link_icon_uri";
- field public static final java.lang.String COLUMN_APP_LINK_INTENT_URI = "app_link_intent_uri";
- field public static final java.lang.String COLUMN_APP_LINK_POSTER_ART_URI = "app_link_poster_art_uri";
- field public static final java.lang.String COLUMN_APP_LINK_TEXT = "app_link_text";
- field public static final java.lang.String COLUMN_BROWSABLE = "browsable";
- field public static final java.lang.String COLUMN_DESCRIPTION = "description";
- field public static final java.lang.String COLUMN_DISPLAY_NAME = "display_name";
- field public static final java.lang.String COLUMN_DISPLAY_NUMBER = "display_number";
- field public static final java.lang.String COLUMN_INPUT_ID = "input_id";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
- field public static final java.lang.String COLUMN_LOCKED = "locked";
- field public static final java.lang.String COLUMN_NETWORK_AFFILIATION = "network_affiliation";
- field public static final java.lang.String COLUMN_ORIGINAL_NETWORK_ID = "original_network_id";
- field public static final java.lang.String COLUMN_SEARCHABLE = "searchable";
- field public static final java.lang.String COLUMN_SERVICE_ID = "service_id";
- field public static final java.lang.String COLUMN_SERVICE_TYPE = "service_type";
- field public static final java.lang.String COLUMN_TRANSIENT = "transient";
- field public static final java.lang.String COLUMN_TRANSPORT_STREAM_ID = "transport_stream_id";
- field public static final java.lang.String COLUMN_TYPE = "type";
- field public static final java.lang.String COLUMN_VERSION_NUMBER = "version_number";
- field public static final java.lang.String COLUMN_VIDEO_FORMAT = "video_format";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/channel";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/channel";
+ method @Nullable public static String getVideoResolution(String);
+ field public static final String COLUMN_APP_LINK_COLOR = "app_link_color";
+ field public static final String COLUMN_APP_LINK_ICON_URI = "app_link_icon_uri";
+ field public static final String COLUMN_APP_LINK_INTENT_URI = "app_link_intent_uri";
+ field public static final String COLUMN_APP_LINK_POSTER_ART_URI = "app_link_poster_art_uri";
+ field public static final String COLUMN_APP_LINK_TEXT = "app_link_text";
+ field public static final String COLUMN_BROWSABLE = "browsable";
+ field public static final String COLUMN_DESCRIPTION = "description";
+ field public static final String COLUMN_DISPLAY_NAME = "display_name";
+ field public static final String COLUMN_DISPLAY_NUMBER = "display_number";
+ field public static final String COLUMN_INPUT_ID = "input_id";
+ field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+ field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
+ field public static final String COLUMN_LOCKED = "locked";
+ field public static final String COLUMN_NETWORK_AFFILIATION = "network_affiliation";
+ field public static final String COLUMN_ORIGINAL_NETWORK_ID = "original_network_id";
+ field public static final String COLUMN_SEARCHABLE = "searchable";
+ field public static final String COLUMN_SERVICE_ID = "service_id";
+ field public static final String COLUMN_SERVICE_TYPE = "service_type";
+ field public static final String COLUMN_TRANSIENT = "transient";
+ field public static final String COLUMN_TRANSPORT_STREAM_ID = "transport_stream_id";
+ field public static final String COLUMN_TYPE = "type";
+ field public static final String COLUMN_VERSION_NUMBER = "version_number";
+ field public static final String COLUMN_VIDEO_FORMAT = "video_format";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/channel";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/channel";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String SERVICE_TYPE_AUDIO = "SERVICE_TYPE_AUDIO";
- field public static final java.lang.String SERVICE_TYPE_AUDIO_VIDEO = "SERVICE_TYPE_AUDIO_VIDEO";
- field public static final java.lang.String SERVICE_TYPE_OTHER = "SERVICE_TYPE_OTHER";
- field public static final java.lang.String TYPE_1SEG = "TYPE_1SEG";
- field public static final java.lang.String TYPE_ATSC_C = "TYPE_ATSC_C";
- field public static final java.lang.String TYPE_ATSC_M_H = "TYPE_ATSC_M_H";
- field public static final java.lang.String TYPE_ATSC_T = "TYPE_ATSC_T";
- field public static final java.lang.String TYPE_CMMB = "TYPE_CMMB";
- field public static final java.lang.String TYPE_DTMB = "TYPE_DTMB";
- field public static final java.lang.String TYPE_DVB_C = "TYPE_DVB_C";
- field public static final java.lang.String TYPE_DVB_C2 = "TYPE_DVB_C2";
- field public static final java.lang.String TYPE_DVB_H = "TYPE_DVB_H";
- field public static final java.lang.String TYPE_DVB_S = "TYPE_DVB_S";
- field public static final java.lang.String TYPE_DVB_S2 = "TYPE_DVB_S2";
- field public static final java.lang.String TYPE_DVB_SH = "TYPE_DVB_SH";
- field public static final java.lang.String TYPE_DVB_T = "TYPE_DVB_T";
- field public static final java.lang.String TYPE_DVB_T2 = "TYPE_DVB_T2";
- field public static final java.lang.String TYPE_ISDB_C = "TYPE_ISDB_C";
- field public static final java.lang.String TYPE_ISDB_S = "TYPE_ISDB_S";
- field public static final java.lang.String TYPE_ISDB_T = "TYPE_ISDB_T";
- field public static final java.lang.String TYPE_ISDB_TB = "TYPE_ISDB_TB";
- field public static final java.lang.String TYPE_NTSC = "TYPE_NTSC";
- field public static final java.lang.String TYPE_OTHER = "TYPE_OTHER";
- field public static final java.lang.String TYPE_PAL = "TYPE_PAL";
- field public static final java.lang.String TYPE_PREVIEW = "TYPE_PREVIEW";
- field public static final java.lang.String TYPE_SECAM = "TYPE_SECAM";
- field public static final java.lang.String TYPE_S_DMB = "TYPE_S_DMB";
- field public static final java.lang.String TYPE_T_DMB = "TYPE_T_DMB";
- field public static final java.lang.String VIDEO_FORMAT_1080I = "VIDEO_FORMAT_1080I";
- field public static final java.lang.String VIDEO_FORMAT_1080P = "VIDEO_FORMAT_1080P";
- field public static final java.lang.String VIDEO_FORMAT_2160P = "VIDEO_FORMAT_2160P";
- field public static final java.lang.String VIDEO_FORMAT_240P = "VIDEO_FORMAT_240P";
- field public static final java.lang.String VIDEO_FORMAT_360P = "VIDEO_FORMAT_360P";
- field public static final java.lang.String VIDEO_FORMAT_4320P = "VIDEO_FORMAT_4320P";
- field public static final java.lang.String VIDEO_FORMAT_480I = "VIDEO_FORMAT_480I";
- field public static final java.lang.String VIDEO_FORMAT_480P = "VIDEO_FORMAT_480P";
- field public static final java.lang.String VIDEO_FORMAT_576I = "VIDEO_FORMAT_576I";
- field public static final java.lang.String VIDEO_FORMAT_576P = "VIDEO_FORMAT_576P";
- field public static final java.lang.String VIDEO_FORMAT_720P = "VIDEO_FORMAT_720P";
- field public static final java.lang.String VIDEO_RESOLUTION_ED = "VIDEO_RESOLUTION_ED";
- field public static final java.lang.String VIDEO_RESOLUTION_FHD = "VIDEO_RESOLUTION_FHD";
- field public static final java.lang.String VIDEO_RESOLUTION_HD = "VIDEO_RESOLUTION_HD";
- field public static final java.lang.String VIDEO_RESOLUTION_SD = "VIDEO_RESOLUTION_SD";
- field public static final java.lang.String VIDEO_RESOLUTION_UHD = "VIDEO_RESOLUTION_UHD";
+ field public static final String SERVICE_TYPE_AUDIO = "SERVICE_TYPE_AUDIO";
+ field public static final String SERVICE_TYPE_AUDIO_VIDEO = "SERVICE_TYPE_AUDIO_VIDEO";
+ field public static final String SERVICE_TYPE_OTHER = "SERVICE_TYPE_OTHER";
+ field public static final String TYPE_1SEG = "TYPE_1SEG";
+ field public static final String TYPE_ATSC_C = "TYPE_ATSC_C";
+ field public static final String TYPE_ATSC_M_H = "TYPE_ATSC_M_H";
+ field public static final String TYPE_ATSC_T = "TYPE_ATSC_T";
+ field public static final String TYPE_CMMB = "TYPE_CMMB";
+ field public static final String TYPE_DTMB = "TYPE_DTMB";
+ field public static final String TYPE_DVB_C = "TYPE_DVB_C";
+ field public static final String TYPE_DVB_C2 = "TYPE_DVB_C2";
+ field public static final String TYPE_DVB_H = "TYPE_DVB_H";
+ field public static final String TYPE_DVB_S = "TYPE_DVB_S";
+ field public static final String TYPE_DVB_S2 = "TYPE_DVB_S2";
+ field public static final String TYPE_DVB_SH = "TYPE_DVB_SH";
+ field public static final String TYPE_DVB_T = "TYPE_DVB_T";
+ field public static final String TYPE_DVB_T2 = "TYPE_DVB_T2";
+ field public static final String TYPE_ISDB_C = "TYPE_ISDB_C";
+ field public static final String TYPE_ISDB_S = "TYPE_ISDB_S";
+ field public static final String TYPE_ISDB_T = "TYPE_ISDB_T";
+ field public static final String TYPE_ISDB_TB = "TYPE_ISDB_TB";
+ field public static final String TYPE_NTSC = "TYPE_NTSC";
+ field public static final String TYPE_OTHER = "TYPE_OTHER";
+ field public static final String TYPE_PAL = "TYPE_PAL";
+ field public static final String TYPE_PREVIEW = "TYPE_PREVIEW";
+ field public static final String TYPE_SECAM = "TYPE_SECAM";
+ field public static final String TYPE_S_DMB = "TYPE_S_DMB";
+ field public static final String TYPE_T_DMB = "TYPE_T_DMB";
+ field public static final String VIDEO_FORMAT_1080I = "VIDEO_FORMAT_1080I";
+ field public static final String VIDEO_FORMAT_1080P = "VIDEO_FORMAT_1080P";
+ field public static final String VIDEO_FORMAT_2160P = "VIDEO_FORMAT_2160P";
+ field public static final String VIDEO_FORMAT_240P = "VIDEO_FORMAT_240P";
+ field public static final String VIDEO_FORMAT_360P = "VIDEO_FORMAT_360P";
+ field public static final String VIDEO_FORMAT_4320P = "VIDEO_FORMAT_4320P";
+ field public static final String VIDEO_FORMAT_480I = "VIDEO_FORMAT_480I";
+ field public static final String VIDEO_FORMAT_480P = "VIDEO_FORMAT_480P";
+ field public static final String VIDEO_FORMAT_576I = "VIDEO_FORMAT_576I";
+ field public static final String VIDEO_FORMAT_576P = "VIDEO_FORMAT_576P";
+ field public static final String VIDEO_FORMAT_720P = "VIDEO_FORMAT_720P";
+ field public static final String VIDEO_RESOLUTION_ED = "VIDEO_RESOLUTION_ED";
+ field public static final String VIDEO_RESOLUTION_FHD = "VIDEO_RESOLUTION_FHD";
+ field public static final String VIDEO_RESOLUTION_HD = "VIDEO_RESOLUTION_HD";
+ field public static final String VIDEO_RESOLUTION_SD = "VIDEO_RESOLUTION_SD";
+ field public static final String VIDEO_RESOLUTION_UHD = "VIDEO_RESOLUTION_UHD";
}
public static final class TvContract.Channels.Logo {
- field public static final java.lang.String CONTENT_DIRECTORY = "logo";
+ field public static final String CONTENT_DIRECTORY = "logo";
}
public static final class TvContract.PreviewPrograms implements android.media.tv.TvContract.BaseTvColumns {
@@ -27602,55 +27710,55 @@
field public static final int AVAILABILITY_AVAILABLE = 0; // 0x0
field public static final int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; // 0x1
field public static final int AVAILABILITY_PAID_CONTENT = 2; // 0x2
- field public static final java.lang.String COLUMN_AUDIO_LANGUAGE = "audio_language";
- field public static final java.lang.String COLUMN_AUTHOR = "author";
- field public static final java.lang.String COLUMN_AVAILABILITY = "availability";
- field public static final java.lang.String COLUMN_BROWSABLE = "browsable";
- field public static final java.lang.String COLUMN_CANONICAL_GENRE = "canonical_genre";
- field public static final java.lang.String COLUMN_CHANNEL_ID = "channel_id";
- field public static final java.lang.String COLUMN_CONTENT_ID = "content_id";
- field public static final java.lang.String COLUMN_CONTENT_RATING = "content_rating";
- field public static final java.lang.String COLUMN_DURATION_MILLIS = "duration_millis";
- field public static final java.lang.String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
- field public static final java.lang.String COLUMN_EPISODE_TITLE = "episode_title";
- field public static final java.lang.String COLUMN_INTENT_URI = "intent_uri";
- field public static final java.lang.String COLUMN_INTERACTION_COUNT = "interaction_count";
- field public static final java.lang.String COLUMN_INTERACTION_TYPE = "interaction_type";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
- field public static final java.lang.String COLUMN_ITEM_COUNT = "item_count";
- field public static final java.lang.String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
- field public static final java.lang.String COLUMN_LIVE = "live";
- field public static final java.lang.String COLUMN_LOGO_URI = "logo_uri";
- field public static final java.lang.String COLUMN_LONG_DESCRIPTION = "long_description";
- field public static final java.lang.String COLUMN_OFFER_PRICE = "offer_price";
- field public static final java.lang.String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
- field public static final java.lang.String COLUMN_POSTER_ART_URI = "poster_art_uri";
- field public static final java.lang.String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
- field public static final java.lang.String COLUMN_RELEASE_DATE = "release_date";
- field public static final java.lang.String COLUMN_REVIEW_RATING = "review_rating";
- field public static final java.lang.String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
- field public static final java.lang.String COLUMN_SEARCHABLE = "searchable";
- field public static final java.lang.String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
- field public static final java.lang.String COLUMN_SEASON_TITLE = "season_title";
- field public static final java.lang.String COLUMN_SERIES_ID = "series_id";
- field public static final java.lang.String COLUMN_SHORT_DESCRIPTION = "short_description";
- field public static final java.lang.String COLUMN_STARTING_PRICE = "starting_price";
- field public static final java.lang.String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
- field public static final java.lang.String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
- field public static final java.lang.String COLUMN_TITLE = "title";
- field public static final java.lang.String COLUMN_TRANSIENT = "transient";
- field public static final java.lang.String COLUMN_TYPE = "type";
- field public static final java.lang.String COLUMN_VERSION_NUMBER = "version_number";
- field public static final java.lang.String COLUMN_VIDEO_HEIGHT = "video_height";
- field public static final java.lang.String COLUMN_VIDEO_WIDTH = "video_width";
- field public static final java.lang.String COLUMN_WEIGHT = "weight";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/preview_program";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/preview_program";
+ field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
+ field public static final String COLUMN_AUTHOR = "author";
+ field public static final String COLUMN_AVAILABILITY = "availability";
+ field public static final String COLUMN_BROWSABLE = "browsable";
+ field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
+ field public static final String COLUMN_CHANNEL_ID = "channel_id";
+ field public static final String COLUMN_CONTENT_ID = "content_id";
+ field public static final String COLUMN_CONTENT_RATING = "content_rating";
+ field public static final String COLUMN_DURATION_MILLIS = "duration_millis";
+ field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
+ field public static final String COLUMN_EPISODE_TITLE = "episode_title";
+ field public static final String COLUMN_INTENT_URI = "intent_uri";
+ field public static final String COLUMN_INTERACTION_COUNT = "interaction_count";
+ field public static final String COLUMN_INTERACTION_TYPE = "interaction_type";
+ field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+ field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
+ field public static final String COLUMN_ITEM_COUNT = "item_count";
+ field public static final String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
+ field public static final String COLUMN_LIVE = "live";
+ field public static final String COLUMN_LOGO_URI = "logo_uri";
+ field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
+ field public static final String COLUMN_OFFER_PRICE = "offer_price";
+ field public static final String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
+ field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
+ field public static final String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
+ field public static final String COLUMN_RELEASE_DATE = "release_date";
+ field public static final String COLUMN_REVIEW_RATING = "review_rating";
+ field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
+ field public static final String COLUMN_SEARCHABLE = "searchable";
+ field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
+ field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
+ field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+ field public static final String COLUMN_STARTING_PRICE = "starting_price";
+ field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
+ field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
+ field public static final String COLUMN_TITLE = "title";
+ field public static final String COLUMN_TRANSIENT = "transient";
+ field public static final String COLUMN_TYPE = "type";
+ field public static final String COLUMN_VERSION_NUMBER = "version_number";
+ field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
+ field public static final String COLUMN_VIDEO_WIDTH = "video_width";
+ field public static final String COLUMN_WEIGHT = "weight";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/preview_program";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/preview_program";
field public static final android.net.Uri CONTENT_URI;
field public static final int INTERACTION_TYPE_FANS = 3; // 0x3
field public static final int INTERACTION_TYPE_FOLLOWERS = 2; // 0x2
@@ -27677,39 +27785,39 @@
}
public static final class TvContract.Programs implements android.media.tv.TvContract.BaseTvColumns {
- field public static final java.lang.String COLUMN_AUDIO_LANGUAGE = "audio_language";
- field public static final java.lang.String COLUMN_BROADCAST_GENRE = "broadcast_genre";
- field public static final java.lang.String COLUMN_CANONICAL_GENRE = "canonical_genre";
- field public static final java.lang.String COLUMN_CHANNEL_ID = "channel_id";
- field public static final java.lang.String COLUMN_CONTENT_RATING = "content_rating";
- field public static final java.lang.String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
- field public static final java.lang.String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
- field public static final deprecated java.lang.String COLUMN_EPISODE_NUMBER = "episode_number";
- field public static final java.lang.String COLUMN_EPISODE_TITLE = "episode_title";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
- field public static final java.lang.String COLUMN_LONG_DESCRIPTION = "long_description";
- field public static final java.lang.String COLUMN_POSTER_ART_URI = "poster_art_uri";
- field public static final java.lang.String COLUMN_RECORDING_PROHIBITED = "recording_prohibited";
- field public static final java.lang.String COLUMN_REVIEW_RATING = "review_rating";
- field public static final java.lang.String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
- field public static final java.lang.String COLUMN_SEARCHABLE = "searchable";
- field public static final java.lang.String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
- field public static final deprecated java.lang.String COLUMN_SEASON_NUMBER = "season_number";
- field public static final java.lang.String COLUMN_SEASON_TITLE = "season_title";
- field public static final java.lang.String COLUMN_SERIES_ID = "series_id";
- field public static final java.lang.String COLUMN_SHORT_DESCRIPTION = "short_description";
- field public static final java.lang.String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
- field public static final java.lang.String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
- field public static final java.lang.String COLUMN_TITLE = "title";
- field public static final java.lang.String COLUMN_VERSION_NUMBER = "version_number";
- field public static final java.lang.String COLUMN_VIDEO_HEIGHT = "video_height";
- field public static final java.lang.String COLUMN_VIDEO_WIDTH = "video_width";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/program";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/program";
+ field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
+ field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
+ field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
+ field public static final String COLUMN_CHANNEL_ID = "channel_id";
+ field public static final String COLUMN_CONTENT_RATING = "content_rating";
+ field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
+ field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
+ field @Deprecated public static final String COLUMN_EPISODE_NUMBER = "episode_number";
+ field public static final String COLUMN_EPISODE_TITLE = "episode_title";
+ field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+ field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
+ field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
+ field public static final String COLUMN_RECORDING_PROHIBITED = "recording_prohibited";
+ field public static final String COLUMN_REVIEW_RATING = "review_rating";
+ field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
+ field public static final String COLUMN_SEARCHABLE = "searchable";
+ field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
+ field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
+ field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
+ field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+ field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
+ field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
+ field public static final String COLUMN_TITLE = "title";
+ field public static final String COLUMN_VERSION_NUMBER = "version_number";
+ field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
+ field public static final String COLUMN_VIDEO_WIDTH = "video_width";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/program";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/program";
field public static final android.net.Uri CONTENT_URI;
field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
@@ -27717,64 +27825,64 @@
}
public static final class TvContract.Programs.Genres {
- method public static java.lang.String[] decode(java.lang.String);
- method public static java.lang.String encode(java.lang.String...);
- method public static boolean isCanonical(java.lang.String);
- field public static final java.lang.String ANIMAL_WILDLIFE = "ANIMAL_WILDLIFE";
- field public static final java.lang.String ARTS = "ARTS";
- field public static final java.lang.String COMEDY = "COMEDY";
- field public static final java.lang.String DRAMA = "DRAMA";
- field public static final java.lang.String EDUCATION = "EDUCATION";
- field public static final java.lang.String ENTERTAINMENT = "ENTERTAINMENT";
- field public static final java.lang.String FAMILY_KIDS = "FAMILY_KIDS";
- field public static final java.lang.String GAMING = "GAMING";
- field public static final java.lang.String LIFE_STYLE = "LIFE_STYLE";
- field public static final java.lang.String MOVIES = "MOVIES";
- field public static final java.lang.String MUSIC = "MUSIC";
- field public static final java.lang.String NEWS = "NEWS";
- field public static final java.lang.String PREMIER = "PREMIER";
- field public static final java.lang.String SHOPPING = "SHOPPING";
- field public static final java.lang.String SPORTS = "SPORTS";
- field public static final java.lang.String TECH_SCIENCE = "TECH_SCIENCE";
- field public static final java.lang.String TRAVEL = "TRAVEL";
+ method public static String[] decode(@NonNull String);
+ method public static String encode(@NonNull java.lang.String...);
+ method public static boolean isCanonical(String);
+ field public static final String ANIMAL_WILDLIFE = "ANIMAL_WILDLIFE";
+ field public static final String ARTS = "ARTS";
+ field public static final String COMEDY = "COMEDY";
+ field public static final String DRAMA = "DRAMA";
+ field public static final String EDUCATION = "EDUCATION";
+ field public static final String ENTERTAINMENT = "ENTERTAINMENT";
+ field public static final String FAMILY_KIDS = "FAMILY_KIDS";
+ field public static final String GAMING = "GAMING";
+ field public static final String LIFE_STYLE = "LIFE_STYLE";
+ field public static final String MOVIES = "MOVIES";
+ field public static final String MUSIC = "MUSIC";
+ field public static final String NEWS = "NEWS";
+ field public static final String PREMIER = "PREMIER";
+ field public static final String SHOPPING = "SHOPPING";
+ field public static final String SPORTS = "SPORTS";
+ field public static final String TECH_SCIENCE = "TECH_SCIENCE";
+ field public static final String TRAVEL = "TRAVEL";
}
public static final class TvContract.RecordedPrograms implements android.media.tv.TvContract.BaseTvColumns {
- field public static final java.lang.String COLUMN_AUDIO_LANGUAGE = "audio_language";
- field public static final java.lang.String COLUMN_BROADCAST_GENRE = "broadcast_genre";
- field public static final java.lang.String COLUMN_CANONICAL_GENRE = "canonical_genre";
- field public static final java.lang.String COLUMN_CHANNEL_ID = "channel_id";
- field public static final java.lang.String COLUMN_CONTENT_RATING = "content_rating";
- field public static final java.lang.String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
- field public static final java.lang.String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
- field public static final java.lang.String COLUMN_EPISODE_TITLE = "episode_title";
- field public static final java.lang.String COLUMN_INPUT_ID = "input_id";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
- field public static final java.lang.String COLUMN_LONG_DESCRIPTION = "long_description";
- field public static final java.lang.String COLUMN_POSTER_ART_URI = "poster_art_uri";
- field public static final java.lang.String COLUMN_RECORDING_DATA_BYTES = "recording_data_bytes";
- field public static final java.lang.String COLUMN_RECORDING_DATA_URI = "recording_data_uri";
- field public static final java.lang.String COLUMN_RECORDING_DURATION_MILLIS = "recording_duration_millis";
- field public static final java.lang.String COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS = "recording_expire_time_utc_millis";
- field public static final java.lang.String COLUMN_REVIEW_RATING = "review_rating";
- field public static final java.lang.String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
- field public static final java.lang.String COLUMN_SEARCHABLE = "searchable";
- field public static final java.lang.String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
- field public static final java.lang.String COLUMN_SEASON_TITLE = "season_title";
- field public static final java.lang.String COLUMN_SERIES_ID = "series_id";
- field public static final java.lang.String COLUMN_SHORT_DESCRIPTION = "short_description";
- field public static final java.lang.String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
- field public static final java.lang.String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
- field public static final java.lang.String COLUMN_TITLE = "title";
- field public static final java.lang.String COLUMN_VERSION_NUMBER = "version_number";
- field public static final java.lang.String COLUMN_VIDEO_HEIGHT = "video_height";
- field public static final java.lang.String COLUMN_VIDEO_WIDTH = "video_width";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/recorded_program";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/recorded_program";
+ field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
+ field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
+ field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
+ field public static final String COLUMN_CHANNEL_ID = "channel_id";
+ field public static final String COLUMN_CONTENT_RATING = "content_rating";
+ field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
+ field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
+ field public static final String COLUMN_EPISODE_TITLE = "episode_title";
+ field public static final String COLUMN_INPUT_ID = "input_id";
+ field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+ field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
+ field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
+ field public static final String COLUMN_RECORDING_DATA_BYTES = "recording_data_bytes";
+ field public static final String COLUMN_RECORDING_DATA_URI = "recording_data_uri";
+ field public static final String COLUMN_RECORDING_DURATION_MILLIS = "recording_duration_millis";
+ field public static final String COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS = "recording_expire_time_utc_millis";
+ field public static final String COLUMN_REVIEW_RATING = "review_rating";
+ field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
+ field public static final String COLUMN_SEARCHABLE = "searchable";
+ field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
+ field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
+ field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+ field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
+ field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
+ field public static final String COLUMN_TITLE = "title";
+ field public static final String COLUMN_VERSION_NUMBER = "version_number";
+ field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
+ field public static final String COLUMN_VIDEO_WIDTH = "video_width";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/recorded_program";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/recorded_program";
field public static final android.net.Uri CONTENT_URI;
field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
@@ -27790,55 +27898,55 @@
field public static final int AVAILABILITY_AVAILABLE = 0; // 0x0
field public static final int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; // 0x1
field public static final int AVAILABILITY_PAID_CONTENT = 2; // 0x2
- field public static final java.lang.String COLUMN_AUDIO_LANGUAGE = "audio_language";
- field public static final java.lang.String COLUMN_AUTHOR = "author";
- field public static final java.lang.String COLUMN_AVAILABILITY = "availability";
- field public static final java.lang.String COLUMN_BROWSABLE = "browsable";
- field public static final java.lang.String COLUMN_CANONICAL_GENRE = "canonical_genre";
- field public static final java.lang.String COLUMN_CONTENT_ID = "content_id";
- field public static final java.lang.String COLUMN_CONTENT_RATING = "content_rating";
- field public static final java.lang.String COLUMN_DURATION_MILLIS = "duration_millis";
- field public static final java.lang.String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
- field public static final java.lang.String COLUMN_EPISODE_TITLE = "episode_title";
- field public static final java.lang.String COLUMN_INTENT_URI = "intent_uri";
- field public static final java.lang.String COLUMN_INTERACTION_COUNT = "interaction_count";
- field public static final java.lang.String COLUMN_INTERACTION_TYPE = "interaction_type";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
- field public static final java.lang.String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
- field public static final java.lang.String COLUMN_ITEM_COUNT = "item_count";
- field public static final java.lang.String COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS = "last_engagement_time_utc_millis";
- field public static final java.lang.String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
- field public static final java.lang.String COLUMN_LIVE = "live";
- field public static final java.lang.String COLUMN_LOGO_URI = "logo_uri";
- field public static final java.lang.String COLUMN_LONG_DESCRIPTION = "long_description";
- field public static final java.lang.String COLUMN_OFFER_PRICE = "offer_price";
- field public static final java.lang.String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
- field public static final java.lang.String COLUMN_POSTER_ART_URI = "poster_art_uri";
- field public static final java.lang.String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
- field public static final java.lang.String COLUMN_RELEASE_DATE = "release_date";
- field public static final java.lang.String COLUMN_REVIEW_RATING = "review_rating";
- field public static final java.lang.String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
- field public static final java.lang.String COLUMN_SEARCHABLE = "searchable";
- field public static final java.lang.String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
- field public static final java.lang.String COLUMN_SEASON_TITLE = "season_title";
- field public static final java.lang.String COLUMN_SERIES_ID = "series_id";
- field public static final java.lang.String COLUMN_SHORT_DESCRIPTION = "short_description";
- field public static final java.lang.String COLUMN_STARTING_PRICE = "starting_price";
- field public static final java.lang.String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
- field public static final java.lang.String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
- field public static final java.lang.String COLUMN_TITLE = "title";
- field public static final java.lang.String COLUMN_TRANSIENT = "transient";
- field public static final java.lang.String COLUMN_TYPE = "type";
- field public static final java.lang.String COLUMN_VERSION_NUMBER = "version_number";
- field public static final java.lang.String COLUMN_VIDEO_HEIGHT = "video_height";
- field public static final java.lang.String COLUMN_VIDEO_WIDTH = "video_width";
- field public static final java.lang.String COLUMN_WATCH_NEXT_TYPE = "watch_next_type";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watch_next_program";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/watch_next_program";
+ field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
+ field public static final String COLUMN_AUTHOR = "author";
+ field public static final String COLUMN_AVAILABILITY = "availability";
+ field public static final String COLUMN_BROWSABLE = "browsable";
+ field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
+ field public static final String COLUMN_CONTENT_ID = "content_id";
+ field public static final String COLUMN_CONTENT_RATING = "content_rating";
+ field public static final String COLUMN_DURATION_MILLIS = "duration_millis";
+ field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
+ field public static final String COLUMN_EPISODE_TITLE = "episode_title";
+ field public static final String COLUMN_INTENT_URI = "intent_uri";
+ field public static final String COLUMN_INTERACTION_COUNT = "interaction_count";
+ field public static final String COLUMN_INTERACTION_TYPE = "interaction_type";
+ field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+ field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+ field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
+ field public static final String COLUMN_ITEM_COUNT = "item_count";
+ field public static final String COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS = "last_engagement_time_utc_millis";
+ field public static final String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
+ field public static final String COLUMN_LIVE = "live";
+ field public static final String COLUMN_LOGO_URI = "logo_uri";
+ field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
+ field public static final String COLUMN_OFFER_PRICE = "offer_price";
+ field public static final String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
+ field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
+ field public static final String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
+ field public static final String COLUMN_RELEASE_DATE = "release_date";
+ field public static final String COLUMN_REVIEW_RATING = "review_rating";
+ field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
+ field public static final String COLUMN_SEARCHABLE = "searchable";
+ field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
+ field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
+ field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+ field public static final String COLUMN_STARTING_PRICE = "starting_price";
+ field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
+ field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
+ field public static final String COLUMN_TITLE = "title";
+ field public static final String COLUMN_TRANSIENT = "transient";
+ field public static final String COLUMN_TYPE = "type";
+ field public static final String COLUMN_VERSION_NUMBER = "version_number";
+ field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
+ field public static final String COLUMN_VIDEO_WIDTH = "video_width";
+ field public static final String COLUMN_WATCH_NEXT_TYPE = "watch_next_type";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watch_next_program";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watch_next_program";
field public static final android.net.Uri CONTENT_URI;
field public static final int INTERACTION_TYPE_FANS = 3; // 0x3
field public static final int INTERACTION_TYPE_FOLLOWERS = 2; // 0x2
@@ -27870,23 +27978,23 @@
public final class TvInputInfo implements android.os.Parcelable {
method public boolean canRecord();
- method public deprecated android.content.Intent createSettingsIntent();
+ method @Deprecated public android.content.Intent createSettingsIntent();
method public android.content.Intent createSetupIntent();
method public int describeContents();
method public android.os.Bundle getExtras();
- method public java.lang.String getId();
- method public java.lang.String getParentId();
+ method public String getId();
+ method public String getParentId();
method public android.content.pm.ServiceInfo getServiceInfo();
method public int getTunerCount();
method public int getType();
method public boolean isHidden(android.content.Context);
method public boolean isPassthroughInput();
- method public java.lang.CharSequence loadCustomLabel(android.content.Context);
- method public android.graphics.drawable.Drawable loadIcon(android.content.Context);
- method public java.lang.CharSequence loadLabel(android.content.Context);
- method public void writeToParcel(android.os.Parcel, int);
+ method public CharSequence loadCustomLabel(android.content.Context);
+ method public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context);
+ method public CharSequence loadLabel(@NonNull android.content.Context);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.tv.TvInputInfo> CREATOR;
- field public static final java.lang.String EXTRA_INPUT_ID = "android.media.tv.extra.INPUT_ID";
+ field public static final String EXTRA_INPUT_ID = "android.media.tv.extra.INPUT_ID";
field public static final int TYPE_COMPONENT = 1004; // 0x3ec
field public static final int TYPE_COMPOSITE = 1001; // 0x3e9
field public static final int TYPE_DISPLAY_PORT = 1008; // 0x3f0
@@ -27909,23 +28017,23 @@
public final class TvInputManager {
method public java.util.List<android.media.tv.TvContentRating> getBlockedRatings();
- method public int getInputState(java.lang.String);
- method public android.media.tv.TvInputInfo getTvInputInfo(java.lang.String);
+ method public int getInputState(@NonNull String);
+ method @Nullable public android.media.tv.TvInputInfo getTvInputInfo(@NonNull String);
method public java.util.List<android.media.tv.TvInputInfo> getTvInputList();
method public boolean isParentalControlsEnabled();
- method public boolean isRatingBlocked(android.media.tv.TvContentRating);
- method public void registerCallback(android.media.tv.TvInputManager.TvInputCallback, android.os.Handler);
- method public void unregisterCallback(android.media.tv.TvInputManager.TvInputCallback);
- method public void updateTvInputInfo(android.media.tv.TvInputInfo);
- field public static final java.lang.String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.action.BLOCKED_RATINGS_CHANGED";
- field public static final java.lang.String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED";
- field public static final java.lang.String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS";
- field public static final java.lang.String ACTION_SETUP_INPUTS = "android.media.tv.action.SETUP_INPUTS";
- field public static final java.lang.String ACTION_VIEW_RECORDING_SCHEDULES = "android.media.tv.action.VIEW_RECORDING_SCHEDULES";
+ method public boolean isRatingBlocked(@NonNull android.media.tv.TvContentRating);
+ method public void registerCallback(@NonNull android.media.tv.TvInputManager.TvInputCallback, @NonNull android.os.Handler);
+ method public void unregisterCallback(@NonNull android.media.tv.TvInputManager.TvInputCallback);
+ method public void updateTvInputInfo(@NonNull android.media.tv.TvInputInfo);
+ field public static final String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.action.BLOCKED_RATINGS_CHANGED";
+ field public static final String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED";
+ field public static final String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS";
+ field public static final String ACTION_SETUP_INPUTS = "android.media.tv.action.SETUP_INPUTS";
+ field public static final String ACTION_VIEW_RECORDING_SCHEDULES = "android.media.tv.action.VIEW_RECORDING_SCHEDULES";
field public static final int INPUT_STATE_CONNECTED = 0; // 0x0
field public static final int INPUT_STATE_CONNECTED_STANDBY = 1; // 0x1
field public static final int INPUT_STATE_DISCONNECTED = 2; // 0x2
- field public static final java.lang.String META_DATA_CONTENT_RATING_SYSTEMS = "android.media.tv.metadata.CONTENT_RATING_SYSTEMS";
+ field public static final String META_DATA_CONTENT_RATING_SYSTEMS = "android.media.tv.metadata.CONTENT_RATING_SYSTEMS";
field public static final int RECORDING_ERROR_INSUFFICIENT_SPACE = 1; // 0x1
field public static final int RECORDING_ERROR_RESOURCE_BUSY = 2; // 0x2
field public static final int RECORDING_ERROR_UNKNOWN = 0; // 0x0
@@ -27941,57 +28049,57 @@
field public static final int VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL = 2; // 0x2
}
- public static abstract class TvInputManager.TvInputCallback {
+ public abstract static class TvInputManager.TvInputCallback {
ctor public TvInputManager.TvInputCallback();
- method public void onInputAdded(java.lang.String);
- method public void onInputRemoved(java.lang.String);
- method public void onInputStateChanged(java.lang.String, int);
- method public void onInputUpdated(java.lang.String);
+ method public void onInputAdded(String);
+ method public void onInputRemoved(String);
+ method public void onInputStateChanged(String, int);
+ method public void onInputUpdated(String);
method public void onTvInputInfoUpdated(android.media.tv.TvInputInfo);
}
public abstract class TvInputService extends android.app.Service {
ctor public TvInputService();
method public final android.os.IBinder onBind(android.content.Intent);
- method public android.media.tv.TvInputService.RecordingSession onCreateRecordingSession(java.lang.String);
- method public abstract android.media.tv.TvInputService.Session onCreateSession(java.lang.String);
- field public static final java.lang.String SERVICE_INTERFACE = "android.media.tv.TvInputService";
- field public static final java.lang.String SERVICE_META_DATA = "android.media.tv.input";
+ method @Nullable public android.media.tv.TvInputService.RecordingSession onCreateRecordingSession(String);
+ method @Nullable public abstract android.media.tv.TvInputService.Session onCreateSession(String);
+ field public static final String SERVICE_INTERFACE = "android.media.tv.TvInputService";
+ field public static final String SERVICE_META_DATA = "android.media.tv.input";
}
- public static abstract class TvInputService.HardwareSession extends android.media.tv.TvInputService.Session {
+ public abstract static class TvInputService.HardwareSession extends android.media.tv.TvInputService.Session {
ctor public TvInputService.HardwareSession(android.content.Context);
- method public abstract java.lang.String getHardwareInputId();
+ method public abstract String getHardwareInputId();
method public void onHardwareVideoAvailable();
method public void onHardwareVideoUnavailable(int);
method public final boolean onSetSurface(android.view.Surface);
}
- public static abstract class TvInputService.RecordingSession {
+ public abstract static class TvInputService.RecordingSession {
ctor public TvInputService.RecordingSession(android.content.Context);
method public void notifyError(int);
method public void notifyRecordingStopped(android.net.Uri);
method public void notifyTuned(android.net.Uri);
- method public void onAppPrivateCommand(java.lang.String, android.os.Bundle);
+ method public void onAppPrivateCommand(@NonNull String, android.os.Bundle);
method public abstract void onRelease();
- method public abstract void onStartRecording(android.net.Uri);
+ method public abstract void onStartRecording(@Nullable android.net.Uri);
method public abstract void onStopRecording();
method public abstract void onTune(android.net.Uri);
method public void onTune(android.net.Uri, android.os.Bundle);
}
- public static abstract class TvInputService.Session implements android.view.KeyEvent.Callback {
+ public abstract static class TvInputService.Session implements android.view.KeyEvent.Callback {
ctor public TvInputService.Session(android.content.Context);
method public void layoutSurface(int, int, int, int);
method public void notifyChannelRetuned(android.net.Uri);
method public void notifyContentAllowed();
- method public void notifyContentBlocked(android.media.tv.TvContentRating);
+ method public void notifyContentBlocked(@NonNull android.media.tv.TvContentRating);
method public void notifyTimeShiftStatusChanged(int);
- method public void notifyTrackSelected(int, java.lang.String);
+ method public void notifyTrackSelected(int, String);
method public void notifyTracksChanged(java.util.List<android.media.tv.TvTrackInfo>);
method public void notifyVideoAvailable();
method public void notifyVideoUnavailable(int);
- method public void onAppPrivateCommand(java.lang.String, android.os.Bundle);
+ method public void onAppPrivateCommand(@NonNull String, android.os.Bundle);
method public android.view.View onCreateOverlayView();
method public boolean onGenericMotionEvent(android.view.MotionEvent);
method public boolean onKeyDown(int, android.view.KeyEvent);
@@ -28000,10 +28108,10 @@
method public boolean onKeyUp(int, android.view.KeyEvent);
method public void onOverlayViewSizeChanged(int, int);
method public abstract void onRelease();
- method public boolean onSelectTrack(int, java.lang.String);
+ method public boolean onSelectTrack(int, @Nullable String);
method public abstract void onSetCaptionEnabled(boolean);
- method public abstract void onSetStreamVolume(float);
- method public abstract boolean onSetSurface(android.view.Surface);
+ method public abstract void onSetStreamVolume(@FloatRange(from=0.0, to=1.0) float);
+ method public abstract boolean onSetSurface(@Nullable android.view.Surface);
method public void onSurfaceChanged(int, int, int);
method public long onTimeShiftGetCurrentPosition();
method public long onTimeShiftGetStartPosition();
@@ -28021,19 +28129,19 @@
}
public class TvRecordingClient {
- ctor public TvRecordingClient(android.content.Context, java.lang.String, android.media.tv.TvRecordingClient.RecordingCallback, android.os.Handler);
+ ctor public TvRecordingClient(android.content.Context, String, @NonNull android.media.tv.TvRecordingClient.RecordingCallback, android.os.Handler);
method public void release();
- method public void sendAppPrivateCommand(java.lang.String, android.os.Bundle);
- method public void startRecording(android.net.Uri);
+ method public void sendAppPrivateCommand(@NonNull String, android.os.Bundle);
+ method public void startRecording(@Nullable android.net.Uri);
method public void stopRecording();
- method public void tune(java.lang.String, android.net.Uri);
- method public void tune(java.lang.String, android.net.Uri, android.os.Bundle);
+ method public void tune(String, android.net.Uri);
+ method public void tune(String, android.net.Uri, android.os.Bundle);
}
- public static abstract class TvRecordingClient.RecordingCallback {
+ public abstract static class TvRecordingClient.RecordingCallback {
ctor public TvRecordingClient.RecordingCallback();
- method public void onConnectionFailed(java.lang.String);
- method public void onDisconnected(java.lang.String);
+ method public void onConnectionFailed(String);
+ method public void onDisconnected(String);
method public void onError(int);
method public void onRecordingStopped(android.net.Uri);
method public void onTuned(android.net.Uri);
@@ -28043,10 +28151,10 @@
method public int describeContents();
method public int getAudioChannelCount();
method public int getAudioSampleRate();
- method public java.lang.CharSequence getDescription();
+ method public CharSequence getDescription();
method public android.os.Bundle getExtra();
- method public java.lang.String getId();
- method public java.lang.String getLanguage();
+ method public String getId();
+ method public String getLanguage();
method public int getType();
method public byte getVideoActiveFormatDescription();
method public float getVideoFrameRate();
@@ -28061,13 +28169,13 @@
}
public static final class TvTrackInfo.Builder {
- ctor public TvTrackInfo.Builder(int, java.lang.String);
+ ctor public TvTrackInfo.Builder(int, @NonNull String);
method public android.media.tv.TvTrackInfo build();
method public android.media.tv.TvTrackInfo.Builder setAudioChannelCount(int);
method public android.media.tv.TvTrackInfo.Builder setAudioSampleRate(int);
- method public android.media.tv.TvTrackInfo.Builder setDescription(java.lang.CharSequence);
+ method public android.media.tv.TvTrackInfo.Builder setDescription(CharSequence);
method public android.media.tv.TvTrackInfo.Builder setExtra(android.os.Bundle);
- method public android.media.tv.TvTrackInfo.Builder setLanguage(java.lang.String);
+ method public android.media.tv.TvTrackInfo.Builder setLanguage(String);
method public android.media.tv.TvTrackInfo.Builder setVideoActiveFormatDescription(byte);
method public android.media.tv.TvTrackInfo.Builder setVideoFrameRate(float);
method public android.media.tv.TvTrackInfo.Builder setVideoHeight(int);
@@ -28080,51 +28188,51 @@
ctor public TvView(android.content.Context, android.util.AttributeSet);
ctor public TvView(android.content.Context, android.util.AttributeSet, int);
method public boolean dispatchUnhandledInputEvent(android.view.InputEvent);
- method public java.lang.String getSelectedTrack(int);
+ method public String getSelectedTrack(int);
method public java.util.List<android.media.tv.TvTrackInfo> getTracks(int);
method public boolean onUnhandledInputEvent(android.view.InputEvent);
method public void reset();
- method public void selectTrack(int, java.lang.String);
- method public void sendAppPrivateCommand(java.lang.String, android.os.Bundle);
- method public void setCallback(android.media.tv.TvView.TvInputCallback);
+ method public void selectTrack(int, String);
+ method public void sendAppPrivateCommand(@NonNull String, android.os.Bundle);
+ method public void setCallback(@Nullable android.media.tv.TvView.TvInputCallback);
method public void setCaptionEnabled(boolean);
method public void setOnUnhandledInputEventListener(android.media.tv.TvView.OnUnhandledInputEventListener);
- method public void setStreamVolume(float);
- method public void setTimeShiftPositionCallback(android.media.tv.TvView.TimeShiftPositionCallback);
+ method public void setStreamVolume(@FloatRange(from=0.0, to=1.0) float);
+ method public void setTimeShiftPositionCallback(@Nullable android.media.tv.TvView.TimeShiftPositionCallback);
method public void setZOrderMediaOverlay(boolean);
method public void setZOrderOnTop(boolean);
method public void timeShiftPause();
- method public void timeShiftPlay(java.lang.String, android.net.Uri);
+ method public void timeShiftPlay(String, android.net.Uri);
method public void timeShiftResume();
method public void timeShiftSeekTo(long);
- method public void timeShiftSetPlaybackParams(android.media.PlaybackParams);
- method public void tune(java.lang.String, android.net.Uri);
- method public void tune(java.lang.String, android.net.Uri, android.os.Bundle);
+ method public void timeShiftSetPlaybackParams(@NonNull android.media.PlaybackParams);
+ method public void tune(@NonNull String, android.net.Uri);
+ method public void tune(String, android.net.Uri, android.os.Bundle);
}
- public static abstract interface TvView.OnUnhandledInputEventListener {
- method public abstract boolean onUnhandledInputEvent(android.view.InputEvent);
+ public static interface TvView.OnUnhandledInputEventListener {
+ method public boolean onUnhandledInputEvent(android.view.InputEvent);
}
- public static abstract class TvView.TimeShiftPositionCallback {
+ public abstract static class TvView.TimeShiftPositionCallback {
ctor public TvView.TimeShiftPositionCallback();
- method public void onTimeShiftCurrentPositionChanged(java.lang.String, long);
- method public void onTimeShiftStartPositionChanged(java.lang.String, long);
+ method public void onTimeShiftCurrentPositionChanged(String, long);
+ method public void onTimeShiftStartPositionChanged(String, long);
}
- public static abstract class TvView.TvInputCallback {
+ public abstract static class TvView.TvInputCallback {
ctor public TvView.TvInputCallback();
- method public void onChannelRetuned(java.lang.String, android.net.Uri);
- method public void onConnectionFailed(java.lang.String);
- method public void onContentAllowed(java.lang.String);
- method public void onContentBlocked(java.lang.String, android.media.tv.TvContentRating);
- method public void onDisconnected(java.lang.String);
- method public void onTimeShiftStatusChanged(java.lang.String, int);
- method public void onTrackSelected(java.lang.String, int, java.lang.String);
- method public void onTracksChanged(java.lang.String, java.util.List<android.media.tv.TvTrackInfo>);
- method public void onVideoAvailable(java.lang.String);
- method public void onVideoSizeChanged(java.lang.String, int, int);
- method public void onVideoUnavailable(java.lang.String, int);
+ method public void onChannelRetuned(String, android.net.Uri);
+ method public void onConnectionFailed(String);
+ method public void onContentAllowed(String);
+ method public void onContentBlocked(String, android.media.tv.TvContentRating);
+ method public void onDisconnected(String);
+ method public void onTimeShiftStatusChanged(String, int);
+ method public void onTrackSelected(String, int, String);
+ method public void onTracksChanged(String, java.util.List<android.media.tv.TvTrackInfo>);
+ method public void onVideoAvailable(String);
+ method public void onVideoSizeChanged(String, int, int);
+ method public void onVideoUnavailable(String, int);
}
}
@@ -28236,37 +28344,37 @@
}
public final class MtpDevice {
- ctor public MtpDevice(android.hardware.usb.UsbDevice);
+ ctor public MtpDevice(@NonNull android.hardware.usb.UsbDevice);
method public void close();
method public boolean deleteObject(int);
method public int getDeviceId();
- method public android.mtp.MtpDeviceInfo getDeviceInfo();
- method public java.lang.String getDeviceName();
- method public byte[] getObject(int, int);
- method public int[] getObjectHandles(int, int, int);
- method public android.mtp.MtpObjectInfo getObjectInfo(int);
+ method @Nullable public android.mtp.MtpDeviceInfo getDeviceInfo();
+ method @NonNull public String getDeviceName();
+ method @Nullable public byte[] getObject(int, int);
+ method @Nullable public int[] getObjectHandles(int, int, int);
+ method @Nullable public android.mtp.MtpObjectInfo getObjectInfo(int);
method public long getParent(int);
- method public long getPartialObject(int, long, long, byte[]) throws java.io.IOException;
- method public long getPartialObject64(int, long, long, byte[]) throws java.io.IOException;
+ method public long getPartialObject(int, long, long, @NonNull byte[]) throws java.io.IOException;
+ method public long getPartialObject64(int, long, long, @NonNull byte[]) throws java.io.IOException;
method public long getStorageId(int);
- method public int[] getStorageIds();
- method public android.mtp.MtpStorageInfo getStorageInfo(int);
- method public byte[] getThumbnail(int);
- method public boolean importFile(int, java.lang.String);
- method public boolean importFile(int, android.os.ParcelFileDescriptor);
- method public boolean open(android.hardware.usb.UsbDeviceConnection);
- method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal) throws java.io.IOException;
- method public boolean sendObject(int, long, android.os.ParcelFileDescriptor);
- method public android.mtp.MtpObjectInfo sendObjectInfo(android.mtp.MtpObjectInfo);
+ method @Nullable public int[] getStorageIds();
+ method @Nullable public android.mtp.MtpStorageInfo getStorageInfo(int);
+ method @Nullable public byte[] getThumbnail(int);
+ method public boolean importFile(int, @NonNull String);
+ method public boolean importFile(int, @NonNull android.os.ParcelFileDescriptor);
+ method public boolean open(@NonNull android.hardware.usb.UsbDeviceConnection);
+ method @NonNull public android.mtp.MtpEvent readEvent(@Nullable android.os.CancellationSignal) throws java.io.IOException;
+ method public boolean sendObject(int, long, @NonNull android.os.ParcelFileDescriptor);
+ method @Nullable public android.mtp.MtpObjectInfo sendObjectInfo(@NonNull android.mtp.MtpObjectInfo);
}
public class MtpDeviceInfo {
- method public final int[] getEventsSupported();
- method public final java.lang.String getManufacturer();
- method public final java.lang.String getModel();
- method public final int[] getOperationsSupported();
- method public final java.lang.String getSerialNumber();
- method public final java.lang.String getVersion();
+ method @NonNull public final int[] getEventsSupported();
+ method @NonNull public final String getManufacturer();
+ method @NonNull public final String getModel();
+ method @NonNull public final int[] getOperationsSupported();
+ method @NonNull public final String getSerialNumber();
+ method @NonNull public final String getVersion();
method public boolean isEventSupported(int);
method public boolean isOperationSupported(int);
}
@@ -28316,8 +28424,8 @@
method public long getImagePixHeightLong();
method public int getImagePixWidth();
method public long getImagePixWidthLong();
- method public java.lang.String getKeywords();
- method public java.lang.String getName();
+ method @NonNull public String getKeywords();
+ method @NonNull public String getName();
method public int getObjectHandle();
method public int getParent();
method public int getProtectionStatus();
@@ -28346,8 +28454,8 @@
method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(long);
method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(long);
method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(long);
- method public android.mtp.MtpObjectInfo.Builder setKeywords(java.lang.String);
- method public android.mtp.MtpObjectInfo.Builder setName(java.lang.String);
+ method public android.mtp.MtpObjectInfo.Builder setKeywords(@NonNull String);
+ method public android.mtp.MtpObjectInfo.Builder setName(@NonNull String);
method public android.mtp.MtpObjectInfo.Builder setObjectHandle(int);
method public android.mtp.MtpObjectInfo.Builder setParent(int);
method public android.mtp.MtpObjectInfo.Builder setProtectionStatus(int);
@@ -28360,11 +28468,11 @@
}
public final class MtpStorageInfo {
- method public java.lang.String getDescription();
+ method @NonNull public String getDescription();
method public long getFreeSpace();
method public long getMaxCapacity();
method public int getStorageId();
- method public java.lang.String getVolumeIdentifier();
+ method @NonNull public String getVolumeIdentifier();
}
}
@@ -28381,79 +28489,79 @@
public class ConnectivityManager {
method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
- method public boolean bindProcessToNetwork(android.net.Network);
- method public android.net.Network getActiveNetwork();
- method public deprecated android.net.NetworkInfo getActiveNetworkInfo();
- method public deprecated android.net.NetworkInfo[] getAllNetworkInfo();
- method public android.net.Network[] getAllNetworks();
- method public deprecated boolean getBackgroundDataSetting();
- method public android.net.Network getBoundNetworkForProcess();
- method public int getConnectionOwnerUid(int, java.net.InetSocketAddress, java.net.InetSocketAddress);
- method public android.net.ProxyInfo getDefaultProxy();
- method public android.net.LinkProperties getLinkProperties(android.net.Network);
- method public int getMultipathPreference(android.net.Network);
- method public android.net.NetworkCapabilities getNetworkCapabilities(android.net.Network);
- method public deprecated android.net.NetworkInfo getNetworkInfo(int);
- method public deprecated android.net.NetworkInfo getNetworkInfo(android.net.Network);
- method public deprecated int getNetworkPreference();
- method public byte[] getNetworkWatchlistConfigHash();
- method public static deprecated android.net.Network getProcessDefaultNetwork();
+ method public boolean bindProcessToNetwork(@Nullable android.net.Network);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) @Nullable public android.net.Network getActiveNetwork();
+ method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getActiveNetworkInfo();
+ method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo[] getAllNetworkInfo();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) @NonNull public android.net.Network[] getAllNetworks();
+ method @Deprecated public boolean getBackgroundDataSetting();
+ method @Nullable public android.net.Network getBoundNetworkForProcess();
+ method public int getConnectionOwnerUid(int, @NonNull java.net.InetSocketAddress, @NonNull java.net.InetSocketAddress);
+ method @Nullable public android.net.ProxyInfo getDefaultProxy();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) @Nullable public android.net.LinkProperties getLinkProperties(@Nullable android.net.Network);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public int getMultipathPreference(@Nullable android.net.Network);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) @Nullable public android.net.NetworkCapabilities getNetworkCapabilities(@Nullable android.net.Network);
+ method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getNetworkInfo(int);
+ method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getNetworkInfo(@Nullable android.net.Network);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public int getNetworkPreference();
+ method @Nullable public byte[] getNetworkWatchlistConfigHash();
+ method @Deprecated @Nullable public static android.net.Network getProcessDefaultNetwork();
method public int getRestrictBackgroundStatus();
- method public boolean isActiveNetworkMetered();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public boolean isActiveNetworkMetered();
method public boolean isDefaultNetworkActive();
- method public static deprecated boolean isNetworkTypeValid(int);
- method public void registerDefaultNetworkCallback(android.net.ConnectivityManager.NetworkCallback);
- method public void registerDefaultNetworkCallback(android.net.ConnectivityManager.NetworkCallback, android.os.Handler);
- method public void registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback);
- method public void registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback, android.os.Handler);
- method public void registerNetworkCallback(android.net.NetworkRequest, android.app.PendingIntent);
- method public void releaseNetworkRequest(android.app.PendingIntent);
- method public void removeDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
- method public deprecated void reportBadNetwork(android.net.Network);
- method public void reportNetworkConnectivity(android.net.Network, boolean);
- method public boolean requestBandwidthUpdate(android.net.Network);
- method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback);
- method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback, android.os.Handler);
- method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback, int);
- method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback, android.os.Handler, int);
- method public void requestNetwork(android.net.NetworkRequest, android.app.PendingIntent);
- method public deprecated void setNetworkPreference(int);
- method public static deprecated boolean setProcessDefaultNetwork(android.net.Network);
- method public void unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback);
- method public void unregisterNetworkCallback(android.app.PendingIntent);
- field public static final deprecated java.lang.String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED";
- field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL";
- field public static final java.lang.String ACTION_RESTRICT_BACKGROUND_CHANGED = "android.net.conn.RESTRICT_BACKGROUND_CHANGED";
- field public static final deprecated java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
- field public static final deprecated int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1
- field public static final java.lang.String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL";
- field public static final java.lang.String EXTRA_CAPTIVE_PORTAL_URL = "android.net.extra.CAPTIVE_PORTAL_URL";
- field public static final deprecated java.lang.String EXTRA_EXTRA_INFO = "extraInfo";
- field public static final deprecated java.lang.String EXTRA_IS_FAILOVER = "isFailover";
- field public static final java.lang.String EXTRA_NETWORK = "android.net.extra.NETWORK";
- field public static final deprecated java.lang.String EXTRA_NETWORK_INFO = "networkInfo";
- field public static final java.lang.String EXTRA_NETWORK_REQUEST = "android.net.extra.NETWORK_REQUEST";
- field public static final java.lang.String EXTRA_NETWORK_TYPE = "networkType";
- field public static final java.lang.String EXTRA_NO_CONNECTIVITY = "noConnectivity";
- field public static final deprecated java.lang.String EXTRA_OTHER_NETWORK_INFO = "otherNetwork";
- field public static final java.lang.String EXTRA_REASON = "reason";
+ method @Deprecated public static boolean isNetworkTypeValid(int);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.app.PendingIntent);
+ method public void releaseNetworkRequest(@NonNull android.app.PendingIntent);
+ method public void removeDefaultNetworkActiveListener(@NonNull android.net.ConnectivityManager.OnNetworkActiveListener);
+ method @Deprecated public void reportBadNetwork(@Nullable android.net.Network);
+ method public void reportNetworkConnectivity(@Nullable android.net.Network, boolean);
+ method public boolean requestBandwidthUpdate(@NonNull android.net.Network);
+ method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback);
+ method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
+ method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, int);
+ method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler, int);
+ method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.app.PendingIntent);
+ method @Deprecated public void setNetworkPreference(int);
+ method @Deprecated public static boolean setProcessDefaultNetwork(@Nullable android.net.Network);
+ method public void unregisterNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback);
+ method public void unregisterNetworkCallback(@NonNull android.app.PendingIntent);
+ field @Deprecated public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED";
+ field public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL";
+ field public static final String ACTION_RESTRICT_BACKGROUND_CHANGED = "android.net.conn.RESTRICT_BACKGROUND_CHANGED";
+ field @Deprecated public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
+ field @Deprecated public static final int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1
+ field public static final String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL";
+ field public static final String EXTRA_CAPTIVE_PORTAL_URL = "android.net.extra.CAPTIVE_PORTAL_URL";
+ field @Deprecated public static final String EXTRA_EXTRA_INFO = "extraInfo";
+ field @Deprecated public static final String EXTRA_IS_FAILOVER = "isFailover";
+ field public static final String EXTRA_NETWORK = "android.net.extra.NETWORK";
+ field @Deprecated public static final String EXTRA_NETWORK_INFO = "networkInfo";
+ field public static final String EXTRA_NETWORK_REQUEST = "android.net.extra.NETWORK_REQUEST";
+ field public static final String EXTRA_NETWORK_TYPE = "networkType";
+ field public static final String EXTRA_NO_CONNECTIVITY = "noConnectivity";
+ field @Deprecated public static final String EXTRA_OTHER_NETWORK_INFO = "otherNetwork";
+ field public static final String EXTRA_REASON = "reason";
field public static final int MULTIPATH_PREFERENCE_HANDOVER = 1; // 0x1
field public static final int MULTIPATH_PREFERENCE_PERFORMANCE = 4; // 0x4
field public static final int MULTIPATH_PREFERENCE_RELIABILITY = 2; // 0x2
field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
- field public static final deprecated int TYPE_BLUETOOTH = 7; // 0x7
- field public static final deprecated int TYPE_DUMMY = 8; // 0x8
- field public static final deprecated int TYPE_ETHERNET = 9; // 0x9
- field public static final deprecated int TYPE_MOBILE = 0; // 0x0
- field public static final deprecated int TYPE_MOBILE_DUN = 4; // 0x4
- field public static final deprecated int TYPE_MOBILE_HIPRI = 5; // 0x5
- field public static final deprecated int TYPE_MOBILE_MMS = 2; // 0x2
- field public static final deprecated int TYPE_MOBILE_SUPL = 3; // 0x3
- field public static final deprecated int TYPE_VPN = 17; // 0x11
- field public static final deprecated int TYPE_WIFI = 1; // 0x1
- field public static final deprecated int TYPE_WIMAX = 6; // 0x6
+ field @Deprecated public static final int TYPE_BLUETOOTH = 7; // 0x7
+ field @Deprecated public static final int TYPE_DUMMY = 8; // 0x8
+ field @Deprecated public static final int TYPE_ETHERNET = 9; // 0x9
+ field @Deprecated public static final int TYPE_MOBILE = 0; // 0x0
+ field @Deprecated public static final int TYPE_MOBILE_DUN = 4; // 0x4
+ field @Deprecated public static final int TYPE_MOBILE_HIPRI = 5; // 0x5
+ field @Deprecated public static final int TYPE_MOBILE_MMS = 2; // 0x2
+ field @Deprecated public static final int TYPE_MOBILE_SUPL = 3; // 0x3
+ field @Deprecated public static final int TYPE_VPN = 17; // 0x11
+ field @Deprecated public static final int TYPE_WIFI = 1; // 0x1
+ field @Deprecated public static final int TYPE_WIMAX = 6; // 0x6
}
public static class ConnectivityManager.NetworkCallback {
@@ -28467,8 +28575,8 @@
method public void onUnavailable();
}
- public static abstract interface ConnectivityManager.OnNetworkActiveListener {
- method public abstract void onNetworkActive();
+ public static interface ConnectivityManager.OnNetworkActiveListener {
+ method public void onNetworkActive();
}
public class Credentials {
@@ -28492,8 +28600,8 @@
}
public class InetAddresses {
- method public static boolean isNumericAddress(java.lang.String);
- method public static java.net.InetAddress parseNumericAddress(java.lang.String);
+ method public static boolean isNumericAddress(String);
+ method public static java.net.InetAddress parseNumericAddress(String);
}
public final class IpPrefix implements android.os.Parcelable {
@@ -28507,34 +28615,34 @@
}
public final class IpSecAlgorithm implements android.os.Parcelable {
- ctor public IpSecAlgorithm(java.lang.String, byte[]);
- ctor public IpSecAlgorithm(java.lang.String, byte[], int);
+ ctor public IpSecAlgorithm(@NonNull String, @NonNull byte[]);
+ ctor public IpSecAlgorithm(@NonNull String, @NonNull byte[], int);
method public int describeContents();
- method public byte[] getKey();
- method public java.lang.String getName();
+ method @NonNull public byte[] getKey();
+ method @NonNull public String getName();
method public int getTruncationLengthBits();
method public void writeToParcel(android.os.Parcel, int);
- field public static final java.lang.String AUTH_CRYPT_AES_GCM = "rfc4106(gcm(aes))";
- field public static final java.lang.String AUTH_HMAC_MD5 = "hmac(md5)";
- field public static final java.lang.String AUTH_HMAC_SHA1 = "hmac(sha1)";
- field public static final java.lang.String AUTH_HMAC_SHA256 = "hmac(sha256)";
- field public static final java.lang.String AUTH_HMAC_SHA384 = "hmac(sha384)";
- field public static final java.lang.String AUTH_HMAC_SHA512 = "hmac(sha512)";
+ field public static final String AUTH_CRYPT_AES_GCM = "rfc4106(gcm(aes))";
+ field public static final String AUTH_HMAC_MD5 = "hmac(md5)";
+ field public static final String AUTH_HMAC_SHA1 = "hmac(sha1)";
+ field public static final String AUTH_HMAC_SHA256 = "hmac(sha256)";
+ field public static final String AUTH_HMAC_SHA384 = "hmac(sha384)";
+ field public static final String AUTH_HMAC_SHA512 = "hmac(sha512)";
field public static final android.os.Parcelable.Creator<android.net.IpSecAlgorithm> CREATOR;
- field public static final java.lang.String CRYPT_AES_CBC = "cbc(aes)";
+ field public static final String CRYPT_AES_CBC = "cbc(aes)";
}
public final class IpSecManager {
- method public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(java.net.InetAddress) throws android.net.IpSecManager.ResourceUnavailableException;
- method public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(java.net.InetAddress, int) throws android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
- method public void applyTransportModeTransform(java.net.Socket, int, android.net.IpSecTransform) throws java.io.IOException;
- method public void applyTransportModeTransform(java.net.DatagramSocket, int, android.net.IpSecTransform) throws java.io.IOException;
- method public void applyTransportModeTransform(java.io.FileDescriptor, int, android.net.IpSecTransform) throws java.io.IOException;
- method public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket(int) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
- method public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket() throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
- method public void removeTransportModeTransforms(java.net.Socket) throws java.io.IOException;
- method public void removeTransportModeTransforms(java.net.DatagramSocket) throws java.io.IOException;
- method public void removeTransportModeTransforms(java.io.FileDescriptor) throws java.io.IOException;
+ method @NonNull public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(@NonNull java.net.InetAddress) throws android.net.IpSecManager.ResourceUnavailableException;
+ method @NonNull public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(@NonNull java.net.InetAddress, int) throws android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
+ method public void applyTransportModeTransform(@NonNull java.net.Socket, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
+ method public void applyTransportModeTransform(@NonNull java.net.DatagramSocket, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
+ method public void applyTransportModeTransform(@NonNull java.io.FileDescriptor, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
+ method @NonNull public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket(int) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
+ method @NonNull public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket() throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
+ method public void removeTransportModeTransforms(@NonNull java.net.Socket) throws java.io.IOException;
+ method public void removeTransportModeTransforms(@NonNull java.net.DatagramSocket) throws java.io.IOException;
+ method public void removeTransportModeTransforms(@NonNull java.io.FileDescriptor) throws java.io.IOException;
field public static final int DIRECTION_IN = 0; // 0x0
field public static final int DIRECTION_OUT = 1; // 0x1
}
@@ -28562,12 +28670,12 @@
}
public static class IpSecTransform.Builder {
- ctor public IpSecTransform.Builder(android.content.Context);
- method public android.net.IpSecTransform buildTransportModeTransform(java.net.InetAddress, android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
- method public android.net.IpSecTransform.Builder setAuthenticatedEncryption(android.net.IpSecAlgorithm);
- method public android.net.IpSecTransform.Builder setAuthentication(android.net.IpSecAlgorithm);
- method public android.net.IpSecTransform.Builder setEncryption(android.net.IpSecAlgorithm);
- method public android.net.IpSecTransform.Builder setIpv4Encapsulation(android.net.IpSecManager.UdpEncapsulationSocket, int);
+ ctor public IpSecTransform.Builder(@NonNull android.content.Context);
+ method @NonNull public android.net.IpSecTransform buildTransportModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
+ method @NonNull public android.net.IpSecTransform.Builder setAuthenticatedEncryption(@NonNull android.net.IpSecAlgorithm);
+ method @NonNull public android.net.IpSecTransform.Builder setAuthentication(@NonNull android.net.IpSecAlgorithm);
+ method @NonNull public android.net.IpSecTransform.Builder setEncryption(@NonNull android.net.IpSecAlgorithm);
+ method @NonNull public android.net.IpSecTransform.Builder setIpv4Encapsulation(@NonNull android.net.IpSecManager.UdpEncapsulationSocket, int);
}
public class LinkAddress implements android.os.Parcelable {
@@ -28583,12 +28691,12 @@
public final class LinkProperties implements android.os.Parcelable {
method public int describeContents();
method public java.util.List<java.net.InetAddress> getDnsServers();
- method public java.lang.String getDomains();
+ method public String getDomains();
method public android.net.ProxyInfo getHttpProxy();
- method public java.lang.String getInterfaceName();
+ method @Nullable public String getInterfaceName();
method public java.util.List<android.net.LinkAddress> getLinkAddresses();
method public int getMtu();
- method public java.lang.String getPrivateDnsServerName();
+ method @Nullable public String getPrivateDnsServerName();
method public java.util.List<android.net.RouteInfo> getRoutes();
method public boolean isPrivateDnsActive();
method public void writeToParcel(android.os.Parcel, int);
@@ -28596,7 +28704,7 @@
}
public class LocalServerSocket implements java.io.Closeable {
- ctor public LocalServerSocket(java.lang.String) throws java.io.IOException;
+ ctor public LocalServerSocket(String) throws java.io.IOException;
ctor public LocalServerSocket(java.io.FileDescriptor) throws java.io.IOException;
method public android.net.LocalSocket accept() throws java.io.IOException;
method public void close() throws java.io.IOException;
@@ -28621,9 +28729,9 @@
method public android.net.LocalSocketAddress getRemoteSocketAddress();
method public int getSendBufferSize() throws java.io.IOException;
method public int getSoTimeout() throws java.io.IOException;
- method public synchronized boolean isBound();
+ method public boolean isBound();
method public boolean isClosed();
- method public synchronized boolean isConnected();
+ method public boolean isConnected();
method public boolean isInputShutdown();
method public boolean isOutputShutdown();
method public void setFileDescriptorsForSend(java.io.FileDescriptor[]);
@@ -28638,15 +28746,13 @@
}
public class LocalSocketAddress {
- ctor public LocalSocketAddress(java.lang.String, android.net.LocalSocketAddress.Namespace);
- ctor public LocalSocketAddress(java.lang.String);
- method public java.lang.String getName();
+ ctor public LocalSocketAddress(String, android.net.LocalSocketAddress.Namespace);
+ ctor public LocalSocketAddress(String);
+ method public String getName();
method public android.net.LocalSocketAddress.Namespace getNamespace();
}
- public static final class LocalSocketAddress.Namespace extends java.lang.Enum {
- method public static android.net.LocalSocketAddress.Namespace valueOf(java.lang.String);
- method public static final android.net.LocalSocketAddress.Namespace[] values();
+ public enum LocalSocketAddress.Namespace {
enum_constant public static final android.net.LocalSocketAddress.Namespace ABSTRACT;
enum_constant public static final android.net.LocalSocketAddress.Namespace FILESYSTEM;
enum_constant public static final android.net.LocalSocketAddress.Namespace RESERVED;
@@ -28654,12 +28760,12 @@
public final class MacAddress implements android.os.Parcelable {
method public int describeContents();
- method public static android.net.MacAddress fromBytes(byte[]);
- method public static android.net.MacAddress fromString(java.lang.String);
+ method @NonNull public static android.net.MacAddress fromBytes(@NonNull byte[]);
+ method @NonNull public static android.net.MacAddress fromString(@NonNull String);
method public int getAddressType();
method public boolean isLocallyAssigned();
- method public byte[] toByteArray();
- method public java.lang.String toOuiString();
+ method @NonNull public byte[] toByteArray();
+ method @NonNull public String toOuiString();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.net.MacAddress BROADCAST_ADDRESS;
field public static final android.os.Parcelable.Creator<android.net.MacAddress> CREATOR;
@@ -28669,14 +28775,14 @@
}
public class MailTo {
- method public java.lang.String getBody();
- method public java.lang.String getCc();
- method public java.util.Map<java.lang.String, java.lang.String> getHeaders();
- method public java.lang.String getSubject();
- method public java.lang.String getTo();
- method public static boolean isMailTo(java.lang.String);
- method public static android.net.MailTo parse(java.lang.String) throws android.net.ParseException;
- field public static final java.lang.String MAILTO_SCHEME = "mailto:";
+ method public String getBody();
+ method public String getCc();
+ method public java.util.Map<java.lang.String,java.lang.String> getHeaders();
+ method public String getSubject();
+ method public String getTo();
+ method public static boolean isMailTo(String);
+ method public static android.net.MailTo parse(String) throws android.net.ParseException;
+ field public static final String MAILTO_SCHEME = "mailto:";
}
public class Network implements android.os.Parcelable {
@@ -28685,8 +28791,8 @@
method public void bindSocket(java.io.FileDescriptor) throws java.io.IOException;
method public int describeContents();
method public static android.net.Network fromNetworkHandle(long);
- method public java.net.InetAddress[] getAllByName(java.lang.String) throws java.net.UnknownHostException;
- method public java.net.InetAddress getByName(java.lang.String) throws java.net.UnknownHostException;
+ method public java.net.InetAddress[] getAllByName(String) throws java.net.UnknownHostException;
+ method public java.net.InetAddress getByName(String) throws java.net.UnknownHostException;
method public long getNetworkHandle();
method public javax.net.SocketFactory getSocketFactory();
method public java.net.URLConnection openConnection(java.net.URL) throws java.io.IOException;
@@ -28700,7 +28806,7 @@
method public int describeContents();
method public int getLinkDownstreamBandwidthKbps();
method public int getLinkUpstreamBandwidthKbps();
- method public android.net.TransportInfo getTransportInfo();
+ method @Nullable public android.net.TransportInfo getTransportInfo();
method public boolean hasCapability(int);
method public boolean hasTransport(int);
method public void writeToParcel(android.os.Parcel, int);
@@ -28736,52 +28842,48 @@
field public static final int TRANSPORT_WIFI_AWARE = 5; // 0x5
}
- public deprecated class NetworkInfo implements android.os.Parcelable {
- method public int describeContents();
- method public deprecated android.net.NetworkInfo.DetailedState getDetailedState();
- method public deprecated java.lang.String getExtraInfo();
- method public deprecated java.lang.String getReason();
- method public deprecated android.net.NetworkInfo.State getState();
- method public deprecated int getSubtype();
- method public deprecated java.lang.String getSubtypeName();
- method public deprecated int getType();
- method public deprecated java.lang.String getTypeName();
- method public deprecated boolean isAvailable();
- method public deprecated boolean isConnected();
- method public deprecated boolean isConnectedOrConnecting();
- method public deprecated boolean isFailover();
- method public deprecated boolean isRoaming();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.net.NetworkInfo> CREATOR;
+ @Deprecated public class NetworkInfo implements android.os.Parcelable {
+ method @Deprecated public int describeContents();
+ method @Deprecated public android.net.NetworkInfo.DetailedState getDetailedState();
+ method @Deprecated public String getExtraInfo();
+ method @Deprecated public String getReason();
+ method @Deprecated public android.net.NetworkInfo.State getState();
+ method @Deprecated public int getSubtype();
+ method @Deprecated public String getSubtypeName();
+ method @Deprecated public int getType();
+ method @Deprecated public String getTypeName();
+ method @Deprecated public boolean isAvailable();
+ method @Deprecated public boolean isConnected();
+ method @Deprecated public boolean isConnectedOrConnecting();
+ method @Deprecated public boolean isFailover();
+ method @Deprecated public boolean isRoaming();
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.net.NetworkInfo> CREATOR;
}
- public static final deprecated class NetworkInfo.DetailedState extends java.lang.Enum {
- method public static android.net.NetworkInfo.DetailedState valueOf(java.lang.String);
- method public static final android.net.NetworkInfo.DetailedState[] values();
- enum_constant public static final android.net.NetworkInfo.DetailedState AUTHENTICATING;
- enum_constant public static final android.net.NetworkInfo.DetailedState BLOCKED;
- enum_constant public static final android.net.NetworkInfo.DetailedState CAPTIVE_PORTAL_CHECK;
- enum_constant public static final android.net.NetworkInfo.DetailedState CONNECTED;
- enum_constant public static final android.net.NetworkInfo.DetailedState CONNECTING;
- enum_constant public static final android.net.NetworkInfo.DetailedState DISCONNECTED;
- enum_constant public static final android.net.NetworkInfo.DetailedState DISCONNECTING;
- enum_constant public static final android.net.NetworkInfo.DetailedState FAILED;
- enum_constant public static final android.net.NetworkInfo.DetailedState IDLE;
- enum_constant public static final android.net.NetworkInfo.DetailedState OBTAINING_IPADDR;
- enum_constant public static final android.net.NetworkInfo.DetailedState SCANNING;
- enum_constant public static final android.net.NetworkInfo.DetailedState SUSPENDED;
- enum_constant public static final android.net.NetworkInfo.DetailedState VERIFYING_POOR_LINK;
+ @Deprecated public enum NetworkInfo.DetailedState {
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState AUTHENTICATING;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState BLOCKED;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CAPTIVE_PORTAL_CHECK;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CONNECTED;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CONNECTING;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState DISCONNECTED;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState DISCONNECTING;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState FAILED;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState IDLE;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState OBTAINING_IPADDR;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState SCANNING;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState SUSPENDED;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState VERIFYING_POOR_LINK;
}
- public static final deprecated class NetworkInfo.State extends java.lang.Enum {
- method public static android.net.NetworkInfo.State valueOf(java.lang.String);
- method public static final android.net.NetworkInfo.State[] values();
- enum_constant public static final android.net.NetworkInfo.State CONNECTED;
- enum_constant public static final android.net.NetworkInfo.State CONNECTING;
- enum_constant public static final android.net.NetworkInfo.State DISCONNECTED;
- enum_constant public static final android.net.NetworkInfo.State DISCONNECTING;
- enum_constant public static final android.net.NetworkInfo.State SUSPENDED;
- enum_constant public static final android.net.NetworkInfo.State UNKNOWN;
+ @Deprecated public enum NetworkInfo.State {
+ enum_constant @Deprecated public static final android.net.NetworkInfo.State CONNECTED;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.State CONNECTING;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.State DISCONNECTED;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.State DISCONNECTING;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.State SUSPENDED;
+ enum_constant @Deprecated public static final android.net.NetworkInfo.State UNKNOWN;
}
public class NetworkRequest implements android.os.Parcelable {
@@ -28799,7 +28901,7 @@
method public android.net.NetworkRequest build();
method public android.net.NetworkRequest.Builder removeCapability(int);
method public android.net.NetworkRequest.Builder removeTransportType(int);
- method public android.net.NetworkRequest.Builder setNetworkSpecifier(java.lang.String);
+ method public android.net.NetworkRequest.Builder setNetworkSpecifier(String);
method public android.net.NetworkRequest.Builder setNetworkSpecifier(android.net.NetworkSpecifier);
}
@@ -28807,26 +28909,26 @@
}
public class ParseException extends java.lang.RuntimeException {
- field public java.lang.String response;
+ field public String response;
}
public final class Proxy {
ctor public Proxy();
- method public static deprecated java.lang.String getDefaultHost();
- method public static deprecated int getDefaultPort();
- method public static deprecated java.lang.String getHost(android.content.Context);
- method public static deprecated int getPort(android.content.Context);
- field public static final deprecated java.lang.String EXTRA_PROXY_INFO = "android.intent.extra.PROXY_INFO";
- field public static final java.lang.String PROXY_CHANGE_ACTION = "android.intent.action.PROXY_CHANGE";
+ method @Deprecated public static String getDefaultHost();
+ method @Deprecated public static int getDefaultPort();
+ method @Deprecated public static String getHost(android.content.Context);
+ method @Deprecated public static int getPort(android.content.Context);
+ field @Deprecated public static final String EXTRA_PROXY_INFO = "android.intent.extra.PROXY_INFO";
+ field public static final String PROXY_CHANGE_ACTION = "android.intent.action.PROXY_CHANGE";
}
public class ProxyInfo implements android.os.Parcelable {
- method public static android.net.ProxyInfo buildDirectProxy(java.lang.String, int);
- method public static android.net.ProxyInfo buildDirectProxy(java.lang.String, int, java.util.List<java.lang.String>);
+ method public static android.net.ProxyInfo buildDirectProxy(String, int);
+ method public static android.net.ProxyInfo buildDirectProxy(String, int, java.util.List<java.lang.String>);
method public static android.net.ProxyInfo buildPacProxy(android.net.Uri);
method public int describeContents();
- method public java.lang.String[] getExclusionList();
- method public java.lang.String getHost();
+ method public String[] getExclusionList();
+ method public String getHost();
method public android.net.Uri getPacFileUrl();
method public int getPort();
method public void writeToParcel(android.os.Parcel, int);
@@ -28837,7 +28939,7 @@
method public int describeContents();
method public android.net.IpPrefix getDestination();
method public java.net.InetAddress getGateway();
- method public java.lang.String getInterface();
+ method public String getInterface();
method public boolean isDefaultRoute();
method public boolean matches(java.net.InetAddress);
method public void writeToParcel(android.os.Parcel, int);
@@ -28845,19 +28947,19 @@
}
public class SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory {
- ctor public deprecated SSLCertificateSocketFactory(int);
- method public java.net.Socket createSocket(java.net.Socket, java.lang.String, int, boolean) throws java.io.IOException;
+ ctor @Deprecated public SSLCertificateSocketFactory(int);
+ method public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException;
method public java.net.Socket createSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
method public java.net.Socket createSocket(java.net.InetAddress, int) throws java.io.IOException;
- method public java.net.Socket createSocket(java.lang.String, int, java.net.InetAddress, int) throws java.io.IOException;
- method public java.net.Socket createSocket(java.lang.String, int) throws java.io.IOException;
+ method public java.net.Socket createSocket(String, int, java.net.InetAddress, int) throws java.io.IOException;
+ method public java.net.Socket createSocket(String, int) throws java.io.IOException;
method public static javax.net.SocketFactory getDefault(int);
method public static javax.net.ssl.SSLSocketFactory getDefault(int, android.net.SSLSessionCache);
- method public java.lang.String[] getDefaultCipherSuites();
+ method public String[] getDefaultCipherSuites();
method public static javax.net.ssl.SSLSocketFactory getInsecure(int, android.net.SSLSessionCache);
method public byte[] getNpnSelectedProtocol(java.net.Socket);
- method public java.lang.String[] getSupportedCipherSuites();
- method public void setHostname(java.net.Socket, java.lang.String);
+ method public String[] getSupportedCipherSuites();
+ method public void setHostname(java.net.Socket, String);
method public void setKeyManagers(javax.net.ssl.KeyManager[]);
method public void setNpnProtocols(byte[][]);
method public void setTrustManagers(javax.net.ssl.TrustManager[]);
@@ -28886,16 +28988,16 @@
method public static long getTotalTxPackets();
method public static long getUidRxBytes(int);
method public static long getUidRxPackets(int);
- method public static deprecated long getUidTcpRxBytes(int);
- method public static deprecated long getUidTcpRxSegments(int);
- method public static deprecated long getUidTcpTxBytes(int);
- method public static deprecated long getUidTcpTxSegments(int);
+ method @Deprecated public static long getUidTcpRxBytes(int);
+ method @Deprecated public static long getUidTcpRxSegments(int);
+ method @Deprecated public static long getUidTcpTxBytes(int);
+ method @Deprecated public static long getUidTcpTxSegments(int);
method public static long getUidTxBytes(int);
method public static long getUidTxPackets(int);
- method public static deprecated long getUidUdpRxBytes(int);
- method public static deprecated long getUidUdpRxPackets(int);
- method public static deprecated long getUidUdpTxBytes(int);
- method public static deprecated long getUidUdpTxPackets(int);
+ method @Deprecated public static long getUidUdpRxBytes(int);
+ method @Deprecated public static long getUidUdpRxPackets(int);
+ method @Deprecated public static long getUidUdpTxBytes(int);
+ method @Deprecated public static long getUidUdpTxPackets(int);
method public static void incrementOperationCount(int);
method public static void incrementOperationCount(int, int);
method public static void setThreadStatsTag(int);
@@ -28909,47 +29011,47 @@
field public static final int UNSUPPORTED = -1; // 0xffffffff
}
- public abstract interface TransportInfo {
+ public interface TransportInfo {
}
- public abstract class Uri implements java.lang.Comparable android.os.Parcelable {
+ public abstract class Uri implements java.lang.Comparable<android.net.Uri> android.os.Parcelable {
method public abstract android.net.Uri.Builder buildUpon();
method public int compareTo(android.net.Uri);
- method public static java.lang.String decode(java.lang.String);
- method public static java.lang.String encode(java.lang.String);
- method public static java.lang.String encode(java.lang.String, java.lang.String);
+ method public static String decode(String);
+ method public static String encode(String);
+ method public static String encode(String, String);
method public static android.net.Uri fromFile(java.io.File);
- method public static android.net.Uri fromParts(java.lang.String, java.lang.String, java.lang.String);
- method public abstract java.lang.String getAuthority();
- method public boolean getBooleanQueryParameter(java.lang.String, boolean);
- method public abstract java.lang.String getEncodedAuthority();
- method public abstract java.lang.String getEncodedFragment();
- method public abstract java.lang.String getEncodedPath();
- method public abstract java.lang.String getEncodedQuery();
- method public abstract java.lang.String getEncodedSchemeSpecificPart();
- method public abstract java.lang.String getEncodedUserInfo();
- method public abstract java.lang.String getFragment();
- method public abstract java.lang.String getHost();
- method public abstract java.lang.String getLastPathSegment();
- method public abstract java.lang.String getPath();
+ method public static android.net.Uri fromParts(String, String, String);
+ method @Nullable public abstract String getAuthority();
+ method public boolean getBooleanQueryParameter(String, boolean);
+ method @Nullable public abstract String getEncodedAuthority();
+ method @Nullable public abstract String getEncodedFragment();
+ method @Nullable public abstract String getEncodedPath();
+ method @Nullable public abstract String getEncodedQuery();
+ method public abstract String getEncodedSchemeSpecificPart();
+ method @Nullable public abstract String getEncodedUserInfo();
+ method @Nullable public abstract String getFragment();
+ method @Nullable public abstract String getHost();
+ method @Nullable public abstract String getLastPathSegment();
+ method @Nullable public abstract String getPath();
method public abstract java.util.List<java.lang.String> getPathSegments();
method public abstract int getPort();
- method public abstract java.lang.String getQuery();
- method public java.lang.String getQueryParameter(java.lang.String);
+ method @Nullable public abstract String getQuery();
+ method @Nullable public String getQueryParameter(String);
method public java.util.Set<java.lang.String> getQueryParameterNames();
- method public java.util.List<java.lang.String> getQueryParameters(java.lang.String);
- method public abstract java.lang.String getScheme();
- method public abstract java.lang.String getSchemeSpecificPart();
- method public abstract java.lang.String getUserInfo();
+ method public java.util.List<java.lang.String> getQueryParameters(String);
+ method @Nullable public abstract String getScheme();
+ method public abstract String getSchemeSpecificPart();
+ method @Nullable public abstract String getUserInfo();
method public boolean isAbsolute();
method public abstract boolean isHierarchical();
method public boolean isOpaque();
method public abstract boolean isRelative();
method public android.net.Uri normalizeScheme();
- method public static android.net.Uri parse(java.lang.String);
- method public java.lang.String toSafeString();
- method public abstract java.lang.String toString();
- method public static android.net.Uri withAppendedPath(android.net.Uri, java.lang.String);
+ method public static android.net.Uri parse(String);
+ method public String toSafeString();
+ method public abstract String toString();
+ method public static android.net.Uri withAppendedPath(android.net.Uri, String);
method public static void writeToParcel(android.os.Parcel, android.net.Uri);
field public static final android.os.Parcelable.Creator<android.net.Uri> CREATOR;
field public static final android.net.Uri EMPTY;
@@ -28957,28 +29059,28 @@
public static final class Uri.Builder {
ctor public Uri.Builder();
- method public android.net.Uri.Builder appendEncodedPath(java.lang.String);
- method public android.net.Uri.Builder appendPath(java.lang.String);
- method public android.net.Uri.Builder appendQueryParameter(java.lang.String, java.lang.String);
- method public android.net.Uri.Builder authority(java.lang.String);
+ method public android.net.Uri.Builder appendEncodedPath(String);
+ method public android.net.Uri.Builder appendPath(String);
+ method public android.net.Uri.Builder appendQueryParameter(String, String);
+ method public android.net.Uri.Builder authority(String);
method public android.net.Uri build();
method public android.net.Uri.Builder clearQuery();
- method public android.net.Uri.Builder encodedAuthority(java.lang.String);
- method public android.net.Uri.Builder encodedFragment(java.lang.String);
- method public android.net.Uri.Builder encodedOpaquePart(java.lang.String);
- method public android.net.Uri.Builder encodedPath(java.lang.String);
- method public android.net.Uri.Builder encodedQuery(java.lang.String);
- method public android.net.Uri.Builder fragment(java.lang.String);
- method public android.net.Uri.Builder opaquePart(java.lang.String);
- method public android.net.Uri.Builder path(java.lang.String);
- method public android.net.Uri.Builder query(java.lang.String);
- method public android.net.Uri.Builder scheme(java.lang.String);
+ method public android.net.Uri.Builder encodedAuthority(String);
+ method public android.net.Uri.Builder encodedFragment(String);
+ method public android.net.Uri.Builder encodedOpaquePart(String);
+ method public android.net.Uri.Builder encodedPath(String);
+ method public android.net.Uri.Builder encodedQuery(String);
+ method public android.net.Uri.Builder fragment(String);
+ method public android.net.Uri.Builder opaquePart(String);
+ method public android.net.Uri.Builder path(String);
+ method public android.net.Uri.Builder query(String);
+ method public android.net.Uri.Builder scheme(String);
}
public class UrlQuerySanitizer {
ctor public UrlQuerySanitizer();
- ctor public UrlQuerySanitizer(java.lang.String);
- method protected void addSanitizedEntry(java.lang.String, java.lang.String);
+ ctor public UrlQuerySanitizer(String);
+ method protected void addSanitizedEntry(String, String);
method protected void clear();
method protected int decodeHexDigit(char);
method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButNulAndAngleBracketsLegal();
@@ -28988,7 +29090,7 @@
method public boolean getAllowUnregisteredParamaters();
method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAmpAndSpaceLegal();
method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAmpLegal();
- method public android.net.UrlQuerySanitizer.ValueSanitizer getEffectiveValueSanitizer(java.lang.String);
+ method public android.net.UrlQuerySanitizer.ValueSanitizer getEffectiveValueSanitizer(String);
method public java.util.List<android.net.UrlQuerySanitizer.ParameterValuePair> getParameterList();
method public java.util.Set<java.lang.String> getParameterSet();
method public boolean getPreferFirstRepeatedParameter();
@@ -28996,24 +29098,24 @@
method public android.net.UrlQuerySanitizer.ValueSanitizer getUnregisteredParameterValueSanitizer();
method public static final android.net.UrlQuerySanitizer.ValueSanitizer getUrlAndSpaceLegal();
method public static final android.net.UrlQuerySanitizer.ValueSanitizer getUrlLegal();
- method public java.lang.String getValue(java.lang.String);
- method public android.net.UrlQuerySanitizer.ValueSanitizer getValueSanitizer(java.lang.String);
- method public boolean hasParameter(java.lang.String);
+ method public String getValue(String);
+ method public android.net.UrlQuerySanitizer.ValueSanitizer getValueSanitizer(String);
+ method public boolean hasParameter(String);
method protected boolean isHexDigit(char);
- method protected void parseEntry(java.lang.String, java.lang.String);
- method public void parseQuery(java.lang.String);
- method public void parseUrl(java.lang.String);
- method public void registerParameter(java.lang.String, android.net.UrlQuerySanitizer.ValueSanitizer);
- method public void registerParameters(java.lang.String[], android.net.UrlQuerySanitizer.ValueSanitizer);
+ method protected void parseEntry(String, String);
+ method public void parseQuery(String);
+ method public void parseUrl(String);
+ method public void registerParameter(String, android.net.UrlQuerySanitizer.ValueSanitizer);
+ method public void registerParameters(String[], android.net.UrlQuerySanitizer.ValueSanitizer);
method public void setAllowUnregisteredParamaters(boolean);
method public void setPreferFirstRepeatedParameter(boolean);
method public void setUnregisteredParameterValueSanitizer(android.net.UrlQuerySanitizer.ValueSanitizer);
- method public java.lang.String unescape(java.lang.String);
+ method public String unescape(String);
}
public static class UrlQuerySanitizer.IllegalCharacterValueSanitizer implements android.net.UrlQuerySanitizer.ValueSanitizer {
ctor public UrlQuerySanitizer.IllegalCharacterValueSanitizer(int);
- method public java.lang.String sanitize(java.lang.String);
+ method public String sanitize(String);
field public static final int ALL_BUT_NUL_AND_ANGLE_BRACKETS_LEGAL = 1439; // 0x59f
field public static final int ALL_BUT_NUL_LEGAL = 1535; // 0x5ff
field public static final int ALL_BUT_WHITESPACE_LEGAL = 1532; // 0x5fc
@@ -29039,13 +29141,13 @@
}
public class UrlQuerySanitizer.ParameterValuePair {
- ctor public UrlQuerySanitizer.ParameterValuePair(java.lang.String, java.lang.String);
- field public java.lang.String mParameter;
- field public java.lang.String mValue;
+ ctor public UrlQuerySanitizer.ParameterValuePair(String, String);
+ field public String mParameter;
+ field public String mValue;
}
- public static abstract interface UrlQuerySanitizer.ValueSanitizer {
- method public abstract java.lang.String sanitize(java.lang.String);
+ public static interface UrlQuerySanitizer.ValueSanitizer {
+ method public String sanitize(String);
}
public class VpnService extends android.app.Service {
@@ -29057,28 +29159,28 @@
method public boolean protect(java.net.Socket);
method public boolean protect(java.net.DatagramSocket);
method public boolean setUnderlyingNetworks(android.net.Network[]);
- field public static final java.lang.String SERVICE_INTERFACE = "android.net.VpnService";
- field public static final java.lang.String SERVICE_META_DATA_SUPPORTS_ALWAYS_ON = "android.net.VpnService.SUPPORTS_ALWAYS_ON";
+ field public static final String SERVICE_INTERFACE = "android.net.VpnService";
+ field public static final String SERVICE_META_DATA_SUPPORTS_ALWAYS_ON = "android.net.VpnService.SUPPORTS_ALWAYS_ON";
}
public class VpnService.Builder {
ctor public VpnService.Builder();
method public android.net.VpnService.Builder addAddress(java.net.InetAddress, int);
- method public android.net.VpnService.Builder addAddress(java.lang.String, int);
- method public android.net.VpnService.Builder addAllowedApplication(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.net.VpnService.Builder addDisallowedApplication(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public android.net.VpnService.Builder addAddress(String, int);
+ method public android.net.VpnService.Builder addAllowedApplication(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public android.net.VpnService.Builder addDisallowedApplication(String) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.net.VpnService.Builder addDnsServer(java.net.InetAddress);
- method public android.net.VpnService.Builder addDnsServer(java.lang.String);
+ method public android.net.VpnService.Builder addDnsServer(String);
method public android.net.VpnService.Builder addRoute(java.net.InetAddress, int);
- method public android.net.VpnService.Builder addRoute(java.lang.String, int);
- method public android.net.VpnService.Builder addSearchDomain(java.lang.String);
+ method public android.net.VpnService.Builder addRoute(String, int);
+ method public android.net.VpnService.Builder addSearchDomain(String);
method public android.net.VpnService.Builder allowBypass();
method public android.net.VpnService.Builder allowFamily(int);
method public android.os.ParcelFileDescriptor establish();
method public android.net.VpnService.Builder setBlocking(boolean);
method public android.net.VpnService.Builder setConfigureIntent(android.app.PendingIntent);
method public android.net.VpnService.Builder setMtu(int);
- method public android.net.VpnService.Builder setSession(java.lang.String);
+ method public android.net.VpnService.Builder setSession(String);
method public android.net.VpnService.Builder setUnderlyingNetworks(android.net.Network[]);
}
@@ -29090,26 +29192,26 @@
method public void close() throws java.io.IOException;
method public void delete() throws java.io.IOException;
method public void flush();
- method public java.net.CacheResponse get(java.net.URI, java.lang.String, java.util.Map<java.lang.String, java.util.List<java.lang.String>>) throws java.io.IOException;
+ method public java.net.CacheResponse get(java.net.URI, String, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
method public int getHitCount();
method public static android.net.http.HttpResponseCache getInstalled();
method public int getNetworkCount();
method public int getRequestCount();
- method public static synchronized android.net.http.HttpResponseCache install(java.io.File, long) throws java.io.IOException;
+ method public static android.net.http.HttpResponseCache install(java.io.File, long) throws java.io.IOException;
method public long maxSize();
method public java.net.CacheRequest put(java.net.URI, java.net.URLConnection) throws java.io.IOException;
method public long size();
}
public class SslCertificate {
- ctor public deprecated SslCertificate(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- ctor public deprecated SslCertificate(java.lang.String, java.lang.String, java.util.Date, java.util.Date);
+ ctor @Deprecated public SslCertificate(String, String, String, String);
+ ctor @Deprecated public SslCertificate(String, String, java.util.Date, java.util.Date);
ctor public SslCertificate(java.security.cert.X509Certificate);
method public android.net.http.SslCertificate.DName getIssuedBy();
method public android.net.http.SslCertificate.DName getIssuedTo();
- method public deprecated java.lang.String getValidNotAfter();
+ method @Deprecated public String getValidNotAfter();
method public java.util.Date getValidNotAfterDate();
- method public deprecated java.lang.String getValidNotBefore();
+ method @Deprecated public String getValidNotBefore();
method public java.util.Date getValidNotBeforeDate();
method public java.security.cert.X509Certificate getX509Certificate();
method public static android.net.http.SslCertificate restoreState(android.os.Bundle);
@@ -29117,36 +29219,36 @@
}
public class SslCertificate.DName {
- ctor public SslCertificate.DName(java.lang.String);
- method public java.lang.String getCName();
- method public java.lang.String getDName();
- method public java.lang.String getOName();
- method public java.lang.String getUName();
+ ctor public SslCertificate.DName(String);
+ method public String getCName();
+ method public String getDName();
+ method public String getOName();
+ method public String getUName();
}
public class SslError {
- ctor public deprecated SslError(int, android.net.http.SslCertificate);
- ctor public deprecated SslError(int, java.security.cert.X509Certificate);
- ctor public SslError(int, android.net.http.SslCertificate, java.lang.String);
- ctor public SslError(int, java.security.cert.X509Certificate, java.lang.String);
+ ctor @Deprecated public SslError(int, android.net.http.SslCertificate);
+ ctor @Deprecated public SslError(int, java.security.cert.X509Certificate);
+ ctor public SslError(int, android.net.http.SslCertificate, String);
+ ctor public SslError(int, java.security.cert.X509Certificate, String);
method public boolean addError(int);
method public android.net.http.SslCertificate getCertificate();
method public int getPrimaryError();
- method public java.lang.String getUrl();
+ method public String getUrl();
method public boolean hasError(int);
field public static final int SSL_DATE_INVALID = 4; // 0x4
field public static final int SSL_EXPIRED = 1; // 0x1
field public static final int SSL_IDMISMATCH = 2; // 0x2
field public static final int SSL_INVALID = 5; // 0x5
- field public static final deprecated int SSL_MAX_ERROR = 6; // 0x6
+ field @Deprecated public static final int SSL_MAX_ERROR = 6; // 0x6
field public static final int SSL_NOTYETVALID = 0; // 0x0
field public static final int SSL_UNTRUSTED = 3; // 0x3
}
public class X509TrustManagerExtensions {
ctor public X509TrustManagerExtensions(javax.net.ssl.X509TrustManager) throws java.lang.IllegalArgumentException;
- method public java.util.List<java.security.cert.X509Certificate> checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String, java.lang.String) throws java.security.cert.CertificateException;
- method public boolean isSameTrustConfiguration(java.lang.String, java.lang.String);
+ method public java.util.List<java.security.cert.X509Certificate> checkServerTrusted(java.security.cert.X509Certificate[], String, String) throws java.security.cert.CertificateException;
+ method public boolean isSameTrustConfiguration(String, String);
method public boolean isUserAddedCertificate(java.security.cert.X509Certificate);
}
@@ -29155,13 +29257,13 @@
package android.net.nsd {
public final class NsdManager {
- method public void discoverServices(java.lang.String, int, android.net.nsd.NsdManager.DiscoveryListener);
+ method public void discoverServices(String, int, android.net.nsd.NsdManager.DiscoveryListener);
method public void registerService(android.net.nsd.NsdServiceInfo, int, android.net.nsd.NsdManager.RegistrationListener);
method public void resolveService(android.net.nsd.NsdServiceInfo, android.net.nsd.NsdManager.ResolveListener);
method public void stopServiceDiscovery(android.net.nsd.NsdManager.DiscoveryListener);
method public void unregisterService(android.net.nsd.NsdManager.RegistrationListener);
- field public static final java.lang.String ACTION_NSD_STATE_CHANGED = "android.net.nsd.STATE_CHANGED";
- field public static final java.lang.String EXTRA_NSD_STATE = "nsd_state";
+ field public static final String ACTION_NSD_STATE_CHANGED = "android.net.nsd.STATE_CHANGED";
+ field public static final String EXTRA_NSD_STATE = "nsd_state";
field public static final int FAILURE_ALREADY_ACTIVE = 3; // 0x3
field public static final int FAILURE_INTERNAL_ERROR = 0; // 0x0
field public static final int FAILURE_MAX_LIMIT = 4; // 0x4
@@ -29170,41 +29272,41 @@
field public static final int PROTOCOL_DNS_SD = 1; // 0x1
}
- public static abstract interface NsdManager.DiscoveryListener {
- method public abstract void onDiscoveryStarted(java.lang.String);
- method public abstract void onDiscoveryStopped(java.lang.String);
- method public abstract void onServiceFound(android.net.nsd.NsdServiceInfo);
- method public abstract void onServiceLost(android.net.nsd.NsdServiceInfo);
- method public abstract void onStartDiscoveryFailed(java.lang.String, int);
- method public abstract void onStopDiscoveryFailed(java.lang.String, int);
+ public static interface NsdManager.DiscoveryListener {
+ method public void onDiscoveryStarted(String);
+ method public void onDiscoveryStopped(String);
+ method public void onServiceFound(android.net.nsd.NsdServiceInfo);
+ method public void onServiceLost(android.net.nsd.NsdServiceInfo);
+ method public void onStartDiscoveryFailed(String, int);
+ method public void onStopDiscoveryFailed(String, int);
}
- public static abstract interface NsdManager.RegistrationListener {
- method public abstract void onRegistrationFailed(android.net.nsd.NsdServiceInfo, int);
- method public abstract void onServiceRegistered(android.net.nsd.NsdServiceInfo);
- method public abstract void onServiceUnregistered(android.net.nsd.NsdServiceInfo);
- method public abstract void onUnregistrationFailed(android.net.nsd.NsdServiceInfo, int);
+ public static interface NsdManager.RegistrationListener {
+ method public void onRegistrationFailed(android.net.nsd.NsdServiceInfo, int);
+ method public void onServiceRegistered(android.net.nsd.NsdServiceInfo);
+ method public void onServiceUnregistered(android.net.nsd.NsdServiceInfo);
+ method public void onUnregistrationFailed(android.net.nsd.NsdServiceInfo, int);
}
- public static abstract interface NsdManager.ResolveListener {
- method public abstract void onResolveFailed(android.net.nsd.NsdServiceInfo, int);
- method public abstract void onServiceResolved(android.net.nsd.NsdServiceInfo);
+ public static interface NsdManager.ResolveListener {
+ method public void onResolveFailed(android.net.nsd.NsdServiceInfo, int);
+ method public void onServiceResolved(android.net.nsd.NsdServiceInfo);
}
public final class NsdServiceInfo implements android.os.Parcelable {
ctor public NsdServiceInfo();
method public int describeContents();
- method public java.util.Map<java.lang.String, byte[]> getAttributes();
+ method public java.util.Map<java.lang.String,byte[]> getAttributes();
method public java.net.InetAddress getHost();
method public int getPort();
- method public java.lang.String getServiceName();
- method public java.lang.String getServiceType();
- method public void removeAttribute(java.lang.String);
- method public void setAttribute(java.lang.String, java.lang.String);
+ method public String getServiceName();
+ method public String getServiceType();
+ method public void removeAttribute(String);
+ method public void setAttribute(String, String);
method public void setHost(java.net.InetAddress);
method public void setPort(int);
- method public void setServiceName(java.lang.String);
- method public void setServiceType(java.lang.String);
+ method public void setServiceName(String);
+ method public void setServiceType(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.nsd.NsdServiceInfo> CREATOR;
}
@@ -29214,15 +29316,15 @@
package android.net.rtp {
public class AudioCodec {
- method public static android.net.rtp.AudioCodec getCodec(int, java.lang.String, java.lang.String);
+ method public static android.net.rtp.AudioCodec getCodec(int, String, String);
method public static android.net.rtp.AudioCodec[] getCodecs();
field public static final android.net.rtp.AudioCodec AMR;
field public static final android.net.rtp.AudioCodec GSM;
field public static final android.net.rtp.AudioCodec GSM_EFR;
field public static final android.net.rtp.AudioCodec PCMA;
field public static final android.net.rtp.AudioCodec PCMU;
- field public final java.lang.String fmtp;
- field public final java.lang.String rtpmap;
+ field public final String fmtp;
+ field public final String rtpmap;
field public final int type;
}
@@ -29272,7 +29374,7 @@
public class SipAudioCall {
ctor public SipAudioCall(android.content.Context, android.net.sip.SipProfile);
method public void answerCall(int) throws android.net.sip.SipException;
- method public void attachCall(android.net.sip.SipSession, java.lang.String) throws android.net.sip.SipException;
+ method public void attachCall(android.net.sip.SipSession, String) throws android.net.sip.SipException;
method public void close();
method public void continueCall(int) throws android.net.sip.SipException;
method public void endCall() throws android.net.sip.SipException;
@@ -29301,14 +29403,14 @@
method public void onCallHeld(android.net.sip.SipAudioCall);
method public void onCalling(android.net.sip.SipAudioCall);
method public void onChanged(android.net.sip.SipAudioCall);
- method public void onError(android.net.sip.SipAudioCall, int, java.lang.String);
+ method public void onError(android.net.sip.SipAudioCall, int, String);
method public void onReadyToCall(android.net.sip.SipAudioCall);
method public void onRinging(android.net.sip.SipAudioCall, android.net.sip.SipProfile);
method public void onRingingBack(android.net.sip.SipAudioCall);
}
public class SipErrorCode {
- method public static java.lang.String toString(int);
+ method public static String toString(int);
field public static final int CLIENT_ERROR = -4; // 0xfffffffc
field public static final int CROSS_DOMAIN_AUTHENTICATION = -11; // 0xfffffff5
field public static final int DATA_CONNECTION_LOST = -10; // 0xfffffff6
@@ -29326,87 +29428,87 @@
public class SipException extends java.lang.Exception {
ctor public SipException();
- ctor public SipException(java.lang.String);
- ctor public SipException(java.lang.String, java.lang.Throwable);
+ ctor public SipException(String);
+ ctor public SipException(String, Throwable);
}
public class SipManager {
- method public void close(java.lang.String) throws android.net.sip.SipException;
+ method public void close(String) throws android.net.sip.SipException;
method public android.net.sip.SipSession createSipSession(android.net.sip.SipProfile, android.net.sip.SipSession.Listener) throws android.net.sip.SipException;
- method public static java.lang.String getCallId(android.content.Intent);
- method public static java.lang.String getOfferSessionDescription(android.content.Intent);
+ method public static String getCallId(android.content.Intent);
+ method public static String getOfferSessionDescription(android.content.Intent);
method public android.net.sip.SipSession getSessionFor(android.content.Intent) throws android.net.sip.SipException;
method public static boolean isApiSupported(android.content.Context);
method public static boolean isIncomingCallIntent(android.content.Intent);
- method public boolean isOpened(java.lang.String) throws android.net.sip.SipException;
- method public boolean isRegistered(java.lang.String) throws android.net.sip.SipException;
+ method public boolean isOpened(String) throws android.net.sip.SipException;
+ method public boolean isRegistered(String) throws android.net.sip.SipException;
method public static boolean isSipWifiOnly(android.content.Context);
method public static boolean isVoipSupported(android.content.Context);
method public android.net.sip.SipAudioCall makeAudioCall(android.net.sip.SipProfile, android.net.sip.SipProfile, android.net.sip.SipAudioCall.Listener, int) throws android.net.sip.SipException;
- method public android.net.sip.SipAudioCall makeAudioCall(java.lang.String, java.lang.String, android.net.sip.SipAudioCall.Listener, int) throws android.net.sip.SipException;
+ method public android.net.sip.SipAudioCall makeAudioCall(String, String, android.net.sip.SipAudioCall.Listener, int) throws android.net.sip.SipException;
method public static android.net.sip.SipManager newInstance(android.content.Context);
method public void open(android.net.sip.SipProfile) throws android.net.sip.SipException;
method public void open(android.net.sip.SipProfile, android.app.PendingIntent, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
method public void register(android.net.sip.SipProfile, int, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
- method public void setRegistrationListener(java.lang.String, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
+ method public void setRegistrationListener(String, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
method public android.net.sip.SipAudioCall takeAudioCall(android.content.Intent, android.net.sip.SipAudioCall.Listener) throws android.net.sip.SipException;
method public void unregister(android.net.sip.SipProfile, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
- field public static final java.lang.String EXTRA_CALL_ID = "android:sipCallID";
- field public static final java.lang.String EXTRA_OFFER_SD = "android:sipOfferSD";
+ field public static final String EXTRA_CALL_ID = "android:sipCallID";
+ field public static final String EXTRA_OFFER_SD = "android:sipOfferSD";
field public static final int INCOMING_CALL_RESULT_CODE = 101; // 0x65
}
public class SipProfile implements java.lang.Cloneable android.os.Parcelable java.io.Serializable {
method public int describeContents();
- method public java.lang.String getAuthUserName();
+ method public String getAuthUserName();
method public boolean getAutoRegistration();
- method public java.lang.String getDisplayName();
- method public java.lang.String getPassword();
+ method public String getDisplayName();
+ method public String getPassword();
method public int getPort();
- method public java.lang.String getProfileName();
- method public java.lang.String getProtocol();
- method public java.lang.String getProxyAddress();
+ method public String getProfileName();
+ method public String getProtocol();
+ method public String getProxyAddress();
method public boolean getSendKeepAlive();
- method public java.lang.String getSipDomain();
- method public java.lang.String getUriString();
- method public java.lang.String getUserName();
+ method public String getSipDomain();
+ method public String getUriString();
+ method public String getUserName();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.sip.SipProfile> CREATOR;
}
public static class SipProfile.Builder {
ctor public SipProfile.Builder(android.net.sip.SipProfile);
- ctor public SipProfile.Builder(java.lang.String) throws java.text.ParseException;
- ctor public SipProfile.Builder(java.lang.String, java.lang.String) throws java.text.ParseException;
+ ctor public SipProfile.Builder(String) throws java.text.ParseException;
+ ctor public SipProfile.Builder(String, String) throws java.text.ParseException;
method public android.net.sip.SipProfile build();
- method public android.net.sip.SipProfile.Builder setAuthUserName(java.lang.String);
+ method public android.net.sip.SipProfile.Builder setAuthUserName(String);
method public android.net.sip.SipProfile.Builder setAutoRegistration(boolean);
- method public android.net.sip.SipProfile.Builder setDisplayName(java.lang.String);
- method public android.net.sip.SipProfile.Builder setOutboundProxy(java.lang.String);
- method public android.net.sip.SipProfile.Builder setPassword(java.lang.String);
+ method public android.net.sip.SipProfile.Builder setDisplayName(String);
+ method public android.net.sip.SipProfile.Builder setOutboundProxy(String);
+ method public android.net.sip.SipProfile.Builder setPassword(String);
method public android.net.sip.SipProfile.Builder setPort(int) throws java.lang.IllegalArgumentException;
- method public android.net.sip.SipProfile.Builder setProfileName(java.lang.String);
- method public android.net.sip.SipProfile.Builder setProtocol(java.lang.String) throws java.lang.IllegalArgumentException;
+ method public android.net.sip.SipProfile.Builder setProfileName(String);
+ method public android.net.sip.SipProfile.Builder setProtocol(String) throws java.lang.IllegalArgumentException;
method public android.net.sip.SipProfile.Builder setSendKeepAlive(boolean);
}
- public abstract interface SipRegistrationListener {
- method public abstract void onRegistering(java.lang.String);
- method public abstract void onRegistrationDone(java.lang.String, long);
- method public abstract void onRegistrationFailed(java.lang.String, int, java.lang.String);
+ public interface SipRegistrationListener {
+ method public void onRegistering(String);
+ method public void onRegistrationDone(String, long);
+ method public void onRegistrationFailed(String, int, String);
}
public final class SipSession {
- method public void answerCall(java.lang.String, int);
- method public void changeCall(java.lang.String, int);
+ method public void answerCall(String, int);
+ method public void changeCall(String, int);
method public void endCall();
- method public java.lang.String getCallId();
- method public java.lang.String getLocalIp();
+ method public String getCallId();
+ method public String getLocalIp();
method public android.net.sip.SipProfile getLocalProfile();
method public android.net.sip.SipProfile getPeerProfile();
method public int getState();
method public boolean isInCall();
- method public void makeCall(android.net.sip.SipProfile, java.lang.String, int);
+ method public void makeCall(android.net.sip.SipProfile, String, int);
method public void register(int);
method public void setListener(android.net.sip.SipSession.Listener);
method public void unregister();
@@ -29415,21 +29517,21 @@
public static class SipSession.Listener {
ctor public SipSession.Listener();
method public void onCallBusy(android.net.sip.SipSession);
- method public void onCallChangeFailed(android.net.sip.SipSession, int, java.lang.String);
+ method public void onCallChangeFailed(android.net.sip.SipSession, int, String);
method public void onCallEnded(android.net.sip.SipSession);
- method public void onCallEstablished(android.net.sip.SipSession, java.lang.String);
+ method public void onCallEstablished(android.net.sip.SipSession, String);
method public void onCalling(android.net.sip.SipSession);
- method public void onError(android.net.sip.SipSession, int, java.lang.String);
+ method public void onError(android.net.sip.SipSession, int, String);
method public void onRegistering(android.net.sip.SipSession);
method public void onRegistrationDone(android.net.sip.SipSession, int);
- method public void onRegistrationFailed(android.net.sip.SipSession, int, java.lang.String);
+ method public void onRegistrationFailed(android.net.sip.SipSession, int, String);
method public void onRegistrationTimeout(android.net.sip.SipSession);
- method public void onRinging(android.net.sip.SipSession, android.net.sip.SipProfile, java.lang.String);
+ method public void onRinging(android.net.sip.SipSession, android.net.sip.SipProfile, String);
method public void onRingingBack(android.net.sip.SipSession);
}
public static class SipSession.State {
- method public static java.lang.String toString(int);
+ method public static String toString(int);
field public static final int DEREGISTERING = 2; // 0x2
field public static final int INCOMING_CALL = 3; // 0x3
field public static final int INCOMING_CALL_ANSWERING = 4; // 0x4
@@ -29448,13 +29550,13 @@
package android.net.ssl {
public class SSLEngines {
- method public static boolean isSupportedEngine(javax.net.ssl.SSLEngine);
- method public static void setUseSessionTickets(javax.net.ssl.SSLEngine, boolean);
+ method public static boolean isSupportedEngine(@NonNull javax.net.ssl.SSLEngine);
+ method public static void setUseSessionTickets(@NonNull javax.net.ssl.SSLEngine, boolean);
}
public class SSLSockets {
- method public static boolean isSupportedSocket(javax.net.ssl.SSLSocket);
- method public static void setUseSessionTickets(javax.net.ssl.SSLSocket, boolean);
+ method public static boolean isSupportedSocket(@NonNull javax.net.ssl.SSLSocket);
+ method public static void setUseSessionTickets(@NonNull javax.net.ssl.SSLSocket, boolean);
}
}
@@ -29466,29 +29568,27 @@
method public boolean is80211mcResponder();
method public boolean isPasspointNetwork();
method public void writeToParcel(android.os.Parcel, int);
- field public java.lang.String BSSID;
+ field public String BSSID;
field public static final int CHANNEL_WIDTH_160MHZ = 3; // 0x3
field public static final int CHANNEL_WIDTH_20MHZ = 0; // 0x0
field public static final int CHANNEL_WIDTH_40MHZ = 1; // 0x1
field public static final int CHANNEL_WIDTH_80MHZ = 2; // 0x2
field public static final int CHANNEL_WIDTH_80MHZ_PLUS_MHZ = 4; // 0x4
- field public java.lang.String SSID;
- field public java.lang.String capabilities;
+ field public String SSID;
+ field public String capabilities;
field public int centerFreq0;
field public int centerFreq1;
field public int channelWidth;
field public int frequency;
field public int level;
- field public java.lang.CharSequence operatorFriendlyName;
+ field public CharSequence operatorFriendlyName;
field public long timestamp;
- field public java.lang.CharSequence venueName;
+ field public CharSequence venueName;
}
- public final class SupplicantState extends java.lang.Enum implements android.os.Parcelable {
+ public enum SupplicantState implements android.os.Parcelable {
method public int describeContents();
method public static boolean isValidState(android.net.wifi.SupplicantState);
- method public static android.net.wifi.SupplicantState valueOf(java.lang.String);
- method public static final android.net.wifi.SupplicantState[] values();
method public void writeToParcel(android.os.Parcel, int);
enum_constant public static final android.net.wifi.SupplicantState ASSOCIATED;
enum_constant public static final android.net.wifi.SupplicantState ASSOCIATING;
@@ -29505,127 +29605,128 @@
enum_constant public static final android.net.wifi.SupplicantState UNINITIALIZED;
}
- public deprecated class WifiConfiguration implements android.os.Parcelable {
- ctor public WifiConfiguration();
+ @Deprecated public class WifiConfiguration implements android.os.Parcelable {
+ ctor @Deprecated public WifiConfiguration();
method public int describeContents();
- method public android.net.ProxyInfo getHttpProxy();
- method public boolean isPasspoint();
- method public void setHttpProxy(android.net.ProxyInfo);
+ method @Deprecated public android.net.ProxyInfo getHttpProxy();
+ method @Deprecated @NonNull public android.net.MacAddress getRandomizedMacAddress();
+ method @Deprecated public boolean isPasspoint();
+ method @Deprecated public void setHttpProxy(android.net.ProxyInfo);
method public void writeToParcel(android.os.Parcel, int);
- field public java.lang.String BSSID;
- field public java.lang.String FQDN;
- field public java.lang.String SSID;
- field public java.util.BitSet allowedAuthAlgorithms;
- field public java.util.BitSet allowedGroupCiphers;
- field public java.util.BitSet allowedGroupManagementCiphers;
- field public java.util.BitSet allowedKeyManagement;
- field public java.util.BitSet allowedPairwiseCiphers;
- field public java.util.BitSet allowedProtocols;
- field public java.util.BitSet allowedSuiteBCiphers;
- field public android.net.wifi.WifiEnterpriseConfig enterpriseConfig;
- field public boolean hiddenSSID;
- field public boolean isHomeProviderNetwork;
- field public int networkId;
- field public java.lang.String preSharedKey;
- field public deprecated int priority;
- field public java.lang.String providerFriendlyName;
- field public long[] roamingConsortiumIds;
- field public int status;
- field public deprecated java.lang.String[] wepKeys;
- field public deprecated int wepTxKeyIndex;
+ field @Deprecated public String BSSID;
+ field @Deprecated public String FQDN;
+ field @Deprecated public String SSID;
+ field @Deprecated public java.util.BitSet allowedAuthAlgorithms;
+ field @Deprecated public java.util.BitSet allowedGroupCiphers;
+ field @Deprecated public java.util.BitSet allowedGroupManagementCiphers;
+ field @Deprecated public java.util.BitSet allowedKeyManagement;
+ field @Deprecated public java.util.BitSet allowedPairwiseCiphers;
+ field @Deprecated public java.util.BitSet allowedProtocols;
+ field @Deprecated public java.util.BitSet allowedSuiteBCiphers;
+ field @Deprecated public android.net.wifi.WifiEnterpriseConfig enterpriseConfig;
+ field @Deprecated public boolean hiddenSSID;
+ field @Deprecated public boolean isHomeProviderNetwork;
+ field @Deprecated public int networkId;
+ field @Deprecated public String preSharedKey;
+ field @Deprecated public int priority;
+ field @Deprecated public String providerFriendlyName;
+ field @Deprecated public long[] roamingConsortiumIds;
+ field @Deprecated public int status;
+ field @Deprecated public String[] wepKeys;
+ field @Deprecated public int wepTxKeyIndex;
}
- public static class WifiConfiguration.AuthAlgorithm {
- field public static final int LEAP = 2; // 0x2
- field public static final int OPEN = 0; // 0x0
- field public static final deprecated int SHARED = 1; // 0x1
- field public static final java.lang.String[] strings;
- field public static final java.lang.String varName = "auth_alg";
+ @Deprecated public static class WifiConfiguration.AuthAlgorithm {
+ field @Deprecated public static final int LEAP = 2; // 0x2
+ field @Deprecated public static final int OPEN = 0; // 0x0
+ field @Deprecated public static final int SHARED = 1; // 0x1
+ field @Deprecated public static final String[] strings;
+ field @Deprecated public static final String varName = "auth_alg";
}
- public static class WifiConfiguration.GroupCipher {
- field public static final int CCMP = 3; // 0x3
- field public static final int GCMP_256 = 5; // 0x5
- field public static final int TKIP = 2; // 0x2
- field public static final deprecated int WEP104 = 1; // 0x1
- field public static final deprecated int WEP40 = 0; // 0x0
- field public static final java.lang.String[] strings;
- field public static final java.lang.String varName = "group";
+ @Deprecated public static class WifiConfiguration.GroupCipher {
+ field @Deprecated public static final int CCMP = 3; // 0x3
+ field @Deprecated public static final int GCMP_256 = 5; // 0x5
+ field @Deprecated public static final int TKIP = 2; // 0x2
+ field @Deprecated public static final int WEP104 = 1; // 0x1
+ field @Deprecated public static final int WEP40 = 0; // 0x0
+ field @Deprecated public static final String[] strings;
+ field @Deprecated public static final String varName = "group";
}
- public static class WifiConfiguration.GroupMgmtCipher {
- field public static final int BIP_CMAC_256 = 0; // 0x0
- field public static final int BIP_GMAC_128 = 1; // 0x1
- field public static final int BIP_GMAC_256 = 2; // 0x2
+ @Deprecated public static class WifiConfiguration.GroupMgmtCipher {
+ field @Deprecated public static final int BIP_CMAC_256 = 0; // 0x0
+ field @Deprecated public static final int BIP_GMAC_128 = 1; // 0x1
+ field @Deprecated public static final int BIP_GMAC_256 = 2; // 0x2
}
- public static class WifiConfiguration.KeyMgmt {
- field public static final int IEEE8021X = 3; // 0x3
- field public static final int NONE = 0; // 0x0
- field public static final int OWE = 9; // 0x9
- field public static final int SAE = 8; // 0x8
- field public static final int SUITE_B_192 = 10; // 0xa
- field public static final int WPA_EAP = 2; // 0x2
- field public static final int WPA_PSK = 1; // 0x1
- field public static final java.lang.String[] strings;
- field public static final java.lang.String varName = "key_mgmt";
+ @Deprecated public static class WifiConfiguration.KeyMgmt {
+ field @Deprecated public static final int IEEE8021X = 3; // 0x3
+ field @Deprecated public static final int NONE = 0; // 0x0
+ field @Deprecated public static final int OWE = 9; // 0x9
+ field @Deprecated public static final int SAE = 8; // 0x8
+ field @Deprecated public static final int SUITE_B_192 = 10; // 0xa
+ field @Deprecated public static final int WPA_EAP = 2; // 0x2
+ field @Deprecated public static final int WPA_PSK = 1; // 0x1
+ field @Deprecated public static final String[] strings;
+ field @Deprecated public static final String varName = "key_mgmt";
}
- public static class WifiConfiguration.PairwiseCipher {
- field public static final int CCMP = 2; // 0x2
- field public static final int GCMP_256 = 3; // 0x3
- field public static final int NONE = 0; // 0x0
- field public static final deprecated int TKIP = 1; // 0x1
- field public static final java.lang.String[] strings;
- field public static final java.lang.String varName = "pairwise";
+ @Deprecated public static class WifiConfiguration.PairwiseCipher {
+ field @Deprecated public static final int CCMP = 2; // 0x2
+ field @Deprecated public static final int GCMP_256 = 3; // 0x3
+ field @Deprecated public static final int NONE = 0; // 0x0
+ field @Deprecated public static final int TKIP = 1; // 0x1
+ field @Deprecated public static final String[] strings;
+ field @Deprecated public static final String varName = "pairwise";
}
- public static class WifiConfiguration.Protocol {
- field public static final int RSN = 1; // 0x1
- field public static final deprecated int WPA = 0; // 0x0
- field public static final java.lang.String[] strings;
- field public static final java.lang.String varName = "proto";
+ @Deprecated public static class WifiConfiguration.Protocol {
+ field @Deprecated public static final int RSN = 1; // 0x1
+ field @Deprecated public static final int WPA = 0; // 0x0
+ field @Deprecated public static final String[] strings;
+ field @Deprecated public static final String varName = "proto";
}
- public static class WifiConfiguration.Status {
- field public static final int CURRENT = 0; // 0x0
- field public static final int DISABLED = 1; // 0x1
- field public static final int ENABLED = 2; // 0x2
- field public static final java.lang.String[] strings;
+ @Deprecated public static class WifiConfiguration.Status {
+ field @Deprecated public static final int CURRENT = 0; // 0x0
+ field @Deprecated public static final int DISABLED = 1; // 0x1
+ field @Deprecated public static final int ENABLED = 2; // 0x2
+ field @Deprecated public static final String[] strings;
}
public class WifiEnterpriseConfig implements android.os.Parcelable {
ctor public WifiEnterpriseConfig();
ctor public WifiEnterpriseConfig(android.net.wifi.WifiEnterpriseConfig);
method public int describeContents();
- method public java.lang.String getAltSubjectMatch();
- method public java.lang.String getAnonymousIdentity();
- method public java.security.cert.X509Certificate getCaCertificate();
- method public java.security.cert.X509Certificate[] getCaCertificates();
+ method public String getAltSubjectMatch();
+ method public String getAnonymousIdentity();
+ method @Nullable public java.security.cert.X509Certificate getCaCertificate();
+ method @Nullable public java.security.cert.X509Certificate[] getCaCertificates();
method public java.security.cert.X509Certificate getClientCertificate();
- method public java.security.cert.X509Certificate[] getClientCertificateChain();
- method public java.lang.String getDomainSuffixMatch();
+ method @Nullable public java.security.cert.X509Certificate[] getClientCertificateChain();
+ method public String getDomainSuffixMatch();
method public int getEapMethod();
- method public java.lang.String getIdentity();
- method public java.lang.String getPassword();
+ method public String getIdentity();
+ method public String getPassword();
method public int getPhase2Method();
- method public java.lang.String getPlmn();
- method public java.lang.String getRealm();
- method public deprecated java.lang.String getSubjectMatch();
- method public void setAltSubjectMatch(java.lang.String);
- method public void setAnonymousIdentity(java.lang.String);
- method public void setCaCertificate(java.security.cert.X509Certificate);
- method public void setCaCertificates(java.security.cert.X509Certificate[]);
+ method public String getPlmn();
+ method public String getRealm();
+ method @Deprecated public String getSubjectMatch();
+ method public void setAltSubjectMatch(String);
+ method public void setAnonymousIdentity(String);
+ method public void setCaCertificate(@Nullable java.security.cert.X509Certificate);
+ method public void setCaCertificates(@Nullable java.security.cert.X509Certificate[]);
method public void setClientKeyEntry(java.security.PrivateKey, java.security.cert.X509Certificate);
method public void setClientKeyEntryWithCertificateChain(java.security.PrivateKey, java.security.cert.X509Certificate[]);
- method public void setDomainSuffixMatch(java.lang.String);
+ method public void setDomainSuffixMatch(String);
method public void setEapMethod(int);
- method public void setIdentity(java.lang.String);
- method public void setPassword(java.lang.String);
+ method public void setIdentity(String);
+ method public void setPassword(String);
method public void setPhase2Method(int);
- method public void setPlmn(java.lang.String);
- method public void setRealm(java.lang.String);
- method public deprecated void setSubjectMatch(java.lang.String);
+ method public void setPlmn(String);
+ method public void setRealm(String);
+ method @Deprecated public void setSubjectMatch(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.wifi.WifiEnterpriseConfig> CREATOR;
}
@@ -29655,110 +29756,112 @@
public class WifiInfo implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getBSSID();
+ method public String getBSSID();
method public static android.net.NetworkInfo.DetailedState getDetailedStateOf(android.net.wifi.SupplicantState);
method public int getFrequency();
method public boolean getHiddenSSID();
method public int getIpAddress();
method public int getLinkSpeed();
- method public java.lang.String getMacAddress();
+ method public String getMacAddress();
method public int getNetworkId();
method public int getRssi();
- method public java.lang.String getSSID();
+ method public int getRxLinkSpeedMbps();
+ method public String getSSID();
method public android.net.wifi.SupplicantState getSupplicantState();
+ method public int getTxLinkSpeedMbps();
method public void writeToParcel(android.os.Parcel, int);
- field public static final java.lang.String FREQUENCY_UNITS = "MHz";
- field public static final java.lang.String LINK_SPEED_UNITS = "Mbps";
+ field public static final String FREQUENCY_UNITS = "MHz";
+ field public static final String LINK_SPEED_UNITS = "Mbps";
}
public class WifiManager {
- method public deprecated int addNetwork(android.net.wifi.WifiConfiguration);
- method public int addNetworkSuggestions(java.util.List<android.net.wifi.WifiNetworkSuggestion>);
+ method @Deprecated public int addNetwork(android.net.wifi.WifiConfiguration);
+ method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public int addNetworkSuggestions(@NonNull java.util.List<android.net.wifi.WifiNetworkSuggestion>);
method public void addOrUpdatePasspointConfiguration(android.net.wifi.hotspot2.PasspointConfiguration);
method public static int calculateSignalLevel(int, int);
- method public deprecated void cancelWps(android.net.wifi.WifiManager.WpsCallback);
+ method @Deprecated public void cancelWps(android.net.wifi.WifiManager.WpsCallback);
method public static int compareSignalLevel(int, int);
- method public android.net.wifi.WifiManager.MulticastLock createMulticastLock(java.lang.String);
- method public android.net.wifi.WifiManager.WifiLock createWifiLock(int, java.lang.String);
- method public deprecated android.net.wifi.WifiManager.WifiLock createWifiLock(java.lang.String);
- method public deprecated boolean disableNetwork(int);
- method public deprecated boolean disconnect();
- method public deprecated boolean enableNetwork(int, boolean);
- method public deprecated java.util.List<android.net.wifi.WifiConfiguration> getConfiguredNetworks();
+ method public android.net.wifi.WifiManager.MulticastLock createMulticastLock(String);
+ method public android.net.wifi.WifiManager.WifiLock createWifiLock(int, String);
+ method @Deprecated public android.net.wifi.WifiManager.WifiLock createWifiLock(String);
+ method @Deprecated public boolean disableNetwork(int);
+ method @Deprecated public boolean disconnect();
+ method @Deprecated public boolean enableNetwork(int, boolean);
+ method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE}) public java.util.List<android.net.wifi.WifiConfiguration> getConfiguredNetworks();
method public android.net.wifi.WifiInfo getConnectionInfo();
method public android.net.DhcpInfo getDhcpInfo();
method public int getMaxNumberOfNetworkSuggestionsPerApp();
- method public java.util.List<android.net.wifi.hotspot2.PasspointConfiguration> getPasspointConfigurations();
+ method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", "android.permission.NETWORK_SETUP_WIZARD"}) public java.util.List<android.net.wifi.hotspot2.PasspointConfiguration> getPasspointConfigurations();
method public java.util.List<android.net.wifi.ScanResult> getScanResults();
method public int getWifiState();
method public boolean is5GHzBandSupported();
method public boolean isDeviceToApRttSupported();
- method public boolean isDppSupported();
+ method public boolean isEasyConnectSupported();
method public boolean isEnhancedPowerReportingSupported();
method public boolean isOweSupported();
method public boolean isP2pSupported();
method public boolean isPreferredNetworkOffloadSupported();
- method public deprecated boolean isScanAlwaysAvailable();
+ method @Deprecated public boolean isScanAlwaysAvailable();
method public boolean isTdlsSupported();
method public boolean isWifiEnabled();
method public boolean isWpa3SaeSupported();
method public boolean isWpa3SuiteBSupported();
- method public deprecated boolean pingSupplicant();
- method public deprecated boolean reassociate();
- method public deprecated boolean reconnect();
- method public deprecated boolean removeNetwork(int);
- method public int removeNetworkSuggestions(java.util.List<android.net.wifi.WifiNetworkSuggestion>);
- method public void removePasspointConfiguration(java.lang.String);
- method public deprecated boolean saveConfiguration();
+ method @Deprecated public boolean pingSupplicant();
+ method @Deprecated public boolean reassociate();
+ method @Deprecated public boolean reconnect();
+ method @Deprecated public boolean removeNetwork(int);
+ method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public int removeNetworkSuggestions(@NonNull java.util.List<android.net.wifi.WifiNetworkSuggestion>);
+ method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", "android.permission.NETWORK_SETUP_WIZARD"}) public void removePasspointConfiguration(String);
+ method @Deprecated public boolean saveConfiguration();
method public void setTdlsEnabled(java.net.InetAddress, boolean);
- method public void setTdlsEnabledWithMacAddress(java.lang.String, boolean);
- method public deprecated boolean setWifiEnabled(boolean);
- method public void startLocalOnlyHotspot(android.net.wifi.WifiManager.LocalOnlyHotspotCallback, android.os.Handler);
- method public deprecated boolean startScan();
- method public deprecated void startWps(android.net.wifi.WpsInfo, android.net.wifi.WifiManager.WpsCallback);
- method public deprecated int updateNetwork(android.net.wifi.WifiConfiguration);
- field public static final java.lang.String ACTION_PICK_WIFI_NETWORK = "android.net.wifi.PICK_WIFI_NETWORK";
- field public static final java.lang.String ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE = "android.net.wifi.action.REQUEST_SCAN_ALWAYS_AVAILABLE";
- field public static final java.lang.String ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION = "android.net.wifi.action.WIFI_NETWORK_SUGGESTION_POST_CONNECTION";
- field public static final deprecated int ERROR_AUTHENTICATING = 1; // 0x1
- field public static final deprecated java.lang.String EXTRA_BSSID = "bssid";
- field public static final java.lang.String EXTRA_NETWORK_INFO = "networkInfo";
- field public static final java.lang.String EXTRA_NETWORK_SUGGESTION = "android.net.wifi.extra.NETWORK_SUGGESTION";
- field public static final java.lang.String EXTRA_NEW_RSSI = "newRssi";
- field public static final deprecated java.lang.String EXTRA_NEW_STATE = "newState";
- field public static final java.lang.String EXTRA_PREVIOUS_WIFI_STATE = "previous_wifi_state";
- field public static final java.lang.String EXTRA_RESULTS_UPDATED = "resultsUpdated";
- field public static final deprecated java.lang.String EXTRA_SUPPLICANT_CONNECTED = "connected";
- field public static final deprecated java.lang.String EXTRA_SUPPLICANT_ERROR = "supplicantError";
- field public static final deprecated java.lang.String EXTRA_WIFI_INFO = "wifiInfo";
- field public static final java.lang.String EXTRA_WIFI_STATE = "wifi_state";
- field public static final java.lang.String NETWORK_IDS_CHANGED_ACTION = "android.net.wifi.NETWORK_IDS_CHANGED";
- field public static final java.lang.String NETWORK_STATE_CHANGED_ACTION = "android.net.wifi.STATE_CHANGE";
- field public static final java.lang.String RSSI_CHANGED_ACTION = "android.net.wifi.RSSI_CHANGED";
- field public static final java.lang.String SCAN_RESULTS_AVAILABLE_ACTION = "android.net.wifi.SCAN_RESULTS";
+ method public void setTdlsEnabledWithMacAddress(String, boolean);
+ method @Deprecated public boolean setWifiEnabled(boolean);
+ method public void startLocalOnlyHotspot(android.net.wifi.WifiManager.LocalOnlyHotspotCallback, @Nullable android.os.Handler);
+ method @Deprecated public boolean startScan();
+ method @Deprecated public void startWps(android.net.wifi.WpsInfo, android.net.wifi.WifiManager.WpsCallback);
+ method @Deprecated public int updateNetwork(android.net.wifi.WifiConfiguration);
+ field public static final String ACTION_PICK_WIFI_NETWORK = "android.net.wifi.PICK_WIFI_NETWORK";
+ field public static final String ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE = "android.net.wifi.action.REQUEST_SCAN_ALWAYS_AVAILABLE";
+ field public static final String ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION = "android.net.wifi.action.WIFI_NETWORK_SUGGESTION_POST_CONNECTION";
+ field @Deprecated public static final int ERROR_AUTHENTICATING = 1; // 0x1
+ field @Deprecated public static final String EXTRA_BSSID = "bssid";
+ field public static final String EXTRA_NETWORK_INFO = "networkInfo";
+ field public static final String EXTRA_NETWORK_SUGGESTION = "android.net.wifi.extra.NETWORK_SUGGESTION";
+ field public static final String EXTRA_NEW_RSSI = "newRssi";
+ field @Deprecated public static final String EXTRA_NEW_STATE = "newState";
+ field public static final String EXTRA_PREVIOUS_WIFI_STATE = "previous_wifi_state";
+ field public static final String EXTRA_RESULTS_UPDATED = "resultsUpdated";
+ field @Deprecated public static final String EXTRA_SUPPLICANT_CONNECTED = "connected";
+ field @Deprecated public static final String EXTRA_SUPPLICANT_ERROR = "supplicantError";
+ field @Deprecated public static final String EXTRA_WIFI_INFO = "wifiInfo";
+ field public static final String EXTRA_WIFI_STATE = "wifi_state";
+ field public static final String NETWORK_IDS_CHANGED_ACTION = "android.net.wifi.NETWORK_IDS_CHANGED";
+ field public static final String NETWORK_STATE_CHANGED_ACTION = "android.net.wifi.STATE_CHANGE";
+ field public static final String RSSI_CHANGED_ACTION = "android.net.wifi.RSSI_CHANGED";
+ field public static final String SCAN_RESULTS_AVAILABLE_ACTION = "android.net.wifi.SCAN_RESULTS";
field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_DUPLICATE = 3; // 0x3
field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_EXCEEDS_MAX_PER_APP = 4; // 0x4
field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_APP_DISALLOWED = 2; // 0x2
field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL = 1; // 0x1
field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_REMOVE_INVALID = 5; // 0x5
field public static final int STATUS_NETWORK_SUGGESTIONS_SUCCESS = 0; // 0x0
- field public static final deprecated java.lang.String SUPPLICANT_CONNECTION_CHANGE_ACTION = "android.net.wifi.supplicant.CONNECTION_CHANGE";
- field public static final deprecated java.lang.String SUPPLICANT_STATE_CHANGED_ACTION = "android.net.wifi.supplicant.STATE_CHANGE";
- field public static final deprecated int WIFI_MODE_FULL = 1; // 0x1
+ field @Deprecated public static final String SUPPLICANT_CONNECTION_CHANGE_ACTION = "android.net.wifi.supplicant.CONNECTION_CHANGE";
+ field @Deprecated public static final String SUPPLICANT_STATE_CHANGED_ACTION = "android.net.wifi.supplicant.STATE_CHANGE";
+ field @Deprecated public static final int WIFI_MODE_FULL = 1; // 0x1
field public static final int WIFI_MODE_FULL_HIGH_PERF = 3; // 0x3
field public static final int WIFI_MODE_FULL_LOW_LATENCY = 4; // 0x4
- field public static final deprecated int WIFI_MODE_SCAN_ONLY = 2; // 0x2
- field public static final java.lang.String WIFI_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_STATE_CHANGED";
+ field @Deprecated public static final int WIFI_MODE_SCAN_ONLY = 2; // 0x2
+ field public static final String WIFI_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_STATE_CHANGED";
field public static final int WIFI_STATE_DISABLED = 1; // 0x1
field public static final int WIFI_STATE_DISABLING = 0; // 0x0
field public static final int WIFI_STATE_ENABLED = 3; // 0x3
field public static final int WIFI_STATE_ENABLING = 2; // 0x2
field public static final int WIFI_STATE_UNKNOWN = 4; // 0x4
- field public static final deprecated int WPS_AUTH_FAILURE = 6; // 0x6
- field public static final deprecated int WPS_OVERLAP_ERROR = 3; // 0x3
- field public static final deprecated int WPS_TIMED_OUT = 7; // 0x7
- field public static final deprecated int WPS_TKIP_ONLY_PROHIBITED = 5; // 0x5
- field public static final deprecated int WPS_WEP_PROHIBITED = 4; // 0x4
+ field @Deprecated public static final int WPS_AUTH_FAILURE = 6; // 0x6
+ field @Deprecated public static final int WPS_OVERLAP_ERROR = 3; // 0x3
+ field @Deprecated public static final int WPS_TIMED_OUT = 7; // 0x7
+ field @Deprecated public static final int WPS_TKIP_ONLY_PROHIBITED = 5; // 0x5
+ field @Deprecated public static final int WPS_WEP_PROHIBITED = 4; // 0x4
}
public static class WifiManager.LocalOnlyHotspotCallback {
@@ -29792,31 +29895,31 @@
method public void setWorkSource(android.os.WorkSource);
}
- public static abstract deprecated class WifiManager.WpsCallback {
- ctor public WifiManager.WpsCallback();
- method public abstract deprecated void onFailed(int);
- method public abstract deprecated void onStarted(java.lang.String);
- method public abstract deprecated void onSucceeded();
+ @Deprecated public abstract static class WifiManager.WpsCallback {
+ ctor @Deprecated public WifiManager.WpsCallback();
+ method @Deprecated public abstract void onFailed(int);
+ method @Deprecated public abstract void onStarted(String);
+ method @Deprecated public abstract void onSucceeded();
}
public class WifiNetworkConfigBuilder {
ctor public WifiNetworkConfigBuilder();
method public android.net.NetworkSpecifier buildNetworkSpecifier();
method public android.net.wifi.WifiNetworkSuggestion buildNetworkSuggestion();
- method public android.net.wifi.WifiNetworkConfigBuilder setBssid(android.net.MacAddress);
- method public android.net.wifi.WifiNetworkConfigBuilder setBssidPattern(android.net.MacAddress, android.net.MacAddress);
+ method public android.net.wifi.WifiNetworkConfigBuilder setBssid(@NonNull android.net.MacAddress);
+ method public android.net.wifi.WifiNetworkConfigBuilder setBssidPattern(@NonNull android.net.MacAddress, @NonNull android.net.MacAddress);
method public android.net.wifi.WifiNetworkConfigBuilder setIsAppInteractionRequired();
method public android.net.wifi.WifiNetworkConfigBuilder setIsEnhancedOpen();
method public android.net.wifi.WifiNetworkConfigBuilder setIsHiddenSsid();
method public android.net.wifi.WifiNetworkConfigBuilder setIsMetered();
method public android.net.wifi.WifiNetworkConfigBuilder setIsUserInteractionRequired();
method public android.net.wifi.WifiNetworkConfigBuilder setPriority(int);
- method public android.net.wifi.WifiNetworkConfigBuilder setSsid(java.lang.String);
- method public android.net.wifi.WifiNetworkConfigBuilder setSsidPattern(android.os.PatternMatcher);
- method public android.net.wifi.WifiNetworkConfigBuilder setWpa2EnterpriseConfig(android.net.wifi.WifiEnterpriseConfig);
- method public android.net.wifi.WifiNetworkConfigBuilder setWpa2Passphrase(java.lang.String);
- method public android.net.wifi.WifiNetworkConfigBuilder setWpa3EnterpriseConfig(android.net.wifi.WifiEnterpriseConfig);
- method public android.net.wifi.WifiNetworkConfigBuilder setWpa3Passphrase(java.lang.String);
+ method public android.net.wifi.WifiNetworkConfigBuilder setSsid(@NonNull String);
+ method public android.net.wifi.WifiNetworkConfigBuilder setSsidPattern(@NonNull android.os.PatternMatcher);
+ method public android.net.wifi.WifiNetworkConfigBuilder setWpa2EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
+ method public android.net.wifi.WifiNetworkConfigBuilder setWpa2Passphrase(@NonNull String);
+ method public android.net.wifi.WifiNetworkConfigBuilder setWpa3EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
+ method public android.net.wifi.WifiNetworkConfigBuilder setWpa3Passphrase(@NonNull String);
}
public final class WifiNetworkSuggestion implements android.os.Parcelable {
@@ -29830,14 +29933,14 @@
ctor public WpsInfo(android.net.wifi.WpsInfo);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
- field public java.lang.String BSSID;
+ field public String BSSID;
field public static final android.os.Parcelable.Creator<android.net.wifi.WpsInfo> CREATOR;
field public static final int DISPLAY = 1; // 0x1
field public static final int INVALID = 4; // 0x4
field public static final int KEYPAD = 2; // 0x2
field public static final int LABEL = 3; // 0x3
field public static final int PBC = 0; // 0x0
- field public java.lang.String pin;
+ field public String pin;
field public int setup;
}
@@ -29862,9 +29965,9 @@
public class DiscoverySession implements java.lang.AutoCloseable {
method public void close();
- method public deprecated android.net.NetworkSpecifier createNetworkSpecifierOpen(android.net.wifi.aware.PeerHandle);
- method public deprecated android.net.NetworkSpecifier createNetworkSpecifierPassphrase(android.net.wifi.aware.PeerHandle, java.lang.String);
- method public void sendMessage(android.net.wifi.aware.PeerHandle, int, byte[]);
+ method @Deprecated public android.net.NetworkSpecifier createNetworkSpecifierOpen(@NonNull android.net.wifi.aware.PeerHandle);
+ method @Deprecated public android.net.NetworkSpecifier createNetworkSpecifierPassphrase(@NonNull android.net.wifi.aware.PeerHandle, @NonNull String);
+ method public void sendMessage(@NonNull android.net.wifi.aware.PeerHandle, int, @Nullable byte[]);
}
public class DiscoverySessionCallback {
@@ -29872,13 +29975,13 @@
method public void onMessageReceived(android.net.wifi.aware.PeerHandle, byte[]);
method public void onMessageSendFailed(int);
method public void onMessageSendSucceeded(int);
- method public void onPublishStarted(android.net.wifi.aware.PublishDiscoverySession);
+ method public void onPublishStarted(@NonNull android.net.wifi.aware.PublishDiscoverySession);
method public void onServiceDiscovered(android.net.wifi.aware.PeerHandle, byte[], java.util.List<byte[]>);
method public void onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle, byte[], java.util.List<byte[]>, int);
method public void onSessionConfigFailed();
method public void onSessionConfigUpdated();
method public void onSessionTerminated();
- method public void onSubscribeStarted(android.net.wifi.aware.SubscribeDiscoverySession);
+ method public void onSubscribeStarted(@NonNull android.net.wifi.aware.SubscribeDiscoverySession);
}
public class IdentityChangedListener {
@@ -29903,17 +30006,17 @@
public static final class PublishConfig.Builder {
ctor public PublishConfig.Builder();
method public android.net.wifi.aware.PublishConfig build();
- method public android.net.wifi.aware.PublishConfig.Builder setMatchFilter(java.util.List<byte[]>);
+ method public android.net.wifi.aware.PublishConfig.Builder setMatchFilter(@Nullable java.util.List<byte[]>);
method public android.net.wifi.aware.PublishConfig.Builder setPublishType(int);
method public android.net.wifi.aware.PublishConfig.Builder setRangingEnabled(boolean);
- method public android.net.wifi.aware.PublishConfig.Builder setServiceName(java.lang.String);
- method public android.net.wifi.aware.PublishConfig.Builder setServiceSpecificInfo(byte[]);
+ method public android.net.wifi.aware.PublishConfig.Builder setServiceName(@NonNull String);
+ method public android.net.wifi.aware.PublishConfig.Builder setServiceSpecificInfo(@Nullable byte[]);
method public android.net.wifi.aware.PublishConfig.Builder setTerminateNotificationEnabled(boolean);
method public android.net.wifi.aware.PublishConfig.Builder setTtlSec(int);
}
public class PublishDiscoverySession extends android.net.wifi.aware.DiscoverySession {
- method public void updatePublish(android.net.wifi.aware.PublishConfig);
+ method public void updatePublish(@NonNull android.net.wifi.aware.PublishConfig);
}
public final class SubscribeConfig implements android.os.Parcelable {
@@ -29927,43 +30030,43 @@
public static final class SubscribeConfig.Builder {
ctor public SubscribeConfig.Builder();
method public android.net.wifi.aware.SubscribeConfig build();
- method public android.net.wifi.aware.SubscribeConfig.Builder setMatchFilter(java.util.List<byte[]>);
+ method public android.net.wifi.aware.SubscribeConfig.Builder setMatchFilter(@Nullable java.util.List<byte[]>);
method public android.net.wifi.aware.SubscribeConfig.Builder setMaxDistanceMm(int);
method public android.net.wifi.aware.SubscribeConfig.Builder setMinDistanceMm(int);
- method public android.net.wifi.aware.SubscribeConfig.Builder setServiceName(java.lang.String);
- method public android.net.wifi.aware.SubscribeConfig.Builder setServiceSpecificInfo(byte[]);
+ method public android.net.wifi.aware.SubscribeConfig.Builder setServiceName(@NonNull String);
+ method public android.net.wifi.aware.SubscribeConfig.Builder setServiceSpecificInfo(@Nullable byte[]);
method public android.net.wifi.aware.SubscribeConfig.Builder setSubscribeType(int);
method public android.net.wifi.aware.SubscribeConfig.Builder setTerminateNotificationEnabled(boolean);
method public android.net.wifi.aware.SubscribeConfig.Builder setTtlSec(int);
}
public class SubscribeDiscoverySession extends android.net.wifi.aware.DiscoverySession {
- method public void updateSubscribe(android.net.wifi.aware.SubscribeConfig);
+ method public void updateSubscribe(@NonNull android.net.wifi.aware.SubscribeConfig);
}
public class WifiAwareManager {
- method public void attach(android.net.wifi.aware.AttachCallback, android.os.Handler);
- method public void attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler);
+ method public void attach(@NonNull android.net.wifi.aware.AttachCallback, @Nullable android.os.Handler);
+ method public void attach(@NonNull android.net.wifi.aware.AttachCallback, @NonNull android.net.wifi.aware.IdentityChangedListener, @Nullable android.os.Handler);
method public android.net.wifi.aware.Characteristics getCharacteristics();
method public boolean isAvailable();
- field public static final java.lang.String ACTION_WIFI_AWARE_STATE_CHANGED = "android.net.wifi.aware.action.WIFI_AWARE_STATE_CHANGED";
+ field public static final String ACTION_WIFI_AWARE_STATE_CHANGED = "android.net.wifi.aware.action.WIFI_AWARE_STATE_CHANGED";
field public static final int WIFI_AWARE_DATA_PATH_ROLE_INITIATOR = 0; // 0x0
field public static final int WIFI_AWARE_DATA_PATH_ROLE_RESPONDER = 1; // 0x1
}
public static class WifiAwareManager.NetworkSpecifierBuilder {
ctor public WifiAwareManager.NetworkSpecifierBuilder();
- method public android.net.NetworkSpecifier build();
- method public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setDiscoverySession(android.net.wifi.aware.DiscoverySession);
- method public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setPeerHandle(android.net.wifi.aware.PeerHandle);
- method public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setPort(int);
- method public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setPskPassphrase(java.lang.String);
- method public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setTransportProtocol(int);
+ method @NonNull public android.net.NetworkSpecifier build();
+ method @NonNull public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setDiscoverySession(@NonNull android.net.wifi.aware.DiscoverySession);
+ method @NonNull public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setPeerHandle(@NonNull android.net.wifi.aware.PeerHandle);
+ method @NonNull public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setPort(int);
+ method @NonNull public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setPskPassphrase(@NonNull String);
+ method @NonNull public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setTransportProtocol(int);
}
public final class WifiAwareNetworkInfo implements android.os.Parcelable android.net.TransportInfo {
method public int describeContents();
- method public java.net.Inet6Address getPeerIpv6Addr();
+ method @Nullable public java.net.Inet6Address getPeerIpv6Addr();
method public int getPort();
method public int getTransportProtocol();
method public void writeToParcel(android.os.Parcel, int);
@@ -29972,10 +30075,10 @@
public class WifiAwareSession implements java.lang.AutoCloseable {
method public void close();
- method public android.net.NetworkSpecifier createNetworkSpecifierOpen(int, byte[]);
- method public android.net.NetworkSpecifier createNetworkSpecifierPassphrase(int, byte[], java.lang.String);
- method public void publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler);
- method public void subscribe(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler);
+ method public android.net.NetworkSpecifier createNetworkSpecifierOpen(int, @NonNull byte[]);
+ method public android.net.NetworkSpecifier createNetworkSpecifierPassphrase(int, @NonNull byte[], @NonNull String);
+ method public void publish(@NonNull android.net.wifi.aware.PublishConfig, @NonNull android.net.wifi.aware.DiscoverySessionCallback, @Nullable android.os.Handler);
+ method public void subscribe(@NonNull android.net.wifi.aware.SubscribeConfig, @NonNull android.net.wifi.aware.DiscoverySessionCallback, @Nullable android.os.Handler);
}
}
@@ -29983,7 +30086,7 @@
package android.net.wifi.hotspot2 {
public final class ConfigParser {
- method public static android.net.wifi.hotspot2.PasspointConfiguration parsePasspointConfig(java.lang.String, byte[]);
+ method public static android.net.wifi.hotspot2.PasspointConfiguration parsePasspointConfig(String, byte[]);
}
public final class PasspointConfiguration implements android.os.Parcelable {
@@ -30003,7 +30106,7 @@
package android.net.wifi.hotspot2.omadm {
public final class PpsMoParser {
- method public static android.net.wifi.hotspot2.PasspointConfiguration parseMoText(java.lang.String);
+ method public static android.net.wifi.hotspot2.PasspointConfiguration parseMoText(String);
}
}
@@ -30018,14 +30121,14 @@
method public android.net.wifi.hotspot2.pps.Credential.CertificateCredential getCertCredential();
method public java.security.cert.X509Certificate[] getClientCertificateChain();
method public java.security.PrivateKey getClientPrivateKey();
- method public java.lang.String getRealm();
+ method public String getRealm();
method public android.net.wifi.hotspot2.pps.Credential.SimCredential getSimCredential();
method public android.net.wifi.hotspot2.pps.Credential.UserCredential getUserCredential();
method public void setCaCertificate(java.security.cert.X509Certificate);
method public void setCertCredential(android.net.wifi.hotspot2.pps.Credential.CertificateCredential);
method public void setClientCertificateChain(java.security.cert.X509Certificate[]);
method public void setClientPrivateKey(java.security.PrivateKey);
- method public void setRealm(java.lang.String);
+ method public void setRealm(String);
method public void setSimCredential(android.net.wifi.hotspot2.pps.Credential.SimCredential);
method public void setUserCredential(android.net.wifi.hotspot2.pps.Credential.UserCredential);
method public void writeToParcel(android.os.Parcel, int);
@@ -30037,9 +30140,9 @@
ctor public Credential.CertificateCredential(android.net.wifi.hotspot2.pps.Credential.CertificateCredential);
method public int describeContents();
method public byte[] getCertSha256Fingerprint();
- method public java.lang.String getCertType();
+ method public String getCertType();
method public void setCertSha256Fingerprint(byte[]);
- method public void setCertType(java.lang.String);
+ method public void setCertType(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.pps.Credential.CertificateCredential> CREATOR;
}
@@ -30049,9 +30152,9 @@
ctor public Credential.SimCredential(android.net.wifi.hotspot2.pps.Credential.SimCredential);
method public int describeContents();
method public int getEapType();
- method public java.lang.String getImsi();
+ method public String getImsi();
method public void setEapType(int);
- method public void setImsi(java.lang.String);
+ method public void setImsi(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.pps.Credential.SimCredential> CREATOR;
}
@@ -30061,13 +30164,13 @@
ctor public Credential.UserCredential(android.net.wifi.hotspot2.pps.Credential.UserCredential);
method public int describeContents();
method public int getEapType();
- method public java.lang.String getNonEapInnerMethod();
- method public java.lang.String getPassword();
- method public java.lang.String getUsername();
+ method public String getNonEapInnerMethod();
+ method public String getPassword();
+ method public String getUsername();
method public void setEapType(int);
- method public void setNonEapInnerMethod(java.lang.String);
- method public void setPassword(java.lang.String);
- method public void setUsername(java.lang.String);
+ method public void setNonEapInnerMethod(String);
+ method public void setPassword(String);
+ method public void setUsername(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.pps.Credential.UserCredential> CREATOR;
}
@@ -30076,11 +30179,11 @@
ctor public HomeSp();
ctor public HomeSp(android.net.wifi.hotspot2.pps.HomeSp);
method public int describeContents();
- method public java.lang.String getFqdn();
- method public java.lang.String getFriendlyName();
+ method public String getFqdn();
+ method public String getFriendlyName();
method public long[] getRoamingConsortiumOis();
- method public void setFqdn(java.lang.String);
- method public void setFriendlyName(java.lang.String);
+ method public void setFqdn(String);
+ method public void setFriendlyName(String);
method public void setRoamingConsortiumOis(long[]);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.pps.HomeSp> CREATOR;
@@ -30099,7 +30202,7 @@
field public static final int GROUP_OWNER_BAND_2GHZ = 1; // 0x1
field public static final int GROUP_OWNER_BAND_5GHZ = 2; // 0x2
field public static final int GROUP_OWNER_BAND_AUTO = 0; // 0x0
- field public java.lang.String deviceAddress;
+ field public String deviceAddress;
field public int groupOwnerIntent;
field public android.net.wifi.WpsInfo wps;
}
@@ -30111,8 +30214,8 @@
method public android.net.wifi.p2p.WifiP2pConfig.Builder setDeviceAddress(android.net.MacAddress);
method public android.net.wifi.p2p.WifiP2pConfig.Builder setGroupOperatingBand(int);
method public android.net.wifi.p2p.WifiP2pConfig.Builder setGroupOperatingFrequency(int);
- method public android.net.wifi.p2p.WifiP2pConfig.Builder setNetworkName(java.lang.String);
- method public android.net.wifi.p2p.WifiP2pConfig.Builder setPassphrase(java.lang.String);
+ method public android.net.wifi.p2p.WifiP2pConfig.Builder setNetworkName(String);
+ method public android.net.wifi.p2p.WifiP2pConfig.Builder setPassphrase(String);
}
public class WifiP2pDevice implements android.os.Parcelable {
@@ -30131,10 +30234,10 @@
field public static final int FAILED = 2; // 0x2
field public static final int INVITED = 1; // 0x1
field public static final int UNAVAILABLE = 4; // 0x4
- field public java.lang.String deviceAddress;
- field public java.lang.String deviceName;
- field public java.lang.String primaryDeviceType;
- field public java.lang.String secondaryDeviceType;
+ field public String deviceAddress;
+ field public String deviceName;
+ field public String primaryDeviceType;
+ field public String secondaryDeviceType;
field public int status;
}
@@ -30142,7 +30245,7 @@
ctor public WifiP2pDeviceList();
ctor public WifiP2pDeviceList(android.net.wifi.p2p.WifiP2pDeviceList);
method public int describeContents();
- method public android.net.wifi.p2p.WifiP2pDevice get(java.lang.String);
+ method public android.net.wifi.p2p.WifiP2pDevice get(String);
method public java.util.Collection<android.net.wifi.p2p.WifiP2pDevice> getDeviceList();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pDeviceList> CREATOR;
@@ -30154,10 +30257,10 @@
method public int describeContents();
method public java.util.Collection<android.net.wifi.p2p.WifiP2pDevice> getClientList();
method public int getFrequency();
- method public java.lang.String getInterface();
- method public java.lang.String getNetworkName();
+ method public String getInterface();
+ method public String getNetworkName();
method public android.net.wifi.p2p.WifiP2pDevice getOwner();
- method public java.lang.String getPassphrase();
+ method public String getPassphrase();
method public boolean isGroupOwner();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pGroup> CREATOR;
@@ -30175,103 +30278,103 @@
}
public class WifiP2pManager {
- method public void addLocalService(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.nsd.WifiP2pServiceInfo, android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public void addLocalService(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.nsd.WifiP2pServiceInfo, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method public void addServiceRequest(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.nsd.WifiP2pServiceRequest, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method public void cancelConnect(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method public void clearLocalServices(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method public void clearServiceRequests(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
- method public void connect(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pConfig, android.net.wifi.p2p.WifiP2pManager.ActionListener);
- method public void createGroup(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
- method public void createGroup(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pConfig, android.net.wifi.p2p.WifiP2pManager.ActionListener);
- method public void discoverPeers(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
- method public void discoverServices(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public void connect(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pConfig, android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public void createGroup(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public void createGroup(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pConfig, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public void discoverPeers(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public void discoverServices(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method public android.net.wifi.p2p.WifiP2pManager.Channel initialize(android.content.Context, android.os.Looper, android.net.wifi.p2p.WifiP2pManager.ChannelListener);
method public void removeGroup(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method public void removeLocalService(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.nsd.WifiP2pServiceInfo, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method public void removeServiceRequest(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.nsd.WifiP2pServiceRequest, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method public void requestConnectionInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener);
- method public void requestDiscoveryState(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.DiscoveryStateListener);
- method public void requestGroupInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.GroupInfoListener);
- method public void requestNetworkInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.NetworkInfoListener);
- method public void requestP2pState(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.P2pStateListener);
- method public void requestPeers(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.PeerListListener);
+ method public void requestDiscoveryState(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pManager.DiscoveryStateListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public void requestGroupInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.GroupInfoListener);
+ method public void requestNetworkInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pManager.NetworkInfoListener);
+ method public void requestP2pState(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pManager.P2pStateListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public void requestPeers(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.PeerListListener);
method public void setDnsSdResponseListeners(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener, android.net.wifi.p2p.WifiP2pManager.DnsSdTxtRecordListener);
method public void setServiceResponseListener(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ServiceResponseListener);
method public void setUpnpServiceResponseListener(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.UpnpServiceResponseListener);
method public void stopPeerDiscovery(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
field public static final int BUSY = 2; // 0x2
field public static final int ERROR = 0; // 0x0
- field public static final java.lang.String EXTRA_DISCOVERY_STATE = "discoveryState";
- field public static final java.lang.String EXTRA_NETWORK_INFO = "networkInfo";
- field public static final java.lang.String EXTRA_P2P_DEVICE_LIST = "wifiP2pDeviceList";
- field public static final java.lang.String EXTRA_WIFI_P2P_DEVICE = "wifiP2pDevice";
- field public static final java.lang.String EXTRA_WIFI_P2P_GROUP = "p2pGroupInfo";
- field public static final java.lang.String EXTRA_WIFI_P2P_INFO = "wifiP2pInfo";
- field public static final java.lang.String EXTRA_WIFI_STATE = "wifi_p2p_state";
+ field public static final String EXTRA_DISCOVERY_STATE = "discoveryState";
+ field public static final String EXTRA_NETWORK_INFO = "networkInfo";
+ field public static final String EXTRA_P2P_DEVICE_LIST = "wifiP2pDeviceList";
+ field public static final String EXTRA_WIFI_P2P_DEVICE = "wifiP2pDevice";
+ field public static final String EXTRA_WIFI_P2P_GROUP = "p2pGroupInfo";
+ field public static final String EXTRA_WIFI_P2P_INFO = "wifiP2pInfo";
+ field public static final String EXTRA_WIFI_STATE = "wifi_p2p_state";
field public static final int NO_SERVICE_REQUESTS = 3; // 0x3
field public static final int P2P_UNSUPPORTED = 1; // 0x1
- field public static final java.lang.String WIFI_P2P_CONNECTION_CHANGED_ACTION = "android.net.wifi.p2p.CONNECTION_STATE_CHANGE";
- field public static final java.lang.String WIFI_P2P_DISCOVERY_CHANGED_ACTION = "android.net.wifi.p2p.DISCOVERY_STATE_CHANGE";
+ field public static final String WIFI_P2P_CONNECTION_CHANGED_ACTION = "android.net.wifi.p2p.CONNECTION_STATE_CHANGE";
+ field public static final String WIFI_P2P_DISCOVERY_CHANGED_ACTION = "android.net.wifi.p2p.DISCOVERY_STATE_CHANGE";
field public static final int WIFI_P2P_DISCOVERY_STARTED = 2; // 0x2
field public static final int WIFI_P2P_DISCOVERY_STOPPED = 1; // 0x1
- field public static final java.lang.String WIFI_P2P_PEERS_CHANGED_ACTION = "android.net.wifi.p2p.PEERS_CHANGED";
- field public static final java.lang.String WIFI_P2P_STATE_CHANGED_ACTION = "android.net.wifi.p2p.STATE_CHANGED";
+ field public static final String WIFI_P2P_PEERS_CHANGED_ACTION = "android.net.wifi.p2p.PEERS_CHANGED";
+ field public static final String WIFI_P2P_STATE_CHANGED_ACTION = "android.net.wifi.p2p.STATE_CHANGED";
field public static final int WIFI_P2P_STATE_DISABLED = 1; // 0x1
field public static final int WIFI_P2P_STATE_ENABLED = 2; // 0x2
- field public static final java.lang.String WIFI_P2P_THIS_DEVICE_CHANGED_ACTION = "android.net.wifi.p2p.THIS_DEVICE_CHANGED";
+ field public static final String WIFI_P2P_THIS_DEVICE_CHANGED_ACTION = "android.net.wifi.p2p.THIS_DEVICE_CHANGED";
}
- public static abstract interface WifiP2pManager.ActionListener {
- method public abstract void onFailure(int);
- method public abstract void onSuccess();
+ public static interface WifiP2pManager.ActionListener {
+ method public void onFailure(int);
+ method public void onSuccess();
}
public static class WifiP2pManager.Channel implements java.lang.AutoCloseable {
method public void close();
}
- public static abstract interface WifiP2pManager.ChannelListener {
- method public abstract void onChannelDisconnected();
+ public static interface WifiP2pManager.ChannelListener {
+ method public void onChannelDisconnected();
}
- public static abstract interface WifiP2pManager.ConnectionInfoListener {
- method public abstract void onConnectionInfoAvailable(android.net.wifi.p2p.WifiP2pInfo);
+ public static interface WifiP2pManager.ConnectionInfoListener {
+ method public void onConnectionInfoAvailable(android.net.wifi.p2p.WifiP2pInfo);
}
- public static abstract interface WifiP2pManager.DiscoveryStateListener {
- method public abstract void onDiscoveryStateAvailable(int);
+ public static interface WifiP2pManager.DiscoveryStateListener {
+ method public void onDiscoveryStateAvailable(int);
}
- public static abstract interface WifiP2pManager.DnsSdServiceResponseListener {
- method public abstract void onDnsSdServiceAvailable(java.lang.String, java.lang.String, android.net.wifi.p2p.WifiP2pDevice);
+ public static interface WifiP2pManager.DnsSdServiceResponseListener {
+ method public void onDnsSdServiceAvailable(String, String, android.net.wifi.p2p.WifiP2pDevice);
}
- public static abstract interface WifiP2pManager.DnsSdTxtRecordListener {
- method public abstract void onDnsSdTxtRecordAvailable(java.lang.String, java.util.Map<java.lang.String, java.lang.String>, android.net.wifi.p2p.WifiP2pDevice);
+ public static interface WifiP2pManager.DnsSdTxtRecordListener {
+ method public void onDnsSdTxtRecordAvailable(String, java.util.Map<java.lang.String,java.lang.String>, android.net.wifi.p2p.WifiP2pDevice);
}
- public static abstract interface WifiP2pManager.GroupInfoListener {
- method public abstract void onGroupInfoAvailable(android.net.wifi.p2p.WifiP2pGroup);
+ public static interface WifiP2pManager.GroupInfoListener {
+ method public void onGroupInfoAvailable(android.net.wifi.p2p.WifiP2pGroup);
}
- public static abstract interface WifiP2pManager.NetworkInfoListener {
- method public abstract void onNetworkInfoAvailable(android.net.NetworkInfo);
+ public static interface WifiP2pManager.NetworkInfoListener {
+ method public void onNetworkInfoAvailable(android.net.NetworkInfo);
}
- public static abstract interface WifiP2pManager.P2pStateListener {
- method public abstract void onP2pStateAvailable(int);
+ public static interface WifiP2pManager.P2pStateListener {
+ method public void onP2pStateAvailable(int);
}
- public static abstract interface WifiP2pManager.PeerListListener {
- method public abstract void onPeersAvailable(android.net.wifi.p2p.WifiP2pDeviceList);
+ public static interface WifiP2pManager.PeerListListener {
+ method public void onPeersAvailable(android.net.wifi.p2p.WifiP2pDeviceList);
}
- public static abstract interface WifiP2pManager.ServiceResponseListener {
- method public abstract void onServiceAvailable(int, byte[], android.net.wifi.p2p.WifiP2pDevice);
+ public static interface WifiP2pManager.ServiceResponseListener {
+ method public void onServiceAvailable(int, byte[], android.net.wifi.p2p.WifiP2pDevice);
}
- public static abstract interface WifiP2pManager.UpnpServiceResponseListener {
- method public abstract void onUpnpServiceAvailable(java.util.List<java.lang.String>, android.net.wifi.p2p.WifiP2pDevice);
+ public static interface WifiP2pManager.UpnpServiceResponseListener {
+ method public void onUpnpServiceAvailable(java.util.List<java.lang.String>, android.net.wifi.p2p.WifiP2pDevice);
}
}
@@ -30279,13 +30382,13 @@
package android.net.wifi.p2p.nsd {
public class WifiP2pDnsSdServiceInfo extends android.net.wifi.p2p.nsd.WifiP2pServiceInfo {
- method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo newInstance(java.lang.String, java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
+ method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo newInstance(String, String, java.util.Map<java.lang.String,java.lang.String>);
}
public class WifiP2pDnsSdServiceRequest extends android.net.wifi.p2p.nsd.WifiP2pServiceRequest {
method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest newInstance();
- method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest newInstance(java.lang.String);
- method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest newInstance(java.lang.String, java.lang.String);
+ method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest newInstance(String);
+ method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest newInstance(String, String);
}
public class WifiP2pServiceInfo implements android.os.Parcelable {
@@ -30299,18 +30402,18 @@
public class WifiP2pServiceRequest implements android.os.Parcelable {
method public int describeContents();
- method public static android.net.wifi.p2p.nsd.WifiP2pServiceRequest newInstance(int, java.lang.String);
+ method public static android.net.wifi.p2p.nsd.WifiP2pServiceRequest newInstance(int, String);
method public static android.net.wifi.p2p.nsd.WifiP2pServiceRequest newInstance(int);
method public void writeToParcel(android.os.Parcel, int);
}
public class WifiP2pUpnpServiceInfo extends android.net.wifi.p2p.nsd.WifiP2pServiceInfo {
- method public static android.net.wifi.p2p.nsd.WifiP2pUpnpServiceInfo newInstance(java.lang.String, java.lang.String, java.util.List<java.lang.String>);
+ method public static android.net.wifi.p2p.nsd.WifiP2pUpnpServiceInfo newInstance(String, String, java.util.List<java.lang.String>);
}
public class WifiP2pUpnpServiceRequest extends android.net.wifi.p2p.nsd.WifiP2pServiceRequest {
method public static android.net.wifi.p2p.nsd.WifiP2pUpnpServiceRequest newInstance();
- method public static android.net.wifi.p2p.nsd.WifiP2pUpnpServiceRequest newInstance(java.lang.String);
+ method public static android.net.wifi.p2p.nsd.WifiP2pUpnpServiceRequest newInstance(String);
}
}
@@ -30326,10 +30429,10 @@
public static final class RangingRequest.Builder {
ctor public RangingRequest.Builder();
- method public android.net.wifi.rtt.RangingRequest.Builder addAccessPoint(android.net.wifi.ScanResult);
- method public android.net.wifi.rtt.RangingRequest.Builder addAccessPoints(java.util.List<android.net.wifi.ScanResult>);
- method public android.net.wifi.rtt.RangingRequest.Builder addWifiAwarePeer(android.net.MacAddress);
- method public android.net.wifi.rtt.RangingRequest.Builder addWifiAwarePeer(android.net.wifi.aware.PeerHandle);
+ method public android.net.wifi.rtt.RangingRequest.Builder addAccessPoint(@NonNull android.net.wifi.ScanResult);
+ method public android.net.wifi.rtt.RangingRequest.Builder addAccessPoints(@NonNull java.util.List<android.net.wifi.ScanResult>);
+ method public android.net.wifi.rtt.RangingRequest.Builder addWifiAwarePeer(@NonNull android.net.MacAddress);
+ method public android.net.wifi.rtt.RangingRequest.Builder addWifiAwarePeer(@NonNull android.net.wifi.aware.PeerHandle);
method public android.net.wifi.rtt.RangingRequest build();
}
@@ -30337,10 +30440,10 @@
method public int describeContents();
method public int getDistanceMm();
method public int getDistanceStdDevMm();
- method public android.net.MacAddress getMacAddress();
+ method @Nullable public android.net.MacAddress getMacAddress();
method public int getNumAttemptedMeasurements();
method public int getNumSuccessfulMeasurements();
- method public android.net.wifi.aware.PeerHandle getPeerHandle();
+ method @Nullable public android.net.wifi.aware.PeerHandle getPeerHandle();
method public long getRangingTimestampMillis();
method public int getRssi();
method public int getStatus();
@@ -30354,15 +30457,15 @@
public abstract class RangingResultCallback {
ctor public RangingResultCallback();
method public abstract void onRangingFailure(int);
- method public abstract void onRangingResults(java.util.List<android.net.wifi.rtt.RangingResult>);
+ method public abstract void onRangingResults(@NonNull java.util.List<android.net.wifi.rtt.RangingResult>);
field public static final int STATUS_CODE_FAIL = 1; // 0x1
field public static final int STATUS_CODE_FAIL_RTT_NOT_AVAILABLE = 2; // 0x2
}
public class WifiRttManager {
method public boolean isAvailable();
- method public void startRanging(android.net.wifi.rtt.RangingRequest, java.util.concurrent.Executor, android.net.wifi.rtt.RangingResultCallback);
- field public static final java.lang.String ACTION_WIFI_RTT_STATE_CHANGED = "android.net.wifi.rtt.action.WIFI_RTT_STATE_CHANGED";
+ method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.ACCESS_WIFI_STATE}) public void startRanging(@NonNull android.net.wifi.rtt.RangingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.rtt.RangingResultCallback);
+ field public static final String ACTION_WIFI_RTT_STATE_CHANGED = "android.net.wifi.rtt.action.WIFI_RTT_STATE_CHANGED";
}
}
@@ -30371,8 +30474,8 @@
public class FormatException extends java.lang.Exception {
ctor public FormatException();
- ctor public FormatException(java.lang.String);
- ctor public FormatException(java.lang.String, java.lang.Throwable);
+ ctor public FormatException(String);
+ ctor public FormatException(String, Throwable);
}
public final class NdefMessage implements android.os.Parcelable {
@@ -30389,20 +30492,20 @@
public final class NdefRecord implements android.os.Parcelable {
ctor public NdefRecord(short, byte[], byte[], byte[]);
- ctor public deprecated NdefRecord(byte[]) throws android.nfc.FormatException;
- method public static android.nfc.NdefRecord createApplicationRecord(java.lang.String);
- method public static android.nfc.NdefRecord createExternal(java.lang.String, java.lang.String, byte[]);
- method public static android.nfc.NdefRecord createMime(java.lang.String, byte[]);
- method public static android.nfc.NdefRecord createTextRecord(java.lang.String, java.lang.String);
+ ctor @Deprecated public NdefRecord(byte[]) throws android.nfc.FormatException;
+ method public static android.nfc.NdefRecord createApplicationRecord(String);
+ method public static android.nfc.NdefRecord createExternal(String, String, byte[]);
+ method public static android.nfc.NdefRecord createMime(String, byte[]);
+ method public static android.nfc.NdefRecord createTextRecord(String, String);
method public static android.nfc.NdefRecord createUri(android.net.Uri);
- method public static android.nfc.NdefRecord createUri(java.lang.String);
+ method public static android.nfc.NdefRecord createUri(String);
method public int describeContents();
method public byte[] getId();
method public byte[] getPayload();
method public short getTnf();
method public byte[] getType();
- method public deprecated byte[] toByteArray();
- method public java.lang.String toMimeType();
+ method @Deprecated public byte[] toByteArray();
+ method public String toMimeType();
method public android.net.Uri toUri();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.nfc.NdefRecord> CREATOR;
@@ -30424,35 +30527,35 @@
public final class NfcAdapter {
method public void disableForegroundDispatch(android.app.Activity);
- method public deprecated void disableForegroundNdefPush(android.app.Activity);
+ method @Deprecated public void disableForegroundNdefPush(android.app.Activity);
method public void disableReaderMode(android.app.Activity);
- method public void enableForegroundDispatch(android.app.Activity, android.app.PendingIntent, android.content.IntentFilter[], java.lang.String[][]);
- method public deprecated void enableForegroundNdefPush(android.app.Activity, android.nfc.NdefMessage);
+ method public void enableForegroundDispatch(android.app.Activity, android.app.PendingIntent, android.content.IntentFilter[], String[][]);
+ method @Deprecated public void enableForegroundNdefPush(android.app.Activity, android.nfc.NdefMessage);
method public void enableReaderMode(android.app.Activity, android.nfc.NfcAdapter.ReaderCallback, int, android.os.Bundle);
method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context);
- method public java.util.List<java.lang.String> getSupportedOffHostSecureElements();
+ method @NonNull public java.util.List<java.lang.String> getSupportedOffHostSecureElements();
method public boolean ignore(android.nfc.Tag, int, android.nfc.NfcAdapter.OnTagRemovedListener, android.os.Handler);
- method public deprecated boolean invokeBeam(android.app.Activity);
+ method @Deprecated public boolean invokeBeam(android.app.Activity);
method public boolean isEnabled();
- method public deprecated boolean isNdefPushEnabled();
- method public deprecated void setBeamPushUris(android.net.Uri[], android.app.Activity);
- method public deprecated void setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity);
- method public deprecated void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, android.app.Activity...);
- method public deprecated void setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...);
- method public deprecated void setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...);
- field public static final java.lang.String ACTION_ADAPTER_STATE_CHANGED = "android.nfc.action.ADAPTER_STATE_CHANGED";
- field public static final java.lang.String ACTION_NDEF_DISCOVERED = "android.nfc.action.NDEF_DISCOVERED";
- field public static final java.lang.String ACTION_TAG_DISCOVERED = "android.nfc.action.TAG_DISCOVERED";
- field public static final java.lang.String ACTION_TECH_DISCOVERED = "android.nfc.action.TECH_DISCOVERED";
- field public static final java.lang.String ACTION_TRANSACTION_DETECTED = "android.nfc.action.TRANSACTION_DETECTED";
- field public static final java.lang.String EXTRA_ADAPTER_STATE = "android.nfc.extra.ADAPTER_STATE";
- field public static final java.lang.String EXTRA_AID = "android.nfc.extra.AID";
- field public static final java.lang.String EXTRA_DATA = "android.nfc.extra.DATA";
- field public static final java.lang.String EXTRA_ID = "android.nfc.extra.ID";
- field public static final java.lang.String EXTRA_NDEF_MESSAGES = "android.nfc.extra.NDEF_MESSAGES";
- field public static final java.lang.String EXTRA_READER_PRESENCE_CHECK_DELAY = "presence";
- field public static final java.lang.String EXTRA_SECURE_ELEMENT_NAME = "android.nfc.extra.SECURE_ELEMENT_NAME";
- field public static final java.lang.String EXTRA_TAG = "android.nfc.extra.TAG";
+ method @Deprecated public boolean isNdefPushEnabled();
+ method @Deprecated public void setBeamPushUris(android.net.Uri[], android.app.Activity);
+ method @Deprecated public void setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity);
+ method @Deprecated public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, android.app.Activity...);
+ method @Deprecated public void setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...);
+ method @Deprecated public void setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...);
+ field public static final String ACTION_ADAPTER_STATE_CHANGED = "android.nfc.action.ADAPTER_STATE_CHANGED";
+ field public static final String ACTION_NDEF_DISCOVERED = "android.nfc.action.NDEF_DISCOVERED";
+ field public static final String ACTION_TAG_DISCOVERED = "android.nfc.action.TAG_DISCOVERED";
+ field public static final String ACTION_TECH_DISCOVERED = "android.nfc.action.TECH_DISCOVERED";
+ field @RequiresPermission(android.Manifest.permission.NFC_TRANSACTION_EVENT) public static final String ACTION_TRANSACTION_DETECTED = "android.nfc.action.TRANSACTION_DETECTED";
+ field public static final String EXTRA_ADAPTER_STATE = "android.nfc.extra.ADAPTER_STATE";
+ field public static final String EXTRA_AID = "android.nfc.extra.AID";
+ field public static final String EXTRA_DATA = "android.nfc.extra.DATA";
+ field public static final String EXTRA_ID = "android.nfc.extra.ID";
+ field public static final String EXTRA_NDEF_MESSAGES = "android.nfc.extra.NDEF_MESSAGES";
+ field public static final String EXTRA_READER_PRESENCE_CHECK_DELAY = "presence";
+ field public static final String EXTRA_SECURE_ELEMENT_NAME = "android.nfc.extra.SECURE_ELEMENT_NAME";
+ field public static final String EXTRA_TAG = "android.nfc.extra.TAG";
field public static final int FLAG_READER_NFC_A = 1; // 0x1
field public static final int FLAG_READER_NFC_B = 2; // 0x2
field public static final int FLAG_READER_NFC_BARCODE = 16; // 0x10
@@ -30466,24 +30569,24 @@
field public static final int STATE_TURNING_ON = 2; // 0x2
}
- public static abstract deprecated interface NfcAdapter.CreateBeamUrisCallback {
- method public abstract android.net.Uri[] createBeamUris(android.nfc.NfcEvent);
+ @Deprecated public static interface NfcAdapter.CreateBeamUrisCallback {
+ method @Deprecated public android.net.Uri[] createBeamUris(android.nfc.NfcEvent);
}
- public static abstract deprecated interface NfcAdapter.CreateNdefMessageCallback {
- method public abstract android.nfc.NdefMessage createNdefMessage(android.nfc.NfcEvent);
+ @Deprecated public static interface NfcAdapter.CreateNdefMessageCallback {
+ method @Deprecated public android.nfc.NdefMessage createNdefMessage(android.nfc.NfcEvent);
}
- public static abstract deprecated interface NfcAdapter.OnNdefPushCompleteCallback {
- method public abstract void onNdefPushComplete(android.nfc.NfcEvent);
+ @Deprecated public static interface NfcAdapter.OnNdefPushCompleteCallback {
+ method @Deprecated public void onNdefPushComplete(android.nfc.NfcEvent);
}
- public static abstract interface NfcAdapter.OnTagRemovedListener {
- method public abstract void onTagRemoved();
+ public static interface NfcAdapter.OnTagRemovedListener {
+ method public void onTagRemoved();
}
- public static abstract interface NfcAdapter.ReaderCallback {
- method public abstract void onTagDiscovered(android.nfc.Tag);
+ public static interface NfcAdapter.ReaderCallback {
+ method public void onTagDiscovered(android.nfc.Tag);
}
public final class NfcEvent {
@@ -30499,14 +30602,14 @@
public final class Tag implements android.os.Parcelable {
method public int describeContents();
method public byte[] getId();
- method public java.lang.String[] getTechList();
+ method public String[] getTechList();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.nfc.Tag> CREATOR;
}
public class TagLostException extends java.io.IOException {
ctor public TagLostException();
- ctor public TagLostException(java.lang.String);
+ ctor public TagLostException(String);
}
}
@@ -30514,24 +30617,24 @@
package android.nfc.cardemulation {
public final class CardEmulation {
- method public boolean categoryAllowsForegroundPreference(java.lang.String);
- method public java.util.List<java.lang.String> getAidsForService(android.content.ComponentName, java.lang.String);
- method public static synchronized android.nfc.cardemulation.CardEmulation getInstance(android.nfc.NfcAdapter);
- method public int getSelectionModeForCategory(java.lang.String);
- method public boolean isDefaultServiceForAid(android.content.ComponentName, java.lang.String);
- method public boolean isDefaultServiceForCategory(android.content.ComponentName, java.lang.String);
- method public boolean registerAidsForService(android.content.ComponentName, java.lang.String, java.util.List<java.lang.String>);
- method public boolean removeAidsForService(android.content.ComponentName, java.lang.String);
- method public boolean setOffHostForService(android.content.ComponentName, java.lang.String);
+ method public boolean categoryAllowsForegroundPreference(String);
+ method public java.util.List<java.lang.String> getAidsForService(android.content.ComponentName, String);
+ method public static android.nfc.cardemulation.CardEmulation getInstance(android.nfc.NfcAdapter);
+ method public int getSelectionModeForCategory(String);
+ method public boolean isDefaultServiceForAid(android.content.ComponentName, String);
+ method public boolean isDefaultServiceForCategory(android.content.ComponentName, String);
+ method public boolean registerAidsForService(android.content.ComponentName, String, java.util.List<java.lang.String>);
+ method public boolean removeAidsForService(android.content.ComponentName, String);
+ method public boolean setOffHostForService(android.content.ComponentName, String);
method public boolean setPreferredService(android.app.Activity, android.content.ComponentName);
method public boolean supportsAidPrefixRegistration();
method public boolean unsetOffHostForService(android.content.ComponentName);
method public boolean unsetPreferredService(android.app.Activity);
- field public static final java.lang.String ACTION_CHANGE_DEFAULT = "android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT";
- field public static final java.lang.String CATEGORY_OTHER = "other";
- field public static final java.lang.String CATEGORY_PAYMENT = "payment";
- field public static final java.lang.String EXTRA_CATEGORY = "category";
- field public static final java.lang.String EXTRA_SERVICE_COMPONENT = "component";
+ field public static final String ACTION_CHANGE_DEFAULT = "android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT";
+ field public static final String CATEGORY_OTHER = "other";
+ field public static final String CATEGORY_PAYMENT = "payment";
+ field public static final String EXTRA_CATEGORY = "category";
+ field public static final String EXTRA_SERVICE_COMPONENT = "component";
field public static final int SELECTION_MODE_ALWAYS_ASK = 1; // 0x1
field public static final int SELECTION_MODE_ASK_IF_CONFLICT = 2; // 0x2
field public static final int SELECTION_MODE_PREFER_DEFAULT = 0; // 0x0
@@ -30546,8 +30649,8 @@
method public final void sendResponseApdu(byte[]);
field public static final int DEACTIVATION_DESELECTED = 1; // 0x1
field public static final int DEACTIVATION_LINK_LOSS = 0; // 0x0
- field public static final java.lang.String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_APDU_SERVICE";
- field public static final java.lang.String SERVICE_META_DATA = "android.nfc.cardemulation.host_apdu_service";
+ field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_APDU_SERVICE";
+ field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.host_apdu_service";
}
public abstract class HostNfcFService extends android.app.Service {
@@ -30557,25 +30660,25 @@
method public abstract byte[] processNfcFPacket(byte[], android.os.Bundle);
method public final void sendResponsePacket(byte[]);
field public static final int DEACTIVATION_LINK_LOSS = 0; // 0x0
- field public static final java.lang.String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_NFCF_SERVICE";
- field public static final java.lang.String SERVICE_META_DATA = "android.nfc.cardemulation.host_nfcf_service";
+ field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_NFCF_SERVICE";
+ field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.host_nfcf_service";
}
public final class NfcFCardEmulation {
method public boolean disableService(android.app.Activity) throws java.lang.RuntimeException;
method public boolean enableService(android.app.Activity, android.content.ComponentName) throws java.lang.RuntimeException;
- method public static synchronized android.nfc.cardemulation.NfcFCardEmulation getInstance(android.nfc.NfcAdapter);
- method public java.lang.String getNfcid2ForService(android.content.ComponentName) throws java.lang.RuntimeException;
- method public java.lang.String getSystemCodeForService(android.content.ComponentName) throws java.lang.RuntimeException;
- method public boolean registerSystemCodeForService(android.content.ComponentName, java.lang.String) throws java.lang.RuntimeException;
- method public boolean setNfcid2ForService(android.content.ComponentName, java.lang.String) throws java.lang.RuntimeException;
+ method public static android.nfc.cardemulation.NfcFCardEmulation getInstance(android.nfc.NfcAdapter);
+ method public String getNfcid2ForService(android.content.ComponentName) throws java.lang.RuntimeException;
+ method public String getSystemCodeForService(android.content.ComponentName) throws java.lang.RuntimeException;
+ method public boolean registerSystemCodeForService(android.content.ComponentName, String) throws java.lang.RuntimeException;
+ method public boolean setNfcid2ForService(android.content.ComponentName, String) throws java.lang.RuntimeException;
method public boolean unregisterSystemCodeForService(android.content.ComponentName) throws java.lang.RuntimeException;
}
public abstract class OffHostApduService extends android.app.Service {
ctor public OffHostApduService();
- field public static final java.lang.String SERVICE_INTERFACE = "android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE";
- field public static final java.lang.String SERVICE_META_DATA = "android.nfc.cardemulation.off_host_apdu_service";
+ field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE";
+ field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.off_host_apdu_service";
}
}
@@ -30583,11 +30686,15 @@
package android.nfc.tech {
public final class IsoDep implements android.nfc.tech.TagTechnology {
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public static android.nfc.tech.IsoDep get(android.nfc.Tag);
method public byte[] getHiLayerResponse();
method public byte[] getHistoricalBytes();
method public int getMaxTransceiveLength();
+ method public android.nfc.Tag getTag();
method public int getTimeout();
+ method public boolean isConnected();
method public boolean isExtendedLengthApduSupported();
method public void setTimeout(int);
method public byte[] transceive(byte[]) throws java.io.IOException;
@@ -30597,6 +30704,8 @@
method public boolean authenticateSectorWithKeyA(int, byte[]) throws java.io.IOException;
method public boolean authenticateSectorWithKeyB(int, byte[]) throws java.io.IOException;
method public int blockToSector(int);
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public void decrement(int, int) throws java.io.IOException;
method public static android.nfc.tech.MifareClassic get(android.nfc.Tag);
method public int getBlockCount();
@@ -30604,9 +30713,11 @@
method public int getMaxTransceiveLength();
method public int getSectorCount();
method public int getSize();
+ method public android.nfc.Tag getTag();
method public int getTimeout();
method public int getType();
method public void increment(int, int) throws java.io.IOException;
+ method public boolean isConnected();
method public byte[] readBlock(int) throws java.io.IOException;
method public void restore(int) throws java.io.IOException;
method public int sectorToBlock(int);
@@ -30629,10 +30740,14 @@
}
public final class MifareUltralight implements android.nfc.tech.TagTechnology {
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public static android.nfc.tech.MifareUltralight get(android.nfc.Tag);
method public int getMaxTransceiveLength();
+ method public android.nfc.Tag getTag();
method public int getTimeout();
method public int getType();
+ method public boolean isConnected();
method public byte[] readPages(int) throws java.io.IOException;
method public void setTimeout(int);
method public byte[] transceive(byte[]) throws java.io.IOException;
@@ -30645,75 +30760,103 @@
public final class Ndef implements android.nfc.tech.TagTechnology {
method public boolean canMakeReadOnly();
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public static android.nfc.tech.Ndef get(android.nfc.Tag);
method public android.nfc.NdefMessage getCachedNdefMessage();
method public int getMaxSize();
method public android.nfc.NdefMessage getNdefMessage() throws android.nfc.FormatException, java.io.IOException;
- method public java.lang.String getType();
+ method public android.nfc.Tag getTag();
+ method public String getType();
+ method public boolean isConnected();
method public boolean isWritable();
method public boolean makeReadOnly() throws java.io.IOException;
method public void writeNdefMessage(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
- field public static final java.lang.String MIFARE_CLASSIC = "com.nxp.ndef.mifareclassic";
- field public static final java.lang.String NFC_FORUM_TYPE_1 = "org.nfcforum.ndef.type1";
- field public static final java.lang.String NFC_FORUM_TYPE_2 = "org.nfcforum.ndef.type2";
- field public static final java.lang.String NFC_FORUM_TYPE_3 = "org.nfcforum.ndef.type3";
- field public static final java.lang.String NFC_FORUM_TYPE_4 = "org.nfcforum.ndef.type4";
+ field public static final String MIFARE_CLASSIC = "com.nxp.ndef.mifareclassic";
+ field public static final String NFC_FORUM_TYPE_1 = "org.nfcforum.ndef.type1";
+ field public static final String NFC_FORUM_TYPE_2 = "org.nfcforum.ndef.type2";
+ field public static final String NFC_FORUM_TYPE_3 = "org.nfcforum.ndef.type3";
+ field public static final String NFC_FORUM_TYPE_4 = "org.nfcforum.ndef.type4";
}
public final class NdefFormatable implements android.nfc.tech.TagTechnology {
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public void format(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
method public void formatReadOnly(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
method public static android.nfc.tech.NdefFormatable get(android.nfc.Tag);
+ method public android.nfc.Tag getTag();
+ method public boolean isConnected();
}
public final class NfcA implements android.nfc.tech.TagTechnology {
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public static android.nfc.tech.NfcA get(android.nfc.Tag);
method public byte[] getAtqa();
method public int getMaxTransceiveLength();
method public short getSak();
+ method public android.nfc.Tag getTag();
method public int getTimeout();
+ method public boolean isConnected();
method public void setTimeout(int);
method public byte[] transceive(byte[]) throws java.io.IOException;
}
public final class NfcB implements android.nfc.tech.TagTechnology {
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public static android.nfc.tech.NfcB get(android.nfc.Tag);
method public byte[] getApplicationData();
method public int getMaxTransceiveLength();
method public byte[] getProtocolInfo();
+ method public android.nfc.Tag getTag();
+ method public boolean isConnected();
method public byte[] transceive(byte[]) throws java.io.IOException;
}
public final class NfcBarcode implements android.nfc.tech.TagTechnology {
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public static android.nfc.tech.NfcBarcode get(android.nfc.Tag);
method public byte[] getBarcode();
+ method public android.nfc.Tag getTag();
method public int getType();
+ method public boolean isConnected();
field public static final int TYPE_KOVIO = 1; // 0x1
field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
}
public final class NfcF implements android.nfc.tech.TagTechnology {
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public static android.nfc.tech.NfcF get(android.nfc.Tag);
method public byte[] getManufacturer();
method public int getMaxTransceiveLength();
method public byte[] getSystemCode();
+ method public android.nfc.Tag getTag();
method public int getTimeout();
+ method public boolean isConnected();
method public void setTimeout(int);
method public byte[] transceive(byte[]) throws java.io.IOException;
}
public final class NfcV implements android.nfc.tech.TagTechnology {
+ method public void close() throws java.io.IOException;
+ method public void connect() throws java.io.IOException;
method public static android.nfc.tech.NfcV get(android.nfc.Tag);
method public byte getDsfId();
method public int getMaxTransceiveLength();
method public byte getResponseFlags();
+ method public android.nfc.Tag getTag();
+ method public boolean isConnected();
method public byte[] transceive(byte[]) throws java.io.IOException;
}
- public abstract interface TagTechnology implements java.io.Closeable {
- method public abstract void connect() throws java.io.IOException;
- method public abstract android.nfc.Tag getTag();
- method public abstract boolean isConnected();
+ public interface TagTechnology extends java.io.Closeable {
+ method public void connect() throws java.io.IOException;
+ method public android.nfc.Tag getTag();
+ method public boolean isConnected();
}
}
@@ -30729,8 +30872,8 @@
method public static android.opengl.EGLContext eglCreateContext(android.opengl.EGLDisplay, android.opengl.EGLConfig, android.opengl.EGLContext, int[], int);
method public static android.opengl.EGLSurface eglCreatePbufferFromClientBuffer(android.opengl.EGLDisplay, int, int, android.opengl.EGLConfig, int[], int);
method public static android.opengl.EGLSurface eglCreatePbufferSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int[], int);
- method public static deprecated android.opengl.EGLSurface eglCreatePixmapSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int);
- method public static android.opengl.EGLSurface eglCreateWindowSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, java.lang.Object, int[], int);
+ method @Deprecated public static android.opengl.EGLSurface eglCreatePixmapSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int);
+ method public static android.opengl.EGLSurface eglCreateWindowSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, Object, int[], int);
method public static boolean eglDestroyContext(android.opengl.EGLDisplay, android.opengl.EGLContext);
method public static boolean eglDestroySurface(android.opengl.EGLDisplay, android.opengl.EGLSurface);
method public static boolean eglGetConfigAttrib(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int);
@@ -30744,7 +30887,7 @@
method public static boolean eglMakeCurrent(android.opengl.EGLDisplay, android.opengl.EGLSurface, android.opengl.EGLSurface, android.opengl.EGLContext);
method public static int eglQueryAPI();
method public static boolean eglQueryContext(android.opengl.EGLDisplay, android.opengl.EGLContext, int, int[], int);
- method public static java.lang.String eglQueryString(android.opengl.EGLDisplay, int);
+ method public static String eglQueryString(android.opengl.EGLDisplay, int);
method public static boolean eglQuerySurface(android.opengl.EGLDisplay, android.opengl.EGLSurface, int, int[], int);
method public static boolean eglReleaseTexImage(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
method public static boolean eglReleaseThread();
@@ -30954,9 +31097,9 @@
}
public abstract class EGLObjectHandle {
- ctor protected deprecated EGLObjectHandle(int);
+ ctor @Deprecated protected EGLObjectHandle(int);
ctor protected EGLObjectHandle(long);
- method public deprecated int getHandle();
+ method @Deprecated public int getHandle();
method public long getNativeHandle();
}
@@ -31061,7 +31204,7 @@
method public static int glGetError();
method public static void glGetIntegerv(int, int[], int);
method public static void glGetIntegerv(int, java.nio.IntBuffer);
- method public static java.lang.String glGetString(int);
+ method public static String glGetString(int);
method public static void glHint(int, int);
method public static void glLightModelf(int, float);
method public static void glLightModelfv(int, float[], int);
@@ -31810,7 +31953,7 @@
ctor public GLES20();
method public static void glActiveTexture(int);
method public static void glAttachShader(int, int);
- method public static void glBindAttribLocation(int, int, java.lang.String);
+ method public static void glBindAttribLocation(int, int, String);
method public static void glBindBuffer(int, int);
method public static void glBindFramebuffer(int, int);
method public static void glBindRenderbuffer(int, int);
@@ -31872,14 +32015,14 @@
method public static void glGenTextures(int, java.nio.IntBuffer);
method public static void glGenerateMipmap(int);
method public static void glGetActiveAttrib(int, int, int, int[], int, int[], int, int[], int, byte[], int);
- method public static java.lang.String glGetActiveAttrib(int, int, int[], int, int[], int);
- method public static java.lang.String glGetActiveAttrib(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
+ method public static String glGetActiveAttrib(int, int, int[], int, int[], int);
+ method public static String glGetActiveAttrib(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
method public static void glGetActiveUniform(int, int, int, int[], int, int[], int, int[], int, byte[], int);
- method public static java.lang.String glGetActiveUniform(int, int, int[], int, int[], int);
- method public static java.lang.String glGetActiveUniform(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
+ method public static String glGetActiveUniform(int, int, int[], int, int[], int);
+ method public static String glGetActiveUniform(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
method public static void glGetAttachedShaders(int, int, int[], int, int[], int);
method public static void glGetAttachedShaders(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
- method public static int glGetAttribLocation(int, java.lang.String);
+ method public static int glGetAttribLocation(int, String);
method public static void glGetBooleanv(int, boolean[], int);
method public static void glGetBooleanv(int, java.nio.IntBuffer);
method public static void glGetBufferParameteriv(int, int, int[], int);
@@ -31891,24 +32034,24 @@
method public static void glGetFramebufferAttachmentParameteriv(int, int, int, java.nio.IntBuffer);
method public static void glGetIntegerv(int, int[], int);
method public static void glGetIntegerv(int, java.nio.IntBuffer);
- method public static java.lang.String glGetProgramInfoLog(int);
+ method public static String glGetProgramInfoLog(int);
method public static void glGetProgramiv(int, int, int[], int);
method public static void glGetProgramiv(int, int, java.nio.IntBuffer);
method public static void glGetRenderbufferParameteriv(int, int, int[], int);
method public static void glGetRenderbufferParameteriv(int, int, java.nio.IntBuffer);
- method public static java.lang.String glGetShaderInfoLog(int);
+ method public static String glGetShaderInfoLog(int);
method public static void glGetShaderPrecisionFormat(int, int, int[], int, int[], int);
method public static void glGetShaderPrecisionFormat(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
method public static void glGetShaderSource(int, int, int[], int, byte[], int);
- method public static java.lang.String glGetShaderSource(int);
+ method public static String glGetShaderSource(int);
method public static void glGetShaderiv(int, int, int[], int);
method public static void glGetShaderiv(int, int, java.nio.IntBuffer);
- method public static java.lang.String glGetString(int);
+ method public static String glGetString(int);
method public static void glGetTexParameterfv(int, int, float[], int);
method public static void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
method public static void glGetTexParameteriv(int, int, int[], int);
method public static void glGetTexParameteriv(int, int, java.nio.IntBuffer);
- method public static int glGetUniformLocation(int, java.lang.String);
+ method public static int glGetUniformLocation(int, String);
method public static void glGetUniformfv(int, int, float[], int);
method public static void glGetUniformfv(int, int, java.nio.FloatBuffer);
method public static void glGetUniformiv(int, int, int[], int);
@@ -31936,7 +32079,7 @@
method public static void glScissor(int, int, int, int);
method public static void glShaderBinary(int, int[], int, int, java.nio.Buffer, int);
method public static void glShaderBinary(int, java.nio.IntBuffer, int, java.nio.Buffer, int);
- method public static void glShaderSource(int, java.lang.String);
+ method public static void glShaderSource(int, String);
method public static void glStencilFunc(int, int, int);
method public static void glStencilFuncSeparate(int, int, int, int);
method public static void glStencilMask(int);
@@ -32219,7 +32362,7 @@
field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
- field public static final deprecated int GL_STENCIL_INDEX = 6401; // 0x1901
+ field @Deprecated public static final int GL_STENCIL_INDEX = 6401; // 0x1901
field public static final int GL_STENCIL_INDEX8 = 36168; // 0x8d48
field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
@@ -32357,7 +32500,7 @@
method public static void glGenVertexArrays(int, java.nio.IntBuffer);
method public static void glGetActiveUniformBlockName(int, int, int, int[], int, byte[], int);
method public static void glGetActiveUniformBlockName(int, int, java.nio.Buffer, java.nio.Buffer);
- method public static java.lang.String glGetActiveUniformBlockName(int, int);
+ method public static String glGetActiveUniformBlockName(int, int);
method public static void glGetActiveUniformBlockiv(int, int, int, int[], int);
method public static void glGetActiveUniformBlockiv(int, int, int, java.nio.IntBuffer);
method public static void glGetActiveUniformsiv(int, int, int[], int, int, int[], int);
@@ -32365,7 +32508,7 @@
method public static void glGetBufferParameteri64v(int, int, long[], int);
method public static void glGetBufferParameteri64v(int, int, java.nio.LongBuffer);
method public static java.nio.Buffer glGetBufferPointerv(int, int);
- method public static int glGetFragDataLocation(int, java.lang.String);
+ method public static int glGetFragDataLocation(int, String);
method public static void glGetInteger64i_v(int, int, long[], int);
method public static void glGetInteger64i_v(int, int, java.nio.LongBuffer);
method public static void glGetInteger64v(int, long[], int);
@@ -32384,17 +32527,17 @@
method public static void glGetSamplerParameterfv(int, int, java.nio.FloatBuffer);
method public static void glGetSamplerParameteriv(int, int, int[], int);
method public static void glGetSamplerParameteriv(int, int, java.nio.IntBuffer);
- method public static java.lang.String glGetStringi(int, int);
+ method public static String glGetStringi(int, int);
method public static void glGetSynciv(long, int, int, int[], int, int[], int);
method public static void glGetSynciv(long, int, int, java.nio.IntBuffer, java.nio.IntBuffer);
method public static void glGetTransformFeedbackVarying(int, int, int, int[], int, int[], int, int[], int, byte[], int);
- method public static deprecated void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte);
+ method @Deprecated public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte);
method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
- method public static java.lang.String glGetTransformFeedbackVarying(int, int, int[], int, int[], int);
- method public static java.lang.String glGetTransformFeedbackVarying(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
- method public static int glGetUniformBlockIndex(int, java.lang.String);
- method public static void glGetUniformIndices(int, java.lang.String[], int[], int);
- method public static void glGetUniformIndices(int, java.lang.String[], java.nio.IntBuffer);
+ method public static String glGetTransformFeedbackVarying(int, int, int[], int, int[], int);
+ method public static String glGetTransformFeedbackVarying(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
+ method public static int glGetUniformBlockIndex(int, String);
+ method public static void glGetUniformIndices(int, String[], int[], int);
+ method public static void glGetUniformIndices(int, String[], java.nio.IntBuffer);
method public static void glGetUniformuiv(int, int, int[], int);
method public static void glGetUniformuiv(int, int, java.nio.IntBuffer);
method public static void glGetVertexAttribIiv(int, int, int[], int);
@@ -32430,7 +32573,7 @@
method public static void glTexStorage3D(int, int, int, int, int, int);
method public static void glTexSubImage3D(int, int, int, int, int, int, int, int, int, int, java.nio.Buffer);
method public static void glTexSubImage3D(int, int, int, int, int, int, int, int, int, int, int);
- method public static void glTransformFeedbackVaryings(int, java.lang.String[], int);
+ method public static void glTransformFeedbackVaryings(int, String[], int);
method public static void glUniform1ui(int, int);
method public static void glUniform1uiv(int, int, int[], int);
method public static void glUniform1uiv(int, int, java.nio.IntBuffer);
@@ -32779,7 +32922,7 @@
method public static void glBindImageTexture(int, int, int, boolean, int, int, int);
method public static void glBindProgramPipeline(int);
method public static void glBindVertexBuffer(int, int, long, int);
- method public static int glCreateShaderProgramv(int, java.lang.String[]);
+ method public static int glCreateShaderProgramv(int, String[]);
method public static void glDeleteProgramPipelines(int, int[], int);
method public static void glDeleteProgramPipelines(int, java.nio.IntBuffer);
method public static void glDispatchCompute(int, int, int);
@@ -32797,12 +32940,12 @@
method public static void glGetMultisamplefv(int, int, java.nio.FloatBuffer);
method public static void glGetProgramInterfaceiv(int, int, int, int[], int);
method public static void glGetProgramInterfaceiv(int, int, int, java.nio.IntBuffer);
- method public static java.lang.String glGetProgramPipelineInfoLog(int);
+ method public static String glGetProgramPipelineInfoLog(int);
method public static void glGetProgramPipelineiv(int, int, int[], int);
method public static void glGetProgramPipelineiv(int, int, java.nio.IntBuffer);
- method public static int glGetProgramResourceIndex(int, int, java.lang.String);
- method public static int glGetProgramResourceLocation(int, int, java.lang.String);
- method public static java.lang.String glGetProgramResourceName(int, int, int);
+ method public static int glGetProgramResourceIndex(int, int, String);
+ method public static int glGetProgramResourceLocation(int, int, String);
+ method public static String glGetProgramResourceName(int, int, int);
method public static void glGetProgramResourceiv(int, int, int, int, int[], int, int, int[], int, int[], int);
method public static void glGetProgramResourceiv(int, int, int, int, java.nio.IntBuffer, int, java.nio.IntBuffer, java.nio.IntBuffer);
method public static void glGetTexLevelParameterfv(int, int, int, float[], int);
@@ -33060,17 +33203,17 @@
method public static void glDebugMessageCallbackKHR(android.opengl.GLES31Ext.DebugProcKHR);
method public static void glDebugMessageControlKHR(int, int, int, int, int[], int, boolean);
method public static void glDebugMessageControlKHR(int, int, int, int, java.nio.IntBuffer, boolean);
- method public static void glDebugMessageInsertKHR(int, int, int, int, java.lang.String);
+ method public static void glDebugMessageInsertKHR(int, int, int, int, String);
method public static void glDisableiEXT(int, int);
method public static void glEnableiEXT(int, int);
method public static void glFramebufferTextureEXT(int, int, int, int);
method public static android.opengl.GLES31Ext.DebugProcKHR glGetDebugMessageCallbackKHR();
method public static int glGetDebugMessageLogKHR(int, int, int[], int, int[], int, int[], int, int[], int, int[], int, byte[], int);
method public static int glGetDebugMessageLogKHR(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
- method public static java.lang.String[] glGetDebugMessageLogKHR(int, int[], int, int[], int, int[], int, int[], int);
- method public static java.lang.String[] glGetDebugMessageLogKHR(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
- method public static java.lang.String glGetObjectLabelKHR(int, int);
- method public static java.lang.String glGetObjectPtrLabelKHR(long);
+ method public static String[] glGetDebugMessageLogKHR(int, int[], int, int[], int, int[], int, int[], int);
+ method public static String[] glGetDebugMessageLogKHR(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
+ method public static String glGetObjectLabelKHR(int, int);
+ method public static String glGetObjectPtrLabelKHR(long);
method public static void glGetSamplerParameterIivEXT(int, int, int[], int);
method public static void glGetSamplerParameterIivEXT(int, int, java.nio.IntBuffer);
method public static void glGetSamplerParameterIuivEXT(int, int, int[], int);
@@ -33081,12 +33224,12 @@
method public static void glGetTexParameterIuivEXT(int, int, java.nio.IntBuffer);
method public static boolean glIsEnablediEXT(int, int);
method public static void glMinSampleShadingOES(float);
- method public static void glObjectLabelKHR(int, int, int, java.lang.String);
- method public static void glObjectPtrLabelKHR(long, java.lang.String);
+ method public static void glObjectLabelKHR(int, int, int, String);
+ method public static void glObjectPtrLabelKHR(long, String);
method public static void glPatchParameteriEXT(int, int);
method public static void glPopDebugGroupKHR();
method public static void glPrimitiveBoundingBoxEXT(float, float, float, float, float, float, float, float);
- method public static void glPushDebugGroupKHR(int, int, int, java.lang.String);
+ method public static void glPushDebugGroupKHR(int, int, int, String);
method public static void glSamplerParameterIivEXT(int, int, int[], int);
method public static void glSamplerParameterIivEXT(int, int, java.nio.IntBuffer);
method public static void glSamplerParameterIuivEXT(int, int, int[], int);
@@ -33300,8 +33443,8 @@
field public static final int GL_VERTEX_ARRAY_KHR = 32884; // 0x8074
}
- public static abstract interface GLES31Ext.DebugProcKHR {
- method public abstract void onMessage(int, int, int, int, java.lang.String);
+ public static interface GLES31Ext.DebugProcKHR {
+ method public void onMessage(int, int, int, int, String);
}
public class GLES32 extends android.opengl.GLES31 {
@@ -33315,7 +33458,7 @@
method public static void glDebugMessageCallback(android.opengl.GLES32.DebugProc);
method public static void glDebugMessageControl(int, int, int, int, int[], int, boolean);
method public static void glDebugMessageControl(int, int, int, int, java.nio.IntBuffer, boolean);
- method public static void glDebugMessageInsert(int, int, int, int, int, java.lang.String);
+ method public static void glDebugMessageInsert(int, int, int, int, int, String);
method public static void glDisablei(int, int);
method public static void glDrawElementsBaseVertex(int, int, int, java.nio.Buffer, int);
method public static void glDrawElementsInstancedBaseVertex(int, int, int, java.nio.Buffer, int, int);
@@ -33325,11 +33468,11 @@
method public static void glFramebufferTexture(int, int, int, int);
method public static int glGetDebugMessageLog(int, int, int[], int, int[], int, int[], int, int[], int, int[], int, byte[], int);
method public static int glGetDebugMessageLog(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
- method public static java.lang.String[] glGetDebugMessageLog(int, int[], int, int[], int, int[], int, int[], int);
- method public static java.lang.String[] glGetDebugMessageLog(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
+ method public static String[] glGetDebugMessageLog(int, int[], int, int[], int, int[], int, int[], int);
+ method public static String[] glGetDebugMessageLog(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
method public static int glGetGraphicsResetStatus();
- method public static java.lang.String glGetObjectLabel(int, int);
- method public static java.lang.String glGetObjectPtrLabel(long);
+ method public static String glGetObjectLabel(int, int);
+ method public static String glGetObjectPtrLabel(long);
method public static long glGetPointerv(int);
method public static void glGetSamplerParameterIiv(int, int, int[], int);
method public static void glGetSamplerParameterIiv(int, int, java.nio.IntBuffer);
@@ -33347,12 +33490,12 @@
method public static void glGetnUniformuiv(int, int, int, java.nio.IntBuffer);
method public static boolean glIsEnabledi(int, int);
method public static void glMinSampleShading(float);
- method public static void glObjectLabel(int, int, int, java.lang.String);
- method public static void glObjectPtrLabel(long, java.lang.String);
+ method public static void glObjectLabel(int, int, int, String);
+ method public static void glObjectPtrLabel(long, String);
method public static void glPatchParameteri(int, int);
method public static void glPopDebugGroup();
method public static void glPrimitiveBoundingBox(float, float, float, float, float, float, float, float);
- method public static void glPushDebugGroup(int, int, int, java.lang.String);
+ method public static void glPushDebugGroup(int, int, int, String);
method public static void glReadnPixels(int, int, int, int, int, int, int, java.nio.Buffer);
method public static void glSamplerParameterIiv(int, int, int[], int);
method public static void glSamplerParameterIiv(int, int, java.nio.IntBuffer);
@@ -33573,13 +33716,13 @@
field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
}
- public static abstract interface GLES32.DebugProc {
- method public abstract void onMessage(int, int, int, int, java.lang.String);
+ public static interface GLES32.DebugProc {
+ method public void onMessage(int, int, int, int, String);
}
public class GLException extends java.lang.RuntimeException {
ctor public GLException(int);
- ctor public GLException(int, java.lang.String);
+ ctor public GLException(int, String);
}
public class GLSurfaceView extends android.view.SurfaceView implements android.view.SurfaceHolder.Callback2 {
@@ -33590,7 +33733,7 @@
method public int getRenderMode();
method public void onPause();
method public void onResume();
- method public void queueEvent(java.lang.Runnable);
+ method public void queueEvent(Runnable);
method public void requestRender();
method public void setDebugFlags(int);
method public void setEGLConfigChooser(android.opengl.GLSurfaceView.EGLConfigChooser);
@@ -33606,40 +33749,40 @@
method public void surfaceChanged(android.view.SurfaceHolder, int, int, int);
method public void surfaceCreated(android.view.SurfaceHolder);
method public void surfaceDestroyed(android.view.SurfaceHolder);
- method public deprecated void surfaceRedrawNeeded(android.view.SurfaceHolder);
+ method @Deprecated public void surfaceRedrawNeeded(android.view.SurfaceHolder);
field public static final int DEBUG_CHECK_GL_ERROR = 1; // 0x1
field public static final int DEBUG_LOG_GL_CALLS = 2; // 0x2
field public static final int RENDERMODE_CONTINUOUSLY = 1; // 0x1
field public static final int RENDERMODE_WHEN_DIRTY = 0; // 0x0
}
- public static abstract interface GLSurfaceView.EGLConfigChooser {
- method public abstract javax.microedition.khronos.egl.EGLConfig chooseConfig(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay);
+ public static interface GLSurfaceView.EGLConfigChooser {
+ method public javax.microedition.khronos.egl.EGLConfig chooseConfig(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay);
}
- public static abstract interface GLSurfaceView.EGLContextFactory {
- method public abstract javax.microedition.khronos.egl.EGLContext createContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig);
- method public abstract void destroyContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
+ public static interface GLSurfaceView.EGLContextFactory {
+ method public javax.microedition.khronos.egl.EGLContext createContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig);
+ method public void destroyContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
}
- public static abstract interface GLSurfaceView.EGLWindowSurfaceFactory {
- method public abstract javax.microedition.khronos.egl.EGLSurface createWindowSurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, java.lang.Object);
- method public abstract void destroySurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
+ public static interface GLSurfaceView.EGLWindowSurfaceFactory {
+ method public javax.microedition.khronos.egl.EGLSurface createWindowSurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object);
+ method public void destroySurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
}
- public static abstract interface GLSurfaceView.GLWrapper {
- method public abstract javax.microedition.khronos.opengles.GL wrap(javax.microedition.khronos.opengles.GL);
+ public static interface GLSurfaceView.GLWrapper {
+ method public javax.microedition.khronos.opengles.GL wrap(javax.microedition.khronos.opengles.GL);
}
- public static abstract interface GLSurfaceView.Renderer {
- method public abstract void onDrawFrame(javax.microedition.khronos.opengles.GL10);
- method public abstract void onSurfaceChanged(javax.microedition.khronos.opengles.GL10, int, int);
- method public abstract void onSurfaceCreated(javax.microedition.khronos.opengles.GL10, javax.microedition.khronos.egl.EGLConfig);
+ public static interface GLSurfaceView.Renderer {
+ method public void onDrawFrame(javax.microedition.khronos.opengles.GL10);
+ method public void onSurfaceChanged(javax.microedition.khronos.opengles.GL10, int, int);
+ method public void onSurfaceCreated(javax.microedition.khronos.opengles.GL10, javax.microedition.khronos.egl.EGLConfig);
}
public class GLU {
ctor public GLU();
- method public static java.lang.String gluErrorString(int);
+ method public static String gluErrorString(int);
method public static void gluLookAt(javax.microedition.khronos.opengles.GL10, float, float, float, float, float, float, float, float, float);
method public static void gluOrtho2D(javax.microedition.khronos.opengles.GL10, float, float, float, float);
method public static void gluPerspective(javax.microedition.khronos.opengles.GL10, float, float, float, float);
@@ -33648,7 +33791,7 @@
}
public final class GLUtils {
- method public static java.lang.String getEGLErrorString(int);
+ method public static String getEGLErrorString(int);
method public static int getInternalFormat(android.graphics.Bitmap);
method public static int getType(android.graphics.Bitmap);
method public static void texImage2D(int, int, int, android.graphics.Bitmap, int);
@@ -33659,7 +33802,7 @@
}
public class Matrix {
- ctor public deprecated Matrix();
+ ctor @Deprecated public Matrix();
method public static void frustumM(float[], int, float, float, float, float, float, float);
method public static boolean invertM(float[], int, float[], int);
method public static float length(float, float, float);
@@ -33694,70 +33837,68 @@
public abstract class AsyncTask<Params, Progress, Result> {
ctor public AsyncTask();
method public final boolean cancel(boolean);
- method protected abstract Result doInBackground(Params...);
- method public final android.os.AsyncTask<Params, Progress, Result> execute(Params...);
- method public static void execute(java.lang.Runnable);
- method public final android.os.AsyncTask<Params, Progress, Result> executeOnExecutor(java.util.concurrent.Executor, Params...);
+ method @WorkerThread protected abstract Result doInBackground(Params...);
+ method @MainThread public final android.os.AsyncTask<Params,Progress,Result> execute(Params...);
+ method @MainThread public static void execute(Runnable);
+ method @MainThread public final android.os.AsyncTask<Params,Progress,Result> executeOnExecutor(java.util.concurrent.Executor, Params...);
method public final Result get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
method public final Result get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
method public final android.os.AsyncTask.Status getStatus();
method public final boolean isCancelled();
- method protected void onCancelled(Result);
- method protected void onCancelled();
- method protected void onPostExecute(Result);
- method protected void onPreExecute();
- method protected void onProgressUpdate(Progress...);
- method protected final void publishProgress(Progress...);
+ method @MainThread protected void onCancelled(Result);
+ method @MainThread protected void onCancelled();
+ method @MainThread protected void onPostExecute(Result);
+ method @MainThread protected void onPreExecute();
+ method @MainThread protected void onProgressUpdate(Progress...);
+ method @WorkerThread protected final void publishProgress(Progress...);
field public static final java.util.concurrent.Executor SERIAL_EXECUTOR;
field public static final java.util.concurrent.Executor THREAD_POOL_EXECUTOR;
}
- public static final class AsyncTask.Status extends java.lang.Enum {
- method public static android.os.AsyncTask.Status valueOf(java.lang.String);
- method public static final android.os.AsyncTask.Status[] values();
+ public enum AsyncTask.Status {
enum_constant public static final android.os.AsyncTask.Status FINISHED;
enum_constant public static final android.os.AsyncTask.Status PENDING;
enum_constant public static final android.os.AsyncTask.Status RUNNING;
}
public class BadParcelableException extends android.util.AndroidRuntimeException {
- ctor public BadParcelableException(java.lang.String);
- ctor public BadParcelableException(java.lang.Exception);
+ ctor public BadParcelableException(String);
+ ctor public BadParcelableException(Exception);
}
public class BaseBundle {
method public void clear();
- method public boolean containsKey(java.lang.String);
- method public java.lang.Object get(java.lang.String);
- method public boolean getBoolean(java.lang.String);
- method public boolean getBoolean(java.lang.String, boolean);
- method public boolean[] getBooleanArray(java.lang.String);
- method public double getDouble(java.lang.String);
- method public double getDouble(java.lang.String, double);
- method public double[] getDoubleArray(java.lang.String);
- method public int getInt(java.lang.String);
- method public int getInt(java.lang.String, int);
- method public int[] getIntArray(java.lang.String);
- method public long getLong(java.lang.String);
- method public long getLong(java.lang.String, long);
- method public long[] getLongArray(java.lang.String);
- method public java.lang.String getString(java.lang.String);
- method public java.lang.String getString(java.lang.String, java.lang.String);
- method public java.lang.String[] getStringArray(java.lang.String);
+ method public boolean containsKey(String);
+ method @Nullable public Object get(String);
+ method public boolean getBoolean(String);
+ method public boolean getBoolean(String, boolean);
+ method @Nullable public boolean[] getBooleanArray(@Nullable String);
+ method public double getDouble(String);
+ method public double getDouble(String, double);
+ method @Nullable public double[] getDoubleArray(@Nullable String);
+ method public int getInt(String);
+ method public int getInt(String, int);
+ method @Nullable public int[] getIntArray(@Nullable String);
+ method public long getLong(String);
+ method public long getLong(String, long);
+ method @Nullable public long[] getLongArray(@Nullable String);
+ method @Nullable public String getString(@Nullable String);
+ method public String getString(@Nullable String, String);
+ method @Nullable public String[] getStringArray(@Nullable String);
method public boolean isEmpty();
method public java.util.Set<java.lang.String> keySet();
method public void putAll(android.os.PersistableBundle);
- method public void putBoolean(java.lang.String, boolean);
- method public void putBooleanArray(java.lang.String, boolean[]);
- method public void putDouble(java.lang.String, double);
- method public void putDoubleArray(java.lang.String, double[]);
- method public void putInt(java.lang.String, int);
- method public void putIntArray(java.lang.String, int[]);
- method public void putLong(java.lang.String, long);
- method public void putLongArray(java.lang.String, long[]);
- method public void putString(java.lang.String, java.lang.String);
- method public void putStringArray(java.lang.String, java.lang.String[]);
- method public void remove(java.lang.String);
+ method public void putBoolean(@Nullable String, boolean);
+ method public void putBooleanArray(@Nullable String, @Nullable boolean[]);
+ method public void putDouble(@Nullable String, double);
+ method public void putDoubleArray(@Nullable String, @Nullable double[]);
+ method public void putInt(@Nullable String, int);
+ method public void putIntArray(@Nullable String, @Nullable int[]);
+ method public void putLong(@Nullable String, long);
+ method public void putLongArray(@Nullable String, @Nullable long[]);
+ method public void putString(@Nullable String, @Nullable String);
+ method public void putStringArray(@Nullable String, @Nullable String[]);
+ method public void remove(String);
method public int size();
}
@@ -33766,8 +33907,8 @@
method public int getIntProperty(int);
method public long getLongProperty(int);
method public boolean isCharging();
- field public static final java.lang.String ACTION_CHARGING = "android.os.action.CHARGING";
- field public static final java.lang.String ACTION_DISCHARGING = "android.os.action.DISCHARGING";
+ field public static final String ACTION_CHARGING = "android.os.action.CHARGING";
+ field public static final String ACTION_DISCHARGING = "android.os.action.DISCHARGING";
field public static final int BATTERY_HEALTH_COLD = 7; // 0x7
field public static final int BATTERY_HEALTH_DEAD = 4; // 0x4
field public static final int BATTERY_HEALTH_GOOD = 2; // 0x2
@@ -33789,93 +33930,93 @@
field public static final int BATTERY_STATUS_FULL = 5; // 0x5
field public static final int BATTERY_STATUS_NOT_CHARGING = 4; // 0x4
field public static final int BATTERY_STATUS_UNKNOWN = 1; // 0x1
- field public static final java.lang.String EXTRA_BATTERY_LOW = "battery_low";
- field public static final java.lang.String EXTRA_HEALTH = "health";
- field public static final java.lang.String EXTRA_ICON_SMALL = "icon-small";
- field public static final java.lang.String EXTRA_LEVEL = "level";
- field public static final java.lang.String EXTRA_PLUGGED = "plugged";
- field public static final java.lang.String EXTRA_PRESENT = "present";
- field public static final java.lang.String EXTRA_SCALE = "scale";
- field public static final java.lang.String EXTRA_STATUS = "status";
- field public static final java.lang.String EXTRA_TECHNOLOGY = "technology";
- field public static final java.lang.String EXTRA_TEMPERATURE = "temperature";
- field public static final java.lang.String EXTRA_VOLTAGE = "voltage";
+ field public static final String EXTRA_BATTERY_LOW = "battery_low";
+ field public static final String EXTRA_HEALTH = "health";
+ field public static final String EXTRA_ICON_SMALL = "icon-small";
+ field public static final String EXTRA_LEVEL = "level";
+ field public static final String EXTRA_PLUGGED = "plugged";
+ field public static final String EXTRA_PRESENT = "present";
+ field public static final String EXTRA_SCALE = "scale";
+ field public static final String EXTRA_STATUS = "status";
+ field public static final String EXTRA_TECHNOLOGY = "technology";
+ field public static final String EXTRA_TEMPERATURE = "temperature";
+ field public static final String EXTRA_VOLTAGE = "voltage";
}
public class Binder implements android.os.IBinder {
ctor public Binder();
- ctor public Binder(java.lang.String);
- method public void attachInterface(android.os.IInterface, java.lang.String);
+ ctor public Binder(@Nullable String);
+ method public void attachInterface(@Nullable android.os.IInterface, @Nullable String);
method public static final long clearCallingIdentity();
- method public void dump(java.io.FileDescriptor, java.lang.String[]);
- method protected void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method public void dumpAsync(java.io.FileDescriptor, java.lang.String[]);
+ method public void dump(@NonNull java.io.FileDescriptor, @Nullable String[]);
+ method protected void dump(@NonNull java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]);
+ method public void dumpAsync(@NonNull java.io.FileDescriptor, @Nullable String[]);
method public static final void flushPendingCommands();
method public static final int getCallingPid();
method public static final int getCallingUid();
method public static final int getCallingUidOrThrow();
- method public static final android.os.UserHandle getCallingUserHandle();
- method public java.lang.String getInterfaceDescriptor();
+ method @NonNull public static final android.os.UserHandle getCallingUserHandle();
+ method @Nullable public String getInterfaceDescriptor();
method public boolean isBinderAlive();
method public static final void joinThreadPool();
- method public void linkToDeath(android.os.IBinder.DeathRecipient, int);
- method protected boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
+ method public void linkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
+ method protected boolean onTransact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
method public boolean pingBinder();
- method public android.os.IInterface queryLocalInterface(java.lang.String);
+ method @Nullable public android.os.IInterface queryLocalInterface(@NonNull String);
method public static final void restoreCallingIdentity(long);
- method public final boolean transact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
- method public boolean unlinkToDeath(android.os.IBinder.DeathRecipient, int);
+ method public final boolean transact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
+ method public boolean unlinkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
}
public class Build {
ctor public Build();
- method public static java.util.List<android.os.Build.Partition> getFingerprintedPartitions();
- method public static java.lang.String getRadioVersion();
- method public static java.lang.String getSerial();
- field public static final java.lang.String BOARD;
- field public static final java.lang.String BOOTLOADER;
- field public static final java.lang.String BRAND;
- field public static final deprecated java.lang.String CPU_ABI;
- field public static final deprecated java.lang.String CPU_ABI2;
- field public static final java.lang.String DEVICE;
- field public static final java.lang.String DISPLAY;
- field public static final java.lang.String FINGERPRINT;
- field public static final java.lang.String HARDWARE;
- field public static final java.lang.String HOST;
- field public static final java.lang.String ID;
- field public static final java.lang.String MANUFACTURER;
- field public static final java.lang.String MODEL;
- field public static final java.lang.String PRODUCT;
- field public static final deprecated java.lang.String RADIO;
- field public static final deprecated java.lang.String SERIAL;
- field public static final java.lang.String[] SUPPORTED_32_BIT_ABIS;
- field public static final java.lang.String[] SUPPORTED_64_BIT_ABIS;
- field public static final java.lang.String[] SUPPORTED_ABIS;
- field public static final java.lang.String TAGS;
+ method @NonNull public static java.util.List<android.os.Build.Partition> getFingerprintedPartitions();
+ method public static String getRadioVersion();
+ method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public static String getSerial();
+ field public static final String BOARD;
+ field public static final String BOOTLOADER;
+ field public static final String BRAND;
+ field @Deprecated public static final String CPU_ABI;
+ field @Deprecated public static final String CPU_ABI2;
+ field public static final String DEVICE;
+ field public static final String DISPLAY;
+ field public static final String FINGERPRINT;
+ field public static final String HARDWARE;
+ field public static final String HOST;
+ field public static final String ID;
+ field public static final String MANUFACTURER;
+ field public static final String MODEL;
+ field public static final String PRODUCT;
+ field @Deprecated public static final String RADIO;
+ field @Deprecated public static final String SERIAL;
+ field public static final String[] SUPPORTED_32_BIT_ABIS;
+ field public static final String[] SUPPORTED_64_BIT_ABIS;
+ field public static final String[] SUPPORTED_ABIS;
+ field public static final String TAGS;
field public static final long TIME;
- field public static final java.lang.String TYPE;
- field public static final java.lang.String UNKNOWN = "unknown";
- field public static final java.lang.String USER;
+ field public static final String TYPE;
+ field public static final String UNKNOWN = "unknown";
+ field public static final String USER;
}
public static class Build.Partition {
ctor public Build.Partition();
method public long getBuildTimeMillis();
- method public java.lang.String getFingerprint();
- method public java.lang.String getName();
- field public static final java.lang.String PARTITION_NAME_SYSTEM = "system";
+ method @NonNull public String getFingerprint();
+ method @NonNull public String getName();
+ field public static final String PARTITION_NAME_SYSTEM = "system";
}
public static class Build.VERSION {
ctor public Build.VERSION();
- field public static final java.lang.String BASE_OS;
- field public static final java.lang.String CODENAME;
- field public static final java.lang.String INCREMENTAL;
+ field public static final String BASE_OS;
+ field public static final String CODENAME;
+ field public static final String INCREMENTAL;
field public static final int PREVIEW_SDK_INT;
- field public static final java.lang.String RELEASE;
- field public static final deprecated java.lang.String SDK;
+ field public static final String RELEASE;
+ field @Deprecated public static final String SDK;
field public static final int SDK_INT;
- field public static final java.lang.String SECURITY_PATCH;
+ field public static final String SECURITY_PATCH;
}
public static class Build.VERSION_CODES {
@@ -33914,68 +34055,67 @@
public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
ctor public Bundle();
- ctor public Bundle(java.lang.ClassLoader);
+ ctor public Bundle(ClassLoader);
ctor public Bundle(int);
ctor public Bundle(android.os.Bundle);
ctor public Bundle(android.os.PersistableBundle);
- method public java.lang.Object clone();
+ method public Object clone();
method public android.os.Bundle deepCopy();
method public int describeContents();
- method public android.os.IBinder getBinder(java.lang.String);
- method public android.os.Bundle getBundle(java.lang.String);
- method public byte getByte(java.lang.String);
- method public java.lang.Byte getByte(java.lang.String, byte);
- method public byte[] getByteArray(java.lang.String);
- method public char getChar(java.lang.String);
- method public char getChar(java.lang.String, char);
- method public char[] getCharArray(java.lang.String);
- method public java.lang.CharSequence getCharSequence(java.lang.String);
- method public java.lang.CharSequence getCharSequence(java.lang.String, java.lang.CharSequence);
- method public java.lang.CharSequence[] getCharSequenceArray(java.lang.String);
- method public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayList(java.lang.String);
- method public java.lang.ClassLoader getClassLoader();
- method public float getFloat(java.lang.String);
- method public float getFloat(java.lang.String, float);
- method public float[] getFloatArray(java.lang.String);
- method public java.util.ArrayList<java.lang.Integer> getIntegerArrayList(java.lang.String);
- method public <T extends android.os.Parcelable> T getParcelable(java.lang.String);
- method public android.os.Parcelable[] getParcelableArray(java.lang.String);
- method public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayList(java.lang.String);
- method public java.io.Serializable getSerializable(java.lang.String);
- method public short getShort(java.lang.String);
- method public short getShort(java.lang.String, short);
- method public short[] getShortArray(java.lang.String);
- method public android.util.Size getSize(java.lang.String);
- method public android.util.SizeF getSizeF(java.lang.String);
- method public <T extends android.os.Parcelable> android.util.SparseArray<T> getSparseParcelableArray(java.lang.String);
- method public java.util.ArrayList<java.lang.String> getStringArrayList(java.lang.String);
+ method @Nullable public android.os.IBinder getBinder(@Nullable String);
+ method @Nullable public android.os.Bundle getBundle(@Nullable String);
+ method public byte getByte(String);
+ method public Byte getByte(String, byte);
+ method @Nullable public byte[] getByteArray(@Nullable String);
+ method public char getChar(String);
+ method public char getChar(String, char);
+ method @Nullable public char[] getCharArray(@Nullable String);
+ method @Nullable public CharSequence getCharSequence(@Nullable String);
+ method public CharSequence getCharSequence(@Nullable String, CharSequence);
+ method @Nullable public CharSequence[] getCharSequenceArray(@Nullable String);
+ method @Nullable public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayList(@Nullable String);
+ method public ClassLoader getClassLoader();
+ method public float getFloat(String);
+ method public float getFloat(String, float);
+ method @Nullable public float[] getFloatArray(@Nullable String);
+ method @Nullable public java.util.ArrayList<java.lang.Integer> getIntegerArrayList(@Nullable String);
+ method @Nullable public <T extends android.os.Parcelable> T getParcelable(@Nullable String);
+ method @Nullable public android.os.Parcelable[] getParcelableArray(@Nullable String);
+ method @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayList(@Nullable String);
+ method @Nullable public java.io.Serializable getSerializable(@Nullable String);
+ method public short getShort(String);
+ method public short getShort(String, short);
+ method @Nullable public short[] getShortArray(@Nullable String);
+ method @Nullable public android.util.Size getSize(@Nullable String);
+ method @Nullable public android.util.SizeF getSizeF(@Nullable String);
+ method @Nullable public <T extends android.os.Parcelable> android.util.SparseArray<T> getSparseParcelableArray(@Nullable String);
+ method @Nullable public java.util.ArrayList<java.lang.String> getStringArrayList(@Nullable String);
method public boolean hasFileDescriptors();
method public void putAll(android.os.Bundle);
- method public void putBinder(java.lang.String, android.os.IBinder);
- method public void putBundle(java.lang.String, android.os.Bundle);
- method public void putByte(java.lang.String, byte);
- method public void putByteArray(java.lang.String, byte[]);
- method public void putChar(java.lang.String, char);
- method public void putCharArray(java.lang.String, char[]);
- method public void putCharSequence(java.lang.String, java.lang.CharSequence);
- method public void putCharSequenceArray(java.lang.String, java.lang.CharSequence[]);
- method public void putCharSequenceArrayList(java.lang.String, java.util.ArrayList<java.lang.CharSequence>);
- method public void putFloat(java.lang.String, float);
- method public void putFloatArray(java.lang.String, float[]);
- method public void putIntegerArrayList(java.lang.String, java.util.ArrayList<java.lang.Integer>);
- method public void putParcelable(java.lang.String, android.os.Parcelable);
- method public void putParcelableArray(java.lang.String, android.os.Parcelable[]);
- method public void putParcelableArrayList(java.lang.String, java.util.ArrayList<? extends android.os.Parcelable>);
- method public void putSerializable(java.lang.String, java.io.Serializable);
- method public void putShort(java.lang.String, short);
- method public void putShortArray(java.lang.String, short[]);
- method public void putSize(java.lang.String, android.util.Size);
- method public void putSizeF(java.lang.String, android.util.SizeF);
- method public void putSparseParcelableArray(java.lang.String, android.util.SparseArray<? extends android.os.Parcelable>);
- method public void putStringArrayList(java.lang.String, java.util.ArrayList<java.lang.String>);
+ method public void putBinder(@Nullable String, @Nullable android.os.IBinder);
+ method public void putBundle(@Nullable String, @Nullable android.os.Bundle);
+ method public void putByte(@Nullable String, byte);
+ method public void putByteArray(@Nullable String, @Nullable byte[]);
+ method public void putChar(@Nullable String, char);
+ method public void putCharArray(@Nullable String, @Nullable char[]);
+ method public void putCharSequence(@Nullable String, @Nullable CharSequence);
+ method public void putCharSequenceArray(@Nullable String, @Nullable CharSequence[]);
+ method public void putCharSequenceArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.CharSequence>);
+ method public void putFloat(@Nullable String, float);
+ method public void putFloatArray(@Nullable String, @Nullable float[]);
+ method public void putIntegerArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.Integer>);
+ method public void putParcelable(@Nullable String, @Nullable android.os.Parcelable);
+ method public void putParcelableArray(@Nullable String, @Nullable android.os.Parcelable[]);
+ method public void putParcelableArrayList(@Nullable String, @Nullable java.util.ArrayList<? extends android.os.Parcelable>);
+ method public void putSerializable(@Nullable String, @Nullable java.io.Serializable);
+ method public void putShort(@Nullable String, short);
+ method public void putShortArray(@Nullable String, @Nullable short[]);
+ method public void putSize(@Nullable String, @Nullable android.util.Size);
+ method public void putSizeF(@Nullable String, @Nullable android.util.SizeF);
+ method public void putSparseParcelableArray(@Nullable String, @Nullable android.util.SparseArray<? extends android.os.Parcelable>);
+ method public void putStringArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.String>);
method public void readFromParcel(android.os.Parcel);
- method public void setClassLoader(java.lang.ClassLoader);
- method public synchronized java.lang.String toString();
+ method public void setClassLoader(ClassLoader);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.Bundle> CREATOR;
field public static final android.os.Bundle EMPTY;
@@ -33989,8 +34129,8 @@
method public void throwIfCanceled();
}
- public static abstract interface CancellationSignal.OnCancelListener {
- method public abstract void onCancel();
+ public static interface CancellationSignal.OnCancelListener {
+ method public void onCancel();
}
public class ConditionVariable {
@@ -34004,10 +34144,10 @@
public abstract class CountDownTimer {
ctor public CountDownTimer(long, long);
- method public final synchronized void cancel();
+ method public final void cancel();
method public abstract void onFinish();
method public abstract void onTick(long);
- method public final synchronized android.os.CountDownTimer start();
+ method public final android.os.CountDownTimer start();
}
public final class CpuUsageInfo implements android.os.Parcelable {
@@ -34020,7 +34160,7 @@
public class DeadObjectException extends android.os.RemoteException {
ctor public DeadObjectException();
- ctor public DeadObjectException(java.lang.String);
+ ctor public DeadObjectException(String);
}
public class DeadSystemException extends android.os.DeadObjectException {
@@ -34028,69 +34168,69 @@
}
public final class Debug {
- method public static void attachJvmtiAgent(java.lang.String, java.lang.String, java.lang.ClassLoader) throws java.io.IOException;
- method public static deprecated void changeDebugPort(int);
- method public static void dumpHprofData(java.lang.String) throws java.io.IOException;
- method public static boolean dumpService(java.lang.String, java.io.FileDescriptor, java.lang.String[]);
+ method public static void attachJvmtiAgent(@NonNull String, @Nullable String, @Nullable ClassLoader) throws java.io.IOException;
+ method @Deprecated public static void changeDebugPort(int);
+ method public static void dumpHprofData(String) throws java.io.IOException;
+ method public static boolean dumpService(String, java.io.FileDescriptor, String[]);
method public static void enableEmulatorTraceOutput();
method public static int getBinderDeathObjectCount();
method public static int getBinderLocalObjectCount();
method public static int getBinderProxyObjectCount();
method public static int getBinderReceivedTransactions();
method public static int getBinderSentTransactions();
- method public static deprecated int getGlobalAllocCount();
- method public static deprecated int getGlobalAllocSize();
- method public static deprecated int getGlobalClassInitCount();
- method public static deprecated int getGlobalClassInitTime();
- method public static deprecated int getGlobalExternalAllocCount();
- method public static deprecated int getGlobalExternalAllocSize();
- method public static deprecated int getGlobalExternalFreedCount();
- method public static deprecated int getGlobalExternalFreedSize();
- method public static deprecated int getGlobalFreedCount();
- method public static deprecated int getGlobalFreedSize();
- method public static deprecated int getGlobalGcInvocationCount();
+ method @Deprecated public static int getGlobalAllocCount();
+ method @Deprecated public static int getGlobalAllocSize();
+ method @Deprecated public static int getGlobalClassInitCount();
+ method @Deprecated public static int getGlobalClassInitTime();
+ method @Deprecated public static int getGlobalExternalAllocCount();
+ method @Deprecated public static int getGlobalExternalAllocSize();
+ method @Deprecated public static int getGlobalExternalFreedCount();
+ method @Deprecated public static int getGlobalExternalFreedSize();
+ method @Deprecated public static int getGlobalFreedCount();
+ method @Deprecated public static int getGlobalFreedSize();
+ method @Deprecated public static int getGlobalGcInvocationCount();
method public static int getLoadedClassCount();
method public static void getMemoryInfo(android.os.Debug.MemoryInfo);
method public static long getNativeHeapAllocatedSize();
method public static long getNativeHeapFreeSize();
method public static long getNativeHeapSize();
method public static long getPss();
- method public static java.lang.String getRuntimeStat(java.lang.String);
- method public static java.util.Map<java.lang.String, java.lang.String> getRuntimeStats();
- method public static deprecated int getThreadAllocCount();
- method public static deprecated int getThreadAllocSize();
- method public static deprecated int getThreadExternalAllocCount();
- method public static deprecated int getThreadExternalAllocSize();
- method public static deprecated int getThreadGcInvocationCount();
+ method public static String getRuntimeStat(String);
+ method public static java.util.Map<java.lang.String,java.lang.String> getRuntimeStats();
+ method @Deprecated public static int getThreadAllocCount();
+ method @Deprecated public static int getThreadAllocSize();
+ method @Deprecated public static int getThreadExternalAllocCount();
+ method @Deprecated public static int getThreadExternalAllocSize();
+ method @Deprecated public static int getThreadGcInvocationCount();
method public static boolean isDebuggerConnected();
method public static void printLoadedClasses(int);
- method public static deprecated void resetAllCounts();
- method public static deprecated void resetGlobalAllocCount();
- method public static deprecated void resetGlobalAllocSize();
- method public static deprecated void resetGlobalClassInitCount();
- method public static deprecated void resetGlobalClassInitTime();
- method public static deprecated void resetGlobalExternalAllocCount();
- method public static deprecated void resetGlobalExternalAllocSize();
- method public static deprecated void resetGlobalExternalFreedCount();
- method public static deprecated void resetGlobalExternalFreedSize();
- method public static deprecated void resetGlobalFreedCount();
- method public static deprecated void resetGlobalFreedSize();
- method public static deprecated void resetGlobalGcInvocationCount();
- method public static deprecated void resetThreadAllocCount();
- method public static deprecated void resetThreadAllocSize();
- method public static deprecated void resetThreadExternalAllocCount();
- method public static deprecated void resetThreadExternalAllocSize();
- method public static deprecated void resetThreadGcInvocationCount();
- method public static deprecated int setAllocationLimit(int);
- method public static deprecated int setGlobalAllocationLimit(int);
- method public static deprecated void startAllocCounting();
+ method @Deprecated public static void resetAllCounts();
+ method @Deprecated public static void resetGlobalAllocCount();
+ method @Deprecated public static void resetGlobalAllocSize();
+ method @Deprecated public static void resetGlobalClassInitCount();
+ method @Deprecated public static void resetGlobalClassInitTime();
+ method @Deprecated public static void resetGlobalExternalAllocCount();
+ method @Deprecated public static void resetGlobalExternalAllocSize();
+ method @Deprecated public static void resetGlobalExternalFreedCount();
+ method @Deprecated public static void resetGlobalExternalFreedSize();
+ method @Deprecated public static void resetGlobalFreedCount();
+ method @Deprecated public static void resetGlobalFreedSize();
+ method @Deprecated public static void resetGlobalGcInvocationCount();
+ method @Deprecated public static void resetThreadAllocCount();
+ method @Deprecated public static void resetThreadAllocSize();
+ method @Deprecated public static void resetThreadExternalAllocCount();
+ method @Deprecated public static void resetThreadExternalAllocSize();
+ method @Deprecated public static void resetThreadGcInvocationCount();
+ method @Deprecated public static int setAllocationLimit(int);
+ method @Deprecated public static int setGlobalAllocationLimit(int);
+ method @Deprecated public static void startAllocCounting();
method public static void startMethodTracing();
- method public static void startMethodTracing(java.lang.String);
- method public static void startMethodTracing(java.lang.String, int);
- method public static void startMethodTracing(java.lang.String, int, int);
- method public static void startMethodTracingSampling(java.lang.String, int, int);
+ method public static void startMethodTracing(String);
+ method public static void startMethodTracing(String, int);
+ method public static void startMethodTracing(String, int, int);
+ method public static void startMethodTracingSampling(String, int, int);
method public static void startNativeTracing();
- method public static deprecated void stopAllocCounting();
+ method @Deprecated public static void stopAllocCounting();
method public static void stopMethodTracing();
method public static void stopNativeTracing();
method public static long threadCpuTimeNanos();
@@ -34099,22 +34239,22 @@
field public static final int SHOW_CLASSLOADER = 2; // 0x2
field public static final int SHOW_FULL_DETAIL = 1; // 0x1
field public static final int SHOW_INITIALIZED = 4; // 0x4
- field public static final deprecated int TRACE_COUNT_ALLOCS = 1; // 0x1
+ field @Deprecated public static final int TRACE_COUNT_ALLOCS = 1; // 0x1
}
- public static deprecated class Debug.InstructionCount {
- ctor public Debug.InstructionCount();
- method public boolean collect();
- method public int globalMethodInvocations();
- method public int globalTotal();
- method public boolean resetAndStart();
+ @Deprecated public static class Debug.InstructionCount {
+ ctor @Deprecated public Debug.InstructionCount();
+ method @Deprecated public boolean collect();
+ method @Deprecated public int globalMethodInvocations();
+ method @Deprecated public int globalTotal();
+ method @Deprecated public boolean resetAndStart();
}
public static class Debug.MemoryInfo implements android.os.Parcelable {
ctor public Debug.MemoryInfo();
method public int describeContents();
- method public java.lang.String getMemoryStat(java.lang.String);
- method public java.util.Map<java.lang.String, java.lang.String> getMemoryStats();
+ method public String getMemoryStat(String);
+ method public java.util.Map<java.lang.String,java.lang.String> getMemoryStats();
method public int getTotalPrivateClean();
method public int getTotalPrivateDirty();
method public int getTotalPss();
@@ -34137,31 +34277,31 @@
public class DropBoxManager {
ctor protected DropBoxManager();
- method public void addData(java.lang.String, byte[], int);
- method public void addFile(java.lang.String, java.io.File, int) throws java.io.IOException;
- method public void addText(java.lang.String, java.lang.String);
- method public android.os.DropBoxManager.Entry getNextEntry(java.lang.String, long);
- method public boolean isTagEnabled(java.lang.String);
- field public static final java.lang.String ACTION_DROPBOX_ENTRY_ADDED = "android.intent.action.DROPBOX_ENTRY_ADDED";
- field public static final java.lang.String EXTRA_TAG = "tag";
- field public static final java.lang.String EXTRA_TIME = "time";
+ method public void addData(String, byte[], int);
+ method public void addFile(String, java.io.File, int) throws java.io.IOException;
+ method public void addText(String, String);
+ method @RequiresPermission(allOf={android.Manifest.permission.READ_LOGS, android.Manifest.permission.PACKAGE_USAGE_STATS}) @Nullable public android.os.DropBoxManager.Entry getNextEntry(String, long);
+ method public boolean isTagEnabled(String);
+ field public static final String ACTION_DROPBOX_ENTRY_ADDED = "android.intent.action.DROPBOX_ENTRY_ADDED";
+ field public static final String EXTRA_TAG = "tag";
+ field public static final String EXTRA_TIME = "time";
field public static final int IS_EMPTY = 1; // 0x1
field public static final int IS_GZIPPED = 4; // 0x4
field public static final int IS_TEXT = 2; // 0x2
}
public static class DropBoxManager.Entry implements java.io.Closeable android.os.Parcelable {
- ctor public DropBoxManager.Entry(java.lang.String, long);
- ctor public DropBoxManager.Entry(java.lang.String, long, java.lang.String);
- ctor public DropBoxManager.Entry(java.lang.String, long, byte[], int);
- ctor public DropBoxManager.Entry(java.lang.String, long, android.os.ParcelFileDescriptor, int);
- ctor public DropBoxManager.Entry(java.lang.String, long, java.io.File, int) throws java.io.IOException;
+ ctor public DropBoxManager.Entry(String, long);
+ ctor public DropBoxManager.Entry(String, long, String);
+ ctor public DropBoxManager.Entry(String, long, byte[], int);
+ ctor public DropBoxManager.Entry(String, long, android.os.ParcelFileDescriptor, int);
+ ctor public DropBoxManager.Entry(String, long, java.io.File, int) throws java.io.IOException;
method public void close();
method public int describeContents();
method public int getFlags();
method public java.io.InputStream getInputStream() throws java.io.IOException;
- method public java.lang.String getTag();
- method public java.lang.String getText(int);
+ method public String getTag();
+ method public String getText(int);
method public long getTimeMillis();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.DropBoxManager.Entry> CREATOR;
@@ -34172,45 +34312,45 @@
method public static java.io.File getDataDirectory();
method public static java.io.File getDownloadCacheDirectory();
method public static java.io.File getExternalStorageDirectory();
- method public static java.io.File getExternalStoragePublicDirectory(java.lang.String);
- method public static java.lang.String getExternalStorageState();
- method public static java.lang.String getExternalStorageState(java.io.File);
+ method public static java.io.File getExternalStoragePublicDirectory(String);
+ method public static String getExternalStorageState();
+ method public static String getExternalStorageState(java.io.File);
method public static java.io.File getRootDirectory();
- method public static deprecated java.lang.String getStorageState(java.io.File);
+ method @Deprecated public static String getStorageState(java.io.File);
method public static boolean isExternalStorageEmulated();
method public static boolean isExternalStorageEmulated(java.io.File);
method public static boolean isExternalStorageRemovable();
method public static boolean isExternalStorageRemovable(java.io.File);
- field public static java.lang.String DIRECTORY_ALARMS;
- field public static java.lang.String DIRECTORY_AUDIOBOOKS;
- field public static java.lang.String DIRECTORY_DCIM;
- field public static java.lang.String DIRECTORY_DOCUMENTS;
- field public static java.lang.String DIRECTORY_DOWNLOADS;
- field public static java.lang.String DIRECTORY_MOVIES;
- field public static java.lang.String DIRECTORY_MUSIC;
- field public static java.lang.String DIRECTORY_NOTIFICATIONS;
- field public static java.lang.String DIRECTORY_PICTURES;
- field public static java.lang.String DIRECTORY_PODCASTS;
- field public static java.lang.String DIRECTORY_RINGTONES;
- field public static java.lang.String DIRECTORY_SCREENSHOTS;
- field public static final java.lang.String MEDIA_BAD_REMOVAL = "bad_removal";
- field public static final java.lang.String MEDIA_CHECKING = "checking";
- field public static final java.lang.String MEDIA_EJECTING = "ejecting";
- field public static final java.lang.String MEDIA_MOUNTED = "mounted";
- field public static final java.lang.String MEDIA_MOUNTED_READ_ONLY = "mounted_ro";
- field public static final java.lang.String MEDIA_NOFS = "nofs";
- field public static final java.lang.String MEDIA_REMOVED = "removed";
- field public static final java.lang.String MEDIA_SHARED = "shared";
- field public static final java.lang.String MEDIA_UNKNOWN = "unknown";
- field public static final java.lang.String MEDIA_UNMOUNTABLE = "unmountable";
- field public static final java.lang.String MEDIA_UNMOUNTED = "unmounted";
+ field public static String DIRECTORY_ALARMS;
+ field public static String DIRECTORY_AUDIOBOOKS;
+ field public static String DIRECTORY_DCIM;
+ field public static String DIRECTORY_DOCUMENTS;
+ field public static String DIRECTORY_DOWNLOADS;
+ field public static String DIRECTORY_MOVIES;
+ field public static String DIRECTORY_MUSIC;
+ field public static String DIRECTORY_NOTIFICATIONS;
+ field public static String DIRECTORY_PICTURES;
+ field public static String DIRECTORY_PODCASTS;
+ field public static String DIRECTORY_RINGTONES;
+ field public static String DIRECTORY_SCREENSHOTS;
+ field public static final String MEDIA_BAD_REMOVAL = "bad_removal";
+ field public static final String MEDIA_CHECKING = "checking";
+ field public static final String MEDIA_EJECTING = "ejecting";
+ field public static final String MEDIA_MOUNTED = "mounted";
+ field public static final String MEDIA_MOUNTED_READ_ONLY = "mounted_ro";
+ field public static final String MEDIA_NOFS = "nofs";
+ field public static final String MEDIA_REMOVED = "removed";
+ field public static final String MEDIA_SHARED = "shared";
+ field public static final String MEDIA_UNKNOWN = "unknown";
+ field public static final String MEDIA_UNMOUNTABLE = "unmountable";
+ field public static final String MEDIA_UNMOUNTED = "unmounted";
}
public abstract class FileObserver {
- ctor public FileObserver(java.lang.String);
- ctor public FileObserver(java.lang.String, int);
+ ctor public FileObserver(String);
+ ctor public FileObserver(String, int);
method protected void finalize();
- method public abstract void onEvent(int, java.lang.String);
+ method public abstract void onEvent(int, @Nullable String);
method public void startWatching();
method public void stopWatching();
field public static final int ACCESS = 1; // 0x1
@@ -34229,22 +34369,22 @@
}
public class FileUriExposedException extends java.lang.RuntimeException {
- ctor public FileUriExposedException(java.lang.String);
+ ctor public FileUriExposedException(String);
}
public class FileUtils {
- method public static void closeQuietly(java.lang.AutoCloseable);
- method public static void closeQuietly(java.io.FileDescriptor);
- method public static long copy(java.io.File, java.io.File) throws java.io.IOException;
- method public static long copy(java.io.File, java.io.File, android.os.CancellationSignal, java.util.concurrent.Executor, android.os.FileUtils.ProgressListener) throws java.io.IOException;
- method public static long copy(java.io.InputStream, java.io.OutputStream) throws java.io.IOException;
- method public static long copy(java.io.InputStream, java.io.OutputStream, android.os.CancellationSignal, java.util.concurrent.Executor, android.os.FileUtils.ProgressListener) throws java.io.IOException;
- method public static long copy(java.io.FileDescriptor, java.io.FileDescriptor) throws java.io.IOException;
- method public static long copy(java.io.FileDescriptor, java.io.FileDescriptor, android.os.CancellationSignal, java.util.concurrent.Executor, android.os.FileUtils.ProgressListener) throws java.io.IOException;
+ method public static void closeQuietly(@Nullable AutoCloseable);
+ method public static void closeQuietly(@Nullable java.io.FileDescriptor);
+ method public static long copy(@NonNull java.io.File, @NonNull java.io.File) throws java.io.IOException;
+ method public static long copy(@NonNull java.io.File, @NonNull java.io.File, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
+ method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream) throws java.io.IOException;
+ method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
+ method public static long copy(@NonNull java.io.FileDescriptor, @NonNull java.io.FileDescriptor) throws java.io.IOException;
+ method public static long copy(@NonNull java.io.FileDescriptor, @NonNull java.io.FileDescriptor, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
}
- public static abstract interface FileUtils.ProgressListener {
- method public abstract void onProgress(long);
+ public static interface FileUtils.ProgressListener {
+ method public void onProgress(long);
}
public class Handler {
@@ -34252,32 +34392,32 @@
ctor public Handler(android.os.Handler.Callback);
ctor public Handler(android.os.Looper);
ctor public Handler(android.os.Looper, android.os.Handler.Callback);
- method public static android.os.Handler createAsync(android.os.Looper);
- method public static android.os.Handler createAsync(android.os.Looper, android.os.Handler.Callback);
+ method @NonNull public static android.os.Handler createAsync(@NonNull android.os.Looper);
+ method @NonNull public static android.os.Handler createAsync(@NonNull android.os.Looper, @NonNull android.os.Handler.Callback);
method public void dispatchMessage(android.os.Message);
- method public final void dump(android.util.Printer, java.lang.String);
+ method public final void dump(android.util.Printer, String);
method public final android.os.Looper getLooper();
- method public java.lang.String getMessageName(android.os.Message);
+ method public String getMessageName(android.os.Message);
method public void handleMessage(android.os.Message);
- method public final boolean hasCallbacks(java.lang.Runnable);
+ method public final boolean hasCallbacks(Runnable);
method public final boolean hasMessages(int);
- method public final boolean hasMessages(int, java.lang.Object);
+ method public final boolean hasMessages(int, Object);
method public final android.os.Message obtainMessage();
method public final android.os.Message obtainMessage(int);
- method public final android.os.Message obtainMessage(int, java.lang.Object);
+ method public final android.os.Message obtainMessage(int, Object);
method public final android.os.Message obtainMessage(int, int, int);
- method public final android.os.Message obtainMessage(int, int, int, java.lang.Object);
- method public final boolean post(java.lang.Runnable);
- method public final boolean postAtFrontOfQueue(java.lang.Runnable);
- method public final boolean postAtTime(java.lang.Runnable, long);
- method public final boolean postAtTime(java.lang.Runnable, java.lang.Object, long);
- method public final boolean postDelayed(java.lang.Runnable, long);
- method public final boolean postDelayed(java.lang.Runnable, java.lang.Object, long);
- method public final void removeCallbacks(java.lang.Runnable);
- method public final void removeCallbacks(java.lang.Runnable, java.lang.Object);
- method public final void removeCallbacksAndMessages(java.lang.Object);
+ method public final android.os.Message obtainMessage(int, int, int, Object);
+ method public final boolean post(Runnable);
+ method public final boolean postAtFrontOfQueue(Runnable);
+ method public final boolean postAtTime(Runnable, long);
+ method public final boolean postAtTime(Runnable, Object, long);
+ method public final boolean postDelayed(Runnable, long);
+ method public final boolean postDelayed(Runnable, Object, long);
+ method public final void removeCallbacks(Runnable);
+ method public final void removeCallbacks(Runnable, Object);
+ method public final void removeCallbacksAndMessages(Object);
method public final void removeMessages(int);
- method public final void removeMessages(int, java.lang.Object);
+ method public final void removeMessages(int, Object);
method public final boolean sendEmptyMessage(int);
method public final boolean sendEmptyMessageAtTime(int, long);
method public final boolean sendEmptyMessageDelayed(int, long);
@@ -34287,13 +34427,13 @@
method public final boolean sendMessageDelayed(android.os.Message, long);
}
- public static abstract interface Handler.Callback {
- method public abstract boolean handleMessage(android.os.Message);
+ public static interface Handler.Callback {
+ method public boolean handleMessage(android.os.Message);
}
public class HandlerThread extends java.lang.Thread {
- ctor public HandlerThread(java.lang.String);
- ctor public HandlerThread(java.lang.String, int);
+ ctor public HandlerThread(String);
+ ctor public HandlerThread(String, int);
method public android.os.Looper getLooper();
method public int getThreadId();
method protected void onLooperPrepared();
@@ -34302,9 +34442,9 @@
}
public class HardwarePropertiesManager {
- method public android.os.CpuUsageInfo[] getCpuUsages();
- method public float[] getDeviceTemperatures(int, int);
- method public float[] getFanSpeeds();
+ method @NonNull public android.os.CpuUsageInfo[] getCpuUsages();
+ method @NonNull public float[] getDeviceTemperatures(int, int);
+ method @NonNull public float[] getFanSpeeds();
field public static final int DEVICE_TEMPERATURE_BATTERY = 2; // 0x2
field public static final int DEVICE_TEMPERATURE_CPU = 0; // 0x0
field public static final int DEVICE_TEMPERATURE_GPU = 1; // 0x1
@@ -34316,16 +34456,16 @@
field public static final float UNDEFINED_TEMPERATURE = -3.4028235E38f;
}
- public abstract interface IBinder {
- method public abstract void dump(java.io.FileDescriptor, java.lang.String[]) throws android.os.RemoteException;
- method public abstract void dumpAsync(java.io.FileDescriptor, java.lang.String[]) throws android.os.RemoteException;
- method public abstract java.lang.String getInterfaceDescriptor() throws android.os.RemoteException;
- method public abstract boolean isBinderAlive();
- method public abstract void linkToDeath(android.os.IBinder.DeathRecipient, int) throws android.os.RemoteException;
- method public abstract boolean pingBinder();
- method public abstract android.os.IInterface queryLocalInterface(java.lang.String);
- method public abstract boolean transact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
- method public abstract boolean unlinkToDeath(android.os.IBinder.DeathRecipient, int);
+ public interface IBinder {
+ method public void dump(@NonNull java.io.FileDescriptor, @Nullable String[]) throws android.os.RemoteException;
+ method public void dumpAsync(@NonNull java.io.FileDescriptor, @Nullable String[]) throws android.os.RemoteException;
+ method @Nullable public String getInterfaceDescriptor() throws android.os.RemoteException;
+ method public boolean isBinderAlive();
+ method public void linkToDeath(@NonNull android.os.IBinder.DeathRecipient, int) throws android.os.RemoteException;
+ method public boolean pingBinder();
+ method @Nullable public android.os.IInterface queryLocalInterface(@NonNull String);
+ method public boolean transact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
+ method public boolean unlinkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
field public static final int DUMP_TRANSACTION = 1598311760; // 0x5f444d50
field public static final int FIRST_CALL_TRANSACTION = 1; // 0x1
field public static final int FLAG_ONEWAY = 1; // 0x1
@@ -34336,55 +34476,55 @@
field public static final int TWEET_TRANSACTION = 1599362900; // 0x5f545754
}
- public static abstract interface IBinder.DeathRecipient {
- method public abstract void binderDied();
+ public static interface IBinder.DeathRecipient {
+ method public void binderDied();
}
- public abstract interface IInterface {
- method public abstract android.os.IBinder asBinder();
+ public interface IInterface {
+ method public android.os.IBinder asBinder();
}
public final class LocaleList implements android.os.Parcelable {
- ctor public LocaleList(java.util.Locale...);
+ ctor public LocaleList(@NonNull java.util.Locale...);
method public int describeContents();
- method public static android.os.LocaleList forLanguageTags(java.lang.String);
+ method @NonNull public static android.os.LocaleList forLanguageTags(@Nullable String);
method public java.util.Locale get(int);
- method public static android.os.LocaleList getAdjustedDefault();
- method public static android.os.LocaleList getDefault();
- method public static android.os.LocaleList getEmptyLocaleList();
- method public java.util.Locale getFirstMatch(java.lang.String[]);
- method public int indexOf(java.util.Locale);
+ method @NonNull @Size(min=1) public static android.os.LocaleList getAdjustedDefault();
+ method @NonNull @Size(min=1) public static android.os.LocaleList getDefault();
+ method @NonNull public static android.os.LocaleList getEmptyLocaleList();
+ method @Nullable public java.util.Locale getFirstMatch(String[]);
+ method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale);
method public boolean isEmpty();
- method public static void setDefault(android.os.LocaleList);
- method public int size();
- method public java.lang.String toLanguageTags();
+ method public static void setDefault(@NonNull @Size(min=1) android.os.LocaleList);
+ method @IntRange(from=0) public int size();
+ method @NonNull public String toLanguageTags();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.LocaleList> CREATOR;
}
public final class Looper {
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(@NonNull android.util.Printer, @NonNull String);
method public static android.os.Looper getMainLooper();
- method public android.os.MessageQueue getQueue();
- method public java.lang.Thread getThread();
+ method @NonNull public android.os.MessageQueue getQueue();
+ method @NonNull public Thread getThread();
method public boolean isCurrentThread();
method public static void loop();
- method public static android.os.Looper myLooper();
- method public static android.os.MessageQueue myQueue();
+ method @Nullable public static android.os.Looper myLooper();
+ method @NonNull public static android.os.MessageQueue myQueue();
method public static void prepare();
method public static void prepareMainLooper();
method public void quit();
method public void quitSafely();
- method public void setMessageLogging(android.util.Printer);
+ method public void setMessageLogging(@Nullable android.util.Printer);
}
public class MemoryFile {
- ctor public MemoryFile(java.lang.String, int) throws java.io.IOException;
- method public deprecated synchronized boolean allowPurging(boolean) throws java.io.IOException;
+ ctor public MemoryFile(String, int) throws java.io.IOException;
+ method @Deprecated public boolean allowPurging(boolean) throws java.io.IOException;
method public void close();
method public java.io.InputStream getInputStream();
method public java.io.OutputStream getOutputStream();
- method public deprecated boolean isPurgingAllowed();
+ method @Deprecated public boolean isPurgingAllowed();
method public int length();
method public int readBytes(byte[], int, int, int) throws java.io.IOException;
method public void writeBytes(byte[], int, int, int) throws java.io.IOException;
@@ -34394,7 +34534,7 @@
ctor public Message();
method public void copyFrom(android.os.Message);
method public int describeContents();
- method public java.lang.Runnable getCallback();
+ method public Runnable getCallback();
method public android.os.Bundle getData();
method public android.os.Handler getTarget();
method public long getWhen();
@@ -34402,11 +34542,11 @@
method public static android.os.Message obtain();
method public static android.os.Message obtain(android.os.Message);
method public static android.os.Message obtain(android.os.Handler);
- method public static android.os.Message obtain(android.os.Handler, java.lang.Runnable);
+ method public static android.os.Message obtain(android.os.Handler, Runnable);
method public static android.os.Message obtain(android.os.Handler, int);
- method public static android.os.Message obtain(android.os.Handler, int, java.lang.Object);
+ method public static android.os.Message obtain(android.os.Handler, int, Object);
method public static android.os.Message obtain(android.os.Handler, int, int, int);
- method public static android.os.Message obtain(android.os.Handler, int, int, int, java.lang.Object);
+ method public static android.os.Message obtain(android.os.Handler, int, int, int, Object);
method public android.os.Bundle peekData();
method public void recycle();
method public void sendToTarget();
@@ -34417,26 +34557,26 @@
field public static final android.os.Parcelable.Creator<android.os.Message> CREATOR;
field public int arg1;
field public int arg2;
- field public java.lang.Object obj;
+ field public Object obj;
field public android.os.Messenger replyTo;
field public int sendingUid;
field public int what;
}
public final class MessageQueue {
- method public void addIdleHandler(android.os.MessageQueue.IdleHandler);
- method public void addOnFileDescriptorEventListener(java.io.FileDescriptor, int, android.os.MessageQueue.OnFileDescriptorEventListener);
+ method public void addIdleHandler(@NonNull android.os.MessageQueue.IdleHandler);
+ method public void addOnFileDescriptorEventListener(@NonNull java.io.FileDescriptor, int, @NonNull android.os.MessageQueue.OnFileDescriptorEventListener);
method public boolean isIdle();
- method public void removeIdleHandler(android.os.MessageQueue.IdleHandler);
- method public void removeOnFileDescriptorEventListener(java.io.FileDescriptor);
+ method public void removeIdleHandler(@NonNull android.os.MessageQueue.IdleHandler);
+ method public void removeOnFileDescriptorEventListener(@NonNull java.io.FileDescriptor);
}
- public static abstract interface MessageQueue.IdleHandler {
- method public abstract boolean queueIdle();
+ public static interface MessageQueue.IdleHandler {
+ method public boolean queueIdle();
}
- public static abstract interface MessageQueue.OnFileDescriptorEventListener {
- method public abstract int onFileDescriptorEvents(java.io.FileDescriptor, int);
+ public static interface MessageQueue.OnFileDescriptorEventListener {
+ method public int onFileDescriptorEvents(@NonNull java.io.FileDescriptor, int);
field public static final int EVENT_ERROR = 4; // 0x4
field public static final int EVENT_INPUT = 1; // 0x1
field public static final int EVENT_OUTPUT = 2; // 0x2
@@ -34460,126 +34600,126 @@
public class OperationCanceledException extends java.lang.RuntimeException {
ctor public OperationCanceledException();
- ctor public OperationCanceledException(java.lang.String);
+ ctor public OperationCanceledException(String);
}
public final class Parcel {
method public void appendFrom(android.os.Parcel, int, int);
- method public android.os.IBinder[] createBinderArray();
- method public java.util.ArrayList<android.os.IBinder> createBinderArrayList();
- method public boolean[] createBooleanArray();
- method public byte[] createByteArray();
- method public char[] createCharArray();
- method public double[] createDoubleArray();
- method public float[] createFloatArray();
- method public int[] createIntArray();
- method public long[] createLongArray();
- method public java.lang.String[] createStringArray();
- method public java.util.ArrayList<java.lang.String> createStringArrayList();
- method public <T> T[] createTypedArray(android.os.Parcelable.Creator<T>);
- method public <T> java.util.ArrayList<T> createTypedArrayList(android.os.Parcelable.Creator<T>);
- method public <T extends android.os.Parcelable> android.util.ArrayMap<java.lang.String, T> createTypedArrayMap(android.os.Parcelable.Creator<T>);
- method public <T extends android.os.Parcelable> android.util.SparseArray<T> createTypedSparseArray(android.os.Parcelable.Creator<T>);
+ method @Nullable public android.os.IBinder[] createBinderArray();
+ method @Nullable public java.util.ArrayList<android.os.IBinder> createBinderArrayList();
+ method @Nullable public boolean[] createBooleanArray();
+ method @Nullable public byte[] createByteArray();
+ method @Nullable public char[] createCharArray();
+ method @Nullable public double[] createDoubleArray();
+ method @Nullable public float[] createFloatArray();
+ method @Nullable public int[] createIntArray();
+ method @Nullable public long[] createLongArray();
+ method @Nullable public String[] createStringArray();
+ method @Nullable public java.util.ArrayList<java.lang.String> createStringArrayList();
+ method @Nullable public <T> T[] createTypedArray(@NonNull android.os.Parcelable.Creator<T>);
+ method @Nullable public <T> java.util.ArrayList<T> createTypedArrayList(@NonNull android.os.Parcelable.Creator<T>);
+ method @Nullable public <T extends android.os.Parcelable> android.util.ArrayMap<java.lang.String,T> createTypedArrayMap(@NonNull android.os.Parcelable.Creator<T>);
+ method @Nullable public <T extends android.os.Parcelable> android.util.SparseArray<T> createTypedSparseArray(@NonNull android.os.Parcelable.Creator<T>);
method public int dataAvail();
method public int dataCapacity();
method public int dataPosition();
method public int dataSize();
- method public void enforceInterface(java.lang.String);
+ method public void enforceInterface(String);
method public boolean hasFileDescriptors();
method public byte[] marshall();
- method public static android.os.Parcel obtain();
- method public java.lang.Object[] readArray(java.lang.ClassLoader);
- method public java.util.ArrayList readArrayList(java.lang.ClassLoader);
- method public void readBinderArray(android.os.IBinder[]);
- method public void readBinderList(java.util.List<android.os.IBinder>);
+ method @NonNull public static android.os.Parcel obtain();
+ method @Nullable public Object[] readArray(@Nullable ClassLoader);
+ method @Nullable public java.util.ArrayList readArrayList(@Nullable ClassLoader);
+ method public void readBinderArray(@NonNull android.os.IBinder[]);
+ method public void readBinderList(@NonNull java.util.List<android.os.IBinder>);
method public boolean readBoolean();
- method public void readBooleanArray(boolean[]);
- method public android.os.Bundle readBundle();
- method public android.os.Bundle readBundle(java.lang.ClassLoader);
+ method public void readBooleanArray(@NonNull boolean[]);
+ method @Nullable public android.os.Bundle readBundle();
+ method @Nullable public android.os.Bundle readBundle(@Nullable ClassLoader);
method public byte readByte();
- method public void readByteArray(byte[]);
- method public void readCharArray(char[]);
+ method public void readByteArray(@NonNull byte[]);
+ method public void readCharArray(@NonNull char[]);
method public double readDouble();
- method public void readDoubleArray(double[]);
+ method public void readDoubleArray(@NonNull double[]);
method public void readException();
- method public void readException(int, java.lang.String);
+ method public void readException(int, String);
method public android.os.ParcelFileDescriptor readFileDescriptor();
method public float readFloat();
- method public void readFloatArray(float[]);
- method public java.util.HashMap readHashMap(java.lang.ClassLoader);
+ method public void readFloatArray(@NonNull float[]);
+ method @Nullable public java.util.HashMap readHashMap(@Nullable ClassLoader);
method public int readInt();
- method public void readIntArray(int[]);
- method public void readList(java.util.List, java.lang.ClassLoader);
+ method public void readIntArray(@NonNull int[]);
+ method public void readList(@NonNull java.util.List, @Nullable ClassLoader);
method public long readLong();
- method public void readLongArray(long[]);
- method public void readMap(java.util.Map, java.lang.ClassLoader);
- method public <T extends android.os.Parcelable> T readParcelable(java.lang.ClassLoader);
- method public android.os.Parcelable[] readParcelableArray(java.lang.ClassLoader);
- method public <T extends android.os.Parcelable> java.util.List<T> readParcelableList(java.util.List<T>, java.lang.ClassLoader);
- method public android.os.PersistableBundle readPersistableBundle();
- method public android.os.PersistableBundle readPersistableBundle(java.lang.ClassLoader);
- method public java.io.Serializable readSerializable();
- method public android.util.Size readSize();
- method public android.util.SizeF readSizeF();
- method public <T> android.util.SparseArray<T> readSparseArray(java.lang.ClassLoader);
- method public android.util.SparseBooleanArray readSparseBooleanArray();
- method public java.lang.String readString();
- method public void readStringArray(java.lang.String[]);
- method public void readStringList(java.util.List<java.lang.String>);
+ method public void readLongArray(@NonNull long[]);
+ method public void readMap(@NonNull java.util.Map, @Nullable ClassLoader);
+ method @Nullable public <T extends android.os.Parcelable> T readParcelable(@Nullable ClassLoader);
+ method @Nullable public android.os.Parcelable[] readParcelableArray(@Nullable ClassLoader);
+ method @NonNull public <T extends android.os.Parcelable> java.util.List<T> readParcelableList(@NonNull java.util.List<T>, @Nullable ClassLoader);
+ method @Nullable public android.os.PersistableBundle readPersistableBundle();
+ method @Nullable public android.os.PersistableBundle readPersistableBundle(@Nullable ClassLoader);
+ method @Nullable public java.io.Serializable readSerializable();
+ method @NonNull public android.util.Size readSize();
+ method @NonNull public android.util.SizeF readSizeF();
+ method @Nullable public <T> android.util.SparseArray<T> readSparseArray(@Nullable ClassLoader);
+ method @Nullable public android.util.SparseBooleanArray readSparseBooleanArray();
+ method @Nullable public String readString();
+ method public void readStringArray(@NonNull String[]);
+ method public void readStringList(@NonNull java.util.List<java.lang.String>);
method public android.os.IBinder readStrongBinder();
- method public <T> void readTypedArray(T[], android.os.Parcelable.Creator<T>);
- method public <T> void readTypedList(java.util.List<T>, android.os.Parcelable.Creator<T>);
- method public <T> T readTypedObject(android.os.Parcelable.Creator<T>);
- method public java.lang.Object readValue(java.lang.ClassLoader);
+ method public <T> void readTypedArray(@NonNull T[], @NonNull android.os.Parcelable.Creator<T>);
+ method public <T> void readTypedList(@NonNull java.util.List<T>, @NonNull android.os.Parcelable.Creator<T>);
+ method @Nullable public <T> T readTypedObject(@NonNull android.os.Parcelable.Creator<T>);
+ method @Nullable public Object readValue(@Nullable ClassLoader);
method public void recycle();
method public void setDataCapacity(int);
method public void setDataPosition(int);
method public void setDataSize(int);
- method public void unmarshall(byte[], int, int);
- method public void writeArray(java.lang.Object[]);
- method public void writeBinderArray(android.os.IBinder[]);
- method public void writeBinderList(java.util.List<android.os.IBinder>);
+ method public void unmarshall(@NonNull byte[], int, int);
+ method public void writeArray(@Nullable Object[]);
+ method public void writeBinderArray(@Nullable android.os.IBinder[]);
+ method public void writeBinderList(@Nullable java.util.List<android.os.IBinder>);
method public void writeBoolean(boolean);
- method public void writeBooleanArray(boolean[]);
- method public void writeBundle(android.os.Bundle);
+ method public void writeBooleanArray(@Nullable boolean[]);
+ method public void writeBundle(@Nullable android.os.Bundle);
method public void writeByte(byte);
- method public void writeByteArray(byte[]);
- method public void writeByteArray(byte[], int, int);
- method public void writeCharArray(char[]);
+ method public void writeByteArray(@Nullable byte[]);
+ method public void writeByteArray(@Nullable byte[], int, int);
+ method public void writeCharArray(@Nullable char[]);
method public void writeDouble(double);
- method public void writeDoubleArray(double[]);
- method public void writeException(java.lang.Exception);
- method public void writeFileDescriptor(java.io.FileDescriptor);
+ method public void writeDoubleArray(@Nullable double[]);
+ method public void writeException(@NonNull Exception);
+ method public void writeFileDescriptor(@NonNull java.io.FileDescriptor);
method public void writeFloat(float);
- method public void writeFloatArray(float[]);
+ method public void writeFloatArray(@Nullable float[]);
method public void writeInt(int);
- method public void writeIntArray(int[]);
- method public void writeInterfaceToken(java.lang.String);
- method public void writeList(java.util.List);
+ method public void writeIntArray(@Nullable int[]);
+ method public void writeInterfaceToken(String);
+ method public void writeList(@Nullable java.util.List);
method public void writeLong(long);
- method public void writeLongArray(long[]);
- method public void writeMap(java.util.Map);
+ method public void writeLongArray(@Nullable long[]);
+ method public void writeMap(@Nullable java.util.Map);
method public void writeNoException();
- method public void writeParcelable(android.os.Parcelable, int);
- method public <T extends android.os.Parcelable> void writeParcelableArray(T[], int);
- method public <T extends android.os.Parcelable> void writeParcelableList(java.util.List<T>, int);
- method public void writePersistableBundle(android.os.PersistableBundle);
- method public void writeSerializable(java.io.Serializable);
- method public void writeSize(android.util.Size);
- method public void writeSizeF(android.util.SizeF);
- method public <T> void writeSparseArray(android.util.SparseArray<T>);
- method public void writeSparseBooleanArray(android.util.SparseBooleanArray);
- method public void writeString(java.lang.String);
- method public void writeStringArray(java.lang.String[]);
- method public void writeStringList(java.util.List<java.lang.String>);
+ method public void writeParcelable(@Nullable android.os.Parcelable, int);
+ method public <T extends android.os.Parcelable> void writeParcelableArray(@Nullable T[], int);
+ method public <T extends android.os.Parcelable> void writeParcelableList(@Nullable java.util.List<T>, int);
+ method public void writePersistableBundle(@Nullable android.os.PersistableBundle);
+ method public void writeSerializable(@Nullable java.io.Serializable);
+ method public void writeSize(@NonNull android.util.Size);
+ method public void writeSizeF(@NonNull android.util.SizeF);
+ method public <T> void writeSparseArray(@Nullable android.util.SparseArray<T>);
+ method public void writeSparseBooleanArray(@Nullable android.util.SparseBooleanArray);
+ method public void writeString(@Nullable String);
+ method public void writeStringArray(@Nullable String[]);
+ method public void writeStringList(@Nullable java.util.List<java.lang.String>);
method public void writeStrongBinder(android.os.IBinder);
method public void writeStrongInterface(android.os.IInterface);
- method public <T extends android.os.Parcelable> void writeTypedArray(T[], int);
- method public <T extends android.os.Parcelable> void writeTypedArrayMap(android.util.ArrayMap<java.lang.String, T>, int);
- method public <T extends android.os.Parcelable> void writeTypedList(java.util.List<T>);
- method public <T extends android.os.Parcelable> void writeTypedObject(T, int);
- method public <T extends android.os.Parcelable> void writeTypedSparseArray(android.util.SparseArray<T>, int);
- method public void writeValue(java.lang.Object);
+ method public <T extends android.os.Parcelable> void writeTypedArray(@Nullable T[], int);
+ method public <T extends android.os.Parcelable> void writeTypedArrayMap(@Nullable android.util.ArrayMap<java.lang.String,T>, int);
+ method public <T extends android.os.Parcelable> void writeTypedList(@Nullable java.util.List<T>);
+ method public <T extends android.os.Parcelable> void writeTypedObject(@Nullable T, int);
+ method public <T extends android.os.Parcelable> void writeTypedSparseArray(@Nullable android.util.SparseArray<T>, int);
+ method public void writeValue(@Nullable Object);
field public static final android.os.Parcelable.Creator<java.lang.String> STRING_CREATOR;
}
@@ -34589,7 +34729,7 @@
method public boolean canDetectErrors();
method public void checkError() throws java.io.IOException;
method public void close() throws java.io.IOException;
- method public void closeWithError(java.lang.String) throws java.io.IOException;
+ method public void closeWithError(String) throws java.io.IOException;
method public static android.os.ParcelFileDescriptor[] createPipe() throws java.io.IOException;
method public static android.os.ParcelFileDescriptor[] createReliablePipe() throws java.io.IOException;
method public static android.os.ParcelFileDescriptor[] createReliableSocketPair() throws java.io.IOException;
@@ -34606,7 +34746,7 @@
method public long getStatSize();
method public static android.os.ParcelFileDescriptor open(java.io.File, int) throws java.io.FileNotFoundException;
method public static android.os.ParcelFileDescriptor open(java.io.File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener) throws java.io.IOException;
- method public static int parseMode(java.lang.String);
+ method public static int parseMode(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.ParcelFileDescriptor> CREATOR;
field public static final int MODE_APPEND = 33554432; // 0x2000000
@@ -34614,8 +34754,8 @@
field public static final int MODE_READ_ONLY = 268435456; // 0x10000000
field public static final int MODE_READ_WRITE = 805306368; // 0x30000000
field public static final int MODE_TRUNCATE = 67108864; // 0x4000000
- field public static final deprecated int MODE_WORLD_READABLE = 1; // 0x1
- field public static final deprecated int MODE_WORLD_WRITEABLE = 2; // 0x2
+ field @Deprecated public static final int MODE_WORLD_READABLE = 1; // 0x1
+ field @Deprecated public static final int MODE_WORLD_WRITEABLE = 2; // 0x2
field public static final int MODE_WRITE_ONLY = 536870912; // 0x20000000
}
@@ -34631,47 +34771,47 @@
ctor public ParcelFileDescriptor.FileDescriptorDetachedException();
}
- public static abstract interface ParcelFileDescriptor.OnCloseListener {
- method public abstract void onClose(java.io.IOException);
+ public static interface ParcelFileDescriptor.OnCloseListener {
+ method public void onClose(java.io.IOException);
}
public class ParcelFormatException extends java.lang.RuntimeException {
ctor public ParcelFormatException();
- ctor public ParcelFormatException(java.lang.String);
+ ctor public ParcelFormatException(String);
}
public final class ParcelUuid implements android.os.Parcelable {
ctor public ParcelUuid(java.util.UUID);
method public int describeContents();
- method public static android.os.ParcelUuid fromString(java.lang.String);
+ method public static android.os.ParcelUuid fromString(String);
method public java.util.UUID getUuid();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.ParcelUuid> CREATOR;
}
- public abstract interface Parcelable {
- method public abstract int describeContents();
- method public abstract void writeToParcel(android.os.Parcel, int);
+ public interface Parcelable {
+ method public int describeContents();
+ method public void writeToParcel(android.os.Parcel, int);
field public static final int CONTENTS_FILE_DESCRIPTOR = 1; // 0x1
field public static final int PARCELABLE_WRITE_RETURN_VALUE = 1; // 0x1
}
- public static abstract interface Parcelable.ClassLoaderCreator<T> implements android.os.Parcelable.Creator {
- method public abstract T createFromParcel(android.os.Parcel, java.lang.ClassLoader);
+ public static interface Parcelable.ClassLoaderCreator<T> extends android.os.Parcelable.Creator<T> {
+ method public T createFromParcel(android.os.Parcel, ClassLoader);
}
- public static abstract interface Parcelable.Creator<T> {
- method public abstract T createFromParcel(android.os.Parcel);
- method public abstract T[] newArray(int);
+ public static interface Parcelable.Creator<T> {
+ method public T createFromParcel(android.os.Parcel);
+ method public T[] newArray(int);
}
public class PatternMatcher implements android.os.Parcelable {
- ctor public PatternMatcher(java.lang.String, int);
+ ctor public PatternMatcher(String, int);
ctor public PatternMatcher(android.os.Parcel);
method public int describeContents();
- method public final java.lang.String getPath();
+ method public final String getPath();
method public final int getType();
- method public boolean match(java.lang.String);
+ method public boolean match(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.PatternMatcher> CREATOR;
field public static final int PATTERN_ADVANCED_GLOB = 3; // 0x3
@@ -34684,12 +34824,11 @@
ctor public PersistableBundle();
ctor public PersistableBundle(int);
ctor public PersistableBundle(android.os.PersistableBundle);
- method public java.lang.Object clone();
+ method public Object clone();
method public android.os.PersistableBundle deepCopy();
method public int describeContents();
- method public android.os.PersistableBundle getPersistableBundle(java.lang.String);
- method public void putPersistableBundle(java.lang.String, android.os.PersistableBundle);
- method public synchronized java.lang.String toString();
+ method @Nullable public android.os.PersistableBundle getPersistableBundle(@Nullable String);
+ method public void putPersistableBundle(@Nullable String, @Nullable android.os.PersistableBundle);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.PersistableBundle> CREATOR;
field public static final android.os.PersistableBundle EMPTY;
@@ -34699,20 +34838,20 @@
method public int getCurrentThermalStatus();
method public int getLocationPowerSaveMode();
method public boolean isDeviceIdleMode();
- method public boolean isIgnoringBatteryOptimizations(java.lang.String);
+ method public boolean isIgnoringBatteryOptimizations(String);
method public boolean isInteractive();
method public boolean isPowerSaveMode();
- method public deprecated boolean isScreenOn();
+ method @Deprecated public boolean isScreenOn();
method public boolean isSustainedPerformanceModeSupported();
method public boolean isWakeLockLevelSupported(int);
- method public android.os.PowerManager.WakeLock newWakeLock(int, java.lang.String);
- method public void reboot(java.lang.String);
- method public void registerThermalStatusCallback(android.os.PowerManager.ThermalStatusCallback, java.util.concurrent.Executor);
+ method public android.os.PowerManager.WakeLock newWakeLock(int, String);
+ method public void reboot(String);
+ method public void registerThermalStatusCallback(@NonNull android.os.PowerManager.ThermalStatusCallback, @NonNull java.util.concurrent.Executor);
method public void unregisterThermalStatusCallback(android.os.PowerManager.ThermalStatusCallback);
field public static final int ACQUIRE_CAUSES_WAKEUP = 268435456; // 0x10000000
- field public static final java.lang.String ACTION_DEVICE_IDLE_MODE_CHANGED = "android.os.action.DEVICE_IDLE_MODE_CHANGED";
- field public static final java.lang.String ACTION_POWER_SAVE_MODE_CHANGED = "android.os.action.POWER_SAVE_MODE_CHANGED";
- field public static final deprecated int FULL_WAKE_LOCK = 26; // 0x1a
+ field public static final String ACTION_DEVICE_IDLE_MODE_CHANGED = "android.os.action.DEVICE_IDLE_MODE_CHANGED";
+ field public static final String ACTION_POWER_SAVE_MODE_CHANGED = "android.os.action.POWER_SAVE_MODE_CHANGED";
+ field @Deprecated public static final int FULL_WAKE_LOCK = 26; // 0x1a
field public static final int LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF = 2; // 0x2
field public static final int LOCATION_MODE_FOREGROUND_ONLY = 3; // 0x3
field public static final int LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF = 1; // 0x1
@@ -34721,8 +34860,8 @@
field public static final int PARTIAL_WAKE_LOCK = 1; // 0x1
field public static final int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32; // 0x20
field public static final int RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY = 1; // 0x1
- field public static final deprecated int SCREEN_BRIGHT_WAKE_LOCK = 10; // 0xa
- field public static final deprecated int SCREEN_DIM_WAKE_LOCK = 6; // 0x6
+ field @Deprecated public static final int SCREEN_BRIGHT_WAKE_LOCK = 10; // 0xa
+ field @Deprecated public static final int SCREEN_DIM_WAKE_LOCK = 6; // 0x6
field public static final int THERMAL_STATUS_CRITICAL = 4; // 0x4
field public static final int THERMAL_STATUS_EMERGENCY = 5; // 0x5
field public static final int THERMAL_STATUS_LIGHT = 1; // 0x1
@@ -34732,7 +34871,7 @@
field public static final int THERMAL_STATUS_SHUTDOWN = 6; // 0x6
}
- public static abstract class PowerManager.ThermalStatusCallback {
+ public abstract static class PowerManager.ThermalStatusCallback {
ctor public PowerManager.ThermalStatusCallback();
method public void onStatusChange(int);
}
@@ -34751,11 +34890,11 @@
ctor public Process();
method public static final long getElapsedCpuTime();
method public static final int[] getExclusiveCores();
- method public static final int getGidForName(java.lang.String);
+ method public static final int getGidForName(String);
method public static final long getStartElapsedRealtime();
method public static final long getStartUptimeMillis();
method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException;
- method public static final int getUidForName(java.lang.String);
+ method public static final int getUidForName(String);
method public static final boolean is64Bit();
method public static boolean isApplicationUid(int);
method public static final boolean isIsolated();
@@ -34767,7 +34906,7 @@
method public static final void sendSignal(int, int);
method public static final void setThreadPriority(int, int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
method public static final void setThreadPriority(int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
- method public static final deprecated boolean supportsProcesses();
+ method @Deprecated public static final boolean supportsProcesses();
field public static final int FIRST_APPLICATION_UID = 10000; // 0x2710
field public static final int INVALID_UID = -1; // 0xffffffff
field public static final int LAST_APPLICATION_UID = 19999; // 0x4e1f
@@ -34799,36 +34938,36 @@
}
public class RecoverySystem {
- method public static void installPackage(android.content.Context, java.io.File) throws java.io.IOException;
+ method @RequiresPermission("android.permission.RECOVERY") public static void installPackage(android.content.Context, java.io.File) throws java.io.IOException;
method public static void rebootWipeCache(android.content.Context) throws java.io.IOException;
method public static void rebootWipeUserData(android.content.Context) throws java.io.IOException;
method public static void verifyPackage(java.io.File, android.os.RecoverySystem.ProgressListener, java.io.File) throws java.security.GeneralSecurityException, java.io.IOException;
}
- public static abstract interface RecoverySystem.ProgressListener {
- method public abstract void onProgress(int);
+ public static interface RecoverySystem.ProgressListener {
+ method public void onProgress(int);
}
public class RemoteCallbackList<E extends android.os.IInterface> {
ctor public RemoteCallbackList();
method public int beginBroadcast();
method public void finishBroadcast();
- method public java.lang.Object getBroadcastCookie(int);
+ method public Object getBroadcastCookie(int);
method public E getBroadcastItem(int);
- method public java.lang.Object getRegisteredCallbackCookie(int);
+ method public Object getRegisteredCallbackCookie(int);
method public int getRegisteredCallbackCount();
method public E getRegisteredCallbackItem(int);
method public void kill();
method public void onCallbackDied(E);
- method public void onCallbackDied(E, java.lang.Object);
+ method public void onCallbackDied(E, Object);
method public boolean register(E);
- method public boolean register(E, java.lang.Object);
+ method public boolean register(E, Object);
method public boolean unregister(E);
}
public class RemoteException extends android.util.AndroidException {
ctor public RemoteException();
- ctor public RemoteException(java.lang.String);
+ ctor public RemoteException(String);
}
public class ResultReceiver implements android.os.Parcelable {
@@ -34842,32 +34981,32 @@
public final class SharedMemory implements java.io.Closeable android.os.Parcelable {
method public void close();
- method public static android.os.SharedMemory create(java.lang.String, int) throws android.system.ErrnoException;
+ method @NonNull public static android.os.SharedMemory create(@Nullable String, int) throws android.system.ErrnoException;
method public int describeContents();
method public int getSize();
- method public java.nio.ByteBuffer map(int, int, int) throws android.system.ErrnoException;
- method public java.nio.ByteBuffer mapReadOnly() throws android.system.ErrnoException;
- method public java.nio.ByteBuffer mapReadWrite() throws android.system.ErrnoException;
+ method @NonNull public java.nio.ByteBuffer map(int, int, int) throws android.system.ErrnoException;
+ method @NonNull public java.nio.ByteBuffer mapReadOnly() throws android.system.ErrnoException;
+ method @NonNull public java.nio.ByteBuffer mapReadWrite() throws android.system.ErrnoException;
method public boolean setProtect(int);
- method public static void unmap(java.nio.ByteBuffer);
- method public void writeToParcel(android.os.Parcel, int);
+ method public static void unmap(@NonNull java.nio.ByteBuffer);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.SharedMemory> CREATOR;
}
public class StatFs {
- ctor public StatFs(java.lang.String);
- method public deprecated int getAvailableBlocks();
+ ctor public StatFs(String);
+ method @Deprecated public int getAvailableBlocks();
method public long getAvailableBlocksLong();
method public long getAvailableBytes();
- method public deprecated int getBlockCount();
+ method @Deprecated public int getBlockCount();
method public long getBlockCountLong();
- method public deprecated int getBlockSize();
+ method @Deprecated public int getBlockSize();
method public long getBlockSizeLong();
- method public deprecated int getFreeBlocks();
+ method @Deprecated public int getFreeBlocks();
method public long getFreeBlocksLong();
method public long getFreeBytes();
method public long getTotalBytes();
- method public void restat(java.lang.String);
+ method public void restat(String);
}
public final class StrictMode {
@@ -34876,17 +35015,17 @@
method public static void enableDefaults();
method public static android.os.StrictMode.ThreadPolicy getThreadPolicy();
method public static android.os.StrictMode.VmPolicy getVmPolicy();
- method public static void noteSlowCall(java.lang.String);
+ method public static void noteSlowCall(String);
method public static void setThreadPolicy(android.os.StrictMode.ThreadPolicy);
method public static void setVmPolicy(android.os.StrictMode.VmPolicy);
}
- public static abstract interface StrictMode.OnThreadViolationListener {
- method public abstract void onThreadViolation(android.os.strictmode.Violation);
+ public static interface StrictMode.OnThreadViolationListener {
+ method public void onThreadViolation(android.os.strictmode.Violation);
}
- public static abstract interface StrictMode.OnVmViolationListener {
- method public abstract void onVmViolation(android.os.strictmode.Violation);
+ public static interface StrictMode.OnVmViolationListener {
+ method public void onVmViolation(android.os.strictmode.Violation);
}
public static final class StrictMode.ThreadPolicy {
@@ -34909,7 +35048,7 @@
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDropBox();
method public android.os.StrictMode.ThreadPolicy.Builder penaltyFlashScreen();
- method public android.os.StrictMode.ThreadPolicy.Builder penaltyListener(java.util.concurrent.Executor, android.os.StrictMode.OnThreadViolationListener);
+ method public android.os.StrictMode.ThreadPolicy.Builder penaltyListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.StrictMode.OnThreadViolationListener);
method public android.os.StrictMode.ThreadPolicy.Builder penaltyLog();
method public android.os.StrictMode.ThreadPolicy.Builder permitAll();
method public android.os.StrictMode.ThreadPolicy.Builder permitCustomSlowCalls();
@@ -34944,10 +35083,10 @@
method public android.os.StrictMode.VmPolicy.Builder penaltyDeathOnCleartextNetwork();
method public android.os.StrictMode.VmPolicy.Builder penaltyDeathOnFileUriExposure();
method public android.os.StrictMode.VmPolicy.Builder penaltyDropBox();
- method public android.os.StrictMode.VmPolicy.Builder penaltyListener(java.util.concurrent.Executor, android.os.StrictMode.OnVmViolationListener);
+ method public android.os.StrictMode.VmPolicy.Builder penaltyListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.StrictMode.OnVmViolationListener);
method public android.os.StrictMode.VmPolicy.Builder penaltyLog();
method public android.os.StrictMode.VmPolicy.Builder permitNonSdkApiUsage();
- method public android.os.StrictMode.VmPolicy.Builder setClassInstanceLimit(java.lang.Class, int);
+ method public android.os.StrictMode.VmPolicy.Builder setClassInstanceLimit(Class, int);
}
public final class SystemClock {
@@ -34962,16 +35101,16 @@
public class TestLooperManager {
method public void execute(android.os.Message);
method public android.os.MessageQueue getMessageQueue();
- method public boolean hasMessages(android.os.Handler, java.lang.Object, int);
- method public boolean hasMessages(android.os.Handler, java.lang.Object, java.lang.Runnable);
+ method public boolean hasMessages(android.os.Handler, Object, int);
+ method public boolean hasMessages(android.os.Handler, Object, Runnable);
method public android.os.Message next();
method public void recycle(android.os.Message);
method public void release();
}
public abstract class TokenWatcher {
- ctor public TokenWatcher(android.os.Handler, java.lang.String);
- method public void acquire(android.os.IBinder, java.lang.String);
+ ctor public TokenWatcher(android.os.Handler, String);
+ method public void acquire(android.os.IBinder, String);
method public abstract void acquired();
method public void cleanup(android.os.IBinder, boolean);
method public void dump();
@@ -34982,17 +35121,17 @@
}
public final class Trace {
- method public static void beginAsyncSection(java.lang.String, int);
- method public static void beginSection(java.lang.String);
- method public static void endAsyncSection(java.lang.String, int);
+ method public static void beginAsyncSection(@NonNull String, int);
+ method public static void beginSection(@NonNull String);
+ method public static void endAsyncSection(@NonNull String, int);
method public static void endSection();
method public static boolean isEnabled();
- method public static void setCounter(java.lang.String, long);
+ method public static void setCounter(@NonNull String, long);
}
public class TransactionTooLargeException extends android.os.RemoteException {
ctor public TransactionTooLargeException();
- ctor public TransactionTooLargeException(java.lang.String);
+ ctor public TransactionTooLargeException(String);
}
public final class UserHandle implements android.os.Parcelable {
@@ -35006,17 +35145,17 @@
}
public class UserManager {
- method public static android.content.Intent createUserCreationIntent(java.lang.String, java.lang.String, java.lang.String, android.os.PersistableBundle);
- method public android.os.Bundle getApplicationRestrictions(java.lang.String);
+ method public static android.content.Intent createUserCreationIntent(@Nullable String, @Nullable String, @Nullable String, @Nullable android.os.PersistableBundle);
+ method @WorkerThread public android.os.Bundle getApplicationRestrictions(String);
method public long getSerialNumberForUser(android.os.UserHandle);
method public int getUserCount();
method public long getUserCreationTime(android.os.UserHandle);
method public android.os.UserHandle getUserForSerialNumber(long);
- method public java.lang.String getUserName();
+ method public String getUserName();
method public java.util.List<android.os.UserHandle> getUserProfiles();
method public android.os.Bundle getUserRestrictions();
method public android.os.Bundle getUserRestrictions(android.os.UserHandle);
- method public boolean hasUserRestriction(java.lang.String);
+ method public boolean hasUserRestriction(String);
method public boolean isDemoUser();
method public boolean isQuietModeEnabled(android.os.UserHandle);
method public boolean isSystemUser();
@@ -35025,67 +35164,67 @@
method public boolean isUserRunningOrStopping(android.os.UserHandle);
method public boolean isUserUnlocked();
method public boolean isUserUnlocked(android.os.UserHandle);
- method public boolean requestQuietModeEnabled(boolean, android.os.UserHandle);
- method public deprecated boolean setRestrictionsChallenge(java.lang.String);
- method public deprecated void setUserRestriction(java.lang.String, boolean);
- method public deprecated void setUserRestrictions(android.os.Bundle);
- method public deprecated void setUserRestrictions(android.os.Bundle, android.os.UserHandle);
+ method public boolean requestQuietModeEnabled(boolean, @NonNull android.os.UserHandle);
+ method @Deprecated public boolean setRestrictionsChallenge(String);
+ method @Deprecated public void setUserRestriction(String, boolean);
+ method @Deprecated public void setUserRestrictions(android.os.Bundle);
+ method @Deprecated public void setUserRestrictions(android.os.Bundle, android.os.UserHandle);
method public static boolean supportsMultipleUsers();
- field public static final java.lang.String ALLOW_PARENT_PROFILE_APP_LINKING = "allow_parent_profile_app_linking";
- field public static final java.lang.String DISALLOW_ADD_MANAGED_PROFILE = "no_add_managed_profile";
- field public static final java.lang.String DISALLOW_ADD_USER = "no_add_user";
- field public static final java.lang.String DISALLOW_ADJUST_VOLUME = "no_adjust_volume";
- field public static final java.lang.String DISALLOW_AIRPLANE_MODE = "no_airplane_mode";
- field public static final java.lang.String DISALLOW_AMBIENT_DISPLAY = "no_ambient_display";
- field public static final java.lang.String DISALLOW_APPS_CONTROL = "no_control_apps";
- field public static final java.lang.String DISALLOW_AUTOFILL = "no_autofill";
- field public static final java.lang.String DISALLOW_BLUETOOTH = "no_bluetooth";
- field public static final java.lang.String DISALLOW_BLUETOOTH_SHARING = "no_bluetooth_sharing";
- field public static final java.lang.String DISALLOW_CONFIG_BLUETOOTH = "no_config_bluetooth";
- field public static final java.lang.String DISALLOW_CONFIG_BRIGHTNESS = "no_config_brightness";
- field public static final java.lang.String DISALLOW_CONFIG_CELL_BROADCASTS = "no_config_cell_broadcasts";
- field public static final java.lang.String DISALLOW_CONFIG_CREDENTIALS = "no_config_credentials";
- field public static final java.lang.String DISALLOW_CONFIG_DATE_TIME = "no_config_date_time";
- field public static final java.lang.String DISALLOW_CONFIG_LOCALE = "no_config_locale";
- field public static final java.lang.String DISALLOW_CONFIG_LOCATION = "no_config_location";
- field public static final java.lang.String DISALLOW_CONFIG_MOBILE_NETWORKS = "no_config_mobile_networks";
- field public static final java.lang.String DISALLOW_CONFIG_PRIVATE_DNS = "disallow_config_private_dns";
- field public static final java.lang.String DISALLOW_CONFIG_SCREEN_TIMEOUT = "no_config_screen_timeout";
- field public static final java.lang.String DISALLOW_CONFIG_TETHERING = "no_config_tethering";
- field public static final java.lang.String DISALLOW_CONFIG_VPN = "no_config_vpn";
- field public static final java.lang.String DISALLOW_CONFIG_WIFI = "no_config_wifi";
- field public static final java.lang.String DISALLOW_CONTENT_CAPTURE = "no_content_capture";
- field public static final java.lang.String DISALLOW_CREATE_WINDOWS = "no_create_windows";
- field public static final java.lang.String DISALLOW_CROSS_PROFILE_COPY_PASTE = "no_cross_profile_copy_paste";
- field public static final java.lang.String DISALLOW_DATA_ROAMING = "no_data_roaming";
- field public static final java.lang.String DISALLOW_DEBUGGING_FEATURES = "no_debugging_features";
- field public static final java.lang.String DISALLOW_FACTORY_RESET = "no_factory_reset";
- field public static final java.lang.String DISALLOW_FUN = "no_fun";
- field public static final java.lang.String DISALLOW_INSTALL_APPS = "no_install_apps";
- field public static final java.lang.String DISALLOW_INSTALL_UNKNOWN_SOURCES = "no_install_unknown_sources";
- field public static final java.lang.String DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY = "no_install_unknown_sources_globally";
- field public static final java.lang.String DISALLOW_MODIFY_ACCOUNTS = "no_modify_accounts";
- field public static final java.lang.String DISALLOW_MOUNT_PHYSICAL_MEDIA = "no_physical_media";
- field public static final java.lang.String DISALLOW_NETWORK_RESET = "no_network_reset";
- field public static final java.lang.String DISALLOW_OUTGOING_BEAM = "no_outgoing_beam";
- field public static final java.lang.String DISALLOW_OUTGOING_CALLS = "no_outgoing_calls";
- field public static final java.lang.String DISALLOW_PRINTING = "no_printing";
- field public static final java.lang.String DISALLOW_REMOVE_MANAGED_PROFILE = "no_remove_managed_profile";
- field public static final java.lang.String DISALLOW_REMOVE_USER = "no_remove_user";
- field public static final java.lang.String DISALLOW_SAFE_BOOT = "no_safe_boot";
- field public static final java.lang.String DISALLOW_SET_USER_ICON = "no_set_user_icon";
- field public static final java.lang.String DISALLOW_SET_WALLPAPER = "no_set_wallpaper";
- field public static final java.lang.String DISALLOW_SHARE_INTO_MANAGED_PROFILE = "no_sharing_into_profile";
- field public static final java.lang.String DISALLOW_SHARE_LOCATION = "no_share_location";
- field public static final java.lang.String DISALLOW_SMS = "no_sms";
- field public static final java.lang.String DISALLOW_SYSTEM_ERROR_DIALOGS = "no_system_error_dialogs";
- field public static final java.lang.String DISALLOW_UNIFIED_PASSWORD = "no_unified_password";
- field public static final java.lang.String DISALLOW_UNINSTALL_APPS = "no_uninstall_apps";
- field public static final java.lang.String DISALLOW_UNMUTE_MICROPHONE = "no_unmute_microphone";
- field public static final java.lang.String DISALLOW_USB_FILE_TRANSFER = "no_usb_file_transfer";
- field public static final java.lang.String DISALLOW_USER_SWITCH = "no_user_switch";
- field public static final java.lang.String ENSURE_VERIFY_APPS = "ensure_verify_apps";
- field public static final java.lang.String KEY_RESTRICTIONS_PENDING = "restrictions_pending";
+ field public static final String ALLOW_PARENT_PROFILE_APP_LINKING = "allow_parent_profile_app_linking";
+ field public static final String DISALLOW_ADD_MANAGED_PROFILE = "no_add_managed_profile";
+ field public static final String DISALLOW_ADD_USER = "no_add_user";
+ field public static final String DISALLOW_ADJUST_VOLUME = "no_adjust_volume";
+ field public static final String DISALLOW_AIRPLANE_MODE = "no_airplane_mode";
+ field public static final String DISALLOW_AMBIENT_DISPLAY = "no_ambient_display";
+ field public static final String DISALLOW_APPS_CONTROL = "no_control_apps";
+ field public static final String DISALLOW_AUTOFILL = "no_autofill";
+ field public static final String DISALLOW_BLUETOOTH = "no_bluetooth";
+ field public static final String DISALLOW_BLUETOOTH_SHARING = "no_bluetooth_sharing";
+ field public static final String DISALLOW_CONFIG_BLUETOOTH = "no_config_bluetooth";
+ field public static final String DISALLOW_CONFIG_BRIGHTNESS = "no_config_brightness";
+ field public static final String DISALLOW_CONFIG_CELL_BROADCASTS = "no_config_cell_broadcasts";
+ field public static final String DISALLOW_CONFIG_CREDENTIALS = "no_config_credentials";
+ field public static final String DISALLOW_CONFIG_DATE_TIME = "no_config_date_time";
+ field public static final String DISALLOW_CONFIG_LOCALE = "no_config_locale";
+ field public static final String DISALLOW_CONFIG_LOCATION = "no_config_location";
+ field public static final String DISALLOW_CONFIG_MOBILE_NETWORKS = "no_config_mobile_networks";
+ field public static final String DISALLOW_CONFIG_PRIVATE_DNS = "disallow_config_private_dns";
+ field public static final String DISALLOW_CONFIG_SCREEN_TIMEOUT = "no_config_screen_timeout";
+ field public static final String DISALLOW_CONFIG_TETHERING = "no_config_tethering";
+ field public static final String DISALLOW_CONFIG_VPN = "no_config_vpn";
+ field public static final String DISALLOW_CONFIG_WIFI = "no_config_wifi";
+ field public static final String DISALLOW_CONTENT_CAPTURE = "no_content_capture";
+ field public static final String DISALLOW_CREATE_WINDOWS = "no_create_windows";
+ field public static final String DISALLOW_CROSS_PROFILE_COPY_PASTE = "no_cross_profile_copy_paste";
+ field public static final String DISALLOW_DATA_ROAMING = "no_data_roaming";
+ field public static final String DISALLOW_DEBUGGING_FEATURES = "no_debugging_features";
+ field public static final String DISALLOW_FACTORY_RESET = "no_factory_reset";
+ field public static final String DISALLOW_FUN = "no_fun";
+ field public static final String DISALLOW_INSTALL_APPS = "no_install_apps";
+ field public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES = "no_install_unknown_sources";
+ field public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY = "no_install_unknown_sources_globally";
+ field public static final String DISALLOW_MODIFY_ACCOUNTS = "no_modify_accounts";
+ field public static final String DISALLOW_MOUNT_PHYSICAL_MEDIA = "no_physical_media";
+ field public static final String DISALLOW_NETWORK_RESET = "no_network_reset";
+ field public static final String DISALLOW_OUTGOING_BEAM = "no_outgoing_beam";
+ field public static final String DISALLOW_OUTGOING_CALLS = "no_outgoing_calls";
+ field public static final String DISALLOW_PRINTING = "no_printing";
+ field public static final String DISALLOW_REMOVE_MANAGED_PROFILE = "no_remove_managed_profile";
+ field public static final String DISALLOW_REMOVE_USER = "no_remove_user";
+ field public static final String DISALLOW_SAFE_BOOT = "no_safe_boot";
+ field public static final String DISALLOW_SET_USER_ICON = "no_set_user_icon";
+ field public static final String DISALLOW_SET_WALLPAPER = "no_set_wallpaper";
+ field public static final String DISALLOW_SHARE_INTO_MANAGED_PROFILE = "no_sharing_into_profile";
+ field public static final String DISALLOW_SHARE_LOCATION = "no_share_location";
+ field public static final String DISALLOW_SMS = "no_sms";
+ field public static final String DISALLOW_SYSTEM_ERROR_DIALOGS = "no_system_error_dialogs";
+ field public static final String DISALLOW_UNIFIED_PASSWORD = "no_unified_password";
+ field public static final String DISALLOW_UNINSTALL_APPS = "no_uninstall_apps";
+ field public static final String DISALLOW_UNMUTE_MICROPHONE = "no_unmute_microphone";
+ field public static final String DISALLOW_USB_FILE_TRANSFER = "no_usb_file_transfer";
+ field public static final String DISALLOW_USER_SWITCH = "no_user_switch";
+ field public static final String ENSURE_VERIFY_APPS = "ensure_verify_apps";
+ field public static final String KEY_RESTRICTIONS_PENDING = "restrictions_pending";
field public static final int USER_CREATION_FAILED_NOT_PERMITTED = 1; // 0x1
field public static final int USER_CREATION_FAILED_NO_MORE_USERS = 2; // 0x2
field public static final int USER_OPERATION_ERROR_CURRENT_USER = 4; // 0x4
@@ -35111,15 +35250,15 @@
}
public abstract class Vibrator {
- method public abstract void cancel();
+ method @RequiresPermission(android.Manifest.permission.VIBRATE) public abstract void cancel();
method public abstract boolean hasAmplitudeControl();
method public abstract boolean hasVibrator();
- method public deprecated void vibrate(long);
- method public deprecated void vibrate(long, android.media.AudioAttributes);
- method public deprecated void vibrate(long[], int);
- method public deprecated void vibrate(long[], int, android.media.AudioAttributes);
- method public void vibrate(android.os.VibrationEffect);
- method public void vibrate(android.os.VibrationEffect, android.media.AudioAttributes);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long, android.media.AudioAttributes);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long[], int);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long[], int, android.media.AudioAttributes);
+ method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect);
+ method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect, android.media.AudioAttributes);
}
public class WorkSource implements android.os.Parcelable {
@@ -35140,14 +35279,14 @@
package android.os.health {
public class HealthStats {
- method public java.lang.String getDataType();
+ method public String getDataType();
method public long getMeasurement(int);
method public int getMeasurementKeyAt(int);
method public int getMeasurementKeyCount();
- method public java.util.Map<java.lang.String, java.lang.Long> getMeasurements(int);
+ method public java.util.Map<java.lang.String,java.lang.Long> getMeasurements(int);
method public int getMeasurementsKeyAt(int);
method public int getMeasurementsKeyCount();
- method public java.util.Map<java.lang.String, android.os.health.HealthStats> getStats(int);
+ method public java.util.Map<java.lang.String,android.os.health.HealthStats> getStats(int);
method public int getStatsKeyAt(int);
method public int getStatsKeyCount();
method public android.os.health.TimerStat getTimer(int);
@@ -35155,7 +35294,7 @@
method public int getTimerKeyAt(int);
method public int getTimerKeyCount();
method public long getTimerTime(int);
- method public java.util.Map<java.lang.String, android.os.health.TimerStat> getTimers(int);
+ method public java.util.Map<java.lang.String,android.os.health.TimerStat> getTimers(int);
method public int getTimersKeyAt(int);
method public int getTimersKeyCount();
method public boolean hasMeasurement(int);
@@ -35219,7 +35358,7 @@
field public static final int MEASUREMENT_BLUETOOTH_TX_MS = 10022; // 0x2726
field public static final int MEASUREMENT_BLUETOOTH_TX_PACKETS = 10059; // 0x274b
field public static final int MEASUREMENT_BUTTON_USER_ACTIVITY_COUNT = 10046; // 0x273e
- field public static final deprecated int MEASUREMENT_CPU_POWER_MAMS = 10064; // 0x2750
+ field @Deprecated public static final int MEASUREMENT_CPU_POWER_MAMS = 10064; // 0x2750
field public static final int MEASUREMENT_MOBILE_IDLE_MS = 10024; // 0x2728
field public static final int MEASUREMENT_MOBILE_POWER_MAMS = 10027; // 0x272b
field public static final int MEASUREMENT_MOBILE_RX_BYTES = 10048; // 0x2740
@@ -35281,7 +35420,7 @@
public abstract class OnObbStateChangeListener {
ctor public OnObbStateChangeListener();
- method public void onObbStateChange(java.lang.String, int);
+ method public void onObbStateChange(String, int);
field public static final int ERROR_ALREADY_MOUNTED = 24; // 0x18
field public static final int ERROR_COULD_NOT_MOUNT = 21; // 0x15
field public static final int ERROR_COULD_NOT_UNMOUNT = 22; // 0x16
@@ -35293,45 +35432,45 @@
}
public class StorageManager {
- method public void allocateBytes(java.util.UUID, long) throws java.io.IOException;
- method public void allocateBytes(java.io.FileDescriptor, long) throws java.io.IOException;
- method public long getAllocatableBytes(java.util.UUID) throws java.io.IOException;
- method public long getCacheQuotaBytes(java.util.UUID) throws java.io.IOException;
- method public long getCacheSizeBytes(java.util.UUID) throws java.io.IOException;
- method public java.lang.String getMountedObbPath(java.lang.String);
- method public android.os.storage.StorageVolume getPrimaryStorageVolume();
- method public android.os.storage.StorageVolume getStorageVolume(java.io.File);
- method public java.util.List<android.os.storage.StorageVolume> getStorageVolumes();
- method public java.util.UUID getUuidForPath(java.io.File) throws java.io.IOException;
- method public boolean isAllocationSupported(java.io.FileDescriptor);
+ method @WorkerThread public void allocateBytes(@NonNull java.util.UUID, long) throws java.io.IOException;
+ method @WorkerThread public void allocateBytes(java.io.FileDescriptor, long) throws java.io.IOException;
+ method @WorkerThread public long getAllocatableBytes(@NonNull java.util.UUID) throws java.io.IOException;
+ method @WorkerThread public long getCacheQuotaBytes(@NonNull java.util.UUID) throws java.io.IOException;
+ method @WorkerThread public long getCacheSizeBytes(@NonNull java.util.UUID) throws java.io.IOException;
+ method public String getMountedObbPath(String);
+ method @NonNull public android.os.storage.StorageVolume getPrimaryStorageVolume();
+ method @Nullable public android.os.storage.StorageVolume getStorageVolume(java.io.File);
+ method @NonNull public java.util.List<android.os.storage.StorageVolume> getStorageVolumes();
+ method @NonNull public java.util.UUID getUuidForPath(@NonNull java.io.File) throws java.io.IOException;
+ method public boolean isAllocationSupported(@NonNull java.io.FileDescriptor);
method public boolean isCacheBehaviorGroup(java.io.File) throws java.io.IOException;
method public boolean isCacheBehaviorTombstone(java.io.File) throws java.io.IOException;
method public boolean isEncrypted(java.io.File);
- method public boolean isObbMounted(java.lang.String);
- method public boolean mountObb(java.lang.String, java.lang.String, android.os.storage.OnObbStateChangeListener);
- method public android.os.ParcelFileDescriptor openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler) throws java.io.IOException;
+ method public boolean isObbMounted(String);
+ method public boolean mountObb(String, String, android.os.storage.OnObbStateChangeListener);
+ method @NonNull public android.os.ParcelFileDescriptor openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler) throws java.io.IOException;
method public void setCacheBehaviorGroup(java.io.File, boolean) throws java.io.IOException;
method public void setCacheBehaviorTombstone(java.io.File, boolean) throws java.io.IOException;
- method public boolean unmountObb(java.lang.String, boolean, android.os.storage.OnObbStateChangeListener);
- field public static final java.lang.String ACTION_MANAGE_STORAGE = "android.os.storage.action.MANAGE_STORAGE";
- field public static final java.lang.String EXTRA_REQUESTED_BYTES = "android.os.storage.extra.REQUESTED_BYTES";
- field public static final java.lang.String EXTRA_UUID = "android.os.storage.extra.UUID";
+ method public boolean unmountObb(String, boolean, android.os.storage.OnObbStateChangeListener);
+ field public static final String ACTION_MANAGE_STORAGE = "android.os.storage.action.MANAGE_STORAGE";
+ field public static final String EXTRA_REQUESTED_BYTES = "android.os.storage.extra.REQUESTED_BYTES";
+ field public static final String EXTRA_UUID = "android.os.storage.extra.UUID";
field public static final java.util.UUID UUID_DEFAULT;
}
public final class StorageVolume implements android.os.Parcelable {
- method public deprecated android.content.Intent createAccessIntent(java.lang.String);
- method public android.content.Intent createOpenDocumentTreeIntent();
+ method @Deprecated @Nullable public android.content.Intent createAccessIntent(String);
+ method @NonNull public android.content.Intent createOpenDocumentTreeIntent();
method public int describeContents();
- method public java.lang.String getDescription(android.content.Context);
- method public java.lang.String getState();
- method public java.lang.String getUuid();
+ method public String getDescription(android.content.Context);
+ method public String getState();
+ method @Nullable public String getUuid();
method public boolean isEmulated();
method public boolean isPrimary();
method public boolean isRemovable();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.storage.StorageVolume> CREATOR;
- field public static final java.lang.String EXTRA_STORAGE_VOLUME = "android.os.storage.extra.STORAGE_VOLUME";
+ field public static final String EXTRA_STORAGE_VOLUME = "android.os.storage.extra.STORAGE_VOLUME";
}
}
@@ -35403,412 +35542,412 @@
package android.preference {
- public deprecated class CheckBoxPreference extends android.preference.TwoStatePreference {
- ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int);
- ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int, int);
- ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet);
- ctor public CheckBoxPreference(android.content.Context);
+ @Deprecated public class CheckBoxPreference extends android.preference.TwoStatePreference {
+ ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public CheckBoxPreference(android.content.Context);
}
- public abstract deprecated class DialogPreference extends android.preference.Preference implements android.content.DialogInterface.OnClickListener android.content.DialogInterface.OnDismissListener android.preference.PreferenceManager.OnActivityDestroyListener {
- ctor public DialogPreference(android.content.Context, android.util.AttributeSet, int, int);
- ctor public DialogPreference(android.content.Context, android.util.AttributeSet, int);
- ctor public DialogPreference(android.content.Context, android.util.AttributeSet);
- ctor public DialogPreference(android.content.Context);
- method public android.app.Dialog getDialog();
- method public android.graphics.drawable.Drawable getDialogIcon();
- method public int getDialogLayoutResource();
- method public java.lang.CharSequence getDialogMessage();
- method public java.lang.CharSequence getDialogTitle();
- method public java.lang.CharSequence getNegativeButtonText();
- method public java.lang.CharSequence getPositiveButtonText();
- method public void onActivityDestroy();
- method protected void onBindDialogView(android.view.View);
- method public void onClick(android.content.DialogInterface, int);
- method protected android.view.View onCreateDialogView();
- method protected void onDialogClosed(boolean);
- method public void onDismiss(android.content.DialogInterface);
- method protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder);
- method public void setDialogIcon(android.graphics.drawable.Drawable);
- method public void setDialogIcon(int);
- method public void setDialogLayoutResource(int);
- method public void setDialogMessage(java.lang.CharSequence);
- method public void setDialogMessage(int);
- method public void setDialogTitle(java.lang.CharSequence);
- method public void setDialogTitle(int);
- method public void setNegativeButtonText(java.lang.CharSequence);
- method public void setNegativeButtonText(int);
- method public void setPositiveButtonText(java.lang.CharSequence);
- method public void setPositiveButtonText(int);
- method protected void showDialog(android.os.Bundle);
+ @Deprecated public abstract class DialogPreference extends android.preference.Preference implements android.content.DialogInterface.OnClickListener android.content.DialogInterface.OnDismissListener android.preference.PreferenceManager.OnActivityDestroyListener {
+ ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public DialogPreference(android.content.Context);
+ method @Deprecated public android.app.Dialog getDialog();
+ method @Deprecated public android.graphics.drawable.Drawable getDialogIcon();
+ method @Deprecated public int getDialogLayoutResource();
+ method @Deprecated public CharSequence getDialogMessage();
+ method @Deprecated public CharSequence getDialogTitle();
+ method @Deprecated public CharSequence getNegativeButtonText();
+ method @Deprecated public CharSequence getPositiveButtonText();
+ method @Deprecated public void onActivityDestroy();
+ method @Deprecated @CallSuper protected void onBindDialogView(android.view.View);
+ method @Deprecated public void onClick(android.content.DialogInterface, int);
+ method @Deprecated protected android.view.View onCreateDialogView();
+ method @Deprecated protected void onDialogClosed(boolean);
+ method @Deprecated public void onDismiss(android.content.DialogInterface);
+ method @Deprecated protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder);
+ method @Deprecated public void setDialogIcon(android.graphics.drawable.Drawable);
+ method @Deprecated public void setDialogIcon(@DrawableRes int);
+ method @Deprecated public void setDialogLayoutResource(int);
+ method @Deprecated public void setDialogMessage(CharSequence);
+ method @Deprecated public void setDialogMessage(int);
+ method @Deprecated public void setDialogTitle(CharSequence);
+ method @Deprecated public void setDialogTitle(int);
+ method @Deprecated public void setNegativeButtonText(CharSequence);
+ method @Deprecated public void setNegativeButtonText(@StringRes int);
+ method @Deprecated public void setPositiveButtonText(CharSequence);
+ method @Deprecated public void setPositiveButtonText(@StringRes int);
+ method @Deprecated protected void showDialog(android.os.Bundle);
}
- public deprecated class EditTextPreference extends android.preference.DialogPreference {
- ctor public EditTextPreference(android.content.Context, android.util.AttributeSet, int, int);
- ctor public EditTextPreference(android.content.Context, android.util.AttributeSet, int);
- ctor public EditTextPreference(android.content.Context, android.util.AttributeSet);
- ctor public EditTextPreference(android.content.Context);
- method public android.widget.EditText getEditText();
- method public java.lang.String getText();
- method protected void onAddEditTextToDialogView(android.view.View, android.widget.EditText);
- method public void setText(java.lang.String);
+ @Deprecated public class EditTextPreference extends android.preference.DialogPreference {
+ ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public EditTextPreference(android.content.Context);
+ method @Deprecated public android.widget.EditText getEditText();
+ method @Deprecated public String getText();
+ method @Deprecated protected void onAddEditTextToDialogView(android.view.View, android.widget.EditText);
+ method @Deprecated public void setText(String);
}
- public deprecated class ListPreference extends android.preference.DialogPreference {
- ctor public ListPreference(android.content.Context, android.util.AttributeSet, int, int);
- ctor public ListPreference(android.content.Context, android.util.AttributeSet, int);
- ctor public ListPreference(android.content.Context, android.util.AttributeSet);
- ctor public ListPreference(android.content.Context);
- method public int findIndexOfValue(java.lang.String);
- method public java.lang.CharSequence[] getEntries();
- method public java.lang.CharSequence getEntry();
- method public java.lang.CharSequence[] getEntryValues();
- method public java.lang.String getValue();
- method public void setEntries(java.lang.CharSequence[]);
- method public void setEntries(int);
- method public void setEntryValues(java.lang.CharSequence[]);
- method public void setEntryValues(int);
- method public void setValue(java.lang.String);
- method public void setValueIndex(int);
+ @Deprecated public class ListPreference extends android.preference.DialogPreference {
+ ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public ListPreference(android.content.Context);
+ method @Deprecated public int findIndexOfValue(String);
+ method @Deprecated public CharSequence[] getEntries();
+ method @Deprecated public CharSequence getEntry();
+ method @Deprecated public CharSequence[] getEntryValues();
+ method @Deprecated public String getValue();
+ method @Deprecated public void setEntries(CharSequence[]);
+ method @Deprecated public void setEntries(@ArrayRes int);
+ method @Deprecated public void setEntryValues(CharSequence[]);
+ method @Deprecated public void setEntryValues(@ArrayRes int);
+ method @Deprecated public void setValue(String);
+ method @Deprecated public void setValueIndex(int);
}
- public deprecated class MultiSelectListPreference extends android.preference.DialogPreference {
- ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int, int);
- ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int);
- ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet);
- ctor public MultiSelectListPreference(android.content.Context);
- method public int findIndexOfValue(java.lang.String);
- method public java.lang.CharSequence[] getEntries();
- method public java.lang.CharSequence[] getEntryValues();
- method public java.util.Set<java.lang.String> getValues();
- method public void setEntries(java.lang.CharSequence[]);
- method public void setEntries(int);
- method public void setEntryValues(java.lang.CharSequence[]);
- method public void setEntryValues(int);
- method public void setValues(java.util.Set<java.lang.String>);
+ @Deprecated public class MultiSelectListPreference extends android.preference.DialogPreference {
+ ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public MultiSelectListPreference(android.content.Context);
+ method @Deprecated public int findIndexOfValue(String);
+ method @Deprecated public CharSequence[] getEntries();
+ method @Deprecated public CharSequence[] getEntryValues();
+ method @Deprecated public java.util.Set<java.lang.String> getValues();
+ method @Deprecated public void setEntries(CharSequence[]);
+ method @Deprecated public void setEntries(@ArrayRes int);
+ method @Deprecated public void setEntryValues(CharSequence[]);
+ method @Deprecated public void setEntryValues(@ArrayRes int);
+ method @Deprecated public void setValues(java.util.Set<java.lang.String>);
}
- public deprecated class Preference implements java.lang.Comparable {
- ctor public Preference(android.content.Context, android.util.AttributeSet, int, int);
- ctor public Preference(android.content.Context, android.util.AttributeSet, int);
- ctor public Preference(android.content.Context, android.util.AttributeSet);
- ctor public Preference(android.content.Context);
- method protected boolean callChangeListener(java.lang.Object);
- method public int compareTo(android.preference.Preference);
- method protected android.preference.Preference findPreferenceInHierarchy(java.lang.String);
- method public android.content.Context getContext();
- method public java.lang.String getDependency();
- method public android.content.SharedPreferences.Editor getEditor();
- method public android.os.Bundle getExtras();
- method public java.lang.String getFragment();
- method public android.graphics.drawable.Drawable getIcon();
- method public android.content.Intent getIntent();
- method public java.lang.String getKey();
- method public int getLayoutResource();
- method public android.preference.Preference.OnPreferenceChangeListener getOnPreferenceChangeListener();
- method public android.preference.Preference.OnPreferenceClickListener getOnPreferenceClickListener();
- method public int getOrder();
- method public android.preference.PreferenceGroup getParent();
- method protected boolean getPersistedBoolean(boolean);
- method protected float getPersistedFloat(float);
- method protected int getPersistedInt(int);
- method protected long getPersistedLong(long);
- method protected java.lang.String getPersistedString(java.lang.String);
- method public java.util.Set<java.lang.String> getPersistedStringSet(java.util.Set<java.lang.String>);
- method public android.preference.PreferenceDataStore getPreferenceDataStore();
- method public android.preference.PreferenceManager getPreferenceManager();
- method public android.content.SharedPreferences getSharedPreferences();
- method public boolean getShouldDisableView();
- method public java.lang.CharSequence getSummary();
- method public java.lang.CharSequence getTitle();
- method public int getTitleRes();
- method public android.view.View getView(android.view.View, android.view.ViewGroup);
- method public int getWidgetLayoutResource();
- method public boolean hasKey();
- method public boolean isEnabled();
- method public boolean isIconSpaceReserved();
- method public boolean isPersistent();
- method public boolean isRecycleEnabled();
- method public boolean isSelectable();
- method public boolean isSingleLineTitle();
- method protected void notifyChanged();
- method public void notifyDependencyChange(boolean);
- method protected void notifyHierarchyChanged();
- method protected void onAttachedToActivity();
- method protected void onAttachedToHierarchy(android.preference.PreferenceManager);
- method protected void onBindView(android.view.View);
- method protected void onClick();
- method protected android.view.View onCreateView(android.view.ViewGroup);
- method public void onDependencyChanged(android.preference.Preference, boolean);
- method protected java.lang.Object onGetDefaultValue(android.content.res.TypedArray, int);
- method public void onParentChanged(android.preference.Preference, boolean);
- method protected void onPrepareForRemoval();
- method protected void onRestoreInstanceState(android.os.Parcelable);
- method protected android.os.Parcelable onSaveInstanceState();
- method protected void onSetInitialValue(boolean, java.lang.Object);
- method public android.os.Bundle peekExtras();
- method protected boolean persistBoolean(boolean);
- method protected boolean persistFloat(float);
- method protected boolean persistInt(int);
- method protected boolean persistLong(long);
- method protected boolean persistString(java.lang.String);
- method public boolean persistStringSet(java.util.Set<java.lang.String>);
- method public void restoreHierarchyState(android.os.Bundle);
- method public void saveHierarchyState(android.os.Bundle);
- method public void setDefaultValue(java.lang.Object);
- method public void setDependency(java.lang.String);
- method public void setEnabled(boolean);
- method public void setFragment(java.lang.String);
- method public void setIcon(android.graphics.drawable.Drawable);
- method public void setIcon(int);
- method public void setIconSpaceReserved(boolean);
- method public void setIntent(android.content.Intent);
- method public void setKey(java.lang.String);
- method public void setLayoutResource(int);
- method public void setOnPreferenceChangeListener(android.preference.Preference.OnPreferenceChangeListener);
- method public void setOnPreferenceClickListener(android.preference.Preference.OnPreferenceClickListener);
- method public void setOrder(int);
- method public void setPersistent(boolean);
- method public void setPreferenceDataStore(android.preference.PreferenceDataStore);
- method public void setRecycleEnabled(boolean);
- method public void setSelectable(boolean);
- method public void setShouldDisableView(boolean);
- method public void setSingleLineTitle(boolean);
- method public void setSummary(java.lang.CharSequence);
- method public void setSummary(int);
- method public void setTitle(java.lang.CharSequence);
- method public void setTitle(int);
- method public void setWidgetLayoutResource(int);
- method public boolean shouldCommit();
- method public boolean shouldDisableDependents();
- method protected boolean shouldPersist();
- field public static final int DEFAULT_ORDER = 2147483647; // 0x7fffffff
+ @Deprecated public class Preference implements java.lang.Comparable<android.preference.Preference> {
+ ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public Preference(android.content.Context);
+ method @Deprecated protected boolean callChangeListener(Object);
+ method @Deprecated public int compareTo(android.preference.Preference);
+ method @Deprecated protected android.preference.Preference findPreferenceInHierarchy(String);
+ method @Deprecated public android.content.Context getContext();
+ method @Deprecated public String getDependency();
+ method @Deprecated public android.content.SharedPreferences.Editor getEditor();
+ method @Deprecated public android.os.Bundle getExtras();
+ method @Deprecated public String getFragment();
+ method @Deprecated public android.graphics.drawable.Drawable getIcon();
+ method @Deprecated public android.content.Intent getIntent();
+ method @Deprecated public String getKey();
+ method @Deprecated @LayoutRes public int getLayoutResource();
+ method @Deprecated public android.preference.Preference.OnPreferenceChangeListener getOnPreferenceChangeListener();
+ method @Deprecated public android.preference.Preference.OnPreferenceClickListener getOnPreferenceClickListener();
+ method @Deprecated public int getOrder();
+ method @Deprecated @Nullable public android.preference.PreferenceGroup getParent();
+ method @Deprecated protected boolean getPersistedBoolean(boolean);
+ method @Deprecated protected float getPersistedFloat(float);
+ method @Deprecated protected int getPersistedInt(int);
+ method @Deprecated protected long getPersistedLong(long);
+ method @Deprecated protected String getPersistedString(String);
+ method @Deprecated public java.util.Set<java.lang.String> getPersistedStringSet(java.util.Set<java.lang.String>);
+ method @Deprecated @Nullable public android.preference.PreferenceDataStore getPreferenceDataStore();
+ method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
+ method @Deprecated public android.content.SharedPreferences getSharedPreferences();
+ method @Deprecated public boolean getShouldDisableView();
+ method @Deprecated public CharSequence getSummary();
+ method @Deprecated public CharSequence getTitle();
+ method @Deprecated @StringRes public int getTitleRes();
+ method @Deprecated public android.view.View getView(android.view.View, android.view.ViewGroup);
+ method @Deprecated @LayoutRes public int getWidgetLayoutResource();
+ method @Deprecated public boolean hasKey();
+ method @Deprecated public boolean isEnabled();
+ method @Deprecated public boolean isIconSpaceReserved();
+ method @Deprecated public boolean isPersistent();
+ method @Deprecated public boolean isRecycleEnabled();
+ method @Deprecated public boolean isSelectable();
+ method @Deprecated public boolean isSingleLineTitle();
+ method @Deprecated protected void notifyChanged();
+ method @Deprecated public void notifyDependencyChange(boolean);
+ method @Deprecated protected void notifyHierarchyChanged();
+ method @Deprecated protected void onAttachedToActivity();
+ method @Deprecated protected void onAttachedToHierarchy(android.preference.PreferenceManager);
+ method @Deprecated @CallSuper protected void onBindView(android.view.View);
+ method @Deprecated protected void onClick();
+ method @Deprecated @CallSuper protected android.view.View onCreateView(android.view.ViewGroup);
+ method @Deprecated public void onDependencyChanged(android.preference.Preference, boolean);
+ method @Deprecated protected Object onGetDefaultValue(android.content.res.TypedArray, int);
+ method @Deprecated public void onParentChanged(android.preference.Preference, boolean);
+ method @Deprecated @CallSuper protected void onPrepareForRemoval();
+ method @Deprecated protected void onRestoreInstanceState(android.os.Parcelable);
+ method @Deprecated protected android.os.Parcelable onSaveInstanceState();
+ method @Deprecated protected void onSetInitialValue(boolean, Object);
+ method @Deprecated public android.os.Bundle peekExtras();
+ method @Deprecated protected boolean persistBoolean(boolean);
+ method @Deprecated protected boolean persistFloat(float);
+ method @Deprecated protected boolean persistInt(int);
+ method @Deprecated protected boolean persistLong(long);
+ method @Deprecated protected boolean persistString(String);
+ method @Deprecated public boolean persistStringSet(java.util.Set<java.lang.String>);
+ method @Deprecated public void restoreHierarchyState(android.os.Bundle);
+ method @Deprecated public void saveHierarchyState(android.os.Bundle);
+ method @Deprecated public void setDefaultValue(Object);
+ method @Deprecated public void setDependency(String);
+ method @Deprecated public void setEnabled(boolean);
+ method @Deprecated public void setFragment(String);
+ method @Deprecated public void setIcon(android.graphics.drawable.Drawable);
+ method @Deprecated public void setIcon(@DrawableRes int);
+ method @Deprecated public void setIconSpaceReserved(boolean);
+ method @Deprecated public void setIntent(android.content.Intent);
+ method @Deprecated public void setKey(String);
+ method @Deprecated public void setLayoutResource(@LayoutRes int);
+ method @Deprecated public void setOnPreferenceChangeListener(android.preference.Preference.OnPreferenceChangeListener);
+ method @Deprecated public void setOnPreferenceClickListener(android.preference.Preference.OnPreferenceClickListener);
+ method @Deprecated public void setOrder(int);
+ method @Deprecated public void setPersistent(boolean);
+ method @Deprecated public void setPreferenceDataStore(android.preference.PreferenceDataStore);
+ method @Deprecated @CallSuper public void setRecycleEnabled(boolean);
+ method @Deprecated public void setSelectable(boolean);
+ method @Deprecated public void setShouldDisableView(boolean);
+ method @Deprecated public void setSingleLineTitle(boolean);
+ method @Deprecated public void setSummary(CharSequence);
+ method @Deprecated public void setSummary(@StringRes int);
+ method @Deprecated public void setTitle(CharSequence);
+ method @Deprecated public void setTitle(@StringRes int);
+ method @Deprecated public void setWidgetLayoutResource(@LayoutRes int);
+ method @Deprecated public boolean shouldCommit();
+ method @Deprecated public boolean shouldDisableDependents();
+ method @Deprecated protected boolean shouldPersist();
+ field @Deprecated public static final int DEFAULT_ORDER = 2147483647; // 0x7fffffff
}
- public static deprecated class Preference.BaseSavedState extends android.view.AbsSavedState {
- ctor public Preference.BaseSavedState(android.os.Parcel);
- ctor public Preference.BaseSavedState(android.os.Parcelable);
- field public static final android.os.Parcelable.Creator<android.preference.Preference.BaseSavedState> CREATOR;
+ @Deprecated public static class Preference.BaseSavedState extends android.view.AbsSavedState {
+ ctor @Deprecated public Preference.BaseSavedState(android.os.Parcel);
+ ctor @Deprecated public Preference.BaseSavedState(android.os.Parcelable);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.preference.Preference.BaseSavedState> CREATOR;
}
- public static abstract deprecated interface Preference.OnPreferenceChangeListener {
- method public abstract boolean onPreferenceChange(android.preference.Preference, java.lang.Object);
+ @Deprecated public static interface Preference.OnPreferenceChangeListener {
+ method @Deprecated public boolean onPreferenceChange(android.preference.Preference, Object);
}
- public static abstract deprecated interface Preference.OnPreferenceClickListener {
- method public abstract boolean onPreferenceClick(android.preference.Preference);
+ @Deprecated public static interface Preference.OnPreferenceClickListener {
+ method @Deprecated public boolean onPreferenceClick(android.preference.Preference);
}
- public abstract deprecated class PreferenceActivity extends android.app.ListActivity implements android.preference.PreferenceFragment.OnPreferenceStartFragmentCallback {
- ctor public PreferenceActivity();
- method public deprecated void addPreferencesFromIntent(android.content.Intent);
- method public deprecated void addPreferencesFromResource(int);
- method public deprecated android.preference.Preference findPreference(java.lang.CharSequence);
- method public void finishPreferencePanel(android.app.Fragment, int, android.content.Intent);
- method public deprecated android.preference.PreferenceManager getPreferenceManager();
- method public deprecated android.preference.PreferenceScreen getPreferenceScreen();
- method public boolean hasHeaders();
- method public void invalidateHeaders();
- method public boolean isMultiPane();
- method protected boolean isValidFragment(java.lang.String);
- method public void loadHeadersFromResource(int, java.util.List<android.preference.PreferenceActivity.Header>);
- method public void onBuildHeaders(java.util.List<android.preference.PreferenceActivity.Header>);
- method public android.content.Intent onBuildStartFragmentIntent(java.lang.String, android.os.Bundle, int, int);
- method public android.preference.PreferenceActivity.Header onGetInitialHeader();
- method public android.preference.PreferenceActivity.Header onGetNewHeader();
- method public void onHeaderClick(android.preference.PreferenceActivity.Header, int);
- method public boolean onIsHidingHeaders();
- method public boolean onIsMultiPane();
- method public boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
- method public deprecated boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
- method public void setListFooter(android.view.View);
- method public void setParentTitle(java.lang.CharSequence, java.lang.CharSequence, android.view.View.OnClickListener);
- method public deprecated void setPreferenceScreen(android.preference.PreferenceScreen);
- method public void showBreadCrumbs(java.lang.CharSequence, java.lang.CharSequence);
- method public void startPreferenceFragment(android.app.Fragment, boolean);
- method public void startPreferencePanel(java.lang.String, android.os.Bundle, int, java.lang.CharSequence, android.app.Fragment, int);
- method public void startWithFragment(java.lang.String, android.os.Bundle, android.app.Fragment, int);
- method public void startWithFragment(java.lang.String, android.os.Bundle, android.app.Fragment, int, int, int);
- method public void switchToHeader(java.lang.String, android.os.Bundle);
- method public void switchToHeader(android.preference.PreferenceActivity.Header);
- field public static final java.lang.String EXTRA_NO_HEADERS = ":android:no_headers";
- field public static final java.lang.String EXTRA_SHOW_FRAGMENT = ":android:show_fragment";
- field public static final java.lang.String EXTRA_SHOW_FRAGMENT_ARGUMENTS = ":android:show_fragment_args";
- field public static final java.lang.String EXTRA_SHOW_FRAGMENT_SHORT_TITLE = ":android:show_fragment_short_title";
- field public static final java.lang.String EXTRA_SHOW_FRAGMENT_TITLE = ":android:show_fragment_title";
- field public static final long HEADER_ID_UNDEFINED = -1L; // 0xffffffffffffffffL
+ @Deprecated public abstract class PreferenceActivity extends android.app.ListActivity implements android.preference.PreferenceFragment.OnPreferenceStartFragmentCallback {
+ ctor @Deprecated public PreferenceActivity();
+ method @Deprecated public void addPreferencesFromIntent(android.content.Intent);
+ method @Deprecated public void addPreferencesFromResource(int);
+ method @Deprecated public android.preference.Preference findPreference(CharSequence);
+ method @Deprecated public void finishPreferencePanel(android.app.Fragment, int, android.content.Intent);
+ method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
+ method @Deprecated public android.preference.PreferenceScreen getPreferenceScreen();
+ method @Deprecated public boolean hasHeaders();
+ method @Deprecated public void invalidateHeaders();
+ method @Deprecated public boolean isMultiPane();
+ method @Deprecated protected boolean isValidFragment(String);
+ method @Deprecated public void loadHeadersFromResource(@XmlRes int, java.util.List<android.preference.PreferenceActivity.Header>);
+ method @Deprecated public void onBuildHeaders(java.util.List<android.preference.PreferenceActivity.Header>);
+ method @Deprecated public android.content.Intent onBuildStartFragmentIntent(String, android.os.Bundle, @StringRes int, int);
+ method @Deprecated public android.preference.PreferenceActivity.Header onGetInitialHeader();
+ method @Deprecated public android.preference.PreferenceActivity.Header onGetNewHeader();
+ method @Deprecated public void onHeaderClick(android.preference.PreferenceActivity.Header, int);
+ method @Deprecated public boolean onIsHidingHeaders();
+ method @Deprecated public boolean onIsMultiPane();
+ method @Deprecated public boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
+ method @Deprecated public boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
+ method @Deprecated public void setListFooter(android.view.View);
+ method @Deprecated public void setParentTitle(CharSequence, CharSequence, android.view.View.OnClickListener);
+ method @Deprecated public void setPreferenceScreen(android.preference.PreferenceScreen);
+ method @Deprecated public void showBreadCrumbs(CharSequence, CharSequence);
+ method @Deprecated public void startPreferenceFragment(android.app.Fragment, boolean);
+ method @Deprecated public void startPreferencePanel(String, android.os.Bundle, @StringRes int, CharSequence, android.app.Fragment, int);
+ method @Deprecated public void startWithFragment(String, android.os.Bundle, android.app.Fragment, int);
+ method @Deprecated public void startWithFragment(String, android.os.Bundle, android.app.Fragment, int, @StringRes int, @StringRes int);
+ method @Deprecated public void switchToHeader(String, android.os.Bundle);
+ method @Deprecated public void switchToHeader(android.preference.PreferenceActivity.Header);
+ field @Deprecated public static final String EXTRA_NO_HEADERS = ":android:no_headers";
+ field @Deprecated public static final String EXTRA_SHOW_FRAGMENT = ":android:show_fragment";
+ field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_ARGUMENTS = ":android:show_fragment_args";
+ field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_SHORT_TITLE = ":android:show_fragment_short_title";
+ field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_TITLE = ":android:show_fragment_title";
+ field @Deprecated public static final long HEADER_ID_UNDEFINED = -1L; // 0xffffffffffffffffL
}
- public static final deprecated class PreferenceActivity.Header implements android.os.Parcelable {
- ctor public PreferenceActivity.Header();
- method public int describeContents();
- method public java.lang.CharSequence getBreadCrumbShortTitle(android.content.res.Resources);
- method public java.lang.CharSequence getBreadCrumbTitle(android.content.res.Resources);
- method public java.lang.CharSequence getSummary(android.content.res.Resources);
- method public java.lang.CharSequence getTitle(android.content.res.Resources);
- method public void readFromParcel(android.os.Parcel);
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.preference.PreferenceActivity.Header> CREATOR;
- field public java.lang.CharSequence breadCrumbShortTitle;
- field public int breadCrumbShortTitleRes;
- field public java.lang.CharSequence breadCrumbTitle;
- field public int breadCrumbTitleRes;
- field public android.os.Bundle extras;
- field public java.lang.String fragment;
- field public android.os.Bundle fragmentArguments;
- field public int iconRes;
- field public long id;
- field public android.content.Intent intent;
- field public java.lang.CharSequence summary;
- field public int summaryRes;
- field public java.lang.CharSequence title;
- field public int titleRes;
+ @Deprecated public static final class PreferenceActivity.Header implements android.os.Parcelable {
+ ctor @Deprecated public PreferenceActivity.Header();
+ method @Deprecated public int describeContents();
+ method @Deprecated public CharSequence getBreadCrumbShortTitle(android.content.res.Resources);
+ method @Deprecated public CharSequence getBreadCrumbTitle(android.content.res.Resources);
+ method @Deprecated public CharSequence getSummary(android.content.res.Resources);
+ method @Deprecated public CharSequence getTitle(android.content.res.Resources);
+ method @Deprecated public void readFromParcel(android.os.Parcel);
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.preference.PreferenceActivity.Header> CREATOR;
+ field @Deprecated public CharSequence breadCrumbShortTitle;
+ field @Deprecated @StringRes public int breadCrumbShortTitleRes;
+ field @Deprecated public CharSequence breadCrumbTitle;
+ field @Deprecated @StringRes public int breadCrumbTitleRes;
+ field @Deprecated public android.os.Bundle extras;
+ field @Deprecated public String fragment;
+ field @Deprecated public android.os.Bundle fragmentArguments;
+ field @Deprecated public int iconRes;
+ field @Deprecated public long id;
+ field @Deprecated public android.content.Intent intent;
+ field @Deprecated public CharSequence summary;
+ field @Deprecated @StringRes public int summaryRes;
+ field @Deprecated public CharSequence title;
+ field @Deprecated @StringRes public int titleRes;
}
- public deprecated class PreferenceCategory extends android.preference.PreferenceGroup {
- ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet, int, int);
- ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet, int);
- ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet);
- ctor public PreferenceCategory(android.content.Context);
+ @Deprecated public class PreferenceCategory extends android.preference.PreferenceGroup {
+ ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public PreferenceCategory(android.content.Context);
}
- public abstract deprecated interface PreferenceDataStore {
- method public default boolean getBoolean(java.lang.String, boolean);
- method public default float getFloat(java.lang.String, float);
- method public default int getInt(java.lang.String, int);
- method public default long getLong(java.lang.String, long);
- method public default java.lang.String getString(java.lang.String, java.lang.String);
- method public default java.util.Set<java.lang.String> getStringSet(java.lang.String, java.util.Set<java.lang.String>);
- method public default void putBoolean(java.lang.String, boolean);
- method public default void putFloat(java.lang.String, float);
- method public default void putInt(java.lang.String, int);
- method public default void putLong(java.lang.String, long);
- method public default void putString(java.lang.String, java.lang.String);
- method public default void putStringSet(java.lang.String, java.util.Set<java.lang.String>);
+ @Deprecated public interface PreferenceDataStore {
+ method @Deprecated public default boolean getBoolean(String, boolean);
+ method @Deprecated public default float getFloat(String, float);
+ method @Deprecated public default int getInt(String, int);
+ method @Deprecated public default long getLong(String, long);
+ method @Deprecated @Nullable public default String getString(String, @Nullable String);
+ method @Deprecated @Nullable public default java.util.Set<java.lang.String> getStringSet(String, @Nullable java.util.Set<java.lang.String>);
+ method @Deprecated public default void putBoolean(String, boolean);
+ method @Deprecated public default void putFloat(String, float);
+ method @Deprecated public default void putInt(String, int);
+ method @Deprecated public default void putLong(String, long);
+ method @Deprecated public default void putString(String, @Nullable String);
+ method @Deprecated public default void putStringSet(String, @Nullable java.util.Set<java.lang.String>);
}
- public abstract deprecated class PreferenceFragment extends android.app.Fragment {
- ctor public PreferenceFragment();
- method public void addPreferencesFromIntent(android.content.Intent);
- method public void addPreferencesFromResource(int);
- method public android.preference.Preference findPreference(java.lang.CharSequence);
- method public android.preference.PreferenceManager getPreferenceManager();
- method public android.preference.PreferenceScreen getPreferenceScreen();
- method public boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
- method public void setPreferenceScreen(android.preference.PreferenceScreen);
+ @Deprecated public abstract class PreferenceFragment extends android.app.Fragment {
+ ctor @Deprecated public PreferenceFragment();
+ method @Deprecated public void addPreferencesFromIntent(android.content.Intent);
+ method @Deprecated public void addPreferencesFromResource(@XmlRes int);
+ method @Deprecated public android.preference.Preference findPreference(CharSequence);
+ method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
+ method @Deprecated public android.preference.PreferenceScreen getPreferenceScreen();
+ method @Deprecated public boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
+ method @Deprecated public void setPreferenceScreen(android.preference.PreferenceScreen);
}
- public static abstract deprecated interface PreferenceFragment.OnPreferenceStartFragmentCallback {
- method public abstract boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
+ @Deprecated public static interface PreferenceFragment.OnPreferenceStartFragmentCallback {
+ method @Deprecated public boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
}
- public abstract deprecated class PreferenceGroup extends android.preference.Preference {
- ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet, int, int);
- ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet, int);
- ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet);
- method public void addItemFromInflater(android.preference.Preference);
- method public boolean addPreference(android.preference.Preference);
- method protected void dispatchRestoreInstanceState(android.os.Bundle);
- method protected void dispatchSaveInstanceState(android.os.Bundle);
- method public android.preference.Preference findPreference(java.lang.CharSequence);
- method public android.preference.Preference getPreference(int);
- method public int getPreferenceCount();
- method protected boolean isOnSameScreenAsChildren();
- method public boolean isOrderingAsAdded();
- method protected boolean onPrepareAddPreference(android.preference.Preference);
- method public void removeAll();
- method public boolean removePreference(android.preference.Preference);
- method public void setOrderingAsAdded(boolean);
+ @Deprecated public abstract class PreferenceGroup extends android.preference.Preference {
+ ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet);
+ method @Deprecated public void addItemFromInflater(android.preference.Preference);
+ method @Deprecated public boolean addPreference(android.preference.Preference);
+ method @Deprecated protected void dispatchRestoreInstanceState(android.os.Bundle);
+ method @Deprecated protected void dispatchSaveInstanceState(android.os.Bundle);
+ method @Deprecated public android.preference.Preference findPreference(CharSequence);
+ method @Deprecated public android.preference.Preference getPreference(int);
+ method @Deprecated public int getPreferenceCount();
+ method @Deprecated protected boolean isOnSameScreenAsChildren();
+ method @Deprecated public boolean isOrderingAsAdded();
+ method @Deprecated protected boolean onPrepareAddPreference(android.preference.Preference);
+ method @Deprecated public void removeAll();
+ method @Deprecated public boolean removePreference(android.preference.Preference);
+ method @Deprecated public void setOrderingAsAdded(boolean);
}
- public deprecated class PreferenceManager {
- method public android.preference.PreferenceScreen createPreferenceScreen(android.content.Context);
- method public android.preference.Preference findPreference(java.lang.CharSequence);
- method public static android.content.SharedPreferences getDefaultSharedPreferences(android.content.Context);
- method public static java.lang.String getDefaultSharedPreferencesName(android.content.Context);
- method public android.preference.PreferenceDataStore getPreferenceDataStore();
- method public android.content.SharedPreferences getSharedPreferences();
- method public int getSharedPreferencesMode();
- method public java.lang.String getSharedPreferencesName();
- method public boolean isStorageDefault();
- method public boolean isStorageDeviceProtected();
- method public static void setDefaultValues(android.content.Context, int, boolean);
- method public static void setDefaultValues(android.content.Context, java.lang.String, int, int, boolean);
- method public void setPreferenceDataStore(android.preference.PreferenceDataStore);
- method public void setSharedPreferencesMode(int);
- method public void setSharedPreferencesName(java.lang.String);
- method public void setStorageDefault();
- method public void setStorageDeviceProtected();
- field public static final java.lang.String KEY_HAS_SET_DEFAULT_VALUES = "_has_set_default_values";
- field public static final java.lang.String METADATA_KEY_PREFERENCES = "android.preference";
+ @Deprecated public class PreferenceManager {
+ method @Deprecated public android.preference.PreferenceScreen createPreferenceScreen(android.content.Context);
+ method @Deprecated @Nullable public android.preference.Preference findPreference(CharSequence);
+ method @Deprecated public static android.content.SharedPreferences getDefaultSharedPreferences(android.content.Context);
+ method @Deprecated public static String getDefaultSharedPreferencesName(android.content.Context);
+ method @Deprecated @Nullable public android.preference.PreferenceDataStore getPreferenceDataStore();
+ method @Deprecated public android.content.SharedPreferences getSharedPreferences();
+ method @Deprecated public int getSharedPreferencesMode();
+ method @Deprecated public String getSharedPreferencesName();
+ method @Deprecated public boolean isStorageDefault();
+ method @Deprecated public boolean isStorageDeviceProtected();
+ method @Deprecated public static void setDefaultValues(android.content.Context, @XmlRes int, boolean);
+ method @Deprecated public static void setDefaultValues(android.content.Context, String, int, int, boolean);
+ method @Deprecated public void setPreferenceDataStore(android.preference.PreferenceDataStore);
+ method @Deprecated public void setSharedPreferencesMode(int);
+ method @Deprecated public void setSharedPreferencesName(String);
+ method @Deprecated public void setStorageDefault();
+ method @Deprecated public void setStorageDeviceProtected();
+ field @Deprecated public static final String KEY_HAS_SET_DEFAULT_VALUES = "_has_set_default_values";
+ field @Deprecated public static final String METADATA_KEY_PREFERENCES = "android.preference";
}
- public static abstract deprecated interface PreferenceManager.OnActivityDestroyListener {
- method public abstract void onActivityDestroy();
+ @Deprecated public static interface PreferenceManager.OnActivityDestroyListener {
+ method @Deprecated public void onActivityDestroy();
}
- public static abstract deprecated interface PreferenceManager.OnActivityResultListener {
- method public abstract boolean onActivityResult(int, int, android.content.Intent);
+ @Deprecated public static interface PreferenceManager.OnActivityResultListener {
+ method @Deprecated public boolean onActivityResult(int, int, android.content.Intent);
}
- public static abstract deprecated interface PreferenceManager.OnActivityStopListener {
- method public abstract void onActivityStop();
+ @Deprecated public static interface PreferenceManager.OnActivityStopListener {
+ method @Deprecated public void onActivityStop();
}
- public final deprecated class PreferenceScreen extends android.preference.PreferenceGroup implements android.widget.AdapterView.OnItemClickListener android.content.DialogInterface.OnDismissListener {
- method public void bind(android.widget.ListView);
- method public android.app.Dialog getDialog();
- method public android.widget.ListAdapter getRootAdapter();
- method protected android.widget.ListAdapter onCreateRootAdapter();
- method public void onDismiss(android.content.DialogInterface);
- method public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
+ @Deprecated public final class PreferenceScreen extends android.preference.PreferenceGroup implements android.widget.AdapterView.OnItemClickListener android.content.DialogInterface.OnDismissListener {
+ method @Deprecated public void bind(android.widget.ListView);
+ method @Deprecated public android.app.Dialog getDialog();
+ method @Deprecated public android.widget.ListAdapter getRootAdapter();
+ method @Deprecated protected android.widget.ListAdapter onCreateRootAdapter();
+ method @Deprecated public void onDismiss(android.content.DialogInterface);
+ method @Deprecated public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
}
- public deprecated class RingtonePreference extends android.preference.Preference implements android.preference.PreferenceManager.OnActivityResultListener {
- ctor public RingtonePreference(android.content.Context, android.util.AttributeSet, int, int);
- ctor public RingtonePreference(android.content.Context, android.util.AttributeSet, int);
- ctor public RingtonePreference(android.content.Context, android.util.AttributeSet);
- ctor public RingtonePreference(android.content.Context);
- method public int getRingtoneType();
- method public boolean getShowDefault();
- method public boolean getShowSilent();
- method public boolean onActivityResult(int, int, android.content.Intent);
- method protected void onPrepareRingtonePickerIntent(android.content.Intent);
- method protected android.net.Uri onRestoreRingtone();
- method protected void onSaveRingtone(android.net.Uri);
- method public void setRingtoneType(int);
- method public void setShowDefault(boolean);
- method public void setShowSilent(boolean);
+ @Deprecated public class RingtonePreference extends android.preference.Preference implements android.preference.PreferenceManager.OnActivityResultListener {
+ ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public RingtonePreference(android.content.Context);
+ method @Deprecated public int getRingtoneType();
+ method @Deprecated public boolean getShowDefault();
+ method @Deprecated public boolean getShowSilent();
+ method @Deprecated public boolean onActivityResult(int, int, android.content.Intent);
+ method @Deprecated protected void onPrepareRingtonePickerIntent(android.content.Intent);
+ method @Deprecated protected android.net.Uri onRestoreRingtone();
+ method @Deprecated protected void onSaveRingtone(android.net.Uri);
+ method @Deprecated public void setRingtoneType(int);
+ method @Deprecated public void setShowDefault(boolean);
+ method @Deprecated public void setShowSilent(boolean);
}
- public deprecated class SwitchPreference extends android.preference.TwoStatePreference {
- ctor public SwitchPreference(android.content.Context, android.util.AttributeSet, int, int);
- ctor public SwitchPreference(android.content.Context, android.util.AttributeSet, int);
- ctor public SwitchPreference(android.content.Context, android.util.AttributeSet);
- ctor public SwitchPreference(android.content.Context);
- method public java.lang.CharSequence getSwitchTextOff();
- method public java.lang.CharSequence getSwitchTextOn();
- method public void setSwitchTextOff(java.lang.CharSequence);
- method public void setSwitchTextOff(int);
- method public void setSwitchTextOn(java.lang.CharSequence);
- method public void setSwitchTextOn(int);
+ @Deprecated public class SwitchPreference extends android.preference.TwoStatePreference {
+ ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public SwitchPreference(android.content.Context);
+ method @Deprecated public CharSequence getSwitchTextOff();
+ method @Deprecated public CharSequence getSwitchTextOn();
+ method @Deprecated public void setSwitchTextOff(CharSequence);
+ method @Deprecated public void setSwitchTextOff(@StringRes int);
+ method @Deprecated public void setSwitchTextOn(CharSequence);
+ method @Deprecated public void setSwitchTextOn(@StringRes int);
}
- public abstract deprecated class TwoStatePreference extends android.preference.Preference {
- ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet, int, int);
- ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet, int);
- ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet);
- ctor public TwoStatePreference(android.content.Context);
- method public boolean getDisableDependentsState();
- method public java.lang.CharSequence getSummaryOff();
- method public java.lang.CharSequence getSummaryOn();
- method public boolean isChecked();
- method public void setChecked(boolean);
- method public void setDisableDependentsState(boolean);
- method public void setSummaryOff(java.lang.CharSequence);
- method public void setSummaryOff(int);
- method public void setSummaryOn(java.lang.CharSequence);
- method public void setSummaryOn(int);
+ @Deprecated public abstract class TwoStatePreference extends android.preference.Preference {
+ ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet, int, int);
+ ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public TwoStatePreference(android.content.Context);
+ method @Deprecated public boolean getDisableDependentsState();
+ method @Deprecated public CharSequence getSummaryOff();
+ method @Deprecated public CharSequence getSummaryOn();
+ method @Deprecated public boolean isChecked();
+ method @Deprecated public void setChecked(boolean);
+ method @Deprecated public void setDisableDependentsState(boolean);
+ method @Deprecated public void setSummaryOff(CharSequence);
+ method @Deprecated public void setSummaryOff(@StringRes int);
+ method @Deprecated public void setSummaryOn(CharSequence);
+ method @Deprecated public void setSummaryOn(@StringRes int);
}
}
@@ -35816,10 +35955,10 @@
package android.print {
public final class PageRange implements android.os.Parcelable {
- ctor public PageRange(int, int);
+ ctor public PageRange(@IntRange(from=0) int, @IntRange(from=0) int);
method public int describeContents();
- method public int getEnd();
- method public int getStart();
+ method @IntRange(from=0) public int getEnd();
+ method @IntRange(from=0) public int getStart();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.print.PageRange ALL_PAGES;
field public static final android.os.Parcelable.Creator<android.print.PageRange> CREATOR;
@@ -35827,11 +35966,11 @@
public final class PrintAttributes implements android.os.Parcelable {
method public int describeContents();
- method public int getColorMode();
- method public int getDuplexMode();
- method public android.print.PrintAttributes.MediaSize getMediaSize();
- method public android.print.PrintAttributes.Margins getMinMargins();
- method public android.print.PrintAttributes.Resolution getResolution();
+ method @IntRange(from=0) public int getColorMode();
+ method @IntRange(from=0) public int getDuplexMode();
+ method @Nullable public android.print.PrintAttributes.MediaSize getMediaSize();
+ method @Nullable public android.print.PrintAttributes.Margins getMinMargins();
+ method @Nullable public android.print.PrintAttributes.Resolution getResolution();
method public void writeToParcel(android.os.Parcel, int);
field public static final int COLOR_MODE_COLOR = 2; // 0x2
field public static final int COLOR_MODE_MONOCHROME = 1; // 0x1
@@ -35843,12 +35982,12 @@
public static final class PrintAttributes.Builder {
ctor public PrintAttributes.Builder();
- method public android.print.PrintAttributes build();
- method public android.print.PrintAttributes.Builder setColorMode(int);
- method public android.print.PrintAttributes.Builder setDuplexMode(int);
- method public android.print.PrintAttributes.Builder setMediaSize(android.print.PrintAttributes.MediaSize);
- method public android.print.PrintAttributes.Builder setMinMargins(android.print.PrintAttributes.Margins);
- method public android.print.PrintAttributes.Builder setResolution(android.print.PrintAttributes.Resolution);
+ method @NonNull public android.print.PrintAttributes build();
+ method @NonNull public android.print.PrintAttributes.Builder setColorMode(int);
+ method @NonNull public android.print.PrintAttributes.Builder setDuplexMode(int);
+ method @NonNull public android.print.PrintAttributes.Builder setMediaSize(@NonNull android.print.PrintAttributes.MediaSize);
+ method @NonNull public android.print.PrintAttributes.Builder setMinMargins(@NonNull android.print.PrintAttributes.Margins);
+ method @NonNull public android.print.PrintAttributes.Builder setResolution(@NonNull android.print.PrintAttributes.Resolution);
}
public static final class PrintAttributes.Margins {
@@ -35861,13 +36000,13 @@
}
public static final class PrintAttributes.MediaSize {
- ctor public PrintAttributes.MediaSize(java.lang.String, java.lang.String, int, int);
- method public android.print.PrintAttributes.MediaSize asLandscape();
- method public android.print.PrintAttributes.MediaSize asPortrait();
- method public int getHeightMils();
- method public java.lang.String getId();
- method public java.lang.String getLabel(android.content.pm.PackageManager);
- method public int getWidthMils();
+ ctor public PrintAttributes.MediaSize(@NonNull String, @NonNull String, @IntRange(from=1) int, @IntRange(from=1) int);
+ method @NonNull public android.print.PrintAttributes.MediaSize asLandscape();
+ method @NonNull public android.print.PrintAttributes.MediaSize asPortrait();
+ method @IntRange(from=1) public int getHeightMils();
+ method @NonNull public String getId();
+ method @NonNull public String getLabel(@NonNull android.content.pm.PackageManager);
+ method @IntRange(from=1) public int getWidthMils();
method public boolean isPortrait();
field public static final android.print.PrintAttributes.MediaSize ISO_A0;
field public static final android.print.PrintAttributes.MediaSize ISO_A1;
@@ -35955,11 +36094,11 @@
}
public static final class PrintAttributes.Resolution {
- ctor public PrintAttributes.Resolution(java.lang.String, java.lang.String, int, int);
- method public int getHorizontalDpi();
- method public java.lang.String getId();
- method public java.lang.String getLabel();
- method public int getVerticalDpi();
+ ctor public PrintAttributes.Resolution(@NonNull String, @NonNull String, @IntRange(from=1) int, @IntRange(from=1) int);
+ method @IntRange(from=1) public int getHorizontalDpi();
+ method @NonNull public String getId();
+ method @NonNull public String getLabel();
+ method @IntRange(from=1) public int getVerticalDpi();
}
public abstract class PrintDocumentAdapter {
@@ -35968,27 +36107,27 @@
method public abstract void onLayout(android.print.PrintAttributes, android.print.PrintAttributes, android.os.CancellationSignal, android.print.PrintDocumentAdapter.LayoutResultCallback, android.os.Bundle);
method public void onStart();
method public abstract void onWrite(android.print.PageRange[], android.os.ParcelFileDescriptor, android.os.CancellationSignal, android.print.PrintDocumentAdapter.WriteResultCallback);
- field public static final java.lang.String EXTRA_PRINT_PREVIEW = "EXTRA_PRINT_PREVIEW";
+ field public static final String EXTRA_PRINT_PREVIEW = "EXTRA_PRINT_PREVIEW";
}
- public static abstract class PrintDocumentAdapter.LayoutResultCallback {
+ public abstract static class PrintDocumentAdapter.LayoutResultCallback {
method public void onLayoutCancelled();
- method public void onLayoutFailed(java.lang.CharSequence);
+ method public void onLayoutFailed(CharSequence);
method public void onLayoutFinished(android.print.PrintDocumentInfo, boolean);
}
- public static abstract class PrintDocumentAdapter.WriteResultCallback {
+ public abstract static class PrintDocumentAdapter.WriteResultCallback {
method public void onWriteCancelled();
- method public void onWriteFailed(java.lang.CharSequence);
+ method public void onWriteFailed(CharSequence);
method public void onWriteFinished(android.print.PageRange[]);
}
public final class PrintDocumentInfo implements android.os.Parcelable {
method public int describeContents();
method public int getContentType();
- method public long getDataSize();
- method public java.lang.String getName();
- method public int getPageCount();
+ method @IntRange(from=0) public long getDataSize();
+ method @NonNull public String getName();
+ method @IntRange(from=0xffffffff) public int getPageCount();
method public void writeToParcel(android.os.Parcel, int);
field public static final int CONTENT_TYPE_DOCUMENT = 0; // 0x0
field public static final int CONTENT_TYPE_PHOTO = 1; // 0x1
@@ -35998,16 +36137,16 @@
}
public static final class PrintDocumentInfo.Builder {
- ctor public PrintDocumentInfo.Builder(java.lang.String);
- method public android.print.PrintDocumentInfo build();
- method public android.print.PrintDocumentInfo.Builder setContentType(int);
- method public android.print.PrintDocumentInfo.Builder setPageCount(int);
+ ctor public PrintDocumentInfo.Builder(@NonNull String);
+ method @NonNull public android.print.PrintDocumentInfo build();
+ method @NonNull public android.print.PrintDocumentInfo.Builder setContentType(int);
+ method @NonNull public android.print.PrintDocumentInfo.Builder setPageCount(@IntRange(from=0xffffffff) int);
}
public final class PrintJob {
method public void cancel();
- method public android.print.PrintJobId getId();
- method public android.print.PrintJobInfo getInfo();
+ method @Nullable public android.print.PrintJobId getId();
+ method @NonNull public android.print.PrintJobInfo getInfo();
method public boolean isBlocked();
method public boolean isCancelled();
method public boolean isCompleted();
@@ -36025,17 +36164,17 @@
public final class PrintJobInfo implements android.os.Parcelable {
method public int describeContents();
- method public int getAdvancedIntOption(java.lang.String);
- method public java.lang.String getAdvancedStringOption(java.lang.String);
- method public android.print.PrintAttributes getAttributes();
- method public int getCopies();
+ method public int getAdvancedIntOption(String);
+ method public String getAdvancedStringOption(String);
+ method @NonNull public android.print.PrintAttributes getAttributes();
+ method @IntRange(from=0) public int getCopies();
method public long getCreationTime();
- method public android.print.PrintJobId getId();
- method public java.lang.String getLabel();
- method public android.print.PageRange[] getPages();
- method public android.print.PrinterId getPrinterId();
+ method @Nullable public android.print.PrintJobId getId();
+ method @NonNull public String getLabel();
+ method @Nullable public android.print.PageRange[] getPages();
+ method @Nullable public android.print.PrinterId getPrinterId();
method public int getState();
- method public boolean hasAdvancedOption(java.lang.String);
+ method public boolean hasAdvancedOption(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.print.PrintJobInfo> CREATOR;
field public static final int STATE_BLOCKED = 4; // 0x4
@@ -36048,55 +36187,55 @@
}
public static final class PrintJobInfo.Builder {
- ctor public PrintJobInfo.Builder(android.print.PrintJobInfo);
- method public android.print.PrintJobInfo build();
- method public void putAdvancedOption(java.lang.String, java.lang.String);
- method public void putAdvancedOption(java.lang.String, int);
- method public void setAttributes(android.print.PrintAttributes);
- method public void setCopies(int);
- method public void setPages(android.print.PageRange[]);
+ ctor public PrintJobInfo.Builder(@Nullable android.print.PrintJobInfo);
+ method @NonNull public android.print.PrintJobInfo build();
+ method public void putAdvancedOption(@NonNull String, @Nullable String);
+ method public void putAdvancedOption(@NonNull String, int);
+ method public void setAttributes(@NonNull android.print.PrintAttributes);
+ method public void setCopies(@IntRange(from=1) int);
+ method public void setPages(@NonNull android.print.PageRange[]);
}
public final class PrintManager {
- method public java.util.List<android.print.PrintJob> getPrintJobs();
- method public android.print.PrintJob print(java.lang.String, android.print.PrintDocumentAdapter, android.print.PrintAttributes);
+ method @NonNull public java.util.List<android.print.PrintJob> getPrintJobs();
+ method @NonNull public android.print.PrintJob print(@NonNull String, @NonNull android.print.PrintDocumentAdapter, @Nullable android.print.PrintAttributes);
}
public final class PrinterCapabilitiesInfo implements android.os.Parcelable {
method public int describeContents();
method public int getColorModes();
- method public android.print.PrintAttributes getDefaults();
+ method @NonNull public android.print.PrintAttributes getDefaults();
method public int getDuplexModes();
- method public java.util.List<android.print.PrintAttributes.MediaSize> getMediaSizes();
- method public android.print.PrintAttributes.Margins getMinMargins();
- method public java.util.List<android.print.PrintAttributes.Resolution> getResolutions();
+ method @NonNull public java.util.List<android.print.PrintAttributes.MediaSize> getMediaSizes();
+ method @NonNull public android.print.PrintAttributes.Margins getMinMargins();
+ method @NonNull public java.util.List<android.print.PrintAttributes.Resolution> getResolutions();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.print.PrinterCapabilitiesInfo> CREATOR;
}
public static final class PrinterCapabilitiesInfo.Builder {
- ctor public PrinterCapabilitiesInfo.Builder(android.print.PrinterId);
- method public android.print.PrinterCapabilitiesInfo.Builder addMediaSize(android.print.PrintAttributes.MediaSize, boolean);
- method public android.print.PrinterCapabilitiesInfo.Builder addResolution(android.print.PrintAttributes.Resolution, boolean);
- method public android.print.PrinterCapabilitiesInfo build();
- method public android.print.PrinterCapabilitiesInfo.Builder setColorModes(int, int);
- method public android.print.PrinterCapabilitiesInfo.Builder setDuplexModes(int, int);
- method public android.print.PrinterCapabilitiesInfo.Builder setMinMargins(android.print.PrintAttributes.Margins);
+ ctor public PrinterCapabilitiesInfo.Builder(@NonNull android.print.PrinterId);
+ method @NonNull public android.print.PrinterCapabilitiesInfo.Builder addMediaSize(@NonNull android.print.PrintAttributes.MediaSize, boolean);
+ method @NonNull public android.print.PrinterCapabilitiesInfo.Builder addResolution(@NonNull android.print.PrintAttributes.Resolution, boolean);
+ method @NonNull public android.print.PrinterCapabilitiesInfo build();
+ method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setColorModes(int, int);
+ method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setDuplexModes(int, int);
+ method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setMinMargins(@NonNull android.print.PrintAttributes.Margins);
}
public final class PrinterId implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getLocalId();
+ method @NonNull public String getLocalId();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.print.PrinterId> CREATOR;
}
public final class PrinterInfo implements android.os.Parcelable {
method public int describeContents();
- method public android.print.PrinterCapabilitiesInfo getCapabilities();
- method public java.lang.String getDescription();
- method public android.print.PrinterId getId();
- method public java.lang.String getName();
+ method @Nullable public android.print.PrinterCapabilitiesInfo getCapabilities();
+ method @Nullable public String getDescription();
+ method @NonNull public android.print.PrinterId getId();
+ method @NonNull public String getName();
method public int getStatus();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.print.PrinterInfo> CREATOR;
@@ -36106,16 +36245,16 @@
}
public static final class PrinterInfo.Builder {
- ctor public PrinterInfo.Builder(android.print.PrinterId, java.lang.String, int);
- ctor public PrinterInfo.Builder(android.print.PrinterInfo);
- method public android.print.PrinterInfo build();
- method public android.print.PrinterInfo.Builder setCapabilities(android.print.PrinterCapabilitiesInfo);
- method public android.print.PrinterInfo.Builder setDescription(java.lang.String);
- method public android.print.PrinterInfo.Builder setHasCustomPrinterIcon(boolean);
- method public android.print.PrinterInfo.Builder setIconResourceId(int);
- method public android.print.PrinterInfo.Builder setInfoIntent(android.app.PendingIntent);
- method public android.print.PrinterInfo.Builder setName(java.lang.String);
- method public android.print.PrinterInfo.Builder setStatus(int);
+ ctor public PrinterInfo.Builder(@NonNull android.print.PrinterId, @NonNull String, int);
+ ctor public PrinterInfo.Builder(@NonNull android.print.PrinterInfo);
+ method @NonNull public android.print.PrinterInfo build();
+ method @NonNull public android.print.PrinterInfo.Builder setCapabilities(@NonNull android.print.PrinterCapabilitiesInfo);
+ method @NonNull public android.print.PrinterInfo.Builder setDescription(@NonNull String);
+ method @NonNull public android.print.PrinterInfo.Builder setHasCustomPrinterIcon(boolean);
+ method @NonNull public android.print.PrinterInfo.Builder setIconResourceId(@DrawableRes int);
+ method @NonNull public android.print.PrinterInfo.Builder setInfoIntent(@NonNull android.app.PendingIntent);
+ method @NonNull public android.print.PrinterInfo.Builder setName(@NonNull String);
+ method @NonNull public android.print.PrinterInfo.Builder setStatus(int);
}
}
@@ -36123,11 +36262,11 @@
package android.print.pdf {
public class PrintedPdfDocument extends android.graphics.pdf.PdfDocument {
- ctor public PrintedPdfDocument(android.content.Context, android.print.PrintAttributes);
- method public android.graphics.Rect getPageContentRect();
- method public int getPageHeight();
- method public int getPageWidth();
- method public android.graphics.pdf.PdfDocument.Page startPage(int);
+ ctor public PrintedPdfDocument(@NonNull android.content.Context, @NonNull android.print.PrintAttributes);
+ method @NonNull public android.graphics.Rect getPageContentRect();
+ method @IntRange(from=0) public int getPageHeight();
+ method @IntRange(from=0) public int getPageWidth();
+ method @NonNull public android.graphics.pdf.PdfDocument.Page startPage(@IntRange(from=0) int);
}
}
@@ -36135,74 +36274,74 @@
package android.printservice {
public final class CustomPrinterIconCallback {
- method public boolean onCustomPrinterIconLoaded(android.graphics.drawable.Icon);
+ method public boolean onCustomPrinterIconLoaded(@Nullable android.graphics.drawable.Icon);
}
public final class PrintDocument {
- method public android.os.ParcelFileDescriptor getData();
- method public android.print.PrintDocumentInfo getInfo();
+ method @Nullable public android.os.ParcelFileDescriptor getData();
+ method @NonNull public android.print.PrintDocumentInfo getInfo();
}
public final class PrintJob {
- method public boolean block(java.lang.String);
- method public boolean cancel();
- method public boolean complete();
- method public boolean fail(java.lang.String);
- method public int getAdvancedIntOption(java.lang.String);
- method public java.lang.String getAdvancedStringOption(java.lang.String);
- method public android.printservice.PrintDocument getDocument();
- method public android.print.PrintJobId getId();
- method public android.print.PrintJobInfo getInfo();
- method public java.lang.String getTag();
- method public boolean hasAdvancedOption(java.lang.String);
- method public boolean isBlocked();
- method public boolean isCancelled();
- method public boolean isCompleted();
- method public boolean isFailed();
- method public boolean isQueued();
- method public boolean isStarted();
- method public void setProgress(float);
- method public void setStatus(java.lang.CharSequence);
- method public void setStatus(int);
- method public boolean setTag(java.lang.String);
- method public boolean start();
+ method @MainThread public boolean block(@Nullable String);
+ method @MainThread public boolean cancel();
+ method @MainThread public boolean complete();
+ method @MainThread public boolean fail(@Nullable String);
+ method @MainThread public int getAdvancedIntOption(String);
+ method @MainThread public String getAdvancedStringOption(String);
+ method @MainThread @NonNull public android.printservice.PrintDocument getDocument();
+ method @MainThread public android.print.PrintJobId getId();
+ method @MainThread @NonNull public android.print.PrintJobInfo getInfo();
+ method @MainThread @Nullable public String getTag();
+ method @MainThread public boolean hasAdvancedOption(String);
+ method @MainThread public boolean isBlocked();
+ method @MainThread public boolean isCancelled();
+ method @MainThread public boolean isCompleted();
+ method @MainThread public boolean isFailed();
+ method @MainThread public boolean isQueued();
+ method @MainThread public boolean isStarted();
+ method @MainThread public void setProgress(@FloatRange(from=0.0, to=1.0) float);
+ method @MainThread public void setStatus(@Nullable CharSequence);
+ method @MainThread public void setStatus(@StringRes int);
+ method @MainThread public boolean setTag(@NonNull String);
+ method @MainThread public boolean start();
}
public abstract class PrintService extends android.app.Service {
ctor public PrintService();
method protected final void attachBaseContext(android.content.Context);
- method public final android.print.PrinterId generatePrinterId(java.lang.String);
+ method @NonNull public final android.print.PrinterId generatePrinterId(String);
method public final java.util.List<android.printservice.PrintJob> getActivePrintJobs();
method public final android.os.IBinder onBind(android.content.Intent);
method protected void onConnected();
- method protected abstract android.printservice.PrinterDiscoverySession onCreatePrinterDiscoverySession();
+ method @Nullable protected abstract android.printservice.PrinterDiscoverySession onCreatePrinterDiscoverySession();
method protected void onDisconnected();
method protected abstract void onPrintJobQueued(android.printservice.PrintJob);
method protected abstract void onRequestCancelPrintJob(android.printservice.PrintJob);
- field public static final java.lang.String EXTRA_CAN_SELECT_PRINTER = "android.printservice.extra.CAN_SELECT_PRINTER";
- field public static final java.lang.String EXTRA_PRINTER_INFO = "android.intent.extra.print.EXTRA_PRINTER_INFO";
- field public static final java.lang.String EXTRA_PRINT_DOCUMENT_INFO = "android.printservice.extra.PRINT_DOCUMENT_INFO";
- field public static final java.lang.String EXTRA_PRINT_JOB_INFO = "android.intent.extra.print.PRINT_JOB_INFO";
- field public static final java.lang.String EXTRA_SELECT_PRINTER = "android.printservice.extra.SELECT_PRINTER";
- field public static final java.lang.String SERVICE_INTERFACE = "android.printservice.PrintService";
- field public static final java.lang.String SERVICE_META_DATA = "android.printservice";
+ field public static final String EXTRA_CAN_SELECT_PRINTER = "android.printservice.extra.CAN_SELECT_PRINTER";
+ field public static final String EXTRA_PRINTER_INFO = "android.intent.extra.print.EXTRA_PRINTER_INFO";
+ field public static final String EXTRA_PRINT_DOCUMENT_INFO = "android.printservice.extra.PRINT_DOCUMENT_INFO";
+ field public static final String EXTRA_PRINT_JOB_INFO = "android.intent.extra.print.PRINT_JOB_INFO";
+ field public static final String EXTRA_SELECT_PRINTER = "android.printservice.extra.SELECT_PRINTER";
+ field public static final String SERVICE_INTERFACE = "android.printservice.PrintService";
+ field public static final String SERVICE_META_DATA = "android.printservice";
}
public abstract class PrinterDiscoverySession {
ctor public PrinterDiscoverySession();
- method public final void addPrinters(java.util.List<android.print.PrinterInfo>);
- method public final java.util.List<android.print.PrinterInfo> getPrinters();
- method public final java.util.List<android.print.PrinterId> getTrackedPrinters();
+ method public final void addPrinters(@NonNull java.util.List<android.print.PrinterInfo>);
+ method @NonNull public final java.util.List<android.print.PrinterInfo> getPrinters();
+ method @NonNull public final java.util.List<android.print.PrinterId> getTrackedPrinters();
method public final boolean isDestroyed();
method public final boolean isPrinterDiscoveryStarted();
method public abstract void onDestroy();
- method public void onRequestCustomPrinterIcon(android.print.PrinterId, android.os.CancellationSignal, android.printservice.CustomPrinterIconCallback);
- method public abstract void onStartPrinterDiscovery(java.util.List<android.print.PrinterId>);
- method public abstract void onStartPrinterStateTracking(android.print.PrinterId);
+ method public void onRequestCustomPrinterIcon(@NonNull android.print.PrinterId, @NonNull android.os.CancellationSignal, @NonNull android.printservice.CustomPrinterIconCallback);
+ method public abstract void onStartPrinterDiscovery(@NonNull java.util.List<android.print.PrinterId>);
+ method public abstract void onStartPrinterStateTracking(@NonNull android.print.PrinterId);
method public abstract void onStopPrinterDiscovery();
- method public abstract void onStopPrinterStateTracking(android.print.PrinterId);
- method public abstract void onValidatePrinters(java.util.List<android.print.PrinterId>);
- method public final void removePrinters(java.util.List<android.print.PrinterId>);
+ method public abstract void onStopPrinterStateTracking(@NonNull android.print.PrinterId);
+ method public abstract void onValidatePrinters(@NonNull java.util.List<android.print.PrinterId>);
+ method public final void removePrinters(@NonNull java.util.List<android.print.PrinterId>);
}
}
@@ -36211,97 +36350,97 @@
public final class AlarmClock {
ctor public AlarmClock();
- field public static final java.lang.String ACTION_DISMISS_ALARM = "android.intent.action.DISMISS_ALARM";
- field public static final java.lang.String ACTION_DISMISS_TIMER = "android.intent.action.DISMISS_TIMER";
- field public static final java.lang.String ACTION_SET_ALARM = "android.intent.action.SET_ALARM";
- field public static final java.lang.String ACTION_SET_TIMER = "android.intent.action.SET_TIMER";
- field public static final java.lang.String ACTION_SHOW_ALARMS = "android.intent.action.SHOW_ALARMS";
- field public static final java.lang.String ACTION_SHOW_TIMERS = "android.intent.action.SHOW_TIMERS";
- field public static final java.lang.String ACTION_SNOOZE_ALARM = "android.intent.action.SNOOZE_ALARM";
- field public static final java.lang.String ALARM_SEARCH_MODE_ALL = "android.all";
- field public static final java.lang.String ALARM_SEARCH_MODE_LABEL = "android.label";
- field public static final java.lang.String ALARM_SEARCH_MODE_NEXT = "android.next";
- field public static final java.lang.String ALARM_SEARCH_MODE_TIME = "android.time";
- field public static final java.lang.String EXTRA_ALARM_SEARCH_MODE = "android.intent.extra.alarm.SEARCH_MODE";
- field public static final java.lang.String EXTRA_ALARM_SNOOZE_DURATION = "android.intent.extra.alarm.SNOOZE_DURATION";
- field public static final java.lang.String EXTRA_DAYS = "android.intent.extra.alarm.DAYS";
- field public static final java.lang.String EXTRA_HOUR = "android.intent.extra.alarm.HOUR";
- field public static final java.lang.String EXTRA_IS_PM = "android.intent.extra.alarm.IS_PM";
- field public static final java.lang.String EXTRA_LENGTH = "android.intent.extra.alarm.LENGTH";
- field public static final java.lang.String EXTRA_MESSAGE = "android.intent.extra.alarm.MESSAGE";
- field public static final java.lang.String EXTRA_MINUTES = "android.intent.extra.alarm.MINUTES";
- field public static final java.lang.String EXTRA_RINGTONE = "android.intent.extra.alarm.RINGTONE";
- field public static final java.lang.String EXTRA_SKIP_UI = "android.intent.extra.alarm.SKIP_UI";
- field public static final java.lang.String EXTRA_VIBRATE = "android.intent.extra.alarm.VIBRATE";
- field public static final java.lang.String VALUE_RINGTONE_SILENT = "silent";
+ field public static final String ACTION_DISMISS_ALARM = "android.intent.action.DISMISS_ALARM";
+ field public static final String ACTION_DISMISS_TIMER = "android.intent.action.DISMISS_TIMER";
+ field public static final String ACTION_SET_ALARM = "android.intent.action.SET_ALARM";
+ field public static final String ACTION_SET_TIMER = "android.intent.action.SET_TIMER";
+ field public static final String ACTION_SHOW_ALARMS = "android.intent.action.SHOW_ALARMS";
+ field public static final String ACTION_SHOW_TIMERS = "android.intent.action.SHOW_TIMERS";
+ field public static final String ACTION_SNOOZE_ALARM = "android.intent.action.SNOOZE_ALARM";
+ field public static final String ALARM_SEARCH_MODE_ALL = "android.all";
+ field public static final String ALARM_SEARCH_MODE_LABEL = "android.label";
+ field public static final String ALARM_SEARCH_MODE_NEXT = "android.next";
+ field public static final String ALARM_SEARCH_MODE_TIME = "android.time";
+ field public static final String EXTRA_ALARM_SEARCH_MODE = "android.intent.extra.alarm.SEARCH_MODE";
+ field public static final String EXTRA_ALARM_SNOOZE_DURATION = "android.intent.extra.alarm.SNOOZE_DURATION";
+ field public static final String EXTRA_DAYS = "android.intent.extra.alarm.DAYS";
+ field public static final String EXTRA_HOUR = "android.intent.extra.alarm.HOUR";
+ field public static final String EXTRA_IS_PM = "android.intent.extra.alarm.IS_PM";
+ field public static final String EXTRA_LENGTH = "android.intent.extra.alarm.LENGTH";
+ field public static final String EXTRA_MESSAGE = "android.intent.extra.alarm.MESSAGE";
+ field public static final String EXTRA_MINUTES = "android.intent.extra.alarm.MINUTES";
+ field public static final String EXTRA_RINGTONE = "android.intent.extra.alarm.RINGTONE";
+ field public static final String EXTRA_SKIP_UI = "android.intent.extra.alarm.SKIP_UI";
+ field public static final String EXTRA_VIBRATE = "android.intent.extra.alarm.VIBRATE";
+ field public static final String VALUE_RINGTONE_SILENT = "silent";
}
- public abstract interface BaseColumns {
- field public static final java.lang.String _COUNT = "_count";
- field public static final java.lang.String _ID = "_id";
+ public interface BaseColumns {
+ field public static final String _COUNT = "_count";
+ field public static final String _ID = "_id";
}
public class BlockedNumberContract {
method public static boolean canCurrentUserBlockNumbers(android.content.Context);
- method public static boolean isBlocked(android.content.Context, java.lang.String);
- method public static int unblock(android.content.Context, java.lang.String);
- field public static final java.lang.String AUTHORITY = "com.android.blockednumber";
+ method @WorkerThread public static boolean isBlocked(android.content.Context, String);
+ method @WorkerThread public static int unblock(android.content.Context, String);
+ field public static final String AUTHORITY = "com.android.blockednumber";
field public static final android.net.Uri AUTHORITY_URI;
}
public static class BlockedNumberContract.BlockedNumbers {
- field public static final java.lang.String COLUMN_E164_NUMBER = "e164_number";
- field public static final java.lang.String COLUMN_ID = "_id";
- field public static final java.lang.String COLUMN_ORIGINAL_NUMBER = "original_number";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/blocked_number";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/blocked_number";
+ field public static final String COLUMN_E164_NUMBER = "e164_number";
+ field public static final String COLUMN_ID = "_id";
+ field public static final String COLUMN_ORIGINAL_NUMBER = "original_number";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/blocked_number";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/blocked_number";
field public static final android.net.Uri CONTENT_URI;
}
public class Browser {
ctor public Browser();
- method public static final void sendString(android.content.Context, java.lang.String);
- field public static final java.lang.String EXTRA_APPLICATION_ID = "com.android.browser.application_id";
- field public static final java.lang.String EXTRA_CREATE_NEW_TAB = "create_new_tab";
- field public static final java.lang.String EXTRA_HEADERS = "com.android.browser.headers";
- field public static final java.lang.String INITIAL_ZOOM_LEVEL = "browser.initialZoomLevel";
+ method public static final void sendString(android.content.Context, String);
+ field public static final String EXTRA_APPLICATION_ID = "com.android.browser.application_id";
+ field public static final String EXTRA_CREATE_NEW_TAB = "create_new_tab";
+ field public static final String EXTRA_HEADERS = "com.android.browser.headers";
+ field public static final String INITIAL_ZOOM_LEVEL = "browser.initialZoomLevel";
}
public final class CalendarContract {
- method public static boolean startViewCalendarEventInManagedProfile(android.content.Context, long, long, long, boolean, int);
- field public static final java.lang.String ACCOUNT_TYPE_LOCAL = "LOCAL";
- field public static final java.lang.String ACTION_EVENT_REMINDER = "android.intent.action.EVENT_REMINDER";
- field public static final java.lang.String ACTION_HANDLE_CUSTOM_EVENT = "android.provider.calendar.action.HANDLE_CUSTOM_EVENT";
- field public static final java.lang.String ACTION_VIEW_WORK_CALENDAR_EVENT = "android.provider.calendar.action.VIEW_WORK_CALENDAR_EVENT";
- field public static final java.lang.String AUTHORITY = "com.android.calendar";
- field public static final java.lang.String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
+ method public static boolean startViewCalendarEventInManagedProfile(@NonNull android.content.Context, long, long, long, boolean, int);
+ field public static final String ACCOUNT_TYPE_LOCAL = "LOCAL";
+ field public static final String ACTION_EVENT_REMINDER = "android.intent.action.EVENT_REMINDER";
+ field public static final String ACTION_HANDLE_CUSTOM_EVENT = "android.provider.calendar.action.HANDLE_CUSTOM_EVENT";
+ field public static final String ACTION_VIEW_WORK_CALENDAR_EVENT = "android.provider.calendar.action.VIEW_WORK_CALENDAR_EVENT";
+ field public static final String AUTHORITY = "com.android.calendar";
+ field public static final String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String EXTRA_CUSTOM_APP_URI = "customAppUri";
- field public static final java.lang.String EXTRA_EVENT_ALL_DAY = "allDay";
- field public static final java.lang.String EXTRA_EVENT_BEGIN_TIME = "beginTime";
- field public static final java.lang.String EXTRA_EVENT_END_TIME = "endTime";
- field public static final java.lang.String EXTRA_EVENT_ID = "id";
+ field public static final String EXTRA_CUSTOM_APP_URI = "customAppUri";
+ field public static final String EXTRA_EVENT_ALL_DAY = "allDay";
+ field public static final String EXTRA_EVENT_BEGIN_TIME = "beginTime";
+ field public static final String EXTRA_EVENT_END_TIME = "endTime";
+ field public static final String EXTRA_EVENT_ID = "id";
}
public static final class CalendarContract.Attendees implements android.provider.BaseColumns android.provider.CalendarContract.AttendeesColumns android.provider.CalendarContract.EventsColumns {
- method public static android.database.Cursor query(android.content.ContentResolver, long, java.lang.String[]);
+ method public static android.database.Cursor query(android.content.ContentResolver, long, String[]);
field public static final android.net.Uri CONTENT_URI;
}
- protected static abstract interface CalendarContract.AttendeesColumns {
- field public static final java.lang.String ATTENDEE_EMAIL = "attendeeEmail";
- field public static final java.lang.String ATTENDEE_IDENTITY = "attendeeIdentity";
- field public static final java.lang.String ATTENDEE_ID_NAMESPACE = "attendeeIdNamespace";
- field public static final java.lang.String ATTENDEE_NAME = "attendeeName";
- field public static final java.lang.String ATTENDEE_RELATIONSHIP = "attendeeRelationship";
- field public static final java.lang.String ATTENDEE_STATUS = "attendeeStatus";
+ protected static interface CalendarContract.AttendeesColumns {
+ field public static final String ATTENDEE_EMAIL = "attendeeEmail";
+ field public static final String ATTENDEE_IDENTITY = "attendeeIdentity";
+ field public static final String ATTENDEE_ID_NAMESPACE = "attendeeIdNamespace";
+ field public static final String ATTENDEE_NAME = "attendeeName";
+ field public static final String ATTENDEE_RELATIONSHIP = "attendeeRelationship";
+ field public static final String ATTENDEE_STATUS = "attendeeStatus";
field public static final int ATTENDEE_STATUS_ACCEPTED = 1; // 0x1
field public static final int ATTENDEE_STATUS_DECLINED = 2; // 0x2
field public static final int ATTENDEE_STATUS_INVITED = 3; // 0x3
field public static final int ATTENDEE_STATUS_NONE = 0; // 0x0
field public static final int ATTENDEE_STATUS_TENTATIVE = 4; // 0x4
- field public static final java.lang.String ATTENDEE_TYPE = "attendeeType";
- field public static final java.lang.String EVENT_ID = "event_id";
+ field public static final String ATTENDEE_TYPE = "attendeeType";
+ field public static final String EVENT_ID = "event_id";
field public static final int RELATIONSHIP_ATTENDEE = 1; // 0x1
field public static final int RELATIONSHIP_NONE = 0; // 0x0
field public static final int RELATIONSHIP_ORGANIZER = 2; // 0x2
@@ -36318,45 +36457,45 @@
field public static final android.net.Uri CONTENT_URI_BY_INSTANCE;
}
- protected static abstract interface CalendarContract.CalendarAlertsColumns {
- field public static final java.lang.String ALARM_TIME = "alarmTime";
- field public static final java.lang.String BEGIN = "begin";
- field public static final java.lang.String CREATION_TIME = "creationTime";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "begin ASC,title ASC";
- field public static final java.lang.String END = "end";
- field public static final java.lang.String EVENT_ID = "event_id";
- field public static final java.lang.String MINUTES = "minutes";
- field public static final java.lang.String NOTIFY_TIME = "notifyTime";
- field public static final java.lang.String RECEIVED_TIME = "receivedTime";
- field public static final java.lang.String STATE = "state";
+ protected static interface CalendarContract.CalendarAlertsColumns {
+ field public static final String ALARM_TIME = "alarmTime";
+ field public static final String BEGIN = "begin";
+ field public static final String CREATION_TIME = "creationTime";
+ field public static final String DEFAULT_SORT_ORDER = "begin ASC,title ASC";
+ field public static final String END = "end";
+ field public static final String EVENT_ID = "event_id";
+ field public static final String MINUTES = "minutes";
+ field public static final String NOTIFY_TIME = "notifyTime";
+ field public static final String RECEIVED_TIME = "receivedTime";
+ field public static final String STATE = "state";
field public static final int STATE_DISMISSED = 2; // 0x2
field public static final int STATE_FIRED = 1; // 0x1
field public static final int STATE_SCHEDULED = 0; // 0x0
}
public static final class CalendarContract.CalendarCache implements android.provider.CalendarContract.CalendarCacheColumns {
- field public static final java.lang.String KEY_TIMEZONE_INSTANCES = "timezoneInstances";
- field public static final java.lang.String KEY_TIMEZONE_INSTANCES_PREVIOUS = "timezoneInstancesPrevious";
- field public static final java.lang.String KEY_TIMEZONE_TYPE = "timezoneType";
- field public static final java.lang.String TIMEZONE_TYPE_AUTO = "auto";
- field public static final java.lang.String TIMEZONE_TYPE_HOME = "home";
+ field public static final String KEY_TIMEZONE_INSTANCES = "timezoneInstances";
+ field public static final String KEY_TIMEZONE_INSTANCES_PREVIOUS = "timezoneInstancesPrevious";
+ field public static final String KEY_TIMEZONE_TYPE = "timezoneType";
+ field public static final String TIMEZONE_TYPE_AUTO = "auto";
+ field public static final String TIMEZONE_TYPE_HOME = "home";
field public static final android.net.Uri URI;
}
- protected static abstract interface CalendarContract.CalendarCacheColumns {
- field public static final java.lang.String KEY = "key";
- field public static final java.lang.String VALUE = "value";
+ protected static interface CalendarContract.CalendarCacheColumns {
+ field public static final String KEY = "key";
+ field public static final String VALUE = "value";
}
- protected static abstract interface CalendarContract.CalendarColumns {
- field public static final java.lang.String ALLOWED_ATTENDEE_TYPES = "allowedAttendeeTypes";
- field public static final java.lang.String ALLOWED_AVAILABILITY = "allowedAvailability";
- field public static final java.lang.String ALLOWED_REMINDERS = "allowedReminders";
- field public static final java.lang.String CALENDAR_ACCESS_LEVEL = "calendar_access_level";
- field public static final java.lang.String CALENDAR_COLOR = "calendar_color";
- field public static final java.lang.String CALENDAR_COLOR_KEY = "calendar_color_index";
- field public static final java.lang.String CALENDAR_DISPLAY_NAME = "calendar_displayName";
- field public static final java.lang.String CALENDAR_TIME_ZONE = "calendar_timezone";
+ protected static interface CalendarContract.CalendarColumns {
+ field public static final String ALLOWED_ATTENDEE_TYPES = "allowedAttendeeTypes";
+ field public static final String ALLOWED_AVAILABILITY = "allowedAvailability";
+ field public static final String ALLOWED_REMINDERS = "allowedReminders";
+ field public static final String CALENDAR_ACCESS_LEVEL = "calendar_access_level";
+ field public static final String CALENDAR_COLOR = "calendar_color";
+ field public static final String CALENDAR_COLOR_KEY = "calendar_color_index";
+ field public static final String CALENDAR_DISPLAY_NAME = "calendar_displayName";
+ field public static final String CALENDAR_TIME_ZONE = "calendar_timezone";
field public static final int CAL_ACCESS_CONTRIBUTOR = 500; // 0x1f4
field public static final int CAL_ACCESS_EDITOR = 600; // 0x258
field public static final int CAL_ACCESS_FREEBUSY = 100; // 0x64
@@ -36366,13 +36505,13 @@
field public static final int CAL_ACCESS_READ = 200; // 0xc8
field public static final int CAL_ACCESS_RESPOND = 300; // 0x12c
field public static final int CAL_ACCESS_ROOT = 800; // 0x320
- field public static final java.lang.String CAN_MODIFY_TIME_ZONE = "canModifyTimeZone";
- field public static final java.lang.String CAN_ORGANIZER_RESPOND = "canOrganizerRespond";
- field public static final java.lang.String IS_PRIMARY = "isPrimary";
- field public static final java.lang.String MAX_REMINDERS = "maxReminders";
- field public static final java.lang.String OWNER_ACCOUNT = "ownerAccount";
- field public static final java.lang.String SYNC_EVENTS = "sync_events";
- field public static final java.lang.String VISIBLE = "visible";
+ field public static final String CAN_MODIFY_TIME_ZONE = "canModifyTimeZone";
+ field public static final String CAN_ORGANIZER_RESPOND = "canOrganizerRespond";
+ field public static final String IS_PRIMARY = "isPrimary";
+ field public static final String MAX_REMINDERS = "maxReminders";
+ field public static final String OWNER_ACCOUNT = "ownerAccount";
+ field public static final String SYNC_EVENTS = "sync_events";
+ field public static final String VISIBLE = "visible";
}
public static final class CalendarContract.CalendarEntity implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
@@ -36380,47 +36519,47 @@
field public static final android.net.Uri CONTENT_URI;
}
- protected static abstract interface CalendarContract.CalendarSyncColumns {
- field public static final java.lang.String CAL_SYNC1 = "cal_sync1";
- field public static final java.lang.String CAL_SYNC10 = "cal_sync10";
- field public static final java.lang.String CAL_SYNC2 = "cal_sync2";
- field public static final java.lang.String CAL_SYNC3 = "cal_sync3";
- field public static final java.lang.String CAL_SYNC4 = "cal_sync4";
- field public static final java.lang.String CAL_SYNC5 = "cal_sync5";
- field public static final java.lang.String CAL_SYNC6 = "cal_sync6";
- field public static final java.lang.String CAL_SYNC7 = "cal_sync7";
- field public static final java.lang.String CAL_SYNC8 = "cal_sync8";
- field public static final java.lang.String CAL_SYNC9 = "cal_sync9";
+ protected static interface CalendarContract.CalendarSyncColumns {
+ field public static final String CAL_SYNC1 = "cal_sync1";
+ field public static final String CAL_SYNC10 = "cal_sync10";
+ field public static final String CAL_SYNC2 = "cal_sync2";
+ field public static final String CAL_SYNC3 = "cal_sync3";
+ field public static final String CAL_SYNC4 = "cal_sync4";
+ field public static final String CAL_SYNC5 = "cal_sync5";
+ field public static final String CAL_SYNC6 = "cal_sync6";
+ field public static final String CAL_SYNC7 = "cal_sync7";
+ field public static final String CAL_SYNC8 = "cal_sync8";
+ field public static final String CAL_SYNC9 = "cal_sync9";
}
public static final class CalendarContract.Calendars implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
- field public static final java.lang.String CALENDAR_LOCATION = "calendar_location";
+ field public static final String CALENDAR_LOCATION = "calendar_location";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "calendar_displayName";
+ field public static final String DEFAULT_SORT_ORDER = "calendar_displayName";
field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
- field public static final java.lang.String NAME = "name";
+ field public static final String NAME = "name";
}
public static final class CalendarContract.Colors implements android.provider.CalendarContract.ColorsColumns {
field public static final android.net.Uri CONTENT_URI;
}
- protected static abstract interface CalendarContract.ColorsColumns implements android.provider.SyncStateContract.Columns {
- field public static final java.lang.String COLOR = "color";
- field public static final java.lang.String COLOR_KEY = "color_index";
- field public static final java.lang.String COLOR_TYPE = "color_type";
+ protected static interface CalendarContract.ColorsColumns extends android.provider.SyncStateContract.Columns {
+ field public static final String COLOR = "color";
+ field public static final String COLOR_KEY = "color_index";
+ field public static final String COLOR_TYPE = "color_type";
field public static final int TYPE_CALENDAR = 0; // 0x0
field public static final int TYPE_EVENT = 1; // 0x1
}
public static final class CalendarContract.EventDays implements android.provider.CalendarContract.EventDaysColumns {
- method public static android.database.Cursor query(android.content.ContentResolver, int, int, java.lang.String[]);
+ method public static android.database.Cursor query(android.content.ContentResolver, int, int, String[]);
field public static final android.net.Uri CONTENT_URI;
}
- protected static abstract interface CalendarContract.EventDaysColumns {
- field public static final java.lang.String ENDDAY = "endDay";
- field public static final java.lang.String STARTDAY = "startDay";
+ protected static interface CalendarContract.EventDaysColumns {
+ field public static final String ENDDAY = "endDay";
+ field public static final String STARTDAY = "startDay";
}
public static final class CalendarContract.Events implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
@@ -36429,66 +36568,66 @@
field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
}
- protected static abstract interface CalendarContract.EventsColumns {
+ protected static interface CalendarContract.EventsColumns {
field public static final int ACCESS_CONFIDENTIAL = 1; // 0x1
field public static final int ACCESS_DEFAULT = 0; // 0x0
- field public static final java.lang.String ACCESS_LEVEL = "accessLevel";
+ field public static final String ACCESS_LEVEL = "accessLevel";
field public static final int ACCESS_PRIVATE = 2; // 0x2
field public static final int ACCESS_PUBLIC = 3; // 0x3
- field public static final java.lang.String ALL_DAY = "allDay";
- field public static final java.lang.String AVAILABILITY = "availability";
+ field public static final String ALL_DAY = "allDay";
+ field public static final String AVAILABILITY = "availability";
field public static final int AVAILABILITY_BUSY = 0; // 0x0
field public static final int AVAILABILITY_FREE = 1; // 0x1
field public static final int AVAILABILITY_TENTATIVE = 2; // 0x2
- field public static final java.lang.String CALENDAR_ID = "calendar_id";
- field public static final java.lang.String CAN_INVITE_OTHERS = "canInviteOthers";
- field public static final java.lang.String CUSTOM_APP_PACKAGE = "customAppPackage";
- field public static final java.lang.String CUSTOM_APP_URI = "customAppUri";
- field public static final java.lang.String DESCRIPTION = "description";
- field public static final java.lang.String DISPLAY_COLOR = "displayColor";
- field public static final java.lang.String DTEND = "dtend";
- field public static final java.lang.String DTSTART = "dtstart";
- field public static final java.lang.String DURATION = "duration";
- field public static final java.lang.String EVENT_COLOR = "eventColor";
- field public static final java.lang.String EVENT_COLOR_KEY = "eventColor_index";
- field public static final java.lang.String EVENT_END_TIMEZONE = "eventEndTimezone";
- field public static final java.lang.String EVENT_LOCATION = "eventLocation";
- field public static final java.lang.String EVENT_TIMEZONE = "eventTimezone";
- field public static final java.lang.String EXDATE = "exdate";
- field public static final java.lang.String EXRULE = "exrule";
- field public static final java.lang.String GUESTS_CAN_INVITE_OTHERS = "guestsCanInviteOthers";
- field public static final java.lang.String GUESTS_CAN_MODIFY = "guestsCanModify";
- field public static final java.lang.String GUESTS_CAN_SEE_GUESTS = "guestsCanSeeGuests";
- field public static final java.lang.String HAS_ALARM = "hasAlarm";
- field public static final java.lang.String HAS_ATTENDEE_DATA = "hasAttendeeData";
- field public static final java.lang.String HAS_EXTENDED_PROPERTIES = "hasExtendedProperties";
- field public static final java.lang.String IS_ORGANIZER = "isOrganizer";
- field public static final java.lang.String LAST_DATE = "lastDate";
- field public static final java.lang.String LAST_SYNCED = "lastSynced";
- field public static final java.lang.String ORGANIZER = "organizer";
- field public static final java.lang.String ORIGINAL_ALL_DAY = "originalAllDay";
- field public static final java.lang.String ORIGINAL_ID = "original_id";
- field public static final java.lang.String ORIGINAL_INSTANCE_TIME = "originalInstanceTime";
- field public static final java.lang.String ORIGINAL_SYNC_ID = "original_sync_id";
- field public static final java.lang.String RDATE = "rdate";
- field public static final java.lang.String RRULE = "rrule";
- field public static final java.lang.String SELF_ATTENDEE_STATUS = "selfAttendeeStatus";
- field public static final java.lang.String STATUS = "eventStatus";
+ field public static final String CALENDAR_ID = "calendar_id";
+ field public static final String CAN_INVITE_OTHERS = "canInviteOthers";
+ field public static final String CUSTOM_APP_PACKAGE = "customAppPackage";
+ field public static final String CUSTOM_APP_URI = "customAppUri";
+ field public static final String DESCRIPTION = "description";
+ field public static final String DISPLAY_COLOR = "displayColor";
+ field public static final String DTEND = "dtend";
+ field public static final String DTSTART = "dtstart";
+ field public static final String DURATION = "duration";
+ field public static final String EVENT_COLOR = "eventColor";
+ field public static final String EVENT_COLOR_KEY = "eventColor_index";
+ field public static final String EVENT_END_TIMEZONE = "eventEndTimezone";
+ field public static final String EVENT_LOCATION = "eventLocation";
+ field public static final String EVENT_TIMEZONE = "eventTimezone";
+ field public static final String EXDATE = "exdate";
+ field public static final String EXRULE = "exrule";
+ field public static final String GUESTS_CAN_INVITE_OTHERS = "guestsCanInviteOthers";
+ field public static final String GUESTS_CAN_MODIFY = "guestsCanModify";
+ field public static final String GUESTS_CAN_SEE_GUESTS = "guestsCanSeeGuests";
+ field public static final String HAS_ALARM = "hasAlarm";
+ field public static final String HAS_ATTENDEE_DATA = "hasAttendeeData";
+ field public static final String HAS_EXTENDED_PROPERTIES = "hasExtendedProperties";
+ field public static final String IS_ORGANIZER = "isOrganizer";
+ field public static final String LAST_DATE = "lastDate";
+ field public static final String LAST_SYNCED = "lastSynced";
+ field public static final String ORGANIZER = "organizer";
+ field public static final String ORIGINAL_ALL_DAY = "originalAllDay";
+ field public static final String ORIGINAL_ID = "original_id";
+ field public static final String ORIGINAL_INSTANCE_TIME = "originalInstanceTime";
+ field public static final String ORIGINAL_SYNC_ID = "original_sync_id";
+ field public static final String RDATE = "rdate";
+ field public static final String RRULE = "rrule";
+ field public static final String SELF_ATTENDEE_STATUS = "selfAttendeeStatus";
+ field public static final String STATUS = "eventStatus";
field public static final int STATUS_CANCELED = 2; // 0x2
field public static final int STATUS_CONFIRMED = 1; // 0x1
field public static final int STATUS_TENTATIVE = 0; // 0x0
- field public static final java.lang.String SYNC_DATA1 = "sync_data1";
- field public static final java.lang.String SYNC_DATA10 = "sync_data10";
- field public static final java.lang.String SYNC_DATA2 = "sync_data2";
- field public static final java.lang.String SYNC_DATA3 = "sync_data3";
- field public static final java.lang.String SYNC_DATA4 = "sync_data4";
- field public static final java.lang.String SYNC_DATA5 = "sync_data5";
- field public static final java.lang.String SYNC_DATA6 = "sync_data6";
- field public static final java.lang.String SYNC_DATA7 = "sync_data7";
- field public static final java.lang.String SYNC_DATA8 = "sync_data8";
- field public static final java.lang.String SYNC_DATA9 = "sync_data9";
- field public static final java.lang.String TITLE = "title";
- field public static final java.lang.String UID_2445 = "uid2445";
+ field public static final String SYNC_DATA1 = "sync_data1";
+ field public static final String SYNC_DATA10 = "sync_data10";
+ field public static final String SYNC_DATA2 = "sync_data2";
+ field public static final String SYNC_DATA3 = "sync_data3";
+ field public static final String SYNC_DATA4 = "sync_data4";
+ field public static final String SYNC_DATA5 = "sync_data5";
+ field public static final String SYNC_DATA6 = "sync_data6";
+ field public static final String SYNC_DATA7 = "sync_data7";
+ field public static final String SYNC_DATA8 = "sync_data8";
+ field public static final String SYNC_DATA9 = "sync_data9";
+ field public static final String TITLE = "title";
+ field public static final String UID_2445 = "uid2445";
}
public static final class CalendarContract.EventsEntity implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
@@ -36501,57 +36640,57 @@
field public static final android.net.Uri CONTENT_URI;
}
- protected static abstract interface CalendarContract.ExtendedPropertiesColumns {
- field public static final java.lang.String EVENT_ID = "event_id";
- field public static final java.lang.String NAME = "name";
- field public static final java.lang.String VALUE = "value";
+ protected static interface CalendarContract.ExtendedPropertiesColumns {
+ field public static final String EVENT_ID = "event_id";
+ field public static final String NAME = "name";
+ field public static final String VALUE = "value";
}
public static final class CalendarContract.Instances implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns {
- method public static android.database.Cursor query(android.content.ContentResolver, java.lang.String[], long, long);
- method public static android.database.Cursor query(android.content.ContentResolver, java.lang.String[], long, long, java.lang.String);
- field public static final java.lang.String BEGIN = "begin";
+ method public static android.database.Cursor query(android.content.ContentResolver, String[], long, long);
+ method public static android.database.Cursor query(android.content.ContentResolver, String[], long, long, String);
+ field public static final String BEGIN = "begin";
field public static final android.net.Uri CONTENT_BY_DAY_URI;
field public static final android.net.Uri CONTENT_SEARCH_BY_DAY_URI;
field public static final android.net.Uri CONTENT_SEARCH_URI;
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String END = "end";
- field public static final java.lang.String END_DAY = "endDay";
- field public static final java.lang.String END_MINUTE = "endMinute";
+ field public static final String END = "end";
+ field public static final String END_DAY = "endDay";
+ field public static final String END_MINUTE = "endMinute";
field public static final android.net.Uri ENTERPRISE_CONTENT_BY_DAY_URI;
field public static final android.net.Uri ENTERPRISE_CONTENT_SEARCH_BY_DAY_URI;
field public static final android.net.Uri ENTERPRISE_CONTENT_SEARCH_URI;
field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
- field public static final java.lang.String EVENT_ID = "event_id";
- field public static final java.lang.String START_DAY = "startDay";
- field public static final java.lang.String START_MINUTE = "startMinute";
+ field public static final String EVENT_ID = "event_id";
+ field public static final String START_DAY = "startDay";
+ field public static final String START_MINUTE = "startMinute";
}
public static final class CalendarContract.Reminders implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.RemindersColumns {
- method public static android.database.Cursor query(android.content.ContentResolver, long, java.lang.String[]);
+ method public static android.database.Cursor query(android.content.ContentResolver, long, String[]);
field public static final android.net.Uri CONTENT_URI;
}
- protected static abstract interface CalendarContract.RemindersColumns {
- field public static final java.lang.String EVENT_ID = "event_id";
- field public static final java.lang.String METHOD = "method";
+ protected static interface CalendarContract.RemindersColumns {
+ field public static final String EVENT_ID = "event_id";
+ field public static final String METHOD = "method";
field public static final int METHOD_ALARM = 4; // 0x4
field public static final int METHOD_ALERT = 1; // 0x1
field public static final int METHOD_DEFAULT = 0; // 0x0
field public static final int METHOD_EMAIL = 2; // 0x2
field public static final int METHOD_SMS = 3; // 0x3
- field public static final java.lang.String MINUTES = "minutes";
+ field public static final String MINUTES = "minutes";
field public static final int MINUTES_DEFAULT = -1; // 0xffffffff
}
- protected static abstract interface CalendarContract.SyncColumns implements android.provider.CalendarContract.CalendarSyncColumns {
- field public static final java.lang.String ACCOUNT_NAME = "account_name";
- field public static final java.lang.String ACCOUNT_TYPE = "account_type";
- field public static final java.lang.String CAN_PARTIALLY_UPDATE = "canPartiallyUpdate";
- field public static final java.lang.String DELETED = "deleted";
- field public static final java.lang.String DIRTY = "dirty";
- field public static final java.lang.String MUTATORS = "mutators";
- field public static final java.lang.String _SYNC_ID = "_sync_id";
+ protected static interface CalendarContract.SyncColumns extends android.provider.CalendarContract.CalendarSyncColumns {
+ field public static final String ACCOUNT_NAME = "account_name";
+ field public static final String ACCOUNT_TYPE = "account_type";
+ field public static final String CAN_PARTIALLY_UPDATE = "canPartiallyUpdate";
+ field public static final String DELETED = "deleted";
+ field public static final String DIRTY = "dirty";
+ field public static final String MUTATORS = "mutators";
+ field public static final String _SYNC_ID = "_sync_id";
}
public static final class CalendarContract.SyncState implements android.provider.SyncStateContract.Columns {
@@ -36560,16 +36699,16 @@
public class CallLog {
ctor public CallLog();
- field public static final java.lang.String AUTHORITY = "call_log";
+ field public static final String AUTHORITY = "call_log";
field public static final android.net.Uri CONTENT_URI;
}
public static class CallLog.Calls implements android.provider.BaseColumns {
ctor public CallLog.Calls();
- method public static java.lang.String getLastOutgoingCall(android.content.Context);
+ method public static String getLastOutgoingCall(android.content.Context);
field public static final int ANSWERED_EXTERNALLY_TYPE = 7; // 0x7
field public static final int BLOCKED_TYPE = 6; // 0x6
- field public static final java.lang.String BLOCK_REASON = "block_reason";
+ field public static final String BLOCK_REASON = "block_reason";
field public static final int BLOCK_REASON_BLOCKED_NUMBER = 3; // 0x3
field public static final int BLOCK_REASON_CALL_SCREENING_SERVICE = 1; // 0x1
field public static final int BLOCK_REASON_DIRECT_TO_VOICEMAIL = 2; // 0x2
@@ -36578,399 +36717,399 @@
field public static final int BLOCK_REASON_PAY_PHONE = 6; // 0x6
field public static final int BLOCK_REASON_RESTRICTED_NUMBER = 5; // 0x5
field public static final int BLOCK_REASON_UNKNOWN_NUMBER = 4; // 0x4
- field public static final java.lang.String CACHED_FORMATTED_NUMBER = "formatted_number";
- field public static final java.lang.String CACHED_LOOKUP_URI = "lookup_uri";
- field public static final java.lang.String CACHED_MATCHED_NUMBER = "matched_number";
- field public static final java.lang.String CACHED_NAME = "name";
- field public static final java.lang.String CACHED_NORMALIZED_NUMBER = "normalized_number";
- field public static final java.lang.String CACHED_NUMBER_LABEL = "numberlabel";
- field public static final java.lang.String CACHED_NUMBER_TYPE = "numbertype";
- field public static final java.lang.String CACHED_PHOTO_ID = "photo_id";
- field public static final java.lang.String CACHED_PHOTO_URI = "photo_uri";
- field public static final java.lang.String CALL_ID_APP_NAME = "call_id_app_name";
- field public static final java.lang.String CALL_ID_DESCRIPTION = "call_id_description";
- field public static final java.lang.String CALL_ID_DETAILS = "call_id_details";
- field public static final java.lang.String CALL_ID_NAME = "call_id_name";
- field public static final java.lang.String CALL_ID_NUISANCE_CONFIDENCE = "call_id_nuisance_confidence";
- field public static final java.lang.String CALL_ID_PACKAGE_NAME = "call_id_package_name";
- field public static final java.lang.String CALL_SCREENING_APP_NAME = "call_screening_app_name";
- field public static final java.lang.String CALL_SCREENING_COMPONENT_NAME = "call_screening_component_name";
+ field public static final String CACHED_FORMATTED_NUMBER = "formatted_number";
+ field public static final String CACHED_LOOKUP_URI = "lookup_uri";
+ field public static final String CACHED_MATCHED_NUMBER = "matched_number";
+ field public static final String CACHED_NAME = "name";
+ field public static final String CACHED_NORMALIZED_NUMBER = "normalized_number";
+ field public static final String CACHED_NUMBER_LABEL = "numberlabel";
+ field public static final String CACHED_NUMBER_TYPE = "numbertype";
+ field public static final String CACHED_PHOTO_ID = "photo_id";
+ field public static final String CACHED_PHOTO_URI = "photo_uri";
+ field public static final String CALL_ID_APP_NAME = "call_id_app_name";
+ field public static final String CALL_ID_DESCRIPTION = "call_id_description";
+ field public static final String CALL_ID_DETAILS = "call_id_details";
+ field public static final String CALL_ID_NAME = "call_id_name";
+ field public static final String CALL_ID_NUISANCE_CONFIDENCE = "call_id_nuisance_confidence";
+ field public static final String CALL_ID_PACKAGE_NAME = "call_id_package_name";
+ field public static final String CALL_SCREENING_APP_NAME = "call_screening_app_name";
+ field public static final String CALL_SCREENING_COMPONENT_NAME = "call_screening_component_name";
field public static final android.net.Uri CONTENT_FILTER_URI;
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/calls";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/calls";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/calls";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/calls";
field public static final android.net.Uri CONTENT_URI;
field public static final android.net.Uri CONTENT_URI_WITH_VOICEMAIL;
- field public static final java.lang.String COUNTRY_ISO = "countryiso";
- field public static final java.lang.String DATA_USAGE = "data_usage";
- field public static final java.lang.String DATE = "date";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
- field public static final java.lang.String DURATION = "duration";
- field public static final java.lang.String EXTRA_CALL_TYPE_FILTER = "android.provider.extra.CALL_TYPE_FILTER";
- field public static final java.lang.String FEATURES = "features";
+ field public static final String COUNTRY_ISO = "countryiso";
+ field public static final String DATA_USAGE = "data_usage";
+ field public static final String DATE = "date";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DURATION = "duration";
+ field public static final String EXTRA_CALL_TYPE_FILTER = "android.provider.extra.CALL_TYPE_FILTER";
+ field public static final String FEATURES = "features";
field public static final int FEATURES_HD_CALL = 4; // 0x4
field public static final int FEATURES_PULLED_EXTERNALLY = 2; // 0x2
field public static final int FEATURES_RTT = 32; // 0x20
field public static final int FEATURES_VIDEO = 1; // 0x1
field public static final int FEATURES_WIFI = 8; // 0x8
- field public static final java.lang.String GEOCODED_LOCATION = "geocoded_location";
+ field public static final String GEOCODED_LOCATION = "geocoded_location";
field public static final int INCOMING_TYPE = 1; // 0x1
- field public static final java.lang.String IS_READ = "is_read";
- field public static final java.lang.String LAST_MODIFIED = "last_modified";
- field public static final java.lang.String LIMIT_PARAM_KEY = "limit";
+ field public static final String IS_READ = "is_read";
+ field public static final String LAST_MODIFIED = "last_modified";
+ field public static final String LIMIT_PARAM_KEY = "limit";
field public static final int MISSED_TYPE = 3; // 0x3
- field public static final java.lang.String NEW = "new";
- field public static final java.lang.String NUMBER = "number";
- field public static final java.lang.String NUMBER_PRESENTATION = "presentation";
- field public static final java.lang.String OFFSET_PARAM_KEY = "offset";
+ field public static final String NEW = "new";
+ field public static final String NUMBER = "number";
+ field public static final String NUMBER_PRESENTATION = "presentation";
+ field public static final String OFFSET_PARAM_KEY = "offset";
field public static final int OUTGOING_TYPE = 2; // 0x2
- field public static final java.lang.String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
- field public static final java.lang.String PHONE_ACCOUNT_ID = "subscription_id";
- field public static final java.lang.String POST_DIAL_DIGITS = "post_dial_digits";
+ field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
+ field public static final String PHONE_ACCOUNT_ID = "subscription_id";
+ field public static final String POST_DIAL_DIGITS = "post_dial_digits";
field public static final int PRESENTATION_ALLOWED = 1; // 0x1
field public static final int PRESENTATION_PAYPHONE = 4; // 0x4
field public static final int PRESENTATION_RESTRICTED = 2; // 0x2
field public static final int PRESENTATION_UNKNOWN = 3; // 0x3
field public static final int REJECTED_TYPE = 5; // 0x5
- field public static final java.lang.String TRANSCRIPTION = "transcription";
- field public static final java.lang.String TYPE = "type";
- field public static final java.lang.String VIA_NUMBER = "via_number";
+ field public static final String TRANSCRIPTION = "transcription";
+ field public static final String TYPE = "type";
+ field public static final String VIA_NUMBER = "via_number";
field public static final int VOICEMAIL_TYPE = 4; // 0x4
- field public static final java.lang.String VOICEMAIL_URI = "voicemail_uri";
+ field public static final String VOICEMAIL_URI = "voicemail_uri";
}
- public deprecated class Contacts {
- field public static final deprecated java.lang.String AUTHORITY = "contacts";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated int KIND_EMAIL = 1; // 0x1
- field public static final deprecated int KIND_IM = 3; // 0x3
- field public static final deprecated int KIND_ORGANIZATION = 4; // 0x4
- field public static final deprecated int KIND_PHONE = 5; // 0x5
- field public static final deprecated int KIND_POSTAL = 2; // 0x2
+ @Deprecated public class Contacts {
+ field @Deprecated public static final String AUTHORITY = "contacts";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final int KIND_EMAIL = 1; // 0x1
+ field @Deprecated public static final int KIND_IM = 3; // 0x3
+ field @Deprecated public static final int KIND_ORGANIZATION = 4; // 0x4
+ field @Deprecated public static final int KIND_PHONE = 5; // 0x5
+ field @Deprecated public static final int KIND_POSTAL = 2; // 0x2
}
- public static final deprecated class Contacts.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
- method public deprecated void addPostalLocation(android.content.Context, long, double, double);
- method public static deprecated java.lang.Object decodeImProtocol(java.lang.String);
- method public static deprecated java.lang.String encodeCustomImProtocol(java.lang.String);
- method public static deprecated java.lang.String encodePredefinedImProtocol(int);
- method public static deprecated java.lang.CharSequence getDisplayLabel(android.content.Context, int, int, java.lang.CharSequence);
- field public static final deprecated java.lang.String CONTENT_EMAIL_ITEM_TYPE = "vnd.android.cursor.item/email";
- field public static final deprecated java.lang.String CONTENT_EMAIL_TYPE = "vnd.android.cursor.dir/email";
- field public static final deprecated android.net.Uri CONTENT_EMAIL_URI;
- field public static final deprecated java.lang.String CONTENT_IM_ITEM_TYPE = "vnd.android.cursor.item/jabber-im";
- field public static final deprecated java.lang.String CONTENT_POSTAL_ITEM_TYPE = "vnd.android.cursor.item/postal-address";
- field public static final deprecated java.lang.String CONTENT_POSTAL_TYPE = "vnd.android.cursor.dir/postal-address";
- field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/contact-methods";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "name ASC";
- field public static final deprecated java.lang.String PERSON_ID = "person";
- field public static final deprecated java.lang.String POSTAL_LOCATION_LATITUDE = "data";
- field public static final deprecated java.lang.String POSTAL_LOCATION_LONGITUDE = "aux_data";
- field public static final deprecated int PROTOCOL_AIM = 0; // 0x0
- field public static final deprecated int PROTOCOL_GOOGLE_TALK = 5; // 0x5
- field public static final deprecated int PROTOCOL_ICQ = 6; // 0x6
- field public static final deprecated int PROTOCOL_JABBER = 7; // 0x7
- field public static final deprecated int PROTOCOL_MSN = 1; // 0x1
- field public static final deprecated int PROTOCOL_QQ = 4; // 0x4
- field public static final deprecated int PROTOCOL_SKYPE = 3; // 0x3
- field public static final deprecated int PROTOCOL_YAHOO = 2; // 0x2
+ @Deprecated public static final class Contacts.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
+ method @Deprecated public void addPostalLocation(android.content.Context, long, double, double);
+ method @Deprecated public static Object decodeImProtocol(String);
+ method @Deprecated public static String encodeCustomImProtocol(String);
+ method @Deprecated public static String encodePredefinedImProtocol(int);
+ method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, int, CharSequence);
+ field @Deprecated public static final String CONTENT_EMAIL_ITEM_TYPE = "vnd.android.cursor.item/email";
+ field @Deprecated public static final String CONTENT_EMAIL_TYPE = "vnd.android.cursor.dir/email";
+ field @Deprecated public static final android.net.Uri CONTENT_EMAIL_URI;
+ field @Deprecated public static final String CONTENT_IM_ITEM_TYPE = "vnd.android.cursor.item/jabber-im";
+ field @Deprecated public static final String CONTENT_POSTAL_ITEM_TYPE = "vnd.android.cursor.item/postal-address";
+ field @Deprecated public static final String CONTENT_POSTAL_TYPE = "vnd.android.cursor.dir/postal-address";
+ field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact-methods";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+ field @Deprecated public static final String PERSON_ID = "person";
+ field @Deprecated public static final String POSTAL_LOCATION_LATITUDE = "data";
+ field @Deprecated public static final String POSTAL_LOCATION_LONGITUDE = "aux_data";
+ field @Deprecated public static final int PROTOCOL_AIM = 0; // 0x0
+ field @Deprecated public static final int PROTOCOL_GOOGLE_TALK = 5; // 0x5
+ field @Deprecated public static final int PROTOCOL_ICQ = 6; // 0x6
+ field @Deprecated public static final int PROTOCOL_JABBER = 7; // 0x7
+ field @Deprecated public static final int PROTOCOL_MSN = 1; // 0x1
+ field @Deprecated public static final int PROTOCOL_QQ = 4; // 0x4
+ field @Deprecated public static final int PROTOCOL_SKYPE = 3; // 0x3
+ field @Deprecated public static final int PROTOCOL_YAHOO = 2; // 0x2
}
- public static abstract deprecated interface Contacts.ContactMethodsColumns {
- field public static final deprecated java.lang.String AUX_DATA = "aux_data";
- field public static final deprecated java.lang.String DATA = "data";
- field public static final deprecated java.lang.String ISPRIMARY = "isprimary";
- field public static final deprecated java.lang.String KIND = "kind";
- field public static final deprecated java.lang.String LABEL = "label";
- field public static final deprecated java.lang.String TYPE = "type";
- field public static final deprecated int TYPE_CUSTOM = 0; // 0x0
- field public static final deprecated int TYPE_HOME = 1; // 0x1
- field public static final deprecated int TYPE_OTHER = 3; // 0x3
- field public static final deprecated int TYPE_WORK = 2; // 0x2
+ @Deprecated public static interface Contacts.ContactMethodsColumns {
+ field @Deprecated public static final String AUX_DATA = "aux_data";
+ field @Deprecated public static final String DATA = "data";
+ field @Deprecated public static final String ISPRIMARY = "isprimary";
+ field @Deprecated public static final String KIND = "kind";
+ field @Deprecated public static final String LABEL = "label";
+ field @Deprecated public static final String TYPE = "type";
+ field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
+ field @Deprecated public static final int TYPE_HOME = 1; // 0x1
+ field @Deprecated public static final int TYPE_OTHER = 3; // 0x3
+ field @Deprecated public static final int TYPE_WORK = 2; // 0x2
}
- public static final deprecated class Contacts.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
- field public static final deprecated java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_extensions";
- field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/contact_extensions";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "person, name ASC";
- field public static final deprecated java.lang.String PERSON_ID = "person";
+ @Deprecated public static final class Contacts.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
+ field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_extensions";
+ field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_extensions";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "person, name ASC";
+ field @Deprecated public static final String PERSON_ID = "person";
}
- public static abstract deprecated interface Contacts.ExtensionsColumns {
- field public static final deprecated java.lang.String NAME = "name";
- field public static final deprecated java.lang.String VALUE = "value";
+ @Deprecated public static interface Contacts.ExtensionsColumns {
+ field @Deprecated public static final String NAME = "name";
+ field @Deprecated public static final String VALUE = "value";
}
- public static final deprecated class Contacts.GroupMembership implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "groupmembership";
- field public static final deprecated java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroupmembership";
- field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroupmembership";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "group_id ASC";
- field public static final deprecated java.lang.String GROUP_ID = "group_id";
- field public static final deprecated java.lang.String GROUP_SYNC_ACCOUNT = "group_sync_account";
- field public static final deprecated java.lang.String GROUP_SYNC_ACCOUNT_TYPE = "group_sync_account_type";
- field public static final deprecated java.lang.String GROUP_SYNC_ID = "group_sync_id";
- field public static final deprecated java.lang.String PERSON_ID = "person";
- field public static final deprecated android.net.Uri RAW_CONTENT_URI;
+ @Deprecated public static final class Contacts.GroupMembership implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
+ field @Deprecated public static final String CONTENT_DIRECTORY = "groupmembership";
+ field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroupmembership";
+ field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroupmembership";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "group_id ASC";
+ field @Deprecated public static final String GROUP_ID = "group_id";
+ field @Deprecated public static final String GROUP_SYNC_ACCOUNT = "group_sync_account";
+ field @Deprecated public static final String GROUP_SYNC_ACCOUNT_TYPE = "group_sync_account_type";
+ field @Deprecated public static final String GROUP_SYNC_ID = "group_sync_id";
+ field @Deprecated public static final String PERSON_ID = "person";
+ field @Deprecated public static final android.net.Uri RAW_CONTENT_URI;
}
- public static final deprecated class Contacts.Groups implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
- field public static final deprecated java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroup";
- field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroup";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "name ASC";
- field public static final deprecated android.net.Uri DELETED_CONTENT_URI;
- field public static final deprecated java.lang.String GROUP_ANDROID_STARRED = "Starred in Android";
- field public static final deprecated java.lang.String GROUP_MY_CONTACTS = "Contacts";
+ @Deprecated public static final class Contacts.Groups implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
+ field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroup";
+ field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroup";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+ field @Deprecated public static final android.net.Uri DELETED_CONTENT_URI;
+ field @Deprecated public static final String GROUP_ANDROID_STARRED = "Starred in Android";
+ field @Deprecated public static final String GROUP_MY_CONTACTS = "Contacts";
}
- public static abstract deprecated interface Contacts.GroupsColumns {
- field public static final deprecated java.lang.String NAME = "name";
- field public static final deprecated java.lang.String NOTES = "notes";
- field public static final deprecated java.lang.String SHOULD_SYNC = "should_sync";
- field public static final deprecated java.lang.String SYSTEM_ID = "system_id";
+ @Deprecated public static interface Contacts.GroupsColumns {
+ field @Deprecated public static final String NAME = "name";
+ field @Deprecated public static final String NOTES = "notes";
+ field @Deprecated public static final String SHOULD_SYNC = "should_sync";
+ field @Deprecated public static final String SYSTEM_ID = "system_id";
}
- public static final deprecated class Contacts.Intents {
- ctor public deprecated Contacts.Intents();
- field public static final deprecated java.lang.String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
- field public static final deprecated java.lang.String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
- field public static final deprecated java.lang.String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
- field public static final deprecated java.lang.String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
- field public static final deprecated java.lang.String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
- field public static final deprecated java.lang.String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
- field public static final deprecated java.lang.String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
+ @Deprecated public static final class Contacts.Intents {
+ ctor @Deprecated public Contacts.Intents();
+ field @Deprecated public static final String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
+ field @Deprecated public static final String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
+ field @Deprecated public static final String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
+ field @Deprecated public static final String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
+ field @Deprecated public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
+ field @Deprecated public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
+ field @Deprecated public static final String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
}
- public static final deprecated class Contacts.Intents.Insert {
- ctor public deprecated Contacts.Intents.Insert();
- field public static final deprecated java.lang.String ACTION = "android.intent.action.INSERT";
- field public static final deprecated java.lang.String COMPANY = "company";
- field public static final deprecated java.lang.String EMAIL = "email";
- field public static final deprecated java.lang.String EMAIL_ISPRIMARY = "email_isprimary";
- field public static final deprecated java.lang.String EMAIL_TYPE = "email_type";
- field public static final deprecated java.lang.String FULL_MODE = "full_mode";
- field public static final deprecated java.lang.String IM_HANDLE = "im_handle";
- field public static final deprecated java.lang.String IM_ISPRIMARY = "im_isprimary";
- field public static final deprecated java.lang.String IM_PROTOCOL = "im_protocol";
- field public static final deprecated java.lang.String JOB_TITLE = "job_title";
- field public static final deprecated java.lang.String NAME = "name";
- field public static final deprecated java.lang.String NOTES = "notes";
- field public static final deprecated java.lang.String PHONE = "phone";
- field public static final deprecated java.lang.String PHONETIC_NAME = "phonetic_name";
- field public static final deprecated java.lang.String PHONE_ISPRIMARY = "phone_isprimary";
- field public static final deprecated java.lang.String PHONE_TYPE = "phone_type";
- field public static final deprecated java.lang.String POSTAL = "postal";
- field public static final deprecated java.lang.String POSTAL_ISPRIMARY = "postal_isprimary";
- field public static final deprecated java.lang.String POSTAL_TYPE = "postal_type";
- field public static final deprecated java.lang.String SECONDARY_EMAIL = "secondary_email";
- field public static final deprecated java.lang.String SECONDARY_EMAIL_TYPE = "secondary_email_type";
- field public static final deprecated java.lang.String SECONDARY_PHONE = "secondary_phone";
- field public static final deprecated java.lang.String SECONDARY_PHONE_TYPE = "secondary_phone_type";
- field public static final deprecated java.lang.String TERTIARY_EMAIL = "tertiary_email";
- field public static final deprecated java.lang.String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
- field public static final deprecated java.lang.String TERTIARY_PHONE = "tertiary_phone";
- field public static final deprecated java.lang.String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
+ @Deprecated public static final class Contacts.Intents.Insert {
+ ctor @Deprecated public Contacts.Intents.Insert();
+ field @Deprecated public static final String ACTION = "android.intent.action.INSERT";
+ field @Deprecated public static final String COMPANY = "company";
+ field @Deprecated public static final String EMAIL = "email";
+ field @Deprecated public static final String EMAIL_ISPRIMARY = "email_isprimary";
+ field @Deprecated public static final String EMAIL_TYPE = "email_type";
+ field @Deprecated public static final String FULL_MODE = "full_mode";
+ field @Deprecated public static final String IM_HANDLE = "im_handle";
+ field @Deprecated public static final String IM_ISPRIMARY = "im_isprimary";
+ field @Deprecated public static final String IM_PROTOCOL = "im_protocol";
+ field @Deprecated public static final String JOB_TITLE = "job_title";
+ field @Deprecated public static final String NAME = "name";
+ field @Deprecated public static final String NOTES = "notes";
+ field @Deprecated public static final String PHONE = "phone";
+ field @Deprecated public static final String PHONETIC_NAME = "phonetic_name";
+ field @Deprecated public static final String PHONE_ISPRIMARY = "phone_isprimary";
+ field @Deprecated public static final String PHONE_TYPE = "phone_type";
+ field @Deprecated public static final String POSTAL = "postal";
+ field @Deprecated public static final String POSTAL_ISPRIMARY = "postal_isprimary";
+ field @Deprecated public static final String POSTAL_TYPE = "postal_type";
+ field @Deprecated public static final String SECONDARY_EMAIL = "secondary_email";
+ field @Deprecated public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type";
+ field @Deprecated public static final String SECONDARY_PHONE = "secondary_phone";
+ field @Deprecated public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type";
+ field @Deprecated public static final String TERTIARY_EMAIL = "tertiary_email";
+ field @Deprecated public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
+ field @Deprecated public static final String TERTIARY_PHONE = "tertiary_phone";
+ field @Deprecated public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
}
- public static final deprecated class Contacts.Intents.UI {
- ctor public deprecated Contacts.Intents.UI();
- field public static final deprecated java.lang.String FILTER_CONTACTS_ACTION = "com.android.contacts.action.FILTER_CONTACTS";
- field public static final deprecated java.lang.String FILTER_TEXT_EXTRA_KEY = "com.android.contacts.extra.FILTER_TEXT";
- field public static final deprecated java.lang.String GROUP_NAME_EXTRA_KEY = "com.android.contacts.extra.GROUP";
- field public static final deprecated java.lang.String LIST_ALL_CONTACTS_ACTION = "com.android.contacts.action.LIST_ALL_CONTACTS";
- field public static final deprecated java.lang.String LIST_CONTACTS_WITH_PHONES_ACTION = "com.android.contacts.action.LIST_CONTACTS_WITH_PHONES";
- field public static final deprecated java.lang.String LIST_DEFAULT = "com.android.contacts.action.LIST_DEFAULT";
- field public static final deprecated java.lang.String LIST_FREQUENT_ACTION = "com.android.contacts.action.LIST_FREQUENT";
- field public static final deprecated java.lang.String LIST_GROUP_ACTION = "com.android.contacts.action.LIST_GROUP";
- field public static final deprecated java.lang.String LIST_STARRED_ACTION = "com.android.contacts.action.LIST_STARRED";
- field public static final deprecated java.lang.String LIST_STREQUENT_ACTION = "com.android.contacts.action.LIST_STREQUENT";
- field public static final deprecated java.lang.String TITLE_EXTRA_KEY = "com.android.contacts.extra.TITLE_EXTRA";
+ @Deprecated public static final class Contacts.Intents.UI {
+ ctor @Deprecated public Contacts.Intents.UI();
+ field @Deprecated public static final String FILTER_CONTACTS_ACTION = "com.android.contacts.action.FILTER_CONTACTS";
+ field @Deprecated public static final String FILTER_TEXT_EXTRA_KEY = "com.android.contacts.extra.FILTER_TEXT";
+ field @Deprecated public static final String GROUP_NAME_EXTRA_KEY = "com.android.contacts.extra.GROUP";
+ field @Deprecated public static final String LIST_ALL_CONTACTS_ACTION = "com.android.contacts.action.LIST_ALL_CONTACTS";
+ field @Deprecated public static final String LIST_CONTACTS_WITH_PHONES_ACTION = "com.android.contacts.action.LIST_CONTACTS_WITH_PHONES";
+ field @Deprecated public static final String LIST_DEFAULT = "com.android.contacts.action.LIST_DEFAULT";
+ field @Deprecated public static final String LIST_FREQUENT_ACTION = "com.android.contacts.action.LIST_FREQUENT";
+ field @Deprecated public static final String LIST_GROUP_ACTION = "com.android.contacts.action.LIST_GROUP";
+ field @Deprecated public static final String LIST_STARRED_ACTION = "com.android.contacts.action.LIST_STARRED";
+ field @Deprecated public static final String LIST_STREQUENT_ACTION = "com.android.contacts.action.LIST_STREQUENT";
+ field @Deprecated public static final String TITLE_EXTRA_KEY = "com.android.contacts.extra.TITLE_EXTRA";
}
- public static abstract deprecated interface Contacts.OrganizationColumns {
- field public static final deprecated java.lang.String COMPANY = "company";
- field public static final deprecated java.lang.String ISPRIMARY = "isprimary";
- field public static final deprecated java.lang.String LABEL = "label";
- field public static final deprecated java.lang.String PERSON_ID = "person";
- field public static final deprecated java.lang.String TITLE = "title";
- field public static final deprecated java.lang.String TYPE = "type";
- field public static final deprecated int TYPE_CUSTOM = 0; // 0x0
- field public static final deprecated int TYPE_OTHER = 2; // 0x2
- field public static final deprecated int TYPE_WORK = 1; // 0x1
+ @Deprecated public static interface Contacts.OrganizationColumns {
+ field @Deprecated public static final String COMPANY = "company";
+ field @Deprecated public static final String ISPRIMARY = "isprimary";
+ field @Deprecated public static final String LABEL = "label";
+ field @Deprecated public static final String PERSON_ID = "person";
+ field @Deprecated public static final String TITLE = "title";
+ field @Deprecated public static final String TYPE = "type";
+ field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
+ field @Deprecated public static final int TYPE_OTHER = 2; // 0x2
+ field @Deprecated public static final int TYPE_WORK = 1; // 0x1
}
- public static final deprecated class Contacts.Organizations implements android.provider.BaseColumns android.provider.Contacts.OrganizationColumns {
- method public static deprecated java.lang.CharSequence getDisplayLabel(android.content.Context, int, java.lang.CharSequence);
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "organizations";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "company, title, isprimary ASC";
+ @Deprecated public static final class Contacts.Organizations implements android.provider.BaseColumns android.provider.Contacts.OrganizationColumns {
+ method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence);
+ field @Deprecated public static final String CONTENT_DIRECTORY = "organizations";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "company, title, isprimary ASC";
}
- public static final deprecated class Contacts.People implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns android.provider.Contacts.PresenceColumns {
- method public static deprecated android.net.Uri addToGroup(android.content.ContentResolver, long, java.lang.String);
- method public static deprecated android.net.Uri addToGroup(android.content.ContentResolver, long, long);
- method public static deprecated android.net.Uri addToMyContactsGroup(android.content.ContentResolver, long);
- method public static deprecated android.net.Uri createPersonInMyContactsGroup(android.content.ContentResolver, android.content.ContentValues);
- method public static deprecated android.graphics.Bitmap loadContactPhoto(android.content.Context, android.net.Uri, int, android.graphics.BitmapFactory.Options);
- method public static deprecated void markAsContacted(android.content.ContentResolver, long);
- method public static deprecated java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri);
- method public static deprecated android.database.Cursor queryGroups(android.content.ContentResolver, long);
- method public static deprecated void setPhotoData(android.content.ContentResolver, android.net.Uri, byte[]);
- field public static final deprecated android.net.Uri CONTENT_FILTER_URI;
- field public static final deprecated java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/person";
- field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/person";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "name ASC";
- field public static final deprecated android.net.Uri DELETED_CONTENT_URI;
- field public static final deprecated java.lang.String PRIMARY_EMAIL_ID = "primary_email";
- field public static final deprecated java.lang.String PRIMARY_ORGANIZATION_ID = "primary_organization";
- field public static final deprecated java.lang.String PRIMARY_PHONE_ID = "primary_phone";
+ @Deprecated public static final class Contacts.People implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns android.provider.Contacts.PresenceColumns {
+ method @Deprecated public static android.net.Uri addToGroup(android.content.ContentResolver, long, String);
+ method @Deprecated public static android.net.Uri addToGroup(android.content.ContentResolver, long, long);
+ method @Deprecated public static android.net.Uri addToMyContactsGroup(android.content.ContentResolver, long);
+ method @Deprecated public static android.net.Uri createPersonInMyContactsGroup(android.content.ContentResolver, android.content.ContentValues);
+ method @Deprecated public static android.graphics.Bitmap loadContactPhoto(android.content.Context, android.net.Uri, int, android.graphics.BitmapFactory.Options);
+ method @Deprecated public static void markAsContacted(android.content.ContentResolver, long);
+ method @Deprecated public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri);
+ method @Deprecated public static android.database.Cursor queryGroups(android.content.ContentResolver, long);
+ method @Deprecated public static void setPhotoData(android.content.ContentResolver, android.net.Uri, byte[]);
+ field @Deprecated public static final android.net.Uri CONTENT_FILTER_URI;
+ field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/person";
+ field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/person";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+ field @Deprecated public static final android.net.Uri DELETED_CONTENT_URI;
+ field @Deprecated public static final String PRIMARY_EMAIL_ID = "primary_email";
+ field @Deprecated public static final String PRIMARY_ORGANIZATION_ID = "primary_organization";
+ field @Deprecated public static final String PRIMARY_PHONE_ID = "primary_phone";
}
- public static final deprecated class Contacts.People.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "contact_methods";
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "data ASC";
+ @Deprecated public static final class Contacts.People.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
+ field @Deprecated public static final String CONTENT_DIRECTORY = "contact_methods";
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "data ASC";
}
- public static deprecated class Contacts.People.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "extensions";
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "name ASC";
- field public static final deprecated java.lang.String PERSON_ID = "person";
+ @Deprecated public static class Contacts.People.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
+ field @Deprecated public static final String CONTENT_DIRECTORY = "extensions";
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+ field @Deprecated public static final String PERSON_ID = "person";
}
- public static final deprecated class Contacts.People.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "phones";
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "number ASC";
+ @Deprecated public static final class Contacts.People.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
+ field @Deprecated public static final String CONTENT_DIRECTORY = "phones";
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "number ASC";
}
- public static abstract deprecated interface Contacts.PeopleColumns {
- field public static final deprecated java.lang.String CUSTOM_RINGTONE = "custom_ringtone";
- field public static final deprecated java.lang.String DISPLAY_NAME = "display_name";
- field public static final deprecated java.lang.String LAST_TIME_CONTACTED = "last_time_contacted";
- field public static final deprecated java.lang.String NAME = "name";
- field public static final deprecated java.lang.String NOTES = "notes";
- field public static final deprecated java.lang.String PHONETIC_NAME = "phonetic_name";
- field public static final deprecated java.lang.String PHOTO_VERSION = "photo_version";
- field public static final deprecated java.lang.String SEND_TO_VOICEMAIL = "send_to_voicemail";
- field public static final deprecated java.lang.String STARRED = "starred";
- field public static final deprecated java.lang.String TIMES_CONTACTED = "times_contacted";
+ @Deprecated public static interface Contacts.PeopleColumns {
+ field @Deprecated public static final String CUSTOM_RINGTONE = "custom_ringtone";
+ field @Deprecated public static final String DISPLAY_NAME = "display_name";
+ field @Deprecated public static final String LAST_TIME_CONTACTED = "last_time_contacted";
+ field @Deprecated public static final String NAME = "name";
+ field @Deprecated public static final String NOTES = "notes";
+ field @Deprecated public static final String PHONETIC_NAME = "phonetic_name";
+ field @Deprecated public static final String PHOTO_VERSION = "photo_version";
+ field @Deprecated public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
+ field @Deprecated public static final String STARRED = "starred";
+ field @Deprecated public static final String TIMES_CONTACTED = "times_contacted";
}
- public static final deprecated class Contacts.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
- method public static deprecated java.lang.CharSequence getDisplayLabel(android.content.Context, int, java.lang.CharSequence, java.lang.CharSequence[]);
- method public static deprecated java.lang.CharSequence getDisplayLabel(android.content.Context, int, java.lang.CharSequence);
- field public static final deprecated android.net.Uri CONTENT_FILTER_URL;
- field public static final deprecated java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone";
- field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/phone";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "name ASC";
- field public static final deprecated java.lang.String PERSON_ID = "person";
+ @Deprecated public static final class Contacts.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
+ method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence, CharSequence[]);
+ method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence);
+ field @Deprecated public static final android.net.Uri CONTENT_FILTER_URL;
+ field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone";
+ field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+ field @Deprecated public static final String PERSON_ID = "person";
}
- public static abstract deprecated interface Contacts.PhonesColumns {
- field public static final deprecated java.lang.String ISPRIMARY = "isprimary";
- field public static final deprecated java.lang.String LABEL = "label";
- field public static final deprecated java.lang.String NUMBER = "number";
- field public static final deprecated java.lang.String NUMBER_KEY = "number_key";
- field public static final deprecated java.lang.String TYPE = "type";
- field public static final deprecated int TYPE_CUSTOM = 0; // 0x0
- field public static final deprecated int TYPE_FAX_HOME = 5; // 0x5
- field public static final deprecated int TYPE_FAX_WORK = 4; // 0x4
- field public static final deprecated int TYPE_HOME = 1; // 0x1
- field public static final deprecated int TYPE_MOBILE = 2; // 0x2
- field public static final deprecated int TYPE_OTHER = 7; // 0x7
- field public static final deprecated int TYPE_PAGER = 6; // 0x6
- field public static final deprecated int TYPE_WORK = 3; // 0x3
+ @Deprecated public static interface Contacts.PhonesColumns {
+ field @Deprecated public static final String ISPRIMARY = "isprimary";
+ field @Deprecated public static final String LABEL = "label";
+ field @Deprecated public static final String NUMBER = "number";
+ field @Deprecated public static final String NUMBER_KEY = "number_key";
+ field @Deprecated public static final String TYPE = "type";
+ field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
+ field @Deprecated public static final int TYPE_FAX_HOME = 5; // 0x5
+ field @Deprecated public static final int TYPE_FAX_WORK = 4; // 0x4
+ field @Deprecated public static final int TYPE_HOME = 1; // 0x1
+ field @Deprecated public static final int TYPE_MOBILE = 2; // 0x2
+ field @Deprecated public static final int TYPE_OTHER = 7; // 0x7
+ field @Deprecated public static final int TYPE_PAGER = 6; // 0x6
+ field @Deprecated public static final int TYPE_WORK = 3; // 0x3
}
- public static final deprecated class Contacts.Photos implements android.provider.BaseColumns android.provider.Contacts.PhotosColumns {
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "photo";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "person ASC";
+ @Deprecated public static final class Contacts.Photos implements android.provider.BaseColumns android.provider.Contacts.PhotosColumns {
+ field @Deprecated public static final String CONTENT_DIRECTORY = "photo";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "person ASC";
}
- public static abstract deprecated interface Contacts.PhotosColumns {
- field public static final deprecated java.lang.String DATA = "data";
- field public static final deprecated java.lang.String DOWNLOAD_REQUIRED = "download_required";
- field public static final deprecated java.lang.String EXISTS_ON_SERVER = "exists_on_server";
- field public static final deprecated java.lang.String LOCAL_VERSION = "local_version";
- field public static final deprecated java.lang.String PERSON_ID = "person";
- field public static final deprecated java.lang.String SYNC_ERROR = "sync_error";
+ @Deprecated public static interface Contacts.PhotosColumns {
+ field @Deprecated public static final String DATA = "data";
+ field @Deprecated public static final String DOWNLOAD_REQUIRED = "download_required";
+ field @Deprecated public static final String EXISTS_ON_SERVER = "exists_on_server";
+ field @Deprecated public static final String LOCAL_VERSION = "local_version";
+ field @Deprecated public static final String PERSON_ID = "person";
+ field @Deprecated public static final String SYNC_ERROR = "sync_error";
}
- public static abstract deprecated interface Contacts.PresenceColumns {
- field public static final int AVAILABLE = 5; // 0x5
- field public static final int AWAY = 2; // 0x2
- field public static final int DO_NOT_DISTURB = 4; // 0x4
- field public static final int IDLE = 3; // 0x3
- field public static final deprecated java.lang.String IM_ACCOUNT = "im_account";
- field public static final deprecated java.lang.String IM_HANDLE = "im_handle";
- field public static final deprecated java.lang.String IM_PROTOCOL = "im_protocol";
- field public static final int INVISIBLE = 1; // 0x1
- field public static final int OFFLINE = 0; // 0x0
- field public static final java.lang.String PRESENCE_CUSTOM_STATUS = "status";
- field public static final java.lang.String PRESENCE_STATUS = "mode";
- field public static final java.lang.String PRIORITY = "priority";
+ @Deprecated public static interface Contacts.PresenceColumns {
+ field @Deprecated public static final int AVAILABLE = 5; // 0x5
+ field @Deprecated public static final int AWAY = 2; // 0x2
+ field @Deprecated public static final int DO_NOT_DISTURB = 4; // 0x4
+ field @Deprecated public static final int IDLE = 3; // 0x3
+ field @Deprecated public static final String IM_ACCOUNT = "im_account";
+ field @Deprecated public static final String IM_HANDLE = "im_handle";
+ field @Deprecated public static final String IM_PROTOCOL = "im_protocol";
+ field @Deprecated public static final int INVISIBLE = 1; // 0x1
+ field @Deprecated public static final int OFFLINE = 0; // 0x0
+ field @Deprecated public static final String PRESENCE_CUSTOM_STATUS = "status";
+ field @Deprecated public static final String PRESENCE_STATUS = "mode";
+ field @Deprecated public static final String PRIORITY = "priority";
}
- public static final deprecated class Contacts.Settings implements android.provider.BaseColumns android.provider.Contacts.SettingsColumns {
- method public static deprecated java.lang.String getSetting(android.content.ContentResolver, java.lang.String, java.lang.String);
- method public static deprecated void setSetting(android.content.ContentResolver, java.lang.String, java.lang.String, java.lang.String);
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "settings";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DEFAULT_SORT_ORDER = "key ASC";
- field public static final deprecated java.lang.String SYNC_EVERYTHING = "syncEverything";
+ @Deprecated public static final class Contacts.Settings implements android.provider.BaseColumns android.provider.Contacts.SettingsColumns {
+ method @Deprecated public static String getSetting(android.content.ContentResolver, String, String);
+ method @Deprecated public static void setSetting(android.content.ContentResolver, String, String, String);
+ field @Deprecated public static final String CONTENT_DIRECTORY = "settings";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String DEFAULT_SORT_ORDER = "key ASC";
+ field @Deprecated public static final String SYNC_EVERYTHING = "syncEverything";
}
- public static abstract deprecated interface Contacts.SettingsColumns {
- field public static final deprecated java.lang.String KEY = "key";
- field public static final deprecated java.lang.String VALUE = "value";
- field public static final deprecated java.lang.String _SYNC_ACCOUNT = "_sync_account";
- field public static final deprecated java.lang.String _SYNC_ACCOUNT_TYPE = "_sync_account_type";
+ @Deprecated public static interface Contacts.SettingsColumns {
+ field @Deprecated public static final String KEY = "key";
+ field @Deprecated public static final String VALUE = "value";
+ field @Deprecated public static final String _SYNC_ACCOUNT = "_sync_account";
+ field @Deprecated public static final String _SYNC_ACCOUNT_TYPE = "_sync_account_type";
}
public final class ContactsContract {
ctor public ContactsContract();
method public static boolean isProfileId(long);
- field public static final java.lang.String AUTHORITY = "com.android.contacts";
+ field public static final String AUTHORITY = "com.android.contacts";
field public static final android.net.Uri AUTHORITY_URI;
- field public static final java.lang.String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
- field public static final java.lang.String DEFERRED_SNIPPETING = "deferred_snippeting";
- field public static final java.lang.String DEFERRED_SNIPPETING_QUERY = "deferred_snippeting_query";
- field public static final java.lang.String DIRECTORY_PARAM_KEY = "directory";
- field public static final java.lang.String LIMIT_PARAM_KEY = "limit";
- field public static final java.lang.String PRIMARY_ACCOUNT_NAME = "name_for_primary_account";
- field public static final java.lang.String PRIMARY_ACCOUNT_TYPE = "type_for_primary_account";
- field public static final java.lang.String REMOVE_DUPLICATE_ENTRIES = "remove_duplicate_entries";
- field public static final java.lang.String STREQUENT_PHONE_ONLY = "strequent_phone_only";
+ field public static final String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
+ field public static final String DEFERRED_SNIPPETING = "deferred_snippeting";
+ field public static final String DEFERRED_SNIPPETING_QUERY = "deferred_snippeting_query";
+ field public static final String DIRECTORY_PARAM_KEY = "directory";
+ field public static final String LIMIT_PARAM_KEY = "limit";
+ field public static final String PRIMARY_ACCOUNT_NAME = "name_for_primary_account";
+ field public static final String PRIMARY_ACCOUNT_TYPE = "type_for_primary_account";
+ field public static final String REMOVE_DUPLICATE_ENTRIES = "remove_duplicate_entries";
+ field public static final String STREQUENT_PHONE_ONLY = "strequent_phone_only";
}
public static final class ContactsContract.AggregationExceptions implements android.provider.BaseColumns {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/aggregation_exception";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/aggregation_exception";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/aggregation_exception";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/aggregation_exception";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String RAW_CONTACT_ID1 = "raw_contact_id1";
- field public static final java.lang.String RAW_CONTACT_ID2 = "raw_contact_id2";
- field public static final java.lang.String TYPE = "type";
+ field public static final String RAW_CONTACT_ID1 = "raw_contact_id1";
+ field public static final String RAW_CONTACT_ID2 = "raw_contact_id2";
+ field public static final String TYPE = "type";
field public static final int TYPE_AUTOMATIC = 0; // 0x0
field public static final int TYPE_KEEP_SEPARATE = 2; // 0x2
field public static final int TYPE_KEEP_TOGETHER = 1; // 0x1
}
- protected static abstract interface ContactsContract.BaseSyncColumns {
- field public static final java.lang.String SYNC1 = "sync1";
- field public static final java.lang.String SYNC2 = "sync2";
- field public static final java.lang.String SYNC3 = "sync3";
- field public static final java.lang.String SYNC4 = "sync4";
+ protected static interface ContactsContract.BaseSyncColumns {
+ field public static final String SYNC1 = "sync1";
+ field public static final String SYNC2 = "sync2";
+ field public static final String SYNC3 = "sync3";
+ field public static final String SYNC4 = "sync4";
}
public static final class ContactsContract.CommonDataKinds {
}
- public static abstract interface ContactsContract.CommonDataKinds.BaseTypes {
+ public static interface ContactsContract.CommonDataKinds.BaseTypes {
field public static final int TYPE_CUSTOM = 0; // 0x0
}
@@ -36979,42 +37118,42 @@
field public static final android.net.Uri CONTENT_FILTER_URI;
field public static final android.net.Uri CONTENT_URI;
field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
}
- protected static abstract interface ContactsContract.CommonDataKinds.CommonColumns implements android.provider.ContactsContract.CommonDataKinds.BaseTypes {
- field public static final java.lang.String DATA = "data1";
- field public static final java.lang.String LABEL = "data3";
- field public static final java.lang.String TYPE = "data2";
+ protected static interface ContactsContract.CommonDataKinds.CommonColumns extends android.provider.ContactsContract.CommonDataKinds.BaseTypes {
+ field public static final String DATA = "data1";
+ field public static final String LABEL = "data3";
+ field public static final String TYPE = "data2";
}
public static final class ContactsContract.CommonDataKinds.Contactables implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
ctor public ContactsContract.CommonDataKinds.Contactables();
field public static final android.net.Uri CONTENT_FILTER_URI;
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
}
public static final class ContactsContract.CommonDataKinds.Email implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- method public static java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence);
+ method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
method public static int getTypeLabelResource(int);
- field public static final java.lang.String ADDRESS = "data1";
+ field public static final String ADDRESS = "data1";
field public static final android.net.Uri CONTENT_FILTER_URI;
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/email_v2";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/email_v2";
field public static final android.net.Uri CONTENT_LOOKUP_URI;
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/email_v2";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/email_v2";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DISPLAY_NAME = "data4";
+ field public static final String DISPLAY_NAME = "data4";
field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
field public static final android.net.Uri ENTERPRISE_CONTENT_LOOKUP_URI;
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
field public static final int TYPE_HOME = 1; // 0x1
field public static final int TYPE_MOBILE = 4; // 0x4
field public static final int TYPE_OTHER = 3; // 0x3
@@ -37022,47 +37161,47 @@
}
public static final class ContactsContract.CommonDataKinds.Event implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- method public static java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence);
- method public static int getTypeResource(java.lang.Integer);
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_event";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String START_DATE = "data1";
+ method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
+ method public static int getTypeResource(Integer);
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_event";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String START_DATE = "data1";
field public static final int TYPE_ANNIVERSARY = 1; // 0x1
field public static final int TYPE_BIRTHDAY = 3; // 0x3
field public static final int TYPE_OTHER = 2; // 0x2
}
public static final class ContactsContract.CommonDataKinds.GroupMembership implements android.provider.ContactsContract.DataColumnsWithJoins {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group_membership";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String GROUP_ROW_ID = "data1";
- field public static final java.lang.String GROUP_SOURCE_ID = "group_sourceid";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group_membership";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String GROUP_ROW_ID = "data1";
+ field public static final String GROUP_SOURCE_ID = "group_sourceid";
}
public static final class ContactsContract.CommonDataKinds.Identity implements android.provider.ContactsContract.DataColumnsWithJoins {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/identity";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String IDENTITY = "data1";
- field public static final java.lang.String NAMESPACE = "data2";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/identity";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String IDENTITY = "data1";
+ field public static final String NAMESPACE = "data2";
}
public static final class ContactsContract.CommonDataKinds.Im implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- method public static java.lang.CharSequence getProtocolLabel(android.content.res.Resources, int, java.lang.CharSequence);
+ method public static CharSequence getProtocolLabel(android.content.res.Resources, int, CharSequence);
method public static int getProtocolLabelResource(int);
- method public static java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence);
+ method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
method public static int getTypeLabelResource(int);
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/im";
- field public static final java.lang.String CUSTOM_PROTOCOL = "data6";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String PROTOCOL = "data5";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/im";
+ field public static final String CUSTOM_PROTOCOL = "data6";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String PROTOCOL = "data5";
field public static final int PROTOCOL_AIM = 0; // 0x0
field public static final int PROTOCOL_CUSTOM = -1; // 0xffffffff
field public static final int PROTOCOL_GOOGLE_TALK = 5; // 0x5
@@ -37079,61 +37218,61 @@
}
public static final class ContactsContract.CommonDataKinds.Nickname implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/nickname";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String NAME = "data1";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/nickname";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String NAME = "data1";
field public static final int TYPE_DEFAULT = 1; // 0x1
field public static final int TYPE_INITIALS = 5; // 0x5
field public static final int TYPE_MAIDEN_NAME = 3; // 0x3
- field public static final deprecated int TYPE_MAINDEN_NAME = 3; // 0x3
+ field @Deprecated public static final int TYPE_MAINDEN_NAME = 3; // 0x3
field public static final int TYPE_OTHER_NAME = 2; // 0x2
field public static final int TYPE_SHORT_NAME = 4; // 0x4
}
public static final class ContactsContract.CommonDataKinds.Note implements android.provider.ContactsContract.DataColumnsWithJoins {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/note";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String NOTE = "data1";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/note";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String NOTE = "data1";
}
public static final class ContactsContract.CommonDataKinds.Organization implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- method public static java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence);
+ method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
method public static int getTypeLabelResource(int);
- field public static final java.lang.String COMPANY = "data1";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/organization";
- field public static final java.lang.String DEPARTMENT = "data5";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String JOB_DESCRIPTION = "data6";
- field public static final java.lang.String OFFICE_LOCATION = "data9";
- field public static final java.lang.String PHONETIC_NAME = "data8";
- field public static final java.lang.String PHONETIC_NAME_STYLE = "data10";
- field public static final java.lang.String SYMBOL = "data7";
- field public static final java.lang.String TITLE = "data4";
+ field public static final String COMPANY = "data1";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/organization";
+ field public static final String DEPARTMENT = "data5";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String JOB_DESCRIPTION = "data6";
+ field public static final String OFFICE_LOCATION = "data9";
+ field public static final String PHONETIC_NAME = "data8";
+ field public static final String PHONETIC_NAME_STYLE = "data10";
+ field public static final String SYMBOL = "data7";
+ field public static final String TITLE = "data4";
field public static final int TYPE_OTHER = 2; // 0x2
field public static final int TYPE_WORK = 1; // 0x1
}
public static final class ContactsContract.CommonDataKinds.Phone implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- method public static java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence);
+ method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
method public static int getTypeLabelResource(int);
field public static final android.net.Uri CONTENT_FILTER_URI;
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone_v2";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/phone_v2";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone_v2";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone_v2";
field public static final android.net.Uri CONTENT_URI;
field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String NORMALIZED_NUMBER = "data4";
- field public static final java.lang.String NUMBER = "data1";
- field public static final java.lang.String SEARCH_DISPLAY_NAME_KEY = "search_display_name";
- field public static final java.lang.String SEARCH_PHONE_NUMBER_KEY = "search_phone_number";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String NORMALIZED_NUMBER = "data4";
+ field public static final String NUMBER = "data1";
+ field public static final String SEARCH_DISPLAY_NAME_KEY = "search_display_name";
+ field public static final String SEARCH_PHONE_NUMBER_KEY = "search_phone_number";
field public static final int TYPE_ASSISTANT = 19; // 0x13
field public static final int TYPE_CALLBACK = 8; // 0x8
field public static final int TYPE_CAR = 9; // 0x9
@@ -37157,22 +37296,22 @@
}
public static final class ContactsContract.CommonDataKinds.Photo implements android.provider.ContactsContract.DataColumnsWithJoins {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/photo";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String PHOTO = "data15";
- field public static final java.lang.String PHOTO_FILE_ID = "data14";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/photo";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String PHOTO = "data15";
+ field public static final String PHOTO_FILE_ID = "data14";
}
public static final class ContactsContract.CommonDataKinds.Relation implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- method public static java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence);
+ method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
method public static int getTypeLabelResource(int);
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/relation";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String NAME = "data1";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/relation";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String NAME = "data1";
field public static final int TYPE_ASSISTANT = 1; // 0x1
field public static final int TYPE_BROTHER = 2; // 0x2
field public static final int TYPE_CHILD = 3; // 0x3
@@ -37190,63 +37329,63 @@
}
public static final class ContactsContract.CommonDataKinds.SipAddress implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- method public static java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence);
+ method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
method public static int getTypeLabelResource(int);
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/sip_address";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String SIP_ADDRESS = "data1";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/sip_address";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String SIP_ADDRESS = "data1";
field public static final int TYPE_HOME = 1; // 0x1
field public static final int TYPE_OTHER = 3; // 0x3
field public static final int TYPE_WORK = 2; // 0x2
}
public static final class ContactsContract.CommonDataKinds.StructuredName implements android.provider.ContactsContract.DataColumnsWithJoins {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/name";
- field public static final java.lang.String DISPLAY_NAME = "data1";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String FAMILY_NAME = "data3";
- field public static final java.lang.String FULL_NAME_STYLE = "data10";
- field public static final java.lang.String GIVEN_NAME = "data2";
- field public static final java.lang.String MIDDLE_NAME = "data5";
- field public static final java.lang.String PHONETIC_FAMILY_NAME = "data9";
- field public static final java.lang.String PHONETIC_GIVEN_NAME = "data7";
- field public static final java.lang.String PHONETIC_MIDDLE_NAME = "data8";
- field public static final java.lang.String PHONETIC_NAME_STYLE = "data11";
- field public static final java.lang.String PREFIX = "data4";
- field public static final java.lang.String SUFFIX = "data6";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/name";
+ field public static final String DISPLAY_NAME = "data1";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String FAMILY_NAME = "data3";
+ field public static final String FULL_NAME_STYLE = "data10";
+ field public static final String GIVEN_NAME = "data2";
+ field public static final String MIDDLE_NAME = "data5";
+ field public static final String PHONETIC_FAMILY_NAME = "data9";
+ field public static final String PHONETIC_GIVEN_NAME = "data7";
+ field public static final String PHONETIC_MIDDLE_NAME = "data8";
+ field public static final String PHONETIC_NAME_STYLE = "data11";
+ field public static final String PREFIX = "data4";
+ field public static final String SUFFIX = "data6";
}
public static final class ContactsContract.CommonDataKinds.StructuredPostal implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- method public static java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence);
+ method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
method public static int getTypeLabelResource(int);
- field public static final java.lang.String CITY = "data7";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/postal-address_v2";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/postal-address_v2";
+ field public static final String CITY = "data7";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/postal-address_v2";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/postal-address_v2";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String COUNTRY = "data10";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String FORMATTED_ADDRESS = "data1";
- field public static final java.lang.String NEIGHBORHOOD = "data6";
- field public static final java.lang.String POBOX = "data5";
- field public static final java.lang.String POSTCODE = "data9";
- field public static final java.lang.String REGION = "data8";
- field public static final java.lang.String STREET = "data4";
+ field public static final String COUNTRY = "data10";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String FORMATTED_ADDRESS = "data1";
+ field public static final String NEIGHBORHOOD = "data6";
+ field public static final String POBOX = "data5";
+ field public static final String POSTCODE = "data9";
+ field public static final String REGION = "data8";
+ field public static final String STREET = "data4";
field public static final int TYPE_HOME = 1; // 0x1
field public static final int TYPE_OTHER = 3; // 0x3
field public static final int TYPE_WORK = 2; // 0x2
}
public static final class ContactsContract.CommonDataKinds.Website implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/website";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/website";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
field public static final int TYPE_BLOG = 2; // 0x2
field public static final int TYPE_FTP = 6; // 0x6
field public static final int TYPE_HOME = 4; // 0x4
@@ -37254,168 +37393,168 @@
field public static final int TYPE_OTHER = 7; // 0x7
field public static final int TYPE_PROFILE = 3; // 0x3
field public static final int TYPE_WORK = 5; // 0x5
- field public static final java.lang.String URL = "data1";
+ field public static final String URL = "data1";
}
- protected static abstract interface ContactsContract.ContactNameColumns {
- field public static final java.lang.String DISPLAY_NAME_ALTERNATIVE = "display_name_alt";
- field public static final java.lang.String DISPLAY_NAME_PRIMARY = "display_name";
- field public static final java.lang.String DISPLAY_NAME_SOURCE = "display_name_source";
- field public static final java.lang.String PHONETIC_NAME = "phonetic_name";
- field public static final java.lang.String PHONETIC_NAME_STYLE = "phonetic_name_style";
- field public static final java.lang.String SORT_KEY_ALTERNATIVE = "sort_key_alt";
- field public static final java.lang.String SORT_KEY_PRIMARY = "sort_key";
+ protected static interface ContactsContract.ContactNameColumns {
+ field public static final String DISPLAY_NAME_ALTERNATIVE = "display_name_alt";
+ field public static final String DISPLAY_NAME_PRIMARY = "display_name";
+ field public static final String DISPLAY_NAME_SOURCE = "display_name_source";
+ field public static final String PHONETIC_NAME = "phonetic_name";
+ field public static final String PHONETIC_NAME_STYLE = "phonetic_name_style";
+ field public static final String SORT_KEY_ALTERNATIVE = "sort_key_alt";
+ field public static final String SORT_KEY_PRIMARY = "sort_key";
}
- protected static abstract interface ContactsContract.ContactOptionsColumns {
- field public static final java.lang.String CUSTOM_RINGTONE = "custom_ringtone";
- field public static final deprecated java.lang.String LAST_TIME_CONTACTED = "last_time_contacted";
- field public static final java.lang.String PINNED = "pinned";
- field public static final java.lang.String SEND_TO_VOICEMAIL = "send_to_voicemail";
- field public static final java.lang.String STARRED = "starred";
- field public static final deprecated java.lang.String TIMES_CONTACTED = "times_contacted";
+ protected static interface ContactsContract.ContactOptionsColumns {
+ field public static final String CUSTOM_RINGTONE = "custom_ringtone";
+ field @Deprecated public static final String LAST_TIME_CONTACTED = "last_time_contacted";
+ field public static final String PINNED = "pinned";
+ field public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
+ field public static final String STARRED = "starred";
+ field @Deprecated public static final String TIMES_CONTACTED = "times_contacted";
}
- protected static abstract interface ContactsContract.ContactStatusColumns {
- field public static final java.lang.String CONTACT_CHAT_CAPABILITY = "contact_chat_capability";
- field public static final java.lang.String CONTACT_PRESENCE = "contact_presence";
- field public static final java.lang.String CONTACT_STATUS = "contact_status";
- field public static final java.lang.String CONTACT_STATUS_ICON = "contact_status_icon";
- field public static final java.lang.String CONTACT_STATUS_LABEL = "contact_status_label";
- field public static final java.lang.String CONTACT_STATUS_RES_PACKAGE = "contact_status_res_package";
- field public static final java.lang.String CONTACT_STATUS_TIMESTAMP = "contact_status_ts";
+ protected static interface ContactsContract.ContactStatusColumns {
+ field public static final String CONTACT_CHAT_CAPABILITY = "contact_chat_capability";
+ field public static final String CONTACT_PRESENCE = "contact_presence";
+ field public static final String CONTACT_STATUS = "contact_status";
+ field public static final String CONTACT_STATUS_ICON = "contact_status_icon";
+ field public static final String CONTACT_STATUS_LABEL = "contact_status_label";
+ field public static final String CONTACT_STATUS_RES_PACKAGE = "contact_status_res_package";
+ field public static final String CONTACT_STATUS_TIMESTAMP = "contact_status_ts";
}
public static class ContactsContract.Contacts implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
method public static android.net.Uri getLookupUri(android.content.ContentResolver, android.net.Uri);
- method public static android.net.Uri getLookupUri(long, java.lang.String);
+ method public static android.net.Uri getLookupUri(long, String);
method public static boolean isEnterpriseContactId(long);
method public static android.net.Uri lookupContact(android.content.ContentResolver, android.net.Uri);
- method public static deprecated void markAsContacted(android.content.ContentResolver, long);
+ method @Deprecated public static void markAsContacted(android.content.ContentResolver, long);
method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri, boolean);
method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri);
field public static final android.net.Uri CONTENT_FILTER_URI;
- field public static final deprecated android.net.Uri CONTENT_FREQUENT_URI;
+ field @Deprecated public static final android.net.Uri CONTENT_FREQUENT_URI;
field public static final android.net.Uri CONTENT_GROUP_URI;
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact";
field public static final android.net.Uri CONTENT_LOOKUP_URI;
field public static final android.net.Uri CONTENT_MULTI_VCARD_URI;
field public static final android.net.Uri CONTENT_STREQUENT_FILTER_URI;
field public static final android.net.Uri CONTENT_STREQUENT_URI;
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/contact";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String CONTENT_VCARD_TYPE = "text/x-vcard";
+ field public static final String CONTENT_VCARD_TYPE = "text/x-vcard";
field public static final android.net.Uri CONTENT_VCARD_URI;
field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String QUERY_PARAMETER_VCARD_NO_PHOTO = "no_photo";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String QUERY_PARAMETER_VCARD_NO_PHOTO = "no_photo";
}
public static final class ContactsContract.Contacts.AggregationSuggestions implements android.provider.BaseColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
- field public static final java.lang.String CONTENT_DIRECTORY = "suggestions";
+ field public static final String CONTENT_DIRECTORY = "suggestions";
}
public static final class ContactsContract.Contacts.AggregationSuggestions.Builder {
ctor public ContactsContract.Contacts.AggregationSuggestions.Builder();
- method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder addNameParameter(java.lang.String);
+ method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder addNameParameter(String);
method public android.net.Uri build();
method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder setContactId(long);
method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder setLimit(int);
}
public static final class ContactsContract.Contacts.Data implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
- field public static final java.lang.String CONTENT_DIRECTORY = "data";
+ field public static final String CONTENT_DIRECTORY = "data";
}
public static final class ContactsContract.Contacts.Entity implements android.provider.BaseColumns android.provider.ContactsContract.BaseSyncColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns android.provider.ContactsContract.SyncColumns {
- field public static final java.lang.String CONTENT_DIRECTORY = "entities";
- field public static final java.lang.String DATA_ID = "data_id";
- field public static final java.lang.String RAW_CONTACT_ID = "raw_contact_id";
+ field public static final String CONTENT_DIRECTORY = "entities";
+ field public static final String DATA_ID = "data_id";
+ field public static final String RAW_CONTACT_ID = "raw_contact_id";
}
public static final class ContactsContract.Contacts.Photo implements android.provider.BaseColumns android.provider.ContactsContract.DataColumnsWithJoins {
- field public static final java.lang.String CONTENT_DIRECTORY = "photo";
- field public static final java.lang.String DISPLAY_PHOTO = "display_photo";
- field public static final java.lang.String PHOTO = "data15";
- field public static final java.lang.String PHOTO_FILE_ID = "data14";
+ field public static final String CONTENT_DIRECTORY = "photo";
+ field public static final String DISPLAY_PHOTO = "display_photo";
+ field public static final String PHOTO = "data15";
+ field public static final String PHOTO_FILE_ID = "data14";
}
- protected static abstract interface ContactsContract.ContactsColumns {
- field public static final java.lang.String CONTACT_LAST_UPDATED_TIMESTAMP = "contact_last_updated_timestamp";
- field public static final java.lang.String DISPLAY_NAME = "display_name";
- field public static final java.lang.String HAS_PHONE_NUMBER = "has_phone_number";
- field public static final java.lang.String IN_DEFAULT_DIRECTORY = "in_default_directory";
- field public static final java.lang.String IN_VISIBLE_GROUP = "in_visible_group";
- field public static final java.lang.String IS_USER_PROFILE = "is_user_profile";
- field public static final java.lang.String LOOKUP_KEY = "lookup";
- field public static final java.lang.String NAME_RAW_CONTACT_ID = "name_raw_contact_id";
- field public static final java.lang.String PHOTO_FILE_ID = "photo_file_id";
- field public static final java.lang.String PHOTO_ID = "photo_id";
- field public static final java.lang.String PHOTO_THUMBNAIL_URI = "photo_thumb_uri";
- field public static final java.lang.String PHOTO_URI = "photo_uri";
+ protected static interface ContactsContract.ContactsColumns {
+ field public static final String CONTACT_LAST_UPDATED_TIMESTAMP = "contact_last_updated_timestamp";
+ field public static final String DISPLAY_NAME = "display_name";
+ field public static final String HAS_PHONE_NUMBER = "has_phone_number";
+ field public static final String IN_DEFAULT_DIRECTORY = "in_default_directory";
+ field public static final String IN_VISIBLE_GROUP = "in_visible_group";
+ field public static final String IS_USER_PROFILE = "is_user_profile";
+ field public static final String LOOKUP_KEY = "lookup";
+ field public static final String NAME_RAW_CONTACT_ID = "name_raw_contact_id";
+ field public static final String PHOTO_FILE_ID = "photo_file_id";
+ field public static final String PHOTO_ID = "photo_id";
+ field public static final String PHOTO_THUMBNAIL_URI = "photo_thumb_uri";
+ field public static final String PHOTO_URI = "photo_uri";
}
public static final class ContactsContract.Data implements android.provider.ContactsContract.DataColumnsWithJoins {
method public static android.net.Uri getContactLookupUri(android.content.ContentResolver, android.net.Uri);
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/data";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/data";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
- field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
- field public static final java.lang.String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+ field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+ field public static final String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
}
- protected static abstract interface ContactsContract.DataColumns {
- field public static final java.lang.String CARRIER_PRESENCE = "carrier_presence";
+ protected static interface ContactsContract.DataColumns {
+ field public static final String CARRIER_PRESENCE = "carrier_presence";
field public static final int CARRIER_PRESENCE_VT_CAPABLE = 1; // 0x1
- field public static final java.lang.String DATA1 = "data1";
- field public static final java.lang.String DATA10 = "data10";
- field public static final java.lang.String DATA11 = "data11";
- field public static final java.lang.String DATA12 = "data12";
- field public static final java.lang.String DATA13 = "data13";
- field public static final java.lang.String DATA14 = "data14";
- field public static final java.lang.String DATA15 = "data15";
- field public static final java.lang.String DATA2 = "data2";
- field public static final java.lang.String DATA3 = "data3";
- field public static final java.lang.String DATA4 = "data4";
- field public static final java.lang.String DATA5 = "data5";
- field public static final java.lang.String DATA6 = "data6";
- field public static final java.lang.String DATA7 = "data7";
- field public static final java.lang.String DATA8 = "data8";
- field public static final java.lang.String DATA9 = "data9";
- field public static final java.lang.String DATA_VERSION = "data_version";
- field public static final java.lang.String IS_PRIMARY = "is_primary";
- field public static final java.lang.String IS_READ_ONLY = "is_read_only";
- field public static final java.lang.String IS_SUPER_PRIMARY = "is_super_primary";
- field public static final java.lang.String MIMETYPE = "mimetype";
- field public static final java.lang.String PREFERRED_PHONE_ACCOUNT_COMPONENT_NAME = "preferred_phone_account_component_name";
- field public static final java.lang.String PREFERRED_PHONE_ACCOUNT_ID = "preferred_phone_account_id";
- field public static final java.lang.String RAW_CONTACT_ID = "raw_contact_id";
- field public static final java.lang.String RES_PACKAGE = "res_package";
- field public static final java.lang.String SYNC1 = "data_sync1";
- field public static final java.lang.String SYNC2 = "data_sync2";
- field public static final java.lang.String SYNC3 = "data_sync3";
- field public static final java.lang.String SYNC4 = "data_sync4";
+ field public static final String DATA1 = "data1";
+ field public static final String DATA10 = "data10";
+ field public static final String DATA11 = "data11";
+ field public static final String DATA12 = "data12";
+ field public static final String DATA13 = "data13";
+ field public static final String DATA14 = "data14";
+ field public static final String DATA15 = "data15";
+ field public static final String DATA2 = "data2";
+ field public static final String DATA3 = "data3";
+ field public static final String DATA4 = "data4";
+ field public static final String DATA5 = "data5";
+ field public static final String DATA6 = "data6";
+ field public static final String DATA7 = "data7";
+ field public static final String DATA8 = "data8";
+ field public static final String DATA9 = "data9";
+ field public static final String DATA_VERSION = "data_version";
+ field public static final String IS_PRIMARY = "is_primary";
+ field public static final String IS_READ_ONLY = "is_read_only";
+ field public static final String IS_SUPER_PRIMARY = "is_super_primary";
+ field public static final String MIMETYPE = "mimetype";
+ field public static final String PREFERRED_PHONE_ACCOUNT_COMPONENT_NAME = "preferred_phone_account_component_name";
+ field public static final String PREFERRED_PHONE_ACCOUNT_ID = "preferred_phone_account_id";
+ field public static final String RAW_CONTACT_ID = "raw_contact_id";
+ field public static final String RES_PACKAGE = "res_package";
+ field public static final String SYNC1 = "data_sync1";
+ field public static final String SYNC2 = "data_sync2";
+ field public static final String SYNC3 = "data_sync3";
+ field public static final String SYNC4 = "data_sync4";
}
- protected static abstract interface ContactsContract.DataColumnsWithJoins implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns {
+ protected static interface ContactsContract.DataColumnsWithJoins extends android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns {
}
- public static final deprecated class ContactsContract.DataUsageFeedback {
- ctor public ContactsContract.DataUsageFeedback();
- field public static final android.net.Uri DELETE_USAGE_URI;
- field public static final android.net.Uri FEEDBACK_URI;
- field public static final java.lang.String USAGE_TYPE = "type";
- field public static final java.lang.String USAGE_TYPE_CALL = "call";
- field public static final java.lang.String USAGE_TYPE_LONG_TEXT = "long_text";
- field public static final java.lang.String USAGE_TYPE_SHORT_TEXT = "short_text";
+ @Deprecated public static final class ContactsContract.DataUsageFeedback {
+ ctor @Deprecated public ContactsContract.DataUsageFeedback();
+ field @Deprecated public static final android.net.Uri DELETE_USAGE_URI;
+ field @Deprecated public static final android.net.Uri FEEDBACK_URI;
+ field @Deprecated public static final String USAGE_TYPE = "type";
+ field @Deprecated public static final String USAGE_TYPE_CALL = "call";
+ field @Deprecated public static final String USAGE_TYPE_LONG_TEXT = "long_text";
+ field @Deprecated public static final String USAGE_TYPE_SHORT_TEXT = "short_text";
}
- protected static abstract interface ContactsContract.DataUsageStatColumns {
- field public static final deprecated java.lang.String LAST_TIME_USED = "last_time_used";
- field public static final deprecated java.lang.String TIMES_USED = "times_used";
+ protected static interface ContactsContract.DataUsageStatColumns {
+ field @Deprecated public static final String LAST_TIME_USED = "last_time_used";
+ field @Deprecated public static final String TIMES_USED = "times_used";
}
public static final class ContactsContract.DeletedContacts implements android.provider.ContactsContract.DeletedContactsColumns {
@@ -37423,46 +37562,46 @@
field public static final long DAYS_KEPT_MILLISECONDS = 2592000000L; // 0x9a7ec800L
}
- protected static abstract interface ContactsContract.DeletedContactsColumns {
- field public static final java.lang.String CONTACT_DELETED_TIMESTAMP = "contact_deleted_timestamp";
- field public static final java.lang.String CONTACT_ID = "contact_id";
+ protected static interface ContactsContract.DeletedContactsColumns {
+ field public static final String CONTACT_DELETED_TIMESTAMP = "contact_deleted_timestamp";
+ field public static final String CONTACT_ID = "contact_id";
}
public static final class ContactsContract.Directory implements android.provider.BaseColumns {
method public static boolean isEnterpriseDirectoryId(long);
method public static boolean isRemoteDirectoryId(long);
method public static void notifyDirectoryChange(android.content.ContentResolver);
- field public static final java.lang.String ACCOUNT_NAME = "accountName";
- field public static final java.lang.String ACCOUNT_TYPE = "accountType";
- field public static final java.lang.String CALLER_PACKAGE_PARAM_KEY = "callerPackage";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_directory";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/contact_directories";
+ field public static final String ACCOUNT_NAME = "accountName";
+ field public static final String ACCOUNT_TYPE = "accountType";
+ field public static final String CALLER_PACKAGE_PARAM_KEY = "callerPackage";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_directory";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_directories";
field public static final android.net.Uri CONTENT_URI;
field public static final long DEFAULT = 0L; // 0x0L
- field public static final java.lang.String DIRECTORY_AUTHORITY = "authority";
- field public static final java.lang.String DISPLAY_NAME = "displayName";
+ field public static final String DIRECTORY_AUTHORITY = "authority";
+ field public static final String DISPLAY_NAME = "displayName";
field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
field public static final long ENTERPRISE_DEFAULT = 1000000000L; // 0x3b9aca00L
field public static final long ENTERPRISE_LOCAL_INVISIBLE = 1000000001L; // 0x3b9aca01L
- field public static final java.lang.String EXPORT_SUPPORT = "exportSupport";
+ field public static final String EXPORT_SUPPORT = "exportSupport";
field public static final int EXPORT_SUPPORT_ANY_ACCOUNT = 2; // 0x2
field public static final int EXPORT_SUPPORT_NONE = 0; // 0x0
field public static final int EXPORT_SUPPORT_SAME_ACCOUNT_ONLY = 1; // 0x1
field public static final long LOCAL_INVISIBLE = 1L; // 0x1L
- field public static final java.lang.String PACKAGE_NAME = "packageName";
- field public static final java.lang.String PHOTO_SUPPORT = "photoSupport";
+ field public static final String PACKAGE_NAME = "packageName";
+ field public static final String PHOTO_SUPPORT = "photoSupport";
field public static final int PHOTO_SUPPORT_FULL = 3; // 0x3
field public static final int PHOTO_SUPPORT_FULL_SIZE_ONLY = 2; // 0x2
field public static final int PHOTO_SUPPORT_NONE = 0; // 0x0
field public static final int PHOTO_SUPPORT_THUMBNAIL_ONLY = 1; // 0x1
- field public static final java.lang.String SHORTCUT_SUPPORT = "shortcutSupport";
+ field public static final String SHORTCUT_SUPPORT = "shortcutSupport";
field public static final int SHORTCUT_SUPPORT_DATA_ITEMS_ONLY = 1; // 0x1
field public static final int SHORTCUT_SUPPORT_FULL = 2; // 0x2
field public static final int SHORTCUT_SUPPORT_NONE = 0; // 0x0
- field public static final java.lang.String TYPE_RESOURCE_ID = "typeResourceId";
+ field public static final String TYPE_RESOURCE_ID = "typeResourceId";
}
- public static abstract interface ContactsContract.DisplayNameSources {
+ public static interface ContactsContract.DisplayNameSources {
field public static final int EMAIL = 10; // 0xa
field public static final int NICKNAME = 35; // 0x23
field public static final int ORGANIZATION = 30; // 0x1e
@@ -37475,11 +37614,11 @@
public static final class ContactsContract.DisplayPhoto {
field public static final android.net.Uri CONTENT_MAX_DIMENSIONS_URI;
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DISPLAY_MAX_DIM = "display_max_dim";
- field public static final java.lang.String THUMBNAIL_MAX_DIM = "thumbnail_max_dim";
+ field public static final String DISPLAY_MAX_DIM = "display_max_dim";
+ field public static final String THUMBNAIL_MAX_DIM = "thumbnail_max_dim";
}
- public static abstract interface ContactsContract.FullNameStyle {
+ public static interface ContactsContract.FullNameStyle {
field public static final int CHINESE = 3; // 0x3
field public static final int CJK = 2; // 0x2
field public static final int JAPANESE = 4; // 0x4
@@ -37490,98 +37629,98 @@
public static final class ContactsContract.Groups implements android.provider.BaseColumns android.provider.ContactsContract.GroupsColumns android.provider.ContactsContract.SyncColumns {
method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group";
field public static final android.net.Uri CONTENT_SUMMARY_URI;
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/group";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/group";
field public static final android.net.Uri CONTENT_URI;
}
- protected static abstract interface ContactsContract.GroupsColumns {
- field public static final java.lang.String AUTO_ADD = "auto_add";
- field public static final java.lang.String DATA_SET = "data_set";
- field public static final java.lang.String DELETED = "deleted";
- field public static final java.lang.String FAVORITES = "favorites";
- field public static final java.lang.String GROUP_IS_READ_ONLY = "group_is_read_only";
- field public static final java.lang.String GROUP_VISIBLE = "group_visible";
- field public static final java.lang.String NOTES = "notes";
- field public static final java.lang.String RES_PACKAGE = "res_package";
- field public static final java.lang.String SHOULD_SYNC = "should_sync";
- field public static final java.lang.String SUMMARY_COUNT = "summ_count";
- field public static final java.lang.String SUMMARY_WITH_PHONES = "summ_phones";
- field public static final java.lang.String SYSTEM_ID = "system_id";
- field public static final java.lang.String TITLE = "title";
- field public static final java.lang.String TITLE_RES = "title_res";
+ protected static interface ContactsContract.GroupsColumns {
+ field public static final String AUTO_ADD = "auto_add";
+ field public static final String DATA_SET = "data_set";
+ field public static final String DELETED = "deleted";
+ field public static final String FAVORITES = "favorites";
+ field public static final String GROUP_IS_READ_ONLY = "group_is_read_only";
+ field public static final String GROUP_VISIBLE = "group_visible";
+ field public static final String NOTES = "notes";
+ field public static final String RES_PACKAGE = "res_package";
+ field public static final String SHOULD_SYNC = "should_sync";
+ field public static final String SUMMARY_COUNT = "summ_count";
+ field public static final String SUMMARY_WITH_PHONES = "summ_phones";
+ field public static final String SYSTEM_ID = "system_id";
+ field public static final String TITLE = "title";
+ field public static final String TITLE_RES = "title_res";
}
public static final class ContactsContract.Intents {
ctor public ContactsContract.Intents();
- field public static final java.lang.String ACTION_VOICE_SEND_MESSAGE_TO_CONTACTS = "android.provider.action.VOICE_SEND_MESSAGE_TO_CONTACTS";
- field public static final java.lang.String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
- field public static final java.lang.String CONTACTS_DATABASE_CREATED = "android.provider.Contacts.DATABASE_CREATED";
- field public static final java.lang.String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
- field public static final java.lang.String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
- field public static final java.lang.String EXTRA_RECIPIENT_CONTACT_CHAT_ID = "android.provider.extra.RECIPIENT_CONTACT_CHAT_ID";
- field public static final java.lang.String EXTRA_RECIPIENT_CONTACT_NAME = "android.provider.extra.RECIPIENT_CONTACT_NAME";
- field public static final java.lang.String EXTRA_RECIPIENT_CONTACT_URI = "android.provider.extra.RECIPIENT_CONTACT_URI";
- field public static final java.lang.String INVITE_CONTACT = "com.android.contacts.action.INVITE_CONTACT";
- field public static final java.lang.String METADATA_ACCOUNT_TYPE = "android.provider.account_type";
- field public static final java.lang.String METADATA_MIMETYPE = "android.provider.mimetype";
- field public static final java.lang.String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
- field public static final java.lang.String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
- field public static final java.lang.String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
- field public static final java.lang.String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
+ field public static final String ACTION_VOICE_SEND_MESSAGE_TO_CONTACTS = "android.provider.action.VOICE_SEND_MESSAGE_TO_CONTACTS";
+ field public static final String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
+ field public static final String CONTACTS_DATABASE_CREATED = "android.provider.Contacts.DATABASE_CREATED";
+ field public static final String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
+ field public static final String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
+ field public static final String EXTRA_RECIPIENT_CONTACT_CHAT_ID = "android.provider.extra.RECIPIENT_CONTACT_CHAT_ID";
+ field public static final String EXTRA_RECIPIENT_CONTACT_NAME = "android.provider.extra.RECIPIENT_CONTACT_NAME";
+ field public static final String EXTRA_RECIPIENT_CONTACT_URI = "android.provider.extra.RECIPIENT_CONTACT_URI";
+ field public static final String INVITE_CONTACT = "com.android.contacts.action.INVITE_CONTACT";
+ field public static final String METADATA_ACCOUNT_TYPE = "android.provider.account_type";
+ field public static final String METADATA_MIMETYPE = "android.provider.mimetype";
+ field public static final String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
+ field public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
+ field public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
+ field public static final String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
}
public static final class ContactsContract.Intents.Insert {
ctor public ContactsContract.Intents.Insert();
- field public static final java.lang.String ACTION = "android.intent.action.INSERT";
- field public static final java.lang.String COMPANY = "company";
- field public static final java.lang.String DATA = "data";
- field public static final java.lang.String EMAIL = "email";
- field public static final java.lang.String EMAIL_ISPRIMARY = "email_isprimary";
- field public static final java.lang.String EMAIL_TYPE = "email_type";
- field public static final java.lang.String EXTRA_ACCOUNT = "android.provider.extra.ACCOUNT";
- field public static final java.lang.String EXTRA_DATA_SET = "android.provider.extra.DATA_SET";
- field public static final java.lang.String FULL_MODE = "full_mode";
- field public static final java.lang.String IM_HANDLE = "im_handle";
- field public static final java.lang.String IM_ISPRIMARY = "im_isprimary";
- field public static final java.lang.String IM_PROTOCOL = "im_protocol";
- field public static final java.lang.String JOB_TITLE = "job_title";
- field public static final java.lang.String NAME = "name";
- field public static final java.lang.String NOTES = "notes";
- field public static final java.lang.String PHONE = "phone";
- field public static final java.lang.String PHONETIC_NAME = "phonetic_name";
- field public static final java.lang.String PHONE_ISPRIMARY = "phone_isprimary";
- field public static final java.lang.String PHONE_TYPE = "phone_type";
- field public static final java.lang.String POSTAL = "postal";
- field public static final java.lang.String POSTAL_ISPRIMARY = "postal_isprimary";
- field public static final java.lang.String POSTAL_TYPE = "postal_type";
- field public static final java.lang.String SECONDARY_EMAIL = "secondary_email";
- field public static final java.lang.String SECONDARY_EMAIL_TYPE = "secondary_email_type";
- field public static final java.lang.String SECONDARY_PHONE = "secondary_phone";
- field public static final java.lang.String SECONDARY_PHONE_TYPE = "secondary_phone_type";
- field public static final java.lang.String TERTIARY_EMAIL = "tertiary_email";
- field public static final java.lang.String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
- field public static final java.lang.String TERTIARY_PHONE = "tertiary_phone";
- field public static final java.lang.String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
+ field public static final String ACTION = "android.intent.action.INSERT";
+ field public static final String COMPANY = "company";
+ field public static final String DATA = "data";
+ field public static final String EMAIL = "email";
+ field public static final String EMAIL_ISPRIMARY = "email_isprimary";
+ field public static final String EMAIL_TYPE = "email_type";
+ field public static final String EXTRA_ACCOUNT = "android.provider.extra.ACCOUNT";
+ field public static final String EXTRA_DATA_SET = "android.provider.extra.DATA_SET";
+ field public static final String FULL_MODE = "full_mode";
+ field public static final String IM_HANDLE = "im_handle";
+ field public static final String IM_ISPRIMARY = "im_isprimary";
+ field public static final String IM_PROTOCOL = "im_protocol";
+ field public static final String JOB_TITLE = "job_title";
+ field public static final String NAME = "name";
+ field public static final String NOTES = "notes";
+ field public static final String PHONE = "phone";
+ field public static final String PHONETIC_NAME = "phonetic_name";
+ field public static final String PHONE_ISPRIMARY = "phone_isprimary";
+ field public static final String PHONE_TYPE = "phone_type";
+ field public static final String POSTAL = "postal";
+ field public static final String POSTAL_ISPRIMARY = "postal_isprimary";
+ field public static final String POSTAL_TYPE = "postal_type";
+ field public static final String SECONDARY_EMAIL = "secondary_email";
+ field public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type";
+ field public static final String SECONDARY_PHONE = "secondary_phone";
+ field public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type";
+ field public static final String TERTIARY_EMAIL = "tertiary_email";
+ field public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
+ field public static final String TERTIARY_PHONE = "tertiary_phone";
+ field public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
}
public static final class ContactsContract.PhoneLookup implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.PhoneLookupColumns {
field public static final android.net.Uri CONTENT_FILTER_URI;
field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
- field public static final java.lang.String QUERY_PARAMETER_SIP_ADDRESS = "sip";
+ field public static final String QUERY_PARAMETER_SIP_ADDRESS = "sip";
}
- protected static abstract interface ContactsContract.PhoneLookupColumns {
- field public static final java.lang.String CONTACT_ID = "contact_id";
- field public static final java.lang.String DATA_ID = "data_id";
- field public static final java.lang.String LABEL = "label";
- field public static final java.lang.String NORMALIZED_NUMBER = "normalized_number";
- field public static final java.lang.String NUMBER = "number";
- field public static final java.lang.String TYPE = "type";
+ protected static interface ContactsContract.PhoneLookupColumns {
+ field public static final String CONTACT_ID = "contact_id";
+ field public static final String DATA_ID = "data_id";
+ field public static final String LABEL = "label";
+ field public static final String NORMALIZED_NUMBER = "normalized_number";
+ field public static final String NUMBER = "number";
+ field public static final String TYPE = "type";
}
- public static abstract interface ContactsContract.PhoneticNameStyle {
+ public static interface ContactsContract.PhoneticNameStyle {
field public static final int JAPANESE = 4; // 0x4
field public static final int KOREAN = 5; // 0x5
field public static final int PINYIN = 3; // 0x3
@@ -37596,16 +37735,16 @@
field public static final int UNPINNED = 0; // 0x0
}
- public static final deprecated class ContactsContract.Presence extends android.provider.ContactsContract.StatusUpdates {
- ctor public ContactsContract.Presence();
+ @Deprecated public static final class ContactsContract.Presence extends android.provider.ContactsContract.StatusUpdates {
+ ctor @Deprecated public ContactsContract.Presence();
}
- protected static abstract interface ContactsContract.PresenceColumns {
- field public static final java.lang.String CUSTOM_PROTOCOL = "custom_protocol";
- field public static final java.lang.String DATA_ID = "presence_data_id";
- field public static final java.lang.String IM_ACCOUNT = "im_account";
- field public static final java.lang.String IM_HANDLE = "im_handle";
- field public static final java.lang.String PROTOCOL = "protocol";
+ protected static interface ContactsContract.PresenceColumns {
+ field public static final String CUSTOM_PROTOCOL = "custom_protocol";
+ field public static final String DATA_ID = "presence_data_id";
+ field public static final String IM_ACCOUNT = "im_account";
+ field public static final String IM_HANDLE = "im_handle";
+ field public static final String PROTOCOL = "protocol";
}
public static final class ContactsContract.Profile implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
@@ -37617,18 +37756,18 @@
public static final class ContactsContract.ProfileSyncState implements android.provider.SyncStateContract.Columns {
method public static byte[] get(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
- method public static android.util.Pair<android.net.Uri, byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
+ method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
method public static android.content.ContentProviderOperation newSetOperation(android.accounts.Account, byte[]);
method public static void set(android.content.ContentProviderClient, android.accounts.Account, byte[]) throws android.os.RemoteException;
- field public static final java.lang.String CONTENT_DIRECTORY = "syncstate";
+ field public static final String CONTENT_DIRECTORY = "syncstate";
field public static final android.net.Uri CONTENT_URI;
}
public static final class ContactsContract.ProviderStatus {
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/provider_status";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/provider_status";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DATABASE_CREATION_TIMESTAMP = "database_creation_timestamp";
- field public static final java.lang.String STATUS = "status";
+ field public static final String DATABASE_CREATION_TIMESTAMP = "database_creation_timestamp";
+ field public static final String STATUS = "status";
field public static final int STATUS_BUSY = 1; // 0x1
field public static final int STATUS_EMPTY = 2; // 0x2
field public static final int STATUS_NORMAL = 0; // 0x0
@@ -37636,14 +37775,14 @@
public static final class ContactsContract.QuickContact {
ctor public ContactsContract.QuickContact();
- method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, int, java.lang.String[]);
- method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, int, java.lang.String[]);
- method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, java.lang.String[], java.lang.String);
- method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, java.lang.String[], java.lang.String);
- field public static final java.lang.String ACTION_QUICK_CONTACT = "android.provider.action.QUICK_CONTACT";
- field public static final java.lang.String EXTRA_EXCLUDE_MIMES = "android.provider.extra.EXCLUDE_MIMES";
- field public static final java.lang.String EXTRA_MODE = "android.provider.extra.MODE";
- field public static final java.lang.String EXTRA_PRIORITIZED_MIMETYPE = "android.provider.extra.PRIORITIZED_MIMETYPE";
+ method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, int, String[]);
+ method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, int, String[]);
+ method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, String[], String);
+ method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, String[], String);
+ field public static final String ACTION_QUICK_CONTACT = "android.provider.action.QUICK_CONTACT";
+ field public static final String EXTRA_EXCLUDE_MIMES = "android.provider.extra.EXCLUDE_MIMES";
+ field public static final String EXTRA_MODE = "android.provider.extra.MODE";
+ field public static final String EXTRA_PRIORITIZED_MIMETYPE = "android.provider.extra.PRIORITIZED_MIMETYPE";
field public static final int MODE_LARGE = 3; // 0x3
field public static final int MODE_MEDIUM = 2; // 0x2
field public static final int MODE_SMALL = 1; // 0x1
@@ -37654,186 +37793,186 @@
method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
field public static final int AGGREGATION_MODE_DEFAULT = 0; // 0x0
field public static final int AGGREGATION_MODE_DISABLED = 3; // 0x3
- field public static final deprecated int AGGREGATION_MODE_IMMEDIATE = 1; // 0x1
+ field @Deprecated public static final int AGGREGATION_MODE_IMMEDIATE = 1; // 0x1
field public static final int AGGREGATION_MODE_SUSPENDED = 2; // 0x2
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/raw_contact";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/raw_contact";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact";
field public static final android.net.Uri CONTENT_URI;
}
public static final class ContactsContract.RawContacts.Data implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
- field public static final java.lang.String CONTENT_DIRECTORY = "data";
+ field public static final String CONTENT_DIRECTORY = "data";
}
public static final class ContactsContract.RawContacts.DisplayPhoto {
- field public static final java.lang.String CONTENT_DIRECTORY = "display_photo";
+ field public static final String CONTENT_DIRECTORY = "display_photo";
}
public static final class ContactsContract.RawContacts.Entity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
- field public static final java.lang.String CONTENT_DIRECTORY = "entity";
- field public static final java.lang.String DATA_ID = "data_id";
+ field public static final String CONTENT_DIRECTORY = "entity";
+ field public static final String DATA_ID = "data_id";
}
- protected static abstract interface ContactsContract.RawContactsColumns {
- field public static final java.lang.String ACCOUNT_TYPE_AND_DATA_SET = "account_type_and_data_set";
- field public static final java.lang.String AGGREGATION_MODE = "aggregation_mode";
- field public static final java.lang.String BACKUP_ID = "backup_id";
- field public static final java.lang.String CONTACT_ID = "contact_id";
- field public static final java.lang.String DATA_SET = "data_set";
- field public static final java.lang.String DELETED = "deleted";
- field public static final java.lang.String METADATA_DIRTY = "metadata_dirty";
- field public static final java.lang.String RAW_CONTACT_IS_READ_ONLY = "raw_contact_is_read_only";
- field public static final java.lang.String RAW_CONTACT_IS_USER_PROFILE = "raw_contact_is_user_profile";
+ protected static interface ContactsContract.RawContactsColumns {
+ field public static final String ACCOUNT_TYPE_AND_DATA_SET = "account_type_and_data_set";
+ field public static final String AGGREGATION_MODE = "aggregation_mode";
+ field public static final String BACKUP_ID = "backup_id";
+ field public static final String CONTACT_ID = "contact_id";
+ field public static final String DATA_SET = "data_set";
+ field public static final String DELETED = "deleted";
+ field public static final String METADATA_DIRTY = "metadata_dirty";
+ field public static final String RAW_CONTACT_IS_READ_ONLY = "raw_contact_is_read_only";
+ field public static final String RAW_CONTACT_IS_USER_PROFILE = "raw_contact_is_user_profile";
}
public static final class ContactsContract.RawContactsEntity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.RawContactsColumns {
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact_entity";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact_entity";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DATA_ID = "data_id";
+ field public static final String DATA_ID = "data_id";
field public static final android.net.Uri PROFILE_CONTENT_URI;
}
public static class ContactsContract.SearchSnippets {
ctor public ContactsContract.SearchSnippets();
- field public static final java.lang.String DEFERRED_SNIPPETING_KEY = "deferred_snippeting";
- field public static final java.lang.String SNIPPET = "snippet";
+ field public static final String DEFERRED_SNIPPETING_KEY = "deferred_snippeting";
+ field public static final String SNIPPET = "snippet";
}
public static final class ContactsContract.Settings implements android.provider.ContactsContract.SettingsColumns {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/setting";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/setting";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/setting";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/setting";
field public static final android.net.Uri CONTENT_URI;
}
- protected static abstract interface ContactsContract.SettingsColumns {
- field public static final java.lang.String ACCOUNT_NAME = "account_name";
- field public static final java.lang.String ACCOUNT_TYPE = "account_type";
- field public static final java.lang.String ANY_UNSYNCED = "any_unsynced";
- field public static final java.lang.String DATA_SET = "data_set";
- field public static final java.lang.String SHOULD_SYNC = "should_sync";
- field public static final java.lang.String UNGROUPED_COUNT = "summ_count";
- field public static final java.lang.String UNGROUPED_VISIBLE = "ungrouped_visible";
- field public static final java.lang.String UNGROUPED_WITH_PHONES = "summ_phones";
+ protected static interface ContactsContract.SettingsColumns {
+ field public static final String ACCOUNT_NAME = "account_name";
+ field public static final String ACCOUNT_TYPE = "account_type";
+ field public static final String ANY_UNSYNCED = "any_unsynced";
+ field public static final String DATA_SET = "data_set";
+ field public static final String SHOULD_SYNC = "should_sync";
+ field public static final String UNGROUPED_COUNT = "summ_count";
+ field public static final String UNGROUPED_VISIBLE = "ungrouped_visible";
+ field public static final String UNGROUPED_WITH_PHONES = "summ_phones";
}
- protected static abstract interface ContactsContract.StatusColumns {
+ protected static interface ContactsContract.StatusColumns {
field public static final int AVAILABLE = 5; // 0x5
field public static final int AWAY = 2; // 0x2
field public static final int CAPABILITY_HAS_CAMERA = 4; // 0x4
field public static final int CAPABILITY_HAS_VIDEO = 2; // 0x2
field public static final int CAPABILITY_HAS_VOICE = 1; // 0x1
- field public static final java.lang.String CHAT_CAPABILITY = "chat_capability";
+ field public static final String CHAT_CAPABILITY = "chat_capability";
field public static final int DO_NOT_DISTURB = 4; // 0x4
field public static final int IDLE = 3; // 0x3
field public static final int INVISIBLE = 1; // 0x1
field public static final int OFFLINE = 0; // 0x0
- field public static final java.lang.String PRESENCE = "mode";
- field public static final deprecated java.lang.String PRESENCE_CUSTOM_STATUS = "status";
- field public static final deprecated java.lang.String PRESENCE_STATUS = "mode";
- field public static final java.lang.String STATUS = "status";
- field public static final java.lang.String STATUS_ICON = "status_icon";
- field public static final java.lang.String STATUS_LABEL = "status_label";
- field public static final java.lang.String STATUS_RES_PACKAGE = "status_res_package";
- field public static final java.lang.String STATUS_TIMESTAMP = "status_ts";
+ field public static final String PRESENCE = "mode";
+ field @Deprecated public static final String PRESENCE_CUSTOM_STATUS = "status";
+ field @Deprecated public static final String PRESENCE_STATUS = "mode";
+ field public static final String STATUS = "status";
+ field public static final String STATUS_ICON = "status_icon";
+ field public static final String STATUS_LABEL = "status_label";
+ field public static final String STATUS_RES_PACKAGE = "status_res_package";
+ field public static final String STATUS_TIMESTAMP = "status_ts";
}
public static class ContactsContract.StatusUpdates implements android.provider.ContactsContract.PresenceColumns android.provider.ContactsContract.StatusColumns {
method public static final int getPresenceIconResourceId(int);
method public static final int getPresencePrecedence(int);
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/status-update";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/status-update";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/status-update";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/status-update";
field public static final android.net.Uri CONTENT_URI;
field public static final android.net.Uri PROFILE_CONTENT_URI;
}
- protected static abstract interface ContactsContract.SyncColumns implements android.provider.ContactsContract.BaseSyncColumns {
- field public static final java.lang.String ACCOUNT_NAME = "account_name";
- field public static final java.lang.String ACCOUNT_TYPE = "account_type";
- field public static final java.lang.String DIRTY = "dirty";
- field public static final java.lang.String SOURCE_ID = "sourceid";
- field public static final java.lang.String VERSION = "version";
+ protected static interface ContactsContract.SyncColumns extends android.provider.ContactsContract.BaseSyncColumns {
+ field public static final String ACCOUNT_NAME = "account_name";
+ field public static final String ACCOUNT_TYPE = "account_type";
+ field public static final String DIRTY = "dirty";
+ field public static final String SOURCE_ID = "sourceid";
+ field public static final String VERSION = "version";
}
public static final class ContactsContract.SyncState implements android.provider.SyncStateContract.Columns {
method public static byte[] get(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
- method public static android.util.Pair<android.net.Uri, byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
+ method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
method public static android.content.ContentProviderOperation newSetOperation(android.accounts.Account, byte[]);
method public static void set(android.content.ContentProviderClient, android.accounts.Account, byte[]) throws android.os.RemoteException;
- field public static final java.lang.String CONTENT_DIRECTORY = "syncstate";
+ field public static final String CONTENT_DIRECTORY = "syncstate";
field public static final android.net.Uri CONTENT_URI;
}
public final class DocumentsContract {
- method public static android.net.Uri buildChildDocumentsUri(java.lang.String, java.lang.String);
- method public static android.net.Uri buildChildDocumentsUriUsingTree(android.net.Uri, java.lang.String);
- method public static android.net.Uri buildDocumentUri(java.lang.String, java.lang.String);
- method public static android.net.Uri buildDocumentUriUsingTree(android.net.Uri, java.lang.String);
- method public static android.net.Uri buildRecentDocumentsUri(java.lang.String, java.lang.String);
- method public static android.net.Uri buildRootUri(java.lang.String, java.lang.String);
- method public static android.net.Uri buildRootsUri(java.lang.String);
- method public static android.net.Uri buildSearchDocumentsUri(java.lang.String, java.lang.String, java.lang.String);
- method public static android.net.Uri buildTreeDocumentUri(java.lang.String, java.lang.String);
+ method public static android.net.Uri buildChildDocumentsUri(String, String);
+ method public static android.net.Uri buildChildDocumentsUriUsingTree(android.net.Uri, String);
+ method public static android.net.Uri buildDocumentUri(String, String);
+ method public static android.net.Uri buildDocumentUriUsingTree(android.net.Uri, String);
+ method public static android.net.Uri buildRecentDocumentsUri(String, String);
+ method public static android.net.Uri buildRootUri(String, String);
+ method public static android.net.Uri buildRootsUri(String);
+ method public static android.net.Uri buildSearchDocumentsUri(String, String, String);
+ method public static android.net.Uri buildTreeDocumentUri(String, String);
method public static android.net.Uri copyDocument(android.content.ContentInterface, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
- method public static deprecated android.net.Uri copyDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
- method public static android.net.Uri createDocument(android.content.ContentInterface, android.net.Uri, java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
- method public static deprecated android.net.Uri createDocument(android.content.ContentResolver, android.net.Uri, java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
+ method @Deprecated public static android.net.Uri copyDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
+ method public static android.net.Uri createDocument(android.content.ContentInterface, android.net.Uri, String, String) throws java.io.FileNotFoundException;
+ method @Deprecated public static android.net.Uri createDocument(android.content.ContentResolver, android.net.Uri, String, String) throws java.io.FileNotFoundException;
method public static android.content.IntentSender createWebLinkIntent(android.content.ContentInterface, android.net.Uri, android.os.Bundle) throws java.io.FileNotFoundException;
- method public static deprecated android.content.IntentSender createWebLinkIntent(android.content.ContentResolver, android.net.Uri, android.os.Bundle) throws java.io.FileNotFoundException;
+ method @Deprecated public static android.content.IntentSender createWebLinkIntent(android.content.ContentResolver, android.net.Uri, android.os.Bundle) throws java.io.FileNotFoundException;
method public static boolean deleteDocument(android.content.ContentInterface, android.net.Uri) throws java.io.FileNotFoundException;
- method public static deprecated boolean deleteDocument(android.content.ContentResolver, android.net.Uri) throws java.io.FileNotFoundException;
+ method @Deprecated public static boolean deleteDocument(android.content.ContentResolver, android.net.Uri) throws java.io.FileNotFoundException;
method public static void ejectRoot(android.content.ContentInterface, android.net.Uri);
- method public static deprecated void ejectRoot(android.content.ContentResolver, android.net.Uri);
+ method @Deprecated public static void ejectRoot(android.content.ContentResolver, android.net.Uri);
method public static android.provider.DocumentsContract.Path findDocumentPath(android.content.ContentInterface, android.net.Uri) throws java.io.FileNotFoundException;
- method public static deprecated android.provider.DocumentsContract.Path findDocumentPath(android.content.ContentResolver, android.net.Uri) throws java.io.FileNotFoundException;
- method public static java.lang.String getDocumentId(android.net.Uri);
+ method @Deprecated public static android.provider.DocumentsContract.Path findDocumentPath(android.content.ContentResolver, android.net.Uri) throws java.io.FileNotFoundException;
+ method public static String getDocumentId(android.net.Uri);
method public static android.os.Bundle getDocumentMetadata(android.content.ContentInterface, android.net.Uri) throws java.io.FileNotFoundException;
- method public static deprecated android.os.Bundle getDocumentMetadata(android.content.ContentResolver, android.net.Uri) throws java.io.FileNotFoundException;
+ method @Deprecated public static android.os.Bundle getDocumentMetadata(android.content.ContentResolver, android.net.Uri) throws java.io.FileNotFoundException;
method public static android.graphics.Bitmap getDocumentThumbnail(android.content.ContentInterface, android.net.Uri, android.graphics.Point, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public static deprecated android.graphics.Bitmap getDocumentThumbnail(android.content.ContentResolver, android.net.Uri, android.graphics.Point, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public static java.lang.String getRootId(android.net.Uri);
- method public static java.lang.String getSearchDocumentsQuery(android.net.Uri);
- method public static java.lang.String getTreeDocumentId(android.net.Uri);
+ method @Deprecated public static android.graphics.Bitmap getDocumentThumbnail(android.content.ContentResolver, android.net.Uri, android.graphics.Point, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method public static String getRootId(android.net.Uri);
+ method public static String getSearchDocumentsQuery(android.net.Uri);
+ method public static String getTreeDocumentId(android.net.Uri);
method public static boolean isChildDocument(android.content.ContentInterface, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
- method public static deprecated boolean isChildDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
- method public static boolean isDocumentUri(android.content.Context, android.net.Uri);
- method public static boolean isRootUri(android.content.Context, android.net.Uri);
- method public static boolean isRootsUri(android.content.Context, android.net.Uri);
+ method @Deprecated public static boolean isChildDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
+ method public static boolean isDocumentUri(android.content.Context, @Nullable android.net.Uri);
+ method public static boolean isRootUri(android.content.Context, @Nullable android.net.Uri);
+ method public static boolean isRootsUri(android.content.Context, @Nullable android.net.Uri);
method public static boolean isTreeUri(android.net.Uri);
method public static android.net.Uri moveDocument(android.content.ContentInterface, android.net.Uri, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
- method public static deprecated android.net.Uri moveDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
+ method @Deprecated public static android.net.Uri moveDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
method public static boolean removeDocument(android.content.ContentInterface, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
- method public static deprecated boolean removeDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
- method public static android.net.Uri renameDocument(android.content.ContentInterface, android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- method public static deprecated android.net.Uri renameDocument(android.content.ContentResolver, android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- field public static final java.lang.String ACTION_DOCUMENT_SETTINGS = "android.provider.action.DOCUMENT_SETTINGS";
- field public static final java.lang.String EXTRA_ERROR = "error";
- field public static final java.lang.String EXTRA_EXCLUDE_SELF = "android.provider.extra.EXCLUDE_SELF";
- field public static final java.lang.String EXTRA_INFO = "info";
- field public static final java.lang.String EXTRA_INITIAL_URI = "android.provider.extra.INITIAL_URI";
- field public static final java.lang.String EXTRA_LOADING = "loading";
- field public static final java.lang.String EXTRA_ORIENTATION = "android.provider.extra.ORIENTATION";
- field public static final java.lang.String EXTRA_PROMPT = "android.provider.extra.PROMPT";
- field public static final java.lang.String METADATA_EXIF = "android:documentExif";
- field public static final java.lang.String METADATA_TREE_COUNT = "android:metadataTreeCount";
- field public static final java.lang.String METADATA_TREE_SIZE = "android:metadataTreeSize";
- field public static final java.lang.String METADATA_TYPES = "android:documentMetadataTypes";
- field public static final java.lang.String PROVIDER_INTERFACE = "android.content.action.DOCUMENTS_PROVIDER";
- field public static final java.lang.String QUERY_ARG_DISPLAY_NAME = "android:query-arg-display-name";
- field public static final java.lang.String QUERY_ARG_EXCLUDE_MEDIA = "android:query-arg-exclude-media";
- field public static final java.lang.String QUERY_ARG_FILE_SIZE_OVER = "android:query-arg-file-size-over";
- field public static final java.lang.String QUERY_ARG_LAST_MODIFIED_AFTER = "android:query-arg-last-modified-after";
- field public static final java.lang.String QUERY_ARG_MIME_TYPES = "android:query-arg-mime-types";
+ method @Deprecated public static boolean removeDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
+ method public static android.net.Uri renameDocument(android.content.ContentInterface, android.net.Uri, String) throws java.io.FileNotFoundException;
+ method @Deprecated public static android.net.Uri renameDocument(android.content.ContentResolver, android.net.Uri, String) throws java.io.FileNotFoundException;
+ field public static final String ACTION_DOCUMENT_SETTINGS = "android.provider.action.DOCUMENT_SETTINGS";
+ field public static final String EXTRA_ERROR = "error";
+ field public static final String EXTRA_EXCLUDE_SELF = "android.provider.extra.EXCLUDE_SELF";
+ field public static final String EXTRA_INFO = "info";
+ field public static final String EXTRA_INITIAL_URI = "android.provider.extra.INITIAL_URI";
+ field public static final String EXTRA_LOADING = "loading";
+ field public static final String EXTRA_ORIENTATION = "android.provider.extra.ORIENTATION";
+ field public static final String EXTRA_PROMPT = "android.provider.extra.PROMPT";
+ field public static final String METADATA_EXIF = "android:documentExif";
+ field public static final String METADATA_TREE_COUNT = "android:metadataTreeCount";
+ field public static final String METADATA_TREE_SIZE = "android:metadataTreeSize";
+ field public static final String METADATA_TYPES = "android:documentMetadataTypes";
+ field public static final String PROVIDER_INTERFACE = "android.content.action.DOCUMENTS_PROVIDER";
+ field public static final String QUERY_ARG_DISPLAY_NAME = "android:query-arg-display-name";
+ field public static final String QUERY_ARG_EXCLUDE_MEDIA = "android:query-arg-exclude-media";
+ field public static final String QUERY_ARG_FILE_SIZE_OVER = "android:query-arg-file-size-over";
+ field public static final String QUERY_ARG_LAST_MODIFIED_AFTER = "android:query-arg-last-modified-after";
+ field public static final String QUERY_ARG_MIME_TYPES = "android:query-arg-mime-types";
}
public static final class DocumentsContract.Document {
- field public static final java.lang.String COLUMN_DISPLAY_NAME = "_display_name";
- field public static final java.lang.String COLUMN_DOCUMENT_ID = "document_id";
- field public static final java.lang.String COLUMN_FLAGS = "flags";
- field public static final java.lang.String COLUMN_ICON = "icon";
- field public static final java.lang.String COLUMN_LAST_MODIFIED = "last_modified";
- field public static final java.lang.String COLUMN_MIME_TYPE = "mime_type";
- field public static final java.lang.String COLUMN_SIZE = "_size";
- field public static final java.lang.String COLUMN_SUMMARY = "summary";
+ field public static final String COLUMN_DISPLAY_NAME = "_display_name";
+ field public static final String COLUMN_DOCUMENT_ID = "document_id";
+ field public static final String COLUMN_FLAGS = "flags";
+ field public static final String COLUMN_ICON = "icon";
+ field public static final String COLUMN_LAST_MODIFIED = "last_modified";
+ field public static final String COLUMN_MIME_TYPE = "mime_type";
+ field public static final String COLUMN_SIZE = "_size";
+ field public static final String COLUMN_SUMMARY = "summary";
field public static final int FLAG_DIR_PREFERS_GRID = 16; // 0x10
field public static final int FLAG_DIR_PREFERS_LAST_MODIFIED = 32; // 0x20
field public static final int FLAG_DIR_SUPPORTS_CREATE = 8; // 0x8
@@ -37849,28 +37988,28 @@
field public static final int FLAG_SUPPORTS_WRITE = 2; // 0x2
field public static final int FLAG_VIRTUAL_DOCUMENT = 512; // 0x200
field public static final int FLAG_WEB_LINKABLE = 4096; // 0x1000
- field public static final java.lang.String MIME_TYPE_DIR = "vnd.android.document/directory";
+ field public static final String MIME_TYPE_DIR = "vnd.android.document/directory";
}
public static final class DocumentsContract.Path implements android.os.Parcelable {
- ctor public DocumentsContract.Path(java.lang.String, java.util.List<java.lang.String>);
+ ctor public DocumentsContract.Path(@Nullable String, java.util.List<java.lang.String>);
method public int describeContents();
method public java.util.List<java.lang.String> getPath();
- method public java.lang.String getRootId();
+ method @Nullable public String getRootId();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.provider.DocumentsContract.Path> CREATOR;
}
public static final class DocumentsContract.Root {
- field public static final java.lang.String COLUMN_AVAILABLE_BYTES = "available_bytes";
- field public static final java.lang.String COLUMN_CAPACITY_BYTES = "capacity_bytes";
- field public static final java.lang.String COLUMN_DOCUMENT_ID = "document_id";
- field public static final java.lang.String COLUMN_FLAGS = "flags";
- field public static final java.lang.String COLUMN_ICON = "icon";
- field public static final java.lang.String COLUMN_MIME_TYPES = "mime_types";
- field public static final java.lang.String COLUMN_ROOT_ID = "root_id";
- field public static final java.lang.String COLUMN_SUMMARY = "summary";
- field public static final java.lang.String COLUMN_TITLE = "title";
+ field public static final String COLUMN_AVAILABLE_BYTES = "available_bytes";
+ field public static final String COLUMN_CAPACITY_BYTES = "capacity_bytes";
+ field public static final String COLUMN_DOCUMENT_ID = "document_id";
+ field public static final String COLUMN_FLAGS = "flags";
+ field public static final String COLUMN_ICON = "icon";
+ field public static final String COLUMN_MIME_TYPES = "mime_types";
+ field public static final String COLUMN_ROOT_ID = "root_id";
+ field public static final String COLUMN_SUMMARY = "summary";
+ field public static final String COLUMN_TITLE = "title";
field public static final int FLAG_EMPTY = 64; // 0x40
field public static final int FLAG_LOCAL_ONLY = 2; // 0x2
field public static final int FLAG_SUPPORTS_CREATE = 1; // 0x1
@@ -37878,80 +38017,80 @@
field public static final int FLAG_SUPPORTS_IS_CHILD = 16; // 0x10
field public static final int FLAG_SUPPORTS_RECENTS = 4; // 0x4
field public static final int FLAG_SUPPORTS_SEARCH = 8; // 0x8
- field public static final java.lang.String MIME_TYPE_ITEM = "vnd.android.document/root";
+ field public static final String MIME_TYPE_ITEM = "vnd.android.document/root";
}
public abstract class DocumentsProvider extends android.content.ContentProvider {
ctor public DocumentsProvider();
- method public java.lang.String copyDocument(java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
- method public java.lang.String createDocument(java.lang.String, java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
- method public android.content.IntentSender createWebLinkIntent(java.lang.String, android.os.Bundle) throws java.io.FileNotFoundException;
- method public final int delete(android.net.Uri, java.lang.String, java.lang.String[]);
- method public void deleteDocument(java.lang.String) throws java.io.FileNotFoundException;
- method public void ejectRoot(java.lang.String);
- method public android.provider.DocumentsContract.Path findDocumentPath(java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
- method public android.os.Bundle getDocumentMetadata(java.lang.String) throws java.io.FileNotFoundException;
- method public java.lang.String[] getDocumentStreamTypes(java.lang.String, java.lang.String);
- method public java.lang.String getDocumentType(java.lang.String) throws java.io.FileNotFoundException;
- method public final java.lang.String getType(android.net.Uri);
+ method public String copyDocument(String, String) throws java.io.FileNotFoundException;
+ method public String createDocument(String, String, String) throws java.io.FileNotFoundException;
+ method public android.content.IntentSender createWebLinkIntent(String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
+ method public final int delete(android.net.Uri, String, String[]);
+ method public void deleteDocument(String) throws java.io.FileNotFoundException;
+ method public void ejectRoot(String);
+ method public android.provider.DocumentsContract.Path findDocumentPath(@Nullable String, String) throws java.io.FileNotFoundException;
+ method @Nullable public android.os.Bundle getDocumentMetadata(String) throws java.io.FileNotFoundException;
+ method public String[] getDocumentStreamTypes(String, String);
+ method public String getDocumentType(String) throws java.io.FileNotFoundException;
+ method public final String getType(android.net.Uri);
method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
- method public boolean isChildDocument(java.lang.String, java.lang.String);
- method public java.lang.String moveDocument(java.lang.String, java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
- method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public abstract android.os.ParcelFileDescriptor openDocument(java.lang.String, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public android.content.res.AssetFileDescriptor openDocumentThumbnail(java.lang.String, android.graphics.Point, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
- method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle) throws java.io.FileNotFoundException;
- method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public android.content.res.AssetFileDescriptor openTypedDocument(java.lang.String, java.lang.String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public final android.database.Cursor query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal);
- method public abstract android.database.Cursor queryChildDocuments(java.lang.String, java.lang.String[], java.lang.String) throws java.io.FileNotFoundException;
- method public android.database.Cursor queryChildDocuments(java.lang.String, java.lang.String[], android.os.Bundle) throws java.io.FileNotFoundException;
- method public abstract android.database.Cursor queryDocument(java.lang.String, java.lang.String[]) throws java.io.FileNotFoundException;
- method public android.database.Cursor queryRecentDocuments(java.lang.String, java.lang.String[]) throws java.io.FileNotFoundException;
- method public android.database.Cursor queryRecentDocuments(java.lang.String, java.lang.String[], android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
- method public abstract android.database.Cursor queryRoots(java.lang.String[]) throws java.io.FileNotFoundException;
- method public android.database.Cursor querySearchDocuments(java.lang.String, java.lang.String, java.lang.String[]) throws java.io.FileNotFoundException;
- method public android.database.Cursor querySearchDocuments(java.lang.String, java.lang.String[], android.os.Bundle) throws java.io.FileNotFoundException;
- method public void removeDocument(java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
- method public java.lang.String renameDocument(java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
- method public final void revokeDocumentPermission(java.lang.String);
- method public final int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ method public boolean isChildDocument(String, String);
+ method public String moveDocument(String, String, String) throws java.io.FileNotFoundException;
+ method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, String) throws java.io.FileNotFoundException;
+ method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method public abstract android.os.ParcelFileDescriptor openDocument(String, String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method public android.content.res.AssetFileDescriptor openDocumentThumbnail(String, android.graphics.Point, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, String) throws java.io.FileNotFoundException;
+ method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, String, android.os.Bundle) throws java.io.FileNotFoundException;
+ method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method public android.content.res.AssetFileDescriptor openTypedDocument(String, String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String);
+ method public final android.database.Cursor query(android.net.Uri, String[], android.os.Bundle, android.os.CancellationSignal);
+ method public abstract android.database.Cursor queryChildDocuments(String, String[], String) throws java.io.FileNotFoundException;
+ method public android.database.Cursor queryChildDocuments(String, @Nullable String[], @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
+ method public abstract android.database.Cursor queryDocument(String, String[]) throws java.io.FileNotFoundException;
+ method public android.database.Cursor queryRecentDocuments(String, String[]) throws java.io.FileNotFoundException;
+ method public android.database.Cursor queryRecentDocuments(String, String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+ method public abstract android.database.Cursor queryRoots(String[]) throws java.io.FileNotFoundException;
+ method public android.database.Cursor querySearchDocuments(String, String, String[]) throws java.io.FileNotFoundException;
+ method public android.database.Cursor querySearchDocuments(String, String[], android.os.Bundle) throws java.io.FileNotFoundException;
+ method public void removeDocument(String, String) throws java.io.FileNotFoundException;
+ method public String renameDocument(String, String) throws java.io.FileNotFoundException;
+ method public final void revokeDocumentPermission(String);
+ method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
}
public final class FontRequest {
- ctor public FontRequest(java.lang.String, java.lang.String, java.lang.String);
- ctor public FontRequest(java.lang.String, java.lang.String, java.lang.String, java.util.List<java.util.List<byte[]>>);
+ ctor public FontRequest(@NonNull String, @NonNull String, @NonNull String);
+ ctor public FontRequest(@NonNull String, @NonNull String, @NonNull String, @NonNull java.util.List<java.util.List<byte[]>>);
method public java.util.List<java.util.List<byte[]>> getCertificates();
- method public java.lang.String getProviderAuthority();
- method public java.lang.String getProviderPackage();
- method public java.lang.String getQuery();
+ method public String getProviderAuthority();
+ method public String getProviderPackage();
+ method public String getQuery();
}
public class FontsContract {
- method public static android.graphics.Typeface buildTypeface(android.content.Context, android.os.CancellationSignal, android.provider.FontsContract.FontInfo[]);
- method public static android.provider.FontsContract.FontFamilyResult fetchFonts(android.content.Context, android.os.CancellationSignal, android.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
- method public static void requestFonts(android.content.Context, android.provider.FontRequest, android.os.Handler, android.os.CancellationSignal, android.provider.FontsContract.FontRequestCallback);
+ method public static android.graphics.Typeface buildTypeface(@NonNull android.content.Context, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontsContract.FontInfo[]);
+ method @NonNull public static android.provider.FontsContract.FontFamilyResult fetchFonts(@NonNull android.content.Context, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static void requestFonts(@NonNull android.content.Context, @NonNull android.provider.FontRequest, @NonNull android.os.Handler, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontsContract.FontRequestCallback);
}
public static final class FontsContract.Columns implements android.provider.BaseColumns {
- field public static final java.lang.String FILE_ID = "file_id";
- field public static final java.lang.String ITALIC = "font_italic";
- field public static final java.lang.String RESULT_CODE = "result_code";
+ field public static final String FILE_ID = "file_id";
+ field public static final String ITALIC = "font_italic";
+ field public static final String RESULT_CODE = "result_code";
field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
field public static final int RESULT_CODE_OK = 0; // 0x0
- field public static final java.lang.String TTC_INDEX = "font_ttc_index";
- field public static final java.lang.String VARIATION_SETTINGS = "font_variation_settings";
- field public static final java.lang.String WEIGHT = "font_weight";
+ field public static final String TTC_INDEX = "font_ttc_index";
+ field public static final String VARIATION_SETTINGS = "font_variation_settings";
+ field public static final String WEIGHT = "font_weight";
}
public static class FontsContract.FontFamilyResult {
- method public android.provider.FontsContract.FontInfo[] getFonts();
+ method @NonNull public android.provider.FontsContract.FontInfo[] getFonts();
method public int getStatusCode();
field public static final int STATUS_OK = 0; // 0x0
field public static final int STATUS_REJECTED = 3; // 0x3
@@ -37960,11 +38099,11 @@
}
public static class FontsContract.FontInfo {
- method public android.graphics.fonts.FontVariationAxis[] getAxes();
+ method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes();
method public int getResultCode();
- method public int getTtcIndex();
- method public android.net.Uri getUri();
- method public int getWeight();
+ method @IntRange(from=0) public int getTtcIndex();
+ method @NonNull public android.net.Uri getUri();
+ method @IntRange(from=1, to=1000) public int getWeight();
method public boolean isItalic();
}
@@ -37980,404 +38119,404 @@
field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
}
- public final deprecated class LiveFolders implements android.provider.BaseColumns {
- field public static final java.lang.String ACTION_CREATE_LIVE_FOLDER = "android.intent.action.CREATE_LIVE_FOLDER";
- field public static final java.lang.String DESCRIPTION = "description";
- field public static final int DISPLAY_MODE_GRID = 1; // 0x1
- field public static final int DISPLAY_MODE_LIST = 2; // 0x2
- field public static final java.lang.String EXTRA_LIVE_FOLDER_BASE_INTENT = "android.intent.extra.livefolder.BASE_INTENT";
- field public static final java.lang.String EXTRA_LIVE_FOLDER_DISPLAY_MODE = "android.intent.extra.livefolder.DISPLAY_MODE";
- field public static final java.lang.String EXTRA_LIVE_FOLDER_ICON = "android.intent.extra.livefolder.ICON";
- field public static final java.lang.String EXTRA_LIVE_FOLDER_NAME = "android.intent.extra.livefolder.NAME";
- field public static final java.lang.String ICON_BITMAP = "icon_bitmap";
- field public static final java.lang.String ICON_PACKAGE = "icon_package";
- field public static final java.lang.String ICON_RESOURCE = "icon_resource";
- field public static final java.lang.String INTENT = "intent";
- field public static final java.lang.String NAME = "name";
+ @Deprecated public final class LiveFolders implements android.provider.BaseColumns {
+ field @Deprecated public static final String ACTION_CREATE_LIVE_FOLDER = "android.intent.action.CREATE_LIVE_FOLDER";
+ field @Deprecated public static final String DESCRIPTION = "description";
+ field @Deprecated public static final int DISPLAY_MODE_GRID = 1; // 0x1
+ field @Deprecated public static final int DISPLAY_MODE_LIST = 2; // 0x2
+ field @Deprecated public static final String EXTRA_LIVE_FOLDER_BASE_INTENT = "android.intent.extra.livefolder.BASE_INTENT";
+ field @Deprecated public static final String EXTRA_LIVE_FOLDER_DISPLAY_MODE = "android.intent.extra.livefolder.DISPLAY_MODE";
+ field @Deprecated public static final String EXTRA_LIVE_FOLDER_ICON = "android.intent.extra.livefolder.ICON";
+ field @Deprecated public static final String EXTRA_LIVE_FOLDER_NAME = "android.intent.extra.livefolder.NAME";
+ field @Deprecated public static final String ICON_BITMAP = "icon_bitmap";
+ field @Deprecated public static final String ICON_PACKAGE = "icon_package";
+ field @Deprecated public static final String ICON_RESOURCE = "icon_resource";
+ field @Deprecated public static final String INTENT = "intent";
+ field @Deprecated public static final String NAME = "name";
}
public final class MediaStore {
ctor public MediaStore();
- method public static android.net.Uri createPending(android.content.Context, android.provider.MediaStore.PendingParams);
- method public static java.util.Set<java.lang.String> getAllVolumeNames(android.content.Context);
+ method @NonNull public static android.net.Uri createPending(@NonNull android.content.Context, @NonNull android.provider.MediaStore.PendingParams);
+ method @NonNull public static java.util.Set<java.lang.String> getAllVolumeNames(android.content.Context);
method public static android.net.Uri getDocumentUri(android.content.Context, android.net.Uri);
method public static android.net.Uri getMediaScannerUri();
method public static android.net.Uri getMediaUri(android.content.Context, android.net.Uri);
- method public static java.lang.String getVersion(android.content.Context);
- method public static java.lang.String getVolumeName(android.net.Uri);
- method public static android.provider.MediaStore.PendingSession openPending(android.content.Context, android.net.Uri);
- method public static android.net.Uri setIncludePending(android.net.Uri);
- method public static android.net.Uri setIncludeTrashed(android.net.Uri);
- method public static android.net.Uri setRequireOriginal(android.net.Uri);
- method public static void trash(android.content.Context, android.net.Uri);
- method public static void trash(android.content.Context, android.net.Uri, long);
- method public static void untrash(android.content.Context, android.net.Uri);
- field public static final java.lang.String ACTION_IMAGE_CAPTURE = "android.media.action.IMAGE_CAPTURE";
- field public static final java.lang.String ACTION_IMAGE_CAPTURE_SECURE = "android.media.action.IMAGE_CAPTURE_SECURE";
- field public static final java.lang.String ACTION_REVIEW = "android.provider.action.REVIEW";
- field public static final java.lang.String ACTION_REVIEW_SECURE = "android.provider.action.REVIEW_SECURE";
- field public static final java.lang.String ACTION_VIDEO_CAPTURE = "android.media.action.VIDEO_CAPTURE";
- field public static final java.lang.String AUTHORITY = "media";
+ method public static String getVersion(android.content.Context);
+ method @NonNull public static String getVolumeName(@NonNull android.net.Uri);
+ method @NonNull public static android.provider.MediaStore.PendingSession openPending(@NonNull android.content.Context, @NonNull android.net.Uri);
+ method @NonNull public static android.net.Uri setIncludePending(@NonNull android.net.Uri);
+ method @NonNull public static android.net.Uri setIncludeTrashed(@NonNull android.net.Uri);
+ method @NonNull public static android.net.Uri setRequireOriginal(@NonNull android.net.Uri);
+ method public static void trash(@NonNull android.content.Context, @NonNull android.net.Uri);
+ method public static void trash(@NonNull android.content.Context, @NonNull android.net.Uri, long);
+ method public static void untrash(@NonNull android.content.Context, @NonNull android.net.Uri);
+ field public static final String ACTION_IMAGE_CAPTURE = "android.media.action.IMAGE_CAPTURE";
+ field public static final String ACTION_IMAGE_CAPTURE_SECURE = "android.media.action.IMAGE_CAPTURE_SECURE";
+ field public static final String ACTION_REVIEW = "android.provider.action.REVIEW";
+ field public static final String ACTION_REVIEW_SECURE = "android.provider.action.REVIEW_SECURE";
+ field public static final String ACTION_VIDEO_CAPTURE = "android.media.action.VIDEO_CAPTURE";
+ field public static final String AUTHORITY = "media";
field public static final android.net.Uri AUTHORITY_URI;
- field public static final java.lang.String EXTRA_BRIGHTNESS = "android.provider.extra.BRIGHTNESS";
- field public static final java.lang.String EXTRA_DURATION_LIMIT = "android.intent.extra.durationLimit";
- field public static final java.lang.String EXTRA_FINISH_ON_COMPLETION = "android.intent.extra.finishOnCompletion";
- field public static final java.lang.String EXTRA_FULL_SCREEN = "android.intent.extra.fullScreen";
- field public static final java.lang.String EXTRA_MEDIA_ALBUM = "android.intent.extra.album";
- field public static final java.lang.String EXTRA_MEDIA_ARTIST = "android.intent.extra.artist";
- field public static final java.lang.String EXTRA_MEDIA_FOCUS = "android.intent.extra.focus";
- field public static final java.lang.String EXTRA_MEDIA_GENRE = "android.intent.extra.genre";
- field public static final java.lang.String EXTRA_MEDIA_PLAYLIST = "android.intent.extra.playlist";
- field public static final java.lang.String EXTRA_MEDIA_RADIO_CHANNEL = "android.intent.extra.radio_channel";
- field public static final java.lang.String EXTRA_MEDIA_TITLE = "android.intent.extra.title";
- field public static final java.lang.String EXTRA_OUTPUT = "output";
- field public static final java.lang.String EXTRA_SCREEN_ORIENTATION = "android.intent.extra.screenOrientation";
- field public static final java.lang.String EXTRA_SHOW_ACTION_ICONS = "android.intent.extra.showActionIcons";
- field public static final java.lang.String EXTRA_SIZE_LIMIT = "android.intent.extra.sizeLimit";
- field public static final java.lang.String EXTRA_VIDEO_QUALITY = "android.intent.extra.videoQuality";
- field public static final java.lang.String INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH = "android.media.action.MEDIA_PLAY_FROM_SEARCH";
- field public static final java.lang.String INTENT_ACTION_MEDIA_SEARCH = "android.intent.action.MEDIA_SEARCH";
- field public static final deprecated java.lang.String INTENT_ACTION_MUSIC_PLAYER = "android.intent.action.MUSIC_PLAYER";
- field public static final java.lang.String INTENT_ACTION_STILL_IMAGE_CAMERA = "android.media.action.STILL_IMAGE_CAMERA";
- field public static final java.lang.String INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE = "android.media.action.STILL_IMAGE_CAMERA_SECURE";
- field public static final java.lang.String INTENT_ACTION_TEXT_OPEN_FROM_SEARCH = "android.media.action.TEXT_OPEN_FROM_SEARCH";
- field public static final java.lang.String INTENT_ACTION_VIDEO_CAMERA = "android.media.action.VIDEO_CAMERA";
- field public static final java.lang.String INTENT_ACTION_VIDEO_PLAY_FROM_SEARCH = "android.media.action.VIDEO_PLAY_FROM_SEARCH";
- field public static final java.lang.String MEDIA_IGNORE_FILENAME = ".nomedia";
- field public static final java.lang.String MEDIA_SCANNER_VOLUME = "volume";
- field public static final java.lang.String META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICE = "android.media.still_image_camera_preview_service";
- field public static final java.lang.String UNKNOWN_STRING = "<unknown>";
+ field public static final String EXTRA_BRIGHTNESS = "android.provider.extra.BRIGHTNESS";
+ field public static final String EXTRA_DURATION_LIMIT = "android.intent.extra.durationLimit";
+ field public static final String EXTRA_FINISH_ON_COMPLETION = "android.intent.extra.finishOnCompletion";
+ field public static final String EXTRA_FULL_SCREEN = "android.intent.extra.fullScreen";
+ field public static final String EXTRA_MEDIA_ALBUM = "android.intent.extra.album";
+ field public static final String EXTRA_MEDIA_ARTIST = "android.intent.extra.artist";
+ field public static final String EXTRA_MEDIA_FOCUS = "android.intent.extra.focus";
+ field public static final String EXTRA_MEDIA_GENRE = "android.intent.extra.genre";
+ field public static final String EXTRA_MEDIA_PLAYLIST = "android.intent.extra.playlist";
+ field public static final String EXTRA_MEDIA_RADIO_CHANNEL = "android.intent.extra.radio_channel";
+ field public static final String EXTRA_MEDIA_TITLE = "android.intent.extra.title";
+ field public static final String EXTRA_OUTPUT = "output";
+ field public static final String EXTRA_SCREEN_ORIENTATION = "android.intent.extra.screenOrientation";
+ field public static final String EXTRA_SHOW_ACTION_ICONS = "android.intent.extra.showActionIcons";
+ field public static final String EXTRA_SIZE_LIMIT = "android.intent.extra.sizeLimit";
+ field public static final String EXTRA_VIDEO_QUALITY = "android.intent.extra.videoQuality";
+ field public static final String INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH = "android.media.action.MEDIA_PLAY_FROM_SEARCH";
+ field public static final String INTENT_ACTION_MEDIA_SEARCH = "android.intent.action.MEDIA_SEARCH";
+ field @Deprecated public static final String INTENT_ACTION_MUSIC_PLAYER = "android.intent.action.MUSIC_PLAYER";
+ field public static final String INTENT_ACTION_STILL_IMAGE_CAMERA = "android.media.action.STILL_IMAGE_CAMERA";
+ field public static final String INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE = "android.media.action.STILL_IMAGE_CAMERA_SECURE";
+ field public static final String INTENT_ACTION_TEXT_OPEN_FROM_SEARCH = "android.media.action.TEXT_OPEN_FROM_SEARCH";
+ field public static final String INTENT_ACTION_VIDEO_CAMERA = "android.media.action.VIDEO_CAMERA";
+ field public static final String INTENT_ACTION_VIDEO_PLAY_FROM_SEARCH = "android.media.action.VIDEO_PLAY_FROM_SEARCH";
+ field public static final String MEDIA_IGNORE_FILENAME = ".nomedia";
+ field public static final String MEDIA_SCANNER_VOLUME = "volume";
+ field public static final String META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICE = "android.media.still_image_camera_preview_service";
+ field public static final String UNKNOWN_STRING = "<unknown>";
}
public static final class MediaStore.Audio {
ctor public MediaStore.Audio();
- method public static java.lang.String keyFor(java.lang.String);
+ method public static String keyFor(String);
}
- public static abstract interface MediaStore.Audio.AlbumColumns {
- field public static final java.lang.String ALBUM = "album";
- field public static final deprecated java.lang.String ALBUM_ART = "album_art";
- field public static final java.lang.String ALBUM_ID = "album_id";
- field public static final java.lang.String ALBUM_KEY = "album_key";
- field public static final java.lang.String ARTIST = "artist";
- field public static final java.lang.String FIRST_YEAR = "minyear";
- field public static final java.lang.String LAST_YEAR = "maxyear";
- field public static final java.lang.String NUMBER_OF_SONGS = "numsongs";
- field public static final java.lang.String NUMBER_OF_SONGS_FOR_ARTIST = "numsongs_by_artist";
+ public static interface MediaStore.Audio.AlbumColumns {
+ field public static final String ALBUM = "album";
+ field @Deprecated public static final String ALBUM_ART = "album_art";
+ field public static final String ALBUM_ID = "album_id";
+ field public static final String ALBUM_KEY = "album_key";
+ field public static final String ARTIST = "artist";
+ field public static final String FIRST_YEAR = "minyear";
+ field public static final String LAST_YEAR = "maxyear";
+ field public static final String NUMBER_OF_SONGS = "numsongs";
+ field public static final String NUMBER_OF_SONGS_FOR_ARTIST = "numsongs_by_artist";
}
public static final class MediaStore.Audio.Albums implements android.provider.BaseColumns android.provider.MediaStore.Audio.AlbumColumns {
ctor public MediaStore.Audio.Albums();
- method public static android.net.Uri getContentUri(java.lang.String);
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/albums";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "album_key";
- field public static final java.lang.String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/album";
+ method public static android.net.Uri getContentUri(String);
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/albums";
+ field public static final String DEFAULT_SORT_ORDER = "album_key";
+ field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/album";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
field public static final android.net.Uri INTERNAL_CONTENT_URI;
}
- public static abstract interface MediaStore.Audio.ArtistColumns {
- field public static final java.lang.String ARTIST = "artist";
- field public static final java.lang.String ARTIST_KEY = "artist_key";
- field public static final java.lang.String NUMBER_OF_ALBUMS = "number_of_albums";
- field public static final java.lang.String NUMBER_OF_TRACKS = "number_of_tracks";
+ public static interface MediaStore.Audio.ArtistColumns {
+ field public static final String ARTIST = "artist";
+ field public static final String ARTIST_KEY = "artist_key";
+ field public static final String NUMBER_OF_ALBUMS = "number_of_albums";
+ field public static final String NUMBER_OF_TRACKS = "number_of_tracks";
}
public static final class MediaStore.Audio.Artists implements android.provider.BaseColumns android.provider.MediaStore.Audio.ArtistColumns {
ctor public MediaStore.Audio.Artists();
- method public static android.net.Uri getContentUri(java.lang.String);
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/artists";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "artist_key";
- field public static final java.lang.String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/artist";
+ method public static android.net.Uri getContentUri(String);
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/artists";
+ field public static final String DEFAULT_SORT_ORDER = "artist_key";
+ field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/artist";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
field public static final android.net.Uri INTERNAL_CONTENT_URI;
}
public static final class MediaStore.Audio.Artists.Albums implements android.provider.MediaStore.Audio.AlbumColumns {
ctor public MediaStore.Audio.Artists.Albums();
- method public static android.net.Uri getContentUri(java.lang.String, long);
+ method public static android.net.Uri getContentUri(String, long);
}
- public static abstract interface MediaStore.Audio.AudioColumns implements android.provider.MediaStore.MediaColumns {
- field public static final java.lang.String ALBUM = "album";
- field public static final java.lang.String ALBUM_ID = "album_id";
- field public static final java.lang.String ALBUM_KEY = "album_key";
- field public static final java.lang.String ARTIST = "artist";
- field public static final java.lang.String ARTIST_ID = "artist_id";
- field public static final java.lang.String ARTIST_KEY = "artist_key";
- field public static final java.lang.String BOOKMARK = "bookmark";
- field public static final java.lang.String COMPOSER = "composer";
- field public static final java.lang.String DURATION = "duration";
- field public static final java.lang.String IS_ALARM = "is_alarm";
- field public static final java.lang.String IS_AUDIOBOOK = "is_audiobook";
- field public static final java.lang.String IS_MUSIC = "is_music";
- field public static final java.lang.String IS_NOTIFICATION = "is_notification";
- field public static final java.lang.String IS_PODCAST = "is_podcast";
- field public static final java.lang.String IS_RINGTONE = "is_ringtone";
- field public static final java.lang.String TITLE_KEY = "title_key";
- field public static final java.lang.String TRACK = "track";
- field public static final java.lang.String YEAR = "year";
+ public static interface MediaStore.Audio.AudioColumns extends android.provider.MediaStore.MediaColumns {
+ field public static final String ALBUM = "album";
+ field public static final String ALBUM_ID = "album_id";
+ field public static final String ALBUM_KEY = "album_key";
+ field public static final String ARTIST = "artist";
+ field public static final String ARTIST_ID = "artist_id";
+ field public static final String ARTIST_KEY = "artist_key";
+ field public static final String BOOKMARK = "bookmark";
+ field public static final String COMPOSER = "composer";
+ field public static final String DURATION = "duration";
+ field public static final String IS_ALARM = "is_alarm";
+ field public static final String IS_AUDIOBOOK = "is_audiobook";
+ field public static final String IS_MUSIC = "is_music";
+ field public static final String IS_NOTIFICATION = "is_notification";
+ field public static final String IS_PODCAST = "is_podcast";
+ field public static final String IS_RINGTONE = "is_ringtone";
+ field public static final String TITLE_KEY = "title_key";
+ field public static final String TRACK = "track";
+ field public static final String YEAR = "year";
}
public static final class MediaStore.Audio.Genres implements android.provider.BaseColumns android.provider.MediaStore.Audio.GenresColumns {
ctor public MediaStore.Audio.Genres();
- method public static android.net.Uri getContentUri(java.lang.String);
- method public static android.net.Uri getContentUriForAudioId(java.lang.String, int);
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/genre";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "name";
- field public static final java.lang.String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/genre";
+ method public static android.net.Uri getContentUri(String);
+ method public static android.net.Uri getContentUriForAudioId(String, int);
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/genre";
+ field public static final String DEFAULT_SORT_ORDER = "name";
+ field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/genre";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
field public static final android.net.Uri INTERNAL_CONTENT_URI;
}
public static final class MediaStore.Audio.Genres.Members implements android.provider.MediaStore.Audio.AudioColumns {
ctor public MediaStore.Audio.Genres.Members();
- method public static android.net.Uri getContentUri(java.lang.String, long);
- field public static final java.lang.String AUDIO_ID = "audio_id";
- field public static final java.lang.String CONTENT_DIRECTORY = "members";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "title_key";
- field public static final java.lang.String GENRE_ID = "genre_id";
+ method public static android.net.Uri getContentUri(String, long);
+ field public static final String AUDIO_ID = "audio_id";
+ field public static final String CONTENT_DIRECTORY = "members";
+ field public static final String DEFAULT_SORT_ORDER = "title_key";
+ field public static final String GENRE_ID = "genre_id";
}
- public static abstract interface MediaStore.Audio.GenresColumns {
- field public static final java.lang.String NAME = "name";
+ public static interface MediaStore.Audio.GenresColumns {
+ field public static final String NAME = "name";
}
public static final class MediaStore.Audio.Media implements android.provider.MediaStore.Audio.AudioColumns {
ctor public MediaStore.Audio.Media();
- method public static android.net.Uri getContentUri(java.lang.String);
- method public static deprecated android.net.Uri getContentUriForPath(java.lang.String);
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/audio";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "title_key";
- field public static final java.lang.String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/audio";
+ method public static android.net.Uri getContentUri(String);
+ method @Deprecated @Nullable public static android.net.Uri getContentUriForPath(@NonNull String);
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/audio";
+ field public static final String DEFAULT_SORT_ORDER = "title_key";
+ field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/audio";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
- field public static final java.lang.String EXTRA_MAX_BYTES = "android.provider.MediaStore.extra.MAX_BYTES";
+ field public static final String EXTRA_MAX_BYTES = "android.provider.MediaStore.extra.MAX_BYTES";
field public static final android.net.Uri INTERNAL_CONTENT_URI;
- field public static final java.lang.String RECORD_SOUND_ACTION = "android.provider.MediaStore.RECORD_SOUND";
+ field public static final String RECORD_SOUND_ACTION = "android.provider.MediaStore.RECORD_SOUND";
}
public static final class MediaStore.Audio.Playlists implements android.provider.BaseColumns android.provider.MediaStore.Audio.PlaylistsColumns {
ctor public MediaStore.Audio.Playlists();
- method public static android.net.Uri getContentUri(java.lang.String);
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/playlist";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "name";
- field public static final java.lang.String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/playlist";
+ method public static android.net.Uri getContentUri(String);
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/playlist";
+ field public static final String DEFAULT_SORT_ORDER = "name";
+ field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/playlist";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
field public static final android.net.Uri INTERNAL_CONTENT_URI;
}
public static final class MediaStore.Audio.Playlists.Members implements android.provider.MediaStore.Audio.AudioColumns {
ctor public MediaStore.Audio.Playlists.Members();
- method public static android.net.Uri getContentUri(java.lang.String, long);
+ method public static android.net.Uri getContentUri(String, long);
method public static boolean moveItem(android.content.ContentResolver, long, int, int);
- field public static final java.lang.String AUDIO_ID = "audio_id";
- field public static final java.lang.String CONTENT_DIRECTORY = "members";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "play_order";
- field public static final java.lang.String PLAYLIST_ID = "playlist_id";
- field public static final java.lang.String PLAY_ORDER = "play_order";
- field public static final java.lang.String _ID = "_id";
+ field public static final String AUDIO_ID = "audio_id";
+ field public static final String CONTENT_DIRECTORY = "members";
+ field public static final String DEFAULT_SORT_ORDER = "play_order";
+ field public static final String PLAYLIST_ID = "playlist_id";
+ field public static final String PLAY_ORDER = "play_order";
+ field public static final String _ID = "_id";
}
- public static abstract interface MediaStore.Audio.PlaylistsColumns {
- field public static final deprecated java.lang.String DATA = "_data";
- field public static final java.lang.String DATE_ADDED = "date_added";
- field public static final java.lang.String DATE_MODIFIED = "date_modified";
- field public static final java.lang.String NAME = "name";
+ public static interface MediaStore.Audio.PlaylistsColumns {
+ field @Deprecated public static final String DATA = "_data";
+ field public static final String DATE_ADDED = "date_added";
+ field public static final String DATE_MODIFIED = "date_modified";
+ field public static final String NAME = "name";
}
public static final class MediaStore.Audio.Radio {
- field public static final java.lang.String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/radio";
+ field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/radio";
}
- public static abstract interface MediaStore.DownloadColumns implements android.provider.MediaStore.MediaColumns {
- field public static final java.lang.String DESCRIPTION = "description";
- field public static final java.lang.String DOWNLOAD_URI = "download_uri";
- field public static final java.lang.String REFERER_URI = "referer_uri";
+ public static interface MediaStore.DownloadColumns extends android.provider.MediaStore.MediaColumns {
+ field public static final String DESCRIPTION = "description";
+ field public static final String DOWNLOAD_URI = "download_uri";
+ field public static final String REFERER_URI = "referer_uri";
}
public static final class MediaStore.Downloads implements android.provider.MediaStore.DownloadColumns {
- method public static android.net.Uri getContentUri(java.lang.String);
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/download";
+ method public static android.net.Uri getContentUri(String);
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/download";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
field public static final android.net.Uri INTERNAL_CONTENT_URI;
}
public static final class MediaStore.Files {
ctor public MediaStore.Files();
- method public static android.net.Uri getContentUri(java.lang.String);
- method public static android.net.Uri getContentUri(java.lang.String, long);
+ method public static android.net.Uri getContentUri(String);
+ method public static android.net.Uri getContentUri(String, long);
}
- public static abstract interface MediaStore.Files.FileColumns implements android.provider.MediaStore.MediaColumns {
- field public static final java.lang.String MEDIA_TYPE = "media_type";
+ public static interface MediaStore.Files.FileColumns extends android.provider.MediaStore.MediaColumns {
+ field public static final String MEDIA_TYPE = "media_type";
field public static final int MEDIA_TYPE_AUDIO = 2; // 0x2
field public static final int MEDIA_TYPE_IMAGE = 1; // 0x1
field public static final int MEDIA_TYPE_NONE = 0; // 0x0
field public static final int MEDIA_TYPE_PLAYLIST = 4; // 0x4
field public static final int MEDIA_TYPE_VIDEO = 3; // 0x3
- field public static final java.lang.String MIME_TYPE = "mime_type";
- field public static final java.lang.String PARENT = "parent";
- field public static final java.lang.String TITLE = "title";
+ field public static final String MIME_TYPE = "mime_type";
+ field public static final String PARENT = "parent";
+ field public static final String TITLE = "title";
}
public static final class MediaStore.Images {
ctor public MediaStore.Images();
}
- public static abstract interface MediaStore.Images.ImageColumns implements android.provider.MediaStore.MediaColumns {
- field public static final java.lang.String BUCKET_DISPLAY_NAME = "bucket_display_name";
- field public static final java.lang.String BUCKET_ID = "bucket_id";
- field public static final java.lang.String DATE_TAKEN = "datetaken";
- field public static final java.lang.String DESCRIPTION = "description";
- field public static final java.lang.String IS_PRIVATE = "isprivate";
- field public static final deprecated java.lang.String LATITUDE = "latitude";
- field public static final deprecated java.lang.String LONGITUDE = "longitude";
- field public static final deprecated java.lang.String MINI_THUMB_MAGIC = "mini_thumb_magic";
- field public static final java.lang.String ORIENTATION = "orientation";
- field public static final deprecated java.lang.String PICASA_ID = "picasa_id";
- field public static final java.lang.String SECONDARY_BUCKET_ID = "secondary_bucket_id";
+ public static interface MediaStore.Images.ImageColumns extends android.provider.MediaStore.MediaColumns {
+ field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
+ field public static final String BUCKET_ID = "bucket_id";
+ field public static final String DATE_TAKEN = "datetaken";
+ field public static final String DESCRIPTION = "description";
+ field public static final String IS_PRIVATE = "isprivate";
+ field @Deprecated public static final String LATITUDE = "latitude";
+ field @Deprecated public static final String LONGITUDE = "longitude";
+ field @Deprecated public static final String MINI_THUMB_MAGIC = "mini_thumb_magic";
+ field public static final String ORIENTATION = "orientation";
+ field @Deprecated public static final String PICASA_ID = "picasa_id";
+ field public static final String SECONDARY_BUCKET_ID = "secondary_bucket_id";
}
public static final class MediaStore.Images.Media implements android.provider.MediaStore.Images.ImageColumns {
ctor public MediaStore.Images.Media();
method public static android.graphics.Bitmap getBitmap(android.content.ContentResolver, android.net.Uri) throws java.io.FileNotFoundException, java.io.IOException;
- method public static android.net.Uri getContentUri(java.lang.String);
- method public static java.lang.String insertImage(android.content.ContentResolver, java.lang.String, java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
- method public static java.lang.String insertImage(android.content.ContentResolver, android.graphics.Bitmap, java.lang.String, java.lang.String);
- method public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, java.lang.String[]);
- method public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, java.lang.String[], java.lang.String, java.lang.String);
- method public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/image";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "bucket_display_name";
+ method public static android.net.Uri getContentUri(String);
+ method public static String insertImage(android.content.ContentResolver, String, String, String) throws java.io.FileNotFoundException;
+ method public static String insertImage(android.content.ContentResolver, android.graphics.Bitmap, String, String);
+ method public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[]);
+ method public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[], String, String);
+ method public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[], String, String[], String);
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/image";
+ field public static final String DEFAULT_SORT_ORDER = "bucket_display_name";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
field public static final android.net.Uri INTERNAL_CONTENT_URI;
}
public static class MediaStore.Images.Thumbnails implements android.provider.BaseColumns {
ctor public MediaStore.Images.Thumbnails();
- method public static deprecated void cancelThumbnailRequest(android.content.ContentResolver, long);
- method public static deprecated void cancelThumbnailRequest(android.content.ContentResolver, long, long);
- method public static android.net.Uri getContentUri(java.lang.String);
- method public static deprecated android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, int, android.graphics.BitmapFactory.Options);
- method public static deprecated android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, long, int, android.graphics.BitmapFactory.Options);
- method public static final android.database.Cursor query(android.content.ContentResolver, android.net.Uri, java.lang.String[]);
- method public static final android.database.Cursor queryMiniThumbnail(android.content.ContentResolver, long, int, java.lang.String[]);
- method public static final android.database.Cursor queryMiniThumbnails(android.content.ContentResolver, android.net.Uri, int, java.lang.String[]);
- field public static final deprecated java.lang.String DATA = "_data";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "image_id ASC";
+ method @Deprecated public static void cancelThumbnailRequest(android.content.ContentResolver, long);
+ method @Deprecated public static void cancelThumbnailRequest(android.content.ContentResolver, long, long);
+ method public static android.net.Uri getContentUri(String);
+ method @Deprecated public static android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, int, android.graphics.BitmapFactory.Options);
+ method @Deprecated public static android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, long, int, android.graphics.BitmapFactory.Options);
+ method public static final android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[]);
+ method public static final android.database.Cursor queryMiniThumbnail(android.content.ContentResolver, long, int, String[]);
+ method public static final android.database.Cursor queryMiniThumbnails(android.content.ContentResolver, android.net.Uri, int, String[]);
+ field @Deprecated public static final String DATA = "_data";
+ field public static final String DEFAULT_SORT_ORDER = "image_id ASC";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
field public static final int FULL_SCREEN_KIND = 2; // 0x2
- field public static final java.lang.String HEIGHT = "height";
- field public static final java.lang.String IMAGE_ID = "image_id";
+ field public static final String HEIGHT = "height";
+ field public static final String IMAGE_ID = "image_id";
field public static final android.net.Uri INTERNAL_CONTENT_URI;
- field public static final java.lang.String KIND = "kind";
+ field public static final String KIND = "kind";
field public static final int MICRO_KIND = 3; // 0x3
field public static final int MINI_KIND = 1; // 0x1
- field public static final java.lang.String THUMB_DATA = "thumb_data";
- field public static final java.lang.String WIDTH = "width";
+ field public static final String THUMB_DATA = "thumb_data";
+ field public static final String WIDTH = "width";
}
- public static abstract interface MediaStore.MediaColumns implements android.provider.BaseColumns {
- field public static final deprecated java.lang.String DATA = "_data";
- field public static final java.lang.String DATE_ADDED = "date_added";
- field public static final java.lang.String DATE_EXPIRES = "date_expires";
- field public static final java.lang.String DATE_MODIFIED = "date_modified";
- field public static final java.lang.String DISPLAY_NAME = "_display_name";
- field public static final java.lang.String HASH = "_hash";
- field public static final java.lang.String HEIGHT = "height";
- field public static final java.lang.String IS_PENDING = "is_pending";
- field public static final java.lang.String IS_TRASHED = "is_trashed";
- field public static final java.lang.String MIME_TYPE = "mime_type";
- field public static final java.lang.String OWNER_PACKAGE_NAME = "owner_package_name";
- field public static final java.lang.String SIZE = "_size";
- field public static final java.lang.String TITLE = "title";
- field public static final java.lang.String WIDTH = "width";
+ public static interface MediaStore.MediaColumns extends android.provider.BaseColumns {
+ field @Deprecated public static final String DATA = "_data";
+ field public static final String DATE_ADDED = "date_added";
+ field public static final String DATE_EXPIRES = "date_expires";
+ field public static final String DATE_MODIFIED = "date_modified";
+ field public static final String DISPLAY_NAME = "_display_name";
+ field public static final String HASH = "_hash";
+ field public static final String HEIGHT = "height";
+ field public static final String IS_PENDING = "is_pending";
+ field public static final String IS_TRASHED = "is_trashed";
+ field public static final String MIME_TYPE = "mime_type";
+ field public static final String OWNER_PACKAGE_NAME = "owner_package_name";
+ field public static final String SIZE = "_size";
+ field public static final String TITLE = "title";
+ field public static final String WIDTH = "width";
}
public static class MediaStore.PendingParams {
- ctor public MediaStore.PendingParams(android.net.Uri, java.lang.String, java.lang.String);
- method public void setDownloadUri(android.net.Uri);
- method public void setPrimaryDirectory(java.lang.String);
- method public void setRefererUri(android.net.Uri);
- method public void setSecondaryDirectory(java.lang.String);
+ ctor public MediaStore.PendingParams(@NonNull android.net.Uri, @NonNull String, @NonNull String);
+ method public void setDownloadUri(@Nullable android.net.Uri);
+ method public void setPrimaryDirectory(@Nullable String);
+ method public void setRefererUri(@Nullable android.net.Uri);
+ method public void setSecondaryDirectory(@Nullable String);
}
public static class MediaStore.PendingSession implements java.lang.AutoCloseable {
method public void abandon();
method public void close();
- method public void notifyProgress(int);
- method public android.os.ParcelFileDescriptor open() throws java.io.FileNotFoundException;
- method public java.io.OutputStream openOutputStream() throws java.io.FileNotFoundException;
- method public android.net.Uri publish();
+ method public void notifyProgress(@IntRange(from=0, to=100) int);
+ method @NonNull public android.os.ParcelFileDescriptor open() throws java.io.FileNotFoundException;
+ method @NonNull public java.io.OutputStream openOutputStream() throws java.io.FileNotFoundException;
+ method @NonNull public android.net.Uri publish();
}
public static final class MediaStore.Video {
ctor public MediaStore.Video();
- method public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, java.lang.String[]);
- field public static final java.lang.String DEFAULT_SORT_ORDER = "_display_name";
+ method public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[]);
+ field public static final String DEFAULT_SORT_ORDER = "_display_name";
}
public static final class MediaStore.Video.Media implements android.provider.MediaStore.Video.VideoColumns {
ctor public MediaStore.Video.Media();
- method public static android.net.Uri getContentUri(java.lang.String);
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/video";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "title";
+ method public static android.net.Uri getContentUri(String);
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/video";
+ field public static final String DEFAULT_SORT_ORDER = "title";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
field public static final android.net.Uri INTERNAL_CONTENT_URI;
}
public static class MediaStore.Video.Thumbnails implements android.provider.BaseColumns {
ctor public MediaStore.Video.Thumbnails();
- method public static deprecated void cancelThumbnailRequest(android.content.ContentResolver, long);
- method public static deprecated void cancelThumbnailRequest(android.content.ContentResolver, long, long);
- method public static android.net.Uri getContentUri(java.lang.String);
- method public static deprecated android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, int, android.graphics.BitmapFactory.Options);
- method public static deprecated android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, long, int, android.graphics.BitmapFactory.Options);
- field public static final deprecated java.lang.String DATA = "_data";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "video_id ASC";
+ method @Deprecated public static void cancelThumbnailRequest(android.content.ContentResolver, long);
+ method @Deprecated public static void cancelThumbnailRequest(android.content.ContentResolver, long, long);
+ method public static android.net.Uri getContentUri(String);
+ method @Deprecated public static android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, int, android.graphics.BitmapFactory.Options);
+ method @Deprecated public static android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, long, int, android.graphics.BitmapFactory.Options);
+ field @Deprecated public static final String DATA = "_data";
+ field public static final String DEFAULT_SORT_ORDER = "video_id ASC";
field public static final android.net.Uri EXTERNAL_CONTENT_URI;
field public static final int FULL_SCREEN_KIND = 2; // 0x2
- field public static final java.lang.String HEIGHT = "height";
+ field public static final String HEIGHT = "height";
field public static final android.net.Uri INTERNAL_CONTENT_URI;
- field public static final java.lang.String KIND = "kind";
+ field public static final String KIND = "kind";
field public static final int MICRO_KIND = 3; // 0x3
field public static final int MINI_KIND = 1; // 0x1
- field public static final java.lang.String VIDEO_ID = "video_id";
- field public static final java.lang.String WIDTH = "width";
+ field public static final String VIDEO_ID = "video_id";
+ field public static final String WIDTH = "width";
}
- public static abstract interface MediaStore.Video.VideoColumns implements android.provider.MediaStore.MediaColumns {
- field public static final java.lang.String ALBUM = "album";
- field public static final java.lang.String ARTIST = "artist";
- field public static final java.lang.String BOOKMARK = "bookmark";
- field public static final java.lang.String BUCKET_DISPLAY_NAME = "bucket_display_name";
- field public static final java.lang.String BUCKET_ID = "bucket_id";
- field public static final java.lang.String CATEGORY = "category";
- field public static final java.lang.String DATE_TAKEN = "datetaken";
- field public static final java.lang.String DESCRIPTION = "description";
- field public static final java.lang.String DURATION = "duration";
- field public static final java.lang.String IS_PRIVATE = "isprivate";
- field public static final java.lang.String LANGUAGE = "language";
- field public static final deprecated java.lang.String LATITUDE = "latitude";
- field public static final deprecated java.lang.String LONGITUDE = "longitude";
- field public static final deprecated java.lang.String MINI_THUMB_MAGIC = "mini_thumb_magic";
- field public static final java.lang.String RESOLUTION = "resolution";
- field public static final java.lang.String SECONDARY_BUCKET_ID = "secondary_bucket_id";
- field public static final java.lang.String TAGS = "tags";
+ public static interface MediaStore.Video.VideoColumns extends android.provider.MediaStore.MediaColumns {
+ field public static final String ALBUM = "album";
+ field public static final String ARTIST = "artist";
+ field public static final String BOOKMARK = "bookmark";
+ field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
+ field public static final String BUCKET_ID = "bucket_id";
+ field public static final String CATEGORY = "category";
+ field public static final String DATE_TAKEN = "datetaken";
+ field public static final String DESCRIPTION = "description";
+ field public static final String DURATION = "duration";
+ field public static final String IS_PRIVATE = "isprivate";
+ field public static final String LANGUAGE = "language";
+ field @Deprecated public static final String LATITUDE = "latitude";
+ field @Deprecated public static final String LONGITUDE = "longitude";
+ field @Deprecated public static final String MINI_THUMB_MAGIC = "mini_thumb_magic";
+ field public static final String RESOLUTION = "resolution";
+ field public static final String SECONDARY_BUCKET_ID = "secondary_bucket_id";
+ field public static final String TAGS = "tags";
}
- public abstract interface OpenableColumns {
- field public static final java.lang.String DISPLAY_NAME = "_display_name";
- field public static final java.lang.String SIZE = "_size";
+ public interface OpenableColumns {
+ field public static final String DISPLAY_NAME = "_display_name";
+ field public static final String SIZE = "_size";
}
public class SearchRecentSuggestions {
- ctor public SearchRecentSuggestions(android.content.Context, java.lang.String, int);
+ ctor public SearchRecentSuggestions(android.content.Context, String, int);
method public void clearHistory();
- method public void saveRecentQuery(java.lang.String, java.lang.String);
+ method public void saveRecentQuery(String, String);
method protected void truncateHistory(android.content.ContentResolver, int);
- field public static final java.lang.String[] QUERIES_PROJECTION_1LINE;
- field public static final java.lang.String[] QUERIES_PROJECTION_2LINE;
+ field public static final String[] QUERIES_PROJECTION_1LINE;
+ field public static final String[] QUERIES_PROJECTION_2LINE;
field public static final int QUERIES_PROJECTION_DATE_INDEX = 1; // 0x1
field public static final int QUERIES_PROJECTION_DISPLAY1_INDEX = 3; // 0x3
field public static final int QUERIES_PROJECTION_DISPLAY2_INDEX = 4; // 0x4
@@ -38387,404 +38526,404 @@
public final class Settings {
ctor public Settings();
method public static boolean canDrawOverlays(android.content.Context);
- field public static final java.lang.String ACTION_ACCESSIBILITY_SETTINGS = "android.settings.ACCESSIBILITY_SETTINGS";
- field public static final java.lang.String ACTION_ADD_ACCOUNT = "android.settings.ADD_ACCOUNT_SETTINGS";
- field public static final java.lang.String ACTION_AIRPLANE_MODE_SETTINGS = "android.settings.AIRPLANE_MODE_SETTINGS";
- field public static final java.lang.String ACTION_APN_SETTINGS = "android.settings.APN_SETTINGS";
- field public static final java.lang.String ACTION_APPLICATION_DETAILS_SETTINGS = "android.settings.APPLICATION_DETAILS_SETTINGS";
- field public static final java.lang.String ACTION_APPLICATION_DEVELOPMENT_SETTINGS = "android.settings.APPLICATION_DEVELOPMENT_SETTINGS";
- field public static final java.lang.String ACTION_APPLICATION_SETTINGS = "android.settings.APPLICATION_SETTINGS";
- field public static final java.lang.String ACTION_APP_NOTIFICATION_SETTINGS = "android.settings.APP_NOTIFICATION_SETTINGS";
- field public static final java.lang.String ACTION_APP_SEARCH_SETTINGS = "android.settings.APP_SEARCH_SETTINGS";
- field public static final java.lang.String ACTION_APP_USAGE_SETTINGS = "android.settings.action.APP_USAGE_SETTINGS";
- field public static final java.lang.String ACTION_BATTERY_SAVER_SETTINGS = "android.settings.BATTERY_SAVER_SETTINGS";
- field public static final java.lang.String ACTION_BLUETOOTH_SETTINGS = "android.settings.BLUETOOTH_SETTINGS";
- field public static final java.lang.String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS";
- field public static final java.lang.String ACTION_CAST_SETTINGS = "android.settings.CAST_SETTINGS";
- field public static final java.lang.String ACTION_CHANNEL_NOTIFICATION_SETTINGS = "android.settings.CHANNEL_NOTIFICATION_SETTINGS";
- field public static final java.lang.String ACTION_DATA_ROAMING_SETTINGS = "android.settings.DATA_ROAMING_SETTINGS";
- field public static final java.lang.String ACTION_DATA_USAGE_SETTINGS = "android.settings.DATA_USAGE_SETTINGS";
- field public static final java.lang.String ACTION_DATE_SETTINGS = "android.settings.DATE_SETTINGS";
- field public static final java.lang.String ACTION_DEVICE_INFO_SETTINGS = "android.settings.DEVICE_INFO_SETTINGS";
- field public static final java.lang.String ACTION_DISPLAY_SETTINGS = "android.settings.DISPLAY_SETTINGS";
- field public static final java.lang.String ACTION_DREAM_SETTINGS = "android.settings.DREAM_SETTINGS";
- field public static final java.lang.String ACTION_FINGERPRINT_ENROLL = "android.settings.FINGERPRINT_ENROLL";
- field public static final java.lang.String ACTION_HARD_KEYBOARD_SETTINGS = "android.settings.HARD_KEYBOARD_SETTINGS";
- field public static final java.lang.String ACTION_HOME_SETTINGS = "android.settings.HOME_SETTINGS";
- field public static final java.lang.String ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS = "android.settings.IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS";
- field public static final java.lang.String ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS = "android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS";
- field public static final java.lang.String ACTION_INPUT_METHOD_SETTINGS = "android.settings.INPUT_METHOD_SETTINGS";
- field public static final java.lang.String ACTION_INPUT_METHOD_SUBTYPE_SETTINGS = "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS";
- field public static final java.lang.String ACTION_INTERNAL_STORAGE_SETTINGS = "android.settings.INTERNAL_STORAGE_SETTINGS";
- field public static final java.lang.String ACTION_LOCALE_SETTINGS = "android.settings.LOCALE_SETTINGS";
- field public static final java.lang.String ACTION_LOCATION_SOURCE_SETTINGS = "android.settings.LOCATION_SOURCE_SETTINGS";
- field public static final java.lang.String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS = "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS";
- field public static final java.lang.String ACTION_MANAGE_APPLICATIONS_SETTINGS = "android.settings.MANAGE_APPLICATIONS_SETTINGS";
- field public static final java.lang.String ACTION_MANAGE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_DEFAULT_APPS_SETTINGS";
- field public static final java.lang.String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMISSION";
- field public static final java.lang.String ACTION_MANAGE_UNKNOWN_APP_SOURCES = "android.settings.MANAGE_UNKNOWN_APP_SOURCES";
- field public static final java.lang.String ACTION_MANAGE_WRITE_SETTINGS = "android.settings.action.MANAGE_WRITE_SETTINGS";
- field public static final java.lang.String ACTION_MEMORY_CARD_SETTINGS = "android.settings.MEMORY_CARD_SETTINGS";
- field public static final java.lang.String ACTION_NETWORK_OPERATOR_SETTINGS = "android.settings.NETWORK_OPERATOR_SETTINGS";
- field public static final java.lang.String ACTION_NFCSHARING_SETTINGS = "android.settings.NFCSHARING_SETTINGS";
- field public static final java.lang.String ACTION_NFC_PAYMENT_SETTINGS = "android.settings.NFC_PAYMENT_SETTINGS";
- field public static final java.lang.String ACTION_NFC_SETTINGS = "android.settings.NFC_SETTINGS";
- field public static final java.lang.String ACTION_NIGHT_DISPLAY_SETTINGS = "android.settings.NIGHT_DISPLAY_SETTINGS";
- field public static final java.lang.String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";
- field public static final java.lang.String ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS";
- field public static final java.lang.String ACTION_PRINT_SETTINGS = "android.settings.ACTION_PRINT_SETTINGS";
- field public static final java.lang.String ACTION_PRIVACY_SETTINGS = "android.settings.PRIVACY_SETTINGS";
- field public static final java.lang.String ACTION_QUICK_LAUNCH_SETTINGS = "android.settings.QUICK_LAUNCH_SETTINGS";
- field public static final java.lang.String ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
- field public static final java.lang.String ACTION_REQUEST_SET_AUTOFILL_SERVICE = "android.settings.REQUEST_SET_AUTOFILL_SERVICE";
- field public static final java.lang.String ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
- field public static final java.lang.String ACTION_SECURITY_SETTINGS = "android.settings.SECURITY_SETTINGS";
- field public static final java.lang.String ACTION_SETTINGS = "android.settings.SETTINGS";
- field public static final java.lang.String ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO";
- field public static final java.lang.String ACTION_SOUND_SETTINGS = "android.settings.SOUND_SETTINGS";
- field public static final deprecated java.lang.String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS = "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";
- field public static final java.lang.String ACTION_SYNC_SETTINGS = "android.settings.SYNC_SETTINGS";
- field public static final java.lang.String ACTION_USAGE_ACCESS_SETTINGS = "android.settings.USAGE_ACCESS_SETTINGS";
- field public static final java.lang.String ACTION_USER_DICTIONARY_SETTINGS = "android.settings.USER_DICTIONARY_SETTINGS";
- field public static final java.lang.String ACTION_VOICE_CONTROL_AIRPLANE_MODE = "android.settings.VOICE_CONTROL_AIRPLANE_MODE";
- field public static final java.lang.String ACTION_VOICE_CONTROL_BATTERY_SAVER_MODE = "android.settings.VOICE_CONTROL_BATTERY_SAVER_MODE";
- field public static final java.lang.String ACTION_VOICE_CONTROL_DO_NOT_DISTURB_MODE = "android.settings.VOICE_CONTROL_DO_NOT_DISTURB_MODE";
- field public static final java.lang.String ACTION_VOICE_INPUT_SETTINGS = "android.settings.VOICE_INPUT_SETTINGS";
- field public static final java.lang.String ACTION_VPN_SETTINGS = "android.settings.VPN_SETTINGS";
- field public static final java.lang.String ACTION_VR_LISTENER_SETTINGS = "android.settings.VR_LISTENER_SETTINGS";
- field public static final java.lang.String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
- field public static final java.lang.String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS";
- field public static final java.lang.String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS";
- field public static final java.lang.String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS";
- field public static final java.lang.String ACTION_ZEN_MODE_PRIORITY_SETTINGS = "android.settings.ZEN_MODE_PRIORITY_SETTINGS";
- field public static final java.lang.String AUTHORITY = "settings";
- field public static final java.lang.String EXTRA_ACCOUNT_TYPES = "account_types";
- field public static final java.lang.String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled";
- field public static final java.lang.String EXTRA_APP_PACKAGE = "android.provider.extra.APP_PACKAGE";
- field public static final java.lang.String EXTRA_AUTHORITIES = "authorities";
- field public static final java.lang.String EXTRA_BATTERY_SAVER_MODE_ENABLED = "android.settings.extra.battery_saver_mode_enabled";
- field public static final java.lang.String EXTRA_CHANNEL_ID = "android.provider.extra.CHANNEL_ID";
- field public static final java.lang.String EXTRA_DO_NOT_DISTURB_MODE_ENABLED = "android.settings.extra.do_not_disturb_mode_enabled";
- field public static final java.lang.String EXTRA_DO_NOT_DISTURB_MODE_MINUTES = "android.settings.extra.do_not_disturb_mode_minutes";
- field public static final java.lang.String EXTRA_INPUT_METHOD_ID = "input_method_id";
- field public static final java.lang.String EXTRA_SUB_ID = "android.provider.extra.SUB_ID";
- field public static final java.lang.String INTENT_CATEGORY_USAGE_ACCESS_CONFIG = "android.intent.category.USAGE_ACCESS_CONFIG";
- field public static final java.lang.String METADATA_USAGE_ACCESS_REASON = "android.settings.metadata.USAGE_ACCESS_REASON";
+ field public static final String ACTION_ACCESSIBILITY_SETTINGS = "android.settings.ACCESSIBILITY_SETTINGS";
+ field public static final String ACTION_ADD_ACCOUNT = "android.settings.ADD_ACCOUNT_SETTINGS";
+ field public static final String ACTION_AIRPLANE_MODE_SETTINGS = "android.settings.AIRPLANE_MODE_SETTINGS";
+ field public static final String ACTION_APN_SETTINGS = "android.settings.APN_SETTINGS";
+ field public static final String ACTION_APPLICATION_DETAILS_SETTINGS = "android.settings.APPLICATION_DETAILS_SETTINGS";
+ field public static final String ACTION_APPLICATION_DEVELOPMENT_SETTINGS = "android.settings.APPLICATION_DEVELOPMENT_SETTINGS";
+ field public static final String ACTION_APPLICATION_SETTINGS = "android.settings.APPLICATION_SETTINGS";
+ field public static final String ACTION_APP_NOTIFICATION_SETTINGS = "android.settings.APP_NOTIFICATION_SETTINGS";
+ field public static final String ACTION_APP_SEARCH_SETTINGS = "android.settings.APP_SEARCH_SETTINGS";
+ field public static final String ACTION_APP_USAGE_SETTINGS = "android.settings.action.APP_USAGE_SETTINGS";
+ field public static final String ACTION_BATTERY_SAVER_SETTINGS = "android.settings.BATTERY_SAVER_SETTINGS";
+ field public static final String ACTION_BLUETOOTH_SETTINGS = "android.settings.BLUETOOTH_SETTINGS";
+ field public static final String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS";
+ field public static final String ACTION_CAST_SETTINGS = "android.settings.CAST_SETTINGS";
+ field public static final String ACTION_CHANNEL_NOTIFICATION_SETTINGS = "android.settings.CHANNEL_NOTIFICATION_SETTINGS";
+ field public static final String ACTION_DATA_ROAMING_SETTINGS = "android.settings.DATA_ROAMING_SETTINGS";
+ field public static final String ACTION_DATA_USAGE_SETTINGS = "android.settings.DATA_USAGE_SETTINGS";
+ field public static final String ACTION_DATE_SETTINGS = "android.settings.DATE_SETTINGS";
+ field public static final String ACTION_DEVICE_INFO_SETTINGS = "android.settings.DEVICE_INFO_SETTINGS";
+ field public static final String ACTION_DISPLAY_SETTINGS = "android.settings.DISPLAY_SETTINGS";
+ field public static final String ACTION_DREAM_SETTINGS = "android.settings.DREAM_SETTINGS";
+ field public static final String ACTION_FINGERPRINT_ENROLL = "android.settings.FINGERPRINT_ENROLL";
+ field public static final String ACTION_HARD_KEYBOARD_SETTINGS = "android.settings.HARD_KEYBOARD_SETTINGS";
+ field public static final String ACTION_HOME_SETTINGS = "android.settings.HOME_SETTINGS";
+ field public static final String ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS = "android.settings.IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS";
+ field public static final String ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS = "android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS";
+ field public static final String ACTION_INPUT_METHOD_SETTINGS = "android.settings.INPUT_METHOD_SETTINGS";
+ field public static final String ACTION_INPUT_METHOD_SUBTYPE_SETTINGS = "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS";
+ field public static final String ACTION_INTERNAL_STORAGE_SETTINGS = "android.settings.INTERNAL_STORAGE_SETTINGS";
+ field public static final String ACTION_LOCALE_SETTINGS = "android.settings.LOCALE_SETTINGS";
+ field public static final String ACTION_LOCATION_SOURCE_SETTINGS = "android.settings.LOCATION_SOURCE_SETTINGS";
+ field public static final String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS = "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS";
+ field public static final String ACTION_MANAGE_APPLICATIONS_SETTINGS = "android.settings.MANAGE_APPLICATIONS_SETTINGS";
+ field public static final String ACTION_MANAGE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_DEFAULT_APPS_SETTINGS";
+ field public static final String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMISSION";
+ field public static final String ACTION_MANAGE_UNKNOWN_APP_SOURCES = "android.settings.MANAGE_UNKNOWN_APP_SOURCES";
+ field public static final String ACTION_MANAGE_WRITE_SETTINGS = "android.settings.action.MANAGE_WRITE_SETTINGS";
+ field public static final String ACTION_MEMORY_CARD_SETTINGS = "android.settings.MEMORY_CARD_SETTINGS";
+ field public static final String ACTION_NETWORK_OPERATOR_SETTINGS = "android.settings.NETWORK_OPERATOR_SETTINGS";
+ field public static final String ACTION_NFCSHARING_SETTINGS = "android.settings.NFCSHARING_SETTINGS";
+ field public static final String ACTION_NFC_PAYMENT_SETTINGS = "android.settings.NFC_PAYMENT_SETTINGS";
+ field public static final String ACTION_NFC_SETTINGS = "android.settings.NFC_SETTINGS";
+ field public static final String ACTION_NIGHT_DISPLAY_SETTINGS = "android.settings.NIGHT_DISPLAY_SETTINGS";
+ field public static final String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";
+ field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS";
+ field public static final String ACTION_PRINT_SETTINGS = "android.settings.ACTION_PRINT_SETTINGS";
+ field public static final String ACTION_PRIVACY_SETTINGS = "android.settings.PRIVACY_SETTINGS";
+ field public static final String ACTION_QUICK_LAUNCH_SETTINGS = "android.settings.QUICK_LAUNCH_SETTINGS";
+ field public static final String ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
+ field public static final String ACTION_REQUEST_SET_AUTOFILL_SERVICE = "android.settings.REQUEST_SET_AUTOFILL_SERVICE";
+ field public static final String ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
+ field public static final String ACTION_SECURITY_SETTINGS = "android.settings.SECURITY_SETTINGS";
+ field public static final String ACTION_SETTINGS = "android.settings.SETTINGS";
+ field public static final String ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO";
+ field public static final String ACTION_SOUND_SETTINGS = "android.settings.SOUND_SETTINGS";
+ field @Deprecated public static final String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS = "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";
+ field public static final String ACTION_SYNC_SETTINGS = "android.settings.SYNC_SETTINGS";
+ field public static final String ACTION_USAGE_ACCESS_SETTINGS = "android.settings.USAGE_ACCESS_SETTINGS";
+ field public static final String ACTION_USER_DICTIONARY_SETTINGS = "android.settings.USER_DICTIONARY_SETTINGS";
+ field public static final String ACTION_VOICE_CONTROL_AIRPLANE_MODE = "android.settings.VOICE_CONTROL_AIRPLANE_MODE";
+ field public static final String ACTION_VOICE_CONTROL_BATTERY_SAVER_MODE = "android.settings.VOICE_CONTROL_BATTERY_SAVER_MODE";
+ field public static final String ACTION_VOICE_CONTROL_DO_NOT_DISTURB_MODE = "android.settings.VOICE_CONTROL_DO_NOT_DISTURB_MODE";
+ field public static final String ACTION_VOICE_INPUT_SETTINGS = "android.settings.VOICE_INPUT_SETTINGS";
+ field public static final String ACTION_VPN_SETTINGS = "android.settings.VPN_SETTINGS";
+ field public static final String ACTION_VR_LISTENER_SETTINGS = "android.settings.VR_LISTENER_SETTINGS";
+ field public static final String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
+ field public static final String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS";
+ field public static final String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS";
+ field public static final String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS";
+ field public static final String ACTION_ZEN_MODE_PRIORITY_SETTINGS = "android.settings.ZEN_MODE_PRIORITY_SETTINGS";
+ field public static final String AUTHORITY = "settings";
+ field public static final String EXTRA_ACCOUNT_TYPES = "account_types";
+ field public static final String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled";
+ field public static final String EXTRA_APP_PACKAGE = "android.provider.extra.APP_PACKAGE";
+ field public static final String EXTRA_AUTHORITIES = "authorities";
+ field public static final String EXTRA_BATTERY_SAVER_MODE_ENABLED = "android.settings.extra.battery_saver_mode_enabled";
+ field public static final String EXTRA_CHANNEL_ID = "android.provider.extra.CHANNEL_ID";
+ field public static final String EXTRA_DO_NOT_DISTURB_MODE_ENABLED = "android.settings.extra.do_not_disturb_mode_enabled";
+ field public static final String EXTRA_DO_NOT_DISTURB_MODE_MINUTES = "android.settings.extra.do_not_disturb_mode_minutes";
+ field public static final String EXTRA_INPUT_METHOD_ID = "input_method_id";
+ field public static final String EXTRA_SUB_ID = "android.provider.extra.SUB_ID";
+ field public static final String INTENT_CATEGORY_USAGE_ACCESS_CONFIG = "android.intent.category.USAGE_ACCESS_CONFIG";
+ field public static final String METADATA_USAGE_ACCESS_REASON = "android.settings.metadata.USAGE_ACCESS_REASON";
}
public static final class Settings.Global extends android.provider.Settings.NameValueTable {
ctor public Settings.Global();
- method public static float getFloat(android.content.ContentResolver, java.lang.String, float);
- method public static float getFloat(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
- method public static int getInt(android.content.ContentResolver, java.lang.String, int);
- method public static int getInt(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
- method public static long getLong(android.content.ContentResolver, java.lang.String, long);
- method public static long getLong(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
- method public static java.lang.String getString(android.content.ContentResolver, java.lang.String);
- method public static android.net.Uri getUriFor(java.lang.String);
- method public static boolean putFloat(android.content.ContentResolver, java.lang.String, float);
- method public static boolean putInt(android.content.ContentResolver, java.lang.String, int);
- method public static boolean putLong(android.content.ContentResolver, java.lang.String, long);
- method public static boolean putString(android.content.ContentResolver, java.lang.String, java.lang.String);
- field public static final java.lang.String ADB_ENABLED = "adb_enabled";
- field public static final java.lang.String AIRPLANE_MODE_ON = "airplane_mode_on";
- field public static final java.lang.String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
- field public static final java.lang.String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
- field public static final java.lang.String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
- field public static final java.lang.String AUTO_TIME = "auto_time";
- field public static final java.lang.String AUTO_TIME_ZONE = "auto_time_zone";
- field public static final java.lang.String BLUETOOTH_ON = "bluetooth_on";
- field public static final java.lang.String BOOT_COUNT = "boot_count";
- field public static final java.lang.String CONTACT_METADATA_SYNC_ENABLED = "contact_metadata_sync_enabled";
+ method public static float getFloat(android.content.ContentResolver, String, float);
+ method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+ method public static int getInt(android.content.ContentResolver, String, int);
+ method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+ method public static long getLong(android.content.ContentResolver, String, long);
+ method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+ method public static String getString(android.content.ContentResolver, String);
+ method public static android.net.Uri getUriFor(String);
+ method public static boolean putFloat(android.content.ContentResolver, String, float);
+ method public static boolean putInt(android.content.ContentResolver, String, int);
+ method public static boolean putLong(android.content.ContentResolver, String, long);
+ method public static boolean putString(android.content.ContentResolver, String, String);
+ field public static final String ADB_ENABLED = "adb_enabled";
+ field public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
+ field public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
+ field public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
+ field public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
+ field public static final String AUTO_TIME = "auto_time";
+ field public static final String AUTO_TIME_ZONE = "auto_time_zone";
+ field public static final String BLUETOOTH_ON = "bluetooth_on";
+ field public static final String BOOT_COUNT = "boot_count";
+ field public static final String CONTACT_METADATA_SYNC_ENABLED = "contact_metadata_sync_enabled";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DATA_ROAMING = "data_roaming";
- field public static final java.lang.String DEBUG_APP = "debug_app";
- field public static final java.lang.String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
- field public static final java.lang.String DEVICE_NAME = "device_name";
- field public static final java.lang.String DEVICE_PROVISIONED = "device_provisioned";
- field public static final java.lang.String HTTP_PROXY = "http_proxy";
- field public static final deprecated java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
- field public static final java.lang.String MODE_RINGER = "mode_ringer";
- field public static final java.lang.String NETWORK_PREFERENCE = "network_preference";
- field public static final java.lang.String RADIO_BLUETOOTH = "bluetooth";
- field public static final java.lang.String RADIO_CELL = "cell";
- field public static final java.lang.String RADIO_NFC = "nfc";
- field public static final java.lang.String RADIO_WIFI = "wifi";
- field public static final deprecated java.lang.String SHOW_PROCESSES = "show_processes";
- field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
- field public static final java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
- field public static final java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
- field public static final java.lang.String USE_GOOGLE_MAIL = "use_google_mail";
- field public static final java.lang.String WAIT_FOR_DEBUGGER = "wait_for_debugger";
- field public static final java.lang.String WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN = "wifi_device_owner_configs_lockdown";
- field public static final java.lang.String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
- field public static final java.lang.String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
- field public static final deprecated java.lang.String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
- field public static final java.lang.String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
- field public static final java.lang.String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
- field public static final java.lang.String WIFI_ON = "wifi_on";
- field public static final java.lang.String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
+ field public static final String DATA_ROAMING = "data_roaming";
+ field public static final String DEBUG_APP = "debug_app";
+ field public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
+ field public static final String DEVICE_NAME = "device_name";
+ field public static final String DEVICE_PROVISIONED = "device_provisioned";
+ field public static final String HTTP_PROXY = "http_proxy";
+ field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
+ field public static final String MODE_RINGER = "mode_ringer";
+ field public static final String NETWORK_PREFERENCE = "network_preference";
+ field public static final String RADIO_BLUETOOTH = "bluetooth";
+ field public static final String RADIO_CELL = "cell";
+ field public static final String RADIO_NFC = "nfc";
+ field public static final String RADIO_WIFI = "wifi";
+ field @Deprecated public static final String SHOW_PROCESSES = "show_processes";
+ field public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
+ field public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
+ field public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
+ field public static final String USE_GOOGLE_MAIL = "use_google_mail";
+ field public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
+ field public static final String WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN = "wifi_device_owner_configs_lockdown";
+ field public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
+ field public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
+ field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
+ field public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
+ field public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
+ field public static final String WIFI_ON = "wifi_on";
+ field public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
field public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
field public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
field public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
- field public static final java.lang.String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
- field public static final java.lang.String WINDOW_ANIMATION_SCALE = "window_animation_scale";
+ field public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
+ field public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
}
public static class Settings.NameValueTable implements android.provider.BaseColumns {
ctor public Settings.NameValueTable();
- method public static android.net.Uri getUriFor(android.net.Uri, java.lang.String);
- method protected static boolean putString(android.content.ContentResolver, android.net.Uri, java.lang.String, java.lang.String);
- field public static final java.lang.String NAME = "name";
- field public static final java.lang.String VALUE = "value";
+ method public static android.net.Uri getUriFor(android.net.Uri, String);
+ method protected static boolean putString(android.content.ContentResolver, android.net.Uri, String, String);
+ field public static final String NAME = "name";
+ field public static final String VALUE = "value";
}
public static final class Settings.Panel {
- field public static final java.lang.String ACTION_INTERNET_CONNECTIVITY = "android.settings.panel.action.INTERNET_CONNECTIVITY";
- field public static final java.lang.String ACTION_VOLUME = "android.settings.panel.action.VOLUME";
+ field public static final String ACTION_INTERNET_CONNECTIVITY = "android.settings.panel.action.INTERNET_CONNECTIVITY";
+ field public static final String ACTION_VOLUME = "android.settings.panel.action.VOLUME";
}
public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
ctor public Settings.Secure();
- method public static float getFloat(android.content.ContentResolver, java.lang.String, float);
- method public static float getFloat(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
- method public static int getInt(android.content.ContentResolver, java.lang.String, int);
- method public static int getInt(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
- method public static long getLong(android.content.ContentResolver, java.lang.String, long);
- method public static long getLong(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
- method public static java.lang.String getString(android.content.ContentResolver, java.lang.String);
- method public static android.net.Uri getUriFor(java.lang.String);
- method public static deprecated boolean isLocationProviderEnabled(android.content.ContentResolver, java.lang.String);
- method public static boolean putFloat(android.content.ContentResolver, java.lang.String, float);
- method public static boolean putInt(android.content.ContentResolver, java.lang.String, int);
- method public static boolean putLong(android.content.ContentResolver, java.lang.String, long);
- method public static boolean putString(android.content.ContentResolver, java.lang.String, java.lang.String);
- method public static deprecated void setLocationProviderEnabled(android.content.ContentResolver, java.lang.String, boolean);
- field public static final java.lang.String ACCESSIBILITY_DISPLAY_INVERSION_ENABLED = "accessibility_display_inversion_enabled";
- field public static final java.lang.String ACCESSIBILITY_ENABLED = "accessibility_enabled";
- field public static final deprecated java.lang.String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password";
- field public static final deprecated java.lang.String ADB_ENABLED = "adb_enabled";
- field public static final java.lang.String ALLOWED_GEOLOCATION_ORIGINS = "allowed_geolocation_origins";
- field public static final deprecated java.lang.String ALLOW_MOCK_LOCATION = "mock_location";
- field public static final java.lang.String ANDROID_ID = "android_id";
- field public static final deprecated java.lang.String BACKGROUND_DATA = "background_data";
- field public static final deprecated java.lang.String BLUETOOTH_ON = "bluetooth_on";
+ method public static float getFloat(android.content.ContentResolver, String, float);
+ method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+ method public static int getInt(android.content.ContentResolver, String, int);
+ method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+ method public static long getLong(android.content.ContentResolver, String, long);
+ method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+ method public static String getString(android.content.ContentResolver, String);
+ method public static android.net.Uri getUriFor(String);
+ method @Deprecated public static boolean isLocationProviderEnabled(android.content.ContentResolver, String);
+ method public static boolean putFloat(android.content.ContentResolver, String, float);
+ method public static boolean putInt(android.content.ContentResolver, String, int);
+ method public static boolean putLong(android.content.ContentResolver, String, long);
+ method public static boolean putString(android.content.ContentResolver, String, String);
+ method @Deprecated public static void setLocationProviderEnabled(android.content.ContentResolver, String, boolean);
+ field public static final String ACCESSIBILITY_DISPLAY_INVERSION_ENABLED = "accessibility_display_inversion_enabled";
+ field public static final String ACCESSIBILITY_ENABLED = "accessibility_enabled";
+ field @Deprecated public static final String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password";
+ field @Deprecated public static final String ADB_ENABLED = "adb_enabled";
+ field public static final String ALLOWED_GEOLOCATION_ORIGINS = "allowed_geolocation_origins";
+ field @Deprecated public static final String ALLOW_MOCK_LOCATION = "mock_location";
+ field public static final String ANDROID_ID = "android_id";
+ field @Deprecated public static final String BACKGROUND_DATA = "background_data";
+ field @Deprecated public static final String BLUETOOTH_ON = "bluetooth_on";
field public static final android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DATA_ROAMING = "data_roaming";
- field public static final java.lang.String DEFAULT_INPUT_METHOD = "default_input_method";
- field public static final deprecated java.lang.String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
- field public static final deprecated java.lang.String DEVICE_PROVISIONED = "device_provisioned";
- field public static final java.lang.String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services";
- field public static final java.lang.String ENABLED_INPUT_METHODS = "enabled_input_methods";
- field public static final deprecated java.lang.String HTTP_PROXY = "http_proxy";
- field public static final java.lang.String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility";
- field public static final deprecated java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
- field public static final deprecated java.lang.String LOCATION_MODE = "location_mode";
- field public static final deprecated int LOCATION_MODE_BATTERY_SAVING = 2; // 0x2
- field public static final deprecated int LOCATION_MODE_HIGH_ACCURACY = 3; // 0x3
- field public static final deprecated int LOCATION_MODE_OFF = 0; // 0x0
- field public static final deprecated int LOCATION_MODE_SENSORS_ONLY = 1; // 0x1
- field public static final deprecated java.lang.String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
- field public static final deprecated java.lang.String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
- field public static final deprecated java.lang.String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
- field public static final deprecated java.lang.String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
- field public static final deprecated java.lang.String LOGGING_ID = "logging_id";
- field public static final deprecated java.lang.String NETWORK_PREFERENCE = "network_preference";
- field public static final java.lang.String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
- field public static final java.lang.String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
- field public static final java.lang.String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
- field public static final java.lang.String RTT_CALLING_MODE = "rtt_calling_mode";
- field public static final java.lang.String SELECTED_INPUT_METHOD_SUBTYPE = "selected_input_method_subtype";
- field public static final java.lang.String SETTINGS_CLASSNAME = "settings_classname";
- field public static final java.lang.String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
- field public static final java.lang.String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
- field public static final deprecated java.lang.String TTS_DEFAULT_COUNTRY = "tts_default_country";
- field public static final deprecated java.lang.String TTS_DEFAULT_LANG = "tts_default_lang";
- field public static final java.lang.String TTS_DEFAULT_PITCH = "tts_default_pitch";
- field public static final java.lang.String TTS_DEFAULT_RATE = "tts_default_rate";
- field public static final java.lang.String TTS_DEFAULT_SYNTH = "tts_default_synth";
- field public static final deprecated java.lang.String TTS_DEFAULT_VARIANT = "tts_default_variant";
- field public static final java.lang.String TTS_ENABLED_PLUGINS = "tts_enabled_plugins";
- field public static final deprecated java.lang.String TTS_USE_DEFAULTS = "tts_use_defaults";
- field public static final deprecated java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
- field public static final deprecated java.lang.String USE_GOOGLE_MAIL = "use_google_mail";
- field public static final deprecated java.lang.String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
- field public static final deprecated java.lang.String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
- field public static final deprecated java.lang.String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
- field public static final deprecated java.lang.String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
- field public static final deprecated java.lang.String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
- field public static final deprecated java.lang.String WIFI_ON = "wifi_on";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list";
+ field @Deprecated public static final String DATA_ROAMING = "data_roaming";
+ field public static final String DEFAULT_INPUT_METHOD = "default_input_method";
+ field @Deprecated public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
+ field @Deprecated public static final String DEVICE_PROVISIONED = "device_provisioned";
+ field public static final String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services";
+ field public static final String ENABLED_INPUT_METHODS = "enabled_input_methods";
+ field @Deprecated public static final String HTTP_PROXY = "http_proxy";
+ field public static final String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility";
+ field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
+ field @Deprecated public static final String LOCATION_MODE = "location_mode";
+ field @Deprecated public static final int LOCATION_MODE_BATTERY_SAVING = 2; // 0x2
+ field @Deprecated public static final int LOCATION_MODE_HIGH_ACCURACY = 3; // 0x3
+ field @Deprecated public static final int LOCATION_MODE_OFF = 0; // 0x0
+ field @Deprecated public static final int LOCATION_MODE_SENSORS_ONLY = 1; // 0x1
+ field @Deprecated public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
+ field @Deprecated public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
+ field @Deprecated public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
+ field @Deprecated public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
+ field @Deprecated public static final String LOGGING_ID = "logging_id";
+ field @Deprecated public static final String NETWORK_PREFERENCE = "network_preference";
+ field public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
+ field public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
+ field public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
+ field public static final String RTT_CALLING_MODE = "rtt_calling_mode";
+ field public static final String SELECTED_INPUT_METHOD_SUBTYPE = "selected_input_method_subtype";
+ field public static final String SETTINGS_CLASSNAME = "settings_classname";
+ field public static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
+ field public static final String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
+ field @Deprecated public static final String TTS_DEFAULT_COUNTRY = "tts_default_country";
+ field @Deprecated public static final String TTS_DEFAULT_LANG = "tts_default_lang";
+ field public static final String TTS_DEFAULT_PITCH = "tts_default_pitch";
+ field public static final String TTS_DEFAULT_RATE = "tts_default_rate";
+ field public static final String TTS_DEFAULT_SYNTH = "tts_default_synth";
+ field @Deprecated public static final String TTS_DEFAULT_VARIANT = "tts_default_variant";
+ field public static final String TTS_ENABLED_PLUGINS = "tts_enabled_plugins";
+ field @Deprecated public static final String TTS_USE_DEFAULTS = "tts_use_defaults";
+ field @Deprecated public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
+ field @Deprecated public static final String USE_GOOGLE_MAIL = "use_google_mail";
+ field @Deprecated public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
+ field @Deprecated public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
+ field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
+ field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
+ field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
+ field @Deprecated public static final String WIFI_ON = "wifi_on";
+ field @Deprecated public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
+ field @Deprecated public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
+ field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
+ field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
+ field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
+ field @Deprecated public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
+ field @Deprecated public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
+ field @Deprecated public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
+ field @Deprecated public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
+ field @Deprecated public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
+ field @Deprecated public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
+ field @Deprecated public static final String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list";
}
public static class Settings.SettingNotFoundException extends android.util.AndroidException {
- ctor public Settings.SettingNotFoundException(java.lang.String);
+ ctor public Settings.SettingNotFoundException(String);
}
public static final class Settings.System extends android.provider.Settings.NameValueTable {
ctor public Settings.System();
method public static boolean canWrite(android.content.Context);
method public static void getConfiguration(android.content.ContentResolver, android.content.res.Configuration);
- method public static float getFloat(android.content.ContentResolver, java.lang.String, float);
- method public static float getFloat(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
- method public static int getInt(android.content.ContentResolver, java.lang.String, int);
- method public static int getInt(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
- method public static long getLong(android.content.ContentResolver, java.lang.String, long);
- method public static long getLong(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
- method public static deprecated boolean getShowGTalkServiceStatus(android.content.ContentResolver);
- method public static java.lang.String getString(android.content.ContentResolver, java.lang.String);
- method public static android.net.Uri getUriFor(java.lang.String);
+ method public static float getFloat(android.content.ContentResolver, String, float);
+ method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+ method public static int getInt(android.content.ContentResolver, String, int);
+ method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+ method public static long getLong(android.content.ContentResolver, String, long);
+ method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+ method @Deprecated public static boolean getShowGTalkServiceStatus(android.content.ContentResolver);
+ method public static String getString(android.content.ContentResolver, String);
+ method public static android.net.Uri getUriFor(String);
method public static boolean putConfiguration(android.content.ContentResolver, android.content.res.Configuration);
- method public static boolean putFloat(android.content.ContentResolver, java.lang.String, float);
- method public static boolean putInt(android.content.ContentResolver, java.lang.String, int);
- method public static boolean putLong(android.content.ContentResolver, java.lang.String, long);
- method public static boolean putString(android.content.ContentResolver, java.lang.String, java.lang.String);
- method public static deprecated void setShowGTalkServiceStatus(android.content.ContentResolver, boolean);
- field public static final java.lang.String ACCELEROMETER_ROTATION = "accelerometer_rotation";
- field public static final deprecated java.lang.String ADB_ENABLED = "adb_enabled";
- field public static final deprecated java.lang.String AIRPLANE_MODE_ON = "airplane_mode_on";
- field public static final deprecated java.lang.String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
- field public static final java.lang.String ALARM_ALERT = "alarm_alert";
- field public static final deprecated java.lang.String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
- field public static final deprecated java.lang.String ANDROID_ID = "android_id";
- field public static final deprecated java.lang.String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
- field public static final deprecated java.lang.String AUTO_TIME = "auto_time";
- field public static final deprecated java.lang.String AUTO_TIME_ZONE = "auto_time_zone";
- field public static final java.lang.String BLUETOOTH_DISCOVERABILITY = "bluetooth_discoverability";
- field public static final java.lang.String BLUETOOTH_DISCOVERABILITY_TIMEOUT = "bluetooth_discoverability_timeout";
- field public static final deprecated java.lang.String BLUETOOTH_ON = "bluetooth_on";
+ method public static boolean putFloat(android.content.ContentResolver, String, float);
+ method public static boolean putInt(android.content.ContentResolver, String, int);
+ method public static boolean putLong(android.content.ContentResolver, String, long);
+ method public static boolean putString(android.content.ContentResolver, String, String);
+ method @Deprecated public static void setShowGTalkServiceStatus(android.content.ContentResolver, boolean);
+ field public static final String ACCELEROMETER_ROTATION = "accelerometer_rotation";
+ field @Deprecated public static final String ADB_ENABLED = "adb_enabled";
+ field @Deprecated public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
+ field @Deprecated public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
+ field public static final String ALARM_ALERT = "alarm_alert";
+ field @Deprecated public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
+ field @Deprecated public static final String ANDROID_ID = "android_id";
+ field @Deprecated public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
+ field @Deprecated public static final String AUTO_TIME = "auto_time";
+ field @Deprecated public static final String AUTO_TIME_ZONE = "auto_time_zone";
+ field public static final String BLUETOOTH_DISCOVERABILITY = "bluetooth_discoverability";
+ field public static final String BLUETOOTH_DISCOVERABILITY_TIMEOUT = "bluetooth_discoverability_timeout";
+ field @Deprecated public static final String BLUETOOTH_ON = "bluetooth_on";
field public static final android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String DATA_ROAMING = "data_roaming";
- field public static final java.lang.String DATE_FORMAT = "date_format";
- field public static final deprecated java.lang.String DEBUG_APP = "debug_app";
+ field @Deprecated public static final String DATA_ROAMING = "data_roaming";
+ field public static final String DATE_FORMAT = "date_format";
+ field @Deprecated public static final String DEBUG_APP = "debug_app";
field public static final android.net.Uri DEFAULT_ALARM_ALERT_URI;
field public static final android.net.Uri DEFAULT_NOTIFICATION_URI;
field public static final android.net.Uri DEFAULT_RINGTONE_URI;
- field public static final deprecated java.lang.String DEVICE_PROVISIONED = "device_provisioned";
- field public static final deprecated java.lang.String DIM_SCREEN = "dim_screen";
- field public static final java.lang.String DTMF_TONE_TYPE_WHEN_DIALING = "dtmf_tone_type";
- field public static final java.lang.String DTMF_TONE_WHEN_DIALING = "dtmf_tone";
- field public static final java.lang.String END_BUTTON_BEHAVIOR = "end_button_behavior";
- field public static final java.lang.String FONT_SCALE = "font_scale";
- field public static final java.lang.String HAPTIC_FEEDBACK_ENABLED = "haptic_feedback_enabled";
- field public static final deprecated java.lang.String HTTP_PROXY = "http_proxy";
- field public static final deprecated java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
- field public static final deprecated java.lang.String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
- field public static final deprecated java.lang.String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
- field public static final deprecated java.lang.String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
- field public static final deprecated java.lang.String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
- field public static final deprecated java.lang.String LOGGING_ID = "logging_id";
- field public static final deprecated java.lang.String MODE_RINGER = "mode_ringer";
- field public static final java.lang.String MODE_RINGER_STREAMS_AFFECTED = "mode_ringer_streams_affected";
- field public static final java.lang.String MUTE_STREAMS_AFFECTED = "mute_streams_affected";
- field public static final deprecated java.lang.String NETWORK_PREFERENCE = "network_preference";
- field public static final deprecated java.lang.String NEXT_ALARM_FORMATTED = "next_alarm_formatted";
- field public static final java.lang.String NOTIFICATION_SOUND = "notification_sound";
- field public static final deprecated java.lang.String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
- field public static final deprecated java.lang.String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
- field public static final deprecated java.lang.String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
- field public static final deprecated java.lang.String RADIO_BLUETOOTH = "bluetooth";
- field public static final deprecated java.lang.String RADIO_CELL = "cell";
- field public static final deprecated java.lang.String RADIO_NFC = "nfc";
- field public static final deprecated java.lang.String RADIO_WIFI = "wifi";
- field public static final java.lang.String RINGTONE = "ringtone";
- field public static final java.lang.String SCREEN_BRIGHTNESS = "screen_brightness";
- field public static final java.lang.String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
+ field @Deprecated public static final String DEVICE_PROVISIONED = "device_provisioned";
+ field @Deprecated public static final String DIM_SCREEN = "dim_screen";
+ field public static final String DTMF_TONE_TYPE_WHEN_DIALING = "dtmf_tone_type";
+ field public static final String DTMF_TONE_WHEN_DIALING = "dtmf_tone";
+ field public static final String END_BUTTON_BEHAVIOR = "end_button_behavior";
+ field public static final String FONT_SCALE = "font_scale";
+ field public static final String HAPTIC_FEEDBACK_ENABLED = "haptic_feedback_enabled";
+ field @Deprecated public static final String HTTP_PROXY = "http_proxy";
+ field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
+ field @Deprecated public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
+ field @Deprecated public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
+ field @Deprecated public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
+ field @Deprecated public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
+ field @Deprecated public static final String LOGGING_ID = "logging_id";
+ field @Deprecated public static final String MODE_RINGER = "mode_ringer";
+ field public static final String MODE_RINGER_STREAMS_AFFECTED = "mode_ringer_streams_affected";
+ field public static final String MUTE_STREAMS_AFFECTED = "mute_streams_affected";
+ field @Deprecated public static final String NETWORK_PREFERENCE = "network_preference";
+ field @Deprecated public static final String NEXT_ALARM_FORMATTED = "next_alarm_formatted";
+ field public static final String NOTIFICATION_SOUND = "notification_sound";
+ field @Deprecated public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
+ field @Deprecated public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
+ field @Deprecated public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
+ field @Deprecated public static final String RADIO_BLUETOOTH = "bluetooth";
+ field @Deprecated public static final String RADIO_CELL = "cell";
+ field @Deprecated public static final String RADIO_NFC = "nfc";
+ field @Deprecated public static final String RADIO_WIFI = "wifi";
+ field public static final String RINGTONE = "ringtone";
+ field public static final String SCREEN_BRIGHTNESS = "screen_brightness";
+ field public static final String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
field public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1; // 0x1
field public static final int SCREEN_BRIGHTNESS_MODE_MANUAL = 0; // 0x0
- field public static final java.lang.String SCREEN_OFF_TIMEOUT = "screen_off_timeout";
- field public static final deprecated java.lang.String SETTINGS_CLASSNAME = "settings_classname";
- field public static final java.lang.String SETUP_WIZARD_HAS_RUN = "setup_wizard_has_run";
- field public static final java.lang.String SHOW_GTALK_SERVICE_STATUS = "SHOW_GTALK_SERVICE_STATUS";
- field public static final deprecated java.lang.String SHOW_PROCESSES = "show_processes";
- field public static final deprecated java.lang.String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
- field public static final java.lang.String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
- field public static final deprecated java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
- field public static final java.lang.String TEXT_AUTO_CAPS = "auto_caps";
- field public static final java.lang.String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
- field public static final java.lang.String TEXT_AUTO_REPLACE = "auto_replace";
- field public static final java.lang.String TEXT_SHOW_PASSWORD = "show_password";
- field public static final java.lang.String TIME_12_24 = "time_12_24";
- field public static final deprecated java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
- field public static final deprecated java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
- field public static final java.lang.String USER_ROTATION = "user_rotation";
- field public static final deprecated java.lang.String USE_GOOGLE_MAIL = "use_google_mail";
- field public static final java.lang.String VIBRATE_ON = "vibrate_on";
- field public static final java.lang.String VIBRATE_WHEN_RINGING = "vibrate_when_ringing";
- field public static final deprecated java.lang.String WAIT_FOR_DEBUGGER = "wait_for_debugger";
- field public static final deprecated java.lang.String WALLPAPER_ACTIVITY = "wallpaper_activity";
- field public static final deprecated java.lang.String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
- field public static final deprecated java.lang.String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
- field public static final deprecated java.lang.String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
- field public static final deprecated java.lang.String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
- field public static final deprecated java.lang.String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
- field public static final deprecated java.lang.String WIFI_ON = "wifi_on";
- field public static final deprecated java.lang.String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
- field public static final deprecated int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
- field public static final deprecated int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
- field public static final deprecated int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
- field public static final deprecated java.lang.String WIFI_STATIC_DNS1 = "wifi_static_dns1";
- field public static final deprecated java.lang.String WIFI_STATIC_DNS2 = "wifi_static_dns2";
- field public static final deprecated java.lang.String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
- field public static final deprecated java.lang.String WIFI_STATIC_IP = "wifi_static_ip";
- field public static final deprecated java.lang.String WIFI_STATIC_NETMASK = "wifi_static_netmask";
- field public static final deprecated java.lang.String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
- field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
- field public static final deprecated java.lang.String WINDOW_ANIMATION_SCALE = "window_animation_scale";
+ field public static final String SCREEN_OFF_TIMEOUT = "screen_off_timeout";
+ field @Deprecated public static final String SETTINGS_CLASSNAME = "settings_classname";
+ field public static final String SETUP_WIZARD_HAS_RUN = "setup_wizard_has_run";
+ field public static final String SHOW_GTALK_SERVICE_STATUS = "SHOW_GTALK_SERVICE_STATUS";
+ field @Deprecated public static final String SHOW_PROCESSES = "show_processes";
+ field @Deprecated public static final String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
+ field public static final String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
+ field @Deprecated public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
+ field public static final String TEXT_AUTO_CAPS = "auto_caps";
+ field public static final String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
+ field public static final String TEXT_AUTO_REPLACE = "auto_replace";
+ field public static final String TEXT_SHOW_PASSWORD = "show_password";
+ field public static final String TIME_12_24 = "time_12_24";
+ field @Deprecated public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
+ field @Deprecated public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
+ field public static final String USER_ROTATION = "user_rotation";
+ field @Deprecated public static final String USE_GOOGLE_MAIL = "use_google_mail";
+ field public static final String VIBRATE_ON = "vibrate_on";
+ field public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing";
+ field @Deprecated public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
+ field @Deprecated public static final String WALLPAPER_ACTIVITY = "wallpaper_activity";
+ field @Deprecated public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
+ field @Deprecated public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
+ field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
+ field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
+ field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
+ field @Deprecated public static final String WIFI_ON = "wifi_on";
+ field @Deprecated public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
+ field @Deprecated public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
+ field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
+ field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
+ field @Deprecated public static final String WIFI_STATIC_DNS1 = "wifi_static_dns1";
+ field @Deprecated public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2";
+ field @Deprecated public static final String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
+ field @Deprecated public static final String WIFI_STATIC_IP = "wifi_static_ip";
+ field @Deprecated public static final String WIFI_STATIC_NETMASK = "wifi_static_netmask";
+ field @Deprecated public static final String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
+ field @Deprecated public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
+ field @Deprecated public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
+ field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
+ field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
+ field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
+ field @Deprecated public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
+ field @Deprecated public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
+ field @Deprecated public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
+ field @Deprecated public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
+ field @Deprecated public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
+ field @Deprecated public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
+ field @Deprecated public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
}
public class SettingsSlicesContract {
- field public static final java.lang.String AUTHORITY = "android.settings.slices";
+ field public static final String AUTHORITY = "android.settings.slices";
field public static final android.net.Uri BASE_URI;
- field public static final java.lang.String KEY_AIRPLANE_MODE = "airplane_mode";
- field public static final java.lang.String KEY_BATTERY_SAVER = "battery_saver";
- field public static final java.lang.String KEY_BLUETOOTH = "bluetooth";
- field public static final java.lang.String KEY_LOCATION = "location";
- field public static final java.lang.String KEY_WIFI = "wifi";
- field public static final java.lang.String PATH_SETTING_ACTION = "action";
- field public static final java.lang.String PATH_SETTING_INTENT = "intent";
+ field public static final String KEY_AIRPLANE_MODE = "airplane_mode";
+ field public static final String KEY_BATTERY_SAVER = "battery_saver";
+ field public static final String KEY_BLUETOOTH = "bluetooth";
+ field public static final String KEY_LOCATION = "location";
+ field public static final String KEY_WIFI = "wifi";
+ field public static final String PATH_SETTING_ACTION = "action";
+ field public static final String PATH_SETTING_INTENT = "intent";
}
public class SyncStateContract {
ctor public SyncStateContract();
}
- public static abstract interface SyncStateContract.Columns implements android.provider.BaseColumns {
- field public static final java.lang.String ACCOUNT_NAME = "account_name";
- field public static final java.lang.String ACCOUNT_TYPE = "account_type";
- field public static final java.lang.String DATA = "data";
+ public static interface SyncStateContract.Columns extends android.provider.BaseColumns {
+ field public static final String ACCOUNT_NAME = "account_name";
+ field public static final String ACCOUNT_TYPE = "account_type";
+ field public static final String DATA = "data";
}
public static class SyncStateContract.Constants implements android.provider.SyncStateContract.Columns {
ctor public SyncStateContract.Constants();
- field public static final java.lang.String CONTENT_DIRECTORY = "syncstate";
+ field public static final String CONTENT_DIRECTORY = "syncstate";
}
public static final class SyncStateContract.Helpers {
ctor public SyncStateContract.Helpers();
method public static byte[] get(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account) throws android.os.RemoteException;
- method public static android.util.Pair<android.net.Uri, byte[]> getWithUri(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account) throws android.os.RemoteException;
+ method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account) throws android.os.RemoteException;
method public static android.net.Uri insert(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account, byte[]) throws android.os.RemoteException;
method public static android.content.ContentProviderOperation newSetOperation(android.net.Uri, android.accounts.Account, byte[]);
method public static android.content.ContentProviderOperation newUpdateOperation(android.net.Uri, byte[]);
@@ -38795,153 +38934,153 @@
public final class Telephony {
}
- public static abstract interface Telephony.BaseMmsColumns implements android.provider.BaseColumns {
- field public static final java.lang.String CONTENT_CLASS = "ct_cls";
- field public static final java.lang.String CONTENT_LOCATION = "ct_l";
- field public static final java.lang.String CONTENT_TYPE = "ct_t";
- field public static final java.lang.String CREATOR = "creator";
- field public static final java.lang.String DATE = "date";
- field public static final java.lang.String DATE_SENT = "date_sent";
- field public static final java.lang.String DELIVERY_REPORT = "d_rpt";
- field public static final java.lang.String DELIVERY_TIME = "d_tm";
- field public static final java.lang.String EXPIRY = "exp";
- field public static final java.lang.String LOCKED = "locked";
- field public static final java.lang.String MESSAGE_BOX = "msg_box";
+ public static interface Telephony.BaseMmsColumns extends android.provider.BaseColumns {
+ field public static final String CONTENT_CLASS = "ct_cls";
+ field public static final String CONTENT_LOCATION = "ct_l";
+ field public static final String CONTENT_TYPE = "ct_t";
+ field public static final String CREATOR = "creator";
+ field public static final String DATE = "date";
+ field public static final String DATE_SENT = "date_sent";
+ field public static final String DELIVERY_REPORT = "d_rpt";
+ field public static final String DELIVERY_TIME = "d_tm";
+ field public static final String EXPIRY = "exp";
+ field public static final String LOCKED = "locked";
+ field public static final String MESSAGE_BOX = "msg_box";
field public static final int MESSAGE_BOX_ALL = 0; // 0x0
field public static final int MESSAGE_BOX_DRAFTS = 3; // 0x3
field public static final int MESSAGE_BOX_FAILED = 5; // 0x5
field public static final int MESSAGE_BOX_INBOX = 1; // 0x1
field public static final int MESSAGE_BOX_OUTBOX = 4; // 0x4
field public static final int MESSAGE_BOX_SENT = 2; // 0x2
- field public static final java.lang.String MESSAGE_CLASS = "m_cls";
- field public static final java.lang.String MESSAGE_ID = "m_id";
- field public static final java.lang.String MESSAGE_SIZE = "m_size";
- field public static final java.lang.String MESSAGE_TYPE = "m_type";
- field public static final java.lang.String MMS_VERSION = "v";
- field public static final java.lang.String PRIORITY = "pri";
- field public static final java.lang.String READ = "read";
- field public static final java.lang.String READ_REPORT = "rr";
- field public static final java.lang.String READ_STATUS = "read_status";
- field public static final java.lang.String REPORT_ALLOWED = "rpt_a";
- field public static final java.lang.String RESPONSE_STATUS = "resp_st";
- field public static final java.lang.String RESPONSE_TEXT = "resp_txt";
- field public static final java.lang.String RETRIEVE_STATUS = "retr_st";
- field public static final java.lang.String RETRIEVE_TEXT = "retr_txt";
- field public static final java.lang.String RETRIEVE_TEXT_CHARSET = "retr_txt_cs";
- field public static final java.lang.String SEEN = "seen";
- field public static final java.lang.String STATUS = "st";
- field public static final java.lang.String SUBJECT = "sub";
- field public static final java.lang.String SUBJECT_CHARSET = "sub_cs";
- field public static final java.lang.String SUBSCRIPTION_ID = "sub_id";
- field public static final java.lang.String TEXT_ONLY = "text_only";
- field public static final java.lang.String THREAD_ID = "thread_id";
- field public static final java.lang.String TRANSACTION_ID = "tr_id";
+ field public static final String MESSAGE_CLASS = "m_cls";
+ field public static final String MESSAGE_ID = "m_id";
+ field public static final String MESSAGE_SIZE = "m_size";
+ field public static final String MESSAGE_TYPE = "m_type";
+ field public static final String MMS_VERSION = "v";
+ field public static final String PRIORITY = "pri";
+ field public static final String READ = "read";
+ field public static final String READ_REPORT = "rr";
+ field public static final String READ_STATUS = "read_status";
+ field public static final String REPORT_ALLOWED = "rpt_a";
+ field public static final String RESPONSE_STATUS = "resp_st";
+ field public static final String RESPONSE_TEXT = "resp_txt";
+ field public static final String RETRIEVE_STATUS = "retr_st";
+ field public static final String RETRIEVE_TEXT = "retr_txt";
+ field public static final String RETRIEVE_TEXT_CHARSET = "retr_txt_cs";
+ field public static final String SEEN = "seen";
+ field public static final String STATUS = "st";
+ field public static final String SUBJECT = "sub";
+ field public static final String SUBJECT_CHARSET = "sub_cs";
+ field public static final String SUBSCRIPTION_ID = "sub_id";
+ field public static final String TEXT_ONLY = "text_only";
+ field public static final String THREAD_ID = "thread_id";
+ field public static final String TRANSACTION_ID = "tr_id";
}
- public static abstract interface Telephony.CanonicalAddressesColumns implements android.provider.BaseColumns {
- field public static final java.lang.String ADDRESS = "address";
+ public static interface Telephony.CanonicalAddressesColumns extends android.provider.BaseColumns {
+ field public static final String ADDRESS = "address";
}
public static final class Telephony.CarrierId implements android.provider.BaseColumns {
method public static android.net.Uri getPreciseCarrierIdUriForSubscriptionId(int);
method public static android.net.Uri getUriForSubscriptionId(int);
- field public static final java.lang.String CARRIER_ID = "carrier_id";
- field public static final java.lang.String CARRIER_NAME = "carrier_name";
+ field public static final String CARRIER_ID = "carrier_id";
+ field public static final String CARRIER_NAME = "carrier_name";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String PRECISE_CARRIER_ID = "precise_carrier_id";
- field public static final java.lang.String PRECISE_CARRIER_ID_NAME = "precise_carrier_id_name";
+ field public static final String PRECISE_CARRIER_ID = "precise_carrier_id";
+ field public static final String PRECISE_CARRIER_ID_NAME = "precise_carrier_id_name";
}
public static final class Telephony.Carriers implements android.provider.BaseColumns {
- field public static final java.lang.String APN = "apn";
- field public static final java.lang.String AUTH_TYPE = "authtype";
- field public static final deprecated java.lang.String BEARER = "bearer";
- field public static final java.lang.String CARRIER_ENABLED = "carrier_enabled";
- field public static final java.lang.String CARRIER_ID = "carrier_id";
+ field public static final String APN = "apn";
+ field public static final String AUTH_TYPE = "authtype";
+ field @Deprecated public static final String BEARER = "bearer";
+ field public static final String CARRIER_ENABLED = "carrier_enabled";
+ field public static final String CARRIER_ID = "carrier_id";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String CURRENT = "current";
- field public static final java.lang.String DEFAULT_SORT_ORDER = "name ASC";
- field public static final deprecated java.lang.String MCC = "mcc";
- field public static final java.lang.String MMSC = "mmsc";
- field public static final java.lang.String MMSPORT = "mmsport";
- field public static final java.lang.String MMSPROXY = "mmsproxy";
- field public static final deprecated java.lang.String MNC = "mnc";
- field public static final deprecated java.lang.String MVNO_MATCH_DATA = "mvno_match_data";
- field public static final deprecated java.lang.String MVNO_TYPE = "mvno_type";
- field public static final java.lang.String NAME = "name";
- field public static final java.lang.String NETWORK_TYPE_BITMASK = "network_type_bitmask";
- field public static final deprecated java.lang.String NUMERIC = "numeric";
- field public static final java.lang.String PASSWORD = "password";
- field public static final java.lang.String PORT = "port";
- field public static final java.lang.String PROTOCOL = "protocol";
- field public static final java.lang.String PROXY = "proxy";
- field public static final java.lang.String ROAMING_PROTOCOL = "roaming_protocol";
- field public static final java.lang.String SERVER = "server";
+ field public static final String CURRENT = "current";
+ field public static final String DEFAULT_SORT_ORDER = "name ASC";
+ field @Deprecated public static final String MCC = "mcc";
+ field public static final String MMSC = "mmsc";
+ field public static final String MMSPORT = "mmsport";
+ field public static final String MMSPROXY = "mmsproxy";
+ field @Deprecated public static final String MNC = "mnc";
+ field @Deprecated public static final String MVNO_MATCH_DATA = "mvno_match_data";
+ field @Deprecated public static final String MVNO_TYPE = "mvno_type";
+ field public static final String NAME = "name";
+ field public static final String NETWORK_TYPE_BITMASK = "network_type_bitmask";
+ field @Deprecated public static final String NUMERIC = "numeric";
+ field public static final String PASSWORD = "password";
+ field public static final String PORT = "port";
+ field public static final String PROTOCOL = "protocol";
+ field public static final String PROXY = "proxy";
+ field public static final String ROAMING_PROTOCOL = "roaming_protocol";
+ field public static final String SERVER = "server";
field public static final android.net.Uri SIM_APN_URI;
- field public static final java.lang.String SUBSCRIPTION_ID = "sub_id";
- field public static final java.lang.String TYPE = "type";
- field public static final java.lang.String USER = "user";
+ field public static final String SUBSCRIPTION_ID = "sub_id";
+ field public static final String TYPE = "type";
+ field public static final String USER = "user";
}
public static final class Telephony.Mms implements android.provider.Telephony.BaseMmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
field public static final android.net.Uri REPORT_REQUEST_URI;
field public static final android.net.Uri REPORT_STATUS_URI;
}
public static final class Telephony.Mms.Addr implements android.provider.BaseColumns {
- field public static final java.lang.String ADDRESS = "address";
- field public static final java.lang.String CHARSET = "charset";
- field public static final java.lang.String CONTACT_ID = "contact_id";
- field public static final java.lang.String MSG_ID = "msg_id";
- field public static final java.lang.String TYPE = "type";
+ field public static final String ADDRESS = "address";
+ field public static final String CHARSET = "charset";
+ field public static final String CONTACT_ID = "contact_id";
+ field public static final String MSG_ID = "msg_id";
+ field public static final String TYPE = "type";
}
public static final class Telephony.Mms.Draft implements android.provider.Telephony.BaseMmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
}
public static final class Telephony.Mms.Inbox implements android.provider.Telephony.BaseMmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
}
public static final class Telephony.Mms.Intents {
- field public static final java.lang.String CONTENT_CHANGED_ACTION = "android.intent.action.CONTENT_CHANGED";
- field public static final java.lang.String DELETED_CONTENTS = "deleted_contents";
+ field public static final String CONTENT_CHANGED_ACTION = "android.intent.action.CONTENT_CHANGED";
+ field public static final String DELETED_CONTENTS = "deleted_contents";
}
public static final class Telephony.Mms.Outbox implements android.provider.Telephony.BaseMmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
}
public static final class Telephony.Mms.Part implements android.provider.BaseColumns {
- field public static final java.lang.String CHARSET = "chset";
- field public static final java.lang.String CONTENT_DISPOSITION = "cd";
- field public static final java.lang.String CONTENT_ID = "cid";
- field public static final java.lang.String CONTENT_LOCATION = "cl";
- field public static final java.lang.String CONTENT_TYPE = "ct";
- field public static final java.lang.String CT_START = "ctt_s";
- field public static final java.lang.String CT_TYPE = "ctt_t";
- field public static final java.lang.String FILENAME = "fn";
- field public static final java.lang.String MSG_ID = "mid";
- field public static final java.lang.String NAME = "name";
- field public static final java.lang.String SEQ = "seq";
- field public static final java.lang.String TEXT = "text";
- field public static final java.lang.String _DATA = "_data";
+ field public static final String CHARSET = "chset";
+ field public static final String CONTENT_DISPOSITION = "cd";
+ field public static final String CONTENT_ID = "cid";
+ field public static final String CONTENT_LOCATION = "cl";
+ field public static final String CONTENT_TYPE = "ct";
+ field public static final String CT_START = "ctt_s";
+ field public static final String CT_TYPE = "ctt_t";
+ field public static final String FILENAME = "fn";
+ field public static final String MSG_ID = "mid";
+ field public static final String NAME = "name";
+ field public static final String SEQ = "seq";
+ field public static final String TEXT = "text";
+ field public static final String _DATA = "_data";
}
public static final class Telephony.Mms.Rate {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String SENT_TIME = "sent_time";
+ field public static final String SENT_TIME = "sent_time";
}
public static final class Telephony.Mms.Sent implements android.provider.Telephony.BaseMmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
}
public static final class Telephony.MmsSms implements android.provider.BaseColumns {
@@ -38962,97 +39101,97 @@
field public static final int NO_ERROR = 0; // 0x0
field public static final android.net.Uri SEARCH_URI;
field public static final int SMS_PROTO = 0; // 0x0
- field public static final java.lang.String TYPE_DISCRIMINATOR_COLUMN = "transport_type";
+ field public static final String TYPE_DISCRIMINATOR_COLUMN = "transport_type";
}
public static final class Telephony.MmsSms.PendingMessages implements android.provider.BaseColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DUE_TIME = "due_time";
- field public static final java.lang.String ERROR_CODE = "err_code";
- field public static final java.lang.String ERROR_TYPE = "err_type";
- field public static final java.lang.String LAST_TRY = "last_try";
- field public static final java.lang.String MSG_ID = "msg_id";
- field public static final java.lang.String MSG_TYPE = "msg_type";
- field public static final java.lang.String PROTO_TYPE = "proto_type";
- field public static final java.lang.String RETRY_INDEX = "retry_index";
- field public static final java.lang.String SUBSCRIPTION_ID = "pending_sub_id";
+ field public static final String DUE_TIME = "due_time";
+ field public static final String ERROR_CODE = "err_code";
+ field public static final String ERROR_TYPE = "err_type";
+ field public static final String LAST_TRY = "last_try";
+ field public static final String MSG_ID = "msg_id";
+ field public static final String MSG_TYPE = "msg_type";
+ field public static final String PROTO_TYPE = "proto_type";
+ field public static final String RETRY_INDEX = "retry_index";
+ field public static final String SUBSCRIPTION_ID = "pending_sub_id";
}
public static final class Telephony.ServiceStateTable {
method public static android.net.Uri getUriForSubscriptionId(int);
- method public static android.net.Uri getUriForSubscriptionIdAndField(int, java.lang.String);
- field public static final java.lang.String AUTHORITY = "service-state";
+ method public static android.net.Uri getUriForSubscriptionIdAndField(int, String);
+ field public static final String AUTHORITY = "service-state";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String IS_MANUAL_NETWORK_SELECTION = "is_manual_network_selection";
- field public static final java.lang.String VOICE_OPERATOR_NUMERIC = "voice_operator_numeric";
- field public static final java.lang.String VOICE_REG_STATE = "voice_reg_state";
+ field public static final String IS_MANUAL_NETWORK_SELECTION = "is_manual_network_selection";
+ field public static final String VOICE_OPERATOR_NUMERIC = "voice_operator_numeric";
+ field public static final String VOICE_REG_STATE = "voice_reg_state";
}
public static final class Telephony.Sms implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
- method public static java.lang.String getDefaultSmsPackage(android.content.Context);
+ method public static String getDefaultSmsPackage(android.content.Context);
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
}
public static final class Telephony.Sms.Conversations implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
- field public static final java.lang.String MESSAGE_COUNT = "msg_count";
- field public static final java.lang.String SNIPPET = "snippet";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String MESSAGE_COUNT = "msg_count";
+ field public static final String SNIPPET = "snippet";
}
public static final class Telephony.Sms.Draft implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
}
public static final class Telephony.Sms.Inbox implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
}
public static final class Telephony.Sms.Intents {
method public static android.telephony.SmsMessage[] getMessagesFromIntent(android.content.Intent);
- field public static final java.lang.String ACTION_CHANGE_DEFAULT = "android.provider.Telephony.ACTION_CHANGE_DEFAULT";
- field public static final java.lang.String ACTION_DEFAULT_SMS_PACKAGE_CHANGED = "android.provider.action.DEFAULT_SMS_PACKAGE_CHANGED";
- field public static final java.lang.String ACTION_EXTERNAL_PROVIDER_CHANGE = "android.provider.action.EXTERNAL_PROVIDER_CHANGE";
- field public static final java.lang.String DATA_SMS_RECEIVED_ACTION = "android.intent.action.DATA_SMS_RECEIVED";
- field public static final java.lang.String EXTRA_IS_DEFAULT_SMS_APP = "android.provider.extra.IS_DEFAULT_SMS_APP";
- field public static final java.lang.String EXTRA_PACKAGE_NAME = "package";
+ field public static final String ACTION_CHANGE_DEFAULT = "android.provider.Telephony.ACTION_CHANGE_DEFAULT";
+ field public static final String ACTION_DEFAULT_SMS_PACKAGE_CHANGED = "android.provider.action.DEFAULT_SMS_PACKAGE_CHANGED";
+ field public static final String ACTION_EXTERNAL_PROVIDER_CHANGE = "android.provider.action.EXTERNAL_PROVIDER_CHANGE";
+ field public static final String DATA_SMS_RECEIVED_ACTION = "android.intent.action.DATA_SMS_RECEIVED";
+ field public static final String EXTRA_IS_DEFAULT_SMS_APP = "android.provider.extra.IS_DEFAULT_SMS_APP";
+ field public static final String EXTRA_PACKAGE_NAME = "package";
field public static final int RESULT_SMS_DUPLICATED = 5; // 0x5
field public static final int RESULT_SMS_GENERIC_ERROR = 2; // 0x2
field public static final int RESULT_SMS_HANDLED = 1; // 0x1
field public static final int RESULT_SMS_OUT_OF_MEMORY = 3; // 0x3
field public static final int RESULT_SMS_UNSUPPORTED = 4; // 0x4
- field public static final deprecated java.lang.String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
- field public static final java.lang.String SIM_FULL_ACTION = "android.provider.Telephony.SIM_FULL";
- field public static final java.lang.String SMS_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_CB_RECEIVED";
- field public static final java.lang.String SMS_DELIVER_ACTION = "android.provider.Telephony.SMS_DELIVER";
- field public static final java.lang.String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
- field public static final java.lang.String SMS_REJECTED_ACTION = "android.provider.Telephony.SMS_REJECTED";
- field public static final java.lang.String SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION = "android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED";
- field public static final java.lang.String WAP_PUSH_DELIVER_ACTION = "android.provider.Telephony.WAP_PUSH_DELIVER";
- field public static final java.lang.String WAP_PUSH_RECEIVED_ACTION = "android.provider.Telephony.WAP_PUSH_RECEIVED";
+ field @Deprecated public static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
+ field public static final String SIM_FULL_ACTION = "android.provider.Telephony.SIM_FULL";
+ field public static final String SMS_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_CB_RECEIVED";
+ field public static final String SMS_DELIVER_ACTION = "android.provider.Telephony.SMS_DELIVER";
+ field public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
+ field public static final String SMS_REJECTED_ACTION = "android.provider.Telephony.SMS_REJECTED";
+ field public static final String SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION = "android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED";
+ field public static final String WAP_PUSH_DELIVER_ACTION = "android.provider.Telephony.WAP_PUSH_DELIVER";
+ field public static final String WAP_PUSH_RECEIVED_ACTION = "android.provider.Telephony.WAP_PUSH_RECEIVED";
}
public static final class Telephony.Sms.Outbox implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
}
public static final class Telephony.Sms.Sent implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "date DESC";
+ field public static final String DEFAULT_SORT_ORDER = "date DESC";
}
- public static abstract interface Telephony.TextBasedSmsColumns {
- field public static final java.lang.String ADDRESS = "address";
- field public static final java.lang.String BODY = "body";
- field public static final java.lang.String CREATOR = "creator";
- field public static final java.lang.String DATE = "date";
- field public static final java.lang.String DATE_SENT = "date_sent";
- field public static final java.lang.String ERROR_CODE = "error_code";
- field public static final java.lang.String LOCKED = "locked";
+ public static interface Telephony.TextBasedSmsColumns {
+ field public static final String ADDRESS = "address";
+ field public static final String BODY = "body";
+ field public static final String CREATOR = "creator";
+ field public static final String DATE = "date";
+ field public static final String DATE_SENT = "date_sent";
+ field public static final String ERROR_CODE = "error_code";
+ field public static final String LOCKED = "locked";
field public static final int MESSAGE_TYPE_ALL = 0; // 0x0
field public static final int MESSAGE_TYPE_DRAFT = 3; // 0x3
field public static final int MESSAGE_TYPE_FAILED = 5; // 0x5
@@ -39060,25 +39199,25 @@
field public static final int MESSAGE_TYPE_OUTBOX = 4; // 0x4
field public static final int MESSAGE_TYPE_QUEUED = 6; // 0x6
field public static final int MESSAGE_TYPE_SENT = 2; // 0x2
- field public static final java.lang.String PERSON = "person";
- field public static final java.lang.String PROTOCOL = "protocol";
- field public static final java.lang.String READ = "read";
- field public static final java.lang.String REPLY_PATH_PRESENT = "reply_path_present";
- field public static final java.lang.String SEEN = "seen";
- field public static final java.lang.String SERVICE_CENTER = "service_center";
- field public static final java.lang.String STATUS = "status";
+ field public static final String PERSON = "person";
+ field public static final String PROTOCOL = "protocol";
+ field public static final String READ = "read";
+ field public static final String REPLY_PATH_PRESENT = "reply_path_present";
+ field public static final String SEEN = "seen";
+ field public static final String SERVICE_CENTER = "service_center";
+ field public static final String STATUS = "status";
field public static final int STATUS_COMPLETE = 0; // 0x0
field public static final int STATUS_FAILED = 64; // 0x40
field public static final int STATUS_NONE = -1; // 0xffffffff
field public static final int STATUS_PENDING = 32; // 0x20
- field public static final java.lang.String SUBJECT = "subject";
- field public static final java.lang.String SUBSCRIPTION_ID = "sub_id";
- field public static final java.lang.String THREAD_ID = "thread_id";
- field public static final java.lang.String TYPE = "type";
+ field public static final String SUBJECT = "subject";
+ field public static final String SUBSCRIPTION_ID = "sub_id";
+ field public static final String THREAD_ID = "thread_id";
+ field public static final String TYPE = "type";
}
public static final class Telephony.Threads implements android.provider.Telephony.ThreadsColumns {
- method public static long getOrCreateThreadId(android.content.Context, java.lang.String);
+ method public static long getOrCreateThreadId(android.content.Context, String);
method public static long getOrCreateThreadId(android.content.Context, java.util.Set<java.lang.String>);
field public static final int BROADCAST_THREAD = 1; // 0x1
field public static final int COMMON_THREAD = 0; // 0x0
@@ -39086,56 +39225,56 @@
field public static final android.net.Uri OBSOLETE_THREADS_URI;
}
- public static abstract interface Telephony.ThreadsColumns implements android.provider.BaseColumns {
- field public static final java.lang.String ARCHIVED = "archived";
- field public static final java.lang.String DATE = "date";
- field public static final java.lang.String ERROR = "error";
- field public static final java.lang.String HAS_ATTACHMENT = "has_attachment";
- field public static final java.lang.String MESSAGE_COUNT = "message_count";
- field public static final java.lang.String READ = "read";
- field public static final java.lang.String RECIPIENT_IDS = "recipient_ids";
- field public static final java.lang.String SNIPPET = "snippet";
- field public static final java.lang.String SNIPPET_CHARSET = "snippet_cs";
- field public static final java.lang.String TYPE = "type";
+ public static interface Telephony.ThreadsColumns extends android.provider.BaseColumns {
+ field public static final String ARCHIVED = "archived";
+ field public static final String DATE = "date";
+ field public static final String ERROR = "error";
+ field public static final String HAS_ATTACHMENT = "has_attachment";
+ field public static final String MESSAGE_COUNT = "message_count";
+ field public static final String READ = "read";
+ field public static final String RECIPIENT_IDS = "recipient_ids";
+ field public static final String SNIPPET = "snippet";
+ field public static final String SNIPPET_CHARSET = "snippet_cs";
+ field public static final String TYPE = "type";
}
public class UserDictionary {
ctor public UserDictionary();
- field public static final java.lang.String AUTHORITY = "user_dictionary";
+ field public static final String AUTHORITY = "user_dictionary";
field public static final android.net.Uri CONTENT_URI;
}
public static class UserDictionary.Words implements android.provider.BaseColumns {
ctor public UserDictionary.Words();
- method public static deprecated void addWord(android.content.Context, java.lang.String, int, int);
- method public static void addWord(android.content.Context, java.lang.String, int, java.lang.String, java.util.Locale);
- field public static final java.lang.String APP_ID = "appid";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.userword";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.userword";
+ method @Deprecated public static void addWord(android.content.Context, String, int, int);
+ method public static void addWord(android.content.Context, String, int, String, java.util.Locale);
+ field public static final String APP_ID = "appid";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.userword";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.userword";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DEFAULT_SORT_ORDER = "frequency DESC";
- field public static final java.lang.String FREQUENCY = "frequency";
- field public static final java.lang.String LOCALE = "locale";
- field public static final deprecated int LOCALE_TYPE_ALL = 0; // 0x0
- field public static final deprecated int LOCALE_TYPE_CURRENT = 1; // 0x1
- field public static final java.lang.String SHORTCUT = "shortcut";
- field public static final java.lang.String WORD = "word";
- field public static final java.lang.String _ID = "_id";
+ field public static final String DEFAULT_SORT_ORDER = "frequency DESC";
+ field public static final String FREQUENCY = "frequency";
+ field public static final String LOCALE = "locale";
+ field @Deprecated public static final int LOCALE_TYPE_ALL = 0; // 0x0
+ field @Deprecated public static final int LOCALE_TYPE_CURRENT = 1; // 0x1
+ field public static final String SHORTCUT = "shortcut";
+ field public static final String WORD = "word";
+ field public static final String _ID = "_id";
}
public class VoicemailContract {
- field public static final java.lang.String ACTION_FETCH_VOICEMAIL = "android.intent.action.FETCH_VOICEMAIL";
- field public static final java.lang.String ACTION_NEW_VOICEMAIL = "android.intent.action.NEW_VOICEMAIL";
- field public static final java.lang.String ACTION_SYNC_VOICEMAIL = "android.provider.action.SYNC_VOICEMAIL";
- field public static final java.lang.String AUTHORITY = "com.android.voicemail";
- field public static final java.lang.String EXTRA_PHONE_ACCOUNT_HANDLE = "android.provider.extra.PHONE_ACCOUNT_HANDLE";
- field public static final java.lang.String EXTRA_SELF_CHANGE = "com.android.voicemail.extra.SELF_CHANGE";
- field public static final java.lang.String PARAM_KEY_SOURCE_PACKAGE = "source_package";
+ field public static final String ACTION_FETCH_VOICEMAIL = "android.intent.action.FETCH_VOICEMAIL";
+ field public static final String ACTION_NEW_VOICEMAIL = "android.intent.action.NEW_VOICEMAIL";
+ field public static final String ACTION_SYNC_VOICEMAIL = "android.provider.action.SYNC_VOICEMAIL";
+ field public static final String AUTHORITY = "com.android.voicemail";
+ field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.provider.extra.PHONE_ACCOUNT_HANDLE";
+ field public static final String EXTRA_SELF_CHANGE = "com.android.voicemail.extra.SELF_CHANGE";
+ field public static final String PARAM_KEY_SOURCE_PACKAGE = "source_package";
}
public static final class VoicemailContract.Status implements android.provider.BaseColumns {
- method public static android.net.Uri buildSourceUri(java.lang.String);
- field public static final java.lang.String CONFIGURATION_STATE = "configuration_state";
+ method public static android.net.Uri buildSourceUri(String);
+ field public static final String CONFIGURATION_STATE = "configuration_state";
field public static final int CONFIGURATION_STATE_CAN_BE_CONFIGURED = 2; // 0x2
field public static final int CONFIGURATION_STATE_CONFIGURING = 3; // 0x3
field public static final int CONFIGURATION_STATE_DISABLED = 5; // 0x5
@@ -39143,7 +39282,7 @@
field public static final int CONFIGURATION_STATE_NOT_CONFIGURED = 1; // 0x1
field public static final int CONFIGURATION_STATE_OK = 0; // 0x0
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DATA_CHANNEL_STATE = "data_channel_state";
+ field public static final String DATA_CHANNEL_STATE = "data_channel_state";
field public static final int DATA_CHANNEL_STATE_BAD_CONFIGURATION = 3; // 0x3
field public static final int DATA_CHANNEL_STATE_COMMUNICATION_ERROR = 4; // 0x4
field public static final int DATA_CHANNEL_STATE_NO_CONNECTION = 1; // 0x1
@@ -39151,48 +39290,48 @@
field public static final int DATA_CHANNEL_STATE_OK = 0; // 0x0
field public static final int DATA_CHANNEL_STATE_SERVER_CONNECTION_ERROR = 6; // 0x6
field public static final int DATA_CHANNEL_STATE_SERVER_ERROR = 5; // 0x5
- field public static final java.lang.String DIR_TYPE = "vnd.android.cursor.dir/voicemail.source.status";
- field public static final java.lang.String ITEM_TYPE = "vnd.android.cursor.item/voicemail.source.status";
- field public static final java.lang.String NOTIFICATION_CHANNEL_STATE = "notification_channel_state";
+ field public static final String DIR_TYPE = "vnd.android.cursor.dir/voicemail.source.status";
+ field public static final String ITEM_TYPE = "vnd.android.cursor.item/voicemail.source.status";
+ field public static final String NOTIFICATION_CHANNEL_STATE = "notification_channel_state";
field public static final int NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING = 2; // 0x2
field public static final int NOTIFICATION_CHANNEL_STATE_NO_CONNECTION = 1; // 0x1
field public static final int NOTIFICATION_CHANNEL_STATE_OK = 0; // 0x0
- field public static final java.lang.String PHONE_ACCOUNT_COMPONENT_NAME = "phone_account_component_name";
- field public static final java.lang.String PHONE_ACCOUNT_ID = "phone_account_id";
- field public static final java.lang.String QUOTA_OCCUPIED = "quota_occupied";
- field public static final java.lang.String QUOTA_TOTAL = "quota_total";
+ field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "phone_account_component_name";
+ field public static final String PHONE_ACCOUNT_ID = "phone_account_id";
+ field public static final String QUOTA_OCCUPIED = "quota_occupied";
+ field public static final String QUOTA_TOTAL = "quota_total";
field public static final int QUOTA_UNAVAILABLE = -1; // 0xffffffff
- field public static final java.lang.String SETTINGS_URI = "settings_uri";
- field public static final java.lang.String SOURCE_PACKAGE = "source_package";
- field public static final java.lang.String SOURCE_TYPE = "source_type";
- field public static final java.lang.String VOICEMAIL_ACCESS_URI = "voicemail_access_uri";
+ field public static final String SETTINGS_URI = "settings_uri";
+ field public static final String SOURCE_PACKAGE = "source_package";
+ field public static final String SOURCE_TYPE = "source_type";
+ field public static final String VOICEMAIL_ACCESS_URI = "voicemail_access_uri";
}
public static final class VoicemailContract.Voicemails implements android.provider.BaseColumns android.provider.OpenableColumns {
- method public static android.net.Uri buildSourceUri(java.lang.String);
- field public static final java.lang.String ARCHIVED = "archived";
- field public static final java.lang.String BACKED_UP = "backed_up";
+ method public static android.net.Uri buildSourceUri(String);
+ field public static final String ARCHIVED = "archived";
+ field public static final String BACKED_UP = "backed_up";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String DATE = "date";
- field public static final java.lang.String DELETED = "deleted";
- field public static final java.lang.String DIRTY = "dirty";
+ field public static final String DATE = "date";
+ field public static final String DELETED = "deleted";
+ field public static final String DIRTY = "dirty";
field public static final int DIRTY_RETAIN = -1; // 0xffffffff
- field public static final java.lang.String DIR_TYPE = "vnd.android.cursor.dir/voicemails";
- field public static final java.lang.String DURATION = "duration";
- field public static final java.lang.String HAS_CONTENT = "has_content";
- field public static final java.lang.String IS_OMTP_VOICEMAIL = "is_omtp_voicemail";
- field public static final java.lang.String IS_READ = "is_read";
- field public static final java.lang.String ITEM_TYPE = "vnd.android.cursor.item/voicemail";
- field public static final java.lang.String LAST_MODIFIED = "last_modified";
- field public static final java.lang.String MIME_TYPE = "mime_type";
- field public static final java.lang.String NEW = "new";
- field public static final java.lang.String NUMBER = "number";
- field public static final java.lang.String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
- field public static final java.lang.String PHONE_ACCOUNT_ID = "subscription_id";
- field public static final java.lang.String RESTORED = "restored";
- field public static final java.lang.String SOURCE_DATA = "source_data";
- field public static final java.lang.String SOURCE_PACKAGE = "source_package";
- field public static final java.lang.String TRANSCRIPTION = "transcription";
+ field public static final String DIR_TYPE = "vnd.android.cursor.dir/voicemails";
+ field public static final String DURATION = "duration";
+ field public static final String HAS_CONTENT = "has_content";
+ field public static final String IS_OMTP_VOICEMAIL = "is_omtp_voicemail";
+ field public static final String IS_READ = "is_read";
+ field public static final String ITEM_TYPE = "vnd.android.cursor.item/voicemail";
+ field public static final String LAST_MODIFIED = "last_modified";
+ field public static final String MIME_TYPE = "mime_type";
+ field public static final String NEW = "new";
+ field public static final String NUMBER = "number";
+ field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
+ field public static final String PHONE_ACCOUNT_ID = "subscription_id";
+ field public static final String RESTORED = "restored";
+ field public static final String SOURCE_DATA = "source_data";
+ field public static final String SOURCE_PACKAGE = "source_package";
+ field public static final String TRANSCRIPTION = "transcription";
}
}
@@ -39200,57 +39339,57 @@
package android.renderscript {
public class Allocation extends android.renderscript.BaseObj {
- method public void copy1DRangeFrom(int, int, java.lang.Object);
+ method public void copy1DRangeFrom(int, int, Object);
method public void copy1DRangeFrom(int, int, int[]);
method public void copy1DRangeFrom(int, int, short[]);
method public void copy1DRangeFrom(int, int, byte[]);
method public void copy1DRangeFrom(int, int, float[]);
method public void copy1DRangeFrom(int, int, android.renderscript.Allocation, int);
- method public void copy1DRangeFromUnchecked(int, int, java.lang.Object);
+ method public void copy1DRangeFromUnchecked(int, int, Object);
method public void copy1DRangeFromUnchecked(int, int, int[]);
method public void copy1DRangeFromUnchecked(int, int, short[]);
method public void copy1DRangeFromUnchecked(int, int, byte[]);
method public void copy1DRangeFromUnchecked(int, int, float[]);
- method public void copy1DRangeTo(int, int, java.lang.Object);
+ method public void copy1DRangeTo(int, int, Object);
method public void copy1DRangeTo(int, int, int[]);
method public void copy1DRangeTo(int, int, short[]);
method public void copy1DRangeTo(int, int, byte[]);
method public void copy1DRangeTo(int, int, float[]);
- method public void copy1DRangeToUnchecked(int, int, java.lang.Object);
+ method public void copy1DRangeToUnchecked(int, int, Object);
method public void copy1DRangeToUnchecked(int, int, int[]);
method public void copy1DRangeToUnchecked(int, int, short[]);
method public void copy1DRangeToUnchecked(int, int, byte[]);
method public void copy1DRangeToUnchecked(int, int, float[]);
- method public void copy2DRangeFrom(int, int, int, int, java.lang.Object);
+ method public void copy2DRangeFrom(int, int, int, int, Object);
method public void copy2DRangeFrom(int, int, int, int, byte[]);
method public void copy2DRangeFrom(int, int, int, int, short[]);
method public void copy2DRangeFrom(int, int, int, int, int[]);
method public void copy2DRangeFrom(int, int, int, int, float[]);
method public void copy2DRangeFrom(int, int, int, int, android.renderscript.Allocation, int, int);
method public void copy2DRangeFrom(int, int, android.graphics.Bitmap);
- method public void copy2DRangeTo(int, int, int, int, java.lang.Object);
+ method public void copy2DRangeTo(int, int, int, int, Object);
method public void copy2DRangeTo(int, int, int, int, byte[]);
method public void copy2DRangeTo(int, int, int, int, short[]);
method public void copy2DRangeTo(int, int, int, int, int[]);
method public void copy2DRangeTo(int, int, int, int, float[]);
- method public void copy3DRangeFrom(int, int, int, int, int, int, java.lang.Object);
+ method public void copy3DRangeFrom(int, int, int, int, int, int, Object);
method public void copy3DRangeFrom(int, int, int, int, int, int, android.renderscript.Allocation, int, int, int);
- method public void copy3DRangeTo(int, int, int, int, int, int, java.lang.Object);
+ method public void copy3DRangeTo(int, int, int, int, int, int, Object);
method public void copyFrom(android.renderscript.BaseObj[]);
- method public void copyFrom(java.lang.Object);
+ method public void copyFrom(Object);
method public void copyFrom(int[]);
method public void copyFrom(short[]);
method public void copyFrom(byte[]);
method public void copyFrom(float[]);
method public void copyFrom(android.graphics.Bitmap);
method public void copyFrom(android.renderscript.Allocation);
- method public void copyFromUnchecked(java.lang.Object);
+ method public void copyFromUnchecked(Object);
method public void copyFromUnchecked(int[]);
method public void copyFromUnchecked(short[]);
method public void copyFromUnchecked(byte[]);
method public void copyFromUnchecked(float[]);
method public void copyTo(android.graphics.Bitmap);
- method public void copyTo(java.lang.Object);
+ method public void copyTo(Object);
method public void copyTo(byte[]);
method public void copyTo(short[]);
method public void copyTo(int[]);
@@ -39264,7 +39403,7 @@
method public static android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int, android.renderscript.Allocation.MipmapControl, int);
method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int);
- method public static android.renderscript.Allocation createFromString(android.renderscript.RenderScript, java.lang.String, int);
+ method public static android.renderscript.Allocation createFromString(android.renderscript.RenderScript, String, int);
method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int, int);
method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int);
method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, android.renderscript.Allocation.MipmapControl, int);
@@ -39281,7 +39420,7 @@
method public int getUsage();
method public void ioReceive();
method public void ioSend();
- method public deprecated synchronized void resize(int);
+ method @Deprecated public void resize(int);
method public void setAutoPadding(boolean);
method public void setFromFieldPacker(int, android.renderscript.FieldPacker);
method public void setFromFieldPacker(int, int, android.renderscript.FieldPacker);
@@ -39299,23 +39438,21 @@
field public static final int USAGE_SHARED = 128; // 0x80
}
- public static final class Allocation.MipmapControl extends java.lang.Enum {
- method public static android.renderscript.Allocation.MipmapControl valueOf(java.lang.String);
- method public static final android.renderscript.Allocation.MipmapControl[] values();
+ public enum Allocation.MipmapControl {
enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_FULL;
enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_NONE;
enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_ON_SYNC_TO_TEXTURE;
}
- public static abstract interface Allocation.OnBufferAvailableListener {
- method public abstract void onBufferAvailable(android.renderscript.Allocation);
+ public static interface Allocation.OnBufferAvailableListener {
+ method public void onBufferAvailable(android.renderscript.Allocation);
}
public class AllocationAdapter extends android.renderscript.Allocation {
method public static android.renderscript.AllocationAdapter create1D(android.renderscript.RenderScript, android.renderscript.Allocation);
method public static android.renderscript.AllocationAdapter create2D(android.renderscript.RenderScript, android.renderscript.Allocation);
method public static android.renderscript.AllocationAdapter createTyped(android.renderscript.RenderScript, android.renderscript.Allocation, android.renderscript.Type);
- method public synchronized void resize(int);
+ method public void resize(int);
method public void setFace(android.renderscript.Type.CubemapFace);
method public void setLOD(int);
method public void setX(int);
@@ -39325,8 +39462,8 @@
public class BaseObj {
method public void destroy();
- method public java.lang.String getName();
- method public void setName(java.lang.String);
+ method public String getName();
+ method public void setName(String);
}
public class Byte2 {
@@ -39411,7 +39548,7 @@
method public static android.renderscript.Element I8_2(android.renderscript.RenderScript);
method public static android.renderscript.Element I8_3(android.renderscript.RenderScript);
method public static android.renderscript.Element I8_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element MATRIX4X4(android.renderscript.RenderScript);
+ method @Deprecated public static android.renderscript.Element MATRIX4X4(android.renderscript.RenderScript);
method public static android.renderscript.Element MATRIX_2X2(android.renderscript.RenderScript);
method public static android.renderscript.Element MATRIX_3X3(android.renderscript.RenderScript);
method public static android.renderscript.Element MATRIX_4X4(android.renderscript.RenderScript);
@@ -39453,7 +39590,7 @@
method public android.renderscript.Element getSubElement(int);
method public int getSubElementArraySize(int);
method public int getSubElementCount();
- method public java.lang.String getSubElementName(int);
+ method public String getSubElementName(int);
method public int getSubElementOffsetBytes(int);
method public int getVectorSize();
method public boolean isCompatible(android.renderscript.Element);
@@ -39462,14 +39599,12 @@
public static class Element.Builder {
ctor public Element.Builder(android.renderscript.RenderScript);
- method public android.renderscript.Element.Builder add(android.renderscript.Element, java.lang.String, int);
- method public android.renderscript.Element.Builder add(android.renderscript.Element, java.lang.String);
+ method public android.renderscript.Element.Builder add(android.renderscript.Element, String, int);
+ method public android.renderscript.Element.Builder add(android.renderscript.Element, String);
method public android.renderscript.Element create();
}
- public static final class Element.DataKind extends java.lang.Enum {
- method public static android.renderscript.Element.DataKind valueOf(java.lang.String);
- method public static final android.renderscript.Element.DataKind[] values();
+ public enum Element.DataKind {
enum_constant public static final android.renderscript.Element.DataKind PIXEL_A;
enum_constant public static final android.renderscript.Element.DataKind PIXEL_DEPTH;
enum_constant public static final android.renderscript.Element.DataKind PIXEL_L;
@@ -39480,9 +39615,7 @@
enum_constant public static final android.renderscript.Element.DataKind USER;
}
- public static final class Element.DataType extends java.lang.Enum {
- method public static android.renderscript.Element.DataType valueOf(java.lang.String);
- method public static final android.renderscript.Element.DataType[] values();
+ public enum Element.DataType {
enum_constant public static final android.renderscript.Element.DataType BOOLEAN;
enum_constant public static final android.renderscript.Element.DataType FLOAT_16;
enum_constant public static final android.renderscript.Element.DataType FLOAT_32;
@@ -39738,19 +39871,19 @@
}
public class RSDriverException extends android.renderscript.RSRuntimeException {
- ctor public RSDriverException(java.lang.String);
+ ctor public RSDriverException(String);
}
public class RSIllegalArgumentException extends android.renderscript.RSRuntimeException {
- ctor public RSIllegalArgumentException(java.lang.String);
+ ctor public RSIllegalArgumentException(String);
}
public class RSInvalidStateException extends android.renderscript.RSRuntimeException {
- ctor public RSInvalidStateException(java.lang.String);
+ ctor public RSInvalidStateException(String);
}
public class RSRuntimeException extends java.lang.RuntimeException {
- ctor public RSRuntimeException(java.lang.String);
+ ctor public RSRuntimeException(String);
}
public class RenderScript {
@@ -39775,17 +39908,13 @@
field public static final int CREATE_FLAG_NONE = 0; // 0x0
}
- public static final class RenderScript.ContextType extends java.lang.Enum {
- method public static android.renderscript.RenderScript.ContextType valueOf(java.lang.String);
- method public static final android.renderscript.RenderScript.ContextType[] values();
+ public enum RenderScript.ContextType {
enum_constant public static final android.renderscript.RenderScript.ContextType DEBUG;
enum_constant public static final android.renderscript.RenderScript.ContextType NORMAL;
enum_constant public static final android.renderscript.RenderScript.ContextType PROFILE;
}
- public static final class RenderScript.Priority extends java.lang.Enum {
- method public static android.renderscript.RenderScript.Priority valueOf(java.lang.String);
- method public static final android.renderscript.RenderScript.Priority[] values();
+ public enum RenderScript.Priority {
enum_constant public static final android.renderscript.RenderScript.Priority LOW;
enum_constant public static final android.renderscript.RenderScript.Priority NORMAL;
}
@@ -39793,7 +39922,7 @@
public static class RenderScript.RSErrorHandler implements java.lang.Runnable {
ctor public RenderScript.RSErrorHandler();
method public void run();
- field protected java.lang.String mErrorMessage;
+ field protected String mErrorMessage;
field protected int mErrorNum;
}
@@ -39832,9 +39961,7 @@
method public void setWrapT(android.renderscript.Sampler.Value);
}
- public static final class Sampler.Value extends java.lang.Enum {
- method public static android.renderscript.Sampler.Value valueOf(java.lang.String);
- method public static final android.renderscript.Sampler.Value[] values();
+ public enum Sampler.Value {
enum_constant public static final android.renderscript.Sampler.Value CLAMP;
enum_constant public static final android.renderscript.Sampler.Value LINEAR;
enum_constant public static final android.renderscript.Sampler.Value LINEAR_MIP_LINEAR;
@@ -39862,7 +39989,7 @@
method protected void invoke(int);
method protected void invoke(int, android.renderscript.FieldPacker);
method protected void reduce(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
- method public void setTimeZone(java.lang.String);
+ method public void setTimeZone(String);
method public void setVar(int, float);
method public void setVar(int, double);
method public void setVar(int, int);
@@ -39914,26 +40041,26 @@
ctor protected ScriptC(int, android.renderscript.RenderScript);
ctor protected ScriptC(long, android.renderscript.RenderScript);
ctor protected ScriptC(android.renderscript.RenderScript, android.content.res.Resources, int);
- ctor protected ScriptC(android.renderscript.RenderScript, java.lang.String, byte[], byte[]);
+ ctor protected ScriptC(android.renderscript.RenderScript, String, byte[], byte[]);
}
public final class ScriptGroup extends android.renderscript.BaseObj {
- method public java.lang.Object[] execute(java.lang.Object...);
- method public deprecated void execute();
- method public deprecated void setInput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
- method public deprecated void setOutput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
+ method public Object[] execute(java.lang.Object...);
+ method @Deprecated public void execute();
+ method @Deprecated public void setInput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
+ method @Deprecated public void setOutput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
}
public static final class ScriptGroup.Binding {
- ctor public ScriptGroup.Binding(android.renderscript.Script.FieldID, java.lang.Object);
+ ctor public ScriptGroup.Binding(android.renderscript.Script.FieldID, Object);
}
- public static final deprecated class ScriptGroup.Builder {
- ctor public ScriptGroup.Builder(android.renderscript.RenderScript);
- method public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.FieldID);
- method public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.KernelID);
- method public android.renderscript.ScriptGroup.Builder addKernel(android.renderscript.Script.KernelID);
- method public android.renderscript.ScriptGroup create();
+ @Deprecated public static final class ScriptGroup.Builder {
+ ctor @Deprecated public ScriptGroup.Builder(android.renderscript.RenderScript);
+ method @Deprecated public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.FieldID);
+ method @Deprecated public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.KernelID);
+ method @Deprecated public android.renderscript.ScriptGroup.Builder addKernel(android.renderscript.Script.KernelID);
+ method @Deprecated public android.renderscript.ScriptGroup create();
}
public static final class ScriptGroup.Builder2 {
@@ -39941,7 +40068,7 @@
method public android.renderscript.ScriptGroup.Input addInput();
method public android.renderscript.ScriptGroup.Closure addInvoke(android.renderscript.Script.InvokeID, java.lang.Object...);
method public android.renderscript.ScriptGroup.Closure addKernel(android.renderscript.Script.KernelID, android.renderscript.Type, java.lang.Object...);
- method public android.renderscript.ScriptGroup create(java.lang.String, android.renderscript.ScriptGroup.Future...);
+ method public android.renderscript.ScriptGroup create(String, android.renderscript.ScriptGroup.Future...);
}
public static final class ScriptGroup.Closure extends android.renderscript.BaseObj {
@@ -40136,7 +40263,7 @@
}
public final class ScriptIntrinsicColorMatrix extends android.renderscript.ScriptIntrinsic {
- method public static deprecated android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript, android.renderscript.Element);
+ method @Deprecated public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript, android.renderscript.Element);
method public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript);
method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
@@ -40259,18 +40386,16 @@
method public android.renderscript.Type.Builder setZ(int);
}
- public static final class Type.CubemapFace extends java.lang.Enum {
- method public static android.renderscript.Type.CubemapFace valueOf(java.lang.String);
- method public static final android.renderscript.Type.CubemapFace[] values();
+ public enum Type.CubemapFace {
enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_X;
enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_Y;
enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_Z;
enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_X;
enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_Y;
enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_Z;
- enum_constant public static final deprecated android.renderscript.Type.CubemapFace POSITVE_X;
- enum_constant public static final deprecated android.renderscript.Type.CubemapFace POSITVE_Y;
- enum_constant public static final deprecated android.renderscript.Type.CubemapFace POSITVE_Z;
+ enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_X;
+ enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_Y;
+ enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_Z;
}
}
@@ -40278,10 +40403,10 @@
package android.sax {
public class Element {
- method public android.sax.Element getChild(java.lang.String);
- method public android.sax.Element getChild(java.lang.String, java.lang.String);
- method public android.sax.Element requireChild(java.lang.String);
- method public android.sax.Element requireChild(java.lang.String, java.lang.String);
+ method public android.sax.Element getChild(String);
+ method public android.sax.Element getChild(String, String);
+ method public android.sax.Element requireChild(String);
+ method public android.sax.Element requireChild(String, String);
method public void setElementListener(android.sax.ElementListener);
method public void setEndElementListener(android.sax.EndElementListener);
method public void setEndTextElementListener(android.sax.EndTextElementListener);
@@ -40289,28 +40414,28 @@
method public void setTextElementListener(android.sax.TextElementListener);
}
- public abstract interface ElementListener implements android.sax.EndElementListener android.sax.StartElementListener {
+ public interface ElementListener extends android.sax.StartElementListener android.sax.EndElementListener {
}
- public abstract interface EndElementListener {
- method public abstract void end();
+ public interface EndElementListener {
+ method public void end();
}
- public abstract interface EndTextElementListener {
- method public abstract void end(java.lang.String);
+ public interface EndTextElementListener {
+ method public void end(String);
}
public class RootElement extends android.sax.Element {
- ctor public RootElement(java.lang.String, java.lang.String);
- ctor public RootElement(java.lang.String);
+ ctor public RootElement(String, String);
+ ctor public RootElement(String);
method public org.xml.sax.ContentHandler getContentHandler();
}
- public abstract interface StartElementListener {
- method public abstract void start(org.xml.sax.Attributes);
+ public interface StartElementListener {
+ method public void start(org.xml.sax.Attributes);
}
- public abstract interface TextElementListener implements android.sax.EndTextElementListener android.sax.StartElementListener {
+ public interface TextElementListener extends android.sax.StartElementListener android.sax.EndTextElementListener {
}
}
@@ -40319,44 +40444,44 @@
public final class Channel implements java.nio.channels.Channel {
method public void close();
- method public byte[] getSelectResponse();
- method public android.se.omapi.Session getSession();
+ method @Nullable public byte[] getSelectResponse();
+ method @NonNull public android.se.omapi.Session getSession();
method public boolean isBasicChannel();
method public boolean isOpen();
method public boolean selectNext() throws java.io.IOException;
- method public byte[] transmit(byte[]) throws java.io.IOException;
+ method @NonNull public byte[] transmit(@NonNull byte[]) throws java.io.IOException;
}
public final class Reader {
method public void closeSessions();
- method public java.lang.String getName();
- method public android.se.omapi.SEService getSEService();
+ method @NonNull public String getName();
+ method @NonNull public android.se.omapi.SEService getSEService();
method public boolean isSecureElementPresent();
- method public android.se.omapi.Session openSession() throws java.io.IOException;
+ method @NonNull public android.se.omapi.Session openSession() throws java.io.IOException;
}
public final class SEService {
- ctor public SEService(android.content.Context, java.util.concurrent.Executor, android.se.omapi.SEService.OnConnectedListener);
- method public android.se.omapi.Reader[] getReaders();
- method public java.lang.String getVersion();
+ ctor public SEService(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.se.omapi.SEService.OnConnectedListener);
+ method @NonNull public android.se.omapi.Reader[] getReaders();
+ method @NonNull public String getVersion();
method public boolean isConnected();
method public void shutdown();
}
- public static abstract interface SEService.OnConnectedListener {
- method public abstract void onConnected();
+ public static interface SEService.OnConnectedListener {
+ method public void onConnected();
}
public final class Session {
method public void close();
method public void closeChannels();
- method public byte[] getATR();
- method public android.se.omapi.Reader getReader();
+ method @Nullable public byte[] getATR();
+ method @NonNull public android.se.omapi.Reader getReader();
method public boolean isClosed();
- method public android.se.omapi.Channel openBasicChannel(byte[], byte) throws java.io.IOException;
- method public android.se.omapi.Channel openBasicChannel(byte[]) throws java.io.IOException;
- method public android.se.omapi.Channel openLogicalChannel(byte[], byte) throws java.io.IOException;
- method public android.se.omapi.Channel openLogicalChannel(byte[]) throws java.io.IOException;
+ method @Nullable public android.se.omapi.Channel openBasicChannel(@Nullable byte[], @Nullable byte) throws java.io.IOException;
+ method @Nullable public android.se.omapi.Channel openBasicChannel(@Nullable byte[]) throws java.io.IOException;
+ method @Nullable public android.se.omapi.Channel openLogicalChannel(@Nullable byte[], @Nullable byte) throws java.io.IOException;
+ method @Nullable public android.se.omapi.Channel openLogicalChannel(@Nullable byte[]) throws java.io.IOException;
}
}
@@ -40370,107 +40495,107 @@
public class ConfirmationAlreadyPresentingException extends java.lang.Exception {
ctor public ConfirmationAlreadyPresentingException();
- ctor public ConfirmationAlreadyPresentingException(java.lang.String);
+ ctor public ConfirmationAlreadyPresentingException(String);
}
public abstract class ConfirmationCallback {
ctor public ConfirmationCallback();
method public void onCanceled();
- method public void onConfirmed(byte[]);
+ method public void onConfirmed(@NonNull byte[]);
method public void onDismissed();
- method public void onError(java.lang.Throwable);
+ method public void onError(Throwable);
}
public class ConfirmationNotAvailableException extends java.lang.Exception {
ctor public ConfirmationNotAvailableException();
- ctor public ConfirmationNotAvailableException(java.lang.String);
+ ctor public ConfirmationNotAvailableException(String);
}
public class ConfirmationPrompt {
method public void cancelPrompt();
method public static boolean isSupported(android.content.Context);
- method public void presentPrompt(java.util.concurrent.Executor, android.security.ConfirmationCallback) throws android.security.ConfirmationAlreadyPresentingException, android.security.ConfirmationNotAvailableException;
+ method public void presentPrompt(@NonNull java.util.concurrent.Executor, @NonNull android.security.ConfirmationCallback) throws android.security.ConfirmationAlreadyPresentingException, android.security.ConfirmationNotAvailableException;
}
public static final class ConfirmationPrompt.Builder {
ctor public ConfirmationPrompt.Builder(android.content.Context);
method public android.security.ConfirmationPrompt build();
method public android.security.ConfirmationPrompt.Builder setExtraData(byte[]);
- method public android.security.ConfirmationPrompt.Builder setPromptText(java.lang.CharSequence);
+ method public android.security.ConfirmationPrompt.Builder setPromptText(CharSequence);
}
public final class KeyChain {
ctor public KeyChain();
- method public static void choosePrivateKeyAlias(android.app.Activity, android.security.KeyChainAliasCallback, java.lang.String[], java.security.Principal[], java.lang.String, int, java.lang.String);
- method public static void choosePrivateKeyAlias(android.app.Activity, android.security.KeyChainAliasCallback, java.lang.String[], java.security.Principal[], android.net.Uri, java.lang.String);
- method public static android.content.Intent createInstallIntent();
- method public static java.security.cert.X509Certificate[] getCertificateChain(android.content.Context, java.lang.String) throws java.lang.InterruptedException, android.security.KeyChainException;
- method public static java.security.PrivateKey getPrivateKey(android.content.Context, java.lang.String) throws java.lang.InterruptedException, android.security.KeyChainException;
- method public static deprecated boolean isBoundKeyAlgorithm(java.lang.String);
- method public static boolean isKeyAlgorithmSupported(java.lang.String);
- field public static final java.lang.String ACTION_KEYCHAIN_CHANGED = "android.security.action.KEYCHAIN_CHANGED";
- field public static final java.lang.String ACTION_KEY_ACCESS_CHANGED = "android.security.action.KEY_ACCESS_CHANGED";
- field public static final deprecated java.lang.String ACTION_STORAGE_CHANGED = "android.security.STORAGE_CHANGED";
- field public static final java.lang.String ACTION_TRUST_STORE_CHANGED = "android.security.action.TRUST_STORE_CHANGED";
- field public static final java.lang.String EXTRA_CERTIFICATE = "CERT";
- field public static final java.lang.String EXTRA_KEY_ACCESSIBLE = "android.security.extra.KEY_ACCESSIBLE";
- field public static final java.lang.String EXTRA_KEY_ALIAS = "android.security.extra.KEY_ALIAS";
- field public static final java.lang.String EXTRA_NAME = "name";
- field public static final java.lang.String EXTRA_PKCS12 = "PKCS12";
+ method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable String, int, @Nullable String);
+ method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable android.net.Uri, @Nullable String);
+ method @NonNull public static android.content.Intent createInstallIntent();
+ method @Nullable @WorkerThread public static java.security.cert.X509Certificate[] getCertificateChain(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
+ method @Nullable @WorkerThread public static java.security.PrivateKey getPrivateKey(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
+ method @Deprecated public static boolean isBoundKeyAlgorithm(@NonNull String);
+ method public static boolean isKeyAlgorithmSupported(@NonNull String);
+ field public static final String ACTION_KEYCHAIN_CHANGED = "android.security.action.KEYCHAIN_CHANGED";
+ field public static final String ACTION_KEY_ACCESS_CHANGED = "android.security.action.KEY_ACCESS_CHANGED";
+ field @Deprecated public static final String ACTION_STORAGE_CHANGED = "android.security.STORAGE_CHANGED";
+ field public static final String ACTION_TRUST_STORE_CHANGED = "android.security.action.TRUST_STORE_CHANGED";
+ field public static final String EXTRA_CERTIFICATE = "CERT";
+ field public static final String EXTRA_KEY_ACCESSIBLE = "android.security.extra.KEY_ACCESSIBLE";
+ field public static final String EXTRA_KEY_ALIAS = "android.security.extra.KEY_ALIAS";
+ field public static final String EXTRA_NAME = "name";
+ field public static final String EXTRA_PKCS12 = "PKCS12";
}
- public abstract interface KeyChainAliasCallback {
- method public abstract void alias(java.lang.String);
+ public interface KeyChainAliasCallback {
+ method public void alias(@Nullable String);
}
public class KeyChainException extends java.lang.Exception {
ctor public KeyChainException();
- ctor public KeyChainException(java.lang.String);
- ctor public KeyChainException(java.lang.String, java.lang.Throwable);
- ctor public KeyChainException(java.lang.Throwable);
+ ctor public KeyChainException(String);
+ ctor public KeyChainException(String, Throwable);
+ ctor public KeyChainException(Throwable);
}
- public final deprecated class KeyPairGeneratorSpec implements java.security.spec.AlgorithmParameterSpec {
- method public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
- method public android.content.Context getContext();
- method public java.util.Date getEndDate();
- method public int getKeySize();
- method public java.lang.String getKeyType();
- method public java.lang.String getKeystoreAlias();
- method public java.math.BigInteger getSerialNumber();
- method public java.util.Date getStartDate();
- method public javax.security.auth.x500.X500Principal getSubjectDN();
- method public boolean isEncryptionRequired();
+ @Deprecated public final class KeyPairGeneratorSpec implements java.security.spec.AlgorithmParameterSpec {
+ method @Deprecated @NonNull public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
+ method @Deprecated public android.content.Context getContext();
+ method @Deprecated @NonNull public java.util.Date getEndDate();
+ method @Deprecated public int getKeySize();
+ method @Deprecated @Nullable public String getKeyType();
+ method @Deprecated public String getKeystoreAlias();
+ method @Deprecated @NonNull public java.math.BigInteger getSerialNumber();
+ method @Deprecated @NonNull public java.util.Date getStartDate();
+ method @Deprecated @NonNull public javax.security.auth.x500.X500Principal getSubjectDN();
+ method @Deprecated public boolean isEncryptionRequired();
}
- public static final deprecated class KeyPairGeneratorSpec.Builder {
- ctor public KeyPairGeneratorSpec.Builder(android.content.Context);
- method public android.security.KeyPairGeneratorSpec build();
- method public android.security.KeyPairGeneratorSpec.Builder setAlgorithmParameterSpec(java.security.spec.AlgorithmParameterSpec);
- method public android.security.KeyPairGeneratorSpec.Builder setAlias(java.lang.String);
- method public android.security.KeyPairGeneratorSpec.Builder setEncryptionRequired();
- method public android.security.KeyPairGeneratorSpec.Builder setEndDate(java.util.Date);
- method public android.security.KeyPairGeneratorSpec.Builder setKeySize(int);
- method public android.security.KeyPairGeneratorSpec.Builder setKeyType(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public android.security.KeyPairGeneratorSpec.Builder setSerialNumber(java.math.BigInteger);
- method public android.security.KeyPairGeneratorSpec.Builder setStartDate(java.util.Date);
- method public android.security.KeyPairGeneratorSpec.Builder setSubject(javax.security.auth.x500.X500Principal);
+ @Deprecated public static final class KeyPairGeneratorSpec.Builder {
+ ctor @Deprecated public KeyPairGeneratorSpec.Builder(@NonNull android.content.Context);
+ method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec build();
+ method @Deprecated public android.security.KeyPairGeneratorSpec.Builder setAlgorithmParameterSpec(@NonNull java.security.spec.AlgorithmParameterSpec);
+ method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setAlias(@NonNull String);
+ method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setEncryptionRequired();
+ method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setEndDate(@NonNull java.util.Date);
+ method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setKeySize(int);
+ method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setKeyType(@NonNull String) throws java.security.NoSuchAlgorithmException;
+ method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setSerialNumber(@NonNull java.math.BigInteger);
+ method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setStartDate(@NonNull java.util.Date);
+ method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setSubject(@NonNull javax.security.auth.x500.X500Principal);
}
- public final deprecated class KeyStoreParameter implements java.security.KeyStore.ProtectionParameter {
- method public boolean isEncryptionRequired();
+ @Deprecated public final class KeyStoreParameter implements java.security.KeyStore.ProtectionParameter {
+ method @Deprecated public boolean isEncryptionRequired();
}
- public static final deprecated class KeyStoreParameter.Builder {
- ctor public KeyStoreParameter.Builder(android.content.Context);
- method public android.security.KeyStoreParameter build();
- method public android.security.KeyStoreParameter.Builder setEncryptionRequired(boolean);
+ @Deprecated public static final class KeyStoreParameter.Builder {
+ ctor @Deprecated public KeyStoreParameter.Builder(@NonNull android.content.Context);
+ method @Deprecated @NonNull public android.security.KeyStoreParameter build();
+ method @Deprecated @NonNull public android.security.KeyStoreParameter.Builder setEncryptionRequired(boolean);
}
public class NetworkSecurityPolicy {
method public static android.security.NetworkSecurityPolicy getInstance();
method public boolean isCleartextTrafficPermitted();
- method public boolean isCleartextTrafficPermitted(java.lang.String);
+ method public boolean isCleartextTrafficPermitted(String);
}
}
@@ -40479,29 +40604,29 @@
public class KeyExpiredException extends java.security.InvalidKeyException {
ctor public KeyExpiredException();
- ctor public KeyExpiredException(java.lang.String);
- ctor public KeyExpiredException(java.lang.String, java.lang.Throwable);
+ ctor public KeyExpiredException(String);
+ ctor public KeyExpiredException(String, Throwable);
}
public final class KeyGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
- method public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
+ method @Nullable public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
method public byte[] getAttestationChallenge();
- method public java.lang.String[] getBlockModes();
- method public java.util.Date getCertificateNotAfter();
- method public java.util.Date getCertificateNotBefore();
- method public java.math.BigInteger getCertificateSerialNumber();
- method public javax.security.auth.x500.X500Principal getCertificateSubject();
- method public java.lang.String[] getDigests();
- method public java.lang.String[] getEncryptionPaddings();
+ method @NonNull public String[] getBlockModes();
+ method @NonNull public java.util.Date getCertificateNotAfter();
+ method @NonNull public java.util.Date getCertificateNotBefore();
+ method @NonNull public java.math.BigInteger getCertificateSerialNumber();
+ method @NonNull public javax.security.auth.x500.X500Principal getCertificateSubject();
+ method @NonNull public String[] getDigests();
+ method @NonNull public String[] getEncryptionPaddings();
method public int getKeySize();
- method public java.util.Date getKeyValidityForConsumptionEnd();
- method public java.util.Date getKeyValidityForOriginationEnd();
- method public java.util.Date getKeyValidityStart();
- method public java.lang.String getKeystoreAlias();
+ method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
+ method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
+ method @Nullable public java.util.Date getKeyValidityStart();
+ method @NonNull public String getKeystoreAlias();
method public int getPurposes();
- method public java.lang.String[] getSignaturePaddings();
+ method @NonNull public String[] getSignaturePaddings();
method public int getUserAuthenticationValidityDurationSeconds();
- method public boolean isDigestsSpecified();
+ method @NonNull public boolean isDigestsSpecified();
method public boolean isInvalidatedByBiometricEnrollment();
method public boolean isRandomizedEncryptionRequired();
method public boolean isStrongBoxBacked();
@@ -40513,46 +40638,46 @@
}
public static final class KeyGenParameterSpec.Builder {
- ctor public KeyGenParameterSpec.Builder(java.lang.String, int);
- method public android.security.keystore.KeyGenParameterSpec build();
- method public android.security.keystore.KeyGenParameterSpec.Builder setAlgorithmParameterSpec(java.security.spec.AlgorithmParameterSpec);
- method public android.security.keystore.KeyGenParameterSpec.Builder setAttestationChallenge(byte[]);
- method public android.security.keystore.KeyGenParameterSpec.Builder setBlockModes(java.lang.String...);
- method public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotAfter(java.util.Date);
- method public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotBefore(java.util.Date);
- method public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSerialNumber(java.math.BigInteger);
- method public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSubject(javax.security.auth.x500.X500Principal);
- method public android.security.keystore.KeyGenParameterSpec.Builder setDigests(java.lang.String...);
- method public android.security.keystore.KeyGenParameterSpec.Builder setEncryptionPaddings(java.lang.String...);
- method public android.security.keystore.KeyGenParameterSpec.Builder setInvalidatedByBiometricEnrollment(boolean);
- method public android.security.keystore.KeyGenParameterSpec.Builder setIsStrongBoxBacked(boolean);
- method public android.security.keystore.KeyGenParameterSpec.Builder setKeySize(int);
- method public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityEnd(java.util.Date);
- method public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForConsumptionEnd(java.util.Date);
- method public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForOriginationEnd(java.util.Date);
- method public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityStart(java.util.Date);
- method public android.security.keystore.KeyGenParameterSpec.Builder setRandomizedEncryptionRequired(boolean);
- method public android.security.keystore.KeyGenParameterSpec.Builder setSignaturePaddings(java.lang.String...);
- method public android.security.keystore.KeyGenParameterSpec.Builder setUnlockedDeviceRequired(boolean);
- method public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationRequired(boolean);
- method public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidWhileOnBody(boolean);
- method public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidityDurationSeconds(int);
- method public android.security.keystore.KeyGenParameterSpec.Builder setUserConfirmationRequired(boolean);
- method public android.security.keystore.KeyGenParameterSpec.Builder setUserPresenceRequired(boolean);
+ ctor public KeyGenParameterSpec.Builder(@NonNull String, int);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec build();
+ method public android.security.keystore.KeyGenParameterSpec.Builder setAlgorithmParameterSpec(@NonNull java.security.spec.AlgorithmParameterSpec);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setAttestationChallenge(byte[]);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setBlockModes(java.lang.String...);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotAfter(@NonNull java.util.Date);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotBefore(@NonNull java.util.Date);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSerialNumber(@NonNull java.math.BigInteger);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSubject(@NonNull javax.security.auth.x500.X500Principal);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setDigests(java.lang.String...);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setEncryptionPaddings(java.lang.String...);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setInvalidatedByBiometricEnrollment(boolean);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setIsStrongBoxBacked(boolean);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeySize(int);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityEnd(java.util.Date);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForConsumptionEnd(java.util.Date);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForOriginationEnd(java.util.Date);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityStart(java.util.Date);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setRandomizedEncryptionRequired(boolean);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setSignaturePaddings(java.lang.String...);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUnlockedDeviceRequired(boolean);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationRequired(boolean);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidWhileOnBody(boolean);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserConfirmationRequired(boolean);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserPresenceRequired(boolean);
}
public class KeyInfo implements java.security.spec.KeySpec {
- method public java.lang.String[] getBlockModes();
- method public java.lang.String[] getDigests();
- method public java.lang.String[] getEncryptionPaddings();
+ method @NonNull public String[] getBlockModes();
+ method @NonNull public String[] getDigests();
+ method @NonNull public String[] getEncryptionPaddings();
method public int getKeySize();
- method public java.util.Date getKeyValidityForConsumptionEnd();
- method public java.util.Date getKeyValidityForOriginationEnd();
- method public java.util.Date getKeyValidityStart();
- method public java.lang.String getKeystoreAlias();
+ method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
+ method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
+ method @Nullable public java.util.Date getKeyValidityStart();
+ method public String getKeystoreAlias();
method public int getOrigin();
method public int getPurposes();
- method public java.lang.String[] getSignaturePaddings();
+ method @NonNull public String[] getSignaturePaddings();
method public int getUserAuthenticationValidityDurationSeconds();
method public boolean isInsideSecureHardware();
method public boolean isInvalidatedByBiometricEnrollment();
@@ -40565,41 +40690,41 @@
public class KeyNotYetValidException extends java.security.InvalidKeyException {
ctor public KeyNotYetValidException();
- ctor public KeyNotYetValidException(java.lang.String);
- ctor public KeyNotYetValidException(java.lang.String, java.lang.Throwable);
+ ctor public KeyNotYetValidException(String);
+ ctor public KeyNotYetValidException(String, Throwable);
}
public class KeyPermanentlyInvalidatedException extends java.security.InvalidKeyException {
ctor public KeyPermanentlyInvalidatedException();
- ctor public KeyPermanentlyInvalidatedException(java.lang.String);
- ctor public KeyPermanentlyInvalidatedException(java.lang.String, java.lang.Throwable);
+ ctor public KeyPermanentlyInvalidatedException(String);
+ ctor public KeyPermanentlyInvalidatedException(String, Throwable);
}
public abstract class KeyProperties {
- field public static final java.lang.String BLOCK_MODE_CBC = "CBC";
- field public static final java.lang.String BLOCK_MODE_CTR = "CTR";
- field public static final java.lang.String BLOCK_MODE_ECB = "ECB";
- field public static final java.lang.String BLOCK_MODE_GCM = "GCM";
- field public static final java.lang.String DIGEST_MD5 = "MD5";
- field public static final java.lang.String DIGEST_NONE = "NONE";
- field public static final java.lang.String DIGEST_SHA1 = "SHA-1";
- field public static final java.lang.String DIGEST_SHA224 = "SHA-224";
- field public static final java.lang.String DIGEST_SHA256 = "SHA-256";
- field public static final java.lang.String DIGEST_SHA384 = "SHA-384";
- field public static final java.lang.String DIGEST_SHA512 = "SHA-512";
- field public static final java.lang.String ENCRYPTION_PADDING_NONE = "NoPadding";
- field public static final java.lang.String ENCRYPTION_PADDING_PKCS7 = "PKCS7Padding";
- field public static final java.lang.String ENCRYPTION_PADDING_RSA_OAEP = "OAEPPadding";
- field public static final java.lang.String ENCRYPTION_PADDING_RSA_PKCS1 = "PKCS1Padding";
- field public static final deprecated java.lang.String KEY_ALGORITHM_3DES = "DESede";
- field public static final java.lang.String KEY_ALGORITHM_AES = "AES";
- field public static final java.lang.String KEY_ALGORITHM_EC = "EC";
- field public static final java.lang.String KEY_ALGORITHM_HMAC_SHA1 = "HmacSHA1";
- field public static final java.lang.String KEY_ALGORITHM_HMAC_SHA224 = "HmacSHA224";
- field public static final java.lang.String KEY_ALGORITHM_HMAC_SHA256 = "HmacSHA256";
- field public static final java.lang.String KEY_ALGORITHM_HMAC_SHA384 = "HmacSHA384";
- field public static final java.lang.String KEY_ALGORITHM_HMAC_SHA512 = "HmacSHA512";
- field public static final java.lang.String KEY_ALGORITHM_RSA = "RSA";
+ field public static final String BLOCK_MODE_CBC = "CBC";
+ field public static final String BLOCK_MODE_CTR = "CTR";
+ field public static final String BLOCK_MODE_ECB = "ECB";
+ field public static final String BLOCK_MODE_GCM = "GCM";
+ field public static final String DIGEST_MD5 = "MD5";
+ field public static final String DIGEST_NONE = "NONE";
+ field public static final String DIGEST_SHA1 = "SHA-1";
+ field public static final String DIGEST_SHA224 = "SHA-224";
+ field public static final String DIGEST_SHA256 = "SHA-256";
+ field public static final String DIGEST_SHA384 = "SHA-384";
+ field public static final String DIGEST_SHA512 = "SHA-512";
+ field public static final String ENCRYPTION_PADDING_NONE = "NoPadding";
+ field public static final String ENCRYPTION_PADDING_PKCS7 = "PKCS7Padding";
+ field public static final String ENCRYPTION_PADDING_RSA_OAEP = "OAEPPadding";
+ field public static final String ENCRYPTION_PADDING_RSA_PKCS1 = "PKCS1Padding";
+ field @Deprecated public static final String KEY_ALGORITHM_3DES = "DESede";
+ field public static final String KEY_ALGORITHM_AES = "AES";
+ field public static final String KEY_ALGORITHM_EC = "EC";
+ field public static final String KEY_ALGORITHM_HMAC_SHA1 = "HmacSHA1";
+ field public static final String KEY_ALGORITHM_HMAC_SHA224 = "HmacSHA224";
+ field public static final String KEY_ALGORITHM_HMAC_SHA256 = "HmacSHA256";
+ field public static final String KEY_ALGORITHM_HMAC_SHA384 = "HmacSHA384";
+ field public static final String KEY_ALGORITHM_HMAC_SHA512 = "HmacSHA512";
+ field public static final String KEY_ALGORITHM_RSA = "RSA";
field public static final int ORIGIN_GENERATED = 1; // 0x1
field public static final int ORIGIN_IMPORTED = 2; // 0x2
field public static final int ORIGIN_SECURELY_IMPORTED = 8; // 0x8
@@ -40609,19 +40734,19 @@
field public static final int PURPOSE_SIGN = 4; // 0x4
field public static final int PURPOSE_VERIFY = 8; // 0x8
field public static final int PURPOSE_WRAP_KEY = 32; // 0x20
- field public static final java.lang.String SIGNATURE_PADDING_RSA_PKCS1 = "PKCS1";
- field public static final java.lang.String SIGNATURE_PADDING_RSA_PSS = "PSS";
+ field public static final String SIGNATURE_PADDING_RSA_PKCS1 = "PKCS1";
+ field public static final String SIGNATURE_PADDING_RSA_PSS = "PSS";
}
public final class KeyProtection implements java.security.KeyStore.ProtectionParameter {
- method public java.lang.String[] getBlockModes();
- method public java.lang.String[] getDigests();
- method public java.lang.String[] getEncryptionPaddings();
- method public java.util.Date getKeyValidityForConsumptionEnd();
- method public java.util.Date getKeyValidityForOriginationEnd();
- method public java.util.Date getKeyValidityStart();
+ method @NonNull public String[] getBlockModes();
+ method @NonNull public String[] getDigests();
+ method @NonNull public String[] getEncryptionPaddings();
+ method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
+ method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
+ method @Nullable public java.util.Date getKeyValidityStart();
method public int getPurposes();
- method public java.lang.String[] getSignaturePaddings();
+ method @NonNull public String[] getSignaturePaddings();
method public int getUserAuthenticationValidityDurationSeconds();
method public boolean isDigestsSpecified();
method public boolean isInvalidatedByBiometricEnrollment();
@@ -40635,57 +40760,57 @@
public static final class KeyProtection.Builder {
ctor public KeyProtection.Builder(int);
- method public android.security.keystore.KeyProtection build();
- method public android.security.keystore.KeyProtection.Builder setBlockModes(java.lang.String...);
- method public android.security.keystore.KeyProtection.Builder setDigests(java.lang.String...);
- method public android.security.keystore.KeyProtection.Builder setEncryptionPaddings(java.lang.String...);
- method public android.security.keystore.KeyProtection.Builder setInvalidatedByBiometricEnrollment(boolean);
- method public android.security.keystore.KeyProtection.Builder setKeyValidityEnd(java.util.Date);
- method public android.security.keystore.KeyProtection.Builder setKeyValidityForConsumptionEnd(java.util.Date);
- method public android.security.keystore.KeyProtection.Builder setKeyValidityForOriginationEnd(java.util.Date);
- method public android.security.keystore.KeyProtection.Builder setKeyValidityStart(java.util.Date);
- method public android.security.keystore.KeyProtection.Builder setRandomizedEncryptionRequired(boolean);
- method public android.security.keystore.KeyProtection.Builder setSignaturePaddings(java.lang.String...);
- method public android.security.keystore.KeyProtection.Builder setUnlockedDeviceRequired(boolean);
- method public android.security.keystore.KeyProtection.Builder setUserAuthenticationRequired(boolean);
- method public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidWhileOnBody(boolean);
- method public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidityDurationSeconds(int);
- method public android.security.keystore.KeyProtection.Builder setUserConfirmationRequired(boolean);
- method public android.security.keystore.KeyProtection.Builder setUserPresenceRequired(boolean);
+ method @NonNull public android.security.keystore.KeyProtection build();
+ method @NonNull public android.security.keystore.KeyProtection.Builder setBlockModes(java.lang.String...);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setDigests(java.lang.String...);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setEncryptionPaddings(java.lang.String...);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setInvalidatedByBiometricEnrollment(boolean);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityEnd(java.util.Date);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityForConsumptionEnd(java.util.Date);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityForOriginationEnd(java.util.Date);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityStart(java.util.Date);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setRandomizedEncryptionRequired(boolean);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setSignaturePaddings(java.lang.String...);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setUnlockedDeviceRequired(boolean);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationRequired(boolean);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidWhileOnBody(boolean);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setUserConfirmationRequired(boolean);
+ method @NonNull public android.security.keystore.KeyProtection.Builder setUserPresenceRequired(boolean);
}
public class SecureKeyImportUnavailableException extends java.security.ProviderException {
ctor public SecureKeyImportUnavailableException();
- ctor public SecureKeyImportUnavailableException(java.lang.String);
- ctor public SecureKeyImportUnavailableException(java.lang.String, java.lang.Throwable);
- ctor public SecureKeyImportUnavailableException(java.lang.Throwable);
+ ctor public SecureKeyImportUnavailableException(String);
+ ctor public SecureKeyImportUnavailableException(String, Throwable);
+ ctor public SecureKeyImportUnavailableException(Throwable);
}
public class StrongBoxUnavailableException extends java.security.ProviderException {
ctor public StrongBoxUnavailableException();
- ctor public StrongBoxUnavailableException(java.lang.String);
- ctor public StrongBoxUnavailableException(java.lang.String, java.lang.Throwable);
- ctor public StrongBoxUnavailableException(java.lang.Throwable);
+ ctor public StrongBoxUnavailableException(String);
+ ctor public StrongBoxUnavailableException(String, Throwable);
+ ctor public StrongBoxUnavailableException(Throwable);
}
public class UserNotAuthenticatedException extends java.security.InvalidKeyException {
ctor public UserNotAuthenticatedException();
- ctor public UserNotAuthenticatedException(java.lang.String);
- ctor public UserNotAuthenticatedException(java.lang.String, java.lang.Throwable);
+ ctor public UserNotAuthenticatedException(String);
+ ctor public UserNotAuthenticatedException(String, Throwable);
}
public class UserPresenceUnavailableException extends java.security.InvalidKeyException {
ctor public UserPresenceUnavailableException();
- ctor public UserPresenceUnavailableException(java.lang.String);
- ctor public UserPresenceUnavailableException(java.lang.String, java.lang.Throwable);
+ ctor public UserPresenceUnavailableException(String);
+ ctor public UserPresenceUnavailableException(String, Throwable);
}
public class WrappedKeyEntry implements java.security.KeyStore.Entry {
- ctor public WrappedKeyEntry(byte[], java.lang.String, java.lang.String, java.security.spec.AlgorithmParameterSpec);
+ ctor public WrappedKeyEntry(byte[], String, String, java.security.spec.AlgorithmParameterSpec);
method public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
- method public java.lang.String getTransformation();
+ method public String getTransformation();
method public byte[] getWrappedKeyBytes();
- method public java.lang.String getWrappingKeyAlias();
+ method public String getWrappingKeyAlias();
}
}
@@ -40694,14 +40819,14 @@
public abstract class AutofillService extends android.app.Service {
ctor public AutofillService();
- method public final android.service.autofill.FillEventHistory getFillEventHistory();
+ method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
method public final android.os.IBinder onBind(android.content.Intent);
method public void onConnected();
method public void onDisconnected();
- method public abstract void onFillRequest(android.service.autofill.FillRequest, android.os.CancellationSignal, android.service.autofill.FillCallback);
- method public abstract void onSaveRequest(android.service.autofill.SaveRequest, android.service.autofill.SaveCallback);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.AutofillService";
- field public static final java.lang.String SERVICE_META_DATA = "android.autofill";
+ method public abstract void onFillRequest(@NonNull android.service.autofill.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.FillCallback);
+ method public abstract void onSaveRequest(@NonNull android.service.autofill.SaveRequest, @NonNull android.service.autofill.SaveCallback);
+ field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillService";
+ field public static final String SERVICE_META_DATA = "android.autofill";
}
public final class BatchUpdates implements android.os.Parcelable {
@@ -40713,8 +40838,8 @@
public static class BatchUpdates.Builder {
ctor public BatchUpdates.Builder();
method public android.service.autofill.BatchUpdates build();
- method public android.service.autofill.BatchUpdates.Builder transformChild(int, android.service.autofill.Transformation);
- method public android.service.autofill.BatchUpdates.Builder updateTemplate(android.widget.RemoteViews);
+ method public android.service.autofill.BatchUpdates.Builder transformChild(int, @NonNull android.service.autofill.Transformation);
+ method public android.service.autofill.BatchUpdates.Builder updateTemplate(@NonNull android.widget.RemoteViews);
}
public final class CharSequenceTransformation implements android.os.Parcelable android.service.autofill.Transformation {
@@ -40724,8 +40849,8 @@
}
public static class CharSequenceTransformation.Builder {
- ctor public CharSequenceTransformation.Builder(android.view.autofill.AutofillId, java.util.regex.Pattern, java.lang.String);
- method public android.service.autofill.CharSequenceTransformation.Builder addField(android.view.autofill.AutofillId, java.util.regex.Pattern, java.lang.String);
+ ctor public CharSequenceTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @NonNull String);
+ method public android.service.autofill.CharSequenceTransformation.Builder addField(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @NonNull String);
method public android.service.autofill.CharSequenceTransformation build();
}
@@ -40736,10 +40861,10 @@
}
public static class CustomDescription.Builder {
- ctor public CustomDescription.Builder(android.widget.RemoteViews);
- method public android.service.autofill.CustomDescription.Builder addChild(int, android.service.autofill.Transformation);
- method public android.service.autofill.CustomDescription.Builder addOnClickAction(int, android.service.autofill.OnClickAction);
- method public android.service.autofill.CustomDescription.Builder batchUpdate(android.service.autofill.Validator, android.service.autofill.BatchUpdates);
+ ctor public CustomDescription.Builder(@NonNull android.widget.RemoteViews);
+ method public android.service.autofill.CustomDescription.Builder addChild(int, @NonNull android.service.autofill.Transformation);
+ method public android.service.autofill.CustomDescription.Builder addOnClickAction(int, @NonNull android.service.autofill.OnClickAction);
+ method public android.service.autofill.CustomDescription.Builder batchUpdate(@NonNull android.service.autofill.Validator, @NonNull android.service.autofill.BatchUpdates);
method public android.service.autofill.CustomDescription build();
}
@@ -40750,43 +40875,43 @@
}
public static final class Dataset.Builder {
- ctor public Dataset.Builder(android.widget.RemoteViews);
+ ctor public Dataset.Builder(@NonNull android.widget.RemoteViews);
ctor public Dataset.Builder();
- method public android.service.autofill.Dataset build();
- method public android.service.autofill.Dataset.Builder setAuthentication(android.content.IntentSender);
- method public android.service.autofill.Dataset.Builder setId(java.lang.String);
- method public android.service.autofill.Dataset.Builder setValue(android.view.autofill.AutofillId, android.view.autofill.AutofillValue);
- method public android.service.autofill.Dataset.Builder setValue(android.view.autofill.AutofillId, android.view.autofill.AutofillValue, android.widget.RemoteViews);
- method public android.service.autofill.Dataset.Builder setValue(android.view.autofill.AutofillId, android.view.autofill.AutofillValue, java.util.regex.Pattern);
- method public android.service.autofill.Dataset.Builder setValue(android.view.autofill.AutofillId, android.view.autofill.AutofillValue, java.util.regex.Pattern, android.widget.RemoteViews);
+ method @NonNull public android.service.autofill.Dataset build();
+ method @NonNull public android.service.autofill.Dataset.Builder setAuthentication(@Nullable android.content.IntentSender);
+ method @NonNull public android.service.autofill.Dataset.Builder setId(@Nullable String);
+ method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue);
+ method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @NonNull android.widget.RemoteViews);
+ method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern);
+ method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.widget.RemoteViews);
}
public final class DateTransformation implements android.os.Parcelable android.service.autofill.Transformation {
- ctor public DateTransformation(android.view.autofill.AutofillId, android.icu.text.DateFormat);
+ ctor public DateTransformation(@NonNull android.view.autofill.AutofillId, @NonNull android.icu.text.DateFormat);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.autofill.DateTransformation> CREATOR;
}
public final class DateValueSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
- ctor public DateValueSanitizer(android.icu.text.DateFormat);
+ ctor public DateValueSanitizer(@NonNull android.icu.text.DateFormat);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.autofill.DateValueSanitizer> CREATOR;
}
public final class FieldClassification {
- method public java.util.List<android.service.autofill.FieldClassification.Match> getMatches();
+ method @NonNull public java.util.List<android.service.autofill.FieldClassification.Match> getMatches();
}
public static final class FieldClassification.Match {
- method public java.lang.String getCategoryId();
+ method @NonNull public String getCategoryId();
method public float getScore();
}
public final class FillCallback {
- method public void onFailure(java.lang.CharSequence);
- method public void onSuccess(android.service.autofill.FillResponse);
+ method public void onFailure(@Nullable CharSequence);
+ method public void onSuccess(@Nullable android.service.autofill.FillResponse);
}
public final class FillContext implements android.os.Parcelable {
@@ -40799,20 +40924,20 @@
public final class FillEventHistory implements android.os.Parcelable {
method public int describeContents();
- method public deprecated android.os.Bundle getClientState();
- method public java.util.List<android.service.autofill.FillEventHistory.Event> getEvents();
+ method @Deprecated @Nullable public android.os.Bundle getClientState();
+ method @Nullable public java.util.List<android.service.autofill.FillEventHistory.Event> getEvents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.autofill.FillEventHistory> CREATOR;
}
public static final class FillEventHistory.Event {
- method public java.util.Map<android.view.autofill.AutofillId, java.lang.String> getChangedFields();
- method public android.os.Bundle getClientState();
- method public java.lang.String getDatasetId();
- method public java.util.Map<android.view.autofill.AutofillId, android.service.autofill.FieldClassification> getFieldsClassification();
- method public java.util.Set<java.lang.String> getIgnoredDatasetIds();
- method public java.util.Map<android.view.autofill.AutofillId, java.util.Set<java.lang.String>> getManuallyEnteredField();
- method public java.util.Set<java.lang.String> getSelectedDatasetIds();
+ method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.lang.String> getChangedFields();
+ method @Nullable public android.os.Bundle getClientState();
+ method @Nullable public String getDatasetId();
+ method @NonNull public java.util.Map<android.view.autofill.AutofillId,android.service.autofill.FieldClassification> getFieldsClassification();
+ method @NonNull public java.util.Set<java.lang.String> getIgnoredDatasetIds();
+ method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.util.Set<java.lang.String>> getManuallyEnteredField();
+ method @NonNull public java.util.Set<java.lang.String> getSelectedDatasetIds();
method public int getType();
field public static final int TYPE_AUTHENTICATION_SELECTED = 2; // 0x2
field public static final int TYPE_CONTEXT_COMMITTED = 4; // 0x4
@@ -40823,8 +40948,8 @@
public final class FillRequest implements android.os.Parcelable {
method public int describeContents();
- method public android.os.Bundle getClientState();
- method public java.util.List<android.service.autofill.FillContext> getFillContexts();
+ method @Nullable public android.os.Bundle getClientState();
+ method @NonNull public java.util.List<android.service.autofill.FillContext> getFillContexts();
method public int getFlags();
method public int getId();
method public void writeToParcel(android.os.Parcel, int);
@@ -40843,18 +40968,18 @@
public static final class FillResponse.Builder {
ctor public FillResponse.Builder();
- method public android.service.autofill.FillResponse.Builder addDataset(android.service.autofill.Dataset);
+ method @NonNull public android.service.autofill.FillResponse.Builder addDataset(@Nullable android.service.autofill.Dataset);
method public android.service.autofill.FillResponse build();
method public android.service.autofill.FillResponse.Builder disableAutofill(long);
- method public android.service.autofill.FillResponse.Builder setAuthentication(android.view.autofill.AutofillId[], android.content.IntentSender, android.widget.RemoteViews);
- method public android.service.autofill.FillResponse.Builder setClientState(android.os.Bundle);
- method public android.service.autofill.FillResponse.Builder setFieldClassificationIds(android.view.autofill.AutofillId...);
+ method @NonNull public android.service.autofill.FillResponse.Builder setAuthentication(@NonNull android.view.autofill.AutofillId[], @Nullable android.content.IntentSender, @Nullable android.widget.RemoteViews);
+ method public android.service.autofill.FillResponse.Builder setClientState(@Nullable android.os.Bundle);
+ method public android.service.autofill.FillResponse.Builder setFieldClassificationIds(@NonNull android.view.autofill.AutofillId...);
method public android.service.autofill.FillResponse.Builder setFlags(int);
- method public android.service.autofill.FillResponse.Builder setFooter(android.widget.RemoteViews);
- method public android.service.autofill.FillResponse.Builder setHeader(android.widget.RemoteViews);
+ method public android.service.autofill.FillResponse.Builder setFooter(@NonNull android.widget.RemoteViews);
+ method public android.service.autofill.FillResponse.Builder setHeader(@NonNull android.widget.RemoteViews);
method public android.service.autofill.FillResponse.Builder setIgnoredIds(android.view.autofill.AutofillId...);
- method public android.service.autofill.FillResponse.Builder setSaveInfo(android.service.autofill.SaveInfo);
- method public android.service.autofill.FillResponse.Builder setUserData(android.service.autofill.UserData);
+ method @NonNull public android.service.autofill.FillResponse.Builder setSaveInfo(@NonNull android.service.autofill.SaveInfo);
+ method public android.service.autofill.FillResponse.Builder setUserData(@NonNull android.service.autofill.UserData);
}
public final class ImageTransformation implements android.os.Parcelable android.service.autofill.Transformation {
@@ -40864,37 +40989,37 @@
}
public static class ImageTransformation.Builder {
- ctor public deprecated ImageTransformation.Builder(android.view.autofill.AutofillId, java.util.regex.Pattern, int);
- ctor public ImageTransformation.Builder(android.view.autofill.AutofillId, java.util.regex.Pattern, int, java.lang.CharSequence);
- method public deprecated android.service.autofill.ImageTransformation.Builder addOption(java.util.regex.Pattern, int);
- method public android.service.autofill.ImageTransformation.Builder addOption(java.util.regex.Pattern, int, java.lang.CharSequence);
+ ctor @Deprecated public ImageTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @DrawableRes int);
+ ctor public ImageTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @DrawableRes int, @NonNull CharSequence);
+ method @Deprecated public android.service.autofill.ImageTransformation.Builder addOption(@NonNull java.util.regex.Pattern, @DrawableRes int);
+ method public android.service.autofill.ImageTransformation.Builder addOption(@NonNull java.util.regex.Pattern, @DrawableRes int, @NonNull CharSequence);
method public android.service.autofill.ImageTransformation build();
}
public final class LuhnChecksumValidator implements android.os.Parcelable android.service.autofill.Validator {
- ctor public LuhnChecksumValidator(android.view.autofill.AutofillId...);
+ ctor public LuhnChecksumValidator(@NonNull android.view.autofill.AutofillId...);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.autofill.LuhnChecksumValidator> CREATOR;
}
- public abstract interface OnClickAction {
+ public interface OnClickAction {
}
public final class RegexValidator implements android.os.Parcelable android.service.autofill.Validator {
- ctor public RegexValidator(android.view.autofill.AutofillId, java.util.regex.Pattern);
+ ctor public RegexValidator(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.autofill.RegexValidator> CREATOR;
}
- public abstract interface Sanitizer {
+ public interface Sanitizer {
}
public final class SaveCallback {
- method public void onFailure(java.lang.CharSequence);
+ method public void onFailure(CharSequence);
method public void onSuccess();
- method public void onSuccess(android.content.IntentSender);
+ method public void onSuccess(@NonNull android.content.IntentSender);
}
public final class SaveInfo implements android.os.Parcelable {
@@ -40915,43 +41040,43 @@
}
public static final class SaveInfo.Builder {
- ctor public SaveInfo.Builder(int, android.view.autofill.AutofillId[]);
+ ctor public SaveInfo.Builder(int, @NonNull android.view.autofill.AutofillId[]);
ctor public SaveInfo.Builder(int);
- method public android.service.autofill.SaveInfo.Builder addSanitizer(android.service.autofill.Sanitizer, android.view.autofill.AutofillId...);
+ method @NonNull public android.service.autofill.SaveInfo.Builder addSanitizer(@NonNull android.service.autofill.Sanitizer, @NonNull android.view.autofill.AutofillId...);
method public android.service.autofill.SaveInfo build();
- method public android.service.autofill.SaveInfo.Builder setCustomDescription(android.service.autofill.CustomDescription);
- method public android.service.autofill.SaveInfo.Builder setDescription(java.lang.CharSequence);
- method public android.service.autofill.SaveInfo.Builder setFlags(int);
- method public android.service.autofill.SaveInfo.Builder setNegativeAction(int, android.content.IntentSender);
- method public android.service.autofill.SaveInfo.Builder setOptionalIds(android.view.autofill.AutofillId[]);
- method public android.service.autofill.SaveInfo.Builder setTriggerId(android.view.autofill.AutofillId);
- method public android.service.autofill.SaveInfo.Builder setValidator(android.service.autofill.Validator);
+ method @NonNull public android.service.autofill.SaveInfo.Builder setCustomDescription(@NonNull android.service.autofill.CustomDescription);
+ method @NonNull public android.service.autofill.SaveInfo.Builder setDescription(@Nullable CharSequence);
+ method @NonNull public android.service.autofill.SaveInfo.Builder setFlags(int);
+ method @NonNull public android.service.autofill.SaveInfo.Builder setNegativeAction(int, @Nullable android.content.IntentSender);
+ method @NonNull public android.service.autofill.SaveInfo.Builder setOptionalIds(@NonNull android.view.autofill.AutofillId[]);
+ method @NonNull public android.service.autofill.SaveInfo.Builder setTriggerId(@NonNull android.view.autofill.AutofillId);
+ method @NonNull public android.service.autofill.SaveInfo.Builder setValidator(@NonNull android.service.autofill.Validator);
}
public final class SaveRequest implements android.os.Parcelable {
method public int describeContents();
- method public android.os.Bundle getClientState();
- method public java.util.List<java.lang.String> getDatasetIds();
- method public java.util.List<android.service.autofill.FillContext> getFillContexts();
+ method @Nullable public android.os.Bundle getClientState();
+ method @Nullable public java.util.List<java.lang.String> getDatasetIds();
+ method @NonNull public java.util.List<android.service.autofill.FillContext> getFillContexts();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.autofill.SaveRequest> CREATOR;
}
public final class TextValueSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
- ctor public TextValueSanitizer(java.util.regex.Pattern, java.lang.String);
+ ctor public TextValueSanitizer(@NonNull java.util.regex.Pattern, @NonNull String);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.autofill.TextValueSanitizer> CREATOR;
}
- public abstract interface Transformation {
+ public interface Transformation {
}
public final class UserData implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getFieldClassificationAlgorithm();
- method public java.lang.String getFieldClassificationAlgorithmForCategory(java.lang.String);
- method public java.lang.String getId();
+ method @Nullable public String getFieldClassificationAlgorithm();
+ method @Nullable public String getFieldClassificationAlgorithmForCategory(@NonNull String);
+ method public String getId();
method public static int getMaxCategoryCount();
method public static int getMaxFieldClassificationIdsSize();
method public static int getMaxUserDataSize();
@@ -40962,20 +41087,20 @@
}
public static final class UserData.Builder {
- ctor public UserData.Builder(java.lang.String, java.lang.String, java.lang.String);
- method public android.service.autofill.UserData.Builder add(java.lang.String, java.lang.String);
+ ctor public UserData.Builder(@NonNull String, @NonNull String, @NonNull String);
+ method public android.service.autofill.UserData.Builder add(@NonNull String, @NonNull String);
method public android.service.autofill.UserData build();
- method public android.service.autofill.UserData.Builder setFieldClassificationAlgorithm(java.lang.String, android.os.Bundle);
- method public android.service.autofill.UserData.Builder setFieldClassificationAlgorithmForCategory(java.lang.String, java.lang.String, android.os.Bundle);
+ method public android.service.autofill.UserData.Builder setFieldClassificationAlgorithm(@Nullable String, @Nullable android.os.Bundle);
+ method public android.service.autofill.UserData.Builder setFieldClassificationAlgorithmForCategory(@NonNull String, @Nullable String, @Nullable android.os.Bundle);
}
- public abstract interface Validator {
+ public interface Validator {
}
public final class Validators {
- method public static android.service.autofill.Validator and(android.service.autofill.Validator...);
- method public static android.service.autofill.Validator not(android.service.autofill.Validator);
- method public static android.service.autofill.Validator or(android.service.autofill.Validator...);
+ method @NonNull public static android.service.autofill.Validator and(@NonNull android.service.autofill.Validator...);
+ method @NonNull public static android.service.autofill.Validator not(@NonNull android.service.autofill.Validator);
+ method @NonNull public static android.service.autofill.Validator or(@NonNull android.service.autofill.Validator...);
}
public final class VisibilitySetterAction implements android.service.autofill.OnClickAction android.os.Parcelable {
@@ -40985,9 +41110,9 @@
}
public static class VisibilitySetterAction.Builder {
- ctor public VisibilitySetterAction.Builder(int, int);
+ ctor public VisibilitySetterAction.Builder(@IdRes int, int);
method public android.service.autofill.VisibilitySetterAction build();
- method public android.service.autofill.VisibilitySetterAction.Builder setVisibility(int, int);
+ method public android.service.autofill.VisibilitySetterAction.Builder setVisibility(@IdRes int, int);
}
}
@@ -40995,35 +41120,35 @@
package android.service.carrier {
public class CarrierIdentifier implements android.os.Parcelable {
- ctor public CarrierIdentifier(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- ctor public CarrierIdentifier(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, int, int);
- ctor public CarrierIdentifier(byte[], java.lang.String, java.lang.String);
+ ctor public CarrierIdentifier(String, String, @Nullable String, @Nullable String, @Nullable String, @Nullable String);
+ ctor public CarrierIdentifier(String, String, @Nullable String, @Nullable String, @Nullable String, @Nullable String, int, int);
+ ctor public CarrierIdentifier(byte[], @Nullable String, @Nullable String);
method public int describeContents();
method public int getCarrierId();
- method public java.lang.String getGid1();
- method public java.lang.String getGid2();
- method public java.lang.String getImsi();
- method public java.lang.String getMcc();
- method public java.lang.String getMnc();
+ method @Nullable public String getGid1();
+ method @Nullable public String getGid2();
+ method @Nullable public String getImsi();
+ method public String getMcc();
+ method public String getMnc();
method public int getPreciseCarrierId();
- method public java.lang.String getSpn();
+ method @Nullable public String getSpn();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.carrier.CarrierIdentifier> CREATOR;
}
public abstract class CarrierMessagingService extends android.app.Service {
ctor public CarrierMessagingService();
- method public android.os.IBinder onBind(android.content.Intent);
- method public void onDownloadMms(android.net.Uri, int, android.net.Uri, android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
- method public deprecated void onFilterSms(android.service.carrier.MessagePdu, java.lang.String, int, int, android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Boolean>);
- method public void onReceiveTextSms(android.service.carrier.MessagePdu, java.lang.String, int, int, android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
- method public deprecated void onSendDataSms(byte[], int, java.lang.String, int, android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
- method public void onSendDataSms(byte[], int, java.lang.String, int, int, android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
- method public void onSendMms(android.net.Uri, int, android.net.Uri, android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMmsResult>);
- method public deprecated void onSendMultipartTextSms(java.util.List<java.lang.String>, int, java.lang.String, android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
- method public void onSendMultipartTextSms(java.util.List<java.lang.String>, int, java.lang.String, int, android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
- method public deprecated void onSendTextSms(java.lang.String, int, java.lang.String, android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
- method public void onSendTextSms(java.lang.String, int, java.lang.String, int, android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
+ method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
+ method public void onDownloadMms(@NonNull android.net.Uri, int, @NonNull android.net.Uri, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
+ method @Deprecated public void onFilterSms(@NonNull android.service.carrier.MessagePdu, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Boolean>);
+ method public void onReceiveTextSms(@NonNull android.service.carrier.MessagePdu, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
+ method @Deprecated public void onSendDataSms(@NonNull byte[], int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
+ method public void onSendDataSms(@NonNull byte[], int, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
+ method public void onSendMms(@NonNull android.net.Uri, int, @Nullable android.net.Uri, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMmsResult>);
+ method @Deprecated public void onSendMultipartTextSms(@NonNull java.util.List<java.lang.String>, int, @NonNull String, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
+ method public void onSendMultipartTextSms(@NonNull java.util.List<java.lang.String>, int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
+ method @Deprecated public void onSendTextSms(@NonNull String, int, @NonNull String, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
+ method public void onSendTextSms(@NonNull String, int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
field public static final int DOWNLOAD_STATUS_ERROR = 2; // 0x2
field public static final int DOWNLOAD_STATUS_OK = 0; // 0x0
field public static final int DOWNLOAD_STATUS_RETRY_ON_CARRIER_NETWORK = 1; // 0x1
@@ -41034,22 +41159,22 @@
field public static final int SEND_STATUS_ERROR = 2; // 0x2
field public static final int SEND_STATUS_OK = 0; // 0x0
field public static final int SEND_STATUS_RETRY_ON_CARRIER_NETWORK = 1; // 0x1
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.carrier.CarrierMessagingService";
+ field public static final String SERVICE_INTERFACE = "android.service.carrier.CarrierMessagingService";
}
- public static abstract interface CarrierMessagingService.ResultCallback<T> {
- method public abstract void onReceiveResult(T) throws android.os.RemoteException;
+ public static interface CarrierMessagingService.ResultCallback<T> {
+ method public void onReceiveResult(@NonNull T) throws android.os.RemoteException;
}
public static final class CarrierMessagingService.SendMmsResult {
- ctor public CarrierMessagingService.SendMmsResult(int, byte[]);
- method public byte[] getSendConfPdu();
+ ctor public CarrierMessagingService.SendMmsResult(int, @Nullable byte[]);
+ method @Nullable public byte[] getSendConfPdu();
method public int getSendStatus();
}
public static final class CarrierMessagingService.SendMultipartSmsResult {
- ctor public CarrierMessagingService.SendMultipartSmsResult(int, int[]);
- method public int[] getMessageRefs();
+ ctor public CarrierMessagingService.SendMultipartSmsResult(int, @Nullable int[]);
+ method @Nullable public int[] getMessageRefs();
method public int getSendStatus();
}
@@ -41062,15 +41187,15 @@
public abstract class CarrierService extends android.app.Service {
ctor public CarrierService();
method public final void notifyCarrierNetworkChange(boolean);
- method public android.os.IBinder onBind(android.content.Intent);
+ method @CallSuper public android.os.IBinder onBind(android.content.Intent);
method public abstract android.os.PersistableBundle onLoadConfig(android.service.carrier.CarrierIdentifier);
- field public static final java.lang.String CARRIER_SERVICE_INTERFACE = "android.service.carrier.CarrierService";
+ field public static final String CARRIER_SERVICE_INTERFACE = "android.service.carrier.CarrierService";
}
public final class MessagePdu implements android.os.Parcelable {
- ctor public MessagePdu(java.util.List<byte[]>);
+ ctor public MessagePdu(@NonNull java.util.List<byte[]>);
method public int describeContents();
- method public java.util.List<byte[]> getPdus();
+ method @NonNull public java.util.List<byte[]> getPdus();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.carrier.MessagePdu> CREATOR;
}
@@ -41080,13 +41205,13 @@
package android.service.chooser {
public final class ChooserTarget implements android.os.Parcelable {
- ctor public ChooserTarget(java.lang.CharSequence, android.graphics.drawable.Icon, float, android.content.ComponentName, android.os.Bundle);
+ ctor public ChooserTarget(CharSequence, android.graphics.drawable.Icon, float, android.content.ComponentName, @Nullable android.os.Bundle);
method public int describeContents();
method public android.content.ComponentName getComponentName();
method public android.graphics.drawable.Icon getIcon();
method public android.os.Bundle getIntentExtras();
method public float getScore();
- method public java.lang.CharSequence getTitle();
+ method public CharSequence getTitle();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> CREATOR;
}
@@ -41095,9 +41220,9 @@
ctor public ChooserTargetService();
method public android.os.IBinder onBind(android.content.Intent);
method public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter);
- field public static final java.lang.String BIND_PERMISSION = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
- field public static final java.lang.String META_DATA_NAME = "android.service.chooser.chooser_target_service";
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService";
+ field public static final String BIND_PERMISSION = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
+ field public static final String META_DATA_NAME = "android.service.chooser.chooser_target_service";
+ field public static final String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService";
}
}
@@ -41113,7 +41238,7 @@
method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
method public boolean dispatchTouchEvent(android.view.MotionEvent);
method public boolean dispatchTrackballEvent(android.view.MotionEvent);
- method public <T extends android.view.View> T findViewById(int);
+ method public <T extends android.view.View> T findViewById(@IdRes int);
method public final void finish();
method public android.view.Window getWindow();
method public android.view.WindowManager getWindowManager();
@@ -41141,16 +41266,16 @@
method public void onWindowFocusChanged(boolean);
method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
- method public final <T extends android.view.View> T requireViewById(int);
- method public void setContentView(int);
+ method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
+ method public void setContentView(@LayoutRes int);
method public void setContentView(android.view.View);
method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
method public void setFullscreen(boolean);
method public void setInteractive(boolean);
method public void setScreenBright(boolean);
method public final void wakeUp();
- field public static final java.lang.String DREAM_META_DATA = "android.service.dream";
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.dreams.DreamService";
+ field public static final String DREAM_META_DATA = "android.service.dream";
+ field public static final String SERVICE_INTERFACE = "android.service.dreams.DreamService";
}
}
@@ -41166,28 +41291,28 @@
public abstract class MediaBrowserService extends android.app.Service {
ctor public MediaBrowserService();
- method public void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
+ method public void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
method public final android.os.Bundle getBrowserRootHints();
method public final android.media.session.MediaSessionManager.RemoteUserInfo getCurrentBrowserInfo();
- method public android.media.session.MediaSession.Token getSessionToken();
- method public void notifyChildrenChanged(java.lang.String);
- method public void notifyChildrenChanged(java.lang.String, android.os.Bundle);
+ method @Nullable public android.media.session.MediaSession.Token getSessionToken();
+ method public void notifyChildrenChanged(@NonNull String);
+ method public void notifyChildrenChanged(@NonNull String, @NonNull android.os.Bundle);
method public android.os.IBinder onBind(android.content.Intent);
- method public abstract android.service.media.MediaBrowserService.BrowserRoot onGetRoot(java.lang.String, int, android.os.Bundle);
- method public abstract void onLoadChildren(java.lang.String, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
- method public void onLoadChildren(java.lang.String, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>, android.os.Bundle);
- method public void onLoadItem(java.lang.String, android.service.media.MediaBrowserService.Result<android.media.browse.MediaBrowser.MediaItem>);
+ method @Nullable public abstract android.service.media.MediaBrowserService.BrowserRoot onGetRoot(@NonNull String, int, @Nullable android.os.Bundle);
+ method public abstract void onLoadChildren(@NonNull String, @NonNull android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
+ method public void onLoadChildren(@NonNull String, @NonNull android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>, @NonNull android.os.Bundle);
+ method public void onLoadItem(String, android.service.media.MediaBrowserService.Result<android.media.browse.MediaBrowser.MediaItem>);
method public void setSessionToken(android.media.session.MediaSession.Token);
- field public static final java.lang.String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
+ field public static final String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
}
public static final class MediaBrowserService.BrowserRoot {
- ctor public MediaBrowserService.BrowserRoot(java.lang.String, android.os.Bundle);
+ ctor public MediaBrowserService.BrowserRoot(@NonNull String, @Nullable android.os.Bundle);
method public android.os.Bundle getExtras();
- method public java.lang.String getRootId();
- field public static final java.lang.String EXTRA_OFFLINE = "android.service.media.extra.OFFLINE";
- field public static final java.lang.String EXTRA_RECENT = "android.service.media.extra.RECENT";
- field public static final java.lang.String EXTRA_SUGGESTED = "android.service.media.extra.SUGGESTED";
+ method public String getRootId();
+ field public static final String EXTRA_OFFLINE = "android.service.media.extra.OFFLINE";
+ field public static final String EXTRA_RECENT = "android.service.media.extra.RECENT";
+ field public static final String EXTRA_SUGGESTED = "android.service.media.extra.SUGGESTED";
}
public class MediaBrowserService.Result<T> {
@@ -41200,20 +41325,20 @@
package android.service.notification {
public final class Condition implements android.os.Parcelable {
- ctor public Condition(android.net.Uri, java.lang.String, int);
- ctor public Condition(android.net.Uri, java.lang.String, java.lang.String, java.lang.String, int, int, int);
+ ctor public Condition(android.net.Uri, String, int);
+ ctor public Condition(android.net.Uri, String, String, String, int, int, int);
ctor public Condition(android.os.Parcel);
method public android.service.notification.Condition copy();
method public int describeContents();
- method public static boolean isValidId(android.net.Uri, java.lang.String);
+ method public static boolean isValidId(android.net.Uri, String);
method public static android.net.Uri.Builder newId(android.content.Context);
- method public static java.lang.String relevanceToString(int);
- method public static java.lang.String stateToString(int);
+ method public static String relevanceToString(int);
+ method public static String stateToString(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.notification.Condition> CREATOR;
field public static final int FLAG_RELEVANT_ALWAYS = 2; // 0x2
field public static final int FLAG_RELEVANT_NOW = 1; // 0x1
- field public static final java.lang.String SCHEME = "condition";
+ field public static final String SCHEME = "condition";
field public static final int STATE_ERROR = 3; // 0x3
field public static final int STATE_FALSE = 0; // 0x0
field public static final int STATE_TRUE = 1; // 0x1
@@ -41221,52 +41346,52 @@
field public final int flags;
field public final int icon;
field public final android.net.Uri id;
- field public final java.lang.String line1;
- field public final java.lang.String line2;
+ field public final String line1;
+ field public final String line2;
field public final int state;
- field public final java.lang.String summary;
+ field public final String summary;
}
- public abstract deprecated class ConditionProviderService extends android.app.Service {
- ctor public ConditionProviderService();
- method public final deprecated void notifyCondition(android.service.notification.Condition);
- method public final deprecated void notifyConditions(android.service.notification.Condition...);
- method public android.os.IBinder onBind(android.content.Intent);
- method public abstract void onConnected();
- method public void onRequestConditions(int);
- method public abstract void onSubscribe(android.net.Uri);
- method public abstract void onUnsubscribe(android.net.Uri);
- method public static final void requestRebind(android.content.ComponentName);
- method public final void requestUnbind();
- field public static final deprecated java.lang.String EXTRA_RULE_ID = "android.service.notification.extra.RULE_ID";
- field public static final deprecated java.lang.String META_DATA_CONFIGURATION_ACTIVITY = "android.service.zen.automatic.configurationActivity";
- field public static final deprecated java.lang.String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit";
- field public static final deprecated java.lang.String META_DATA_RULE_TYPE = "android.service.zen.automatic.ruleType";
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.ConditionProviderService";
+ @Deprecated public abstract class ConditionProviderService extends android.app.Service {
+ ctor @Deprecated public ConditionProviderService();
+ method @Deprecated public final void notifyCondition(android.service.notification.Condition);
+ method @Deprecated public final void notifyConditions(android.service.notification.Condition...);
+ method @Deprecated public android.os.IBinder onBind(android.content.Intent);
+ method @Deprecated public abstract void onConnected();
+ method @Deprecated public void onRequestConditions(int);
+ method @Deprecated public abstract void onSubscribe(android.net.Uri);
+ method @Deprecated public abstract void onUnsubscribe(android.net.Uri);
+ method @Deprecated public static final void requestRebind(android.content.ComponentName);
+ method @Deprecated public final void requestUnbind();
+ field @Deprecated public static final String EXTRA_RULE_ID = "android.service.notification.extra.RULE_ID";
+ field @Deprecated public static final String META_DATA_CONFIGURATION_ACTIVITY = "android.service.zen.automatic.configurationActivity";
+ field @Deprecated public static final String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit";
+ field @Deprecated public static final String META_DATA_RULE_TYPE = "android.service.zen.automatic.ruleType";
+ field @Deprecated public static final String SERVICE_INTERFACE = "android.service.notification.ConditionProviderService";
}
public abstract class NotificationListenerService extends android.app.Service {
ctor public NotificationListenerService();
method public final void cancelAllNotifications();
- method public final deprecated void cancelNotification(java.lang.String, java.lang.String, int);
- method public final void cancelNotification(java.lang.String);
- method public final void cancelNotifications(java.lang.String[]);
+ method @Deprecated public final void cancelNotification(String, String, int);
+ method public final void cancelNotification(String);
+ method public final void cancelNotifications(String[]);
method public final void clearRequestedListenerHints();
method public android.service.notification.StatusBarNotification[] getActiveNotifications();
- method public android.service.notification.StatusBarNotification[] getActiveNotifications(java.lang.String[]);
+ method public android.service.notification.StatusBarNotification[] getActiveNotifications(String[]);
method public final int getCurrentInterruptionFilter();
method public final int getCurrentListenerHints();
method public android.service.notification.NotificationListenerService.RankingMap getCurrentRanking();
- method public final java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups(java.lang.String, android.os.UserHandle);
- method public final java.util.List<android.app.NotificationChannel> getNotificationChannels(java.lang.String, android.os.UserHandle);
+ method public final java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups(@NonNull String, @NonNull android.os.UserHandle);
+ method public final java.util.List<android.app.NotificationChannel> getNotificationChannels(@NonNull String, @NonNull android.os.UserHandle);
method public final android.service.notification.StatusBarNotification[] getSnoozedNotifications();
method public android.os.IBinder onBind(android.content.Intent);
method public void onInterruptionFilterChanged(int);
method public void onListenerConnected();
method public void onListenerDisconnected();
method public void onListenerHintsChanged(int);
- method public void onNotificationChannelGroupModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannelGroup, int);
- method public void onNotificationChannelModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannel, int);
+ method public void onNotificationChannelGroupModified(String, android.os.UserHandle, android.app.NotificationChannelGroup, int);
+ method public void onNotificationChannelModified(String, android.os.UserHandle, android.app.NotificationChannel, int);
method public void onNotificationPosted(android.service.notification.StatusBarNotification);
method public void onNotificationPosted(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap);
method public void onNotificationRankingUpdate(android.service.notification.NotificationListenerService.RankingMap);
@@ -41277,9 +41402,9 @@
method public final void requestListenerHints(int);
method public static void requestRebind(android.content.ComponentName);
method public final void requestUnbind();
- method public final void setNotificationsShown(java.lang.String[]);
- method public final void snoozeNotification(java.lang.String, long);
- method public final void updateNotificationChannel(java.lang.String, android.os.UserHandle, android.app.NotificationChannel);
+ method public final void setNotificationsShown(String[]);
+ method public final void snoozeNotification(String, long);
+ method public final void updateNotificationChannel(@NonNull String, @NonNull android.os.UserHandle, @NonNull android.app.NotificationChannel);
field public static final int HINT_HOST_DISABLE_CALL_EFFECTS = 4; // 0x4
field public static final int HINT_HOST_DISABLE_EFFECTS = 1; // 0x1
field public static final int HINT_HOST_DISABLE_NOTIFICATION_EFFECTS = 2; // 0x2
@@ -41310,9 +41435,9 @@
field public static final int REASON_TIMEOUT = 19; // 0x13
field public static final int REASON_UNAUTOBUNDLED = 16; // 0x10
field public static final int REASON_USER_STOPPED = 6; // 0x6
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.NotificationListenerService";
- field public static final deprecated int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
- field public static final deprecated int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
+ field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationListenerService";
+ field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
+ field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
}
public static class NotificationListenerService.Ranking {
@@ -41320,10 +41445,10 @@
method public boolean canShowBadge();
method public android.app.NotificationChannel getChannel();
method public int getImportance();
- method public java.lang.CharSequence getImportanceExplanation();
- method public java.lang.String getKey();
+ method public CharSequence getImportanceExplanation();
+ method public String getKey();
method public long getLastAudiblyAlertedMillis();
- method public java.lang.String getOverrideGroupKey();
+ method public String getOverrideGroupKey();
method public int getRank();
method public int getSuppressedVisualEffects();
method public int getUserSentiment();
@@ -41337,33 +41462,33 @@
public static class NotificationListenerService.RankingMap implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String[] getOrderedKeys();
- method public boolean getRanking(java.lang.String, android.service.notification.NotificationListenerService.Ranking);
+ method public String[] getOrderedKeys();
+ method public boolean getRanking(String, android.service.notification.NotificationListenerService.Ranking);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.notification.NotificationListenerService.RankingMap> CREATOR;
}
public class StatusBarNotification implements android.os.Parcelable {
- ctor public deprecated StatusBarNotification(java.lang.String, java.lang.String, int, java.lang.String, int, int, int, android.app.Notification, android.os.UserHandle, long);
+ ctor @Deprecated public StatusBarNotification(String, String, int, String, int, int, int, android.app.Notification, android.os.UserHandle, long);
ctor public StatusBarNotification(android.os.Parcel);
method public android.service.notification.StatusBarNotification clone();
method public int describeContents();
- method public java.lang.String getGroupKey();
+ method public String getGroupKey();
method public int getId();
- method public java.lang.String getKey();
+ method public String getKey();
method public android.app.Notification getNotification();
- method public java.lang.String getOpPkg();
- method public java.lang.String getOverrideGroupKey();
- method public java.lang.String getPackageName();
+ method public String getOpPkg();
+ method public String getOverrideGroupKey();
+ method public String getPackageName();
method public long getPostTime();
- method public java.lang.String getTag();
+ method public String getTag();
method public int getUid();
method public android.os.UserHandle getUser();
- method public deprecated int getUserId();
+ method @Deprecated public int getUserId();
method public boolean isClearable();
method public boolean isGroup();
method public boolean isOngoing();
- method public void setOverrideGroupKey(java.lang.String);
+ method public void setOverrideGroupKey(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.notification.StatusBarNotification> CREATOR;
}
@@ -41429,16 +41554,16 @@
public final class Tile implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.CharSequence getContentDescription();
+ method public CharSequence getContentDescription();
method public android.graphics.drawable.Icon getIcon();
- method public java.lang.CharSequence getLabel();
+ method public CharSequence getLabel();
method public int getState();
- method public java.lang.CharSequence getSubtitle();
- method public void setContentDescription(java.lang.CharSequence);
+ method @Nullable public CharSequence getSubtitle();
+ method public void setContentDescription(CharSequence);
method public void setIcon(android.graphics.drawable.Icon);
- method public void setLabel(java.lang.CharSequence);
+ method public void setLabel(CharSequence);
method public void setState(int);
- method public void setSubtitle(java.lang.CharSequence);
+ method public void setSubtitle(@Nullable CharSequence);
method public void updateTile();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.quicksettings.Tile> CREATOR;
@@ -41461,10 +41586,10 @@
method public static final void requestListeningState(android.content.Context, android.content.ComponentName);
method public final void showDialog(android.app.Dialog);
method public final void startActivityAndCollapse(android.content.Intent);
- method public final void unlockAndRun(java.lang.Runnable);
- field public static final java.lang.String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
- field public static final java.lang.String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
- field public static final java.lang.String META_DATA_ACTIVE_TILE = "android.service.quicksettings.ACTIVE_TILE";
+ method public final void unlockAndRun(Runnable);
+ field public static final String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
+ field public static final String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
+ field public static final String META_DATA_ACTIVE_TILE = "android.service.quicksettings.ACTIVE_TILE";
}
}
@@ -41474,7 +41599,7 @@
public abstract class RestrictionsReceiver extends android.content.BroadcastReceiver {
ctor public RestrictionsReceiver();
method public void onReceive(android.content.Context, android.content.Intent);
- method public abstract void onRequestPermission(android.content.Context, java.lang.String, java.lang.String, java.lang.String, android.os.PersistableBundle);
+ method public abstract void onRequestPermission(android.content.Context, String, String, String, android.os.PersistableBundle);
}
}
@@ -41485,13 +41610,13 @@
ctor public SpellCheckerService();
method public abstract android.service.textservice.SpellCheckerService.Session createSession();
method public final android.os.IBinder onBind(android.content.Intent);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.textservice.SpellCheckerService";
+ field public static final String SERVICE_INTERFACE = "android.service.textservice.SpellCheckerService";
}
- public static abstract class SpellCheckerService.Session {
+ public abstract static class SpellCheckerService.Session {
ctor public SpellCheckerService.Session();
method public android.os.Bundle getBundle();
- method public java.lang.String getLocale();
+ method public String getLocale();
method public void onCancel();
method public void onClose();
method public abstract void onCreate();
@@ -41521,41 +41646,41 @@
field public static final int STATE_KEYPHRASE_UNSUPPORTED = -1; // 0xffffffff
}
- public static abstract class AlwaysOnHotwordDetector.Callback {
+ public abstract static class AlwaysOnHotwordDetector.Callback {
ctor public AlwaysOnHotwordDetector.Callback();
method public abstract void onAvailabilityChanged(int);
- method public abstract void onDetected(android.service.voice.AlwaysOnHotwordDetector.EventPayload);
+ method public abstract void onDetected(@NonNull android.service.voice.AlwaysOnHotwordDetector.EventPayload);
method public abstract void onError();
method public abstract void onRecognitionPaused();
method public abstract void onRecognitionResumed();
}
public static class AlwaysOnHotwordDetector.EventPayload {
- method public android.media.AudioFormat getCaptureAudioFormat();
- method public byte[] getTriggerAudio();
+ method @Nullable public android.media.AudioFormat getCaptureAudioFormat();
+ method @Nullable public byte[] getTriggerAudio();
}
public class VoiceInteractionService extends android.app.Service {
ctor public VoiceInteractionService();
- method public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(java.lang.String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback);
+ method public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback);
method public int getDisabledShowContext();
method public static boolean isActiveService(android.content.Context, android.content.ComponentName);
method public android.os.IBinder onBind(android.content.Intent);
- method public java.util.Set<java.lang.String> onGetSupportedVoiceActions(java.util.Set<java.lang.String>);
+ method @Nullable public java.util.Set<java.lang.String> onGetSupportedVoiceActions(@NonNull java.util.Set<java.lang.String>);
method public void onLaunchVoiceAssistFromKeyguard();
method public void onReady();
method public void onShutdown();
method public void setDisabledShowContext(int);
method public void showSession(android.os.Bundle, int);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.voice.VoiceInteractionService";
- field public static final java.lang.String SERVICE_META_DATA = "android.voice_interaction";
+ field public static final String SERVICE_INTERFACE = "android.service.voice.VoiceInteractionService";
+ field public static final String SERVICE_META_DATA = "android.voice_interaction";
}
public class VoiceInteractionSession implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback {
ctor public VoiceInteractionSession(android.content.Context);
ctor public VoiceInteractionSession(android.content.Context, android.os.Handler);
method public void closeSystemDialogs();
- method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
+ method public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
method public void finish();
method public android.content.Context getContext();
method public int getDisabledShowContext();
@@ -41563,7 +41688,7 @@
method public int getUserDisabledShowContext();
method public android.app.Dialog getWindow();
method public void hide();
- method public void onAssistStructureFailure(java.lang.Throwable);
+ method public void onAssistStructureFailure(Throwable);
method public void onBackPressed();
method public void onCancelRequest(android.service.voice.VoiceInteractionSession.Request);
method public void onCloseSystemDialogs();
@@ -41572,10 +41697,10 @@
method public void onCreate();
method public android.view.View onCreateContentView();
method public void onDestroy();
- method public boolean[] onGetSupportedCommands(java.lang.String[]);
- method public void onHandleAssist(android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent);
- method public void onHandleAssistSecondary(android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent, int, int);
- method public void onHandleScreenshot(android.graphics.Bitmap);
+ method public boolean[] onGetSupportedCommands(String[]);
+ method public void onHandleAssist(@Nullable android.os.Bundle, @Nullable android.app.assist.AssistStructure, @Nullable android.app.assist.AssistContent);
+ method public void onHandleAssistSecondary(@Nullable android.os.Bundle, @Nullable android.app.assist.AssistStructure, @Nullable android.app.assist.AssistContent, int, int);
+ method public void onHandleScreenshot(@Nullable android.graphics.Bitmap);
method public void onHide();
method public boolean onKeyDown(int, android.view.KeyEvent);
method public boolean onKeyLongPress(int, android.view.KeyEvent);
@@ -41604,6 +41729,7 @@
field public static final int SHOW_SOURCE_ACTIVITY = 16; // 0x10
field public static final int SHOW_SOURCE_APPLICATION = 8; // 0x8
field public static final int SHOW_SOURCE_ASSIST_GESTURE = 4; // 0x4
+ field public static final int SHOW_SOURCE_AUTOMOTIVE_SYSTEM_UI = 128; // 0x80
field public static final int SHOW_SOURCE_NOTIFICATION = 64; // 0x40
field public static final int SHOW_SOURCE_PUSH_TO_TALK = 32; // 0x20
field public static final int SHOW_WITH_ASSIST = 1; // 0x1
@@ -41611,26 +41737,26 @@
}
public static final class VoiceInteractionSession.AbortVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
- method public deprecated java.lang.CharSequence getMessage();
- method public android.app.VoiceInteractor.Prompt getVoicePrompt();
+ method @Deprecated @Nullable public CharSequence getMessage();
+ method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
method public void sendAbortResult(android.os.Bundle);
}
public static final class VoiceInteractionSession.CommandRequest extends android.service.voice.VoiceInteractionSession.Request {
- method public java.lang.String getCommand();
+ method public String getCommand();
method public void sendIntermediateResult(android.os.Bundle);
method public void sendResult(android.os.Bundle);
}
public static final class VoiceInteractionSession.CompleteVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
- method public deprecated java.lang.CharSequence getMessage();
- method public android.app.VoiceInteractor.Prompt getVoicePrompt();
+ method @Deprecated @Nullable public CharSequence getMessage();
+ method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
method public void sendCompleteResult(android.os.Bundle);
}
public static final class VoiceInteractionSession.ConfirmationRequest extends android.service.voice.VoiceInteractionSession.Request {
- method public deprecated java.lang.CharSequence getPrompt();
- method public android.app.VoiceInteractor.Prompt getVoicePrompt();
+ method @Deprecated @Nullable public CharSequence getPrompt();
+ method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
method public void sendConfirmationResult(boolean, android.os.Bundle);
}
@@ -41646,15 +41772,15 @@
public static final class VoiceInteractionSession.PickOptionRequest extends android.service.voice.VoiceInteractionSession.Request {
method public android.app.VoiceInteractor.PickOptionRequest.Option[] getOptions();
- method public deprecated java.lang.CharSequence getPrompt();
- method public android.app.VoiceInteractor.Prompt getVoicePrompt();
+ method @Deprecated @Nullable public CharSequence getPrompt();
+ method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
method public void sendIntermediatePickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
method public void sendPickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
}
public static class VoiceInteractionSession.Request {
method public void cancel();
- method public java.lang.String getCallingPackage();
+ method public String getCallingPackage();
method public int getCallingUid();
method public android.os.Bundle getExtras();
method public boolean isActive();
@@ -41672,10 +41798,10 @@
public abstract class VrListenerService extends android.app.Service {
ctor public VrListenerService();
- method public static final boolean isVrModePackageEnabled(android.content.Context, android.content.ComponentName);
+ method public static final boolean isVrModePackageEnabled(@NonNull android.content.Context, @NonNull android.content.ComponentName);
method public android.os.IBinder onBind(android.content.Intent);
method public void onCurrentVrActivityChanged(android.content.ComponentName);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.vr.VrListenerService";
+ field public static final String SERVICE_INTERFACE = "android.service.vr.VrListenerService";
}
}
@@ -41686,13 +41812,13 @@
ctor public WallpaperService();
method public final android.os.IBinder onBind(android.content.Intent);
method public abstract android.service.wallpaper.WallpaperService.Engine onCreateEngine();
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.wallpaper.WallpaperService";
- field public static final java.lang.String SERVICE_META_DATA = "android.service.wallpaper";
+ field public static final String SERVICE_INTERFACE = "android.service.wallpaper.WallpaperService";
+ field public static final String SERVICE_META_DATA = "android.service.wallpaper";
}
public class WallpaperService.Engine {
ctor public WallpaperService.Engine();
- method protected void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
+ method protected void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
method public int getDesiredMinimumHeight();
method public int getDesiredMinimumWidth();
method public android.content.Context getDisplayContext();
@@ -41701,8 +41827,8 @@
method public boolean isVisible();
method public void notifyColorsChanged();
method public void onApplyWindowInsets(android.view.WindowInsets);
- method public android.os.Bundle onCommand(java.lang.String, int, int, int, android.os.Bundle, boolean);
- method public android.app.WallpaperColors onComputeColors();
+ method public android.os.Bundle onCommand(String, int, int, int, android.os.Bundle, boolean);
+ method @Nullable public android.app.WallpaperColors onComputeColors();
method public void onCreate(android.view.SurfaceHolder);
method public void onDesiredSizeChanged(int, int);
method public void onDestroy();
@@ -41721,16 +41847,16 @@
package android.speech {
- public abstract interface RecognitionListener {
- method public abstract void onBeginningOfSpeech();
- method public abstract void onBufferReceived(byte[]);
- method public abstract void onEndOfSpeech();
- method public abstract void onError(int);
- method public abstract void onEvent(int, android.os.Bundle);
- method public abstract void onPartialResults(android.os.Bundle);
- method public abstract void onReadyForSpeech(android.os.Bundle);
- method public abstract void onResults(android.os.Bundle);
- method public abstract void onRmsChanged(float);
+ public interface RecognitionListener {
+ method public void onBeginningOfSpeech();
+ method public void onBufferReceived(byte[]);
+ method public void onEndOfSpeech();
+ method public void onError(int);
+ method public void onEvent(int, android.os.Bundle);
+ method public void onPartialResults(android.os.Bundle);
+ method public void onReadyForSpeech(android.os.Bundle);
+ method public void onResults(android.os.Bundle);
+ method public void onRmsChanged(float);
}
public abstract class RecognitionService extends android.app.Service {
@@ -41739,8 +41865,8 @@
method protected abstract void onCancel(android.speech.RecognitionService.Callback);
method protected abstract void onStartListening(android.content.Intent, android.speech.RecognitionService.Callback);
method protected abstract void onStopListening(android.speech.RecognitionService.Callback);
- field public static final java.lang.String SERVICE_INTERFACE = "android.speech.RecognitionService";
- field public static final java.lang.String SERVICE_META_DATA = "android.speech";
+ field public static final String SERVICE_INTERFACE = "android.speech.RecognitionService";
+ field public static final String SERVICE_META_DATA = "android.speech";
}
public class RecognitionService.Callback {
@@ -41757,33 +41883,33 @@
public class RecognizerIntent {
method public static final android.content.Intent getVoiceDetailsIntent(android.content.Context);
- field public static final java.lang.String ACTION_GET_LANGUAGE_DETAILS = "android.speech.action.GET_LANGUAGE_DETAILS";
- field public static final java.lang.String ACTION_RECOGNIZE_SPEECH = "android.speech.action.RECOGNIZE_SPEECH";
- field public static final java.lang.String ACTION_VOICE_SEARCH_HANDS_FREE = "android.speech.action.VOICE_SEARCH_HANDS_FREE";
- field public static final java.lang.String ACTION_WEB_SEARCH = "android.speech.action.WEB_SEARCH";
- field public static final java.lang.String DETAILS_META_DATA = "android.speech.DETAILS";
- field public static final java.lang.String EXTRA_CALLING_PACKAGE = "calling_package";
- field public static final java.lang.String EXTRA_CONFIDENCE_SCORES = "android.speech.extra.CONFIDENCE_SCORES";
- field public static final java.lang.String EXTRA_LANGUAGE = "android.speech.extra.LANGUAGE";
- field public static final java.lang.String EXTRA_LANGUAGE_MODEL = "android.speech.extra.LANGUAGE_MODEL";
- field public static final java.lang.String EXTRA_LANGUAGE_PREFERENCE = "android.speech.extra.LANGUAGE_PREFERENCE";
- field public static final java.lang.String EXTRA_MAX_RESULTS = "android.speech.extra.MAX_RESULTS";
- field public static final java.lang.String EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE = "android.speech.extra.ONLY_RETURN_LANGUAGE_PREFERENCE";
- field public static final java.lang.String EXTRA_ORIGIN = "android.speech.extra.ORIGIN";
- field public static final java.lang.String EXTRA_PARTIAL_RESULTS = "android.speech.extra.PARTIAL_RESULTS";
- field public static final java.lang.String EXTRA_PREFER_OFFLINE = "android.speech.extra.PREFER_OFFLINE";
- field public static final java.lang.String EXTRA_PROMPT = "android.speech.extra.PROMPT";
- field public static final java.lang.String EXTRA_RESULTS = "android.speech.extra.RESULTS";
- field public static final java.lang.String EXTRA_RESULTS_PENDINGINTENT = "android.speech.extra.RESULTS_PENDINGINTENT";
- field public static final java.lang.String EXTRA_RESULTS_PENDINGINTENT_BUNDLE = "android.speech.extra.RESULTS_PENDINGINTENT_BUNDLE";
- field public static final java.lang.String EXTRA_SECURE = "android.speech.extras.EXTRA_SECURE";
- field public static final java.lang.String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS";
- field public static final java.lang.String EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_MINIMUM_LENGTH_MILLIS";
- field public static final java.lang.String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS";
- field public static final java.lang.String EXTRA_SUPPORTED_LANGUAGES = "android.speech.extra.SUPPORTED_LANGUAGES";
- field public static final java.lang.String EXTRA_WEB_SEARCH_ONLY = "android.speech.extra.WEB_SEARCH_ONLY";
- field public static final java.lang.String LANGUAGE_MODEL_FREE_FORM = "free_form";
- field public static final java.lang.String LANGUAGE_MODEL_WEB_SEARCH = "web_search";
+ field public static final String ACTION_GET_LANGUAGE_DETAILS = "android.speech.action.GET_LANGUAGE_DETAILS";
+ field public static final String ACTION_RECOGNIZE_SPEECH = "android.speech.action.RECOGNIZE_SPEECH";
+ field public static final String ACTION_VOICE_SEARCH_HANDS_FREE = "android.speech.action.VOICE_SEARCH_HANDS_FREE";
+ field public static final String ACTION_WEB_SEARCH = "android.speech.action.WEB_SEARCH";
+ field public static final String DETAILS_META_DATA = "android.speech.DETAILS";
+ field public static final String EXTRA_CALLING_PACKAGE = "calling_package";
+ field public static final String EXTRA_CONFIDENCE_SCORES = "android.speech.extra.CONFIDENCE_SCORES";
+ field public static final String EXTRA_LANGUAGE = "android.speech.extra.LANGUAGE";
+ field public static final String EXTRA_LANGUAGE_MODEL = "android.speech.extra.LANGUAGE_MODEL";
+ field public static final String EXTRA_LANGUAGE_PREFERENCE = "android.speech.extra.LANGUAGE_PREFERENCE";
+ field public static final String EXTRA_MAX_RESULTS = "android.speech.extra.MAX_RESULTS";
+ field public static final String EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE = "android.speech.extra.ONLY_RETURN_LANGUAGE_PREFERENCE";
+ field public static final String EXTRA_ORIGIN = "android.speech.extra.ORIGIN";
+ field public static final String EXTRA_PARTIAL_RESULTS = "android.speech.extra.PARTIAL_RESULTS";
+ field public static final String EXTRA_PREFER_OFFLINE = "android.speech.extra.PREFER_OFFLINE";
+ field public static final String EXTRA_PROMPT = "android.speech.extra.PROMPT";
+ field public static final String EXTRA_RESULTS = "android.speech.extra.RESULTS";
+ field public static final String EXTRA_RESULTS_PENDINGINTENT = "android.speech.extra.RESULTS_PENDINGINTENT";
+ field public static final String EXTRA_RESULTS_PENDINGINTENT_BUNDLE = "android.speech.extra.RESULTS_PENDINGINTENT_BUNDLE";
+ field public static final String EXTRA_SECURE = "android.speech.extras.EXTRA_SECURE";
+ field public static final String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS";
+ field public static final String EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_MINIMUM_LENGTH_MILLIS";
+ field public static final String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS";
+ field public static final String EXTRA_SUPPORTED_LANGUAGES = "android.speech.extra.SUPPORTED_LANGUAGES";
+ field public static final String EXTRA_WEB_SEARCH_ONLY = "android.speech.extra.WEB_SEARCH_ONLY";
+ field public static final String LANGUAGE_MODEL_FREE_FORM = "free_form";
+ field public static final String LANGUAGE_MODEL_WEB_SEARCH = "web_search";
field public static final int RESULT_AUDIO_ERROR = 5; // 0x5
field public static final int RESULT_CLIENT_ERROR = 2; // 0x2
field public static final int RESULT_NETWORK_ERROR = 4; // 0x4
@@ -41792,13 +41918,13 @@
}
public class RecognizerResultsIntent {
- field public static final java.lang.String ACTION_VOICE_SEARCH_RESULTS = "android.speech.action.VOICE_SEARCH_RESULTS";
- field public static final java.lang.String EXTRA_VOICE_SEARCH_RESULT_HTML = "android.speech.extras.VOICE_SEARCH_RESULT_HTML";
- field public static final java.lang.String EXTRA_VOICE_SEARCH_RESULT_HTML_BASE_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_HTML_BASE_URLS";
- field public static final java.lang.String EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS = "android.speech.extras.EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS";
- field public static final java.lang.String EXTRA_VOICE_SEARCH_RESULT_STRINGS = "android.speech.extras.VOICE_SEARCH_RESULT_STRINGS";
- field public static final java.lang.String EXTRA_VOICE_SEARCH_RESULT_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_URLS";
- field public static final java.lang.String URI_SCHEME_INLINE = "inline";
+ field public static final String ACTION_VOICE_SEARCH_RESULTS = "android.speech.action.VOICE_SEARCH_RESULTS";
+ field public static final String EXTRA_VOICE_SEARCH_RESULT_HTML = "android.speech.extras.VOICE_SEARCH_RESULT_HTML";
+ field public static final String EXTRA_VOICE_SEARCH_RESULT_HTML_BASE_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_HTML_BASE_URLS";
+ field public static final String EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS = "android.speech.extras.EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS";
+ field public static final String EXTRA_VOICE_SEARCH_RESULT_STRINGS = "android.speech.extras.VOICE_SEARCH_RESULT_STRINGS";
+ field public static final String EXTRA_VOICE_SEARCH_RESULT_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_URLS";
+ field public static final String URI_SCHEME_INLINE = "inline";
}
public class SpeechRecognizer {
@@ -41810,7 +41936,7 @@
method public void setRecognitionListener(android.speech.RecognitionListener);
method public void startListening(android.content.Intent);
method public void stopListening();
- field public static final java.lang.String CONFIDENCE_SCORES = "confidence_scores";
+ field public static final String CONFIDENCE_SCORES = "confidence_scores";
field public static final int ERROR_AUDIO = 3; // 0x3
field public static final int ERROR_CLIENT = 5; // 0x5
field public static final int ERROR_INSUFFICIENT_PERMISSIONS = 9; // 0x9
@@ -41820,82 +41946,82 @@
field public static final int ERROR_RECOGNIZER_BUSY = 8; // 0x8
field public static final int ERROR_SERVER = 4; // 0x4
field public static final int ERROR_SPEECH_TIMEOUT = 6; // 0x6
- field public static final java.lang.String RESULTS_RECOGNITION = "results_recognition";
+ field public static final String RESULTS_RECOGNITION = "results_recognition";
}
}
package android.speech.tts {
- public abstract interface SynthesisCallback {
- method public abstract int audioAvailable(byte[], int, int);
- method public abstract int done();
- method public abstract void error();
- method public abstract void error(int);
- method public abstract int getMaxBufferSize();
- method public abstract boolean hasFinished();
- method public abstract boolean hasStarted();
+ public interface SynthesisCallback {
+ method public int audioAvailable(byte[], int, int);
+ method public int done();
+ method public void error();
+ method public void error(int);
+ method public int getMaxBufferSize();
+ method public boolean hasFinished();
+ method public boolean hasStarted();
method public default void rangeStart(int, int, int);
- method public abstract int start(int, int, int);
+ method public int start(int, int, @IntRange(from=1, to=2) int);
}
public final class SynthesisRequest {
- ctor public SynthesisRequest(java.lang.String, android.os.Bundle);
- ctor public SynthesisRequest(java.lang.CharSequence, android.os.Bundle);
+ ctor public SynthesisRequest(String, android.os.Bundle);
+ ctor public SynthesisRequest(CharSequence, android.os.Bundle);
method public int getCallerUid();
- method public java.lang.CharSequence getCharSequenceText();
- method public java.lang.String getCountry();
- method public java.lang.String getLanguage();
+ method public CharSequence getCharSequenceText();
+ method public String getCountry();
+ method public String getLanguage();
method public android.os.Bundle getParams();
method public int getPitch();
method public int getSpeechRate();
- method public deprecated java.lang.String getText();
- method public java.lang.String getVariant();
- method public java.lang.String getVoiceName();
+ method @Deprecated public String getText();
+ method public String getVariant();
+ method public String getVoiceName();
}
public class TextToSpeech {
ctor public TextToSpeech(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener);
- ctor public TextToSpeech(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener, java.lang.String);
- method public int addEarcon(java.lang.String, java.lang.String, int);
- method public deprecated int addEarcon(java.lang.String, java.lang.String);
- method public int addEarcon(java.lang.String, java.io.File);
- method public int addSpeech(java.lang.String, java.lang.String, int);
- method public int addSpeech(java.lang.CharSequence, java.lang.String, int);
- method public int addSpeech(java.lang.String, java.lang.String);
- method public int addSpeech(java.lang.CharSequence, java.io.File);
- method public deprecated boolean areDefaultsEnforced();
+ ctor public TextToSpeech(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener, String);
+ method public int addEarcon(String, String, @RawRes int);
+ method @Deprecated public int addEarcon(String, String);
+ method public int addEarcon(String, java.io.File);
+ method public int addSpeech(String, String, @RawRes int);
+ method public int addSpeech(CharSequence, String, @RawRes int);
+ method public int addSpeech(String, String);
+ method public int addSpeech(CharSequence, java.io.File);
+ method @Deprecated public boolean areDefaultsEnforced();
method public java.util.Set<java.util.Locale> getAvailableLanguages();
- method public java.lang.String getDefaultEngine();
- method public deprecated java.util.Locale getDefaultLanguage();
+ method public String getDefaultEngine();
+ method @Deprecated public java.util.Locale getDefaultLanguage();
method public android.speech.tts.Voice getDefaultVoice();
method public java.util.List<android.speech.tts.TextToSpeech.EngineInfo> getEngines();
- method public deprecated java.util.Set<java.lang.String> getFeatures(java.util.Locale);
- method public deprecated java.util.Locale getLanguage();
+ method @Deprecated public java.util.Set<java.lang.String> getFeatures(java.util.Locale);
+ method @Deprecated public java.util.Locale getLanguage();
method public static int getMaxSpeechInputLength();
method public android.speech.tts.Voice getVoice();
method public java.util.Set<android.speech.tts.Voice> getVoices();
method public int isLanguageAvailable(java.util.Locale);
method public boolean isSpeaking();
- method public int playEarcon(java.lang.String, int, android.os.Bundle, java.lang.String);
- method public deprecated int playEarcon(java.lang.String, int, java.util.HashMap<java.lang.String, java.lang.String>);
- method public deprecated int playSilence(long, int, java.util.HashMap<java.lang.String, java.lang.String>);
- method public int playSilentUtterance(long, int, java.lang.String);
+ method public int playEarcon(String, int, android.os.Bundle, String);
+ method @Deprecated public int playEarcon(String, int, java.util.HashMap<java.lang.String,java.lang.String>);
+ method @Deprecated public int playSilence(long, int, java.util.HashMap<java.lang.String,java.lang.String>);
+ method public int playSilentUtterance(long, int, String);
method public int setAudioAttributes(android.media.AudioAttributes);
- method public deprecated int setEngineByPackageName(java.lang.String);
+ method @Deprecated public int setEngineByPackageName(String);
method public int setLanguage(java.util.Locale);
- method public deprecated int setOnUtteranceCompletedListener(android.speech.tts.TextToSpeech.OnUtteranceCompletedListener);
+ method @Deprecated public int setOnUtteranceCompletedListener(android.speech.tts.TextToSpeech.OnUtteranceCompletedListener);
method public int setOnUtteranceProgressListener(android.speech.tts.UtteranceProgressListener);
method public int setPitch(float);
method public int setSpeechRate(float);
method public int setVoice(android.speech.tts.Voice);
method public void shutdown();
- method public int speak(java.lang.CharSequence, int, android.os.Bundle, java.lang.String);
- method public deprecated int speak(java.lang.String, int, java.util.HashMap<java.lang.String, java.lang.String>);
+ method public int speak(CharSequence, int, android.os.Bundle, String);
+ method @Deprecated public int speak(String, int, java.util.HashMap<java.lang.String,java.lang.String>);
method public int stop();
- method public int synthesizeToFile(java.lang.CharSequence, android.os.Bundle, java.io.File, java.lang.String);
- method public deprecated int synthesizeToFile(java.lang.String, java.util.HashMap<java.lang.String, java.lang.String>, java.lang.String);
- field public static final java.lang.String ACTION_TTS_QUEUE_PROCESSING_COMPLETED = "android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED";
+ method public int synthesizeToFile(CharSequence, android.os.Bundle, java.io.File, String);
+ method @Deprecated public int synthesizeToFile(String, java.util.HashMap<java.lang.String,java.lang.String>, String);
+ field public static final String ACTION_TTS_QUEUE_PROCESSING_COMPLETED = "android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED";
field public static final int ERROR = -1; // 0xffffffff
field public static final int ERROR_INVALID_REQUEST = -8; // 0xfffffff8
field public static final int ERROR_NETWORK = -6; // 0xfffffffa
@@ -41917,87 +42043,87 @@
public class TextToSpeech.Engine {
ctor public TextToSpeech.Engine();
- field public static final java.lang.String ACTION_CHECK_TTS_DATA = "android.speech.tts.engine.CHECK_TTS_DATA";
- field public static final java.lang.String ACTION_GET_SAMPLE_TEXT = "android.speech.tts.engine.GET_SAMPLE_TEXT";
- field public static final java.lang.String ACTION_INSTALL_TTS_DATA = "android.speech.tts.engine.INSTALL_TTS_DATA";
- field public static final java.lang.String ACTION_TTS_DATA_INSTALLED = "android.speech.tts.engine.TTS_DATA_INSTALLED";
- field public static final deprecated int CHECK_VOICE_DATA_BAD_DATA = -1; // 0xffffffff
+ field public static final String ACTION_CHECK_TTS_DATA = "android.speech.tts.engine.CHECK_TTS_DATA";
+ field public static final String ACTION_GET_SAMPLE_TEXT = "android.speech.tts.engine.GET_SAMPLE_TEXT";
+ field public static final String ACTION_INSTALL_TTS_DATA = "android.speech.tts.engine.INSTALL_TTS_DATA";
+ field public static final String ACTION_TTS_DATA_INSTALLED = "android.speech.tts.engine.TTS_DATA_INSTALLED";
+ field @Deprecated public static final int CHECK_VOICE_DATA_BAD_DATA = -1; // 0xffffffff
field public static final int CHECK_VOICE_DATA_FAIL = 0; // 0x0
- field public static final deprecated int CHECK_VOICE_DATA_MISSING_DATA = -2; // 0xfffffffe
- field public static final deprecated int CHECK_VOICE_DATA_MISSING_VOLUME = -3; // 0xfffffffd
+ field @Deprecated public static final int CHECK_VOICE_DATA_MISSING_DATA = -2; // 0xfffffffe
+ field @Deprecated public static final int CHECK_VOICE_DATA_MISSING_VOLUME = -3; // 0xfffffffd
field public static final int CHECK_VOICE_DATA_PASS = 1; // 0x1
field public static final int DEFAULT_STREAM = 3; // 0x3
- field public static final java.lang.String EXTRA_AVAILABLE_VOICES = "availableVoices";
- field public static final deprecated java.lang.String EXTRA_CHECK_VOICE_DATA_FOR = "checkVoiceDataFor";
- field public static final java.lang.String EXTRA_SAMPLE_TEXT = "sampleText";
- field public static final deprecated java.lang.String EXTRA_TTS_DATA_INSTALLED = "dataInstalled";
- field public static final java.lang.String EXTRA_UNAVAILABLE_VOICES = "unavailableVoices";
- field public static final deprecated java.lang.String EXTRA_VOICE_DATA_FILES = "dataFiles";
- field public static final deprecated java.lang.String EXTRA_VOICE_DATA_FILES_INFO = "dataFilesInfo";
- field public static final deprecated java.lang.String EXTRA_VOICE_DATA_ROOT_DIRECTORY = "dataRoot";
- field public static final java.lang.String INTENT_ACTION_TTS_SERVICE = "android.intent.action.TTS_SERVICE";
- field public static final deprecated java.lang.String KEY_FEATURE_EMBEDDED_SYNTHESIS = "embeddedTts";
- field public static final java.lang.String KEY_FEATURE_NETWORK_RETRIES_COUNT = "networkRetriesCount";
- field public static final deprecated java.lang.String KEY_FEATURE_NETWORK_SYNTHESIS = "networkTts";
- field public static final java.lang.String KEY_FEATURE_NETWORK_TIMEOUT_MS = "networkTimeoutMs";
- field public static final java.lang.String KEY_FEATURE_NOT_INSTALLED = "notInstalled";
- field public static final java.lang.String KEY_PARAM_PAN = "pan";
- field public static final java.lang.String KEY_PARAM_SESSION_ID = "sessionId";
- field public static final java.lang.String KEY_PARAM_STREAM = "streamType";
- field public static final java.lang.String KEY_PARAM_UTTERANCE_ID = "utteranceId";
- field public static final java.lang.String KEY_PARAM_VOLUME = "volume";
- field public static final java.lang.String SERVICE_META_DATA = "android.speech.tts";
+ field public static final String EXTRA_AVAILABLE_VOICES = "availableVoices";
+ field @Deprecated public static final String EXTRA_CHECK_VOICE_DATA_FOR = "checkVoiceDataFor";
+ field public static final String EXTRA_SAMPLE_TEXT = "sampleText";
+ field @Deprecated public static final String EXTRA_TTS_DATA_INSTALLED = "dataInstalled";
+ field public static final String EXTRA_UNAVAILABLE_VOICES = "unavailableVoices";
+ field @Deprecated public static final String EXTRA_VOICE_DATA_FILES = "dataFiles";
+ field @Deprecated public static final String EXTRA_VOICE_DATA_FILES_INFO = "dataFilesInfo";
+ field @Deprecated public static final String EXTRA_VOICE_DATA_ROOT_DIRECTORY = "dataRoot";
+ field public static final String INTENT_ACTION_TTS_SERVICE = "android.intent.action.TTS_SERVICE";
+ field @Deprecated public static final String KEY_FEATURE_EMBEDDED_SYNTHESIS = "embeddedTts";
+ field public static final String KEY_FEATURE_NETWORK_RETRIES_COUNT = "networkRetriesCount";
+ field @Deprecated public static final String KEY_FEATURE_NETWORK_SYNTHESIS = "networkTts";
+ field public static final String KEY_FEATURE_NETWORK_TIMEOUT_MS = "networkTimeoutMs";
+ field public static final String KEY_FEATURE_NOT_INSTALLED = "notInstalled";
+ field public static final String KEY_PARAM_PAN = "pan";
+ field public static final String KEY_PARAM_SESSION_ID = "sessionId";
+ field public static final String KEY_PARAM_STREAM = "streamType";
+ field public static final String KEY_PARAM_UTTERANCE_ID = "utteranceId";
+ field public static final String KEY_PARAM_VOLUME = "volume";
+ field public static final String SERVICE_META_DATA = "android.speech.tts";
}
public static class TextToSpeech.EngineInfo {
ctor public TextToSpeech.EngineInfo();
field public int icon;
- field public java.lang.String label;
- field public java.lang.String name;
+ field public String label;
+ field public String name;
}
- public static abstract interface TextToSpeech.OnInitListener {
- method public abstract void onInit(int);
+ public static interface TextToSpeech.OnInitListener {
+ method public void onInit(int);
}
- public static abstract deprecated interface TextToSpeech.OnUtteranceCompletedListener {
- method public abstract void onUtteranceCompleted(java.lang.String);
+ @Deprecated public static interface TextToSpeech.OnUtteranceCompletedListener {
+ method @Deprecated public void onUtteranceCompleted(String);
}
public abstract class TextToSpeechService extends android.app.Service {
ctor public TextToSpeechService();
method public android.os.IBinder onBind(android.content.Intent);
- method public java.lang.String onGetDefaultVoiceNameFor(java.lang.String, java.lang.String, java.lang.String);
- method protected java.util.Set<java.lang.String> onGetFeaturesForLanguage(java.lang.String, java.lang.String, java.lang.String);
- method protected abstract java.lang.String[] onGetLanguage();
+ method public String onGetDefaultVoiceNameFor(String, String, String);
+ method protected java.util.Set<java.lang.String> onGetFeaturesForLanguage(String, String, String);
+ method protected abstract String[] onGetLanguage();
method public java.util.List<android.speech.tts.Voice> onGetVoices();
- method protected abstract int onIsLanguageAvailable(java.lang.String, java.lang.String, java.lang.String);
- method public int onIsValidVoiceName(java.lang.String);
- method protected abstract int onLoadLanguage(java.lang.String, java.lang.String, java.lang.String);
- method public int onLoadVoice(java.lang.String);
+ method protected abstract int onIsLanguageAvailable(String, String, String);
+ method public int onIsValidVoiceName(String);
+ method protected abstract int onLoadLanguage(String, String, String);
+ method public int onLoadVoice(String);
method protected abstract void onStop();
method protected abstract void onSynthesizeText(android.speech.tts.SynthesisRequest, android.speech.tts.SynthesisCallback);
}
public abstract class UtteranceProgressListener {
ctor public UtteranceProgressListener();
- method public void onAudioAvailable(java.lang.String, byte[]);
- method public void onBeginSynthesis(java.lang.String, int, int, int);
- method public abstract void onDone(java.lang.String);
- method public abstract deprecated void onError(java.lang.String);
- method public void onError(java.lang.String, int);
- method public void onRangeStart(java.lang.String, int, int, int);
- method public abstract void onStart(java.lang.String);
- method public void onStop(java.lang.String, boolean);
+ method public void onAudioAvailable(String, byte[]);
+ method public void onBeginSynthesis(String, int, int, int);
+ method public abstract void onDone(String);
+ method @Deprecated public abstract void onError(String);
+ method public void onError(String, int);
+ method public void onRangeStart(String, int, int, int);
+ method public abstract void onStart(String);
+ method public void onStop(String, boolean);
}
public class Voice implements android.os.Parcelable {
- ctor public Voice(java.lang.String, java.util.Locale, int, int, boolean, java.util.Set<java.lang.String>);
+ ctor public Voice(String, java.util.Locale, int, int, boolean, java.util.Set<java.lang.String>);
method public int describeContents();
method public java.util.Set<java.lang.String> getFeatures();
method public int getLatency();
method public java.util.Locale getLocale();
- method public java.lang.String getName();
+ method public String getName();
method public int getQuality();
method public boolean isNetworkConnectionRequired();
method public void writeToParcel(android.os.Parcel, int);
@@ -42019,8 +42145,8 @@
package android.system {
public final class ErrnoException extends java.lang.Exception {
- ctor public ErrnoException(java.lang.String, int);
- ctor public ErrnoException(java.lang.String, int, java.lang.Throwable);
+ ctor public ErrnoException(String, int);
+ ctor public ErrnoException(String, int, Throwable);
field public final int errno;
}
@@ -42031,17 +42157,17 @@
public final class Os {
method public static java.io.FileDescriptor accept(java.io.FileDescriptor, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
- method public static boolean access(java.lang.String, int) throws android.system.ErrnoException;
+ method public static boolean access(String, int) throws android.system.ErrnoException;
method public static void bind(java.io.FileDescriptor, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
- method public static void chmod(java.lang.String, int) throws android.system.ErrnoException;
- method public static void chown(java.lang.String, int, int) throws android.system.ErrnoException;
+ method public static void chmod(String, int) throws android.system.ErrnoException;
+ method public static void chown(String, int, int) throws android.system.ErrnoException;
method public static void close(java.io.FileDescriptor) throws android.system.ErrnoException;
method public static void connect(java.io.FileDescriptor, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
method public static java.io.FileDescriptor dup(java.io.FileDescriptor) throws android.system.ErrnoException;
method public static java.io.FileDescriptor dup2(java.io.FileDescriptor, int) throws android.system.ErrnoException;
- method public static java.lang.String[] environ();
- method public static void execv(java.lang.String, java.lang.String[]) throws android.system.ErrnoException;
- method public static void execve(java.lang.String, java.lang.String[], java.lang.String[]) throws android.system.ErrnoException;
+ method public static String[] environ();
+ method public static void execv(String, String[]) throws android.system.ErrnoException;
+ method public static void execve(String, String[], String[]) throws android.system.ErrnoException;
method public static void fchmod(java.io.FileDescriptor, int) throws android.system.ErrnoException;
method public static void fchown(java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
method public static void fdatasync(java.io.FileDescriptor) throws android.system.ErrnoException;
@@ -42049,9 +42175,9 @@
method public static android.system.StructStatVfs fstatvfs(java.io.FileDescriptor) throws android.system.ErrnoException;
method public static void fsync(java.io.FileDescriptor) throws android.system.ErrnoException;
method public static void ftruncate(java.io.FileDescriptor, long) throws android.system.ErrnoException;
- method public static java.lang.String gai_strerror(int);
+ method public static String gai_strerror(int);
method public static int getegid();
- method public static java.lang.String getenv(java.lang.String);
+ method public static String getenv(String);
method public static int geteuid();
method public static int getgid();
method public static java.net.SocketAddress getpeername(java.io.FileDescriptor) throws android.system.ErrnoException;
@@ -42060,27 +42186,27 @@
method public static java.net.SocketAddress getsockname(java.io.FileDescriptor) throws android.system.ErrnoException;
method public static int gettid();
method public static int getuid();
- method public static byte[] getxattr(java.lang.String, java.lang.String) throws android.system.ErrnoException;
- method public static java.lang.String if_indextoname(int);
- method public static int if_nametoindex(java.lang.String);
- method public static java.net.InetAddress inet_pton(int, java.lang.String);
+ method public static byte[] getxattr(String, String) throws android.system.ErrnoException;
+ method public static String if_indextoname(int);
+ method public static int if_nametoindex(String);
+ method public static java.net.InetAddress inet_pton(int, String);
method public static boolean isatty(java.io.FileDescriptor);
method public static void kill(int, int) throws android.system.ErrnoException;
- method public static void lchown(java.lang.String, int, int) throws android.system.ErrnoException;
- method public static void link(java.lang.String, java.lang.String) throws android.system.ErrnoException;
+ method public static void lchown(String, int, int) throws android.system.ErrnoException;
+ method public static void link(String, String) throws android.system.ErrnoException;
method public static void listen(java.io.FileDescriptor, int) throws android.system.ErrnoException;
- method public static java.lang.String[] listxattr(java.lang.String) throws android.system.ErrnoException;
+ method public static String[] listxattr(String) throws android.system.ErrnoException;
method public static long lseek(java.io.FileDescriptor, long, int) throws android.system.ErrnoException;
- method public static android.system.StructStat lstat(java.lang.String) throws android.system.ErrnoException;
+ method public static android.system.StructStat lstat(String) throws android.system.ErrnoException;
method public static void mincore(long, long, byte[]) throws android.system.ErrnoException;
- method public static void mkdir(java.lang.String, int) throws android.system.ErrnoException;
- method public static void mkfifo(java.lang.String, int) throws android.system.ErrnoException;
+ method public static void mkdir(String, int) throws android.system.ErrnoException;
+ method public static void mkfifo(String, int) throws android.system.ErrnoException;
method public static void mlock(long, long) throws android.system.ErrnoException;
method public static long mmap(long, long, int, int, java.io.FileDescriptor, long) throws android.system.ErrnoException;
method public static void msync(long, long, int) throws android.system.ErrnoException;
method public static void munlock(long, long) throws android.system.ErrnoException;
method public static void munmap(long, long) throws android.system.ErrnoException;
- method public static java.io.FileDescriptor open(java.lang.String, int, int) throws android.system.ErrnoException;
+ method public static java.io.FileDescriptor open(String, int, int) throws android.system.ErrnoException;
method public static java.io.FileDescriptor[] pipe() throws android.system.ErrnoException;
method public static int poll(android.system.StructPollfd[], int) throws android.system.ErrnoException;
method public static void posix_fallocate(java.io.FileDescriptor, long, long) throws android.system.ErrnoException;
@@ -42091,41 +42217,41 @@
method public static int pwrite(java.io.FileDescriptor, byte[], int, int, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
method public static int read(java.io.FileDescriptor, java.nio.ByteBuffer) throws android.system.ErrnoException, java.io.InterruptedIOException;
method public static int read(java.io.FileDescriptor, byte[], int, int) throws android.system.ErrnoException, java.io.InterruptedIOException;
- method public static java.lang.String readlink(java.lang.String) throws android.system.ErrnoException;
- method public static int readv(java.io.FileDescriptor, java.lang.Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
+ method public static String readlink(String) throws android.system.ErrnoException;
+ method public static int readv(java.io.FileDescriptor, Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
method public static int recvfrom(java.io.FileDescriptor, java.nio.ByteBuffer, int, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
method public static int recvfrom(java.io.FileDescriptor, byte[], int, int, int, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
- method public static void remove(java.lang.String) throws android.system.ErrnoException;
- method public static void removexattr(java.lang.String, java.lang.String) throws android.system.ErrnoException;
- method public static void rename(java.lang.String, java.lang.String) throws android.system.ErrnoException;
+ method public static void remove(String) throws android.system.ErrnoException;
+ method public static void removexattr(String, String) throws android.system.ErrnoException;
+ method public static void rename(String, String) throws android.system.ErrnoException;
method public static long sendfile(java.io.FileDescriptor, java.io.FileDescriptor, android.system.Int64Ref, long) throws android.system.ErrnoException;
method public static int sendto(java.io.FileDescriptor, java.nio.ByteBuffer, int, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
method public static int sendto(java.io.FileDescriptor, byte[], int, int, int, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
- method public static deprecated void setegid(int) throws android.system.ErrnoException;
- method public static void setenv(java.lang.String, java.lang.String, boolean) throws android.system.ErrnoException;
- method public static deprecated void seteuid(int) throws android.system.ErrnoException;
- method public static deprecated void setgid(int) throws android.system.ErrnoException;
+ method @Deprecated public static void setegid(int) throws android.system.ErrnoException;
+ method public static void setenv(String, String, boolean) throws android.system.ErrnoException;
+ method @Deprecated public static void seteuid(int) throws android.system.ErrnoException;
+ method @Deprecated public static void setgid(int) throws android.system.ErrnoException;
method public static int setsid() throws android.system.ErrnoException;
method public static void setsockoptInt(java.io.FileDescriptor, int, int, int) throws android.system.ErrnoException;
- method public static deprecated void setuid(int) throws android.system.ErrnoException;
- method public static void setxattr(java.lang.String, java.lang.String, byte[], int) throws android.system.ErrnoException;
+ method @Deprecated public static void setuid(int) throws android.system.ErrnoException;
+ method public static void setxattr(String, String, byte[], int) throws android.system.ErrnoException;
method public static void shutdown(java.io.FileDescriptor, int) throws android.system.ErrnoException;
method public static java.io.FileDescriptor socket(int, int, int) throws android.system.ErrnoException;
method public static void socketpair(int, int, int, java.io.FileDescriptor, java.io.FileDescriptor) throws android.system.ErrnoException;
- method public static android.system.StructStat stat(java.lang.String) throws android.system.ErrnoException;
- method public static android.system.StructStatVfs statvfs(java.lang.String) throws android.system.ErrnoException;
- method public static java.lang.String strerror(int);
- method public static java.lang.String strsignal(int);
- method public static void symlink(java.lang.String, java.lang.String) throws android.system.ErrnoException;
+ method public static android.system.StructStat stat(String) throws android.system.ErrnoException;
+ method public static android.system.StructStatVfs statvfs(String) throws android.system.ErrnoException;
+ method public static String strerror(int);
+ method public static String strsignal(int);
+ method public static void symlink(String, String) throws android.system.ErrnoException;
method public static long sysconf(int);
method public static void tcdrain(java.io.FileDescriptor) throws android.system.ErrnoException;
method public static void tcsendbreak(java.io.FileDescriptor, int) throws android.system.ErrnoException;
method public static int umask(int);
method public static android.system.StructUtsname uname();
- method public static void unsetenv(java.lang.String) throws android.system.ErrnoException;
+ method public static void unsetenv(String) throws android.system.ErrnoException;
method public static int write(java.io.FileDescriptor, java.nio.ByteBuffer) throws android.system.ErrnoException, java.io.InterruptedIOException;
method public static int write(java.io.FileDescriptor, byte[], int, int) throws android.system.ErrnoException, java.io.InterruptedIOException;
- method public static int writev(java.io.FileDescriptor, java.lang.Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
+ method public static int writev(java.io.FileDescriptor, Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
}
public final class OsConstants {
@@ -42143,8 +42269,8 @@
method public static boolean WIFSTOPPED(int);
method public static int WSTOPSIG(int);
method public static int WTERMSIG(int);
- method public static java.lang.String errnoName(int);
- method public static java.lang.String gaiName(int);
+ method public static String errnoName(int);
+ method public static String gaiName(int);
field public static final int AF_INET;
field public static final int AF_INET6;
field public static final int AF_UNIX;
@@ -42628,7 +42754,7 @@
field public short events;
field public java.io.FileDescriptor fd;
field public short revents;
- field public java.lang.Object userData;
+ field public Object userData;
}
public final class StructStat {
@@ -42667,7 +42793,7 @@
field public final long f_namemax;
}
- public final class StructTimespec implements java.lang.Comparable {
+ public final class StructTimespec implements java.lang.Comparable<android.system.StructTimespec> {
ctor public StructTimespec(long, long);
method public int compareTo(android.system.StructTimespec);
field public final long tv_nsec;
@@ -42675,12 +42801,12 @@
}
public final class StructUtsname {
- ctor public StructUtsname(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- field public final java.lang.String machine;
- field public final java.lang.String nodename;
- field public final java.lang.String release;
- field public final java.lang.String sysname;
- field public final java.lang.String version;
+ ctor public StructUtsname(String, String, String, String, String);
+ field public final String machine;
+ field public final String nodename;
+ field public final String release;
+ field public final String sysname;
+ field public final String version;
}
}
@@ -42697,8 +42823,8 @@
method public java.util.List<android.telecom.Call> getConferenceableCalls();
method public android.telecom.Call.Details getDetails();
method public android.telecom.Call getParent();
- method public java.lang.String getRemainingPostDialSequence();
- method public android.telecom.Call.RttCall getRttCall();
+ method public String getRemainingPostDialSequence();
+ method @Nullable public android.telecom.Call.RttCall getRttCall();
method public int getState();
method public android.telecom.InCallService.VideoCall getVideoCall();
method public void handoverTo(android.telecom.PhoneAccountHandle, int, android.os.Bundle);
@@ -42712,11 +42838,11 @@
method public void putExtras(android.os.Bundle);
method public void registerCallback(android.telecom.Call.Callback);
method public void registerCallback(android.telecom.Call.Callback, android.os.Handler);
- method public void reject(boolean, java.lang.String);
+ method public void reject(boolean, String);
method public void removeExtras(java.util.List<java.lang.String>);
method public void removeExtras(java.lang.String...);
method public void respondToRttRequest(int, boolean);
- method public void sendCallEvent(java.lang.String, android.os.Bundle);
+ method public void sendCallEvent(String, android.os.Bundle);
method public void sendRttRequest();
method public void splitFromConference();
method public void stopDtmfTone();
@@ -42724,9 +42850,9 @@
method public void swapConference();
method public void unhold();
method public void unregisterCallback(android.telecom.Call.Callback);
- field public static final deprecated java.lang.String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
- field public static final java.lang.String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
- field public static final java.lang.String EXTRA_SUGGESTED_PHONE_ACCOUNTS = "android.telecom.extra.SUGGESTED_PHONE_ACCOUNTS";
+ field @Deprecated public static final String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
+ field public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
+ field public static final String EXTRA_SUGGESTED_PHONE_ACCOUNTS = "android.telecom.extra.SUGGESTED_PHONE_ACCOUNTS";
field public static final int STATE_ACTIVE = 4; // 0x4
field public static final int STATE_CONNECTING = 9; // 0x9
field public static final int STATE_DIALING = 1; // 0x1
@@ -42739,18 +42865,18 @@
field public static final int STATE_SELECT_PHONE_ACCOUNT = 8; // 0x8
}
- public static abstract class Call.Callback {
+ public abstract static class Call.Callback {
ctor public Call.Callback();
method public void onCallDestroyed(android.telecom.Call);
method public void onCannedTextResponsesLoaded(android.telecom.Call, java.util.List<java.lang.String>);
method public void onChildrenChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
method public void onConferenceableCallsChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
- method public void onConnectionEvent(android.telecom.Call, java.lang.String, android.os.Bundle);
+ method public void onConnectionEvent(android.telecom.Call, String, android.os.Bundle);
method public void onDetailsChanged(android.telecom.Call, android.telecom.Call.Details);
method public void onHandoverComplete(android.telecom.Call);
method public void onHandoverFailed(android.telecom.Call, int);
method public void onParentChanged(android.telecom.Call, android.telecom.Call);
- method public void onPostDialWait(android.telecom.Call, java.lang.String);
+ method public void onPostDialWait(android.telecom.Call, String);
method public void onRttInitiationFailure(android.telecom.Call, int);
method public void onRttModeChanged(android.telecom.Call, int);
method public void onRttRequest(android.telecom.Call, int);
@@ -42767,13 +42893,13 @@
public static class Call.Details {
method public static boolean can(int, int);
method public boolean can(int);
- method public static java.lang.String capabilitiesToString(int);
+ method public static String capabilitiesToString(int);
method public android.telecom.PhoneAccountHandle getAccountHandle();
method public int getCallCapabilities();
method public int getCallDirection();
- method public android.telecom.CallIdentification getCallIdentification();
+ method @Nullable public android.telecom.CallIdentification getCallIdentification();
method public int getCallProperties();
- method public java.lang.String getCallerDisplayName();
+ method public String getCallerDisplayName();
method public int getCallerDisplayNamePresentation();
method public final long getConnectTimeMillis();
method public long getCreationTimeMillis();
@@ -42787,7 +42913,7 @@
method public int getVideoState();
method public static boolean hasProperty(int, int);
method public boolean hasProperty(int);
- method public static java.lang.String propertiesToString(int);
+ method public static String propertiesToString(int);
field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000
field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000
field public static final int CAPABILITY_CAN_PULL_CALL = 8388608; // 0x800000
@@ -42826,10 +42952,10 @@
public static final class Call.RttCall {
method public int getRttAudioMode();
- method public java.lang.String read();
- method public java.lang.String readImmediately() throws java.io.IOException;
+ method public String read();
+ method public String readImmediately() throws java.io.IOException;
method public void setRttMode(int);
- method public void write(java.lang.String) throws java.io.IOException;
+ method public void write(String) throws java.io.IOException;
field public static final int RTT_MODE_FULL = 1; // 0x1
field public static final int RTT_MODE_HCO = 2; // 0x2
field public static final int RTT_MODE_VCO = 3; // 0x3
@@ -42837,7 +42963,7 @@
public final class CallAudioState implements android.os.Parcelable {
ctor public CallAudioState(boolean, int, int);
- method public static java.lang.String audioRouteToString(int);
+ method public static String audioRouteToString(int);
method public int describeContents();
method public android.bluetooth.BluetoothDevice getActiveBluetoothDevice();
method public int getRoute();
@@ -42855,13 +42981,13 @@
public final class CallIdentification implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getCallScreeningAppName();
- method public java.lang.String getCallScreeningPackageName();
- method public java.lang.String getDescription();
- method public java.lang.String getDetails();
- method public java.lang.String getName();
+ method @NonNull public String getCallScreeningAppName();
+ method @NonNull public String getCallScreeningPackageName();
+ method @Nullable public String getDescription();
+ method @Nullable public String getDetails();
+ method @Nullable public String getName();
method public int getNuisanceConfidence();
- method public android.graphics.drawable.Icon getPhoto();
+ method @Nullable public android.graphics.drawable.Icon getPhoto();
method public void writeToParcel(android.os.Parcel, int);
field public static final int CONFIDENCE_LIKELY_NOT_NUISANCE = -1; // 0xffffffff
field public static final int CONFIDENCE_LIKELY_NUISANCE = 1; // 0x1
@@ -42874,31 +43000,31 @@
public static class CallIdentification.Builder {
ctor public CallIdentification.Builder();
method public android.telecom.CallIdentification build();
- method public android.telecom.CallIdentification.Builder setDescription(java.lang.String);
- method public android.telecom.CallIdentification.Builder setDetails(java.lang.String);
- method public android.telecom.CallIdentification.Builder setName(java.lang.String);
+ method public android.telecom.CallIdentification.Builder setDescription(@Nullable String);
+ method public android.telecom.CallIdentification.Builder setDetails(@Nullable String);
+ method public android.telecom.CallIdentification.Builder setName(@Nullable String);
method public android.telecom.CallIdentification.Builder setNuisanceConfidence(int);
- method public android.telecom.CallIdentification.Builder setPhoto(android.graphics.drawable.Icon);
+ method public android.telecom.CallIdentification.Builder setPhoto(@Nullable android.graphics.drawable.Icon);
}
public abstract class CallRedirectionService extends android.app.Service {
ctor public CallRedirectionService();
method public final void cancelCall();
method public final android.os.IBinder onBind(android.content.Intent);
- method public abstract void onPlaceCall(android.net.Uri, android.telecom.PhoneAccountHandle, boolean);
+ method public abstract void onPlaceCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
method public final boolean onUnbind(android.content.Intent);
method public final void placeCallUnmodified();
- method public final void redirectCall(android.net.Uri, android.telecom.PhoneAccountHandle, boolean);
- field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.CallRedirectionService";
+ method public final void redirectCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
+ field public static final String SERVICE_INTERFACE = "android.telecom.CallRedirectionService";
}
public abstract class CallScreeningService extends android.app.Service {
ctor public CallScreeningService();
method public android.os.IBinder onBind(android.content.Intent);
- method public abstract void onScreenCall(android.telecom.Call.Details);
- method public final void provideCallIdentification(android.telecom.Call.Details, android.telecom.CallIdentification);
- method public final void respondToCall(android.telecom.Call.Details, android.telecom.CallScreeningService.CallResponse);
- field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.CallScreeningService";
+ method public abstract void onScreenCall(@NonNull android.telecom.Call.Details);
+ method public final void provideCallIdentification(@NonNull android.telecom.Call.Details, @NonNull android.telecom.CallIdentification);
+ method public final void respondToCall(@NonNull android.telecom.Call.Details, @NonNull android.telecom.CallScreeningService.CallResponse);
+ field public static final String SERVICE_INTERFACE = "android.telecom.CallScreeningService";
}
public static class CallScreeningService.CallResponse {
@@ -42946,7 +43072,7 @@
method public void onStopDtmfTone();
method public void onSwap();
method public void onUnhold();
- method public final void putExtras(android.os.Bundle);
+ method public final void putExtras(@NonNull android.os.Bundle);
method public final void removeConnection(android.telecom.Connection);
method public final void removeExtras(java.util.List<java.lang.String>);
method public final void removeExtras(java.lang.String...);
@@ -42958,7 +43084,7 @@
method public final void setConnectionTime(long);
method public final void setDialing();
method public final void setDisconnected(android.telecom.DisconnectCause);
- method public final void setExtras(android.os.Bundle);
+ method public final void setExtras(@Nullable android.os.Bundle);
method public final void setOnHold();
method public final void setStatusHints(android.telecom.StatusHints);
method public final void setVideoProvider(android.telecom.Connection, android.telecom.Connection.VideoProvider);
@@ -42971,7 +43097,7 @@
public abstract class Connection extends android.telecom.Conferenceable {
ctor public Connection();
- method public static java.lang.String capabilitiesToString(int);
+ method public static String capabilitiesToString(int);
method public static android.telecom.Connection createCanceledConnection();
method public static android.telecom.Connection createFailedConnection(android.telecom.DisconnectCause);
method public final void destroy();
@@ -42979,7 +43105,7 @@
method public final int getAddressPresentation();
method public final boolean getAudioModeIsVoip();
method public final android.telecom.CallAudioState getCallAudioState();
- method public final java.lang.String getCallerDisplayName();
+ method public final String getCallerDisplayName();
method public final int getCallerDisplayNamePresentation();
method public final android.telecom.Conference getConference();
method public final java.util.List<android.telecom.Conferenceable> getConferenceables();
@@ -42990,13 +43116,13 @@
method public final int getState();
method public final android.telecom.StatusHints getStatusHints();
method public final android.telecom.Connection.VideoProvider getVideoProvider();
- method public void handleRttUpgradeResponse(android.telecom.Connection.RttTextStream);
+ method public void handleRttUpgradeResponse(@Nullable android.telecom.Connection.RttTextStream);
method public final boolean isRingbackRequested();
method public void onAbort();
method public void onAnswer(int);
method public void onAnswer();
method public void onCallAudioStateChanged(android.telecom.CallAudioState);
- method public void onCallEvent(java.lang.String, android.os.Bundle);
+ method public void onCallEvent(String, android.os.Bundle);
method public void onDeflect(android.net.Uri);
method public void onDisconnect();
method public void onExtrasChanged(android.os.Bundle);
@@ -43006,21 +43132,21 @@
method public void onPostDialContinue(boolean);
method public void onPullExternalCall();
method public void onReject();
- method public void onReject(java.lang.String);
+ method public void onReject(String);
method public void onSeparate();
method public void onShowIncomingCallUi();
method public void onSilence();
- method public void onStartRtt(android.telecom.Connection.RttTextStream);
+ method public void onStartRtt(@NonNull android.telecom.Connection.RttTextStream);
method public void onStateChanged(int);
method public void onStopDtmfTone();
method public void onStopRtt();
method public void onUnhold();
- method public static java.lang.String propertiesToString(int);
- method public final void putExtras(android.os.Bundle);
+ method public static String propertiesToString(int);
+ method public final void putExtras(@NonNull android.os.Bundle);
method public final void removeExtras(java.util.List<java.lang.String>);
method public final void removeExtras(java.lang.String...);
- method public void requestBluetoothAudio(android.bluetooth.BluetoothDevice);
- method public void sendConnectionEvent(java.lang.String, android.os.Bundle);
+ method public void requestBluetoothAudio(@NonNull android.bluetooth.BluetoothDevice);
+ method public void sendConnectionEvent(String, android.os.Bundle);
method public final void sendRemoteRttRequest();
method public final void sendRttInitiationFailure(int);
method public final void sendRttInitiationSuccess();
@@ -43029,31 +43155,31 @@
method public final void setAddress(android.net.Uri, int);
method public final void setAudioModeIsVoip(boolean);
method public final void setAudioRoute(int);
- method public final void setCallerDisplayName(java.lang.String, int);
+ method public final void setCallerDisplayName(String, int);
method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
method public final void setConferenceables(java.util.List<android.telecom.Conferenceable>);
method public final void setConnectionCapabilities(int);
method public final void setConnectionProperties(int);
method public final void setDialing();
method public final void setDisconnected(android.telecom.DisconnectCause);
- method public final void setExtras(android.os.Bundle);
+ method public final void setExtras(@Nullable android.os.Bundle);
method public final void setInitialized();
method public final void setInitializing();
method public final void setNextPostDialChar(char);
method public final void setOnHold();
- method public final void setPostDialWait(java.lang.String);
+ method public final void setPostDialWait(String);
method public final void setPulling();
method public final void setRingbackRequested(boolean);
method public final void setRinging();
method public final void setStatusHints(android.telecom.StatusHints);
method public final void setVideoProvider(android.telecom.Connection.VideoProvider);
method public final void setVideoState(int);
- method public static java.lang.String stateToString(int);
+ method public static String stateToString(int);
field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000
field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000
field public static final int CAPABILITY_CAN_PULL_CALL = 16777216; // 0x1000000
field public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 4194304; // 0x400000
- field public static final deprecated int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000
+ field @Deprecated public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000
field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000
field public static final int CAPABILITY_HOLD = 1; // 0x1
field public static final int CAPABILITY_MANAGE_CONFERENCE = 128; // 0x80
@@ -43070,16 +43196,16 @@
field public static final int CAPABILITY_SUPPORT_DEFLECT = 33554432; // 0x2000000
field public static final int CAPABILITY_SUPPORT_HOLD = 2; // 0x2
field public static final int CAPABILITY_SWAP_CONFERENCE = 8; // 0x8
- field public static final java.lang.String EVENT_CALL_MERGE_FAILED = "android.telecom.event.CALL_MERGE_FAILED";
- field public static final java.lang.String EVENT_CALL_PULL_FAILED = "android.telecom.event.CALL_PULL_FAILED";
- field public static final java.lang.String EVENT_RTT_AUDIO_INDICATION_CHANGED = "android.telecom.event.RTT_AUDIO_INDICATION_CHANGED";
- field public static final java.lang.String EXTRA_ANSWERING_DROPS_FG_CALL = "android.telecom.extra.ANSWERING_DROPS_FG_CALL";
- field public static final java.lang.String EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME = "android.telecom.extra.ANSWERING_DROPS_FG_CALL_APP_NAME";
- field public static final java.lang.String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
- field public static final java.lang.String EXTRA_CHILD_ADDRESS = "android.telecom.extra.CHILD_ADDRESS";
- field public static final java.lang.String EXTRA_IS_RTT_AUDIO_PRESENT = "android.telecom.extra.IS_RTT_AUDIO_PRESENT";
- field public static final java.lang.String EXTRA_LAST_FORWARDED_NUMBER = "android.telecom.extra.LAST_FORWARDED_NUMBER";
- field public static final java.lang.String EXTRA_SIP_INVITE = "android.telecom.extra.SIP_INVITE";
+ field public static final String EVENT_CALL_MERGE_FAILED = "android.telecom.event.CALL_MERGE_FAILED";
+ field public static final String EVENT_CALL_PULL_FAILED = "android.telecom.event.CALL_PULL_FAILED";
+ field public static final String EVENT_RTT_AUDIO_INDICATION_CHANGED = "android.telecom.event.RTT_AUDIO_INDICATION_CHANGED";
+ field public static final String EXTRA_ANSWERING_DROPS_FG_CALL = "android.telecom.extra.ANSWERING_DROPS_FG_CALL";
+ field public static final String EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME = "android.telecom.extra.ANSWERING_DROPS_FG_CALL_APP_NAME";
+ field public static final String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
+ field public static final String EXTRA_CHILD_ADDRESS = "android.telecom.extra.CHILD_ADDRESS";
+ field public static final String EXTRA_IS_RTT_AUDIO_PRESENT = "android.telecom.extra.IS_RTT_AUDIO_PRESENT";
+ field public static final String EXTRA_LAST_FORWARDED_NUMBER = "android.telecom.extra.LAST_FORWARDED_NUMBER";
+ field public static final String EXTRA_SIP_INVITE = "android.telecom.extra.SIP_INVITE";
field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 32; // 0x20
field public static final int PROPERTY_IS_EXTERNAL_CALL = 16; // 0x10
field public static final int PROPERTY_IS_RTT = 256; // 0x100
@@ -43103,12 +43229,12 @@
}
public static final class Connection.RttTextStream {
- method public java.lang.String read() throws java.io.IOException;
- method public java.lang.String readImmediately() throws java.io.IOException;
- method public void write(java.lang.String) throws java.io.IOException;
+ method public String read() throws java.io.IOException;
+ method public String readImmediately() throws java.io.IOException;
+ method public void write(String) throws java.io.IOException;
}
- public static abstract class Connection.VideoProvider {
+ public abstract static class Connection.VideoProvider {
ctor public Connection.VideoProvider();
method public void changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities);
method public void changePeerDimensions(int, int);
@@ -43118,7 +43244,7 @@
method public abstract void onRequestConnectionDataUsage();
method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
- method public abstract void onSetCamera(java.lang.String);
+ method public abstract void onSetCamera(String);
method public abstract void onSetDeviceOrientation(int);
method public abstract void onSetDisplaySurface(android.view.Surface);
method public abstract void onSetPauseImage(android.net.Uri);
@@ -43178,19 +43304,19 @@
method public void onHandoverFailed(android.telecom.ConnectionRequest, int);
method public void onRemoteConferenceAdded(android.telecom.RemoteConference);
method public void onRemoteExistingConnectionAdded(android.telecom.RemoteConnection);
- field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.ConnectionService";
+ field public static final String SERVICE_INTERFACE = "android.telecom.ConnectionService";
}
public final class DisconnectCause implements android.os.Parcelable {
ctor public DisconnectCause(int);
- ctor public DisconnectCause(int, java.lang.String);
- ctor public DisconnectCause(int, java.lang.CharSequence, java.lang.CharSequence, java.lang.String);
- ctor public DisconnectCause(int, java.lang.CharSequence, java.lang.CharSequence, java.lang.String, int);
+ ctor public DisconnectCause(int, String);
+ ctor public DisconnectCause(int, CharSequence, CharSequence, String);
+ ctor public DisconnectCause(int, CharSequence, CharSequence, String, int);
method public int describeContents();
method public int getCode();
- method public java.lang.CharSequence getDescription();
- method public java.lang.CharSequence getLabel();
- method public java.lang.String getReason();
+ method public CharSequence getDescription();
+ method public CharSequence getLabel();
+ method public String getReason();
method public int getTone();
method public void writeToParcel(android.os.Parcel, int);
field public static final int ANSWERED_ELSEWHERE = 11; // 0xb
@@ -43210,10 +43336,10 @@
}
public class GatewayInfo implements android.os.Parcelable {
- ctor public GatewayInfo(java.lang.String, android.net.Uri, android.net.Uri);
+ ctor public GatewayInfo(String, android.net.Uri, android.net.Uri);
method public int describeContents();
method public android.net.Uri getGatewayAddress();
- method public java.lang.String getGatewayProviderPackageName();
+ method public String getGatewayProviderPackageName();
method public android.net.Uri getOriginalAddress();
method public boolean isEmpty();
method public void writeToParcel(android.os.Parcel, int);
@@ -43231,15 +43357,15 @@
method public void onCallAudioStateChanged(android.telecom.CallAudioState);
method public void onCallRemoved(android.telecom.Call);
method public void onCanAddCallChanged(boolean);
- method public void onConnectionEvent(android.telecom.Call, java.lang.String, android.os.Bundle);
+ method public void onConnectionEvent(android.telecom.Call, String, android.os.Bundle);
method public void onSilenceRinger();
- method public final void requestBluetoothAudio(android.bluetooth.BluetoothDevice);
+ method public final void requestBluetoothAudio(@NonNull android.bluetooth.BluetoothDevice);
method public final void setAudioRoute(int);
method public final void setMuted(boolean);
- field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.InCallService";
+ field public static final String SERVICE_INTERFACE = "android.telecom.InCallService";
}
- public static abstract class InCallService.VideoCall {
+ public abstract static class InCallService.VideoCall {
ctor public InCallService.VideoCall();
method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback);
method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback, android.os.Handler);
@@ -43247,7 +43373,7 @@
method public abstract void requestCameraCapabilities();
method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile);
method public abstract void sendSessionModifyResponse(android.telecom.VideoProfile);
- method public abstract void setCamera(java.lang.String);
+ method public abstract void setCamera(String);
method public abstract void setDeviceOrientation(int);
method public abstract void setDisplaySurface(android.view.Surface);
method public abstract void setPauseImage(android.net.Uri);
@@ -43256,7 +43382,7 @@
method public abstract void unregisterCallback(android.telecom.InCallService.VideoCall.Callback);
}
- public static abstract class InCallService.VideoCall.Callback {
+ public abstract static class InCallService.VideoCall.Callback {
ctor public InCallService.VideoCall.Callback();
method public abstract void onCallDataUsageChanged(long);
method public abstract void onCallSessionEvent(int);
@@ -43268,7 +43394,7 @@
}
public final class PhoneAccount implements android.os.Parcelable {
- method public static android.telecom.PhoneAccount.Builder builder(android.telecom.PhoneAccountHandle, java.lang.CharSequence);
+ method public static android.telecom.PhoneAccount.Builder builder(android.telecom.PhoneAccountHandle, CharSequence);
method public int describeContents();
method public android.telecom.PhoneAccountHandle getAccountHandle();
method public android.net.Uri getAddress();
@@ -43276,13 +43402,13 @@
method public android.os.Bundle getExtras();
method public int getHighlightColor();
method public android.graphics.drawable.Icon getIcon();
- method public java.lang.CharSequence getLabel();
- method public java.lang.CharSequence getShortDescription();
+ method public CharSequence getLabel();
+ method public CharSequence getShortDescription();
method public android.net.Uri getSubscriptionAddress();
method public java.util.List<java.lang.String> getSupportedUriSchemes();
method public boolean hasCapabilities(int);
method public boolean isEnabled();
- method public boolean supportsUriScheme(java.lang.String);
+ method public boolean supportsUriScheme(String);
method public android.telecom.PhoneAccount.Builder toBuilder();
method public void writeToParcel(android.os.Parcel, int);
field public static final int CAPABILITY_CALL_PROVIDER = 2; // 0x2
@@ -43296,39 +43422,39 @@
field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8
field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100
field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
- field public static final java.lang.String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
- field public static final java.lang.String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
- field public static final java.lang.String EXTRA_LOG_SELF_MANAGED_CALLS = "android.telecom.extra.LOG_SELF_MANAGED_CALLS";
- field public static final java.lang.String EXTRA_SUPPORTS_HANDOVER_FROM = "android.telecom.extra.SUPPORTS_HANDOVER_FROM";
- field public static final java.lang.String EXTRA_SUPPORTS_HANDOVER_TO = "android.telecom.extra.SUPPORTS_HANDOVER_TO";
+ field public static final String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
+ field public static final String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
+ field public static final String EXTRA_LOG_SELF_MANAGED_CALLS = "android.telecom.extra.LOG_SELF_MANAGED_CALLS";
+ field public static final String EXTRA_SUPPORTS_HANDOVER_FROM = "android.telecom.extra.SUPPORTS_HANDOVER_FROM";
+ field public static final String EXTRA_SUPPORTS_HANDOVER_TO = "android.telecom.extra.SUPPORTS_HANDOVER_TO";
field public static final int NO_HIGHLIGHT_COLOR = 0; // 0x0
field public static final int NO_RESOURCE_ID = -1; // 0xffffffff
- field public static final java.lang.String SCHEME_SIP = "sip";
- field public static final java.lang.String SCHEME_TEL = "tel";
- field public static final java.lang.String SCHEME_VOICEMAIL = "voicemail";
+ field public static final String SCHEME_SIP = "sip";
+ field public static final String SCHEME_TEL = "tel";
+ field public static final String SCHEME_VOICEMAIL = "voicemail";
}
public static class PhoneAccount.Builder {
- ctor public PhoneAccount.Builder(android.telecom.PhoneAccountHandle, java.lang.CharSequence);
+ ctor public PhoneAccount.Builder(android.telecom.PhoneAccountHandle, CharSequence);
ctor public PhoneAccount.Builder(android.telecom.PhoneAccount);
- method public android.telecom.PhoneAccount.Builder addSupportedUriScheme(java.lang.String);
+ method public android.telecom.PhoneAccount.Builder addSupportedUriScheme(String);
method public android.telecom.PhoneAccount build();
method public android.telecom.PhoneAccount.Builder setAddress(android.net.Uri);
method public android.telecom.PhoneAccount.Builder setCapabilities(int);
method public android.telecom.PhoneAccount.Builder setExtras(android.os.Bundle);
method public android.telecom.PhoneAccount.Builder setHighlightColor(int);
method public android.telecom.PhoneAccount.Builder setIcon(android.graphics.drawable.Icon);
- method public android.telecom.PhoneAccount.Builder setShortDescription(java.lang.CharSequence);
+ method public android.telecom.PhoneAccount.Builder setShortDescription(CharSequence);
method public android.telecom.PhoneAccount.Builder setSubscriptionAddress(android.net.Uri);
method public android.telecom.PhoneAccount.Builder setSupportedUriSchemes(java.util.List<java.lang.String>);
}
public final class PhoneAccountHandle implements android.os.Parcelable {
- ctor public PhoneAccountHandle(android.content.ComponentName, java.lang.String);
- ctor public PhoneAccountHandle(android.content.ComponentName, java.lang.String, android.os.UserHandle);
+ ctor public PhoneAccountHandle(@NonNull android.content.ComponentName, @NonNull String);
+ ctor public PhoneAccountHandle(@NonNull android.content.ComponentName, @NonNull String, @NonNull android.os.UserHandle);
method public int describeContents();
method public android.content.ComponentName getComponentName();
- method public java.lang.String getId();
+ method public String getId();
method public android.os.UserHandle getUserHandle();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccountHandle> CREATOR;
@@ -43370,7 +43496,7 @@
method public void unregisterCallback(android.telecom.RemoteConference.Callback);
}
- public static abstract class RemoteConference.Callback {
+ public abstract static class RemoteConference.Callback {
ctor public RemoteConference.Callback();
method public void onConferenceableConnectionsChanged(android.telecom.RemoteConference, java.util.List<android.telecom.RemoteConnection>);
method public void onConnectionAdded(android.telecom.RemoteConference, android.telecom.RemoteConnection);
@@ -43379,7 +43505,7 @@
method public void onConnectionRemoved(android.telecom.RemoteConference, android.telecom.RemoteConnection);
method public void onDestroyed(android.telecom.RemoteConference);
method public void onDisconnected(android.telecom.RemoteConference, android.telecom.DisconnectCause);
- method public void onExtrasChanged(android.telecom.RemoteConference, android.os.Bundle);
+ method public void onExtrasChanged(android.telecom.RemoteConference, @Nullable android.os.Bundle);
method public void onStateChanged(android.telecom.RemoteConference, int, int);
}
@@ -43389,7 +43515,7 @@
method public void disconnect();
method public android.net.Uri getAddress();
method public int getAddressPresentation();
- method public java.lang.CharSequence getCallerDisplayName();
+ method public CharSequence getCallerDisplayName();
method public int getCallerDisplayNamePresentation();
method public android.telecom.RemoteConference getConference();
method public java.util.List<android.telecom.RemoteConnection> getConferenceableConnections();
@@ -43416,20 +43542,20 @@
method public void unregisterCallback(android.telecom.RemoteConnection.Callback);
}
- public static abstract class RemoteConnection.Callback {
+ public abstract static class RemoteConnection.Callback {
ctor public RemoteConnection.Callback();
method public void onAddressChanged(android.telecom.RemoteConnection, android.net.Uri, int);
- method public void onCallerDisplayNameChanged(android.telecom.RemoteConnection, java.lang.String, int);
+ method public void onCallerDisplayNameChanged(android.telecom.RemoteConnection, String, int);
method public void onConferenceChanged(android.telecom.RemoteConnection, android.telecom.RemoteConference);
method public void onConferenceableConnectionsChanged(android.telecom.RemoteConnection, java.util.List<android.telecom.RemoteConnection>);
method public void onConnectionCapabilitiesChanged(android.telecom.RemoteConnection, int);
- method public void onConnectionEvent(android.telecom.RemoteConnection, java.lang.String, android.os.Bundle);
+ method public void onConnectionEvent(android.telecom.RemoteConnection, String, android.os.Bundle);
method public void onConnectionPropertiesChanged(android.telecom.RemoteConnection, int);
method public void onDestroyed(android.telecom.RemoteConnection);
method public void onDisconnected(android.telecom.RemoteConnection, android.telecom.DisconnectCause);
- method public void onExtrasChanged(android.telecom.RemoteConnection, android.os.Bundle);
+ method public void onExtrasChanged(android.telecom.RemoteConnection, @Nullable android.os.Bundle);
method public void onPostDialChar(android.telecom.RemoteConnection, char);
- method public void onPostDialWait(android.telecom.RemoteConnection, java.lang.String);
+ method public void onPostDialWait(android.telecom.RemoteConnection, String);
method public void onRingbackRequested(android.telecom.RemoteConnection, boolean);
method public void onStateChanged(android.telecom.RemoteConnection, int);
method public void onStatusHintsChanged(android.telecom.RemoteConnection, android.telecom.StatusHints);
@@ -43444,7 +43570,7 @@
method public void requestCameraCapabilities();
method public void sendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
method public void sendSessionModifyResponse(android.telecom.VideoProfile);
- method public void setCamera(java.lang.String);
+ method public void setCamera(String);
method public void setDeviceOrientation(int);
method public void setDisplaySurface(android.view.Surface);
method public void setPauseImage(android.net.Uri);
@@ -43453,7 +43579,7 @@
method public void unregisterCallback(android.telecom.RemoteConnection.VideoProvider.Callback);
}
- public static abstract class RemoteConnection.VideoProvider.Callback {
+ public abstract static class RemoteConnection.VideoProvider.Callback {
ctor public RemoteConnection.VideoProvider.Callback();
method public void onCallDataUsageChanged(android.telecom.RemoteConnection.VideoProvider, long);
method public void onCallSessionEvent(android.telecom.RemoteConnection.VideoProvider, int);
@@ -43465,86 +43591,86 @@
}
public final class StatusHints implements android.os.Parcelable {
- ctor public StatusHints(java.lang.CharSequence, android.graphics.drawable.Icon, android.os.Bundle);
+ ctor public StatusHints(CharSequence, android.graphics.drawable.Icon, android.os.Bundle);
method public int describeContents();
method public android.os.Bundle getExtras();
method public android.graphics.drawable.Icon getIcon();
- method public java.lang.CharSequence getLabel();
+ method public CharSequence getLabel();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telecom.StatusHints> CREATOR;
}
public class TelecomManager {
method public void acceptHandover(android.net.Uri, int, android.telecom.PhoneAccountHandle);
- method public void acceptRingingCall();
- method public void acceptRingingCall(int);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall();
+ method @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall(int);
method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
- method public void cancelMissedCallsNotification();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void cancelMissedCallsNotification();
method public android.content.Intent createManageBlockedNumbersIntent();
- method public boolean endCall();
- method public android.net.Uri getAdnUriForPhoneAccount(android.telecom.PhoneAccountHandle);
- method public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts();
- method public java.lang.String getDefaultDialerPackage();
- method public android.telecom.PhoneAccountHandle getDefaultOutgoingPhoneAccount(java.lang.String);
- method public java.lang.String getLine1Number(android.telecom.PhoneAccountHandle);
+ method @RequiresPermission(android.Manifest.permission.ANSWER_PHONE_CALLS) public boolean endCall();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.net.Uri getAdnUriForPhoneAccount(android.telecom.PhoneAccountHandle);
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts();
+ method public String getDefaultDialerPackage();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telecom.PhoneAccountHandle getDefaultOutgoingPhoneAccount(String);
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1Number(android.telecom.PhoneAccountHandle);
method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle);
- method public java.util.List<android.telecom.PhoneAccountHandle> getSelfManagedPhoneAccounts();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getSelfManagedPhoneAccounts();
method public android.telecom.PhoneAccountHandle getSimCallManager();
- method public java.lang.String getSystemDialerPackage();
- method public java.lang.String getVoiceMailNumber(android.telecom.PhoneAccountHandle);
- method public boolean handleMmi(java.lang.String);
- method public boolean handleMmi(java.lang.String, android.telecom.PhoneAccountHandle);
- method public boolean isInCall();
- method public boolean isInManagedCall();
+ method public String getSystemDialerPackage();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber(android.telecom.PhoneAccountHandle);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String, android.telecom.PhoneAccountHandle);
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInCall();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInManagedCall();
method public boolean isIncomingCallPermitted(android.telecom.PhoneAccountHandle);
method public boolean isOutgoingCallPermitted(android.telecom.PhoneAccountHandle);
- method public boolean isTtySupported();
- method public boolean isVoiceMailNumber(android.telecom.PhoneAccountHandle, java.lang.String);
- method public void placeCall(android.net.Uri, android.os.Bundle);
+ method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PHONE_STATE}) public boolean isTtySupported();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVoiceMailNumber(android.telecom.PhoneAccountHandle, String);
+ method @RequiresPermission(anyOf={android.Manifest.permission.CALL_PHONE, android.Manifest.permission.MANAGE_OWN_CALLS}) public void placeCall(android.net.Uri, android.os.Bundle);
method public void registerPhoneAccount(android.telecom.PhoneAccount);
- method public void showInCallScreen(boolean);
- method public void silenceRinger();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public void showInCallScreen(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void silenceRinger();
method public void unregisterPhoneAccount(android.telecom.PhoneAccountHandle);
- field public static final java.lang.String ACTION_CHANGE_DEFAULT_DIALER = "android.telecom.action.CHANGE_DEFAULT_DIALER";
- field public static final java.lang.String ACTION_CHANGE_PHONE_ACCOUNTS = "android.telecom.action.CHANGE_PHONE_ACCOUNTS";
- field public static final java.lang.String ACTION_CONFIGURE_PHONE_ACCOUNT = "android.telecom.action.CONFIGURE_PHONE_ACCOUNT";
- field public static final java.lang.String ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED = "android.telecom.action.DEFAULT_CALL_SCREENING_APP_CHANGED";
- field public static final java.lang.String ACTION_DEFAULT_DIALER_CHANGED = "android.telecom.action.DEFAULT_DIALER_CHANGED";
- field public static final deprecated java.lang.String ACTION_INCOMING_CALL = "android.telecom.action.INCOMING_CALL";
- field public static final java.lang.String ACTION_PHONE_ACCOUNT_REGISTERED = "android.telecom.action.PHONE_ACCOUNT_REGISTERED";
- field public static final java.lang.String ACTION_PHONE_ACCOUNT_UNREGISTERED = "android.telecom.action.PHONE_ACCOUNT_UNREGISTERED";
- field public static final java.lang.String ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS = "android.telecom.action.SHOW_CALL_ACCESSIBILITY_SETTINGS";
- field public static final java.lang.String ACTION_SHOW_CALL_SETTINGS = "android.telecom.action.SHOW_CALL_SETTINGS";
- field public static final java.lang.String ACTION_SHOW_MISSED_CALLS_NOTIFICATION = "android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION";
- field public static final java.lang.String ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS = "android.telecom.action.SHOW_RESPOND_VIA_SMS_SETTINGS";
+ field public static final String ACTION_CHANGE_DEFAULT_DIALER = "android.telecom.action.CHANGE_DEFAULT_DIALER";
+ field public static final String ACTION_CHANGE_PHONE_ACCOUNTS = "android.telecom.action.CHANGE_PHONE_ACCOUNTS";
+ field public static final String ACTION_CONFIGURE_PHONE_ACCOUNT = "android.telecom.action.CONFIGURE_PHONE_ACCOUNT";
+ field public static final String ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED = "android.telecom.action.DEFAULT_CALL_SCREENING_APP_CHANGED";
+ field public static final String ACTION_DEFAULT_DIALER_CHANGED = "android.telecom.action.DEFAULT_DIALER_CHANGED";
+ field @Deprecated public static final String ACTION_INCOMING_CALL = "android.telecom.action.INCOMING_CALL";
+ field public static final String ACTION_PHONE_ACCOUNT_REGISTERED = "android.telecom.action.PHONE_ACCOUNT_REGISTERED";
+ field public static final String ACTION_PHONE_ACCOUNT_UNREGISTERED = "android.telecom.action.PHONE_ACCOUNT_UNREGISTERED";
+ field public static final String ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS = "android.telecom.action.SHOW_CALL_ACCESSIBILITY_SETTINGS";
+ field public static final String ACTION_SHOW_CALL_SETTINGS = "android.telecom.action.SHOW_CALL_SETTINGS";
+ field public static final String ACTION_SHOW_MISSED_CALLS_NOTIFICATION = "android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION";
+ field public static final String ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS = "android.telecom.action.SHOW_RESPOND_VIA_SMS_SETTINGS";
field public static final char DTMF_CHARACTER_PAUSE = 44; // 0x002c ','
field public static final char DTMF_CHARACTER_WAIT = 59; // 0x003b ';'
- field public static final java.lang.String EXTRA_CALL_BACK_NUMBER = "android.telecom.extra.CALL_BACK_NUMBER";
- field public static final java.lang.String EXTRA_CALL_DISCONNECT_CAUSE = "android.telecom.extra.CALL_DISCONNECT_CAUSE";
- field public static final java.lang.String EXTRA_CALL_DISCONNECT_MESSAGE = "android.telecom.extra.CALL_DISCONNECT_MESSAGE";
- field public static final java.lang.String EXTRA_CALL_NETWORK_TYPE = "android.telecom.extra.CALL_NETWORK_TYPE";
- field public static final java.lang.String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
- field public static final java.lang.String EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME = "android.telecom.extra.CHANGE_DEFAULT_DIALER_PACKAGE_NAME";
- field public static final java.lang.String EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME = "android.telecom.extra.DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME";
- field public static final java.lang.String EXTRA_INCOMING_CALL_ADDRESS = "android.telecom.extra.INCOMING_CALL_ADDRESS";
- field public static final java.lang.String EXTRA_INCOMING_CALL_EXTRAS = "android.telecom.extra.INCOMING_CALL_EXTRAS";
- field public static final java.lang.String EXTRA_INCOMING_VIDEO_STATE = "android.telecom.extra.INCOMING_VIDEO_STATE";
- field public static final java.lang.String EXTRA_IS_DEFAULT_CALL_SCREENING_APP = "android.telecom.extra.IS_DEFAULT_CALL_SCREENING_APP";
- field public static final java.lang.String EXTRA_IS_ENABLED = "android.telecom.extra.IS_ENABLED";
- field public static final java.lang.String EXTRA_NOTIFICATION_COUNT = "android.telecom.extra.NOTIFICATION_COUNT";
- field public static final java.lang.String EXTRA_NOTIFICATION_PHONE_NUMBER = "android.telecom.extra.NOTIFICATION_PHONE_NUMBER";
- field public static final java.lang.String EXTRA_OUTGOING_CALL_EXTRAS = "android.telecom.extra.OUTGOING_CALL_EXTRAS";
- field public static final java.lang.String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telecom.extra.PHONE_ACCOUNT_HANDLE";
- field public static final java.lang.String EXTRA_START_CALL_WITH_RTT = "android.telecom.extra.START_CALL_WITH_RTT";
- field public static final java.lang.String EXTRA_START_CALL_WITH_SPEAKERPHONE = "android.telecom.extra.START_CALL_WITH_SPEAKERPHONE";
- field public static final java.lang.String EXTRA_START_CALL_WITH_VIDEO_STATE = "android.telecom.extra.START_CALL_WITH_VIDEO_STATE";
- field public static final java.lang.String GATEWAY_ORIGINAL_ADDRESS = "android.telecom.extra.GATEWAY_ORIGINAL_ADDRESS";
- field public static final java.lang.String GATEWAY_PROVIDER_PACKAGE = "android.telecom.extra.GATEWAY_PROVIDER_PACKAGE";
- field public static final java.lang.String METADATA_INCLUDE_EXTERNAL_CALLS = "android.telecom.INCLUDE_EXTERNAL_CALLS";
- field public static final java.lang.String METADATA_INCLUDE_SELF_MANAGED_CALLS = "android.telecom.INCLUDE_SELF_MANAGED_CALLS";
- field public static final java.lang.String METADATA_IN_CALL_SERVICE_CAR_MODE_UI = "android.telecom.IN_CALL_SERVICE_CAR_MODE_UI";
- field public static final java.lang.String METADATA_IN_CALL_SERVICE_RINGING = "android.telecom.IN_CALL_SERVICE_RINGING";
- field public static final java.lang.String METADATA_IN_CALL_SERVICE_UI = "android.telecom.IN_CALL_SERVICE_UI";
+ field public static final String EXTRA_CALL_BACK_NUMBER = "android.telecom.extra.CALL_BACK_NUMBER";
+ field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telecom.extra.CALL_DISCONNECT_CAUSE";
+ field public static final String EXTRA_CALL_DISCONNECT_MESSAGE = "android.telecom.extra.CALL_DISCONNECT_MESSAGE";
+ field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telecom.extra.CALL_NETWORK_TYPE";
+ field public static final String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
+ field public static final String EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME = "android.telecom.extra.CHANGE_DEFAULT_DIALER_PACKAGE_NAME";
+ field public static final String EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME = "android.telecom.extra.DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME";
+ field public static final String EXTRA_INCOMING_CALL_ADDRESS = "android.telecom.extra.INCOMING_CALL_ADDRESS";
+ field public static final String EXTRA_INCOMING_CALL_EXTRAS = "android.telecom.extra.INCOMING_CALL_EXTRAS";
+ field public static final String EXTRA_INCOMING_VIDEO_STATE = "android.telecom.extra.INCOMING_VIDEO_STATE";
+ field public static final String EXTRA_IS_DEFAULT_CALL_SCREENING_APP = "android.telecom.extra.IS_DEFAULT_CALL_SCREENING_APP";
+ field public static final String EXTRA_IS_ENABLED = "android.telecom.extra.IS_ENABLED";
+ field public static final String EXTRA_NOTIFICATION_COUNT = "android.telecom.extra.NOTIFICATION_COUNT";
+ field public static final String EXTRA_NOTIFICATION_PHONE_NUMBER = "android.telecom.extra.NOTIFICATION_PHONE_NUMBER";
+ field public static final String EXTRA_OUTGOING_CALL_EXTRAS = "android.telecom.extra.OUTGOING_CALL_EXTRAS";
+ field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telecom.extra.PHONE_ACCOUNT_HANDLE";
+ field public static final String EXTRA_START_CALL_WITH_RTT = "android.telecom.extra.START_CALL_WITH_RTT";
+ field public static final String EXTRA_START_CALL_WITH_SPEAKERPHONE = "android.telecom.extra.START_CALL_WITH_SPEAKERPHONE";
+ field public static final String EXTRA_START_CALL_WITH_VIDEO_STATE = "android.telecom.extra.START_CALL_WITH_VIDEO_STATE";
+ field public static final String GATEWAY_ORIGINAL_ADDRESS = "android.telecom.extra.GATEWAY_ORIGINAL_ADDRESS";
+ field public static final String GATEWAY_PROVIDER_PACKAGE = "android.telecom.extra.GATEWAY_PROVIDER_PACKAGE";
+ field public static final String METADATA_INCLUDE_EXTERNAL_CALLS = "android.telecom.INCLUDE_EXTERNAL_CALLS";
+ field public static final String METADATA_INCLUDE_SELF_MANAGED_CALLS = "android.telecom.INCLUDE_SELF_MANAGED_CALLS";
+ field public static final String METADATA_IN_CALL_SERVICE_CAR_MODE_UI = "android.telecom.IN_CALL_SERVICE_CAR_MODE_UI";
+ field public static final String METADATA_IN_CALL_SERVICE_RINGING = "android.telecom.IN_CALL_SERVICE_RINGING";
+ field public static final String METADATA_IN_CALL_SERVICE_UI = "android.telecom.IN_CALL_SERVICE_UI";
field public static final int PRESENTATION_ALLOWED = 1; // 0x1
field public static final int PRESENTATION_PAYPHONE = 4; // 0x4
field public static final int PRESENTATION_RESTRICTED = 2; // 0x2
@@ -43563,7 +43689,7 @@
method public static boolean isReceptionEnabled(int);
method public static boolean isTransmissionEnabled(int);
method public static boolean isVideo(int);
- method public static java.lang.String videoStateToString(int);
+ method public static String videoStateToString(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telecom.VideoProfile> CREATOR;
field public static final int QUALITY_DEFAULT = 4; // 0x4
@@ -43710,182 +43836,182 @@
}
public class CarrierConfigManager {
- method public android.os.PersistableBundle getConfig();
- method public android.os.PersistableBundle getConfigForSubId(int);
+ method @Nullable public android.os.PersistableBundle getConfig();
+ method @Nullable public android.os.PersistableBundle getConfigForSubId(int);
method public static boolean isConfigForIdentifiedCarrier(android.os.PersistableBundle);
method public void notifyConfigChangedForSubId(int);
- field public static final java.lang.String ACTION_CARRIER_CONFIG_CHANGED = "android.telephony.action.CARRIER_CONFIG_CHANGED";
+ field public static final String ACTION_CARRIER_CONFIG_CHANGED = "android.telephony.action.CARRIER_CONFIG_CHANGED";
field public static final int DATA_CYCLE_THRESHOLD_DISABLED = -2; // 0xfffffffe
- field public static final java.lang.String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX";
- field public static final java.lang.String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
- field public static final java.lang.String KEY_ADDITIONAL_CALL_SETTING_BOOL = "additional_call_setting_bool";
- field public static final java.lang.String KEY_ALLOW_ADDING_APNS_BOOL = "allow_adding_apns_bool";
- field public static final java.lang.String KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL = "allow_add_call_during_video_call";
- field public static final java.lang.String KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL = "allow_emergency_numbers_in_call_log_bool";
- field public static final java.lang.String KEY_ALLOW_EMERGENCY_VIDEO_CALLS_BOOL = "allow_emergency_video_calls_bool";
- field public static final java.lang.String KEY_ALLOW_LOCAL_DTMF_TONES_BOOL = "allow_local_dtmf_tones_bool";
- field public static final java.lang.String KEY_ALLOW_MERGE_WIFI_CALLS_WHEN_VOWIFI_OFF_BOOL = "allow_merge_wifi_calls_when_vowifi_off_bool";
- field public static final java.lang.String KEY_ALLOW_NON_EMERGENCY_CALLS_IN_ECM_BOOL = "allow_non_emergency_calls_in_ecm_bool";
- field public static final java.lang.String KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL = "always_show_emergency_alert_onoff_bool";
- field public static final java.lang.String KEY_APN_EXPAND_BOOL = "apn_expand_bool";
- field public static final java.lang.String KEY_AUTO_RETRY_ENABLED_BOOL = "auto_retry_enabled_bool";
- field public static final java.lang.String KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL = "call_barring_supports_deactivate_all_bool";
- field public static final java.lang.String KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL = "call_barring_supports_password_change_bool";
- field public static final java.lang.String KEY_CALL_BARRING_VISIBILITY_BOOL = "call_barring_visibility_bool";
- field public static final java.lang.String KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY = "call_forwarding_blocks_while_roaming_string_array";
- field public static final java.lang.String KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL = "carrier_allow_turnoff_ims_bool";
- field public static final java.lang.String KEY_CARRIER_CALL_SCREENING_APP_STRING = "call_screening_app";
- field public static final java.lang.String KEY_CARRIER_CONFIG_VERSION_STRING = "carrier_config_version_string";
- field public static final java.lang.String KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS = "carrier_data_call_permanent_failure_strings";
- field public static final java.lang.String KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT = "carrier_default_wfc_ims_mode_int";
- field public static final java.lang.String KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_MODE_INT = "carrier_default_wfc_ims_roaming_mode_int";
- field public static final java.lang.String KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL = "carrier_force_disable_etws_cmas_test_bool";
- field public static final java.lang.String KEY_CARRIER_IMS_GBA_REQUIRED_BOOL = "carrier_ims_gba_required_bool";
- field public static final java.lang.String KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL = "carrier_instant_lettering_available_bool";
- field public static final java.lang.String KEY_CARRIER_INSTANT_LETTERING_ENCODING_STRING = "carrier_instant_lettering_encoding_string";
- field public static final java.lang.String KEY_CARRIER_INSTANT_LETTERING_ESCAPED_CHARS_STRING = "carrier_instant_lettering_escaped_chars_string";
- field public static final java.lang.String KEY_CARRIER_INSTANT_LETTERING_INVALID_CHARS_STRING = "carrier_instant_lettering_invalid_chars_string";
- field public static final java.lang.String KEY_CARRIER_INSTANT_LETTERING_LENGTH_LIMIT_INT = "carrier_instant_lettering_length_limit_int";
- field public static final java.lang.String KEY_CARRIER_NAME_OVERRIDE_BOOL = "carrier_name_override_bool";
- field public static final java.lang.String KEY_CARRIER_NAME_STRING = "carrier_name_string";
- field public static final java.lang.String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool";
- field public static final java.lang.String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
- field public static final java.lang.String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
- field public static final java.lang.String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
- field public static final java.lang.String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
- field public static final java.lang.String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
- field public static final java.lang.String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
- field public static final deprecated java.lang.String KEY_CARRIER_VVM_PACKAGE_NAME_STRING = "carrier_vvm_package_name_string";
- field public static final java.lang.String KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY = "carrier_vvm_package_name_string_array";
- field public static final java.lang.String KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL = "carrier_wfc_ims_available_bool";
- field public static final java.lang.String KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL = "carrier_wfc_supports_wifi_only_bool";
- field public static final java.lang.String KEY_CDMA_3WAYCALL_FLASH_DELAY_INT = "cdma_3waycall_flash_delay_int";
- field public static final java.lang.String KEY_CDMA_DTMF_TONE_DELAY_INT = "cdma_dtmf_tone_delay_int";
- field public static final java.lang.String KEY_CDMA_NONROAMING_NETWORKS_STRING_ARRAY = "cdma_nonroaming_networks_string_array";
- field public static final java.lang.String KEY_CDMA_ROAMING_MODE_INT = "cdma_roaming_mode_int";
- field public static final java.lang.String KEY_CDMA_ROAMING_NETWORKS_STRING_ARRAY = "cdma_roaming_networks_string_array";
- field public static final java.lang.String KEY_CI_ACTION_ON_SYS_UPDATE_BOOL = "ci_action_on_sys_update_bool";
- field public static final java.lang.String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING = "ci_action_on_sys_update_extra_string";
- field public static final java.lang.String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING = "ci_action_on_sys_update_extra_val_string";
- field public static final java.lang.String KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING = "ci_action_on_sys_update_intent_string";
- field public static final java.lang.String KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING = "config_ims_package_override_string";
- field public static final java.lang.String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING = "config_plans_package_override_string";
- field public static final java.lang.String KEY_CONFIG_TELEPHONY_USE_OWN_NUMBER_FOR_VOICEMAIL_BOOL = "config_telephony_use_own_number_for_voicemail_bool";
- field public static final java.lang.String KEY_CSP_ENABLED_BOOL = "csp_enabled_bool";
- field public static final java.lang.String KEY_DATA_LIMIT_THRESHOLD_BYTES_LONG = "data_limit_threshold_bytes_long";
- field public static final java.lang.String KEY_DATA_WARNING_THRESHOLD_BYTES_LONG = "data_warning_threshold_bytes_long";
- field public static final java.lang.String KEY_DEFAULT_SIM_CALL_MANAGER_STRING = "default_sim_call_manager_string";
- field public static final java.lang.String KEY_DEFAULT_VM_NUMBER_STRING = "default_vm_number_string";
- field public static final java.lang.String KEY_DIAL_STRING_REPLACE_STRING_ARRAY = "dial_string_replace_string_array";
- field public static final java.lang.String KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL = "disable_cdma_activation_code_bool";
- field public static final java.lang.String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool";
- field public static final java.lang.String KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL = "drop_video_call_when_answering_audio_call_bool";
- field public static final java.lang.String KEY_DTMF_TYPE_ENABLED_BOOL = "dtmf_type_enabled_bool";
- field public static final java.lang.String KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT = "duration_blocking_disabled_after_emergency_int";
- field public static final java.lang.String KEY_EDITABLE_ENHANCED_4G_LTE_BOOL = "editable_enhanced_4g_lte_bool";
- field public static final java.lang.String KEY_EDITABLE_VOICEMAIL_NUMBER_BOOL = "editable_voicemail_number_bool";
- field public static final java.lang.String KEY_EDITABLE_VOICEMAIL_NUMBER_SETTING_BOOL = "editable_voicemail_number_setting_bool";
- field public static final java.lang.String KEY_ENABLE_DIALER_KEY_VIBRATION_BOOL = "enable_dialer_key_vibration_bool";
- field public static final java.lang.String KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL = "enhanced_4g_lte_on_by_default_bool";
- field public static final java.lang.String KEY_FORCE_HOME_NETWORK_BOOL = "force_home_network_bool";
- field public static final java.lang.String KEY_GSM_DTMF_TONE_DELAY_INT = "gsm_dtmf_tone_delay_int";
- field public static final java.lang.String KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY = "gsm_nonroaming_networks_string_array";
- field public static final java.lang.String KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY = "gsm_roaming_networks_string_array";
- field public static final java.lang.String KEY_HAS_IN_CALL_NOISE_SUPPRESSION_BOOL = "has_in_call_noise_suppression_bool";
- field public static final java.lang.String KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL = "hide_carrier_network_settings_bool";
- field public static final java.lang.String KEY_HIDE_ENHANCED_4G_LTE_BOOL = "hide_enhanced_4g_lte_bool";
- field public static final java.lang.String KEY_HIDE_IMS_APN_BOOL = "hide_ims_apn_bool";
- field public static final java.lang.String KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL = "hide_preferred_network_type_bool";
- field public static final java.lang.String KEY_HIDE_PRESET_APN_DETAILS_BOOL = "hide_preset_apn_details_bool";
- field public static final java.lang.String KEY_HIDE_SIM_LOCK_SETTINGS_BOOL = "hide_sim_lock_settings_bool";
- field public static final java.lang.String KEY_IGNORE_SIM_NETWORK_LOCKED_EVENTS_BOOL = "ignore_sim_network_locked_events_bool";
- field public static final java.lang.String KEY_IMS_CONFERENCE_SIZE_LIMIT_INT = "ims_conference_size_limit_int";
- field public static final java.lang.String KEY_IMS_DTMF_TONE_DELAY_INT = "ims_dtmf_tone_delay_int";
- field public static final java.lang.String KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL = "is_ims_conference_size_enforced_bool";
- field public static final java.lang.String KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL = "mdn_is_additional_voicemail_number_bool";
- field public static final java.lang.String KEY_MMS_ALIAS_ENABLED_BOOL = "aliasEnabled";
- field public static final java.lang.String KEY_MMS_ALIAS_MAX_CHARS_INT = "aliasMaxChars";
- field public static final java.lang.String KEY_MMS_ALIAS_MIN_CHARS_INT = "aliasMinChars";
- field public static final java.lang.String KEY_MMS_ALLOW_ATTACH_AUDIO_BOOL = "allowAttachAudio";
- field public static final java.lang.String KEY_MMS_APPEND_TRANSACTION_ID_BOOL = "enabledTransID";
- field public static final java.lang.String KEY_MMS_EMAIL_GATEWAY_NUMBER_STRING = "emailGatewayNumber";
- field public static final java.lang.String KEY_MMS_GROUP_MMS_ENABLED_BOOL = "enableGroupMms";
- field public static final java.lang.String KEY_MMS_HTTP_PARAMS_STRING = "httpParams";
- field public static final java.lang.String KEY_MMS_HTTP_SOCKET_TIMEOUT_INT = "httpSocketTimeout";
- field public static final java.lang.String KEY_MMS_MAX_IMAGE_HEIGHT_INT = "maxImageHeight";
- field public static final java.lang.String KEY_MMS_MAX_IMAGE_WIDTH_INT = "maxImageWidth";
- field public static final java.lang.String KEY_MMS_MAX_MESSAGE_SIZE_INT = "maxMessageSize";
- field public static final java.lang.String KEY_MMS_MESSAGE_TEXT_MAX_SIZE_INT = "maxMessageTextSize";
- field public static final java.lang.String KEY_MMS_MMS_DELIVERY_REPORT_ENABLED_BOOL = "enableMMSDeliveryReports";
- field public static final java.lang.String KEY_MMS_MMS_ENABLED_BOOL = "enabledMMS";
- field public static final java.lang.String KEY_MMS_MMS_READ_REPORT_ENABLED_BOOL = "enableMMSReadReports";
- field public static final java.lang.String KEY_MMS_MULTIPART_SMS_ENABLED_BOOL = "enableMultipartSMS";
- field public static final java.lang.String KEY_MMS_NAI_SUFFIX_STRING = "naiSuffix";
- field public static final java.lang.String KEY_MMS_NOTIFY_WAP_MMSC_ENABLED_BOOL = "enabledNotifyWapMMSC";
- field public static final java.lang.String KEY_MMS_RECIPIENT_LIMIT_INT = "recipientLimit";
- field public static final java.lang.String KEY_MMS_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES_BOOL = "sendMultipartSmsAsSeparateMessages";
- field public static final java.lang.String KEY_MMS_SHOW_CELL_BROADCAST_APP_LINKS_BOOL = "config_cellBroadcastAppLinks";
- field public static final java.lang.String KEY_MMS_SMS_DELIVERY_REPORT_ENABLED_BOOL = "enableSMSDeliveryReports";
- field public static final java.lang.String KEY_MMS_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD_INT = "smsToMmsTextLengthThreshold";
- field public static final java.lang.String KEY_MMS_SMS_TO_MMS_TEXT_THRESHOLD_INT = "smsToMmsTextThreshold";
- field public static final java.lang.String KEY_MMS_SUBJECT_MAX_LENGTH_INT = "maxSubjectLength";
- field public static final java.lang.String KEY_MMS_SUPPORT_HTTP_CHARSET_HEADER_BOOL = "supportHttpCharsetHeader";
- field public static final java.lang.String KEY_MMS_SUPPORT_MMS_CONTENT_DISPOSITION_BOOL = "supportMmsContentDisposition";
- field public static final java.lang.String KEY_MMS_UA_PROF_TAG_NAME_STRING = "uaProfTagName";
- field public static final java.lang.String KEY_MMS_UA_PROF_URL_STRING = "uaProfUrl";
- field public static final java.lang.String KEY_MMS_USER_AGENT_STRING = "userAgent";
- field public static final java.lang.String KEY_MONTHLY_DATA_CYCLE_DAY_INT = "monthly_data_cycle_day_int";
- field public static final java.lang.String KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY = "only_single_dc_allowed_int_array";
- field public static final java.lang.String KEY_OPERATOR_SELECTION_EXPAND_BOOL = "operator_selection_expand_bool";
- field public static final java.lang.String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSRP_INT = "opportunistic_network_entry_threshold_rsrp_int";
- field public static final java.lang.String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSSNR_INT = "opportunistic_network_entry_threshold_rssnr_int";
- field public static final java.lang.String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSRP_INT = "opportunistic_network_exit_threshold_rsrp_int";
- field public static final java.lang.String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSSNR_INT = "opportunistic_network_exit_threshold_rssnr_int";
- field public static final java.lang.String KEY_PREFER_2G_BOOL = "prefer_2g_bool";
- field public static final java.lang.String KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY = "radio_restart_failure_causes_int_array";
- field public static final java.lang.String KEY_RCS_CONFIG_SERVER_URL_STRING = "rcs_config_server_url_string";
- field public static final java.lang.String KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL = "require_entitlement_checks_bool";
- field public static final deprecated java.lang.String KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL = "restart_radio_on_pdp_fail_regular_deactivation_bool";
- field public static final java.lang.String KEY_RTT_SUPPORTED_BOOL = "rtt_supported_bool";
- field public static final java.lang.String KEY_SHOW_APN_SETTING_CDMA_BOOL = "show_apn_setting_cdma_bool";
- field public static final java.lang.String KEY_SHOW_CALL_BLOCKING_DISABLED_NOTIFICATION_ALWAYS_BOOL = "show_call_blocking_disabled_notification_always_bool";
- field public static final java.lang.String KEY_SHOW_CDMA_CHOICES_BOOL = "show_cdma_choices_bool";
- field public static final java.lang.String KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL = "show_iccid_in_sim_status_bool";
- field public static final java.lang.String KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL = "show_onscreen_dial_button_bool";
- field public static final java.lang.String KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL = "show_signal_strength_in_sim_status_bool";
- field public static final java.lang.String KEY_SIMPLIFIED_NETWORK_SETTINGS_BOOL = "simplified_network_settings_bool";
- field public static final java.lang.String KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL = "sim_network_unlock_allow_dismiss_bool";
- field public static final java.lang.String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool";
- field public static final java.lang.String KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL = "support_3gpp_call_forwarding_while_roaming_bool";
- field public static final java.lang.String KEY_SUPPORT_CLIR_NETWORK_DEFAULT_BOOL = "support_clir_network_default_bool";
- field public static final java.lang.String KEY_SUPPORT_CONFERENCE_CALL_BOOL = "support_conference_call_bool";
- field public static final java.lang.String KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL = "support_emergency_sms_over_ims_bool";
- field public static final java.lang.String KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL = "support_pause_ims_video_calls_bool";
- field public static final java.lang.String KEY_SUPPORT_SWAP_AFTER_MERGE_BOOL = "support_swap_after_merge_bool";
- field public static final java.lang.String KEY_TREAT_DOWNGRADED_VIDEO_CALLS_AS_VIDEO_CALLS_BOOL = "treat_downgraded_video_calls_as_video_calls_bool";
- field public static final java.lang.String KEY_USE_HFA_FOR_PROVISIONING_BOOL = "use_hfa_for_provisioning_bool";
- field public static final java.lang.String KEY_USE_OTASP_FOR_PROVISIONING_BOOL = "use_otasp_for_provisioning_bool";
- field public static final java.lang.String KEY_USE_RCS_PRESENCE_BOOL = "use_rcs_presence_bool";
- field public static final java.lang.String KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL = "voicemail_notification_persistent_bool";
- field public static final java.lang.String KEY_VOICE_PRIVACY_DISABLE_UI_BOOL = "voice_privacy_disable_ui_bool";
- field public static final java.lang.String KEY_VOLTE_REPLACEMENT_RAT_INT = "volte_replacement_rat_int";
- field public static final java.lang.String KEY_VVM_CELLULAR_DATA_REQUIRED_BOOL = "vvm_cellular_data_required_bool";
- field public static final java.lang.String KEY_VVM_CLIENT_PREFIX_STRING = "vvm_client_prefix_string";
- field public static final java.lang.String KEY_VVM_DESTINATION_NUMBER_STRING = "vvm_destination_number_string";
- field public static final java.lang.String KEY_VVM_DISABLED_CAPABILITIES_STRING_ARRAY = "vvm_disabled_capabilities_string_array";
- field public static final java.lang.String KEY_VVM_LEGACY_MODE_ENABLED_BOOL = "vvm_legacy_mode_enabled_bool";
- field public static final java.lang.String KEY_VVM_PORT_NUMBER_INT = "vvm_port_number_int";
- field public static final java.lang.String KEY_VVM_PREFETCH_BOOL = "vvm_prefetch_bool";
- field public static final java.lang.String KEY_VVM_SSL_ENABLED_BOOL = "vvm_ssl_enabled_bool";
- field public static final java.lang.String KEY_VVM_TYPE_STRING = "vvm_type_string";
- field public static final java.lang.String KEY_WORLD_PHONE_BOOL = "world_phone_bool";
+ field public static final String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX";
+ field public static final String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
+ field public static final String KEY_ADDITIONAL_CALL_SETTING_BOOL = "additional_call_setting_bool";
+ field public static final String KEY_ALLOW_ADDING_APNS_BOOL = "allow_adding_apns_bool";
+ field public static final String KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL = "allow_add_call_during_video_call";
+ field public static final String KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL = "allow_emergency_numbers_in_call_log_bool";
+ field public static final String KEY_ALLOW_EMERGENCY_VIDEO_CALLS_BOOL = "allow_emergency_video_calls_bool";
+ field public static final String KEY_ALLOW_LOCAL_DTMF_TONES_BOOL = "allow_local_dtmf_tones_bool";
+ field public static final String KEY_ALLOW_MERGE_WIFI_CALLS_WHEN_VOWIFI_OFF_BOOL = "allow_merge_wifi_calls_when_vowifi_off_bool";
+ field public static final String KEY_ALLOW_NON_EMERGENCY_CALLS_IN_ECM_BOOL = "allow_non_emergency_calls_in_ecm_bool";
+ field public static final String KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL = "always_show_emergency_alert_onoff_bool";
+ field public static final String KEY_APN_EXPAND_BOOL = "apn_expand_bool";
+ field public static final String KEY_AUTO_RETRY_ENABLED_BOOL = "auto_retry_enabled_bool";
+ field public static final String KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL = "call_barring_supports_deactivate_all_bool";
+ field public static final String KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL = "call_barring_supports_password_change_bool";
+ field public static final String KEY_CALL_BARRING_VISIBILITY_BOOL = "call_barring_visibility_bool";
+ field public static final String KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY = "call_forwarding_blocks_while_roaming_string_array";
+ field public static final String KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL = "carrier_allow_turnoff_ims_bool";
+ field public static final String KEY_CARRIER_CALL_SCREENING_APP_STRING = "call_screening_app";
+ field public static final String KEY_CARRIER_CONFIG_VERSION_STRING = "carrier_config_version_string";
+ field public static final String KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS = "carrier_data_call_permanent_failure_strings";
+ field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT = "carrier_default_wfc_ims_mode_int";
+ field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_MODE_INT = "carrier_default_wfc_ims_roaming_mode_int";
+ field public static final String KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL = "carrier_force_disable_etws_cmas_test_bool";
+ field public static final String KEY_CARRIER_IMS_GBA_REQUIRED_BOOL = "carrier_ims_gba_required_bool";
+ field public static final String KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL = "carrier_instant_lettering_available_bool";
+ field public static final String KEY_CARRIER_INSTANT_LETTERING_ENCODING_STRING = "carrier_instant_lettering_encoding_string";
+ field public static final String KEY_CARRIER_INSTANT_LETTERING_ESCAPED_CHARS_STRING = "carrier_instant_lettering_escaped_chars_string";
+ field public static final String KEY_CARRIER_INSTANT_LETTERING_INVALID_CHARS_STRING = "carrier_instant_lettering_invalid_chars_string";
+ field public static final String KEY_CARRIER_INSTANT_LETTERING_LENGTH_LIMIT_INT = "carrier_instant_lettering_length_limit_int";
+ field public static final String KEY_CARRIER_NAME_OVERRIDE_BOOL = "carrier_name_override_bool";
+ field public static final String KEY_CARRIER_NAME_STRING = "carrier_name_string";
+ field public static final String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool";
+ field public static final String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
+ field public static final String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
+ field public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
+ field public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
+ field public static final String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
+ field public static final String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
+ field @Deprecated public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING = "carrier_vvm_package_name_string";
+ field public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY = "carrier_vvm_package_name_string_array";
+ field public static final String KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL = "carrier_wfc_ims_available_bool";
+ field public static final String KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL = "carrier_wfc_supports_wifi_only_bool";
+ field public static final String KEY_CDMA_3WAYCALL_FLASH_DELAY_INT = "cdma_3waycall_flash_delay_int";
+ field public static final String KEY_CDMA_DTMF_TONE_DELAY_INT = "cdma_dtmf_tone_delay_int";
+ field public static final String KEY_CDMA_NONROAMING_NETWORKS_STRING_ARRAY = "cdma_nonroaming_networks_string_array";
+ field public static final String KEY_CDMA_ROAMING_MODE_INT = "cdma_roaming_mode_int";
+ field public static final String KEY_CDMA_ROAMING_NETWORKS_STRING_ARRAY = "cdma_roaming_networks_string_array";
+ field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_BOOL = "ci_action_on_sys_update_bool";
+ field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING = "ci_action_on_sys_update_extra_string";
+ field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING = "ci_action_on_sys_update_extra_val_string";
+ field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING = "ci_action_on_sys_update_intent_string";
+ field public static final String KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING = "config_ims_package_override_string";
+ field public static final String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING = "config_plans_package_override_string";
+ field public static final String KEY_CONFIG_TELEPHONY_USE_OWN_NUMBER_FOR_VOICEMAIL_BOOL = "config_telephony_use_own_number_for_voicemail_bool";
+ field public static final String KEY_CSP_ENABLED_BOOL = "csp_enabled_bool";
+ field public static final String KEY_DATA_LIMIT_THRESHOLD_BYTES_LONG = "data_limit_threshold_bytes_long";
+ field public static final String KEY_DATA_WARNING_THRESHOLD_BYTES_LONG = "data_warning_threshold_bytes_long";
+ field public static final String KEY_DEFAULT_SIM_CALL_MANAGER_STRING = "default_sim_call_manager_string";
+ field public static final String KEY_DEFAULT_VM_NUMBER_STRING = "default_vm_number_string";
+ field public static final String KEY_DIAL_STRING_REPLACE_STRING_ARRAY = "dial_string_replace_string_array";
+ field public static final String KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL = "disable_cdma_activation_code_bool";
+ field public static final String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool";
+ field public static final String KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL = "drop_video_call_when_answering_audio_call_bool";
+ field public static final String KEY_DTMF_TYPE_ENABLED_BOOL = "dtmf_type_enabled_bool";
+ field public static final String KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT = "duration_blocking_disabled_after_emergency_int";
+ field public static final String KEY_EDITABLE_ENHANCED_4G_LTE_BOOL = "editable_enhanced_4g_lte_bool";
+ field public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_BOOL = "editable_voicemail_number_bool";
+ field public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_SETTING_BOOL = "editable_voicemail_number_setting_bool";
+ field public static final String KEY_ENABLE_DIALER_KEY_VIBRATION_BOOL = "enable_dialer_key_vibration_bool";
+ field public static final String KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL = "enhanced_4g_lte_on_by_default_bool";
+ field public static final String KEY_FORCE_HOME_NETWORK_BOOL = "force_home_network_bool";
+ field public static final String KEY_GSM_DTMF_TONE_DELAY_INT = "gsm_dtmf_tone_delay_int";
+ field public static final String KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY = "gsm_nonroaming_networks_string_array";
+ field public static final String KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY = "gsm_roaming_networks_string_array";
+ field public static final String KEY_HAS_IN_CALL_NOISE_SUPPRESSION_BOOL = "has_in_call_noise_suppression_bool";
+ field public static final String KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL = "hide_carrier_network_settings_bool";
+ field public static final String KEY_HIDE_ENHANCED_4G_LTE_BOOL = "hide_enhanced_4g_lte_bool";
+ field public static final String KEY_HIDE_IMS_APN_BOOL = "hide_ims_apn_bool";
+ field public static final String KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL = "hide_preferred_network_type_bool";
+ field public static final String KEY_HIDE_PRESET_APN_DETAILS_BOOL = "hide_preset_apn_details_bool";
+ field public static final String KEY_HIDE_SIM_LOCK_SETTINGS_BOOL = "hide_sim_lock_settings_bool";
+ field public static final String KEY_IGNORE_SIM_NETWORK_LOCKED_EVENTS_BOOL = "ignore_sim_network_locked_events_bool";
+ field public static final String KEY_IMS_CONFERENCE_SIZE_LIMIT_INT = "ims_conference_size_limit_int";
+ field public static final String KEY_IMS_DTMF_TONE_DELAY_INT = "ims_dtmf_tone_delay_int";
+ field public static final String KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL = "is_ims_conference_size_enforced_bool";
+ field public static final String KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL = "mdn_is_additional_voicemail_number_bool";
+ field public static final String KEY_MMS_ALIAS_ENABLED_BOOL = "aliasEnabled";
+ field public static final String KEY_MMS_ALIAS_MAX_CHARS_INT = "aliasMaxChars";
+ field public static final String KEY_MMS_ALIAS_MIN_CHARS_INT = "aliasMinChars";
+ field public static final String KEY_MMS_ALLOW_ATTACH_AUDIO_BOOL = "allowAttachAudio";
+ field public static final String KEY_MMS_APPEND_TRANSACTION_ID_BOOL = "enabledTransID";
+ field public static final String KEY_MMS_EMAIL_GATEWAY_NUMBER_STRING = "emailGatewayNumber";
+ field public static final String KEY_MMS_GROUP_MMS_ENABLED_BOOL = "enableGroupMms";
+ field public static final String KEY_MMS_HTTP_PARAMS_STRING = "httpParams";
+ field public static final String KEY_MMS_HTTP_SOCKET_TIMEOUT_INT = "httpSocketTimeout";
+ field public static final String KEY_MMS_MAX_IMAGE_HEIGHT_INT = "maxImageHeight";
+ field public static final String KEY_MMS_MAX_IMAGE_WIDTH_INT = "maxImageWidth";
+ field public static final String KEY_MMS_MAX_MESSAGE_SIZE_INT = "maxMessageSize";
+ field public static final String KEY_MMS_MESSAGE_TEXT_MAX_SIZE_INT = "maxMessageTextSize";
+ field public static final String KEY_MMS_MMS_DELIVERY_REPORT_ENABLED_BOOL = "enableMMSDeliveryReports";
+ field public static final String KEY_MMS_MMS_ENABLED_BOOL = "enabledMMS";
+ field public static final String KEY_MMS_MMS_READ_REPORT_ENABLED_BOOL = "enableMMSReadReports";
+ field public static final String KEY_MMS_MULTIPART_SMS_ENABLED_BOOL = "enableMultipartSMS";
+ field public static final String KEY_MMS_NAI_SUFFIX_STRING = "naiSuffix";
+ field public static final String KEY_MMS_NOTIFY_WAP_MMSC_ENABLED_BOOL = "enabledNotifyWapMMSC";
+ field public static final String KEY_MMS_RECIPIENT_LIMIT_INT = "recipientLimit";
+ field public static final String KEY_MMS_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES_BOOL = "sendMultipartSmsAsSeparateMessages";
+ field public static final String KEY_MMS_SHOW_CELL_BROADCAST_APP_LINKS_BOOL = "config_cellBroadcastAppLinks";
+ field public static final String KEY_MMS_SMS_DELIVERY_REPORT_ENABLED_BOOL = "enableSMSDeliveryReports";
+ field public static final String KEY_MMS_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD_INT = "smsToMmsTextLengthThreshold";
+ field public static final String KEY_MMS_SMS_TO_MMS_TEXT_THRESHOLD_INT = "smsToMmsTextThreshold";
+ field public static final String KEY_MMS_SUBJECT_MAX_LENGTH_INT = "maxSubjectLength";
+ field public static final String KEY_MMS_SUPPORT_HTTP_CHARSET_HEADER_BOOL = "supportHttpCharsetHeader";
+ field public static final String KEY_MMS_SUPPORT_MMS_CONTENT_DISPOSITION_BOOL = "supportMmsContentDisposition";
+ field public static final String KEY_MMS_UA_PROF_TAG_NAME_STRING = "uaProfTagName";
+ field public static final String KEY_MMS_UA_PROF_URL_STRING = "uaProfUrl";
+ field public static final String KEY_MMS_USER_AGENT_STRING = "userAgent";
+ field public static final String KEY_MONTHLY_DATA_CYCLE_DAY_INT = "monthly_data_cycle_day_int";
+ field public static final String KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY = "only_single_dc_allowed_int_array";
+ field public static final String KEY_OPERATOR_SELECTION_EXPAND_BOOL = "operator_selection_expand_bool";
+ field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSRP_INT = "opportunistic_network_entry_threshold_rsrp_int";
+ field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSSNR_INT = "opportunistic_network_entry_threshold_rssnr_int";
+ field public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSRP_INT = "opportunistic_network_exit_threshold_rsrp_int";
+ field public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSSNR_INT = "opportunistic_network_exit_threshold_rssnr_int";
+ field public static final String KEY_PREFER_2G_BOOL = "prefer_2g_bool";
+ field public static final String KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY = "radio_restart_failure_causes_int_array";
+ field public static final String KEY_RCS_CONFIG_SERVER_URL_STRING = "rcs_config_server_url_string";
+ field public static final String KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL = "require_entitlement_checks_bool";
+ field @Deprecated public static final String KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL = "restart_radio_on_pdp_fail_regular_deactivation_bool";
+ field public static final String KEY_RTT_SUPPORTED_BOOL = "rtt_supported_bool";
+ field public static final String KEY_SHOW_APN_SETTING_CDMA_BOOL = "show_apn_setting_cdma_bool";
+ field public static final String KEY_SHOW_CALL_BLOCKING_DISABLED_NOTIFICATION_ALWAYS_BOOL = "show_call_blocking_disabled_notification_always_bool";
+ field public static final String KEY_SHOW_CDMA_CHOICES_BOOL = "show_cdma_choices_bool";
+ field public static final String KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL = "show_iccid_in_sim_status_bool";
+ field public static final String KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL = "show_onscreen_dial_button_bool";
+ field public static final String KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL = "show_signal_strength_in_sim_status_bool";
+ field public static final String KEY_SIMPLIFIED_NETWORK_SETTINGS_BOOL = "simplified_network_settings_bool";
+ field public static final String KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL = "sim_network_unlock_allow_dismiss_bool";
+ field public static final String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool";
+ field public static final String KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL = "support_3gpp_call_forwarding_while_roaming_bool";
+ field public static final String KEY_SUPPORT_CLIR_NETWORK_DEFAULT_BOOL = "support_clir_network_default_bool";
+ field public static final String KEY_SUPPORT_CONFERENCE_CALL_BOOL = "support_conference_call_bool";
+ field public static final String KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL = "support_emergency_sms_over_ims_bool";
+ field public static final String KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL = "support_pause_ims_video_calls_bool";
+ field public static final String KEY_SUPPORT_SWAP_AFTER_MERGE_BOOL = "support_swap_after_merge_bool";
+ field public static final String KEY_TREAT_DOWNGRADED_VIDEO_CALLS_AS_VIDEO_CALLS_BOOL = "treat_downgraded_video_calls_as_video_calls_bool";
+ field public static final String KEY_USE_HFA_FOR_PROVISIONING_BOOL = "use_hfa_for_provisioning_bool";
+ field public static final String KEY_USE_OTASP_FOR_PROVISIONING_BOOL = "use_otasp_for_provisioning_bool";
+ field public static final String KEY_USE_RCS_PRESENCE_BOOL = "use_rcs_presence_bool";
+ field public static final String KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL = "voicemail_notification_persistent_bool";
+ field public static final String KEY_VOICE_PRIVACY_DISABLE_UI_BOOL = "voice_privacy_disable_ui_bool";
+ field public static final String KEY_VOLTE_REPLACEMENT_RAT_INT = "volte_replacement_rat_int";
+ field public static final String KEY_VVM_CELLULAR_DATA_REQUIRED_BOOL = "vvm_cellular_data_required_bool";
+ field public static final String KEY_VVM_CLIENT_PREFIX_STRING = "vvm_client_prefix_string";
+ field public static final String KEY_VVM_DESTINATION_NUMBER_STRING = "vvm_destination_number_string";
+ field public static final String KEY_VVM_DISABLED_CAPABILITIES_STRING_ARRAY = "vvm_disabled_capabilities_string_array";
+ field public static final String KEY_VVM_LEGACY_MODE_ENABLED_BOOL = "vvm_legacy_mode_enabled_bool";
+ field public static final String KEY_VVM_PORT_NUMBER_INT = "vvm_port_number_int";
+ field public static final String KEY_VVM_PREFETCH_BOOL = "vvm_prefetch_bool";
+ field public static final String KEY_VVM_SSL_ENABLED_BOOL = "vvm_ssl_enabled_bool";
+ field public static final String KEY_VVM_TYPE_STRING = "vvm_type_string";
+ field public static final String KEY_WORLD_PHONE_BOOL = "world_phone_bool";
}
public abstract class CellIdentity implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.CharSequence getOperatorAlphaLong();
- method public java.lang.CharSequence getOperatorAlphaShort();
- method public void writeToParcel(android.os.Parcel, int);
+ method @Nullable public CharSequence getOperatorAlphaLong();
+ method @Nullable public CharSequence getOperatorAlphaShort();
+ method @CallSuper public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.CellIdentity> CREATOR;
}
@@ -43904,12 +44030,12 @@
method public int getBsic();
method public int getCid();
method public int getLac();
- method public deprecated int getMcc();
- method public java.lang.String getMccString();
- method public deprecated int getMnc();
- method public java.lang.String getMncString();
- method public java.lang.String getMobileNetworkOperator();
- method public deprecated int getPsc();
+ method @Deprecated public int getMcc();
+ method public String getMccString();
+ method @Deprecated public int getMnc();
+ method public String getMncString();
+ method @Nullable public String getMobileNetworkOperator();
+ method @Deprecated public int getPsc();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.CellIdentityGsm> CREATOR;
}
@@ -43918,11 +44044,11 @@
method public int getBandwidth();
method public int getCi();
method public int getEarfcn();
- method public deprecated int getMcc();
- method public java.lang.String getMccString();
- method public deprecated int getMnc();
- method public java.lang.String getMncString();
- method public java.lang.String getMobileNetworkOperator();
+ method @Deprecated public int getMcc();
+ method public String getMccString();
+ method @Deprecated public int getMnc();
+ method public String getMncString();
+ method @Nullable public String getMobileNetworkOperator();
method public int getPci();
method public int getTac();
method public void writeToParcel(android.os.Parcel, int);
@@ -43931,8 +44057,8 @@
public final class CellIdentityNr extends android.telephony.CellIdentity {
method public int getChannelNumber();
- method public java.lang.String getMccString();
- method public java.lang.String getMncString();
+ method public String getMccString();
+ method public String getMncString();
method public int getPci();
method public int getTac();
method public void writeToParcel(android.os.Parcel, int);
@@ -43943,9 +44069,9 @@
method public int getCid();
method public int getCpid();
method public int getLac();
- method public java.lang.String getMccString();
- method public java.lang.String getMncString();
- method public java.lang.String getMobileNetworkOperator();
+ method public String getMccString();
+ method public String getMncString();
+ method @Nullable public String getMobileNetworkOperator();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.CellIdentityTdscdma> CREATOR;
}
@@ -43953,11 +44079,11 @@
public final class CellIdentityWcdma extends android.telephony.CellIdentity {
method public int getCid();
method public int getLac();
- method public deprecated int getMcc();
- method public java.lang.String getMccString();
- method public deprecated int getMnc();
- method public java.lang.String getMncString();
- method public java.lang.String getMobileNetworkOperator();
+ method @Deprecated public int getMcc();
+ method public String getMccString();
+ method @Deprecated public int getMnc();
+ method public String getMncString();
+ method @Nullable public String getMobileNetworkOperator();
method public int getPsc();
method public int getUarfcn();
method public void writeToParcel(android.os.Parcel, int);
@@ -44019,7 +44145,7 @@
}
public abstract class CellSignalStrength {
- method public abstract boolean equals(java.lang.Object);
+ method public abstract boolean equals(Object);
method public abstract int getAsuLevel();
method public abstract int getDbm();
method public abstract int getLevel();
@@ -44111,26 +44237,26 @@
}
public class MbmsDownloadSession implements java.lang.AutoCloseable {
- method public void addProgressListener(android.telephony.mbms.DownloadRequest, java.util.concurrent.Executor, android.telephony.mbms.DownloadProgressListener);
- method public void addStatusListener(android.telephony.mbms.DownloadRequest, java.util.concurrent.Executor, android.telephony.mbms.DownloadStatusListener);
- method public void cancelDownload(android.telephony.mbms.DownloadRequest);
+ method public void addProgressListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.DownloadProgressListener);
+ method public void addStatusListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.DownloadStatusListener);
+ method public void cancelDownload(@NonNull android.telephony.mbms.DownloadRequest);
method public void close();
- method public static android.telephony.MbmsDownloadSession create(android.content.Context, java.util.concurrent.Executor, android.telephony.mbms.MbmsDownloadSessionCallback);
- method public static android.telephony.MbmsDownloadSession create(android.content.Context, java.util.concurrent.Executor, int, android.telephony.mbms.MbmsDownloadSessionCallback);
- method public void download(android.telephony.mbms.DownloadRequest);
- method public java.io.File getTempFileRootDirectory();
- method public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads();
- method public void removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener);
- method public void removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener);
+ method public static android.telephony.MbmsDownloadSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsDownloadSessionCallback);
+ method @Nullable public static android.telephony.MbmsDownloadSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, int, @NonNull android.telephony.mbms.MbmsDownloadSessionCallback);
+ method public void download(@NonNull android.telephony.mbms.DownloadRequest);
+ method @Nullable public java.io.File getTempFileRootDirectory();
+ method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads();
+ method public void removeProgressListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull android.telephony.mbms.DownloadProgressListener);
+ method public void removeStatusListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull android.telephony.mbms.DownloadStatusListener);
method public void requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo);
- method public void requestUpdateFileServices(java.util.List<java.lang.String>);
+ method public void requestUpdateFileServices(@NonNull java.util.List<java.lang.String>);
method public void resetDownloadKnowledge(android.telephony.mbms.DownloadRequest);
- method public void setTempFileRootDirectory(java.io.File);
- field public static final java.lang.String DEFAULT_TOP_LEVEL_TEMP_DIRECTORY = "androidMbmsTempFileRoot";
- field public static final java.lang.String EXTRA_MBMS_COMPLETED_FILE_URI = "android.telephony.extra.MBMS_COMPLETED_FILE_URI";
- field public static final java.lang.String EXTRA_MBMS_DOWNLOAD_REQUEST = "android.telephony.extra.MBMS_DOWNLOAD_REQUEST";
- field public static final java.lang.String EXTRA_MBMS_DOWNLOAD_RESULT = "android.telephony.extra.MBMS_DOWNLOAD_RESULT";
- field public static final java.lang.String EXTRA_MBMS_FILE_INFO = "android.telephony.extra.MBMS_FILE_INFO";
+ method public void setTempFileRootDirectory(@NonNull java.io.File);
+ field public static final String DEFAULT_TOP_LEVEL_TEMP_DIRECTORY = "androidMbmsTempFileRoot";
+ field public static final String EXTRA_MBMS_COMPLETED_FILE_URI = "android.telephony.extra.MBMS_COMPLETED_FILE_URI";
+ field public static final String EXTRA_MBMS_DOWNLOAD_REQUEST = "android.telephony.extra.MBMS_DOWNLOAD_REQUEST";
+ field public static final String EXTRA_MBMS_DOWNLOAD_RESULT = "android.telephony.extra.MBMS_DOWNLOAD_RESULT";
+ field public static final String EXTRA_MBMS_FILE_INFO = "android.telephony.extra.MBMS_FILE_INFO";
field public static final int RESULT_CANCELLED = 2; // 0x2
field public static final int RESULT_DOWNLOAD_FAILURE = 6; // 0x6
field public static final int RESULT_EXPIRED = 3; // 0x3
@@ -44148,36 +44274,36 @@
public class MbmsGroupCallSession implements java.lang.AutoCloseable {
method public void close();
- method public static android.telephony.MbmsGroupCallSession create(android.content.Context, int, java.util.concurrent.Executor, android.telephony.mbms.MbmsGroupCallSessionCallback);
- method public static android.telephony.MbmsGroupCallSession create(android.content.Context, java.util.concurrent.Executor, android.telephony.mbms.MbmsGroupCallSessionCallback);
- method public android.telephony.mbms.GroupCall startGroupCall(long, java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>, java.util.concurrent.Executor, android.telephony.mbms.GroupCallCallback);
+ method @Nullable public static android.telephony.MbmsGroupCallSession create(@NonNull android.content.Context, int, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsGroupCallSessionCallback);
+ method public static android.telephony.MbmsGroupCallSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsGroupCallSessionCallback);
+ method @Nullable public android.telephony.mbms.GroupCall startGroupCall(long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.GroupCallCallback);
}
public class MbmsStreamingSession implements java.lang.AutoCloseable {
method public void close();
- method public static android.telephony.MbmsStreamingSession create(android.content.Context, java.util.concurrent.Executor, int, android.telephony.mbms.MbmsStreamingSessionCallback);
- method public static android.telephony.MbmsStreamingSession create(android.content.Context, java.util.concurrent.Executor, android.telephony.mbms.MbmsStreamingSessionCallback);
+ method @Nullable public static android.telephony.MbmsStreamingSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, int, @NonNull android.telephony.mbms.MbmsStreamingSessionCallback);
+ method public static android.telephony.MbmsStreamingSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsStreamingSessionCallback);
method public void requestUpdateStreamingServices(java.util.List<java.lang.String>);
- method public android.telephony.mbms.StreamingService startStreaming(android.telephony.mbms.StreamingServiceInfo, java.util.concurrent.Executor, android.telephony.mbms.StreamingServiceCallback);
+ method @Nullable public android.telephony.mbms.StreamingService startStreaming(android.telephony.mbms.StreamingServiceInfo, @NonNull java.util.concurrent.Executor, android.telephony.mbms.StreamingServiceCallback);
}
- public deprecated class NeighboringCellInfo implements android.os.Parcelable {
- ctor public deprecated NeighboringCellInfo();
- ctor public deprecated NeighboringCellInfo(int, int);
- ctor public NeighboringCellInfo(int, java.lang.String, int);
- ctor public NeighboringCellInfo(android.os.Parcel);
- method public int describeContents();
- method public int getCid();
- method public int getLac();
- method public int getNetworkType();
- method public int getPsc();
- method public int getRssi();
- method public deprecated void setCid(int);
- method public deprecated void setRssi(int);
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.telephony.NeighboringCellInfo> CREATOR;
- field public static final int UNKNOWN_CID = -1; // 0xffffffff
- field public static final int UNKNOWN_RSSI = 99; // 0x63
+ @Deprecated public class NeighboringCellInfo implements android.os.Parcelable {
+ ctor @Deprecated public NeighboringCellInfo();
+ ctor @Deprecated public NeighboringCellInfo(int, int);
+ ctor @Deprecated public NeighboringCellInfo(int, String, int);
+ ctor @Deprecated public NeighboringCellInfo(android.os.Parcel);
+ method @Deprecated public int describeContents();
+ method @Deprecated public int getCid();
+ method @Deprecated public int getLac();
+ method @Deprecated public int getNetworkType();
+ method @Deprecated public int getPsc();
+ method @Deprecated public int getRssi();
+ method @Deprecated public void setCid(int);
+ method @Deprecated public void setRssi(int);
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.telephony.NeighboringCellInfo> CREATOR;
+ field @Deprecated public static final int UNKNOWN_CID = -1; // 0xffffffff
+ field @Deprecated public static final int UNKNOWN_RSSI = 99; // 0x63
}
public class NetworkScan {
@@ -44210,58 +44336,58 @@
public class PhoneNumberFormattingTextWatcher implements android.text.TextWatcher {
ctor public PhoneNumberFormattingTextWatcher();
- ctor public PhoneNumberFormattingTextWatcher(java.lang.String);
- method public synchronized void afterTextChanged(android.text.Editable);
- method public void beforeTextChanged(java.lang.CharSequence, int, int, int);
- method public void onTextChanged(java.lang.CharSequence, int, int, int);
+ ctor public PhoneNumberFormattingTextWatcher(String);
+ method public void afterTextChanged(android.text.Editable);
+ method public void beforeTextChanged(CharSequence, int, int, int);
+ method public void onTextChanged(CharSequence, int, int, int);
}
public class PhoneNumberUtils {
ctor public PhoneNumberUtils();
method public static void addTtsSpan(android.text.Spannable, int, int);
- method public static deprecated java.lang.String calledPartyBCDFragmentToString(byte[], int, int);
- method public static java.lang.String calledPartyBCDFragmentToString(byte[], int, int, int);
- method public static deprecated java.lang.String calledPartyBCDToString(byte[], int, int);
- method public static java.lang.String calledPartyBCDToString(byte[], int, int, int);
- method public static boolean compare(java.lang.String, java.lang.String);
- method public static boolean compare(android.content.Context, java.lang.String, java.lang.String);
- method public static java.lang.String convertKeypadLettersToDigits(java.lang.String);
- method public static android.text.style.TtsSpan createTtsSpan(java.lang.String);
- method public static java.lang.CharSequence createTtsSpannable(java.lang.CharSequence);
- method public static java.lang.String extractNetworkPortion(java.lang.String);
- method public static java.lang.String extractPostDialPortion(java.lang.String);
- method public static deprecated void formatJapaneseNumber(android.text.Editable);
- method public static deprecated void formatNanpNumber(android.text.Editable);
- method public static deprecated java.lang.String formatNumber(java.lang.String);
- method public static deprecated void formatNumber(android.text.Editable, int);
- method public static java.lang.String formatNumber(java.lang.String, java.lang.String);
- method public static java.lang.String formatNumber(java.lang.String, java.lang.String, java.lang.String);
- method public static java.lang.String formatNumberToE164(java.lang.String, java.lang.String);
- method public static java.lang.String formatNumberToRFC3966(java.lang.String, java.lang.String);
- method public static deprecated int getFormatTypeForLocale(java.util.Locale);
- method public static java.lang.String getNumberFromIntent(android.content.Intent, android.content.Context);
- method public static java.lang.String getStrippedReversed(java.lang.String);
+ method @Deprecated public static String calledPartyBCDFragmentToString(byte[], int, int);
+ method public static String calledPartyBCDFragmentToString(byte[], int, int, int);
+ method @Deprecated public static String calledPartyBCDToString(byte[], int, int);
+ method public static String calledPartyBCDToString(byte[], int, int, int);
+ method public static boolean compare(String, String);
+ method public static boolean compare(android.content.Context, String, String);
+ method public static String convertKeypadLettersToDigits(String);
+ method public static android.text.style.TtsSpan createTtsSpan(String);
+ method public static CharSequence createTtsSpannable(CharSequence);
+ method public static String extractNetworkPortion(String);
+ method public static String extractPostDialPortion(String);
+ method @Deprecated public static void formatJapaneseNumber(android.text.Editable);
+ method @Deprecated public static void formatNanpNumber(android.text.Editable);
+ method @Deprecated public static String formatNumber(String);
+ method @Deprecated public static void formatNumber(android.text.Editable, int);
+ method public static String formatNumber(String, String);
+ method public static String formatNumber(String, String, String);
+ method public static String formatNumberToE164(String, String);
+ method public static String formatNumberToRFC3966(String, String);
+ method @Deprecated public static int getFormatTypeForLocale(java.util.Locale);
+ method public static String getNumberFromIntent(android.content.Intent, android.content.Context);
+ method public static String getStrippedReversed(String);
method public static final boolean is12Key(char);
method public static final boolean isDialable(char);
- method public static deprecated boolean isEmergencyNumber(java.lang.String);
- method public static boolean isGlobalPhoneNumber(java.lang.String);
+ method @Deprecated public static boolean isEmergencyNumber(String);
+ method public static boolean isGlobalPhoneNumber(String);
method public static boolean isISODigit(char);
- method public static deprecated boolean isLocalEmergencyNumber(android.content.Context, java.lang.String);
+ method @Deprecated public static boolean isLocalEmergencyNumber(android.content.Context, String);
method public static final boolean isNonSeparator(char);
method public static final boolean isReallyDialable(char);
method public static final boolean isStartsPostDial(char);
- method public static boolean isVoiceMailNumber(java.lang.String);
- method public static boolean isWellFormedSmsAddress(java.lang.String);
- method public static byte[] networkPortionToCalledPartyBCD(java.lang.String);
- method public static byte[] networkPortionToCalledPartyBCDWithLength(java.lang.String);
- method public static java.lang.String normalizeNumber(java.lang.String);
- method public static deprecated byte[] numberToCalledPartyBCD(java.lang.String);
- method public static byte[] numberToCalledPartyBCD(java.lang.String, int);
- method public static java.lang.String replaceUnicodeDigits(java.lang.String);
- method public static java.lang.String stringFromStringAndTOA(java.lang.String, int);
- method public static java.lang.String stripSeparators(java.lang.String);
- method public static java.lang.String toCallerIDMinMatch(java.lang.String);
- method public static int toaFromString(java.lang.String);
+ method public static boolean isVoiceMailNumber(String);
+ method public static boolean isWellFormedSmsAddress(String);
+ method public static byte[] networkPortionToCalledPartyBCD(String);
+ method public static byte[] networkPortionToCalledPartyBCDWithLength(String);
+ method public static String normalizeNumber(String);
+ method @Deprecated public static byte[] numberToCalledPartyBCD(String);
+ method public static byte[] numberToCalledPartyBCD(String, int);
+ method public static String replaceUnicodeDigits(String);
+ method public static String stringFromStringAndTOA(String, int);
+ method public static String stripSeparators(String);
+ method public static String toCallerIDMinMatch(String);
+ method public static int toaFromString(String);
field public static final int BCD_EXTENDED_TYPE_CALLED_PARTY = 2; // 0x2
field public static final int BCD_EXTENDED_TYPE_EF_ADN = 1; // 0x1
field public static final int FORMAT_JAPAN = 2; // 0x2
@@ -44276,9 +44402,9 @@
public class PhoneStateListener {
ctor public PhoneStateListener();
- ctor public PhoneStateListener(java.util.concurrent.Executor);
+ ctor public PhoneStateListener(@NonNull java.util.concurrent.Executor);
method public void onCallForwardingIndicatorChanged(boolean);
- method public void onCallStateChanged(int, java.lang.String);
+ method public void onCallStateChanged(int, String);
method public void onCellInfoChanged(java.util.List<android.telephony.CellInfo>);
method public void onCellLocationChanged(android.telephony.CellLocation);
method public void onDataActivity(int);
@@ -44286,7 +44412,7 @@
method public void onDataConnectionStateChanged(int, int);
method public void onMessageWaitingIndicatorChanged(boolean);
method public void onServiceStateChanged(android.telephony.ServiceState);
- method public deprecated void onSignalStrengthChanged(int);
+ method @Deprecated public void onSignalStrengthChanged(int);
method public void onSignalStrengthsChanged(android.telephony.SignalStrength);
method public void onUserMobileDataStateChanged(boolean);
field public static final int LISTEN_CALL_FORWARDING_INDICATOR = 8; // 0x8
@@ -44299,7 +44425,7 @@
field public static final int LISTEN_MESSAGE_WAITING_INDICATOR = 4; // 0x4
field public static final int LISTEN_NONE = 0; // 0x0
field public static final int LISTEN_SERVICE_STATE = 1; // 0x1
- field public static final deprecated int LISTEN_SIGNAL_STRENGTH = 2; // 0x2
+ field @Deprecated public static final int LISTEN_SIGNAL_STRENGTH = 2; // 0x2
field public static final int LISTEN_SIGNAL_STRENGTHS = 256; // 0x100
field public static final int LISTEN_USER_MOBILE_DATA_STATE = 524288; // 0x80000
}
@@ -44326,13 +44452,13 @@
method public int getChannelNumber();
method public int getDuplexMode();
method public boolean getIsManualSelection();
- method public java.lang.String getOperatorAlphaLong();
- method public java.lang.String getOperatorAlphaShort();
- method public java.lang.String getOperatorNumeric();
+ method public String getOperatorAlphaLong();
+ method public String getOperatorAlphaShort();
+ method public String getOperatorNumeric();
method public boolean getRoaming();
method public int getState();
method public void setIsManualSelection(boolean);
- method public void setOperatorName(java.lang.String, java.lang.String, java.lang.String);
+ method public void setOperatorName(String, String, String);
method public void setRoaming(boolean);
method public void setState(int);
method public void setStateOff();
@@ -44353,7 +44479,7 @@
method public int describeContents();
method public int getCdmaDbm();
method public int getCdmaEcio();
- method public java.util.List<android.telephony.CellSignalStrength> getCellSignalStrengths();
+ method @NonNull public java.util.List<android.telephony.CellSignalStrength> getCellSignalStrengths();
method public int getEvdoDbm();
method public int getEvdoEcio();
method public int getEvdoSnr();
@@ -44366,53 +44492,53 @@
}
public final class SmsManager {
- method public java.lang.String createAppSpecificSmsToken(android.app.PendingIntent);
- method public java.util.ArrayList<java.lang.String> divideMessage(java.lang.String);
- method public void downloadMultimediaMessage(android.content.Context, java.lang.String, android.net.Uri, android.os.Bundle, android.app.PendingIntent);
+ method public String createAppSpecificSmsToken(android.app.PendingIntent);
+ method public java.util.ArrayList<java.lang.String> divideMessage(String);
+ method public void downloadMultimediaMessage(android.content.Context, String, android.net.Uri, android.os.Bundle, android.app.PendingIntent);
method public android.os.Bundle getCarrierConfigValues();
method public static android.telephony.SmsManager getDefault();
method public static int getDefaultSmsSubscriptionId();
method public static android.telephony.SmsManager getSmsManagerForSubscriptionId(int);
method public int getSubscriptionId();
- method public void injectSmsPdu(byte[], java.lang.String, android.app.PendingIntent);
- method public void sendDataMessage(java.lang.String, java.lang.String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
- method public void sendMultimediaMessage(android.content.Context, android.net.Uri, java.lang.String, android.os.Bundle, android.app.PendingIntent);
- method public void sendMultipartTextMessage(java.lang.String, java.lang.String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
- method public void sendTextMessage(java.lang.String, java.lang.String, java.lang.String, android.app.PendingIntent, android.app.PendingIntent);
- method public void sendTextMessageWithoutPersisting(java.lang.String, java.lang.String, java.lang.String, android.app.PendingIntent, android.app.PendingIntent);
- field public static final java.lang.String EXTRA_MMS_DATA = "android.telephony.extra.MMS_DATA";
- field public static final java.lang.String EXTRA_MMS_HTTP_STATUS = "android.telephony.extra.MMS_HTTP_STATUS";
- field public static final java.lang.String MMS_CONFIG_ALIAS_ENABLED = "aliasEnabled";
- field public static final java.lang.String MMS_CONFIG_ALIAS_MAX_CHARS = "aliasMaxChars";
- field public static final java.lang.String MMS_CONFIG_ALIAS_MIN_CHARS = "aliasMinChars";
- field public static final java.lang.String MMS_CONFIG_ALLOW_ATTACH_AUDIO = "allowAttachAudio";
- field public static final java.lang.String MMS_CONFIG_APPEND_TRANSACTION_ID = "enabledTransID";
- field public static final java.lang.String MMS_CONFIG_EMAIL_GATEWAY_NUMBER = "emailGatewayNumber";
- field public static final java.lang.String MMS_CONFIG_GROUP_MMS_ENABLED = "enableGroupMms";
- field public static final java.lang.String MMS_CONFIG_HTTP_PARAMS = "httpParams";
- field public static final java.lang.String MMS_CONFIG_HTTP_SOCKET_TIMEOUT = "httpSocketTimeout";
- field public static final java.lang.String MMS_CONFIG_MAX_IMAGE_HEIGHT = "maxImageHeight";
- field public static final java.lang.String MMS_CONFIG_MAX_IMAGE_WIDTH = "maxImageWidth";
- field public static final java.lang.String MMS_CONFIG_MAX_MESSAGE_SIZE = "maxMessageSize";
- field public static final java.lang.String MMS_CONFIG_MESSAGE_TEXT_MAX_SIZE = "maxMessageTextSize";
- field public static final java.lang.String MMS_CONFIG_MMS_DELIVERY_REPORT_ENABLED = "enableMMSDeliveryReports";
- field public static final java.lang.String MMS_CONFIG_MMS_ENABLED = "enabledMMS";
- field public static final java.lang.String MMS_CONFIG_MMS_READ_REPORT_ENABLED = "enableMMSReadReports";
- field public static final java.lang.String MMS_CONFIG_MULTIPART_SMS_ENABLED = "enableMultipartSMS";
- field public static final java.lang.String MMS_CONFIG_NAI_SUFFIX = "naiSuffix";
- field public static final java.lang.String MMS_CONFIG_NOTIFY_WAP_MMSC_ENABLED = "enabledNotifyWapMMSC";
- field public static final java.lang.String MMS_CONFIG_RECIPIENT_LIMIT = "recipientLimit";
- field public static final java.lang.String MMS_CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES = "sendMultipartSmsAsSeparateMessages";
- field public static final java.lang.String MMS_CONFIG_SHOW_CELL_BROADCAST_APP_LINKS = "config_cellBroadcastAppLinks";
- field public static final java.lang.String MMS_CONFIG_SMS_DELIVERY_REPORT_ENABLED = "enableSMSDeliveryReports";
- field public static final java.lang.String MMS_CONFIG_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD = "smsToMmsTextLengthThreshold";
- field public static final java.lang.String MMS_CONFIG_SMS_TO_MMS_TEXT_THRESHOLD = "smsToMmsTextThreshold";
- field public static final java.lang.String MMS_CONFIG_SUBJECT_MAX_LENGTH = "maxSubjectLength";
- field public static final java.lang.String MMS_CONFIG_SUPPORT_HTTP_CHARSET_HEADER = "supportHttpCharsetHeader";
- field public static final java.lang.String MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION = "supportMmsContentDisposition";
- field public static final java.lang.String MMS_CONFIG_UA_PROF_TAG_NAME = "uaProfTagName";
- field public static final java.lang.String MMS_CONFIG_UA_PROF_URL = "uaProfUrl";
- field public static final java.lang.String MMS_CONFIG_USER_AGENT = "userAgent";
+ method public void injectSmsPdu(byte[], String, android.app.PendingIntent);
+ method public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
+ method public void sendMultimediaMessage(android.content.Context, android.net.Uri, String, android.os.Bundle, android.app.PendingIntent);
+ method public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
+ method public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
+ method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.SEND_SMS}) public void sendTextMessageWithoutPersisting(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
+ field public static final String EXTRA_MMS_DATA = "android.telephony.extra.MMS_DATA";
+ field public static final String EXTRA_MMS_HTTP_STATUS = "android.telephony.extra.MMS_HTTP_STATUS";
+ field public static final String MMS_CONFIG_ALIAS_ENABLED = "aliasEnabled";
+ field public static final String MMS_CONFIG_ALIAS_MAX_CHARS = "aliasMaxChars";
+ field public static final String MMS_CONFIG_ALIAS_MIN_CHARS = "aliasMinChars";
+ field public static final String MMS_CONFIG_ALLOW_ATTACH_AUDIO = "allowAttachAudio";
+ field public static final String MMS_CONFIG_APPEND_TRANSACTION_ID = "enabledTransID";
+ field public static final String MMS_CONFIG_EMAIL_GATEWAY_NUMBER = "emailGatewayNumber";
+ field public static final String MMS_CONFIG_GROUP_MMS_ENABLED = "enableGroupMms";
+ field public static final String MMS_CONFIG_HTTP_PARAMS = "httpParams";
+ field public static final String MMS_CONFIG_HTTP_SOCKET_TIMEOUT = "httpSocketTimeout";
+ field public static final String MMS_CONFIG_MAX_IMAGE_HEIGHT = "maxImageHeight";
+ field public static final String MMS_CONFIG_MAX_IMAGE_WIDTH = "maxImageWidth";
+ field public static final String MMS_CONFIG_MAX_MESSAGE_SIZE = "maxMessageSize";
+ field public static final String MMS_CONFIG_MESSAGE_TEXT_MAX_SIZE = "maxMessageTextSize";
+ field public static final String MMS_CONFIG_MMS_DELIVERY_REPORT_ENABLED = "enableMMSDeliveryReports";
+ field public static final String MMS_CONFIG_MMS_ENABLED = "enabledMMS";
+ field public static final String MMS_CONFIG_MMS_READ_REPORT_ENABLED = "enableMMSReadReports";
+ field public static final String MMS_CONFIG_MULTIPART_SMS_ENABLED = "enableMultipartSMS";
+ field public static final String MMS_CONFIG_NAI_SUFFIX = "naiSuffix";
+ field public static final String MMS_CONFIG_NOTIFY_WAP_MMSC_ENABLED = "enabledNotifyWapMMSC";
+ field public static final String MMS_CONFIG_RECIPIENT_LIMIT = "recipientLimit";
+ field public static final String MMS_CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES = "sendMultipartSmsAsSeparateMessages";
+ field public static final String MMS_CONFIG_SHOW_CELL_BROADCAST_APP_LINKS = "config_cellBroadcastAppLinks";
+ field public static final String MMS_CONFIG_SMS_DELIVERY_REPORT_ENABLED = "enableSMSDeliveryReports";
+ field public static final String MMS_CONFIG_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD = "smsToMmsTextLengthThreshold";
+ field public static final String MMS_CONFIG_SMS_TO_MMS_TEXT_THRESHOLD = "smsToMmsTextThreshold";
+ field public static final String MMS_CONFIG_SUBJECT_MAX_LENGTH = "maxSubjectLength";
+ field public static final String MMS_CONFIG_SUPPORT_HTTP_CHARSET_HEADER = "supportHttpCharsetHeader";
+ field public static final String MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION = "supportMmsContentDisposition";
+ field public static final String MMS_CONFIG_UA_PROF_TAG_NAME = "uaProfTagName";
+ field public static final String MMS_CONFIG_UA_PROF_URL = "uaProfUrl";
+ field public static final String MMS_CONFIG_USER_AGENT = "userAgent";
field public static final int MMS_ERROR_CONFIGURATION_ERROR = 7; // 0x7
field public static final int MMS_ERROR_HTTP_FAILURE = 4; // 0x4
field public static final int MMS_ERROR_INVALID_APN = 2; // 0x2
@@ -44436,29 +44562,29 @@
}
public class SmsMessage {
- method public static int[] calculateLength(java.lang.CharSequence, boolean);
- method public static int[] calculateLength(java.lang.String, boolean);
- method public static deprecated android.telephony.SmsMessage createFromPdu(byte[]);
- method public static android.telephony.SmsMessage createFromPdu(byte[], java.lang.String);
- method public java.lang.String getDisplayMessageBody();
- method public java.lang.String getDisplayOriginatingAddress();
- method public java.lang.String getEmailBody();
- method public java.lang.String getEmailFrom();
+ method public static int[] calculateLength(CharSequence, boolean);
+ method public static int[] calculateLength(String, boolean);
+ method @Deprecated public static android.telephony.SmsMessage createFromPdu(byte[]);
+ method public static android.telephony.SmsMessage createFromPdu(byte[], String);
+ method public String getDisplayMessageBody();
+ method public String getDisplayOriginatingAddress();
+ method public String getEmailBody();
+ method public String getEmailFrom();
method public int getIndexOnIcc();
- method public deprecated int getIndexOnSim();
- method public java.lang.String getMessageBody();
+ method @Deprecated public int getIndexOnSim();
+ method public String getMessageBody();
method public android.telephony.SmsMessage.MessageClass getMessageClass();
- method public java.lang.String getOriginatingAddress();
+ method @Nullable public String getOriginatingAddress();
method public byte[] getPdu();
method public int getProtocolIdentifier();
- method public java.lang.String getPseudoSubject();
- method public java.lang.String getServiceCenterAddress();
+ method public String getPseudoSubject();
+ method public String getServiceCenterAddress();
method public int getStatus();
method public int getStatusOnIcc();
- method public deprecated int getStatusOnSim();
- method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(java.lang.String, java.lang.String, java.lang.String, boolean);
- method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(java.lang.String, java.lang.String, short, byte[], boolean);
- method public static int getTPLayerLengthForPDU(java.lang.String);
+ method @Deprecated public int getStatusOnSim();
+ method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(String, String, String, boolean);
+ method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(String, String, short, byte[], boolean);
+ method public static int getTPLayerLengthForPDU(String);
method public long getTimestampMillis();
method public byte[] getUserData();
method public boolean isCphsMwiMessage();
@@ -44473,17 +44599,15 @@
field public static final int ENCODING_7BIT = 1; // 0x1
field public static final int ENCODING_8BIT = 2; // 0x2
field public static final int ENCODING_UNKNOWN = 0; // 0x0
- field public static final java.lang.String FORMAT_3GPP = "3gpp";
- field public static final java.lang.String FORMAT_3GPP2 = "3gpp2";
+ field public static final String FORMAT_3GPP = "3gpp";
+ field public static final String FORMAT_3GPP2 = "3gpp2";
field public static final int MAX_USER_DATA_BYTES = 140; // 0x8c
field public static final int MAX_USER_DATA_BYTES_WITH_HEADER = 134; // 0x86
field public static final int MAX_USER_DATA_SEPTETS = 160; // 0xa0
field public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153; // 0x99
}
- public static final class SmsMessage.MessageClass extends java.lang.Enum {
- method public static android.telephony.SmsMessage.MessageClass valueOf(java.lang.String);
- method public static final android.telephony.SmsMessage.MessageClass[] values();
+ public enum SmsMessage.MessageClass {
enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_0;
enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_1;
enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_2;
@@ -44500,18 +44624,18 @@
method public android.graphics.Bitmap createIconBitmap(android.content.Context);
method public int describeContents();
method public int getCarrierId();
- method public java.lang.CharSequence getCarrierName();
- method public java.lang.String getCountryIso();
+ method public CharSequence getCarrierName();
+ method public String getCountryIso();
method public int getDataRoaming();
- method public java.lang.CharSequence getDisplayName();
- method public java.lang.String getGroupUuid();
- method public java.lang.String getIccId();
+ method public CharSequence getDisplayName();
+ method public String getGroupUuid();
+ method public String getIccId();
method public int getIconTint();
- method public deprecated int getMcc();
- method public java.lang.String getMccString();
- method public deprecated int getMnc();
- method public java.lang.String getMncString();
- method public java.lang.String getNumber();
+ method @Deprecated public int getMcc();
+ method public String getMccString();
+ method @Deprecated public int getMnc();
+ method public String getMncString();
+ method public String getNumber();
method public int getSimSlotIndex();
method public int getSubscriptionId();
method public boolean isEmbedded();
@@ -44521,47 +44645,47 @@
}
public class SubscriptionManager {
- method public void addOnOpportunisticSubscriptionsChangedListener(java.util.concurrent.Executor, android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
+ method public void addOnOpportunisticSubscriptionsChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
method public void addOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
method public boolean canManageSubscription(android.telephony.SubscriptionInfo);
- method public static deprecated android.telephony.SubscriptionManager from(android.content.Context);
+ method @Deprecated public static android.telephony.SubscriptionManager from(android.content.Context);
method public java.util.List<android.telephony.SubscriptionInfo> getAccessibleSubscriptionInfoList();
- method public android.telephony.SubscriptionInfo getActiveSubscriptionInfo(int);
- method public int getActiveSubscriptionInfoCount();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfo(int);
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getActiveSubscriptionInfoCount();
method public int getActiveSubscriptionInfoCountMax();
- method public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForSimSlotIndex(int);
- method public java.util.List<android.telephony.SubscriptionInfo> getActiveSubscriptionInfoList();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForSimSlotIndex(int);
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getActiveSubscriptionInfoList();
method public static int getDefaultDataSubscriptionId();
method public static int getDefaultSmsSubscriptionId();
method public static int getDefaultSubscriptionId();
method public static int getDefaultVoiceSubscriptionId();
- method public java.util.List<android.telephony.SubscriptionInfo> getOpportunisticSubscriptions();
+ method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getOpportunisticSubscriptions();
method public static int getSlotIndex(int);
- method public int[] getSubscriptionIds(int);
- method public java.util.List<android.telephony.SubscriptionPlan> getSubscriptionPlans(int);
- method public java.util.List<android.telephony.SubscriptionInfo> getSubscriptionsInGroup(int);
- method public boolean isActiveSubscriptionId(int);
+ method @Nullable public int[] getSubscriptionIds(int);
+ method @NonNull public java.util.List<android.telephony.SubscriptionPlan> getSubscriptionPlans(int);
+ method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getSubscriptionsInGroup(int);
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isActiveSubscriptionId(int);
method public boolean isNetworkRoaming(int);
method public static boolean isUsableSubscriptionId(int);
method public static boolean isValidSubscriptionId(int);
method public void removeOnOpportunisticSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
- method public boolean removeSubscriptionsFromGroup(int[]);
- method public boolean setMetered(boolean, int);
- method public boolean setOpportunistic(boolean, int);
- method public java.lang.String setSubscriptionGroup(int[]);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean removeSubscriptionsFromGroup(@NonNull int[]);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setMetered(boolean, int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunistic(boolean, int);
+ method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String setSubscriptionGroup(@NonNull int[]);
method public void setSubscriptionOverrideCongested(int, boolean, long);
method public void setSubscriptionOverrideUnmetered(int, boolean, long);
- method public void setSubscriptionPlans(int, java.util.List<android.telephony.SubscriptionPlan>);
- method public void switchToSubscription(int, android.app.PendingIntent);
- field public static final java.lang.String ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED";
- field public static final java.lang.String ACTION_DEFAULT_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED";
- field public static final java.lang.String ACTION_MANAGE_SUBSCRIPTION_PLANS = "android.telephony.action.MANAGE_SUBSCRIPTION_PLANS";
- field public static final java.lang.String ACTION_REFRESH_SUBSCRIPTION_PLANS = "android.telephony.action.REFRESH_SUBSCRIPTION_PLANS";
+ method public void setSubscriptionPlans(int, @NonNull java.util.List<android.telephony.SubscriptionPlan>);
+ method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void switchToSubscription(int, android.app.PendingIntent);
+ field public static final String ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED";
+ field public static final String ACTION_DEFAULT_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED";
+ field public static final String ACTION_MANAGE_SUBSCRIPTION_PLANS = "android.telephony.action.MANAGE_SUBSCRIPTION_PLANS";
+ field public static final String ACTION_REFRESH_SUBSCRIPTION_PLANS = "android.telephony.action.REFRESH_SUBSCRIPTION_PLANS";
field public static final int DATA_ROAMING_DISABLE = 0; // 0x0
field public static final int DATA_ROAMING_ENABLE = 1; // 0x1
field public static final int DEFAULT_SUBSCRIPTION_ID = 2147483647; // 0x7fffffff
- field public static final java.lang.String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
+ field public static final String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
field public static final int INVALID_SIM_SLOT_INDEX = -1; // 0xffffffff
field public static final int INVALID_SUBSCRIPTION_ID = -1; // 0xffffffff
}
@@ -44583,8 +44707,8 @@
method public long getDataLimitBytes();
method public long getDataUsageBytes();
method public long getDataUsageTime();
- method public java.lang.CharSequence getSummary();
- method public java.lang.CharSequence getTitle();
+ method @Nullable public CharSequence getSummary();
+ method @Nullable public CharSequence getTitle();
method public void writeToParcel(android.os.Parcel, int);
field public static final long BYTES_UNKNOWN = -1L; // 0xffffffffffffffffL
field public static final long BYTES_UNLIMITED = 9223372036854775807L; // 0x7fffffffffffffffL
@@ -44602,114 +44726,114 @@
method public static android.telephony.SubscriptionPlan.Builder createRecurring(java.time.ZonedDateTime, java.time.Period);
method public android.telephony.SubscriptionPlan.Builder setDataLimit(long, int);
method public android.telephony.SubscriptionPlan.Builder setDataUsage(long, long);
- method public android.telephony.SubscriptionPlan.Builder setSummary(java.lang.CharSequence);
- method public android.telephony.SubscriptionPlan.Builder setTitle(java.lang.CharSequence);
+ method public android.telephony.SubscriptionPlan.Builder setSummary(@Nullable CharSequence);
+ method public android.telephony.SubscriptionPlan.Builder setTitle(@Nullable CharSequence);
}
public class TelephonyManager {
method public boolean canChangeDtmfToneLength();
- method public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
+ method @Nullable public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
method public android.telephony.TelephonyManager createForSubscriptionId(int);
- method public java.util.List<android.telephony.CellInfo> getAllCellInfo();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public java.util.List<android.telephony.CellInfo> getAllCellInfo();
method public int getCallState();
- method public android.os.PersistableBundle getCarrierConfig();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @WorkerThread public android.os.PersistableBundle getCarrierConfig();
method public int getCarrierIdFromSimMccMnc();
- method public deprecated android.telephony.CellLocation getCellLocation();
- method public java.util.Map<java.lang.Integer, java.util.List<android.telephony.emergency.EmergencyNumber>> getCurrentEmergencyNumberList();
- method public java.util.Map<java.lang.Integer, java.util.List<android.telephony.emergency.EmergencyNumber>> getCurrentEmergencyNumberList(int);
+ method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.telephony.CellLocation getCellLocation();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @Nullable public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getCurrentEmergencyNumberList();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @Nullable public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getCurrentEmergencyNumberList(int);
method public int getDataActivity();
- method public int getDataNetworkType();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getDataNetworkType();
method public int getDataState();
- method public deprecated java.lang.String getDeviceId();
- method public deprecated java.lang.String getDeviceId(int);
- method public java.lang.String getDeviceSoftwareVersion();
- method public java.lang.String[] getForbiddenPlmns();
- method public java.lang.String getGroupIdLevel1();
- method public java.lang.String getIccAuthentication(int, int, java.lang.String);
- method public java.lang.String getImei();
- method public java.lang.String getImei(int);
- method public java.lang.String getLine1Number();
- method public java.lang.String getManufacturerCode();
- method public java.lang.String getManufacturerCode(int);
- method public java.lang.String getMeid();
- method public java.lang.String getMeid(int);
- method public java.lang.String getMmsUAProfUrl();
- method public java.lang.String getMmsUserAgent();
- method public java.lang.String getNai();
- method public java.lang.String getNetworkCountryIso();
- method public java.lang.String getNetworkOperator();
- method public java.lang.String getNetworkOperatorName();
- method public java.lang.String getNetworkSpecifier();
+ method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId();
+ method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId(int);
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceSoftwareVersion();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String[] getForbiddenPlmns();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getGroupIdLevel1();
+ method public String getIccAuthentication(int, int, String);
+ method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei();
+ method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei(int);
+ method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}) public String getLine1Number();
+ method public String getManufacturerCode();
+ method public String getManufacturerCode(int);
+ method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getMeid();
+ method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getMeid(int);
+ method public String getMmsUAProfUrl();
+ method public String getMmsUserAgent();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getNai();
+ method public String getNetworkCountryIso();
+ method public String getNetworkOperator();
+ method public String getNetworkOperatorName();
+ method public String getNetworkSpecifier();
method public int getNetworkType();
method public int getPhoneCount();
method public int getPhoneType();
method public int getPreferredOpportunisticDataSubscription();
- method public android.telephony.ServiceState getServiceState();
- method public android.telephony.SignalStrength getSignalStrength();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.ServiceState getServiceState();
+ method @Nullable public android.telephony.SignalStrength getSignalStrength();
method public int getSimCarrierId();
- method public java.lang.CharSequence getSimCarrierIdName();
- method public java.lang.String getSimCountryIso();
- method public java.lang.String getSimOperator();
- method public java.lang.String getSimOperatorName();
+ method @Nullable public CharSequence getSimCarrierIdName();
+ method public String getSimCountryIso();
+ method public String getSimOperator();
+ method public String getSimOperatorName();
method public int getSimPreciseCarrierId();
- method public java.lang.CharSequence getSimPreciseCarrierIdName();
- method public java.lang.String getSimSerialNumber();
+ method @Nullable public CharSequence getSimPreciseCarrierIdName();
+ method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSimSerialNumber();
method public int getSimState();
method public int getSimState(int);
- method public java.lang.String getSubscriberId();
- method public java.lang.String getTypeAllocationCode();
- method public java.lang.String getTypeAllocationCode(int);
- method public java.lang.String getVisualVoicemailPackageName();
- method public java.lang.String getVoiceMailAlphaTag();
- method public java.lang.String getVoiceMailNumber();
- method public int getVoiceNetworkType();
+ method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSubscriberId();
+ method public String getTypeAllocationCode();
+ method public String getTypeAllocationCode(int);
+ method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVisualVoicemailPackageName();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailAlphaTag();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getVoiceNetworkType();
method public android.net.Uri getVoicemailRingtoneUri(android.telecom.PhoneAccountHandle);
method public boolean hasCarrierPrivileges();
method public boolean hasIccCard();
method public boolean iccCloseLogicalChannel(int);
- method public byte[] iccExchangeSimIO(int, int, int, int, int, java.lang.String);
- method public deprecated android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String);
- method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String, int);
- method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, java.lang.String);
- method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String);
+ method public byte[] iccExchangeSimIO(int, int, int, int, int, String);
+ method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String);
+ method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String, int);
+ method public String iccTransmitApduBasicChannel(int, int, int, int, int, String);
+ method public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String);
method public boolean isConcurrentVoiceAndDataSupported();
- method public boolean isCurrentEmergencyNumber(java.lang.String);
- method public boolean isDataEnabled();
- method public boolean isDataRoamingEnabled();
+ method public boolean isCurrentEmergencyNumber(@NonNull String);
+ 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 isHearingAidCompatibilitySupported();
method public boolean isNetworkRoaming();
method public boolean isSmsCapable();
- method public deprecated boolean isTtyModeSupported();
+ method @Deprecated public boolean isTtyModeSupported();
method public boolean isVoiceCapable();
method public boolean isVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle);
method public boolean isWorldPhone();
method public void listen(android.telephony.PhoneStateListener, int);
- method public void requestCellInfoUpdate(java.util.concurrent.Executor, android.telephony.TelephonyManager.CellInfoCallback);
- method public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback);
- method public void sendDialerSpecialCode(java.lang.String);
- method public java.lang.String sendEnvelopeWithStatus(java.lang.String);
- method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler);
- method public void sendVisualVoicemailSms(java.lang.String, int, java.lang.String, android.app.PendingIntent);
- method public void setDataEnabled(boolean);
- method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
- method public void setNetworkSelectionModeAutomatic();
- method public boolean setNetworkSelectionModeManual(java.lang.String, boolean);
- method public boolean setOperatorBrandOverride(java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public void requestCellInfoUpdate(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback);
+ method public void sendDialerSpecialCode(String);
+ method public String sendEnvelopeWithStatus(String);
+ method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void sendUssdRequest(String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler);
+ method public void sendVisualVoicemailSms(String, int, String, android.app.PendingIntent);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean);
+ method public boolean setLine1NumberForDisplay(String, String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setNetworkSelectionModeManual(String, boolean);
+ method public boolean setOperatorBrandOverride(String);
method public boolean setPreferredNetworkTypeToGlobal();
method public boolean setPreferredOpportunisticDataSubscription(int);
method public void setVisualVoicemailSmsFilterSettings(android.telephony.VisualVoicemailSmsFilterSettings);
- method public boolean setVoiceMailNumber(java.lang.String, java.lang.String);
- method public deprecated void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri);
- method public deprecated void setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean);
+ method public boolean setVoiceMailNumber(String, String);
+ method @Deprecated public void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri);
+ method @Deprecated public void setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean);
method public boolean updateAvailableNetworks(java.util.List<android.telephony.AvailableNetworkInfo>);
- field public static final java.lang.String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL";
- field public static final java.lang.String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
- field public static final java.lang.String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
- field public static final java.lang.String ACTION_SECRET_CODE = "android.telephony.action.SECRET_CODE";
- field public static final java.lang.String ACTION_SHOW_VOICEMAIL_NOTIFICATION = "android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION";
- field public static final java.lang.String ACTION_SMS_APP_SERVICE = "android.telephony.action.SMS_APP_SERVICE";
- field public static final java.lang.String ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_CARRIER_IDENTITY_CHANGED";
- field public static final java.lang.String ACTION_SUBSCRIPTION_PRECISE_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_PRECISE_CARRIER_IDENTITY_CHANGED";
+ field public static final String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL";
+ field @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public static final String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
+ field public static final String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
+ field public static final String ACTION_SECRET_CODE = "android.telephony.action.SECRET_CODE";
+ field public static final String ACTION_SHOW_VOICEMAIL_NOTIFICATION = "android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION";
+ field public static final String ACTION_SMS_APP_SERVICE = "android.telephony.action.SMS_APP_SERVICE";
+ field public static final String ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_CARRIER_IDENTITY_CHANGED";
+ field public static final String ACTION_SUBSCRIPTION_PRECISE_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_PRECISE_CARRIER_IDENTITY_CHANGED";
field public static final int APPTYPE_CSIM = 4; // 0x4
field public static final int APPTYPE_ISIM = 5; // 0x5
field public static final int APPTYPE_RUIM = 3; // 0x3
@@ -44734,24 +44858,24 @@
field public static final int DATA_DISCONNECTED = 0; // 0x0
field public static final int DATA_SUSPENDED = 3; // 0x3
field public static final int DATA_UNKNOWN = -1; // 0xffffffff
- field public static final java.lang.String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
- field public static final java.lang.String EXTRA_CARRIER_ID = "android.telephony.extra.CARRIER_ID";
- field public static final java.lang.String EXTRA_CARRIER_NAME = "android.telephony.extra.CARRIER_NAME";
- field public static final java.lang.String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS";
- field public static final java.lang.String EXTRA_INCOMING_NUMBER = "incoming_number";
- field public static final java.lang.String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH";
- field public static final java.lang.String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT";
- field public static final java.lang.String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT";
- field public static final java.lang.String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telephony.extra.PHONE_ACCOUNT_HANDLE";
- field public static final java.lang.String EXTRA_PRECISE_CARRIER_ID = "android.telephony.extra.PRECISE_CARRIER_ID";
- field public static final java.lang.String EXTRA_PRECISE_CARRIER_NAME = "android.telephony.extra.PRECISE_CARRIER_NAME";
- field public static final java.lang.String EXTRA_STATE = "state";
- field public static final java.lang.String EXTRA_STATE_IDLE;
- field public static final java.lang.String EXTRA_STATE_OFFHOOK;
- field public static final java.lang.String EXTRA_STATE_RINGING;
- field public static final java.lang.String EXTRA_SUBSCRIPTION_ID = "android.telephony.extra.SUBSCRIPTION_ID";
- field public static final java.lang.String EXTRA_VOICEMAIL_NUMBER = "android.telephony.extra.VOICEMAIL_NUMBER";
- field public static final java.lang.String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU";
+ field public static final String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
+ field public static final String EXTRA_CARRIER_ID = "android.telephony.extra.CARRIER_ID";
+ field public static final String EXTRA_CARRIER_NAME = "android.telephony.extra.CARRIER_NAME";
+ field public static final String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS";
+ field public static final String EXTRA_INCOMING_NUMBER = "incoming_number";
+ field public static final String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH";
+ field public static final String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT";
+ field public static final String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT";
+ field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telephony.extra.PHONE_ACCOUNT_HANDLE";
+ field public static final String EXTRA_PRECISE_CARRIER_ID = "android.telephony.extra.PRECISE_CARRIER_ID";
+ field public static final String EXTRA_PRECISE_CARRIER_NAME = "android.telephony.extra.PRECISE_CARRIER_NAME";
+ field public static final String EXTRA_STATE = "state";
+ field public static final String EXTRA_STATE_IDLE;
+ field public static final String EXTRA_STATE_OFFHOOK;
+ field public static final String EXTRA_STATE_RINGING;
+ field public static final String EXTRA_SUBSCRIPTION_ID = "android.telephony.extra.SUBSCRIPTION_ID";
+ field public static final String EXTRA_VOICEMAIL_NUMBER = "android.telephony.extra.VOICEMAIL_NUMBER";
+ field public static final String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU";
field public static final int NETWORK_TYPE_1xRTT = 7; // 0x7
field public static final int NETWORK_TYPE_CDMA = 4; // 0x4
field public static final int NETWORK_TYPE_EDGE = 2; // 0x2
@@ -44789,29 +44913,29 @@
field public static final int UNKNOWN_CARRIER_ID = -1; // 0xffffffff
field public static final int USSD_ERROR_SERVICE_UNAVAIL = -2; // 0xfffffffe
field public static final int USSD_RETURN_FAILURE = -1; // 0xffffffff
- field public static final java.lang.String VVM_TYPE_CVVM = "vvm_type_cvvm";
- field public static final java.lang.String VVM_TYPE_OMTP = "vvm_type_omtp";
+ field public static final String VVM_TYPE_CVVM = "vvm_type_cvvm";
+ field public static final String VVM_TYPE_OMTP = "vvm_type_omtp";
}
- public static abstract class TelephonyManager.CellInfoCallback {
+ public abstract static class TelephonyManager.CellInfoCallback {
ctor public TelephonyManager.CellInfoCallback();
- method public abstract void onCellInfo(java.util.List<android.telephony.CellInfo>);
- method public void onError(int, java.lang.Throwable);
+ method public abstract void onCellInfo(@NonNull java.util.List<android.telephony.CellInfo>);
+ method public void onError(int, @Nullable Throwable);
field public static final int ERROR_MODEM_ERROR = 2; // 0x2
field public static final int ERROR_TIMEOUT = 1; // 0x1
}
- public static abstract class TelephonyManager.UssdResponseCallback {
+ public abstract static class TelephonyManager.UssdResponseCallback {
ctor public TelephonyManager.UssdResponseCallback();
- method public void onReceiveUssdResponse(android.telephony.TelephonyManager, java.lang.String, java.lang.CharSequence);
- method public void onReceiveUssdResponseFailed(android.telephony.TelephonyManager, java.lang.String, int);
+ method public void onReceiveUssdResponse(android.telephony.TelephonyManager, String, CharSequence);
+ method public void onReceiveUssdResponseFailed(android.telephony.TelephonyManager, String, int);
}
public final class TelephonyScanManager {
ctor public TelephonyScanManager();
}
- public static abstract class TelephonyScanManager.NetworkScanCallback {
+ public abstract static class TelephonyScanManager.NetworkScanCallback {
ctor public TelephonyScanManager.NetworkScanCallback();
method public void onComplete();
method public void onError(int);
@@ -44821,11 +44945,11 @@
public abstract class VisualVoicemailService extends android.app.Service {
ctor public VisualVoicemailService();
method public android.os.IBinder onBind(android.content.Intent);
- method public abstract void onCellServiceConnected(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
- method public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
- method public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms);
- method public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask);
- field public static final java.lang.String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService";
+ method @MainThread public abstract void onCellServiceConnected(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
+ method @MainThread public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
+ method @MainThread public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms);
+ method @MainThread public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask);
+ field public static final String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService";
}
public static class VisualVoicemailService.VisualVoicemailTask {
@@ -44835,9 +44959,9 @@
public final class VisualVoicemailSms implements android.os.Parcelable {
method public int describeContents();
method public android.os.Bundle getFields();
- method public java.lang.String getMessageBody();
+ method public String getMessageBody();
method public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
- method public java.lang.String getPrefix();
+ method public String getPrefix();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.VisualVoicemailSms> CREATOR;
}
@@ -44848,7 +44972,7 @@
field public static final android.os.Parcelable.Creator<android.telephony.VisualVoicemailSmsFilterSettings> CREATOR;
field public static final int DESTINATION_PORT_ANY = -1; // 0xffffffff
field public static final int DESTINATION_PORT_DATA_SMS = -2; // 0xfffffffe
- field public final java.lang.String clientPrefix;
+ field public final String clientPrefix;
field public final int destinationPort;
field public final java.util.List<java.lang.String> originatingNumbers;
}
@@ -44856,7 +44980,7 @@
public static class VisualVoicemailSmsFilterSettings.Builder {
ctor public VisualVoicemailSmsFilterSettings.Builder();
method public android.telephony.VisualVoicemailSmsFilterSettings build();
- method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setClientPrefix(java.lang.String);
+ method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setClientPrefix(String);
method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setDestinationPort(int);
method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setOriginatingNumbers(java.util.List<java.lang.String>);
}
@@ -44886,28 +45010,28 @@
public class ApnSetting implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getApnName();
+ method public String getApnName();
method public int getApnTypeBitmask();
method public int getAuthType();
method public int getCarrierId();
- method public java.lang.String getEntryName();
+ method public String getEntryName();
method public int getId();
- method public deprecated java.net.InetAddress getMmsProxyAddress();
- method public java.lang.String getMmsProxyAddressAsString();
+ method @Deprecated public java.net.InetAddress getMmsProxyAddress();
+ method public String getMmsProxyAddressAsString();
method public int getMmsProxyPort();
method public android.net.Uri getMmsc();
method public int getMvnoType();
method public int getNetworkTypeBitmask();
- method public java.lang.String getOperatorNumeric();
- method public java.lang.String getPassword();
+ method public String getOperatorNumeric();
+ method public String getPassword();
method public int getProtocol();
- method public deprecated java.net.InetAddress getProxyAddress();
- method public java.lang.String getProxyAddressAsString();
+ method @Deprecated public java.net.InetAddress getProxyAddress();
+ method public String getProxyAddressAsString();
method public int getProxyPort();
method public int getRoamingProtocol();
- method public java.lang.String getUser();
+ method public String getUser();
method public boolean isEnabled();
- method public void writeToParcel(android.os.Parcel, int);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final int AUTH_TYPE_CHAP = 2; // 0x2
field public static final int AUTH_TYPE_NONE = 0; // 0x0
field public static final int AUTH_TYPE_PAP = 1; // 0x1
@@ -44936,44 +45060,44 @@
public static class ApnSetting.Builder {
ctor public ApnSetting.Builder();
method public android.telephony.data.ApnSetting build();
- method public android.telephony.data.ApnSetting.Builder setApnName(java.lang.String);
+ method public android.telephony.data.ApnSetting.Builder setApnName(String);
method public android.telephony.data.ApnSetting.Builder setApnTypeBitmask(int);
method public android.telephony.data.ApnSetting.Builder setAuthType(int);
method public android.telephony.data.ApnSetting.Builder setCarrierEnabled(boolean);
method public android.telephony.data.ApnSetting.Builder setCarrierId(int);
- method public android.telephony.data.ApnSetting.Builder setEntryName(java.lang.String);
- method public deprecated android.telephony.data.ApnSetting.Builder setMmsProxyAddress(java.net.InetAddress);
- method public android.telephony.data.ApnSetting.Builder setMmsProxyAddress(java.lang.String);
+ method public android.telephony.data.ApnSetting.Builder setEntryName(String);
+ method @Deprecated public android.telephony.data.ApnSetting.Builder setMmsProxyAddress(java.net.InetAddress);
+ method public android.telephony.data.ApnSetting.Builder setMmsProxyAddress(String);
method public android.telephony.data.ApnSetting.Builder setMmsProxyPort(int);
method public android.telephony.data.ApnSetting.Builder setMmsc(android.net.Uri);
method public android.telephony.data.ApnSetting.Builder setMvnoType(int);
method public android.telephony.data.ApnSetting.Builder setNetworkTypeBitmask(int);
- method public android.telephony.data.ApnSetting.Builder setOperatorNumeric(java.lang.String);
- method public android.telephony.data.ApnSetting.Builder setPassword(java.lang.String);
+ method public android.telephony.data.ApnSetting.Builder setOperatorNumeric(String);
+ method public android.telephony.data.ApnSetting.Builder setPassword(String);
method public android.telephony.data.ApnSetting.Builder setProtocol(int);
- method public deprecated android.telephony.data.ApnSetting.Builder setProxyAddress(java.net.InetAddress);
- method public android.telephony.data.ApnSetting.Builder setProxyAddress(java.lang.String);
+ method @Deprecated public android.telephony.data.ApnSetting.Builder setProxyAddress(java.net.InetAddress);
+ method public android.telephony.data.ApnSetting.Builder setProxyAddress(String);
method public android.telephony.data.ApnSetting.Builder setProxyPort(int);
method public android.telephony.data.ApnSetting.Builder setRoamingProtocol(int);
- method public android.telephony.data.ApnSetting.Builder setUser(java.lang.String);
+ method public android.telephony.data.ApnSetting.Builder setUser(String);
}
}
package android.telephony.emergency {
- public final class EmergencyNumber implements java.lang.Comparable android.os.Parcelable {
- method public int compareTo(android.telephony.emergency.EmergencyNumber);
+ public final class EmergencyNumber implements java.lang.Comparable<android.telephony.emergency.EmergencyNumber> android.os.Parcelable {
+ method public int compareTo(@NonNull android.telephony.emergency.EmergencyNumber);
method public int describeContents();
- method public java.lang.String getCountryIso();
+ method public String getCountryIso();
method public int getEmergencyCallRouting();
method public int getEmergencyNumberSourceBitmask();
method public java.util.List<java.lang.Integer> getEmergencyNumberSources();
method public java.util.List<java.lang.Integer> getEmergencyServiceCategories();
method public int getEmergencyServiceCategoryBitmask();
- method public java.util.List<java.lang.String> getEmergencyUrns();
- method public java.lang.String getMnc();
- method public java.lang.String getNumber();
+ method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
+ method public String getMnc();
+ method public String getNumber();
method public boolean isFromSources(int);
method public boolean isInEmergencyServiceCategories(int);
method public void writeToParcel(android.os.Parcel, int);
@@ -45002,38 +45126,39 @@
public final class DownloadableSubscription implements android.os.Parcelable {
method public int describeContents();
- method public static android.telephony.euicc.DownloadableSubscription forActivationCode(java.lang.String);
- method public java.lang.String getConfirmationCode();
- method public java.lang.String getEncodedActivationCode();
+ method public static android.telephony.euicc.DownloadableSubscription forActivationCode(String);
+ method @Nullable public String getConfirmationCode();
+ method @Nullable public String getEncodedActivationCode();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.euicc.DownloadableSubscription> CREATOR;
}
public final class EuiccInfo implements android.os.Parcelable {
- ctor public EuiccInfo(java.lang.String);
+ ctor public EuiccInfo(@Nullable String);
method public int describeContents();
- method public java.lang.String getOsVersion();
+ method @Nullable public String getOsVersion();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccInfo> CREATOR;
}
public class EuiccManager {
- method public void deleteSubscription(int, android.app.PendingIntent);
- method public void downloadSubscription(android.telephony.euicc.DownloadableSubscription, boolean, android.app.PendingIntent);
- method public java.lang.String getEid();
- method public android.telephony.euicc.EuiccInfo getEuiccInfo();
+ method public android.telephony.euicc.EuiccManager createForCardId(int);
+ method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void deleteSubscription(int, android.app.PendingIntent);
+ method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void downloadSubscription(android.telephony.euicc.DownloadableSubscription, boolean, android.app.PendingIntent);
+ method @Nullable public String getEid();
+ method @Nullable public android.telephony.euicc.EuiccInfo getEuiccInfo();
method public boolean isEnabled();
method public void startResolutionActivity(android.app.Activity, int, android.content.Intent, android.app.PendingIntent) throws android.content.IntentSender.SendIntentException;
- method public void switchToSubscription(int, android.app.PendingIntent);
- method public void updateSubscriptionNickname(int, java.lang.String, android.app.PendingIntent);
- field public static final java.lang.String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
- field public static final java.lang.String ACTION_NOTIFY_CARRIER_SETUP_INCOMPLETE = "android.telephony.euicc.action.NOTIFY_CARRIER_SETUP_INCOMPLETE";
+ method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void switchToSubscription(int, android.app.PendingIntent);
+ method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void updateSubscriptionNickname(int, String, android.app.PendingIntent);
+ field public static final String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
+ field public static final String ACTION_NOTIFY_CARRIER_SETUP_INCOMPLETE = "android.telephony.euicc.action.NOTIFY_CARRIER_SETUP_INCOMPLETE";
field public static final int EMBEDDED_SUBSCRIPTION_RESULT_ERROR = 2; // 0x2
field public static final int EMBEDDED_SUBSCRIPTION_RESULT_OK = 0; // 0x0
field public static final int EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR = 1; // 0x1
- field public static final java.lang.String EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DETAILED_CODE";
- field public static final java.lang.String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION";
- field public static final java.lang.String META_DATA_CARRIER_ICON = "android.telephony.euicc.carriericon";
+ field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DETAILED_CODE";
+ field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION";
+ field public static final String META_DATA_CARRIER_ICON = "android.telephony.euicc.carriericon";
}
}
@@ -45051,79 +45176,76 @@
method public void setStateInvalid();
}
- public final deprecated class SmsManager {
- method public deprecated java.util.ArrayList<java.lang.String> divideMessage(java.lang.String);
- method public static deprecated android.telephony.gsm.SmsManager getDefault();
- method public deprecated void sendDataMessage(java.lang.String, java.lang.String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
- method public deprecated void sendMultipartTextMessage(java.lang.String, java.lang.String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
- method public deprecated void sendTextMessage(java.lang.String, java.lang.String, java.lang.String, android.app.PendingIntent, android.app.PendingIntent);
- field public static final deprecated int RESULT_ERROR_GENERIC_FAILURE = 1; // 0x1
- field public static final deprecated int RESULT_ERROR_NO_SERVICE = 4; // 0x4
- field public static final deprecated int RESULT_ERROR_NULL_PDU = 3; // 0x3
- field public static final deprecated int RESULT_ERROR_RADIO_OFF = 2; // 0x2
- field public static final deprecated int STATUS_ON_SIM_FREE = 0; // 0x0
- field public static final deprecated int STATUS_ON_SIM_READ = 1; // 0x1
- field public static final deprecated int STATUS_ON_SIM_SENT = 5; // 0x5
- field public static final deprecated int STATUS_ON_SIM_UNREAD = 3; // 0x3
- field public static final deprecated int STATUS_ON_SIM_UNSENT = 7; // 0x7
+ @Deprecated public final class SmsManager {
+ method @Deprecated public java.util.ArrayList<java.lang.String> divideMessage(String);
+ method @Deprecated public static android.telephony.gsm.SmsManager getDefault();
+ method @Deprecated public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
+ method @Deprecated public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
+ method @Deprecated public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
+ field @Deprecated public static final int RESULT_ERROR_GENERIC_FAILURE = 1; // 0x1
+ field @Deprecated public static final int RESULT_ERROR_NO_SERVICE = 4; // 0x4
+ field @Deprecated public static final int RESULT_ERROR_NULL_PDU = 3; // 0x3
+ field @Deprecated public static final int RESULT_ERROR_RADIO_OFF = 2; // 0x2
+ field @Deprecated public static final int STATUS_ON_SIM_FREE = 0; // 0x0
+ field @Deprecated public static final int STATUS_ON_SIM_READ = 1; // 0x1
+ field @Deprecated public static final int STATUS_ON_SIM_SENT = 5; // 0x5
+ field @Deprecated public static final int STATUS_ON_SIM_UNREAD = 3; // 0x3
+ field @Deprecated public static final int STATUS_ON_SIM_UNSENT = 7; // 0x7
}
- public deprecated class SmsMessage {
- ctor public deprecated SmsMessage();
- method public static deprecated int[] calculateLength(java.lang.CharSequence, boolean);
- method public static deprecated int[] calculateLength(java.lang.String, boolean);
- method public static deprecated android.telephony.gsm.SmsMessage createFromPdu(byte[]);
- method public deprecated java.lang.String getDisplayMessageBody();
- method public deprecated java.lang.String getDisplayOriginatingAddress();
- method public deprecated java.lang.String getEmailBody();
- method public deprecated java.lang.String getEmailFrom();
- method public deprecated int getIndexOnSim();
- method public deprecated java.lang.String getMessageBody();
- method public deprecated android.telephony.gsm.SmsMessage.MessageClass getMessageClass();
- method public deprecated java.lang.String getOriginatingAddress();
- method public deprecated byte[] getPdu();
- method public deprecated int getProtocolIdentifier();
- method public deprecated java.lang.String getPseudoSubject();
- method public deprecated java.lang.String getServiceCenterAddress();
- method public deprecated int getStatus();
- method public deprecated int getStatusOnSim();
- method public static deprecated android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(java.lang.String, java.lang.String, java.lang.String, boolean);
- method public static deprecated android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(java.lang.String, java.lang.String, short, byte[], boolean);
- method public static deprecated int getTPLayerLengthForPDU(java.lang.String);
- method public deprecated long getTimestampMillis();
- method public deprecated byte[] getUserData();
- method public deprecated boolean isCphsMwiMessage();
- method public deprecated boolean isEmail();
- method public deprecated boolean isMWIClearMessage();
- method public deprecated boolean isMWISetMessage();
- method public deprecated boolean isMwiDontStore();
- method public deprecated boolean isReplace();
- method public deprecated boolean isReplyPathPresent();
- method public deprecated boolean isStatusReportMessage();
- field public static final deprecated int ENCODING_16BIT = 3; // 0x3
- field public static final deprecated int ENCODING_7BIT = 1; // 0x1
- field public static final deprecated int ENCODING_8BIT = 2; // 0x2
- field public static final deprecated int ENCODING_UNKNOWN = 0; // 0x0
- field public static final deprecated int MAX_USER_DATA_BYTES = 140; // 0x8c
- field public static final deprecated int MAX_USER_DATA_SEPTETS = 160; // 0xa0
- field public static final deprecated int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153; // 0x99
+ @Deprecated public class SmsMessage {
+ ctor @Deprecated public SmsMessage();
+ method @Deprecated public static int[] calculateLength(CharSequence, boolean);
+ method @Deprecated public static int[] calculateLength(String, boolean);
+ method @Deprecated public static android.telephony.gsm.SmsMessage createFromPdu(byte[]);
+ method @Deprecated public String getDisplayMessageBody();
+ method @Deprecated public String getDisplayOriginatingAddress();
+ method @Deprecated public String getEmailBody();
+ method @Deprecated public String getEmailFrom();
+ method @Deprecated public int getIndexOnSim();
+ method @Deprecated public String getMessageBody();
+ method @Deprecated public android.telephony.gsm.SmsMessage.MessageClass getMessageClass();
+ method @Deprecated public String getOriginatingAddress();
+ method @Deprecated public byte[] getPdu();
+ method @Deprecated public int getProtocolIdentifier();
+ method @Deprecated public String getPseudoSubject();
+ method @Deprecated public String getServiceCenterAddress();
+ method @Deprecated public int getStatus();
+ method @Deprecated public int getStatusOnSim();
+ method @Deprecated public static android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(String, String, String, boolean);
+ method @Deprecated public static android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(String, String, short, byte[], boolean);
+ method @Deprecated public static int getTPLayerLengthForPDU(String);
+ method @Deprecated public long getTimestampMillis();
+ method @Deprecated public byte[] getUserData();
+ method @Deprecated public boolean isCphsMwiMessage();
+ method @Deprecated public boolean isEmail();
+ method @Deprecated public boolean isMWIClearMessage();
+ method @Deprecated public boolean isMWISetMessage();
+ method @Deprecated public boolean isMwiDontStore();
+ method @Deprecated public boolean isReplace();
+ method @Deprecated public boolean isReplyPathPresent();
+ method @Deprecated public boolean isStatusReportMessage();
+ field @Deprecated public static final int ENCODING_16BIT = 3; // 0x3
+ field @Deprecated public static final int ENCODING_7BIT = 1; // 0x1
+ field @Deprecated public static final int ENCODING_8BIT = 2; // 0x2
+ field @Deprecated public static final int ENCODING_UNKNOWN = 0; // 0x0
+ field @Deprecated public static final int MAX_USER_DATA_BYTES = 140; // 0x8c
+ field @Deprecated public static final int MAX_USER_DATA_SEPTETS = 160; // 0xa0
+ field @Deprecated public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153; // 0x99
}
- public static final deprecated class SmsMessage.MessageClass extends java.lang.Enum {
- method public static android.telephony.gsm.SmsMessage.MessageClass valueOf(java.lang.String);
- method public static final android.telephony.gsm.SmsMessage.MessageClass[] values();
- enum_constant public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_0;
- enum_constant public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_1;
- enum_constant public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_2;
- enum_constant public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_3;
- enum_constant public static final android.telephony.gsm.SmsMessage.MessageClass UNKNOWN;
+ @Deprecated public enum SmsMessage.MessageClass {
+ enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_0;
+ enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_1;
+ enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_2;
+ enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_3;
+ enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass UNKNOWN;
}
- public static deprecated class SmsMessage.SubmitPdu {
- ctor public deprecated SmsMessage.SubmitPdu();
- method public deprecated java.lang.String toString();
- field public deprecated byte[] encodedMessage;
- field public deprecated byte[] encodedScAddress;
+ @Deprecated public static class SmsMessage.SubmitPdu {
+ ctor @Deprecated public SmsMessage.SubmitPdu();
+ field @Deprecated public byte[] encodedMessage;
+ field @Deprecated public byte[] encodedScAddress;
}
}
@@ -45138,7 +45260,7 @@
public final class DownloadRequest implements android.os.Parcelable {
method public int describeContents();
method public android.net.Uri getDestinationUri();
- method public java.lang.String getFileServiceId();
+ method public String getFileServiceId();
method public static int getMaxAppIntentSize();
method public static int getMaxDestinationUriSize();
method public android.net.Uri getSourceUri();
@@ -45149,7 +45271,7 @@
}
public static class DownloadRequest.Builder {
- ctor public DownloadRequest.Builder(android.net.Uri, android.net.Uri);
+ ctor public DownloadRequest.Builder(@NonNull android.net.Uri, @NonNull android.net.Uri);
method public android.telephony.mbms.DownloadRequest build();
method public static android.telephony.mbms.DownloadRequest.Builder fromDownloadRequest(android.telephony.mbms.DownloadRequest);
method public static android.telephony.mbms.DownloadRequest.Builder fromSerializedRequest(byte[]);
@@ -45165,7 +45287,7 @@
public final class FileInfo implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getMimeType();
+ method public String getMimeType();
method public android.net.Uri getUri();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.mbms.FileInfo> CREATOR;
@@ -45181,7 +45303,7 @@
public class GroupCall implements java.lang.AutoCloseable {
method public void close();
method public long getTmgi();
- method public void updateGroupCall(java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>);
+ method public void updateGroupCall(@NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>);
field public static final int REASON_BY_USER_REQUEST = 1; // 0x1
field public static final int REASON_FREQUENCY_CONFLICT = 3; // 0x3
field public static final int REASON_LEFT_MBMS_BROADCAST_AREA = 6; // 0x6
@@ -45193,10 +45315,10 @@
field public static final int STATE_STOPPED = 1; // 0x1
}
- public abstract interface GroupCallCallback {
- method public abstract void onBroadcastSignalStrengthUpdated(int);
- method public abstract void onError(int, java.lang.String);
- method public abstract void onGroupCallStateChanged(int, int);
+ public interface GroupCallCallback {
+ method public void onBroadcastSignalStrengthUpdated(@IntRange(from=0xffffffff, to=4) int);
+ method public void onError(int, @Nullable String);
+ method public void onGroupCallStateChanged(int, int);
field public static final int SIGNAL_STRENGTH_UNAVAILABLE = -1; // 0xffffffff
}
@@ -45207,7 +45329,7 @@
public class MbmsDownloadSessionCallback {
ctor public MbmsDownloadSessionCallback();
- method public void onError(int, java.lang.String);
+ method public void onError(int, String);
method public void onFileServicesUpdated(java.util.List<android.telephony.mbms.FileServiceInfo>);
method public void onMiddlewareReady();
}
@@ -45253,26 +45375,26 @@
field public static final int ERROR_UNABLE_TO_START_SERVICE = 302; // 0x12e
}
- public abstract interface MbmsGroupCallSessionCallback {
- method public abstract void onAvailableSaisUpdated(java.util.List<java.lang.Integer>, java.util.List<java.util.List<java.lang.Integer>>);
- method public abstract void onError(int, java.lang.String);
- method public abstract void onMiddlewareReady();
- method public abstract void onServiceInterfaceAvailable(java.lang.String, int);
+ public interface MbmsGroupCallSessionCallback {
+ method public void onAvailableSaisUpdated(@NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.util.List<java.lang.Integer>>);
+ method public void onError(int, @Nullable String);
+ method public void onMiddlewareReady();
+ method public void onServiceInterfaceAvailable(@NonNull String, int);
}
public class MbmsStreamingSessionCallback {
ctor public MbmsStreamingSessionCallback();
- method public void onError(int, java.lang.String);
+ method public void onError(int, @Nullable String);
method public void onMiddlewareReady();
method public void onStreamingServicesUpdated(java.util.List<android.telephony.mbms.StreamingServiceInfo>);
}
public class ServiceInfo {
method public java.util.List<java.util.Locale> getLocales();
- method public java.lang.CharSequence getNameForLocale(java.util.Locale);
- method public java.util.Set<java.util.Locale> getNamedContentLocales();
- method public java.lang.String getServiceClassName();
- method public java.lang.String getServiceId();
+ method @NonNull public CharSequence getNameForLocale(@NonNull java.util.Locale);
+ method @NonNull public java.util.Set<java.util.Locale> getNamedContentLocales();
+ method public String getServiceClassName();
+ method public String getServiceId();
method public java.util.Date getSessionEndTime();
method public java.util.Date getSessionStartTime();
}
@@ -45280,7 +45402,7 @@
public class StreamingService implements java.lang.AutoCloseable {
method public void close();
method public android.telephony.mbms.StreamingServiceInfo getInfo();
- method public android.net.Uri getPlaybackUri();
+ method @Nullable public android.net.Uri getPlaybackUri();
field public static final int BROADCAST_METHOD = 1; // 0x1
field public static final int REASON_BY_USER_REQUEST = 1; // 0x1
field public static final int REASON_END_OF_SESSION = 2; // 0x2
@@ -45298,7 +45420,7 @@
public class StreamingServiceCallback {
ctor public StreamingServiceCallback();
method public void onBroadcastSignalStrengthUpdated(int);
- method public void onError(int, java.lang.String);
+ method public void onError(int, @Nullable String);
method public void onMediaDescriptionUpdated();
method public void onStreamMethodUpdated(int);
method public void onStreamStateUpdated(int, int);
@@ -45319,37 +45441,37 @@
method public char charAt(int);
method public void getChars(int, int, char[], int);
method public int length();
- method public static android.text.AlteredCharSequence make(java.lang.CharSequence, char[], int, int);
- method public java.lang.CharSequence subSequence(int, int);
+ method public static android.text.AlteredCharSequence make(CharSequence, char[], int, int);
+ method public CharSequence subSequence(int, int);
}
- public deprecated class AndroidCharacter {
- ctor public AndroidCharacter();
- method public static void getDirectionalities(char[], byte[], int);
- method public static int getEastAsianWidth(char);
- method public static void getEastAsianWidths(char[], int, int, byte[]);
- method public static char getMirror(char);
- method public static boolean mirror(char[], int, int);
- field public static final int EAST_ASIAN_WIDTH_AMBIGUOUS = 1; // 0x1
- field public static final int EAST_ASIAN_WIDTH_FULL_WIDTH = 3; // 0x3
- field public static final int EAST_ASIAN_WIDTH_HALF_WIDTH = 2; // 0x2
- field public static final int EAST_ASIAN_WIDTH_NARROW = 4; // 0x4
- field public static final int EAST_ASIAN_WIDTH_NEUTRAL = 0; // 0x0
- field public static final int EAST_ASIAN_WIDTH_WIDE = 5; // 0x5
+ @Deprecated public class AndroidCharacter {
+ ctor @Deprecated public AndroidCharacter();
+ method @Deprecated public static void getDirectionalities(char[], byte[], int);
+ method @Deprecated public static int getEastAsianWidth(char);
+ method @Deprecated public static void getEastAsianWidths(char[], int, int, byte[]);
+ method @Deprecated public static char getMirror(char);
+ method @Deprecated public static boolean mirror(char[], int, int);
+ field @Deprecated public static final int EAST_ASIAN_WIDTH_AMBIGUOUS = 1; // 0x1
+ field @Deprecated public static final int EAST_ASIAN_WIDTH_FULL_WIDTH = 3; // 0x3
+ field @Deprecated public static final int EAST_ASIAN_WIDTH_HALF_WIDTH = 2; // 0x2
+ field @Deprecated public static final int EAST_ASIAN_WIDTH_NARROW = 4; // 0x4
+ field @Deprecated public static final int EAST_ASIAN_WIDTH_NEUTRAL = 0; // 0x0
+ field @Deprecated public static final int EAST_ASIAN_WIDTH_WIDE = 5; // 0x5
}
public class Annotation implements android.text.ParcelableSpan {
- ctor public Annotation(java.lang.String, java.lang.String);
+ ctor public Annotation(String, String);
ctor public Annotation(android.os.Parcel);
method public int describeContents();
- method public java.lang.String getKey();
+ method public String getKey();
method public int getSpanTypeId();
- method public java.lang.String getValue();
+ method public String getValue();
method public void writeToParcel(android.os.Parcel, int);
}
public class AutoText {
- method public static java.lang.String get(java.lang.CharSequence, int, int, android.view.View);
+ method public static String get(CharSequence, int, int, android.view.View);
method public static int getSize(android.view.View);
}
@@ -45358,17 +45480,17 @@
method public static android.text.BidiFormatter getInstance(boolean);
method public static android.text.BidiFormatter getInstance(java.util.Locale);
method public boolean getStereoReset();
- method public boolean isRtl(java.lang.String);
- method public boolean isRtl(java.lang.CharSequence);
+ method public boolean isRtl(String);
+ method public boolean isRtl(CharSequence);
method public boolean isRtlContext();
- method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic, boolean);
- method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.text.TextDirectionHeuristic, boolean);
- method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic);
- method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.text.TextDirectionHeuristic);
- method public java.lang.String unicodeWrap(java.lang.String, boolean);
- method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, boolean);
- method public java.lang.String unicodeWrap(java.lang.String);
- method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence);
+ method @Nullable public String unicodeWrap(@Nullable String, android.text.TextDirectionHeuristic, boolean);
+ method @Nullable public CharSequence unicodeWrap(@Nullable CharSequence, android.text.TextDirectionHeuristic, boolean);
+ method public String unicodeWrap(String, android.text.TextDirectionHeuristic);
+ method public CharSequence unicodeWrap(CharSequence, android.text.TextDirectionHeuristic);
+ method public String unicodeWrap(String, boolean);
+ method public CharSequence unicodeWrap(CharSequence, boolean);
+ method public String unicodeWrap(String);
+ method public CharSequence unicodeWrap(CharSequence);
}
public static final class BidiFormatter.Builder {
@@ -45381,8 +45503,8 @@
}
public class BoringLayout extends android.text.Layout implements android.text.TextUtils.EllipsizeCallback {
- ctor public BoringLayout(java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
- ctor public BoringLayout(java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
+ ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
+ ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
method public void ellipsized(int, int);
method public int getBottomPadding();
method public int getEllipsisCount(int);
@@ -45395,12 +45517,12 @@
method public int getLineTop(int);
method public int getParagraphDirection(int);
method public int getTopPadding();
- method public static android.text.BoringLayout.Metrics isBoring(java.lang.CharSequence, android.text.TextPaint);
- method public static android.text.BoringLayout.Metrics isBoring(java.lang.CharSequence, android.text.TextPaint, android.text.BoringLayout.Metrics);
- method public static android.text.BoringLayout make(java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
- method public static android.text.BoringLayout make(java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
- method public android.text.BoringLayout replaceOrMake(java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
- method public android.text.BoringLayout replaceOrMake(java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
+ method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint);
+ method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint, android.text.BoringLayout.Metrics);
+ method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
+ method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
+ method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
+ method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
}
public static class BoringLayout.Metrics extends android.graphics.Paint.FontMetricsInt {
@@ -45408,17 +45530,17 @@
field public int width;
}
- public abstract deprecated class ClipboardManager {
- ctor public ClipboardManager();
- method public abstract java.lang.CharSequence getText();
- method public abstract boolean hasText();
- method public abstract void setText(java.lang.CharSequence);
+ @Deprecated public abstract class ClipboardManager {
+ ctor @Deprecated public ClipboardManager();
+ method @Deprecated public abstract CharSequence getText();
+ method @Deprecated public abstract boolean hasText();
+ method @Deprecated public abstract void setText(CharSequence);
}
public class DynamicLayout extends android.text.Layout {
- ctor public deprecated DynamicLayout(java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
- ctor public deprecated DynamicLayout(java.lang.CharSequence, java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
- ctor public deprecated DynamicLayout(java.lang.CharSequence, java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean, android.text.TextUtils.TruncateAt, int);
+ ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean);
+ ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean);
+ ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean, @Nullable android.text.TextUtils.TruncateAt, @IntRange(from=0) int);
method public int getBottomPadding();
method public int getEllipsisCount(int);
method public int getEllipsisStart(int);
@@ -45433,54 +45555,54 @@
}
public static final class DynamicLayout.Builder {
- method public android.text.DynamicLayout build();
- method public static android.text.DynamicLayout.Builder obtain(java.lang.CharSequence, android.text.TextPaint, int);
- method public android.text.DynamicLayout.Builder setAlignment(android.text.Layout.Alignment);
- method public android.text.DynamicLayout.Builder setBreakStrategy(int);
- method public android.text.DynamicLayout.Builder setDisplayText(java.lang.CharSequence);
- method public android.text.DynamicLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt);
- method public android.text.DynamicLayout.Builder setEllipsizedWidth(int);
- method public android.text.DynamicLayout.Builder setHyphenationFrequency(int);
- method public android.text.DynamicLayout.Builder setIncludePad(boolean);
- method public android.text.DynamicLayout.Builder setJustificationMode(int);
- method public android.text.DynamicLayout.Builder setLineSpacing(float, float);
- method public android.text.DynamicLayout.Builder setTextDirection(android.text.TextDirectionHeuristic);
- method public android.text.DynamicLayout.Builder setUseLineSpacingFromFallbacks(boolean);
+ method @NonNull public android.text.DynamicLayout build();
+ method @NonNull public static android.text.DynamicLayout.Builder obtain(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int);
+ method @NonNull public android.text.DynamicLayout.Builder setAlignment(@NonNull android.text.Layout.Alignment);
+ method @NonNull public android.text.DynamicLayout.Builder setBreakStrategy(int);
+ method @NonNull public android.text.DynamicLayout.Builder setDisplayText(@NonNull CharSequence);
+ method public android.text.DynamicLayout.Builder setEllipsize(@Nullable android.text.TextUtils.TruncateAt);
+ method @NonNull public android.text.DynamicLayout.Builder setEllipsizedWidth(@IntRange(from=0) int);
+ method @NonNull public android.text.DynamicLayout.Builder setHyphenationFrequency(int);
+ method @NonNull public android.text.DynamicLayout.Builder setIncludePad(boolean);
+ method @NonNull public android.text.DynamicLayout.Builder setJustificationMode(int);
+ method @NonNull public android.text.DynamicLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
+ method @NonNull public android.text.DynamicLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
+ method @NonNull public android.text.DynamicLayout.Builder setUseLineSpacingFromFallbacks(boolean);
}
- public abstract interface Editable implements java.lang.Appendable java.lang.CharSequence android.text.GetChars android.text.Spannable {
- method public abstract android.text.Editable append(java.lang.CharSequence);
- method public abstract android.text.Editable append(java.lang.CharSequence, int, int);
- method public abstract android.text.Editable append(char);
- method public abstract void clear();
- method public abstract void clearSpans();
- method public abstract android.text.Editable delete(int, int);
- method public abstract android.text.InputFilter[] getFilters();
- method public abstract android.text.Editable insert(int, java.lang.CharSequence, int, int);
- method public abstract android.text.Editable insert(int, java.lang.CharSequence);
- method public abstract android.text.Editable replace(int, int, java.lang.CharSequence, int, int);
- method public abstract android.text.Editable replace(int, int, java.lang.CharSequence);
- method public abstract void setFilters(android.text.InputFilter[]);
+ public interface Editable extends java.lang.CharSequence java.lang.Appendable android.text.GetChars android.text.Spannable {
+ method public android.text.Editable append(CharSequence);
+ method public android.text.Editable append(CharSequence, int, int);
+ method public android.text.Editable append(char);
+ method public void clear();
+ method public void clearSpans();
+ method public android.text.Editable delete(int, int);
+ method public android.text.InputFilter[] getFilters();
+ method public android.text.Editable insert(int, CharSequence, int, int);
+ method public android.text.Editable insert(int, CharSequence);
+ method public android.text.Editable replace(int, int, CharSequence, int, int);
+ method public android.text.Editable replace(int, int, CharSequence);
+ method public void setFilters(android.text.InputFilter[]);
}
public static class Editable.Factory {
ctor public Editable.Factory();
method public static android.text.Editable.Factory getInstance();
- method public android.text.Editable newEditable(java.lang.CharSequence);
+ method public android.text.Editable newEditable(CharSequence);
}
- public abstract interface GetChars implements java.lang.CharSequence {
- method public abstract void getChars(int, int, char[], int);
+ public interface GetChars extends java.lang.CharSequence {
+ method public void getChars(int, int, char[], int);
}
public class Html {
- method public static java.lang.String escapeHtml(java.lang.CharSequence);
- method public static deprecated android.text.Spanned fromHtml(java.lang.String);
- method public static android.text.Spanned fromHtml(java.lang.String, int);
- method public static deprecated android.text.Spanned fromHtml(java.lang.String, android.text.Html.ImageGetter, android.text.Html.TagHandler);
- method public static android.text.Spanned fromHtml(java.lang.String, int, android.text.Html.ImageGetter, android.text.Html.TagHandler);
- method public static deprecated java.lang.String toHtml(android.text.Spanned);
- method public static java.lang.String toHtml(android.text.Spanned, int);
+ method public static String escapeHtml(CharSequence);
+ method @Deprecated public static android.text.Spanned fromHtml(String);
+ method public static android.text.Spanned fromHtml(String, int);
+ method @Deprecated public static android.text.Spanned fromHtml(String, android.text.Html.ImageGetter, android.text.Html.TagHandler);
+ method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter, android.text.Html.TagHandler);
+ method @Deprecated public static String toHtml(android.text.Spanned);
+ method public static String toHtml(android.text.Spanned, int);
field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
@@ -45494,12 +45616,12 @@
field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
}
- public static abstract interface Html.ImageGetter {
- method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String);
+ public static interface Html.ImageGetter {
+ method public android.graphics.drawable.Drawable getDrawable(String);
}
- public static abstract interface Html.TagHandler {
- method public abstract void handleTag(boolean, java.lang.String, android.text.Editable, org.xml.sax.XMLReader);
+ public static interface Html.TagHandler {
+ method public void handleTag(boolean, String, android.text.Editable, org.xml.sax.XMLReader);
}
public class Hyphenator {
@@ -45518,23 +45640,23 @@
field public static final int START_HYPHEN_EDIT_NO_EDIT = 0; // 0x0
}
- public abstract interface InputFilter {
- method public abstract java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int);
+ public interface InputFilter {
+ method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
}
public static class InputFilter.AllCaps implements android.text.InputFilter {
ctor public InputFilter.AllCaps();
- ctor public InputFilter.AllCaps(java.util.Locale);
- method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int);
+ ctor public InputFilter.AllCaps(@NonNull java.util.Locale);
+ method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
}
public static class InputFilter.LengthFilter implements android.text.InputFilter {
ctor public InputFilter.LengthFilter(int);
- method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int);
+ method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
method public int getMax();
}
- public abstract interface InputType {
+ public interface InputType {
field public static final int TYPE_CLASS_DATETIME = 4; // 0x4
field public static final int TYPE_CLASS_NUMBER = 2; // 0x2
field public static final int TYPE_CLASS_PHONE = 3; // 0x3
@@ -45576,14 +45698,14 @@
}
public abstract class Layout {
- ctor protected Layout(java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float);
+ ctor protected Layout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float);
method public void draw(android.graphics.Canvas);
method public void draw(android.graphics.Canvas, android.graphics.Path, android.graphics.Paint, int);
method public final android.text.Layout.Alignment getAlignment();
method public abstract int getBottomPadding();
- method public void getCursorPath(int, android.graphics.Path, java.lang.CharSequence);
- method public static float getDesiredWidth(java.lang.CharSequence, android.text.TextPaint);
- method public static float getDesiredWidth(java.lang.CharSequence, int, int, android.text.TextPaint);
+ method public void getCursorPath(int, android.graphics.Path, CharSequence);
+ method public static float getDesiredWidth(CharSequence, android.text.TextPaint);
+ method public static float getDesiredWidth(CharSequence, int, int, android.text.TextPaint);
method public abstract int getEllipsisCount(int);
method public abstract int getEllipsisStart(int);
method public int getEllipsizedWidth();
@@ -45619,7 +45741,7 @@
method public void getSelectionPath(int, int, android.graphics.Path);
method public final float getSpacingAdd();
method public final float getSpacingMultiplier();
- method public final java.lang.CharSequence getText();
+ method public final CharSequence getText();
method public abstract int getTopPadding();
method public final int getWidth();
method public final void increaseWidthTo(int);
@@ -45639,9 +45761,7 @@
field public static final int JUSTIFICATION_MODE_NONE = 0; // 0x0
}
- public static final class Layout.Alignment extends java.lang.Enum {
- method public static android.text.Layout.Alignment valueOf(java.lang.String);
- method public static final android.text.Layout.Alignment[] values();
+ public enum Layout.Alignment {
enum_constant public static final android.text.Layout.Alignment ALIGN_CENTER;
enum_constant public static final android.text.Layout.Alignment ALIGN_NORMAL;
enum_constant public static final android.text.Layout.Alignment ALIGN_OPPOSITE;
@@ -45651,7 +45771,7 @@
}
public abstract class LoginFilter implements android.text.InputFilter {
- method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int);
+ method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
method public abstract boolean isAllowed(char);
method public void onInvalidCharacter(char);
method public void onStart();
@@ -45676,51 +45796,51 @@
method public boolean isAllowed(char);
}
- public abstract interface NoCopySpan {
+ public interface NoCopySpan {
}
public static class NoCopySpan.Concrete implements android.text.NoCopySpan {
ctor public NoCopySpan.Concrete();
}
- public abstract interface ParcelableSpan implements android.os.Parcelable {
- method public abstract int getSpanTypeId();
+ public interface ParcelableSpan extends android.os.Parcelable {
+ method public int getSpanTypeId();
}
public class PrecomputedText implements android.text.Spannable {
method public char charAt(int);
- method public static android.text.PrecomputedText create(java.lang.CharSequence, android.text.PrecomputedText.Params);
- method public void getBounds(int, int, android.graphics.Rect);
- method public int getParagraphCount();
- method public int getParagraphEnd(int);
- method public int getParagraphStart(int);
- method public android.text.PrecomputedText.Params getParams();
- method public int getSpanEnd(java.lang.Object);
- method public int getSpanFlags(java.lang.Object);
- method public int getSpanStart(java.lang.Object);
- method public <T> T[] getSpans(int, int, java.lang.Class<T>);
- method public float getWidth(int, int);
+ method public static android.text.PrecomputedText create(@NonNull CharSequence, @NonNull android.text.PrecomputedText.Params);
+ method public void getBounds(@IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.graphics.Rect);
+ method @IntRange(from=0) public int getParagraphCount();
+ method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
+ method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
+ method @NonNull public android.text.PrecomputedText.Params getParams();
+ method public int getSpanEnd(Object);
+ method public int getSpanFlags(Object);
+ method public int getSpanStart(Object);
+ method public <T> T[] getSpans(int, int, Class<T>);
+ method @FloatRange(from=0) public float getWidth(@IntRange(from=0) int, @IntRange(from=0) int);
method public int length();
- method public int nextSpanTransition(int, int, java.lang.Class);
- method public void removeSpan(java.lang.Object);
- method public void setSpan(java.lang.Object, int, int, int);
- method public java.lang.CharSequence subSequence(int, int);
+ method public int nextSpanTransition(int, int, Class);
+ method public void removeSpan(Object);
+ method public void setSpan(Object, int, int, int);
+ method public CharSequence subSequence(int, int);
}
public static final class PrecomputedText.Params {
method public int getBreakStrategy();
method public int getHyphenationFrequency();
- method public android.text.TextDirectionHeuristic getTextDirection();
- method public android.text.TextPaint getTextPaint();
+ method @NonNull public android.text.TextDirectionHeuristic getTextDirection();
+ method @NonNull public android.text.TextPaint getTextPaint();
}
public static class PrecomputedText.Params.Builder {
- ctor public PrecomputedText.Params.Builder(android.text.TextPaint);
- ctor public PrecomputedText.Params.Builder(android.text.PrecomputedText.Params);
- method public android.text.PrecomputedText.Params build();
+ ctor public PrecomputedText.Params.Builder(@NonNull android.text.TextPaint);
+ ctor public PrecomputedText.Params.Builder(@NonNull android.text.PrecomputedText.Params);
+ method @NonNull public android.text.PrecomputedText.Params build();
method public android.text.PrecomputedText.Params.Builder setBreakStrategy(int);
method public android.text.PrecomputedText.Params.Builder setHyphenationFrequency(int);
- method public android.text.PrecomputedText.Params.Builder setTextDirection(android.text.TextDirectionHeuristic);
+ method public android.text.PrecomputedText.Params.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
}
public class Selection {
@@ -45731,8 +45851,8 @@
method public static boolean extendToLeftEdge(android.text.Spannable, android.text.Layout);
method public static boolean extendToRightEdge(android.text.Spannable, android.text.Layout);
method public static boolean extendUp(android.text.Spannable, android.text.Layout);
- method public static final int getSelectionEnd(java.lang.CharSequence);
- method public static final int getSelectionStart(java.lang.CharSequence);
+ method public static final int getSelectionEnd(CharSequence);
+ method public static final int getSelectionStart(CharSequence);
method public static boolean moveDown(android.text.Spannable, android.text.Layout);
method public static boolean moveLeft(android.text.Spannable, android.text.Layout);
method public static boolean moveRight(android.text.Spannable, android.text.Layout);
@@ -45743,42 +45863,51 @@
method public static final void selectAll(android.text.Spannable);
method public static void setSelection(android.text.Spannable, int, int);
method public static final void setSelection(android.text.Spannable, int);
- field public static final java.lang.Object SELECTION_END;
- field public static final java.lang.Object SELECTION_START;
+ field public static final Object SELECTION_END;
+ field public static final Object SELECTION_START;
}
- public abstract interface SpanWatcher implements android.text.NoCopySpan {
- method public abstract void onSpanAdded(android.text.Spannable, java.lang.Object, int, int);
- method public abstract void onSpanChanged(android.text.Spannable, java.lang.Object, int, int, int, int);
- method public abstract void onSpanRemoved(android.text.Spannable, java.lang.Object, int, int);
+ public interface SpanWatcher extends android.text.NoCopySpan {
+ method public void onSpanAdded(android.text.Spannable, Object, int, int);
+ method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
+ method public void onSpanRemoved(android.text.Spannable, Object, int, int);
}
- public abstract interface Spannable implements android.text.Spanned {
- method public abstract void removeSpan(java.lang.Object);
- method public abstract void setSpan(java.lang.Object, int, int, int);
+ public interface Spannable extends android.text.Spanned {
+ method public void removeSpan(Object);
+ method public void setSpan(Object, int, int, int);
}
public static class Spannable.Factory {
ctor public Spannable.Factory();
method public static android.text.Spannable.Factory getInstance();
- method public android.text.Spannable newSpannable(java.lang.CharSequence);
+ method public android.text.Spannable newSpannable(CharSequence);
}
public class SpannableString implements java.lang.CharSequence android.text.GetChars android.text.Spannable {
- ctor public SpannableString(java.lang.CharSequence);
- method public void removeSpan(java.lang.Object);
- method public void setSpan(java.lang.Object, int, int, int);
- method public final java.lang.CharSequence subSequence(int, int);
- method public static android.text.SpannableString valueOf(java.lang.CharSequence);
+ ctor public SpannableString(CharSequence);
+ method public final char charAt(int);
+ method public final void getChars(int, int, char[], int);
+ method public int getSpanEnd(Object);
+ method public int getSpanFlags(Object);
+ method public int getSpanStart(Object);
+ method public <T> T[] getSpans(int, int, Class<T>);
+ method public final int length();
+ method public int nextSpanTransition(int, int, Class);
+ method public void removeSpan(Object);
+ method public void setSpan(Object, int, int, int);
+ method public final CharSequence subSequence(int, int);
+ method public final String toString();
+ method public static android.text.SpannableString valueOf(CharSequence);
}
public class SpannableStringBuilder implements java.lang.Appendable java.lang.CharSequence android.text.Editable android.text.GetChars android.text.Spannable {
ctor public SpannableStringBuilder();
- ctor public SpannableStringBuilder(java.lang.CharSequence);
- ctor public SpannableStringBuilder(java.lang.CharSequence, int, int);
- method public android.text.SpannableStringBuilder append(java.lang.CharSequence);
- method public android.text.SpannableStringBuilder append(java.lang.CharSequence, java.lang.Object, int);
- method public android.text.SpannableStringBuilder append(java.lang.CharSequence, int, int);
+ ctor public SpannableStringBuilder(CharSequence);
+ ctor public SpannableStringBuilder(CharSequence, int, int);
+ method public android.text.SpannableStringBuilder append(CharSequence);
+ method public android.text.SpannableStringBuilder append(CharSequence, Object, int);
+ method public android.text.SpannableStringBuilder append(CharSequence, int, int);
method public android.text.SpannableStringBuilder append(char);
method public char charAt(int);
method public void clear();
@@ -45786,31 +45915,31 @@
method public android.text.SpannableStringBuilder delete(int, int);
method public void getChars(int, int, char[], int);
method public android.text.InputFilter[] getFilters();
- method public int getSpanEnd(java.lang.Object);
- method public int getSpanFlags(java.lang.Object);
- method public int getSpanStart(java.lang.Object);
- method public <T> T[] getSpans(int, int, java.lang.Class<T>);
- method public deprecated int getTextRunCursor(int, int, int, int, int, android.graphics.Paint);
+ method public int getSpanEnd(Object);
+ method public int getSpanFlags(Object);
+ method public int getSpanStart(Object);
+ method public <T> T[] getSpans(int, int, @Nullable Class<T>);
+ method @Deprecated public int getTextRunCursor(int, int, int, int, int, android.graphics.Paint);
method public int getTextWatcherDepth();
- method public android.text.SpannableStringBuilder insert(int, java.lang.CharSequence, int, int);
- method public android.text.SpannableStringBuilder insert(int, java.lang.CharSequence);
+ method public android.text.SpannableStringBuilder insert(int, CharSequence, int, int);
+ method public android.text.SpannableStringBuilder insert(int, CharSequence);
method public int length();
- method public int nextSpanTransition(int, int, java.lang.Class);
- method public void removeSpan(java.lang.Object);
- method public android.text.SpannableStringBuilder replace(int, int, java.lang.CharSequence);
- method public android.text.SpannableStringBuilder replace(int, int, java.lang.CharSequence, int, int);
+ method public int nextSpanTransition(int, int, Class);
+ method public void removeSpan(Object);
+ method public android.text.SpannableStringBuilder replace(int, int, CharSequence);
+ method public android.text.SpannableStringBuilder replace(int, int, CharSequence, int, int);
method public void setFilters(android.text.InputFilter[]);
- method public void setSpan(java.lang.Object, int, int, int);
- method public java.lang.CharSequence subSequence(int, int);
- method public static android.text.SpannableStringBuilder valueOf(java.lang.CharSequence);
+ method public void setSpan(Object, int, int, int);
+ method public CharSequence subSequence(int, int);
+ method public static android.text.SpannableStringBuilder valueOf(CharSequence);
}
- public abstract interface Spanned implements java.lang.CharSequence {
- method public abstract int getSpanEnd(java.lang.Object);
- method public abstract int getSpanFlags(java.lang.Object);
- method public abstract int getSpanStart(java.lang.Object);
- method public abstract <T> T[] getSpans(int, int, java.lang.Class<T>);
- method public abstract int nextSpanTransition(int, int, java.lang.Class);
+ public interface Spanned extends java.lang.CharSequence {
+ method public int getSpanEnd(Object);
+ method public int getSpanFlags(Object);
+ method public int getSpanStart(Object);
+ method public <T> T[] getSpans(int, int, Class<T>);
+ method public int nextSpanTransition(int, int, Class);
field public static final int SPAN_COMPOSING = 256; // 0x100
field public static final int SPAN_EXCLUSIVE_EXCLUSIVE = 33; // 0x21
field public static final int SPAN_EXCLUSIVE_INCLUSIVE = 34; // 0x22
@@ -45830,15 +45959,23 @@
}
public final class SpannedString implements java.lang.CharSequence android.text.GetChars android.text.Spanned {
- ctor public SpannedString(java.lang.CharSequence);
- method public java.lang.CharSequence subSequence(int, int);
- method public static android.text.SpannedString valueOf(java.lang.CharSequence);
+ ctor public SpannedString(CharSequence);
+ method public final char charAt(int);
+ method public final void getChars(int, int, char[], int);
+ method public int getSpanEnd(Object);
+ method public int getSpanFlags(Object);
+ method public int getSpanStart(Object);
+ method public <T> T[] getSpans(int, int, Class<T>);
+ method public final int length();
+ method public int nextSpanTransition(int, int, Class);
+ method public CharSequence subSequence(int, int);
+ method public static android.text.SpannedString valueOf(CharSequence);
}
public class StaticLayout extends android.text.Layout {
- ctor public deprecated StaticLayout(java.lang.CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
- ctor public deprecated StaticLayout(java.lang.CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
- ctor public deprecated StaticLayout(java.lang.CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean, android.text.TextUtils.TruncateAt, int);
+ ctor @Deprecated public StaticLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
+ ctor @Deprecated public StaticLayout(CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
+ ctor @Deprecated public StaticLayout(CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean, android.text.TextUtils.TruncateAt, int);
method public int getBottomPadding();
method public int getEllipsisCount(int);
method public int getEllipsisStart(int);
@@ -45853,26 +45990,26 @@
}
public static final class StaticLayout.Builder {
- method public android.text.StaticLayout build();
- method public static android.text.StaticLayout.Builder obtain(java.lang.CharSequence, int, int, android.text.TextPaint, int);
- method public android.text.StaticLayout.Builder setAlignment(android.text.Layout.Alignment);
- method public android.text.StaticLayout.Builder setBreakStrategy(int);
- method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt);
- method public android.text.StaticLayout.Builder setEllipsizedWidth(int);
- method public android.text.StaticLayout.Builder setHyphenationFrequency(int);
- method public android.text.StaticLayout.Builder setIncludePad(boolean);
- method public android.text.StaticLayout.Builder setIndents(int[], int[]);
- method public android.text.StaticLayout.Builder setJustificationMode(int);
- method public android.text.StaticLayout.Builder setLineSpacing(float, float);
- method public android.text.StaticLayout.Builder setMaxLines(int);
- method public android.text.StaticLayout.Builder setText(java.lang.CharSequence);
- method public android.text.StaticLayout.Builder setTextDirection(android.text.TextDirectionHeuristic);
- method public android.text.StaticLayout.Builder setUseLineSpacingFromFallbacks(boolean);
+ method @NonNull public android.text.StaticLayout build();
+ method @NonNull public static android.text.StaticLayout.Builder obtain(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.text.TextPaint, @IntRange(from=0) int);
+ method @NonNull public android.text.StaticLayout.Builder setAlignment(@NonNull android.text.Layout.Alignment);
+ method @NonNull public android.text.StaticLayout.Builder setBreakStrategy(int);
+ method @NonNull public android.text.StaticLayout.Builder setEllipsize(@Nullable android.text.TextUtils.TruncateAt);
+ method @NonNull public android.text.StaticLayout.Builder setEllipsizedWidth(@IntRange(from=0) int);
+ method @NonNull public android.text.StaticLayout.Builder setHyphenationFrequency(int);
+ method @NonNull public android.text.StaticLayout.Builder setIncludePad(boolean);
+ method @NonNull public android.text.StaticLayout.Builder setIndents(@Nullable int[], @Nullable int[]);
+ method @NonNull public android.text.StaticLayout.Builder setJustificationMode(int);
+ method @NonNull public android.text.StaticLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
+ method @NonNull public android.text.StaticLayout.Builder setMaxLines(@IntRange(from=0) int);
+ method public android.text.StaticLayout.Builder setText(CharSequence);
+ method @NonNull public android.text.StaticLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
+ method @NonNull public android.text.StaticLayout.Builder setUseLineSpacingFromFallbacks(boolean);
}
- public abstract interface TextDirectionHeuristic {
- method public abstract boolean isRtl(char[], int, int);
- method public abstract boolean isRtl(java.lang.CharSequence, int, int);
+ public interface TextDirectionHeuristic {
+ method public boolean isRtl(char[], int, int);
+ method public boolean isRtl(CharSequence, int, int);
}
public class TextDirectionHeuristics {
@@ -45891,55 +46028,55 @@
ctor public TextPaint(android.graphics.Paint);
method public void set(android.text.TextPaint);
field public int baselineShift;
- field public int bgColor;
+ field @ColorInt public int bgColor;
field public float density;
field public int[] drawableState;
- field public int linkColor;
- field public int underlineColor;
- field public float underlineThickness;
+ field @ColorInt public int linkColor;
+ field @ColorInt public int underlineColor;
+ field @Px public float underlineThickness;
}
public class TextUtils {
- method public static deprecated java.lang.CharSequence commaEllipsize(java.lang.CharSequence, android.text.TextPaint, float, java.lang.String, java.lang.String);
- method public static java.lang.CharSequence concat(java.lang.CharSequence...);
- method public static void copySpansFrom(android.text.Spanned, int, int, java.lang.Class, android.text.Spannable, int);
- method public static void dumpSpans(java.lang.CharSequence, android.util.Printer, java.lang.String);
- method public static java.lang.CharSequence ellipsize(java.lang.CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt);
- method public static java.lang.CharSequence ellipsize(java.lang.CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt, boolean, android.text.TextUtils.EllipsizeCallback);
- method public static boolean equals(java.lang.CharSequence, java.lang.CharSequence);
- method public static java.lang.CharSequence expandTemplate(java.lang.CharSequence, java.lang.CharSequence...);
- method public static int getCapsMode(java.lang.CharSequence, int, int);
- method public static void getChars(java.lang.CharSequence, int, int, char[], int);
+ method @Deprecated public static CharSequence commaEllipsize(CharSequence, android.text.TextPaint, float, String, String);
+ method public static CharSequence concat(java.lang.CharSequence...);
+ method public static void copySpansFrom(android.text.Spanned, int, int, Class, android.text.Spannable, int);
+ method public static void dumpSpans(CharSequence, android.util.Printer, String);
+ method public static CharSequence ellipsize(CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt);
+ method public static CharSequence ellipsize(CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt, boolean, @Nullable android.text.TextUtils.EllipsizeCallback);
+ method public static boolean equals(CharSequence, CharSequence);
+ method public static CharSequence expandTemplate(CharSequence, java.lang.CharSequence...);
+ method public static int getCapsMode(CharSequence, int, int);
+ method public static void getChars(CharSequence, int, int, char[], int);
method public static int getLayoutDirectionFromLocale(java.util.Locale);
- method public static int getOffsetAfter(java.lang.CharSequence, int);
- method public static int getOffsetBefore(java.lang.CharSequence, int);
- method public static deprecated java.lang.CharSequence getReverse(java.lang.CharSequence, int, int);
- method public static int getTrimmedLength(java.lang.CharSequence);
- method public static java.lang.String htmlEncode(java.lang.String);
- method public static int indexOf(java.lang.CharSequence, char);
- method public static int indexOf(java.lang.CharSequence, char, int);
- method public static int indexOf(java.lang.CharSequence, char, int, int);
- method public static int indexOf(java.lang.CharSequence, java.lang.CharSequence);
- method public static int indexOf(java.lang.CharSequence, java.lang.CharSequence, int);
- method public static int indexOf(java.lang.CharSequence, java.lang.CharSequence, int, int);
- method public static boolean isDigitsOnly(java.lang.CharSequence);
- method public static boolean isEmpty(java.lang.CharSequence);
- method public static boolean isGraphic(java.lang.CharSequence);
- method public static deprecated boolean isGraphic(char);
- method public static java.lang.String join(java.lang.CharSequence, java.lang.Object[]);
- method public static java.lang.String join(java.lang.CharSequence, java.lang.Iterable);
- method public static int lastIndexOf(java.lang.CharSequence, char);
- method public static int lastIndexOf(java.lang.CharSequence, char, int);
- method public static int lastIndexOf(java.lang.CharSequence, char, int, int);
- method public static java.lang.CharSequence listEllipsize(android.content.Context, java.util.List<java.lang.CharSequence>, java.lang.String, android.text.TextPaint, float, int);
- method public static java.lang.CharSequence makeSafeForPresentation(java.lang.String, int, float, int);
- method public static boolean regionMatches(java.lang.CharSequence, int, java.lang.CharSequence, int, int);
- method public static java.lang.CharSequence replace(java.lang.CharSequence, java.lang.String[], java.lang.CharSequence[]);
- method public static java.lang.String[] split(java.lang.String, java.lang.String);
- method public static java.lang.String[] split(java.lang.String, java.util.regex.Pattern);
- method public static java.lang.CharSequence stringOrSpannedString(java.lang.CharSequence);
- method public static java.lang.String substring(java.lang.CharSequence, int, int);
- method public static void writeToParcel(java.lang.CharSequence, android.os.Parcel, int);
+ method public static int getOffsetAfter(CharSequence, int);
+ method public static int getOffsetBefore(CharSequence, int);
+ method @Deprecated public static CharSequence getReverse(CharSequence, int, int);
+ method public static int getTrimmedLength(CharSequence);
+ method public static String htmlEncode(String);
+ method public static int indexOf(CharSequence, char);
+ method public static int indexOf(CharSequence, char, int);
+ method public static int indexOf(CharSequence, char, int, int);
+ method public static int indexOf(CharSequence, CharSequence);
+ method public static int indexOf(CharSequence, CharSequence, int);
+ method public static int indexOf(CharSequence, CharSequence, int, int);
+ method public static boolean isDigitsOnly(CharSequence);
+ method public static boolean isEmpty(@Nullable CharSequence);
+ method public static boolean isGraphic(CharSequence);
+ method @Deprecated public static boolean isGraphic(char);
+ method public static String join(@NonNull CharSequence, @NonNull Object[]);
+ method public static String join(@NonNull CharSequence, @NonNull Iterable);
+ method public static int lastIndexOf(CharSequence, char);
+ method public static int lastIndexOf(CharSequence, char, int);
+ method public static int lastIndexOf(CharSequence, char, int, int);
+ method public static CharSequence listEllipsize(@Nullable android.content.Context, @Nullable java.util.List<java.lang.CharSequence>, @NonNull String, @NonNull android.text.TextPaint, @FloatRange(from=0.0, fromInclusive=false) float, @PluralsRes int);
+ method @NonNull public static CharSequence makeSafeForPresentation(@NonNull String, @IntRange(from=0) int, @FloatRange(from=0) float, int);
+ method public static boolean regionMatches(CharSequence, int, CharSequence, int, int);
+ method public static CharSequence replace(CharSequence, String[], CharSequence[]);
+ method public static String[] split(String, String);
+ method public static String[] split(String, java.util.regex.Pattern);
+ method public static CharSequence stringOrSpannedString(CharSequence);
+ method public static String substring(CharSequence, int, int);
+ method public static void writeToParcel(@Nullable CharSequence, @NonNull android.os.Parcel, int);
field public static final int CAP_MODE_CHARACTERS = 4096; // 0x1000
field public static final int CAP_MODE_SENTENCES = 16384; // 0x4000
field public static final int CAP_MODE_WORDS = 8192; // 0x2000
@@ -45949,35 +46086,33 @@
field public static final int SAFE_STRING_FLAG_TRIM = 1; // 0x1
}
- public static abstract interface TextUtils.EllipsizeCallback {
- method public abstract void ellipsized(int, int);
+ public static interface TextUtils.EllipsizeCallback {
+ method public void ellipsized(int, int);
}
- public static class TextUtils.SimpleStringSplitter implements java.util.Iterator android.text.TextUtils.StringSplitter {
+ public static class TextUtils.SimpleStringSplitter implements java.util.Iterator<java.lang.String> android.text.TextUtils.StringSplitter {
ctor public TextUtils.SimpleStringSplitter(char);
method public boolean hasNext();
method public java.util.Iterator<java.lang.String> iterator();
- method public java.lang.String next();
- method public void setString(java.lang.String);
+ method public String next();
+ method public void setString(String);
}
- public static abstract interface TextUtils.StringSplitter implements java.lang.Iterable {
- method public abstract void setString(java.lang.String);
+ public static interface TextUtils.StringSplitter extends java.lang.Iterable<java.lang.String> {
+ method public void setString(String);
}
- public static final class TextUtils.TruncateAt extends java.lang.Enum {
- method public static android.text.TextUtils.TruncateAt valueOf(java.lang.String);
- method public static final android.text.TextUtils.TruncateAt[] values();
+ public enum TextUtils.TruncateAt {
enum_constant public static final android.text.TextUtils.TruncateAt END;
enum_constant public static final android.text.TextUtils.TruncateAt MARQUEE;
enum_constant public static final android.text.TextUtils.TruncateAt MIDDLE;
enum_constant public static final android.text.TextUtils.TruncateAt START;
}
- public abstract interface TextWatcher implements android.text.NoCopySpan {
- method public abstract void afterTextChanged(android.text.Editable);
- method public abstract void beforeTextChanged(java.lang.CharSequence, int, int, int);
- method public abstract void onTextChanged(java.lang.CharSequence, int, int, int);
+ public interface TextWatcher extends android.text.NoCopySpan {
+ method public void afterTextChanged(android.text.Editable);
+ method public void beforeTextChanged(CharSequence, int, int, int);
+ method public void onTextChanged(CharSequence, int, int, int);
}
}
@@ -45986,10 +46121,10 @@
public class DateFormat {
ctor public DateFormat();
- method public static java.lang.CharSequence format(java.lang.CharSequence, long);
- method public static java.lang.CharSequence format(java.lang.CharSequence, java.util.Date);
- method public static java.lang.CharSequence format(java.lang.CharSequence, java.util.Calendar);
- method public static java.lang.String getBestDateTimePattern(java.util.Locale, java.lang.String);
+ method public static CharSequence format(CharSequence, long);
+ method public static CharSequence format(CharSequence, java.util.Date);
+ method public static CharSequence format(CharSequence, java.util.Calendar);
+ method public static String getBestDateTimePattern(java.util.Locale, String);
method public static java.text.DateFormat getDateFormat(android.content.Context);
method public static char[] getDateFormatOrder(android.content.Context);
method public static java.text.DateFormat getLongDateFormat(android.content.Context);
@@ -46000,136 +46135,136 @@
public class DateUtils {
ctor public DateUtils();
- method public static java.lang.String formatDateRange(android.content.Context, long, long, int);
+ method public static String formatDateRange(android.content.Context, long, long, int);
method public static java.util.Formatter formatDateRange(android.content.Context, java.util.Formatter, long, long, int);
- method public static java.util.Formatter formatDateRange(android.content.Context, java.util.Formatter, long, long, int, java.lang.String);
- method public static java.lang.String formatDateTime(android.content.Context, long, int);
- method public static java.lang.String formatElapsedTime(long);
- method public static java.lang.String formatElapsedTime(java.lang.StringBuilder, long);
- method public static final java.lang.CharSequence formatSameDayTime(long, long, int, int);
- method public static deprecated java.lang.String getAMPMString(int);
- method public static deprecated java.lang.String getDayOfWeekString(int, int);
- method public static deprecated java.lang.String getMonthString(int, int);
- method public static java.lang.CharSequence getRelativeDateTimeString(android.content.Context, long, long, long, int);
- method public static java.lang.CharSequence getRelativeTimeSpanString(long);
- method public static java.lang.CharSequence getRelativeTimeSpanString(long, long, long);
- method public static java.lang.CharSequence getRelativeTimeSpanString(long, long, long, int);
- method public static java.lang.CharSequence getRelativeTimeSpanString(android.content.Context, long, boolean);
- method public static java.lang.CharSequence getRelativeTimeSpanString(android.content.Context, long);
+ method public static java.util.Formatter formatDateRange(android.content.Context, java.util.Formatter, long, long, int, String);
+ method public static String formatDateTime(android.content.Context, long, int);
+ method public static String formatElapsedTime(long);
+ method public static String formatElapsedTime(StringBuilder, long);
+ method public static final CharSequence formatSameDayTime(long, long, int, int);
+ method @Deprecated public static String getAMPMString(int);
+ method @Deprecated public static String getDayOfWeekString(int, int);
+ method @Deprecated public static String getMonthString(int, int);
+ method public static CharSequence getRelativeDateTimeString(android.content.Context, long, long, long, int);
+ method public static CharSequence getRelativeTimeSpanString(long);
+ method public static CharSequence getRelativeTimeSpanString(long, long, long);
+ method public static CharSequence getRelativeTimeSpanString(long, long, long, int);
+ method public static CharSequence getRelativeTimeSpanString(android.content.Context, long, boolean);
+ method public static CharSequence getRelativeTimeSpanString(android.content.Context, long);
method public static boolean isToday(long);
- field public static final deprecated java.lang.String ABBREV_MONTH_FORMAT = "%b";
- field public static final java.lang.String ABBREV_WEEKDAY_FORMAT = "%a";
+ field @Deprecated public static final String ABBREV_MONTH_FORMAT = "%b";
+ field public static final String ABBREV_WEEKDAY_FORMAT = "%a";
field public static final long DAY_IN_MILLIS = 86400000L; // 0x5265c00L
- field public static final deprecated int FORMAT_12HOUR = 64; // 0x40
- field public static final deprecated int FORMAT_24HOUR = 128; // 0x80
+ field @Deprecated public static final int FORMAT_12HOUR = 64; // 0x40
+ field @Deprecated public static final int FORMAT_24HOUR = 128; // 0x80
field public static final int FORMAT_ABBREV_ALL = 524288; // 0x80000
field public static final int FORMAT_ABBREV_MONTH = 65536; // 0x10000
field public static final int FORMAT_ABBREV_RELATIVE = 262144; // 0x40000
field public static final int FORMAT_ABBREV_TIME = 16384; // 0x4000
field public static final int FORMAT_ABBREV_WEEKDAY = 32768; // 0x8000
- field public static final deprecated int FORMAT_CAP_AMPM = 256; // 0x100
- field public static final deprecated int FORMAT_CAP_MIDNIGHT = 4096; // 0x1000
- field public static final deprecated int FORMAT_CAP_NOON = 1024; // 0x400
- field public static final deprecated int FORMAT_CAP_NOON_MIDNIGHT = 5120; // 0x1400
+ field @Deprecated public static final int FORMAT_CAP_AMPM = 256; // 0x100
+ field @Deprecated public static final int FORMAT_CAP_MIDNIGHT = 4096; // 0x1000
+ field @Deprecated public static final int FORMAT_CAP_NOON = 1024; // 0x400
+ field @Deprecated public static final int FORMAT_CAP_NOON_MIDNIGHT = 5120; // 0x1400
field public static final int FORMAT_NO_MIDNIGHT = 2048; // 0x800
field public static final int FORMAT_NO_MONTH_DAY = 32; // 0x20
field public static final int FORMAT_NO_NOON = 512; // 0x200
- field public static final deprecated int FORMAT_NO_NOON_MIDNIGHT = 2560; // 0xa00
+ field @Deprecated public static final int FORMAT_NO_NOON_MIDNIGHT = 2560; // 0xa00
field public static final int FORMAT_NO_YEAR = 8; // 0x8
field public static final int FORMAT_NUMERIC_DATE = 131072; // 0x20000
field public static final int FORMAT_SHOW_DATE = 16; // 0x10
field public static final int FORMAT_SHOW_TIME = 1; // 0x1
field public static final int FORMAT_SHOW_WEEKDAY = 2; // 0x2
field public static final int FORMAT_SHOW_YEAR = 4; // 0x4
- field public static final deprecated int FORMAT_UTC = 8192; // 0x2000
+ field @Deprecated public static final int FORMAT_UTC = 8192; // 0x2000
field public static final long HOUR_IN_MILLIS = 3600000L; // 0x36ee80L
- field public static final deprecated java.lang.String HOUR_MINUTE_24 = "%H:%M";
- field public static final deprecated int LENGTH_LONG = 10; // 0xa
- field public static final deprecated int LENGTH_MEDIUM = 20; // 0x14
- field public static final deprecated int LENGTH_SHORT = 30; // 0x1e
- field public static final deprecated int LENGTH_SHORTER = 40; // 0x28
- field public static final deprecated int LENGTH_SHORTEST = 50; // 0x32
+ field @Deprecated public static final String HOUR_MINUTE_24 = "%H:%M";
+ field @Deprecated public static final int LENGTH_LONG = 10; // 0xa
+ field @Deprecated public static final int LENGTH_MEDIUM = 20; // 0x14
+ field @Deprecated public static final int LENGTH_SHORT = 30; // 0x1e
+ field @Deprecated public static final int LENGTH_SHORTER = 40; // 0x28
+ field @Deprecated public static final int LENGTH_SHORTEST = 50; // 0x32
field public static final long MINUTE_IN_MILLIS = 60000L; // 0xea60L
- field public static final java.lang.String MONTH_DAY_FORMAT = "%-d";
- field public static final java.lang.String MONTH_FORMAT = "%B";
- field public static final java.lang.String NUMERIC_MONTH_FORMAT = "%m";
+ field public static final String MONTH_DAY_FORMAT = "%-d";
+ field public static final String MONTH_FORMAT = "%B";
+ field public static final String NUMERIC_MONTH_FORMAT = "%m";
field public static final long SECOND_IN_MILLIS = 1000L; // 0x3e8L
- field public static final java.lang.String WEEKDAY_FORMAT = "%A";
+ field public static final String WEEKDAY_FORMAT = "%A";
field public static final long WEEK_IN_MILLIS = 604800000L; // 0x240c8400L
- field public static final java.lang.String YEAR_FORMAT = "%Y";
- field public static final java.lang.String YEAR_FORMAT_TWO_DIGITS = "%g";
+ field public static final String YEAR_FORMAT = "%Y";
+ field public static final String YEAR_FORMAT_TWO_DIGITS = "%g";
field public static final long YEAR_IN_MILLIS = 31449600000L; // 0x7528ad000L
- field public static final deprecated int[] sameMonthTable;
- field public static final deprecated int[] sameYearTable;
+ field @Deprecated public static final int[] sameMonthTable;
+ field @Deprecated public static final int[] sameYearTable;
}
public final class Formatter {
ctor public Formatter();
- method public static java.lang.String formatFileSize(android.content.Context, long);
- method public static deprecated java.lang.String formatIpAddress(int);
- method public static java.lang.String formatShortFileSize(android.content.Context, long);
+ method public static String formatFileSize(@Nullable android.content.Context, long);
+ method @Deprecated public static String formatIpAddress(int);
+ method public static String formatShortFileSize(@Nullable android.content.Context, long);
}
- public deprecated class Time {
- ctor public Time(java.lang.String);
- ctor public Time();
- ctor public Time(android.text.format.Time);
- method public boolean after(android.text.format.Time);
- method public boolean before(android.text.format.Time);
- method public void clear(java.lang.String);
- method public static int compare(android.text.format.Time, android.text.format.Time);
- method public java.lang.String format(java.lang.String);
- method public java.lang.String format2445();
- method public java.lang.String format3339(boolean);
- method public int getActualMaximum(int);
- method public static java.lang.String getCurrentTimezone();
- method public static int getJulianDay(long, long);
- method public static int getJulianMondayFromWeeksSinceEpoch(int);
- method public int getWeekNumber();
- method public static int getWeeksSinceEpochFromJulianDay(int, int);
- method public static boolean isEpoch(android.text.format.Time);
- method public long normalize(boolean);
- method public boolean parse(java.lang.String);
- method public boolean parse3339(java.lang.String);
- method public void set(long);
- method public void set(android.text.format.Time);
- method public void set(int, int, int, int, int, int);
- method public void set(int, int, int);
- method public long setJulianDay(int);
- method public void setToNow();
- method public void switchTimezone(java.lang.String);
- method public long toMillis(boolean);
- field public static final int EPOCH_JULIAN_DAY = 2440588; // 0x253d8c
- field public static final int FRIDAY = 5; // 0x5
- field public static final int HOUR = 3; // 0x3
- field public static final int MINUTE = 2; // 0x2
- field public static final int MONDAY = 1; // 0x1
- field public static final int MONDAY_BEFORE_JULIAN_EPOCH = 2440585; // 0x253d89
- field public static final int MONTH = 5; // 0x5
- field public static final int MONTH_DAY = 4; // 0x4
- field public static final int SATURDAY = 6; // 0x6
- field public static final int SECOND = 1; // 0x1
- field public static final int SUNDAY = 0; // 0x0
- field public static final int THURSDAY = 4; // 0x4
- field public static final java.lang.String TIMEZONE_UTC = "UTC";
- field public static final int TUESDAY = 2; // 0x2
- field public static final int WEDNESDAY = 3; // 0x3
- field public static final int WEEK_DAY = 7; // 0x7
- field public static final int WEEK_NUM = 9; // 0x9
- field public static final int YEAR = 6; // 0x6
- field public static final int YEAR_DAY = 8; // 0x8
- field public boolean allDay;
- field public long gmtoff;
- field public int hour;
- field public int isDst;
- field public int minute;
- field public int month;
- field public int monthDay;
- field public int second;
- field public java.lang.String timezone;
- field public int weekDay;
- field public int year;
- field public int yearDay;
+ @Deprecated public class Time {
+ ctor @Deprecated public Time(String);
+ ctor @Deprecated public Time();
+ ctor @Deprecated public Time(android.text.format.Time);
+ method @Deprecated public boolean after(android.text.format.Time);
+ method @Deprecated public boolean before(android.text.format.Time);
+ method @Deprecated public void clear(String);
+ method @Deprecated public static int compare(android.text.format.Time, android.text.format.Time);
+ method @Deprecated public String format(String);
+ method @Deprecated public String format2445();
+ method @Deprecated public String format3339(boolean);
+ method @Deprecated public int getActualMaximum(int);
+ method @Deprecated public static String getCurrentTimezone();
+ method @Deprecated public static int getJulianDay(long, long);
+ method @Deprecated public static int getJulianMondayFromWeeksSinceEpoch(int);
+ method @Deprecated public int getWeekNumber();
+ method @Deprecated public static int getWeeksSinceEpochFromJulianDay(int, int);
+ method @Deprecated public static boolean isEpoch(android.text.format.Time);
+ method @Deprecated public long normalize(boolean);
+ method @Deprecated public boolean parse(String);
+ method @Deprecated public boolean parse3339(String);
+ method @Deprecated public void set(long);
+ method @Deprecated public void set(android.text.format.Time);
+ method @Deprecated public void set(int, int, int, int, int, int);
+ method @Deprecated public void set(int, int, int);
+ method @Deprecated public long setJulianDay(int);
+ method @Deprecated public void setToNow();
+ method @Deprecated public void switchTimezone(String);
+ method @Deprecated public long toMillis(boolean);
+ field @Deprecated public static final int EPOCH_JULIAN_DAY = 2440588; // 0x253d8c
+ field @Deprecated public static final int FRIDAY = 5; // 0x5
+ field @Deprecated public static final int HOUR = 3; // 0x3
+ field @Deprecated public static final int MINUTE = 2; // 0x2
+ field @Deprecated public static final int MONDAY = 1; // 0x1
+ field @Deprecated public static final int MONDAY_BEFORE_JULIAN_EPOCH = 2440585; // 0x253d89
+ field @Deprecated public static final int MONTH = 5; // 0x5
+ field @Deprecated public static final int MONTH_DAY = 4; // 0x4
+ field @Deprecated public static final int SATURDAY = 6; // 0x6
+ field @Deprecated public static final int SECOND = 1; // 0x1
+ field @Deprecated public static final int SUNDAY = 0; // 0x0
+ field @Deprecated public static final int THURSDAY = 4; // 0x4
+ field @Deprecated public static final String TIMEZONE_UTC = "UTC";
+ field @Deprecated public static final int TUESDAY = 2; // 0x2
+ field @Deprecated public static final int WEDNESDAY = 3; // 0x3
+ field @Deprecated public static final int WEEK_DAY = 7; // 0x7
+ field @Deprecated public static final int WEEK_NUM = 9; // 0x9
+ field @Deprecated public static final int YEAR = 6; // 0x6
+ field @Deprecated public static final int YEAR_DAY = 8; // 0x8
+ field @Deprecated public boolean allDay;
+ field @Deprecated public long gmtoff;
+ field @Deprecated public int hour;
+ field @Deprecated public int isDst;
+ field @Deprecated public int minute;
+ field @Deprecated public int month;
+ field @Deprecated public int monthDay;
+ field @Deprecated public int second;
+ field @Deprecated public String timezone;
+ field @Deprecated public int weekDay;
+ field @Deprecated public int year;
+ field @Deprecated public int yearDay;
}
}
@@ -46176,29 +46311,29 @@
}
public class CharacterPickerDialog extends android.app.Dialog implements android.widget.AdapterView.OnItemClickListener android.view.View.OnClickListener {
- ctor public CharacterPickerDialog(android.content.Context, android.view.View, android.text.Editable, java.lang.String, boolean);
+ ctor public CharacterPickerDialog(android.content.Context, android.view.View, android.text.Editable, String, boolean);
method public void onClick(android.view.View);
method public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
}
public class DateKeyListener extends android.text.method.NumberKeyListener {
- ctor public deprecated DateKeyListener();
- ctor public DateKeyListener(java.util.Locale);
- method protected char[] getAcceptedChars();
+ ctor @Deprecated public DateKeyListener();
+ ctor public DateKeyListener(@Nullable java.util.Locale);
+ method @NonNull protected char[] getAcceptedChars();
method public int getInputType();
- method public static deprecated android.text.method.DateKeyListener getInstance();
- method public static android.text.method.DateKeyListener getInstance(java.util.Locale);
- field public static final deprecated char[] CHARACTERS;
+ method @Deprecated @NonNull public static android.text.method.DateKeyListener getInstance();
+ method @NonNull public static android.text.method.DateKeyListener getInstance(@Nullable java.util.Locale);
+ field @Deprecated public static final char[] CHARACTERS;
}
public class DateTimeKeyListener extends android.text.method.NumberKeyListener {
- ctor public deprecated DateTimeKeyListener();
- ctor public DateTimeKeyListener(java.util.Locale);
- method protected char[] getAcceptedChars();
+ ctor @Deprecated public DateTimeKeyListener();
+ ctor public DateTimeKeyListener(@Nullable java.util.Locale);
+ method @NonNull protected char[] getAcceptedChars();
method public int getInputType();
- method public static deprecated android.text.method.DateTimeKeyListener getInstance();
- method public static android.text.method.DateTimeKeyListener getInstance(java.util.Locale);
- field public static final deprecated char[] CHARACTERS;
+ method @Deprecated @NonNull public static android.text.method.DateTimeKeyListener getInstance();
+ method @NonNull public static android.text.method.DateTimeKeyListener getInstance(@Nullable java.util.Locale);
+ field @Deprecated public static final char[] CHARACTERS;
}
public class DialerKeyListener extends android.text.method.NumberKeyListener {
@@ -46210,17 +46345,17 @@
}
public class DigitsKeyListener extends android.text.method.NumberKeyListener {
- ctor public deprecated DigitsKeyListener();
- ctor public deprecated DigitsKeyListener(boolean, boolean);
- ctor public DigitsKeyListener(java.util.Locale);
- ctor public DigitsKeyListener(java.util.Locale, boolean, boolean);
+ ctor @Deprecated public DigitsKeyListener();
+ ctor @Deprecated public DigitsKeyListener(boolean, boolean);
+ ctor public DigitsKeyListener(@Nullable java.util.Locale);
+ ctor public DigitsKeyListener(@Nullable java.util.Locale, boolean, boolean);
method protected char[] getAcceptedChars();
method public int getInputType();
- method public static deprecated android.text.method.DigitsKeyListener getInstance();
- method public static deprecated android.text.method.DigitsKeyListener getInstance(boolean, boolean);
- method public static android.text.method.DigitsKeyListener getInstance(java.util.Locale);
- method public static android.text.method.DigitsKeyListener getInstance(java.util.Locale, boolean, boolean);
- method public static android.text.method.DigitsKeyListener getInstance(java.lang.String);
+ method @Deprecated @NonNull public static android.text.method.DigitsKeyListener getInstance();
+ method @Deprecated @NonNull public static android.text.method.DigitsKeyListener getInstance(boolean, boolean);
+ method @NonNull public static android.text.method.DigitsKeyListener getInstance(@Nullable java.util.Locale);
+ method @NonNull public static android.text.method.DigitsKeyListener getInstance(@Nullable java.util.Locale, boolean, boolean);
+ method @NonNull public static android.text.method.DigitsKeyListener getInstance(@NonNull String);
}
public class HideReturnsTransformationMethod extends android.text.method.ReplacementTransformationMethod {
@@ -46230,12 +46365,12 @@
method protected char[] getReplacement();
}
- public abstract interface KeyListener {
- method public abstract void clearMetaKeyState(android.view.View, android.text.Editable, int);
- method public abstract int getInputType();
- method public abstract boolean onKeyDown(android.view.View, android.text.Editable, int, android.view.KeyEvent);
- method public abstract boolean onKeyOther(android.view.View, android.text.Editable, android.view.KeyEvent);
- method public abstract boolean onKeyUp(android.view.View, android.text.Editable, int, android.view.KeyEvent);
+ public interface KeyListener {
+ method public void clearMetaKeyState(android.view.View, android.text.Editable, int);
+ method public int getInputType();
+ method public boolean onKeyDown(android.view.View, android.text.Editable, int, android.view.KeyEvent);
+ method public boolean onKeyOther(android.view.View, android.text.Editable, android.view.KeyEvent);
+ method public boolean onKeyUp(android.view.View, android.text.Editable, int, android.view.KeyEvent);
}
public class LinkMovementMethod extends android.text.method.ScrollingMovementMethod {
@@ -46250,16 +46385,16 @@
method public void clearMetaKeyState(android.view.View, android.text.Editable, int);
method public static void clearMetaKeyState(android.text.Editable, int);
method public long clearMetaKeyState(long, int);
- method public static final int getMetaState(java.lang.CharSequence);
- method public static final int getMetaState(java.lang.CharSequence, android.view.KeyEvent);
- method public static final int getMetaState(java.lang.CharSequence, int);
- method public static final int getMetaState(java.lang.CharSequence, int, android.view.KeyEvent);
+ method public static final int getMetaState(CharSequence);
+ method public static final int getMetaState(CharSequence, android.view.KeyEvent);
+ method public static final int getMetaState(CharSequence, int);
+ method public static final int getMetaState(CharSequence, int, android.view.KeyEvent);
method public static final int getMetaState(long);
method public static final int getMetaState(long, int);
method public static long handleKeyDown(long, int, android.view.KeyEvent);
method public static long handleKeyUp(long, int, android.view.KeyEvent);
- method public static boolean isMetaTracker(java.lang.CharSequence, java.lang.Object);
- method public static boolean isSelectingMetaTracker(java.lang.CharSequence, java.lang.Object);
+ method public static boolean isMetaTracker(CharSequence, Object);
+ method public static boolean isSelectingMetaTracker(CharSequence, Object);
method public boolean onKeyDown(android.view.View, android.text.Editable, int, android.view.KeyEvent);
method public boolean onKeyUp(android.view.View, android.text.Editable, int, android.view.KeyEvent);
method protected static void resetLockedMeta(android.text.Spannable);
@@ -46273,31 +46408,31 @@
field public static final int META_SYM_ON = 4; // 0x4
}
- public abstract interface MovementMethod {
- method public abstract boolean canSelectArbitrarily();
- method public abstract void initialize(android.widget.TextView, android.text.Spannable);
- method public abstract boolean onGenericMotionEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
- method public abstract boolean onKeyDown(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
- method public abstract boolean onKeyOther(android.widget.TextView, android.text.Spannable, android.view.KeyEvent);
- method public abstract boolean onKeyUp(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
- method public abstract void onTakeFocus(android.widget.TextView, android.text.Spannable, int);
- method public abstract boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
- method public abstract boolean onTrackballEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+ public interface MovementMethod {
+ method public boolean canSelectArbitrarily();
+ method public void initialize(android.widget.TextView, android.text.Spannable);
+ method public boolean onGenericMotionEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+ method public boolean onKeyDown(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
+ method public boolean onKeyOther(android.widget.TextView, android.text.Spannable, android.view.KeyEvent);
+ method public boolean onKeyUp(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
+ method public void onTakeFocus(android.widget.TextView, android.text.Spannable, int);
+ method public boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+ method public boolean onTrackballEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
}
public class MultiTapKeyListener extends android.text.method.BaseKeyListener implements android.text.SpanWatcher {
ctor public MultiTapKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
method public int getInputType();
method public static android.text.method.MultiTapKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
- method public void onSpanAdded(android.text.Spannable, java.lang.Object, int, int);
- method public void onSpanChanged(android.text.Spannable, java.lang.Object, int, int, int, int);
- method public void onSpanRemoved(android.text.Spannable, java.lang.Object, int, int);
+ method public void onSpanAdded(android.text.Spannable, Object, int, int);
+ method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
+ method public void onSpanRemoved(android.text.Spannable, Object, int, int);
}
public abstract class NumberKeyListener extends android.text.method.BaseKeyListener implements android.text.InputFilter {
ctor public NumberKeyListener();
- method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int);
- method protected abstract char[] getAcceptedChars();
+ method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
+ method @NonNull protected abstract char[] getAcceptedChars();
method protected int lookup(android.view.KeyEvent, android.text.Spannable);
method protected static boolean ok(char[], char);
}
@@ -46305,11 +46440,11 @@
public class PasswordTransformationMethod implements android.text.TextWatcher android.text.method.TransformationMethod {
ctor public PasswordTransformationMethod();
method public void afterTextChanged(android.text.Editable);
- method public void beforeTextChanged(java.lang.CharSequence, int, int, int);
+ method public void beforeTextChanged(CharSequence, int, int, int);
method public static android.text.method.PasswordTransformationMethod getInstance();
- method public java.lang.CharSequence getTransformation(java.lang.CharSequence, android.view.View);
- method public void onFocusChanged(android.view.View, java.lang.CharSequence, boolean, int, android.graphics.Rect);
- method public void onTextChanged(java.lang.CharSequence, int, int, int);
+ method public CharSequence getTransformation(CharSequence, android.view.View);
+ method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
+ method public void onTextChanged(CharSequence, int, int, int);
}
public class QwertyKeyListener extends android.text.method.BaseKeyListener {
@@ -46317,15 +46452,15 @@
method public int getInputType();
method public static android.text.method.QwertyKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
method public static android.text.method.QwertyKeyListener getInstanceForFullKeyboard();
- method public static void markAsReplaced(android.text.Spannable, int, int, java.lang.String);
+ method public static void markAsReplaced(android.text.Spannable, int, int, String);
}
public abstract class ReplacementTransformationMethod implements android.text.method.TransformationMethod {
ctor public ReplacementTransformationMethod();
method protected abstract char[] getOriginal();
method protected abstract char[] getReplacement();
- method public java.lang.CharSequence getTransformation(java.lang.CharSequence, android.view.View);
- method public void onFocusChanged(android.view.View, java.lang.CharSequence, boolean, int, android.graphics.Rect);
+ method public CharSequence getTransformation(CharSequence, android.view.View);
+ method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
}
public class ScrollingMovementMethod extends android.text.method.BaseMovementMethod implements android.text.method.MovementMethod {
@@ -46346,16 +46481,14 @@
method public int getInputType();
method public static android.text.method.TextKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
method public static android.text.method.TextKeyListener getInstance();
- method public void onSpanAdded(android.text.Spannable, java.lang.Object, int, int);
- method public void onSpanChanged(android.text.Spannable, java.lang.Object, int, int, int, int);
- method public void onSpanRemoved(android.text.Spannable, java.lang.Object, int, int);
+ method public void onSpanAdded(android.text.Spannable, Object, int, int);
+ method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
+ method public void onSpanRemoved(android.text.Spannable, Object, int, int);
method public void release();
- method public static boolean shouldCap(android.text.method.TextKeyListener.Capitalize, java.lang.CharSequence, int);
+ method public static boolean shouldCap(android.text.method.TextKeyListener.Capitalize, CharSequence, int);
}
- public static final class TextKeyListener.Capitalize extends java.lang.Enum {
- method public static android.text.method.TextKeyListener.Capitalize valueOf(java.lang.String);
- method public static final android.text.method.TextKeyListener.Capitalize[] values();
+ public enum TextKeyListener.Capitalize {
enum_constant public static final android.text.method.TextKeyListener.Capitalize CHARACTERS;
enum_constant public static final android.text.method.TextKeyListener.Capitalize NONE;
enum_constant public static final android.text.method.TextKeyListener.Capitalize SENTENCES;
@@ -46363,13 +46496,13 @@
}
public class TimeKeyListener extends android.text.method.NumberKeyListener {
- ctor public deprecated TimeKeyListener();
- ctor public TimeKeyListener(java.util.Locale);
- method protected char[] getAcceptedChars();
+ ctor @Deprecated public TimeKeyListener();
+ ctor public TimeKeyListener(@Nullable java.util.Locale);
+ method @NonNull protected char[] getAcceptedChars();
method public int getInputType();
- method public static deprecated android.text.method.TimeKeyListener getInstance();
- method public static android.text.method.TimeKeyListener getInstance(java.util.Locale);
- field public static final deprecated char[] CHARACTERS;
+ method @Deprecated @NonNull public static android.text.method.TimeKeyListener getInstance();
+ method @NonNull public static android.text.method.TimeKeyListener getInstance(@Nullable java.util.Locale);
+ field @Deprecated public static final char[] CHARACTERS;
}
public class Touch {
@@ -46379,9 +46512,9 @@
method public static void scrollTo(android.widget.TextView, android.text.Layout, int, int);
}
- public abstract interface TransformationMethod {
- method public abstract java.lang.CharSequence getTransformation(java.lang.CharSequence, android.view.View);
- method public abstract void onFocusChanged(android.view.View, java.lang.CharSequence, boolean, int, android.graphics.Rect);
+ public interface TransformationMethod {
+ method public CharSequence getTransformation(CharSequence, android.view.View);
+ method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
}
}
@@ -46391,53 +46524,53 @@
public class AbsoluteSizeSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
ctor public AbsoluteSizeSpan(int);
ctor public AbsoluteSizeSpan(int, boolean);
- ctor public AbsoluteSizeSpan(android.os.Parcel);
+ ctor public AbsoluteSizeSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public boolean getDip();
method public int getSize();
method public int getSpanTypeId();
- method public void updateDrawState(android.text.TextPaint);
- method public void updateMeasureState(android.text.TextPaint);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void updateMeasureState(@NonNull android.text.TextPaint);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
- public abstract interface AlignmentSpan implements android.text.style.ParagraphStyle {
- method public abstract android.text.Layout.Alignment getAlignment();
+ public interface AlignmentSpan extends android.text.style.ParagraphStyle {
+ method public android.text.Layout.Alignment getAlignment();
}
public static class AlignmentSpan.Standard implements android.text.style.AlignmentSpan android.text.ParcelableSpan {
- ctor public AlignmentSpan.Standard(android.text.Layout.Alignment);
- ctor public AlignmentSpan.Standard(android.os.Parcel);
+ ctor public AlignmentSpan.Standard(@NonNull android.text.Layout.Alignment);
+ ctor public AlignmentSpan.Standard(@NonNull android.os.Parcel);
method public int describeContents();
method public android.text.Layout.Alignment getAlignment();
method public int getSpanTypeId();
- method public void writeToParcel(android.os.Parcel, int);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
public class BackgroundColorSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
- ctor public BackgroundColorSpan(int);
- ctor public BackgroundColorSpan(android.os.Parcel);
+ ctor public BackgroundColorSpan(@ColorInt int);
+ ctor public BackgroundColorSpan(@NonNull android.os.Parcel);
method public int describeContents();
- method public int getBackgroundColor();
+ method @ColorInt public int getBackgroundColor();
method public int getSpanTypeId();
- method public void updateDrawState(android.text.TextPaint);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
public class BulletSpan implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
ctor public BulletSpan();
ctor public BulletSpan(int);
- ctor public BulletSpan(int, int);
- ctor public BulletSpan(int, int, int);
- ctor public BulletSpan(android.os.Parcel);
+ ctor public BulletSpan(int, @ColorInt int);
+ ctor public BulletSpan(int, @ColorInt int, @IntRange(from=0) int);
+ ctor public BulletSpan(@NonNull android.os.Parcel);
method public int describeContents();
- method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, java.lang.CharSequence, int, int, boolean, android.text.Layout);
+ method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @Nullable android.text.Layout);
method public int getBulletRadius();
method public int getColor();
method public int getGapWidth();
method public int getLeadingMargin(boolean);
method public int getSpanTypeId();
- method public void writeToParcel(android.os.Parcel, int);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final int STANDARD_GAP_WIDTH = 2; // 0x2
}
@@ -46450,24 +46583,24 @@
public abstract class ClickableSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateAppearance {
ctor public ClickableSpan();
- method public abstract void onClick(android.view.View);
- method public void updateDrawState(android.text.TextPaint);
+ method public abstract void onClick(@NonNull android.view.View);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
}
public class DrawableMarginSpan implements android.text.style.LeadingMarginSpan android.text.style.LineHeightSpan {
- ctor public DrawableMarginSpan(android.graphics.drawable.Drawable);
- ctor public DrawableMarginSpan(android.graphics.drawable.Drawable, int);
- method public void chooseHeight(java.lang.CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
- method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, java.lang.CharSequence, int, int, boolean, android.text.Layout);
+ ctor public DrawableMarginSpan(@NonNull android.graphics.drawable.Drawable);
+ ctor public DrawableMarginSpan(@NonNull android.graphics.drawable.Drawable, int);
+ method public void chooseHeight(@NonNull CharSequence, int, int, int, int, @NonNull android.graphics.Paint.FontMetricsInt);
+ method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @NonNull android.text.Layout);
method public int getLeadingMargin(boolean);
}
public abstract class DynamicDrawableSpan extends android.text.style.ReplacementSpan {
ctor public DynamicDrawableSpan();
ctor protected DynamicDrawableSpan(int);
- method public void draw(android.graphics.Canvas, java.lang.CharSequence, int, int, float, int, int, int, android.graphics.Paint);
+ method public void draw(@NonNull android.graphics.Canvas, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, float, int, int, int, @NonNull android.graphics.Paint);
method public abstract android.graphics.drawable.Drawable getDrawable();
- method public int getSize(android.graphics.Paint, java.lang.CharSequence, int, int, android.graphics.Paint.FontMetricsInt);
+ method public int getSize(@NonNull android.graphics.Paint, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.graphics.Paint.FontMetricsInt);
method public int getVerticalAlignment();
field public static final int ALIGN_BASELINE = 1; // 0x1
field public static final int ALIGN_BOTTOM = 0; // 0x0
@@ -46477,57 +46610,57 @@
public class EasyEditSpan implements android.text.ParcelableSpan {
ctor public EasyEditSpan();
ctor public EasyEditSpan(android.app.PendingIntent);
- ctor public EasyEditSpan(android.os.Parcel);
+ ctor public EasyEditSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public int getSpanTypeId();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final java.lang.String EXTRA_TEXT_CHANGED_TYPE = "android.text.style.EXTRA_TEXT_CHANGED_TYPE";
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field public static final String EXTRA_TEXT_CHANGED_TYPE = "android.text.style.EXTRA_TEXT_CHANGED_TYPE";
field public static final int TEXT_DELETED = 1; // 0x1
field public static final int TEXT_MODIFIED = 2; // 0x2
}
public class ForegroundColorSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
- ctor public ForegroundColorSpan(int);
- ctor public ForegroundColorSpan(android.os.Parcel);
+ ctor public ForegroundColorSpan(@ColorInt int);
+ ctor public ForegroundColorSpan(@NonNull android.os.Parcel);
method public int describeContents();
- method public int getForegroundColor();
+ method @ColorInt public int getForegroundColor();
method public int getSpanTypeId();
- method public void updateDrawState(android.text.TextPaint);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
public class IconMarginSpan implements android.text.style.LeadingMarginSpan android.text.style.LineHeightSpan {
- ctor public IconMarginSpan(android.graphics.Bitmap);
- ctor public IconMarginSpan(android.graphics.Bitmap, int);
- method public void chooseHeight(java.lang.CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
- method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, java.lang.CharSequence, int, int, boolean, android.text.Layout);
+ ctor public IconMarginSpan(@NonNull android.graphics.Bitmap);
+ ctor public IconMarginSpan(@NonNull android.graphics.Bitmap, @IntRange(from=0) int);
+ method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
+ method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
method public int getLeadingMargin(boolean);
}
public class ImageSpan extends android.text.style.DynamicDrawableSpan {
- ctor public deprecated ImageSpan(android.graphics.Bitmap);
- ctor public deprecated ImageSpan(android.graphics.Bitmap, int);
- ctor public ImageSpan(android.content.Context, android.graphics.Bitmap);
- ctor public ImageSpan(android.content.Context, android.graphics.Bitmap, int);
- ctor public ImageSpan(android.graphics.drawable.Drawable);
- ctor public ImageSpan(android.graphics.drawable.Drawable, int);
- ctor public ImageSpan(android.graphics.drawable.Drawable, java.lang.String);
- ctor public ImageSpan(android.graphics.drawable.Drawable, java.lang.String, int);
- ctor public ImageSpan(android.content.Context, android.net.Uri);
- ctor public ImageSpan(android.content.Context, android.net.Uri, int);
- ctor public ImageSpan(android.content.Context, int);
- ctor public ImageSpan(android.content.Context, int, int);
+ ctor @Deprecated public ImageSpan(@NonNull android.graphics.Bitmap);
+ ctor @Deprecated public ImageSpan(@NonNull android.graphics.Bitmap, int);
+ ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.graphics.Bitmap);
+ ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.graphics.Bitmap, int);
+ ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable);
+ ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, int);
+ ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, @NonNull String);
+ ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, @NonNull String, int);
+ ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.net.Uri);
+ ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.net.Uri, int);
+ ctor public ImageSpan(@NonNull android.content.Context, @DrawableRes int);
+ ctor public ImageSpan(@NonNull android.content.Context, @DrawableRes int, int);
method public android.graphics.drawable.Drawable getDrawable();
- method public java.lang.String getSource();
+ method @Nullable public String getSource();
}
- public abstract interface LeadingMarginSpan implements android.text.style.ParagraphStyle {
- method public abstract void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, java.lang.CharSequence, int, int, boolean, android.text.Layout);
- method public abstract int getLeadingMargin(boolean);
+ public interface LeadingMarginSpan extends android.text.style.ParagraphStyle {
+ method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
+ method public int getLeadingMargin(boolean);
}
- public static abstract interface LeadingMarginSpan.LeadingMarginSpan2 implements android.text.style.LeadingMarginSpan android.text.style.WrapTogetherSpan {
- method public abstract int getLeadingMarginLineCount();
+ public static interface LeadingMarginSpan.LeadingMarginSpan2 extends android.text.style.LeadingMarginSpan android.text.style.WrapTogetherSpan {
+ method public int getLeadingMarginLineCount();
}
public static class LeadingMarginSpan.Standard implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
@@ -46535,51 +46668,51 @@
ctor public LeadingMarginSpan.Standard(int);
ctor public LeadingMarginSpan.Standard(android.os.Parcel);
method public int describeContents();
- method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, java.lang.CharSequence, int, int, boolean, android.text.Layout);
+ method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
method public int getLeadingMargin(boolean);
method public int getSpanTypeId();
method public void writeToParcel(android.os.Parcel, int);
}
- public abstract interface LineBackgroundSpan implements android.text.style.ParagraphStyle {
- method public abstract void drawBackground(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, java.lang.CharSequence, int, int, int);
+ public interface LineBackgroundSpan extends android.text.style.ParagraphStyle {
+ method public void drawBackground(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, @Px int, @Px int, @Px int, @Px int, @Px int, @NonNull CharSequence, int, int, int);
}
public static class LineBackgroundSpan.Standard implements android.text.style.LineBackgroundSpan android.text.ParcelableSpan {
- ctor public LineBackgroundSpan.Standard(int);
- ctor public LineBackgroundSpan.Standard(android.os.Parcel);
+ ctor public LineBackgroundSpan.Standard(@ColorInt int);
+ ctor public LineBackgroundSpan.Standard(@NonNull android.os.Parcel);
method public int describeContents();
- method public void drawBackground(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, java.lang.CharSequence, int, int, int);
- method public final int getColor();
+ method public void drawBackground(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, @Px int, @Px int, @Px int, @Px int, @Px int, @NonNull CharSequence, int, int, int);
+ method @ColorInt public final int getColor();
method public int getSpanTypeId();
- method public void writeToParcel(android.os.Parcel, int);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
- public abstract interface LineHeightSpan implements android.text.style.ParagraphStyle android.text.style.WrapTogetherSpan {
- method public abstract void chooseHeight(java.lang.CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
+ public interface LineHeightSpan extends android.text.style.ParagraphStyle android.text.style.WrapTogetherSpan {
+ method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
}
public static class LineHeightSpan.Standard implements android.text.style.LineHeightSpan android.text.ParcelableSpan {
- ctor public LineHeightSpan.Standard(int);
+ ctor public LineHeightSpan.Standard(@Px @IntRange(from=1) int);
ctor public LineHeightSpan.Standard(android.os.Parcel);
- method public void chooseHeight(java.lang.CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
+ method public void chooseHeight(@NonNull CharSequence, int, int, int, int, @NonNull android.graphics.Paint.FontMetricsInt);
method public int describeContents();
- method public int getHeight();
+ method @Px public int getHeight();
method public int getSpanTypeId();
method public void writeToParcel(android.os.Parcel, int);
}
- public static abstract interface LineHeightSpan.WithDensity implements android.text.style.LineHeightSpan {
- method public abstract void chooseHeight(java.lang.CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt, android.text.TextPaint);
+ public static interface LineHeightSpan.WithDensity extends android.text.style.LineHeightSpan {
+ method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt, android.text.TextPaint);
}
public class LocaleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
- ctor public LocaleSpan(java.util.Locale);
- ctor public LocaleSpan(android.os.LocaleList);
+ ctor public LocaleSpan(@Nullable java.util.Locale);
+ ctor public LocaleSpan(@NonNull android.os.LocaleList);
ctor public LocaleSpan(android.os.Parcel);
method public int describeContents();
- method public java.util.Locale getLocale();
- method public android.os.LocaleList getLocales();
+ method @Nullable public java.util.Locale getLocale();
+ method @NonNull public android.os.LocaleList getLocales();
method public int getSpanTypeId();
method public void updateDrawState(android.text.TextPaint);
method public void updateMeasureState(android.text.TextPaint);
@@ -46595,72 +46728,72 @@
public abstract class MetricAffectingSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateLayout {
ctor public MetricAffectingSpan();
method public android.text.style.MetricAffectingSpan getUnderlying();
- method public abstract void updateMeasureState(android.text.TextPaint);
+ method public abstract void updateMeasureState(@NonNull android.text.TextPaint);
}
- public abstract interface ParagraphStyle {
+ public interface ParagraphStyle {
}
public class QuoteSpan implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
ctor public QuoteSpan();
- ctor public QuoteSpan(int);
- ctor public QuoteSpan(int, int, int);
- ctor public QuoteSpan(android.os.Parcel);
+ ctor public QuoteSpan(@ColorInt int);
+ ctor public QuoteSpan(@ColorInt int, @IntRange(from=0) int, @IntRange(from=0) int);
+ ctor public QuoteSpan(@NonNull android.os.Parcel);
method public int describeContents();
- method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, java.lang.CharSequence, int, int, boolean, android.text.Layout);
- method public int getColor();
+ method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @NonNull android.text.Layout);
+ method @ColorInt public int getColor();
method public int getGapWidth();
method public int getLeadingMargin(boolean);
method public int getSpanTypeId();
method public int getStripeWidth();
method public void writeToParcel(android.os.Parcel, int);
- field public static final int STANDARD_COLOR = -16776961; // 0xff0000ff
+ field @ColorInt public static final int STANDARD_COLOR = -16776961; // 0xff0000ff
field public static final int STANDARD_GAP_WIDTH_PX = 2; // 0x2
field public static final int STANDARD_STRIPE_WIDTH_PX = 2; // 0x2
}
public class RelativeSizeSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
- ctor public RelativeSizeSpan(float);
- ctor public RelativeSizeSpan(android.os.Parcel);
+ ctor public RelativeSizeSpan(@FloatRange(from=0) float);
+ ctor public RelativeSizeSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public float getSizeChange();
method public int getSpanTypeId();
- method public void updateDrawState(android.text.TextPaint);
- method public void updateMeasureState(android.text.TextPaint);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void updateMeasureState(@NonNull android.text.TextPaint);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
public abstract class ReplacementSpan extends android.text.style.MetricAffectingSpan {
ctor public ReplacementSpan();
- method public abstract void draw(android.graphics.Canvas, java.lang.CharSequence, int, int, float, int, int, int, android.graphics.Paint);
- method public abstract int getSize(android.graphics.Paint, java.lang.CharSequence, int, int, android.graphics.Paint.FontMetricsInt);
+ method public abstract void draw(@NonNull android.graphics.Canvas, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, float, int, int, int, @NonNull android.graphics.Paint);
+ method public abstract int getSize(@NonNull android.graphics.Paint, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.graphics.Paint.FontMetricsInt);
method public void updateDrawState(android.text.TextPaint);
method public void updateMeasureState(android.text.TextPaint);
}
public class ScaleXSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
- ctor public ScaleXSpan(float);
- ctor public ScaleXSpan(android.os.Parcel);
+ ctor public ScaleXSpan(@FloatRange(from=0) float);
+ ctor public ScaleXSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public float getScaleX();
method public int getSpanTypeId();
method public void updateDrawState(android.text.TextPaint);
method public void updateMeasureState(android.text.TextPaint);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
public class StrikethroughSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
ctor public StrikethroughSpan();
- ctor public StrikethroughSpan(android.os.Parcel);
+ ctor public StrikethroughSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public int getSpanTypeId();
- method public void updateDrawState(android.text.TextPaint);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
public class StyleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
ctor public StyleSpan(int);
- ctor public StyleSpan(android.os.Parcel);
+ ctor public StyleSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public int getSpanTypeId();
method public int getStyle();
@@ -46671,68 +46804,68 @@
public class SubscriptSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
ctor public SubscriptSpan();
- ctor public SubscriptSpan(android.os.Parcel);
+ ctor public SubscriptSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public int getSpanTypeId();
- method public void updateDrawState(android.text.TextPaint);
- method public void updateMeasureState(android.text.TextPaint);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void updateMeasureState(@NonNull android.text.TextPaint);
method public void writeToParcel(android.os.Parcel, int);
}
public class SuggestionSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan {
- ctor public SuggestionSpan(android.content.Context, java.lang.String[], int);
- ctor public SuggestionSpan(java.util.Locale, java.lang.String[], int);
- ctor public SuggestionSpan(android.content.Context, java.util.Locale, java.lang.String[], int, java.lang.Class<?>);
+ ctor public SuggestionSpan(android.content.Context, String[], int);
+ ctor public SuggestionSpan(java.util.Locale, String[], int);
+ ctor public SuggestionSpan(android.content.Context, java.util.Locale, String[], int, Class<?>);
ctor public SuggestionSpan(android.os.Parcel);
method public int describeContents();
method public int getFlags();
- method public deprecated java.lang.String getLocale();
- method public java.util.Locale getLocaleObject();
+ method @Deprecated @NonNull public String getLocale();
+ method @Nullable public java.util.Locale getLocaleObject();
method public int getSpanTypeId();
- method public java.lang.String[] getSuggestions();
- method public int getUnderlineColor();
+ method public String[] getSuggestions();
+ method @ColorInt public int getUnderlineColor();
method public void setFlags(int);
method public void updateDrawState(android.text.TextPaint);
method public void writeToParcel(android.os.Parcel, int);
- field public static final java.lang.String ACTION_SUGGESTION_PICKED = "android.text.style.SUGGESTION_PICKED";
+ field public static final String ACTION_SUGGESTION_PICKED = "android.text.style.SUGGESTION_PICKED";
field public static final android.os.Parcelable.Creator<android.text.style.SuggestionSpan> CREATOR;
field public static final int FLAG_AUTO_CORRECTION = 4; // 0x4
field public static final int FLAG_EASY_CORRECT = 1; // 0x1
field public static final int FLAG_MISSPELLED = 2; // 0x2
field public static final int SUGGESTIONS_MAX_SIZE = 5; // 0x5
- field public static final java.lang.String SUGGESTION_SPAN_PICKED_AFTER = "after";
- field public static final java.lang.String SUGGESTION_SPAN_PICKED_BEFORE = "before";
- field public static final java.lang.String SUGGESTION_SPAN_PICKED_HASHCODE = "hashcode";
+ field public static final String SUGGESTION_SPAN_PICKED_AFTER = "after";
+ field public static final String SUGGESTION_SPAN_PICKED_BEFORE = "before";
+ field public static final String SUGGESTION_SPAN_PICKED_HASHCODE = "hashcode";
}
public class SuperscriptSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
ctor public SuperscriptSpan();
- ctor public SuperscriptSpan(android.os.Parcel);
+ ctor public SuperscriptSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public int getSpanTypeId();
- method public void updateDrawState(android.text.TextPaint);
- method public void updateMeasureState(android.text.TextPaint);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void updateMeasureState(@NonNull android.text.TextPaint);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
- public abstract interface TabStopSpan implements android.text.style.ParagraphStyle {
- method public abstract int getTabStop();
+ public interface TabStopSpan extends android.text.style.ParagraphStyle {
+ method public int getTabStop();
}
public static class TabStopSpan.Standard implements android.text.style.TabStopSpan {
- ctor public TabStopSpan.Standard(int);
+ ctor public TabStopSpan.Standard(@IntRange(from=0) int);
method public int getTabStop();
}
public class TextAppearanceSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
ctor public TextAppearanceSpan(android.content.Context, int);
ctor public TextAppearanceSpan(android.content.Context, int, int);
- ctor public TextAppearanceSpan(java.lang.String, int, int, android.content.res.ColorStateList, android.content.res.ColorStateList);
+ ctor public TextAppearanceSpan(String, int, int, android.content.res.ColorStateList, android.content.res.ColorStateList);
ctor public TextAppearanceSpan(android.os.Parcel);
method public int describeContents();
- method public java.lang.String getFamily();
- method public java.lang.String getFontFeatureSettings();
- method public java.lang.String getFontVariationSettings();
+ method public String getFamily();
+ method @Nullable public String getFontFeatureSettings();
+ method @Nullable public String getFontVariationSettings();
method public android.content.res.ColorStateList getLinkTextColor();
method public int getShadowColor();
method public float getShadowDx();
@@ -46741,10 +46874,10 @@
method public int getSpanTypeId();
method public android.content.res.ColorStateList getTextColor();
method public int getTextFontWeight();
- method public android.os.LocaleList getTextLocales();
+ method @Nullable public android.os.LocaleList getTextLocales();
method public int getTextSize();
method public int getTextStyle();
- method public android.graphics.Typeface getTypeface();
+ method @Nullable public android.graphics.Typeface getTypeface();
method public boolean isElegantTextHeight();
method public void updateDrawState(android.text.TextPaint);
method public void updateMeasureState(android.text.TextPaint);
@@ -46752,58 +46885,58 @@
}
public class TtsSpan implements android.text.ParcelableSpan {
- ctor public TtsSpan(java.lang.String, android.os.PersistableBundle);
+ ctor public TtsSpan(String, android.os.PersistableBundle);
ctor public TtsSpan(android.os.Parcel);
method public int describeContents();
method public android.os.PersistableBundle getArgs();
method public int getSpanTypeId();
- method public java.lang.String getType();
+ method public String getType();
method public void writeToParcel(android.os.Parcel, int);
- field public static final java.lang.String ANIMACY_ANIMATE = "android.animate";
- field public static final java.lang.String ANIMACY_INANIMATE = "android.inanimate";
- field public static final java.lang.String ARG_ANIMACY = "android.arg.animacy";
- field public static final java.lang.String ARG_CASE = "android.arg.case";
- field public static final java.lang.String ARG_COUNTRY_CODE = "android.arg.country_code";
- field public static final java.lang.String ARG_CURRENCY = "android.arg.money";
- field public static final java.lang.String ARG_DAY = "android.arg.day";
- field public static final java.lang.String ARG_DENOMINATOR = "android.arg.denominator";
- field public static final java.lang.String ARG_DIGITS = "android.arg.digits";
- field public static final java.lang.String ARG_DOMAIN = "android.arg.domain";
- field public static final java.lang.String ARG_EXTENSION = "android.arg.extension";
- field public static final java.lang.String ARG_FRACTIONAL_PART = "android.arg.fractional_part";
- field public static final java.lang.String ARG_FRAGMENT_ID = "android.arg.fragment_id";
- field public static final java.lang.String ARG_GENDER = "android.arg.gender";
- field public static final java.lang.String ARG_HOURS = "android.arg.hours";
- field public static final java.lang.String ARG_INTEGER_PART = "android.arg.integer_part";
- field public static final java.lang.String ARG_MINUTES = "android.arg.minutes";
- field public static final java.lang.String ARG_MONTH = "android.arg.month";
- field public static final java.lang.String ARG_MULTIPLICITY = "android.arg.multiplicity";
- field public static final java.lang.String ARG_NUMBER = "android.arg.number";
- field public static final java.lang.String ARG_NUMBER_PARTS = "android.arg.number_parts";
- field public static final java.lang.String ARG_NUMERATOR = "android.arg.numerator";
- field public static final java.lang.String ARG_PASSWORD = "android.arg.password";
- field public static final java.lang.String ARG_PATH = "android.arg.path";
- field public static final java.lang.String ARG_PORT = "android.arg.port";
- field public static final java.lang.String ARG_PROTOCOL = "android.arg.protocol";
- field public static final java.lang.String ARG_QUANTITY = "android.arg.quantity";
- field public static final java.lang.String ARG_QUERY_STRING = "android.arg.query_string";
- field public static final java.lang.String ARG_TEXT = "android.arg.text";
- field public static final java.lang.String ARG_UNIT = "android.arg.unit";
- field public static final java.lang.String ARG_USERNAME = "android.arg.username";
- field public static final java.lang.String ARG_VERBATIM = "android.arg.verbatim";
- field public static final java.lang.String ARG_WEEKDAY = "android.arg.weekday";
- field public static final java.lang.String ARG_YEAR = "android.arg.year";
- field public static final java.lang.String CASE_ABLATIVE = "android.ablative";
- field public static final java.lang.String CASE_ACCUSATIVE = "android.accusative";
- field public static final java.lang.String CASE_DATIVE = "android.dative";
- field public static final java.lang.String CASE_GENITIVE = "android.genitive";
- field public static final java.lang.String CASE_INSTRUMENTAL = "android.instrumental";
- field public static final java.lang.String CASE_LOCATIVE = "android.locative";
- field public static final java.lang.String CASE_NOMINATIVE = "android.nominative";
- field public static final java.lang.String CASE_VOCATIVE = "android.vocative";
- field public static final java.lang.String GENDER_FEMALE = "android.female";
- field public static final java.lang.String GENDER_MALE = "android.male";
- field public static final java.lang.String GENDER_NEUTRAL = "android.neutral";
+ field public static final String ANIMACY_ANIMATE = "android.animate";
+ field public static final String ANIMACY_INANIMATE = "android.inanimate";
+ field public static final String ARG_ANIMACY = "android.arg.animacy";
+ field public static final String ARG_CASE = "android.arg.case";
+ field public static final String ARG_COUNTRY_CODE = "android.arg.country_code";
+ field public static final String ARG_CURRENCY = "android.arg.money";
+ field public static final String ARG_DAY = "android.arg.day";
+ field public static final String ARG_DENOMINATOR = "android.arg.denominator";
+ field public static final String ARG_DIGITS = "android.arg.digits";
+ field public static final String ARG_DOMAIN = "android.arg.domain";
+ field public static final String ARG_EXTENSION = "android.arg.extension";
+ field public static final String ARG_FRACTIONAL_PART = "android.arg.fractional_part";
+ field public static final String ARG_FRAGMENT_ID = "android.arg.fragment_id";
+ field public static final String ARG_GENDER = "android.arg.gender";
+ field public static final String ARG_HOURS = "android.arg.hours";
+ field public static final String ARG_INTEGER_PART = "android.arg.integer_part";
+ field public static final String ARG_MINUTES = "android.arg.minutes";
+ field public static final String ARG_MONTH = "android.arg.month";
+ field public static final String ARG_MULTIPLICITY = "android.arg.multiplicity";
+ field public static final String ARG_NUMBER = "android.arg.number";
+ field public static final String ARG_NUMBER_PARTS = "android.arg.number_parts";
+ field public static final String ARG_NUMERATOR = "android.arg.numerator";
+ field public static final String ARG_PASSWORD = "android.arg.password";
+ field public static final String ARG_PATH = "android.arg.path";
+ field public static final String ARG_PORT = "android.arg.port";
+ field public static final String ARG_PROTOCOL = "android.arg.protocol";
+ field public static final String ARG_QUANTITY = "android.arg.quantity";
+ field public static final String ARG_QUERY_STRING = "android.arg.query_string";
+ field public static final String ARG_TEXT = "android.arg.text";
+ field public static final String ARG_UNIT = "android.arg.unit";
+ field public static final String ARG_USERNAME = "android.arg.username";
+ field public static final String ARG_VERBATIM = "android.arg.verbatim";
+ field public static final String ARG_WEEKDAY = "android.arg.weekday";
+ field public static final String ARG_YEAR = "android.arg.year";
+ field public static final String CASE_ABLATIVE = "android.ablative";
+ field public static final String CASE_ACCUSATIVE = "android.accusative";
+ field public static final String CASE_DATIVE = "android.dative";
+ field public static final String CASE_GENITIVE = "android.genitive";
+ field public static final String CASE_INSTRUMENTAL = "android.instrumental";
+ field public static final String CASE_LOCATIVE = "android.locative";
+ field public static final String CASE_NOMINATIVE = "android.nominative";
+ field public static final String CASE_VOCATIVE = "android.vocative";
+ field public static final String GENDER_FEMALE = "android.female";
+ field public static final String GENDER_MALE = "android.male";
+ field public static final String GENDER_NEUTRAL = "android.neutral";
field public static final int MONTH_APRIL = 3; // 0x3
field public static final int MONTH_AUGUST = 7; // 0x7
field public static final int MONTH_DECEMBER = 11; // 0xb
@@ -46816,22 +46949,22 @@
field public static final int MONTH_NOVEMBER = 10; // 0xa
field public static final int MONTH_OCTOBER = 9; // 0x9
field public static final int MONTH_SEPTEMBER = 8; // 0x8
- field public static final java.lang.String MULTIPLICITY_DUAL = "android.dual";
- field public static final java.lang.String MULTIPLICITY_PLURAL = "android.plural";
- field public static final java.lang.String MULTIPLICITY_SINGLE = "android.single";
- field public static final java.lang.String TYPE_CARDINAL = "android.type.cardinal";
- field public static final java.lang.String TYPE_DATE = "android.type.date";
- field public static final java.lang.String TYPE_DECIMAL = "android.type.decimal";
- field public static final java.lang.String TYPE_DIGITS = "android.type.digits";
- field public static final java.lang.String TYPE_ELECTRONIC = "android.type.electronic";
- field public static final java.lang.String TYPE_FRACTION = "android.type.fraction";
- field public static final java.lang.String TYPE_MEASURE = "android.type.measure";
- field public static final java.lang.String TYPE_MONEY = "android.type.money";
- field public static final java.lang.String TYPE_ORDINAL = "android.type.ordinal";
- field public static final java.lang.String TYPE_TELEPHONE = "android.type.telephone";
- field public static final java.lang.String TYPE_TEXT = "android.type.text";
- field public static final java.lang.String TYPE_TIME = "android.type.time";
- field public static final java.lang.String TYPE_VERBATIM = "android.type.verbatim";
+ field public static final String MULTIPLICITY_DUAL = "android.dual";
+ field public static final String MULTIPLICITY_PLURAL = "android.plural";
+ field public static final String MULTIPLICITY_SINGLE = "android.single";
+ field public static final String TYPE_CARDINAL = "android.type.cardinal";
+ field public static final String TYPE_DATE = "android.type.date";
+ field public static final String TYPE_DECIMAL = "android.type.decimal";
+ field public static final String TYPE_DIGITS = "android.type.digits";
+ field public static final String TYPE_ELECTRONIC = "android.type.electronic";
+ field public static final String TYPE_FRACTION = "android.type.fraction";
+ field public static final String TYPE_MEASURE = "android.type.measure";
+ field public static final String TYPE_MONEY = "android.type.money";
+ field public static final String TYPE_ORDINAL = "android.type.ordinal";
+ field public static final String TYPE_TELEPHONE = "android.type.telephone";
+ field public static final String TYPE_TEXT = "android.type.text";
+ field public static final String TYPE_TIME = "android.type.time";
+ field public static final String TYPE_VERBATIM = "android.type.verbatim";
field public static final int WEEKDAY_FRIDAY = 6; // 0x6
field public static final int WEEKDAY_MONDAY = 2; // 0x2
field public static final int WEEKDAY_SATURDAY = 7; // 0x7
@@ -46842,175 +46975,175 @@
}
public static class TtsSpan.Builder<C extends android.text.style.TtsSpan.Builder<?>> {
- ctor public TtsSpan.Builder(java.lang.String);
+ ctor public TtsSpan.Builder(String);
method public android.text.style.TtsSpan build();
- method public C setIntArgument(java.lang.String, int);
- method public C setLongArgument(java.lang.String, long);
- method public C setStringArgument(java.lang.String, java.lang.String);
+ method public C setIntArgument(String, int);
+ method public C setLongArgument(String, long);
+ method public C setStringArgument(String, String);
}
- public static class TtsSpan.CardinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.CardinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.CardinalBuilder> {
ctor public TtsSpan.CardinalBuilder();
ctor public TtsSpan.CardinalBuilder(long);
- ctor public TtsSpan.CardinalBuilder(java.lang.String);
+ ctor public TtsSpan.CardinalBuilder(String);
method public android.text.style.TtsSpan.CardinalBuilder setNumber(long);
- method public android.text.style.TtsSpan.CardinalBuilder setNumber(java.lang.String);
+ method public android.text.style.TtsSpan.CardinalBuilder setNumber(String);
}
- public static class TtsSpan.DateBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.DateBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DateBuilder> {
ctor public TtsSpan.DateBuilder();
- ctor public TtsSpan.DateBuilder(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer);
+ ctor public TtsSpan.DateBuilder(Integer, Integer, Integer, Integer);
method public android.text.style.TtsSpan.DateBuilder setDay(int);
method public android.text.style.TtsSpan.DateBuilder setMonth(int);
method public android.text.style.TtsSpan.DateBuilder setWeekday(int);
method public android.text.style.TtsSpan.DateBuilder setYear(int);
}
- public static class TtsSpan.DecimalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.DecimalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DecimalBuilder> {
ctor public TtsSpan.DecimalBuilder();
ctor public TtsSpan.DecimalBuilder(double, int, int);
- ctor public TtsSpan.DecimalBuilder(java.lang.String, java.lang.String);
+ ctor public TtsSpan.DecimalBuilder(String, String);
method public android.text.style.TtsSpan.DecimalBuilder setArgumentsFromDouble(double, int, int);
- method public android.text.style.TtsSpan.DecimalBuilder setFractionalPart(java.lang.String);
+ method public android.text.style.TtsSpan.DecimalBuilder setFractionalPart(String);
method public android.text.style.TtsSpan.DecimalBuilder setIntegerPart(long);
- method public android.text.style.TtsSpan.DecimalBuilder setIntegerPart(java.lang.String);
+ method public android.text.style.TtsSpan.DecimalBuilder setIntegerPart(String);
}
- public static class TtsSpan.DigitsBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.DigitsBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DigitsBuilder> {
ctor public TtsSpan.DigitsBuilder();
- ctor public TtsSpan.DigitsBuilder(java.lang.String);
- method public android.text.style.TtsSpan.DigitsBuilder setDigits(java.lang.String);
+ ctor public TtsSpan.DigitsBuilder(String);
+ method public android.text.style.TtsSpan.DigitsBuilder setDigits(String);
}
- public static class TtsSpan.ElectronicBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.ElectronicBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.ElectronicBuilder> {
ctor public TtsSpan.ElectronicBuilder();
- method public android.text.style.TtsSpan.ElectronicBuilder setDomain(java.lang.String);
- method public android.text.style.TtsSpan.ElectronicBuilder setEmailArguments(java.lang.String, java.lang.String);
- method public android.text.style.TtsSpan.ElectronicBuilder setFragmentId(java.lang.String);
- method public android.text.style.TtsSpan.ElectronicBuilder setPassword(java.lang.String);
- method public android.text.style.TtsSpan.ElectronicBuilder setPath(java.lang.String);
+ method public android.text.style.TtsSpan.ElectronicBuilder setDomain(String);
+ method public android.text.style.TtsSpan.ElectronicBuilder setEmailArguments(String, String);
+ method public android.text.style.TtsSpan.ElectronicBuilder setFragmentId(String);
+ method public android.text.style.TtsSpan.ElectronicBuilder setPassword(String);
+ method public android.text.style.TtsSpan.ElectronicBuilder setPath(String);
method public android.text.style.TtsSpan.ElectronicBuilder setPort(int);
- method public android.text.style.TtsSpan.ElectronicBuilder setProtocol(java.lang.String);
- method public android.text.style.TtsSpan.ElectronicBuilder setQueryString(java.lang.String);
- method public android.text.style.TtsSpan.ElectronicBuilder setUsername(java.lang.String);
+ method public android.text.style.TtsSpan.ElectronicBuilder setProtocol(String);
+ method public android.text.style.TtsSpan.ElectronicBuilder setQueryString(String);
+ method public android.text.style.TtsSpan.ElectronicBuilder setUsername(String);
}
- public static class TtsSpan.FractionBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.FractionBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.FractionBuilder> {
ctor public TtsSpan.FractionBuilder();
ctor public TtsSpan.FractionBuilder(long, long, long);
method public android.text.style.TtsSpan.FractionBuilder setDenominator(long);
- method public android.text.style.TtsSpan.FractionBuilder setDenominator(java.lang.String);
+ method public android.text.style.TtsSpan.FractionBuilder setDenominator(String);
method public android.text.style.TtsSpan.FractionBuilder setIntegerPart(long);
- method public android.text.style.TtsSpan.FractionBuilder setIntegerPart(java.lang.String);
+ method public android.text.style.TtsSpan.FractionBuilder setIntegerPart(String);
method public android.text.style.TtsSpan.FractionBuilder setNumerator(long);
- method public android.text.style.TtsSpan.FractionBuilder setNumerator(java.lang.String);
+ method public android.text.style.TtsSpan.FractionBuilder setNumerator(String);
}
- public static class TtsSpan.MeasureBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.MeasureBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.MeasureBuilder> {
ctor public TtsSpan.MeasureBuilder();
method public android.text.style.TtsSpan.MeasureBuilder setDenominator(long);
- method public android.text.style.TtsSpan.MeasureBuilder setDenominator(java.lang.String);
- method public android.text.style.TtsSpan.MeasureBuilder setFractionalPart(java.lang.String);
+ method public android.text.style.TtsSpan.MeasureBuilder setDenominator(String);
+ method public android.text.style.TtsSpan.MeasureBuilder setFractionalPart(String);
method public android.text.style.TtsSpan.MeasureBuilder setIntegerPart(long);
- method public android.text.style.TtsSpan.MeasureBuilder setIntegerPart(java.lang.String);
+ method public android.text.style.TtsSpan.MeasureBuilder setIntegerPart(String);
method public android.text.style.TtsSpan.MeasureBuilder setNumber(long);
- method public android.text.style.TtsSpan.MeasureBuilder setNumber(java.lang.String);
+ method public android.text.style.TtsSpan.MeasureBuilder setNumber(String);
method public android.text.style.TtsSpan.MeasureBuilder setNumerator(long);
- method public android.text.style.TtsSpan.MeasureBuilder setNumerator(java.lang.String);
- method public android.text.style.TtsSpan.MeasureBuilder setUnit(java.lang.String);
+ method public android.text.style.TtsSpan.MeasureBuilder setNumerator(String);
+ method public android.text.style.TtsSpan.MeasureBuilder setUnit(String);
}
- public static class TtsSpan.MoneyBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.MoneyBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.MoneyBuilder> {
ctor public TtsSpan.MoneyBuilder();
- method public android.text.style.TtsSpan.MoneyBuilder setCurrency(java.lang.String);
- method public android.text.style.TtsSpan.MoneyBuilder setFractionalPart(java.lang.String);
+ method public android.text.style.TtsSpan.MoneyBuilder setCurrency(String);
+ method public android.text.style.TtsSpan.MoneyBuilder setFractionalPart(String);
method public android.text.style.TtsSpan.MoneyBuilder setIntegerPart(long);
- method public android.text.style.TtsSpan.MoneyBuilder setIntegerPart(java.lang.String);
- method public android.text.style.TtsSpan.MoneyBuilder setQuantity(java.lang.String);
+ method public android.text.style.TtsSpan.MoneyBuilder setIntegerPart(String);
+ method public android.text.style.TtsSpan.MoneyBuilder setQuantity(String);
}
- public static class TtsSpan.OrdinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.OrdinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.OrdinalBuilder> {
ctor public TtsSpan.OrdinalBuilder();
ctor public TtsSpan.OrdinalBuilder(long);
- ctor public TtsSpan.OrdinalBuilder(java.lang.String);
+ ctor public TtsSpan.OrdinalBuilder(String);
method public android.text.style.TtsSpan.OrdinalBuilder setNumber(long);
- method public android.text.style.TtsSpan.OrdinalBuilder setNumber(java.lang.String);
+ method public android.text.style.TtsSpan.OrdinalBuilder setNumber(String);
}
- public static class TtsSpan.SemioticClassBuilder<C extends android.text.style.TtsSpan.SemioticClassBuilder<?>> extends android.text.style.TtsSpan.Builder {
- ctor public TtsSpan.SemioticClassBuilder(java.lang.String);
- method public C setAnimacy(java.lang.String);
- method public C setCase(java.lang.String);
- method public C setGender(java.lang.String);
- method public C setMultiplicity(java.lang.String);
+ public static class TtsSpan.SemioticClassBuilder<C extends android.text.style.TtsSpan.SemioticClassBuilder<?>> extends android.text.style.TtsSpan.Builder<C> {
+ ctor public TtsSpan.SemioticClassBuilder(String);
+ method public C setAnimacy(String);
+ method public C setCase(String);
+ method public C setGender(String);
+ method public C setMultiplicity(String);
}
- public static class TtsSpan.TelephoneBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.TelephoneBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TelephoneBuilder> {
ctor public TtsSpan.TelephoneBuilder();
- ctor public TtsSpan.TelephoneBuilder(java.lang.String);
- method public android.text.style.TtsSpan.TelephoneBuilder setCountryCode(java.lang.String);
- method public android.text.style.TtsSpan.TelephoneBuilder setExtension(java.lang.String);
- method public android.text.style.TtsSpan.TelephoneBuilder setNumberParts(java.lang.String);
+ ctor public TtsSpan.TelephoneBuilder(String);
+ method public android.text.style.TtsSpan.TelephoneBuilder setCountryCode(String);
+ method public android.text.style.TtsSpan.TelephoneBuilder setExtension(String);
+ method public android.text.style.TtsSpan.TelephoneBuilder setNumberParts(String);
}
- public static class TtsSpan.TextBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.TextBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TextBuilder> {
ctor public TtsSpan.TextBuilder();
- ctor public TtsSpan.TextBuilder(java.lang.String);
- method public android.text.style.TtsSpan.TextBuilder setText(java.lang.String);
+ ctor public TtsSpan.TextBuilder(String);
+ method public android.text.style.TtsSpan.TextBuilder setText(String);
}
- public static class TtsSpan.TimeBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.TimeBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TimeBuilder> {
ctor public TtsSpan.TimeBuilder();
ctor public TtsSpan.TimeBuilder(int, int);
method public android.text.style.TtsSpan.TimeBuilder setHours(int);
method public android.text.style.TtsSpan.TimeBuilder setMinutes(int);
}
- public static class TtsSpan.VerbatimBuilder extends android.text.style.TtsSpan.SemioticClassBuilder {
+ public static class TtsSpan.VerbatimBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.VerbatimBuilder> {
ctor public TtsSpan.VerbatimBuilder();
- ctor public TtsSpan.VerbatimBuilder(java.lang.String);
- method public android.text.style.TtsSpan.VerbatimBuilder setVerbatim(java.lang.String);
+ ctor public TtsSpan.VerbatimBuilder(String);
+ method public android.text.style.TtsSpan.VerbatimBuilder setVerbatim(String);
}
public class TypefaceSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
- ctor public TypefaceSpan(java.lang.String);
- ctor public TypefaceSpan(android.graphics.Typeface);
- ctor public TypefaceSpan(android.os.Parcel);
+ ctor public TypefaceSpan(@Nullable String);
+ ctor public TypefaceSpan(@NonNull android.graphics.Typeface);
+ ctor public TypefaceSpan(@NonNull android.os.Parcel);
method public int describeContents();
- method public java.lang.String getFamily();
+ method @Nullable public String getFamily();
method public int getSpanTypeId();
- method public android.graphics.Typeface getTypeface();
- method public void updateDrawState(android.text.TextPaint);
- method public void updateMeasureState(android.text.TextPaint);
- method public void writeToParcel(android.os.Parcel, int);
+ method @Nullable public android.graphics.Typeface getTypeface();
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void updateMeasureState(@NonNull android.text.TextPaint);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
public class URLSpan extends android.text.style.ClickableSpan implements android.text.ParcelableSpan {
- ctor public URLSpan(java.lang.String);
- ctor public URLSpan(android.os.Parcel);
+ ctor public URLSpan(String);
+ ctor public URLSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public int getSpanTypeId();
- method public java.lang.String getURL();
+ method public String getURL();
method public void onClick(android.view.View);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
public class UnderlineSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
ctor public UnderlineSpan();
- ctor public UnderlineSpan(android.os.Parcel);
+ ctor public UnderlineSpan(@NonNull android.os.Parcel);
method public int describeContents();
method public int getSpanTypeId();
- method public void updateDrawState(android.text.TextPaint);
- method public void writeToParcel(android.os.Parcel, int);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
}
- public abstract interface UpdateAppearance {
+ public interface UpdateAppearance {
}
- public abstract interface UpdateLayout implements android.text.style.UpdateAppearance {
+ public interface UpdateLayout extends android.text.style.UpdateAppearance {
}
- public abstract interface WrapTogetherSpan implements android.text.style.ParagraphStyle {
+ public interface WrapTogetherSpan extends android.text.style.ParagraphStyle {
}
}
@@ -47019,19 +47152,19 @@
public class Linkify {
ctor public Linkify();
- method public static final boolean addLinks(android.text.Spannable, int);
- method public static final boolean addLinks(android.text.Spannable, int, android.text.util.Linkify.UrlSpanFactory);
- method public static final boolean addLinks(android.widget.TextView, int);
- method public static final void addLinks(android.widget.TextView, java.util.regex.Pattern, java.lang.String);
- method public static final void addLinks(android.widget.TextView, java.util.regex.Pattern, java.lang.String, android.text.util.Linkify.MatchFilter, android.text.util.Linkify.TransformFilter);
- method public static final void addLinks(android.widget.TextView, java.util.regex.Pattern, java.lang.String, java.lang.String[], android.text.util.Linkify.MatchFilter, android.text.util.Linkify.TransformFilter);
- method public static final boolean addLinks(android.text.Spannable, java.util.regex.Pattern, java.lang.String);
- method public static final boolean addLinks(android.text.Spannable, java.util.regex.Pattern, java.lang.String, android.text.util.Linkify.MatchFilter, android.text.util.Linkify.TransformFilter);
- method public static final boolean addLinks(android.text.Spannable, java.util.regex.Pattern, java.lang.String, java.lang.String[], android.text.util.Linkify.MatchFilter, android.text.util.Linkify.TransformFilter);
- method public static final boolean addLinks(android.text.Spannable, java.util.regex.Pattern, java.lang.String, java.lang.String[], android.text.util.Linkify.MatchFilter, android.text.util.Linkify.TransformFilter, android.text.util.Linkify.UrlSpanFactory);
+ method public static final boolean addLinks(@NonNull android.text.Spannable, int);
+ method public static final boolean addLinks(@NonNull android.text.Spannable, int, @Nullable java.util.function.Function<java.lang.String,android.text.style.URLSpan>);
+ method public static final boolean addLinks(@NonNull android.widget.TextView, int);
+ method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String);
+ method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
+ method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
+ method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String);
+ method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
+ method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
+ method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter, @Nullable java.util.function.Function<java.lang.String,android.text.style.URLSpan>);
field public static final int ALL = 15; // 0xf
field public static final int EMAIL_ADDRESSES = 2; // 0x2
- field public static final deprecated int MAP_ADDRESSES = 8; // 0x8
+ field @Deprecated public static final int MAP_ADDRESSES = 8; // 0x8
field public static final int PHONE_NUMBERS = 4; // 0x4
field public static final int WEB_URLS = 1; // 0x1
field public static final android.text.util.Linkify.MatchFilter sPhoneNumberMatchFilter;
@@ -47039,39 +47172,34 @@
field public static final android.text.util.Linkify.MatchFilter sUrlMatchFilter;
}
- public static abstract interface Linkify.MatchFilter {
- method public abstract boolean acceptMatch(java.lang.CharSequence, int, int);
+ public static interface Linkify.MatchFilter {
+ method public boolean acceptMatch(CharSequence, int, int);
}
- public static abstract interface Linkify.TransformFilter {
- method public abstract java.lang.String transformUrl(java.util.regex.Matcher, java.lang.String);
- }
-
- public static class Linkify.UrlSpanFactory {
- ctor public Linkify.UrlSpanFactory();
- method public android.text.style.URLSpan create(java.lang.String);
+ public static interface Linkify.TransformFilter {
+ method public String transformUrl(java.util.regex.Matcher, String);
}
public class Rfc822Token {
- ctor public Rfc822Token(java.lang.String, java.lang.String, java.lang.String);
- method public java.lang.String getAddress();
- method public java.lang.String getComment();
- method public java.lang.String getName();
- method public static java.lang.String quoteComment(java.lang.String);
- method public static java.lang.String quoteName(java.lang.String);
- method public static java.lang.String quoteNameIfNecessary(java.lang.String);
- method public void setAddress(java.lang.String);
- method public void setComment(java.lang.String);
- method public void setName(java.lang.String);
+ ctor public Rfc822Token(@Nullable String, @Nullable String, @Nullable String);
+ method @Nullable public String getAddress();
+ method @Nullable public String getComment();
+ method @Nullable public String getName();
+ method public static String quoteComment(String);
+ method public static String quoteName(String);
+ method public static String quoteNameIfNecessary(String);
+ method public void setAddress(@Nullable String);
+ method public void setComment(@Nullable String);
+ method public void setName(@Nullable String);
}
public class Rfc822Tokenizer implements android.widget.MultiAutoCompleteTextView.Tokenizer {
ctor public Rfc822Tokenizer();
- method public int findTokenEnd(java.lang.CharSequence, int);
- method public int findTokenStart(java.lang.CharSequence, int);
- method public java.lang.CharSequence terminateToken(java.lang.CharSequence);
- method public static void tokenize(java.lang.CharSequence, java.util.Collection<android.text.util.Rfc822Token>);
- method public static android.text.util.Rfc822Token[] tokenize(java.lang.CharSequence);
+ method public int findTokenEnd(CharSequence, int);
+ method public int findTokenStart(CharSequence, int);
+ method public CharSequence terminateToken(CharSequence);
+ method public static void tokenize(CharSequence, java.util.Collection<android.text.util.Rfc822Token>);
+ method public static android.text.util.Rfc822Token[] tokenize(CharSequence);
}
}
@@ -47101,7 +47229,7 @@
method public void captureEndValues(android.transition.TransitionValues);
method public void captureStartValues(android.transition.TransitionValues);
method public boolean getResizeClip();
- method public deprecated void setReparent(boolean);
+ method @Deprecated public void setReparent(boolean);
method public void setResizeClip(boolean);
}
@@ -47174,14 +47302,14 @@
public final class Scene {
ctor public Scene(android.view.ViewGroup);
ctor public Scene(android.view.ViewGroup, android.view.View);
- ctor public deprecated Scene(android.view.ViewGroup, android.view.ViewGroup);
+ ctor @Deprecated public Scene(android.view.ViewGroup, android.view.ViewGroup);
method public void enter();
method public void exit();
- method public static android.transition.Scene getCurrentScene(android.view.ViewGroup);
+ method @Nullable public static android.transition.Scene getCurrentScene(@NonNull android.view.ViewGroup);
method public static android.transition.Scene getSceneForLayout(android.view.ViewGroup, int, android.content.Context);
method public android.view.ViewGroup getSceneRoot();
- method public void setEnterAction(java.lang.Runnable);
- method public void setExitAction(java.lang.Runnable);
+ method public void setEnterAction(Runnable);
+ method public void setExitAction(Runnable);
}
public class SidePropagation extends android.transition.VisibilityPropagation {
@@ -47204,8 +47332,8 @@
ctor public Transition(android.content.Context, android.util.AttributeSet);
method public android.transition.Transition addListener(android.transition.Transition.TransitionListener);
method public android.transition.Transition addTarget(int);
- method public android.transition.Transition addTarget(java.lang.String);
- method public android.transition.Transition addTarget(java.lang.Class);
+ method public android.transition.Transition addTarget(String);
+ method public android.transition.Transition addTarget(Class);
method public android.transition.Transition addTarget(android.view.View);
method public boolean canRemoveViews();
method public abstract void captureEndValues(android.transition.TransitionValues);
@@ -47214,16 +47342,16 @@
method public android.animation.Animator createAnimator(android.view.ViewGroup, android.transition.TransitionValues, android.transition.TransitionValues);
method public android.transition.Transition excludeChildren(int, boolean);
method public android.transition.Transition excludeChildren(android.view.View, boolean);
- method public android.transition.Transition excludeChildren(java.lang.Class, boolean);
+ method public android.transition.Transition excludeChildren(Class, boolean);
method public android.transition.Transition excludeTarget(int, boolean);
- method public android.transition.Transition excludeTarget(java.lang.String, boolean);
+ method public android.transition.Transition excludeTarget(String, boolean);
method public android.transition.Transition excludeTarget(android.view.View, boolean);
- method public android.transition.Transition excludeTarget(java.lang.Class, boolean);
+ method public android.transition.Transition excludeTarget(Class, boolean);
method public long getDuration();
method public android.graphics.Rect getEpicenter();
method public android.transition.Transition.EpicenterCallback getEpicenterCallback();
method public android.animation.TimeInterpolator getInterpolator();
- method public java.lang.String getName();
+ method public String getName();
method public android.transition.PathMotion getPathMotion();
method public android.transition.TransitionPropagation getPropagation();
method public long getStartDelay();
@@ -47231,14 +47359,14 @@
method public java.util.List<java.lang.String> getTargetNames();
method public java.util.List<java.lang.Class> getTargetTypes();
method public java.util.List<android.view.View> getTargets();
- method public java.lang.String[] getTransitionProperties();
+ method public String[] getTransitionProperties();
method public android.transition.TransitionValues getTransitionValues(android.view.View, boolean);
- method public boolean isTransitionRequired(android.transition.TransitionValues, android.transition.TransitionValues);
+ method public boolean isTransitionRequired(@Nullable android.transition.TransitionValues, @Nullable android.transition.TransitionValues);
method public android.transition.Transition removeListener(android.transition.Transition.TransitionListener);
method public android.transition.Transition removeTarget(int);
- method public android.transition.Transition removeTarget(java.lang.String);
+ method public android.transition.Transition removeTarget(String);
method public android.transition.Transition removeTarget(android.view.View);
- method public android.transition.Transition removeTarget(java.lang.Class);
+ method public android.transition.Transition removeTarget(Class);
method public android.transition.Transition setDuration(long);
method public void setEpicenterCallback(android.transition.Transition.EpicenterCallback);
method public android.transition.Transition setInterpolator(android.animation.TimeInterpolator);
@@ -47252,23 +47380,23 @@
field public static final int MATCH_NAME = 2; // 0x2
}
- public static abstract class Transition.EpicenterCallback {
+ public abstract static class Transition.EpicenterCallback {
ctor public Transition.EpicenterCallback();
method public abstract android.graphics.Rect onGetEpicenter(android.transition.Transition);
}
- public static abstract interface Transition.TransitionListener {
- method public abstract void onTransitionCancel(android.transition.Transition);
- method public abstract void onTransitionEnd(android.transition.Transition);
- method public abstract void onTransitionPause(android.transition.Transition);
- method public abstract void onTransitionResume(android.transition.Transition);
- method public abstract void onTransitionStart(android.transition.Transition);
+ public static interface Transition.TransitionListener {
+ method public void onTransitionCancel(android.transition.Transition);
+ method public void onTransitionEnd(android.transition.Transition);
+ method public void onTransitionPause(android.transition.Transition);
+ method public void onTransitionResume(android.transition.Transition);
+ method public void onTransitionStart(android.transition.Transition);
}
public class TransitionInflater {
method public static android.transition.TransitionInflater from(android.content.Context);
- method public android.transition.Transition inflateTransition(int);
- method public android.transition.TransitionManager inflateTransitionManager(int, android.view.ViewGroup);
+ method public android.transition.Transition inflateTransition(@TransitionRes int);
+ method public android.transition.TransitionManager inflateTransitionManager(@TransitionRes int, android.view.ViewGroup);
}
public abstract class TransitionListenerAdapter implements android.transition.Transition.TransitionListener {
@@ -47295,7 +47423,7 @@
public abstract class TransitionPropagation {
ctor public TransitionPropagation();
method public abstract void captureValues(android.transition.TransitionValues);
- method public abstract java.lang.String[] getPropagationProperties();
+ method public abstract String[] getPropagationProperties();
method public abstract long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
}
@@ -47305,8 +47433,8 @@
method public android.transition.TransitionSet addListener(android.transition.Transition.TransitionListener);
method public android.transition.TransitionSet addTarget(android.view.View);
method public android.transition.TransitionSet addTarget(int);
- method public android.transition.TransitionSet addTarget(java.lang.String);
- method public android.transition.TransitionSet addTarget(java.lang.Class);
+ method public android.transition.TransitionSet addTarget(String);
+ method public android.transition.TransitionSet addTarget(Class);
method public android.transition.TransitionSet addTransition(android.transition.Transition);
method public void captureEndValues(android.transition.TransitionValues);
method public void captureStartValues(android.transition.TransitionValues);
@@ -47317,8 +47445,8 @@
method public android.transition.TransitionSet removeListener(android.transition.Transition.TransitionListener);
method public android.transition.TransitionSet removeTarget(int);
method public android.transition.TransitionSet removeTarget(android.view.View);
- method public android.transition.TransitionSet removeTarget(java.lang.Class);
- method public android.transition.TransitionSet removeTarget(java.lang.String);
+ method public android.transition.TransitionSet removeTarget(Class);
+ method public android.transition.TransitionSet removeTarget(String);
method public android.transition.TransitionSet removeTransition(android.transition.Transition);
method public android.transition.TransitionSet setDuration(long);
method public android.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator);
@@ -47329,10 +47457,10 @@
}
public class TransitionValues {
- ctor public deprecated TransitionValues();
- ctor public TransitionValues(android.view.View);
- field public final java.util.Map<java.lang.String, java.lang.Object> values;
- field public android.view.View view;
+ ctor @Deprecated public TransitionValues();
+ ctor public TransitionValues(@NonNull android.view.View);
+ field @NonNull public final java.util.Map<java.lang.String,java.lang.Object> values;
+ field @NonNull public android.view.View view;
}
public abstract class Visibility extends android.transition.Transition {
@@ -47354,7 +47482,7 @@
public abstract class VisibilityPropagation extends android.transition.TransitionPropagation {
ctor public VisibilityPropagation();
method public void captureValues(android.transition.TransitionValues);
- method public java.lang.String[] getPropagationProperties();
+ method public String[] getPropagationProperties();
method public int getViewVisibility(android.transition.TransitionValues);
method public int getViewX(android.transition.TransitionValues);
method public int getViewY(android.transition.TransitionValues);
@@ -47366,38 +47494,38 @@
public class AndroidException extends java.lang.Exception {
ctor public AndroidException();
- ctor public AndroidException(java.lang.String);
- ctor public AndroidException(java.lang.String, java.lang.Throwable);
- ctor public AndroidException(java.lang.Exception);
+ ctor public AndroidException(String);
+ ctor public AndroidException(String, Throwable);
+ ctor public AndroidException(Exception);
}
public class AndroidRuntimeException extends java.lang.RuntimeException {
ctor public AndroidRuntimeException();
- ctor public AndroidRuntimeException(java.lang.String);
- ctor public AndroidRuntimeException(java.lang.String, java.lang.Throwable);
- ctor public AndroidRuntimeException(java.lang.Exception);
+ ctor public AndroidRuntimeException(String);
+ ctor public AndroidRuntimeException(String, Throwable);
+ ctor public AndroidRuntimeException(Exception);
}
- public final class ArrayMap<K, V> implements java.util.Map {
+ public final class ArrayMap<K, V> implements java.util.Map<K,V> {
ctor public ArrayMap();
ctor public ArrayMap(int);
- ctor public ArrayMap(android.util.ArrayMap<K, V>);
+ ctor public ArrayMap(android.util.ArrayMap<K,V>);
method public void clear();
method public boolean containsAll(java.util.Collection<?>);
- method public boolean containsKey(java.lang.Object);
- method public boolean containsValue(java.lang.Object);
+ method public boolean containsKey(Object);
+ method public boolean containsValue(Object);
method public void ensureCapacity(int);
- method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
- method public V get(java.lang.Object);
- method public int indexOfKey(java.lang.Object);
- method public int indexOfValue(java.lang.Object);
+ method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+ method public V get(Object);
+ method public int indexOfKey(Object);
+ method public int indexOfValue(Object);
method public boolean isEmpty();
method public K keyAt(int);
method public java.util.Set<K> keySet();
method public V put(K, V);
- method public void putAll(android.util.ArrayMap<? extends K, ? extends V>);
- method public void putAll(java.util.Map<? extends K, ? extends V>);
- method public V remove(java.lang.Object);
+ method public void putAll(android.util.ArrayMap<? extends K,? extends V>);
+ method public void putAll(java.util.Map<? extends K,? extends V>);
+ method public V remove(Object);
method public boolean removeAll(java.util.Collection<?>);
method public V removeAt(int);
method public boolean retainAll(java.util.Collection<?>);
@@ -47407,7 +47535,7 @@
method public java.util.Collection<V> values();
}
- public final class ArraySet<E> implements java.util.Collection java.util.Set {
+ public final class ArraySet<E> implements java.util.Collection<E> java.util.Set<E> {
ctor public ArraySet();
ctor public ArraySet(int);
ctor public ArraySet(android.util.ArraySet<E>);
@@ -47416,19 +47544,19 @@
method public void addAll(android.util.ArraySet<? extends E>);
method public boolean addAll(java.util.Collection<? extends E>);
method public void clear();
- method public boolean contains(java.lang.Object);
+ method public boolean contains(Object);
method public boolean containsAll(java.util.Collection<?>);
method public void ensureCapacity(int);
- method public int indexOf(java.lang.Object);
+ method public int indexOf(Object);
method public boolean isEmpty();
method public java.util.Iterator<E> iterator();
- method public boolean remove(java.lang.Object);
+ method public boolean remove(Object);
method public boolean removeAll(android.util.ArraySet<? extends E>);
method public boolean removeAll(java.util.Collection<?>);
method public E removeAt(int);
method public boolean retainAll(java.util.Collection<?>);
method public int size();
- method public java.lang.Object[] toArray();
+ method public Object[] toArray();
method public <T> T[] toArray(T[]);
method public E valueAt(int);
}
@@ -47444,40 +47572,40 @@
method public java.io.FileOutputStream startWrite() throws java.io.IOException;
}
- public abstract interface AttributeSet {
- method public abstract boolean getAttributeBooleanValue(java.lang.String, java.lang.String, boolean);
- method public abstract boolean getAttributeBooleanValue(int, boolean);
- method public abstract int getAttributeCount();
- method public abstract float getAttributeFloatValue(java.lang.String, java.lang.String, float);
- method public abstract float getAttributeFloatValue(int, float);
- method public abstract int getAttributeIntValue(java.lang.String, java.lang.String, int);
- method public abstract int getAttributeIntValue(int, int);
- method public abstract int getAttributeListValue(java.lang.String, java.lang.String, java.lang.String[], int);
- method public abstract int getAttributeListValue(int, java.lang.String[], int);
- method public abstract java.lang.String getAttributeName(int);
- method public abstract int getAttributeNameResource(int);
- method public default java.lang.String getAttributeNamespace(int);
- method public abstract int getAttributeResourceValue(java.lang.String, java.lang.String, int);
- method public abstract int getAttributeResourceValue(int, int);
- method public abstract int getAttributeUnsignedIntValue(java.lang.String, java.lang.String, int);
- method public abstract int getAttributeUnsignedIntValue(int, int);
- method public abstract java.lang.String getAttributeValue(int);
- method public abstract java.lang.String getAttributeValue(java.lang.String, java.lang.String);
- method public abstract java.lang.String getClassAttribute();
- method public abstract java.lang.String getIdAttribute();
- method public abstract int getIdAttributeResourceValue(int);
- method public abstract java.lang.String getPositionDescription();
- method public abstract int getStyleAttribute();
+ public interface AttributeSet {
+ method public boolean getAttributeBooleanValue(String, String, boolean);
+ method public boolean getAttributeBooleanValue(int, boolean);
+ method public int getAttributeCount();
+ method public float getAttributeFloatValue(String, String, float);
+ method public float getAttributeFloatValue(int, float);
+ method public int getAttributeIntValue(String, String, int);
+ method public int getAttributeIntValue(int, int);
+ method public int getAttributeListValue(String, String, String[], int);
+ method public int getAttributeListValue(int, String[], int);
+ method public String getAttributeName(int);
+ method public int getAttributeNameResource(int);
+ method public default String getAttributeNamespace(int);
+ method public int getAttributeResourceValue(String, String, int);
+ method public int getAttributeResourceValue(int, int);
+ method public int getAttributeUnsignedIntValue(String, String, int);
+ method public int getAttributeUnsignedIntValue(int, int);
+ method public String getAttributeValue(int);
+ method public String getAttributeValue(String, String);
+ method public String getClassAttribute();
+ method public String getIdAttribute();
+ method public int getIdAttributeResourceValue(int);
+ method public String getPositionDescription();
+ method public int getStyleAttribute();
}
public class Base64 {
- method public static byte[] decode(java.lang.String, int);
+ method public static byte[] decode(String, int);
method public static byte[] decode(byte[], int);
method public static byte[] decode(byte[], int, int, int);
method public static byte[] encode(byte[], int);
method public static byte[] encode(byte[], int, int, int);
- method public static java.lang.String encodeToString(byte[], int);
- method public static java.lang.String encodeToString(byte[], int, int, int);
+ method public static String encodeToString(byte[], int);
+ method public static String encodeToString(byte[], int, int, int);
field public static final int CRLF = 4; // 0x4
field public static final int DEFAULT = 0; // 0x0
field public static final int NO_CLOSE = 16; // 0x10
@@ -47487,13 +47615,12 @@
}
public class Base64DataException extends java.io.IOException {
- ctor public Base64DataException(java.lang.String);
+ ctor public Base64DataException(String);
}
public class Base64InputStream extends java.io.FilterInputStream {
ctor public Base64InputStream(java.io.InputStream, int);
method public int available();
- method public void mark(int);
method public void reset();
}
@@ -47501,16 +47628,16 @@
ctor public Base64OutputStream(java.io.OutputStream, int);
}
- public final deprecated class Config {
- field public static final deprecated boolean DEBUG = false;
- field public static final deprecated boolean LOGD = true;
- field public static final deprecated boolean LOGV = false;
- field public static final deprecated boolean PROFILE = false;
- field public static final deprecated boolean RELEASE = true;
+ @Deprecated public final class Config {
+ field @Deprecated public static final boolean DEBUG = false;
+ field @Deprecated public static final boolean LOGD = true;
+ field @Deprecated public static final boolean LOGV = false;
+ field @Deprecated public static final boolean PROFILE = false;
+ field @Deprecated public static final boolean RELEASE = true;
}
public class DebugUtils {
- method public static boolean isObjectSelected(java.lang.Object);
+ method public static boolean isObjectSelected(Object);
}
public class DisplayMetrics {
@@ -47547,108 +47674,108 @@
}
public class EventLog {
- method public static int getTagCode(java.lang.String);
- method public static java.lang.String getTagName(int);
+ method public static int getTagCode(String);
+ method public static String getTagName(int);
method public static void readEvents(int[], java.util.Collection<android.util.EventLog.Event>) throws java.io.IOException;
method public static int writeEvent(int, int);
method public static int writeEvent(int, long);
method public static int writeEvent(int, float);
- method public static int writeEvent(int, java.lang.String);
+ method public static int writeEvent(int, String);
method public static int writeEvent(int, java.lang.Object...);
}
public static final class EventLog.Event {
- method public synchronized java.lang.Object getData();
+ method public Object getData();
method public int getProcessId();
method public int getTag();
method public int getThreadId();
method public long getTimeNanos();
}
- public deprecated class EventLogTags {
- ctor public EventLogTags() throws java.io.IOException;
- ctor public EventLogTags(java.io.BufferedReader) throws java.io.IOException;
- method public android.util.EventLogTags.Description get(java.lang.String);
- method public android.util.EventLogTags.Description get(int);
+ @Deprecated public class EventLogTags {
+ ctor @Deprecated public EventLogTags() throws java.io.IOException;
+ ctor @Deprecated public EventLogTags(java.io.BufferedReader) throws java.io.IOException;
+ method @Deprecated public android.util.EventLogTags.Description get(String);
+ method @Deprecated public android.util.EventLogTags.Description get(int);
}
- public static class EventLogTags.Description {
- field public final java.lang.String mName;
- field public final int mTag;
+ @Deprecated public static class EventLogTags.Description {
+ field @Deprecated public final String mName;
+ field @Deprecated public final int mTag;
}
- public deprecated class FloatMath {
+ @Deprecated public class FloatMath {
}
- public abstract class FloatProperty<T> extends android.util.Property {
- ctor public FloatProperty(java.lang.String);
- method public final void set(T, java.lang.Float);
+ public abstract class FloatProperty<T> extends android.util.Property<T,java.lang.Float> {
+ ctor public FloatProperty(String);
+ method public final void set(T, Float);
method public abstract void setValue(T, float);
}
- public final class Half extends java.lang.Number implements java.lang.Comparable {
- ctor public Half(short);
+ public final class Half extends java.lang.Number implements java.lang.Comparable<android.util.Half> {
+ ctor public Half(@HalfFloat short);
ctor public Half(float);
ctor public Half(double);
- ctor public Half(java.lang.String) throws java.lang.NumberFormatException;
- method public static short abs(short);
- method public static short ceil(short);
- method public static int compare(short, short);
- method public int compareTo(android.util.Half);
- method public static short copySign(short, short);
+ ctor public Half(@NonNull String) throws java.lang.NumberFormatException;
+ method @HalfFloat public static short abs(@HalfFloat short);
+ method @HalfFloat public static short ceil(@HalfFloat short);
+ method public static int compare(@HalfFloat short, @HalfFloat short);
+ method public int compareTo(@NonNull android.util.Half);
+ method @HalfFloat public static short copySign(@HalfFloat short, @HalfFloat short);
method public double doubleValue();
- method public static boolean equals(short, short);
+ method public static boolean equals(@HalfFloat short, @HalfFloat short);
method public float floatValue();
- method public static short floor(short);
- method public static int getExponent(short);
- method public static int getSign(short);
- method public static int getSignificand(short);
- method public static boolean greater(short, short);
- method public static boolean greaterEquals(short, short);
- method public static int halfToIntBits(short);
- method public static int halfToRawIntBits(short);
- method public static short halfToShortBits(short);
- method public short halfValue();
- method public static int hashCode(short);
- method public static short intBitsToHalf(int);
+ method @HalfFloat public static short floor(@HalfFloat short);
+ method public static int getExponent(@HalfFloat short);
+ method public static int getSign(@HalfFloat short);
+ method public static int getSignificand(@HalfFloat short);
+ method public static boolean greater(@HalfFloat short, @HalfFloat short);
+ method public static boolean greaterEquals(@HalfFloat short, @HalfFloat short);
+ method public static int halfToIntBits(@HalfFloat short);
+ method public static int halfToRawIntBits(@HalfFloat short);
+ method @HalfFloat public static short halfToShortBits(@HalfFloat short);
+ method @HalfFloat public short halfValue();
+ method public static int hashCode(@HalfFloat short);
+ method @HalfFloat public static short intBitsToHalf(int);
method public int intValue();
- method public static boolean isInfinite(short);
+ method public static boolean isInfinite(@HalfFloat short);
method public boolean isNaN();
- method public static boolean isNaN(short);
- method public static boolean isNormalized(short);
- method public static boolean less(short, short);
- method public static boolean lessEquals(short, short);
+ method public static boolean isNaN(@HalfFloat short);
+ method public static boolean isNormalized(@HalfFloat short);
+ method public static boolean less(@HalfFloat short, @HalfFloat short);
+ method public static boolean lessEquals(@HalfFloat short, @HalfFloat short);
method public long longValue();
- method public static short max(short, short);
- method public static short min(short, short);
- method public static short parseHalf(java.lang.String) throws java.lang.NumberFormatException;
- method public static short round(short);
- method public static float toFloat(short);
- method public static short toHalf(float);
- method public static java.lang.String toHexString(short);
- method public static java.lang.String toString(short);
- method public static short trunc(short);
- method public static android.util.Half valueOf(short);
- method public static android.util.Half valueOf(float);
- method public static android.util.Half valueOf(java.lang.String);
- field public static final short EPSILON = 5120; // 0x1400
- field public static final short LOWEST_VALUE = -1025; // 0xfffffbff
+ method @HalfFloat public static short max(@HalfFloat short, @HalfFloat short);
+ method @HalfFloat public static short min(@HalfFloat short, @HalfFloat short);
+ method @HalfFloat public static short parseHalf(@NonNull String) throws java.lang.NumberFormatException;
+ method @HalfFloat public static short round(@HalfFloat short);
+ method public static float toFloat(@HalfFloat short);
+ method @HalfFloat public static short toHalf(float);
+ method @NonNull public static String toHexString(@HalfFloat short);
+ method @NonNull public static String toString(@HalfFloat short);
+ method @HalfFloat public static short trunc(@HalfFloat short);
+ method @NonNull public static android.util.Half valueOf(@HalfFloat short);
+ method @NonNull public static android.util.Half valueOf(float);
+ method @NonNull public static android.util.Half valueOf(@NonNull String);
+ field @HalfFloat public static final short EPSILON = 5120; // 0x1400
+ field @HalfFloat public static final short LOWEST_VALUE = -1025; // 0xfffffbff
field public static final int MAX_EXPONENT = 15; // 0xf
- field public static final short MAX_VALUE = 31743; // 0x7bff
+ field @HalfFloat public static final short MAX_VALUE = 31743; // 0x7bff
field public static final int MIN_EXPONENT = -14; // 0xfffffff2
- field public static final short MIN_NORMAL = 1024; // 0x400
- field public static final short MIN_VALUE = 1; // 0x1
- field public static final short NEGATIVE_INFINITY = -1024; // 0xfffffc00
- field public static final short NEGATIVE_ZERO = -32768; // 0xffff8000
- field public static final short NaN = 32256; // 0x7e00
- field public static final short POSITIVE_INFINITY = 31744; // 0x7c00
- field public static final short POSITIVE_ZERO = 0; // 0x0
+ field @HalfFloat public static final short MIN_NORMAL = 1024; // 0x400
+ field @HalfFloat public static final short MIN_VALUE = 1; // 0x1
+ field @HalfFloat public static final short NEGATIVE_INFINITY = -1024; // 0xfffffc00
+ field @HalfFloat public static final short NEGATIVE_ZERO = -32768; // 0xffff8000
+ field @HalfFloat public static final short NaN = 32256; // 0x7e00
+ field @HalfFloat public static final short POSITIVE_INFINITY = 31744; // 0x7c00
+ field @HalfFloat public static final short POSITIVE_ZERO = 0; // 0x0
field public static final int SIZE = 16; // 0x10
}
- public abstract class IntProperty<T> extends android.util.Property {
- ctor public IntProperty(java.lang.String);
- method public final void set(T, java.lang.Integer);
+ public abstract class IntProperty<T> extends android.util.Property<T,java.lang.Integer> {
+ ctor public IntProperty(String);
+ method public final void set(T, Integer);
method public abstract void setValue(T, int);
}
@@ -47665,17 +47792,15 @@
method public double nextDouble() throws java.io.IOException;
method public int nextInt() throws java.io.IOException;
method public long nextLong() throws java.io.IOException;
- method public java.lang.String nextName() throws java.io.IOException;
+ method public String nextName() throws java.io.IOException;
method public void nextNull() throws java.io.IOException;
- method public java.lang.String nextString() throws java.io.IOException;
+ method public String nextString() throws java.io.IOException;
method public android.util.JsonToken peek() throws java.io.IOException;
method public void setLenient(boolean);
method public void skipValue() throws java.io.IOException;
}
- public final class JsonToken extends java.lang.Enum {
- method public static android.util.JsonToken valueOf(java.lang.String);
- method public static final android.util.JsonToken[] values();
+ public enum JsonToken {
enum_constant public static final android.util.JsonToken BEGIN_ARRAY;
enum_constant public static final android.util.JsonToken BEGIN_OBJECT;
enum_constant public static final android.util.JsonToken BOOLEAN;
@@ -47697,15 +47822,15 @@
method public android.util.JsonWriter endObject() throws java.io.IOException;
method public void flush() throws java.io.IOException;
method public boolean isLenient();
- method public android.util.JsonWriter name(java.lang.String) throws java.io.IOException;
+ method public android.util.JsonWriter name(String) throws java.io.IOException;
method public android.util.JsonWriter nullValue() throws java.io.IOException;
- method public void setIndent(java.lang.String);
+ method public void setIndent(String);
method public void setLenient(boolean);
- method public android.util.JsonWriter value(java.lang.String) throws java.io.IOException;
+ method public android.util.JsonWriter value(String) throws java.io.IOException;
method public android.util.JsonWriter value(boolean) throws java.io.IOException;
method public android.util.JsonWriter value(double) throws java.io.IOException;
method public android.util.JsonWriter value(long) throws java.io.IOException;
- method public android.util.JsonWriter value(java.lang.Number) throws java.io.IOException;
+ method public android.util.JsonWriter value(Number) throws java.io.IOException;
}
public final class LayoutDirection {
@@ -47716,23 +47841,23 @@
}
public final class Log {
- method public static int d(java.lang.String, java.lang.String);
- method public static int d(java.lang.String, java.lang.String, java.lang.Throwable);
- method public static int e(java.lang.String, java.lang.String);
- method public static int e(java.lang.String, java.lang.String, java.lang.Throwable);
- method public static java.lang.String getStackTraceString(java.lang.Throwable);
- method public static int i(java.lang.String, java.lang.String);
- method public static int i(java.lang.String, java.lang.String, java.lang.Throwable);
- method public static boolean isLoggable(java.lang.String, int);
- method public static int println(int, java.lang.String, java.lang.String);
- method public static int v(java.lang.String, java.lang.String);
- method public static int v(java.lang.String, java.lang.String, java.lang.Throwable);
- method public static int w(java.lang.String, java.lang.String);
- method public static int w(java.lang.String, java.lang.String, java.lang.Throwable);
- method public static int w(java.lang.String, java.lang.Throwable);
- method public static int wtf(java.lang.String, java.lang.String);
- method public static int wtf(java.lang.String, java.lang.Throwable);
- method public static int wtf(java.lang.String, java.lang.String, java.lang.Throwable);
+ method public static int d(@Nullable String, @NonNull String);
+ method public static int d(@Nullable String, @Nullable String, @Nullable Throwable);
+ method public static int e(@Nullable String, @NonNull String);
+ method public static int e(@Nullable String, @Nullable String, @Nullable Throwable);
+ method @NonNull public static String getStackTraceString(@Nullable Throwable);
+ method public static int i(@Nullable String, @NonNull String);
+ method public static int i(@Nullable String, @Nullable String, @Nullable Throwable);
+ method public static boolean isLoggable(@Nullable @Size(max=23, apis="..23") String, int);
+ method public static int println(int, @Nullable String, @NonNull String);
+ method public static int v(@Nullable String, @NonNull String);
+ method public static int v(@Nullable String, @Nullable String, @Nullable Throwable);
+ method public static int w(@Nullable String, @NonNull String);
+ method public static int w(@Nullable String, @Nullable String, @Nullable Throwable);
+ method public static int w(@Nullable String, @Nullable Throwable);
+ method public static int wtf(@Nullable String, @Nullable String);
+ method public static int wtf(@Nullable String, @NonNull Throwable);
+ method public static int wtf(@Nullable String, @Nullable String, @Nullable Throwable);
field public static final int ASSERT = 7; // 0x7
field public static final int DEBUG = 3; // 0x3
field public static final int ERROR = 6; // 0x6
@@ -47742,8 +47867,8 @@
}
public class LogPrinter implements android.util.Printer {
- ctor public LogPrinter(int, java.lang.String);
- method public void println(java.lang.String);
+ ctor public LogPrinter(int, String);
+ method public void println(String);
}
public class LongSparseArray<E> implements java.lang.Cloneable {
@@ -47769,27 +47894,27 @@
public class LruCache<K, V> {
ctor public LruCache(int);
method protected V create(K);
- method public final synchronized int createCount();
+ method public final int createCount();
method protected void entryRemoved(boolean, K, V, V);
method public final void evictAll();
- method public final synchronized int evictionCount();
+ method public final int evictionCount();
method public final V get(K);
- method public final synchronized int hitCount();
- method public final synchronized int maxSize();
- method public final synchronized int missCount();
+ method public final int hitCount();
+ method public final int maxSize();
+ method public final int missCount();
method public final V put(K, V);
- method public final synchronized int putCount();
+ method public final int putCount();
method public final V remove(K);
method public void resize(int);
- method public final synchronized int size();
+ method public final int size();
method protected int sizeOf(K, V);
- method public final synchronized java.util.Map<K, V> snapshot();
- method public final synchronized java.lang.String toString();
+ method public final java.util.Map<K,V> snapshot();
+ method public final String toString();
method public void trimToSize(int);
}
public final class MalformedJsonException extends java.io.IOException {
- ctor public MalformedJsonException(java.lang.String);
+ ctor public MalformedJsonException(String);
}
public class MonthDisplayHelper {
@@ -47810,92 +47935,92 @@
method public void previousMonth();
}
- public final deprecated class MutableBoolean {
- ctor public MutableBoolean(boolean);
- field public boolean value;
+ @Deprecated public final class MutableBoolean {
+ ctor @Deprecated public MutableBoolean(boolean);
+ field @Deprecated public boolean value;
}
- public final deprecated class MutableByte {
- ctor public MutableByte(byte);
- field public byte value;
+ @Deprecated public final class MutableByte {
+ ctor @Deprecated public MutableByte(byte);
+ field @Deprecated public byte value;
}
- public final deprecated class MutableChar {
- ctor public MutableChar(char);
- field public char value;
+ @Deprecated public final class MutableChar {
+ ctor @Deprecated public MutableChar(char);
+ field @Deprecated public char value;
}
- public final deprecated class MutableDouble {
- ctor public MutableDouble(double);
- field public double value;
+ @Deprecated public final class MutableDouble {
+ ctor @Deprecated public MutableDouble(double);
+ field @Deprecated public double value;
}
- public final deprecated class MutableFloat {
- ctor public MutableFloat(float);
- field public float value;
+ @Deprecated public final class MutableFloat {
+ ctor @Deprecated public MutableFloat(float);
+ field @Deprecated public float value;
}
- public final deprecated class MutableInt {
- ctor public MutableInt(int);
- field public int value;
+ @Deprecated public final class MutableInt {
+ ctor @Deprecated public MutableInt(int);
+ field @Deprecated public int value;
}
- public final deprecated class MutableLong {
- ctor public MutableLong(long);
- field public long value;
+ @Deprecated public final class MutableLong {
+ ctor @Deprecated public MutableLong(long);
+ field @Deprecated public long value;
}
- public final deprecated class MutableShort {
- ctor public MutableShort(short);
- field public short value;
+ @Deprecated public final class MutableShort {
+ ctor @Deprecated public MutableShort(short);
+ field @Deprecated public short value;
}
public class NoSuchPropertyException extends java.lang.RuntimeException {
- ctor public NoSuchPropertyException(java.lang.String);
+ ctor public NoSuchPropertyException(String);
}
public class Pair<F, S> {
ctor public Pair(F, S);
- method public static <A, B> android.util.Pair<A, B> create(A, B);
+ method public static <A, B> android.util.Pair<A,B> create(A, B);
field public final F first;
field public final S second;
}
public class Patterns {
- method public static final java.lang.String concatGroups(java.util.regex.Matcher);
- method public static final java.lang.String digitsAndPlusOnly(java.util.regex.Matcher);
+ method public static final String concatGroups(java.util.regex.Matcher);
+ method public static final String digitsAndPlusOnly(java.util.regex.Matcher);
field public static final java.util.regex.Pattern DOMAIN_NAME;
field public static final java.util.regex.Pattern EMAIL_ADDRESS;
- field public static final deprecated java.lang.String GOOD_IRI_CHAR = "a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef";
+ field @Deprecated public static final String GOOD_IRI_CHAR = "a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef";
field public static final java.util.regex.Pattern IP_ADDRESS;
field public static final java.util.regex.Pattern PHONE;
- field public static final deprecated java.util.regex.Pattern TOP_LEVEL_DOMAIN;
- field public static final deprecated java.lang.String TOP_LEVEL_DOMAIN_STR = "((aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(biz|b[abdefghijmnorstvwyz])|(cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(edu|e[cegrstu])|f[ijkmor]|(gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(info|int|i[delmnoqrst])|(jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(name|net|n[acefgilopruz])|(org|om)|(pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw])";
- field public static final deprecated java.lang.String TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL = "(?:(?:aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|(?:jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(?:mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om)|(?:pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(?:tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(?:\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw]))";
+ field @Deprecated public static final java.util.regex.Pattern TOP_LEVEL_DOMAIN;
+ field @Deprecated public static final String TOP_LEVEL_DOMAIN_STR = "((aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(biz|b[abdefghijmnorstvwyz])|(cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(edu|e[cegrstu])|f[ijkmor]|(gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(info|int|i[delmnoqrst])|(jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(name|net|n[acefgilopruz])|(org|om)|(pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw])";
+ field @Deprecated public static final String TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL = "(?:(?:aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|(?:jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(?:mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om)|(?:pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(?:tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(?:\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw]))";
field public static final java.util.regex.Pattern WEB_URL;
}
public class PrintStreamPrinter implements android.util.Printer {
ctor public PrintStreamPrinter(java.io.PrintStream);
- method public void println(java.lang.String);
+ method public void println(String);
}
public class PrintWriterPrinter implements android.util.Printer {
ctor public PrintWriterPrinter(java.io.PrintWriter);
- method public void println(java.lang.String);
+ method public void println(String);
}
- public abstract interface Printer {
- method public abstract void println(java.lang.String);
+ public interface Printer {
+ method public void println(String);
}
public abstract class Property<T, V> {
- ctor public Property(java.lang.Class<V>, java.lang.String);
+ ctor public Property(Class<V>, String);
method public abstract V get(T);
- method public java.lang.String getName();
- method public java.lang.Class<V> getType();
+ method public String getName();
+ method public Class<V> getType();
method public boolean isReadOnly();
- method public static <T, V> android.util.Property<T, V> of(java.lang.Class<T>, java.lang.Class<V>, java.lang.String);
+ method public static <T, V> android.util.Property<T,V> of(Class<T>, Class<V>, String);
method public void set(T, V);
}
@@ -47914,7 +48039,7 @@
method public android.util.Range<T> intersect(T, T);
}
- public final class Rational extends java.lang.Number implements java.lang.Comparable {
+ public final class Rational extends java.lang.Number implements java.lang.Comparable<android.util.Rational> {
ctor public Rational(int, int);
method public int compareTo(android.util.Rational);
method public double doubleValue();
@@ -47927,7 +48052,7 @@
method public boolean isNaN();
method public boolean isZero();
method public long longValue();
- method public static android.util.Rational parseRational(java.lang.String) throws java.lang.NumberFormatException;
+ method public static android.util.Rational parseRational(String) throws java.lang.NumberFormatException;
field public static final android.util.Rational NEGATIVE_INFINITY;
field public static final android.util.Rational NaN;
field public static final android.util.Rational POSITIVE_INFINITY;
@@ -47938,14 +48063,14 @@
ctor public Size(int, int);
method public int getHeight();
method public int getWidth();
- method public static android.util.Size parseSize(java.lang.String) throws java.lang.NumberFormatException;
+ method public static android.util.Size parseSize(String) throws java.lang.NumberFormatException;
}
public final class SizeF {
ctor public SizeF(float, float);
method public float getHeight();
method public float getWidth();
- method public static android.util.SizeF parseSizeF(java.lang.String) throws java.lang.NumberFormatException;
+ method public static android.util.SizeF parseSizeF(String) throws java.lang.NumberFormatException;
}
public class SparseArray<E> implements java.lang.Cloneable {
@@ -48026,7 +48151,7 @@
}
public class StateSet {
- method public static java.lang.String dump(int[]);
+ method public static String dump(int[]);
method public static boolean isWildCard(int[]);
method public static boolean stateSetMatches(int[], int[]);
method public static boolean stateSetMatches(int[], int);
@@ -48042,32 +48167,32 @@
}
public class StringBuilderPrinter implements android.util.Printer {
- ctor public StringBuilderPrinter(java.lang.StringBuilder);
- method public void println(java.lang.String);
+ ctor public StringBuilderPrinter(StringBuilder);
+ method public void println(String);
}
public class TimeFormatException extends java.lang.RuntimeException {
}
public class TimeUtils {
- method public static java.util.TimeZone getTimeZone(int, boolean, long, java.lang.String);
- method public static java.lang.String getTimeZoneDatabaseVersion();
- method public static java.util.List<java.lang.String> getTimeZoneIdsForCountryCode(java.lang.String);
+ method public static java.util.TimeZone getTimeZone(int, boolean, long, String);
+ method public static String getTimeZoneDatabaseVersion();
+ method @Nullable public static java.util.List<java.lang.String> getTimeZoneIdsForCountryCode(@NonNull String);
}
public class TimingLogger {
- ctor public TimingLogger(java.lang.String, java.lang.String);
- method public void addSplit(java.lang.String);
+ ctor public TimingLogger(String, String);
+ method public void addSplit(String);
method public void dumpToLog();
- method public void reset(java.lang.String, java.lang.String);
+ method public void reset(String, String);
method public void reset();
}
public class TypedValue {
ctor public TypedValue();
method public static float applyDimension(int, float, android.util.DisplayMetrics);
- method public final java.lang.CharSequence coerceToString();
- method public static final java.lang.String coerceToString(int, int);
+ method public final CharSequence coerceToString();
+ method public static final String coerceToString(int, int);
method public static float complexToDimension(int, android.util.DisplayMetrics);
method public static int complexToDimensionPixelOffset(int, android.util.DisplayMetrics);
method public static int complexToDimensionPixelSize(int, android.util.DisplayMetrics);
@@ -48123,25 +48248,24 @@
field public int changingConfigurations;
field public int data;
field public int density;
- field public int resourceId;
- field public java.lang.CharSequence string;
+ field @AnyRes public int resourceId;
+ field public int sourceStyleResourceId;
+ field public CharSequence string;
field public int type;
}
public class Xml {
method public static android.util.AttributeSet asAttributeSet(org.xmlpull.v1.XmlPullParser);
- method public static android.util.Xml.Encoding findEncodingByName(java.lang.String) throws java.io.UnsupportedEncodingException;
+ method public static android.util.Xml.Encoding findEncodingByName(String) throws java.io.UnsupportedEncodingException;
method public static org.xmlpull.v1.XmlPullParser newPullParser();
method public static org.xmlpull.v1.XmlSerializer newSerializer();
- method public static void parse(java.lang.String, org.xml.sax.ContentHandler) throws org.xml.sax.SAXException;
+ method public static void parse(String, org.xml.sax.ContentHandler) throws org.xml.sax.SAXException;
method public static void parse(java.io.Reader, org.xml.sax.ContentHandler) throws java.io.IOException, org.xml.sax.SAXException;
method public static void parse(java.io.InputStream, android.util.Xml.Encoding, org.xml.sax.ContentHandler) throws java.io.IOException, org.xml.sax.SAXException;
- field public static java.lang.String FEATURE_RELAXED;
+ field public static String FEATURE_RELAXED;
}
- public static final class Xml.Encoding extends java.lang.Enum {
- method public static android.util.Xml.Encoding valueOf(java.lang.String);
- method public static final android.util.Xml.Encoding[] values();
+ public enum Xml.Encoding {
enum_constant public static final android.util.Xml.Encoding ISO_8859_1;
enum_constant public static final android.util.Xml.Encoding US_ASCII;
enum_constant public static final android.util.Xml.Encoding UTF_16;
@@ -48155,7 +48279,7 @@
public abstract class AbsSavedState implements android.os.Parcelable {
ctor protected AbsSavedState(android.os.Parcelable);
ctor protected AbsSavedState(android.os.Parcel);
- ctor protected AbsSavedState(android.os.Parcel, java.lang.ClassLoader);
+ ctor protected AbsSavedState(android.os.Parcel, ClassLoader);
method public int describeContents();
method public final android.os.Parcelable getSuperState();
method public void writeToParcel(android.os.Parcel, int);
@@ -48169,9 +48293,9 @@
method public abstract android.view.View getCustomView();
method public abstract android.view.Menu getMenu();
method public abstract android.view.MenuInflater getMenuInflater();
- method public abstract java.lang.CharSequence getSubtitle();
- method public java.lang.Object getTag();
- method public abstract java.lang.CharSequence getTitle();
+ method public abstract CharSequence getSubtitle();
+ method public Object getTag();
+ method public abstract CharSequence getTitle();
method public boolean getTitleOptionalHint();
method public int getType();
method public void hide(long);
@@ -48180,11 +48304,11 @@
method public boolean isTitleOptional();
method public void onWindowFocusChanged(boolean);
method public abstract void setCustomView(android.view.View);
- method public abstract void setSubtitle(java.lang.CharSequence);
- method public abstract void setSubtitle(int);
- method public void setTag(java.lang.Object);
- method public abstract void setTitle(java.lang.CharSequence);
- method public abstract void setTitle(int);
+ method public abstract void setSubtitle(CharSequence);
+ method public abstract void setSubtitle(@StringRes int);
+ method public void setTag(Object);
+ method public abstract void setTitle(CharSequence);
+ method public abstract void setTitle(@StringRes int);
method public void setTitleOptionalHint(boolean);
method public void setType(int);
field public static final int DEFAULT_HIDE_DURATION = -1; // 0xffffffff
@@ -48192,14 +48316,14 @@
field public static final int TYPE_PRIMARY = 0; // 0x0
}
- public static abstract interface ActionMode.Callback {
- method public abstract boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
- method public abstract boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
- method public abstract void onDestroyActionMode(android.view.ActionMode);
- method public abstract boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
+ public static interface ActionMode.Callback {
+ method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
+ method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
+ method public void onDestroyActionMode(android.view.ActionMode);
+ method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
}
- public static abstract class ActionMode.Callback2 implements android.view.ActionMode.Callback {
+ public abstract static class ActionMode.Callback2 implements android.view.ActionMode.Callback {
ctor public ActionMode.Callback2();
method public void onGetContentRect(android.view.ActionMode, android.view.View, android.graphics.Rect);
}
@@ -48208,7 +48332,7 @@
ctor public ActionProvider(android.content.Context);
method public boolean hasSubMenu();
method public boolean isVisible();
- method public abstract deprecated android.view.View onCreateActionView();
+ method @Deprecated public abstract android.view.View onCreateActionView();
method public android.view.View onCreateActionView(android.view.MenuItem);
method public boolean onPerformDefaultAction();
method public void onPrepareSubMenu(android.view.SubMenu);
@@ -48217,8 +48341,8 @@
method public void setVisibilityListener(android.view.ActionProvider.VisibilityListener);
}
- public static abstract interface ActionProvider.VisibilityListener {
- method public abstract void onActionProviderVisibilityChanged(boolean);
+ public static interface ActionProvider.VisibilityListener {
+ method public void onActionProviderVisibilityChanged(boolean);
}
public final class Choreographer {
@@ -48228,30 +48352,30 @@
method public void removeFrameCallback(android.view.Choreographer.FrameCallback);
}
- public static abstract interface Choreographer.FrameCallback {
- method public abstract void doFrame(long);
+ public static interface Choreographer.FrameCallback {
+ method public void doFrame(long);
}
- public abstract interface CollapsibleActionView {
- method public abstract void onActionViewCollapsed();
- method public abstract void onActionViewExpanded();
+ public interface CollapsibleActionView {
+ method public void onActionViewCollapsed();
+ method public void onActionViewExpanded();
}
- public abstract interface ContextMenu implements android.view.Menu {
- method public abstract void clearHeader();
- method public abstract android.view.ContextMenu setHeaderIcon(int);
- method public abstract android.view.ContextMenu setHeaderIcon(android.graphics.drawable.Drawable);
- method public abstract android.view.ContextMenu setHeaderTitle(int);
- method public abstract android.view.ContextMenu setHeaderTitle(java.lang.CharSequence);
- method public abstract android.view.ContextMenu setHeaderView(android.view.View);
+ public interface ContextMenu extends android.view.Menu {
+ method public void clearHeader();
+ method public android.view.ContextMenu setHeaderIcon(@DrawableRes int);
+ method public android.view.ContextMenu setHeaderIcon(android.graphics.drawable.Drawable);
+ method public android.view.ContextMenu setHeaderTitle(@StringRes int);
+ method public android.view.ContextMenu setHeaderTitle(CharSequence);
+ method public android.view.ContextMenu setHeaderView(android.view.View);
}
- public static abstract interface ContextMenu.ContextMenuInfo {
+ public static interface ContextMenu.ContextMenuInfo {
}
public class ContextThemeWrapper extends android.content.ContextWrapper {
ctor public ContextThemeWrapper();
- ctor public ContextThemeWrapper(android.content.Context, int);
+ ctor public ContextThemeWrapper(android.content.Context, @StyleRes int);
ctor public ContextThemeWrapper(android.content.Context, android.content.res.Resources.Theme);
method public void applyOverrideConfiguration(android.content.res.Configuration);
method protected void onApplyThemeResource(android.content.res.Resources.Theme, int, boolean);
@@ -48260,16 +48384,16 @@
public final class Display {
method public long getAppVsyncOffsetNanos();
method public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
- method public android.view.DisplayCutout getCutout();
+ method @Nullable public android.view.DisplayCutout getCutout();
method public int getDisplayId();
method public int getFlags();
method public android.view.Display.HdrCapabilities getHdrCapabilities();
- method public deprecated int getHeight();
+ method @Deprecated public int getHeight();
method public void getMetrics(android.util.DisplayMetrics);
method public android.view.Display.Mode getMode();
- method public java.lang.String getName();
- method public deprecated int getOrientation();
- method public deprecated int getPixelFormat();
+ method public String getName();
+ method @Deprecated public int getOrientation();
+ method @Deprecated public int getPixelFormat();
method public long getPresentationDeadlineNanos();
method public void getRealMetrics(android.util.DisplayMetrics);
method public void getRealSize(android.graphics.Point);
@@ -48279,8 +48403,8 @@
method public void getSize(android.graphics.Point);
method public int getState();
method public android.view.Display.Mode[] getSupportedModes();
- method public deprecated float[] getSupportedRefreshRates();
- method public deprecated int getWidth();
+ method @Deprecated public float[] getSupportedRefreshRates();
+ method @Deprecated public int getWidth();
method public boolean isHdr();
method public boolean isValid();
method public boolean isWideColorGamut();
@@ -48310,6 +48434,7 @@
field public static final android.os.Parcelable.Creator<android.view.Display.HdrCapabilities> CREATOR;
field public static final int HDR_TYPE_DOLBY_VISION = 1; // 0x1
field public static final int HDR_TYPE_HDR10 = 2; // 0x2
+ field public static final int HDR_TYPE_HDR10_PLUS = 4; // 0x4
field public static final int HDR_TYPE_HLG = 3; // 0x3
field public static final float INVALID_LUMINANCE = -1.0f;
}
@@ -48325,13 +48450,13 @@
}
public final class DisplayCutout {
- ctor public DisplayCutout(android.graphics.Insets, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect);
- ctor public deprecated DisplayCutout(android.graphics.Rect, java.util.List<android.graphics.Rect>);
- method public android.graphics.Rect getBoundingRectBottom();
- method public android.graphics.Rect getBoundingRectLeft();
- method public android.graphics.Rect getBoundingRectRight();
- method public android.graphics.Rect getBoundingRectTop();
- method public java.util.List<android.graphics.Rect> getBoundingRects();
+ ctor public DisplayCutout(@NonNull android.graphics.Insets, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect);
+ ctor @Deprecated public DisplayCutout(@Nullable android.graphics.Rect, @Nullable java.util.List<android.graphics.Rect>);
+ method @NonNull public android.graphics.Rect getBoundingRectBottom();
+ method @NonNull public android.graphics.Rect getBoundingRectLeft();
+ method @NonNull public android.graphics.Rect getBoundingRectRight();
+ method @NonNull public android.graphics.Rect getBoundingRectTop();
+ method @NonNull public java.util.List<android.graphics.Rect> getBoundingRects();
method public int getSafeInsetBottom();
method public int getSafeInsetLeft();
method public int getSafeInsetRight();
@@ -48350,7 +48475,7 @@
method public int getAction();
method public android.content.ClipData getClipData();
method public android.content.ClipDescription getClipDescription();
- method public java.lang.Object getLocalState();
+ method public Object getLocalState();
method public boolean getResult();
method public float getX();
method public float getY();
@@ -48368,7 +48493,7 @@
method public android.view.View findNearestTouchable(android.view.ViewGroup, int, int, int, int[]);
method public final android.view.View findNextFocus(android.view.ViewGroup, android.view.View, int);
method public android.view.View findNextFocusFromRect(android.view.ViewGroup, android.graphics.Rect, int);
- method public android.view.View findNextKeyboardNavigationCluster(android.view.View, android.view.View, int);
+ method public android.view.View findNextKeyboardNavigationCluster(@NonNull android.view.View, @Nullable android.view.View, int);
method public static android.view.FocusFinder getInstance();
}
@@ -48400,8 +48525,8 @@
}
public class GestureDetector {
- ctor public deprecated GestureDetector(android.view.GestureDetector.OnGestureListener, android.os.Handler);
- ctor public deprecated GestureDetector(android.view.GestureDetector.OnGestureListener);
+ ctor @Deprecated public GestureDetector(android.view.GestureDetector.OnGestureListener, android.os.Handler);
+ ctor @Deprecated public GestureDetector(android.view.GestureDetector.OnGestureListener);
ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener);
ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler);
ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler, boolean);
@@ -48413,23 +48538,23 @@
method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener);
}
- public static abstract interface GestureDetector.OnContextClickListener {
- method public abstract boolean onContextClick(android.view.MotionEvent);
+ public static interface GestureDetector.OnContextClickListener {
+ method public boolean onContextClick(android.view.MotionEvent);
}
- public static abstract interface GestureDetector.OnDoubleTapListener {
- method public abstract boolean onDoubleTap(android.view.MotionEvent);
- method public abstract boolean onDoubleTapEvent(android.view.MotionEvent);
- method public abstract boolean onSingleTapConfirmed(android.view.MotionEvent);
+ public static interface GestureDetector.OnDoubleTapListener {
+ method public boolean onDoubleTap(android.view.MotionEvent);
+ method public boolean onDoubleTapEvent(android.view.MotionEvent);
+ method public boolean onSingleTapConfirmed(android.view.MotionEvent);
}
- public static abstract interface GestureDetector.OnGestureListener {
- method public abstract boolean onDown(android.view.MotionEvent);
- method public abstract boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
- method public abstract void onLongPress(android.view.MotionEvent);
- method public abstract boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
- method public abstract void onShowPress(android.view.MotionEvent);
- method public abstract boolean onSingleTapUp(android.view.MotionEvent);
+ public static interface GestureDetector.OnGestureListener {
+ method public boolean onDown(android.view.MotionEvent);
+ method public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
+ method public void onLongPress(android.view.MotionEvent);
+ method public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
+ method public void onShowPress(android.view.MotionEvent);
+ method public boolean onSingleTapUp(android.view.MotionEvent);
}
public static class GestureDetector.SimpleOnGestureListener implements android.view.GestureDetector.OnContextClickListener android.view.GestureDetector.OnDoubleTapListener android.view.GestureDetector.OnGestureListener {
@@ -48502,15 +48627,15 @@
public class InflateException extends java.lang.RuntimeException {
ctor public InflateException();
- ctor public InflateException(java.lang.String, java.lang.Throwable);
- ctor public InflateException(java.lang.String);
- ctor public InflateException(java.lang.Throwable);
+ ctor public InflateException(String, Throwable);
+ ctor public InflateException(String);
+ ctor public InflateException(Throwable);
}
public final class InputDevice implements android.os.Parcelable {
method public int describeContents();
method public int getControllerNumber();
- method public java.lang.String getDescriptor();
+ method public String getDescriptor();
method public static android.view.InputDevice getDevice(int);
method public static int[] getDeviceIds();
method public int getId();
@@ -48519,7 +48644,7 @@
method public android.view.InputDevice.MotionRange getMotionRange(int);
method public android.view.InputDevice.MotionRange getMotionRange(int, int);
method public java.util.List<android.view.InputDevice.MotionRange> getMotionRanges();
- method public java.lang.String getName();
+ method public String getName();
method public int getProductId();
method public int getSources();
method public int getVendorId();
@@ -48534,15 +48659,15 @@
field public static final int KEYBOARD_TYPE_ALPHABETIC = 2; // 0x2
field public static final int KEYBOARD_TYPE_NONE = 0; // 0x0
field public static final int KEYBOARD_TYPE_NON_ALPHABETIC = 1; // 0x1
- field public static final deprecated int MOTION_RANGE_ORIENTATION = 8; // 0x8
- field public static final deprecated int MOTION_RANGE_PRESSURE = 2; // 0x2
- field public static final deprecated int MOTION_RANGE_SIZE = 3; // 0x3
- field public static final deprecated int MOTION_RANGE_TOOL_MAJOR = 6; // 0x6
- field public static final deprecated int MOTION_RANGE_TOOL_MINOR = 7; // 0x7
- field public static final deprecated int MOTION_RANGE_TOUCH_MAJOR = 4; // 0x4
- field public static final deprecated int MOTION_RANGE_TOUCH_MINOR = 5; // 0x5
- field public static final deprecated int MOTION_RANGE_X = 0; // 0x0
- field public static final deprecated int MOTION_RANGE_Y = 1; // 0x1
+ field @Deprecated public static final int MOTION_RANGE_ORIENTATION = 8; // 0x8
+ field @Deprecated public static final int MOTION_RANGE_PRESSURE = 2; // 0x2
+ field @Deprecated public static final int MOTION_RANGE_SIZE = 3; // 0x3
+ field @Deprecated public static final int MOTION_RANGE_TOOL_MAJOR = 6; // 0x6
+ field @Deprecated public static final int MOTION_RANGE_TOOL_MINOR = 7; // 0x7
+ field @Deprecated public static final int MOTION_RANGE_TOUCH_MAJOR = 4; // 0x4
+ field @Deprecated public static final int MOTION_RANGE_TOUCH_MINOR = 5; // 0x5
+ field @Deprecated public static final int MOTION_RANGE_X = 0; // 0x0
+ field @Deprecated public static final int MOTION_RANGE_Y = 1; // 0x1
field public static final int SOURCE_ANY = -256; // 0xffffff00
field public static final int SOURCE_BLUETOOTH_STYLUS = 49154; // 0xc002
field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
@@ -48593,9 +48718,9 @@
public final class InputQueue {
}
- public static abstract interface InputQueue.Callback {
- method public abstract void onInputQueueCreated(android.view.InputQueue);
- method public abstract void onInputQueueDestroyed(android.view.InputQueue);
+ public static interface InputQueue.Callback {
+ method public void onInputQueueCreated(android.view.InputQueue);
+ method public void onInputQueueDestroyed(android.view.InputQueue);
}
public class KeyCharacterMap implements android.os.Parcelable {
@@ -48606,7 +48731,7 @@
method public static int getDeadChar(int, int);
method public char getDisplayLabel(int);
method public android.view.KeyEvent[] getEvents(char[]);
- method public deprecated boolean getKeyData(int, android.view.KeyCharacterMap.KeyData);
+ method @Deprecated public boolean getKeyData(int, android.view.KeyCharacterMap.KeyData);
method public int getKeyboardType();
method public char getMatch(int, char[]);
method public char getMatch(int, char[], int);
@@ -48616,7 +48741,7 @@
method public static android.view.KeyCharacterMap load(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final int ALPHA = 3; // 0x3
- field public static final deprecated int BUILT_IN_KEYBOARD = 0; // 0x0
+ field @Deprecated public static final int BUILT_IN_KEYBOARD = 0; // 0x0
field public static final int COMBINING_ACCENT = -2147483648; // 0x80000000
field public static final int COMBINING_ACCENT_MASK = 2147483647; // 0x7fffffff
field public static final android.os.Parcelable.Creator<android.view.KeyCharacterMap> CREATOR;
@@ -48631,16 +48756,16 @@
field public static final int VIRTUAL_KEYBOARD = -1; // 0xffffffff
}
- public static deprecated class KeyCharacterMap.KeyData {
- ctor public KeyCharacterMap.KeyData();
- field public static final int META_LENGTH = 4; // 0x4
- field public char displayLabel;
- field public char[] meta;
- field public char number;
+ @Deprecated public static class KeyCharacterMap.KeyData {
+ ctor @Deprecated public KeyCharacterMap.KeyData();
+ field @Deprecated public static final int META_LENGTH = 4; // 0x4
+ field @Deprecated public char displayLabel;
+ field @Deprecated public char[] meta;
+ field @Deprecated public char number;
}
public static class KeyCharacterMap.UnavailableException extends android.util.AndroidRuntimeException {
- ctor public KeyCharacterMap.UnavailableException(java.lang.String);
+ ctor public KeyCharacterMap.UnavailableException(String);
}
public class KeyEvent extends android.view.InputEvent implements android.os.Parcelable {
@@ -48650,17 +48775,17 @@
ctor public KeyEvent(long, long, int, int, int, int, int, int);
ctor public KeyEvent(long, long, int, int, int, int, int, int, int);
ctor public KeyEvent(long, long, int, int, int, int, int, int, int, int);
- ctor public KeyEvent(long, java.lang.String, int, int);
+ ctor public KeyEvent(long, String, int, int);
ctor public KeyEvent(android.view.KeyEvent);
- ctor public deprecated KeyEvent(android.view.KeyEvent, long, int);
+ ctor @Deprecated public KeyEvent(android.view.KeyEvent, long, int);
method public static android.view.KeyEvent changeAction(android.view.KeyEvent, int);
method public static android.view.KeyEvent changeFlags(android.view.KeyEvent, int);
method public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int);
method public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int, int);
- method public final deprecated boolean dispatch(android.view.KeyEvent.Callback);
- method public final boolean dispatch(android.view.KeyEvent.Callback, android.view.KeyEvent.DispatcherState, java.lang.Object);
+ method @Deprecated public final boolean dispatch(android.view.KeyEvent.Callback);
+ method public final boolean dispatch(android.view.KeyEvent.Callback, android.view.KeyEvent.DispatcherState, Object);
method public final int getAction();
- method public final deprecated java.lang.String getCharacters();
+ method @Deprecated public final String getCharacters();
method public static int getDeadChar(int, int);
method public final int getDeviceId();
method public char getDisplayLabel();
@@ -48669,7 +48794,7 @@
method public final int getFlags();
method public final android.view.KeyCharacterMap getKeyCharacterMap();
method public final int getKeyCode();
- method public deprecated boolean getKeyData(android.view.KeyCharacterMap.KeyData);
+ method @Deprecated public boolean getKeyData(android.view.KeyCharacterMap.KeyData);
method public char getMatch(char[]);
method public char getMatch(char[], int);
method public static int getMaxKeyCode();
@@ -48701,8 +48826,8 @@
method public final boolean isSymPressed();
method public final boolean isSystem();
method public final boolean isTracking();
- method public static int keyCodeFromString(java.lang.String);
- method public static java.lang.String keyCodeToString(int);
+ method public static int keyCodeFromString(@NonNull String);
+ method public static String keyCodeToString(int);
method public static boolean metaStateHasModifiers(int, int);
method public static boolean metaStateHasNoModifiers(int);
method public static int normalizeMetaState(int);
@@ -48710,7 +48835,7 @@
method public final void startTracking();
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACTION_DOWN = 0; // 0x0
- field public static final deprecated int ACTION_MULTIPLE = 2; // 0x2
+ field @Deprecated public static final int ACTION_MULTIPLE = 2; // 0x2
field public static final int ACTION_UP = 1; // 0x1
field public static final android.os.Parcelable.Creator<android.view.KeyEvent> CREATOR;
field public static final int FLAG_CANCELED = 32; // 0x20
@@ -48723,7 +48848,7 @@
field public static final int FLAG_SOFT_KEYBOARD = 2; // 0x2
field public static final int FLAG_TRACKING = 512; // 0x200
field public static final int FLAG_VIRTUAL_HARD_KEY = 64; // 0x40
- field public static final deprecated int FLAG_WOKE_HERE = 1; // 0x1
+ field @Deprecated public static final int FLAG_WOKE_HERE = 1; // 0x1
field public static final int KEYCODE_0 = 7; // 0x7
field public static final int KEYCODE_1 = 8; // 0x8
field public static final int KEYCODE_11 = 227; // 0xe3
@@ -49013,7 +49138,7 @@
field public static final int KEYCODE_ZENKAKU_HANKAKU = 211; // 0xd3
field public static final int KEYCODE_ZOOM_IN = 168; // 0xa8
field public static final int KEYCODE_ZOOM_OUT = 169; // 0xa9
- field public static final deprecated int MAX_KEYCODE = 84; // 0x54
+ field @Deprecated public static final int MAX_KEYCODE = 84; // 0x54
field public static final int META_ALT_LEFT_ON = 16; // 0x10
field public static final int META_ALT_MASK = 50; // 0x32
field public static final int META_ALT_ON = 2; // 0x2
@@ -49037,11 +49162,11 @@
field public static final int META_SYM_ON = 4; // 0x4
}
- public static abstract interface KeyEvent.Callback {
- method public abstract boolean onKeyDown(int, android.view.KeyEvent);
- method public abstract boolean onKeyLongPress(int, android.view.KeyEvent);
- method public abstract boolean onKeyMultiple(int, int, android.view.KeyEvent);
- method public abstract boolean onKeyUp(int, android.view.KeyEvent);
+ public static interface KeyEvent.Callback {
+ method public boolean onKeyDown(int, android.view.KeyEvent);
+ method public boolean onKeyLongPress(int, android.view.KeyEvent);
+ method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
+ method public boolean onKeyUp(int, android.view.KeyEvent);
}
public static class KeyEvent.DispatcherState {
@@ -49050,28 +49175,28 @@
method public boolean isTracking(android.view.KeyEvent);
method public void performedLongPress(android.view.KeyEvent);
method public void reset();
- method public void reset(java.lang.Object);
- method public void startTracking(android.view.KeyEvent, java.lang.Object);
+ method public void reset(Object);
+ method public void startTracking(android.view.KeyEvent, Object);
}
public final class KeyboardShortcutGroup implements android.os.Parcelable {
- ctor public KeyboardShortcutGroup(java.lang.CharSequence, java.util.List<android.view.KeyboardShortcutInfo>);
- ctor public KeyboardShortcutGroup(java.lang.CharSequence);
+ ctor public KeyboardShortcutGroup(@Nullable CharSequence, @NonNull java.util.List<android.view.KeyboardShortcutInfo>);
+ ctor public KeyboardShortcutGroup(@Nullable CharSequence);
method public void addItem(android.view.KeyboardShortcutInfo);
method public int describeContents();
method public java.util.List<android.view.KeyboardShortcutInfo> getItems();
- method public java.lang.CharSequence getLabel();
+ method public CharSequence getLabel();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.KeyboardShortcutGroup> CREATOR;
}
public final class KeyboardShortcutInfo implements android.os.Parcelable {
- ctor public KeyboardShortcutInfo(java.lang.CharSequence, int, int);
- ctor public KeyboardShortcutInfo(java.lang.CharSequence, char, int);
+ ctor public KeyboardShortcutInfo(CharSequence, int, int);
+ ctor public KeyboardShortcutInfo(CharSequence, char, int);
method public int describeContents();
method public char getBaseCharacter();
method public int getKeycode();
- method public java.lang.CharSequence getLabel();
+ method @Nullable public CharSequence getLabel();
method public int getModifiers();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.KeyboardShortcutInfo> CREATOR;
@@ -49081,61 +49206,61 @@
ctor protected LayoutInflater(android.content.Context);
ctor protected LayoutInflater(android.view.LayoutInflater, android.content.Context);
method public abstract android.view.LayoutInflater cloneInContext(android.content.Context);
- method public final android.view.View createView(java.lang.String, java.lang.String, android.util.AttributeSet) throws java.lang.ClassNotFoundException, android.view.InflateException;
+ method public final android.view.View createView(String, String, android.util.AttributeSet) throws java.lang.ClassNotFoundException, android.view.InflateException;
method public static android.view.LayoutInflater from(android.content.Context);
method public android.content.Context getContext();
method public final android.view.LayoutInflater.Factory getFactory();
method public final android.view.LayoutInflater.Factory2 getFactory2();
method public android.view.LayoutInflater.Filter getFilter();
- method public android.view.View inflate(int, android.view.ViewGroup);
- method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup);
- method public android.view.View inflate(int, android.view.ViewGroup, boolean);
- method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean);
- method protected android.view.View onCreateView(java.lang.String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
- method protected android.view.View onCreateView(android.view.View, java.lang.String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
+ method public android.view.View inflate(@LayoutRes int, @Nullable android.view.ViewGroup);
+ method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, @Nullable android.view.ViewGroup);
+ method public android.view.View inflate(@LayoutRes int, @Nullable android.view.ViewGroup, boolean);
+ method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, @Nullable android.view.ViewGroup, boolean);
+ method protected android.view.View onCreateView(String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
+ method protected android.view.View onCreateView(android.view.View, String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
method public void setFactory(android.view.LayoutInflater.Factory);
method public void setFactory2(android.view.LayoutInflater.Factory2);
method public void setFilter(android.view.LayoutInflater.Filter);
}
- public static abstract interface LayoutInflater.Factory {
- method public abstract android.view.View onCreateView(java.lang.String, android.content.Context, android.util.AttributeSet);
+ public static interface LayoutInflater.Factory {
+ method @Nullable public android.view.View onCreateView(@NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
}
- public static abstract interface LayoutInflater.Factory2 implements android.view.LayoutInflater.Factory {
- method public abstract android.view.View onCreateView(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet);
+ public static interface LayoutInflater.Factory2 extends android.view.LayoutInflater.Factory {
+ method @Nullable public android.view.View onCreateView(@Nullable android.view.View, @NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
}
- public static abstract interface LayoutInflater.Filter {
- method public abstract boolean onLoadClass(java.lang.Class);
+ public static interface LayoutInflater.Filter {
+ method public boolean onLoadClass(Class);
}
- public abstract interface Menu {
- method public abstract android.view.MenuItem add(java.lang.CharSequence);
- method public abstract android.view.MenuItem add(int);
- method public abstract android.view.MenuItem add(int, int, int, java.lang.CharSequence);
- method public abstract android.view.MenuItem add(int, int, int, int);
- method public abstract int addIntentOptions(int, int, int, android.content.ComponentName, android.content.Intent[], android.content.Intent, int, android.view.MenuItem[]);
- method public abstract android.view.SubMenu addSubMenu(java.lang.CharSequence);
- method public abstract android.view.SubMenu addSubMenu(int);
- method public abstract android.view.SubMenu addSubMenu(int, int, int, java.lang.CharSequence);
- method public abstract android.view.SubMenu addSubMenu(int, int, int, int);
- method public abstract void clear();
- method public abstract void close();
- method public abstract android.view.MenuItem findItem(int);
- method public abstract android.view.MenuItem getItem(int);
- method public abstract boolean hasVisibleItems();
- method public abstract boolean isShortcutKey(int, android.view.KeyEvent);
- method public abstract boolean performIdentifierAction(int, int);
- method public abstract boolean performShortcut(int, android.view.KeyEvent, int);
- method public abstract void removeGroup(int);
- method public abstract void removeItem(int);
- method public abstract void setGroupCheckable(int, boolean, boolean);
+ public interface Menu {
+ method public android.view.MenuItem add(CharSequence);
+ method public android.view.MenuItem add(@StringRes int);
+ method public android.view.MenuItem add(int, int, int, CharSequence);
+ method public android.view.MenuItem add(int, int, int, @StringRes int);
+ method public int addIntentOptions(int, int, int, android.content.ComponentName, android.content.Intent[], android.content.Intent, int, android.view.MenuItem[]);
+ method public android.view.SubMenu addSubMenu(CharSequence);
+ method public android.view.SubMenu addSubMenu(@StringRes int);
+ method public android.view.SubMenu addSubMenu(int, int, int, CharSequence);
+ method public android.view.SubMenu addSubMenu(int, int, int, @StringRes int);
+ method public void clear();
+ method public void close();
+ method public android.view.MenuItem findItem(int);
+ method public android.view.MenuItem getItem(int);
+ method public boolean hasVisibleItems();
+ method public boolean isShortcutKey(int, android.view.KeyEvent);
+ method public boolean performIdentifierAction(int, int);
+ method public boolean performShortcut(int, android.view.KeyEvent, int);
+ method public void removeGroup(int);
+ method public void removeItem(int);
+ method public void setGroupCheckable(int, boolean, boolean);
method public default void setGroupDividerEnabled(boolean);
- method public abstract void setGroupEnabled(int, boolean);
- method public abstract void setGroupVisible(int, boolean);
- method public abstract void setQwertyMode(boolean);
- method public abstract int size();
+ method public void setGroupEnabled(int, boolean);
+ method public void setGroupVisible(int, boolean);
+ method public void setQwertyMode(boolean);
+ method public int size();
field public static final int CATEGORY_ALTERNATIVE = 262144; // 0x40000
field public static final int CATEGORY_CONTAINER = 65536; // 0x10000
field public static final int CATEGORY_SECONDARY = 196608; // 0x30000
@@ -49150,64 +49275,64 @@
public class MenuInflater {
ctor public MenuInflater(android.content.Context);
- method public void inflate(int, android.view.Menu);
+ method public void inflate(@MenuRes int, android.view.Menu);
}
- public abstract interface MenuItem {
- method public abstract boolean collapseActionView();
- method public abstract boolean expandActionView();
- method public abstract android.view.ActionProvider getActionProvider();
- method public abstract android.view.View getActionView();
+ public interface MenuItem {
+ method public boolean collapseActionView();
+ method public boolean expandActionView();
+ method public android.view.ActionProvider getActionProvider();
+ method public android.view.View getActionView();
method public default int getAlphabeticModifiers();
- method public abstract char getAlphabeticShortcut();
- method public default java.lang.CharSequence getContentDescription();
- method public abstract int getGroupId();
- method public abstract android.graphics.drawable.Drawable getIcon();
- method public default android.content.res.ColorStateList getIconTintList();
- method public default android.graphics.PorterDuff.Mode getIconTintMode();
- method public abstract android.content.Intent getIntent();
- method public abstract int getItemId();
- method public abstract android.view.ContextMenu.ContextMenuInfo getMenuInfo();
+ method public char getAlphabeticShortcut();
+ method public default CharSequence getContentDescription();
+ method public int getGroupId();
+ method public android.graphics.drawable.Drawable getIcon();
+ method @Nullable public default android.content.res.ColorStateList getIconTintList();
+ method @Nullable public default android.graphics.PorterDuff.Mode getIconTintMode();
+ method public android.content.Intent getIntent();
+ method public int getItemId();
+ method public android.view.ContextMenu.ContextMenuInfo getMenuInfo();
method public default int getNumericModifiers();
- method public abstract char getNumericShortcut();
- method public abstract int getOrder();
- method public abstract android.view.SubMenu getSubMenu();
- method public abstract java.lang.CharSequence getTitle();
- method public abstract java.lang.CharSequence getTitleCondensed();
- method public default java.lang.CharSequence getTooltipText();
- method public abstract boolean hasSubMenu();
- method public abstract boolean isActionViewExpanded();
- method public abstract boolean isCheckable();
- method public abstract boolean isChecked();
- method public abstract boolean isEnabled();
- method public abstract boolean isVisible();
- method public abstract android.view.MenuItem setActionProvider(android.view.ActionProvider);
- method public abstract android.view.MenuItem setActionView(android.view.View);
- method public abstract android.view.MenuItem setActionView(int);
- method public abstract android.view.MenuItem setAlphabeticShortcut(char);
+ method public char getNumericShortcut();
+ method public int getOrder();
+ method public android.view.SubMenu getSubMenu();
+ method public CharSequence getTitle();
+ method public CharSequence getTitleCondensed();
+ method public default CharSequence getTooltipText();
+ method public boolean hasSubMenu();
+ method public boolean isActionViewExpanded();
+ method public boolean isCheckable();
+ method public boolean isChecked();
+ method public boolean isEnabled();
+ method public boolean isVisible();
+ method public android.view.MenuItem setActionProvider(android.view.ActionProvider);
+ method public android.view.MenuItem setActionView(android.view.View);
+ method public android.view.MenuItem setActionView(@LayoutRes int);
+ method public android.view.MenuItem setAlphabeticShortcut(char);
method public default android.view.MenuItem setAlphabeticShortcut(char, int);
- method public abstract android.view.MenuItem setCheckable(boolean);
- method public abstract android.view.MenuItem setChecked(boolean);
- method public default android.view.MenuItem setContentDescription(java.lang.CharSequence);
- method public abstract android.view.MenuItem setEnabled(boolean);
- method public abstract android.view.MenuItem setIcon(android.graphics.drawable.Drawable);
- method public abstract android.view.MenuItem setIcon(int);
- method public default android.view.MenuItem setIconTintList(android.content.res.ColorStateList);
- method public default android.view.MenuItem setIconTintMode(android.graphics.PorterDuff.Mode);
- method public abstract android.view.MenuItem setIntent(android.content.Intent);
- method public abstract android.view.MenuItem setNumericShortcut(char);
+ method public android.view.MenuItem setCheckable(boolean);
+ method public android.view.MenuItem setChecked(boolean);
+ method public default android.view.MenuItem setContentDescription(CharSequence);
+ method public android.view.MenuItem setEnabled(boolean);
+ method public android.view.MenuItem setIcon(android.graphics.drawable.Drawable);
+ method public android.view.MenuItem setIcon(@DrawableRes int);
+ method public default android.view.MenuItem setIconTintList(@Nullable android.content.res.ColorStateList);
+ method public default android.view.MenuItem setIconTintMode(@Nullable android.graphics.PorterDuff.Mode);
+ method public android.view.MenuItem setIntent(android.content.Intent);
+ method public android.view.MenuItem setNumericShortcut(char);
method public default android.view.MenuItem setNumericShortcut(char, int);
- method public abstract android.view.MenuItem setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener);
- method public abstract android.view.MenuItem setOnMenuItemClickListener(android.view.MenuItem.OnMenuItemClickListener);
- method public abstract android.view.MenuItem setShortcut(char, char);
+ method public android.view.MenuItem setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener);
+ method public android.view.MenuItem setOnMenuItemClickListener(android.view.MenuItem.OnMenuItemClickListener);
+ method public android.view.MenuItem setShortcut(char, char);
method public default android.view.MenuItem setShortcut(char, char, int, int);
- method public abstract void setShowAsAction(int);
- method public abstract android.view.MenuItem setShowAsActionFlags(int);
- method public abstract android.view.MenuItem setTitle(java.lang.CharSequence);
- method public abstract android.view.MenuItem setTitle(int);
- method public abstract android.view.MenuItem setTitleCondensed(java.lang.CharSequence);
- method public default android.view.MenuItem setTooltipText(java.lang.CharSequence);
- method public abstract android.view.MenuItem setVisible(boolean);
+ method public void setShowAsAction(int);
+ method public android.view.MenuItem setShowAsActionFlags(int);
+ method public android.view.MenuItem setTitle(CharSequence);
+ method public android.view.MenuItem setTitle(@StringRes int);
+ method public android.view.MenuItem setTitleCondensed(CharSequence);
+ method public default android.view.MenuItem setTooltipText(CharSequence);
+ method public android.view.MenuItem setVisible(boolean);
field public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
field public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
field public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
@@ -49215,21 +49340,21 @@
field public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
}
- public static abstract interface MenuItem.OnActionExpandListener {
- method public abstract boolean onMenuItemActionCollapse(android.view.MenuItem);
- method public abstract boolean onMenuItemActionExpand(android.view.MenuItem);
+ public static interface MenuItem.OnActionExpandListener {
+ method public boolean onMenuItemActionCollapse(android.view.MenuItem);
+ method public boolean onMenuItemActionExpand(android.view.MenuItem);
}
- public static abstract interface MenuItem.OnMenuItemClickListener {
- method public abstract boolean onMenuItemClick(android.view.MenuItem);
+ public static interface MenuItem.OnMenuItemClickListener {
+ method public boolean onMenuItemClick(android.view.MenuItem);
}
public final class MotionEvent extends android.view.InputEvent implements android.os.Parcelable {
- method public static java.lang.String actionToString(int);
+ method public static String actionToString(int);
method public void addBatch(long, float, float, float, float, int);
method public void addBatch(long, android.view.MotionEvent.PointerCoords[], int);
- method public static int axisFromString(java.lang.String);
- method public static java.lang.String axisToString(int);
+ method public static int axisFromString(String);
+ method public static String axisToString(int);
method public int findPointerIndex(int);
method public int getAction();
method public int getActionButton();
@@ -49300,9 +49425,9 @@
method public float getYPrecision();
method public boolean isButtonPressed(int);
method public static android.view.MotionEvent obtain(long, long, int, int, android.view.MotionEvent.PointerProperties[], android.view.MotionEvent.PointerCoords[], int, int, float, float, int, int, int, int);
- method public static deprecated android.view.MotionEvent obtain(long, long, int, int, int[], android.view.MotionEvent.PointerCoords[], int, float, float, int, int, int, int);
+ method @Deprecated public static android.view.MotionEvent obtain(long, long, int, int, int[], android.view.MotionEvent.PointerCoords[], int, float, float, int, int, int, int);
method public static android.view.MotionEvent obtain(long, long, int, float, float, float, float, int, float, float, int, int);
- method public static deprecated android.view.MotionEvent obtain(long, long, int, int, float, float, float, float, int, float, float, int, int);
+ method @Deprecated public static android.view.MotionEvent obtain(long, long, int, int, float, float, float, float, int, float, float, int, int);
method public static android.view.MotionEvent obtain(long, long, int, float, float, int);
method public static android.view.MotionEvent obtain(android.view.MotionEvent);
method public static android.view.MotionEvent obtainNoHistory(android.view.MotionEvent);
@@ -49324,15 +49449,15 @@
field public static final int ACTION_MASK = 255; // 0xff
field public static final int ACTION_MOVE = 2; // 0x2
field public static final int ACTION_OUTSIDE = 4; // 0x4
- field public static final deprecated int ACTION_POINTER_1_DOWN = 5; // 0x5
- field public static final deprecated int ACTION_POINTER_1_UP = 6; // 0x6
- field public static final deprecated int ACTION_POINTER_2_DOWN = 261; // 0x105
- field public static final deprecated int ACTION_POINTER_2_UP = 262; // 0x106
- field public static final deprecated int ACTION_POINTER_3_DOWN = 517; // 0x205
- field public static final deprecated int ACTION_POINTER_3_UP = 518; // 0x206
+ field @Deprecated public static final int ACTION_POINTER_1_DOWN = 5; // 0x5
+ field @Deprecated public static final int ACTION_POINTER_1_UP = 6; // 0x6
+ field @Deprecated public static final int ACTION_POINTER_2_DOWN = 261; // 0x105
+ field @Deprecated public static final int ACTION_POINTER_2_UP = 262; // 0x106
+ field @Deprecated public static final int ACTION_POINTER_3_DOWN = 517; // 0x205
+ field @Deprecated public static final int ACTION_POINTER_3_UP = 518; // 0x206
field public static final int ACTION_POINTER_DOWN = 5; // 0x5
- field public static final deprecated int ACTION_POINTER_ID_MASK = 65280; // 0xff00
- field public static final deprecated int ACTION_POINTER_ID_SHIFT = 8; // 0x8
+ field @Deprecated public static final int ACTION_POINTER_ID_MASK = 65280; // 0xff00
+ field @Deprecated public static final int ACTION_POINTER_ID_SHIFT = 8; // 0x8
field public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
field public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
field public static final int ACTION_POINTER_UP = 6; // 0x6
@@ -49444,24 +49569,24 @@
field public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
}
- public abstract deprecated class OrientationListener implements android.hardware.SensorListener {
- ctor public OrientationListener(android.content.Context);
- ctor public OrientationListener(android.content.Context, int);
- method public void disable();
- method public void enable();
- method public void onAccuracyChanged(int, int);
- method public abstract void onOrientationChanged(int);
- method public void onSensorChanged(int, float[]);
- field public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
+ @Deprecated public abstract class OrientationListener implements android.hardware.SensorListener {
+ ctor @Deprecated public OrientationListener(android.content.Context);
+ ctor @Deprecated public OrientationListener(android.content.Context, int);
+ method @Deprecated public void disable();
+ method @Deprecated public void enable();
+ method @Deprecated public void onAccuracyChanged(int, int);
+ method @Deprecated public abstract void onOrientationChanged(int);
+ method @Deprecated public void onSensorChanged(int, float[]);
+ field @Deprecated public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
}
public final class PixelCopy {
- method public static void request(android.view.SurfaceView, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
- method public static void request(android.view.SurfaceView, android.graphics.Rect, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
- method public static void request(android.view.Surface, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
- method public static void request(android.view.Surface, android.graphics.Rect, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
- method public static void request(android.view.Window, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
- method public static void request(android.view.Window, android.graphics.Rect, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
+ method public static void request(@NonNull android.view.SurfaceView, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+ method public static void request(@NonNull android.view.SurfaceView, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+ method public static void request(@NonNull android.view.Surface, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+ method public static void request(@NonNull android.view.Surface, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+ method public static void request(@NonNull android.view.Window, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+ method public static void request(@NonNull android.view.Window, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
field public static final int ERROR_DESTINATION_INVALID = 5; // 0x5
field public static final int ERROR_SOURCE_INVALID = 4; // 0x4
field public static final int ERROR_SOURCE_NO_DATA = 3; // 0x3
@@ -49470,15 +49595,15 @@
field public static final int SUCCESS = 0; // 0x0
}
- public static abstract interface PixelCopy.OnPixelCopyFinishedListener {
- method public abstract void onPixelCopyFinished(int);
+ public static interface PixelCopy.OnPixelCopyFinishedListener {
+ method public void onPixelCopyFinished(int);
}
public final class PointerIcon implements android.os.Parcelable {
- method public static android.view.PointerIcon create(android.graphics.Bitmap, float, float);
+ method public static android.view.PointerIcon create(@NonNull android.graphics.Bitmap, float, float);
method public int describeContents();
- method public static android.view.PointerIcon getSystemIcon(android.content.Context, int);
- method public static android.view.PointerIcon load(android.content.res.Resources, int);
+ method public static android.view.PointerIcon getSystemIcon(@NonNull android.content.Context, int);
+ method public static android.view.PointerIcon load(@NonNull android.content.res.Resources, @XmlRes int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.PointerIcon> CREATOR;
field public static final int TYPE_ALIAS = 1010; // 0x3f2
@@ -49528,10 +49653,10 @@
method public void setStylusScaleEnabled(boolean);
}
- public static abstract interface ScaleGestureDetector.OnScaleGestureListener {
- method public abstract boolean onScale(android.view.ScaleGestureDetector);
- method public abstract boolean onScaleBegin(android.view.ScaleGestureDetector);
- method public abstract void onScaleEnd(android.view.ScaleGestureDetector);
+ public static interface ScaleGestureDetector.OnScaleGestureListener {
+ method public boolean onScale(android.view.ScaleGestureDetector);
+ method public boolean onScaleBegin(android.view.ScaleGestureDetector);
+ method public void onScaleEnd(android.view.ScaleGestureDetector);
}
public static class ScaleGestureDetector.SimpleOnScaleGestureListener implements android.view.ScaleGestureDetector.OnScaleGestureListener {
@@ -49555,16 +49680,16 @@
field public static final int NAVIGATION_UP = 2; // 0x2
}
- public abstract interface SubMenu implements android.view.Menu {
- method public abstract void clearHeader();
- method public abstract android.view.MenuItem getItem();
- method public abstract android.view.SubMenu setHeaderIcon(int);
- method public abstract android.view.SubMenu setHeaderIcon(android.graphics.drawable.Drawable);
- method public abstract android.view.SubMenu setHeaderTitle(int);
- method public abstract android.view.SubMenu setHeaderTitle(java.lang.CharSequence);
- method public abstract android.view.SubMenu setHeaderView(android.view.View);
- method public abstract android.view.SubMenu setIcon(int);
- method public abstract android.view.SubMenu setIcon(android.graphics.drawable.Drawable);
+ public interface SubMenu extends android.view.Menu {
+ method public void clearHeader();
+ method public android.view.MenuItem getItem();
+ method public android.view.SubMenu setHeaderIcon(@DrawableRes int);
+ method public android.view.SubMenu setHeaderIcon(android.graphics.drawable.Drawable);
+ method public android.view.SubMenu setHeaderTitle(@StringRes int);
+ method public android.view.SubMenu setHeaderTitle(CharSequence);
+ method public android.view.SubMenu setHeaderView(android.view.View);
+ method public android.view.SubMenu setIcon(@DrawableRes int);
+ method public android.view.SubMenu setIcon(android.graphics.drawable.Drawable);
}
public class Surface implements android.os.Parcelable {
@@ -49575,7 +49700,7 @@
method public android.graphics.Canvas lockHardwareCanvas();
method public void readFromParcel(android.os.Parcel);
method public void release();
- method public deprecated void unlockCanvas(android.graphics.Canvas);
+ method @Deprecated public void unlockCanvas(android.graphics.Canvas);
method public void unlockCanvasAndPost(android.graphics.Canvas);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.Surface> CREATOR;
@@ -49587,44 +49712,44 @@
public static class Surface.OutOfResourcesException extends java.lang.RuntimeException {
ctor public Surface.OutOfResourcesException();
- ctor public Surface.OutOfResourcesException(java.lang.String);
+ ctor public Surface.OutOfResourcesException(String);
}
- public abstract interface SurfaceHolder {
- method public abstract void addCallback(android.view.SurfaceHolder.Callback);
- method public abstract android.view.Surface getSurface();
- method public abstract android.graphics.Rect getSurfaceFrame();
- method public abstract boolean isCreating();
- method public abstract android.graphics.Canvas lockCanvas();
- method public abstract android.graphics.Canvas lockCanvas(android.graphics.Rect);
+ public interface SurfaceHolder {
+ method public void addCallback(android.view.SurfaceHolder.Callback);
+ method public android.view.Surface getSurface();
+ method public android.graphics.Rect getSurfaceFrame();
+ method public boolean isCreating();
+ method public android.graphics.Canvas lockCanvas();
+ method public android.graphics.Canvas lockCanvas(android.graphics.Rect);
method public default android.graphics.Canvas lockHardwareCanvas();
- method public abstract void removeCallback(android.view.SurfaceHolder.Callback);
- method public abstract void setFixedSize(int, int);
- method public abstract void setFormat(int);
- method public abstract void setKeepScreenOn(boolean);
- method public abstract void setSizeFromLayout();
- method public abstract deprecated void setType(int);
- method public abstract void unlockCanvasAndPost(android.graphics.Canvas);
- field public static final deprecated int SURFACE_TYPE_GPU = 2; // 0x2
- field public static final deprecated int SURFACE_TYPE_HARDWARE = 1; // 0x1
- field public static final deprecated int SURFACE_TYPE_NORMAL = 0; // 0x0
- field public static final deprecated int SURFACE_TYPE_PUSH_BUFFERS = 3; // 0x3
+ method public void removeCallback(android.view.SurfaceHolder.Callback);
+ method public void setFixedSize(int, int);
+ method public void setFormat(int);
+ method public void setKeepScreenOn(boolean);
+ method public void setSizeFromLayout();
+ method @Deprecated public void setType(int);
+ method public void unlockCanvasAndPost(android.graphics.Canvas);
+ field @Deprecated public static final int SURFACE_TYPE_GPU = 2; // 0x2
+ field @Deprecated public static final int SURFACE_TYPE_HARDWARE = 1; // 0x1
+ field @Deprecated public static final int SURFACE_TYPE_NORMAL = 0; // 0x0
+ field @Deprecated public static final int SURFACE_TYPE_PUSH_BUFFERS = 3; // 0x3
}
public static class SurfaceHolder.BadSurfaceTypeException extends java.lang.RuntimeException {
ctor public SurfaceHolder.BadSurfaceTypeException();
- ctor public SurfaceHolder.BadSurfaceTypeException(java.lang.String);
+ ctor public SurfaceHolder.BadSurfaceTypeException(String);
}
- public static abstract interface SurfaceHolder.Callback {
- method public abstract void surfaceChanged(android.view.SurfaceHolder, int, int, int);
- method public abstract void surfaceCreated(android.view.SurfaceHolder);
- method public abstract void surfaceDestroyed(android.view.SurfaceHolder);
+ public static interface SurfaceHolder.Callback {
+ method public void surfaceChanged(android.view.SurfaceHolder, int, int, int);
+ method public void surfaceCreated(android.view.SurfaceHolder);
+ method public void surfaceDestroyed(android.view.SurfaceHolder);
}
- public static abstract interface SurfaceHolder.Callback2 implements android.view.SurfaceHolder.Callback {
- method public abstract void surfaceRedrawNeeded(android.view.SurfaceHolder);
- method public default void surfaceRedrawNeededAsync(android.view.SurfaceHolder, java.lang.Runnable);
+ public static interface SurfaceHolder.Callback2 extends android.view.SurfaceHolder.Callback {
+ method public void surfaceRedrawNeeded(android.view.SurfaceHolder);
+ method public default void surfaceRedrawNeededAsync(android.view.SurfaceHolder, Runnable);
}
public class SurfaceView extends android.view.View {
@@ -49663,18 +49788,18 @@
method public void unlockCanvasAndPost(android.graphics.Canvas);
}
- public static abstract interface TextureView.SurfaceTextureListener {
- method public abstract void onSurfaceTextureAvailable(android.graphics.SurfaceTexture, int, int);
- method public abstract boolean onSurfaceTextureDestroyed(android.graphics.SurfaceTexture);
- method public abstract void onSurfaceTextureSizeChanged(android.graphics.SurfaceTexture, int, int);
- method public abstract void onSurfaceTextureUpdated(android.graphics.SurfaceTexture);
+ public static interface TextureView.SurfaceTextureListener {
+ method public void onSurfaceTextureAvailable(android.graphics.SurfaceTexture, int, int);
+ method public boolean onSurfaceTextureDestroyed(android.graphics.SurfaceTexture);
+ method public void onSurfaceTextureSizeChanged(android.graphics.SurfaceTexture, int, int);
+ method public void onSurfaceTextureUpdated(android.graphics.SurfaceTexture);
}
public class TouchDelegate {
ctor public TouchDelegate(android.graphics.Rect, android.view.View);
- method public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
- method public boolean onTouchEvent(android.view.MotionEvent);
- method public boolean onTouchExplorationHoverEvent(android.view.MotionEvent);
+ method @NonNull public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
+ method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
+ method public boolean onTouchExplorationHoverEvent(@NonNull android.view.MotionEvent);
field public static final int ABOVE = 1; // 0x1
field public static final int BELOW = 2; // 0x2
field public static final int TO_LEFT = 4; // 0x4
@@ -49694,30 +49819,30 @@
method public void recycle();
}
- public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
+ @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
ctor public View(android.content.Context);
- ctor public View(android.content.Context, android.util.AttributeSet);
- ctor public View(android.content.Context, android.util.AttributeSet, int);
- ctor public View(android.content.Context, android.util.AttributeSet, int, int);
+ ctor public View(android.content.Context, @Nullable android.util.AttributeSet);
+ ctor public View(android.content.Context, @Nullable android.util.AttributeSet, int);
+ ctor public View(android.content.Context, @Nullable android.util.AttributeSet, int, int);
method public void addChildrenForAccessibility(java.util.ArrayList<android.view.View>);
- method public void addExtraDataToAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo, java.lang.String, android.os.Bundle);
+ method public void addExtraDataToAccessibilityNodeInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo, @NonNull String, @Nullable android.os.Bundle);
method public void addFocusables(java.util.ArrayList<android.view.View>, int);
method public void addFocusables(java.util.ArrayList<android.view.View>, int, int);
- method public void addKeyboardNavigationClusters(java.util.Collection<android.view.View>, int);
+ method public void addKeyboardNavigationClusters(@NonNull java.util.Collection<android.view.View>, int);
method public void addOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener);
method public void addOnLayoutChangeListener(android.view.View.OnLayoutChangeListener);
method public void addOnUnhandledKeyEventListener(android.view.View.OnUnhandledKeyEventListener);
method public void addTouchables(java.util.ArrayList<android.view.View>);
method public android.view.ViewPropertyAnimator animate();
- method public void announceForAccessibility(java.lang.CharSequence);
+ method public void announceForAccessibility(CharSequence);
method public void autofill(android.view.autofill.AutofillValue);
- method public void autofill(android.util.SparseArray<android.view.autofill.AutofillValue>);
+ method public void autofill(@NonNull android.util.SparseArray<android.view.autofill.AutofillValue>);
method protected boolean awakenScrollBars();
method protected boolean awakenScrollBars(int);
method protected boolean awakenScrollBars(int, boolean);
method public void bringToFront();
- method public deprecated void buildDrawingCache();
- method public deprecated void buildDrawingCache(boolean);
+ method @Deprecated public void buildDrawingCache();
+ method @Deprecated public void buildDrawingCache(boolean);
method public void buildLayer();
method public boolean callOnClick();
method public boolean canResolveLayoutDirection();
@@ -49742,7 +49867,7 @@
method protected int computeVerticalScrollRange();
method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo();
method public void createContextMenu(android.view.ContextMenu);
- method public deprecated void destroyDrawingCache();
+ method @Deprecated public void destroyDrawingCache();
method public android.view.WindowInsets dispatchApplyWindowInsets(android.view.WindowInsets);
method public boolean dispatchCapturedPointerEvent(android.view.MotionEvent);
method public void dispatchConfigurationChanged(android.content.res.Configuration);
@@ -49750,7 +49875,7 @@
method public boolean dispatchDragEvent(android.view.DragEvent);
method protected void dispatchDraw(android.graphics.Canvas);
method public void dispatchDrawableHotspotChanged(float, float);
- method public void dispatchFinishTemporaryDetach();
+ method @CallSuper public void dispatchFinishTemporaryDetach();
method protected boolean dispatchGenericFocusedEvent(android.view.MotionEvent);
method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
method protected boolean dispatchGenericPointerEvent(android.view.MotionEvent);
@@ -49761,117 +49886,117 @@
method public boolean dispatchNestedFling(float, float, boolean);
method public boolean dispatchNestedPreFling(float, float);
method public boolean dispatchNestedPrePerformAccessibilityAction(int, android.os.Bundle);
- method public boolean dispatchNestedPreScroll(int, int, int[], int[]);
- method public boolean dispatchNestedScroll(int, int, int, int, int[]);
+ method public boolean dispatchNestedPreScroll(int, int, @Nullable @Size(2) int[], @Nullable @Size(2) int[]);
+ method public boolean dispatchNestedScroll(int, int, int, int, @Nullable @Size(2) int[]);
method public void dispatchPointerCaptureChanged(boolean);
method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public void dispatchProvideAutofillStructure(android.view.ViewStructure, int);
+ method public void dispatchProvideAutofillStructure(@NonNull android.view.ViewStructure, int);
method public void dispatchProvideStructure(android.view.ViewStructure);
method protected void dispatchRestoreInstanceState(android.util.SparseArray<android.os.Parcelable>);
method protected void dispatchSaveInstanceState(android.util.SparseArray<android.os.Parcelable>);
method protected void dispatchSetActivated(boolean);
method protected void dispatchSetPressed(boolean);
method protected void dispatchSetSelected(boolean);
- method public void dispatchStartTemporaryDetach();
+ method @CallSuper public void dispatchStartTemporaryDetach();
method public void dispatchSystemUiVisibilityChanged(int);
method public boolean dispatchTouchEvent(android.view.MotionEvent);
method public boolean dispatchTrackballEvent(android.view.MotionEvent);
method public boolean dispatchUnhandledMove(android.view.View, int);
- method protected void dispatchVisibilityChanged(android.view.View, int);
+ method protected void dispatchVisibilityChanged(@NonNull android.view.View, int);
method public void dispatchWindowFocusChanged(boolean);
method public void dispatchWindowSystemUiVisiblityChanged(int);
method public void dispatchWindowVisibilityChanged(int);
- method public void draw(android.graphics.Canvas);
- method public void drawableHotspotChanged(float, float);
- method protected void drawableStateChanged();
+ method @CallSuper public void draw(android.graphics.Canvas);
+ method @CallSuper public void drawableHotspotChanged(float, float);
+ method @CallSuper protected void drawableStateChanged();
method public android.view.View findFocus();
- method public final <T extends android.view.View> T findViewById(int);
- method public final <T extends android.view.View> T findViewWithTag(java.lang.Object);
- method public void findViewsWithText(java.util.ArrayList<android.view.View>, java.lang.CharSequence, int);
- method protected deprecated boolean fitSystemWindows(android.graphics.Rect);
+ method public final <T extends android.view.View> T findViewById(@IdRes int);
+ method public final <T extends android.view.View> T findViewWithTag(Object);
+ method public void findViewsWithText(java.util.ArrayList<android.view.View>, CharSequence, int);
+ method @Deprecated protected boolean fitSystemWindows(android.graphics.Rect);
method public android.view.View focusSearch(int);
method public void forceHasOverlappingRendering(boolean);
method public void forceLayout();
method public static int generateViewId();
- method public java.lang.CharSequence getAccessibilityClassName();
+ method public CharSequence getAccessibilityClassName();
method public android.view.View.AccessibilityDelegate getAccessibilityDelegate();
method public int getAccessibilityLiveRegion();
method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
- method public java.lang.CharSequence getAccessibilityPaneTitle();
+ method @Nullable public CharSequence getAccessibilityPaneTitle();
method public int getAccessibilityTraversalAfter();
method public int getAccessibilityTraversalBefore();
- method public float getAlpha();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getAlpha();
method public android.view.animation.Animation getAnimation();
method public android.os.IBinder getApplicationWindowToken();
- method public java.lang.String[] getAutofillHints();
+ method @android.view.ViewDebug.ExportedProperty @Nullable public String[] getAutofillHints();
method public final android.view.autofill.AutofillId getAutofillId();
method public int getAutofillType();
- method public android.view.autofill.AutofillValue getAutofillValue();
+ method @Nullable public android.view.autofill.AutofillValue getAutofillValue();
method public android.graphics.drawable.Drawable getBackground();
- method public android.content.res.ColorStateList getBackgroundTintList();
- method public android.graphics.PorterDuff.Mode getBackgroundTintMode();
- method public int getBaseline();
- method public final int getBottom();
+ method @Nullable public android.content.res.ColorStateList getBackgroundTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getBackgroundTintMode();
+ method @android.view.ViewDebug.ExportedProperty(category="layout") public int getBaseline();
+ method @android.view.ViewDebug.CapturedViewProperty public final int getBottom();
method protected float getBottomFadingEdgeStrength();
method protected int getBottomPaddingOffset();
method public float getCameraDistance();
method public android.graphics.Rect getClipBounds();
method public boolean getClipBounds(android.graphics.Rect);
method public final boolean getClipToOutline();
- method public final android.view.contentcapture.ContentCaptureSession getContentCaptureSession();
- method public java.lang.CharSequence getContentDescription();
- method public final android.content.Context getContext();
+ method @Nullable public final android.view.contentcapture.ContentCaptureSession getContentCaptureSession();
+ method @android.view.ViewDebug.ExportedProperty(category="accessibility") public CharSequence getContentDescription();
+ method @android.view.ViewDebug.CapturedViewProperty public final android.content.Context getContext();
method protected android.view.ContextMenu.ContextMenuInfo getContextMenuInfo();
- method public final boolean getDefaultFocusHighlightEnabled();
+ method @android.view.ViewDebug.ExportedProperty(category="focus") public final boolean getDefaultFocusHighlightEnabled();
method public static int getDefaultSize(int, int);
method public android.view.Display getDisplay();
method public final int[] getDrawableState();
- method public deprecated android.graphics.Bitmap getDrawingCache();
- method public deprecated android.graphics.Bitmap getDrawingCache(boolean);
- method public deprecated int getDrawingCacheBackgroundColor();
- method public deprecated int getDrawingCacheQuality();
+ method @Deprecated public android.graphics.Bitmap getDrawingCache();
+ method @Deprecated public android.graphics.Bitmap getDrawingCache(boolean);
+ method @Deprecated @ColorInt public int getDrawingCacheBackgroundColor();
+ method @Deprecated public int getDrawingCacheQuality();
method public void getDrawingRect(android.graphics.Rect);
method public long getDrawingTime();
- method public float getElevation();
- method public boolean getFilterTouchesWhenObscured();
- method public boolean getFitsSystemWindows();
- method public int getFocusable();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getElevation();
+ method @android.view.ViewDebug.ExportedProperty public boolean getFilterTouchesWhenObscured();
+ method @android.view.ViewDebug.ExportedProperty public boolean getFitsSystemWindows();
+ method @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.View.NOT_FOCUSABLE, to="NOT_FOCUSABLE"), @android.view.ViewDebug.IntToString(from=android.view.View.FOCUSABLE, to="FOCUSABLE"), @android.view.ViewDebug.IntToString(from=android.view.View.FOCUSABLE_AUTO, to="FOCUSABLE_AUTO")}, category="focus") public int getFocusable();
method public java.util.ArrayList<android.view.View> getFocusables(int);
method public void getFocusedRect(android.graphics.Rect);
method public android.graphics.drawable.Drawable getForeground();
method public int getForegroundGravity();
- method public android.content.res.ColorStateList getForegroundTintList();
- method public android.graphics.PorterDuff.Mode getForegroundTintMode();
+ method @Nullable public android.content.res.ColorStateList getForegroundTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getForegroundTintMode();
method public boolean getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point);
method public final boolean getGlobalVisibleRect(android.graphics.Rect);
method public android.os.Handler getHandler();
method public final boolean getHasOverlappingRendering();
- method public final int getHeight();
+ method @android.view.ViewDebug.ExportedProperty(category="layout") public final int getHeight();
method public void getHitRect(android.graphics.Rect);
method public int getHorizontalFadingEdgeLength();
method protected int getHorizontalScrollbarHeight();
- method public int getId();
- method public int getImportantForAccessibility();
- method public int getImportantForAutofill();
- method public int getImportantForContentCapture();
+ method @android.view.ViewDebug.CapturedViewProperty @IdRes public int getId();
+ method @android.view.ViewDebug.ExportedProperty(category="accessibility", mapping={@android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, to="auto"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_ACCESSIBILITY_YES, to="yes"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO, to="no"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, to="noHideDescendants")}) public int getImportantForAccessibility();
+ method @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_AUTOFILL_AUTO, to="auto"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_AUTOFILL_YES, to="yes"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_AUTOFILL_NO, to="no"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS, to="yesExcludeDescendants"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS, to="noExcludeDescendants")}) public int getImportantForAutofill();
+ method @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, to="auto"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_YES, to="yes"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_NO, to="no"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS, to="yesExcludeDescendants"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS, to="noExcludeDescendants")}) public int getImportantForContentCapture();
method public boolean getKeepScreenOn();
method public android.view.KeyEvent.DispatcherState getKeyDispatcherState();
- method public int getLabelFor();
+ method @android.view.ViewDebug.ExportedProperty(category="accessibility") public int getLabelFor();
method public int getLayerType();
- method public int getLayoutDirection();
- method public android.view.ViewGroup.LayoutParams getLayoutParams();
- method public final int getLeft();
+ method @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=android.view.View.LAYOUT_DIRECTION_LTR, to="RESOLVED_DIRECTION_LTR"), @android.view.ViewDebug.IntToString(from=android.view.View.LAYOUT_DIRECTION_RTL, to="RESOLVED_DIRECTION_RTL")}) public int getLayoutDirection();
+ method @android.view.ViewDebug.ExportedProperty(deepExport=true, prefix="layout_") public android.view.ViewGroup.LayoutParams getLayoutParams();
+ method @android.view.ViewDebug.CapturedViewProperty public final int getLeft();
method protected float getLeftFadingEdgeStrength();
method protected int getLeftPaddingOffset();
method public final boolean getLocalVisibleRect(android.graphics.Rect);
- method public void getLocationInWindow(int[]);
- method public void getLocationOnScreen(int[]);
+ method public void getLocationInWindow(@Size(2) int[]);
+ method public void getLocationOnScreen(@Size(2) int[]);
method public android.graphics.Matrix getMatrix();
method public final int getMeasuredHeight();
- method public final int getMeasuredHeightAndState();
+ method @android.view.ViewDebug.ExportedProperty(category="measurement", flagMapping={@android.view.ViewDebug.FlagToString(mask=android.view.View.MEASURED_STATE_MASK, equals=android.view.View.MEASURED_STATE_TOO_SMALL, name="MEASURED_STATE_TOO_SMALL")}) public final int getMeasuredHeightAndState();
method public final int getMeasuredState();
method public final int getMeasuredWidth();
- method public final int getMeasuredWidthAndState();
+ method @android.view.ViewDebug.ExportedProperty(category="measurement", flagMapping={@android.view.ViewDebug.FlagToString(mask=android.view.View.MEASURED_STATE_MASK, equals=android.view.View.MEASURED_STATE_TOO_SMALL, name="MEASURED_STATE_TOO_SMALL")}) public final int getMeasuredWidthAndState();
method public int getMinimumHeight();
method public int getMinimumWidth();
method public int getNextClusterForwardId();
@@ -49881,9 +50006,9 @@
method public int getNextFocusRightId();
method public int getNextFocusUpId();
method public android.view.View.OnFocusChangeListener getOnFocusChangeListener();
- method public int getOutlineAmbientShadowColor();
+ method @ColorInt public int getOutlineAmbientShadowColor();
method public android.view.ViewOutlineProvider getOutlineProvider();
- method public int getOutlineSpotShadowColor();
+ method @ColorInt public int getOutlineSpotShadowColor();
method public int getOverScrollMode();
method public android.view.ViewOverlay getOverlay();
method public int getPaddingBottom();
@@ -49894,141 +50019,141 @@
method public int getPaddingTop();
method public final android.view.ViewParent getParent();
method public android.view.ViewParent getParentForAccessibility();
- method public float getPivotX();
- method public float getPivotY();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getPivotX();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getPivotY();
method public android.view.PointerIcon getPointerIcon();
method public android.content.res.Resources getResources();
method public final boolean getRevealOnFocusHint();
- method public final int getRight();
+ method @android.view.ViewDebug.CapturedViewProperty public final int getRight();
method protected float getRightFadingEdgeStrength();
method protected int getRightPaddingOffset();
method public android.view.View getRootView();
method public android.view.WindowInsets getRootWindowInsets();
- method public float getRotation();
- method public float getRotationX();
- method public float getRotationY();
- method public float getScaleX();
- method public float getScaleY();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getRotation();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getRotationX();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getRotationY();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getScaleX();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getScaleY();
method public int getScrollBarDefaultDelayBeforeFade();
method public int getScrollBarFadeDuration();
method public int getScrollBarSize();
- method public int getScrollBarStyle();
+ method @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.View.SCROLLBARS_INSIDE_OVERLAY, to="INSIDE_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.View.SCROLLBARS_INSIDE_INSET, to="INSIDE_INSET"), @android.view.ViewDebug.IntToString(from=android.view.View.SCROLLBARS_OUTSIDE_OVERLAY, to="OUTSIDE_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.View.SCROLLBARS_OUTSIDE_INSET, to="OUTSIDE_INSET")}) public int getScrollBarStyle();
method public int getScrollIndicators();
method public final int getScrollX();
method public final int getScrollY();
- method public int getSolidColor();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") @ColorInt public int getSolidColor();
method public android.animation.StateListAnimator getStateListAnimator();
method protected int getSuggestedMinimumHeight();
method protected int getSuggestedMinimumWidth();
method public int getSystemUiVisibility();
- method public java.lang.Object getTag();
- method public java.lang.Object getTag(int);
- method public int getTextAlignment();
- method public int getTextDirection();
- method public java.lang.CharSequence getTooltipText();
- method public final int getTop();
+ method @android.view.ViewDebug.ExportedProperty public Object getTag();
+ method public Object getTag(int);
+ method @android.view.ViewDebug.ExportedProperty(category="text", mapping={@android.view.ViewDebug.IntToString(from=android.view.View.TEXT_ALIGNMENT_INHERIT, to="INHERIT"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_ALIGNMENT_GRAVITY, to="GRAVITY"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_ALIGNMENT_TEXT_START, to="TEXT_START"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_ALIGNMENT_TEXT_END, to="TEXT_END"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_ALIGNMENT_CENTER, to="CENTER"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_ALIGNMENT_VIEW_START, to="VIEW_START"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_ALIGNMENT_VIEW_END, to="VIEW_END")}) public int getTextAlignment();
+ method @android.view.ViewDebug.ExportedProperty(category="text", mapping={@android.view.ViewDebug.IntToString(from=android.view.View.TEXT_DIRECTION_INHERIT, to="INHERIT"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_DIRECTION_FIRST_STRONG, to="FIRST_STRONG"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_DIRECTION_ANY_RTL, to="ANY_RTL"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_DIRECTION_LTR, to="LTR"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_DIRECTION_RTL, to="RTL"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_DIRECTION_LOCALE, to="LOCALE"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_DIRECTION_FIRST_STRONG_LTR, to="FIRST_STRONG_LTR"), @android.view.ViewDebug.IntToString(from=android.view.View.TEXT_DIRECTION_FIRST_STRONG_RTL, to="FIRST_STRONG_RTL")}) public int getTextDirection();
+ method @Nullable public CharSequence getTooltipText();
+ method @android.view.ViewDebug.CapturedViewProperty public final int getTop();
method protected float getTopFadingEdgeStrength();
method protected int getTopPaddingOffset();
method public android.view.TouchDelegate getTouchDelegate();
method public java.util.ArrayList<android.view.View> getTouchables();
- method public float getTransitionAlpha();
- method public java.lang.String getTransitionName();
- method public float getTranslationX();
- method public float getTranslationY();
- method public float getTranslationZ();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getTransitionAlpha();
+ method @android.view.ViewDebug.ExportedProperty public String getTransitionName();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getTranslationX();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getTranslationY();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getTranslationZ();
method public long getUniqueDrawingId();
method public int getVerticalFadingEdgeLength();
method public int getVerticalScrollbarPosition();
method public int getVerticalScrollbarWidth();
method public android.view.ViewTreeObserver getViewTreeObserver();
- method public int getVisibility();
- method public final int getWidth();
+ method @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.View.VISIBLE, to="VISIBLE"), @android.view.ViewDebug.IntToString(from=android.view.View.INVISIBLE, to="INVISIBLE"), @android.view.ViewDebug.IntToString(from=android.view.View.GONE, to="GONE")}) public int getVisibility();
+ method @android.view.ViewDebug.ExportedProperty(category="layout") public final int getWidth();
method protected int getWindowAttachCount();
method public android.view.WindowId getWindowId();
method public int getWindowSystemUiVisibility();
method public android.os.IBinder getWindowToken();
method public int getWindowVisibility();
method public void getWindowVisibleDisplayFrame(android.graphics.Rect);
- method public float getX();
- method public float getY();
- method public float getZ();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getX();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getY();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public float getZ();
method public boolean hasExplicitFocusable();
- method public boolean hasFocus();
+ method @android.view.ViewDebug.ExportedProperty(category="focus") public boolean hasFocus();
method public boolean hasFocusable();
method public boolean hasNestedScrollingParent();
method public boolean hasOnClickListeners();
- method public boolean hasOverlappingRendering();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public boolean hasOverlappingRendering();
method public boolean hasPointerCapture();
- method public boolean hasTransientState();
+ method @android.view.ViewDebug.ExportedProperty(category="layout") public boolean hasTransientState();
method public boolean hasWindowFocus();
- method public static android.view.View inflate(android.content.Context, int, android.view.ViewGroup);
- method public deprecated void invalidate(android.graphics.Rect);
- method public deprecated void invalidate(int, int, int, int);
+ method public static android.view.View inflate(android.content.Context, @LayoutRes int, android.view.ViewGroup);
+ method @Deprecated public void invalidate(android.graphics.Rect);
+ method @Deprecated public void invalidate(int, int, int, int);
method public void invalidate();
- method public void invalidateDrawable(android.graphics.drawable.Drawable);
+ method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
method public void invalidateOutline();
method public boolean isAccessibilityFocused();
method public boolean isAccessibilityHeading();
- method public boolean isActivated();
+ method @android.view.ViewDebug.ExportedProperty public boolean isActivated();
method public boolean isAttachedToWindow();
- method public boolean isClickable();
+ method @android.view.ViewDebug.ExportedProperty public boolean isClickable();
method public boolean isContextClickable();
method public boolean isDirty();
- method public deprecated boolean isDrawingCacheEnabled();
+ method @Deprecated @android.view.ViewDebug.ExportedProperty(category="drawing") public boolean isDrawingCacheEnabled();
method public boolean isDuplicateParentStateEnabled();
- method public boolean isEnabled();
- method public final boolean isFocusable();
- method public final boolean isFocusableInTouchMode();
- method public boolean isFocused();
- method public final boolean isFocusedByDefault();
- method public boolean isForceDarkAllowed();
- method public boolean isHapticFeedbackEnabled();
- method public boolean isHardwareAccelerated();
+ method @android.view.ViewDebug.ExportedProperty public boolean isEnabled();
+ method @android.view.ViewDebug.ExportedProperty(category="focus") public final boolean isFocusable();
+ method @android.view.ViewDebug.ExportedProperty(category="focus") public final boolean isFocusableInTouchMode();
+ method @android.view.ViewDebug.ExportedProperty(category="focus") public boolean isFocused();
+ method @android.view.ViewDebug.ExportedProperty(category="focus") public final boolean isFocusedByDefault();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public boolean isForceDarkAllowed();
+ method @android.view.ViewDebug.ExportedProperty public boolean isHapticFeedbackEnabled();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public boolean isHardwareAccelerated();
method public boolean isHorizontalFadingEdgeEnabled();
method public boolean isHorizontalScrollBarEnabled();
- method public boolean isHovered();
+ method @android.view.ViewDebug.ExportedProperty public boolean isHovered();
method public boolean isImportantForAccessibility();
method public final boolean isImportantForAutofill();
method public final boolean isImportantForContentCapture();
method public boolean isInEditMode();
method public boolean isInLayout();
- method public boolean isInTouchMode();
- method public final boolean isKeyboardNavigationCluster();
+ method @android.view.ViewDebug.ExportedProperty public boolean isInTouchMode();
+ method @android.view.ViewDebug.ExportedProperty(category="focus") public final boolean isKeyboardNavigationCluster();
method public boolean isLaidOut();
method public boolean isLayoutDirectionResolved();
method public boolean isLayoutRequested();
method public boolean isLongClickable();
method public boolean isNestedScrollingEnabled();
- method public boolean isOpaque();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public boolean isOpaque();
method protected boolean isPaddingOffsetRequired();
method public boolean isPaddingRelative();
method public boolean isPivotSet();
- method public boolean isPressed();
+ method @android.view.ViewDebug.ExportedProperty public boolean isPressed();
method public boolean isSaveEnabled();
method public boolean isSaveFromParentEnabled();
method public boolean isScreenReaderFocusable();
method public boolean isScrollContainer();
method public boolean isScrollbarFadingEnabled();
- method public boolean isSelected();
+ method @android.view.ViewDebug.ExportedProperty public boolean isSelected();
method public boolean isShown();
- method public boolean isSoundEffectsEnabled();
+ method @android.view.ViewDebug.ExportedProperty public boolean isSoundEffectsEnabled();
method public final boolean isTemporarilyDetached();
method public boolean isTextAlignmentResolved();
method public boolean isTextDirectionResolved();
method public boolean isVerticalFadingEdgeEnabled();
method public boolean isVerticalScrollBarEnabled();
method public boolean isVisibleToUserForAutofill(int);
- method public void jumpDrawablesToCurrentState();
+ method @CallSuper public void jumpDrawablesToCurrentState();
method public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
method public void layout(int, int, int, int);
method public final void measure(int, int);
method protected static int[] mergeDrawableStates(int[], int[]);
method public void offsetLeftAndRight(int);
method public void offsetTopAndBottom(int);
- method protected void onAnimationEnd();
- method protected void onAnimationStart();
+ method @CallSuper protected void onAnimationEnd();
+ method @CallSuper protected void onAnimationStart();
method public android.view.WindowInsets onApplyWindowInsets(android.view.WindowInsets);
- method protected void onAttachedToWindow();
+ method @CallSuper protected void onAttachedToWindow();
method public void onCancelPendingInputEvents();
method public boolean onCapturedPointerEvent(android.view.MotionEvent);
method public boolean onCheckIsTextEditor();
@@ -50036,21 +50161,21 @@
method protected void onCreateContextMenu(android.view.ContextMenu);
method protected int[] onCreateDrawableState(int);
method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
- method protected void onDetachedFromWindow();
+ method @CallSuper protected void onDetachedFromWindow();
method protected void onDisplayHint(int);
method public boolean onDragEvent(android.view.DragEvent);
method protected void onDraw(android.graphics.Canvas);
method public void onDrawForeground(android.graphics.Canvas);
method protected final void onDrawScrollBars(android.graphics.Canvas);
method public boolean onFilterTouchEventForSecurity(android.view.MotionEvent);
- method protected void onFinishInflate();
+ method @CallSuper protected void onFinishInflate();
method public void onFinishTemporaryDetach();
- method protected void onFocusChanged(boolean, int, android.graphics.Rect);
+ method @CallSuper protected void onFocusChanged(boolean, int, @Nullable android.graphics.Rect);
method public boolean onGenericMotionEvent(android.view.MotionEvent);
method public void onHoverChanged(boolean);
method public boolean onHoverEvent(android.view.MotionEvent);
- method public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
+ method @CallSuper public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+ method @CallSuper public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
method public boolean onKeyDown(int, android.view.KeyEvent);
method public boolean onKeyLongPress(int, android.view.KeyEvent);
method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
@@ -50060,17 +50185,17 @@
method protected void onLayout(boolean, int, int, int, int);
method protected void onMeasure(int, int);
method protected void onOverScrolled(int, int, boolean, boolean);
- method public void onPointerCaptureChange(boolean);
- method public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+ method @CallSuper public void onPointerCaptureChange(boolean);
+ method @CallSuper public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
method public void onProvideAutofillStructure(android.view.ViewStructure, int);
method public void onProvideAutofillVirtualStructure(android.view.ViewStructure, int);
- method public void onProvideContentCaptureStructure(android.view.ViewStructure, int);
+ method public void onProvideContentCaptureStructure(@NonNull android.view.ViewStructure, int);
method public void onProvideStructure(android.view.ViewStructure);
method public void onProvideVirtualStructure(android.view.ViewStructure);
method public android.view.PointerIcon onResolvePointerIcon(android.view.MotionEvent, int);
- method protected void onRestoreInstanceState(android.os.Parcelable);
+ method @CallSuper protected void onRestoreInstanceState(android.os.Parcelable);
method public void onRtlPropertiesChanged(int);
- method protected android.os.Parcelable onSaveInstanceState();
+ method @CallSuper @Nullable protected android.os.Parcelable onSaveInstanceState();
method public void onScreenStateChanged(int);
method protected void onScrollChanged(int, int, int, int);
method protected boolean onSetAlpha(int);
@@ -50078,8 +50203,8 @@
method public void onStartTemporaryDetach();
method public boolean onTouchEvent(android.view.MotionEvent);
method public boolean onTrackballEvent(android.view.MotionEvent);
- method public void onVisibilityAggregated(boolean);
- method protected void onVisibilityChanged(android.view.View, int);
+ method @CallSuper public void onVisibilityAggregated(boolean);
+ method protected void onVisibilityChanged(@NonNull android.view.View, int);
method public void onWindowFocusChanged(boolean);
method public void onWindowSystemUiVisibilityChanged(int);
method protected void onWindowVisibilityChanged(int);
@@ -50093,75 +50218,75 @@
method public boolean performLongClick();
method public boolean performLongClick(float, float);
method public void playSoundEffect(int);
- method public boolean post(java.lang.Runnable);
- method public boolean postDelayed(java.lang.Runnable, long);
+ method public boolean post(Runnable);
+ method public boolean postDelayed(Runnable, long);
method public void postInvalidate();
method public void postInvalidate(int, int, int, int);
method public void postInvalidateDelayed(long);
method public void postInvalidateDelayed(long, int, int, int, int);
method public void postInvalidateOnAnimation();
method public void postInvalidateOnAnimation(int, int, int, int);
- method public void postOnAnimation(java.lang.Runnable);
- method public void postOnAnimationDelayed(java.lang.Runnable, long);
+ method public void postOnAnimation(Runnable);
+ method public void postOnAnimationDelayed(Runnable, long);
method public void refreshDrawableState();
method public void releasePointerCapture();
- method public boolean removeCallbacks(java.lang.Runnable);
+ method public boolean removeCallbacks(Runnable);
method public void removeOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener);
method public void removeOnLayoutChangeListener(android.view.View.OnLayoutChangeListener);
method public void removeOnUnhandledKeyEventListener(android.view.View.OnUnhandledKeyEventListener);
method public void requestApplyInsets();
- method public deprecated void requestFitSystemWindows();
+ method @Deprecated public void requestFitSystemWindows();
method public final boolean requestFocus();
method public final boolean requestFocus(int);
method public boolean requestFocus(int, android.graphics.Rect);
method public final boolean requestFocusFromTouch();
- method public void requestLayout();
+ method @CallSuper public void requestLayout();
method public void requestPointerCapture();
method public boolean requestRectangleOnScreen(android.graphics.Rect);
method public boolean requestRectangleOnScreen(android.graphics.Rect, boolean);
method public final void requestUnbufferedDispatch(android.view.MotionEvent);
- method public final <T extends android.view.View> T requireViewById(int);
+ method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
method public void resetPivot();
method public static int resolveSize(int, int);
method public static int resolveSizeAndState(int, int, int);
method public boolean restoreDefaultFocus();
method public void restoreHierarchyState(android.util.SparseArray<android.os.Parcelable>);
method public void saveHierarchyState(android.util.SparseArray<android.os.Parcelable>);
- method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
+ method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
method public void scrollBy(int, int);
method public void scrollTo(int, int);
method public void sendAccessibilityEvent(int);
method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
- method public void setAccessibilityDelegate(android.view.View.AccessibilityDelegate);
+ method public void setAccessibilityDelegate(@Nullable android.view.View.AccessibilityDelegate);
method public void setAccessibilityHeading(boolean);
method public void setAccessibilityLiveRegion(int);
- method public void setAccessibilityPaneTitle(java.lang.CharSequence);
+ method public void setAccessibilityPaneTitle(@Nullable CharSequence);
method public void setAccessibilityTraversalAfter(int);
method public void setAccessibilityTraversalBefore(int);
method public void setActivated(boolean);
- method public void setAlpha(float);
+ method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
method public void setAnimation(android.view.animation.Animation);
- method public void setAnimationMatrix(android.graphics.Matrix);
- method public void setAutofillHints(java.lang.String...);
- method public void setAutofillId(android.view.autofill.AutofillId);
+ method public void setAnimationMatrix(@Nullable android.graphics.Matrix);
+ method public void setAutofillHints(@Nullable java.lang.String...);
+ method public void setAutofillId(@Nullable android.view.autofill.AutofillId);
method public void setBackground(android.graphics.drawable.Drawable);
- method public void setBackgroundColor(int);
- method public deprecated void setBackgroundDrawable(android.graphics.drawable.Drawable);
- method public void setBackgroundResource(int);
- method public void setBackgroundTintList(android.content.res.ColorStateList);
- method public void setBackgroundTintMode(android.graphics.PorterDuff.Mode);
+ method public void setBackgroundColor(@ColorInt int);
+ method @Deprecated public void setBackgroundDrawable(android.graphics.drawable.Drawable);
+ method public void setBackgroundResource(@DrawableRes int);
+ method public void setBackgroundTintList(@Nullable android.content.res.ColorStateList);
+ method public void setBackgroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
method public final void setBottom(int);
method public void setCameraDistance(float);
method public void setClickable(boolean);
method public void setClipBounds(android.graphics.Rect);
method public void setClipToOutline(boolean);
- method public void setContentCaptureSession(android.view.contentcapture.ContentCaptureSession);
- method public void setContentDescription(java.lang.CharSequence);
+ method public void setContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureSession);
+ method public void setContentDescription(CharSequence);
method public void setContextClickable(boolean);
method public void setDefaultFocusHighlightEnabled(boolean);
- method public deprecated void setDrawingCacheBackgroundColor(int);
- method public deprecated void setDrawingCacheEnabled(boolean);
- method public deprecated void setDrawingCacheQuality(int);
+ method @Deprecated public void setDrawingCacheBackgroundColor(@ColorInt int);
+ method @Deprecated public void setDrawingCacheEnabled(boolean);
+ method @Deprecated public void setDrawingCacheQuality(int);
method public void setDuplicateParentStateEnabled(boolean);
method public void setElevation(float);
method public void setEnabled(boolean);
@@ -50175,22 +50300,22 @@
method public void setForceDarkAllowed(boolean);
method public void setForeground(android.graphics.drawable.Drawable);
method public void setForegroundGravity(int);
- method public void setForegroundTintList(android.content.res.ColorStateList);
- method public void setForegroundTintMode(android.graphics.PorterDuff.Mode);
+ method public void setForegroundTintList(@Nullable android.content.res.ColorStateList);
+ method public void setForegroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
method public void setHapticFeedbackEnabled(boolean);
method public void setHasTransientState(boolean);
method public void setHorizontalFadingEdgeEnabled(boolean);
method public void setHorizontalScrollBarEnabled(boolean);
method public void setHovered(boolean);
- method public void setId(int);
+ method public void setId(@IdRes int);
method public void setImportantForAccessibility(int);
method public void setImportantForAutofill(int);
method public void setImportantForContentCapture(int);
method public void setKeepScreenOn(boolean);
method public void setKeyboardNavigationCluster(boolean);
- method public void setLabelFor(int);
- method public void setLayerPaint(android.graphics.Paint);
- method public void setLayerType(int, android.graphics.Paint);
+ method public void setLabelFor(@IdRes int);
+ method public void setLayerPaint(@Nullable android.graphics.Paint);
+ method public void setLayerType(int, @Nullable android.graphics.Paint);
method public void setLayoutDirection(int);
method public void setLayoutParams(android.view.ViewGroup.LayoutParams);
method public final void setLeft(int);
@@ -50208,21 +50333,21 @@
method public void setNextFocusUpId(int);
method public void setOnApplyWindowInsetsListener(android.view.View.OnApplyWindowInsetsListener);
method public void setOnCapturedPointerListener(android.view.View.OnCapturedPointerListener);
- method public void setOnClickListener(android.view.View.OnClickListener);
- method public void setOnContextClickListener(android.view.View.OnContextClickListener);
+ method public void setOnClickListener(@Nullable android.view.View.OnClickListener);
+ method public void setOnContextClickListener(@Nullable android.view.View.OnContextClickListener);
method public void setOnCreateContextMenuListener(android.view.View.OnCreateContextMenuListener);
method public void setOnDragListener(android.view.View.OnDragListener);
method public void setOnFocusChangeListener(android.view.View.OnFocusChangeListener);
method public void setOnGenericMotionListener(android.view.View.OnGenericMotionListener);
method public void setOnHoverListener(android.view.View.OnHoverListener);
method public void setOnKeyListener(android.view.View.OnKeyListener);
- method public void setOnLongClickListener(android.view.View.OnLongClickListener);
+ method public void setOnLongClickListener(@Nullable android.view.View.OnLongClickListener);
method public void setOnScrollChangeListener(android.view.View.OnScrollChangeListener);
method public void setOnSystemUiVisibilityChangeListener(android.view.View.OnSystemUiVisibilityChangeListener);
method public void setOnTouchListener(android.view.View.OnTouchListener);
- method public void setOutlineAmbientShadowColor(int);
+ method public void setOutlineAmbientShadowColor(@ColorInt int);
method public void setOutlineProvider(android.view.ViewOutlineProvider);
- method public void setOutlineSpotShadowColor(int);
+ method public void setOutlineSpotShadowColor(@ColorInt int);
method public void setOverScrollMode(int);
method public void setPadding(int, int, int, int);
method public void setPaddingRelative(int, int, int, int);
@@ -50254,15 +50379,15 @@
method public void setSoundEffectsEnabled(boolean);
method public void setStateListAnimator(android.animation.StateListAnimator);
method public void setSystemUiVisibility(int);
- method public void setTag(java.lang.Object);
- method public void setTag(int, java.lang.Object);
+ method public void setTag(Object);
+ method public void setTag(int, Object);
method public void setTextAlignment(int);
method public void setTextDirection(int);
- method public void setTooltipText(java.lang.CharSequence);
+ method public void setTooltipText(@Nullable CharSequence);
method public final void setTop(int);
method public void setTouchDelegate(android.view.TouchDelegate);
method public void setTransitionAlpha(float);
- method public final void setTransitionName(java.lang.String);
+ method public final void setTransitionName(String);
method public void setTranslationX(float);
method public void setTranslationY(float);
method public void setTranslationZ(float);
@@ -50270,7 +50395,7 @@
method public void setVerticalScrollBarEnabled(boolean);
method public void setVerticalScrollbarPosition(int);
method public void setVisibility(int);
- method public deprecated void setWillNotCacheDrawing(boolean);
+ method @Deprecated public void setWillNotCacheDrawing(boolean);
method public void setWillNotDraw(boolean);
method public void setX(float);
method public void setY(float);
@@ -50280,36 +50405,36 @@
method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback);
method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback, int);
method public void startAnimation(android.view.animation.Animation);
- method public final deprecated boolean startDrag(android.content.ClipData, android.view.View.DragShadowBuilder, java.lang.Object, int);
- method public final boolean startDragAndDrop(android.content.ClipData, android.view.View.DragShadowBuilder, java.lang.Object, int);
+ method @Deprecated public final boolean startDrag(android.content.ClipData, android.view.View.DragShadowBuilder, Object, int);
+ method public final boolean startDragAndDrop(android.content.ClipData, android.view.View.DragShadowBuilder, Object, int);
method public boolean startNestedScroll(int);
method public void stopNestedScroll();
method public void transformMatrixToGlobal(android.graphics.Matrix);
method public void transformMatrixToLocal(android.graphics.Matrix);
- method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+ method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
method public void unscheduleDrawable(android.graphics.drawable.Drawable);
method public final void updateDragShadow(android.view.View.DragShadowBuilder);
- method protected boolean verifyDrawable(android.graphics.drawable.Drawable);
- method public deprecated boolean willNotCacheDrawing();
- method public boolean willNotDraw();
+ method @CallSuper protected boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable);
+ method @Deprecated @android.view.ViewDebug.ExportedProperty(category="drawing") public boolean willNotCacheDrawing();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public boolean willNotDraw();
field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
- field public static final android.util.Property<android.view.View, java.lang.Float> ALPHA;
+ field public static final android.util.Property<android.view.View,java.lang.Float> ALPHA;
field public static final int AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 1; // 0x1
- field public static final java.lang.String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE = "creditCardExpirationDate";
- field public static final java.lang.String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY = "creditCardExpirationDay";
- field public static final java.lang.String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH = "creditCardExpirationMonth";
- field public static final java.lang.String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR = "creditCardExpirationYear";
- field public static final java.lang.String AUTOFILL_HINT_CREDIT_CARD_NUMBER = "creditCardNumber";
- field public static final java.lang.String AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE = "creditCardSecurityCode";
- field public static final java.lang.String AUTOFILL_HINT_EMAIL_ADDRESS = "emailAddress";
- field public static final java.lang.String AUTOFILL_HINT_NAME = "name";
- field public static final java.lang.String AUTOFILL_HINT_PASSWORD = "password";
- field public static final java.lang.String AUTOFILL_HINT_PHONE = "phone";
- field public static final java.lang.String AUTOFILL_HINT_POSTAL_ADDRESS = "postalAddress";
- field public static final java.lang.String AUTOFILL_HINT_POSTAL_CODE = "postalCode";
- field public static final java.lang.String AUTOFILL_HINT_USERNAME = "username";
+ field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE = "creditCardExpirationDate";
+ field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY = "creditCardExpirationDay";
+ field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH = "creditCardExpirationMonth";
+ field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR = "creditCardExpirationYear";
+ field public static final String AUTOFILL_HINT_CREDIT_CARD_NUMBER = "creditCardNumber";
+ field public static final String AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE = "creditCardSecurityCode";
+ field public static final String AUTOFILL_HINT_EMAIL_ADDRESS = "emailAddress";
+ field public static final String AUTOFILL_HINT_NAME = "name";
+ field public static final String AUTOFILL_HINT_PASSWORD = "password";
+ field public static final String AUTOFILL_HINT_PHONE = "phone";
+ field public static final String AUTOFILL_HINT_POSTAL_ADDRESS = "postalAddress";
+ field public static final String AUTOFILL_HINT_POSTAL_CODE = "postalCode";
+ field public static final String AUTOFILL_HINT_USERNAME = "username";
field public static final int AUTOFILL_TYPE_DATE = 4; // 0x4
field public static final int AUTOFILL_TYPE_LIST = 3; // 0x3
field public static final int AUTOFILL_TYPE_NONE = 0; // 0x0
@@ -50321,9 +50446,9 @@
field public static final int DRAG_FLAG_GLOBAL_URI_READ = 1; // 0x1
field public static final int DRAG_FLAG_GLOBAL_URI_WRITE = 2; // 0x2
field public static final int DRAG_FLAG_OPAQUE = 512; // 0x200
- field public static final deprecated int DRAWING_CACHE_QUALITY_AUTO = 0; // 0x0
- field public static final deprecated int DRAWING_CACHE_QUALITY_HIGH = 1048576; // 0x100000
- field public static final deprecated int DRAWING_CACHE_QUALITY_LOW = 524288; // 0x80000
+ field @Deprecated public static final int DRAWING_CACHE_QUALITY_AUTO = 0; // 0x0
+ field @Deprecated public static final int DRAWING_CACHE_QUALITY_HIGH = 1048576; // 0x100000
+ field @Deprecated public static final int DRAWING_CACHE_QUALITY_LOW = 524288; // 0x80000
field protected static final int[] EMPTY_STATE_SET;
field protected static final int[] ENABLED_FOCUSED_SELECTED_STATE_SET;
field protected static final int[] ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
@@ -50399,11 +50524,11 @@
field protected static final int[] PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
field protected static final int[] PRESSED_STATE_SET;
field protected static final int[] PRESSED_WINDOW_FOCUSED_STATE_SET;
- field public static final android.util.Property<android.view.View, java.lang.Float> ROTATION;
- field public static final android.util.Property<android.view.View, java.lang.Float> ROTATION_X;
- field public static final android.util.Property<android.view.View, java.lang.Float> ROTATION_Y;
- field public static final android.util.Property<android.view.View, java.lang.Float> SCALE_X;
- field public static final android.util.Property<android.view.View, java.lang.Float> SCALE_Y;
+ field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION;
+ field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION_X;
+ field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION_Y;
+ field public static final android.util.Property<android.view.View,java.lang.Float> SCALE_X;
+ field public static final android.util.Property<android.view.View,java.lang.Float> SCALE_Y;
field public static final int SCREEN_STATE_OFF = 0; // 0x0
field public static final int SCREEN_STATE_ON = 1; // 0x1
field public static final int SCROLLBARS_INSIDE_INSET = 16777216; // 0x1000000
@@ -50425,8 +50550,8 @@
field protected static final int[] SELECTED_STATE_SET;
field protected static final int[] SELECTED_WINDOW_FOCUSED_STATE_SET;
field public static final int SOUND_EFFECTS_ENABLED = 134217728; // 0x8000000
- field public static final deprecated int STATUS_BAR_HIDDEN = 1; // 0x1
- field public static final deprecated int STATUS_BAR_VISIBLE = 0; // 0x0
+ field @Deprecated public static final int STATUS_BAR_HIDDEN = 1; // 0x1
+ field @Deprecated public static final int STATUS_BAR_VISIBLE = 0; // 0x0
field public static final int SYSTEM_UI_FLAG_FULLSCREEN = 4; // 0x4
field public static final int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 2; // 0x2
field public static final int SYSTEM_UI_FLAG_IMMERSIVE = 2048; // 0x800
@@ -50454,20 +50579,20 @@
field public static final int TEXT_DIRECTION_LOCALE = 5; // 0x5
field public static final int TEXT_DIRECTION_LTR = 3; // 0x3
field public static final int TEXT_DIRECTION_RTL = 4; // 0x4
- field public static final android.util.Property<android.view.View, java.lang.Float> TRANSLATION_X;
- field public static final android.util.Property<android.view.View, java.lang.Float> TRANSLATION_Y;
- field public static final android.util.Property<android.view.View, java.lang.Float> TRANSLATION_Z;
- field protected static final java.lang.String VIEW_LOG_TAG = "View";
+ field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_X;
+ field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_Y;
+ field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_Z;
+ field protected static final String VIEW_LOG_TAG = "View";
field public static final int VISIBLE = 0; // 0x0
field protected static final int[] WINDOW_FOCUSED_STATE_SET;
- field public static final android.util.Property<android.view.View, java.lang.Float> X;
- field public static final android.util.Property<android.view.View, java.lang.Float> Y;
- field public static final android.util.Property<android.view.View, java.lang.Float> Z;
+ field public static final android.util.Property<android.view.View,java.lang.Float> X;
+ field public static final android.util.Property<android.view.View,java.lang.Float> Y;
+ field public static final android.util.Property<android.view.View,java.lang.Float> Z;
}
public static class View.AccessibilityDelegate {
ctor public View.AccessibilityDelegate();
- method public void addExtraDataToAccessibilityNodeInfo(android.view.View, android.view.accessibility.AccessibilityNodeInfo, java.lang.String, android.os.Bundle);
+ method public void addExtraDataToAccessibilityNodeInfo(@NonNull android.view.View, @NonNull android.view.accessibility.AccessibilityNodeInfo, @NonNull String, @Nullable android.os.Bundle);
method public boolean dispatchPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider(android.view.View);
method public void onInitializeAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
@@ -50481,7 +50606,7 @@
public static class View.BaseSavedState extends android.view.AbsSavedState {
ctor public View.BaseSavedState(android.os.Parcel);
- ctor public View.BaseSavedState(android.os.Parcel, java.lang.ClassLoader);
+ ctor public View.BaseSavedState(android.os.Parcel, ClassLoader);
ctor public View.BaseSavedState(android.os.Parcelable);
field public static final android.os.Parcelable.Creator<android.view.View.BaseSavedState> CREATOR;
}
@@ -50498,80 +50623,80 @@
ctor public View.MeasureSpec();
method public static int getMode(int);
method public static int getSize(int);
- method public static int makeMeasureSpec(int, int);
- method public static java.lang.String toString(int);
+ method public static int makeMeasureSpec(@IntRange(from=0, to=0x40000000 - 1) int, int);
+ method public static String toString(int);
field public static final int AT_MOST = -2147483648; // 0x80000000
field public static final int EXACTLY = 1073741824; // 0x40000000
field public static final int UNSPECIFIED = 0; // 0x0
}
- public static abstract interface View.OnApplyWindowInsetsListener {
- method public abstract android.view.WindowInsets onApplyWindowInsets(android.view.View, android.view.WindowInsets);
+ public static interface View.OnApplyWindowInsetsListener {
+ method public android.view.WindowInsets onApplyWindowInsets(android.view.View, android.view.WindowInsets);
}
- public static abstract interface View.OnAttachStateChangeListener {
- method public abstract void onViewAttachedToWindow(android.view.View);
- method public abstract void onViewDetachedFromWindow(android.view.View);
+ public static interface View.OnAttachStateChangeListener {
+ method public void onViewAttachedToWindow(android.view.View);
+ method public void onViewDetachedFromWindow(android.view.View);
}
- public static abstract interface View.OnCapturedPointerListener {
- method public abstract boolean onCapturedPointer(android.view.View, android.view.MotionEvent);
+ public static interface View.OnCapturedPointerListener {
+ method public boolean onCapturedPointer(android.view.View, android.view.MotionEvent);
}
- public static abstract interface View.OnClickListener {
- method public abstract void onClick(android.view.View);
+ public static interface View.OnClickListener {
+ method public void onClick(android.view.View);
}
- public static abstract interface View.OnContextClickListener {
- method public abstract boolean onContextClick(android.view.View);
+ public static interface View.OnContextClickListener {
+ method public boolean onContextClick(android.view.View);
}
- public static abstract interface View.OnCreateContextMenuListener {
- method public abstract void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
+ public static interface View.OnCreateContextMenuListener {
+ method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
}
- public static abstract interface View.OnDragListener {
- method public abstract boolean onDrag(android.view.View, android.view.DragEvent);
+ public static interface View.OnDragListener {
+ method public boolean onDrag(android.view.View, android.view.DragEvent);
}
- public static abstract interface View.OnFocusChangeListener {
- method public abstract void onFocusChange(android.view.View, boolean);
+ public static interface View.OnFocusChangeListener {
+ method public void onFocusChange(android.view.View, boolean);
}
- public static abstract interface View.OnGenericMotionListener {
- method public abstract boolean onGenericMotion(android.view.View, android.view.MotionEvent);
+ public static interface View.OnGenericMotionListener {
+ method public boolean onGenericMotion(android.view.View, android.view.MotionEvent);
}
- public static abstract interface View.OnHoverListener {
- method public abstract boolean onHover(android.view.View, android.view.MotionEvent);
+ public static interface View.OnHoverListener {
+ method public boolean onHover(android.view.View, android.view.MotionEvent);
}
- public static abstract interface View.OnKeyListener {
- method public abstract boolean onKey(android.view.View, int, android.view.KeyEvent);
+ public static interface View.OnKeyListener {
+ method public boolean onKey(android.view.View, int, android.view.KeyEvent);
}
- public static abstract interface View.OnLayoutChangeListener {
- method public abstract void onLayoutChange(android.view.View, int, int, int, int, int, int, int, int);
+ public static interface View.OnLayoutChangeListener {
+ method public void onLayoutChange(android.view.View, int, int, int, int, int, int, int, int);
}
- public static abstract interface View.OnLongClickListener {
- method public abstract boolean onLongClick(android.view.View);
+ public static interface View.OnLongClickListener {
+ method public boolean onLongClick(android.view.View);
}
- public static abstract interface View.OnScrollChangeListener {
- method public abstract void onScrollChange(android.view.View, int, int, int, int);
+ public static interface View.OnScrollChangeListener {
+ method public void onScrollChange(android.view.View, int, int, int, int);
}
- public static abstract interface View.OnSystemUiVisibilityChangeListener {
- method public abstract void onSystemUiVisibilityChange(int);
+ public static interface View.OnSystemUiVisibilityChangeListener {
+ method public void onSystemUiVisibilityChange(int);
}
- public static abstract interface View.OnTouchListener {
- method public abstract boolean onTouch(android.view.View, android.view.MotionEvent);
+ public static interface View.OnTouchListener {
+ method public boolean onTouch(android.view.View, android.view.MotionEvent);
}
- public static abstract interface View.OnUnhandledKeyEventListener {
- method public abstract boolean onUnhandledKeyEvent(android.view.View, android.view.KeyEvent);
+ public static interface View.OnUnhandledKeyEventListener {
+ method public boolean onUnhandledKeyEvent(android.view.View, android.view.KeyEvent);
}
public final class ViewAnimationUtils {
@@ -50579,20 +50704,20 @@
}
public class ViewConfiguration {
- ctor public deprecated ViewConfiguration();
+ ctor @Deprecated public ViewConfiguration();
method public static android.view.ViewConfiguration get(android.content.Context);
method public static long getDefaultActionModeHideDuration();
method public static int getDoubleTapTimeout();
- method public static deprecated int getEdgeSlop();
- method public static deprecated int getFadingEdgeLength();
- method public static deprecated long getGlobalActionKeyTimeout();
+ method @Deprecated public static int getEdgeSlop();
+ method @Deprecated public static int getFadingEdgeLength();
+ method @Deprecated public static long getGlobalActionKeyTimeout();
method public static int getJumpTapTimeout();
method public static int getKeyRepeatDelay();
method public static int getKeyRepeatTimeout();
method public static int getLongPressTimeout();
- method public static deprecated int getMaximumDrawingCacheSize();
- method public static deprecated int getMaximumFlingVelocity();
- method public static deprecated int getMinimumFlingVelocity();
+ method @Deprecated public static int getMaximumDrawingCacheSize();
+ method @Deprecated public static int getMaximumFlingVelocity();
+ method @Deprecated public static int getMinimumFlingVelocity();
method public static int getPressedStateDuration();
method public int getScaledDoubleTapSlop();
method public int getScaledEdgeSlop();
@@ -50610,12 +50735,12 @@
method public float getScaledVerticalScrollFactor();
method public int getScaledWindowTouchSlop();
method public static int getScrollBarFadeDuration();
- method public static deprecated int getScrollBarSize();
+ method @Deprecated public static int getScrollBarSize();
method public static int getScrollDefaultDelay();
method public static float getScrollFriction();
method public static int getTapTimeout();
- method public static deprecated int getTouchSlop();
- method public static deprecated int getWindowTouchSlop();
+ method @Deprecated public static int getTouchSlop();
+ method @Deprecated public static int getWindowTouchSlop();
method public static long getZoomControlsTimeout();
method public boolean hasPermanentMenuKey();
method public boolean shouldShowMenuShortcutsWhenKeyboardPresent();
@@ -50623,54 +50748,66 @@
public class ViewDebug {
ctor public ViewDebug();
- method public static void dumpCapturedView(java.lang.String, java.lang.Object);
- method public static deprecated void startHierarchyTracing(java.lang.String, android.view.View);
- method public static deprecated void startRecyclerTracing(java.lang.String, android.view.View);
- method public static deprecated void stopHierarchyTracing();
- method public static deprecated void stopRecyclerTracing();
- method public static deprecated void trace(android.view.View, android.view.ViewDebug.RecyclerTraceType, int...);
- method public static deprecated void trace(android.view.View, android.view.ViewDebug.HierarchyTraceType);
- field public static final deprecated boolean TRACE_HIERARCHY = false;
- field public static final deprecated boolean TRACE_RECYCLER = false;
+ method public static void dumpCapturedView(String, Object);
+ method @Deprecated public static void startHierarchyTracing(String, android.view.View);
+ method @Deprecated public static void startRecyclerTracing(String, android.view.View);
+ method @Deprecated public static void stopHierarchyTracing();
+ method @Deprecated public static void stopRecyclerTracing();
+ method @Deprecated public static void trace(android.view.View, android.view.ViewDebug.RecyclerTraceType, int...);
+ method @Deprecated public static void trace(android.view.View, android.view.ViewDebug.HierarchyTraceType);
+ field @Deprecated public static final boolean TRACE_HIERARCHY = false;
+ field @Deprecated public static final boolean TRACE_RECYCLER = false;
}
- public static abstract class ViewDebug.CapturedViewProperty implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) public static @interface ViewDebug.CapturedViewProperty {
+ method public abstract boolean retrieveReturn() default false;
}
- public static abstract class ViewDebug.ExportedProperty implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) public static @interface ViewDebug.ExportedProperty {
+ method public abstract String category() default "";
+ method public abstract boolean deepExport() default false;
+ method public abstract android.view.ViewDebug.FlagToString[] flagMapping() default {};
+ method public abstract boolean formatToHexString() default false;
+ method public abstract boolean hasAdjacentMapping() default false;
+ method public abstract android.view.ViewDebug.IntToString[] indexMapping() default {};
+ method public abstract android.view.ViewDebug.IntToString[] mapping() default {};
+ method public abstract String prefix() default "";
+ method public abstract boolean resolveId() default false;
}
- public static abstract class ViewDebug.FlagToString implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) public static @interface ViewDebug.FlagToString {
+ method public abstract int equals();
+ method public abstract int mask();
+ method public abstract String name();
+ method public abstract boolean outputIf() default true;
}
- public static final deprecated class ViewDebug.HierarchyTraceType extends java.lang.Enum {
- method public static android.view.ViewDebug.HierarchyTraceType valueOf(java.lang.String);
- method public static final android.view.ViewDebug.HierarchyTraceType[] values();
- enum_constant public static final android.view.ViewDebug.HierarchyTraceType BUILD_CACHE;
- enum_constant public static final android.view.ViewDebug.HierarchyTraceType DRAW;
- enum_constant public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE;
- enum_constant public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD;
- enum_constant public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD_IN_PARENT;
- enum_constant public static final android.view.ViewDebug.HierarchyTraceType ON_LAYOUT;
- enum_constant public static final android.view.ViewDebug.HierarchyTraceType ON_MEASURE;
- enum_constant public static final android.view.ViewDebug.HierarchyTraceType REQUEST_LAYOUT;
+ @Deprecated public enum ViewDebug.HierarchyTraceType {
+ enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType BUILD_CACHE;
+ enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType DRAW;
+ enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE;
+ enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD;
+ enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD_IN_PARENT;
+ enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType ON_LAYOUT;
+ enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType ON_MEASURE;
+ enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType REQUEST_LAYOUT;
}
- public static abstract class ViewDebug.IntToString implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) public static @interface ViewDebug.IntToString {
+ method public abstract int from();
+ method public abstract String to();
}
- public static final deprecated class ViewDebug.RecyclerTraceType extends java.lang.Enum {
- method public static android.view.ViewDebug.RecyclerTraceType valueOf(java.lang.String);
- method public static final android.view.ViewDebug.RecyclerTraceType[] values();
- enum_constant public static final android.view.ViewDebug.RecyclerTraceType BIND_VIEW;
- enum_constant public static final android.view.ViewDebug.RecyclerTraceType MOVE_FROM_ACTIVE_TO_SCRAP_HEAP;
- enum_constant public static final android.view.ViewDebug.RecyclerTraceType MOVE_TO_SCRAP_HEAP;
- enum_constant public static final android.view.ViewDebug.RecyclerTraceType NEW_VIEW;
- enum_constant public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_ACTIVE_HEAP;
- enum_constant public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_SCRAP_HEAP;
+ @Deprecated public enum ViewDebug.RecyclerTraceType {
+ enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType BIND_VIEW;
+ enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType MOVE_FROM_ACTIVE_TO_SCRAP_HEAP;
+ enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType MOVE_TO_SCRAP_HEAP;
+ enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType NEW_VIEW;
+ enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_ACTIVE_HEAP;
+ enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_SCRAP_HEAP;
}
- public abstract class ViewGroup extends android.view.View implements android.view.ViewManager android.view.ViewParent {
+ @UiThread public abstract class ViewGroup extends android.view.View implements android.view.ViewManager android.view.ViewParent {
ctor public ViewGroup(android.content.Context);
ctor public ViewGroup(android.content.Context, android.util.AttributeSet);
ctor public ViewGroup(android.content.Context, android.util.AttributeSet, int);
@@ -50716,9 +50853,9 @@
method public static int getChildMeasureSpec(int, int, int);
method protected boolean getChildStaticTransformation(android.view.View, android.view.animation.Transformation);
method public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
- method public boolean getClipChildren();
- method public boolean getClipToPadding();
- method public int getDescendantFocusability();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public boolean getClipChildren();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") public boolean getClipToPadding();
+ method @android.view.ViewDebug.ExportedProperty(category="focus", mapping={@android.view.ViewDebug.IntToString(from=android.view.ViewGroup.FOCUS_BEFORE_DESCENDANTS, to="FOCUS_BEFORE_DESCENDANTS"), @android.view.ViewDebug.IntToString(from=android.view.ViewGroup.FOCUS_AFTER_DESCENDANTS, to="FOCUS_AFTER_DESCENDANTS"), @android.view.ViewDebug.IntToString(from=android.view.ViewGroup.FOCUS_BLOCK_DESCENDANTS, to="FOCUS_BLOCK_DESCENDANTS")}) public int getDescendantFocusability();
method public android.view.View getFocusedChild();
method public android.view.animation.LayoutAnimationController getLayoutAnimation();
method public android.view.animation.Animation.AnimationListener getLayoutAnimationListener();
@@ -50726,15 +50863,15 @@
method public android.animation.LayoutTransition getLayoutTransition();
method public int getNestedScrollAxes();
method public android.view.ViewGroupOverlay getOverlay();
- method public deprecated int getPersistentDrawingCache();
- method public boolean getTouchscreenBlocksFocus();
+ method @Deprecated @android.view.ViewDebug.ExportedProperty(category="drawing", mapping={@android.view.ViewDebug.IntToString(from=android.view.ViewGroup.PERSISTENT_NO_CACHE, to="NONE"), @android.view.ViewDebug.IntToString(from=android.view.ViewGroup.PERSISTENT_ANIMATION_CACHE, to="ANIMATION"), @android.view.ViewDebug.IntToString(from=android.view.ViewGroup.PERSISTENT_SCROLLING_CACHE, to="SCROLLING"), @android.view.ViewDebug.IntToString(from=android.view.ViewGroup.PERSISTENT_ALL_CACHES, to="ALL")}) public int getPersistentDrawingCache();
+ method @android.view.ViewDebug.ExportedProperty(category="focus") public boolean getTouchscreenBlocksFocus();
method public int indexOfChild(android.view.View);
- method public final deprecated void invalidateChild(android.view.View, android.graphics.Rect);
- method public deprecated android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
- method public deprecated boolean isAlwaysDrawnWithCacheEnabled();
- method public deprecated boolean isAnimationCacheEnabled();
- method protected boolean isChildrenDrawingOrderEnabled();
- method protected deprecated boolean isChildrenDrawnWithCacheEnabled();
+ method @Deprecated public final void invalidateChild(android.view.View, android.graphics.Rect);
+ method @Deprecated public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
+ method @Deprecated public boolean isAlwaysDrawnWithCacheEnabled();
+ method @Deprecated public boolean isAnimationCacheEnabled();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") protected boolean isChildrenDrawingOrderEnabled();
+ method @Deprecated protected boolean isChildrenDrawnWithCacheEnabled();
method public boolean isLayoutSuppressed();
method public boolean isMotionEventSplittingEnabled();
method public boolean isTransitionGroup();
@@ -50776,11 +50913,11 @@
method public void requestTransparentRegion(android.view.View);
method public void scheduleLayoutAnimation();
method public void setAddStatesFromChildren(boolean);
- method public deprecated void setAlwaysDrawnWithCacheEnabled(boolean);
- method public deprecated void setAnimationCacheEnabled(boolean);
- method protected deprecated void setChildrenDrawingCacheEnabled(boolean);
+ method @Deprecated public void setAlwaysDrawnWithCacheEnabled(boolean);
+ method @Deprecated public void setAnimationCacheEnabled(boolean);
+ method @Deprecated protected void setChildrenDrawingCacheEnabled(boolean);
method protected void setChildrenDrawingOrderEnabled(boolean);
- method protected deprecated void setChildrenDrawnWithCacheEnabled(boolean);
+ method @Deprecated protected void setChildrenDrawnWithCacheEnabled(boolean);
method public void setClipChildren(boolean);
method public void setClipToPadding(boolean);
method public void setDescendantFocusability(int);
@@ -50790,7 +50927,7 @@
method public void setLayoutTransition(android.animation.LayoutTransition);
method public void setMotionEventSplittingEnabled(boolean);
method public void setOnHierarchyChangeListener(android.view.ViewGroup.OnHierarchyChangeListener);
- method public deprecated void setPersistentDrawingCache(int);
+ method @Deprecated public void setPersistentDrawingCache(int);
method protected void setStaticTransformationsEnabled(boolean);
method public void setTouchscreenBlocksFocus(boolean);
method public void setTransitionGroup(boolean);
@@ -50809,10 +50946,10 @@
field public static final int FOCUS_BLOCK_DESCENDANTS = 393216; // 0x60000
field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
- field public static final deprecated int PERSISTENT_ALL_CACHES = 3; // 0x3
- field public static final deprecated int PERSISTENT_ANIMATION_CACHE = 1; // 0x1
- field public static final deprecated int PERSISTENT_NO_CACHE = 0; // 0x0
- field public static final deprecated int PERSISTENT_SCROLLING_CACHE = 2; // 0x2
+ field @Deprecated public static final int PERSISTENT_ALL_CACHES = 3; // 0x3
+ field @Deprecated public static final int PERSISTENT_ANIMATION_CACHE = 1; // 0x1
+ field @Deprecated public static final int PERSISTENT_NO_CACHE = 0; // 0x0
+ field @Deprecated public static final int PERSISTENT_SCROLLING_CACHE = 2; // 0x2
}
public static class ViewGroup.LayoutParams {
@@ -50821,12 +50958,12 @@
ctor public ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams);
method public void resolveLayoutDirection(int);
method protected void setBaseAttributes(android.content.res.TypedArray, int, int);
- field public static final deprecated int FILL_PARENT = -1; // 0xffffffff
+ field @Deprecated public static final int FILL_PARENT = -1; // 0xffffffff
field public static final int MATCH_PARENT = -1; // 0xffffffff
field public static final int WRAP_CONTENT = -2; // 0xfffffffe
- field public int height;
+ field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=android.view.ViewGroup.LayoutParams.MATCH_PARENT, to="MATCH_PARENT"), @android.view.ViewDebug.IntToString(from=android.view.ViewGroup.LayoutParams.WRAP_CONTENT, to="WRAP_CONTENT")}) public int height;
field public android.view.animation.LayoutAnimationController.AnimationParameters layoutAnimationParameters;
- field public int width;
+ field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=android.view.ViewGroup.LayoutParams.MATCH_PARENT, to="MATCH_PARENT"), @android.view.ViewDebug.IntToString(from=android.view.ViewGroup.LayoutParams.WRAP_CONTENT, to="WRAP_CONTENT")}) public int width;
}
public static class ViewGroup.MarginLayoutParams extends android.view.ViewGroup.LayoutParams {
@@ -50842,26 +50979,26 @@
method public void setMarginEnd(int);
method public void setMarginStart(int);
method public void setMargins(int, int, int, int);
- field public int bottomMargin;
- field public int leftMargin;
- field public int rightMargin;
- field public int topMargin;
+ field @android.view.ViewDebug.ExportedProperty(category="layout") public int bottomMargin;
+ field @android.view.ViewDebug.ExportedProperty(category="layout") public int leftMargin;
+ field @android.view.ViewDebug.ExportedProperty(category="layout") public int rightMargin;
+ field @android.view.ViewDebug.ExportedProperty(category="layout") public int topMargin;
}
- public static abstract interface ViewGroup.OnHierarchyChangeListener {
- method public abstract void onChildViewAdded(android.view.View, android.view.View);
- method public abstract void onChildViewRemoved(android.view.View, android.view.View);
+ public static interface ViewGroup.OnHierarchyChangeListener {
+ method public void onChildViewAdded(android.view.View, android.view.View);
+ method public void onChildViewRemoved(android.view.View, android.view.View);
}
public class ViewGroupOverlay extends android.view.ViewOverlay {
- method public void add(android.view.View);
- method public void remove(android.view.View);
+ method public void add(@NonNull android.view.View);
+ method public void remove(@NonNull android.view.View);
}
- public abstract interface ViewManager {
- method public abstract void addView(android.view.View, android.view.ViewGroup.LayoutParams);
- method public abstract void removeView(android.view.View);
- method public abstract void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams);
+ public interface ViewManager {
+ method public void addView(android.view.View, android.view.ViewGroup.LayoutParams);
+ method public void removeView(android.view.View);
+ method public void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams);
}
public abstract class ViewOutlineProvider {
@@ -50873,57 +51010,57 @@
}
public class ViewOverlay {
- method public void add(android.graphics.drawable.Drawable);
+ method public void add(@NonNull android.graphics.drawable.Drawable);
method public void clear();
- method public void remove(android.graphics.drawable.Drawable);
+ method public void remove(@NonNull android.graphics.drawable.Drawable);
}
- public abstract interface ViewParent {
- method public abstract void bringChildToFront(android.view.View);
- method public abstract boolean canResolveLayoutDirection();
- method public abstract boolean canResolveTextAlignment();
- method public abstract boolean canResolveTextDirection();
- method public abstract void childDrawableStateChanged(android.view.View);
- method public abstract void childHasTransientStateChanged(android.view.View, boolean);
- method public abstract void clearChildFocus(android.view.View);
- method public abstract void createContextMenu(android.view.ContextMenu);
- method public abstract android.view.View focusSearch(android.view.View, int);
- method public abstract void focusableViewAvailable(android.view.View);
- method public abstract boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
- method public abstract int getLayoutDirection();
- method public abstract android.view.ViewParent getParent();
- method public abstract android.view.ViewParent getParentForAccessibility();
- method public abstract int getTextAlignment();
- method public abstract int getTextDirection();
- method public abstract deprecated void invalidateChild(android.view.View, android.graphics.Rect);
- method public abstract deprecated android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
- method public abstract boolean isLayoutDirectionResolved();
- method public abstract boolean isLayoutRequested();
- method public abstract boolean isTextAlignmentResolved();
- method public abstract boolean isTextDirectionResolved();
- method public abstract android.view.View keyboardNavigationClusterSearch(android.view.View, int);
- method public abstract void notifySubtreeAccessibilityStateChanged(android.view.View, android.view.View, int);
- method public default void onDescendantInvalidated(android.view.View, android.view.View);
- method public abstract boolean onNestedFling(android.view.View, float, float, boolean);
- method public abstract boolean onNestedPreFling(android.view.View, float, float);
- method public abstract boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
- method public abstract void onNestedPreScroll(android.view.View, int, int, int[]);
- method public abstract void onNestedScroll(android.view.View, int, int, int, int);
- method public abstract void onNestedScrollAccepted(android.view.View, android.view.View, int);
- method public abstract boolean onStartNestedScroll(android.view.View, android.view.View, int);
- method public abstract void onStopNestedScroll(android.view.View);
- method public abstract void recomputeViewAttributes(android.view.View);
- method public abstract void requestChildFocus(android.view.View, android.view.View);
- method public abstract boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
- method public abstract void requestDisallowInterceptTouchEvent(boolean);
- method public abstract void requestFitSystemWindows();
- method public abstract void requestLayout();
- method public abstract boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
- method public abstract void requestTransparentRegion(android.view.View);
- method public abstract boolean showContextMenuForChild(android.view.View);
- method public abstract boolean showContextMenuForChild(android.view.View, float, float);
- method public abstract android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback);
- method public abstract android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback, int);
+ public interface ViewParent {
+ method public void bringChildToFront(android.view.View);
+ method public boolean canResolveLayoutDirection();
+ method public boolean canResolveTextAlignment();
+ method public boolean canResolveTextDirection();
+ method public void childDrawableStateChanged(android.view.View);
+ method public void childHasTransientStateChanged(android.view.View, boolean);
+ method public void clearChildFocus(android.view.View);
+ method public void createContextMenu(android.view.ContextMenu);
+ method public android.view.View focusSearch(android.view.View, int);
+ method public void focusableViewAvailable(android.view.View);
+ method public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
+ method public int getLayoutDirection();
+ method public android.view.ViewParent getParent();
+ method public android.view.ViewParent getParentForAccessibility();
+ method public int getTextAlignment();
+ method public int getTextDirection();
+ method @Deprecated public void invalidateChild(android.view.View, android.graphics.Rect);
+ method @Deprecated public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
+ method public boolean isLayoutDirectionResolved();
+ method public boolean isLayoutRequested();
+ method public boolean isTextAlignmentResolved();
+ method public boolean isTextDirectionResolved();
+ method public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
+ method public void notifySubtreeAccessibilityStateChanged(android.view.View, @NonNull android.view.View, int);
+ method public default void onDescendantInvalidated(@NonNull android.view.View, @NonNull android.view.View);
+ method public boolean onNestedFling(android.view.View, float, float, boolean);
+ method public boolean onNestedPreFling(android.view.View, float, float);
+ method public boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
+ method public void onNestedPreScroll(android.view.View, int, int, int[]);
+ method public void onNestedScroll(android.view.View, int, int, int, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
+ method public void onStopNestedScroll(android.view.View);
+ method public void recomputeViewAttributes(android.view.View);
+ method public void requestChildFocus(android.view.View, android.view.View);
+ method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
+ method public void requestDisallowInterceptTouchEvent(boolean);
+ method public void requestFitSystemWindows();
+ method public void requestLayout();
+ method public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
+ method public void requestTransparentRegion(android.view.View);
+ method public boolean showContextMenuForChild(android.view.View);
+ method public boolean showContextMenuForChild(android.view.View, float, float);
+ method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback);
+ method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback, int);
}
public class ViewPropertyAnimator {
@@ -50955,9 +51092,9 @@
method public android.view.ViewPropertyAnimator translationYBy(float);
method public android.view.ViewPropertyAnimator translationZ(float);
method public android.view.ViewPropertyAnimator translationZBy(float);
- method public android.view.ViewPropertyAnimator withEndAction(java.lang.Runnable);
+ method public android.view.ViewPropertyAnimator withEndAction(Runnable);
method public android.view.ViewPropertyAnimator withLayer();
- method public android.view.ViewPropertyAnimator withStartAction(java.lang.Runnable);
+ method public android.view.ViewPropertyAnimator withStartAction(Runnable);
method public android.view.ViewPropertyAnimator x(float);
method public android.view.ViewPropertyAnimator xBy(float);
method public android.view.ViewPropertyAnimator y(float);
@@ -50971,31 +51108,31 @@
method public abstract int addChildCount(int);
method public abstract void asyncCommit();
method public abstract android.view.ViewStructure asyncNewChild(int);
- method public abstract android.view.autofill.AutofillId getAutofillId();
+ method @Nullable public abstract android.view.autofill.AutofillId getAutofillId();
method public abstract int getChildCount();
method public abstract android.os.Bundle getExtras();
- method public abstract java.lang.CharSequence getHint();
- method public abstract java.lang.CharSequence getText();
+ method public abstract CharSequence getHint();
+ method public abstract CharSequence getText();
method public abstract int getTextSelectionEnd();
method public abstract int getTextSelectionStart();
method public abstract boolean hasExtras();
method public abstract android.view.ViewStructure newChild(int);
- method public abstract android.view.ViewStructure.HtmlInfo.Builder newHtmlInfoBuilder(java.lang.String);
+ method public abstract android.view.ViewStructure.HtmlInfo.Builder newHtmlInfoBuilder(@NonNull String);
method public abstract void setAccessibilityFocused(boolean);
method public abstract void setActivated(boolean);
method public abstract void setAlpha(float);
- method public abstract void setAutofillHints(java.lang.String[]);
- method public abstract void setAutofillId(android.view.autofill.AutofillId);
- method public abstract void setAutofillId(android.view.autofill.AutofillId, int);
- method public abstract void setAutofillOptions(java.lang.CharSequence[]);
+ method public abstract void setAutofillHints(@Nullable String[]);
+ method public abstract void setAutofillId(@NonNull android.view.autofill.AutofillId);
+ method public abstract void setAutofillId(@NonNull android.view.autofill.AutofillId, int);
+ method public abstract void setAutofillOptions(CharSequence[]);
method public abstract void setAutofillType(int);
method public abstract void setAutofillValue(android.view.autofill.AutofillValue);
method public abstract void setCheckable(boolean);
method public abstract void setChecked(boolean);
method public abstract void setChildCount(int);
- method public abstract void setClassName(java.lang.String);
+ method public abstract void setClassName(String);
method public abstract void setClickable(boolean);
- method public abstract void setContentDescription(java.lang.CharSequence);
+ method public abstract void setContentDescription(CharSequence);
method public abstract void setContextClickable(boolean);
method public abstract void setDataIsSensitive(boolean);
method public abstract void setDimens(int, int, int, int, int, int);
@@ -51003,9 +51140,9 @@
method public abstract void setEnabled(boolean);
method public abstract void setFocusable(boolean);
method public abstract void setFocused(boolean);
- method public abstract void setHint(java.lang.CharSequence);
- method public abstract void setHtmlInfo(android.view.ViewStructure.HtmlInfo);
- method public abstract void setId(int, java.lang.String, java.lang.String, java.lang.String);
+ method public abstract void setHint(CharSequence);
+ method public abstract void setHtmlInfo(@NonNull android.view.ViewStructure.HtmlInfo);
+ method public abstract void setId(int, String, String, String);
method public void setImportantForAutofill(int);
method public abstract void setInputType(int);
method public abstract void setLocaleList(android.os.LocaleList);
@@ -51015,46 +51152,46 @@
method public void setMinTextEms(int);
method public abstract void setOpaque(boolean);
method public abstract void setSelected(boolean);
- method public abstract void setText(java.lang.CharSequence);
- method public abstract void setText(java.lang.CharSequence, int, int);
- method public void setTextIdEntry(java.lang.String);
+ method public abstract void setText(CharSequence);
+ method public abstract void setText(CharSequence, int, int);
+ method public void setTextIdEntry(@NonNull String);
method public abstract void setTextLines(int[], int[]);
method public abstract void setTextStyle(float, int, int, int);
method public abstract void setTransformation(android.graphics.Matrix);
method public abstract void setVisibility(int);
- method public abstract void setWebDomain(java.lang.String);
+ method public abstract void setWebDomain(@Nullable String);
}
- public static abstract class ViewStructure.HtmlInfo {
+ public abstract static class ViewStructure.HtmlInfo {
ctor public ViewStructure.HtmlInfo();
- method public abstract java.util.List<android.util.Pair<java.lang.String, java.lang.String>> getAttributes();
- method public abstract java.lang.String getTag();
+ method @Nullable public abstract java.util.List<android.util.Pair<java.lang.String,java.lang.String>> getAttributes();
+ method @NonNull public abstract String getTag();
}
- public static abstract class ViewStructure.HtmlInfo.Builder {
+ public abstract static class ViewStructure.HtmlInfo.Builder {
ctor public ViewStructure.HtmlInfo.Builder();
- method public abstract android.view.ViewStructure.HtmlInfo.Builder addAttribute(java.lang.String, java.lang.String);
+ method public abstract android.view.ViewStructure.HtmlInfo.Builder addAttribute(@NonNull String, @NonNull String);
method public abstract android.view.ViewStructure.HtmlInfo build();
}
- public final class ViewStub extends android.view.View {
+ @android.widget.RemoteViews.RemoteView public final class ViewStub extends android.view.View {
ctor public ViewStub(android.content.Context);
- ctor public ViewStub(android.content.Context, int);
+ ctor public ViewStub(android.content.Context, @LayoutRes int);
ctor public ViewStub(android.content.Context, android.util.AttributeSet);
ctor public ViewStub(android.content.Context, android.util.AttributeSet, int);
ctor public ViewStub(android.content.Context, android.util.AttributeSet, int, int);
- method public int getInflatedId();
+ method @IdRes public int getInflatedId();
method public android.view.LayoutInflater getLayoutInflater();
- method public int getLayoutResource();
+ method @LayoutRes public int getLayoutResource();
method public android.view.View inflate();
- method public void setInflatedId(int);
+ method public void setInflatedId(@IdRes int);
method public void setLayoutInflater(android.view.LayoutInflater);
- method public void setLayoutResource(int);
+ method public void setLayoutResource(@LayoutRes int);
method public void setOnInflateListener(android.view.ViewStub.OnInflateListener);
}
- public static abstract interface ViewStub.OnInflateListener {
- method public abstract void onInflate(android.view.ViewStub, android.view.View);
+ public static interface ViewStub.OnInflateListener {
+ method public void onInflate(android.view.ViewStub, android.view.View);
}
public final class ViewTreeObserver {
@@ -51070,8 +51207,8 @@
method public void dispatchOnGlobalLayout();
method public boolean dispatchOnPreDraw();
method public boolean isAlive();
- method public void registerFrameCommitCallback(java.lang.Runnable);
- method public deprecated void removeGlobalOnLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
+ method public void registerFrameCommitCallback(@NonNull Runnable);
+ method @Deprecated public void removeGlobalOnLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
method public void removeOnDrawListener(android.view.ViewTreeObserver.OnDrawListener);
method public void removeOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener);
method public void removeOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
@@ -51080,51 +51217,51 @@
method public void removeOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
method public void removeOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener);
method public void removeOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener);
- method public boolean unregisterFrameCommitCallback(java.lang.Runnable);
+ method public boolean unregisterFrameCommitCallback(@NonNull Runnable);
}
- public static abstract interface ViewTreeObserver.OnDrawListener {
- method public abstract void onDraw();
+ public static interface ViewTreeObserver.OnDrawListener {
+ method public void onDraw();
}
- public static abstract interface ViewTreeObserver.OnGlobalFocusChangeListener {
- method public abstract void onGlobalFocusChanged(android.view.View, android.view.View);
+ public static interface ViewTreeObserver.OnGlobalFocusChangeListener {
+ method public void onGlobalFocusChanged(android.view.View, android.view.View);
}
- public static abstract interface ViewTreeObserver.OnGlobalLayoutListener {
- method public abstract void onGlobalLayout();
+ public static interface ViewTreeObserver.OnGlobalLayoutListener {
+ method public void onGlobalLayout();
}
- public static abstract interface ViewTreeObserver.OnPreDrawListener {
- method public abstract boolean onPreDraw();
+ public static interface ViewTreeObserver.OnPreDrawListener {
+ method public boolean onPreDraw();
}
- public static abstract interface ViewTreeObserver.OnScrollChangedListener {
- method public abstract void onScrollChanged();
+ public static interface ViewTreeObserver.OnScrollChangedListener {
+ method public void onScrollChanged();
}
- public static abstract interface ViewTreeObserver.OnTouchModeChangeListener {
- method public abstract void onTouchModeChanged(boolean);
+ public static interface ViewTreeObserver.OnTouchModeChangeListener {
+ method public void onTouchModeChanged(boolean);
}
- public static abstract interface ViewTreeObserver.OnWindowAttachListener {
- method public abstract void onWindowAttached();
- method public abstract void onWindowDetached();
+ public static interface ViewTreeObserver.OnWindowAttachListener {
+ method public void onWindowAttached();
+ method public void onWindowDetached();
}
- public static abstract interface ViewTreeObserver.OnWindowFocusChangeListener {
- method public abstract void onWindowFocusChanged(boolean);
+ public static interface ViewTreeObserver.OnWindowFocusChangeListener {
+ method public void onWindowFocusChanged(boolean);
}
public abstract class Window {
ctor public Window(android.content.Context);
method public abstract void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
method public void addFlags(int);
- method public final void addOnFrameMetricsAvailableListener(android.view.Window.OnFrameMetricsAvailableListener, android.os.Handler);
+ method public final void addOnFrameMetricsAvailableListener(@NonNull android.view.Window.OnFrameMetricsAvailableListener, android.os.Handler);
method public void clearFlags(int);
method public abstract void closeAllPanels();
method public abstract void closePanel(int);
- method public <T extends android.view.View> T findViewById(int);
+ method public <T extends android.view.View> T findViewById(@IdRes int);
method public boolean getAllowEnterTransitionOverlap();
method public boolean getAllowReturnTransitionOverlap();
method public final android.view.WindowManager.LayoutParams getAttributes();
@@ -51133,18 +51270,18 @@
method public final android.view.Window getContainer();
method public android.transition.Scene getContentScene();
method public final android.content.Context getContext();
- method public abstract android.view.View getCurrentFocus();
- method public abstract android.view.View getDecorView();
+ method @Nullable public abstract android.view.View getCurrentFocus();
+ method @NonNull public abstract android.view.View getDecorView();
method public static int getDefaultFeatures(android.content.Context);
method public android.transition.Transition getEnterTransition();
method public android.transition.Transition getExitTransition();
method protected final int getFeatures();
method protected final int getForcedWindowFlags();
- method public abstract android.view.LayoutInflater getLayoutInflater();
+ method @NonNull public abstract android.view.LayoutInflater getLayoutInflater();
method protected final int getLocalFeatures();
method public android.media.session.MediaController getMediaController();
- method public abstract int getNavigationBarColor();
- method public int getNavigationBarDividerColor();
+ method @ColorInt public abstract int getNavigationBarColor();
+ method @ColorInt public int getNavigationBarDividerColor();
method public android.transition.Transition getReenterTransition();
method public android.transition.Transition getReturnTransition();
method public android.transition.Transition getSharedElementEnterTransition();
@@ -51152,7 +51289,7 @@
method public android.transition.Transition getSharedElementReenterTransition();
method public android.transition.Transition getSharedElementReturnTransition();
method public boolean getSharedElementsUseOverlay();
- method public abstract int getStatusBarColor();
+ method @ColorInt public abstract int getStatusBarColor();
method public long getTransitionBackgroundFadeDuration();
method public android.transition.TransitionManager getTransitionManager();
method public abstract int getVolumeControlStream();
@@ -51177,21 +51314,21 @@
method public abstract boolean performPanelShortcut(int, int, android.view.KeyEvent, int);
method public final void removeOnFrameMetricsAvailableListener(android.view.Window.OnFrameMetricsAvailableListener);
method public boolean requestFeature(int);
- method public final <T extends android.view.View> T requireViewById(int);
+ method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
method public abstract void restoreHierarchyState(android.os.Bundle);
method public abstract android.os.Bundle saveHierarchyState();
method public void setAllowEnterTransitionOverlap(boolean);
method public void setAllowReturnTransitionOverlap(boolean);
method public void setAttributes(android.view.WindowManager.LayoutParams);
method public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable);
- method public void setBackgroundDrawableResource(int);
+ method public void setBackgroundDrawableResource(@DrawableRes int);
method public void setCallback(android.view.Window.Callback);
method public abstract void setChildDrawable(int, android.graphics.drawable.Drawable);
method public abstract void setChildInt(int, int);
method public void setClipToOutline(boolean);
method public void setColorMode(int);
method public void setContainer(android.view.Window);
- method public abstract void setContentView(int);
+ method public abstract void setContentView(@LayoutRes int);
method public abstract void setContentView(android.view.View);
method public abstract void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
method public abstract void setDecorCaptionShade(int);
@@ -51202,19 +51339,19 @@
method public void setExitTransition(android.transition.Transition);
method public abstract void setFeatureDrawable(int, android.graphics.drawable.Drawable);
method public abstract void setFeatureDrawableAlpha(int, int);
- method public abstract void setFeatureDrawableResource(int, int);
+ method public abstract void setFeatureDrawableResource(int, @DrawableRes int);
method public abstract void setFeatureDrawableUri(int, android.net.Uri);
method public abstract void setFeatureInt(int, int);
method public void setFlags(int, int);
method public void setFormat(int);
method public void setGravity(int);
- method public void setIcon(int);
+ method public void setIcon(@DrawableRes int);
method public void setLayout(int, int);
method public void setLocalFocus(boolean, boolean);
- method public void setLogo(int);
+ method public void setLogo(@DrawableRes int);
method public void setMediaController(android.media.session.MediaController);
- method public abstract void setNavigationBarColor(int);
- method public void setNavigationBarDividerColor(int);
+ method public abstract void setNavigationBarColor(@ColorInt int);
+ method public void setNavigationBarDividerColor(@ColorInt int);
method public void setReenterTransition(android.transition.Transition);
method public abstract void setResizingCaptionDrawable(android.graphics.drawable.Drawable);
method public final void setRestrictedCaptionAreaListener(android.view.Window.OnRestrictedCaptionAreaChangedListener);
@@ -51225,19 +51362,19 @@
method public void setSharedElementReturnTransition(android.transition.Transition);
method public void setSharedElementsUseOverlay(boolean);
method public void setSoftInputMode(int);
- method public abstract void setStatusBarColor(int);
+ method public abstract void setStatusBarColor(@ColorInt int);
method public void setSustainedPerformanceMode(boolean);
- method public abstract void setTitle(java.lang.CharSequence);
- method public abstract deprecated void setTitleColor(int);
+ method public abstract void setTitle(CharSequence);
+ method @Deprecated public abstract void setTitleColor(@ColorInt int);
method public void setTransitionBackgroundFadeDuration(long);
method public void setTransitionManager(android.transition.TransitionManager);
method public void setType(int);
method public void setUiOptions(int);
method public void setUiOptions(int, int);
method public abstract void setVolumeControlStream(int);
- method public void setWindowAnimations(int);
- method public void setWindowManager(android.view.WindowManager, android.os.IBinder, java.lang.String);
- method public void setWindowManager(android.view.WindowManager, android.os.IBinder, java.lang.String, boolean);
+ method public void setWindowAnimations(@StyleRes int);
+ method public void setWindowManager(android.view.WindowManager, android.os.IBinder, String);
+ method public void setWindowManager(android.view.WindowManager, android.os.IBinder, String, boolean);
method public abstract boolean superDispatchGenericMotionEvent(android.view.MotionEvent);
method public abstract boolean superDispatchKeyEvent(android.view.KeyEvent);
method public abstract boolean superDispatchKeyShortcutEvent(android.view.KeyEvent);
@@ -51250,7 +51387,7 @@
field public static final int DECOR_CAPTION_SHADE_AUTO = 0; // 0x0
field public static final int DECOR_CAPTION_SHADE_DARK = 2; // 0x2
field public static final int DECOR_CAPTION_SHADE_LIGHT = 1; // 0x1
- field protected static final deprecated int DEFAULT_FEATURES = 65; // 0x41
+ field @Deprecated protected static final int DEFAULT_FEATURES = 65; // 0x41
field public static final int FEATURE_ACTION_BAR = 8; // 0x8
field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
@@ -51258,60 +51395,60 @@
field public static final int FEATURE_CONTENT_TRANSITIONS = 12; // 0xc
field public static final int FEATURE_CONTEXT_MENU = 6; // 0x6
field public static final int FEATURE_CUSTOM_TITLE = 7; // 0x7
- field public static final deprecated int FEATURE_INDETERMINATE_PROGRESS = 5; // 0x5
+ field @Deprecated public static final int FEATURE_INDETERMINATE_PROGRESS = 5; // 0x5
field public static final int FEATURE_LEFT_ICON = 3; // 0x3
field public static final int FEATURE_NO_TITLE = 1; // 0x1
field public static final int FEATURE_OPTIONS_PANEL = 0; // 0x0
- field public static final deprecated int FEATURE_PROGRESS = 2; // 0x2
+ field @Deprecated public static final int FEATURE_PROGRESS = 2; // 0x2
field public static final int FEATURE_RIGHT_ICON = 4; // 0x4
field public static final int FEATURE_SWIPE_TO_DISMISS = 11; // 0xb
field public static final int ID_ANDROID_CONTENT = 16908290; // 0x1020002
- field public static final java.lang.String NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME = "android:navigation:background";
- field public static final deprecated int PROGRESS_END = 10000; // 0x2710
- field public static final deprecated int PROGRESS_INDETERMINATE_OFF = -4; // 0xfffffffc
- field public static final deprecated int PROGRESS_INDETERMINATE_ON = -3; // 0xfffffffd
- field public static final deprecated int PROGRESS_SECONDARY_END = 30000; // 0x7530
- field public static final deprecated int PROGRESS_SECONDARY_START = 20000; // 0x4e20
- field public static final deprecated int PROGRESS_START = 0; // 0x0
- field public static final deprecated int PROGRESS_VISIBILITY_OFF = -2; // 0xfffffffe
- field public static final deprecated int PROGRESS_VISIBILITY_ON = -1; // 0xffffffff
- field public static final java.lang.String STATUS_BAR_BACKGROUND_TRANSITION_NAME = "android:status:background";
+ field public static final String NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME = "android:navigation:background";
+ field @Deprecated public static final int PROGRESS_END = 10000; // 0x2710
+ field @Deprecated public static final int PROGRESS_INDETERMINATE_OFF = -4; // 0xfffffffc
+ field @Deprecated public static final int PROGRESS_INDETERMINATE_ON = -3; // 0xfffffffd
+ field @Deprecated public static final int PROGRESS_SECONDARY_END = 30000; // 0x7530
+ field @Deprecated public static final int PROGRESS_SECONDARY_START = 20000; // 0x4e20
+ field @Deprecated public static final int PROGRESS_START = 0; // 0x0
+ field @Deprecated public static final int PROGRESS_VISIBILITY_OFF = -2; // 0xfffffffe
+ field @Deprecated public static final int PROGRESS_VISIBILITY_ON = -1; // 0xffffffff
+ field public static final String STATUS_BAR_BACKGROUND_TRANSITION_NAME = "android:status:background";
}
- public static abstract interface Window.Callback {
- method public abstract boolean dispatchGenericMotionEvent(android.view.MotionEvent);
- method public abstract boolean dispatchKeyEvent(android.view.KeyEvent);
- method public abstract boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
- method public abstract boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public abstract boolean dispatchTouchEvent(android.view.MotionEvent);
- method public abstract boolean dispatchTrackballEvent(android.view.MotionEvent);
- method public abstract void onActionModeFinished(android.view.ActionMode);
- method public abstract void onActionModeStarted(android.view.ActionMode);
- method public abstract void onAttachedToWindow();
- method public abstract void onContentChanged();
- method public abstract boolean onCreatePanelMenu(int, android.view.Menu);
- method public abstract android.view.View onCreatePanelView(int);
- method public abstract void onDetachedFromWindow();
- method public abstract boolean onMenuItemSelected(int, android.view.MenuItem);
- method public abstract boolean onMenuOpened(int, android.view.Menu);
- method public abstract void onPanelClosed(int, android.view.Menu);
+ public static interface Window.Callback {
+ method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
+ method public boolean dispatchKeyEvent(android.view.KeyEvent);
+ method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
+ method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+ method public boolean dispatchTouchEvent(android.view.MotionEvent);
+ method public boolean dispatchTrackballEvent(android.view.MotionEvent);
+ method public void onActionModeFinished(android.view.ActionMode);
+ method public void onActionModeStarted(android.view.ActionMode);
+ method public void onAttachedToWindow();
+ method public void onContentChanged();
+ method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
+ method @Nullable public android.view.View onCreatePanelView(int);
+ method public void onDetachedFromWindow();
+ method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
+ method public boolean onMenuOpened(int, @NonNull android.view.Menu);
+ method public void onPanelClosed(int, @NonNull android.view.Menu);
method public default void onPointerCaptureChanged(boolean);
- method public abstract boolean onPreparePanel(int, android.view.View, android.view.Menu);
- method public default void onProvideKeyboardShortcuts(java.util.List<android.view.KeyboardShortcutGroup>, android.view.Menu, int);
- method public abstract boolean onSearchRequested();
- method public abstract boolean onSearchRequested(android.view.SearchEvent);
- method public abstract void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
- method public abstract void onWindowFocusChanged(boolean);
- method public abstract android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
- method public abstract android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
+ method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
+ method public default void onProvideKeyboardShortcuts(java.util.List<android.view.KeyboardShortcutGroup>, @Nullable android.view.Menu, int);
+ method public boolean onSearchRequested();
+ method public boolean onSearchRequested(android.view.SearchEvent);
+ method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+ method public void onWindowFocusChanged(boolean);
+ method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
+ method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
}
- public static abstract interface Window.OnFrameMetricsAvailableListener {
- method public abstract void onFrameMetricsAvailable(android.view.Window, android.view.FrameMetrics, int);
+ public static interface Window.OnFrameMetricsAvailableListener {
+ method public void onFrameMetricsAvailable(android.view.Window, android.view.FrameMetrics, int);
}
- public static abstract interface Window.OnRestrictedCaptionAreaChangedListener {
- method public abstract void onRestrictedCaptionAreaChanged(android.graphics.Rect);
+ public static interface Window.OnRestrictedCaptionAreaChangedListener {
+ method public void onRestrictedCaptionAreaChanged(android.graphics.Rect);
}
public final class WindowAnimationFrameStats extends android.view.FrameStats implements android.os.Parcelable {
@@ -51337,7 +51474,7 @@
field public static final android.os.Parcelable.Creator<android.view.WindowId> CREATOR;
}
- public static abstract class WindowId.FocusObserver {
+ public abstract static class WindowId.FocusObserver {
ctor public WindowId.FocusObserver();
method public abstract void onFocusGained(android.view.WindowId);
method public abstract void onFocusLost(android.view.WindowId);
@@ -51345,52 +51482,52 @@
public final class WindowInsets {
ctor public WindowInsets(android.view.WindowInsets);
- method public android.view.WindowInsets consumeDisplayCutout();
- method public android.view.WindowInsets consumeStableInsets();
- method public android.view.WindowInsets consumeSystemWindowInsets();
- method public android.view.DisplayCutout getDisplayCutout();
+ method @NonNull public android.view.WindowInsets consumeDisplayCutout();
+ method @NonNull public android.view.WindowInsets consumeStableInsets();
+ method @NonNull public android.view.WindowInsets consumeSystemWindowInsets();
+ method @Nullable public android.view.DisplayCutout getDisplayCutout();
method public int getStableInsetBottom();
method public int getStableInsetLeft();
method public int getStableInsetRight();
method public int getStableInsetTop();
- method public android.graphics.Insets getStableInsets();
+ method @NonNull public android.graphics.Insets getStableInsets();
method public int getSystemWindowInsetBottom();
method public int getSystemWindowInsetLeft();
method public int getSystemWindowInsetRight();
method public int getSystemWindowInsetTop();
- method public android.graphics.Insets getSystemWindowInsets();
+ method @NonNull public android.graphics.Insets getSystemWindowInsets();
method public boolean hasInsets();
method public boolean hasStableInsets();
method public boolean hasSystemWindowInsets();
- method public android.view.WindowInsets inset(int, int, int, int);
+ method @NonNull public android.view.WindowInsets inset(int, int, int, int);
method public boolean isConsumed();
method public boolean isRound();
- method public deprecated android.view.WindowInsets replaceSystemWindowInsets(int, int, int, int);
- method public deprecated android.view.WindowInsets replaceSystemWindowInsets(android.graphics.Rect);
+ method @Deprecated @NonNull public android.view.WindowInsets replaceSystemWindowInsets(int, int, int, int);
+ method @Deprecated @NonNull public android.view.WindowInsets replaceSystemWindowInsets(android.graphics.Rect);
}
public static class WindowInsets.Builder {
ctor public WindowInsets.Builder();
ctor public WindowInsets.Builder(android.view.WindowInsets);
- method public android.view.WindowInsets build();
- method public android.view.WindowInsets.Builder setDisplayCutout(android.view.DisplayCutout);
- method public android.view.WindowInsets.Builder setStableInsets(android.graphics.Insets);
- method public android.view.WindowInsets.Builder setSystemWindowInsets(android.graphics.Insets);
+ method @NonNull public android.view.WindowInsets build();
+ method @NonNull public android.view.WindowInsets.Builder setDisplayCutout(@Nullable android.view.DisplayCutout);
+ method @NonNull public android.view.WindowInsets.Builder setStableInsets(@NonNull android.graphics.Insets);
+ method @NonNull public android.view.WindowInsets.Builder setSystemWindowInsets(@NonNull android.graphics.Insets);
}
- public abstract interface WindowManager implements android.view.ViewManager {
- method public abstract android.view.Display getDefaultDisplay();
- method public abstract void removeViewImmediate(android.view.View);
+ public interface WindowManager extends android.view.ViewManager {
+ method public android.view.Display getDefaultDisplay();
+ method public void removeViewImmediate(android.view.View);
}
public static class WindowManager.BadTokenException extends java.lang.RuntimeException {
ctor public WindowManager.BadTokenException();
- ctor public WindowManager.BadTokenException(java.lang.String);
+ ctor public WindowManager.BadTokenException(String);
}
public static class WindowManager.InvalidDisplayException extends java.lang.RuntimeException {
ctor public WindowManager.InvalidDisplayException();
- ctor public WindowManager.InvalidDisplayException(java.lang.String);
+ ctor public WindowManager.InvalidDisplayException(String);
}
public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
@@ -51402,13 +51539,13 @@
ctor public WindowManager.LayoutParams(int, int, int, int, int, int, int);
ctor public WindowManager.LayoutParams(android.os.Parcel);
method public final int copyFrom(android.view.WindowManager.LayoutParams);
- method public java.lang.String debug(java.lang.String);
+ method public String debug(String);
method public int describeContents();
method public int getColorMode();
- method public final java.lang.CharSequence getTitle();
+ method public final CharSequence getTitle();
method public static boolean mayUseInputMethod(int);
method public void setColorMode(int);
- method public final void setTitle(java.lang.CharSequence);
+ method public final void setTitle(CharSequence);
method public void writeToParcel(android.os.Parcel, int);
field public static final int ALPHA_CHANGED = 128; // 0x80
field public static final int ANIMATION_CHANGED = 16; // 0x10
@@ -51423,10 +51560,10 @@
field public static final int FLAGS_CHANGED = 4; // 0x4
field public static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 1; // 0x1
field public static final int FLAG_ALT_FOCUSABLE_IM = 131072; // 0x20000
- field public static final deprecated int FLAG_BLUR_BEHIND = 4; // 0x4
+ field @Deprecated public static final int FLAG_BLUR_BEHIND = 4; // 0x4
field public static final int FLAG_DIM_BEHIND = 2; // 0x2
- field public static final deprecated int FLAG_DISMISS_KEYGUARD = 4194304; // 0x400000
- field public static final deprecated int FLAG_DITHER = 4096; // 0x1000
+ field @Deprecated public static final int FLAG_DISMISS_KEYGUARD = 4194304; // 0x400000
+ field @Deprecated public static final int FLAG_DITHER = 4096; // 0x1000
field public static final int FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = -2147483648; // 0x80000000
field public static final int FLAG_FORCE_NOT_FULLSCREEN = 2048; // 0x800
field public static final int FLAG_FULLSCREEN = 1024; // 0x400
@@ -51445,12 +51582,12 @@
field public static final int FLAG_SCALED = 16384; // 0x4000
field public static final int FLAG_SECURE = 8192; // 0x2000
field public static final int FLAG_SHOW_WALLPAPER = 1048576; // 0x100000
- field public static final deprecated int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000
+ field @Deprecated public static final int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000
field public static final int FLAG_SPLIT_TOUCH = 8388608; // 0x800000
- field public static final deprecated int FLAG_TOUCHABLE_WHEN_WAKING = 64; // 0x40
+ field @Deprecated public static final int FLAG_TOUCHABLE_WHEN_WAKING = 64; // 0x40
field public static final int FLAG_TRANSLUCENT_NAVIGATION = 134217728; // 0x8000000
field public static final int FLAG_TRANSLUCENT_STATUS = 67108864; // 0x4000000
- field public static final deprecated int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000
+ field @Deprecated public static final int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000
field public static final int FLAG_WATCH_OUTSIDE_TOUCH = 262144; // 0x40000
field public static final int FORMAT_CHANGED = 8; // 0x8
field public static final int LAST_APPLICATION_WINDOW = 99; // 0x63
@@ -51461,10 +51598,10 @@
field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER = 2; // 0x2
field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES = 1; // 0x1
field public static final int MEMORY_TYPE_CHANGED = 256; // 0x100
- field public static final deprecated int MEMORY_TYPE_GPU = 2; // 0x2
- field public static final deprecated int MEMORY_TYPE_HARDWARE = 1; // 0x1
- field public static final deprecated int MEMORY_TYPE_NORMAL = 0; // 0x0
- field public static final deprecated int MEMORY_TYPE_PUSH_BUFFERS = 3; // 0x3
+ field @Deprecated public static final int MEMORY_TYPE_GPU = 2; // 0x2
+ field @Deprecated public static final int MEMORY_TYPE_HARDWARE = 1; // 0x1
+ field @Deprecated public static final int MEMORY_TYPE_NORMAL = 0; // 0x0
+ field @Deprecated public static final int MEMORY_TYPE_PUSH_BUFFERS = 3; // 0x3
field public static final int ROTATION_ANIMATION_CHANGED = 4096; // 0x1000
field public static final int ROTATION_ANIMATION_CROSSFADE = 1; // 0x1
field public static final int ROTATION_ANIMATION_JUMPCUT = 2; // 0x2
@@ -51501,43 +51638,43 @@
field public static final int TYPE_INPUT_METHOD = 2011; // 0x7db
field public static final int TYPE_INPUT_METHOD_DIALOG = 2012; // 0x7dc
field public static final int TYPE_KEYGUARD_DIALOG = 2009; // 0x7d9
- field public static final deprecated int TYPE_PHONE = 2002; // 0x7d2
- field public static final deprecated int TYPE_PRIORITY_PHONE = 2007; // 0x7d7
+ field @Deprecated public static final int TYPE_PHONE = 2002; // 0x7d2
+ field @Deprecated public static final int TYPE_PRIORITY_PHONE = 2007; // 0x7d7
field public static final int TYPE_PRIVATE_PRESENTATION = 2030; // 0x7ee
field public static final int TYPE_SEARCH_BAR = 2001; // 0x7d1
field public static final int TYPE_STATUS_BAR = 2000; // 0x7d0
field public static final int TYPE_STATUS_BAR_PANEL = 2014; // 0x7de
- field public static final deprecated int TYPE_SYSTEM_ALERT = 2003; // 0x7d3
+ field @Deprecated public static final int TYPE_SYSTEM_ALERT = 2003; // 0x7d3
field public static final int TYPE_SYSTEM_DIALOG = 2008; // 0x7d8
- field public static final deprecated int TYPE_SYSTEM_ERROR = 2010; // 0x7da
- field public static final deprecated int TYPE_SYSTEM_OVERLAY = 2006; // 0x7d6
- field public static final deprecated int TYPE_TOAST = 2005; // 0x7d5
+ field @Deprecated public static final int TYPE_SYSTEM_ERROR = 2010; // 0x7da
+ field @Deprecated public static final int TYPE_SYSTEM_OVERLAY = 2006; // 0x7d6
+ field @Deprecated public static final int TYPE_TOAST = 2005; // 0x7d5
field public static final int TYPE_WALLPAPER = 2013; // 0x7dd
field public float alpha;
field public float buttonBrightness;
field public float dimAmount;
- field public int flags;
+ field @android.view.ViewDebug.ExportedProperty(flagMapping={@android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON, equals=android.view.WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON, name="ALLOW_LOCK_WHILE_SCREEN_ON"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND, equals=android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND, name="DIM_BEHIND"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_BLUR_BEHIND, equals=android.view.WindowManager.LayoutParams.FLAG_BLUR_BEHIND, name="BLUR_BEHIND"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, equals=android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, name="NOT_FOCUSABLE"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, equals=android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, name="NOT_TOUCHABLE"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, equals=android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, name="NOT_TOUCH_MODAL"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING, equals=android.view.WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING, name="TOUCHABLE_WHEN_WAKING"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, equals=android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, name="KEEP_SCREEN_ON"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, equals=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, name="LAYOUT_IN_SCREEN"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, equals=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, name="LAYOUT_NO_LIMITS"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN, equals=android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN, name="FULLSCREEN"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, equals=android.view.WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, name="FORCE_NOT_FULLSCREEN"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_DITHER, equals=android.view.WindowManager.LayoutParams.FLAG_DITHER, name="DITHER"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_SECURE, equals=android.view.WindowManager.LayoutParams.FLAG_SECURE, name="SECURE"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_SCALED, equals=android.view.WindowManager.LayoutParams.FLAG_SCALED, name="SCALED"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES, equals=android.view.WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES, name="IGNORE_CHEEK_PRESSES"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR, equals=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR, name="LAYOUT_INSET_DECOR"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, equals=android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, name="ALT_FOCUSABLE_IM"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, equals=android.view.WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, name="WATCH_OUTSIDE_TOUCH"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED, equals=android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED, name="SHOW_WHEN_LOCKED"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER, equals=android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER, name="SHOW_WALLPAPER"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, equals=android.view.WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, name="TURN_SCREEN_ON"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD, equals=android.view.WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD, name="DISMISS_KEYGUARD"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, equals=android.view.WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, name="SPLIT_TOUCH"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, equals=android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, name="HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN, equals=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN, name="LOCAL_FOCUS_MODE"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, equals=android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, name="TRANSLUCENT_STATUS"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, equals=android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, name="TRANSLUCENT_NAVIGATION"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE, equals=android.view.WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE, name="LOCAL_FOCUS_MODE"), @android.view.ViewDebug.FlagToString(mask=0x20000000, equals=0x20000000, name="FLAG_SLIPPERY"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_ATTACHED_IN_DECOR, equals=android.view.WindowManager.LayoutParams.FLAG_LAYOUT_ATTACHED_IN_DECOR, name="FLAG_LAYOUT_ATTACHED_IN_DECOR"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, equals=android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, name="DRAWS_SYSTEM_BAR_BACKGROUNDS")}, formatToHexString=true) public int flags;
field public int format;
field public int gravity;
field public float horizontalMargin;
- field public float horizontalWeight;
+ field @android.view.ViewDebug.ExportedProperty public float horizontalWeight;
field public int layoutInDisplayCutoutMode;
- field public deprecated int memoryType;
- field public java.lang.String packageName;
+ field @Deprecated public int memoryType;
+ field public String packageName;
field public int preferredDisplayModeId;
- field public deprecated float preferredRefreshRate;
+ field @Deprecated public float preferredRefreshRate;
field public int rotationAnimation;
field public float screenBrightness;
field public int screenOrientation;
field public int softInputMode;
field public int systemUiVisibility;
field public android.os.IBinder token;
- field public int type;
+ field @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION, to="BASE_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION, to="APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING, to="APPLICATION_STARTING"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION, to="DRAWN_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL, to="APPLICATION_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA, to="APPLICATION_MEDIA"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL, to="APPLICATION_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x3ed, to="APPLICATION_ABOVE_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG, to="APPLICATION_ATTACHED_DIALOG"), @android.view.ViewDebug.IntToString(from=0x3ec, to="APPLICATION_MEDIA_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR, to="STATUS_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SEARCH_BAR, to="SEARCH_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PHONE, to="PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, to="SYSTEM_ALERT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_TOAST, to="TOAST"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, to="SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIORITY_PHONE, to="PRIORITY_PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG, to="SYSTEM_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, to="KEYGUARD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, to="SYSTEM_ERROR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD, to="INPUT_METHOD"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG, to="INPUT_METHOD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_WALLPAPER, to="WALLPAPER"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, to="STATUS_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7df, to="SECURE_SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e0, to="DRAG"), @android.view.ViewDebug.IntToString(from=0x7e1, to="STATUS_BAR_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x7e2, to="POINTER"), @android.view.ViewDebug.IntToString(from=0x7e3, to="NAVIGATION_BAR"), @android.view.ViewDebug.IntToString(from=0x7e4, to="VOLUME_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e5, to="BOOT_PROGRESS"), @android.view.ViewDebug.IntToString(from=0x7e6, to="INPUT_CONSUMER"), @android.view.ViewDebug.IntToString(from=0x7e7, to="DREAM"), @android.view.ViewDebug.IntToString(from=0x7e8, to="NAVIGATION_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7ea, to="DISPLAY_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7eb, to="MAGNIFICATION_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7f5, to="PRESENTATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION, to="PRIVATE_PRESENTATION"), @android.view.ViewDebug.IntToString(from=0x7ef, to="VOICE_INTERACTION"), @android.view.ViewDebug.IntToString(from=0x7f1, to="VOICE_INTERACTION_STARTING"), @android.view.ViewDebug.IntToString(from=0x7f2, to="DOCK_DIVIDER"), @android.view.ViewDebug.IntToString(from=0x7f3, to="QS_DIALOG"), @android.view.ViewDebug.IntToString(from=0x7f4, to="SCREENSHOT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, to="APPLICATION_OVERLAY")}) public int type;
field public float verticalMargin;
- field public float verticalWeight;
+ field @android.view.ViewDebug.ExportedProperty public float verticalWeight;
field public int windowAnimations;
- field public int x;
- field public int y;
+ field @android.view.ViewDebug.ExportedProperty public int x;
+ field @android.view.ViewDebug.ExportedProperty public int y;
}
}
@@ -51547,13 +51684,13 @@
public final class AccessibilityEvent extends android.view.accessibility.AccessibilityRecord implements android.os.Parcelable {
method public void appendRecord(android.view.accessibility.AccessibilityRecord);
method public int describeContents();
- method public static java.lang.String eventTypeToString(int);
+ method public static String eventTypeToString(int);
method public int getAction();
method public int getContentChangeTypes();
method public long getEventTime();
method public int getEventType();
method public int getMovementGranularity();
- method public java.lang.CharSequence getPackageName();
+ method public CharSequence getPackageName();
method public android.view.accessibility.AccessibilityRecord getRecord(int);
method public int getRecordCount();
method public int getWindowChanges();
@@ -51566,7 +51703,7 @@
method public void setEventTime(long);
method public void setEventType(int);
method public void setMovementGranularity(int);
- method public void setPackageName(java.lang.CharSequence);
+ method public void setPackageName(CharSequence);
method public void writeToParcel(android.os.Parcel, int);
field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
@@ -51577,7 +51714,7 @@
field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
field public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityEvent> CREATOR;
field public static final int INVALID_POSITION = -1; // 0xffffffff
- field public static final deprecated int MAX_TEXT_LENGTH = 500; // 0x1f4
+ field @Deprecated public static final int MAX_TEXT_LENGTH = 500; // 0x1f4
field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
@@ -51617,18 +51754,18 @@
field public static final int WINDOWS_CHANGE_TITLE = 4; // 0x4
}
- public abstract interface AccessibilityEventSource {
- method public abstract void sendAccessibilityEvent(int);
- method public abstract void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
+ public interface AccessibilityEventSource {
+ method public void sendAccessibilityEvent(int);
+ method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
}
public final class AccessibilityManager {
method public void addAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer);
- method public boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
- method public void addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, android.os.Handler);
- method public boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
- method public void addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener, android.os.Handler);
- method public deprecated java.util.List<android.content.pm.ServiceInfo> getAccessibilityServiceList();
+ method public boolean addAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
+ method public void addAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, @Nullable android.os.Handler);
+ method public boolean addTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
+ method public void addTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener, @Nullable android.os.Handler);
+ method @Deprecated public java.util.List<android.content.pm.ServiceInfo> getAccessibilityServiceList();
method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int);
method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getInstalledAccessibilityServiceList();
method public int getRecommendedTimeoutMillis(int, int);
@@ -51637,66 +51774,66 @@
method public boolean isEnabled();
method public boolean isTouchExplorationEnabled();
method public void removeAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer);
- method public boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
- method public boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
+ method public boolean removeAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
+ method public boolean removeTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
method public void sendAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
field public static final int FLAG_CONTENT_CONTROLS = 4; // 0x4
field public static final int FLAG_CONTENT_ICONS = 1; // 0x1
field public static final int FLAG_CONTENT_TEXT = 2; // 0x2
}
- public static abstract interface AccessibilityManager.AccessibilityStateChangeListener {
- method public abstract void onAccessibilityStateChanged(boolean);
+ public static interface AccessibilityManager.AccessibilityStateChangeListener {
+ method public void onAccessibilityStateChanged(boolean);
}
- public static abstract interface AccessibilityManager.TouchExplorationStateChangeListener {
- method public abstract void onTouchExplorationStateChanged(boolean);
+ public static interface AccessibilityManager.TouchExplorationStateChangeListener {
+ method public void onTouchExplorationStateChanged(boolean);
}
public class AccessibilityNodeInfo implements android.os.Parcelable {
method public void addAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction);
- method public deprecated void addAction(int);
+ method @Deprecated public void addAction(int);
method public void addChild(android.view.View);
method public void addChild(android.view.View, int);
method public boolean canOpenPopup();
method public int describeContents();
- method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String);
- method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(java.lang.String);
+ method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String);
+ method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(String);
method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
method public android.view.accessibility.AccessibilityNodeInfo focusSearch(int);
method public java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getActionList();
- method public deprecated int getActions();
+ method @Deprecated public int getActions();
method public java.util.List<java.lang.String> getAvailableExtraData();
method public void getBoundsInParent(android.graphics.Rect);
method public void getBoundsInScreen(android.graphics.Rect);
method public android.view.accessibility.AccessibilityNodeInfo getChild(int);
method public int getChildCount();
- method public java.lang.CharSequence getClassName();
+ method public CharSequence getClassName();
method public android.view.accessibility.AccessibilityNodeInfo.CollectionInfo getCollectionInfo();
method public android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo getCollectionItemInfo();
- method public java.lang.CharSequence getContentDescription();
+ method public CharSequence getContentDescription();
method public int getDrawingOrder();
- method public java.lang.CharSequence getError();
+ method public CharSequence getError();
method public android.os.Bundle getExtras();
- method public java.lang.CharSequence getHintText();
+ method public CharSequence getHintText();
method public int getInputType();
method public android.view.accessibility.AccessibilityNodeInfo getLabelFor();
method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy();
method public int getLiveRegion();
method public int getMaxTextLength();
method public int getMovementGranularities();
- method public java.lang.CharSequence getPackageName();
- method public java.lang.CharSequence getPaneTitle();
+ method public CharSequence getPackageName();
+ method @Nullable public CharSequence getPaneTitle();
method public android.view.accessibility.AccessibilityNodeInfo getParent();
method public android.view.accessibility.AccessibilityNodeInfo.RangeInfo getRangeInfo();
- method public java.lang.CharSequence getText();
+ method public CharSequence getText();
method public int getTextSelectionEnd();
method public int getTextSelectionStart();
- method public java.lang.CharSequence getTooltipText();
- method public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
+ method @Nullable public CharSequence getTooltipText();
+ method @Nullable public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
method public android.view.accessibility.AccessibilityNodeInfo getTraversalAfter();
method public android.view.accessibility.AccessibilityNodeInfo getTraversalBefore();
- method public java.lang.String getViewIdResourceName();
+ method public String getViewIdResourceName();
method public android.view.accessibility.AccessibilityWindowInfo getWindow();
method public int getWindowId();
method public boolean isAccessibilityFocused();
@@ -51729,8 +51866,8 @@
method public boolean performAction(int, android.os.Bundle);
method public void recycle();
method public boolean refresh();
- method public boolean refreshWithExtraData(java.lang.String, android.os.Bundle);
- method public deprecated void removeAction(int);
+ method public boolean refreshWithExtraData(String, android.os.Bundle);
+ method @Deprecated public void removeAction(int);
method public boolean removeAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction);
method public boolean removeChild(android.view.View);
method public boolean removeChild(android.view.View, int);
@@ -51741,22 +51878,22 @@
method public void setCanOpenPopup(boolean);
method public void setCheckable(boolean);
method public void setChecked(boolean);
- method public void setClassName(java.lang.CharSequence);
- method public deprecated void setClickable(boolean);
+ method public void setClassName(CharSequence);
+ method @Deprecated public void setClickable(boolean);
method public void setCollectionInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionInfo);
method public void setCollectionItemInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo);
- method public void setContentDescription(java.lang.CharSequence);
+ method public void setContentDescription(CharSequence);
method public void setContentInvalid(boolean);
- method public deprecated void setContextClickable(boolean);
- method public deprecated void setDismissable(boolean);
+ method @Deprecated public void setContextClickable(boolean);
+ method @Deprecated public void setDismissable(boolean);
method public void setDrawingOrder(int);
method public void setEditable(boolean);
method public void setEnabled(boolean);
- method public void setError(java.lang.CharSequence);
- method public deprecated void setFocusable(boolean);
+ method public void setError(CharSequence);
+ method @Deprecated public void setFocusable(boolean);
method public void setFocused(boolean);
method public void setHeading(boolean);
- method public void setHintText(java.lang.CharSequence);
+ method public void setHintText(CharSequence);
method public void setImportantForAccessibility(boolean);
method public void setInputType(int);
method public void setLabelFor(android.view.View);
@@ -51764,46 +51901,46 @@
method public void setLabeledBy(android.view.View);
method public void setLabeledBy(android.view.View, int);
method public void setLiveRegion(int);
- method public deprecated void setLongClickable(boolean);
+ method @Deprecated public void setLongClickable(boolean);
method public void setMaxTextLength(int);
method public void setMovementGranularities(int);
method public void setMultiLine(boolean);
- method public void setPackageName(java.lang.CharSequence);
- method public void setPaneTitle(java.lang.CharSequence);
+ method public void setPackageName(CharSequence);
+ method public void setPaneTitle(@Nullable CharSequence);
method public void setParent(android.view.View);
method public void setParent(android.view.View, int);
method public void setPassword(boolean);
method public void setRangeInfo(android.view.accessibility.AccessibilityNodeInfo.RangeInfo);
method public void setScreenReaderFocusable(boolean);
- method public deprecated void setScrollable(boolean);
+ method @Deprecated public void setScrollable(boolean);
method public void setSelected(boolean);
method public void setShowingHintText(boolean);
method public void setSource(android.view.View);
method public void setSource(android.view.View, int);
- method public void setText(java.lang.CharSequence);
+ method public void setText(CharSequence);
method public void setTextEntryKey(boolean);
method public void setTextSelection(int, int);
- method public void setTooltipText(java.lang.CharSequence);
- method public void setTouchDelegateInfo(android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo);
+ method public void setTooltipText(@Nullable CharSequence);
+ method public void setTouchDelegateInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo);
method public void setTraversalAfter(android.view.View);
method public void setTraversalAfter(android.view.View, int);
method public void setTraversalBefore(android.view.View);
method public void setTraversalBefore(android.view.View, int);
- method public void setViewIdResourceName(java.lang.String);
+ method public void setViewIdResourceName(String);
method public void setVisibleToUser(boolean);
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
- field public static final java.lang.String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
- field public static final java.lang.String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
- field public static final java.lang.String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
- field public static final java.lang.String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
- field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
- field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
- field public static final java.lang.String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
- field public static final java.lang.String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
- field public static final java.lang.String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
- field public static final java.lang.String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
- field public static final java.lang.String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
+ field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
+ field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
+ field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
+ field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
+ field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
+ field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+ field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
+ field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
+ field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
+ field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
+ field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
@@ -51826,9 +51963,9 @@
field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
field public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo> CREATOR;
- field public static final java.lang.String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH";
- field public static final java.lang.String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX";
- field public static final java.lang.String EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_KEY";
+ field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH";
+ field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX";
+ field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_KEY";
field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
field public static final int FOCUS_INPUT = 1; // 0x1
field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
@@ -51839,9 +51976,9 @@
}
public static final class AccessibilityNodeInfo.AccessibilityAction {
- ctor public AccessibilityNodeInfo.AccessibilityAction(int, java.lang.CharSequence);
+ ctor public AccessibilityNodeInfo.AccessibilityAction(int, @Nullable CharSequence);
method public int getId();
- method public java.lang.CharSequence getLabel();
+ method public CharSequence getLabel();
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_ACCESSIBILITY_FOCUS;
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_ACCESSIBILITY_FOCUS;
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_FOCUS;
@@ -51898,7 +52035,7 @@
method public int getColumnSpan();
method public int getRowIndex();
method public int getRowSpan();
- method public deprecated boolean isHeading();
+ method @Deprecated public boolean isHeading();
method public boolean isSelected();
method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean);
method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean, boolean);
@@ -51916,20 +52053,20 @@
}
public static final class AccessibilityNodeInfo.TouchDelegateInfo implements android.os.Parcelable {
- ctor public AccessibilityNodeInfo.TouchDelegateInfo(java.util.Map<android.graphics.Region, android.view.View>);
+ ctor public AccessibilityNodeInfo.TouchDelegateInfo(@NonNull java.util.Map<android.graphics.Region,android.view.View>);
method public int describeContents();
- method public android.graphics.Region getRegionAt(int);
+ method @NonNull public android.graphics.Region getRegionAt(int);
method public int getRegionCount();
- method public android.view.accessibility.AccessibilityNodeInfo getTargetForRegion(android.graphics.Region);
+ method @Nullable public android.view.accessibility.AccessibilityNodeInfo getTargetForRegion(@NonNull android.graphics.Region);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo> CREATOR;
}
public abstract class AccessibilityNodeProvider {
ctor public AccessibilityNodeProvider();
- method public void addExtraDataToAccessibilityNodeInfo(int, android.view.accessibility.AccessibilityNodeInfo, java.lang.String, android.os.Bundle);
+ method public void addExtraDataToAccessibilityNodeInfo(int, android.view.accessibility.AccessibilityNodeInfo, String, android.os.Bundle);
method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int);
- method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String, int);
+ method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String, int);
method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
method public boolean performAction(int, int, android.os.Bundle);
field public static final int HOST_VIEW_ID = -1; // 0xffffffff
@@ -51937,9 +52074,9 @@
public class AccessibilityRecord {
method public int getAddedCount();
- method public java.lang.CharSequence getBeforeText();
- method public java.lang.CharSequence getClassName();
- method public java.lang.CharSequence getContentDescription();
+ method public CharSequence getBeforeText();
+ method public CharSequence getClassName();
+ method public CharSequence getContentDescription();
method public int getCurrentItemIndex();
method public int getFromIndex();
method public int getItemCount();
@@ -51964,10 +52101,10 @@
method public static android.view.accessibility.AccessibilityRecord obtain();
method public void recycle();
method public void setAddedCount(int);
- method public void setBeforeText(java.lang.CharSequence);
+ method public void setBeforeText(CharSequence);
method public void setChecked(boolean);
- method public void setClassName(java.lang.CharSequence);
- method public void setContentDescription(java.lang.CharSequence);
+ method public void setClassName(CharSequence);
+ method public void setContentDescription(CharSequence);
method public void setCurrentItemIndex(int);
method public void setEnabled(boolean);
method public void setFromIndex(int);
@@ -51984,14 +52121,14 @@
method public void setScrollY(int);
method public void setScrollable(boolean);
method public void setSource(android.view.View);
- method public void setSource(android.view.View, int);
+ method public void setSource(@Nullable android.view.View, int);
method public void setToIndex(int);
}
public abstract class AccessibilityRequestPreparer {
ctor public AccessibilityRequestPreparer(android.view.View, int);
- method public android.view.View getView();
- method public abstract void onPrepareExtraData(int, java.lang.String, android.os.Bundle, android.os.Message);
+ method @Nullable public android.view.View getView();
+ method public abstract void onPrepareExtraData(int, String, android.os.Bundle, android.os.Message);
field public static final int REQUEST_TYPE_EXTRA_DATA = 1; // 0x1
}
@@ -52005,7 +52142,7 @@
method public int getLayer();
method public android.view.accessibility.AccessibilityWindowInfo getParent();
method public android.view.accessibility.AccessibilityNodeInfo getRoot();
- method public java.lang.CharSequence getTitle();
+ method @Nullable public CharSequence getTitle();
method public int getType();
method public boolean isAccessibilityFocused();
method public boolean isActive();
@@ -52024,16 +52161,16 @@
}
public class CaptioningManager {
- method public void addCaptioningChangeListener(android.view.accessibility.CaptioningManager.CaptioningChangeListener);
+ method public void addCaptioningChangeListener(@NonNull android.view.accessibility.CaptioningManager.CaptioningChangeListener);
method public final float getFontScale();
- method public final java.util.Locale getLocale();
- method public android.view.accessibility.CaptioningManager.CaptionStyle getUserStyle();
+ method @Nullable public final java.util.Locale getLocale();
+ method @NonNull public android.view.accessibility.CaptioningManager.CaptionStyle getUserStyle();
method public final boolean isEnabled();
- method public void removeCaptioningChangeListener(android.view.accessibility.CaptioningManager.CaptioningChangeListener);
+ method public void removeCaptioningChangeListener(@NonNull android.view.accessibility.CaptioningManager.CaptioningChangeListener);
}
public static final class CaptioningManager.CaptionStyle {
- method public android.graphics.Typeface getTypeface();
+ method @Nullable public android.graphics.Typeface getTypeface();
method public boolean hasBackgroundColor();
method public boolean hasEdgeColor();
method public boolean hasEdgeType();
@@ -52052,12 +52189,12 @@
field public final int windowColor;
}
- public static abstract class CaptioningManager.CaptioningChangeListener {
+ public abstract static class CaptioningManager.CaptioningChangeListener {
ctor public CaptioningManager.CaptioningChangeListener();
method public void onEnabledChanged(boolean);
method public void onFontScaleChanged(float);
- method public void onLocaleChanged(java.util.Locale);
- method public void onUserStyleChanged(android.view.accessibility.CaptioningManager.CaptionStyle);
+ method public void onLocaleChanged(@Nullable java.util.Locale);
+ method public void onUserStyleChanged(@NonNull android.view.accessibility.CaptioningManager.CaptionStyle);
}
}
@@ -52091,8 +52228,8 @@
method protected android.view.animation.Animation clone() throws java.lang.CloneNotSupportedException;
method public long computeDurationHint();
method protected void ensureInterpolator();
- method public int getBackgroundColor();
- method public deprecated boolean getDetachWallpaper();
+ method @ColorInt public int getBackgroundColor();
+ method @Deprecated public boolean getDetachWallpaper();
method public long getDuration();
method public boolean getFillAfter();
method public boolean getFillBefore();
@@ -52116,13 +52253,13 @@
method public void restrictDuration(long);
method public void scaleCurrentDuration(float);
method public void setAnimationListener(android.view.animation.Animation.AnimationListener);
- method public void setBackgroundColor(int);
- method public deprecated void setDetachWallpaper(boolean);
+ method public void setBackgroundColor(@ColorInt int);
+ method @Deprecated public void setDetachWallpaper(boolean);
method public void setDuration(long);
method public void setFillAfter(boolean);
method public void setFillBefore(boolean);
method public void setFillEnabled(boolean);
- method public void setInterpolator(android.content.Context, int);
+ method public void setInterpolator(android.content.Context, @AnimRes @InterpolatorRes int);
method public void setInterpolator(android.view.animation.Interpolator);
method public void setRepeatCount(int);
method public void setRepeatMode(int);
@@ -52145,10 +52282,10 @@
field public static final int ZORDER_TOP = 1; // 0x1
}
- public static abstract interface Animation.AnimationListener {
- method public abstract void onAnimationEnd(android.view.animation.Animation);
- method public abstract void onAnimationRepeat(android.view.animation.Animation);
- method public abstract void onAnimationStart(android.view.animation.Animation);
+ public static interface Animation.AnimationListener {
+ method public void onAnimationEnd(android.view.animation.Animation);
+ method public void onAnimationRepeat(android.view.animation.Animation);
+ method public void onAnimationStart(android.view.animation.Animation);
}
protected static class Animation.Description {
@@ -52168,9 +52305,9 @@
public class AnimationUtils {
ctor public AnimationUtils();
method public static long currentAnimationTimeMillis();
- method public static android.view.animation.Animation loadAnimation(android.content.Context, int) throws android.content.res.Resources.NotFoundException;
- method public static android.view.animation.Interpolator loadInterpolator(android.content.Context, int) throws android.content.res.Resources.NotFoundException;
- method public static android.view.animation.LayoutAnimationController loadLayoutAnimation(android.content.Context, int) throws android.content.res.Resources.NotFoundException;
+ method public static android.view.animation.Animation loadAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
+ method public static android.view.animation.Interpolator loadInterpolator(android.content.Context, @AnimRes @InterpolatorRes int) throws android.content.res.Resources.NotFoundException;
+ method public static android.view.animation.LayoutAnimationController loadLayoutAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
method public static android.view.animation.Animation makeInAnimation(android.content.Context, boolean);
method public static android.view.animation.Animation makeInChildBottomAnimation(android.content.Context);
method public static android.view.animation.Animation makeOutAnimation(android.content.Context, boolean);
@@ -52245,7 +52382,7 @@
field public int rowsCount;
}
- public abstract interface Interpolator implements android.animation.TimeInterpolator {
+ public interface Interpolator extends android.animation.TimeInterpolator {
}
public class LayoutAnimationController {
@@ -52260,10 +52397,10 @@
method public int getOrder();
method protected int getTransformedIndex(android.view.animation.LayoutAnimationController.AnimationParameters);
method public boolean isDone();
- method public void setAnimation(android.content.Context, int);
+ method public void setAnimation(android.content.Context, @AnimRes int);
method public void setAnimation(android.view.animation.Animation);
method public void setDelay(float);
- method public void setInterpolator(android.content.Context, int);
+ method public void setInterpolator(android.content.Context, @InterpolatorRes int);
method public void setInterpolator(android.view.animation.Interpolator);
method public void setOrder(int);
method public void start();
@@ -52325,9 +52462,9 @@
method public android.graphics.Matrix getMatrix();
method public int getTransformationType();
method public void set(android.view.animation.Transformation);
- method public void setAlpha(float);
+ method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
method public void setTransformationType(int);
- method public java.lang.String toShortString();
+ method public String toShortString();
field public static final int TYPE_ALPHA = 1; // 0x1
field public static final int TYPE_BOTH = 3; // 0x3
field public static final int TYPE_IDENTITY = 0; // 0x0
@@ -52357,40 +52494,40 @@
method public void cancel();
method public void commit();
method public void disableAutofillServices();
- method public android.content.ComponentName getAutofillServiceComponentName();
- method public java.util.List<java.lang.String> getAvailableFieldClassificationAlgorithms();
- method public java.lang.String getDefaultFieldClassificationAlgorithm();
- method public android.view.autofill.AutofillId getNextAutofillId();
- method public android.service.autofill.UserData getUserData();
- method public java.lang.String getUserDataId();
+ method @Nullable public android.content.ComponentName getAutofillServiceComponentName();
+ method @NonNull public java.util.List<java.lang.String> getAvailableFieldClassificationAlgorithms();
+ method @Nullable public String getDefaultFieldClassificationAlgorithm();
+ method @Nullable public android.view.autofill.AutofillId getNextAutofillId();
+ method @Nullable public android.service.autofill.UserData getUserData();
+ method @Nullable public String getUserDataId();
method public boolean hasEnabledAutofillServices();
method public boolean isAutofillSupported();
method public boolean isEnabled();
method public boolean isFieldClassificationEnabled();
method public void notifyValueChanged(android.view.View);
method public void notifyValueChanged(android.view.View, int, android.view.autofill.AutofillValue);
- method public void notifyViewClicked(android.view.View);
- method public void notifyViewClicked(android.view.View, int);
- method public void notifyViewEntered(android.view.View);
- method public void notifyViewEntered(android.view.View, int, android.graphics.Rect);
- method public void notifyViewExited(android.view.View);
- method public void notifyViewExited(android.view.View, int);
- method public void notifyViewVisibilityChanged(android.view.View, boolean);
- method public void notifyViewVisibilityChanged(android.view.View, int, boolean);
- method public void registerCallback(android.view.autofill.AutofillManager.AutofillCallback);
- method public void requestAutofill(android.view.View);
- method public void requestAutofill(android.view.View, int, android.graphics.Rect);
- method public void setUserData(android.service.autofill.UserData);
- method public void unregisterCallback(android.view.autofill.AutofillManager.AutofillCallback);
- field public static final java.lang.String EXTRA_ASSIST_STRUCTURE = "android.view.autofill.extra.ASSIST_STRUCTURE";
- field public static final java.lang.String EXTRA_AUTHENTICATION_RESULT = "android.view.autofill.extra.AUTHENTICATION_RESULT";
- field public static final java.lang.String EXTRA_CLIENT_STATE = "android.view.autofill.extra.CLIENT_STATE";
+ method public void notifyViewClicked(@NonNull android.view.View);
+ method public void notifyViewClicked(@NonNull android.view.View, int);
+ method public void notifyViewEntered(@NonNull android.view.View);
+ method public void notifyViewEntered(@NonNull android.view.View, int, @NonNull android.graphics.Rect);
+ method public void notifyViewExited(@NonNull android.view.View);
+ method public void notifyViewExited(@NonNull android.view.View, int);
+ method public void notifyViewVisibilityChanged(@NonNull android.view.View, boolean);
+ method public void notifyViewVisibilityChanged(@NonNull android.view.View, int, boolean);
+ method public void registerCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback);
+ method public void requestAutofill(@NonNull android.view.View);
+ method public void requestAutofill(@NonNull android.view.View, int, @NonNull android.graphics.Rect);
+ method public void setUserData(@Nullable android.service.autofill.UserData);
+ method public void unregisterCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback);
+ field public static final String EXTRA_ASSIST_STRUCTURE = "android.view.autofill.extra.ASSIST_STRUCTURE";
+ field public static final String EXTRA_AUTHENTICATION_RESULT = "android.view.autofill.extra.AUTHENTICATION_RESULT";
+ field public static final String EXTRA_CLIENT_STATE = "android.view.autofill.extra.CLIENT_STATE";
}
- public static abstract class AutofillManager.AutofillCallback {
+ public abstract static class AutofillManager.AutofillCallback {
ctor public AutofillManager.AutofillCallback();
- method public void onAutofillEvent(android.view.View, int);
- method public void onAutofillEvent(android.view.View, int, int);
+ method public void onAutofillEvent(@NonNull android.view.View, int);
+ method public void onAutofillEvent(@NonNull android.view.View, int, int);
field public static final int EVENT_INPUT_HIDDEN = 2; // 0x2
field public static final int EVENT_INPUT_SHOWN = 1; // 0x1
field public static final int EVENT_INPUT_UNAVAILABLE = 3; // 0x3
@@ -52400,11 +52537,11 @@
method public int describeContents();
method public static android.view.autofill.AutofillValue forDate(long);
method public static android.view.autofill.AutofillValue forList(int);
- method public static android.view.autofill.AutofillValue forText(java.lang.CharSequence);
+ method public static android.view.autofill.AutofillValue forText(@Nullable CharSequence);
method public static android.view.autofill.AutofillValue forToggle(boolean);
method public long getDateValue();
method public int getListValue();
- method public java.lang.CharSequence getTextValue();
+ method @NonNull public CharSequence getTextValue();
method public boolean getToggleValue();
method public boolean isDate();
method public boolean isList();
@@ -52427,28 +52564,28 @@
public static final class ContentCaptureContext.Builder {
ctor public ContentCaptureContext.Builder();
method public android.view.contentcapture.ContentCaptureContext build();
- method public android.view.contentcapture.ContentCaptureContext.Builder setExtras(android.os.Bundle);
- method public android.view.contentcapture.ContentCaptureContext.Builder setUri(android.net.Uri);
+ method @NonNull public android.view.contentcapture.ContentCaptureContext.Builder setExtras(@NonNull android.os.Bundle);
+ method @NonNull public android.view.contentcapture.ContentCaptureContext.Builder setUri(@NonNull android.net.Uri);
}
public final class ContentCaptureManager {
- method public android.content.ComponentName getServiceComponentName();
+ method @Nullable public android.content.ComponentName getServiceComponentName();
method public boolean isContentCaptureEnabled();
- method public void removeUserData(android.view.contentcapture.UserDataRemovalRequest);
+ method public void removeUserData(@NonNull android.view.contentcapture.UserDataRemovalRequest);
method public void setContentCaptureEnabled(boolean);
}
public abstract class ContentCaptureSession implements java.lang.AutoCloseable {
method public void close();
- method public final android.view.contentcapture.ContentCaptureSession createContentCaptureSession(android.view.contentcapture.ContentCaptureContext);
+ method @NonNull public final android.view.contentcapture.ContentCaptureSession createContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext);
method public final void destroy();
method public final android.view.contentcapture.ContentCaptureSessionId getContentCaptureSessionId();
- method public android.view.autofill.AutofillId newAutofillId(android.view.autofill.AutofillId, int);
- method public final android.view.ViewStructure newVirtualViewStructure(android.view.autofill.AutofillId, int);
- method public final void notifyViewAppeared(android.view.ViewStructure);
- method public final void notifyViewDisappeared(android.view.autofill.AutofillId);
- method public final void notifyViewTextChanged(android.view.autofill.AutofillId, java.lang.CharSequence, int);
- field public static final int FLAG_USER_INPUT = 1; // 0x1
+ method @NonNull public android.view.autofill.AutofillId newAutofillId(@NonNull android.view.autofill.AutofillId, int);
+ method @NonNull public final android.view.ViewStructure newVirtualViewStructure(@NonNull android.view.autofill.AutofillId, int);
+ method public final void notifyViewAppeared(@NonNull android.view.ViewStructure);
+ method public final void notifyViewDisappeared(@NonNull android.view.autofill.AutofillId);
+ method public final void notifyViewTextChanged(@NonNull android.view.autofill.AutofillId, @Nullable CharSequence, int);
+ method public final void notifyViewsDisappeared(@NonNull android.view.autofill.AutofillId, @NonNull int[]);
}
public final class ContentCaptureSessionId implements android.os.Parcelable {
@@ -52465,9 +52602,9 @@
public static final class UserDataRemovalRequest.Builder {
ctor public UserDataRemovalRequest.Builder();
- method public android.view.contentcapture.UserDataRemovalRequest.Builder addUri(android.net.Uri, boolean);
- method public android.view.contentcapture.UserDataRemovalRequest build();
- method public android.view.contentcapture.UserDataRemovalRequest.Builder forEverything();
+ method public android.view.contentcapture.UserDataRemovalRequest.Builder addUri(@NonNull android.net.Uri, boolean);
+ method @NonNull public android.view.contentcapture.UserDataRemovalRequest build();
+ method @NonNull public android.view.contentcapture.UserDataRemovalRequest.Builder forEverything();
}
}
@@ -52478,11 +52615,11 @@
ctor public BaseInputConnection(android.view.View, boolean);
method public boolean beginBatchEdit();
method public boolean clearMetaKeyStates(int);
- method public void closeConnection();
+ method @CallSuper public void closeConnection();
method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
method public boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
- method public boolean commitText(java.lang.CharSequence, int);
+ method public boolean commitText(CharSequence, int);
method public boolean deleteSurroundingText(int, int);
method public boolean deleteSurroundingTextInCodePoints(int, int);
method public boolean endBatchEdit();
@@ -52493,40 +52630,40 @@
method public android.text.Editable getEditable();
method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
method public android.os.Handler getHandler();
- method public java.lang.CharSequence getSelectedText(int);
- method public java.lang.CharSequence getTextAfterCursor(int, int);
- method public java.lang.CharSequence getTextBeforeCursor(int, int);
+ method public CharSequence getSelectedText(int);
+ method public CharSequence getTextAfterCursor(int, int);
+ method public CharSequence getTextBeforeCursor(int, int);
method public boolean performContextMenuAction(int);
method public boolean performEditorAction(int);
- method public boolean performPrivateCommand(java.lang.String, android.os.Bundle);
+ method public boolean performPrivateCommand(String, android.os.Bundle);
method public static final void removeComposingSpans(android.text.Spannable);
method public boolean reportFullscreenMode(boolean);
method public boolean requestCursorUpdates(int);
method public boolean sendKeyEvent(android.view.KeyEvent);
method public boolean setComposingRegion(int, int);
method public static void setComposingSpans(android.text.Spannable);
- method public boolean setComposingText(java.lang.CharSequence, int);
+ method public boolean setComposingText(CharSequence, int);
method public boolean setSelection(int, int);
}
public final class CompletionInfo implements android.os.Parcelable {
- ctor public CompletionInfo(long, int, java.lang.CharSequence);
- ctor public CompletionInfo(long, int, java.lang.CharSequence, java.lang.CharSequence);
+ ctor public CompletionInfo(long, int, CharSequence);
+ ctor public CompletionInfo(long, int, CharSequence, CharSequence);
method public int describeContents();
method public long getId();
- method public java.lang.CharSequence getLabel();
+ method public CharSequence getLabel();
method public int getPosition();
- method public java.lang.CharSequence getText();
+ method public CharSequence getText();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.inputmethod.CompletionInfo> CREATOR;
}
public final class CorrectionInfo implements android.os.Parcelable {
- ctor public CorrectionInfo(int, java.lang.CharSequence, java.lang.CharSequence);
+ ctor public CorrectionInfo(int, CharSequence, CharSequence);
method public int describeContents();
- method public java.lang.CharSequence getNewText();
+ method public CharSequence getNewText();
method public int getOffset();
- method public java.lang.CharSequence getOldText();
+ method public CharSequence getOldText();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.inputmethod.CorrectionInfo> CREATOR;
}
@@ -52536,7 +52673,7 @@
method public int describeContents();
method public android.graphics.RectF getCharacterBounds(int);
method public int getCharacterBoundsFlags(int);
- method public java.lang.CharSequence getComposingText();
+ method public CharSequence getComposingText();
method public int getComposingTextStart();
method public float getInsertionMarkerBaseline();
method public float getInsertionMarkerBottom();
@@ -52558,7 +52695,7 @@
method public android.view.inputmethod.CursorAnchorInfo.Builder addCharacterBounds(int, float, float, float, float, int);
method public android.view.inputmethod.CursorAnchorInfo build();
method public void reset();
- method public android.view.inputmethod.CursorAnchorInfo.Builder setComposingText(int, java.lang.CharSequence);
+ method public android.view.inputmethod.CursorAnchorInfo.Builder setComposingText(int, CharSequence);
method public android.view.inputmethod.CursorAnchorInfo.Builder setInsertionMarkerLocation(float, float, float, float, int);
method public android.view.inputmethod.CursorAnchorInfo.Builder setMatrix(android.graphics.Matrix);
method public android.view.inputmethod.CursorAnchorInfo.Builder setSelectionRange(int, int);
@@ -52567,7 +52704,7 @@
public class EditorInfo implements android.text.InputType android.os.Parcelable {
ctor public EditorInfo();
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public final void makeCompatible(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.inputmethod.EditorInfo> CREATOR;
@@ -52590,21 +52727,21 @@
field public static final int IME_MASK_ACTION = 255; // 0xff
field public static final int IME_NULL = 0; // 0x0
field public int actionId;
- field public java.lang.CharSequence actionLabel;
- field public java.lang.String[] contentMimeTypes;
+ field public CharSequence actionLabel;
+ field @Nullable public String[] contentMimeTypes;
field public android.os.Bundle extras;
field public int fieldId;
- field public java.lang.String fieldName;
- field public android.os.LocaleList hintLocales;
- field public java.lang.CharSequence hintText;
+ field public String fieldName;
+ field @Nullable public android.os.LocaleList hintLocales;
+ field public CharSequence hintText;
field public int imeOptions;
field public int initialCapsMode;
field public int initialSelEnd;
field public int initialSelStart;
field public int inputType;
- field public java.lang.CharSequence label;
- field public java.lang.String packageName;
- field public java.lang.String privateImeOptions;
+ field public CharSequence label;
+ field public String packageName;
+ field public String privateImeOptions;
}
public class ExtractedText implements android.os.Parcelable {
@@ -52615,13 +52752,13 @@
field public static final int FLAG_SELECTING = 2; // 0x2
field public static final int FLAG_SINGLE_LINE = 1; // 0x1
field public int flags;
- field public java.lang.CharSequence hint;
+ field public CharSequence hint;
field public int partialEndOffset;
field public int partialStartOffset;
field public int selectionEnd;
field public int selectionStart;
field public int startOffset;
- field public java.lang.CharSequence text;
+ field public CharSequence text;
}
public class ExtractedTextRequest implements android.os.Parcelable {
@@ -52647,33 +52784,33 @@
field public static final android.os.Parcelable.Creator<android.view.inputmethod.InputBinding> CREATOR;
}
- public abstract interface InputConnection {
- method public abstract boolean beginBatchEdit();
- method public abstract boolean clearMetaKeyStates(int);
- method public abstract void closeConnection();
- method public abstract boolean commitCompletion(android.view.inputmethod.CompletionInfo);
- method public abstract boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
- method public abstract boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
- method public abstract boolean commitText(java.lang.CharSequence, int);
- method public abstract boolean deleteSurroundingText(int, int);
- method public abstract boolean deleteSurroundingTextInCodePoints(int, int);
- method public abstract boolean endBatchEdit();
- method public abstract boolean finishComposingText();
- method public abstract int getCursorCapsMode(int);
- method public abstract android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
- method public abstract android.os.Handler getHandler();
- method public abstract java.lang.CharSequence getSelectedText(int);
- method public abstract java.lang.CharSequence getTextAfterCursor(int, int);
- method public abstract java.lang.CharSequence getTextBeforeCursor(int, int);
- method public abstract boolean performContextMenuAction(int);
- method public abstract boolean performEditorAction(int);
- method public abstract boolean performPrivateCommand(java.lang.String, android.os.Bundle);
- method public abstract boolean reportFullscreenMode(boolean);
- method public abstract boolean requestCursorUpdates(int);
- method public abstract boolean sendKeyEvent(android.view.KeyEvent);
- method public abstract boolean setComposingRegion(int, int);
- method public abstract boolean setComposingText(java.lang.CharSequence, int);
- method public abstract boolean setSelection(int, int);
+ public interface InputConnection {
+ method public boolean beginBatchEdit();
+ method public boolean clearMetaKeyStates(int);
+ method public void closeConnection();
+ method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
+ method public boolean commitContent(@NonNull android.view.inputmethod.InputContentInfo, int, @Nullable android.os.Bundle);
+ method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
+ method public boolean commitText(CharSequence, int);
+ method public boolean deleteSurroundingText(int, int);
+ method public boolean deleteSurroundingTextInCodePoints(int, int);
+ method public boolean endBatchEdit();
+ method public boolean finishComposingText();
+ method public int getCursorCapsMode(int);
+ method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
+ method public android.os.Handler getHandler();
+ method public CharSequence getSelectedText(int);
+ method public CharSequence getTextAfterCursor(int, int);
+ method public CharSequence getTextBeforeCursor(int, int);
+ method public boolean performContextMenuAction(int);
+ method public boolean performEditorAction(int);
+ method public boolean performPrivateCommand(String, android.os.Bundle);
+ method public boolean reportFullscreenMode(boolean);
+ method public boolean requestCursorUpdates(int);
+ method public boolean sendKeyEvent(android.view.KeyEvent);
+ method public boolean setComposingRegion(int, int);
+ method public boolean setComposingText(CharSequence, int);
+ method public boolean setSelection(int, int);
field public static final int CURSOR_UPDATE_IMMEDIATE = 1; // 0x1
field public static final int CURSOR_UPDATE_MONITOR = 2; // 0x2
field public static final int GET_EXTRACTED_TEXT_MONITOR = 1; // 0x1
@@ -52689,7 +52826,7 @@
method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
method public boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
- method public boolean commitText(java.lang.CharSequence, int);
+ method public boolean commitText(CharSequence, int);
method public boolean deleteSurroundingText(int, int);
method public boolean deleteSurroundingTextInCodePoints(int, int);
method public boolean endBatchEdit();
@@ -52697,112 +52834,112 @@
method public int getCursorCapsMode(int);
method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
method public android.os.Handler getHandler();
- method public java.lang.CharSequence getSelectedText(int);
- method public java.lang.CharSequence getTextAfterCursor(int, int);
- method public java.lang.CharSequence getTextBeforeCursor(int, int);
+ method public CharSequence getSelectedText(int);
+ method public CharSequence getTextAfterCursor(int, int);
+ method public CharSequence getTextBeforeCursor(int, int);
method public boolean performContextMenuAction(int);
method public boolean performEditorAction(int);
- method public boolean performPrivateCommand(java.lang.String, android.os.Bundle);
+ method public boolean performPrivateCommand(String, android.os.Bundle);
method public boolean reportFullscreenMode(boolean);
method public boolean requestCursorUpdates(int);
method public boolean sendKeyEvent(android.view.KeyEvent);
method public boolean setComposingRegion(int, int);
- method public boolean setComposingText(java.lang.CharSequence, int);
+ method public boolean setComposingText(CharSequence, int);
method public boolean setSelection(int, int);
method public void setTarget(android.view.inputmethod.InputConnection);
}
public final class InputContentInfo implements android.os.Parcelable {
- ctor public InputContentInfo(android.net.Uri, android.content.ClipDescription);
- ctor public InputContentInfo(android.net.Uri, android.content.ClipDescription, android.net.Uri);
+ ctor public InputContentInfo(@NonNull android.net.Uri, @NonNull android.content.ClipDescription);
+ ctor public InputContentInfo(@NonNull android.net.Uri, @NonNull android.content.ClipDescription, @Nullable android.net.Uri);
method public int describeContents();
- method public android.net.Uri getContentUri();
- method public android.content.ClipDescription getDescription();
- method public android.net.Uri getLinkUri();
+ method @NonNull public android.net.Uri getContentUri();
+ method @NonNull public android.content.ClipDescription getDescription();
+ method @Nullable public android.net.Uri getLinkUri();
method public void releasePermission();
method public void requestPermission();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.inputmethod.InputContentInfo> CREATOR;
}
- public abstract interface InputMethod {
- method public abstract void attachToken(android.os.IBinder);
- method public abstract void bindInput(android.view.inputmethod.InputBinding);
- method public abstract void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
- method public abstract void createSession(android.view.inputmethod.InputMethod.SessionCallback);
- method public abstract void hideSoftInput(int, android.os.ResultReceiver);
- method public abstract void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
- method public abstract void revokeSession(android.view.inputmethod.InputMethodSession);
- method public abstract void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
- method public abstract void showSoftInput(int, android.os.ResultReceiver);
- method public abstract void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
- method public abstract void unbindInput();
- field public static final java.lang.String SERVICE_INTERFACE = "android.view.InputMethod";
- field public static final java.lang.String SERVICE_META_DATA = "android.view.im";
+ public interface InputMethod {
+ method @MainThread public void attachToken(android.os.IBinder);
+ method @MainThread public void bindInput(android.view.inputmethod.InputBinding);
+ method @MainThread public void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
+ method @MainThread public void createSession(android.view.inputmethod.InputMethod.SessionCallback);
+ method @MainThread public void hideSoftInput(int, android.os.ResultReceiver);
+ method @MainThread public void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+ method @MainThread public void revokeSession(android.view.inputmethod.InputMethodSession);
+ method @MainThread public void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
+ method @MainThread public void showSoftInput(int, android.os.ResultReceiver);
+ method @MainThread public void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+ method @MainThread public void unbindInput();
+ field public static final String SERVICE_INTERFACE = "android.view.InputMethod";
+ field public static final String SERVICE_META_DATA = "android.view.im";
field public static final int SHOW_EXPLICIT = 1; // 0x1
field public static final int SHOW_FORCED = 2; // 0x2
}
- public static abstract interface InputMethod.SessionCallback {
- method public abstract void sessionCreated(android.view.inputmethod.InputMethodSession);
+ public static interface InputMethod.SessionCallback {
+ method public void sessionCreated(android.view.inputmethod.InputMethodSession);
}
public final class InputMethodInfo implements android.os.Parcelable {
ctor public InputMethodInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- ctor public InputMethodInfo(java.lang.String, java.lang.String, java.lang.CharSequence, java.lang.String);
+ ctor public InputMethodInfo(String, String, CharSequence, String);
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
+ method public void dump(android.util.Printer, String);
method public android.content.ComponentName getComponent();
- method public java.lang.String getId();
+ method public String getId();
method public int getIsDefaultResourceId();
- method public java.lang.String getPackageName();
+ method public String getPackageName();
method public android.content.pm.ServiceInfo getServiceInfo();
- method public java.lang.String getServiceName();
- method public java.lang.String getSettingsActivity();
+ method public String getServiceName();
+ method public String getSettingsActivity();
method public android.view.inputmethod.InputMethodSubtype getSubtypeAt(int);
method public int getSubtypeCount();
method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ method public CharSequence loadLabel(android.content.pm.PackageManager);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.inputmethod.InputMethodInfo> CREATOR;
}
public final class InputMethodManager {
- method public void dispatchKeyEventFromInputMethod(android.view.View, android.view.KeyEvent);
+ method public void dispatchKeyEventFromInputMethod(@Nullable android.view.View, @NonNull android.view.KeyEvent);
method public void displayCompletions(android.view.View, android.view.inputmethod.CompletionInfo[]);
method public android.view.inputmethod.InputMethodSubtype getCurrentInputMethodSubtype();
method public java.util.List<android.view.inputmethod.InputMethodInfo> getEnabledInputMethodList();
method public java.util.List<android.view.inputmethod.InputMethodSubtype> getEnabledInputMethodSubtypeList(android.view.inputmethod.InputMethodInfo, boolean);
method public java.util.List<android.view.inputmethod.InputMethodInfo> getInputMethodList();
method public android.view.inputmethod.InputMethodSubtype getLastInputMethodSubtype();
- method public java.util.Map<android.view.inputmethod.InputMethodInfo, java.util.List<android.view.inputmethod.InputMethodSubtype>> getShortcutInputMethodsAndSubtypes();
- method public deprecated void hideSoftInputFromInputMethod(android.os.IBinder, int);
+ method public java.util.Map<android.view.inputmethod.InputMethodInfo,java.util.List<android.view.inputmethod.InputMethodSubtype>> getShortcutInputMethodsAndSubtypes();
+ method @Deprecated public void hideSoftInputFromInputMethod(android.os.IBinder, int);
method public boolean hideSoftInputFromWindow(android.os.IBinder, int);
method public boolean hideSoftInputFromWindow(android.os.IBinder, int, android.os.ResultReceiver);
- method public deprecated void hideStatusIcon(android.os.IBinder);
+ method @Deprecated public void hideStatusIcon(android.os.IBinder);
method public boolean isAcceptingText();
method public boolean isActive(android.view.View);
method public boolean isActive();
method public boolean isFullscreenMode();
- method public deprecated boolean isWatchingCursor(android.view.View);
+ method @Deprecated public boolean isWatchingCursor(android.view.View);
method public void restartInput(android.view.View);
- method public void sendAppPrivateCommand(android.view.View, java.lang.String, android.os.Bundle);
- method public void setAdditionalInputMethodSubtypes(java.lang.String, android.view.inputmethod.InputMethodSubtype[]);
- method public boolean setCurrentInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
- method public deprecated void setInputMethod(android.os.IBinder, java.lang.String);
- method public deprecated void setInputMethodAndSubtype(android.os.IBinder, java.lang.String, android.view.inputmethod.InputMethodSubtype);
- method public deprecated boolean shouldOfferSwitchingToNextInputMethod(android.os.IBinder);
- method public void showInputMethodAndSubtypeEnabler(java.lang.String);
+ method public void sendAppPrivateCommand(android.view.View, String, android.os.Bundle);
+ method public void setAdditionalInputMethodSubtypes(String, android.view.inputmethod.InputMethodSubtype[]);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setCurrentInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
+ method @Deprecated public void setInputMethod(android.os.IBinder, String);
+ method @Deprecated public void setInputMethodAndSubtype(@NonNull android.os.IBinder, String, android.view.inputmethod.InputMethodSubtype);
+ method @Deprecated public boolean shouldOfferSwitchingToNextInputMethod(android.os.IBinder);
+ method public void showInputMethodAndSubtypeEnabler(String);
method public void showInputMethodPicker();
method public boolean showSoftInput(android.view.View, int);
method public boolean showSoftInput(android.view.View, int, android.os.ResultReceiver);
- method public deprecated void showSoftInputFromInputMethod(android.os.IBinder, int);
- method public deprecated void showStatusIcon(android.os.IBinder, java.lang.String, int);
- method public deprecated boolean switchToLastInputMethod(android.os.IBinder);
- method public deprecated boolean switchToNextInputMethod(android.os.IBinder, boolean);
+ method @Deprecated public void showSoftInputFromInputMethod(android.os.IBinder, int);
+ method @Deprecated public void showStatusIcon(android.os.IBinder, String, @DrawableRes int);
+ method @Deprecated public boolean switchToLastInputMethod(android.os.IBinder);
+ method @Deprecated public boolean switchToNextInputMethod(android.os.IBinder, boolean);
method public void toggleSoftInput(int, int);
method public void toggleSoftInputFromWindow(android.os.IBinder, int, int);
- method public deprecated void updateCursor(android.view.View, int, int, int, int);
+ method @Deprecated public void updateCursor(android.view.View, int, int, int, int);
method public void updateCursorAnchorInfo(android.view.View, android.view.inputmethod.CursorAnchorInfo);
method public void updateExtractedText(android.view.View, int, android.view.inputmethod.ExtractedText);
method public void updateSelection(android.view.View, int, int, int, int);
@@ -52817,37 +52954,37 @@
field public static final int SHOW_IMPLICIT = 1; // 0x1
}
- public abstract interface InputMethodSession {
- method public abstract void appPrivateCommand(java.lang.String, android.os.Bundle);
- method public abstract void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
- method public abstract void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
- method public abstract void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
- method public abstract void displayCompletions(android.view.inputmethod.CompletionInfo[]);
- method public abstract void finishInput();
- method public abstract void toggleSoftInput(int, int);
- method public abstract void updateCursor(android.graphics.Rect);
- method public abstract void updateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
- method public abstract void updateExtractedText(int, android.view.inputmethod.ExtractedText);
- method public abstract void updateSelection(int, int, int, int, int, int);
- method public abstract void viewClicked(boolean);
+ public interface InputMethodSession {
+ method public void appPrivateCommand(String, android.os.Bundle);
+ method public void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
+ method public void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
+ method public void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
+ method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
+ method public void finishInput();
+ method public void toggleSoftInput(int, int);
+ method public void updateCursor(android.graphics.Rect);
+ method public void updateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
+ method public void updateExtractedText(int, android.view.inputmethod.ExtractedText);
+ method public void updateSelection(int, int, int, int, int, int);
+ method public void viewClicked(boolean);
}
- public static abstract interface InputMethodSession.EventCallback {
- method public abstract void finishedEvent(int, boolean);
+ public static interface InputMethodSession.EventCallback {
+ method public void finishedEvent(int, boolean);
}
public final class InputMethodSubtype implements android.os.Parcelable {
- ctor public deprecated InputMethodSubtype(int, int, java.lang.String, java.lang.String, java.lang.String, boolean, boolean);
- ctor public deprecated InputMethodSubtype(int, int, java.lang.String, java.lang.String, java.lang.String, boolean, boolean, int);
- method public boolean containsExtraValueKey(java.lang.String);
+ ctor @Deprecated public InputMethodSubtype(int, int, String, String, String, boolean, boolean);
+ ctor @Deprecated public InputMethodSubtype(int, int, String, String, String, boolean, boolean, int);
+ method public boolean containsExtraValueKey(String);
method public int describeContents();
- method public java.lang.CharSequence getDisplayName(android.content.Context, java.lang.String, android.content.pm.ApplicationInfo);
- method public java.lang.String getExtraValue();
- method public java.lang.String getExtraValueOf(java.lang.String);
+ method @NonNull public CharSequence getDisplayName(android.content.Context, String, android.content.pm.ApplicationInfo);
+ method public String getExtraValue();
+ method public String getExtraValueOf(String);
method public int getIconResId();
- method public java.lang.String getLanguageTag();
- method public deprecated java.lang.String getLocale();
- method public java.lang.String getMode();
+ method @NonNull public String getLanguageTag();
+ method @Deprecated @NonNull public String getLocale();
+ method public String getMode();
method public int getNameResId();
method public boolean isAsciiCapable();
method public boolean isAuxiliary();
@@ -52861,13 +52998,13 @@
method public android.view.inputmethod.InputMethodSubtype build();
method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setIsAsciiCapable(boolean);
method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setIsAuxiliary(boolean);
- method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setLanguageTag(java.lang.String);
+ method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setLanguageTag(String);
method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setOverridesImplicitlyEnabledSubtype(boolean);
- method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeExtraValue(java.lang.String);
+ method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeExtraValue(String);
method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeIconResId(int);
method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeId(int);
- method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeLocale(java.lang.String);
- method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeMode(java.lang.String);
+ method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeLocale(String);
+ method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeMode(String);
method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeNameResId(int);
}
@@ -52875,133 +53012,119 @@
package android.view.inspector {
- public abstract interface InspectionCompanion<T> {
- method public default java.lang.String getNodeName();
- method public abstract void mapProperties(android.view.inspector.PropertyMapper);
- method public abstract void readProperties(T, android.view.inspector.PropertyReader);
+ public interface InspectionCompanion<T> {
+ method @Nullable public default String getNodeName();
+ method public void mapProperties(@NonNull android.view.inspector.PropertyMapper);
+ method public void readProperties(@NonNull T, @NonNull android.view.inspector.PropertyReader);
}
public static class InspectionCompanion.UninitializedPropertyMapException extends java.lang.RuntimeException {
ctor public InspectionCompanion.UninitializedPropertyMapException();
}
- public final class IntEnumMapping {
- method public java.lang.String nameOf(int);
- }
-
- public static final class IntEnumMapping.Builder {
- ctor public IntEnumMapping.Builder();
- method public android.view.inspector.IntEnumMapping.Builder addValue(java.lang.String, int);
- method public android.view.inspector.IntEnumMapping build();
- method public void clear();
- }
-
public final class IntFlagMapping {
- method public java.lang.String[] namesOf(int);
+ method @NonNull public java.util.Set<java.lang.String> get(int);
}
public static final class IntFlagMapping.Builder {
ctor public IntFlagMapping.Builder();
- method public android.view.inspector.IntFlagMapping.Builder addFlag(java.lang.String, int);
- method public android.view.inspector.IntFlagMapping.Builder addFlag(java.lang.String, int, int);
- method public android.view.inspector.IntFlagMapping build();
- method public void clear();
+ method @NonNull public android.view.inspector.IntFlagMapping.Builder addFlag(@NonNull String, int);
+ method @NonNull public android.view.inspector.IntFlagMapping.Builder addFlag(@NonNull String, int, int);
+ method @NonNull public android.view.inspector.IntFlagMapping build();
}
- public abstract interface PropertyMapper {
- method public abstract int mapBoolean(java.lang.String, int);
- method public abstract int mapByte(java.lang.String, int);
- method public abstract int mapChar(java.lang.String, int);
- method public abstract int mapColor(java.lang.String, int);
- method public abstract int mapDouble(java.lang.String, int);
- method public abstract int mapFloat(java.lang.String, int);
- method public abstract int mapGravity(java.lang.String, int);
- method public abstract int mapInt(java.lang.String, int);
- method public abstract int mapIntEnum(java.lang.String, int, android.view.inspector.IntEnumMapping);
- method public abstract int mapIntFlag(java.lang.String, int, android.view.inspector.IntFlagMapping);
- method public abstract int mapLong(java.lang.String, int);
- method public abstract int mapObject(java.lang.String, int);
- method public abstract int mapShort(java.lang.String, int);
+ public interface PropertyMapper {
+ method public int mapBoolean(@NonNull String, @AttrRes int);
+ method public int mapByte(@NonNull String, @AttrRes int);
+ method public int mapChar(@NonNull String, @AttrRes int);
+ method public int mapColor(@NonNull String, @AttrRes int);
+ method public int mapDouble(@NonNull String, @AttrRes int);
+ method public int mapFloat(@NonNull String, @AttrRes int);
+ method public int mapGravity(@NonNull String, @AttrRes int);
+ method public int mapInt(@NonNull String, @AttrRes int);
+ method public int mapIntEnum(@NonNull String, @AttrRes int, @NonNull android.util.SparseArray<java.lang.String>);
+ method public int mapIntFlag(@NonNull String, @AttrRes int, @NonNull android.view.inspector.IntFlagMapping);
+ method public int mapLong(@NonNull String, @AttrRes int);
+ method public int mapObject(@NonNull String, @AttrRes int);
+ method public int mapShort(@NonNull String, @AttrRes int);
}
public static class PropertyMapper.PropertyConflictException extends java.lang.RuntimeException {
- ctor public PropertyMapper.PropertyConflictException(java.lang.String, java.lang.String, java.lang.String);
+ ctor public PropertyMapper.PropertyConflictException(@NonNull String, @NonNull String, @NonNull String);
}
- public abstract interface PropertyReader {
- method public abstract void readBoolean(int, boolean);
- method public abstract void readByte(int, byte);
- method public abstract void readChar(int, char);
- method public abstract void readColor(int, int);
- method public abstract void readColor(int, long);
- method public abstract void readColor(int, android.graphics.Color);
- method public abstract void readDouble(int, double);
- method public abstract void readFloat(int, float);
- method public abstract void readGravity(int, int);
- method public abstract void readInt(int, int);
- method public abstract void readIntEnum(int, int);
- method public abstract void readIntFlag(int, int);
- method public abstract void readLong(int, long);
- method public abstract void readObject(int, java.lang.Object);
- method public abstract void readShort(int, short);
+ public interface PropertyReader {
+ method public void readBoolean(int, boolean);
+ method public void readByte(int, byte);
+ method public void readChar(int, char);
+ method public void readColor(int, @ColorInt int);
+ method public void readColor(int, @ColorLong long);
+ method public void readColor(int, @Nullable android.graphics.Color);
+ method public void readDouble(int, double);
+ method public void readFloat(int, float);
+ method public void readGravity(int, int);
+ method public void readInt(int, int);
+ method public void readIntEnum(int, int);
+ method public void readIntFlag(int, int);
+ method public void readLong(int, long);
+ method public void readObject(int, @Nullable Object);
+ method public void readShort(int, short);
}
public static class PropertyReader.PropertyTypeMismatchException extends java.lang.RuntimeException {
- ctor public PropertyReader.PropertyTypeMismatchException(int, java.lang.String, java.lang.String, java.lang.String);
- ctor public PropertyReader.PropertyTypeMismatchException(int, java.lang.String, java.lang.String);
+ ctor public PropertyReader.PropertyTypeMismatchException(int, @NonNull String, @NonNull String, @Nullable String);
+ ctor public PropertyReader.PropertyTypeMismatchException(int, @NonNull String, @NonNull String);
}
}
package android.view.textclassifier {
- public final class ConversationActions implements android.os.Parcelable {
- ctor public ConversationActions(java.util.List<android.view.textclassifier.ConversationActions.ConversationAction>, java.lang.String);
+ public final class ConversationAction implements android.os.Parcelable {
method public int describeContents();
- method public java.util.List<android.view.textclassifier.ConversationActions.ConversationAction> getConversationActions();
- method public java.lang.String getId();
+ method @Nullable public android.app.RemoteAction getAction();
+ method @FloatRange(from=0, to=1) public float getConfidenceScore();
+ method @NonNull public android.os.Bundle getExtras();
+ method @Nullable public CharSequence getTextReply();
+ method @NonNull public String getType();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationAction> CREATOR;
+ field public static final String TYPE_CALL_PHONE = "call_phone";
+ field public static final String TYPE_CREATE_REMINDER = "create_reminder";
+ field public static final String TYPE_OPEN_URL = "open_url";
+ field public static final String TYPE_SEND_EMAIL = "send_email";
+ field public static final String TYPE_SEND_SMS = "send_sms";
+ field public static final String TYPE_SHARE_LOCATION = "share_location";
+ field public static final String TYPE_TEXT_REPLY = "text_reply";
+ field public static final String TYPE_TRACK_FLIGHT = "track_flight";
+ field public static final String TYPE_VIEW_CALENDAR = "view_calendar";
+ field public static final String TYPE_VIEW_MAP = "view_map";
+ }
+
+ public static final class ConversationAction.Builder {
+ ctor public ConversationAction.Builder(@NonNull String);
+ method @NonNull public android.view.textclassifier.ConversationAction build();
+ method @NonNull public android.view.textclassifier.ConversationAction.Builder setAction(@Nullable android.app.RemoteAction);
+ method @NonNull public android.view.textclassifier.ConversationAction.Builder setConfidenceScore(@FloatRange(from=0, to=1) float);
+ method @NonNull public android.view.textclassifier.ConversationAction.Builder setExtras(@Nullable android.os.Bundle);
+ method @NonNull public android.view.textclassifier.ConversationAction.Builder setTextReply(@Nullable CharSequence);
+ }
+
+ public final class ConversationActions implements android.os.Parcelable {
+ ctor public ConversationActions(@NonNull java.util.List<android.view.textclassifier.ConversationAction>, @Nullable String);
+ method public int describeContents();
+ method @NonNull public java.util.List<android.view.textclassifier.ConversationAction> getConversationActions();
+ method @Nullable public String getId();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions> CREATOR;
- field public static final java.lang.String HINT_FOR_IN_APP = "in_app";
- field public static final java.lang.String HINT_FOR_NOTIFICATION = "notification";
- field public static final java.lang.String TYPE_CALL_PHONE = "call_phone";
- field public static final java.lang.String TYPE_CREATE_REMINDER = "create_reminder";
- field public static final java.lang.String TYPE_OPEN_URL = "open_url";
- field public static final java.lang.String TYPE_SEND_EMAIL = "send_email";
- field public static final java.lang.String TYPE_SEND_SMS = "send_sms";
- field public static final java.lang.String TYPE_SHARE_LOCATION = "share_location";
- field public static final java.lang.String TYPE_TEXT_REPLY = "text_reply";
- field public static final java.lang.String TYPE_TRACK_FLIGHT = "track_flight";
- field public static final java.lang.String TYPE_VIEW_CALENDAR = "view_calendar";
- field public static final java.lang.String TYPE_VIEW_MAP = "view_map";
- }
-
- public static final class ConversationActions.ConversationAction implements android.os.Parcelable {
- method public int describeContents();
- method public android.app.RemoteAction getAction();
- method public float getConfidenceScore();
- method public android.os.Bundle getExtras();
- method public java.lang.CharSequence getTextReply();
- method public java.lang.String getType();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.ConversationAction> CREATOR;
- }
-
- public static final class ConversationActions.ConversationAction.Builder {
- ctor public ConversationActions.ConversationAction.Builder(java.lang.String);
- method public android.view.textclassifier.ConversationActions.ConversationAction build();
- method public android.view.textclassifier.ConversationActions.ConversationAction.Builder setAction(android.app.RemoteAction);
- method public android.view.textclassifier.ConversationActions.ConversationAction.Builder setConfidenceScore(float);
- method public android.view.textclassifier.ConversationActions.ConversationAction.Builder setExtras(android.os.Bundle);
- method public android.view.textclassifier.ConversationActions.ConversationAction.Builder setTextReply(java.lang.CharSequence);
}
public static final class ConversationActions.Message implements android.os.Parcelable {
method public int describeContents();
- method public android.app.Person getAuthor();
- method public android.os.Bundle getExtras();
- method public java.time.ZonedDateTime getReferenceTime();
- method public java.lang.CharSequence getText();
+ method @NonNull public android.app.Person getAuthor();
+ method @NonNull public android.os.Bundle getExtras();
+ method @Nullable public java.time.ZonedDateTime getReferenceTime();
+ method @Nullable public CharSequence getText();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.Message> CREATOR;
field public static final android.app.Person PERSON_USER_LOCAL;
@@ -53009,74 +53132,60 @@
}
public static final class ConversationActions.Message.Builder {
- ctor public ConversationActions.Message.Builder(android.app.Person);
- method public android.view.textclassifier.ConversationActions.Message build();
- method public android.view.textclassifier.ConversationActions.Message.Builder setExtras(android.os.Bundle);
- method public android.view.textclassifier.ConversationActions.Message.Builder setReferenceTime(java.time.ZonedDateTime);
- method public android.view.textclassifier.ConversationActions.Message.Builder setText(java.lang.CharSequence);
+ ctor public ConversationActions.Message.Builder(@NonNull android.app.Person);
+ method @NonNull public android.view.textclassifier.ConversationActions.Message build();
+ method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setExtras(@Nullable android.os.Bundle);
+ method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
+ method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setText(@Nullable CharSequence);
}
public static final class ConversationActions.Request implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getCallingPackageName();
- method public java.util.List<android.view.textclassifier.ConversationActions.Message> getConversation();
- method public java.lang.String getConversationId();
- method public java.util.List<java.lang.String> getHints();
- method public int getMaxSuggestions();
- method public android.view.textclassifier.ConversationActions.TypeConfig getTypeConfig();
+ method @Nullable public String getCallingPackageName();
+ method @NonNull public java.util.List<android.view.textclassifier.ConversationActions.Message> getConversation();
+ method @Nullable public String getConversationId();
+ method @Nullable public java.util.List<java.lang.String> getHints();
+ method @IntRange(from=0) public int getMaxSuggestions();
+ method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig getTypeConfig();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.Request> CREATOR;
+ field public static final String HINT_FOR_IN_APP = "in_app";
+ field public static final String HINT_FOR_NOTIFICATION = "notification";
}
public static final class ConversationActions.Request.Builder {
- ctor public ConversationActions.Request.Builder(java.util.List<android.view.textclassifier.ConversationActions.Message>);
- method public android.view.textclassifier.ConversationActions.Request build();
- method public android.view.textclassifier.ConversationActions.Request.Builder setConversationId(java.lang.String);
- method public android.view.textclassifier.ConversationActions.Request.Builder setHints(java.util.List<java.lang.String>);
- method public android.view.textclassifier.ConversationActions.Request.Builder setMaxSuggestions(int);
- method public android.view.textclassifier.ConversationActions.Request.Builder setTypeConfig(android.view.textclassifier.ConversationActions.TypeConfig);
- }
-
- public static final class ConversationActions.TypeConfig implements android.os.Parcelable {
- method public int describeContents();
- method public java.util.Collection<java.lang.String> resolveTypes(java.util.Collection<java.lang.String>);
- method public boolean shouldIncludeTypesFromTextClassifier();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.TypeConfig> CREATOR;
- }
-
- public static final class ConversationActions.TypeConfig.Builder {
- ctor public ConversationActions.TypeConfig.Builder();
- method public android.view.textclassifier.ConversationActions.TypeConfig build();
- method public android.view.textclassifier.ConversationActions.TypeConfig.Builder includeTypesFromTextClassifier(boolean);
- method public android.view.textclassifier.ConversationActions.TypeConfig.Builder setExcludedTypes(java.util.Collection<java.lang.String>);
- method public android.view.textclassifier.ConversationActions.TypeConfig.Builder setIncludedTypes(java.util.Collection<java.lang.String>);
+ ctor public ConversationActions.Request.Builder(@NonNull java.util.List<android.view.textclassifier.ConversationActions.Message>);
+ method @NonNull public android.view.textclassifier.ConversationActions.Request build();
+ method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setConversationId(@Nullable String);
+ method public android.view.textclassifier.ConversationActions.Request.Builder setHints(@Nullable java.util.List<java.lang.String>);
+ method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setMaxSuggestions(@IntRange(from=0) int);
+ method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setTypeConfig(@Nullable android.view.textclassifier.TextClassifier.EntityConfig);
}
public final class SelectionEvent implements android.os.Parcelable {
- method public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int);
- method public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int, android.view.textclassifier.TextClassification);
- method public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int);
- method public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, android.view.textclassifier.TextClassification);
- method public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, android.view.textclassifier.TextSelection);
- method public static android.view.textclassifier.SelectionEvent createSelectionStartedEvent(int, int);
+ method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int);
+ method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int, @NonNull android.view.textclassifier.TextClassification);
+ method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int);
+ method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, @NonNull android.view.textclassifier.TextClassification);
+ method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, @NonNull android.view.textclassifier.TextSelection);
+ method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionStartedEvent(int, int);
method public int describeContents();
method public long getDurationSincePreviousEvent();
method public long getDurationSinceSessionStart();
method public int getEnd();
- method public java.lang.String getEntityType();
+ method @NonNull public String getEntityType();
method public int getEventIndex();
method public long getEventTime();
method public int getEventType();
method public int getInvocationMethod();
- method public java.lang.String getPackageName();
- method public java.lang.String getResultId();
- method public android.view.textclassifier.TextClassificationSessionId getSessionId();
+ method @NonNull public String getPackageName();
+ method @Nullable public String getResultId();
+ method @Nullable public android.view.textclassifier.TextClassificationSessionId getSessionId();
method public int getSmartEnd();
method public int getSmartStart();
method public int getStart();
- method public java.lang.String getWidgetType();
- method public java.lang.String getWidgetVersion();
+ method @NonNull public String getWidgetType();
+ method @Nullable public String getWidgetVersion();
method public static boolean isTerminal(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACTION_ABANDON = 107; // 0x6b
@@ -53104,79 +53213,79 @@
public final class TextClassification implements android.os.Parcelable {
method public int describeContents();
method public java.util.List<android.app.RemoteAction> getActions();
- method public float getConfidenceScore(java.lang.String);
- method public java.lang.String getEntity(int);
- method public int getEntityCount();
- method public android.os.Bundle getExtras();
- method public deprecated android.graphics.drawable.Drawable getIcon();
- method public java.lang.String getId();
- method public deprecated android.content.Intent getIntent();
- method public deprecated java.lang.CharSequence getLabel();
- method public deprecated android.view.View.OnClickListener getOnClickListener();
- method public java.lang.String getText();
+ method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
+ method @NonNull public String getEntity(int);
+ method @IntRange(from=0) public int getEntityCount();
+ method @NonNull public android.os.Bundle getExtras();
+ method @Deprecated @Nullable public android.graphics.drawable.Drawable getIcon();
+ method @Nullable public String getId();
+ method @Deprecated @Nullable public android.content.Intent getIntent();
+ method @Deprecated @Nullable public CharSequence getLabel();
+ method @Deprecated @Nullable public android.view.View.OnClickListener getOnClickListener();
+ method @Nullable public String getText();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassification> CREATOR;
}
public static final class TextClassification.Builder {
ctor public TextClassification.Builder();
- method public android.view.textclassifier.TextClassification.Builder addAction(android.app.RemoteAction);
- method public android.view.textclassifier.TextClassification build();
- method public android.view.textclassifier.TextClassification.Builder setEntityType(java.lang.String, float);
- method public android.view.textclassifier.TextClassification.Builder setExtras(android.os.Bundle);
- method public deprecated android.view.textclassifier.TextClassification.Builder setIcon(android.graphics.drawable.Drawable);
- method public android.view.textclassifier.TextClassification.Builder setId(java.lang.String);
- method public deprecated android.view.textclassifier.TextClassification.Builder setIntent(android.content.Intent);
- method public deprecated android.view.textclassifier.TextClassification.Builder setLabel(java.lang.String);
- method public deprecated android.view.textclassifier.TextClassification.Builder setOnClickListener(android.view.View.OnClickListener);
- method public android.view.textclassifier.TextClassification.Builder setText(java.lang.String);
+ method @NonNull public android.view.textclassifier.TextClassification.Builder addAction(@NonNull android.app.RemoteAction);
+ method @NonNull public android.view.textclassifier.TextClassification build();
+ method @NonNull public android.view.textclassifier.TextClassification.Builder setEntityType(@NonNull String, @FloatRange(from=0.0, to=1.0) float);
+ method @NonNull public android.view.textclassifier.TextClassification.Builder setExtras(@Nullable android.os.Bundle);
+ method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setIcon(@Nullable android.graphics.drawable.Drawable);
+ method @NonNull public android.view.textclassifier.TextClassification.Builder setId(@Nullable String);
+ method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setIntent(@Nullable android.content.Intent);
+ method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setLabel(@Nullable String);
+ method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setOnClickListener(@Nullable android.view.View.OnClickListener);
+ method @NonNull public android.view.textclassifier.TextClassification.Builder setText(@Nullable String);
}
public static final class TextClassification.Request implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getCallingPackageName();
- method public android.os.LocaleList getDefaultLocales();
- method public int getEndIndex();
- method public android.os.Bundle getExtras();
- method public java.time.ZonedDateTime getReferenceTime();
- method public int getStartIndex();
- method public java.lang.CharSequence getText();
+ method @Nullable public String getCallingPackageName();
+ method @Nullable public android.os.LocaleList getDefaultLocales();
+ method @IntRange(from=0) public int getEndIndex();
+ method @NonNull public android.os.Bundle getExtras();
+ method @Nullable public java.time.ZonedDateTime getReferenceTime();
+ method @IntRange(from=0) public int getStartIndex();
+ method @NonNull public CharSequence getText();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassification.Request> CREATOR;
}
public static final class TextClassification.Request.Builder {
- ctor public TextClassification.Request.Builder(java.lang.CharSequence, int, int);
- method public android.view.textclassifier.TextClassification.Request build();
- method public android.view.textclassifier.TextClassification.Request.Builder setDefaultLocales(android.os.LocaleList);
- method public android.view.textclassifier.TextClassification.Request.Builder setExtras(android.os.Bundle);
- method public android.view.textclassifier.TextClassification.Request.Builder setReferenceTime(java.time.ZonedDateTime);
+ ctor public TextClassification.Request.Builder(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
+ method @NonNull public android.view.textclassifier.TextClassification.Request build();
+ method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
+ method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setExtras(@Nullable android.os.Bundle);
+ method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
}
public final class TextClassificationContext implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getPackageName();
- method public java.lang.String getWidgetType();
- method public java.lang.String getWidgetVersion();
+ method @NonNull public String getPackageName();
+ method @NonNull public String getWidgetType();
+ method @Nullable public String getWidgetVersion();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassificationContext> CREATOR;
}
public static final class TextClassificationContext.Builder {
- ctor public TextClassificationContext.Builder(java.lang.String, java.lang.String);
- method public android.view.textclassifier.TextClassificationContext build();
- method public android.view.textclassifier.TextClassificationContext.Builder setWidgetVersion(java.lang.String);
+ ctor public TextClassificationContext.Builder(@NonNull String, @NonNull String);
+ method @NonNull public android.view.textclassifier.TextClassificationContext build();
+ method public android.view.textclassifier.TextClassificationContext.Builder setWidgetVersion(@Nullable String);
}
public final class TextClassificationManager {
- method public android.view.textclassifier.TextClassifier createTextClassificationSession(android.view.textclassifier.TextClassificationContext);
- method public android.view.textclassifier.TextClassifier getTextClassifier();
- method public void setTextClassificationSessionFactory(android.view.textclassifier.TextClassificationSessionFactory);
- method public void setTextClassifier(android.view.textclassifier.TextClassifier);
+ method @NonNull public android.view.textclassifier.TextClassifier createTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext);
+ method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
+ method public void setTextClassificationSessionFactory(@Nullable android.view.textclassifier.TextClassificationSessionFactory);
+ method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
}
- public abstract interface TextClassificationSessionFactory {
- method public abstract android.view.textclassifier.TextClassifier createTextClassificationSession(android.view.textclassifier.TextClassificationContext);
+ public interface TextClassificationSessionFactory {
+ method @NonNull public android.view.textclassifier.TextClassifier createTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext);
}
public final class TextClassificationSessionId implements android.os.Parcelable {
@@ -53185,71 +53294,81 @@
field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassificationSessionId> CREATOR;
}
- public abstract interface TextClassifier {
- method public default android.view.textclassifier.TextClassification classifyText(android.view.textclassifier.TextClassification.Request);
- method public default android.view.textclassifier.TextClassification classifyText(java.lang.CharSequence, int, int, android.os.LocaleList);
+ public interface TextClassifier {
+ method @WorkerThread @NonNull public default android.view.textclassifier.TextClassification classifyText(@NonNull android.view.textclassifier.TextClassification.Request);
+ method @WorkerThread @NonNull public default android.view.textclassifier.TextClassification classifyText(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.os.LocaleList);
method public default void destroy();
- method public default android.view.textclassifier.TextLanguage detectLanguage(android.view.textclassifier.TextLanguage.Request);
- method public default android.view.textclassifier.TextLinks generateLinks(android.view.textclassifier.TextLinks.Request);
- method public default int getMaxGenerateLinksTextLength();
+ method @WorkerThread @NonNull public default android.view.textclassifier.TextLanguage detectLanguage(@NonNull android.view.textclassifier.TextLanguage.Request);
+ method @WorkerThread @NonNull public default android.view.textclassifier.TextLinks generateLinks(@NonNull android.view.textclassifier.TextLinks.Request);
+ method @WorkerThread public default int getMaxGenerateLinksTextLength();
method public default boolean isDestroyed();
- method public default void onSelectionEvent(android.view.textclassifier.SelectionEvent);
- method public default void onTextClassifierEvent(android.view.textclassifier.TextClassifierEvent);
- method public default android.view.textclassifier.ConversationActions suggestConversationActions(android.view.textclassifier.ConversationActions.Request);
- method public default android.view.textclassifier.TextSelection suggestSelection(android.view.textclassifier.TextSelection.Request);
- method public default android.view.textclassifier.TextSelection suggestSelection(java.lang.CharSequence, int, int, android.os.LocaleList);
- field public static final java.lang.String EXTRA_FROM_TEXT_CLASSIFIER = "android.view.textclassifier.extra.FROM_TEXT_CLASSIFIER";
- field public static final java.lang.String HINT_TEXT_IS_EDITABLE = "android.text_is_editable";
- field public static final java.lang.String HINT_TEXT_IS_NOT_EDITABLE = "android.text_is_not_editable";
+ method public default void onSelectionEvent(@NonNull android.view.textclassifier.SelectionEvent);
+ method public default void onTextClassifierEvent(@NonNull android.view.textclassifier.TextClassifierEvent);
+ method @WorkerThread public default android.view.textclassifier.ConversationActions suggestConversationActions(@NonNull android.view.textclassifier.ConversationActions.Request);
+ method @WorkerThread @NonNull public default android.view.textclassifier.TextSelection suggestSelection(@NonNull android.view.textclassifier.TextSelection.Request);
+ method @WorkerThread @NonNull public default android.view.textclassifier.TextSelection suggestSelection(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.os.LocaleList);
+ field public static final String EXTRA_FROM_TEXT_CLASSIFIER = "android.view.textclassifier.extra.FROM_TEXT_CLASSIFIER";
+ field public static final String HINT_TEXT_IS_EDITABLE = "android.text_is_editable";
+ field public static final String HINT_TEXT_IS_NOT_EDITABLE = "android.text_is_not_editable";
field public static final android.view.textclassifier.TextClassifier NO_OP;
- field public static final java.lang.String TYPE_ADDRESS = "address";
- field public static final java.lang.String TYPE_DATE = "date";
- field public static final java.lang.String TYPE_DATE_TIME = "datetime";
- field public static final java.lang.String TYPE_EMAIL = "email";
- field public static final java.lang.String TYPE_FLIGHT_NUMBER = "flight";
- field public static final java.lang.String TYPE_OTHER = "other";
- field public static final java.lang.String TYPE_PHONE = "phone";
- field public static final java.lang.String TYPE_UNKNOWN = "";
- field public static final java.lang.String TYPE_URL = "url";
- field public static final java.lang.String WIDGET_TYPE_CUSTOM_EDITTEXT = "customedit";
- field public static final java.lang.String WIDGET_TYPE_CUSTOM_TEXTVIEW = "customview";
- field public static final java.lang.String WIDGET_TYPE_CUSTOM_UNSELECTABLE_TEXTVIEW = "nosel-customview";
- field public static final java.lang.String WIDGET_TYPE_EDITTEXT = "edittext";
- field public static final java.lang.String WIDGET_TYPE_EDIT_WEBVIEW = "edit-webview";
- field public static final java.lang.String WIDGET_TYPE_NOTIFICATION = "notification";
- field public static final java.lang.String WIDGET_TYPE_TEXTVIEW = "textview";
- field public static final java.lang.String WIDGET_TYPE_UNKNOWN = "unknown";
- field public static final java.lang.String WIDGET_TYPE_UNSELECTABLE_TEXTVIEW = "nosel-textview";
- field public static final java.lang.String WIDGET_TYPE_WEBVIEW = "webview";
+ field public static final String TYPE_ADDRESS = "address";
+ field public static final String TYPE_DATE = "date";
+ field public static final String TYPE_DATE_TIME = "datetime";
+ field public static final String TYPE_EMAIL = "email";
+ field public static final String TYPE_FLIGHT_NUMBER = "flight";
+ field public static final String TYPE_OTHER = "other";
+ field public static final String TYPE_PHONE = "phone";
+ field public static final String TYPE_UNKNOWN = "";
+ field public static final String TYPE_URL = "url";
+ field public static final String WIDGET_TYPE_CUSTOM_EDITTEXT = "customedit";
+ field public static final String WIDGET_TYPE_CUSTOM_TEXTVIEW = "customview";
+ field public static final String WIDGET_TYPE_CUSTOM_UNSELECTABLE_TEXTVIEW = "nosel-customview";
+ field public static final String WIDGET_TYPE_EDITTEXT = "edittext";
+ field public static final String WIDGET_TYPE_EDIT_WEBVIEW = "edit-webview";
+ field public static final String WIDGET_TYPE_NOTIFICATION = "notification";
+ field public static final String WIDGET_TYPE_TEXTVIEW = "textview";
+ field public static final String WIDGET_TYPE_UNKNOWN = "unknown";
+ field public static final String WIDGET_TYPE_UNSELECTABLE_TEXTVIEW = "nosel-textview";
+ field public static final String WIDGET_TYPE_WEBVIEW = "webview";
}
public static final class TextClassifier.EntityConfig implements android.os.Parcelable {
- method public static android.view.textclassifier.TextClassifier.EntityConfig create(java.util.Collection<java.lang.String>, java.util.Collection<java.lang.String>, java.util.Collection<java.lang.String>);
- method public static android.view.textclassifier.TextClassifier.EntityConfig createWithExplicitEntityList(java.util.Collection<java.lang.String>);
- method public static android.view.textclassifier.TextClassifier.EntityConfig createWithHints(java.util.Collection<java.lang.String>);
+ method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig create(@Nullable java.util.Collection<java.lang.String>, @Nullable java.util.Collection<java.lang.String>, @Nullable java.util.Collection<java.lang.String>);
+ method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig createWithExplicitEntityList(@Nullable java.util.Collection<java.lang.String>);
+ method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig createWithHints(@Nullable java.util.Collection<java.lang.String>);
method public int describeContents();
method public java.util.Collection<java.lang.String> getHints();
- method public java.util.Collection<java.lang.String> resolveEntityListModifications(java.util.Collection<java.lang.String>);
+ method public java.util.Collection<java.lang.String> resolveEntityListModifications(@NonNull java.util.Collection<java.lang.String>);
+ method public boolean shouldIncludeTypesFromTextClassifier();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifier.EntityConfig> CREATOR;
}
+ public static final class TextClassifier.EntityConfig.Builder {
+ ctor public TextClassifier.EntityConfig.Builder();
+ method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig build();
+ method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder includeTypesFromTextClassifier(boolean);
+ method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setExcludedTypes(@Nullable java.util.Collection<java.lang.String>);
+ method public android.view.textclassifier.TextClassifier.EntityConfig.Builder setHints(java.util.Collection<java.lang.String>);
+ method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setIncludedTypes(@Nullable java.util.Collection<java.lang.String>);
+ }
+
public final class TextClassifierEvent implements android.os.Parcelable {
method public int describeContents();
- method public int[] getActionIndices();
- method public java.lang.String getEntityType();
+ method @NonNull public int[] getActionIndices();
+ method @Nullable public String getEntityType();
method public int getEventCategory();
- method public android.view.textclassifier.TextClassificationContext getEventContext();
+ method @Nullable public android.view.textclassifier.TextClassificationContext getEventContext();
method public int getEventIndex();
method public long getEventTime();
method public int getEventType();
- method public android.os.Bundle getExtras();
- method public java.lang.String getLanguage();
+ method @NonNull public android.os.Bundle getExtras();
+ method @Nullable public String getLanguage();
method public int getRelativeSuggestedWordEndIndex();
method public int getRelativeSuggestedWordStartIndex();
method public int getRelativeWordEndIndex();
method public int getRelativeWordStartIndex();
- method public java.lang.String getResultId();
+ method @Nullable public String getResultId();
method public void writeToParcel(android.os.Parcel, int);
field public static final int CATEGORY_CONVERSATION_ACTIONS = 3; // 0x3
field public static final int CATEGORY_LANGUAGE_DETECTION = 4; // 0x4
@@ -53282,60 +53401,60 @@
public static final class TextClassifierEvent.Builder {
ctor public TextClassifierEvent.Builder(int, int);
- method public android.view.textclassifier.TextClassifierEvent build();
- method public android.view.textclassifier.TextClassifierEvent.Builder setActionIndices(int...);
- method public android.view.textclassifier.TextClassifierEvent.Builder setEntityType(java.lang.String);
- method public android.view.textclassifier.TextClassifierEvent.Builder setEventContext(android.view.textclassifier.TextClassificationContext);
- method public android.view.textclassifier.TextClassifierEvent.Builder setEventIndex(int);
- method public android.view.textclassifier.TextClassifierEvent.Builder setEventTime(long);
- method public android.view.textclassifier.TextClassifierEvent.Builder setExtras(android.os.Bundle);
- method public android.view.textclassifier.TextClassifierEvent.Builder setLanguage(java.lang.String);
- method public android.view.textclassifier.TextClassifierEvent.Builder setRelativeSuggestedWordEndIndex(int);
- method public android.view.textclassifier.TextClassifierEvent.Builder setRelativeSuggestedWordStartIndex(int);
- method public android.view.textclassifier.TextClassifierEvent.Builder setRelativeWordEndIndex(int);
- method public android.view.textclassifier.TextClassifierEvent.Builder setRelativeWordStartIndex(int);
- method public android.view.textclassifier.TextClassifierEvent.Builder setResultId(java.lang.String);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent build();
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setActionIndices(@NonNull int...);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setEntityType(@Nullable String);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setEventContext(@Nullable android.view.textclassifier.TextClassificationContext);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setEventIndex(int);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setEventTime(long);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setExtras(@NonNull android.os.Bundle);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setLanguage(@Nullable String);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setRelativeSuggestedWordEndIndex(int);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setRelativeSuggestedWordStartIndex(int);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setRelativeWordEndIndex(int);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setRelativeWordStartIndex(int);
+ method @NonNull public android.view.textclassifier.TextClassifierEvent.Builder setResultId(@Nullable String);
}
public final class TextLanguage implements android.os.Parcelable {
method public int describeContents();
- method public float getConfidenceScore(android.icu.util.ULocale);
- method public android.os.Bundle getExtras();
- method public java.lang.String getId();
- method public android.icu.util.ULocale getLocale(int);
- method public int getLocaleHypothesisCount();
+ method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(@NonNull android.icu.util.ULocale);
+ method @NonNull public android.os.Bundle getExtras();
+ method @Nullable public String getId();
+ method @NonNull public android.icu.util.ULocale getLocale(int);
+ method @IntRange(from=0) public int getLocaleHypothesisCount();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLanguage> CREATOR;
}
public static final class TextLanguage.Builder {
ctor public TextLanguage.Builder();
- method public android.view.textclassifier.TextLanguage build();
- method public android.view.textclassifier.TextLanguage.Builder putLocale(android.icu.util.ULocale, float);
- method public android.view.textclassifier.TextLanguage.Builder setExtras(android.os.Bundle);
- method public android.view.textclassifier.TextLanguage.Builder setId(java.lang.String);
+ method @NonNull public android.view.textclassifier.TextLanguage build();
+ method @NonNull public android.view.textclassifier.TextLanguage.Builder putLocale(@NonNull android.icu.util.ULocale, @FloatRange(from=0.0, to=1.0) float);
+ method @NonNull public android.view.textclassifier.TextLanguage.Builder setExtras(@NonNull android.os.Bundle);
+ method @NonNull public android.view.textclassifier.TextLanguage.Builder setId(@Nullable String);
}
public static final class TextLanguage.Request implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getCallingPackageName();
- method public android.os.Bundle getExtras();
- method public java.lang.CharSequence getText();
+ method @Nullable public String getCallingPackageName();
+ method @NonNull public android.os.Bundle getExtras();
+ method @NonNull public CharSequence getText();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLanguage.Request> CREATOR;
}
public static final class TextLanguage.Request.Builder {
- ctor public TextLanguage.Request.Builder(java.lang.CharSequence);
- method public android.view.textclassifier.TextLanguage.Request build();
- method public android.view.textclassifier.TextLanguage.Request.Builder setExtras(android.os.Bundle);
+ ctor public TextLanguage.Request.Builder(@NonNull CharSequence);
+ method @NonNull public android.view.textclassifier.TextLanguage.Request build();
+ method @NonNull public android.view.textclassifier.TextLanguage.Request.Builder setExtras(@NonNull android.os.Bundle);
}
public final class TextLinks implements android.os.Parcelable {
- method public int apply(android.text.Spannable, int, java.util.function.Function<android.view.textclassifier.TextLinks.TextLink, android.view.textclassifier.TextLinks.TextLinkSpan>);
+ method public int apply(@NonNull android.text.Spannable, int, @Nullable java.util.function.Function<android.view.textclassifier.TextLinks.TextLink,android.view.textclassifier.TextLinks.TextLinkSpan>);
method public int describeContents();
- method public android.os.Bundle getExtras();
- method public java.util.Collection<android.view.textclassifier.TextLinks.TextLink> getLinks();
+ method @NonNull public android.os.Bundle getExtras();
+ method @NonNull public java.util.Collection<android.view.textclassifier.TextLinks.TextLink> getLinks();
method public void writeToParcel(android.os.Parcel, int);
field public static final int APPLY_STRATEGY_IGNORE = 0; // 0x0
field public static final int APPLY_STRATEGY_REPLACE = 1; // 0x1
@@ -53348,38 +53467,38 @@
}
public static final class TextLinks.Builder {
- ctor public TextLinks.Builder(java.lang.String);
- method public android.view.textclassifier.TextLinks.Builder addLink(int, int, java.util.Map<java.lang.String, java.lang.Float>);
- method public android.view.textclassifier.TextLinks.Builder addLink(int, int, java.util.Map<java.lang.String, java.lang.Float>, android.os.Bundle);
- method public android.view.textclassifier.TextLinks build();
- method public android.view.textclassifier.TextLinks.Builder clearTextLinks();
- method public android.view.textclassifier.TextLinks.Builder setExtras(android.os.Bundle);
+ ctor public TextLinks.Builder(@NonNull String);
+ method @NonNull public android.view.textclassifier.TextLinks.Builder addLink(int, int, @NonNull java.util.Map<java.lang.String,java.lang.Float>);
+ method @NonNull public android.view.textclassifier.TextLinks.Builder addLink(int, int, @NonNull java.util.Map<java.lang.String,java.lang.Float>, @NonNull android.os.Bundle);
+ method @NonNull public android.view.textclassifier.TextLinks build();
+ method @NonNull public android.view.textclassifier.TextLinks.Builder clearTextLinks();
+ method public android.view.textclassifier.TextLinks.Builder setExtras(@Nullable android.os.Bundle);
}
public static final class TextLinks.Request implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getCallingPackageName();
- method public android.os.LocaleList getDefaultLocales();
- method public android.view.textclassifier.TextClassifier.EntityConfig getEntityConfig();
- method public android.os.Bundle getExtras();
- method public java.lang.CharSequence getText();
+ method @Nullable public String getCallingPackageName();
+ method @Nullable public android.os.LocaleList getDefaultLocales();
+ method @Nullable public android.view.textclassifier.TextClassifier.EntityConfig getEntityConfig();
+ method @NonNull public android.os.Bundle getExtras();
+ method @NonNull public CharSequence getText();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks.Request> CREATOR;
}
public static final class TextLinks.Request.Builder {
- ctor public TextLinks.Request.Builder(java.lang.CharSequence);
- method public android.view.textclassifier.TextLinks.Request build();
- method public android.view.textclassifier.TextLinks.Request.Builder setDefaultLocales(android.os.LocaleList);
- method public android.view.textclassifier.TextLinks.Request.Builder setEntityConfig(android.view.textclassifier.TextClassifier.EntityConfig);
- method public android.view.textclassifier.TextLinks.Request.Builder setExtras(android.os.Bundle);
+ ctor public TextLinks.Request.Builder(@NonNull CharSequence);
+ method @NonNull public android.view.textclassifier.TextLinks.Request build();
+ method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
+ method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setEntityConfig(@Nullable android.view.textclassifier.TextClassifier.EntityConfig);
+ method public android.view.textclassifier.TextLinks.Request.Builder setExtras(@Nullable android.os.Bundle);
}
public static final class TextLinks.TextLink implements android.os.Parcelable {
method public int describeContents();
- method public float getConfidenceScore(java.lang.String);
+ method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
method public int getEnd();
- method public java.lang.String getEntity(int);
+ method @NonNull public String getEntity(int);
method public int getEntityCount();
method public android.os.Bundle getExtras();
method public int getStart();
@@ -53388,18 +53507,18 @@
}
public static class TextLinks.TextLinkSpan extends android.text.style.ClickableSpan {
- ctor public TextLinks.TextLinkSpan(android.view.textclassifier.TextLinks.TextLink);
+ ctor public TextLinks.TextLinkSpan(@NonNull android.view.textclassifier.TextLinks.TextLink);
method public final android.view.textclassifier.TextLinks.TextLink getTextLink();
method public void onClick(android.view.View);
}
public final class TextSelection implements android.os.Parcelable {
method public int describeContents();
- method public float getConfidenceScore(java.lang.String);
- method public java.lang.String getEntity(int);
- method public int getEntityCount();
- method public android.os.Bundle getExtras();
- method public java.lang.String getId();
+ method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
+ method @NonNull public String getEntity(int);
+ method @IntRange(from=0) public int getEntityCount();
+ method @NonNull public android.os.Bundle getExtras();
+ method @Nullable public String getId();
method public int getSelectionEndIndex();
method public int getSelectionStartIndex();
method public void writeToParcel(android.os.Parcel, int);
@@ -53407,30 +53526,30 @@
}
public static final class TextSelection.Builder {
- ctor public TextSelection.Builder(int, int);
- method public android.view.textclassifier.TextSelection build();
- method public android.view.textclassifier.TextSelection.Builder setEntityType(java.lang.String, float);
- method public android.view.textclassifier.TextSelection.Builder setExtras(android.os.Bundle);
- method public android.view.textclassifier.TextSelection.Builder setId(java.lang.String);
+ ctor public TextSelection.Builder(@IntRange(from=0) int, @IntRange(from=0) int);
+ method @NonNull public android.view.textclassifier.TextSelection build();
+ method @NonNull public android.view.textclassifier.TextSelection.Builder setEntityType(@NonNull String, @FloatRange(from=0.0, to=1.0) float);
+ method public android.view.textclassifier.TextSelection.Builder setExtras(@Nullable android.os.Bundle);
+ method @NonNull public android.view.textclassifier.TextSelection.Builder setId(@Nullable String);
}
public static final class TextSelection.Request implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getCallingPackageName();
- method public android.os.LocaleList getDefaultLocales();
- method public int getEndIndex();
- method public android.os.Bundle getExtras();
- method public int getStartIndex();
- method public java.lang.CharSequence getText();
+ method @Nullable public String getCallingPackageName();
+ method @Nullable public android.os.LocaleList getDefaultLocales();
+ method @IntRange(from=0) public int getEndIndex();
+ method @NonNull public android.os.Bundle getExtras();
+ method @IntRange(from=0) public int getStartIndex();
+ method @NonNull public CharSequence getText();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextSelection.Request> CREATOR;
}
public static final class TextSelection.Request.Builder {
- ctor public TextSelection.Request.Builder(java.lang.CharSequence, int, int);
- method public android.view.textclassifier.TextSelection.Request build();
- method public android.view.textclassifier.TextSelection.Request.Builder setDefaultLocales(android.os.LocaleList);
- method public android.view.textclassifier.TextSelection.Request.Builder setExtras(android.os.Bundle);
+ ctor public TextSelection.Request.Builder(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
+ method @NonNull public android.view.textclassifier.TextSelection.Request build();
+ method @NonNull public android.view.textclassifier.TextSelection.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
+ method public android.view.textclassifier.TextSelection.Request.Builder setExtras(@Nullable android.os.Bundle);
}
}
@@ -53452,14 +53571,14 @@
public final class SpellCheckerInfo implements android.os.Parcelable {
method public int describeContents();
method public android.content.ComponentName getComponent();
- method public java.lang.String getId();
- method public java.lang.String getPackageName();
+ method public String getId();
+ method public String getPackageName();
method public android.content.pm.ServiceInfo getServiceInfo();
- method public java.lang.String getSettingsActivity();
+ method public String getSettingsActivity();
method public android.view.textservice.SpellCheckerSubtype getSubtypeAt(int);
method public int getSubtypeCount();
method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ method public CharSequence loadLabel(android.content.pm.PackageManager);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textservice.SpellCheckerInfo> CREATOR;
}
@@ -53469,39 +53588,39 @@
method public void close();
method public void getSentenceSuggestions(android.view.textservice.TextInfo[], int);
method public android.view.textservice.SpellCheckerInfo getSpellChecker();
- method public deprecated void getSuggestions(android.view.textservice.TextInfo, int);
- method public deprecated void getSuggestions(android.view.textservice.TextInfo[], int, boolean);
+ method @Deprecated public void getSuggestions(android.view.textservice.TextInfo, int);
+ method @Deprecated public void getSuggestions(android.view.textservice.TextInfo[], int, boolean);
method public boolean isSessionDisconnected();
- field public static final java.lang.String SERVICE_META_DATA = "android.view.textservice.scs";
+ field public static final String SERVICE_META_DATA = "android.view.textservice.scs";
}
- public static abstract interface SpellCheckerSession.SpellCheckerSessionListener {
- method public abstract void onGetSentenceSuggestions(android.view.textservice.SentenceSuggestionsInfo[]);
- method public abstract void onGetSuggestions(android.view.textservice.SuggestionsInfo[]);
+ public static interface SpellCheckerSession.SpellCheckerSessionListener {
+ method public void onGetSentenceSuggestions(android.view.textservice.SentenceSuggestionsInfo[]);
+ method public void onGetSuggestions(android.view.textservice.SuggestionsInfo[]);
}
public final class SpellCheckerSubtype implements android.os.Parcelable {
- ctor public deprecated SpellCheckerSubtype(int, java.lang.String, java.lang.String);
- method public boolean containsExtraValueKey(java.lang.String);
+ ctor @Deprecated public SpellCheckerSubtype(int, String, String);
+ method public boolean containsExtraValueKey(String);
method public int describeContents();
- method public java.lang.CharSequence getDisplayName(android.content.Context, java.lang.String, android.content.pm.ApplicationInfo);
- method public java.lang.String getExtraValue();
- method public java.lang.String getExtraValueOf(java.lang.String);
- method public java.lang.String getLanguageTag();
- method public deprecated java.lang.String getLocale();
+ method public CharSequence getDisplayName(android.content.Context, String, android.content.pm.ApplicationInfo);
+ method public String getExtraValue();
+ method public String getExtraValueOf(String);
+ method @NonNull public String getLanguageTag();
+ method @Deprecated @NonNull public String getLocale();
method public int getNameResId();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textservice.SpellCheckerSubtype> CREATOR;
}
public final class SuggestionsInfo implements android.os.Parcelable {
- ctor public SuggestionsInfo(int, java.lang.String[]);
- ctor public SuggestionsInfo(int, java.lang.String[], int, int);
+ ctor public SuggestionsInfo(int, String[]);
+ ctor public SuggestionsInfo(int, String[], int, int);
ctor public SuggestionsInfo(android.os.Parcel);
method public int describeContents();
method public int getCookie();
method public int getSequence();
- method public java.lang.String getSuggestionAt(int);
+ method public String getSuggestionAt(int);
method public int getSuggestionsAttributes();
method public int getSuggestionsCount();
method public void setCookieAndSequence(int, int);
@@ -53513,15 +53632,15 @@
}
public final class TextInfo implements android.os.Parcelable {
- ctor public TextInfo(java.lang.String);
- ctor public TextInfo(java.lang.String, int, int);
- ctor public TextInfo(java.lang.CharSequence, int, int, int, int);
+ ctor public TextInfo(String);
+ ctor public TextInfo(String, int, int);
+ ctor public TextInfo(CharSequence, int, int, int, int);
ctor public TextInfo(android.os.Parcel);
method public int describeContents();
- method public java.lang.CharSequence getCharSequence();
+ method public CharSequence getCharSequence();
method public int getCookie();
method public int getSequence();
- method public java.lang.String getText();
+ method public String getText();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.textservice.TextInfo> CREATOR;
}
@@ -53537,25 +53656,23 @@
public abstract class ClientCertRequest {
ctor public ClientCertRequest();
method public abstract void cancel();
- method public abstract java.lang.String getHost();
- method public abstract java.lang.String[] getKeyTypes();
+ method public abstract String getHost();
+ method @Nullable public abstract String[] getKeyTypes();
method public abstract int getPort();
- method public abstract java.security.Principal[] getPrincipals();
+ method @Nullable public abstract java.security.Principal[] getPrincipals();
method public abstract void ignore();
method public abstract void proceed(java.security.PrivateKey, java.security.cert.X509Certificate[]);
}
public class ConsoleMessage {
- ctor public ConsoleMessage(java.lang.String, java.lang.String, int, android.webkit.ConsoleMessage.MessageLevel);
+ ctor public ConsoleMessage(String, String, int, android.webkit.ConsoleMessage.MessageLevel);
method public int lineNumber();
- method public java.lang.String message();
+ method public String message();
method public android.webkit.ConsoleMessage.MessageLevel messageLevel();
- method public java.lang.String sourceId();
+ method public String sourceId();
}
- public static final class ConsoleMessage.MessageLevel extends java.lang.Enum {
- method public static android.webkit.ConsoleMessage.MessageLevel valueOf(java.lang.String);
- method public static final android.webkit.ConsoleMessage.MessageLevel[] values();
+ public enum ConsoleMessage.MessageLevel {
enum_constant public static final android.webkit.ConsoleMessage.MessageLevel DEBUG;
enum_constant public static final android.webkit.ConsoleMessage.MessageLevel ERROR;
enum_constant public static final android.webkit.ConsoleMessage.MessageLevel LOG;
@@ -53564,72 +53681,73 @@
}
public abstract class CookieManager {
- ctor public deprecated CookieManager();
+ ctor @Deprecated public CookieManager();
method public abstract boolean acceptCookie();
method public abstract boolean acceptThirdPartyCookies(android.webkit.WebView);
method public static boolean allowFileSchemeCookies();
method public abstract void flush();
- method public abstract java.lang.String getCookie(java.lang.String);
+ method public abstract String getCookie(String);
method public static android.webkit.CookieManager getInstance();
method public abstract boolean hasCookies();
- method public abstract deprecated void removeAllCookie();
- method public abstract void removeAllCookies(android.webkit.ValueCallback<java.lang.Boolean>);
- method public abstract deprecated void removeExpiredCookie();
- method public abstract deprecated void removeSessionCookie();
- method public abstract void removeSessionCookies(android.webkit.ValueCallback<java.lang.Boolean>);
+ method @Deprecated public abstract void removeAllCookie();
+ method public abstract void removeAllCookies(@Nullable android.webkit.ValueCallback<java.lang.Boolean>);
+ method @Deprecated public abstract void removeExpiredCookie();
+ method @Deprecated public abstract void removeSessionCookie();
+ method public abstract void removeSessionCookies(@Nullable android.webkit.ValueCallback<java.lang.Boolean>);
method public abstract void setAcceptCookie(boolean);
method public static void setAcceptFileSchemeCookies(boolean);
method public abstract void setAcceptThirdPartyCookies(android.webkit.WebView, boolean);
- method public abstract void setCookie(java.lang.String, java.lang.String);
- method public abstract void setCookie(java.lang.String, java.lang.String, android.webkit.ValueCallback<java.lang.Boolean>);
+ method public abstract void setCookie(String, String);
+ method public abstract void setCookie(String, String, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
}
- public final deprecated class CookieSyncManager implements java.lang.Runnable {
- method public static android.webkit.CookieSyncManager createInstance(android.content.Context);
- method public static android.webkit.CookieSyncManager getInstance();
- method public deprecated void resetSync();
- method public deprecated void startSync();
- method public deprecated void stopSync();
- method public deprecated void sync();
- method protected deprecated void syncFromRamToFlash();
+ @Deprecated public final class CookieSyncManager implements java.lang.Runnable {
+ method @Deprecated public static android.webkit.CookieSyncManager createInstance(android.content.Context);
+ method @Deprecated public static android.webkit.CookieSyncManager getInstance();
+ method @Deprecated public void resetSync();
+ method @Deprecated public void run();
+ method @Deprecated public void startSync();
+ method @Deprecated public void stopSync();
+ method @Deprecated public void sync();
+ method @Deprecated protected void syncFromRamToFlash();
}
public class DateSorter {
ctor public DateSorter(android.content.Context);
method public long getBoundary(int);
method public int getIndex(long);
- method public java.lang.String getLabel(int);
+ method public String getLabel(int);
field public static final int DAY_COUNT = 5; // 0x5
}
- public abstract interface DownloadListener {
- method public abstract void onDownloadStart(java.lang.String, java.lang.String, java.lang.String, java.lang.String, long);
+ public interface DownloadListener {
+ method public void onDownloadStart(String, String, String, String, long);
}
public class GeolocationPermissions {
- method public void allow(java.lang.String);
- method public void clear(java.lang.String);
+ method public void allow(String);
+ method public void clear(String);
method public void clearAll();
- method public void getAllowed(java.lang.String, android.webkit.ValueCallback<java.lang.Boolean>);
+ method public void getAllowed(String, android.webkit.ValueCallback<java.lang.Boolean>);
method public static android.webkit.GeolocationPermissions getInstance();
method public void getOrigins(android.webkit.ValueCallback<java.util.Set<java.lang.String>>);
}
- public static abstract interface GeolocationPermissions.Callback {
- method public abstract void invoke(java.lang.String, boolean, boolean);
+ public static interface GeolocationPermissions.Callback {
+ method public void invoke(String, boolean, boolean);
}
public class HttpAuthHandler extends android.os.Handler {
method public void cancel();
- method public void proceed(java.lang.String, java.lang.String);
+ method public void proceed(String, String);
method public boolean useHttpAuthUsernamePassword();
}
- public abstract class JavascriptInterface implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public @interface JavascriptInterface {
}
public class JsPromptResult extends android.webkit.JsResult {
- method public void confirm(java.lang.String);
+ method public void confirm(String);
}
public class JsResult {
@@ -53638,39 +53756,39 @@
}
public class MimeTypeMap {
- method public java.lang.String getExtensionFromMimeType(java.lang.String);
- method public static java.lang.String getFileExtensionFromUrl(java.lang.String);
- method public java.lang.String getMimeTypeFromExtension(java.lang.String);
+ method @Nullable public String getExtensionFromMimeType(String);
+ method public static String getFileExtensionFromUrl(String);
+ method @Nullable public String getMimeTypeFromExtension(String);
method public static android.webkit.MimeTypeMap getSingleton();
- method public boolean hasExtension(java.lang.String);
- method public boolean hasMimeType(java.lang.String);
+ method public boolean hasExtension(String);
+ method public boolean hasMimeType(String);
}
public abstract class PermissionRequest {
ctor public PermissionRequest();
method public abstract void deny();
method public abstract android.net.Uri getOrigin();
- method public abstract java.lang.String[] getResources();
- method public abstract void grant(java.lang.String[]);
- field public static final java.lang.String RESOURCE_AUDIO_CAPTURE = "android.webkit.resource.AUDIO_CAPTURE";
- field public static final java.lang.String RESOURCE_MIDI_SYSEX = "android.webkit.resource.MIDI_SYSEX";
- field public static final java.lang.String RESOURCE_PROTECTED_MEDIA_ID = "android.webkit.resource.PROTECTED_MEDIA_ID";
- field public static final java.lang.String RESOURCE_VIDEO_CAPTURE = "android.webkit.resource.VIDEO_CAPTURE";
+ method public abstract String[] getResources();
+ method public abstract void grant(String[]);
+ field public static final String RESOURCE_AUDIO_CAPTURE = "android.webkit.resource.AUDIO_CAPTURE";
+ field public static final String RESOURCE_MIDI_SYSEX = "android.webkit.resource.MIDI_SYSEX";
+ field public static final String RESOURCE_PROTECTED_MEDIA_ID = "android.webkit.resource.PROTECTED_MEDIA_ID";
+ field public static final String RESOURCE_VIDEO_CAPTURE = "android.webkit.resource.VIDEO_CAPTURE";
}
- public abstract interface PluginStub {
- method public abstract android.view.View getEmbeddedView(int, android.content.Context);
- method public abstract android.view.View getFullScreenView(int, android.content.Context);
+ public interface PluginStub {
+ method public android.view.View getEmbeddedView(int, android.content.Context);
+ method public android.view.View getFullScreenView(int, android.content.Context);
}
public abstract class RenderProcessGoneDetail {
- ctor public deprecated RenderProcessGoneDetail();
+ ctor @Deprecated public RenderProcessGoneDetail();
method public abstract boolean didCrash();
method public abstract int rendererPriorityAtExit();
}
public abstract class SafeBrowsingResponse {
- ctor public deprecated SafeBrowsingResponse();
+ ctor @Deprecated public SafeBrowsingResponse();
method public abstract void backToSafety(boolean);
method public abstract void proceed(boolean);
method public abstract void showInterstitial(boolean);
@@ -53678,14 +53796,14 @@
public class ServiceWorkerClient {
ctor public ServiceWorkerClient();
- method public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebResourceRequest);
+ method @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebResourceRequest);
}
public abstract class ServiceWorkerController {
- ctor public deprecated ServiceWorkerController();
- method public static android.webkit.ServiceWorkerController getInstance();
- method public abstract android.webkit.ServiceWorkerWebSettings getServiceWorkerWebSettings();
- method public abstract void setServiceWorkerClient(android.webkit.ServiceWorkerClient);
+ ctor @Deprecated public ServiceWorkerController();
+ method @NonNull public static android.webkit.ServiceWorkerController getInstance();
+ method @NonNull public abstract android.webkit.ServiceWorkerWebSettings getServiceWorkerWebSettings();
+ method public abstract void setServiceWorkerClient(@Nullable android.webkit.ServiceWorkerClient);
}
public abstract class ServiceWorkerWebSettings {
@@ -53706,7 +53824,7 @@
}
public class TracingConfig {
- method public java.util.List<java.lang.String> getCustomIncludedCategories();
+ method @NonNull public java.util.List<java.lang.String> getCustomIncludedCategories();
method public int getPredefinedCategories();
method public int getTracingMode();
field public static final int CATEGORIES_ALL = 1; // 0x1
@@ -53731,90 +53849,90 @@
}
public abstract class TracingController {
- ctor public deprecated TracingController();
- method public static android.webkit.TracingController getInstance();
+ ctor @Deprecated public TracingController();
+ method @NonNull public static android.webkit.TracingController getInstance();
method public abstract boolean isTracing();
- method public abstract void start(android.webkit.TracingConfig);
- method public abstract boolean stop(java.io.OutputStream, java.util.concurrent.Executor);
+ method public abstract void start(@NonNull android.webkit.TracingConfig);
+ method public abstract boolean stop(@Nullable java.io.OutputStream, @NonNull java.util.concurrent.Executor);
}
public final class URLUtil {
ctor public URLUtil();
- method public static java.lang.String composeSearchUrl(java.lang.String, java.lang.String, java.lang.String);
+ method public static String composeSearchUrl(String, String, String);
method public static byte[] decode(byte[]) throws java.lang.IllegalArgumentException;
- method public static java.lang.String guessFileName(java.lang.String, java.lang.String, java.lang.String);
- method public static java.lang.String guessUrl(java.lang.String);
- method public static boolean isAboutUrl(java.lang.String);
- method public static boolean isAssetUrl(java.lang.String);
- method public static boolean isContentUrl(java.lang.String);
- method public static deprecated boolean isCookielessProxyUrl(java.lang.String);
- method public static boolean isDataUrl(java.lang.String);
- method public static boolean isFileUrl(java.lang.String);
- method public static boolean isHttpUrl(java.lang.String);
- method public static boolean isHttpsUrl(java.lang.String);
- method public static boolean isJavaScriptUrl(java.lang.String);
- method public static boolean isNetworkUrl(java.lang.String);
- method public static boolean isValidUrl(java.lang.String);
- method public static java.lang.String stripAnchor(java.lang.String);
+ method public static String guessFileName(String, @Nullable String, @Nullable String);
+ method public static String guessUrl(String);
+ method public static boolean isAboutUrl(String);
+ method public static boolean isAssetUrl(String);
+ method public static boolean isContentUrl(String);
+ method @Deprecated public static boolean isCookielessProxyUrl(String);
+ method public static boolean isDataUrl(String);
+ method public static boolean isFileUrl(String);
+ method public static boolean isHttpUrl(String);
+ method public static boolean isHttpsUrl(String);
+ method public static boolean isJavaScriptUrl(String);
+ method public static boolean isNetworkUrl(String);
+ method public static boolean isValidUrl(String);
+ method public static String stripAnchor(String);
}
- public abstract interface ValueCallback<T> {
- method public abstract void onReceiveValue(T);
+ public interface ValueCallback<T> {
+ method public void onReceiveValue(T);
}
public abstract class WebBackForwardList implements java.lang.Cloneable java.io.Serializable {
ctor public WebBackForwardList();
method protected abstract android.webkit.WebBackForwardList clone();
method public abstract int getCurrentIndex();
- method public abstract android.webkit.WebHistoryItem getCurrentItem();
+ method @Nullable public abstract android.webkit.WebHistoryItem getCurrentItem();
method public abstract android.webkit.WebHistoryItem getItemAtIndex(int);
method public abstract int getSize();
}
public class WebChromeClient {
ctor public WebChromeClient();
- method public android.graphics.Bitmap getDefaultVideoPoster();
- method public android.view.View getVideoLoadingProgressView();
+ method @Nullable public android.graphics.Bitmap getDefaultVideoPoster();
+ method @Nullable public android.view.View getVideoLoadingProgressView();
method public void getVisitedHistory(android.webkit.ValueCallback<java.lang.String[]>);
method public void onCloseWindow(android.webkit.WebView);
- method public deprecated void onConsoleMessage(java.lang.String, int, java.lang.String);
+ method @Deprecated public void onConsoleMessage(String, int, String);
method public boolean onConsoleMessage(android.webkit.ConsoleMessage);
method public boolean onCreateWindow(android.webkit.WebView, boolean, boolean, android.os.Message);
- method public deprecated void onExceededDatabaseQuota(java.lang.String, java.lang.String, long, long, long, android.webkit.WebStorage.QuotaUpdater);
+ method @Deprecated public void onExceededDatabaseQuota(String, String, long, long, long, android.webkit.WebStorage.QuotaUpdater);
method public void onGeolocationPermissionsHidePrompt();
- method public void onGeolocationPermissionsShowPrompt(java.lang.String, android.webkit.GeolocationPermissions.Callback);
+ method public void onGeolocationPermissionsShowPrompt(String, android.webkit.GeolocationPermissions.Callback);
method public void onHideCustomView();
- method public boolean onJsAlert(android.webkit.WebView, java.lang.String, java.lang.String, android.webkit.JsResult);
- method public boolean onJsBeforeUnload(android.webkit.WebView, java.lang.String, java.lang.String, android.webkit.JsResult);
- method public boolean onJsConfirm(android.webkit.WebView, java.lang.String, java.lang.String, android.webkit.JsResult);
- method public boolean onJsPrompt(android.webkit.WebView, java.lang.String, java.lang.String, java.lang.String, android.webkit.JsPromptResult);
- method public deprecated boolean onJsTimeout();
+ method public boolean onJsAlert(android.webkit.WebView, String, String, android.webkit.JsResult);
+ method public boolean onJsBeforeUnload(android.webkit.WebView, String, String, android.webkit.JsResult);
+ method public boolean onJsConfirm(android.webkit.WebView, String, String, android.webkit.JsResult);
+ method public boolean onJsPrompt(android.webkit.WebView, String, String, String, android.webkit.JsPromptResult);
+ method @Deprecated public boolean onJsTimeout();
method public void onPermissionRequest(android.webkit.PermissionRequest);
method public void onPermissionRequestCanceled(android.webkit.PermissionRequest);
method public void onProgressChanged(android.webkit.WebView, int);
- method public deprecated void onReachedMaxAppCacheSize(long, long, android.webkit.WebStorage.QuotaUpdater);
+ method @Deprecated public void onReachedMaxAppCacheSize(long, long, android.webkit.WebStorage.QuotaUpdater);
method public void onReceivedIcon(android.webkit.WebView, android.graphics.Bitmap);
- method public void onReceivedTitle(android.webkit.WebView, java.lang.String);
- method public void onReceivedTouchIconUrl(android.webkit.WebView, java.lang.String, boolean);
+ method public void onReceivedTitle(android.webkit.WebView, String);
+ method public void onReceivedTouchIconUrl(android.webkit.WebView, String, boolean);
method public void onRequestFocus(android.webkit.WebView);
method public void onShowCustomView(android.view.View, android.webkit.WebChromeClient.CustomViewCallback);
- method public deprecated void onShowCustomView(android.view.View, int, android.webkit.WebChromeClient.CustomViewCallback);
+ method @Deprecated public void onShowCustomView(android.view.View, int, android.webkit.WebChromeClient.CustomViewCallback);
method public boolean onShowFileChooser(android.webkit.WebView, android.webkit.ValueCallback<android.net.Uri[]>, android.webkit.WebChromeClient.FileChooserParams);
}
- public static abstract interface WebChromeClient.CustomViewCallback {
- method public abstract void onCustomViewHidden();
+ public static interface WebChromeClient.CustomViewCallback {
+ method public void onCustomViewHidden();
}
- public static abstract class WebChromeClient.FileChooserParams {
+ public abstract static class WebChromeClient.FileChooserParams {
ctor public WebChromeClient.FileChooserParams();
method public abstract android.content.Intent createIntent();
- method public abstract java.lang.String[] getAcceptTypes();
- method public abstract java.lang.String getFilenameHint();
+ method public abstract String[] getAcceptTypes();
+ method @Nullable public abstract String getFilenameHint();
method public abstract int getMode();
- method public abstract java.lang.CharSequence getTitle();
+ method @Nullable public abstract CharSequence getTitle();
method public abstract boolean isCaptureEnabled();
- method public static android.net.Uri[] parseResult(int, android.content.Intent);
+ method @Nullable public static android.net.Uri[] parseResult(int, android.content.Intent);
field public static final int MODE_OPEN = 0; // 0x0
field public static final int MODE_OPEN_MULTIPLE = 1; // 0x1
field public static final int MODE_SAVE = 3; // 0x3
@@ -53823,32 +53941,32 @@
public abstract class WebHistoryItem implements java.lang.Cloneable {
ctor public WebHistoryItem();
method protected abstract android.webkit.WebHistoryItem clone();
- method public abstract android.graphics.Bitmap getFavicon();
- method public abstract java.lang.String getOriginalUrl();
- method public abstract java.lang.String getTitle();
- method public abstract java.lang.String getUrl();
+ method @Nullable public abstract android.graphics.Bitmap getFavicon();
+ method public abstract String getOriginalUrl();
+ method public abstract String getTitle();
+ method public abstract String getUrl();
}
- public abstract deprecated class WebIconDatabase {
- ctor public WebIconDatabase();
- method public abstract void close();
- method public static android.webkit.WebIconDatabase getInstance();
- method public abstract void open(java.lang.String);
- method public abstract void releaseIconForPageUrl(java.lang.String);
- method public abstract void removeAllIcons();
- method public abstract void requestIconForPageUrl(java.lang.String, android.webkit.WebIconDatabase.IconListener);
- method public abstract void retainIconForPageUrl(java.lang.String);
+ @Deprecated public abstract class WebIconDatabase {
+ ctor @Deprecated public WebIconDatabase();
+ method @Deprecated public abstract void close();
+ method @Deprecated public static android.webkit.WebIconDatabase getInstance();
+ method @Deprecated public abstract void open(String);
+ method @Deprecated public abstract void releaseIconForPageUrl(String);
+ method @Deprecated public abstract void removeAllIcons();
+ method @Deprecated public abstract void requestIconForPageUrl(String, android.webkit.WebIconDatabase.IconListener);
+ method @Deprecated public abstract void retainIconForPageUrl(String);
}
- public static abstract deprecated interface WebIconDatabase.IconListener {
- method public abstract void onReceivedIcon(java.lang.String, android.graphics.Bitmap);
+ @Deprecated public static interface WebIconDatabase.IconListener {
+ method @Deprecated public void onReceivedIcon(String, android.graphics.Bitmap);
}
public class WebMessage {
- ctor public WebMessage(java.lang.String);
- ctor public WebMessage(java.lang.String, android.webkit.WebMessagePort[]);
- method public java.lang.String getData();
- method public android.webkit.WebMessagePort[] getPorts();
+ ctor public WebMessage(String);
+ ctor public WebMessage(String, android.webkit.WebMessagePort[]);
+ method public String getData();
+ method @Nullable public android.webkit.WebMessagePort[] getPorts();
}
public abstract class WebMessagePort {
@@ -53858,44 +53976,44 @@
method public abstract void setWebMessageCallback(android.webkit.WebMessagePort.WebMessageCallback, android.os.Handler);
}
- public static abstract class WebMessagePort.WebMessageCallback {
+ public abstract static class WebMessagePort.WebMessageCallback {
ctor public WebMessagePort.WebMessageCallback();
method public void onMessage(android.webkit.WebMessagePort, android.webkit.WebMessage);
}
public abstract class WebResourceError {
- method public abstract java.lang.CharSequence getDescription();
+ method public abstract CharSequence getDescription();
method public abstract int getErrorCode();
}
- public abstract interface WebResourceRequest {
- method public abstract java.lang.String getMethod();
- method public abstract java.util.Map<java.lang.String, java.lang.String> getRequestHeaders();
- method public abstract android.net.Uri getUrl();
- method public abstract boolean hasGesture();
- method public abstract boolean isForMainFrame();
- method public abstract boolean isRedirect();
+ public interface WebResourceRequest {
+ method public String getMethod();
+ method public java.util.Map<java.lang.String,java.lang.String> getRequestHeaders();
+ method public android.net.Uri getUrl();
+ method public boolean hasGesture();
+ method public boolean isForMainFrame();
+ method public boolean isRedirect();
}
public class WebResourceResponse {
- ctor public WebResourceResponse(java.lang.String, java.lang.String, java.io.InputStream);
- ctor public WebResourceResponse(java.lang.String, java.lang.String, int, java.lang.String, java.util.Map<java.lang.String, java.lang.String>, java.io.InputStream);
+ ctor public WebResourceResponse(String, String, java.io.InputStream);
+ ctor public WebResourceResponse(String, String, int, @NonNull String, java.util.Map<java.lang.String,java.lang.String>, java.io.InputStream);
method public java.io.InputStream getData();
- method public java.lang.String getEncoding();
- method public java.lang.String getMimeType();
- method public java.lang.String getReasonPhrase();
- method public java.util.Map<java.lang.String, java.lang.String> getResponseHeaders();
+ method public String getEncoding();
+ method public String getMimeType();
+ method public String getReasonPhrase();
+ method public java.util.Map<java.lang.String,java.lang.String> getResponseHeaders();
method public int getStatusCode();
method public void setData(java.io.InputStream);
- method public void setEncoding(java.lang.String);
- method public void setMimeType(java.lang.String);
- method public void setResponseHeaders(java.util.Map<java.lang.String, java.lang.String>);
- method public void setStatusCodeAndReasonPhrase(int, java.lang.String);
+ method public void setEncoding(String);
+ method public void setMimeType(String);
+ method public void setResponseHeaders(java.util.Map<java.lang.String,java.lang.String>);
+ method public void setStatusCodeAndReasonPhrase(int, @NonNull String);
}
public abstract class WebSettings {
ctor public WebSettings();
- method public abstract deprecated boolean enableSmoothTransition();
+ method @Deprecated public abstract boolean enableSmoothTransition();
method public abstract boolean getAllowContentAccess();
method public abstract boolean getAllowFileAccess();
method public abstract boolean getAllowFileAccessFromFileURLs();
@@ -53904,24 +54022,24 @@
method public abstract boolean getBlockNetworkLoads();
method public abstract boolean getBuiltInZoomControls();
method public abstract int getCacheMode();
- method public abstract java.lang.String getCursiveFontFamily();
+ method public abstract String getCursiveFontFamily();
method public abstract boolean getDatabaseEnabled();
- method public abstract deprecated java.lang.String getDatabasePath();
+ method @Deprecated public abstract String getDatabasePath();
method public abstract int getDefaultFixedFontSize();
method public abstract int getDefaultFontSize();
- method public abstract java.lang.String getDefaultTextEncodingName();
- method public static java.lang.String getDefaultUserAgent(android.content.Context);
- method public abstract deprecated android.webkit.WebSettings.ZoomDensity getDefaultZoom();
+ method public abstract String getDefaultTextEncodingName();
+ method public static String getDefaultUserAgent(android.content.Context);
+ method @Deprecated public abstract android.webkit.WebSettings.ZoomDensity getDefaultZoom();
method public abstract int getDisabledActionModeMenuItems();
method public abstract boolean getDisplayZoomControls();
method public abstract boolean getDomStorageEnabled();
- method public abstract java.lang.String getFantasyFontFamily();
- method public abstract java.lang.String getFixedFontFamily();
+ method public abstract String getFantasyFontFamily();
+ method public abstract String getFixedFontFamily();
method public int getForceDarkMode();
method public abstract boolean getJavaScriptCanOpenWindowsAutomatically();
method public abstract boolean getJavaScriptEnabled();
method public abstract android.webkit.WebSettings.LayoutAlgorithm getLayoutAlgorithm();
- method public abstract deprecated boolean getLightTouchEnabled();
+ method @Deprecated public abstract boolean getLightTouchEnabled();
method public abstract boolean getLoadWithOverviewMode();
method public abstract boolean getLoadsImagesAutomatically();
method public abstract boolean getMediaPlaybackRequiresUserGesture();
@@ -53929,48 +54047,48 @@
method public abstract int getMinimumLogicalFontSize();
method public abstract int getMixedContentMode();
method public abstract boolean getOffscreenPreRaster();
- method public abstract deprecated android.webkit.WebSettings.PluginState getPluginState();
+ method @Deprecated public abstract android.webkit.WebSettings.PluginState getPluginState();
method public abstract boolean getSafeBrowsingEnabled();
- method public abstract java.lang.String getSansSerifFontFamily();
- method public abstract deprecated boolean getSaveFormData();
- method public abstract deprecated boolean getSavePassword();
- method public abstract java.lang.String getSerifFontFamily();
- method public abstract java.lang.String getStandardFontFamily();
- method public deprecated synchronized android.webkit.WebSettings.TextSize getTextSize();
+ method public abstract String getSansSerifFontFamily();
+ method @Deprecated public abstract boolean getSaveFormData();
+ method @Deprecated public abstract boolean getSavePassword();
+ method public abstract String getSerifFontFamily();
+ method public abstract String getStandardFontFamily();
+ method @Deprecated public android.webkit.WebSettings.TextSize getTextSize();
method public abstract int getTextZoom();
method public abstract boolean getUseWideViewPort();
- method public abstract java.lang.String getUserAgentString();
+ method public abstract String getUserAgentString();
method public abstract void setAllowContentAccess(boolean);
method public abstract void setAllowFileAccess(boolean);
method public abstract void setAllowFileAccessFromFileURLs(boolean);
method public abstract void setAllowUniversalAccessFromFileURLs(boolean);
method public abstract void setAppCacheEnabled(boolean);
- method public abstract deprecated void setAppCacheMaxSize(long);
- method public abstract void setAppCachePath(java.lang.String);
+ method @Deprecated public abstract void setAppCacheMaxSize(long);
+ method public abstract void setAppCachePath(String);
method public abstract void setBlockNetworkImage(boolean);
method public abstract void setBlockNetworkLoads(boolean);
method public abstract void setBuiltInZoomControls(boolean);
method public abstract void setCacheMode(int);
- method public abstract void setCursiveFontFamily(java.lang.String);
+ method public abstract void setCursiveFontFamily(String);
method public abstract void setDatabaseEnabled(boolean);
- method public abstract deprecated void setDatabasePath(java.lang.String);
+ method @Deprecated public abstract void setDatabasePath(String);
method public abstract void setDefaultFixedFontSize(int);
method public abstract void setDefaultFontSize(int);
- method public abstract void setDefaultTextEncodingName(java.lang.String);
- method public abstract deprecated void setDefaultZoom(android.webkit.WebSettings.ZoomDensity);
+ method public abstract void setDefaultTextEncodingName(String);
+ method @Deprecated public abstract void setDefaultZoom(android.webkit.WebSettings.ZoomDensity);
method public abstract void setDisabledActionModeMenuItems(int);
method public abstract void setDisplayZoomControls(boolean);
method public abstract void setDomStorageEnabled(boolean);
- method public abstract deprecated void setEnableSmoothTransition(boolean);
- method public abstract void setFantasyFontFamily(java.lang.String);
- method public abstract void setFixedFontFamily(java.lang.String);
+ method @Deprecated public abstract void setEnableSmoothTransition(boolean);
+ method public abstract void setFantasyFontFamily(String);
+ method public abstract void setFixedFontFamily(String);
method public void setForceDarkMode(int);
- method public abstract deprecated void setGeolocationDatabasePath(java.lang.String);
+ method @Deprecated public abstract void setGeolocationDatabasePath(String);
method public abstract void setGeolocationEnabled(boolean);
method public abstract void setJavaScriptCanOpenWindowsAutomatically(boolean);
method public abstract void setJavaScriptEnabled(boolean);
method public abstract void setLayoutAlgorithm(android.webkit.WebSettings.LayoutAlgorithm);
- method public abstract deprecated void setLightTouchEnabled(boolean);
+ method @Deprecated public abstract void setLightTouchEnabled(boolean);
method public abstract void setLoadWithOverviewMode(boolean);
method public abstract void setLoadsImagesAutomatically(boolean);
method public abstract void setMediaPlaybackRequiresUserGesture(boolean);
@@ -53979,20 +54097,20 @@
method public abstract void setMixedContentMode(int);
method public abstract void setNeedInitialFocus(boolean);
method public abstract void setOffscreenPreRaster(boolean);
- method public abstract deprecated void setPluginState(android.webkit.WebSettings.PluginState);
- method public abstract deprecated void setRenderPriority(android.webkit.WebSettings.RenderPriority);
+ method @Deprecated public abstract void setPluginState(android.webkit.WebSettings.PluginState);
+ method @Deprecated public abstract void setRenderPriority(android.webkit.WebSettings.RenderPriority);
method public abstract void setSafeBrowsingEnabled(boolean);
- method public abstract void setSansSerifFontFamily(java.lang.String);
- method public abstract deprecated void setSaveFormData(boolean);
- method public abstract deprecated void setSavePassword(boolean);
- method public abstract void setSerifFontFamily(java.lang.String);
- method public abstract void setStandardFontFamily(java.lang.String);
+ method public abstract void setSansSerifFontFamily(String);
+ method @Deprecated public abstract void setSaveFormData(boolean);
+ method @Deprecated public abstract void setSavePassword(boolean);
+ method public abstract void setSerifFontFamily(String);
+ method public abstract void setStandardFontFamily(String);
method public abstract void setSupportMultipleWindows(boolean);
method public abstract void setSupportZoom(boolean);
- method public deprecated synchronized void setTextSize(android.webkit.WebSettings.TextSize);
+ method @Deprecated public void setTextSize(android.webkit.WebSettings.TextSize);
method public abstract void setTextZoom(int);
method public abstract void setUseWideViewPort(boolean);
- method public abstract void setUserAgentString(java.lang.String);
+ method public abstract void setUserAgentString(@Nullable String);
method public abstract boolean supportMultipleWindows();
method public abstract boolean supportZoom();
field public static final int FORCE_DARK_AUTO = 0; // 0x0
@@ -54001,7 +54119,7 @@
field public static final int LOAD_CACHE_ELSE_NETWORK = 1; // 0x1
field public static final int LOAD_CACHE_ONLY = 3; // 0x3
field public static final int LOAD_DEFAULT = -1; // 0xffffffff
- field public static final deprecated int LOAD_NORMAL = 0; // 0x0
+ field @Deprecated public static final int LOAD_NORMAL = 0; // 0x0
field public static final int LOAD_NO_CACHE = 2; // 0x2
field public static final int MENU_ITEM_NONE = 0; // 0x0
field public static final int MENU_ITEM_PROCESS_TEXT = 4; // 0x4
@@ -54012,44 +54130,34 @@
field public static final int MIXED_CONTENT_NEVER_ALLOW = 1; // 0x1
}
- public static final class WebSettings.LayoutAlgorithm extends java.lang.Enum {
- method public static android.webkit.WebSettings.LayoutAlgorithm valueOf(java.lang.String);
- method public static final android.webkit.WebSettings.LayoutAlgorithm[] values();
- enum_constant public static final deprecated android.webkit.WebSettings.LayoutAlgorithm NARROW_COLUMNS;
+ public enum WebSettings.LayoutAlgorithm {
+ enum_constant @Deprecated public static final android.webkit.WebSettings.LayoutAlgorithm NARROW_COLUMNS;
enum_constant public static final android.webkit.WebSettings.LayoutAlgorithm NORMAL;
- enum_constant public static final deprecated android.webkit.WebSettings.LayoutAlgorithm SINGLE_COLUMN;
+ enum_constant @Deprecated public static final android.webkit.WebSettings.LayoutAlgorithm SINGLE_COLUMN;
enum_constant public static final android.webkit.WebSettings.LayoutAlgorithm TEXT_AUTOSIZING;
}
- public static final class WebSettings.PluginState extends java.lang.Enum {
- method public static android.webkit.WebSettings.PluginState valueOf(java.lang.String);
- method public static final android.webkit.WebSettings.PluginState[] values();
+ public enum WebSettings.PluginState {
enum_constant public static final android.webkit.WebSettings.PluginState OFF;
enum_constant public static final android.webkit.WebSettings.PluginState ON;
enum_constant public static final android.webkit.WebSettings.PluginState ON_DEMAND;
}
- public static final class WebSettings.RenderPriority extends java.lang.Enum {
- method public static android.webkit.WebSettings.RenderPriority valueOf(java.lang.String);
- method public static final android.webkit.WebSettings.RenderPriority[] values();
+ public enum WebSettings.RenderPriority {
enum_constant public static final android.webkit.WebSettings.RenderPriority HIGH;
enum_constant public static final android.webkit.WebSettings.RenderPriority LOW;
enum_constant public static final android.webkit.WebSettings.RenderPriority NORMAL;
}
- public static final deprecated class WebSettings.TextSize extends java.lang.Enum {
- method public static android.webkit.WebSettings.TextSize valueOf(java.lang.String);
- method public static final android.webkit.WebSettings.TextSize[] values();
- enum_constant public static final android.webkit.WebSettings.TextSize LARGER;
- enum_constant public static final android.webkit.WebSettings.TextSize LARGEST;
- enum_constant public static final android.webkit.WebSettings.TextSize NORMAL;
- enum_constant public static final android.webkit.WebSettings.TextSize SMALLER;
- enum_constant public static final android.webkit.WebSettings.TextSize SMALLEST;
+ @Deprecated public enum WebSettings.TextSize {
+ enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize LARGER;
+ enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize LARGEST;
+ enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize NORMAL;
+ enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize SMALLER;
+ enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize SMALLEST;
}
- public static final class WebSettings.ZoomDensity extends java.lang.Enum {
- method public static android.webkit.WebSettings.ZoomDensity valueOf(java.lang.String);
- method public static final android.webkit.WebSettings.ZoomDensity[] values();
+ public enum WebSettings.ZoomDensity {
enum_constant public static final android.webkit.WebSettings.ZoomDensity CLOSE;
enum_constant public static final android.webkit.WebSettings.ZoomDensity FAR;
enum_constant public static final android.webkit.WebSettings.ZoomDensity MEDIUM;
@@ -54057,22 +54165,22 @@
public class WebStorage {
method public void deleteAllData();
- method public void deleteOrigin(java.lang.String);
+ method public void deleteOrigin(String);
method public static android.webkit.WebStorage getInstance();
method public void getOrigins(android.webkit.ValueCallback<java.util.Map>);
- method public void getQuotaForOrigin(java.lang.String, android.webkit.ValueCallback<java.lang.Long>);
- method public void getUsageForOrigin(java.lang.String, android.webkit.ValueCallback<java.lang.Long>);
- method public deprecated void setQuotaForOrigin(java.lang.String, long);
+ method public void getQuotaForOrigin(String, android.webkit.ValueCallback<java.lang.Long>);
+ method public void getUsageForOrigin(String, android.webkit.ValueCallback<java.lang.Long>);
+ method @Deprecated public void setQuotaForOrigin(String, long);
}
public static class WebStorage.Origin {
- method public java.lang.String getOrigin();
+ method public String getOrigin();
method public long getQuota();
method public long getUsage();
}
- public static abstract deprecated interface WebStorage.QuotaUpdater {
- method public abstract void updateQuota(long);
+ @Deprecated public static interface WebStorage.QuotaUpdater {
+ method @Deprecated public void updateQuota(long);
}
public class WebView extends android.widget.AbsoluteLayout implements android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewTreeObserver.OnGlobalFocusChangeListener {
@@ -54080,108 +54188,112 @@
ctor public WebView(android.content.Context, android.util.AttributeSet);
ctor public WebView(android.content.Context, android.util.AttributeSet, int);
ctor public WebView(android.content.Context, android.util.AttributeSet, int, int);
- ctor public deprecated WebView(android.content.Context, android.util.AttributeSet, int, boolean);
- method public void addJavascriptInterface(java.lang.Object, java.lang.String);
+ ctor @Deprecated public WebView(android.content.Context, android.util.AttributeSet, int, boolean);
+ method public void addJavascriptInterface(Object, String);
method public boolean canGoBack();
method public boolean canGoBackOrForward(int);
method public boolean canGoForward();
- method public deprecated boolean canZoomIn();
- method public deprecated boolean canZoomOut();
- method public deprecated android.graphics.Picture capturePicture();
+ method @Deprecated public boolean canZoomIn();
+ method @Deprecated public boolean canZoomOut();
+ method @Deprecated public android.graphics.Picture capturePicture();
method public void clearCache(boolean);
- method public static void clearClientCertPreferences(java.lang.Runnable);
+ method public static void clearClientCertPreferences(@Nullable Runnable);
method public void clearFormData();
method public void clearHistory();
method public void clearMatches();
method public void clearSslPreferences();
- method public deprecated void clearView();
+ method @Deprecated public void clearView();
method public android.webkit.WebBackForwardList copyBackForwardList();
- method public deprecated android.print.PrintDocumentAdapter createPrintDocumentAdapter();
- method public android.print.PrintDocumentAdapter createPrintDocumentAdapter(java.lang.String);
+ method @Deprecated public android.print.PrintDocumentAdapter createPrintDocumentAdapter();
+ method public android.print.PrintDocumentAdapter createPrintDocumentAdapter(String);
method public android.webkit.WebMessagePort[] createWebMessageChannel();
method public void destroy();
method public static void disableWebView();
method public void documentHasImages(android.os.Message);
method public static void enableSlowWholeDocumentDraw();
- method public void evaluateJavascript(java.lang.String, android.webkit.ValueCallback<java.lang.String>);
- method public static deprecated java.lang.String findAddress(java.lang.String);
- method public deprecated int findAll(java.lang.String);
- method public void findAllAsync(java.lang.String);
+ method public void evaluateJavascript(String, @Nullable android.webkit.ValueCallback<java.lang.String>);
+ method @Deprecated @Nullable public static String findAddress(String);
+ method @Deprecated public int findAll(String);
+ method public void findAllAsync(String);
method public void findNext(boolean);
method public void flingScroll(int, int);
- method public deprecated void freeMemory();
- method public android.net.http.SslCertificate getCertificate();
- method public int getContentHeight();
- method public static android.content.pm.PackageInfo getCurrentWebViewPackage();
+ method @Deprecated public void freeMemory();
+ method @Nullable public android.net.http.SslCertificate getCertificate();
+ method @android.view.ViewDebug.ExportedProperty(category="webview") public int getContentHeight();
+ method @Nullable public static android.content.pm.PackageInfo getCurrentWebViewPackage();
method public android.graphics.Bitmap getFavicon();
method public android.webkit.WebView.HitTestResult getHitTestResult();
- method public deprecated java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String);
- method public java.lang.String getOriginalUrl();
+ method @Deprecated @Nullable public String[] getHttpAuthUsernamePassword(String, String);
+ method @android.view.ViewDebug.ExportedProperty(category="webview") public String getOriginalUrl();
method public int getProgress();
method public boolean getRendererPriorityWaivedWhenNotVisible();
method public int getRendererRequestedPriority();
- method public static android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
- method public deprecated float getScale();
+ method @NonNull public static android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
+ method @Deprecated @android.view.ViewDebug.ExportedProperty(category="webview") public float getScale();
method public android.webkit.WebSettings getSettings();
- method public android.view.textclassifier.TextClassifier getTextClassifier();
- method public java.lang.String getTitle();
- method public java.lang.String getUrl();
- method public android.webkit.WebChromeClient getWebChromeClient();
- method public static java.lang.ClassLoader getWebViewClassLoader();
+ method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
+ method @android.view.ViewDebug.ExportedProperty(category="webview") public String getTitle();
+ method @android.view.ViewDebug.ExportedProperty(category="webview") public String getUrl();
+ method @Nullable public android.webkit.WebChromeClient getWebChromeClient();
+ method @NonNull public static ClassLoader getWebViewClassLoader();
method public android.webkit.WebViewClient getWebViewClient();
- method public android.os.Looper getWebViewLooper();
+ method @NonNull public android.os.Looper getWebViewLooper();
+ method @Nullable public android.webkit.WebViewRenderer getWebViewRenderer();
+ method @Nullable public android.webkit.WebViewRendererClient getWebViewRendererClient();
method public void goBack();
method public void goBackOrForward(int);
method public void goForward();
method public void invokeZoomPicker();
method public boolean isPrivateBrowsingEnabled();
- method public void loadData(java.lang.String, java.lang.String, java.lang.String);
- method public void loadDataWithBaseURL(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public void loadUrl(java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
- method public void loadUrl(java.lang.String);
- method public deprecated void onChildViewAdded(android.view.View, android.view.View);
- method public deprecated void onChildViewRemoved(android.view.View, android.view.View);
- method public deprecated void onGlobalFocusChanged(android.view.View, android.view.View);
+ method public void loadData(String, @Nullable String, @Nullable String);
+ method public void loadDataWithBaseURL(@Nullable String, String, @Nullable String, @Nullable String, @Nullable String);
+ method public void loadUrl(String, java.util.Map<java.lang.String,java.lang.String>);
+ method public void loadUrl(String);
+ method @Deprecated public void onChildViewAdded(android.view.View, android.view.View);
+ method @Deprecated public void onChildViewRemoved(android.view.View, android.view.View);
+ method @Deprecated public void onGlobalFocusChanged(android.view.View, android.view.View);
method public void onPause();
method public void onResume();
- method public deprecated boolean overlayHorizontalScrollbar();
- method public deprecated boolean overlayVerticalScrollbar();
+ method @Deprecated public boolean overlayHorizontalScrollbar();
+ method @Deprecated public boolean overlayVerticalScrollbar();
method public boolean pageDown(boolean);
method public boolean pageUp(boolean);
method public void pauseTimers();
- method public void postUrl(java.lang.String, byte[]);
+ method public void postUrl(String, byte[]);
method public void postVisualStateCallback(long, android.webkit.WebView.VisualStateCallback);
method public void postWebMessage(android.webkit.WebMessage, android.net.Uri);
method public void reload();
- method public void removeJavascriptInterface(java.lang.String);
- method public void requestFocusNodeHref(android.os.Message);
+ method public void removeJavascriptInterface(@NonNull String);
+ method public void requestFocusNodeHref(@Nullable android.os.Message);
method public void requestImageRef(android.os.Message);
- method public android.webkit.WebBackForwardList restoreState(android.os.Bundle);
+ method @Nullable public android.webkit.WebBackForwardList restoreState(android.os.Bundle);
method public void resumeTimers();
- method public deprecated void savePassword(java.lang.String, java.lang.String, java.lang.String);
- method public android.webkit.WebBackForwardList saveState(android.os.Bundle);
- method public void saveWebArchive(java.lang.String);
- method public void saveWebArchive(java.lang.String, boolean, android.webkit.ValueCallback<java.lang.String>);
- method public deprecated void setCertificate(android.net.http.SslCertificate);
- method public static void setDataDirectorySuffix(java.lang.String);
+ method @Deprecated public void savePassword(String, String, String);
+ method @Nullable public android.webkit.WebBackForwardList saveState(android.os.Bundle);
+ method public void saveWebArchive(String);
+ method public void saveWebArchive(String, boolean, @Nullable android.webkit.ValueCallback<java.lang.String>);
+ method @Deprecated public void setCertificate(android.net.http.SslCertificate);
+ method public static void setDataDirectorySuffix(String);
method public void setDownloadListener(android.webkit.DownloadListener);
method public void setFindListener(android.webkit.WebView.FindListener);
- method public deprecated void setHorizontalScrollbarOverlay(boolean);
- method public deprecated void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ method @Deprecated public void setHorizontalScrollbarOverlay(boolean);
+ method @Deprecated public void setHttpAuthUsernamePassword(String, String, String, String);
method public void setInitialScale(int);
- method public deprecated void setMapTrackballToArrowKeys(boolean);
+ method @Deprecated public void setMapTrackballToArrowKeys(boolean);
method public void setNetworkAvailable(boolean);
- method public deprecated void setPictureListener(android.webkit.WebView.PictureListener);
+ method @Deprecated public void setPictureListener(android.webkit.WebView.PictureListener);
method public void setRendererPriorityPolicy(int, boolean);
- method public static void setSafeBrowsingWhitelist(java.util.List<java.lang.String>, android.webkit.ValueCallback<java.lang.Boolean>);
- method public void setTextClassifier(android.view.textclassifier.TextClassifier);
- method public deprecated void setVerticalScrollbarOverlay(boolean);
+ method public static void setSafeBrowsingWhitelist(@NonNull java.util.List<java.lang.String>, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
+ method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
+ method @Deprecated public void setVerticalScrollbarOverlay(boolean);
method public void setWebChromeClient(android.webkit.WebChromeClient);
method public static void setWebContentsDebuggingEnabled(boolean);
method public void setWebViewClient(android.webkit.WebViewClient);
- method public deprecated boolean shouldDelayChildPressedState();
- method public deprecated boolean showFindDialog(java.lang.String, boolean);
- method public static void startSafeBrowsing(android.content.Context, android.webkit.ValueCallback<java.lang.Boolean>);
+ method public void setWebViewRendererClient(@NonNull java.util.concurrent.Executor, @NonNull android.webkit.WebViewRendererClient);
+ method public void setWebViewRendererClient(@Nullable android.webkit.WebViewRendererClient);
+ method @Deprecated public boolean shouldDelayChildPressedState();
+ method @Deprecated public boolean showFindDialog(@Nullable String, boolean);
+ method public static void startSafeBrowsing(@NonNull android.content.Context, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
method public void stopLoading();
method public void zoomBy(float);
method public boolean zoomIn();
@@ -54189,23 +54301,23 @@
field public static final int RENDERER_PRIORITY_BOUND = 1; // 0x1
field public static final int RENDERER_PRIORITY_IMPORTANT = 2; // 0x2
field public static final int RENDERER_PRIORITY_WAIVED = 0; // 0x0
- field public static final java.lang.String SCHEME_GEO = "geo:0,0?q=";
- field public static final java.lang.String SCHEME_MAILTO = "mailto:";
- field public static final java.lang.String SCHEME_TEL = "tel:";
+ field public static final String SCHEME_GEO = "geo:0,0?q=";
+ field public static final String SCHEME_MAILTO = "mailto:";
+ field public static final String SCHEME_TEL = "tel:";
}
- public static abstract interface WebView.FindListener {
- method public abstract void onFindResultReceived(int, int, boolean);
+ public static interface WebView.FindListener {
+ method public void onFindResultReceived(int, int, boolean);
}
public static class WebView.HitTestResult {
- method public java.lang.String getExtra();
+ method @Nullable public String getExtra();
method public int getType();
- field public static final deprecated int ANCHOR_TYPE = 1; // 0x1
+ field @Deprecated public static final int ANCHOR_TYPE = 1; // 0x1
field public static final int EDIT_TEXT_TYPE = 9; // 0x9
field public static final int EMAIL_TYPE = 4; // 0x4
field public static final int GEO_TYPE = 3; // 0x3
- field public static final deprecated int IMAGE_ANCHOR_TYPE = 6; // 0x6
+ field @Deprecated public static final int IMAGE_ANCHOR_TYPE = 6; // 0x6
field public static final int IMAGE_TYPE = 5; // 0x5
field public static final int PHONE_TYPE = 2; // 0x2
field public static final int SRC_ANCHOR_TYPE = 7; // 0x7
@@ -54213,45 +54325,45 @@
field public static final int UNKNOWN_TYPE = 0; // 0x0
}
- public static abstract deprecated interface WebView.PictureListener {
- method public abstract deprecated void onNewPicture(android.webkit.WebView, android.graphics.Picture);
+ @Deprecated public static interface WebView.PictureListener {
+ method @Deprecated public void onNewPicture(android.webkit.WebView, @Nullable android.graphics.Picture);
}
- public static abstract class WebView.VisualStateCallback {
+ public abstract static class WebView.VisualStateCallback {
ctor public WebView.VisualStateCallback();
method public abstract void onComplete(long);
}
public class WebView.WebViewTransport {
ctor public WebView.WebViewTransport();
- method public synchronized android.webkit.WebView getWebView();
- method public synchronized void setWebView(android.webkit.WebView);
+ method public android.webkit.WebView getWebView();
+ method public void setWebView(android.webkit.WebView);
}
public class WebViewClient {
ctor public WebViewClient();
- method public void doUpdateVisitedHistory(android.webkit.WebView, java.lang.String, boolean);
+ method public void doUpdateVisitedHistory(android.webkit.WebView, String, boolean);
method public void onFormResubmission(android.webkit.WebView, android.os.Message, android.os.Message);
- method public void onLoadResource(android.webkit.WebView, java.lang.String);
- method public void onPageCommitVisible(android.webkit.WebView, java.lang.String);
- method public void onPageFinished(android.webkit.WebView, java.lang.String);
- method public void onPageStarted(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+ method public void onLoadResource(android.webkit.WebView, String);
+ method public void onPageCommitVisible(android.webkit.WebView, String);
+ method public void onPageFinished(android.webkit.WebView, String);
+ method public void onPageStarted(android.webkit.WebView, String, android.graphics.Bitmap);
method public void onReceivedClientCertRequest(android.webkit.WebView, android.webkit.ClientCertRequest);
- method public deprecated void onReceivedError(android.webkit.WebView, int, java.lang.String, java.lang.String);
+ method @Deprecated public void onReceivedError(android.webkit.WebView, int, String, String);
method public void onReceivedError(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError);
- method public void onReceivedHttpAuthRequest(android.webkit.WebView, android.webkit.HttpAuthHandler, java.lang.String, java.lang.String);
+ method public void onReceivedHttpAuthRequest(android.webkit.WebView, android.webkit.HttpAuthHandler, String, String);
method public void onReceivedHttpError(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse);
- method public void onReceivedLoginRequest(android.webkit.WebView, java.lang.String, java.lang.String, java.lang.String);
+ method public void onReceivedLoginRequest(android.webkit.WebView, String, @Nullable String, String);
method public void onReceivedSslError(android.webkit.WebView, android.webkit.SslErrorHandler, android.net.http.SslError);
method public boolean onRenderProcessGone(android.webkit.WebView, android.webkit.RenderProcessGoneDetail);
method public void onSafeBrowsingHit(android.webkit.WebView, android.webkit.WebResourceRequest, int, android.webkit.SafeBrowsingResponse);
method public void onScaleChanged(android.webkit.WebView, float, float);
- method public deprecated void onTooManyRedirects(android.webkit.WebView, android.os.Message, android.os.Message);
+ method @Deprecated public void onTooManyRedirects(android.webkit.WebView, android.os.Message, android.os.Message);
method public void onUnhandledKeyEvent(android.webkit.WebView, android.view.KeyEvent);
- method public deprecated android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, java.lang.String);
- method public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, android.webkit.WebResourceRequest);
+ method @Deprecated @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, String);
+ method @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, android.webkit.WebResourceRequest);
method public boolean shouldOverrideKeyEvent(android.webkit.WebView, android.view.KeyEvent);
- method public deprecated boolean shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String);
+ method @Deprecated public boolean shouldOverrideUrlLoading(android.webkit.WebView, String);
method public boolean shouldOverrideUrlLoading(android.webkit.WebView, android.webkit.WebResourceRequest);
field public static final int ERROR_AUTHENTICATION = -4; // 0xfffffffc
field public static final int ERROR_BAD_URL = -12; // 0xfffffff4
@@ -54277,41 +54389,51 @@
}
public abstract class WebViewDatabase {
- ctor public deprecated WebViewDatabase();
- method public abstract deprecated void clearFormData();
+ ctor @Deprecated public WebViewDatabase();
+ method @Deprecated public abstract void clearFormData();
method public abstract void clearHttpAuthUsernamePassword();
- method public abstract deprecated void clearUsernamePassword();
- method public abstract java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String);
+ method @Deprecated public abstract void clearUsernamePassword();
+ method @Nullable public abstract String[] getHttpAuthUsernamePassword(String, String);
method public static android.webkit.WebViewDatabase getInstance(android.content.Context);
- method public abstract deprecated boolean hasFormData();
+ method @Deprecated public abstract boolean hasFormData();
method public abstract boolean hasHttpAuthUsernamePassword();
- method public abstract deprecated boolean hasUsernamePassword();
- method public abstract void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ method @Deprecated public abstract boolean hasUsernamePassword();
+ method public abstract void setHttpAuthUsernamePassword(String, String, String, String);
}
- public deprecated class WebViewFragment extends android.app.Fragment {
- ctor public WebViewFragment();
- method public android.webkit.WebView getWebView();
+ @Deprecated public class WebViewFragment extends android.app.Fragment {
+ ctor @Deprecated public WebViewFragment();
+ method @Deprecated public android.webkit.WebView getWebView();
+ }
+
+ public abstract class WebViewRenderer {
+ method public abstract boolean terminate();
+ }
+
+ public abstract class WebViewRendererClient {
+ ctor public WebViewRendererClient();
+ method public abstract void onRendererResponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderer);
+ method public abstract void onRendererUnresponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderer);
}
}
package android.widget {
- public abstract class AbsListView extends android.widget.AdapterView implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
+ public abstract class AbsListView extends android.widget.AdapterView<android.widget.ListAdapter> implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
ctor public AbsListView(android.content.Context);
ctor public AbsListView(android.content.Context, android.util.AttributeSet);
ctor public AbsListView(android.content.Context, android.util.AttributeSet, int);
ctor public AbsListView(android.content.Context, android.util.AttributeSet, int, int);
method public void afterTextChanged(android.text.Editable);
- method public void beforeTextChanged(java.lang.CharSequence, int, int, int);
+ method public void beforeTextChanged(CharSequence, int, int, int);
method public boolean canScrollList(int);
method public void clearChoices();
method public void clearTextFilter();
method public void deferNotifyDataSetChanged();
method public void fling(int);
method public android.widget.AbsListView.LayoutParams generateLayoutParams(android.util.AttributeSet);
- method public int getCacheColorHint();
+ method @android.view.ViewDebug.ExportedProperty(category="drawing") @ColorInt public int getCacheColorHint();
method public int getCheckedItemCount();
method public long[] getCheckedItemIds();
method public int getCheckedItemPosition();
@@ -54321,21 +54443,21 @@
method public int getListPaddingLeft();
method public int getListPaddingRight();
method public int getListPaddingTop();
- method public android.view.View getSelectedView();
+ method @android.view.ViewDebug.ExportedProperty public android.view.View getSelectedView();
method public android.graphics.drawable.Drawable getSelector();
- method public java.lang.CharSequence getTextFilter();
+ method public CharSequence getTextFilter();
method public int getTranscriptMode();
method protected void handleDataChanged();
method public boolean hasTextFilter();
method public void invalidateViews();
method public boolean isFastScrollAlwaysVisible();
- method public boolean isFastScrollEnabled();
+ method @android.view.ViewDebug.ExportedProperty public boolean isFastScrollEnabled();
method protected boolean isInFilterMode();
method public boolean isItemChecked(int);
- method public boolean isScrollingCacheEnabled();
- method public boolean isSmoothScrollbarEnabled();
- method public boolean isStackFromBottom();
- method public boolean isTextFilterEnabled();
+ method @android.view.ViewDebug.ExportedProperty public boolean isScrollingCacheEnabled();
+ method @android.view.ViewDebug.ExportedProperty public boolean isSmoothScrollbarEnabled();
+ method @android.view.ViewDebug.ExportedProperty public boolean isStackFromBottom();
+ method @android.view.ViewDebug.ExportedProperty public boolean isTextFilterEnabled();
method protected void layoutChildren();
method public void onFilterComplete(int);
method public void onGlobalLayout();
@@ -54344,20 +54466,20 @@
method public void onRemoteAdapterDisconnected();
method public void onRestoreInstanceState(android.os.Parcelable);
method public android.os.Parcelable onSaveInstanceState();
- method public void onTextChanged(java.lang.CharSequence, int, int, int);
+ method public void onTextChanged(CharSequence, int, int, int);
method public void onTouchModeChanged(boolean);
method public int pointToPosition(int, int);
method public long pointToRowId(int, int);
method public void reclaimViews(java.util.List<android.view.View>);
method public void scrollListBy(int);
method public void setAdapter(android.widget.ListAdapter);
- method public void setCacheColorHint(int);
+ method public void setCacheColorHint(@ColorInt int);
method public void setChoiceMode(int);
method public void setDrawSelectorOnTop(boolean);
method public void setFastScrollAlwaysVisible(boolean);
method public void setFastScrollEnabled(boolean);
method public void setFastScrollStyle(int);
- method public void setFilterText(java.lang.String);
+ method public void setFilterText(String);
method public void setFriction(float);
method public void setItemChecked(int, boolean);
method public void setMultiChoiceModeListener(android.widget.AbsListView.MultiChoiceModeListener);
@@ -54367,7 +54489,7 @@
method public void setScrollIndicators(android.view.View, android.view.View);
method public void setScrollingCacheEnabled(boolean);
method public void setSelectionFromTop(int, int);
- method public void setSelector(int);
+ method public void setSelector(@DrawableRes int);
method public void setSelector(android.graphics.drawable.Drawable);
method public void setSmoothScrollbarEnabled(boolean);
method public void setStackFromBottom(boolean);
@@ -54379,7 +54501,7 @@
method public void smoothScrollToPosition(int, int);
method public void smoothScrollToPositionFromTop(int, int, int);
method public void smoothScrollToPositionFromTop(int, int);
- method public boolean verifyDrawable(android.graphics.drawable.Drawable);
+ method public boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable);
field public static final int CHOICE_MODE_MULTIPLE = 2; // 0x2
field public static final int CHOICE_MODE_MULTIPLE_MODAL = 3; // 0x3
field public static final int CHOICE_MODE_NONE = 0; // 0x0
@@ -54396,24 +54518,24 @@
ctor public AbsListView.LayoutParams(android.view.ViewGroup.LayoutParams);
}
- public static abstract interface AbsListView.MultiChoiceModeListener implements android.view.ActionMode.Callback {
- method public abstract void onItemCheckedStateChanged(android.view.ActionMode, int, long, boolean);
+ public static interface AbsListView.MultiChoiceModeListener extends android.view.ActionMode.Callback {
+ method public void onItemCheckedStateChanged(android.view.ActionMode, int, long, boolean);
}
- public static abstract interface AbsListView.OnScrollListener {
- method public abstract void onScroll(android.widget.AbsListView, int, int, int);
- method public abstract void onScrollStateChanged(android.widget.AbsListView, int);
+ public static interface AbsListView.OnScrollListener {
+ method public void onScroll(android.widget.AbsListView, int, int, int);
+ method public void onScrollStateChanged(android.widget.AbsListView, int);
field public static final int SCROLL_STATE_FLING = 2; // 0x2
field public static final int SCROLL_STATE_IDLE = 0; // 0x0
field public static final int SCROLL_STATE_TOUCH_SCROLL = 1; // 0x1
}
- public static abstract interface AbsListView.RecyclerListener {
- method public abstract void onMovedToScrapHeap(android.view.View);
+ public static interface AbsListView.RecyclerListener {
+ method public void onMovedToScrapHeap(android.view.View);
}
- public static abstract interface AbsListView.SelectionBoundsAdjuster {
- method public abstract void adjustListItemSelectionBounds(android.graphics.Rect);
+ public static interface AbsListView.SelectionBoundsAdjuster {
+ method public void adjustListItemSelectionBounds(android.graphics.Rect);
}
public abstract class AbsSeekBar extends android.widget.ProgressBar {
@@ -54425,23 +54547,23 @@
method public boolean getSplitTrack();
method public android.graphics.drawable.Drawable getThumb();
method public int getThumbOffset();
- method public android.content.res.ColorStateList getThumbTintList();
- method public android.graphics.PorterDuff.Mode getThumbTintMode();
+ method @Nullable public android.content.res.ColorStateList getThumbTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getThumbTintMode();
method public android.graphics.drawable.Drawable getTickMark();
- method public android.content.res.ColorStateList getTickMarkTintList();
- method public android.graphics.PorterDuff.Mode getTickMarkTintMode();
+ method @Nullable public android.content.res.ColorStateList getTickMarkTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getTickMarkTintMode();
method public void setKeyProgressIncrement(int);
method public void setSplitTrack(boolean);
method public void setThumb(android.graphics.drawable.Drawable);
method public void setThumbOffset(int);
- method public void setThumbTintList(android.content.res.ColorStateList);
- method public void setThumbTintMode(android.graphics.PorterDuff.Mode);
+ method public void setThumbTintList(@Nullable android.content.res.ColorStateList);
+ method public void setThumbTintMode(@Nullable android.graphics.PorterDuff.Mode);
method public void setTickMark(android.graphics.drawable.Drawable);
- method public void setTickMarkTintList(android.content.res.ColorStateList);
- method public void setTickMarkTintMode(android.graphics.PorterDuff.Mode);
+ method public void setTickMarkTintList(@Nullable android.content.res.ColorStateList);
+ method public void setTickMarkTintMode(@Nullable android.graphics.PorterDuff.Mode);
}
- public abstract class AbsSpinner extends android.widget.AdapterView {
+ public abstract class AbsSpinner extends android.widget.AdapterView<android.widget.SpinnerAdapter> {
ctor public AbsSpinner(android.content.Context);
ctor public AbsSpinner(android.content.Context, android.util.AttributeSet);
ctor public AbsSpinner(android.content.Context, android.util.AttributeSet, int);
@@ -54456,20 +54578,20 @@
method public void setSelection(int);
}
- public deprecated class AbsoluteLayout extends android.view.ViewGroup {
- ctor public AbsoluteLayout(android.content.Context);
- ctor public AbsoluteLayout(android.content.Context, android.util.AttributeSet);
- ctor public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int);
- ctor public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int, int);
+ @Deprecated @android.widget.RemoteViews.RemoteView public class AbsoluteLayout extends android.view.ViewGroup {
+ ctor @Deprecated public AbsoluteLayout(android.content.Context);
+ ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int, int);
}
- public static class AbsoluteLayout.LayoutParams extends android.view.ViewGroup.LayoutParams {
- ctor public AbsoluteLayout.LayoutParams(int, int, int, int);
- ctor public AbsoluteLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
- ctor public AbsoluteLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
- method public java.lang.String debug(java.lang.String);
- field public int x;
- field public int y;
+ @Deprecated public static class AbsoluteLayout.LayoutParams extends android.view.ViewGroup.LayoutParams {
+ ctor @Deprecated public AbsoluteLayout.LayoutParams(int, int, int, int);
+ ctor @Deprecated public AbsoluteLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public AbsoluteLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
+ method @Deprecated public String debug(String);
+ field @Deprecated public int x;
+ field @Deprecated public int y;
}
public class ActionMenuView extends android.widget.LinearLayout {
@@ -54480,15 +54602,15 @@
method public android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.util.AttributeSet);
method protected android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
method public android.view.Menu getMenu();
- method public android.graphics.drawable.Drawable getOverflowIcon();
+ method @Nullable public android.graphics.drawable.Drawable getOverflowIcon();
method public int getPopupTheme();
method public boolean hideOverflowMenu();
method public boolean isOverflowMenuShowing();
method public void onConfigurationChanged(android.content.res.Configuration);
method public void onDetachedFromWindow();
method public void setOnMenuItemClickListener(android.widget.ActionMenuView.OnMenuItemClickListener);
- method public void setOverflowIcon(android.graphics.drawable.Drawable);
- method public void setPopupTheme(int);
+ method public void setOverflowIcon(@Nullable android.graphics.drawable.Drawable);
+ method public void setPopupTheme(@StyleRes int);
method public boolean showOverflowMenu();
}
@@ -54499,22 +54621,22 @@
ctor public ActionMenuView.LayoutParams(int, int);
}
- public static abstract interface ActionMenuView.OnMenuItemClickListener {
- method public abstract boolean onMenuItemClick(android.view.MenuItem);
+ public static interface ActionMenuView.OnMenuItemClickListener {
+ method public boolean onMenuItemClick(android.view.MenuItem);
}
- public abstract interface Adapter {
- method public default java.lang.CharSequence[] getAutofillOptions();
- method public abstract int getCount();
- method public abstract java.lang.Object getItem(int);
- method public abstract long getItemId(int);
- method public abstract int getItemViewType(int);
- method public abstract android.view.View getView(int, android.view.View, android.view.ViewGroup);
- method public abstract int getViewTypeCount();
- method public abstract boolean hasStableIds();
- method public abstract boolean isEmpty();
- method public abstract void registerDataSetObserver(android.database.DataSetObserver);
- method public abstract void unregisterDataSetObserver(android.database.DataSetObserver);
+ public interface Adapter {
+ method @Nullable public default CharSequence[] getAutofillOptions();
+ method public int getCount();
+ method public Object getItem(int);
+ method public long getItemId(int);
+ method public int getItemViewType(int);
+ method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
+ method public int getViewTypeCount();
+ method public boolean hasStableIds();
+ method public boolean isEmpty();
+ method public void registerDataSetObserver(android.database.DataSetObserver);
+ method public void unregisterDataSetObserver(android.database.DataSetObserver);
field public static final int IGNORE_ITEM_VIEW_TYPE = -1; // 0xffffffff
field public static final int NO_SELECTION = -2147483648; // 0x80000000
}
@@ -54525,26 +54647,26 @@
ctor public AdapterView(android.content.Context, android.util.AttributeSet, int);
ctor public AdapterView(android.content.Context, android.util.AttributeSet, int, int);
method public abstract T getAdapter();
- method public int getCount();
+ method @android.view.ViewDebug.CapturedViewProperty public int getCount();
method public android.view.View getEmptyView();
method public int getFirstVisiblePosition();
- method public java.lang.Object getItemAtPosition(int);
+ method public Object getItemAtPosition(int);
method public long getItemIdAtPosition(int);
method public int getLastVisiblePosition();
- method public final android.widget.AdapterView.OnItemClickListener getOnItemClickListener();
+ method @Nullable public final android.widget.AdapterView.OnItemClickListener getOnItemClickListener();
method public final android.widget.AdapterView.OnItemLongClickListener getOnItemLongClickListener();
- method public final android.widget.AdapterView.OnItemSelectedListener getOnItemSelectedListener();
+ method @Nullable public final android.widget.AdapterView.OnItemSelectedListener getOnItemSelectedListener();
method public int getPositionForView(android.view.View);
- method public java.lang.Object getSelectedItem();
- method public long getSelectedItemId();
- method public int getSelectedItemPosition();
+ method public Object getSelectedItem();
+ method @android.view.ViewDebug.CapturedViewProperty public long getSelectedItemId();
+ method @android.view.ViewDebug.CapturedViewProperty public int getSelectedItemPosition();
method public abstract android.view.View getSelectedView();
method public boolean performItemClick(android.view.View, int, long);
method public abstract void setAdapter(T);
method public void setEmptyView(android.view.View);
- method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener);
+ method public void setOnItemClickListener(@Nullable android.widget.AdapterView.OnItemClickListener);
method public void setOnItemLongClickListener(android.widget.AdapterView.OnItemLongClickListener);
- method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
+ method public void setOnItemSelectedListener(@Nullable android.widget.AdapterView.OnItemSelectedListener);
method public abstract void setSelection(int);
field public static final int INVALID_POSITION = -1; // 0xffffffff
field public static final long INVALID_ROW_ID = -9223372036854775808L; // 0x8000000000000000L
@@ -54559,20 +54681,20 @@
field public android.view.View targetView;
}
- public static abstract interface AdapterView.OnItemClickListener {
- method public abstract void onItemClick(android.widget.AdapterView<?>, android.view.View, int, long);
+ public static interface AdapterView.OnItemClickListener {
+ method public void onItemClick(android.widget.AdapterView<?>, android.view.View, int, long);
}
- public static abstract interface AdapterView.OnItemLongClickListener {
- method public abstract boolean onItemLongClick(android.widget.AdapterView<?>, android.view.View, int, long);
+ public static interface AdapterView.OnItemLongClickListener {
+ method public boolean onItemLongClick(android.widget.AdapterView<?>, android.view.View, int, long);
}
- public static abstract interface AdapterView.OnItemSelectedListener {
- method public abstract void onItemSelected(android.widget.AdapterView<?>, android.view.View, int, long);
- method public abstract void onNothingSelected(android.widget.AdapterView<?>);
+ public static interface AdapterView.OnItemSelectedListener {
+ method public void onItemSelected(android.widget.AdapterView<?>, android.view.View, int, long);
+ method public void onNothingSelected(android.widget.AdapterView<?>);
}
- public abstract class AdapterViewAnimator extends android.widget.AdapterView implements android.widget.Advanceable {
+ public abstract class AdapterViewAnimator extends android.widget.AdapterView<android.widget.Adapter> implements android.widget.Advanceable {
ctor public AdapterViewAnimator(android.content.Context);
ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet);
ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet, int);
@@ -54603,7 +54725,7 @@
method public void showPrevious();
}
- public class AdapterViewFlipper extends android.widget.AdapterViewAnimator {
+ @android.widget.RemoteViews.RemoteView public class AdapterViewFlipper extends android.widget.AdapterViewAnimator {
ctor public AdapterViewFlipper(android.content.Context);
ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet);
ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet, int);
@@ -54617,56 +54739,56 @@
method public void stopFlipping();
}
- public abstract interface Advanceable {
- method public abstract void advance();
- method public abstract void fyiWillBeAdvancedByHostKThx();
+ public interface Advanceable {
+ method public void advance();
+ method public void fyiWillBeAdvancedByHostKThx();
}
public class AlphabetIndexer extends android.database.DataSetObserver implements android.widget.SectionIndexer {
- ctor public AlphabetIndexer(android.database.Cursor, int, java.lang.CharSequence);
- method protected int compare(java.lang.String, java.lang.String);
+ ctor public AlphabetIndexer(android.database.Cursor, int, CharSequence);
+ method protected int compare(String, String);
method public int getPositionForSection(int);
method public int getSectionForPosition(int);
- method public java.lang.Object[] getSections();
+ method public Object[] getSections();
method public void setCursor(android.database.Cursor);
- field protected java.lang.CharSequence mAlphabet;
+ field protected CharSequence mAlphabet;
field protected int mColumnIndex;
field protected android.database.Cursor mDataCursor;
}
- public deprecated class AnalogClock extends android.view.View {
- ctor public AnalogClock(android.content.Context);
- ctor public AnalogClock(android.content.Context, android.util.AttributeSet);
- ctor public AnalogClock(android.content.Context, android.util.AttributeSet, int);
- ctor public AnalogClock(android.content.Context, android.util.AttributeSet, int, int);
+ @Deprecated @android.widget.RemoteViews.RemoteView public class AnalogClock extends android.view.View {
+ ctor @Deprecated public AnalogClock(android.content.Context);
+ ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet, int, int);
}
public class ArrayAdapter<T> extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
- ctor public ArrayAdapter(android.content.Context, int);
- ctor public ArrayAdapter(android.content.Context, int, int);
- ctor public ArrayAdapter(android.content.Context, int, T[]);
- ctor public ArrayAdapter(android.content.Context, int, int, T[]);
- ctor public ArrayAdapter(android.content.Context, int, java.util.List<T>);
- ctor public ArrayAdapter(android.content.Context, int, int, java.util.List<T>);
- method public void add(T);
- method public void addAll(java.util.Collection<? extends T>);
+ ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int);
+ ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int);
+ ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @NonNull T[]);
+ ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int, @NonNull T[]);
+ ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @NonNull java.util.List<T>);
+ ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int, @NonNull java.util.List<T>);
+ method public void add(@Nullable T);
+ method public void addAll(@NonNull java.util.Collection<? extends T>);
method public void addAll(T...);
method public void clear();
- method public static android.widget.ArrayAdapter<java.lang.CharSequence> createFromResource(android.content.Context, int, int);
- method public android.content.Context getContext();
+ method @NonNull public static android.widget.ArrayAdapter<java.lang.CharSequence> createFromResource(@NonNull android.content.Context, @ArrayRes int, @LayoutRes int);
+ method @NonNull public android.content.Context getContext();
method public int getCount();
- method public android.content.res.Resources.Theme getDropDownViewTheme();
- method public android.widget.Filter getFilter();
- method public T getItem(int);
+ method @Nullable public android.content.res.Resources.Theme getDropDownViewTheme();
+ method @NonNull public android.widget.Filter getFilter();
+ method @Nullable public T getItem(int);
method public long getItemId(int);
- method public int getPosition(T);
- method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
- method public void insert(T, int);
- method public void remove(T);
- method public void setDropDownViewResource(int);
- method public void setDropDownViewTheme(android.content.res.Resources.Theme);
+ method public int getPosition(@Nullable T);
+ method @NonNull public android.view.View getView(int, @Nullable android.view.View, @NonNull android.view.ViewGroup);
+ method public void insert(@Nullable T, int);
+ method public void remove(@Nullable T);
+ method public void setDropDownViewResource(@LayoutRes int);
+ method public void setDropDownViewTheme(@Nullable android.content.res.Resources.Theme);
method public void setNotifyOnChange(boolean);
- method public void sort(java.util.Comparator<? super T>);
+ method public void sort(@NonNull java.util.Comparator<? super T>);
}
public class AutoCompleteTextView extends android.widget.EditText implements android.widget.Filter.FilterListener {
@@ -54676,11 +54798,11 @@
ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int);
ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int, android.content.res.Resources.Theme);
method public void clearListSelection();
- method protected java.lang.CharSequence convertSelectionToString(java.lang.Object);
+ method protected CharSequence convertSelectionToString(Object);
method public void dismissDropDown();
method public boolean enoughToFilter();
method public android.widget.ListAdapter getAdapter();
- method public java.lang.CharSequence getCompletionHint();
+ method public CharSequence getCompletionHint();
method public int getDropDownAnchor();
method public android.graphics.drawable.Drawable getDropDownBackground();
method public int getDropDownHeight();
@@ -54688,8 +54810,8 @@
method public int getDropDownVerticalOffset();
method public int getDropDownWidth();
method protected android.widget.Filter getFilter();
- method public deprecated android.widget.AdapterView.OnItemClickListener getItemClickListener();
- method public deprecated android.widget.AdapterView.OnItemSelectedListener getItemSelectedListener();
+ method @Deprecated public android.widget.AdapterView.OnItemClickListener getItemClickListener();
+ method @Deprecated public android.widget.AdapterView.OnItemSelectedListener getItemSelectedListener();
method public int getListSelection();
method public android.widget.AdapterView.OnItemClickListener getOnItemClickListener();
method public android.widget.AdapterView.OnItemSelectedListener getOnItemSelectedListener();
@@ -54699,14 +54821,14 @@
method public boolean isPopupShowing();
method public void onFilterComplete(int);
method public void performCompletion();
- method protected void performFiltering(java.lang.CharSequence, int);
+ method protected void performFiltering(CharSequence, int);
method public void performValidation();
- method protected void replaceText(java.lang.CharSequence);
+ method protected void replaceText(CharSequence);
method public <T extends android.widget.ListAdapter & android.widget.Filterable> void setAdapter(T);
- method public void setCompletionHint(java.lang.CharSequence);
+ method public void setCompletionHint(CharSequence);
method public void setDropDownAnchor(int);
method public void setDropDownBackgroundDrawable(android.graphics.drawable.Drawable);
- method public void setDropDownBackgroundResource(int);
+ method public void setDropDownBackgroundResource(@DrawableRes int);
method public void setDropDownHeight(int);
method public void setDropDownHorizontalOffset(int);
method public void setDropDownVerticalOffset(int);
@@ -54715,19 +54837,19 @@
method public void setOnDismissListener(android.widget.AutoCompleteTextView.OnDismissListener);
method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener);
method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
- method public void setText(java.lang.CharSequence, boolean);
+ method public void setText(CharSequence, boolean);
method public void setThreshold(int);
method public void setValidator(android.widget.AutoCompleteTextView.Validator);
method public void showDropDown();
}
- public static abstract interface AutoCompleteTextView.OnDismissListener {
- method public abstract void onDismiss();
+ public static interface AutoCompleteTextView.OnDismissListener {
+ method public void onDismiss();
}
- public static abstract interface AutoCompleteTextView.Validator {
- method public abstract java.lang.CharSequence fixText(java.lang.CharSequence);
- method public abstract boolean isValid(java.lang.CharSequence);
+ public static interface AutoCompleteTextView.Validator {
+ method public CharSequence fixText(CharSequence);
+ method public boolean isValid(CharSequence);
}
public abstract class BaseAdapter implements android.widget.ListAdapter android.widget.SpinnerAdapter {
@@ -54742,7 +54864,7 @@
method public void notifyDataSetChanged();
method public void notifyDataSetInvalidated();
method public void registerDataSetObserver(android.database.DataSetObserver);
- method public void setAutofillOptions(java.lang.CharSequence...);
+ method public void setAutofillOptions(@Nullable java.lang.CharSequence...);
method public void unregisterDataSetObserver(android.database.DataSetObserver);
}
@@ -54764,7 +54886,7 @@
method public void unregisterDataSetObserver(android.database.DataSetObserver);
}
- public class Button extends android.widget.TextView {
+ @android.widget.RemoteViews.RemoteView public class Button extends android.widget.TextView {
ctor public Button(android.content.Context);
ctor public Button(android.content.Context, android.util.AttributeSet);
ctor public Button(android.content.Context, android.util.AttributeSet, int);
@@ -54772,45 +54894,45 @@
}
public class CalendarView extends android.widget.FrameLayout {
- ctor public CalendarView(android.content.Context);
- ctor public CalendarView(android.content.Context, android.util.AttributeSet);
- ctor public CalendarView(android.content.Context, android.util.AttributeSet, int);
- ctor public CalendarView(android.content.Context, android.util.AttributeSet, int, int);
+ ctor public CalendarView(@NonNull android.content.Context);
+ ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+ ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
+ ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
method public long getDate();
- method public int getDateTextAppearance();
+ method @StyleRes public int getDateTextAppearance();
method public int getFirstDayOfWeek();
- method public deprecated int getFocusedMonthDateColor();
+ method @Deprecated @ColorInt public int getFocusedMonthDateColor();
method public long getMaxDate();
method public long getMinDate();
- method public deprecated android.graphics.drawable.Drawable getSelectedDateVerticalBar();
- method public deprecated int getSelectedWeekBackgroundColor();
- method public deprecated boolean getShowWeekNumber();
- method public deprecated int getShownWeekCount();
- method public deprecated int getUnfocusedMonthDateColor();
- method public int getWeekDayTextAppearance();
- method public deprecated int getWeekNumberColor();
- method public deprecated int getWeekSeparatorLineColor();
+ method @Deprecated public android.graphics.drawable.Drawable getSelectedDateVerticalBar();
+ method @Deprecated @ColorInt public int getSelectedWeekBackgroundColor();
+ method @Deprecated public boolean getShowWeekNumber();
+ method @Deprecated public int getShownWeekCount();
+ method @Deprecated @ColorInt public int getUnfocusedMonthDateColor();
+ method @StyleRes public int getWeekDayTextAppearance();
+ method @Deprecated @ColorInt public int getWeekNumberColor();
+ method @Deprecated @ColorInt public int getWeekSeparatorLineColor();
method public void setDate(long);
method public void setDate(long, boolean, boolean);
- method public void setDateTextAppearance(int);
+ method public void setDateTextAppearance(@StyleRes int);
method public void setFirstDayOfWeek(int);
- method public deprecated void setFocusedMonthDateColor(int);
+ method @Deprecated public void setFocusedMonthDateColor(@ColorInt int);
method public void setMaxDate(long);
method public void setMinDate(long);
method public void setOnDateChangeListener(android.widget.CalendarView.OnDateChangeListener);
- method public deprecated void setSelectedDateVerticalBar(int);
- method public deprecated void setSelectedDateVerticalBar(android.graphics.drawable.Drawable);
- method public deprecated void setSelectedWeekBackgroundColor(int);
- method public deprecated void setShowWeekNumber(boolean);
- method public deprecated void setShownWeekCount(int);
- method public deprecated void setUnfocusedMonthDateColor(int);
- method public void setWeekDayTextAppearance(int);
- method public deprecated void setWeekNumberColor(int);
- method public deprecated void setWeekSeparatorLineColor(int);
+ method @Deprecated public void setSelectedDateVerticalBar(@DrawableRes int);
+ method @Deprecated public void setSelectedDateVerticalBar(android.graphics.drawable.Drawable);
+ method @Deprecated public void setSelectedWeekBackgroundColor(@ColorInt int);
+ method @Deprecated public void setShowWeekNumber(boolean);
+ method @Deprecated public void setShownWeekCount(int);
+ method @Deprecated public void setUnfocusedMonthDateColor(@ColorInt int);
+ method public void setWeekDayTextAppearance(@StyleRes int);
+ method @Deprecated public void setWeekNumberColor(@ColorInt int);
+ method @Deprecated public void setWeekSeparatorLineColor(@ColorInt int);
}
- public static abstract interface CalendarView.OnDateChangeListener {
- method public abstract void onSelectedDayChange(android.widget.CalendarView, int, int, int);
+ public static interface CalendarView.OnDateChangeListener {
+ method public void onSelectedDayChange(@NonNull android.widget.CalendarView, int, int, int);
}
public class CheckBox extends android.widget.CompoundButton {
@@ -54820,10 +54942,10 @@
ctor public CheckBox(android.content.Context, android.util.AttributeSet, int, int);
}
- public abstract interface Checkable {
- method public abstract boolean isChecked();
- method public abstract void setChecked(boolean);
- method public abstract void toggle();
+ public interface Checkable {
+ method public boolean isChecked();
+ method public void setChecked(boolean);
+ method public void toggle();
}
public class CheckedTextView extends android.widget.TextView implements android.widget.Checkable {
@@ -54832,37 +54954,37 @@
ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int);
ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int, int);
method public android.graphics.drawable.Drawable getCheckMarkDrawable();
- method public android.content.res.ColorStateList getCheckMarkTintList();
- method public android.graphics.PorterDuff.Mode getCheckMarkTintMode();
- method public boolean isChecked();
- method public void setCheckMarkDrawable(int);
- method public void setCheckMarkDrawable(android.graphics.drawable.Drawable);
- method public void setCheckMarkTintList(android.content.res.ColorStateList);
- method public void setCheckMarkTintMode(android.graphics.PorterDuff.Mode);
+ method @Nullable public android.content.res.ColorStateList getCheckMarkTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getCheckMarkTintMode();
+ method @android.view.ViewDebug.ExportedProperty public boolean isChecked();
+ method public void setCheckMarkDrawable(@DrawableRes int);
+ method public void setCheckMarkDrawable(@Nullable android.graphics.drawable.Drawable);
+ method public void setCheckMarkTintList(@Nullable android.content.res.ColorStateList);
+ method public void setCheckMarkTintMode(@Nullable android.graphics.PorterDuff.Mode);
method public void setChecked(boolean);
method public void toggle();
}
- public class Chronometer extends android.widget.TextView {
+ @android.widget.RemoteViews.RemoteView public class Chronometer extends android.widget.TextView {
ctor public Chronometer(android.content.Context);
ctor public Chronometer(android.content.Context, android.util.AttributeSet);
ctor public Chronometer(android.content.Context, android.util.AttributeSet, int);
ctor public Chronometer(android.content.Context, android.util.AttributeSet, int, int);
method public long getBase();
- method public java.lang.String getFormat();
+ method public String getFormat();
method public android.widget.Chronometer.OnChronometerTickListener getOnChronometerTickListener();
method public boolean isCountDown();
method public boolean isTheFinalCountDown();
method public void setBase(long);
method public void setCountDown(boolean);
- method public void setFormat(java.lang.String);
+ method public void setFormat(String);
method public void setOnChronometerTickListener(android.widget.Chronometer.OnChronometerTickListener);
method public void start();
method public void stop();
}
- public static abstract interface Chronometer.OnChronometerTickListener {
- method public abstract void onChronometerTick(android.widget.Chronometer);
+ public static interface Chronometer.OnChronometerTickListener {
+ method public void onChronometerTick(android.widget.Chronometer);
}
public abstract class CompoundButton extends android.widget.Button implements android.widget.Checkable {
@@ -54870,47 +54992,47 @@
ctor public CompoundButton(android.content.Context, android.util.AttributeSet);
ctor public CompoundButton(android.content.Context, android.util.AttributeSet, int);
ctor public CompoundButton(android.content.Context, android.util.AttributeSet, int, int);
- method public android.graphics.drawable.Drawable getButtonDrawable();
- method public android.content.res.ColorStateList getButtonTintList();
- method public android.graphics.PorterDuff.Mode getButtonTintMode();
- method public boolean isChecked();
- method public void setButtonDrawable(int);
- method public void setButtonDrawable(android.graphics.drawable.Drawable);
- method public void setButtonTintList(android.content.res.ColorStateList);
- method public void setButtonTintMode(android.graphics.PorterDuff.Mode);
+ method @Nullable public android.graphics.drawable.Drawable getButtonDrawable();
+ method @Nullable public android.content.res.ColorStateList getButtonTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getButtonTintMode();
+ method @android.view.ViewDebug.ExportedProperty public boolean isChecked();
+ method public void setButtonDrawable(@DrawableRes int);
+ method public void setButtonDrawable(@Nullable android.graphics.drawable.Drawable);
+ method public void setButtonTintList(@Nullable android.content.res.ColorStateList);
+ method public void setButtonTintMode(@Nullable android.graphics.PorterDuff.Mode);
method public void setChecked(boolean);
- method public void setOnCheckedChangeListener(android.widget.CompoundButton.OnCheckedChangeListener);
+ method public void setOnCheckedChangeListener(@Nullable android.widget.CompoundButton.OnCheckedChangeListener);
method public void toggle();
}
- public static abstract interface CompoundButton.OnCheckedChangeListener {
- method public abstract void onCheckedChanged(android.widget.CompoundButton, boolean);
+ public static interface CompoundButton.OnCheckedChangeListener {
+ method public void onCheckedChanged(android.widget.CompoundButton, boolean);
}
public abstract class CursorAdapter extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
- ctor public deprecated CursorAdapter(android.content.Context, android.database.Cursor);
+ ctor @Deprecated public CursorAdapter(android.content.Context, android.database.Cursor);
ctor public CursorAdapter(android.content.Context, android.database.Cursor, boolean);
ctor public CursorAdapter(android.content.Context, android.database.Cursor, int);
method public abstract void bindView(android.view.View, android.content.Context, android.database.Cursor);
method public void changeCursor(android.database.Cursor);
- method public java.lang.CharSequence convertToString(android.database.Cursor);
+ method public CharSequence convertToString(android.database.Cursor);
method public int getCount();
method public android.database.Cursor getCursor();
method public android.content.res.Resources.Theme getDropDownViewTheme();
method public android.widget.Filter getFilter();
method public android.widget.FilterQueryProvider getFilterQueryProvider();
- method public java.lang.Object getItem(int);
+ method public Object getItem(int);
method public long getItemId(int);
method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
- method protected deprecated void init(android.content.Context, android.database.Cursor, boolean);
+ method @Deprecated protected void init(android.content.Context, android.database.Cursor, boolean);
method public android.view.View newDropDownView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
method public abstract android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
method protected void onContentChanged();
- method public android.database.Cursor runQueryOnBackgroundThread(java.lang.CharSequence);
+ method @WorkerThread public android.database.Cursor runQueryOnBackgroundThread(CharSequence);
method public void setDropDownViewTheme(android.content.res.Resources.Theme);
method public void setFilterQueryProvider(android.widget.FilterQueryProvider);
method public android.database.Cursor swapCursor(android.database.Cursor);
- field public static final deprecated int FLAG_AUTO_REQUERY = 1; // 0x1
+ field @Deprecated public static final int FLAG_AUTO_REQUERY = 1; // 0x1
field public static final int FLAG_REGISTER_CONTENT_OBSERVER = 2; // 0x2
}
@@ -54920,7 +55042,7 @@
method protected abstract void bindChildView(android.view.View, android.content.Context, android.database.Cursor, boolean);
method protected abstract void bindGroupView(android.view.View, android.content.Context, android.database.Cursor, boolean);
method public void changeCursor(android.database.Cursor);
- method public java.lang.String convertToString(android.database.Cursor);
+ method public String convertToString(android.database.Cursor);
method public android.database.Cursor getChild(int, int);
method public long getChildId(int, int);
method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
@@ -54938,7 +55060,7 @@
method protected abstract android.view.View newChildView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
method protected abstract android.view.View newGroupView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
method public void notifyDataSetChanged(boolean);
- method public android.database.Cursor runQueryOnBackgroundThread(java.lang.CharSequence);
+ method public android.database.Cursor runQueryOnBackgroundThread(CharSequence);
method public void setChildrenCursor(int, android.database.Cursor);
method public void setFilterQueryProvider(android.widget.FilterQueryProvider);
method public void setGroupCursor(android.database.Cursor);
@@ -54949,69 +55071,69 @@
ctor public DatePicker(android.content.Context, android.util.AttributeSet);
ctor public DatePicker(android.content.Context, android.util.AttributeSet, int);
ctor public DatePicker(android.content.Context, android.util.AttributeSet, int, int);
- method public deprecated android.widget.CalendarView getCalendarView();
- method public deprecated boolean getCalendarViewShown();
+ method @Deprecated public android.widget.CalendarView getCalendarView();
+ method @Deprecated public boolean getCalendarViewShown();
method public int getDayOfMonth();
method public int getFirstDayOfWeek();
method public long getMaxDate();
method public long getMinDate();
method public int getMonth();
- method public deprecated boolean getSpinnersShown();
+ method @Deprecated public boolean getSpinnersShown();
method public int getYear();
method public void init(int, int, int, android.widget.DatePicker.OnDateChangedListener);
- method public deprecated void setCalendarViewShown(boolean);
+ method @Deprecated public void setCalendarViewShown(boolean);
method public void setFirstDayOfWeek(int);
method public void setMaxDate(long);
method public void setMinDate(long);
method public void setOnDateChangedListener(android.widget.DatePicker.OnDateChangedListener);
- method public deprecated void setSpinnersShown(boolean);
+ method @Deprecated public void setSpinnersShown(boolean);
method public void updateDate(int, int, int);
}
- public static abstract interface DatePicker.OnDateChangedListener {
- method public abstract void onDateChanged(android.widget.DatePicker, int, int, int);
+ public static interface DatePicker.OnDateChangedListener {
+ method public void onDateChanged(android.widget.DatePicker, int, int, int);
}
- public deprecated class DialerFilter extends android.widget.RelativeLayout {
- ctor public DialerFilter(android.content.Context);
- ctor public DialerFilter(android.content.Context, android.util.AttributeSet);
- method public void append(java.lang.String);
- method public void clearText();
- method public java.lang.CharSequence getDigits();
- method public java.lang.CharSequence getFilterText();
- method public java.lang.CharSequence getLetters();
- method public int getMode();
- method public boolean isQwertyKeyboard();
- method protected void onModeChange(int, int);
- method public void removeFilterWatcher(android.text.TextWatcher);
- method public void setDigitsWatcher(android.text.TextWatcher);
- method public void setFilterWatcher(android.text.TextWatcher);
- method public void setLettersWatcher(android.text.TextWatcher);
- method public void setMode(int);
- field public static final int DIGITS_AND_LETTERS = 1; // 0x1
- field public static final int DIGITS_AND_LETTERS_NO_DIGITS = 2; // 0x2
- field public static final int DIGITS_AND_LETTERS_NO_LETTERS = 3; // 0x3
- field public static final int DIGITS_ONLY = 4; // 0x4
- field public static final int LETTERS_ONLY = 5; // 0x5
+ @Deprecated public class DialerFilter extends android.widget.RelativeLayout {
+ ctor @Deprecated public DialerFilter(android.content.Context);
+ ctor @Deprecated public DialerFilter(android.content.Context, android.util.AttributeSet);
+ method @Deprecated public void append(String);
+ method @Deprecated public void clearText();
+ method @Deprecated public CharSequence getDigits();
+ method @Deprecated public CharSequence getFilterText();
+ method @Deprecated public CharSequence getLetters();
+ method @Deprecated public int getMode();
+ method @Deprecated public boolean isQwertyKeyboard();
+ method @Deprecated protected void onModeChange(int, int);
+ method @Deprecated public void removeFilterWatcher(android.text.TextWatcher);
+ method @Deprecated public void setDigitsWatcher(android.text.TextWatcher);
+ method @Deprecated public void setFilterWatcher(android.text.TextWatcher);
+ method @Deprecated public void setLettersWatcher(android.text.TextWatcher);
+ method @Deprecated public void setMode(int);
+ field @Deprecated public static final int DIGITS_AND_LETTERS = 1; // 0x1
+ field @Deprecated public static final int DIGITS_AND_LETTERS_NO_DIGITS = 2; // 0x2
+ field @Deprecated public static final int DIGITS_AND_LETTERS_NO_LETTERS = 3; // 0x3
+ field @Deprecated public static final int DIGITS_ONLY = 4; // 0x4
+ field @Deprecated public static final int LETTERS_ONLY = 5; // 0x5
}
- public deprecated class DigitalClock extends android.widget.TextView {
- ctor public DigitalClock(android.content.Context);
- ctor public DigitalClock(android.content.Context, android.util.AttributeSet);
+ @Deprecated public class DigitalClock extends android.widget.TextView {
+ ctor @Deprecated public DigitalClock(android.content.Context);
+ ctor @Deprecated public DigitalClock(android.content.Context, android.util.AttributeSet);
}
public class EdgeEffect {
ctor public EdgeEffect(android.content.Context);
method public boolean draw(android.graphics.Canvas);
method public void finish();
- method public int getColor();
+ method @ColorInt public int getColor();
method public int getMaxHeight();
method public boolean isFinished();
method public void onAbsorb(int);
method public void onPull(float);
method public void onPull(float, float);
method public void onRelease();
- method public void setColor(int);
+ method public void setColor(@ColorInt int);
method public void setSize(int, int);
}
@@ -55027,25 +55149,25 @@
method public void setSelection(int);
}
- public abstract interface ExpandableListAdapter {
- method public abstract boolean areAllItemsEnabled();
- method public abstract java.lang.Object getChild(int, int);
- method public abstract long getChildId(int, int);
- method public abstract android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
- method public abstract int getChildrenCount(int);
- method public abstract long getCombinedChildId(long, long);
- method public abstract long getCombinedGroupId(long);
- method public abstract java.lang.Object getGroup(int);
- method public abstract int getGroupCount();
- method public abstract long getGroupId(int);
- method public abstract android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
- method public abstract boolean hasStableIds();
- method public abstract boolean isChildSelectable(int, int);
- method public abstract boolean isEmpty();
- method public abstract void onGroupCollapsed(int);
- method public abstract void onGroupExpanded(int);
- method public abstract void registerDataSetObserver(android.database.DataSetObserver);
- method public abstract void unregisterDataSetObserver(android.database.DataSetObserver);
+ public interface ExpandableListAdapter {
+ method public boolean areAllItemsEnabled();
+ method public Object getChild(int, int);
+ method public long getChildId(int, int);
+ method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
+ method public int getChildrenCount(int);
+ method public long getCombinedChildId(long, long);
+ method public long getCombinedGroupId(long);
+ method public Object getGroup(int);
+ method public int getGroupCount();
+ method public long getGroupId(int);
+ method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
+ method public boolean hasStableIds();
+ method public boolean isChildSelectable(int, int);
+ method public boolean isEmpty();
+ method public void onGroupCollapsed(int);
+ method public void onGroupExpanded(int);
+ method public void registerDataSetObserver(android.database.DataSetObserver);
+ method public void unregisterDataSetObserver(android.database.DataSetObserver);
}
public class ExpandableListView extends android.widget.ListView {
@@ -55095,97 +55217,97 @@
field public android.view.View targetView;
}
- public static abstract interface ExpandableListView.OnChildClickListener {
- method public abstract boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
+ public static interface ExpandableListView.OnChildClickListener {
+ method public boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
}
- public static abstract interface ExpandableListView.OnGroupClickListener {
- method public abstract boolean onGroupClick(android.widget.ExpandableListView, android.view.View, int, long);
+ public static interface ExpandableListView.OnGroupClickListener {
+ method public boolean onGroupClick(android.widget.ExpandableListView, android.view.View, int, long);
}
- public static abstract interface ExpandableListView.OnGroupCollapseListener {
- method public abstract void onGroupCollapse(int);
+ public static interface ExpandableListView.OnGroupCollapseListener {
+ method public void onGroupCollapse(int);
}
- public static abstract interface ExpandableListView.OnGroupExpandListener {
- method public abstract void onGroupExpand(int);
+ public static interface ExpandableListView.OnGroupExpandListener {
+ method public void onGroupExpand(int);
}
public abstract class Filter {
ctor public Filter();
- method public java.lang.CharSequence convertResultToString(java.lang.Object);
- method public final void filter(java.lang.CharSequence);
- method public final void filter(java.lang.CharSequence, android.widget.Filter.FilterListener);
- method protected abstract android.widget.Filter.FilterResults performFiltering(java.lang.CharSequence);
- method protected abstract void publishResults(java.lang.CharSequence, android.widget.Filter.FilterResults);
+ method public CharSequence convertResultToString(Object);
+ method public final void filter(CharSequence);
+ method public final void filter(CharSequence, android.widget.Filter.FilterListener);
+ method protected abstract android.widget.Filter.FilterResults performFiltering(CharSequence);
+ method protected abstract void publishResults(CharSequence, android.widget.Filter.FilterResults);
}
- public static abstract interface Filter.FilterListener {
- method public abstract void onFilterComplete(int);
+ public static interface Filter.FilterListener {
+ method public void onFilterComplete(int);
}
protected static class Filter.FilterResults {
ctor public Filter.FilterResults();
field public int count;
- field public java.lang.Object values;
+ field public Object values;
}
- public abstract interface FilterQueryProvider {
- method public abstract android.database.Cursor runQuery(java.lang.CharSequence);
+ public interface FilterQueryProvider {
+ method public android.database.Cursor runQuery(CharSequence);
}
- public abstract interface Filterable {
- method public abstract android.widget.Filter getFilter();
+ public interface Filterable {
+ method public android.widget.Filter getFilter();
}
- public class FrameLayout extends android.view.ViewGroup {
- ctor public FrameLayout(android.content.Context);
- ctor public FrameLayout(android.content.Context, android.util.AttributeSet);
- ctor public FrameLayout(android.content.Context, android.util.AttributeSet, int);
- ctor public FrameLayout(android.content.Context, android.util.AttributeSet, int, int);
+ @android.widget.RemoteViews.RemoteView public class FrameLayout extends android.view.ViewGroup {
+ ctor public FrameLayout(@NonNull android.content.Context);
+ ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+ ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
+ ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
method protected android.widget.FrameLayout.LayoutParams generateDefaultLayoutParams();
method public android.widget.FrameLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
- method public deprecated boolean getConsiderGoneChildrenWhenMeasuring();
+ method @Deprecated public boolean getConsiderGoneChildrenWhenMeasuring();
method public boolean getMeasureAllChildren();
method public void setMeasureAllChildren(boolean);
}
public static class FrameLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
- ctor public FrameLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
+ ctor public FrameLayout.LayoutParams(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
ctor public FrameLayout.LayoutParams(int, int);
ctor public FrameLayout.LayoutParams(int, int, int);
- ctor public FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
- ctor public FrameLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
- ctor public FrameLayout.LayoutParams(android.widget.FrameLayout.LayoutParams);
+ ctor public FrameLayout.LayoutParams(@NonNull android.view.ViewGroup.LayoutParams);
+ ctor public FrameLayout.LayoutParams(@NonNull android.view.ViewGroup.MarginLayoutParams);
+ ctor public FrameLayout.LayoutParams(@NonNull android.widget.FrameLayout.LayoutParams);
field public static final int UNSPECIFIED_GRAVITY = -1; // 0xffffffff
field public int gravity;
}
- public deprecated class Gallery extends android.widget.AbsSpinner implements android.view.GestureDetector.OnGestureListener {
- ctor public Gallery(android.content.Context);
- ctor public Gallery(android.content.Context, android.util.AttributeSet);
- ctor public Gallery(android.content.Context, android.util.AttributeSet, int);
- ctor public Gallery(android.content.Context, android.util.AttributeSet, int, int);
- method public boolean onDown(android.view.MotionEvent);
- method public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
- method public void onLongPress(android.view.MotionEvent);
- method public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
- method public void onShowPress(android.view.MotionEvent);
- method public boolean onSingleTapUp(android.view.MotionEvent);
- method public void setAnimationDuration(int);
- method public void setCallbackDuringFling(boolean);
- method public void setGravity(int);
- method public void setSpacing(int);
- method public void setUnselectedAlpha(float);
+ @Deprecated public class Gallery extends android.widget.AbsSpinner implements android.view.GestureDetector.OnGestureListener {
+ ctor @Deprecated public Gallery(android.content.Context);
+ ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet, int, int);
+ method @Deprecated public boolean onDown(android.view.MotionEvent);
+ method @Deprecated public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
+ method @Deprecated public void onLongPress(@NonNull android.view.MotionEvent);
+ method @Deprecated public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
+ method @Deprecated public void onShowPress(android.view.MotionEvent);
+ method @Deprecated public boolean onSingleTapUp(android.view.MotionEvent);
+ method @Deprecated public void setAnimationDuration(int);
+ method @Deprecated public void setCallbackDuringFling(boolean);
+ method @Deprecated public void setGravity(int);
+ method @Deprecated public void setSpacing(int);
+ method @Deprecated public void setUnselectedAlpha(float);
}
- public static class Gallery.LayoutParams extends android.view.ViewGroup.LayoutParams {
- ctor public Gallery.LayoutParams(android.content.Context, android.util.AttributeSet);
- ctor public Gallery.LayoutParams(int, int);
- ctor public Gallery.LayoutParams(android.view.ViewGroup.LayoutParams);
+ @Deprecated public static class Gallery.LayoutParams extends android.view.ViewGroup.LayoutParams {
+ ctor @Deprecated public Gallery.LayoutParams(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public Gallery.LayoutParams(int, int);
+ ctor @Deprecated public Gallery.LayoutParams(android.view.ViewGroup.LayoutParams);
}
- public class GridLayout extends android.view.ViewGroup {
+ @android.widget.RemoteViews.RemoteView public class GridLayout extends android.view.ViewGroup {
ctor public GridLayout(android.content.Context);
ctor public GridLayout(android.content.Context, android.util.AttributeSet);
ctor public GridLayout(android.content.Context, android.util.AttributeSet, int);
@@ -55231,7 +55353,7 @@
field public static final int VERTICAL = 1; // 0x1
}
- public static abstract class GridLayout.Alignment {
+ public abstract static class GridLayout.Alignment {
}
public static class GridLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
@@ -55249,7 +55371,7 @@
public static class GridLayout.Spec {
}
- public class GridView extends android.widget.AbsListView {
+ @android.widget.RemoteViews.RemoteView public class GridView extends android.widget.AbsListView {
ctor public GridView(android.content.Context);
ctor public GridView(android.content.Context, android.util.AttributeSet);
ctor public GridView(android.content.Context, android.util.AttributeSet, int);
@@ -55258,7 +55380,7 @@
method public int getColumnWidth();
method public int getGravity();
method public int getHorizontalSpacing();
- method public int getNumColumns();
+ method @android.view.ViewDebug.ExportedProperty public int getNumColumns();
method public int getRequestedColumnWidth();
method public int getRequestedHorizontalSpacing();
method public int getStretchMode();
@@ -55285,7 +55407,7 @@
method public android.widget.Filter getFilter();
method public int getFootersCount();
method public int getHeadersCount();
- method public java.lang.Object getItem(int);
+ method public Object getItem(int);
method public long getItemId(int);
method public int getItemViewType(int);
method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
@@ -55300,11 +55422,11 @@
method public void unregisterDataSetObserver(android.database.DataSetObserver);
}
- public abstract interface HeterogeneousExpandableList {
- method public abstract int getChildType(int, int);
- method public abstract int getChildTypeCount();
- method public abstract int getGroupType(int);
- method public abstract int getGroupTypeCount();
+ public interface HeterogeneousExpandableList {
+ method public int getChildType(int, int);
+ method public int getChildTypeCount();
+ method public int getGroupType(int);
+ method public int getGroupTypeCount();
}
public class HorizontalScrollView extends android.widget.FrameLayout {
@@ -55327,7 +55449,7 @@
method public final void smoothScrollTo(int, int);
}
- public class ImageButton extends android.widget.ImageView {
+ @android.widget.RemoteViews.RemoteView public class ImageButton extends android.widget.ImageView {
ctor public ImageButton(android.content.Context);
ctor public ImageButton(android.content.Context, android.util.AttributeSet);
ctor public ImageButton(android.content.Context, android.util.AttributeSet, int);
@@ -55338,16 +55460,16 @@
ctor public ImageSwitcher(android.content.Context);
ctor public ImageSwitcher(android.content.Context, android.util.AttributeSet);
method public void setImageDrawable(android.graphics.drawable.Drawable);
- method public void setImageResource(int);
+ method public void setImageResource(@DrawableRes int);
method public void setImageURI(android.net.Uri);
}
- public class ImageView extends android.view.View {
+ @android.widget.RemoteViews.RemoteView public class ImageView extends android.view.View {
ctor public ImageView(android.content.Context);
- ctor public ImageView(android.content.Context, android.util.AttributeSet);
- ctor public ImageView(android.content.Context, android.util.AttributeSet, int);
- ctor public ImageView(android.content.Context, android.util.AttributeSet, int, int);
- method public void animateTransform(android.graphics.Matrix);
+ ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet);
+ ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet, int);
+ ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet, int, int);
+ method public void animateTransform(@Nullable android.graphics.Matrix);
method public final void clearColorFilter();
method public boolean getAdjustViewBounds();
method public boolean getBaselineAlignBottom();
@@ -55356,14 +55478,14 @@
method public android.graphics.drawable.Drawable getDrawable();
method public int getImageAlpha();
method public android.graphics.Matrix getImageMatrix();
- method public android.content.res.ColorStateList getImageTintList();
- method public android.graphics.PorterDuff.Mode getImageTintMode();
+ method @Nullable public android.content.res.ColorStateList getImageTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getImageTintMode();
method public int getMaxHeight();
method public int getMaxWidth();
method public android.widget.ImageView.ScaleType getScaleType();
method public int[] onCreateDrawableState(int);
method public void setAdjustViewBounds(boolean);
- method public deprecated void setAlpha(int);
+ method @Deprecated public void setAlpha(int);
method public void setBaseline(int);
method public void setBaselineAlignBottom(boolean);
method public final void setColorFilter(int, android.graphics.PorterDuff.Mode);
@@ -55373,23 +55495,21 @@
method protected boolean setFrame(int, int, int, int);
method public void setImageAlpha(int);
method public void setImageBitmap(android.graphics.Bitmap);
- method public void setImageDrawable(android.graphics.drawable.Drawable);
- method public void setImageIcon(android.graphics.drawable.Icon);
+ method public void setImageDrawable(@Nullable android.graphics.drawable.Drawable);
+ method public void setImageIcon(@Nullable android.graphics.drawable.Icon);
method public void setImageLevel(int);
method public void setImageMatrix(android.graphics.Matrix);
- method public void setImageResource(int);
+ method public void setImageResource(@DrawableRes int);
method public void setImageState(int[], boolean);
- method public void setImageTintList(android.content.res.ColorStateList);
- method public void setImageTintMode(android.graphics.PorterDuff.Mode);
- method public void setImageURI(android.net.Uri);
+ method public void setImageTintList(@Nullable android.content.res.ColorStateList);
+ method public void setImageTintMode(@Nullable android.graphics.PorterDuff.Mode);
+ method public void setImageURI(@Nullable android.net.Uri);
method public void setMaxHeight(int);
method public void setMaxWidth(int);
method public void setScaleType(android.widget.ImageView.ScaleType);
}
- public static final class ImageView.ScaleType extends java.lang.Enum {
- method public static android.widget.ImageView.ScaleType valueOf(java.lang.String);
- method public static final android.widget.ImageView.ScaleType[] values();
+ public enum ImageView.ScaleType {
enum_constant public static final android.widget.ImageView.ScaleType CENTER;
enum_constant public static final android.widget.ImageView.ScaleType CENTER_CROP;
enum_constant public static final android.widget.ImageView.ScaleType CENTER_INSIDE;
@@ -55400,10 +55520,10 @@
enum_constant public static final android.widget.ImageView.ScaleType MATRIX;
}
- public class LinearLayout extends android.view.ViewGroup {
+ @android.widget.RemoteViews.RemoteView public class LinearLayout extends android.view.ViewGroup {
ctor public LinearLayout(android.content.Context);
- ctor public LinearLayout(android.content.Context, android.util.AttributeSet);
- ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int);
+ ctor public LinearLayout(android.content.Context, @Nullable android.util.AttributeSet);
+ ctor public LinearLayout(android.content.Context, @Nullable android.util.AttributeSet, int);
ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int, int);
method protected android.widget.LinearLayout.LayoutParams generateDefaultLayoutParams();
method public android.widget.LinearLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
@@ -55443,51 +55563,51 @@
ctor public LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
ctor public LinearLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
ctor public LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams);
- method public java.lang.String debug(java.lang.String);
- field public int gravity;
- field public float weight;
+ method public String debug(String);
+ field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=0xffffffff, to="NONE"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.NO_GRAVITY, to="NONE"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.TOP, to="TOP"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.BOTTOM, to="BOTTOM"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.LEFT, to="LEFT"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.RIGHT, to="RIGHT"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.START, to="START"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.END, to="END"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.CENTER_VERTICAL, to="CENTER_VERTICAL"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.FILL_VERTICAL, to="FILL_VERTICAL"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.CENTER_HORIZONTAL, to="CENTER_HORIZONTAL"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.FILL_HORIZONTAL, to="FILL_HORIZONTAL"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.CENTER, to="CENTER"), @android.view.ViewDebug.IntToString(from=android.view.Gravity.FILL, to="FILL")}) public int gravity;
+ field @android.view.ViewDebug.ExportedProperty(category="layout") public float weight;
}
- public abstract interface ListAdapter implements android.widget.Adapter {
- method public abstract boolean areAllItemsEnabled();
- method public abstract boolean isEnabled(int);
+ public interface ListAdapter extends android.widget.Adapter {
+ method public boolean areAllItemsEnabled();
+ method public boolean isEnabled(int);
}
public class ListPopupWindow {
- ctor public ListPopupWindow(android.content.Context);
- ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet);
- ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet, int);
- ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet, int, int);
+ ctor public ListPopupWindow(@NonNull android.content.Context);
+ ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+ ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
+ ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
method public void clearListSelection();
method public android.view.View.OnTouchListener createDragToOpenListener(android.view.View);
method public void dismiss();
- method public android.view.View getAnchorView();
- method public int getAnimationStyle();
- method public android.graphics.drawable.Drawable getBackground();
+ method @Nullable public android.view.View getAnchorView();
+ method @StyleRes public int getAnimationStyle();
+ method @Nullable public android.graphics.drawable.Drawable getBackground();
method public int getHeight();
method public int getHorizontalOffset();
method public int getInputMethodMode();
- method public android.widget.ListView getListView();
+ method @Nullable public android.widget.ListView getListView();
method public int getPromptPosition();
- method public java.lang.Object getSelectedItem();
+ method @Nullable public Object getSelectedItem();
method public long getSelectedItemId();
method public int getSelectedItemPosition();
- method public android.view.View getSelectedView();
+ method @Nullable public android.view.View getSelectedView();
method public int getSoftInputMode();
method public int getVerticalOffset();
method public int getWidth();
method public boolean isInputMethodNotNeeded();
method public boolean isModal();
method public boolean isShowing();
- method public boolean onKeyDown(int, android.view.KeyEvent);
- method public boolean onKeyPreIme(int, android.view.KeyEvent);
- method public boolean onKeyUp(int, android.view.KeyEvent);
+ method public boolean onKeyDown(int, @NonNull android.view.KeyEvent);
+ method public boolean onKeyPreIme(int, @NonNull android.view.KeyEvent);
+ method public boolean onKeyUp(int, @NonNull android.view.KeyEvent);
method public boolean performItemClick(int);
method public void postShow();
- method public void setAdapter(android.widget.ListAdapter);
- method public void setAnchorView(android.view.View);
- method public void setAnimationStyle(int);
- method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
+ method public void setAdapter(@Nullable android.widget.ListAdapter);
+ method public void setAnchorView(@Nullable android.view.View);
+ method public void setAnimationStyle(@StyleRes int);
+ method public void setBackgroundDrawable(@Nullable android.graphics.drawable.Drawable);
method public void setContentWidth(int);
method public void setDropDownGravity(int);
method public void setHeight(int);
@@ -55495,11 +55615,11 @@
method public void setInputMethodMode(int);
method public void setListSelector(android.graphics.drawable.Drawable);
method public void setModal(boolean);
- method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener);
- method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener);
- method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
+ method public void setOnDismissListener(@Nullable android.widget.PopupWindow.OnDismissListener);
+ method public void setOnItemClickListener(@Nullable android.widget.AdapterView.OnItemClickListener);
+ method public void setOnItemSelectedListener(@Nullable android.widget.AdapterView.OnItemSelectedListener);
method public void setPromptPosition(int);
- method public void setPromptView(android.view.View);
+ method public void setPromptView(@Nullable android.view.View);
method public void setSelection(int);
method public void setSoftInputMode(int);
method public void setVerticalOffset(int);
@@ -55515,20 +55635,20 @@
field public static final int WRAP_CONTENT = -2; // 0xfffffffe
}
- public class ListView extends android.widget.AbsListView {
+ @android.widget.RemoteViews.RemoteView public class ListView extends android.widget.AbsListView {
ctor public ListView(android.content.Context);
ctor public ListView(android.content.Context, android.util.AttributeSet);
ctor public ListView(android.content.Context, android.util.AttributeSet, int);
ctor public ListView(android.content.Context, android.util.AttributeSet, int, int);
- method public void addFooterView(android.view.View, java.lang.Object, boolean);
+ method public void addFooterView(android.view.View, Object, boolean);
method public void addFooterView(android.view.View);
- method public void addHeaderView(android.view.View, java.lang.Object, boolean);
+ method public void addHeaderView(android.view.View, Object, boolean);
method public void addHeaderView(android.view.View);
method public boolean areFooterDividersEnabled();
method public boolean areHeaderDividersEnabled();
method public android.widget.ListAdapter getAdapter();
- method public deprecated long[] getCheckItemIds();
- method public android.graphics.drawable.Drawable getDivider();
+ method @Deprecated public long[] getCheckItemIds();
+ method @Nullable public android.graphics.drawable.Drawable getDivider();
method public int getDividerHeight();
method public int getFooterViewsCount();
method public int getHeaderViewsCount();
@@ -55538,7 +55658,7 @@
method public android.graphics.drawable.Drawable getOverscrollHeader();
method public boolean removeFooterView(android.view.View);
method public boolean removeHeaderView(android.view.View);
- method public void setDivider(android.graphics.drawable.Drawable);
+ method public void setDivider(@Nullable android.graphics.drawable.Drawable);
method public void setDividerHeight(int);
method public void setFooterDividersEnabled(boolean);
method public void setHeaderDividersEnabled(boolean);
@@ -55552,30 +55672,30 @@
public class ListView.FixedViewInfo {
ctor public ListView.FixedViewInfo();
- field public java.lang.Object data;
+ field public Object data;
field public boolean isSelectable;
field public android.view.View view;
}
- public final class Magnifier {
- ctor public deprecated Magnifier(android.view.View);
+ @UiThread public final class Magnifier {
+ ctor @Deprecated public Magnifier(@NonNull android.view.View);
method public void dismiss();
- method public float getCornerRadius();
- method public int getDefaultHorizontalSourceToMagnifierOffset();
- method public int getDefaultVerticalSourceToMagnifierOffset();
- method public float getElevation();
- method public int getHeight();
- method public android.graphics.drawable.Drawable getOverlay();
- method public android.graphics.Point getPosition();
- method public int getSourceHeight();
- method public android.graphics.Point getSourcePosition();
- method public int getSourceWidth();
- method public int getWidth();
+ method @Px public float getCornerRadius();
+ method @Px public int getDefaultHorizontalSourceToMagnifierOffset();
+ method @Px public int getDefaultVerticalSourceToMagnifierOffset();
+ method @Px public float getElevation();
+ method @Px public int getHeight();
+ method @Nullable public android.graphics.drawable.Drawable getOverlay();
+ method @Nullable public android.graphics.Point getPosition();
+ method @Px public int getSourceHeight();
+ method @Nullable public android.graphics.Point getSourcePosition();
+ method @Px public int getSourceWidth();
+ method @Px public int getWidth();
method public float getZoom();
method public boolean isClippingEnabled();
- method public void setZoom(float);
- method public void show(float, float);
- method public void show(float, float, float, float);
+ method public void setZoom(@FloatRange(from=0.0f) float);
+ method public void show(@FloatRange(from=0) float, @FloatRange(from=0) float);
+ method public void show(@FloatRange(from=0) float, @FloatRange(from=0) float, float, float);
method public void update();
field public static final int SOURCE_BOUND_MAX_IN_SURFACE = 0; // 0x0
field public static final int SOURCE_BOUND_MAX_IN_VIEW = 1; // 0x1
@@ -55583,16 +55703,16 @@
}
public static class Magnifier.Builder {
- ctor public Magnifier.Builder(android.view.View);
- method public android.widget.Magnifier build();
- method public android.widget.Magnifier.Builder setClippingEnabled(boolean);
- method public android.widget.Magnifier.Builder setCornerRadius(float);
- method public android.widget.Magnifier.Builder setDefaultSourceToMagnifierOffset(int, int);
- method public android.widget.Magnifier.Builder setElevation(float);
- method public android.widget.Magnifier.Builder setOverlay(android.graphics.drawable.Drawable);
- method public android.widget.Magnifier.Builder setSize(int, int);
- method public android.widget.Magnifier.Builder setSourceBounds(int, int, int, int);
- method public android.widget.Magnifier.Builder setZoom(float);
+ ctor public Magnifier.Builder(@NonNull android.view.View);
+ method @NonNull public android.widget.Magnifier build();
+ method @NonNull public android.widget.Magnifier.Builder setClippingEnabled(boolean);
+ method @NonNull public android.widget.Magnifier.Builder setCornerRadius(@Px @FloatRange(from=0) float);
+ method @NonNull public android.widget.Magnifier.Builder setDefaultSourceToMagnifierOffset(@Px int, @Px int);
+ method @NonNull public android.widget.Magnifier.Builder setElevation(@Px @FloatRange(from=0) float);
+ method @NonNull public android.widget.Magnifier.Builder setOverlay(@Nullable android.graphics.drawable.Drawable);
+ method @NonNull public android.widget.Magnifier.Builder setSize(@Px @IntRange(from=0) int, @Px @IntRange(from=0) int);
+ method @NonNull public android.widget.Magnifier.Builder setSourceBounds(int, int, int, int);
+ method @NonNull public android.widget.Magnifier.Builder setZoom(@FloatRange(from=0.0f) float);
}
public class MediaController extends android.widget.FrameLayout {
@@ -55609,18 +55729,18 @@
method public void show(int);
}
- public static abstract interface MediaController.MediaPlayerControl {
- method public abstract boolean canPause();
- method public abstract boolean canSeekBackward();
- method public abstract boolean canSeekForward();
- method public abstract int getAudioSessionId();
- method public abstract int getBufferPercentage();
- method public abstract int getCurrentPosition();
- method public abstract int getDuration();
- method public abstract boolean isPlaying();
- method public abstract void pause();
- method public abstract void seekTo(int);
- method public abstract void start();
+ public static interface MediaController.MediaPlayerControl {
+ method public boolean canPause();
+ method public boolean canSeekBackward();
+ method public boolean canSeekForward();
+ method public int getAudioSessionId();
+ method public int getBufferPercentage();
+ method public int getCurrentPosition();
+ method public int getDuration();
+ method public boolean isPlaying();
+ method public void pause();
+ method public void seekTo(int);
+ method public void start();
}
public class MultiAutoCompleteTextView extends android.widget.AutoCompleteTextView {
@@ -55628,21 +55748,21 @@
ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet);
ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int);
ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int);
- method protected void performFiltering(java.lang.CharSequence, int, int, int);
+ method protected void performFiltering(CharSequence, int, int, int);
method public void setTokenizer(android.widget.MultiAutoCompleteTextView.Tokenizer);
}
public static class MultiAutoCompleteTextView.CommaTokenizer implements android.widget.MultiAutoCompleteTextView.Tokenizer {
ctor public MultiAutoCompleteTextView.CommaTokenizer();
- method public int findTokenEnd(java.lang.CharSequence, int);
- method public int findTokenStart(java.lang.CharSequence, int);
- method public java.lang.CharSequence terminateToken(java.lang.CharSequence);
+ method public int findTokenEnd(CharSequence, int);
+ method public int findTokenStart(CharSequence, int);
+ method public CharSequence terminateToken(CharSequence);
}
- public static abstract interface MultiAutoCompleteTextView.Tokenizer {
- method public abstract int findTokenEnd(java.lang.CharSequence, int);
- method public abstract int findTokenStart(java.lang.CharSequence, int);
- method public abstract java.lang.CharSequence terminateToken(java.lang.CharSequence);
+ public static interface MultiAutoCompleteTextView.Tokenizer {
+ method public int findTokenEnd(CharSequence, int);
+ method public int findTokenStart(CharSequence, int);
+ method public CharSequence terminateToken(CharSequence);
}
public class NumberPicker extends android.widget.LinearLayout {
@@ -55650,44 +55770,44 @@
ctor public NumberPicker(android.content.Context, android.util.AttributeSet);
ctor public NumberPicker(android.content.Context, android.util.AttributeSet, int);
ctor public NumberPicker(android.content.Context, android.util.AttributeSet, int, int);
- method public java.lang.String[] getDisplayedValues();
+ method public String[] getDisplayedValues();
method public int getMaxValue();
method public int getMinValue();
method public int getSelectionDividerHeight();
method public int getValue();
method public boolean getWrapSelectorWheel();
- method public void setDisplayedValues(java.lang.String[]);
+ method public void setDisplayedValues(String[]);
method public void setFormatter(android.widget.NumberPicker.Formatter);
method public void setMaxValue(int);
method public void setMinValue(int);
method public void setOnLongPressUpdateInterval(long);
method public void setOnScrollListener(android.widget.NumberPicker.OnScrollListener);
method public void setOnValueChangedListener(android.widget.NumberPicker.OnValueChangeListener);
- method public void setSelectionDividerHeight(int);
+ method public void setSelectionDividerHeight(@IntRange(from=0) @Px int);
method public void setValue(int);
method public void setWrapSelectorWheel(boolean);
}
- public static abstract interface NumberPicker.Formatter {
- method public abstract java.lang.String format(int);
+ public static interface NumberPicker.Formatter {
+ method public String format(int);
}
- public static abstract interface NumberPicker.OnScrollListener {
- method public abstract void onScrollStateChange(android.widget.NumberPicker, int);
+ public static interface NumberPicker.OnScrollListener {
+ method public void onScrollStateChange(android.widget.NumberPicker, int);
field public static final int SCROLL_STATE_FLING = 2; // 0x2
field public static final int SCROLL_STATE_IDLE = 0; // 0x0
field public static final int SCROLL_STATE_TOUCH_SCROLL = 1; // 0x1
}
- public static abstract interface NumberPicker.OnValueChangeListener {
- method public abstract void onValueChange(android.widget.NumberPicker, int, int);
+ public static interface NumberPicker.OnValueChangeListener {
+ method public void onValueChange(android.widget.NumberPicker, int, int);
}
public class OverScroller {
ctor public OverScroller(android.content.Context);
ctor public OverScroller(android.content.Context, android.view.animation.Interpolator);
- ctor public deprecated OverScroller(android.content.Context, android.view.animation.Interpolator, float, float);
- ctor public deprecated OverScroller(android.content.Context, android.view.animation.Interpolator, float, float, boolean);
+ ctor @Deprecated public OverScroller(android.content.Context, android.view.animation.Interpolator, float, float);
+ ctor @Deprecated public OverScroller(android.content.Context, android.view.animation.Interpolator, float, float, boolean);
method public void abortAnimation();
method public boolean computeScrollOffset();
method public void fling(int, int, int, int, int, int, int, int);
@@ -55719,19 +55839,19 @@
method public int getGravity();
method public android.view.Menu getMenu();
method public android.view.MenuInflater getMenuInflater();
- method public void inflate(int);
+ method public void inflate(@MenuRes int);
method public void setGravity(int);
method public void setOnDismissListener(android.widget.PopupMenu.OnDismissListener);
method public void setOnMenuItemClickListener(android.widget.PopupMenu.OnMenuItemClickListener);
method public void show();
}
- public static abstract interface PopupMenu.OnDismissListener {
- method public abstract void onDismiss(android.widget.PopupMenu);
+ public static interface PopupMenu.OnDismissListener {
+ method public void onDismiss(android.widget.PopupMenu);
}
- public static abstract interface PopupMenu.OnMenuItemClickListener {
- method public abstract boolean onMenuItemClick(android.view.MenuItem);
+ public static interface PopupMenu.OnMenuItemClickListener {
+ method public boolean onMenuItemClick(android.view.MenuItem);
}
public class PopupWindow {
@@ -55749,13 +55869,13 @@
method public android.graphics.drawable.Drawable getBackground();
method public android.view.View getContentView();
method public float getElevation();
- method public android.transition.Transition getEnterTransition();
- method public android.transition.Transition getExitTransition();
+ method @Nullable public android.transition.Transition getEnterTransition();
+ method @Nullable public android.transition.Transition getExitTransition();
method public int getHeight();
method public int getInputMethodMode();
- method public int getMaxAvailableHeight(android.view.View);
- method public int getMaxAvailableHeight(android.view.View, int);
- method public int getMaxAvailableHeight(android.view.View, int, boolean);
+ method public int getMaxAvailableHeight(@NonNull android.view.View);
+ method public int getMaxAvailableHeight(@NonNull android.view.View, int);
+ method public int getMaxAvailableHeight(@NonNull android.view.View, int, boolean);
method public boolean getOverlapAnchor();
method public int getSoftInputMode();
method public int getWidth();
@@ -55774,8 +55894,8 @@
method public void setClippingEnabled(boolean);
method public void setContentView(android.view.View);
method public void setElevation(float);
- method public void setEnterTransition(android.transition.Transition);
- method public void setExitTransition(android.transition.Transition);
+ method public void setEnterTransition(@Nullable android.transition.Transition);
+ method public void setExitTransition(@Nullable android.transition.Transition);
method public void setFocusable(boolean);
method public void setHeight(int);
method public void setIgnoreCheekPress();
@@ -55788,7 +55908,7 @@
method public void setTouchInterceptor(android.view.View.OnTouchListener);
method public void setTouchable(boolean);
method public void setWidth(int);
- method public deprecated void setWindowLayoutMode(int, int);
+ method @Deprecated public void setWindowLayoutMode(int, int);
method public void setWindowLayoutType(int);
method public void showAsDropDown(android.view.View);
method public void showAsDropDown(android.view.View, int, int);
@@ -55805,58 +55925,56 @@
field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
}
- public static abstract interface PopupWindow.OnDismissListener {
- method public abstract void onDismiss();
+ public static interface PopupWindow.OnDismissListener {
+ method public void onDismiss();
}
- public class ProgressBar extends android.view.View {
+ @android.widget.RemoteViews.RemoteView public class ProgressBar extends android.view.View {
ctor public ProgressBar(android.content.Context);
ctor public ProgressBar(android.content.Context, android.util.AttributeSet);
ctor public ProgressBar(android.content.Context, android.util.AttributeSet, int);
ctor public ProgressBar(android.content.Context, android.util.AttributeSet, int, int);
method public android.graphics.drawable.Drawable getIndeterminateDrawable();
- method public android.content.res.ColorStateList getIndeterminateTintList();
- method public android.graphics.PorterDuff.Mode getIndeterminateTintMode();
+ method @Nullable public android.content.res.ColorStateList getIndeterminateTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getIndeterminateTintMode();
method public android.view.animation.Interpolator getInterpolator();
- method public synchronized int getMax();
- method public synchronized int getMin();
- method public synchronized int getProgress();
- method public android.content.res.ColorStateList getProgressBackgroundTintList();
- method public android.graphics.PorterDuff.Mode getProgressBackgroundTintMode();
+ method @android.view.ViewDebug.ExportedProperty(category="progress") public int getMax();
+ method @android.view.ViewDebug.ExportedProperty(category="progress") public int getMin();
+ method @android.view.ViewDebug.ExportedProperty(category="progress") public int getProgress();
+ method @Nullable public android.content.res.ColorStateList getProgressBackgroundTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getProgressBackgroundTintMode();
method public android.graphics.drawable.Drawable getProgressDrawable();
- method public android.content.res.ColorStateList getProgressTintList();
- method public android.graphics.PorterDuff.Mode getProgressTintMode();
- method public synchronized int getSecondaryProgress();
- method public android.content.res.ColorStateList getSecondaryProgressTintList();
- method public android.graphics.PorterDuff.Mode getSecondaryProgressTintMode();
- method public final synchronized void incrementProgressBy(int);
- method public final synchronized void incrementSecondaryProgressBy(int);
+ method @Nullable public android.content.res.ColorStateList getProgressTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getProgressTintMode();
+ method @android.view.ViewDebug.ExportedProperty(category="progress") public int getSecondaryProgress();
+ method @Nullable public android.content.res.ColorStateList getSecondaryProgressTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getSecondaryProgressTintMode();
+ method public final void incrementProgressBy(int);
+ method public final void incrementSecondaryProgressBy(int);
method public boolean isAnimating();
- method public synchronized boolean isIndeterminate();
- method protected synchronized void onDraw(android.graphics.Canvas);
- method protected synchronized void onMeasure(int, int);
+ method @android.view.ViewDebug.ExportedProperty(category="progress") public boolean isIndeterminate();
method public void onRestoreInstanceState(android.os.Parcelable);
method public android.os.Parcelable onSaveInstanceState();
- method public synchronized void setIndeterminate(boolean);
+ method public void setIndeterminate(boolean);
method public void setIndeterminateDrawable(android.graphics.drawable.Drawable);
method public void setIndeterminateDrawableTiled(android.graphics.drawable.Drawable);
- method public void setIndeterminateTintList(android.content.res.ColorStateList);
- method public void setIndeterminateTintMode(android.graphics.PorterDuff.Mode);
- method public void setInterpolator(android.content.Context, int);
+ method public void setIndeterminateTintList(@Nullable android.content.res.ColorStateList);
+ method public void setIndeterminateTintMode(@Nullable android.graphics.PorterDuff.Mode);
+ method public void setInterpolator(android.content.Context, @InterpolatorRes int);
method public void setInterpolator(android.view.animation.Interpolator);
- method public synchronized void setMax(int);
- method public synchronized void setMin(int);
- method public synchronized void setProgress(int);
+ method public void setMax(int);
+ method public void setMin(int);
+ method public void setProgress(int);
method public void setProgress(int, boolean);
- method public void setProgressBackgroundTintList(android.content.res.ColorStateList);
- method public void setProgressBackgroundTintMode(android.graphics.PorterDuff.Mode);
+ method public void setProgressBackgroundTintList(@Nullable android.content.res.ColorStateList);
+ method public void setProgressBackgroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
method public void setProgressDrawable(android.graphics.drawable.Drawable);
method public void setProgressDrawableTiled(android.graphics.drawable.Drawable);
- method public void setProgressTintList(android.content.res.ColorStateList);
- method public void setProgressTintMode(android.graphics.PorterDuff.Mode);
- method public synchronized void setSecondaryProgress(int);
- method public void setSecondaryProgressTintList(android.content.res.ColorStateList);
- method public void setSecondaryProgressTintMode(android.graphics.PorterDuff.Mode);
+ method public void setProgressTintList(@Nullable android.content.res.ColorStateList);
+ method public void setProgressTintMode(@Nullable android.graphics.PorterDuff.Mode);
+ method public void setSecondaryProgress(int);
+ method public void setSecondaryProgressTintList(@Nullable android.content.res.ColorStateList);
+ method public void setSecondaryProgressTintMode(@Nullable android.graphics.PorterDuff.Mode);
}
public class QuickContactBadge extends android.widget.ImageView implements android.view.View.OnClickListener {
@@ -55864,18 +55982,18 @@
ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet);
ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet, int);
ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet, int, int);
- method public void assignContactFromEmail(java.lang.String, boolean);
- method public void assignContactFromEmail(java.lang.String, boolean, android.os.Bundle);
- method public void assignContactFromPhone(java.lang.String, boolean);
- method public void assignContactFromPhone(java.lang.String, boolean, android.os.Bundle);
+ method public void assignContactFromEmail(String, boolean);
+ method public void assignContactFromEmail(String, boolean, android.os.Bundle);
+ method public void assignContactFromPhone(String, boolean);
+ method public void assignContactFromPhone(String, boolean, android.os.Bundle);
method public void assignContactUri(android.net.Uri);
method public void onClick(android.view.View);
- method public void setExcludeMimes(java.lang.String[]);
+ method public void setExcludeMimes(String[]);
method public void setImageToDefault();
method public void setMode(int);
method public void setOverlay(android.graphics.drawable.Drawable);
- method public void setPrioritizedMimeType(java.lang.String);
- field protected java.lang.String[] mExcludeMimes;
+ method public void setPrioritizedMimeType(String);
+ field protected String[] mExcludeMimes;
}
public class RadioButton extends android.widget.CompoundButton {
@@ -55888,10 +56006,10 @@
public class RadioGroup extends android.widget.LinearLayout {
ctor public RadioGroup(android.content.Context);
ctor public RadioGroup(android.content.Context, android.util.AttributeSet);
- method public void check(int);
+ method public void check(@IdRes int);
method public void clearCheck();
method public android.widget.RadioGroup.LayoutParams generateLayoutParams(android.util.AttributeSet);
- method public int getCheckedRadioButtonId();
+ method @IdRes public int getCheckedRadioButtonId();
method public void setOnCheckedChangeListener(android.widget.RadioGroup.OnCheckedChangeListener);
}
@@ -55903,8 +56021,8 @@
ctor public RadioGroup.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
}
- public static abstract interface RadioGroup.OnCheckedChangeListener {
- method public abstract void onCheckedChanged(android.widget.RadioGroup, int);
+ public static interface RadioGroup.OnCheckedChangeListener {
+ method public void onCheckedChanged(android.widget.RadioGroup, @IdRes int);
}
public class RatingBar extends android.widget.AbsSeekBar {
@@ -55924,11 +56042,11 @@
method public void setStepSize(float);
}
- public static abstract interface RatingBar.OnRatingBarChangeListener {
- method public abstract void onRatingChanged(android.widget.RatingBar, float, boolean);
+ public static interface RatingBar.OnRatingBarChangeListener {
+ method public void onRatingChanged(android.widget.RatingBar, float, boolean);
}
- public class RelativeLayout extends android.view.ViewGroup {
+ @android.widget.RemoteViews.RemoteView public class RelativeLayout extends android.view.ViewGroup {
ctor public RelativeLayout(android.content.Context);
ctor public RelativeLayout(android.content.Context, android.util.AttributeSet);
ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int);
@@ -55972,91 +56090,91 @@
ctor public RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams);
method public void addRule(int);
method public void addRule(int, int);
- method public java.lang.String debug(java.lang.String);
+ method public String debug(String);
method public int getRule(int);
method public int[] getRules();
method public void removeRule(int);
- field public boolean alignWithParent;
+ field @android.view.ViewDebug.ExportedProperty(category="layout") public boolean alignWithParent;
}
public class RemoteViews implements android.view.LayoutInflater.Filter android.os.Parcelable {
- ctor public RemoteViews(java.lang.String, int);
+ ctor public RemoteViews(String, int);
ctor public RemoteViews(android.widget.RemoteViews, android.widget.RemoteViews);
ctor public RemoteViews(android.widget.RemoteViews);
ctor public RemoteViews(android.os.Parcel);
method public void addView(int, android.widget.RemoteViews);
method public android.view.View apply(android.content.Context, android.view.ViewGroup);
- method public deprecated android.widget.RemoteViews clone();
+ method @Deprecated public android.widget.RemoteViews clone();
method public int describeContents();
method public int getLayoutId();
- method public java.lang.String getPackage();
- method public boolean onLoadClass(java.lang.Class);
+ method public String getPackage();
+ method public boolean onLoadClass(Class);
method public void reapply(android.content.Context, android.view.View);
method public void removeAllViews(int);
method public void setAccessibilityTraversalAfter(int, int);
method public void setAccessibilityTraversalBefore(int, int);
- method public void setBitmap(int, java.lang.String, android.graphics.Bitmap);
- method public void setBoolean(int, java.lang.String, boolean);
- method public void setBundle(int, java.lang.String, android.os.Bundle);
- method public void setByte(int, java.lang.String, byte);
- method public void setChar(int, java.lang.String, char);
- method public void setCharSequence(int, java.lang.String, java.lang.CharSequence);
- method public void setChronometer(int, long, java.lang.String, boolean);
+ method public void setBitmap(int, String, android.graphics.Bitmap);
+ method public void setBoolean(int, String, boolean);
+ method public void setBundle(int, String, android.os.Bundle);
+ method public void setByte(int, String, byte);
+ method public void setChar(int, String, char);
+ method public void setCharSequence(int, String, CharSequence);
+ method public void setChronometer(int, long, String, boolean);
method public void setChronometerCountDown(int, boolean);
- method public void setContentDescription(int, java.lang.CharSequence);
+ method public void setContentDescription(int, CharSequence);
method public void setDisplayedChild(int, int);
- method public void setDouble(int, java.lang.String, double);
+ method public void setDouble(int, String, double);
method public void setEmptyView(int, int);
- method public void setFloat(int, java.lang.String, float);
- method public void setIcon(int, java.lang.String, android.graphics.drawable.Icon);
+ method public void setFloat(int, String, float);
+ method public void setIcon(int, String, android.graphics.drawable.Icon);
method public void setImageViewBitmap(int, android.graphics.Bitmap);
method public void setImageViewIcon(int, android.graphics.drawable.Icon);
method public void setImageViewResource(int, int);
method public void setImageViewUri(int, android.net.Uri);
- method public void setInt(int, java.lang.String, int);
- method public void setIntent(int, java.lang.String, android.content.Intent);
+ method public void setInt(int, String, int);
+ method public void setIntent(int, String, android.content.Intent);
method public void setLabelFor(int, int);
- method public void setLightBackgroundLayoutId(int);
- method public void setLong(int, java.lang.String, long);
+ method public void setLightBackgroundLayoutId(@LayoutRes int);
+ method public void setLong(int, String, long);
method public void setOnClickFillInIntent(int, android.content.Intent);
method public void setOnClickPendingIntent(int, android.app.PendingIntent);
method public void setOnClickResponse(int, android.widget.RemoteViews.RemoteResponse);
method public void setPendingIntentTemplate(int, android.app.PendingIntent);
method public void setProgressBar(int, int, int, boolean);
method public void setRelativeScrollPosition(int, int);
- method public deprecated void setRemoteAdapter(int, int, android.content.Intent);
+ method @Deprecated public void setRemoteAdapter(int, int, android.content.Intent);
method public void setRemoteAdapter(int, android.content.Intent);
method public void setScrollPosition(int, int);
- method public void setShort(int, java.lang.String, short);
- method public void setString(int, java.lang.String, java.lang.String);
- method public void setTextColor(int, int);
+ method public void setShort(int, String, short);
+ method public void setString(int, String, String);
+ method public void setTextColor(int, @ColorInt int);
method public void setTextViewCompoundDrawables(int, int, int, int, int);
method public void setTextViewCompoundDrawablesRelative(int, int, int, int, int);
- method public void setTextViewText(int, java.lang.CharSequence);
+ method public void setTextViewText(int, CharSequence);
method public void setTextViewTextSize(int, int, float);
- method public void setUri(int, java.lang.String, android.net.Uri);
+ method public void setUri(int, String, android.net.Uri);
method public void setViewPadding(int, int, int, int, int);
method public void setViewVisibility(int, int);
method public void showNext(int);
method public void showPrevious(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.widget.RemoteViews> CREATOR;
- field public static final java.lang.String EXTRA_SHARED_ELEMENT_BOUNDS = "android.widget.extra.SHARED_ELEMENT_BOUNDS";
+ field public static final String EXTRA_SHARED_ELEMENT_BOUNDS = "android.widget.extra.SHARED_ELEMENT_BOUNDS";
}
public static class RemoteViews.ActionException extends java.lang.RuntimeException {
- ctor public RemoteViews.ActionException(java.lang.Exception);
- ctor public RemoteViews.ActionException(java.lang.String);
+ ctor public RemoteViews.ActionException(Exception);
+ ctor public RemoteViews.ActionException(String);
}
public static class RemoteViews.RemoteResponse {
ctor public RemoteViews.RemoteResponse();
- method public android.widget.RemoteViews.RemoteResponse addSharedElement(int, java.lang.String);
+ method public android.widget.RemoteViews.RemoteResponse addSharedElement(int, String);
method public static android.widget.RemoteViews.RemoteResponse fromFillInIntent(android.content.Intent);
method public static android.widget.RemoteViews.RemoteResponse fromPendingIntent(android.app.PendingIntent);
}
- public static abstract class RemoteViews.RemoteView implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) public static @interface RemoteViews.RemoteView {
}
public abstract class RemoteViewsService extends android.app.Service {
@@ -56065,20 +56183,20 @@
method public abstract android.widget.RemoteViewsService.RemoteViewsFactory onGetViewFactory(android.content.Intent);
}
- public static abstract interface RemoteViewsService.RemoteViewsFactory {
- method public abstract int getCount();
- method public abstract long getItemId(int);
- method public abstract android.widget.RemoteViews getLoadingView();
- method public abstract android.widget.RemoteViews getViewAt(int);
- method public abstract int getViewTypeCount();
- method public abstract boolean hasStableIds();
- method public abstract void onCreate();
- method public abstract void onDataSetChanged();
- method public abstract void onDestroy();
+ public static interface RemoteViewsService.RemoteViewsFactory {
+ method public int getCount();
+ method public long getItemId(int);
+ method public android.widget.RemoteViews getLoadingView();
+ method public android.widget.RemoteViews getViewAt(int);
+ method public int getViewTypeCount();
+ method public boolean hasStableIds();
+ method public void onCreate();
+ method public void onDataSetChanged();
+ method public void onDestroy();
}
public abstract class ResourceCursorAdapter extends android.widget.CursorAdapter {
- ctor public deprecated ResourceCursorAdapter(android.content.Context, int, android.database.Cursor);
+ ctor @Deprecated public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor);
ctor public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, boolean);
ctor public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, int);
method public android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
@@ -56148,8 +56266,8 @@
method public int getImeOptions();
method public int getInputType();
method public int getMaxWidth();
- method public java.lang.CharSequence getQuery();
- method public java.lang.CharSequence getQueryHint();
+ method public CharSequence getQuery();
+ method @Nullable public CharSequence getQueryHint();
method public android.widget.CursorAdapter getSuggestionsAdapter();
method public boolean isIconfiedByDefault();
method public boolean isIconified();
@@ -56167,32 +56285,32 @@
method public void setOnQueryTextListener(android.widget.SearchView.OnQueryTextListener);
method public void setOnSearchClickListener(android.view.View.OnClickListener);
method public void setOnSuggestionListener(android.widget.SearchView.OnSuggestionListener);
- method public void setQuery(java.lang.CharSequence, boolean);
- method public void setQueryHint(java.lang.CharSequence);
+ method public void setQuery(CharSequence, boolean);
+ method public void setQueryHint(@Nullable CharSequence);
method public void setQueryRefinementEnabled(boolean);
method public void setSearchableInfo(android.app.SearchableInfo);
method public void setSubmitButtonEnabled(boolean);
method public void setSuggestionsAdapter(android.widget.CursorAdapter);
}
- public static abstract interface SearchView.OnCloseListener {
- method public abstract boolean onClose();
+ public static interface SearchView.OnCloseListener {
+ method public boolean onClose();
}
- public static abstract interface SearchView.OnQueryTextListener {
- method public abstract boolean onQueryTextChange(java.lang.String);
- method public abstract boolean onQueryTextSubmit(java.lang.String);
+ public static interface SearchView.OnQueryTextListener {
+ method public boolean onQueryTextChange(String);
+ method public boolean onQueryTextSubmit(String);
}
- public static abstract interface SearchView.OnSuggestionListener {
- method public abstract boolean onSuggestionClick(int);
- method public abstract boolean onSuggestionSelect(int);
+ public static interface SearchView.OnSuggestionListener {
+ method public boolean onSuggestionClick(int);
+ method public boolean onSuggestionSelect(int);
}
- public abstract interface SectionIndexer {
- method public abstract int getPositionForSection(int);
- method public abstract int getSectionForPosition(int);
- method public abstract java.lang.Object[] getSections();
+ public interface SectionIndexer {
+ method public int getPositionForSection(int);
+ method public int getSectionForPosition(int);
+ method public Object[] getSections();
}
public class SeekBar extends android.widget.AbsSeekBar {
@@ -56203,31 +56321,31 @@
method public void setOnSeekBarChangeListener(android.widget.SeekBar.OnSeekBarChangeListener);
}
- public static abstract interface SeekBar.OnSeekBarChangeListener {
- method public abstract void onProgressChanged(android.widget.SeekBar, int, boolean);
- method public abstract void onStartTrackingTouch(android.widget.SeekBar);
- method public abstract void onStopTrackingTouch(android.widget.SeekBar);
+ public static interface SeekBar.OnSeekBarChangeListener {
+ method public void onProgressChanged(android.widget.SeekBar, int, boolean);
+ method public void onStartTrackingTouch(android.widget.SeekBar);
+ method public void onStopTrackingTouch(android.widget.SeekBar);
}
public class ShareActionProvider extends android.view.ActionProvider {
ctor public ShareActionProvider(android.content.Context);
method public android.view.View onCreateActionView();
method public void setOnShareTargetSelectedListener(android.widget.ShareActionProvider.OnShareTargetSelectedListener);
- method public void setShareHistoryFileName(java.lang.String);
+ method public void setShareHistoryFileName(String);
method public void setShareIntent(android.content.Intent);
- field public static final java.lang.String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml";
+ field public static final String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml";
}
- public static abstract interface ShareActionProvider.OnShareTargetSelectedListener {
- method public abstract boolean onShareTargetSelected(android.widget.ShareActionProvider, android.content.Intent);
+ public static interface ShareActionProvider.OnShareTargetSelectedListener {
+ method public boolean onShareTargetSelected(android.widget.ShareActionProvider, android.content.Intent);
}
public class SimpleAdapter extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
- ctor public SimpleAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String, ?>>, int, java.lang.String[], int[]);
+ ctor public SimpleAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, @LayoutRes int, String[], @IdRes int[]);
method public int getCount();
method public android.content.res.Resources.Theme getDropDownViewTheme();
method public android.widget.Filter getFilter();
- method public java.lang.Object getItem(int);
+ method public Object getItem(int);
method public long getItemId(int);
method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
method public android.widget.SimpleAdapter.ViewBinder getViewBinder();
@@ -56235,62 +56353,62 @@
method public void setDropDownViewTheme(android.content.res.Resources.Theme);
method public void setViewBinder(android.widget.SimpleAdapter.ViewBinder);
method public void setViewImage(android.widget.ImageView, int);
- method public void setViewImage(android.widget.ImageView, java.lang.String);
- method public void setViewText(android.widget.TextView, java.lang.String);
+ method public void setViewImage(android.widget.ImageView, String);
+ method public void setViewText(android.widget.TextView, String);
}
- public static abstract interface SimpleAdapter.ViewBinder {
- method public abstract boolean setViewValue(android.view.View, java.lang.Object, java.lang.String);
+ public static interface SimpleAdapter.ViewBinder {
+ method public boolean setViewValue(android.view.View, Object, String);
}
public class SimpleCursorAdapter extends android.widget.ResourceCursorAdapter {
- ctor public deprecated SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, java.lang.String[], int[]);
- ctor public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, java.lang.String[], int[], int);
+ ctor @Deprecated public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, String[], int[]);
+ ctor public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, String[], int[], int);
method public void bindView(android.view.View, android.content.Context, android.database.Cursor);
- method public void changeCursorAndColumns(android.database.Cursor, java.lang.String[], int[]);
+ method public void changeCursorAndColumns(android.database.Cursor, String[], int[]);
method public android.widget.SimpleCursorAdapter.CursorToStringConverter getCursorToStringConverter();
method public int getStringConversionColumn();
method public android.widget.SimpleCursorAdapter.ViewBinder getViewBinder();
method public void setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter);
method public void setStringConversionColumn(int);
method public void setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder);
- method public void setViewImage(android.widget.ImageView, java.lang.String);
- method public void setViewText(android.widget.TextView, java.lang.String);
+ method public void setViewImage(android.widget.ImageView, String);
+ method public void setViewText(android.widget.TextView, String);
}
- public static abstract interface SimpleCursorAdapter.CursorToStringConverter {
- method public abstract java.lang.CharSequence convertToString(android.database.Cursor);
+ public static interface SimpleCursorAdapter.CursorToStringConverter {
+ method public CharSequence convertToString(android.database.Cursor);
}
- public static abstract interface SimpleCursorAdapter.ViewBinder {
- method public abstract boolean setViewValue(android.view.View, android.database.Cursor, int);
+ public static interface SimpleCursorAdapter.ViewBinder {
+ method public boolean setViewValue(android.view.View, android.database.Cursor, int);
}
public abstract class SimpleCursorTreeAdapter extends android.widget.ResourceCursorTreeAdapter {
- ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, java.lang.String[], int[], int, int, java.lang.String[], int[]);
- ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, java.lang.String[], int[], int, java.lang.String[], int[]);
- ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, java.lang.String[], int[], int, java.lang.String[], int[]);
+ ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, String[], int[], int, int, String[], int[]);
+ ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, String[], int[], int, String[], int[]);
+ ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, String[], int[], int, String[], int[]);
method protected void bindChildView(android.view.View, android.content.Context, android.database.Cursor, boolean);
method protected void bindGroupView(android.view.View, android.content.Context, android.database.Cursor, boolean);
method public android.widget.SimpleCursorTreeAdapter.ViewBinder getViewBinder();
method public void setViewBinder(android.widget.SimpleCursorTreeAdapter.ViewBinder);
- method protected void setViewImage(android.widget.ImageView, java.lang.String);
- method public void setViewText(android.widget.TextView, java.lang.String);
+ method protected void setViewImage(android.widget.ImageView, String);
+ method public void setViewText(android.widget.TextView, String);
}
- public static abstract interface SimpleCursorTreeAdapter.ViewBinder {
- method public abstract boolean setViewValue(android.view.View, android.database.Cursor, int);
+ public static interface SimpleCursorTreeAdapter.ViewBinder {
+ method public boolean setViewValue(android.view.View, android.database.Cursor, int);
}
public class SimpleExpandableListAdapter extends android.widget.BaseExpandableListAdapter {
- ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String, ?>>, int, java.lang.String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String, ?>>>, int, java.lang.String[], int[]);
- ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String, ?>>, int, int, java.lang.String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String, ?>>>, int, java.lang.String[], int[]);
- ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String, ?>>, int, int, java.lang.String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String, ?>>>, int, int, java.lang.String[], int[]);
- method public java.lang.Object getChild(int, int);
+ ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, String[], int[]);
+ ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, String[], int[]);
+ ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, int, String[], int[]);
+ method public Object getChild(int, int);
method public long getChildId(int, int);
method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
method public int getChildrenCount(int);
- method public java.lang.Object getGroup(int);
+ method public Object getGroup(int);
method public int getGroupCount();
method public long getGroupId(int);
method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
@@ -56300,40 +56418,40 @@
method public android.view.View newGroupView(boolean, android.view.ViewGroup);
}
- public deprecated class SlidingDrawer extends android.view.ViewGroup {
- ctor public SlidingDrawer(android.content.Context, android.util.AttributeSet);
- ctor public SlidingDrawer(android.content.Context, android.util.AttributeSet, int);
- ctor public SlidingDrawer(android.content.Context, android.util.AttributeSet, int, int);
- method public void animateClose();
- method public void animateOpen();
- method public void animateToggle();
- method public void close();
- method public android.view.View getContent();
- method public android.view.View getHandle();
- method public boolean isMoving();
- method public boolean isOpened();
- method public void lock();
- method public void open();
- method public void setOnDrawerCloseListener(android.widget.SlidingDrawer.OnDrawerCloseListener);
- method public void setOnDrawerOpenListener(android.widget.SlidingDrawer.OnDrawerOpenListener);
- method public void setOnDrawerScrollListener(android.widget.SlidingDrawer.OnDrawerScrollListener);
- method public void toggle();
- method public void unlock();
- field public static final int ORIENTATION_HORIZONTAL = 0; // 0x0
- field public static final int ORIENTATION_VERTICAL = 1; // 0x1
+ @Deprecated public class SlidingDrawer extends android.view.ViewGroup {
+ ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet, int, int);
+ method @Deprecated public void animateClose();
+ method @Deprecated public void animateOpen();
+ method @Deprecated public void animateToggle();
+ method @Deprecated public void close();
+ method @Deprecated public android.view.View getContent();
+ method @Deprecated public android.view.View getHandle();
+ method @Deprecated public boolean isMoving();
+ method @Deprecated public boolean isOpened();
+ method @Deprecated public void lock();
+ method @Deprecated public void open();
+ method @Deprecated public void setOnDrawerCloseListener(android.widget.SlidingDrawer.OnDrawerCloseListener);
+ method @Deprecated public void setOnDrawerOpenListener(android.widget.SlidingDrawer.OnDrawerOpenListener);
+ method @Deprecated public void setOnDrawerScrollListener(android.widget.SlidingDrawer.OnDrawerScrollListener);
+ method @Deprecated public void toggle();
+ method @Deprecated public void unlock();
+ field @Deprecated public static final int ORIENTATION_HORIZONTAL = 0; // 0x0
+ field @Deprecated public static final int ORIENTATION_VERTICAL = 1; // 0x1
}
- public static abstract interface SlidingDrawer.OnDrawerCloseListener {
- method public abstract void onDrawerClosed();
+ @Deprecated public static interface SlidingDrawer.OnDrawerCloseListener {
+ method @Deprecated public void onDrawerClosed();
}
- public static abstract interface SlidingDrawer.OnDrawerOpenListener {
- method public abstract void onDrawerOpened();
+ @Deprecated public static interface SlidingDrawer.OnDrawerOpenListener {
+ method @Deprecated public void onDrawerOpened();
}
- public static abstract interface SlidingDrawer.OnDrawerScrollListener {
- method public abstract void onScrollEnded();
- method public abstract void onScrollStarted();
+ @Deprecated public static interface SlidingDrawer.OnDrawerScrollListener {
+ method @Deprecated public void onScrollEnded();
+ method @Deprecated public void onScrollStarted();
}
public final class Space extends android.view.View {
@@ -56357,25 +56475,25 @@
method public int getGravity();
method public android.graphics.drawable.Drawable getPopupBackground();
method public android.content.Context getPopupContext();
- method public java.lang.CharSequence getPrompt();
+ method public CharSequence getPrompt();
method public void onClick(android.content.DialogInterface, int);
method public void setDropDownHorizontalOffset(int);
method public void setDropDownVerticalOffset(int);
method public void setDropDownWidth(int);
method public void setGravity(int);
method public void setPopupBackgroundDrawable(android.graphics.drawable.Drawable);
- method public void setPopupBackgroundResource(int);
- method public void setPrompt(java.lang.CharSequence);
+ method public void setPopupBackgroundResource(@DrawableRes int);
+ method public void setPrompt(CharSequence);
method public void setPromptId(int);
field public static final int MODE_DIALOG = 0; // 0x0
field public static final int MODE_DROPDOWN = 1; // 0x1
}
- public abstract interface SpinnerAdapter implements android.widget.Adapter {
- method public abstract android.view.View getDropDownView(int, android.view.View, android.view.ViewGroup);
+ public interface SpinnerAdapter extends android.widget.Adapter {
+ method public android.view.View getDropDownView(int, android.view.View, android.view.ViewGroup);
}
- public class StackView extends android.widget.AdapterViewAnimator {
+ @android.widget.RemoteViews.RemoteView public class StackView extends android.widget.AdapterViewAnimator {
ctor public StackView(android.content.Context);
ctor public StackView(android.content.Context, android.util.AttributeSet);
ctor public StackView(android.content.Context, android.util.AttributeSet, int);
@@ -56391,34 +56509,34 @@
method public boolean getSplitTrack();
method public int getSwitchMinWidth();
method public int getSwitchPadding();
- method public java.lang.CharSequence getTextOff();
- method public java.lang.CharSequence getTextOn();
+ method public CharSequence getTextOff();
+ method public CharSequence getTextOn();
method public android.graphics.drawable.Drawable getThumbDrawable();
method public int getThumbTextPadding();
- method public android.content.res.ColorStateList getThumbTintList();
- method public android.graphics.PorterDuff.Mode getThumbTintMode();
+ method @Nullable public android.content.res.ColorStateList getThumbTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getThumbTintMode();
method public android.graphics.drawable.Drawable getTrackDrawable();
- method public android.content.res.ColorStateList getTrackTintList();
- method public android.graphics.PorterDuff.Mode getTrackTintMode();
+ method @Nullable public android.content.res.ColorStateList getTrackTintList();
+ method @Nullable public android.graphics.PorterDuff.Mode getTrackTintMode();
method public void onMeasure(int, int);
method public void setShowText(boolean);
method public void setSplitTrack(boolean);
method public void setSwitchMinWidth(int);
method public void setSwitchPadding(int);
- method public void setSwitchTextAppearance(android.content.Context, int);
+ method public void setSwitchTextAppearance(android.content.Context, @StyleRes int);
method public void setSwitchTypeface(android.graphics.Typeface, int);
method public void setSwitchTypeface(android.graphics.Typeface);
- method public void setTextOff(java.lang.CharSequence);
- method public void setTextOn(java.lang.CharSequence);
+ method public void setTextOff(CharSequence);
+ method public void setTextOn(CharSequence);
method public void setThumbDrawable(android.graphics.drawable.Drawable);
- method public void setThumbResource(int);
+ method public void setThumbResource(@DrawableRes int);
method public void setThumbTextPadding(int);
- method public void setThumbTintList(android.content.res.ColorStateList);
- method public void setThumbTintMode(android.graphics.PorterDuff.Mode);
+ method public void setThumbTintList(@Nullable android.content.res.ColorStateList);
+ method public void setThumbTintMode(@Nullable android.graphics.PorterDuff.Mode);
method public void setTrackDrawable(android.graphics.drawable.Drawable);
- method public void setTrackResource(int);
- method public void setTrackTintList(android.content.res.ColorStateList);
- method public void setTrackTintMode(android.graphics.PorterDuff.Mode);
+ method public void setTrackResource(@DrawableRes int);
+ method public void setTrackTintList(@Nullable android.content.res.ColorStateList);
+ method public void setTrackTintMode(@Nullable android.graphics.PorterDuff.Mode);
}
public class TabHost extends android.widget.FrameLayout implements android.view.ViewTreeObserver.OnTouchModeChangeListener {
@@ -56428,36 +56546,36 @@
ctor public TabHost(android.content.Context, android.util.AttributeSet, int, int);
method public void addTab(android.widget.TabHost.TabSpec);
method public void clearAllTabs();
- method public int getCurrentTab();
- method public java.lang.String getCurrentTabTag();
- method public android.view.View getCurrentTabView();
+ method @Nullable public int getCurrentTab();
+ method @Nullable public String getCurrentTabTag();
+ method @Nullable public android.view.View getCurrentTabView();
method public android.view.View getCurrentView();
method public android.widget.FrameLayout getTabContentView();
method public android.widget.TabWidget getTabWidget();
- method public android.widget.TabHost.TabSpec newTabSpec(java.lang.String);
+ method @NonNull public android.widget.TabHost.TabSpec newTabSpec(@NonNull String);
method public void onTouchModeChanged(boolean);
method public void setCurrentTab(int);
- method public void setCurrentTabByTag(java.lang.String);
+ method public void setCurrentTabByTag(String);
method public void setOnTabChangedListener(android.widget.TabHost.OnTabChangeListener);
method public void setup();
method public void setup(android.app.LocalActivityManager);
}
- public static abstract interface TabHost.OnTabChangeListener {
- method public abstract void onTabChanged(java.lang.String);
+ public static interface TabHost.OnTabChangeListener {
+ method public void onTabChanged(String);
}
- public static abstract interface TabHost.TabContentFactory {
- method public abstract android.view.View createTabContent(java.lang.String);
+ public static interface TabHost.TabContentFactory {
+ method public android.view.View createTabContent(String);
}
public class TabHost.TabSpec {
- method public java.lang.String getTag();
+ method @NonNull public String getTag();
method public android.widget.TabHost.TabSpec setContent(int);
method public android.widget.TabHost.TabSpec setContent(android.widget.TabHost.TabContentFactory);
method public android.widget.TabHost.TabSpec setContent(android.content.Intent);
- method public android.widget.TabHost.TabSpec setIndicator(java.lang.CharSequence);
- method public android.widget.TabHost.TabSpec setIndicator(java.lang.CharSequence, android.graphics.drawable.Drawable);
+ method public android.widget.TabHost.TabSpec setIndicator(CharSequence);
+ method public android.widget.TabHost.TabSpec setIndicator(CharSequence, android.graphics.drawable.Drawable);
method public android.widget.TabHost.TabSpec setIndicator(android.view.View);
}
@@ -56469,17 +56587,17 @@
method public void dispatchDraw(android.graphics.Canvas);
method public void focusCurrentTab(int);
method public android.view.View getChildTabViewAt(int);
- method public android.graphics.drawable.Drawable getLeftStripDrawable();
- method public android.graphics.drawable.Drawable getRightStripDrawable();
+ method @Nullable public android.graphics.drawable.Drawable getLeftStripDrawable();
+ method @Nullable public android.graphics.drawable.Drawable getRightStripDrawable();
method public int getTabCount();
method public boolean isStripEnabled();
method public void onFocusChange(android.view.View, boolean);
method public void setCurrentTab(int);
- method public void setDividerDrawable(int);
- method public void setLeftStripDrawable(android.graphics.drawable.Drawable);
- method public void setLeftStripDrawable(int);
- method public void setRightStripDrawable(android.graphics.drawable.Drawable);
- method public void setRightStripDrawable(int);
+ method public void setDividerDrawable(@DrawableRes int);
+ method public void setLeftStripDrawable(@Nullable android.graphics.drawable.Drawable);
+ method public void setLeftStripDrawable(@DrawableRes int);
+ method public void setRightStripDrawable(@Nullable android.graphics.drawable.Drawable);
+ method public void setRightStripDrawable(@DrawableRes int);
method public void setStripEnabled(boolean);
}
@@ -56524,41 +56642,41 @@
ctor public TableRow.LayoutParams(int);
ctor public TableRow.LayoutParams(android.view.ViewGroup.LayoutParams);
ctor public TableRow.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
- field public int column;
- field public int span;
+ field @android.view.ViewDebug.ExportedProperty(category="layout") public int column;
+ field @android.view.ViewDebug.ExportedProperty(category="layout") public int span;
}
- public class TextClock extends android.widget.TextView {
+ @android.widget.RemoteViews.RemoteView public class TextClock extends android.widget.TextView {
ctor public TextClock(android.content.Context);
ctor public TextClock(android.content.Context, android.util.AttributeSet);
ctor public TextClock(android.content.Context, android.util.AttributeSet, int);
ctor public TextClock(android.content.Context, android.util.AttributeSet, int, int);
- method public java.lang.CharSequence getFormat12Hour();
- method public java.lang.CharSequence getFormat24Hour();
- method public java.lang.String getTimeZone();
+ method @android.view.ViewDebug.ExportedProperty public CharSequence getFormat12Hour();
+ method @android.view.ViewDebug.ExportedProperty public CharSequence getFormat24Hour();
+ method public String getTimeZone();
method public boolean is24HourModeEnabled();
- method public void setFormat12Hour(java.lang.CharSequence);
- method public void setFormat24Hour(java.lang.CharSequence);
- method public void setTimeZone(java.lang.String);
- field public static final deprecated java.lang.CharSequence DEFAULT_FORMAT_12_HOUR;
- field public static final deprecated java.lang.CharSequence DEFAULT_FORMAT_24_HOUR;
+ method public void setFormat12Hour(CharSequence);
+ method public void setFormat24Hour(CharSequence);
+ method public void setTimeZone(String);
+ field @Deprecated public static final CharSequence DEFAULT_FORMAT_12_HOUR;
+ field @Deprecated public static final CharSequence DEFAULT_FORMAT_24_HOUR;
}
public class TextSwitcher extends android.widget.ViewSwitcher {
ctor public TextSwitcher(android.content.Context);
ctor public TextSwitcher(android.content.Context, android.util.AttributeSet);
- method public void setCurrentText(java.lang.CharSequence);
- method public void setText(java.lang.CharSequence);
+ method public void setCurrentText(CharSequence);
+ method public void setText(CharSequence);
}
- public class TextView extends android.view.View implements android.view.ViewTreeObserver.OnPreDrawListener {
+ @android.widget.RemoteViews.RemoteView public class TextView extends android.view.View implements android.view.ViewTreeObserver.OnPreDrawListener {
ctor public TextView(android.content.Context);
- ctor public TextView(android.content.Context, android.util.AttributeSet);
- ctor public TextView(android.content.Context, android.util.AttributeSet, int);
- ctor public TextView(android.content.Context, android.util.AttributeSet, int, int);
+ ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet);
+ ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet, int);
+ ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet, int, int);
method public void addTextChangedListener(android.text.TextWatcher);
- method public final void append(java.lang.CharSequence);
- method public void append(java.lang.CharSequence, int, int);
+ method public final void append(CharSequence);
+ method public void append(CharSequence, int, int);
method public void beginBatchEdit();
method public boolean bringPointIntoView(int);
method public void clearComposingText();
@@ -56576,38 +56694,38 @@
method public int getCompoundDrawablePadding();
method public android.content.res.ColorStateList getCompoundDrawableTintList();
method public android.graphics.PorterDuff.Mode getCompoundDrawableTintMode();
- method public android.graphics.drawable.Drawable[] getCompoundDrawables();
- method public android.graphics.drawable.Drawable[] getCompoundDrawablesRelative();
+ method @NonNull public android.graphics.drawable.Drawable[] getCompoundDrawables();
+ method @NonNull public android.graphics.drawable.Drawable[] getCompoundDrawablesRelative();
method public int getCompoundPaddingBottom();
method public int getCompoundPaddingEnd();
method public int getCompoundPaddingLeft();
method public int getCompoundPaddingRight();
method public int getCompoundPaddingStart();
method public int getCompoundPaddingTop();
- method public final int getCurrentHintTextColor();
- method public final int getCurrentTextColor();
+ method @ColorInt public final int getCurrentHintTextColor();
+ method @ColorInt public final int getCurrentTextColor();
method public android.view.ActionMode.Callback getCustomInsertionActionModeCallback();
method public android.view.ActionMode.Callback getCustomSelectionActionModeCallback();
method protected boolean getDefaultEditable();
method protected android.text.method.MovementMethod getDefaultMovementMethod();
method public android.text.Editable getEditableText();
- method public android.text.TextUtils.TruncateAt getEllipsize();
- method public java.lang.CharSequence getError();
+ method @android.view.ViewDebug.ExportedProperty public android.text.TextUtils.TruncateAt getEllipsize();
+ method public CharSequence getError();
method public int getExtendedPaddingBottom();
method public int getExtendedPaddingTop();
method public android.text.InputFilter[] getFilters();
method public int getFirstBaselineToTopHeight();
- method public java.lang.String getFontFeatureSettings();
- method public java.lang.String getFontVariationSettings();
+ method @Nullable public String getFontFeatureSettings();
+ method @Nullable public String getFontVariationSettings();
method public boolean getFreezesText();
method public int getGravity();
- method public int getHighlightColor();
- method public java.lang.CharSequence getHint();
+ method @ColorInt public int getHighlightColor();
+ method @android.view.ViewDebug.CapturedViewProperty public CharSequence getHint();
method public final android.content.res.ColorStateList getHintTextColors();
method public int getHyphenationFrequency();
method public int getImeActionId();
- method public java.lang.CharSequence getImeActionLabel();
- method public android.os.LocaleList getImeHintLocales();
+ method public CharSequence getImeActionLabel();
+ method @Nullable public android.os.LocaleList getImeHintLocales();
method public int getImeOptions();
method public boolean getIncludeFontPadding();
method public android.os.Bundle getInputExtras(boolean);
@@ -56637,27 +56755,27 @@
method public int getOffsetForPosition(float, float);
method public android.text.TextPaint getPaint();
method public int getPaintFlags();
- method public java.lang.String getPrivateImeOptions();
- method public int getSelectionEnd();
- method public int getSelectionStart();
- method public int getShadowColor();
+ method public String getPrivateImeOptions();
+ method @android.view.ViewDebug.ExportedProperty(category="text") public int getSelectionEnd();
+ method @android.view.ViewDebug.ExportedProperty(category="text") public int getSelectionStart();
+ method @ColorInt public int getShadowColor();
method public float getShadowDx();
method public float getShadowDy();
method public float getShadowRadius();
method public final boolean getShowSoftInputOnFocus();
- method public java.lang.CharSequence getText();
- method public android.view.textclassifier.TextClassifier getTextClassifier();
+ method @android.view.ViewDebug.CapturedViewProperty public CharSequence getText();
+ method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
method public final android.content.res.ColorStateList getTextColors();
- method public android.graphics.drawable.Drawable getTextCursorDrawable();
+ method @Nullable public android.graphics.drawable.Drawable getTextCursorDrawable();
method public android.text.TextDirectionHeuristic getTextDirectionHeuristic();
- method public java.util.Locale getTextLocale();
- method public android.os.LocaleList getTextLocales();
- method public android.text.PrecomputedText.Params getTextMetricsParams();
+ method @NonNull public java.util.Locale getTextLocale();
+ method @NonNull @Size(min=1) public android.os.LocaleList getTextLocales();
+ method @NonNull public android.text.PrecomputedText.Params getTextMetricsParams();
method public float getTextScaleX();
- method public android.graphics.drawable.Drawable getTextSelectHandle();
- method public android.graphics.drawable.Drawable getTextSelectHandleLeft();
- method public android.graphics.drawable.Drawable getTextSelectHandleRight();
- method public float getTextSize();
+ method @Nullable public android.graphics.drawable.Drawable getTextSelectHandle();
+ method @Nullable public android.graphics.drawable.Drawable getTextSelectHandleLeft();
+ method @Nullable public android.graphics.drawable.Drawable getTextSelectHandleRight();
+ method @android.view.ViewDebug.ExportedProperty(category="text") public float getTextSize();
method public int getTotalPaddingBottom();
method public int getTotalPaddingEnd();
method public int getTotalPaddingLeft();
@@ -56685,28 +56803,28 @@
method public void onEditorAction(int);
method public void onEndBatchEdit();
method public boolean onPreDraw();
- method public boolean onPrivateIMECommand(java.lang.String, android.os.Bundle);
+ method public boolean onPrivateIMECommand(String, android.os.Bundle);
method public void onRestoreInstanceState(android.os.Parcelable);
method public android.os.Parcelable onSaveInstanceState();
method protected void onSelectionChanged(int, int);
- method protected void onTextChanged(java.lang.CharSequence, int, int, int);
+ method protected void onTextChanged(CharSequence, int, int, int);
method public boolean onTextContextMenuItem(int);
method public void removeTextChangedListener(android.text.TextWatcher);
method public void setAllCaps(boolean);
method public final void setAutoLinkMask(int);
method public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int);
- method public void setAutoSizeTextTypeUniformWithPresetSizes(int[], int);
+ method public void setAutoSizeTextTypeUniformWithPresetSizes(@NonNull int[], int);
method public void setAutoSizeTextTypeWithDefaults(int);
method public void setBreakStrategy(int);
method public void setCompoundDrawablePadding(int);
- method public void setCompoundDrawableTintList(android.content.res.ColorStateList);
- method public void setCompoundDrawableTintMode(android.graphics.PorterDuff.Mode);
- method public void setCompoundDrawables(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
- method public void setCompoundDrawablesRelative(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
- method public void setCompoundDrawablesRelativeWithIntrinsicBounds(int, int, int, int);
- method public void setCompoundDrawablesRelativeWithIntrinsicBounds(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
- method public void setCompoundDrawablesWithIntrinsicBounds(int, int, int, int);
- method public void setCompoundDrawablesWithIntrinsicBounds(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
+ method public void setCompoundDrawableTintList(@Nullable android.content.res.ColorStateList);
+ method public void setCompoundDrawableTintMode(@Nullable android.graphics.PorterDuff.Mode);
+ method public void setCompoundDrawables(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+ method public void setCompoundDrawablesRelative(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+ method public void setCompoundDrawablesRelativeWithIntrinsicBounds(@DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
+ method public void setCompoundDrawablesRelativeWithIntrinsicBounds(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+ method public void setCompoundDrawablesWithIntrinsicBounds(@DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
+ method public void setCompoundDrawablesWithIntrinsicBounds(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
method public void setCursorVisible(boolean);
method public void setCustomInsertionActionModeCallback(android.view.ActionMode.Callback);
method public void setCustomSelectionActionModeCallback(android.view.ActionMode.Callback);
@@ -56714,39 +56832,39 @@
method public void setElegantTextHeight(boolean);
method public void setEllipsize(android.text.TextUtils.TruncateAt);
method public void setEms(int);
- method public void setError(java.lang.CharSequence);
- method public void setError(java.lang.CharSequence, android.graphics.drawable.Drawable);
+ method public void setError(CharSequence);
+ method public void setError(CharSequence, android.graphics.drawable.Drawable);
method public void setExtractedText(android.view.inputmethod.ExtractedText);
method public void setFallbackLineSpacing(boolean);
method public void setFilters(android.text.InputFilter[]);
- method public void setFirstBaselineToTopHeight(int);
- method public void setFontFeatureSettings(java.lang.String);
- method public boolean setFontVariationSettings(java.lang.String);
+ method public void setFirstBaselineToTopHeight(@Px @IntRange(from=0) int);
+ method public void setFontFeatureSettings(@Nullable String);
+ method public boolean setFontVariationSettings(@Nullable String);
method protected boolean setFrame(int, int, int, int);
method public void setFreezesText(boolean);
method public void setGravity(int);
method public void setHeight(int);
- method public void setHighlightColor(int);
- method public final void setHint(java.lang.CharSequence);
- method public final void setHint(int);
- method public final void setHintTextColor(int);
+ method public void setHighlightColor(@ColorInt int);
+ method public final void setHint(CharSequence);
+ method public final void setHint(@StringRes int);
+ method public final void setHintTextColor(@ColorInt int);
method public final void setHintTextColor(android.content.res.ColorStateList);
method public void setHorizontallyScrolling(boolean);
method public void setHyphenationFrequency(int);
- method public void setImeActionLabel(java.lang.CharSequence, int);
- method public void setImeHintLocales(android.os.LocaleList);
+ method public void setImeActionLabel(CharSequence, int);
+ method public void setImeHintLocales(@Nullable android.os.LocaleList);
method public void setImeOptions(int);
method public void setIncludeFontPadding(boolean);
- method public void setInputExtras(int) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public void setInputExtras(@XmlRes int) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
method public void setInputType(int);
method public void setJustificationMode(int);
method public void setKeyListener(android.text.method.KeyListener);
- method public void setLastBaselineToBottomHeight(int);
+ method public void setLastBaselineToBottomHeight(@Px @IntRange(from=0) int);
method public void setLetterSpacing(float);
- method public void setLineHeight(int);
+ method public void setLineHeight(@Px @IntRange(from=0) int);
method public void setLineSpacing(float, float);
method public void setLines(int);
- method public final void setLinkTextColor(int);
+ method public final void setLinkTextColor(@ColorInt int);
method public final void setLinkTextColor(android.content.res.ColorStateList);
method public final void setLinksClickable(boolean);
method public void setMarqueeRepeatLimit(int);
@@ -56761,7 +56879,7 @@
method public final void setMovementMethod(android.text.method.MovementMethod);
method public void setOnEditorActionListener(android.widget.TextView.OnEditorActionListener);
method public void setPaintFlags(int);
- method public void setPrivateImeOptions(java.lang.String);
+ method public void setPrivateImeOptions(String);
method public void setRawInputType(int);
method public void setScroller(android.widget.Scroller);
method public void setSelectAllOnFocus(boolean);
@@ -56770,60 +56888,58 @@
method public void setSingleLine();
method public void setSingleLine(boolean);
method public final void setSpannableFactory(android.text.Spannable.Factory);
- method public final void setText(java.lang.CharSequence);
- method public void setText(java.lang.CharSequence, android.widget.TextView.BufferType);
+ method public final void setText(CharSequence);
+ method public void setText(CharSequence, android.widget.TextView.BufferType);
method public final void setText(char[], int, int);
- method public final void setText(int);
- method public final void setText(int, android.widget.TextView.BufferType);
- method public void setTextAppearance(int);
- method public deprecated void setTextAppearance(android.content.Context, int);
- method public void setTextClassifier(android.view.textclassifier.TextClassifier);
- method public void setTextColor(int);
+ method public final void setText(@StringRes int);
+ method public final void setText(@StringRes int, android.widget.TextView.BufferType);
+ method public void setTextAppearance(@StyleRes int);
+ method @Deprecated public void setTextAppearance(android.content.Context, @StyleRes int);
+ method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
+ method public void setTextColor(@ColorInt int);
method public void setTextColor(android.content.res.ColorStateList);
- method public void setTextCursorDrawable(android.graphics.drawable.Drawable);
- method public void setTextCursorDrawable(int);
+ method public void setTextCursorDrawable(@Nullable android.graphics.drawable.Drawable);
+ method public void setTextCursorDrawable(@DrawableRes int);
method public void setTextIsSelectable(boolean);
- method public final void setTextKeepState(java.lang.CharSequence);
- method public final void setTextKeepState(java.lang.CharSequence, android.widget.TextView.BufferType);
- method public void setTextLocale(java.util.Locale);
- method public void setTextLocales(android.os.LocaleList);
- method public void setTextMetricsParams(android.text.PrecomputedText.Params);
+ method public final void setTextKeepState(CharSequence);
+ method public final void setTextKeepState(CharSequence, android.widget.TextView.BufferType);
+ method public void setTextLocale(@NonNull java.util.Locale);
+ method public void setTextLocales(@NonNull @Size(min=1) android.os.LocaleList);
+ method public void setTextMetricsParams(@NonNull android.text.PrecomputedText.Params);
method public void setTextScaleX(float);
- method public void setTextSelectHandle(android.graphics.drawable.Drawable);
- method public void setTextSelectHandle(int);
- method public void setTextSelectHandleLeft(android.graphics.drawable.Drawable);
- method public void setTextSelectHandleLeft(int);
- method public void setTextSelectHandleRight(android.graphics.drawable.Drawable);
- method public void setTextSelectHandleRight(int);
+ method public void setTextSelectHandle(@NonNull android.graphics.drawable.Drawable);
+ method public void setTextSelectHandle(@DrawableRes int);
+ method public void setTextSelectHandleLeft(@NonNull android.graphics.drawable.Drawable);
+ method public void setTextSelectHandleLeft(@DrawableRes int);
+ method public void setTextSelectHandleRight(@NonNull android.graphics.drawable.Drawable);
+ method public void setTextSelectHandleRight(@DrawableRes int);
method public void setTextSize(float);
method public void setTextSize(int, float);
method public final void setTransformationMethod(android.text.method.TransformationMethod);
- method public void setTypeface(android.graphics.Typeface, int);
- method public void setTypeface(android.graphics.Typeface);
+ method public void setTypeface(@Nullable android.graphics.Typeface, int);
+ method public void setTypeface(@Nullable android.graphics.Typeface);
method public void setWidth(int);
field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
}
- public static final class TextView.BufferType extends java.lang.Enum {
- method public static android.widget.TextView.BufferType valueOf(java.lang.String);
- method public static final android.widget.TextView.BufferType[] values();
+ public enum TextView.BufferType {
enum_constant public static final android.widget.TextView.BufferType EDITABLE;
enum_constant public static final android.widget.TextView.BufferType NORMAL;
enum_constant public static final android.widget.TextView.BufferType SPANNABLE;
}
- public static abstract interface TextView.OnEditorActionListener {
- method public abstract boolean onEditorAction(android.widget.TextView, int, android.view.KeyEvent);
+ public static interface TextView.OnEditorActionListener {
+ method public boolean onEditorAction(android.widget.TextView, int, android.view.KeyEvent);
}
public static class TextView.SavedState extends android.view.View.BaseSavedState {
field public static final android.os.Parcelable.Creator<android.widget.TextView.SavedState> CREATOR;
}
- public abstract interface ThemedSpinnerAdapter implements android.widget.SpinnerAdapter {
- method public abstract android.content.res.Resources.Theme getDropDownViewTheme();
- method public abstract void setDropDownViewTheme(android.content.res.Resources.Theme);
+ public interface ThemedSpinnerAdapter extends android.widget.SpinnerAdapter {
+ method @Nullable public android.content.res.Resources.Theme getDropDownViewTheme();
+ method public void setDropDownViewTheme(@Nullable android.content.res.Resources.Theme);
}
public class TimePicker extends android.widget.FrameLayout {
@@ -56831,22 +56947,22 @@
ctor public TimePicker(android.content.Context, android.util.AttributeSet);
ctor public TimePicker(android.content.Context, android.util.AttributeSet, int);
ctor public TimePicker(android.content.Context, android.util.AttributeSet, int, int);
- method public deprecated java.lang.Integer getCurrentHour();
- method public deprecated java.lang.Integer getCurrentMinute();
+ method @Deprecated @NonNull public Integer getCurrentHour();
+ method @Deprecated @NonNull public Integer getCurrentMinute();
method public int getHour();
method public int getMinute();
method public boolean is24HourView();
- method public deprecated void setCurrentHour(java.lang.Integer);
- method public deprecated void setCurrentMinute(java.lang.Integer);
- method public void setHour(int);
- method public void setIs24HourView(java.lang.Boolean);
- method public void setMinute(int);
+ method @Deprecated public void setCurrentHour(@NonNull Integer);
+ method @Deprecated public void setCurrentMinute(@NonNull Integer);
+ method public void setHour(@IntRange(from=0, to=23) int);
+ method public void setIs24HourView(@NonNull Boolean);
+ method public void setMinute(@IntRange(from=0, to=59) int);
method public void setOnTimeChangedListener(android.widget.TimePicker.OnTimeChangedListener);
method public boolean validateInput();
}
- public static abstract interface TimePicker.OnTimeChangedListener {
- method public abstract void onTimeChanged(android.widget.TimePicker, int, int);
+ public static interface TimePicker.OnTimeChangedListener {
+ method public void onTimeChanged(android.widget.TimePicker, int, int);
}
public class Toast {
@@ -56859,13 +56975,13 @@
method public android.view.View getView();
method public int getXOffset();
method public int getYOffset();
- method public static android.widget.Toast makeText(android.content.Context, java.lang.CharSequence, int);
- method public static android.widget.Toast makeText(android.content.Context, int, int) throws android.content.res.Resources.NotFoundException;
+ method public static android.widget.Toast makeText(android.content.Context, CharSequence, int);
+ method public static android.widget.Toast makeText(android.content.Context, @StringRes int, int) throws android.content.res.Resources.NotFoundException;
method public void setDuration(int);
method public void setGravity(int, int, int);
method public void setMargin(float, float);
- method public void setText(int);
- method public void setText(java.lang.CharSequence);
+ method public void setText(@StringRes int);
+ method public void setText(CharSequence);
method public void setView(android.view.View);
method public void show();
field public static final int LENGTH_LONG = 1; // 0x1
@@ -56877,11 +56993,11 @@
ctor public ToggleButton(android.content.Context, android.util.AttributeSet, int);
ctor public ToggleButton(android.content.Context, android.util.AttributeSet);
ctor public ToggleButton(android.content.Context);
- method public java.lang.CharSequence getTextOff();
- method public java.lang.CharSequence getTextOn();
+ method public CharSequence getTextOff();
+ method public CharSequence getTextOn();
method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
- method public void setTextOff(java.lang.CharSequence);
- method public void setTextOn(java.lang.CharSequence);
+ method public void setTextOff(CharSequence);
+ method public void setTextOn(CharSequence);
}
public class Toolbar extends android.view.ViewGroup {
@@ -56894,8 +57010,8 @@
method protected android.widget.Toolbar.LayoutParams generateDefaultLayoutParams();
method public android.widget.Toolbar.LayoutParams generateLayoutParams(android.util.AttributeSet);
method protected android.widget.Toolbar.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
- method public java.lang.CharSequence getCollapseContentDescription();
- method public android.graphics.drawable.Drawable getCollapseIcon();
+ method @Nullable public CharSequence getCollapseContentDescription();
+ method @Nullable public android.graphics.drawable.Drawable getCollapseIcon();
method public int getContentInsetEnd();
method public int getContentInsetEndWithActions();
method public int getContentInsetLeft();
@@ -56907,60 +57023,60 @@
method public int getCurrentContentInsetRight();
method public int getCurrentContentInsetStart();
method public android.graphics.drawable.Drawable getLogo();
- method public java.lang.CharSequence getLogoDescription();
+ method public CharSequence getLogoDescription();
method public android.view.Menu getMenu();
- method public java.lang.CharSequence getNavigationContentDescription();
- method public android.graphics.drawable.Drawable getNavigationIcon();
- method public android.graphics.drawable.Drawable getOverflowIcon();
+ method @Nullable public CharSequence getNavigationContentDescription();
+ method @Nullable public android.graphics.drawable.Drawable getNavigationIcon();
+ method @Nullable public android.graphics.drawable.Drawable getOverflowIcon();
method public int getPopupTheme();
- method public java.lang.CharSequence getSubtitle();
- method public java.lang.CharSequence getTitle();
+ method public CharSequence getSubtitle();
+ method public CharSequence getTitle();
method public int getTitleMarginBottom();
method public int getTitleMarginEnd();
method public int getTitleMarginStart();
method public int getTitleMarginTop();
method public boolean hasExpandedActionView();
method public boolean hideOverflowMenu();
- method public void inflateMenu(int);
+ method public void inflateMenu(@MenuRes int);
method public boolean isOverflowMenuShowing();
- method public void setCollapseContentDescription(int);
- method public void setCollapseContentDescription(java.lang.CharSequence);
- method public void setCollapseIcon(int);
- method public void setCollapseIcon(android.graphics.drawable.Drawable);
+ method public void setCollapseContentDescription(@StringRes int);
+ method public void setCollapseContentDescription(@Nullable CharSequence);
+ method public void setCollapseIcon(@DrawableRes int);
+ method public void setCollapseIcon(@Nullable android.graphics.drawable.Drawable);
method public void setContentInsetEndWithActions(int);
method public void setContentInsetStartWithNavigation(int);
method public void setContentInsetsAbsolute(int, int);
method public void setContentInsetsRelative(int, int);
- method public void setLogo(int);
+ method public void setLogo(@DrawableRes int);
method public void setLogo(android.graphics.drawable.Drawable);
- method public void setLogoDescription(int);
- method public void setLogoDescription(java.lang.CharSequence);
- method public void setNavigationContentDescription(int);
- method public void setNavigationContentDescription(java.lang.CharSequence);
- method public void setNavigationIcon(int);
- method public void setNavigationIcon(android.graphics.drawable.Drawable);
+ method public void setLogoDescription(@StringRes int);
+ method public void setLogoDescription(CharSequence);
+ method public void setNavigationContentDescription(@StringRes int);
+ method public void setNavigationContentDescription(@Nullable CharSequence);
+ method public void setNavigationIcon(@DrawableRes int);
+ method public void setNavigationIcon(@Nullable android.graphics.drawable.Drawable);
method public void setNavigationOnClickListener(android.view.View.OnClickListener);
method public void setOnMenuItemClickListener(android.widget.Toolbar.OnMenuItemClickListener);
- method public void setOverflowIcon(android.graphics.drawable.Drawable);
- method public void setPopupTheme(int);
- method public void setSubtitle(int);
- method public void setSubtitle(java.lang.CharSequence);
- method public void setSubtitleTextAppearance(android.content.Context, int);
- method public void setSubtitleTextColor(int);
- method public void setTitle(int);
- method public void setTitle(java.lang.CharSequence);
+ method public void setOverflowIcon(@Nullable android.graphics.drawable.Drawable);
+ method public void setPopupTheme(@StyleRes int);
+ method public void setSubtitle(@StringRes int);
+ method public void setSubtitle(CharSequence);
+ method public void setSubtitleTextAppearance(android.content.Context, @StyleRes int);
+ method public void setSubtitleTextColor(@ColorInt int);
+ method public void setTitle(@StringRes int);
+ method public void setTitle(CharSequence);
method public void setTitleMargin(int, int, int, int);
method public void setTitleMarginBottom(int);
method public void setTitleMarginEnd(int);
method public void setTitleMarginStart(int);
method public void setTitleMarginTop(int);
- method public void setTitleTextAppearance(android.content.Context, int);
- method public void setTitleTextColor(int);
+ method public void setTitleTextAppearance(android.content.Context, @StyleRes int);
+ method public void setTitleTextColor(@ColorInt int);
method public boolean showOverflowMenu();
}
public static class Toolbar.LayoutParams extends android.app.ActionBar.LayoutParams {
- ctor public Toolbar.LayoutParams(android.content.Context, android.util.AttributeSet);
+ ctor public Toolbar.LayoutParams(@NonNull android.content.Context, android.util.AttributeSet);
ctor public Toolbar.LayoutParams(int, int);
ctor public Toolbar.LayoutParams(int, int, int);
ctor public Toolbar.LayoutParams(int);
@@ -56970,17 +57086,17 @@
ctor public Toolbar.LayoutParams(android.view.ViewGroup.LayoutParams);
}
- public static abstract interface Toolbar.OnMenuItemClickListener {
- method public abstract boolean onMenuItemClick(android.view.MenuItem);
+ public static interface Toolbar.OnMenuItemClickListener {
+ method public boolean onMenuItemClick(android.view.MenuItem);
}
- public deprecated class TwoLineListItem extends android.widget.RelativeLayout {
- ctor public TwoLineListItem(android.content.Context);
- ctor public TwoLineListItem(android.content.Context, android.util.AttributeSet);
- ctor public TwoLineListItem(android.content.Context, android.util.AttributeSet, int);
- ctor public TwoLineListItem(android.content.Context, android.util.AttributeSet, int, int);
- method public android.widget.TextView getText1();
- method public android.widget.TextView getText2();
+ @Deprecated public class TwoLineListItem extends android.widget.RelativeLayout {
+ ctor @Deprecated public TwoLineListItem(android.content.Context);
+ ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet, int, int);
+ method @Deprecated public android.widget.TextView getText1();
+ method @Deprecated public android.widget.TextView getText2();
}
public class VideoView extends android.view.SurfaceView implements android.widget.MediaController.MediaPlayerControl {
@@ -57001,16 +57117,16 @@
method public int resolveAdjustedSize(int, int);
method public void resume();
method public void seekTo(int);
- method public void setAudioAttributes(android.media.AudioAttributes);
+ method public void setAudioAttributes(@NonNull android.media.AudioAttributes);
method public void setAudioFocusRequest(int);
method public void setMediaController(android.widget.MediaController);
method public void setOnCompletionListener(android.media.MediaPlayer.OnCompletionListener);
method public void setOnErrorListener(android.media.MediaPlayer.OnErrorListener);
method public void setOnInfoListener(android.media.MediaPlayer.OnInfoListener);
method public void setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener);
- method public void setVideoPath(java.lang.String);
+ method public void setVideoPath(String);
method public void setVideoURI(android.net.Uri);
- method public void setVideoURI(android.net.Uri, java.util.Map<java.lang.String, java.lang.String>);
+ method public void setVideoURI(android.net.Uri, java.util.Map<java.lang.String,java.lang.String>);
method public void start();
method public void stopPlayback();
method public void suspend();
@@ -57027,14 +57143,14 @@
method public void setAnimateFirstView(boolean);
method public void setDisplayedChild(int);
method public void setInAnimation(android.view.animation.Animation);
- method public void setInAnimation(android.content.Context, int);
+ method public void setInAnimation(android.content.Context, @AnimRes int);
method public void setOutAnimation(android.view.animation.Animation);
- method public void setOutAnimation(android.content.Context, int);
+ method public void setOutAnimation(android.content.Context, @AnimRes int);
method public void showNext();
method public void showPrevious();
}
- public class ViewFlipper extends android.widget.ViewAnimator {
+ @android.widget.RemoteViews.RemoteView public class ViewFlipper extends android.widget.ViewAnimator {
ctor public ViewFlipper(android.content.Context);
ctor public ViewFlipper(android.content.Context, android.util.AttributeSet);
method public boolean isAutoStart();
@@ -57053,42 +57169,42 @@
method public void setFactory(android.widget.ViewSwitcher.ViewFactory);
}
- public static abstract interface ViewSwitcher.ViewFactory {
- method public abstract android.view.View makeView();
+ public static interface ViewSwitcher.ViewFactory {
+ method public android.view.View makeView();
}
- public abstract interface WrapperListAdapter implements android.widget.ListAdapter {
- method public abstract android.widget.ListAdapter getWrappedAdapter();
+ public interface WrapperListAdapter extends android.widget.ListAdapter {
+ method public android.widget.ListAdapter getWrappedAdapter();
}
- public deprecated class ZoomButton extends android.widget.ImageButton implements android.view.View.OnLongClickListener {
- ctor public ZoomButton(android.content.Context);
- ctor public ZoomButton(android.content.Context, android.util.AttributeSet);
- ctor public ZoomButton(android.content.Context, android.util.AttributeSet, int);
- ctor public ZoomButton(android.content.Context, android.util.AttributeSet, int, int);
- method public boolean onLongClick(android.view.View);
- method public void setZoomSpeed(long);
+ @Deprecated public class ZoomButton extends android.widget.ImageButton implements android.view.View.OnLongClickListener {
+ ctor @Deprecated public ZoomButton(android.content.Context);
+ ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet);
+ ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet, int);
+ ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet, int, int);
+ method @Deprecated public boolean onLongClick(android.view.View);
+ method @Deprecated public void setZoomSpeed(long);
}
- public deprecated class ZoomButtonsController implements android.view.View.OnTouchListener {
- ctor public ZoomButtonsController(android.view.View);
- method public android.view.ViewGroup getContainer();
- method public android.view.View getZoomControls();
- method public boolean isAutoDismissed();
- method public boolean isVisible();
+ @Deprecated public class ZoomButtonsController implements android.view.View.OnTouchListener {
+ ctor @Deprecated public ZoomButtonsController(android.view.View);
+ method @Deprecated public android.view.ViewGroup getContainer();
+ method @Deprecated public android.view.View getZoomControls();
+ method @Deprecated public boolean isAutoDismissed();
+ method @Deprecated public boolean isVisible();
method public boolean onTouch(android.view.View, android.view.MotionEvent);
- method public void setAutoDismissed(boolean);
- method public void setFocusable(boolean);
- method public void setOnZoomListener(android.widget.ZoomButtonsController.OnZoomListener);
- method public void setVisible(boolean);
- method public void setZoomInEnabled(boolean);
- method public void setZoomOutEnabled(boolean);
- method public void setZoomSpeed(long);
+ method @Deprecated public void setAutoDismissed(boolean);
+ method @Deprecated public void setFocusable(boolean);
+ method @Deprecated public void setOnZoomListener(android.widget.ZoomButtonsController.OnZoomListener);
+ method @Deprecated public void setVisible(boolean);
+ method @Deprecated public void setZoomInEnabled(boolean);
+ method @Deprecated public void setZoomOutEnabled(boolean);
+ method @Deprecated public void setZoomSpeed(long);
}
- public static abstract interface ZoomButtonsController.OnZoomListener {
- method public abstract void onVisibilityChanged(boolean);
- method public abstract void onZoom(boolean);
+ @Deprecated public static interface ZoomButtonsController.OnZoomListener {
+ method @Deprecated public void onVisibilityChanged(boolean);
+ method @Deprecated public void onZoom(boolean);
}
public class ZoomControls extends android.widget.LinearLayout {
@@ -57107,10 +57223,14 @@
package dalvik.annotation {
- public abstract deprecated class TestTarget implements java.lang.annotation.Annotation {
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.ANNOTATION_TYPE}) public @interface TestTarget {
+ method @Deprecated public abstract String conceptName() default "";
+ method @Deprecated public abstract Class<?>[] methodArgs() default {};
+ method @Deprecated public abstract String methodName() default "";
}
- public abstract deprecated class TestTargetClass implements java.lang.annotation.Annotation {
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public @interface TestTargetClass {
+ method @Deprecated public abstract Class<?> value();
}
}
@@ -57122,7 +57242,7 @@
field public static final int MAXIMUM_VALUE;
}
- public abstract interface Opcodes {
+ public interface Opcodes {
field public static final int OP_ADD_DOUBLE = 171; // 0xab
field public static final int OP_ADD_DOUBLE_2ADDR = 203; // 0xcb
field public static final int OP_ADD_FLOAT = 166; // 0xa6
@@ -57154,7 +57274,7 @@
field public static final int OP_APUT_SHORT = 81; // 0x51
field public static final int OP_APUT_WIDE = 76; // 0x4c
field public static final int OP_ARRAY_LENGTH = 33; // 0x21
- field public static final deprecated int OP_BREAKPOINT = 236; // 0xec
+ field @Deprecated public static final int OP_BREAKPOINT = 236; // 0xec
field public static final int OP_CHECK_CAST = 31; // 0x1f
field public static final int OP_CHECK_CAST_JUMBO = 511; // 0x1ff
field public static final int OP_CMPG_DOUBLE = 48; // 0x30
@@ -57189,8 +57309,8 @@
field public static final int OP_DOUBLE_TO_FLOAT = 140; // 0x8c
field public static final int OP_DOUBLE_TO_INT = 138; // 0x8a
field public static final int OP_DOUBLE_TO_LONG = 139; // 0x8b
- field public static final deprecated int OP_EXECUTE_INLINE = 238; // 0xee
- field public static final deprecated int OP_EXECUTE_INLINE_RANGE = 239; // 0xef
+ field @Deprecated public static final int OP_EXECUTE_INLINE = 238; // 0xee
+ field @Deprecated public static final int OP_EXECUTE_INLINE_RANGE = 239; // 0xef
field public static final int OP_FILLED_NEW_ARRAY = 36; // 0x24
field public static final int OP_FILLED_NEW_ARRAY_JUMBO = 1535; // 0x5ff
field public static final int OP_FILLED_NEW_ARRAY_RANGE = 37; // 0x25
@@ -57223,14 +57343,14 @@
field public static final int OP_IGET_JUMBO = 1791; // 0x6ff
field public static final int OP_IGET_OBJECT = 84; // 0x54
field public static final int OP_IGET_OBJECT_JUMBO = 2303; // 0x8ff
- field public static final deprecated int OP_IGET_OBJECT_QUICK = 244; // 0xf4
- field public static final deprecated int OP_IGET_QUICK = 242; // 0xf2
+ field @Deprecated public static final int OP_IGET_OBJECT_QUICK = 244; // 0xf4
+ field @Deprecated public static final int OP_IGET_QUICK = 242; // 0xf2
field public static final int OP_IGET_SHORT = 88; // 0x58
field public static final int OP_IGET_SHORT_JUMBO = 3327; // 0xcff
field public static final int OP_IGET_WIDE = 83; // 0x53
field public static final int OP_IGET_WIDE_JUMBO = 2047; // 0x7ff
- field public static final deprecated int OP_IGET_WIDE_QUICK = 243; // 0xf3
- field public static final deprecated int OP_IGET_WIDE_VOLATILE = 232; // 0xe8
+ field @Deprecated public static final int OP_IGET_WIDE_QUICK = 243; // 0xf3
+ field @Deprecated public static final int OP_IGET_WIDE_VOLATILE = 232; // 0xe8
field public static final int OP_INSTANCE_OF = 32; // 0x20
field public static final int OP_INSTANCE_OF_JUMBO = 767; // 0x2ff
field public static final int OP_INT_TO_BYTE = 141; // 0x8d
@@ -57242,7 +57362,7 @@
field public static final int OP_INVOKE_CUSTOM = 252; // 0xfc
field public static final int OP_INVOKE_CUSTOM_RANGE = 253; // 0xfd
field public static final int OP_INVOKE_DIRECT = 112; // 0x70
- field public static final deprecated int OP_INVOKE_DIRECT_EMPTY = 240; // 0xf0
+ field @Deprecated public static final int OP_INVOKE_DIRECT_EMPTY = 240; // 0xf0
field public static final int OP_INVOKE_DIRECT_JUMBO = 9471; // 0x24ff
field public static final int OP_INVOKE_DIRECT_RANGE = 118; // 0x76
field public static final int OP_INVOKE_INTERFACE = 114; // 0x72
@@ -57255,13 +57375,13 @@
field public static final int OP_INVOKE_STATIC_RANGE = 119; // 0x77
field public static final int OP_INVOKE_SUPER = 111; // 0x6f
field public static final int OP_INVOKE_SUPER_JUMBO = 9215; // 0x23ff
- field public static final deprecated int OP_INVOKE_SUPER_QUICK = 250; // 0xfa
- field public static final deprecated int OP_INVOKE_SUPER_QUICK_RANGE = 251; // 0xfb
+ field @Deprecated public static final int OP_INVOKE_SUPER_QUICK = 250; // 0xfa
+ field @Deprecated public static final int OP_INVOKE_SUPER_QUICK_RANGE = 251; // 0xfb
field public static final int OP_INVOKE_SUPER_RANGE = 117; // 0x75
field public static final int OP_INVOKE_VIRTUAL = 110; // 0x6e
field public static final int OP_INVOKE_VIRTUAL_JUMBO = 8959; // 0x22ff
- field public static final deprecated int OP_INVOKE_VIRTUAL_QUICK = 248; // 0xf8
- field public static final deprecated int OP_INVOKE_VIRTUAL_QUICK_RANGE = 249; // 0xf9
+ field @Deprecated public static final int OP_INVOKE_VIRTUAL_QUICK = 248; // 0xf8
+ field @Deprecated public static final int OP_INVOKE_VIRTUAL_QUICK_RANGE = 249; // 0xf9
field public static final int OP_INVOKE_VIRTUAL_RANGE = 116; // 0x74
field public static final int OP_IPUT = 89; // 0x59
field public static final int OP_IPUT_BOOLEAN = 92; // 0x5c
@@ -57273,14 +57393,14 @@
field public static final int OP_IPUT_JUMBO = 3583; // 0xdff
field public static final int OP_IPUT_OBJECT = 91; // 0x5b
field public static final int OP_IPUT_OBJECT_JUMBO = 4095; // 0xfff
- field public static final deprecated int OP_IPUT_OBJECT_QUICK = 247; // 0xf7
- field public static final deprecated int OP_IPUT_QUICK = 245; // 0xf5
+ field @Deprecated public static final int OP_IPUT_OBJECT_QUICK = 247; // 0xf7
+ field @Deprecated public static final int OP_IPUT_QUICK = 245; // 0xf5
field public static final int OP_IPUT_SHORT = 95; // 0x5f
field public static final int OP_IPUT_SHORT_JUMBO = 5119; // 0x13ff
field public static final int OP_IPUT_WIDE = 90; // 0x5a
field public static final int OP_IPUT_WIDE_JUMBO = 3839; // 0xeff
- field public static final deprecated int OP_IPUT_WIDE_QUICK = 246; // 0xf6
- field public static final deprecated int OP_IPUT_WIDE_VOLATILE = 233; // 0xe9
+ field @Deprecated public static final int OP_IPUT_WIDE_QUICK = 246; // 0xf6
+ field @Deprecated public static final int OP_IPUT_WIDE_VOLATILE = 233; // 0xe9
field public static final int OP_LONG_TO_DOUBLE = 134; // 0x86
field public static final int OP_LONG_TO_FLOAT = 133; // 0x85
field public static final int OP_LONG_TO_INT = 132; // 0x84
@@ -57357,7 +57477,7 @@
field public static final int OP_SGET_SHORT_JUMBO = 6911; // 0x1aff
field public static final int OP_SGET_WIDE = 97; // 0x61
field public static final int OP_SGET_WIDE_JUMBO = 5631; // 0x15ff
- field public static final deprecated int OP_SGET_WIDE_VOLATILE = 234; // 0xea
+ field @Deprecated public static final int OP_SGET_WIDE_VOLATILE = 234; // 0xea
field public static final int OP_SHL_INT = 152; // 0x98
field public static final int OP_SHL_INT_2ADDR = 184; // 0xb8
field public static final int OP_SHL_INT_LIT8 = 224; // 0xe0
@@ -57383,7 +57503,7 @@
field public static final int OP_SPUT_SHORT_JUMBO = 8703; // 0x21ff
field public static final int OP_SPUT_WIDE = 104; // 0x68
field public static final int OP_SPUT_WIDE_JUMBO = 7423; // 0x1cff
- field public static final deprecated int OP_SPUT_WIDE_VOLATILE = 235; // 0xeb
+ field @Deprecated public static final int OP_SPUT_WIDE_VOLATILE = 235; // 0xeb
field public static final int OP_SUB_DOUBLE = 172; // 0xac
field public static final int OP_SUB_DOUBLE_2ADDR = 204; // 0xcc
field public static final int OP_SUB_FLOAT = 167; // 0xa7
@@ -57393,7 +57513,7 @@
field public static final int OP_SUB_LONG = 156; // 0x9c
field public static final int OP_SUB_LONG_2ADDR = 188; // 0xbc
field public static final int OP_THROW = 39; // 0x27
- field public static final deprecated int OP_THROW_VERIFICATION_ERROR = 237; // 0xed
+ field @Deprecated public static final int OP_THROW_VERIFICATION_ERROR = 237; // 0xed
field public static final int OP_USHR_INT = 154; // 0x9a
field public static final int OP_USHR_INT_2ADDR = 186; // 0xba
field public static final int OP_USHR_INT_LIT8 = 226; // 0xe2
@@ -57412,42 +57532,41 @@
package dalvik.system {
public class BaseDexClassLoader extends java.lang.ClassLoader {
- ctor public BaseDexClassLoader(java.lang.String, java.io.File, java.lang.String, java.lang.ClassLoader);
- method public java.lang.String findLibrary(java.lang.String);
- method protected java.util.Enumeration<java.net.URL> findResources(java.lang.String);
- method protected synchronized java.lang.Package getPackage(java.lang.String);
+ ctor public BaseDexClassLoader(String, java.io.File, String, ClassLoader);
+ method public String findLibrary(String);
+ method protected java.util.Enumeration<java.net.URL> findResources(String);
}
public final class DelegateLastClassLoader extends dalvik.system.PathClassLoader {
- ctor public DelegateLastClassLoader(java.lang.String, java.lang.ClassLoader);
- ctor public DelegateLastClassLoader(java.lang.String, java.lang.String, java.lang.ClassLoader);
- ctor public DelegateLastClassLoader(java.lang.String, java.lang.String, java.lang.ClassLoader, boolean);
+ ctor public DelegateLastClassLoader(String, ClassLoader);
+ ctor public DelegateLastClassLoader(String, String, ClassLoader);
+ ctor public DelegateLastClassLoader(String, String, ClassLoader, boolean);
}
public class DexClassLoader extends dalvik.system.BaseDexClassLoader {
- ctor public DexClassLoader(java.lang.String, java.lang.String, java.lang.String, java.lang.ClassLoader);
+ ctor public DexClassLoader(String, String, String, ClassLoader);
}
- public final deprecated class DexFile {
- ctor public deprecated DexFile(java.io.File) throws java.io.IOException;
- ctor public deprecated DexFile(java.lang.String) throws java.io.IOException;
- method public void close() throws java.io.IOException;
- method public java.util.Enumeration<java.lang.String> entries();
- method public java.lang.String getName();
- method public static boolean isDexOptNeeded(java.lang.String) throws java.io.FileNotFoundException, java.io.IOException;
- method public java.lang.Class loadClass(java.lang.String, java.lang.ClassLoader);
- method public static deprecated dalvik.system.DexFile loadDex(java.lang.String, java.lang.String, int) throws java.io.IOException;
+ @Deprecated public final class DexFile {
+ ctor @Deprecated public DexFile(java.io.File) throws java.io.IOException;
+ ctor @Deprecated public DexFile(String) throws java.io.IOException;
+ method @Deprecated public void close() throws java.io.IOException;
+ method @Deprecated public java.util.Enumeration<java.lang.String> entries();
+ method @Deprecated public String getName();
+ method @Deprecated public static boolean isDexOptNeeded(String) throws java.io.FileNotFoundException, java.io.IOException;
+ method @Deprecated public Class loadClass(String, ClassLoader);
+ method @Deprecated public static dalvik.system.DexFile loadDex(String, String, int) throws java.io.IOException;
}
public final class InMemoryDexClassLoader extends dalvik.system.BaseDexClassLoader {
- ctor public InMemoryDexClassLoader(java.nio.ByteBuffer[], java.lang.String, java.lang.ClassLoader);
- ctor public InMemoryDexClassLoader(java.nio.ByteBuffer[], java.lang.ClassLoader);
- ctor public InMemoryDexClassLoader(java.nio.ByteBuffer, java.lang.ClassLoader);
+ ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer[], @Nullable String, @Nullable ClassLoader);
+ ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer[], @Nullable ClassLoader);
+ ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer, @Nullable ClassLoader);
}
public class PathClassLoader extends dalvik.system.BaseDexClassLoader {
- ctor public PathClassLoader(java.lang.String, java.lang.ClassLoader);
- ctor public PathClassLoader(java.lang.String, java.lang.String, java.lang.ClassLoader);
+ ctor public PathClassLoader(String, ClassLoader);
+ ctor public PathClassLoader(String, String, ClassLoader);
}
}
@@ -57489,9 +57608,7 @@
field public static final int TIBETAN = 16384; // 0x4000
}
- public static class NumericShaper.Range extends java.lang.Enum {
- method public static java.awt.font.NumericShaper.Range valueOf(java.lang.String);
- method public static final java.awt.font.NumericShaper.Range[] values();
+ public enum NumericShaper.Range {
enum_constant public static final java.awt.font.NumericShaper.Range ARABIC;
enum_constant public static final java.awt.font.NumericShaper.Range BALINESE;
enum_constant public static final java.awt.font.NumericShaper.Range BENGALI;
@@ -57530,7 +57647,7 @@
}
public final class TextAttribute extends java.text.AttributedCharacterIterator.Attribute {
- ctor protected TextAttribute(java.lang.String);
+ ctor protected TextAttribute(String);
field public static final java.awt.font.TextAttribute BACKGROUND;
field public static final java.awt.font.TextAttribute BIDI_EMBEDDING;
field public static final java.awt.font.TextAttribute CHAR_REPLACEMENT;
@@ -57540,56 +57657,56 @@
field public static final java.awt.font.TextAttribute INPUT_METHOD_HIGHLIGHT;
field public static final java.awt.font.TextAttribute INPUT_METHOD_UNDERLINE;
field public static final java.awt.font.TextAttribute JUSTIFICATION;
- field public static final java.lang.Float JUSTIFICATION_FULL;
- field public static final java.lang.Float JUSTIFICATION_NONE;
+ field public static final Float JUSTIFICATION_FULL;
+ field public static final Float JUSTIFICATION_NONE;
field public static final java.awt.font.TextAttribute KERNING;
- field public static final java.lang.Integer KERNING_ON;
+ field public static final Integer KERNING_ON;
field public static final java.awt.font.TextAttribute LIGATURES;
- field public static final java.lang.Integer LIGATURES_ON;
+ field public static final Integer LIGATURES_ON;
field public static final java.awt.font.TextAttribute NUMERIC_SHAPING;
field public static final java.awt.font.TextAttribute POSTURE;
- field public static final java.lang.Float POSTURE_OBLIQUE;
- field public static final java.lang.Float POSTURE_REGULAR;
+ field public static final Float POSTURE_OBLIQUE;
+ field public static final Float POSTURE_REGULAR;
field public static final java.awt.font.TextAttribute RUN_DIRECTION;
- field public static final java.lang.Boolean RUN_DIRECTION_LTR;
- field public static final java.lang.Boolean RUN_DIRECTION_RTL;
+ field public static final Boolean RUN_DIRECTION_LTR;
+ field public static final Boolean RUN_DIRECTION_RTL;
field public static final java.awt.font.TextAttribute SIZE;
field public static final java.awt.font.TextAttribute STRIKETHROUGH;
- field public static final java.lang.Boolean STRIKETHROUGH_ON;
+ field public static final Boolean STRIKETHROUGH_ON;
field public static final java.awt.font.TextAttribute SUPERSCRIPT;
- field public static final java.lang.Integer SUPERSCRIPT_SUB;
- field public static final java.lang.Integer SUPERSCRIPT_SUPER;
+ field public static final Integer SUPERSCRIPT_SUB;
+ field public static final Integer SUPERSCRIPT_SUPER;
field public static final java.awt.font.TextAttribute SWAP_COLORS;
- field public static final java.lang.Boolean SWAP_COLORS_ON;
+ field public static final Boolean SWAP_COLORS_ON;
field public static final java.awt.font.TextAttribute TRACKING;
- field public static final java.lang.Float TRACKING_LOOSE;
- field public static final java.lang.Float TRACKING_TIGHT;
+ field public static final Float TRACKING_LOOSE;
+ field public static final Float TRACKING_TIGHT;
field public static final java.awt.font.TextAttribute TRANSFORM;
field public static final java.awt.font.TextAttribute UNDERLINE;
- field public static final java.lang.Integer UNDERLINE_LOW_DASHED;
- field public static final java.lang.Integer UNDERLINE_LOW_DOTTED;
- field public static final java.lang.Integer UNDERLINE_LOW_GRAY;
- field public static final java.lang.Integer UNDERLINE_LOW_ONE_PIXEL;
- field public static final java.lang.Integer UNDERLINE_LOW_TWO_PIXEL;
- field public static final java.lang.Integer UNDERLINE_ON;
+ field public static final Integer UNDERLINE_LOW_DASHED;
+ field public static final Integer UNDERLINE_LOW_DOTTED;
+ field public static final Integer UNDERLINE_LOW_GRAY;
+ field public static final Integer UNDERLINE_LOW_ONE_PIXEL;
+ field public static final Integer UNDERLINE_LOW_TWO_PIXEL;
+ field public static final Integer UNDERLINE_ON;
field public static final java.awt.font.TextAttribute WEIGHT;
- field public static final java.lang.Float WEIGHT_BOLD;
- field public static final java.lang.Float WEIGHT_DEMIBOLD;
- field public static final java.lang.Float WEIGHT_DEMILIGHT;
- field public static final java.lang.Float WEIGHT_EXTRABOLD;
- field public static final java.lang.Float WEIGHT_EXTRA_LIGHT;
- field public static final java.lang.Float WEIGHT_HEAVY;
- field public static final java.lang.Float WEIGHT_LIGHT;
- field public static final java.lang.Float WEIGHT_MEDIUM;
- field public static final java.lang.Float WEIGHT_REGULAR;
- field public static final java.lang.Float WEIGHT_SEMIBOLD;
- field public static final java.lang.Float WEIGHT_ULTRABOLD;
+ field public static final Float WEIGHT_BOLD;
+ field public static final Float WEIGHT_DEMIBOLD;
+ field public static final Float WEIGHT_DEMILIGHT;
+ field public static final Float WEIGHT_EXTRABOLD;
+ field public static final Float WEIGHT_EXTRA_LIGHT;
+ field public static final Float WEIGHT_HEAVY;
+ field public static final Float WEIGHT_LIGHT;
+ field public static final Float WEIGHT_MEDIUM;
+ field public static final Float WEIGHT_REGULAR;
+ field public static final Float WEIGHT_SEMIBOLD;
+ field public static final Float WEIGHT_ULTRABOLD;
field public static final java.awt.font.TextAttribute WIDTH;
- field public static final java.lang.Float WIDTH_CONDENSED;
- field public static final java.lang.Float WIDTH_EXTENDED;
- field public static final java.lang.Float WIDTH_REGULAR;
- field public static final java.lang.Float WIDTH_SEMI_CONDENSED;
- field public static final java.lang.Float WIDTH_SEMI_EXTENDED;
+ field public static final Float WIDTH_CONDENSED;
+ field public static final Float WIDTH_EXTENDED;
+ field public static final Float WIDTH_REGULAR;
+ field public static final Float WIDTH_SEMI_CONDENSED;
+ field public static final Float WIDTH_SEMI_EXTENDED;
}
}
@@ -57597,45 +57714,45 @@
package java.beans {
public class IndexedPropertyChangeEvent extends java.beans.PropertyChangeEvent {
- ctor public IndexedPropertyChangeEvent(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object, int);
+ ctor public IndexedPropertyChangeEvent(Object, String, Object, Object, int);
method public int getIndex();
}
public class PropertyChangeEvent extends java.util.EventObject {
- ctor public PropertyChangeEvent(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object);
- method public java.lang.Object getNewValue();
- method public java.lang.Object getOldValue();
- method public java.lang.Object getPropagationId();
- method public java.lang.String getPropertyName();
- method public void setPropagationId(java.lang.Object);
+ ctor public PropertyChangeEvent(Object, String, Object, Object);
+ method public Object getNewValue();
+ method public Object getOldValue();
+ method public Object getPropagationId();
+ method public String getPropertyName();
+ method public void setPropagationId(Object);
}
- public abstract interface PropertyChangeListener implements java.util.EventListener {
- method public abstract void propertyChange(java.beans.PropertyChangeEvent);
+ public interface PropertyChangeListener extends java.util.EventListener {
+ method public void propertyChange(java.beans.PropertyChangeEvent);
}
- public class PropertyChangeListenerProxy extends java.util.EventListenerProxy implements java.beans.PropertyChangeListener {
- ctor public PropertyChangeListenerProxy(java.lang.String, java.beans.PropertyChangeListener);
- method public java.lang.String getPropertyName();
+ public class PropertyChangeListenerProxy extends java.util.EventListenerProxy<java.beans.PropertyChangeListener> implements java.beans.PropertyChangeListener {
+ ctor public PropertyChangeListenerProxy(String, java.beans.PropertyChangeListener);
+ method public String getPropertyName();
method public void propertyChange(java.beans.PropertyChangeEvent);
}
public class PropertyChangeSupport implements java.io.Serializable {
- ctor public PropertyChangeSupport(java.lang.Object);
+ ctor public PropertyChangeSupport(Object);
method public void addPropertyChangeListener(java.beans.PropertyChangeListener);
- method public void addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener);
- method public void fireIndexedPropertyChange(java.lang.String, int, java.lang.Object, java.lang.Object);
- method public void fireIndexedPropertyChange(java.lang.String, int, int, int);
- method public void fireIndexedPropertyChange(java.lang.String, int, boolean, boolean);
- method public void firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object);
- method public void firePropertyChange(java.lang.String, int, int);
- method public void firePropertyChange(java.lang.String, boolean, boolean);
+ method public void addPropertyChangeListener(String, java.beans.PropertyChangeListener);
+ method public void fireIndexedPropertyChange(String, int, Object, Object);
+ method public void fireIndexedPropertyChange(String, int, int, int);
+ method public void fireIndexedPropertyChange(String, int, boolean, boolean);
+ method public void firePropertyChange(String, Object, Object);
+ method public void firePropertyChange(String, int, int);
+ method public void firePropertyChange(String, boolean, boolean);
method public void firePropertyChange(java.beans.PropertyChangeEvent);
method public java.beans.PropertyChangeListener[] getPropertyChangeListeners();
- method public java.beans.PropertyChangeListener[] getPropertyChangeListeners(java.lang.String);
- method public boolean hasListeners(java.lang.String);
+ method public java.beans.PropertyChangeListener[] getPropertyChangeListeners(String);
+ method public boolean hasListeners(String);
method public void removePropertyChangeListener(java.beans.PropertyChangeListener);
- method public void removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener);
+ method public void removePropertyChangeListener(String, java.beans.PropertyChangeListener);
}
}
@@ -57645,10 +57762,6 @@
public class BufferedInputStream extends java.io.FilterInputStream {
ctor public BufferedInputStream(java.io.InputStream);
ctor public BufferedInputStream(java.io.InputStream, int);
- method public synchronized int available() throws java.io.IOException;
- method public synchronized int read() throws java.io.IOException;
- method public synchronized int read(byte[], int, int) throws java.io.IOException;
- method public synchronized long skip(long) throws java.io.IOException;
field protected volatile byte[] buf;
field protected int count;
field protected int marklimit;
@@ -57659,9 +57772,6 @@
public class BufferedOutputStream extends java.io.FilterOutputStream {
ctor public BufferedOutputStream(java.io.OutputStream);
ctor public BufferedOutputStream(java.io.OutputStream, int);
- method public synchronized void flush() throws java.io.IOException;
- method public synchronized void write(int) throws java.io.IOException;
- method public synchronized void write(byte[], int, int) throws java.io.IOException;
field protected byte[] buf;
field protected int count;
}
@@ -57672,7 +57782,7 @@
method public void close() throws java.io.IOException;
method public java.util.stream.Stream<java.lang.String> lines();
method public int read(char[], int, int) throws java.io.IOException;
- method public java.lang.String readLine() throws java.io.IOException;
+ method public String readLine() throws java.io.IOException;
}
public class BufferedWriter extends java.io.Writer {
@@ -57687,12 +57797,11 @@
public class ByteArrayInputStream extends java.io.InputStream {
ctor public ByteArrayInputStream(byte[]);
ctor public ByteArrayInputStream(byte[], int, int);
- method public synchronized int available();
- method public void mark(int);
- method public synchronized int read();
- method public synchronized int read(byte[], int, int);
- method public synchronized void reset();
- method public synchronized long skip(long);
+ method public int available();
+ method public int read();
+ method public int read(byte[], int, int);
+ method public void reset();
+ method public long skip(long);
field protected byte[] buf;
field protected int count;
field protected int mark;
@@ -57702,15 +57811,14 @@
public class ByteArrayOutputStream extends java.io.OutputStream {
ctor public ByteArrayOutputStream();
ctor public ByteArrayOutputStream(int);
- method public synchronized void reset();
- method public synchronized int size();
- method public synchronized byte[] toByteArray();
- method public synchronized java.lang.String toString();
- method public synchronized java.lang.String toString(java.lang.String) throws java.io.UnsupportedEncodingException;
- method public deprecated synchronized java.lang.String toString(int);
- method public synchronized void write(int);
- method public synchronized void write(byte[], int, int);
- method public synchronized void writeTo(java.io.OutputStream) throws java.io.IOException;
+ method public void reset();
+ method public int size();
+ method public byte[] toByteArray();
+ method @NonNull public String toString(@NonNull String) throws java.io.UnsupportedEncodingException;
+ method @Deprecated @NonNull public String toString(int);
+ method public void write(int);
+ method public void write(byte[], int, int);
+ method public void writeTo(@NonNull java.io.OutputStream) throws java.io.IOException;
field protected byte[] buf;
field protected int count;
}
@@ -57729,8 +57837,8 @@
public class CharArrayWriter extends java.io.Writer {
ctor public CharArrayWriter();
ctor public CharArrayWriter(int);
- method public java.io.CharArrayWriter append(java.lang.CharSequence);
- method public java.io.CharArrayWriter append(java.lang.CharSequence, int, int);
+ method public java.io.CharArrayWriter append(CharSequence);
+ method public java.io.CharArrayWriter append(CharSequence, int, int);
method public java.io.CharArrayWriter append(char);
method public void close();
method public void flush();
@@ -57739,7 +57847,7 @@
method public char[] toCharArray();
method public void write(int);
method public void write(char[], int, int);
- method public void write(java.lang.String, int, int);
+ method public void write(String, int, int);
method public void writeTo(java.io.Writer) throws java.io.IOException;
field protected char[] buf;
field protected int count;
@@ -57747,41 +57855,41 @@
public class CharConversionException extends java.io.IOException {
ctor public CharConversionException();
- ctor public CharConversionException(java.lang.String);
+ ctor public CharConversionException(String);
}
- public abstract interface Closeable implements java.lang.AutoCloseable {
- method public abstract void close() throws java.io.IOException;
+ public interface Closeable extends java.lang.AutoCloseable {
+ method public void close() throws java.io.IOException;
}
public final class Console implements java.io.Flushable {
method public void flush();
- method public java.io.Console format(java.lang.String, java.lang.Object...);
- method public java.io.Console printf(java.lang.String, java.lang.Object...);
- method public java.lang.String readLine(java.lang.String, java.lang.Object...);
- method public java.lang.String readLine();
- method public char[] readPassword(java.lang.String, java.lang.Object...);
+ method public java.io.Console format(String, java.lang.Object...);
+ method public java.io.Console printf(String, java.lang.Object...);
+ method public String readLine(String, java.lang.Object...);
+ method public String readLine();
+ method public char[] readPassword(String, java.lang.Object...);
method public char[] readPassword();
method public java.io.Reader reader();
method public java.io.PrintWriter writer();
}
- public abstract interface DataInput {
- method public abstract boolean readBoolean() throws java.io.IOException;
- method public abstract byte readByte() throws java.io.IOException;
- method public abstract char readChar() throws java.io.IOException;
- method public abstract double readDouble() throws java.io.IOException;
- method public abstract float readFloat() throws java.io.IOException;
- method public abstract void readFully(byte[]) throws java.io.IOException;
- method public abstract void readFully(byte[], int, int) throws java.io.IOException;
- method public abstract int readInt() throws java.io.IOException;
- method public abstract java.lang.String readLine() throws java.io.IOException;
- method public abstract long readLong() throws java.io.IOException;
- method public abstract short readShort() throws java.io.IOException;
- method public abstract java.lang.String readUTF() throws java.io.IOException;
- method public abstract int readUnsignedByte() throws java.io.IOException;
- method public abstract int readUnsignedShort() throws java.io.IOException;
- method public abstract int skipBytes(int) throws java.io.IOException;
+ public interface DataInput {
+ method public boolean readBoolean() throws java.io.IOException;
+ method public byte readByte() throws java.io.IOException;
+ method public char readChar() throws java.io.IOException;
+ method public double readDouble() throws java.io.IOException;
+ method public float readFloat() throws java.io.IOException;
+ method public void readFully(byte[]) throws java.io.IOException;
+ method public void readFully(byte[], int, int) throws java.io.IOException;
+ method public int readInt() throws java.io.IOException;
+ method public String readLine() throws java.io.IOException;
+ method public long readLong() throws java.io.IOException;
+ method public short readShort() throws java.io.IOException;
+ method public String readUTF() throws java.io.IOException;
+ method public int readUnsignedByte() throws java.io.IOException;
+ method public int readUnsignedShort() throws java.io.IOException;
+ method public int skipBytes(int) throws java.io.IOException;
}
public class DataInputStream extends java.io.FilterInputStream implements java.io.DataInput {
@@ -57796,86 +57904,84 @@
method public final void readFully(byte[]) throws java.io.IOException;
method public final void readFully(byte[], int, int) throws java.io.IOException;
method public final int readInt() throws java.io.IOException;
- method public final deprecated java.lang.String readLine() throws java.io.IOException;
+ method @Deprecated public final String readLine() throws java.io.IOException;
method public final long readLong() throws java.io.IOException;
method public final short readShort() throws java.io.IOException;
- method public final java.lang.String readUTF() throws java.io.IOException;
- method public static final java.lang.String readUTF(java.io.DataInput) throws java.io.IOException;
+ method public final String readUTF() throws java.io.IOException;
+ method public static final String readUTF(java.io.DataInput) throws java.io.IOException;
method public final int readUnsignedByte() throws java.io.IOException;
method public final int readUnsignedShort() throws java.io.IOException;
method public final int skipBytes(int) throws java.io.IOException;
}
- public abstract interface DataOutput {
- method public abstract void write(int) throws java.io.IOException;
- method public abstract void write(byte[]) throws java.io.IOException;
- method public abstract void write(byte[], int, int) throws java.io.IOException;
- method public abstract void writeBoolean(boolean) throws java.io.IOException;
- method public abstract void writeByte(int) throws java.io.IOException;
- method public abstract void writeBytes(java.lang.String) throws java.io.IOException;
- method public abstract void writeChar(int) throws java.io.IOException;
- method public abstract void writeChars(java.lang.String) throws java.io.IOException;
- method public abstract void writeDouble(double) throws java.io.IOException;
- method public abstract void writeFloat(float) throws java.io.IOException;
- method public abstract void writeInt(int) throws java.io.IOException;
- method public abstract void writeLong(long) throws java.io.IOException;
- method public abstract void writeShort(int) throws java.io.IOException;
- method public abstract void writeUTF(java.lang.String) throws java.io.IOException;
+ public interface DataOutput {
+ method public void write(int) throws java.io.IOException;
+ method public void write(byte[]) throws java.io.IOException;
+ method public void write(byte[], int, int) throws java.io.IOException;
+ method public void writeBoolean(boolean) throws java.io.IOException;
+ method public void writeByte(int) throws java.io.IOException;
+ method public void writeBytes(String) throws java.io.IOException;
+ method public void writeChar(int) throws java.io.IOException;
+ method public void writeChars(String) throws java.io.IOException;
+ method public void writeDouble(double) throws java.io.IOException;
+ method public void writeFloat(float) throws java.io.IOException;
+ method public void writeInt(int) throws java.io.IOException;
+ method public void writeLong(long) throws java.io.IOException;
+ method public void writeShort(int) throws java.io.IOException;
+ method public void writeUTF(String) throws java.io.IOException;
}
public class DataOutputStream extends java.io.FilterOutputStream implements java.io.DataOutput {
ctor public DataOutputStream(java.io.OutputStream);
method public final int size();
- method public synchronized void write(int) throws java.io.IOException;
- method public synchronized void write(byte[], int, int) throws java.io.IOException;
method public final void writeBoolean(boolean) throws java.io.IOException;
method public final void writeByte(int) throws java.io.IOException;
- method public final void writeBytes(java.lang.String) throws java.io.IOException;
+ method public final void writeBytes(String) throws java.io.IOException;
method public final void writeChar(int) throws java.io.IOException;
- method public final void writeChars(java.lang.String) throws java.io.IOException;
+ method public final void writeChars(String) throws java.io.IOException;
method public final void writeDouble(double) throws java.io.IOException;
method public final void writeFloat(float) throws java.io.IOException;
method public final void writeInt(int) throws java.io.IOException;
method public final void writeLong(long) throws java.io.IOException;
method public final void writeShort(int) throws java.io.IOException;
- method public final void writeUTF(java.lang.String) throws java.io.IOException;
+ method public final void writeUTF(String) throws java.io.IOException;
field protected int written;
}
public class EOFException extends java.io.IOException {
ctor public EOFException();
- ctor public EOFException(java.lang.String);
+ ctor public EOFException(String);
}
- public abstract interface Externalizable implements java.io.Serializable {
- method public abstract void readExternal(java.io.ObjectInput) throws java.lang.ClassNotFoundException, java.io.IOException;
- method public abstract void writeExternal(java.io.ObjectOutput) throws java.io.IOException;
+ public interface Externalizable extends java.io.Serializable {
+ method public void readExternal(java.io.ObjectInput) throws java.lang.ClassNotFoundException, java.io.IOException;
+ method public void writeExternal(java.io.ObjectOutput) throws java.io.IOException;
}
- public class File implements java.lang.Comparable java.io.Serializable {
- ctor public File(java.lang.String);
- ctor public File(java.lang.String, java.lang.String);
- ctor public File(java.io.File, java.lang.String);
- ctor public File(java.net.URI);
+ public class File implements java.lang.Comparable<java.io.File> java.io.Serializable {
+ ctor public File(@NonNull String);
+ ctor public File(@Nullable String, @NonNull String);
+ ctor public File(@Nullable java.io.File, @NonNull String);
+ ctor public File(@NonNull java.net.URI);
method public boolean canExecute();
method public boolean canRead();
method public boolean canWrite();
- method public int compareTo(java.io.File);
+ method public int compareTo(@NonNull java.io.File);
method public boolean createNewFile() throws java.io.IOException;
- method public static java.io.File createTempFile(java.lang.String, java.lang.String, java.io.File) throws java.io.IOException;
- method public static java.io.File createTempFile(java.lang.String, java.lang.String) throws java.io.IOException;
+ method @NonNull public static java.io.File createTempFile(@NonNull String, @Nullable String, @Nullable java.io.File) throws java.io.IOException;
+ method @NonNull public static java.io.File createTempFile(@NonNull String, @Nullable String) throws java.io.IOException;
method public boolean delete();
method public void deleteOnExit();
method public boolean exists();
- method public java.io.File getAbsoluteFile();
- method public java.lang.String getAbsolutePath();
- method public java.io.File getCanonicalFile() throws java.io.IOException;
- method public java.lang.String getCanonicalPath() throws java.io.IOException;
+ method @NonNull public java.io.File getAbsoluteFile();
+ method @NonNull public String getAbsolutePath();
+ method @NonNull public java.io.File getCanonicalFile() throws java.io.IOException;
+ method @NonNull public String getCanonicalPath() throws java.io.IOException;
method public long getFreeSpace();
- method public java.lang.String getName();
- method public java.lang.String getParent();
- method public java.io.File getParentFile();
- method public java.lang.String getPath();
+ method @NonNull public String getName();
+ method @Nullable public String getParent();
+ method @Nullable public java.io.File getParentFile();
+ method @NonNull public String getPath();
method public long getTotalSpace();
method public long getUsableSpace();
method public boolean isAbsolute();
@@ -57884,15 +57990,15 @@
method public boolean isHidden();
method public long lastModified();
method public long length();
- method public java.lang.String[] list();
- method public java.lang.String[] list(java.io.FilenameFilter);
+ method public String[] list();
+ method public String[] list(@Nullable java.io.FilenameFilter);
method public java.io.File[] listFiles();
- method public java.io.File[] listFiles(java.io.FilenameFilter);
- method public java.io.File[] listFiles(java.io.FileFilter);
+ method public java.io.File[] listFiles(@Nullable java.io.FilenameFilter);
+ method public java.io.File[] listFiles(@Nullable java.io.FileFilter);
method public static java.io.File[] listRoots();
method public boolean mkdir();
method public boolean mkdirs();
- method public boolean renameTo(java.io.File);
+ method public boolean renameTo(@NonNull java.io.File);
method public boolean setExecutable(boolean, boolean);
method public boolean setExecutable(boolean);
method public boolean setLastModified(long);
@@ -57901,12 +58007,12 @@
method public boolean setReadable(boolean);
method public boolean setWritable(boolean, boolean);
method public boolean setWritable(boolean);
- method public java.nio.file.Path toPath();
- method public java.net.URI toURI();
- method public deprecated java.net.URL toURL() throws java.net.MalformedURLException;
- field public static final java.lang.String pathSeparator;
+ method @NonNull public java.nio.file.Path toPath();
+ method @NonNull public java.net.URI toURI();
+ method @Deprecated @NonNull public java.net.URL toURL() throws java.net.MalformedURLException;
+ field @NonNull public static final String pathSeparator;
field public static final char pathSeparatorChar;
- field public static final java.lang.String separator;
+ field @NonNull public static final String separator;
field public static final char separatorChar;
}
@@ -57919,12 +58025,12 @@
field public static final java.io.FileDescriptor out;
}
- public abstract interface FileFilter {
- method public abstract boolean accept(java.io.File);
+ @java.lang.FunctionalInterface public interface FileFilter {
+ method public boolean accept(java.io.File);
}
public class FileInputStream extends java.io.InputStream {
- ctor public FileInputStream(java.lang.String) throws java.io.FileNotFoundException;
+ ctor public FileInputStream(String) throws java.io.FileNotFoundException;
ctor public FileInputStream(java.io.File) throws java.io.FileNotFoundException;
ctor public FileInputStream(java.io.FileDescriptor);
method protected void finalize() throws java.io.IOException;
@@ -57935,12 +58041,12 @@
public class FileNotFoundException extends java.io.IOException {
ctor public FileNotFoundException();
- ctor public FileNotFoundException(java.lang.String);
+ ctor public FileNotFoundException(String);
}
public class FileOutputStream extends java.io.OutputStream {
- ctor public FileOutputStream(java.lang.String) throws java.io.FileNotFoundException;
- ctor public FileOutputStream(java.lang.String, boolean) throws java.io.FileNotFoundException;
+ ctor public FileOutputStream(String) throws java.io.FileNotFoundException;
+ ctor public FileOutputStream(String, boolean) throws java.io.FileNotFoundException;
ctor public FileOutputStream(java.io.File) throws java.io.FileNotFoundException;
ctor public FileOutputStream(java.io.File, boolean) throws java.io.FileNotFoundException;
ctor public FileOutputStream(java.io.FileDescriptor);
@@ -57951,27 +58057,27 @@
}
public final class FilePermission extends java.security.Permission implements java.io.Serializable {
- ctor public FilePermission(java.lang.String, java.lang.String);
- method public java.lang.String getActions();
+ ctor public FilePermission(String, String);
+ method public String getActions();
method public boolean implies(java.security.Permission);
}
public class FileReader extends java.io.InputStreamReader {
- ctor public FileReader(java.lang.String) throws java.io.FileNotFoundException;
+ ctor public FileReader(String) throws java.io.FileNotFoundException;
ctor public FileReader(java.io.File) throws java.io.FileNotFoundException;
ctor public FileReader(java.io.FileDescriptor);
}
public class FileWriter extends java.io.OutputStreamWriter {
- ctor public FileWriter(java.lang.String) throws java.io.IOException;
- ctor public FileWriter(java.lang.String, boolean) throws java.io.IOException;
+ ctor public FileWriter(String) throws java.io.IOException;
+ ctor public FileWriter(String, boolean) throws java.io.IOException;
ctor public FileWriter(java.io.File) throws java.io.IOException;
ctor public FileWriter(java.io.File, boolean) throws java.io.IOException;
ctor public FileWriter(java.io.FileDescriptor);
}
- public abstract interface FilenameFilter {
- method public abstract boolean accept(java.io.File, java.lang.String);
+ @java.lang.FunctionalInterface public interface FilenameFilter {
+ method public boolean accept(java.io.File, String);
}
public class FilterInputStream extends java.io.InputStream {
@@ -58001,66 +58107,64 @@
field protected java.io.Writer out;
}
- public abstract interface Flushable {
- method public abstract void flush() throws java.io.IOException;
+ public interface Flushable {
+ method public void flush() throws java.io.IOException;
}
public class IOError extends java.lang.Error {
- ctor public IOError(java.lang.Throwable);
+ ctor public IOError(Throwable);
}
public class IOException extends java.lang.Exception {
ctor public IOException();
- ctor public IOException(java.lang.String);
- ctor public IOException(java.lang.String, java.lang.Throwable);
- ctor public IOException(java.lang.Throwable);
+ ctor public IOException(String);
+ ctor public IOException(String, Throwable);
+ ctor public IOException(Throwable);
}
public abstract class InputStream implements java.io.Closeable {
ctor public InputStream();
method public int available() throws java.io.IOException;
method public void close() throws java.io.IOException;
- method public synchronized void mark(int);
+ method public void mark(int);
method public boolean markSupported();
method public abstract int read() throws java.io.IOException;
method public int read(byte[]) throws java.io.IOException;
method public int read(byte[], int, int) throws java.io.IOException;
- method public synchronized void reset() throws java.io.IOException;
+ method public void reset() throws java.io.IOException;
method public long skip(long) throws java.io.IOException;
}
public class InputStreamReader extends java.io.Reader {
ctor public InputStreamReader(java.io.InputStream);
- ctor public InputStreamReader(java.io.InputStream, java.lang.String) throws java.io.UnsupportedEncodingException;
+ ctor public InputStreamReader(java.io.InputStream, String) throws java.io.UnsupportedEncodingException;
ctor public InputStreamReader(java.io.InputStream, java.nio.charset.Charset);
ctor public InputStreamReader(java.io.InputStream, java.nio.charset.CharsetDecoder);
method public void close() throws java.io.IOException;
- method public java.lang.String getEncoding();
+ method public String getEncoding();
method public int read(char[], int, int) throws java.io.IOException;
}
public class InterruptedIOException extends java.io.IOException {
ctor public InterruptedIOException();
- ctor public InterruptedIOException(java.lang.String);
+ ctor public InterruptedIOException(String);
field public int bytesTransferred;
}
public class InvalidClassException extends java.io.ObjectStreamException {
- ctor public InvalidClassException(java.lang.String);
- ctor public InvalidClassException(java.lang.String, java.lang.String);
- field public java.lang.String classname;
+ ctor public InvalidClassException(String);
+ ctor public InvalidClassException(String, String);
+ field public String classname;
}
public class InvalidObjectException extends java.io.ObjectStreamException {
- ctor public InvalidObjectException(java.lang.String);
+ ctor public InvalidObjectException(String);
}
- public deprecated class LineNumberInputStream extends java.io.FilterInputStream {
- ctor public LineNumberInputStream(java.io.InputStream);
- method public int getLineNumber();
- method public void mark(int);
- method public void reset() throws java.io.IOException;
- method public void setLineNumber(int);
+ @Deprecated public class LineNumberInputStream extends java.io.FilterInputStream {
+ ctor @Deprecated public LineNumberInputStream(java.io.InputStream);
+ method @Deprecated public int getLineNumber();
+ method @Deprecated public void setLineNumber(int);
}
public class LineNumberReader extends java.io.BufferedReader {
@@ -58071,23 +58175,23 @@
}
public class NotActiveException extends java.io.ObjectStreamException {
- ctor public NotActiveException(java.lang.String);
+ ctor public NotActiveException(String);
ctor public NotActiveException();
}
public class NotSerializableException extends java.io.ObjectStreamException {
- ctor public NotSerializableException(java.lang.String);
+ ctor public NotSerializableException(String);
ctor public NotSerializableException();
}
- public abstract interface ObjectInput implements java.lang.AutoCloseable java.io.DataInput {
- method public abstract int available() throws java.io.IOException;
- method public abstract void close() throws java.io.IOException;
- method public abstract int read() throws java.io.IOException;
- method public abstract int read(byte[]) throws java.io.IOException;
- method public abstract int read(byte[], int, int) throws java.io.IOException;
- method public abstract java.lang.Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
- method public abstract long skip(long) throws java.io.IOException;
+ public interface ObjectInput extends java.io.DataInput java.lang.AutoCloseable {
+ method public int available() throws java.io.IOException;
+ method public void close() throws java.io.IOException;
+ method public int read() throws java.io.IOException;
+ method public int read(byte[]) throws java.io.IOException;
+ method public int read(byte[], int, int) throws java.io.IOException;
+ method public Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
+ method public long skip(long) throws java.io.IOException;
}
public class ObjectInputStream extends java.io.InputStream implements java.io.ObjectInput java.io.ObjectStreamConstants {
@@ -58106,106 +58210,106 @@
method public void readFully(byte[]) throws java.io.IOException;
method public void readFully(byte[], int, int) throws java.io.IOException;
method public int readInt() throws java.io.IOException;
- method public deprecated java.lang.String readLine() throws java.io.IOException;
+ method @Deprecated public String readLine() throws java.io.IOException;
method public long readLong() throws java.io.IOException;
- method public final java.lang.Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
- method protected java.lang.Object readObjectOverride() throws java.lang.ClassNotFoundException, java.io.IOException;
+ method public final Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
+ method protected Object readObjectOverride() throws java.lang.ClassNotFoundException, java.io.IOException;
method public short readShort() throws java.io.IOException;
method protected void readStreamHeader() throws java.io.IOException, java.io.StreamCorruptedException;
- method public java.lang.String readUTF() throws java.io.IOException;
- method public java.lang.Object readUnshared() throws java.lang.ClassNotFoundException, java.io.IOException;
+ method public String readUTF() throws java.io.IOException;
+ method public Object readUnshared() throws java.lang.ClassNotFoundException, java.io.IOException;
method public int readUnsignedByte() throws java.io.IOException;
method public int readUnsignedShort() throws java.io.IOException;
method public void registerValidation(java.io.ObjectInputValidation, int) throws java.io.InvalidObjectException, java.io.NotActiveException;
- method protected java.lang.Class<?> resolveClass(java.io.ObjectStreamClass) throws java.lang.ClassNotFoundException, java.io.IOException;
- method protected java.lang.Object resolveObject(java.lang.Object) throws java.io.IOException;
- method protected java.lang.Class<?> resolveProxyClass(java.lang.String[]) throws java.lang.ClassNotFoundException, java.io.IOException;
+ method protected Class<?> resolveClass(java.io.ObjectStreamClass) throws java.lang.ClassNotFoundException, java.io.IOException;
+ method protected Object resolveObject(Object) throws java.io.IOException;
+ method protected Class<?> resolveProxyClass(String[]) throws java.lang.ClassNotFoundException, java.io.IOException;
method public int skipBytes(int) throws java.io.IOException;
}
- public static abstract class ObjectInputStream.GetField {
+ public abstract static class ObjectInputStream.GetField {
ctor public ObjectInputStream.GetField();
- method public abstract boolean defaulted(java.lang.String) throws java.io.IOException;
- method public abstract boolean get(java.lang.String, boolean) throws java.io.IOException;
- method public abstract byte get(java.lang.String, byte) throws java.io.IOException;
- method public abstract char get(java.lang.String, char) throws java.io.IOException;
- method public abstract short get(java.lang.String, short) throws java.io.IOException;
- method public abstract int get(java.lang.String, int) throws java.io.IOException;
- method public abstract long get(java.lang.String, long) throws java.io.IOException;
- method public abstract float get(java.lang.String, float) throws java.io.IOException;
- method public abstract double get(java.lang.String, double) throws java.io.IOException;
- method public abstract java.lang.Object get(java.lang.String, java.lang.Object) throws java.io.IOException;
+ method public abstract boolean defaulted(String) throws java.io.IOException;
+ method public abstract boolean get(String, boolean) throws java.io.IOException;
+ method public abstract byte get(String, byte) throws java.io.IOException;
+ method public abstract char get(String, char) throws java.io.IOException;
+ method public abstract short get(String, short) throws java.io.IOException;
+ method public abstract int get(String, int) throws java.io.IOException;
+ method public abstract long get(String, long) throws java.io.IOException;
+ method public abstract float get(String, float) throws java.io.IOException;
+ method public abstract double get(String, double) throws java.io.IOException;
+ method public abstract Object get(String, Object) throws java.io.IOException;
method public abstract java.io.ObjectStreamClass getObjectStreamClass();
}
- public abstract interface ObjectInputValidation {
- method public abstract void validateObject() throws java.io.InvalidObjectException;
+ public interface ObjectInputValidation {
+ method public void validateObject() throws java.io.InvalidObjectException;
}
- public abstract interface ObjectOutput implements java.lang.AutoCloseable java.io.DataOutput {
- method public abstract void close() throws java.io.IOException;
- method public abstract void flush() throws java.io.IOException;
- method public abstract void writeObject(java.lang.Object) throws java.io.IOException;
+ public interface ObjectOutput extends java.io.DataOutput java.lang.AutoCloseable {
+ method public void close() throws java.io.IOException;
+ method public void flush() throws java.io.IOException;
+ method public void writeObject(Object) throws java.io.IOException;
}
public class ObjectOutputStream extends java.io.OutputStream implements java.io.ObjectOutput java.io.ObjectStreamConstants {
ctor public ObjectOutputStream(java.io.OutputStream) throws java.io.IOException;
ctor protected ObjectOutputStream() throws java.io.IOException, java.lang.SecurityException;
- method protected void annotateClass(java.lang.Class<?>) throws java.io.IOException;
- method protected void annotateProxyClass(java.lang.Class<?>) throws java.io.IOException;
+ method protected void annotateClass(Class<?>) throws java.io.IOException;
+ method protected void annotateProxyClass(Class<?>) throws java.io.IOException;
method public void defaultWriteObject() throws java.io.IOException;
method protected void drain() throws java.io.IOException;
method protected boolean enableReplaceObject(boolean) throws java.lang.SecurityException;
method public java.io.ObjectOutputStream.PutField putFields() throws java.io.IOException;
- method protected java.lang.Object replaceObject(java.lang.Object) throws java.io.IOException;
+ method protected Object replaceObject(Object) throws java.io.IOException;
method public void reset() throws java.io.IOException;
method public void useProtocolVersion(int) throws java.io.IOException;
method public void write(int) throws java.io.IOException;
method public void writeBoolean(boolean) throws java.io.IOException;
method public void writeByte(int) throws java.io.IOException;
- method public void writeBytes(java.lang.String) throws java.io.IOException;
+ method public void writeBytes(String) throws java.io.IOException;
method public void writeChar(int) throws java.io.IOException;
- method public void writeChars(java.lang.String) throws java.io.IOException;
+ method public void writeChars(String) throws java.io.IOException;
method protected void writeClassDescriptor(java.io.ObjectStreamClass) throws java.io.IOException;
method public void writeDouble(double) throws java.io.IOException;
method public void writeFields() throws java.io.IOException;
method public void writeFloat(float) throws java.io.IOException;
method public void writeInt(int) throws java.io.IOException;
method public void writeLong(long) throws java.io.IOException;
- method public final void writeObject(java.lang.Object) throws java.io.IOException;
- method protected void writeObjectOverride(java.lang.Object) throws java.io.IOException;
+ method public final void writeObject(Object) throws java.io.IOException;
+ method protected void writeObjectOverride(Object) throws java.io.IOException;
method public void writeShort(int) throws java.io.IOException;
method protected void writeStreamHeader() throws java.io.IOException;
- method public void writeUTF(java.lang.String) throws java.io.IOException;
- method public void writeUnshared(java.lang.Object) throws java.io.IOException;
+ method public void writeUTF(String) throws java.io.IOException;
+ method public void writeUnshared(Object) throws java.io.IOException;
}
- public static abstract class ObjectOutputStream.PutField {
+ public abstract static class ObjectOutputStream.PutField {
ctor public ObjectOutputStream.PutField();
- method public abstract void put(java.lang.String, boolean);
- method public abstract void put(java.lang.String, byte);
- method public abstract void put(java.lang.String, char);
- method public abstract void put(java.lang.String, short);
- method public abstract void put(java.lang.String, int);
- method public abstract void put(java.lang.String, long);
- method public abstract void put(java.lang.String, float);
- method public abstract void put(java.lang.String, double);
- method public abstract void put(java.lang.String, java.lang.Object);
- method public abstract deprecated void write(java.io.ObjectOutput) throws java.io.IOException;
+ method public abstract void put(String, boolean);
+ method public abstract void put(String, byte);
+ method public abstract void put(String, char);
+ method public abstract void put(String, short);
+ method public abstract void put(String, int);
+ method public abstract void put(String, long);
+ method public abstract void put(String, float);
+ method public abstract void put(String, double);
+ method public abstract void put(String, Object);
+ method @Deprecated public abstract void write(java.io.ObjectOutput) throws java.io.IOException;
}
public class ObjectStreamClass implements java.io.Serializable {
- method public java.lang.Class<?> forClass();
- method public java.io.ObjectStreamField getField(java.lang.String);
+ method public Class<?> forClass();
+ method public java.io.ObjectStreamField getField(String);
method public java.io.ObjectStreamField[] getFields();
- method public java.lang.String getName();
+ method public String getName();
method public long getSerialVersionUID();
- method public static java.io.ObjectStreamClass lookup(java.lang.Class<?>);
- method public static java.io.ObjectStreamClass lookupAny(java.lang.Class<?>);
+ method public static java.io.ObjectStreamClass lookup(Class<?>);
+ method public static java.io.ObjectStreamClass lookupAny(Class<?>);
field public static final java.io.ObjectStreamField[] NO_FIELDS;
}
- public abstract interface ObjectStreamConstants {
+ public interface ObjectStreamConstants {
field public static final int PROTOCOL_VERSION_1 = 1; // 0x1
field public static final int PROTOCOL_VERSION_2 = 2; // 0x2
field public static final byte SC_BLOCK_DATA = 8; // 0x8
@@ -58238,19 +58342,19 @@
}
public abstract class ObjectStreamException extends java.io.IOException {
- ctor protected ObjectStreamException(java.lang.String);
+ ctor protected ObjectStreamException(String);
ctor protected ObjectStreamException();
}
- public class ObjectStreamField implements java.lang.Comparable {
- ctor public ObjectStreamField(java.lang.String, java.lang.Class<?>);
- ctor public ObjectStreamField(java.lang.String, java.lang.Class<?>, boolean);
- method public int compareTo(java.lang.Object);
- method public java.lang.String getName();
+ public class ObjectStreamField implements java.lang.Comparable<java.lang.Object> {
+ ctor public ObjectStreamField(String, Class<?>);
+ ctor public ObjectStreamField(String, Class<?>, boolean);
+ method public int compareTo(Object);
+ method public String getName();
method public int getOffset();
- method public java.lang.Class<?> getType();
+ method public Class<?> getType();
method public char getTypeCode();
- method public java.lang.String getTypeString();
+ method public String getTypeString();
method public boolean isPrimitive();
method public boolean isUnshared();
method protected void setOffset(int);
@@ -58271,13 +58375,13 @@
}
public class OutputStreamWriter extends java.io.Writer {
- ctor public OutputStreamWriter(java.io.OutputStream, java.lang.String) throws java.io.UnsupportedEncodingException;
+ ctor public OutputStreamWriter(java.io.OutputStream, String) throws java.io.UnsupportedEncodingException;
ctor public OutputStreamWriter(java.io.OutputStream);
ctor public OutputStreamWriter(java.io.OutputStream, java.nio.charset.Charset);
ctor public OutputStreamWriter(java.io.OutputStream, java.nio.charset.CharsetEncoder);
method public void close() throws java.io.IOException;
method public void flush() throws java.io.IOException;
- method public java.lang.String getEncoding();
+ method public String getEncoding();
method public void write(char[], int, int) throws java.io.IOException;
}
@@ -58286,11 +58390,9 @@
ctor public PipedInputStream(java.io.PipedOutputStream, int) throws java.io.IOException;
ctor public PipedInputStream();
ctor public PipedInputStream(int);
- method public synchronized int available() throws java.io.IOException;
method public void connect(java.io.PipedOutputStream) throws java.io.IOException;
- method public synchronized int read() throws java.io.IOException;
- method public synchronized int read(byte[], int, int) throws java.io.IOException;
- method protected synchronized void receive(int) throws java.io.IOException;
+ method public int read() throws java.io.IOException;
+ method protected void receive(int) throws java.io.IOException;
field protected static final int PIPE_SIZE = 1024; // 0x400
field protected byte[] buffer;
field protected int in;
@@ -58300,8 +58402,7 @@
public class PipedOutputStream extends java.io.OutputStream {
ctor public PipedOutputStream(java.io.PipedInputStream) throws java.io.IOException;
ctor public PipedOutputStream();
- method public synchronized void connect(java.io.PipedInputStream) throws java.io.IOException;
- method public synchronized void flush() throws java.io.IOException;
+ method public void connect(java.io.PipedInputStream) throws java.io.IOException;
method public void write(int) throws java.io.IOException;
}
@@ -58312,37 +58413,35 @@
ctor public PipedReader(int);
method public void close() throws java.io.IOException;
method public void connect(java.io.PipedWriter) throws java.io.IOException;
- method public synchronized int read() throws java.io.IOException;
- method public synchronized int read(char[], int, int) throws java.io.IOException;
- method public synchronized boolean ready() throws java.io.IOException;
+ method public int read(char[], int, int) throws java.io.IOException;
}
public class PipedWriter extends java.io.Writer {
ctor public PipedWriter(java.io.PipedReader) throws java.io.IOException;
ctor public PipedWriter();
method public void close() throws java.io.IOException;
- method public synchronized void connect(java.io.PipedReader) throws java.io.IOException;
- method public synchronized void flush() throws java.io.IOException;
+ method public void connect(java.io.PipedReader) throws java.io.IOException;
+ method public void flush() throws java.io.IOException;
method public void write(char[], int, int) throws java.io.IOException;
}
public class PrintStream extends java.io.FilterOutputStream implements java.lang.Appendable java.io.Closeable {
ctor public PrintStream(java.io.OutputStream);
ctor public PrintStream(java.io.OutputStream, boolean);
- ctor public PrintStream(java.io.OutputStream, boolean, java.lang.String) throws java.io.UnsupportedEncodingException;
- ctor public PrintStream(java.lang.String) throws java.io.FileNotFoundException;
- ctor public PrintStream(java.lang.String, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+ ctor public PrintStream(java.io.OutputStream, boolean, String) throws java.io.UnsupportedEncodingException;
+ ctor public PrintStream(String) throws java.io.FileNotFoundException;
+ ctor public PrintStream(String, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
ctor public PrintStream(java.io.File) throws java.io.FileNotFoundException;
- ctor public PrintStream(java.io.File, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
- method public java.io.PrintStream append(java.lang.CharSequence);
- method public java.io.PrintStream append(java.lang.CharSequence, int, int);
+ ctor public PrintStream(java.io.File, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+ method public java.io.PrintStream append(CharSequence);
+ method public java.io.PrintStream append(CharSequence, int, int);
method public java.io.PrintStream append(char);
method public boolean checkError();
method protected void clearError();
method public void close();
method public void flush();
- method public java.io.PrintStream format(java.lang.String, java.lang.Object...);
- method public java.io.PrintStream format(java.util.Locale, java.lang.String, java.lang.Object...);
+ method public java.io.PrintStream format(String, java.lang.Object...);
+ method public java.io.PrintStream format(java.util.Locale, String, java.lang.Object...);
method public void print(boolean);
method public void print(char);
method public void print(int);
@@ -58350,10 +58449,10 @@
method public void print(float);
method public void print(double);
method public void print(char[]);
- method public void print(java.lang.String);
- method public void print(java.lang.Object);
- method public java.io.PrintStream printf(java.lang.String, java.lang.Object...);
- method public java.io.PrintStream printf(java.util.Locale, java.lang.String, java.lang.Object...);
+ method public void print(String);
+ method public void print(Object);
+ method public java.io.PrintStream printf(String, java.lang.Object...);
+ method public java.io.PrintStream printf(java.util.Locale, String, java.lang.Object...);
method public void println();
method public void println(boolean);
method public void println(char);
@@ -58362,31 +58461,31 @@
method public void println(float);
method public void println(double);
method public void println(char[]);
- method public void println(java.lang.String);
- method public void println(java.lang.Object);
+ method public void println(String);
+ method public void println(Object);
method protected void setError();
method public void write(int);
method public void write(byte[], int, int);
}
public class PrintWriter extends java.io.Writer {
- ctor public PrintWriter(java.io.Writer);
- ctor public PrintWriter(java.io.Writer, boolean);
- ctor public PrintWriter(java.io.OutputStream);
- ctor public PrintWriter(java.io.OutputStream, boolean);
- ctor public PrintWriter(java.lang.String) throws java.io.FileNotFoundException;
- ctor public PrintWriter(java.lang.String, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
- ctor public PrintWriter(java.io.File) throws java.io.FileNotFoundException;
- ctor public PrintWriter(java.io.File, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
- method public java.io.PrintWriter append(java.lang.CharSequence);
- method public java.io.PrintWriter append(java.lang.CharSequence, int, int);
- method public java.io.PrintWriter append(char);
+ ctor public PrintWriter(@NonNull java.io.Writer);
+ ctor public PrintWriter(@NonNull java.io.Writer, boolean);
+ ctor public PrintWriter(@NonNull java.io.OutputStream);
+ ctor public PrintWriter(@NonNull java.io.OutputStream, boolean);
+ ctor public PrintWriter(@NonNull String) throws java.io.FileNotFoundException;
+ ctor public PrintWriter(@NonNull String, @NonNull String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+ ctor public PrintWriter(@NonNull java.io.File) throws java.io.FileNotFoundException;
+ ctor public PrintWriter(@NonNull java.io.File, @NonNull String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+ method @NonNull public java.io.PrintWriter append(@Nullable CharSequence);
+ method @NonNull public java.io.PrintWriter append(@Nullable CharSequence, int, int);
+ method @NonNull public java.io.PrintWriter append(char);
method public boolean checkError();
method protected void clearError();
method public void close();
method public void flush();
- method public java.io.PrintWriter format(java.lang.String, java.lang.Object...);
- method public java.io.PrintWriter format(java.util.Locale, java.lang.String, java.lang.Object...);
+ method @NonNull public java.io.PrintWriter format(@NonNull String, java.lang.Object...);
+ method @NonNull public java.io.PrintWriter format(@Nullable java.util.Locale, @NonNull String, java.lang.Object...);
method public void print(boolean);
method public void print(char);
method public void print(int);
@@ -58394,10 +58493,10 @@
method public void print(float);
method public void print(double);
method public void print(char[]);
- method public void print(java.lang.String);
- method public void print(java.lang.Object);
- method public java.io.PrintWriter printf(java.lang.String, java.lang.Object...);
- method public java.io.PrintWriter printf(java.util.Locale, java.lang.String, java.lang.Object...);
+ method public void print(@Nullable String);
+ method public void print(@Nullable Object);
+ method @NonNull public java.io.PrintWriter printf(@NonNull String, java.lang.Object...);
+ method @NonNull public java.io.PrintWriter printf(@Nullable java.util.Locale, @NonNull String, java.lang.Object...);
method public void println();
method public void println(boolean);
method public void println(char);
@@ -58406,21 +58505,20 @@
method public void println(float);
method public void println(double);
method public void println(char[]);
- method public void println(java.lang.String);
- method public void println(java.lang.Object);
+ method public void println(@Nullable String);
+ method public void println(@Nullable Object);
method protected void setError();
method public void write(int);
method public void write(char[], int, int);
method public void write(char[]);
- method public void write(java.lang.String, int, int);
- method public void write(java.lang.String);
+ method public void write(@NonNull String, int, int);
+ method public void write(@NonNull String);
field protected java.io.Writer out;
}
public class PushbackInputStream extends java.io.FilterInputStream {
ctor public PushbackInputStream(java.io.InputStream, int);
ctor public PushbackInputStream(java.io.InputStream);
- method public synchronized void close() throws java.io.IOException;
method public void unread(int) throws java.io.IOException;
method public void unread(byte[], int, int) throws java.io.IOException;
method public void unread(byte[]) throws java.io.IOException;
@@ -58437,8 +58535,8 @@
}
public class RandomAccessFile implements java.io.Closeable java.io.DataInput java.io.DataOutput {
- ctor public RandomAccessFile(java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
- ctor public RandomAccessFile(java.io.File, java.lang.String) throws java.io.FileNotFoundException;
+ ctor public RandomAccessFile(String, String) throws java.io.FileNotFoundException;
+ ctor public RandomAccessFile(java.io.File, String) throws java.io.FileNotFoundException;
method public void close() throws java.io.IOException;
method public final java.nio.channels.FileChannel getChannel();
method public final java.io.FileDescriptor getFD() throws java.io.IOException;
@@ -58455,10 +58553,10 @@
method public final void readFully(byte[]) throws java.io.IOException;
method public final void readFully(byte[], int, int) throws java.io.IOException;
method public final int readInt() throws java.io.IOException;
- method public final java.lang.String readLine() throws java.io.IOException;
+ method public final String readLine() throws java.io.IOException;
method public final long readLong() throws java.io.IOException;
method public final short readShort() throws java.io.IOException;
- method public final java.lang.String readUTF() throws java.io.IOException;
+ method public final String readUTF() throws java.io.IOException;
method public final int readUnsignedByte() throws java.io.IOException;
method public final int readUnsignedShort() throws java.io.IOException;
method public void seek(long) throws java.io.IOException;
@@ -58469,20 +58567,20 @@
method public void write(byte[], int, int) throws java.io.IOException;
method public final void writeBoolean(boolean) throws java.io.IOException;
method public final void writeByte(int) throws java.io.IOException;
- method public final void writeBytes(java.lang.String) throws java.io.IOException;
+ method public final void writeBytes(String) throws java.io.IOException;
method public final void writeChar(int) throws java.io.IOException;
- method public final void writeChars(java.lang.String) throws java.io.IOException;
+ method public final void writeChars(String) throws java.io.IOException;
method public final void writeDouble(double) throws java.io.IOException;
method public final void writeFloat(float) throws java.io.IOException;
method public final void writeInt(int) throws java.io.IOException;
method public final void writeLong(long) throws java.io.IOException;
method public final void writeShort(int) throws java.io.IOException;
- method public final void writeUTF(java.lang.String) throws java.io.IOException;
+ method public final void writeUTF(String) throws java.io.IOException;
}
public abstract class Reader implements java.io.Closeable java.lang.Readable {
ctor protected Reader();
- ctor protected Reader(java.lang.Object);
+ ctor protected Reader(Object);
method public void mark(int) throws java.io.IOException;
method public boolean markSupported();
method public int read(java.nio.CharBuffer) throws java.io.IOException;
@@ -58492,7 +58590,7 @@
method public boolean ready() throws java.io.IOException;
method public void reset() throws java.io.IOException;
method public long skip(long) throws java.io.IOException;
- field protected java.lang.Object lock;
+ field protected Object lock;
}
public class SequenceInputStream extends java.io.InputStream {
@@ -58501,21 +58599,21 @@
method public int read() throws java.io.IOException;
}
- public abstract interface Serializable {
+ public interface Serializable {
}
public final class SerializablePermission extends java.security.BasicPermission {
- ctor public SerializablePermission(java.lang.String);
- ctor public SerializablePermission(java.lang.String, java.lang.String);
+ ctor public SerializablePermission(String);
+ ctor public SerializablePermission(String, String);
}
public class StreamCorruptedException extends java.io.ObjectStreamException {
- ctor public StreamCorruptedException(java.lang.String);
+ ctor public StreamCorruptedException(String);
ctor public StreamCorruptedException();
}
public class StreamTokenizer {
- ctor public deprecated StreamTokenizer(java.io.InputStream);
+ ctor @Deprecated public StreamTokenizer(java.io.InputStream);
ctor public StreamTokenizer(java.io.Reader);
method public void commentChar(int);
method public void eolIsSignificant(boolean);
@@ -58537,24 +58635,24 @@
field public static final int TT_NUMBER = -2; // 0xfffffffe
field public static final int TT_WORD = -3; // 0xfffffffd
field public double nval;
- field public java.lang.String sval;
+ field public String sval;
field public int ttype;
}
- public deprecated class StringBufferInputStream extends java.io.InputStream {
- ctor public StringBufferInputStream(java.lang.String);
- method public synchronized int available();
- method public synchronized int read();
- method public synchronized int read(byte[], int, int);
- method public synchronized void reset();
- method public synchronized long skip(long);
- field protected java.lang.String buffer;
- field protected int count;
- field protected int pos;
+ @Deprecated public class StringBufferInputStream extends java.io.InputStream {
+ ctor @Deprecated public StringBufferInputStream(String);
+ method @Deprecated public int available();
+ method @Deprecated public int read();
+ method @Deprecated public int read(byte[], int, int);
+ method @Deprecated public void reset();
+ method @Deprecated public long skip(long);
+ field @Deprecated protected String buffer;
+ field @Deprecated protected int count;
+ field @Deprecated protected int pos;
}
public class StringReader extends java.io.Reader {
- ctor public StringReader(java.lang.String);
+ ctor public StringReader(String);
method public void close();
method public int read(char[], int, int) throws java.io.IOException;
}
@@ -58562,56 +58660,55 @@
public class StringWriter extends java.io.Writer {
ctor public StringWriter();
ctor public StringWriter(int);
- method public java.io.StringWriter append(java.lang.CharSequence);
- method public java.io.StringWriter append(java.lang.CharSequence, int, int);
+ method public java.io.StringWriter append(CharSequence);
+ method public java.io.StringWriter append(CharSequence, int, int);
method public java.io.StringWriter append(char);
method public void close() throws java.io.IOException;
method public void flush();
- method public java.lang.StringBuffer getBuffer();
+ method public StringBuffer getBuffer();
method public void write(int);
method public void write(char[], int, int);
- method public void write(java.lang.String);
- method public void write(java.lang.String, int, int);
+ method public void write(String);
+ method public void write(String, int, int);
}
public class SyncFailedException extends java.io.IOException {
- ctor public SyncFailedException(java.lang.String);
+ ctor public SyncFailedException(String);
}
public class UTFDataFormatException extends java.io.IOException {
ctor public UTFDataFormatException();
- ctor public UTFDataFormatException(java.lang.String);
+ ctor public UTFDataFormatException(String);
}
public class UncheckedIOException extends java.lang.RuntimeException {
- ctor public UncheckedIOException(java.lang.String, java.io.IOException);
+ ctor public UncheckedIOException(String, java.io.IOException);
ctor public UncheckedIOException(java.io.IOException);
method public java.io.IOException getCause();
}
public class UnsupportedEncodingException extends java.io.IOException {
ctor public UnsupportedEncodingException();
- ctor public UnsupportedEncodingException(java.lang.String);
+ ctor public UnsupportedEncodingException(String);
}
public class WriteAbortedException extends java.io.ObjectStreamException {
- ctor public WriteAbortedException(java.lang.String, java.lang.Exception);
- method public java.lang.Throwable getCause();
- field public java.lang.Exception detail;
+ ctor public WriteAbortedException(String, Exception);
+ field public Exception detail;
}
public abstract class Writer implements java.lang.Appendable java.io.Closeable java.io.Flushable {
ctor protected Writer();
- ctor protected Writer(java.lang.Object);
- method public java.io.Writer append(java.lang.CharSequence) throws java.io.IOException;
- method public java.io.Writer append(java.lang.CharSequence, int, int) throws java.io.IOException;
+ ctor protected Writer(Object);
+ method public java.io.Writer append(CharSequence) throws java.io.IOException;
+ method public java.io.Writer append(CharSequence, int, int) throws java.io.IOException;
method public java.io.Writer append(char) throws java.io.IOException;
method public void write(int) throws java.io.IOException;
method public void write(char[]) throws java.io.IOException;
method public abstract void write(char[], int, int) throws java.io.IOException;
- method public void write(java.lang.String) throws java.io.IOException;
- method public void write(java.lang.String, int, int) throws java.io.IOException;
- field protected java.lang.Object lock;
+ method public void write(String) throws java.io.IOException;
+ method public void write(String, int, int) throws java.io.IOException;
+ field protected Object lock;
}
}
@@ -58620,129 +58717,129 @@
public class AbstractMethodError extends java.lang.IncompatibleClassChangeError {
ctor public AbstractMethodError();
- ctor public AbstractMethodError(java.lang.String);
+ ctor public AbstractMethodError(String);
}
- public abstract interface Appendable {
- method public abstract java.lang.Appendable append(java.lang.CharSequence) throws java.io.IOException;
- method public abstract java.lang.Appendable append(java.lang.CharSequence, int, int) throws java.io.IOException;
- method public abstract java.lang.Appendable append(char) throws java.io.IOException;
+ public interface Appendable {
+ method @NonNull public Appendable append(@Nullable CharSequence) throws java.io.IOException;
+ method @NonNull public Appendable append(@Nullable CharSequence, int, int) throws java.io.IOException;
+ method @NonNull public Appendable append(char) throws java.io.IOException;
}
public class ArithmeticException extends java.lang.RuntimeException {
ctor public ArithmeticException();
- ctor public ArithmeticException(java.lang.String);
+ ctor public ArithmeticException(String);
}
public class ArrayIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
ctor public ArrayIndexOutOfBoundsException();
ctor public ArrayIndexOutOfBoundsException(int);
- ctor public ArrayIndexOutOfBoundsException(java.lang.String);
+ ctor public ArrayIndexOutOfBoundsException(String);
}
public class ArrayStoreException extends java.lang.RuntimeException {
ctor public ArrayStoreException();
- ctor public ArrayStoreException(java.lang.String);
+ ctor public ArrayStoreException(String);
}
public class AssertionError extends java.lang.Error {
ctor public AssertionError();
- ctor public AssertionError(java.lang.Object);
+ ctor public AssertionError(Object);
ctor public AssertionError(boolean);
ctor public AssertionError(char);
ctor public AssertionError(int);
ctor public AssertionError(long);
ctor public AssertionError(float);
ctor public AssertionError(double);
- ctor public AssertionError(java.lang.String, java.lang.Throwable);
+ ctor public AssertionError(String, Throwable);
}
- public abstract interface AutoCloseable {
- method public abstract void close() throws java.lang.Exception;
+ public interface AutoCloseable {
+ method public void close() throws java.lang.Exception;
}
- public final class Boolean implements java.lang.Comparable java.io.Serializable {
+ public final class Boolean implements java.lang.Comparable<java.lang.Boolean> java.io.Serializable {
ctor public Boolean(boolean);
- ctor public Boolean(java.lang.String);
+ ctor public Boolean(@Nullable String);
method public boolean booleanValue();
method public static int compare(boolean, boolean);
- method public int compareTo(java.lang.Boolean);
- method public static boolean getBoolean(java.lang.String);
+ method public int compareTo(@NonNull Boolean);
+ method public static boolean getBoolean(@NonNull String);
method public static int hashCode(boolean);
method public static boolean logicalAnd(boolean, boolean);
method public static boolean logicalOr(boolean, boolean);
method public static boolean logicalXor(boolean, boolean);
- method public static boolean parseBoolean(java.lang.String);
- method public static java.lang.String toString(boolean);
- method public static java.lang.Boolean valueOf(boolean);
- method public static java.lang.Boolean valueOf(java.lang.String);
- field public static final java.lang.Boolean FALSE;
- field public static final java.lang.Boolean TRUE;
- field public static final java.lang.Class<java.lang.Boolean> TYPE;
+ method public static boolean parseBoolean(@Nullable String);
+ method @NonNull public static String toString(boolean);
+ method @NonNull public static Boolean valueOf(boolean);
+ method @NonNull public static Boolean valueOf(@Nullable String);
+ field public static final Boolean FALSE;
+ field public static final Boolean TRUE;
+ field public static final Class<java.lang.Boolean> TYPE;
}
public class BootstrapMethodError extends java.lang.LinkageError {
ctor public BootstrapMethodError();
- ctor public BootstrapMethodError(java.lang.String);
- ctor public BootstrapMethodError(java.lang.String, java.lang.Throwable);
- ctor public BootstrapMethodError(java.lang.Throwable);
+ ctor public BootstrapMethodError(String);
+ ctor public BootstrapMethodError(String, Throwable);
+ ctor public BootstrapMethodError(Throwable);
}
- public final class Byte extends java.lang.Number implements java.lang.Comparable {
+ public final class Byte extends java.lang.Number implements java.lang.Comparable<java.lang.Byte> {
ctor public Byte(byte);
- ctor public Byte(java.lang.String) throws java.lang.NumberFormatException;
+ ctor public Byte(@NonNull String) throws java.lang.NumberFormatException;
method public static int compare(byte, byte);
- method public int compareTo(java.lang.Byte);
- method public static java.lang.Byte decode(java.lang.String) throws java.lang.NumberFormatException;
+ method public int compareTo(@NonNull Byte);
+ method @NonNull public static Byte decode(@NonNull String) throws java.lang.NumberFormatException;
method public double doubleValue();
method public float floatValue();
method public static int hashCode(byte);
method public int intValue();
method public long longValue();
- method public static byte parseByte(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static byte parseByte(java.lang.String) throws java.lang.NumberFormatException;
- method public static java.lang.String toString(byte);
+ method public static byte parseByte(@NonNull String, int) throws java.lang.NumberFormatException;
+ method public static byte parseByte(@NonNull String) throws java.lang.NumberFormatException;
+ method @NonNull public static String toString(byte);
method public static int toUnsignedInt(byte);
method public static long toUnsignedLong(byte);
- method public static java.lang.Byte valueOf(byte);
- method public static java.lang.Byte valueOf(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static java.lang.Byte valueOf(java.lang.String) throws java.lang.NumberFormatException;
+ method @NonNull public static Byte valueOf(byte);
+ method @NonNull public static Byte valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
+ method @NonNull public static Byte valueOf(@NonNull String) throws java.lang.NumberFormatException;
field public static final int BYTES = 1; // 0x1
field public static final byte MAX_VALUE = 127; // 0x7f
field public static final byte MIN_VALUE = -128; // 0xffffff80
field public static final int SIZE = 8; // 0x8
- field public static final java.lang.Class<java.lang.Byte> TYPE;
+ field public static final Class<java.lang.Byte> TYPE;
}
- public abstract interface CharSequence {
- method public abstract char charAt(int);
- method public default java.util.stream.IntStream chars();
- method public default java.util.stream.IntStream codePoints();
- method public abstract int length();
- method public abstract java.lang.CharSequence subSequence(int, int);
- method public abstract java.lang.String toString();
+ public interface CharSequence {
+ method public char charAt(int);
+ method @NonNull public default java.util.stream.IntStream chars();
+ method @NonNull public default java.util.stream.IntStream codePoints();
+ method public int length();
+ method @NonNull public CharSequence subSequence(int, int);
+ method @NonNull public String toString();
}
- public final class Character implements java.lang.Comparable java.io.Serializable {
+ public final class Character implements java.lang.Comparable<java.lang.Character> java.io.Serializable {
ctor public Character(char);
method public static int charCount(int);
method public char charValue();
- method public static int codePointAt(java.lang.CharSequence, int);
+ method public static int codePointAt(@NonNull CharSequence, int);
method public static int codePointAt(char[], int);
method public static int codePointAt(char[], int, int);
- method public static int codePointBefore(java.lang.CharSequence, int);
+ method public static int codePointBefore(@NonNull CharSequence, int);
method public static int codePointBefore(char[], int);
method public static int codePointBefore(char[], int, int);
- method public static int codePointCount(java.lang.CharSequence, int, int);
+ method public static int codePointCount(@NonNull CharSequence, int, int);
method public static int codePointCount(char[], int, int);
method public static int compare(char, char);
- method public int compareTo(java.lang.Character);
+ method public int compareTo(@NonNull Character);
method public static int digit(char, int);
method public static int digit(int, int);
method public static char forDigit(int, int);
method public static byte getDirectionality(char);
method public static byte getDirectionality(int);
- method public static java.lang.String getName(int);
+ method @Nullable public static String getName(int);
method public static int getNumericValue(char);
method public static int getNumericValue(int);
method public static int getType(char);
@@ -58765,8 +58862,8 @@
method public static boolean isJavaIdentifierPart(int);
method public static boolean isJavaIdentifierStart(char);
method public static boolean isJavaIdentifierStart(int);
- method public static deprecated boolean isJavaLetter(char);
- method public static deprecated boolean isJavaLetterOrDigit(char);
+ method @Deprecated public static boolean isJavaLetter(char);
+ method @Deprecated public static boolean isJavaLetterOrDigit(char);
method public static boolean isLetter(char);
method public static boolean isLetter(int);
method public static boolean isLetterOrDigit(char);
@@ -58776,7 +58873,7 @@
method public static boolean isLowerCase(int);
method public static boolean isMirrored(char);
method public static boolean isMirrored(int);
- method public static deprecated boolean isSpace(char);
+ method @Deprecated public static boolean isSpace(char);
method public static boolean isSpaceChar(char);
method public static boolean isSpaceChar(int);
method public static boolean isSupplementaryCodePoint(int);
@@ -58794,7 +58891,7 @@
method public static boolean isWhitespace(char);
method public static boolean isWhitespace(int);
method public static char lowSurrogate(int);
- method public static int offsetByCodePoints(java.lang.CharSequence, int, int);
+ method public static int offsetByCodePoints(@NonNull CharSequence, int, int);
method public static int offsetByCodePoints(char[], int, int, int, int);
method public static char reverseBytes(char);
method public static int toChars(int, char[], int);
@@ -58802,12 +58899,12 @@
method public static int toCodePoint(char, char);
method public static char toLowerCase(char);
method public static int toLowerCase(int);
- method public static java.lang.String toString(char);
+ method @NonNull public static String toString(char);
method public static char toTitleCase(char);
method public static int toTitleCase(int);
method public static char toUpperCase(char);
method public static int toUpperCase(int);
- method public static java.lang.Character valueOf(char);
+ method @NonNull public static Character valueOf(char);
field public static final int BYTES = 2; // 0x2
field public static final byte COMBINING_SPACING_MARK = 8; // 0x8
field public static final byte CONNECTOR_PUNCTUATION = 23; // 0x17
@@ -58871,22 +58968,22 @@
field public static final byte START_PUNCTUATION = 21; // 0x15
field public static final byte SURROGATE = 19; // 0x13
field public static final byte TITLECASE_LETTER = 3; // 0x3
- field public static final java.lang.Class<java.lang.Character> TYPE;
+ field public static final Class<java.lang.Character> TYPE;
field public static final byte UNASSIGNED = 0; // 0x0
field public static final byte UPPERCASE_LETTER = 1; // 0x1
}
public static class Character.Subset {
- ctor protected Character.Subset(java.lang.String);
- method public final boolean equals(java.lang.Object);
+ ctor protected Character.Subset(@NonNull String);
+ method public final boolean equals(@Nullable Object);
method public final int hashCode();
- method public final java.lang.String toString();
+ method @NonNull public final String toString();
}
public static final class Character.UnicodeBlock extends java.lang.Character.Subset {
- method public static java.lang.Character.UnicodeBlock forName(java.lang.String);
- method public static java.lang.Character.UnicodeBlock of(char);
- method public static java.lang.Character.UnicodeBlock of(int);
+ method @NonNull public static java.lang.Character.UnicodeBlock forName(@NonNull String);
+ method @Nullable public static java.lang.Character.UnicodeBlock of(char);
+ method @Nullable public static java.lang.Character.UnicodeBlock of(int);
field public static final java.lang.Character.UnicodeBlock AEGEAN_NUMBERS;
field public static final java.lang.Character.UnicodeBlock ALCHEMICAL_SYMBOLS;
field public static final java.lang.Character.UnicodeBlock ALPHABETIC_PRESENTATION_FORMS;
@@ -59079,7 +59176,7 @@
field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_PUNCTUATION;
field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A;
field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B;
- field public static final deprecated java.lang.Character.UnicodeBlock SURROGATES_AREA;
+ field @Deprecated public static final java.lang.Character.UnicodeBlock SURROGATES_AREA;
field public static final java.lang.Character.UnicodeBlock SYLOTI_NAGRI;
field public static final java.lang.Character.UnicodeBlock SYRIAC;
field public static final java.lang.Character.UnicodeBlock TAGALOG;
@@ -59110,11 +59207,9 @@
field public static final java.lang.Character.UnicodeBlock YI_SYLLABLES;
}
- public static final class Character.UnicodeScript extends java.lang.Enum {
- method public static java.lang.Character.UnicodeScript forName(java.lang.String);
- method public static java.lang.Character.UnicodeScript of(int);
- method public static java.lang.Character.UnicodeScript valueOf(java.lang.String);
- method public static final java.lang.Character.UnicodeScript[] values();
+ public enum Character.UnicodeScript {
+ method @NonNull public static java.lang.Character.UnicodeScript forName(@NonNull String);
+ method @NonNull public static java.lang.Character.UnicodeScript of(int);
enum_constant public static final java.lang.Character.UnicodeScript ARABIC;
enum_constant public static final java.lang.Character.UnicodeScript ARMENIAN;
enum_constant public static final java.lang.Character.UnicodeScript AVESTAN;
@@ -59221,152 +59316,151 @@
}
public final class Class<T> implements java.lang.reflect.AnnotatedElement java.lang.reflect.GenericDeclaration java.io.Serializable java.lang.reflect.Type {
- method public <U> java.lang.Class<? extends U> asSubclass(java.lang.Class<U>);
- method public T cast(java.lang.Object);
+ method @NonNull public <U> Class<? extends U> asSubclass(@NonNull Class<U>);
+ method @Nullable public T cast(@Nullable Object);
method public boolean desiredAssertionStatus();
- method public static java.lang.Class<?> forName(java.lang.String) throws java.lang.ClassNotFoundException;
- method public static java.lang.Class<?> forName(java.lang.String, boolean, java.lang.ClassLoader) throws java.lang.ClassNotFoundException;
- method public <A extends java.lang.annotation.Annotation> A getAnnotation(java.lang.Class<A>);
+ method @NonNull public static Class<?> forName(@NonNull String) throws java.lang.ClassNotFoundException;
+ method @NonNull public static Class<?> forName(@NonNull String, boolean, @Nullable ClassLoader) throws java.lang.ClassNotFoundException;
+ method @Nullable public <A extends java.lang.annotation.Annotation> A getAnnotation(@NonNull Class<A>);
method public java.lang.annotation.Annotation[] getAnnotations();
- method public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(java.lang.Class<A>);
- method public java.lang.String getCanonicalName();
- method public java.lang.ClassLoader getClassLoader();
- method public java.lang.Class<?>[] getClasses();
- method public java.lang.Class<?> getComponentType();
- method public java.lang.reflect.Constructor<T> getConstructor(java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
+ method @NonNull public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(@NonNull Class<A>);
+ method @Nullable public String getCanonicalName();
+ method @Nullable public ClassLoader getClassLoader();
+ method public Class<?>[] getClasses();
+ method @Nullable public Class<?> getComponentType();
+ method @NonNull public java.lang.reflect.Constructor<T> getConstructor(Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
method public java.lang.reflect.Constructor<?>[] getConstructors() throws java.lang.SecurityException;
- method public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(java.lang.Class<A>);
+ method @Nullable public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(@NonNull Class<A>);
method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
- method public java.lang.Class<?>[] getDeclaredClasses();
- method public java.lang.reflect.Constructor<T> getDeclaredConstructor(java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
+ method public Class<?>[] getDeclaredClasses();
+ method @NonNull public java.lang.reflect.Constructor<T> getDeclaredConstructor(Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
method public java.lang.reflect.Constructor<?>[] getDeclaredConstructors() throws java.lang.SecurityException;
- method public java.lang.reflect.Field getDeclaredField(java.lang.String) throws java.lang.NoSuchFieldException;
+ method @NonNull public java.lang.reflect.Field getDeclaredField(@NonNull String) throws java.lang.NoSuchFieldException;
method public java.lang.reflect.Field[] getDeclaredFields();
- method public java.lang.reflect.Method getDeclaredMethod(java.lang.String, java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
+ method @NonNull public java.lang.reflect.Method getDeclaredMethod(@NonNull String, Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
method public java.lang.reflect.Method[] getDeclaredMethods() throws java.lang.SecurityException;
- method public java.lang.Class<?> getDeclaringClass();
- method public java.lang.Class<?> getEnclosingClass();
- method public java.lang.reflect.Constructor<?> getEnclosingConstructor();
- method public java.lang.reflect.Method getEnclosingMethod();
+ method @Nullable public Class<?> getDeclaringClass();
+ method @Nullable public Class<?> getEnclosingClass();
+ method @Nullable public java.lang.reflect.Constructor<?> getEnclosingConstructor();
+ method @Nullable public java.lang.reflect.Method getEnclosingMethod();
method public T[] getEnumConstants();
- method public java.lang.reflect.Field getField(java.lang.String) throws java.lang.NoSuchFieldException;
+ method @NonNull public java.lang.reflect.Field getField(@NonNull String) throws java.lang.NoSuchFieldException;
method public java.lang.reflect.Field[] getFields() throws java.lang.SecurityException;
method public java.lang.reflect.Type[] getGenericInterfaces();
- method public java.lang.reflect.Type getGenericSuperclass();
- method public java.lang.Class<?>[] getInterfaces();
- method public java.lang.reflect.Method getMethod(java.lang.String, java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
+ method @Nullable public java.lang.reflect.Type getGenericSuperclass();
+ method public Class<?>[] getInterfaces();
+ method @NonNull public java.lang.reflect.Method getMethod(@NonNull String, Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
method public java.lang.reflect.Method[] getMethods() throws java.lang.SecurityException;
method public int getModifiers();
- method public java.lang.String getName();
- method public java.lang.Package getPackage();
- method public java.security.ProtectionDomain getProtectionDomain();
- method public java.net.URL getResource(java.lang.String);
- method public java.io.InputStream getResourceAsStream(java.lang.String);
- method public java.lang.Object[] getSigners();
- method public java.lang.String getSimpleName();
- method public java.lang.Class<? super T> getSuperclass();
- method public synchronized java.lang.reflect.TypeVariable<java.lang.Class<T>>[] getTypeParameters();
+ method @NonNull public String getName();
+ method @Nullable public Package getPackage();
+ method @Nullable public java.security.ProtectionDomain getProtectionDomain();
+ method @Nullable public java.net.URL getResource(@NonNull String);
+ method @Nullable public java.io.InputStream getResourceAsStream(@NonNull String);
+ method public Object[] getSigners();
+ method @NonNull public String getSimpleName();
+ method @Nullable public Class<? super T> getSuperclass();
+ method public java.lang.reflect.TypeVariable<java.lang.Class<T>>[] getTypeParameters();
method public boolean isAnnotation();
method public boolean isAnonymousClass();
method public boolean isArray();
- method public boolean isAssignableFrom(java.lang.Class<?>);
+ method public boolean isAssignableFrom(@NonNull Class<?>);
method public boolean isEnum();
- method public boolean isInstance(java.lang.Object);
+ method public boolean isInstance(@Nullable Object);
method public boolean isInterface();
method public boolean isLocalClass();
method public boolean isMemberClass();
method public boolean isPrimitive();
method public boolean isSynthetic();
- method public T newInstance() throws java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public java.lang.String toGenericString();
+ method @NonNull public T newInstance() throws java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method @NonNull public String toGenericString();
}
public class ClassCastException extends java.lang.RuntimeException {
ctor public ClassCastException();
- ctor public ClassCastException(java.lang.String);
+ ctor public ClassCastException(String);
}
public class ClassCircularityError extends java.lang.LinkageError {
ctor public ClassCircularityError();
- ctor public ClassCircularityError(java.lang.String);
+ ctor public ClassCircularityError(String);
}
public class ClassFormatError extends java.lang.LinkageError {
ctor public ClassFormatError();
- ctor public ClassFormatError(java.lang.String);
+ ctor public ClassFormatError(String);
}
public abstract class ClassLoader {
- ctor protected ClassLoader(java.lang.ClassLoader);
+ ctor protected ClassLoader(ClassLoader);
ctor protected ClassLoader();
method public void clearAssertionStatus();
- method protected final deprecated java.lang.Class<?> defineClass(byte[], int, int) throws java.lang.ClassFormatError;
- method protected final java.lang.Class<?> defineClass(java.lang.String, byte[], int, int) throws java.lang.ClassFormatError;
- method protected final java.lang.Class<?> defineClass(java.lang.String, byte[], int, int, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
- method protected final java.lang.Class<?> defineClass(java.lang.String, java.nio.ByteBuffer, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
- method protected java.lang.Package definePackage(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.net.URL) throws java.lang.IllegalArgumentException;
- method protected java.lang.Class<?> findClass(java.lang.String) throws java.lang.ClassNotFoundException;
- method protected java.lang.String findLibrary(java.lang.String);
- method protected final java.lang.Class<?> findLoadedClass(java.lang.String);
- method protected java.net.URL findResource(java.lang.String);
- method protected java.util.Enumeration<java.net.URL> findResources(java.lang.String) throws java.io.IOException;
- method protected final java.lang.Class<?> findSystemClass(java.lang.String) throws java.lang.ClassNotFoundException;
- method protected java.lang.Package getPackage(java.lang.String);
- method protected java.lang.Package[] getPackages();
- method public final java.lang.ClassLoader getParent();
- method public java.net.URL getResource(java.lang.String);
- method public java.io.InputStream getResourceAsStream(java.lang.String);
- method public java.util.Enumeration<java.net.URL> getResources(java.lang.String) throws java.io.IOException;
- method public static java.lang.ClassLoader getSystemClassLoader();
- method public static java.net.URL getSystemResource(java.lang.String);
- method public static java.io.InputStream getSystemResourceAsStream(java.lang.String);
- method public static java.util.Enumeration<java.net.URL> getSystemResources(java.lang.String) throws java.io.IOException;
- method public java.lang.Class<?> loadClass(java.lang.String) throws java.lang.ClassNotFoundException;
- method protected java.lang.Class<?> loadClass(java.lang.String, boolean) throws java.lang.ClassNotFoundException;
+ method @Deprecated protected final Class<?> defineClass(byte[], int, int) throws java.lang.ClassFormatError;
+ method protected final Class<?> defineClass(String, byte[], int, int) throws java.lang.ClassFormatError;
+ method protected final Class<?> defineClass(String, byte[], int, int, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
+ method protected final Class<?> defineClass(String, java.nio.ByteBuffer, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
+ method protected Package definePackage(String, String, String, String, String, String, String, java.net.URL) throws java.lang.IllegalArgumentException;
+ method protected Class<?> findClass(String) throws java.lang.ClassNotFoundException;
+ method protected String findLibrary(String);
+ method protected final Class<?> findLoadedClass(String);
+ method protected java.net.URL findResource(String);
+ method protected java.util.Enumeration<java.net.URL> findResources(String) throws java.io.IOException;
+ method protected final Class<?> findSystemClass(String) throws java.lang.ClassNotFoundException;
+ method protected Package getPackage(String);
+ method protected Package[] getPackages();
+ method public final ClassLoader getParent();
+ method public java.net.URL getResource(String);
+ method public java.io.InputStream getResourceAsStream(String);
+ method public java.util.Enumeration<java.net.URL> getResources(String) throws java.io.IOException;
+ method public static ClassLoader getSystemClassLoader();
+ method public static java.net.URL getSystemResource(String);
+ method public static java.io.InputStream getSystemResourceAsStream(String);
+ method public static java.util.Enumeration<java.net.URL> getSystemResources(String) throws java.io.IOException;
+ method public Class<?> loadClass(String) throws java.lang.ClassNotFoundException;
+ method protected Class<?> loadClass(String, boolean) throws java.lang.ClassNotFoundException;
method protected static boolean registerAsParallelCapable();
- method protected final void resolveClass(java.lang.Class<?>);
- method public void setClassAssertionStatus(java.lang.String, boolean);
+ method protected final void resolveClass(Class<?>);
+ method public void setClassAssertionStatus(String, boolean);
method public void setDefaultAssertionStatus(boolean);
- method public void setPackageAssertionStatus(java.lang.String, boolean);
- method protected final void setSigners(java.lang.Class<?>, java.lang.Object[]);
+ method public void setPackageAssertionStatus(String, boolean);
+ method protected final void setSigners(Class<?>, Object[]);
}
public class ClassNotFoundException extends java.lang.ReflectiveOperationException {
ctor public ClassNotFoundException();
- ctor public ClassNotFoundException(java.lang.String);
- ctor public ClassNotFoundException(java.lang.String, java.lang.Throwable);
- method public java.lang.Throwable getCause();
- method public java.lang.Throwable getException();
+ ctor public ClassNotFoundException(String);
+ ctor public ClassNotFoundException(String, Throwable);
+ method public Throwable getException();
}
public class CloneNotSupportedException extends java.lang.Exception {
ctor public CloneNotSupportedException();
- ctor public CloneNotSupportedException(java.lang.String);
+ ctor public CloneNotSupportedException(String);
}
- public abstract interface Cloneable {
+ public interface Cloneable {
}
- public abstract interface Comparable<T> {
- method public abstract int compareTo(T);
+ public interface Comparable<T> {
+ method public int compareTo(T);
}
public final class Compiler {
- method public static java.lang.Object command(java.lang.Object);
- method public static boolean compileClass(java.lang.Class<?>);
- method public static boolean compileClasses(java.lang.String);
+ method public static Object command(Object);
+ method public static boolean compileClass(Class<?>);
+ method public static boolean compileClasses(String);
method public static void disable();
method public static void enable();
}
- public abstract class Deprecated implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PACKAGE, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE}) public @interface Deprecated {
}
- public final class Double extends java.lang.Number implements java.lang.Comparable {
+ public final class Double extends java.lang.Number implements java.lang.Comparable<java.lang.Double> {
ctor public Double(double);
- ctor public Double(java.lang.String) throws java.lang.NumberFormatException;
+ ctor public Double(@NonNull String) throws java.lang.NumberFormatException;
method public static int compare(double, double);
- method public int compareTo(java.lang.Double);
+ method public int compareTo(@NonNull Double);
method public static long doubleToLongBits(double);
method public static long doubleToRawLongBits(double);
method public double doubleValue();
@@ -59382,12 +59476,12 @@
method public long longValue();
method public static double max(double, double);
method public static double min(double, double);
- method public static double parseDouble(java.lang.String) throws java.lang.NumberFormatException;
+ method public static double parseDouble(@NonNull String) throws java.lang.NumberFormatException;
method public static double sum(double, double);
- method public static java.lang.String toHexString(double);
- method public static java.lang.String toString(double);
- method public static java.lang.Double valueOf(java.lang.String) throws java.lang.NumberFormatException;
- method public static java.lang.Double valueOf(double);
+ method @NonNull public static String toHexString(double);
+ method @NonNull public static String toString(double);
+ method @NonNull public static Double valueOf(@NonNull String) throws java.lang.NumberFormatException;
+ method @NonNull public static Double valueOf(double);
field public static final int BYTES = 8; // 0x8
field public static final int MAX_EXPONENT = 1023; // 0x3ff
field public static final double MAX_VALUE = 1.7976931348623157E308;
@@ -59398,58 +59492,57 @@
field public static final double NaN = (0.0/0.0);
field public static final double POSITIVE_INFINITY = (1.0/0.0);
field public static final int SIZE = 64; // 0x40
- field public static final java.lang.Class<java.lang.Double> TYPE;
+ field public static final Class<java.lang.Double> TYPE;
}
- public abstract class Enum<E extends java.lang.Enum<E>> implements java.lang.Comparable java.io.Serializable {
- ctor protected Enum(java.lang.String, int);
- method protected final java.lang.Object clone() throws java.lang.CloneNotSupportedException;
+ public abstract class Enum<E extends java.lang.Enum<E>> implements java.lang.Comparable<E> java.io.Serializable {
+ ctor protected Enum(@NonNull String, int);
+ method @NonNull protected final Object clone() throws java.lang.CloneNotSupportedException;
method public final int compareTo(E);
- method public final boolean equals(java.lang.Object);
+ method public final boolean equals(@Nullable Object);
method protected final void finalize();
- method public final java.lang.Class<E> getDeclaringClass();
+ method @NonNull public final Class<E> getDeclaringClass();
method public final int hashCode();
- method public final java.lang.String name();
+ method @NonNull public final String name();
method public final int ordinal();
- method public static <T extends java.lang.Enum<T>> T valueOf(java.lang.Class<T>, java.lang.String);
+ method @NonNull public static <T extends java.lang.Enum<T>> T valueOf(@NonNull Class<T>, @NonNull String);
}
public class EnumConstantNotPresentException extends java.lang.RuntimeException {
- ctor public EnumConstantNotPresentException(java.lang.Class<? extends java.lang.Enum>, java.lang.String);
- method public java.lang.String constantName();
- method public java.lang.Class<? extends java.lang.Enum> enumType();
+ ctor public EnumConstantNotPresentException(Class<? extends java.lang.Enum>, String);
+ method public String constantName();
+ method public Class<? extends java.lang.Enum> enumType();
}
public class Error extends java.lang.Throwable {
ctor public Error();
- ctor public Error(java.lang.String);
- ctor public Error(java.lang.String, java.lang.Throwable);
- ctor public Error(java.lang.Throwable);
- ctor protected Error(java.lang.String, java.lang.Throwable, boolean, boolean);
+ ctor public Error(String);
+ ctor public Error(String, Throwable);
+ ctor public Error(Throwable);
+ ctor protected Error(String, Throwable, boolean, boolean);
}
public class Exception extends java.lang.Throwable {
ctor public Exception();
- ctor public Exception(java.lang.String);
- ctor public Exception(java.lang.String, java.lang.Throwable);
- ctor public Exception(java.lang.Throwable);
- ctor protected Exception(java.lang.String, java.lang.Throwable, boolean, boolean);
+ ctor public Exception(String);
+ ctor public Exception(String, Throwable);
+ ctor public Exception(Throwable);
+ ctor protected Exception(String, Throwable, boolean, boolean);
}
public class ExceptionInInitializerError extends java.lang.LinkageError {
ctor public ExceptionInInitializerError();
- ctor public ExceptionInInitializerError(java.lang.Throwable);
- ctor public ExceptionInInitializerError(java.lang.String);
- method public java.lang.Throwable getCause();
- method public java.lang.Throwable getException();
+ ctor public ExceptionInInitializerError(Throwable);
+ ctor public ExceptionInInitializerError(String);
+ method public Throwable getException();
}
- public final class Float extends java.lang.Number implements java.lang.Comparable {
+ public final class Float extends java.lang.Number implements java.lang.Comparable<java.lang.Float> {
ctor public Float(float);
ctor public Float(double);
- ctor public Float(java.lang.String) throws java.lang.NumberFormatException;
+ ctor public Float(@NonNull String) throws java.lang.NumberFormatException;
method public static int compare(float, float);
- method public int compareTo(java.lang.Float);
+ method public int compareTo(@NonNull Float);
method public double doubleValue();
method public static int floatToIntBits(float);
method public static int floatToRawIntBits(float);
@@ -59465,12 +59558,12 @@
method public long longValue();
method public static float max(float, float);
method public static float min(float, float);
- method public static float parseFloat(java.lang.String) throws java.lang.NumberFormatException;
+ method public static float parseFloat(@NonNull String) throws java.lang.NumberFormatException;
method public static float sum(float, float);
- method public static java.lang.String toHexString(float);
- method public static java.lang.String toString(float);
- method public static java.lang.Float valueOf(java.lang.String) throws java.lang.NumberFormatException;
- method public static java.lang.Float valueOf(float);
+ method @NonNull public static String toHexString(float);
+ method @NonNull public static String toString(float);
+ method @NonNull public static Float valueOf(@NonNull String) throws java.lang.NumberFormatException;
+ method @NonNull public static Float valueOf(float);
field public static final int BYTES = 4; // 0x4
field public static final int MAX_EXPONENT = 127; // 0x7f
field public static final float MAX_VALUE = 3.4028235E38f;
@@ -59481,85 +59574,85 @@
field public static final float NaN = (0.0f/0.0f);
field public static final float POSITIVE_INFINITY = (1.0f/0.0f);
field public static final int SIZE = 32; // 0x20
- field public static final java.lang.Class<java.lang.Float> TYPE;
+ field public static final Class<java.lang.Float> TYPE;
}
- public abstract class FunctionalInterface implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE) public @interface FunctionalInterface {
}
public class IllegalAccessError extends java.lang.IncompatibleClassChangeError {
ctor public IllegalAccessError();
- ctor public IllegalAccessError(java.lang.String);
+ ctor public IllegalAccessError(String);
}
public class IllegalAccessException extends java.lang.ReflectiveOperationException {
ctor public IllegalAccessException();
- ctor public IllegalAccessException(java.lang.String);
+ ctor public IllegalAccessException(String);
}
public class IllegalArgumentException extends java.lang.RuntimeException {
ctor public IllegalArgumentException();
- ctor public IllegalArgumentException(java.lang.String);
- ctor public IllegalArgumentException(java.lang.String, java.lang.Throwable);
- ctor public IllegalArgumentException(java.lang.Throwable);
+ ctor public IllegalArgumentException(String);
+ ctor public IllegalArgumentException(String, Throwable);
+ ctor public IllegalArgumentException(Throwable);
}
public class IllegalMonitorStateException extends java.lang.RuntimeException {
ctor public IllegalMonitorStateException();
- ctor public IllegalMonitorStateException(java.lang.String);
+ ctor public IllegalMonitorStateException(String);
}
public class IllegalStateException extends java.lang.RuntimeException {
ctor public IllegalStateException();
- ctor public IllegalStateException(java.lang.String);
- ctor public IllegalStateException(java.lang.String, java.lang.Throwable);
- ctor public IllegalStateException(java.lang.Throwable);
+ ctor public IllegalStateException(String);
+ ctor public IllegalStateException(String, Throwable);
+ ctor public IllegalStateException(Throwable);
}
public class IllegalThreadStateException extends java.lang.IllegalArgumentException {
ctor public IllegalThreadStateException();
- ctor public IllegalThreadStateException(java.lang.String);
+ ctor public IllegalThreadStateException(String);
}
public class IncompatibleClassChangeError extends java.lang.LinkageError {
ctor public IncompatibleClassChangeError();
- ctor public IncompatibleClassChangeError(java.lang.String);
+ ctor public IncompatibleClassChangeError(String);
}
public class IndexOutOfBoundsException extends java.lang.RuntimeException {
ctor public IndexOutOfBoundsException();
- ctor public IndexOutOfBoundsException(java.lang.String);
+ ctor public IndexOutOfBoundsException(String);
}
- public class InheritableThreadLocal<T> extends java.lang.ThreadLocal {
+ public class InheritableThreadLocal<T> extends java.lang.ThreadLocal<T> {
ctor public InheritableThreadLocal();
method protected T childValue(T);
}
public class InstantiationError extends java.lang.IncompatibleClassChangeError {
ctor public InstantiationError();
- ctor public InstantiationError(java.lang.String);
+ ctor public InstantiationError(String);
}
public class InstantiationException extends java.lang.ReflectiveOperationException {
ctor public InstantiationException();
- ctor public InstantiationException(java.lang.String);
+ ctor public InstantiationException(String);
}
- public final class Integer extends java.lang.Number implements java.lang.Comparable {
+ public final class Integer extends java.lang.Number implements java.lang.Comparable<java.lang.Integer> {
ctor public Integer(int);
- ctor public Integer(java.lang.String) throws java.lang.NumberFormatException;
+ ctor public Integer(@NonNull String) throws java.lang.NumberFormatException;
method public static int bitCount(int);
method public static int compare(int, int);
- method public int compareTo(java.lang.Integer);
+ method public int compareTo(@NonNull Integer);
method public static int compareUnsigned(int, int);
- method public static java.lang.Integer decode(java.lang.String) throws java.lang.NumberFormatException;
+ method @NonNull public static Integer decode(@NonNull String) throws java.lang.NumberFormatException;
method public static int divideUnsigned(int, int);
method public double doubleValue();
method public float floatValue();
- method public static java.lang.Integer getInteger(java.lang.String);
- method public static java.lang.Integer getInteger(java.lang.String, int);
- method public static java.lang.Integer getInteger(java.lang.String, java.lang.Integer);
+ method @Nullable public static Integer getInteger(@NonNull String);
+ method @Nullable public static Integer getInteger(@NonNull String, int);
+ method @Nullable public static Integer getInteger(@NonNull String, @Nullable Integer);
method public static int hashCode(int);
method public static int highestOneBit(int);
method public int intValue();
@@ -59569,10 +59662,10 @@
method public static int min(int, int);
method public static int numberOfLeadingZeros(int);
method public static int numberOfTrailingZeros(int);
- method public static int parseInt(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static int parseInt(java.lang.String) throws java.lang.NumberFormatException;
- method public static int parseUnsignedInt(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static int parseUnsignedInt(java.lang.String) throws java.lang.NumberFormatException;
+ method public static int parseInt(@NonNull String, int) throws java.lang.NumberFormatException;
+ method public static int parseInt(@NonNull String) throws java.lang.NumberFormatException;
+ method public static int parseUnsignedInt(@NonNull String, int) throws java.lang.NumberFormatException;
+ method public static int parseUnsignedInt(@NonNull String) throws java.lang.NumberFormatException;
method public static int remainderUnsigned(int, int);
method public static int reverse(int);
method public static int reverseBytes(int);
@@ -59580,62 +59673,62 @@
method public static int rotateRight(int, int);
method public static int signum(int);
method public static int sum(int, int);
- method public static java.lang.String toBinaryString(int);
- method public static java.lang.String toHexString(int);
- method public static java.lang.String toOctalString(int);
- method public static java.lang.String toString(int, int);
- method public static java.lang.String toString(int);
+ method @NonNull public static String toBinaryString(int);
+ method @NonNull public static String toHexString(int);
+ method @NonNull public static String toOctalString(int);
+ method @NonNull public static String toString(int, int);
+ method @NonNull public static String toString(int);
method public static long toUnsignedLong(int);
- method public static java.lang.String toUnsignedString(int, int);
- method public static java.lang.String toUnsignedString(int);
- method public static java.lang.Integer valueOf(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static java.lang.Integer valueOf(java.lang.String) throws java.lang.NumberFormatException;
- method public static java.lang.Integer valueOf(int);
+ method @NonNull public static String toUnsignedString(int, int);
+ method @NonNull public static String toUnsignedString(int);
+ method @NonNull public static Integer valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
+ method @NonNull public static Integer valueOf(@NonNull String) throws java.lang.NumberFormatException;
+ method @NonNull public static Integer valueOf(int);
field public static final int BYTES = 4; // 0x4
field public static final int MAX_VALUE = 2147483647; // 0x7fffffff
field public static final int MIN_VALUE = -2147483648; // 0x80000000
field public static final int SIZE = 32; // 0x20
- field public static final java.lang.Class<java.lang.Integer> TYPE;
+ field public static final Class<java.lang.Integer> TYPE;
}
public class InternalError extends java.lang.VirtualMachineError {
ctor public InternalError();
- ctor public InternalError(java.lang.String);
- ctor public InternalError(java.lang.String, java.lang.Throwable);
- ctor public InternalError(java.lang.Throwable);
+ ctor public InternalError(String);
+ ctor public InternalError(String, Throwable);
+ ctor public InternalError(Throwable);
}
public class InterruptedException extends java.lang.Exception {
ctor public InterruptedException();
- ctor public InterruptedException(java.lang.String);
+ ctor public InterruptedException(String);
}
- public abstract interface Iterable<T> {
- method public default void forEach(java.util.function.Consumer<? super T>);
- method public abstract java.util.Iterator<T> iterator();
- method public default java.util.Spliterator<T> spliterator();
+ public interface Iterable<T> {
+ method public default void forEach(@NonNull java.util.function.Consumer<? super T>);
+ method @NonNull public java.util.Iterator<T> iterator();
+ method @NonNull public default java.util.Spliterator<T> spliterator();
}
public class LinkageError extends java.lang.Error {
ctor public LinkageError();
- ctor public LinkageError(java.lang.String);
- ctor public LinkageError(java.lang.String, java.lang.Throwable);
+ ctor public LinkageError(String);
+ ctor public LinkageError(String, Throwable);
}
- public final class Long extends java.lang.Number implements java.lang.Comparable {
+ public final class Long extends java.lang.Number implements java.lang.Comparable<java.lang.Long> {
ctor public Long(long);
- ctor public Long(java.lang.String) throws java.lang.NumberFormatException;
+ ctor public Long(@NonNull String) throws java.lang.NumberFormatException;
method public static int bitCount(long);
method public static int compare(long, long);
- method public int compareTo(java.lang.Long);
+ method public int compareTo(@NonNull Long);
method public static int compareUnsigned(long, long);
- method public static java.lang.Long decode(java.lang.String) throws java.lang.NumberFormatException;
+ method @NonNull public static Long decode(@NonNull String) throws java.lang.NumberFormatException;
method public static long divideUnsigned(long, long);
method public double doubleValue();
method public float floatValue();
- method public static java.lang.Long getLong(java.lang.String);
- method public static java.lang.Long getLong(java.lang.String, long);
- method public static java.lang.Long getLong(java.lang.String, java.lang.Long);
+ method @Nullable public static Long getLong(@NonNull String);
+ method @Nullable public static Long getLong(@NonNull String, long);
+ method @Nullable public static Long getLong(@NonNull String, @Nullable Long);
method public static int hashCode(long);
method public static long highestOneBit(long);
method public int intValue();
@@ -59645,10 +59738,10 @@
method public static long min(long, long);
method public static int numberOfLeadingZeros(long);
method public static int numberOfTrailingZeros(long);
- method public static long parseLong(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static long parseLong(java.lang.String) throws java.lang.NumberFormatException;
- method public static long parseUnsignedLong(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static long parseUnsignedLong(java.lang.String) throws java.lang.NumberFormatException;
+ method public static long parseLong(@NonNull String, int) throws java.lang.NumberFormatException;
+ method public static long parseLong(@NonNull String) throws java.lang.NumberFormatException;
+ method public static long parseUnsignedLong(@NonNull String, int) throws java.lang.NumberFormatException;
+ method public static long parseUnsignedLong(@NonNull String) throws java.lang.NumberFormatException;
method public static long remainderUnsigned(long, long);
method public static long reverse(long);
method public static long reverseBytes(long);
@@ -59656,21 +59749,21 @@
method public static long rotateRight(long, int);
method public static int signum(long);
method public static long sum(long, long);
- method public static java.lang.String toBinaryString(long);
- method public static java.lang.String toHexString(long);
- method public static java.lang.String toOctalString(long);
- method public static java.lang.String toString(long, int);
- method public static java.lang.String toString(long);
- method public static java.lang.String toUnsignedString(long, int);
- method public static java.lang.String toUnsignedString(long);
- method public static java.lang.Long valueOf(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static java.lang.Long valueOf(java.lang.String) throws java.lang.NumberFormatException;
- method public static java.lang.Long valueOf(long);
+ method @NonNull public static String toBinaryString(long);
+ method @NonNull public static String toHexString(long);
+ method @NonNull public static String toOctalString(long);
+ method @NonNull public static String toString(long, int);
+ method @NonNull public static String toString(long);
+ method @NonNull public static String toUnsignedString(long, int);
+ method @NonNull public static String toUnsignedString(long);
+ method @NonNull public static Long valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
+ method @NonNull public static Long valueOf(@NonNull String) throws java.lang.NumberFormatException;
+ method @NonNull public static Long valueOf(long);
field public static final int BYTES = 8; // 0x8
field public static final long MAX_VALUE = 9223372036854775807L; // 0x7fffffffffffffffL
field public static final long MIN_VALUE = -9223372036854775808L; // 0x8000000000000000L
field public static final int SIZE = 64; // 0x40
- field public static final java.lang.Class<java.lang.Long> TYPE;
+ field public static final Class<java.lang.Long> TYPE;
}
public final class Math {
@@ -59753,37 +59846,37 @@
public class NegativeArraySizeException extends java.lang.RuntimeException {
ctor public NegativeArraySizeException();
- ctor public NegativeArraySizeException(java.lang.String);
+ ctor public NegativeArraySizeException(String);
}
public class NoClassDefFoundError extends java.lang.LinkageError {
ctor public NoClassDefFoundError();
- ctor public NoClassDefFoundError(java.lang.String);
+ ctor public NoClassDefFoundError(String);
}
public class NoSuchFieldError extends java.lang.IncompatibleClassChangeError {
ctor public NoSuchFieldError();
- ctor public NoSuchFieldError(java.lang.String);
+ ctor public NoSuchFieldError(String);
}
public class NoSuchFieldException extends java.lang.ReflectiveOperationException {
ctor public NoSuchFieldException();
- ctor public NoSuchFieldException(java.lang.String);
+ ctor public NoSuchFieldException(String);
}
public class NoSuchMethodError extends java.lang.IncompatibleClassChangeError {
ctor public NoSuchMethodError();
- ctor public NoSuchMethodError(java.lang.String);
+ ctor public NoSuchMethodError(String);
}
public class NoSuchMethodException extends java.lang.ReflectiveOperationException {
ctor public NoSuchMethodException();
- ctor public NoSuchMethodException(java.lang.String);
+ ctor public NoSuchMethodException(String);
}
public class NullPointerException extends java.lang.RuntimeException {
ctor public NullPointerException();
- ctor public NullPointerException(java.lang.String);
+ ctor public NullPointerException(String);
}
public abstract class Number implements java.io.Serializable {
@@ -59798,19 +59891,19 @@
public class NumberFormatException extends java.lang.IllegalArgumentException {
ctor public NumberFormatException();
- ctor public NumberFormatException(java.lang.String);
+ ctor public NumberFormatException(String);
}
public class Object {
ctor public Object();
- method protected java.lang.Object clone() throws java.lang.CloneNotSupportedException;
- method public boolean equals(java.lang.Object);
+ method @NonNull protected Object clone() throws java.lang.CloneNotSupportedException;
+ method public boolean equals(@Nullable Object);
method protected void finalize() throws java.lang.Throwable;
- method public final java.lang.Class<?> getClass();
+ method @NonNull public final Class<?> getClass();
method public int hashCode();
method public final void notify();
method public final void notifyAll();
- method public java.lang.String toString();
+ method @NonNull public String toString();
method public final void wait(long) throws java.lang.InterruptedException;
method public final void wait(long, int) throws java.lang.InterruptedException;
method public final void wait() throws java.lang.InterruptedException;
@@ -59818,29 +59911,29 @@
public class OutOfMemoryError extends java.lang.VirtualMachineError {
ctor public OutOfMemoryError();
- ctor public OutOfMemoryError(java.lang.String);
+ ctor public OutOfMemoryError(String);
}
- public abstract class Override implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public @interface Override {
}
public class Package implements java.lang.reflect.AnnotatedElement {
- method public <A extends java.lang.annotation.Annotation> A getAnnotation(java.lang.Class<A>);
+ method public <A extends java.lang.annotation.Annotation> A getAnnotation(Class<A>);
method public java.lang.annotation.Annotation[] getAnnotations();
- method public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(java.lang.Class<A>);
- method public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(java.lang.Class<A>);
+ method public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(Class<A>);
+ method public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(Class<A>);
method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
- method public <A extends java.lang.annotation.Annotation> A[] getDeclaredAnnotationsByType(java.lang.Class<A>);
- method public java.lang.String getImplementationTitle();
- method public java.lang.String getImplementationVendor();
- method public java.lang.String getImplementationVersion();
- method public java.lang.String getName();
- method public static java.lang.Package getPackage(java.lang.String);
- method public static java.lang.Package[] getPackages();
- method public java.lang.String getSpecificationTitle();
- method public java.lang.String getSpecificationVendor();
- method public java.lang.String getSpecificationVersion();
- method public boolean isCompatibleWith(java.lang.String) throws java.lang.NumberFormatException;
+ method public <A extends java.lang.annotation.Annotation> A[] getDeclaredAnnotationsByType(Class<A>);
+ method public String getImplementationTitle();
+ method public String getImplementationVendor();
+ method public String getImplementationVersion();
+ method public String getName();
+ method public static Package getPackage(String);
+ method public static Package[] getPackages();
+ method public String getSpecificationTitle();
+ method public String getSpecificationVendor();
+ method public String getSpecificationVersion();
+ method public boolean isCompatibleWith(String) throws java.lang.NumberFormatException;
method public boolean isSealed();
method public boolean isSealed(java.net.URL);
}
@@ -59848,7 +59941,7 @@
public abstract class Process {
ctor public Process();
method public abstract void destroy();
- method public java.lang.Process destroyForcibly();
+ method public Process destroyForcibly();
method public abstract int exitValue();
method public abstract java.io.InputStream getErrorStream();
method public abstract java.io.InputStream getInputStream();
@@ -59861,28 +59954,28 @@
public final class ProcessBuilder {
ctor public ProcessBuilder(java.util.List<java.lang.String>);
ctor public ProcessBuilder(java.lang.String...);
- method public java.lang.ProcessBuilder command(java.util.List<java.lang.String>);
- method public java.lang.ProcessBuilder command(java.lang.String...);
+ method public ProcessBuilder command(java.util.List<java.lang.String>);
+ method public ProcessBuilder command(java.lang.String...);
method public java.util.List<java.lang.String> command();
method public java.io.File directory();
- method public java.lang.ProcessBuilder directory(java.io.File);
- method public java.util.Map<java.lang.String, java.lang.String> environment();
- method public java.lang.ProcessBuilder inheritIO();
- method public java.lang.ProcessBuilder redirectError(java.lang.ProcessBuilder.Redirect);
- method public java.lang.ProcessBuilder redirectError(java.io.File);
+ method public ProcessBuilder directory(java.io.File);
+ method public java.util.Map<java.lang.String,java.lang.String> environment();
+ method public ProcessBuilder inheritIO();
+ method public ProcessBuilder redirectError(java.lang.ProcessBuilder.Redirect);
+ method public ProcessBuilder redirectError(java.io.File);
method public java.lang.ProcessBuilder.Redirect redirectError();
method public boolean redirectErrorStream();
- method public java.lang.ProcessBuilder redirectErrorStream(boolean);
- method public java.lang.ProcessBuilder redirectInput(java.lang.ProcessBuilder.Redirect);
- method public java.lang.ProcessBuilder redirectInput(java.io.File);
+ method public ProcessBuilder redirectErrorStream(boolean);
+ method public ProcessBuilder redirectInput(java.lang.ProcessBuilder.Redirect);
+ method public ProcessBuilder redirectInput(java.io.File);
method public java.lang.ProcessBuilder.Redirect redirectInput();
- method public java.lang.ProcessBuilder redirectOutput(java.lang.ProcessBuilder.Redirect);
- method public java.lang.ProcessBuilder redirectOutput(java.io.File);
+ method public ProcessBuilder redirectOutput(java.lang.ProcessBuilder.Redirect);
+ method public ProcessBuilder redirectOutput(java.io.File);
method public java.lang.ProcessBuilder.Redirect redirectOutput();
- method public java.lang.Process start() throws java.io.IOException;
+ method public Process start() throws java.io.IOException;
}
- public static abstract class ProcessBuilder.Redirect {
+ public abstract static class ProcessBuilder.Redirect {
method public static java.lang.ProcessBuilder.Redirect appendTo(java.io.File);
method public java.io.File file();
method public static java.lang.ProcessBuilder.Redirect from(java.io.File);
@@ -59892,9 +59985,7 @@
field public static final java.lang.ProcessBuilder.Redirect PIPE;
}
- public static final class ProcessBuilder.Redirect.Type extends java.lang.Enum {
- method public static java.lang.ProcessBuilder.Redirect.Type valueOf(java.lang.String);
- method public static final java.lang.ProcessBuilder.Redirect.Type[] values();
+ public enum ProcessBuilder.Redirect.Type {
enum_constant public static final java.lang.ProcessBuilder.Redirect.Type APPEND;
enum_constant public static final java.lang.ProcessBuilder.Redirect.Type INHERIT;
enum_constant public static final java.lang.ProcessBuilder.Redirect.Type PIPE;
@@ -59902,43 +59993,43 @@
enum_constant public static final java.lang.ProcessBuilder.Redirect.Type WRITE;
}
- public abstract interface Readable {
- method public abstract int read(java.nio.CharBuffer) throws java.io.IOException;
+ public interface Readable {
+ method public int read(java.nio.CharBuffer) throws java.io.IOException;
}
public class ReflectiveOperationException extends java.lang.Exception {
ctor public ReflectiveOperationException();
- ctor public ReflectiveOperationException(java.lang.String);
- ctor public ReflectiveOperationException(java.lang.String, java.lang.Throwable);
- ctor public ReflectiveOperationException(java.lang.Throwable);
+ ctor public ReflectiveOperationException(String);
+ ctor public ReflectiveOperationException(String, Throwable);
+ ctor public ReflectiveOperationException(Throwable);
}
- public abstract interface Runnable {
- method public abstract void run();
+ @java.lang.FunctionalInterface public interface Runnable {
+ method public void run();
}
public class Runtime {
- method public void addShutdownHook(java.lang.Thread);
+ method public void addShutdownHook(Thread);
method public int availableProcessors();
- method public java.lang.Process exec(java.lang.String) throws java.io.IOException;
- method public java.lang.Process exec(java.lang.String, java.lang.String[]) throws java.io.IOException;
- method public java.lang.Process exec(java.lang.String, java.lang.String[], java.io.File) throws java.io.IOException;
- method public java.lang.Process exec(java.lang.String[]) throws java.io.IOException;
- method public java.lang.Process exec(java.lang.String[], java.lang.String[]) throws java.io.IOException;
- method public java.lang.Process exec(java.lang.String[], java.lang.String[], java.io.File) throws java.io.IOException;
+ method public Process exec(String) throws java.io.IOException;
+ method public Process exec(String, String[]) throws java.io.IOException;
+ method public Process exec(String, String[], java.io.File) throws java.io.IOException;
+ method public Process exec(String[]) throws java.io.IOException;
+ method public Process exec(String[], String[]) throws java.io.IOException;
+ method public Process exec(String[], String[], java.io.File) throws java.io.IOException;
method public void exit(int);
method public long freeMemory();
method public void gc();
- method public deprecated java.io.InputStream getLocalizedInputStream(java.io.InputStream);
- method public deprecated java.io.OutputStream getLocalizedOutputStream(java.io.OutputStream);
- method public static java.lang.Runtime getRuntime();
+ method @Deprecated public java.io.InputStream getLocalizedInputStream(java.io.InputStream);
+ method @Deprecated public java.io.OutputStream getLocalizedOutputStream(java.io.OutputStream);
+ method public static Runtime getRuntime();
method public void halt(int);
- method public void load(java.lang.String);
- method public void loadLibrary(java.lang.String);
+ method public void load(String);
+ method public void loadLibrary(String);
method public long maxMemory();
- method public boolean removeShutdownHook(java.lang.Thread);
+ method public boolean removeShutdownHook(Thread);
method public void runFinalization();
- method public static deprecated void runFinalizersOnExit(boolean);
+ method @Deprecated public static void runFinalizersOnExit(boolean);
method public long totalMemory();
method public void traceInstructions(boolean);
method public void traceMethodCalls(boolean);
@@ -59946,111 +60037,111 @@
public class RuntimeException extends java.lang.Exception {
ctor public RuntimeException();
- ctor public RuntimeException(java.lang.String);
- ctor public RuntimeException(java.lang.String, java.lang.Throwable);
- ctor public RuntimeException(java.lang.Throwable);
- ctor protected RuntimeException(java.lang.String, java.lang.Throwable, boolean, boolean);
+ ctor public RuntimeException(String);
+ ctor public RuntimeException(String, Throwable);
+ ctor public RuntimeException(Throwable);
+ ctor protected RuntimeException(String, Throwable, boolean, boolean);
}
public final class RuntimePermission extends java.security.BasicPermission {
- ctor public RuntimePermission(java.lang.String);
- ctor public RuntimePermission(java.lang.String, java.lang.String);
+ ctor public RuntimePermission(String);
+ ctor public RuntimePermission(String, String);
}
- public abstract class SafeVarargs implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.METHOD}) public @interface SafeVarargs {
}
public class SecurityException extends java.lang.RuntimeException {
ctor public SecurityException();
- ctor public SecurityException(java.lang.String);
- ctor public SecurityException(java.lang.String, java.lang.Throwable);
- ctor public SecurityException(java.lang.Throwable);
+ ctor public SecurityException(String);
+ ctor public SecurityException(String, Throwable);
+ ctor public SecurityException(Throwable);
}
public class SecurityManager {
ctor public SecurityManager();
- method public void checkAccept(java.lang.String, int);
- method public void checkAccess(java.lang.Thread);
- method public void checkAccess(java.lang.ThreadGroup);
+ method public void checkAccept(String, int);
+ method public void checkAccess(Thread);
+ method public void checkAccess(ThreadGroup);
method public void checkAwtEventQueueAccess();
- method public void checkConnect(java.lang.String, int);
- method public void checkConnect(java.lang.String, int, java.lang.Object);
+ method public void checkConnect(String, int);
+ method public void checkConnect(String, int, Object);
method public void checkCreateClassLoader();
- method public void checkDelete(java.lang.String);
- method public void checkExec(java.lang.String);
+ method public void checkDelete(String);
+ method public void checkExec(String);
method public void checkExit(int);
- method public void checkLink(java.lang.String);
+ method public void checkLink(String);
method public void checkListen(int);
- method public void checkMemberAccess(java.lang.Class<?>, int);
+ method public void checkMemberAccess(Class<?>, int);
method public void checkMulticast(java.net.InetAddress);
- method public deprecated void checkMulticast(java.net.InetAddress, byte);
- method public void checkPackageAccess(java.lang.String);
- method public void checkPackageDefinition(java.lang.String);
+ method @Deprecated public void checkMulticast(java.net.InetAddress, byte);
+ method public void checkPackageAccess(String);
+ method public void checkPackageDefinition(String);
method public void checkPermission(java.security.Permission);
- method public void checkPermission(java.security.Permission, java.lang.Object);
+ method public void checkPermission(java.security.Permission, Object);
method public void checkPrintJobAccess();
method public void checkPropertiesAccess();
- method public void checkPropertyAccess(java.lang.String);
+ method public void checkPropertyAccess(String);
method public void checkRead(java.io.FileDescriptor);
- method public void checkRead(java.lang.String);
- method public void checkRead(java.lang.String, java.lang.Object);
- method public void checkSecurityAccess(java.lang.String);
+ method public void checkRead(String);
+ method public void checkRead(String, Object);
+ method public void checkSecurityAccess(String);
method public void checkSetFactory();
method public void checkSystemClipboardAccess();
- method public boolean checkTopLevelWindow(java.lang.Object);
+ method public boolean checkTopLevelWindow(Object);
method public void checkWrite(java.io.FileDescriptor);
- method public void checkWrite(java.lang.String);
- method protected deprecated int classDepth(java.lang.String);
- method protected deprecated int classLoaderDepth();
- method protected deprecated java.lang.ClassLoader currentClassLoader();
- method protected deprecated java.lang.Class<?> currentLoadedClass();
- method protected java.lang.Class[] getClassContext();
- method public deprecated boolean getInCheck();
- method public java.lang.Object getSecurityContext();
- method public java.lang.ThreadGroup getThreadGroup();
- method protected deprecated boolean inClass(java.lang.String);
- method protected deprecated boolean inClassLoader();
- field protected deprecated boolean inCheck;
+ method public void checkWrite(String);
+ method @Deprecated protected int classDepth(String);
+ method @Deprecated protected int classLoaderDepth();
+ method @Deprecated protected ClassLoader currentClassLoader();
+ method @Deprecated protected Class<?> currentLoadedClass();
+ method protected Class[] getClassContext();
+ method @Deprecated public boolean getInCheck();
+ method public Object getSecurityContext();
+ method public ThreadGroup getThreadGroup();
+ method @Deprecated protected boolean inClass(String);
+ method @Deprecated protected boolean inClassLoader();
+ field @Deprecated protected boolean inCheck;
}
- public final class Short extends java.lang.Number implements java.lang.Comparable {
+ public final class Short extends java.lang.Number implements java.lang.Comparable<java.lang.Short> {
ctor public Short(short);
- ctor public Short(java.lang.String) throws java.lang.NumberFormatException;
+ ctor public Short(String) throws java.lang.NumberFormatException;
method public static int compare(short, short);
- method public int compareTo(java.lang.Short);
- method public static java.lang.Short decode(java.lang.String) throws java.lang.NumberFormatException;
+ method public int compareTo(Short);
+ method public static Short decode(String) throws java.lang.NumberFormatException;
method public double doubleValue();
method public float floatValue();
method public static int hashCode(short);
method public int intValue();
method public long longValue();
- method public static short parseShort(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static short parseShort(java.lang.String) throws java.lang.NumberFormatException;
+ method public static short parseShort(String, int) throws java.lang.NumberFormatException;
+ method public static short parseShort(String) throws java.lang.NumberFormatException;
method public static short reverseBytes(short);
- method public static java.lang.String toString(short);
+ method public static String toString(short);
method public static int toUnsignedInt(short);
method public static long toUnsignedLong(short);
- method public static java.lang.Short valueOf(java.lang.String, int) throws java.lang.NumberFormatException;
- method public static java.lang.Short valueOf(java.lang.String) throws java.lang.NumberFormatException;
- method public static java.lang.Short valueOf(short);
+ method public static Short valueOf(String, int) throws java.lang.NumberFormatException;
+ method public static Short valueOf(String) throws java.lang.NumberFormatException;
+ method public static Short valueOf(short);
field public static final int BYTES = 2; // 0x2
field public static final short MAX_VALUE = 32767; // 0x7fff
field public static final short MIN_VALUE = -32768; // 0xffff8000
field public static final int SIZE = 16; // 0x10
- field public static final java.lang.Class<java.lang.Short> TYPE;
+ field public static final Class<java.lang.Short> TYPE;
}
public class StackOverflowError extends java.lang.VirtualMachineError {
ctor public StackOverflowError();
- ctor public StackOverflowError(java.lang.String);
+ ctor public StackOverflowError(String);
}
public final class StackTraceElement implements java.io.Serializable {
- ctor public StackTraceElement(java.lang.String, java.lang.String, java.lang.String, int);
- method public java.lang.String getClassName();
- method public java.lang.String getFileName();
+ ctor public StackTraceElement(String, String, String, int);
+ method public String getClassName();
+ method public String getFileName();
method public int getLineNumber();
- method public java.lang.String getMethodName();
+ method public String getMethodName();
method public boolean isNativeMethod();
}
@@ -60126,224 +60217,239 @@
field public static final double PI = 3.141592653589793;
}
- public final class String implements java.lang.CharSequence java.lang.Comparable java.io.Serializable {
+ public final class String implements java.lang.CharSequence java.lang.Comparable<java.lang.String> java.io.Serializable {
ctor public String();
- ctor public String(java.lang.String);
+ ctor public String(@NonNull String);
ctor public String(char[]);
ctor public String(char[], int, int);
ctor public String(int[], int, int);
- ctor public deprecated String(byte[], int, int, int);
- ctor public deprecated String(byte[], int);
- ctor public String(byte[], int, int, java.lang.String) throws java.io.UnsupportedEncodingException;
- ctor public String(byte[], int, int, java.nio.charset.Charset);
- ctor public String(byte[], java.lang.String) throws java.io.UnsupportedEncodingException;
- ctor public String(byte[], java.nio.charset.Charset);
+ ctor @Deprecated public String(byte[], int, int, int);
+ ctor @Deprecated public String(byte[], int);
+ ctor public String(byte[], int, int, @NonNull String) throws java.io.UnsupportedEncodingException;
+ ctor public String(byte[], int, int, @NonNull java.nio.charset.Charset);
+ ctor public String(byte[], @NonNull String) throws java.io.UnsupportedEncodingException;
+ ctor public String(byte[], @NonNull java.nio.charset.Charset);
ctor public String(byte[], int, int);
ctor public String(byte[]);
- ctor public String(java.lang.StringBuffer);
- ctor public String(java.lang.StringBuilder);
+ ctor public String(@NonNull StringBuffer);
+ ctor public String(@NonNull StringBuilder);
method public char charAt(int);
method public int codePointAt(int);
method public int codePointBefore(int);
method public int codePointCount(int, int);
- method public int compareTo(java.lang.String);
- method public int compareToIgnoreCase(java.lang.String);
- method public java.lang.String concat(java.lang.String);
- method public boolean contains(java.lang.CharSequence);
- method public boolean contentEquals(java.lang.StringBuffer);
- method public boolean contentEquals(java.lang.CharSequence);
- method public static java.lang.String copyValueOf(char[], int, int);
- method public static java.lang.String copyValueOf(char[]);
- method public boolean endsWith(java.lang.String);
- method public boolean equalsIgnoreCase(java.lang.String);
- method public static java.lang.String format(java.lang.String, java.lang.Object...);
- method public static java.lang.String format(java.util.Locale, java.lang.String, java.lang.Object...);
- method public deprecated void getBytes(int, int, byte[], int);
- method public byte[] getBytes(java.lang.String) throws java.io.UnsupportedEncodingException;
- method public byte[] getBytes(java.nio.charset.Charset);
+ method public int compareTo(@NonNull String);
+ method public int compareToIgnoreCase(@NonNull String);
+ method @NonNull public String concat(@NonNull String);
+ method public boolean contains(@NonNull CharSequence);
+ method public boolean contentEquals(@NonNull StringBuffer);
+ method public boolean contentEquals(@NonNull CharSequence);
+ method @NonNull public static String copyValueOf(char[], int, int);
+ method @NonNull public static String copyValueOf(char[]);
+ method public boolean endsWith(@NonNull String);
+ method public boolean equalsIgnoreCase(@Nullable String);
+ method @NonNull public static String format(@NonNull String, java.lang.Object...);
+ method @NonNull public static String format(@NonNull java.util.Locale, @NonNull String, java.lang.Object...);
+ method @Deprecated public void getBytes(int, int, byte[], int);
+ method public byte[] getBytes(@NonNull String) throws java.io.UnsupportedEncodingException;
+ method public byte[] getBytes(@NonNull java.nio.charset.Charset);
method public byte[] getBytes();
method public void getChars(int, int, char[], int);
method public int indexOf(int);
method public int indexOf(int, int);
- method public int indexOf(java.lang.String);
- method public int indexOf(java.lang.String, int);
- method public java.lang.String intern();
+ method public int indexOf(@NonNull String);
+ method public int indexOf(@NonNull String, int);
+ method @NonNull public String intern();
method public boolean isEmpty();
- method public static java.lang.String join(java.lang.CharSequence, java.lang.CharSequence...);
- method public static java.lang.String join(java.lang.CharSequence, java.lang.Iterable<? extends java.lang.CharSequence>);
+ method @NonNull public static String join(@NonNull CharSequence, java.lang.CharSequence...);
+ method @NonNull public static String join(@NonNull CharSequence, @NonNull Iterable<? extends java.lang.CharSequence>);
method public int lastIndexOf(int);
method public int lastIndexOf(int, int);
- method public int lastIndexOf(java.lang.String);
- method public int lastIndexOf(java.lang.String, int);
+ method public int lastIndexOf(@NonNull String);
+ method public int lastIndexOf(@NonNull String, int);
method public int length();
- method public boolean matches(java.lang.String);
+ method public boolean matches(@NonNull String);
method public int offsetByCodePoints(int, int);
- method public boolean regionMatches(int, java.lang.String, int, int);
- method public boolean regionMatches(boolean, int, java.lang.String, int, int);
- method public java.lang.String replace(char, char);
- method public java.lang.String replace(java.lang.CharSequence, java.lang.CharSequence);
- method public java.lang.String replaceAll(java.lang.String, java.lang.String);
- method public java.lang.String replaceFirst(java.lang.String, java.lang.String);
- method public java.lang.String[] split(java.lang.String, int);
- method public java.lang.String[] split(java.lang.String);
- method public boolean startsWith(java.lang.String, int);
- method public boolean startsWith(java.lang.String);
- method public java.lang.CharSequence subSequence(int, int);
- method public java.lang.String substring(int);
- method public java.lang.String substring(int, int);
+ method public boolean regionMatches(int, @NonNull String, int, int);
+ method public boolean regionMatches(boolean, int, @NonNull String, int, int);
+ method @NonNull public String replace(char, char);
+ method @NonNull public String replace(@NonNull CharSequence, @NonNull CharSequence);
+ method @NonNull public String replaceAll(@NonNull String, @NonNull String);
+ method @NonNull public String replaceFirst(@NonNull String, @NonNull String);
+ method public String[] split(@NonNull String, int);
+ method public String[] split(@NonNull String);
+ method public boolean startsWith(@NonNull String, int);
+ method public boolean startsWith(@NonNull String);
+ method @NonNull public CharSequence subSequence(int, int);
+ method @NonNull public String substring(int);
+ method @NonNull public String substring(int, int);
method public char[] toCharArray();
- method public java.lang.String toLowerCase(java.util.Locale);
- method public java.lang.String toLowerCase();
- method public java.lang.String toUpperCase(java.util.Locale);
- method public java.lang.String toUpperCase();
- method public java.lang.String trim();
- method public static java.lang.String valueOf(java.lang.Object);
- method public static java.lang.String valueOf(char[]);
- method public static java.lang.String valueOf(char[], int, int);
- method public static java.lang.String valueOf(boolean);
- method public static java.lang.String valueOf(char);
- method public static java.lang.String valueOf(int);
- method public static java.lang.String valueOf(long);
- method public static java.lang.String valueOf(float);
- method public static java.lang.String valueOf(double);
+ method @NonNull public String toLowerCase(@NonNull java.util.Locale);
+ method @NonNull public String toLowerCase();
+ method @NonNull public String toUpperCase(@NonNull java.util.Locale);
+ method @NonNull public String toUpperCase();
+ method @NonNull public String trim();
+ method @NonNull public static String valueOf(@Nullable Object);
+ method @NonNull public static String valueOf(char[]);
+ method @NonNull public static String valueOf(char[], int, int);
+ method @NonNull public static String valueOf(boolean);
+ method @NonNull public static String valueOf(char);
+ method @NonNull public static String valueOf(int);
+ method @NonNull public static String valueOf(long);
+ method @NonNull public static String valueOf(float);
+ method @NonNull public static String valueOf(double);
field public static final java.util.Comparator<java.lang.String> CASE_INSENSITIVE_ORDER;
}
public final class StringBuffer implements java.lang.Appendable java.lang.CharSequence java.io.Serializable {
ctor public StringBuffer();
ctor public StringBuffer(int);
- ctor public StringBuffer(java.lang.String);
- ctor public StringBuffer(java.lang.CharSequence);
- method public synchronized java.lang.StringBuffer append(java.lang.Object);
- method public synchronized java.lang.StringBuffer append(java.lang.String);
- method public synchronized java.lang.StringBuffer append(java.lang.StringBuffer);
- method public synchronized java.lang.StringBuffer append(java.lang.CharSequence);
- method public synchronized java.lang.StringBuffer append(java.lang.CharSequence, int, int);
- method public synchronized java.lang.StringBuffer append(char[]);
- method public synchronized java.lang.StringBuffer append(char[], int, int);
- method public synchronized java.lang.StringBuffer append(boolean);
- method public synchronized java.lang.StringBuffer append(char);
- method public synchronized java.lang.StringBuffer append(int);
- method public synchronized java.lang.StringBuffer append(long);
- method public synchronized java.lang.StringBuffer append(float);
- method public synchronized java.lang.StringBuffer append(double);
- method public synchronized java.lang.StringBuffer appendCodePoint(int);
- method public synchronized int capacity();
- method public synchronized char charAt(int);
- method public synchronized int codePointAt(int);
- method public synchronized int codePointBefore(int);
- method public synchronized int codePointCount(int, int);
- method public synchronized java.lang.StringBuffer delete(int, int);
- method public synchronized java.lang.StringBuffer deleteCharAt(int);
- method public synchronized void ensureCapacity(int);
- method public synchronized void getChars(int, int, char[], int);
- method public int indexOf(java.lang.String);
- method public synchronized int indexOf(java.lang.String, int);
- method public synchronized java.lang.StringBuffer insert(int, char[], int, int);
- method public synchronized java.lang.StringBuffer insert(int, java.lang.Object);
- method public synchronized java.lang.StringBuffer insert(int, java.lang.String);
- method public synchronized java.lang.StringBuffer insert(int, char[]);
- method public java.lang.StringBuffer insert(int, java.lang.CharSequence);
- method public synchronized java.lang.StringBuffer insert(int, java.lang.CharSequence, int, int);
- method public java.lang.StringBuffer insert(int, boolean);
- method public synchronized java.lang.StringBuffer insert(int, char);
- method public java.lang.StringBuffer insert(int, int);
- method public java.lang.StringBuffer insert(int, long);
- method public java.lang.StringBuffer insert(int, float);
- method public java.lang.StringBuffer insert(int, double);
- method public int lastIndexOf(java.lang.String);
- method public synchronized int lastIndexOf(java.lang.String, int);
- method public synchronized int length();
- method public synchronized int offsetByCodePoints(int, int);
- method public synchronized java.lang.StringBuffer replace(int, int, java.lang.String);
- method public synchronized java.lang.StringBuffer reverse();
- method public synchronized void setCharAt(int, char);
- method public synchronized void setLength(int);
- method public synchronized java.lang.CharSequence subSequence(int, int);
- method public synchronized java.lang.String substring(int);
- method public synchronized java.lang.String substring(int, int);
- method public synchronized java.lang.String toString();
- method public synchronized void trimToSize();
+ ctor public StringBuffer(@NonNull String);
+ ctor public StringBuffer(@NonNull CharSequence);
+ method @NonNull public StringBuffer append(@Nullable Object);
+ method @NonNull public StringBuffer append(@Nullable String);
+ method @NonNull public StringBuffer append(@Nullable StringBuffer);
+ method @NonNull public StringBuffer append(@Nullable CharSequence);
+ method @NonNull public StringBuffer append(@Nullable CharSequence, int, int);
+ method @NonNull public StringBuffer append(char[]);
+ method @NonNull public StringBuffer append(char[], int, int);
+ method @NonNull public StringBuffer append(boolean);
+ method @NonNull public StringBuffer append(char);
+ method @NonNull public StringBuffer append(int);
+ method @NonNull public StringBuffer append(long);
+ method @NonNull public StringBuffer append(float);
+ method @NonNull public StringBuffer append(double);
+ method @NonNull public StringBuffer appendCodePoint(int);
+ method public int capacity();
+ method public char charAt(int);
+ method public int codePointAt(int);
+ method public int codePointBefore(int);
+ method public int codePointCount(int, int);
+ method @NonNull public StringBuffer delete(int, int);
+ method @NonNull public StringBuffer deleteCharAt(int);
+ method public void ensureCapacity(int);
+ method public void getChars(int, int, char[], int);
+ method public int indexOf(@NonNull String);
+ method public int indexOf(@NonNull String, int);
+ method @NonNull public StringBuffer insert(int, char[], int, int);
+ method @NonNull public StringBuffer insert(int, @Nullable Object);
+ method @NonNull public StringBuffer insert(int, @Nullable String);
+ method @NonNull public StringBuffer insert(int, char[]);
+ method @NonNull public StringBuffer insert(int, @Nullable CharSequence);
+ method @NonNull public StringBuffer insert(int, @Nullable CharSequence, int, int);
+ method @NonNull public StringBuffer insert(int, boolean);
+ method @NonNull public StringBuffer insert(int, char);
+ method @NonNull public StringBuffer insert(int, int);
+ method @NonNull public StringBuffer insert(int, long);
+ method @NonNull public StringBuffer insert(int, float);
+ method @NonNull public StringBuffer insert(int, double);
+ method public int lastIndexOf(@NonNull String);
+ method public int lastIndexOf(@NonNull String, int);
+ method public int length();
+ method public int offsetByCodePoints(int, int);
+ method @NonNull public StringBuffer replace(int, int, @NonNull String);
+ method @NonNull public StringBuffer reverse();
+ method public void setCharAt(int, char);
+ method public void setLength(int);
+ method @NonNull public CharSequence subSequence(int, int);
+ method @NonNull public String substring(int);
+ method @NonNull public String substring(int, int);
+ method public void trimToSize();
}
public final class StringBuilder implements java.lang.Appendable java.lang.CharSequence java.io.Serializable {
ctor public StringBuilder();
ctor public StringBuilder(int);
- ctor public StringBuilder(java.lang.String);
- ctor public StringBuilder(java.lang.CharSequence);
- method public java.lang.StringBuilder append(java.lang.Object);
- method public java.lang.StringBuilder append(java.lang.String);
- method public java.lang.StringBuilder append(java.lang.StringBuffer);
- method public java.lang.StringBuilder append(java.lang.CharSequence);
- method public java.lang.StringBuilder append(java.lang.CharSequence, int, int);
- method public java.lang.StringBuilder append(char[]);
- method public java.lang.StringBuilder append(char[], int, int);
- method public java.lang.StringBuilder append(boolean);
- method public java.lang.StringBuilder append(char);
- method public java.lang.StringBuilder append(int);
- method public java.lang.StringBuilder append(long);
- method public java.lang.StringBuilder append(float);
- method public java.lang.StringBuilder append(double);
- method public java.lang.StringBuilder appendCodePoint(int);
- method public java.lang.StringBuilder delete(int, int);
- method public java.lang.StringBuilder deleteCharAt(int);
- method public int indexOf(java.lang.String);
- method public int indexOf(java.lang.String, int);
- method public java.lang.StringBuilder insert(int, char[], int, int);
- method public java.lang.StringBuilder insert(int, java.lang.Object);
- method public java.lang.StringBuilder insert(int, java.lang.String);
- method public java.lang.StringBuilder insert(int, char[]);
- method public java.lang.StringBuilder insert(int, java.lang.CharSequence);
- method public java.lang.StringBuilder insert(int, java.lang.CharSequence, int, int);
- method public java.lang.StringBuilder insert(int, boolean);
- method public java.lang.StringBuilder insert(int, char);
- method public java.lang.StringBuilder insert(int, int);
- method public java.lang.StringBuilder insert(int, long);
- method public java.lang.StringBuilder insert(int, float);
- method public java.lang.StringBuilder insert(int, double);
- method public int lastIndexOf(java.lang.String);
- method public int lastIndexOf(java.lang.String, int);
- method public java.lang.StringBuilder replace(int, int, java.lang.String);
- method public java.lang.StringBuilder reverse();
+ ctor public StringBuilder(@NonNull String);
+ ctor public StringBuilder(@NonNull CharSequence);
+ method @NonNull public StringBuilder append(@Nullable Object);
+ method @NonNull public StringBuilder append(@Nullable String);
+ method @NonNull public StringBuilder append(@Nullable StringBuffer);
+ method @NonNull public StringBuilder append(@Nullable CharSequence);
+ method @NonNull public StringBuilder append(@Nullable CharSequence, int, int);
+ method @NonNull public StringBuilder append(char[]);
+ method @NonNull public StringBuilder append(char[], int, int);
+ method @NonNull public StringBuilder append(boolean);
+ method @NonNull public StringBuilder append(char);
+ method @NonNull public StringBuilder append(int);
+ method @NonNull public StringBuilder append(long);
+ method @NonNull public StringBuilder append(float);
+ method @NonNull public StringBuilder append(double);
+ method @NonNull public StringBuilder appendCodePoint(int);
+ method public int capacity();
+ method public char charAt(int);
+ method public int codePointAt(int);
+ method public int codePointBefore(int);
+ method public int codePointCount(int, int);
+ method @NonNull public StringBuilder delete(int, int);
+ method @NonNull public StringBuilder deleteCharAt(int);
+ method public void ensureCapacity(int);
+ method public void getChars(int, int, char[], int);
+ method public int indexOf(@NonNull String);
+ method public int indexOf(@NonNull String, int);
+ method @NonNull public StringBuilder insert(int, char[], int, int);
+ method @NonNull public StringBuilder insert(int, @Nullable Object);
+ method @NonNull public StringBuilder insert(int, @Nullable String);
+ method @NonNull public StringBuilder insert(int, char[]);
+ method @NonNull public StringBuilder insert(int, @Nullable CharSequence);
+ method @NonNull public StringBuilder insert(int, @Nullable CharSequence, int, int);
+ method @NonNull public StringBuilder insert(int, boolean);
+ method @NonNull public StringBuilder insert(int, char);
+ method @NonNull public StringBuilder insert(int, int);
+ method @NonNull public StringBuilder insert(int, long);
+ method @NonNull public StringBuilder insert(int, float);
+ method @NonNull public StringBuilder insert(int, double);
+ method public int lastIndexOf(@NonNull String);
+ method public int lastIndexOf(@NonNull String, int);
+ method public int length();
+ method public int offsetByCodePoints(int, int);
+ method @NonNull public StringBuilder replace(int, int, @NonNull String);
+ method @NonNull public StringBuilder reverse();
+ method public void setCharAt(int, char);
+ method public void setLength(int);
+ method public CharSequence subSequence(int, int);
+ method public String substring(int);
+ method public String substring(int, int);
+ method public void trimToSize();
}
public class StringIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
ctor public StringIndexOutOfBoundsException();
- ctor public StringIndexOutOfBoundsException(java.lang.String);
+ ctor public StringIndexOutOfBoundsException(String);
ctor public StringIndexOutOfBoundsException(int);
}
- public abstract class SuppressWarnings implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.LOCAL_VARIABLE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public @interface SuppressWarnings {
+ method public abstract String[] value();
}
public final class System {
- method public static void arraycopy(java.lang.Object, int, java.lang.Object, int, int);
- method public static java.lang.String clearProperty(java.lang.String);
- method public static java.io.Console console();
+ method public static void arraycopy(@NonNull Object, int, @NonNull Object, int, int);
+ method @Nullable public static String clearProperty(@NonNull String);
+ method @Nullable public static java.io.Console console();
method public static long currentTimeMillis();
method public static void exit(int);
method public static void gc();
- method public static java.util.Properties getProperties();
- method public static java.lang.String getProperty(java.lang.String);
- method public static java.lang.String getProperty(java.lang.String, java.lang.String);
- method public static java.lang.SecurityManager getSecurityManager();
- method public static java.lang.String getenv(java.lang.String);
- method public static java.util.Map<java.lang.String, java.lang.String> getenv();
- method public static int identityHashCode(java.lang.Object);
- method public static java.nio.channels.Channel inheritedChannel() throws java.io.IOException;
- method public static java.lang.String lineSeparator();
- method public static void load(java.lang.String);
- method public static void loadLibrary(java.lang.String);
- method public static java.lang.String mapLibraryName(java.lang.String);
+ method @NonNull public static java.util.Properties getProperties();
+ method @Nullable public static String getProperty(@NonNull String);
+ method @Nullable public static String getProperty(@NonNull String, @Nullable String);
+ method @Nullable public static SecurityManager getSecurityManager();
+ method @Nullable public static String getenv(@NonNull String);
+ method @NonNull public static java.util.Map<java.lang.String,java.lang.String> getenv();
+ method public static int identityHashCode(@Nullable Object);
+ method @Nullable public static java.nio.channels.Channel inheritedChannel() throws java.io.IOException;
+ method @NonNull public static String lineSeparator();
+ method public static void load(@NonNull String);
+ method public static void loadLibrary(@NonNull String);
+ method @NonNull public static String mapLibraryName(@NonNull String);
method public static long nanoTime();
method public static void runFinalization();
- method public static deprecated void runFinalizersOnExit(boolean);
- method public static void setErr(java.io.PrintStream);
- method public static void setIn(java.io.InputStream);
- method public static void setOut(java.io.PrintStream);
- method public static void setProperties(java.util.Properties);
- method public static java.lang.String setProperty(java.lang.String, java.lang.String);
- method public static void setSecurityManager(java.lang.SecurityManager);
+ method @Deprecated public static void runFinalizersOnExit(boolean);
+ method public static void setErr(@Nullable java.io.PrintStream);
+ method public static void setIn(@Nullable java.io.InputStream);
+ method public static void setOut(@Nullable java.io.PrintStream);
+ method public static void setProperties(@Nullable java.util.Properties);
+ method @Nullable public static String setProperty(@NonNull String, @Nullable String);
+ method public static void setSecurityManager(@Nullable SecurityManager);
field public static final java.io.PrintStream err;
field public static final java.io.InputStream in;
field public static final java.io.PrintStream out;
@@ -60351,31 +60457,31 @@
public class Thread implements java.lang.Runnable {
ctor public Thread();
- ctor public Thread(java.lang.Runnable);
- ctor public Thread(java.lang.ThreadGroup, java.lang.Runnable);
- ctor public Thread(java.lang.String);
- ctor public Thread(java.lang.ThreadGroup, java.lang.String);
- ctor public Thread(java.lang.Runnable, java.lang.String);
- ctor public Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String);
- ctor public Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String, long);
+ ctor public Thread(@Nullable Runnable);
+ ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable);
+ ctor public Thread(@NonNull String);
+ ctor public Thread(@Nullable ThreadGroup, @NonNull String);
+ ctor public Thread(@Nullable Runnable, @NonNull String);
+ ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable, @NonNull String);
+ ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable, @NonNull String, long);
method public static int activeCount();
method public final void checkAccess();
- method public deprecated int countStackFrames();
- method public static java.lang.Thread currentThread();
- method public deprecated void destroy();
+ method @Deprecated public int countStackFrames();
+ method @NonNull public static Thread currentThread();
+ method @Deprecated public void destroy();
method public static void dumpStack();
- method public static int enumerate(java.lang.Thread[]);
- method public static java.util.Map<java.lang.Thread, java.lang.StackTraceElement[]> getAllStackTraces();
- method public java.lang.ClassLoader getContextClassLoader();
- method public static java.lang.Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler();
+ method public static int enumerate(Thread[]);
+ method @NonNull public static java.util.Map<java.lang.Thread,java.lang.StackTraceElement[]> getAllStackTraces();
+ method @Nullable public ClassLoader getContextClassLoader();
+ method @Nullable public static java.lang.Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler();
method public long getId();
- method public final java.lang.String getName();
+ method @NonNull public final String getName();
method public final int getPriority();
- method public java.lang.StackTraceElement[] getStackTrace();
- method public java.lang.Thread.State getState();
- method public final java.lang.ThreadGroup getThreadGroup();
- method public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler();
- method public static boolean holdsLock(java.lang.Object);
+ method public StackTraceElement[] getStackTrace();
+ method @NonNull public java.lang.Thread.State getState();
+ method @Nullable public final ThreadGroup getThreadGroup();
+ method @Nullable public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler();
+ method public static boolean holdsLock(@NonNull Object);
method public void interrupt();
method public static boolean interrupted();
method public final boolean isAlive();
@@ -60384,29 +60490,27 @@
method public final void join(long) throws java.lang.InterruptedException;
method public final void join(long, int) throws java.lang.InterruptedException;
method public final void join() throws java.lang.InterruptedException;
- method public final deprecated void resume();
+ method @Deprecated public final void resume();
method public void run();
- method public void setContextClassLoader(java.lang.ClassLoader);
+ method public void setContextClassLoader(@Nullable ClassLoader);
method public final void setDaemon(boolean);
- method public static void setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler);
- method public final synchronized void setName(java.lang.String);
+ method public static void setDefaultUncaughtExceptionHandler(@Nullable java.lang.Thread.UncaughtExceptionHandler);
+ method public final void setName(@NonNull String);
method public final void setPriority(int);
- method public void setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler);
+ method public void setUncaughtExceptionHandler(@Nullable java.lang.Thread.UncaughtExceptionHandler);
method public static void sleep(long) throws java.lang.InterruptedException;
method public static void sleep(long, int) throws java.lang.InterruptedException;
- method public synchronized void start();
- method public final deprecated void stop();
- method public final deprecated synchronized void stop(java.lang.Throwable);
- method public final deprecated void suspend();
+ method public void start();
+ method @Deprecated public final void stop();
+ method @Deprecated public final void stop(@Nullable Throwable);
+ method @Deprecated public final void suspend();
method public static void yield();
field public static final int MAX_PRIORITY = 10; // 0xa
field public static final int MIN_PRIORITY = 1; // 0x1
field public static final int NORM_PRIORITY = 5; // 0x5
}
- public static final class Thread.State extends java.lang.Enum {
- method public static java.lang.Thread.State valueOf(java.lang.String);
- method public static final java.lang.Thread.State[] values();
+ public enum Thread.State {
enum_constant public static final java.lang.Thread.State BLOCKED;
enum_constant public static final java.lang.Thread.State NEW;
enum_constant public static final java.lang.Thread.State RUNNABLE;
@@ -60415,8 +60519,8 @@
enum_constant public static final java.lang.Thread.State WAITING;
}
- public static abstract interface Thread.UncaughtExceptionHandler {
- method public abstract void uncaughtException(java.lang.Thread, java.lang.Throwable);
+ @java.lang.FunctionalInterface public static interface Thread.UncaughtExceptionHandler {
+ method public void uncaughtException(@NonNull Thread, @NonNull Throwable);
}
public class ThreadDeath extends java.lang.Error {
@@ -60424,134 +60528,132 @@
}
public class ThreadGroup implements java.lang.Thread.UncaughtExceptionHandler {
- ctor public ThreadGroup(java.lang.String);
- ctor public ThreadGroup(java.lang.ThreadGroup, java.lang.String);
+ ctor public ThreadGroup(String);
+ ctor public ThreadGroup(ThreadGroup, String);
method public int activeCount();
method public int activeGroupCount();
- method public deprecated boolean allowThreadSuspension(boolean);
+ method @Deprecated public boolean allowThreadSuspension(boolean);
method public final void checkAccess();
method public final void destroy();
- method public int enumerate(java.lang.Thread[]);
- method public int enumerate(java.lang.Thread[], boolean);
- method public int enumerate(java.lang.ThreadGroup[]);
- method public int enumerate(java.lang.ThreadGroup[], boolean);
+ method public int enumerate(Thread[]);
+ method public int enumerate(Thread[], boolean);
+ method public int enumerate(ThreadGroup[]);
+ method public int enumerate(ThreadGroup[], boolean);
method public final int getMaxPriority();
- method public final java.lang.String getName();
- method public final java.lang.ThreadGroup getParent();
+ method public final String getName();
+ method public final ThreadGroup getParent();
method public final void interrupt();
method public final boolean isDaemon();
- method public synchronized boolean isDestroyed();
+ method public boolean isDestroyed();
method public void list();
- method public final boolean parentOf(java.lang.ThreadGroup);
- method public final deprecated void resume();
+ method public final boolean parentOf(ThreadGroup);
+ method @Deprecated public final void resume();
method public final void setDaemon(boolean);
method public final void setMaxPriority(int);
- method public final deprecated void stop();
- method public final deprecated void suspend();
- method public void uncaughtException(java.lang.Thread, java.lang.Throwable);
+ method @Deprecated public final void stop();
+ method @Deprecated public final void suspend();
+ method public void uncaughtException(Thread, Throwable);
}
public class ThreadLocal<T> {
ctor public ThreadLocal();
- method public T get();
- method protected T initialValue();
+ method @Nullable public T get();
+ method @Nullable protected T initialValue();
method public void remove();
method public void set(T);
- method public static <S> java.lang.ThreadLocal<S> withInitial(java.util.function.Supplier<? extends S>);
+ method @NonNull public static <S> ThreadLocal<S> withInitial(@NonNull java.util.function.Supplier<? extends S>);
}
public class Throwable implements java.io.Serializable {
ctor public Throwable();
- ctor public Throwable(java.lang.String);
- ctor public Throwable(java.lang.String, java.lang.Throwable);
- ctor public Throwable(java.lang.Throwable);
- ctor protected Throwable(java.lang.String, java.lang.Throwable, boolean, boolean);
- method public final synchronized void addSuppressed(java.lang.Throwable);
- method public synchronized java.lang.Throwable fillInStackTrace();
- method public synchronized java.lang.Throwable getCause();
- method public java.lang.String getLocalizedMessage();
- method public java.lang.String getMessage();
- method public java.lang.StackTraceElement[] getStackTrace();
- method public final synchronized java.lang.Throwable[] getSuppressed();
- method public synchronized java.lang.Throwable initCause(java.lang.Throwable);
+ ctor public Throwable(@Nullable String);
+ ctor public Throwable(@Nullable String, @Nullable Throwable);
+ ctor public Throwable(@Nullable Throwable);
+ ctor protected Throwable(@Nullable String, @Nullable Throwable, boolean, boolean);
+ method public final void addSuppressed(@NonNull Throwable);
+ method @NonNull public Throwable fillInStackTrace();
+ method @Nullable public Throwable getCause();
+ method @Nullable public String getLocalizedMessage();
+ method @Nullable public String getMessage();
+ method public StackTraceElement[] getStackTrace();
+ method public final Throwable[] getSuppressed();
+ method @NonNull public Throwable initCause(@Nullable Throwable);
method public void printStackTrace();
- method public void printStackTrace(java.io.PrintStream);
- method public void printStackTrace(java.io.PrintWriter);
- method public void setStackTrace(java.lang.StackTraceElement[]);
+ method public void printStackTrace(@NonNull java.io.PrintStream);
+ method public void printStackTrace(@NonNull java.io.PrintWriter);
+ method public void setStackTrace(StackTraceElement[]);
}
public class TypeNotPresentException extends java.lang.RuntimeException {
- ctor public TypeNotPresentException(java.lang.String, java.lang.Throwable);
- method public java.lang.String typeName();
+ ctor public TypeNotPresentException(String, Throwable);
+ method public String typeName();
}
public class UnknownError extends java.lang.VirtualMachineError {
ctor public UnknownError();
- ctor public UnknownError(java.lang.String);
+ ctor public UnknownError(String);
}
public class UnsatisfiedLinkError extends java.lang.LinkageError {
ctor public UnsatisfiedLinkError();
- ctor public UnsatisfiedLinkError(java.lang.String);
+ ctor public UnsatisfiedLinkError(String);
}
public class UnsupportedClassVersionError extends java.lang.ClassFormatError {
ctor public UnsupportedClassVersionError();
- ctor public UnsupportedClassVersionError(java.lang.String);
+ ctor public UnsupportedClassVersionError(String);
}
public class UnsupportedOperationException extends java.lang.RuntimeException {
ctor public UnsupportedOperationException();
- ctor public UnsupportedOperationException(java.lang.String);
- ctor public UnsupportedOperationException(java.lang.String, java.lang.Throwable);
- ctor public UnsupportedOperationException(java.lang.Throwable);
+ ctor public UnsupportedOperationException(String);
+ ctor public UnsupportedOperationException(String, Throwable);
+ ctor public UnsupportedOperationException(Throwable);
}
public class VerifyError extends java.lang.LinkageError {
ctor public VerifyError();
- ctor public VerifyError(java.lang.String);
+ ctor public VerifyError(String);
}
public abstract class VirtualMachineError extends java.lang.Error {
ctor public VirtualMachineError();
- ctor public VirtualMachineError(java.lang.String);
- ctor public VirtualMachineError(java.lang.String, java.lang.Throwable);
- ctor public VirtualMachineError(java.lang.Throwable);
+ ctor public VirtualMachineError(String);
+ ctor public VirtualMachineError(String, Throwable);
+ ctor public VirtualMachineError(Throwable);
}
public final class Void {
- field public static final java.lang.Class<java.lang.Void> TYPE;
+ field public static final Class<java.lang.Void> TYPE;
}
}
package java.lang.annotation {
- public abstract interface Annotation {
- method public abstract java.lang.Class<? extends java.lang.annotation.Annotation> annotationType();
- method public abstract boolean equals(java.lang.Object);
- method public abstract int hashCode();
- method public abstract java.lang.String toString();
+ public interface Annotation {
+ method public Class<? extends java.lang.annotation.Annotation> annotationType();
+ method public boolean equals(Object);
+ method public int hashCode();
+ method public String toString();
}
public class AnnotationFormatError extends java.lang.Error {
- ctor public AnnotationFormatError(java.lang.String);
- ctor public AnnotationFormatError(java.lang.String, java.lang.Throwable);
- ctor public AnnotationFormatError(java.lang.Throwable);
+ ctor public AnnotationFormatError(String);
+ ctor public AnnotationFormatError(String, Throwable);
+ ctor public AnnotationFormatError(Throwable);
}
public class AnnotationTypeMismatchException extends java.lang.RuntimeException {
- ctor public AnnotationTypeMismatchException(java.lang.reflect.Method, java.lang.String);
+ ctor public AnnotationTypeMismatchException(java.lang.reflect.Method, String);
method public java.lang.reflect.Method element();
- method public java.lang.String foundType();
+ method public String foundType();
}
- public abstract class Documented implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Documented {
}
- public final class ElementType extends java.lang.Enum {
- method public static java.lang.annotation.ElementType valueOf(java.lang.String);
- method public static final java.lang.annotation.ElementType[] values();
+ public enum ElementType {
enum_constant public static final java.lang.annotation.ElementType ANNOTATION_TYPE;
enum_constant public static final java.lang.annotation.ElementType CONSTRUCTOR;
enum_constant public static final java.lang.annotation.ElementType FIELD;
@@ -60565,32 +60667,33 @@
}
public class IncompleteAnnotationException extends java.lang.RuntimeException {
- ctor public IncompleteAnnotationException(java.lang.Class<? extends java.lang.annotation.Annotation>, java.lang.String);
- method public java.lang.Class<? extends java.lang.annotation.Annotation> annotationType();
- method public java.lang.String elementName();
+ ctor public IncompleteAnnotationException(Class<? extends java.lang.annotation.Annotation>, String);
+ method public Class<? extends java.lang.annotation.Annotation> annotationType();
+ method public String elementName();
}
- public abstract class Inherited implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Inherited {
}
- public abstract class Native implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.FIELD) public @interface Native {
}
- public abstract class Repeatable implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Repeatable {
+ method public abstract Class<? extends java.lang.annotation.Annotation> value();
}
- public abstract class Retention implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Retention {
+ method public abstract java.lang.annotation.RetentionPolicy value();
}
- public final class RetentionPolicy extends java.lang.Enum {
- method public static java.lang.annotation.RetentionPolicy valueOf(java.lang.String);
- method public static final java.lang.annotation.RetentionPolicy[] values();
+ public enum RetentionPolicy {
enum_constant public static final java.lang.annotation.RetentionPolicy CLASS;
enum_constant public static final java.lang.annotation.RetentionPolicy RUNTIME;
enum_constant public static final java.lang.annotation.RetentionPolicy SOURCE;
}
- public abstract class Target implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Target {
+ method public abstract java.lang.annotation.ElementType[] value();
}
}
@@ -60614,40 +60717,40 @@
public class LambdaConversionException extends java.lang.Exception {
ctor public LambdaConversionException();
- ctor public LambdaConversionException(java.lang.String);
- ctor public LambdaConversionException(java.lang.String, java.lang.Throwable);
- ctor public LambdaConversionException(java.lang.Throwable);
- ctor public LambdaConversionException(java.lang.String, java.lang.Throwable, boolean, boolean);
+ ctor public LambdaConversionException(String);
+ ctor public LambdaConversionException(String, Throwable);
+ ctor public LambdaConversionException(Throwable);
+ ctor public LambdaConversionException(String, Throwable, boolean, boolean);
}
public abstract class MethodHandle {
- method public java.lang.invoke.MethodHandle asCollector(java.lang.Class<?>, int);
+ method public java.lang.invoke.MethodHandle asCollector(Class<?>, int);
method public java.lang.invoke.MethodHandle asFixedArity();
- method public java.lang.invoke.MethodHandle asSpreader(java.lang.Class<?>, int);
+ method public java.lang.invoke.MethodHandle asSpreader(Class<?>, int);
method public java.lang.invoke.MethodHandle asType(java.lang.invoke.MethodType);
- method public java.lang.invoke.MethodHandle asVarargsCollector(java.lang.Class<?>);
- method public java.lang.invoke.MethodHandle bindTo(java.lang.Object);
- method public final java.lang.Object invoke(java.lang.Object...) throws java.lang.Throwable;
- method public final java.lang.Object invokeExact(java.lang.Object...) throws java.lang.Throwable;
- method public java.lang.Object invokeWithArguments(java.lang.Object...) throws java.lang.Throwable;
- method public java.lang.Object invokeWithArguments(java.util.List<?>) throws java.lang.Throwable;
+ method public java.lang.invoke.MethodHandle asVarargsCollector(Class<?>);
+ method public java.lang.invoke.MethodHandle bindTo(Object);
+ method public final Object invoke(java.lang.Object...) throws java.lang.Throwable;
+ method public final Object invokeExact(java.lang.Object...) throws java.lang.Throwable;
+ method public Object invokeWithArguments(java.lang.Object...) throws java.lang.Throwable;
+ method public Object invokeWithArguments(java.util.List<?>) throws java.lang.Throwable;
method public boolean isVarargsCollector();
method public java.lang.invoke.MethodType type();
}
- public abstract interface MethodHandleInfo {
- method public abstract java.lang.Class<?> getDeclaringClass();
- method public abstract java.lang.invoke.MethodType getMethodType();
- method public abstract int getModifiers();
- method public abstract java.lang.String getName();
- method public abstract int getReferenceKind();
+ public interface MethodHandleInfo {
+ method public Class<?> getDeclaringClass();
+ method public java.lang.invoke.MethodType getMethodType();
+ method public int getModifiers();
+ method public String getName();
+ method public int getReferenceKind();
method public default boolean isVarArgs();
method public static boolean refKindIsField(int);
method public static boolean refKindIsValid(int);
- method public static java.lang.String refKindName(int);
- method public static java.lang.String referenceKindToString(int);
- method public abstract <T extends java.lang.reflect.Member> T reflectAs(java.lang.Class<T>, java.lang.invoke.MethodHandles.Lookup);
- method public static java.lang.String toString(int, java.lang.Class<?>, java.lang.String, java.lang.invoke.MethodType);
+ method public static String refKindName(int);
+ method public static String referenceKindToString(int);
+ method public <T extends java.lang.reflect.Member> T reflectAs(Class<T>, java.lang.invoke.MethodHandles.Lookup);
+ method public static String toString(int, Class<?>, String, java.lang.invoke.MethodType);
field public static final int REF_getField = 1; // 0x1
field public static final int REF_getStatic = 2; // 0x2
field public static final int REF_invokeInterface = 9; // 0x9
@@ -60660,49 +60763,49 @@
}
public class MethodHandles {
- method public static java.lang.invoke.MethodHandle arrayElementGetter(java.lang.Class<?>) throws java.lang.IllegalArgumentException;
- method public static java.lang.invoke.MethodHandle arrayElementSetter(java.lang.Class<?>) throws java.lang.IllegalArgumentException;
- method public static java.lang.invoke.MethodHandle catchException(java.lang.invoke.MethodHandle, java.lang.Class<? extends java.lang.Throwable>, java.lang.invoke.MethodHandle);
+ method public static java.lang.invoke.MethodHandle arrayElementGetter(Class<?>) throws java.lang.IllegalArgumentException;
+ method public static java.lang.invoke.MethodHandle arrayElementSetter(Class<?>) throws java.lang.IllegalArgumentException;
+ method public static java.lang.invoke.MethodHandle catchException(java.lang.invoke.MethodHandle, Class<? extends java.lang.Throwable>, java.lang.invoke.MethodHandle);
method public static java.lang.invoke.MethodHandle collectArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
- method public static java.lang.invoke.MethodHandle constant(java.lang.Class<?>, java.lang.Object);
+ method public static java.lang.invoke.MethodHandle constant(Class<?>, Object);
method public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, java.util.List<java.lang.Class<?>>);
- method public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, java.lang.Class<?>...);
+ method public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, Class<?>...);
method public static java.lang.invoke.MethodHandle exactInvoker(java.lang.invoke.MethodType);
method public static java.lang.invoke.MethodHandle explicitCastArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType);
method public static java.lang.invoke.MethodHandle filterArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle...);
method public static java.lang.invoke.MethodHandle filterReturnValue(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
method public static java.lang.invoke.MethodHandle foldArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
method public static java.lang.invoke.MethodHandle guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
- method public static java.lang.invoke.MethodHandle identity(java.lang.Class<?>);
+ method public static java.lang.invoke.MethodHandle identity(Class<?>);
method public static java.lang.invoke.MethodHandle insertArguments(java.lang.invoke.MethodHandle, int, java.lang.Object...);
method public static java.lang.invoke.MethodHandle invoker(java.lang.invoke.MethodType);
method public static java.lang.invoke.MethodHandles.Lookup lookup();
method public static java.lang.invoke.MethodHandle permuteArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType, int...);
method public static java.lang.invoke.MethodHandles.Lookup publicLookup();
- method public static <T extends java.lang.reflect.Member> T reflectAs(java.lang.Class<T>, java.lang.invoke.MethodHandle);
+ method public static <T extends java.lang.reflect.Member> T reflectAs(Class<T>, java.lang.invoke.MethodHandle);
method public static java.lang.invoke.MethodHandle spreadInvoker(java.lang.invoke.MethodType, int);
- method public static java.lang.invoke.MethodHandle throwException(java.lang.Class<?>, java.lang.Class<? extends java.lang.Throwable>);
+ method public static java.lang.invoke.MethodHandle throwException(Class<?>, Class<? extends java.lang.Throwable>);
}
public static final class MethodHandles.Lookup {
- method public java.lang.invoke.MethodHandle bind(java.lang.Object, java.lang.String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
- method public java.lang.invoke.MethodHandle findConstructor(java.lang.Class<?>, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
- method public java.lang.invoke.MethodHandle findGetter(java.lang.Class<?>, java.lang.String, java.lang.Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
- method public java.lang.invoke.MethodHandle findSetter(java.lang.Class<?>, java.lang.String, java.lang.Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
- method public java.lang.invoke.MethodHandle findSpecial(java.lang.Class<?>, java.lang.String, java.lang.invoke.MethodType, java.lang.Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
- method public java.lang.invoke.MethodHandle findStatic(java.lang.Class<?>, java.lang.String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
- method public java.lang.invoke.MethodHandle findStaticGetter(java.lang.Class<?>, java.lang.String, java.lang.Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
- method public java.lang.invoke.MethodHandle findStaticSetter(java.lang.Class<?>, java.lang.String, java.lang.Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
- method public java.lang.invoke.MethodHandle findVirtual(java.lang.Class<?>, java.lang.String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
- method public java.lang.invoke.MethodHandles.Lookup in(java.lang.Class<?>);
- method public java.lang.Class<?> lookupClass();
+ method public java.lang.invoke.MethodHandle bind(Object, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+ method public java.lang.invoke.MethodHandle findConstructor(Class<?>, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+ method public java.lang.invoke.MethodHandle findGetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
+ method public java.lang.invoke.MethodHandle findSetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
+ method public java.lang.invoke.MethodHandle findSpecial(Class<?>, String, java.lang.invoke.MethodType, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+ method public java.lang.invoke.MethodHandle findStatic(Class<?>, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+ method public java.lang.invoke.MethodHandle findStaticGetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
+ method public java.lang.invoke.MethodHandle findStaticSetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
+ method public java.lang.invoke.MethodHandle findVirtual(Class<?>, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+ method public java.lang.invoke.MethodHandles.Lookup in(Class<?>);
+ method public Class<?> lookupClass();
method public int lookupModes();
method public java.lang.invoke.MethodHandleInfo revealDirect(java.lang.invoke.MethodHandle);
method public java.lang.invoke.MethodHandle unreflect(java.lang.reflect.Method) throws java.lang.IllegalAccessException;
method public java.lang.invoke.MethodHandle unreflectConstructor(java.lang.reflect.Constructor<?>) throws java.lang.IllegalAccessException;
method public java.lang.invoke.MethodHandle unreflectGetter(java.lang.reflect.Field) throws java.lang.IllegalAccessException;
method public java.lang.invoke.MethodHandle unreflectSetter(java.lang.reflect.Field) throws java.lang.IllegalAccessException;
- method public java.lang.invoke.MethodHandle unreflectSpecial(java.lang.reflect.Method, java.lang.Class<?>) throws java.lang.IllegalAccessException;
+ method public java.lang.invoke.MethodHandle unreflectSpecial(java.lang.reflect.Method, Class<?>) throws java.lang.IllegalAccessException;
field public static final int PACKAGE = 8; // 0x8
field public static final int PRIVATE = 2; // 0x2
field public static final int PROTECTED = 4; // 0x4
@@ -60710,32 +60813,32 @@
}
public final class MethodType implements java.io.Serializable {
- method public java.lang.invoke.MethodType appendParameterTypes(java.lang.Class<?>...);
+ method public java.lang.invoke.MethodType appendParameterTypes(Class<?>...);
method public java.lang.invoke.MethodType appendParameterTypes(java.util.List<java.lang.Class<?>>);
- method public java.lang.invoke.MethodType changeParameterType(int, java.lang.Class<?>);
- method public java.lang.invoke.MethodType changeReturnType(java.lang.Class<?>);
+ method public java.lang.invoke.MethodType changeParameterType(int, Class<?>);
+ method public java.lang.invoke.MethodType changeReturnType(Class<?>);
method public java.lang.invoke.MethodType dropParameterTypes(int, int);
method public java.lang.invoke.MethodType erase();
- method public static java.lang.invoke.MethodType fromMethodDescriptorString(java.lang.String, java.lang.ClassLoader) throws java.lang.IllegalArgumentException, java.lang.TypeNotPresentException;
+ method public static java.lang.invoke.MethodType fromMethodDescriptorString(String, ClassLoader) throws java.lang.IllegalArgumentException, java.lang.TypeNotPresentException;
method public java.lang.invoke.MethodType generic();
method public static java.lang.invoke.MethodType genericMethodType(int, boolean);
method public static java.lang.invoke.MethodType genericMethodType(int);
method public boolean hasPrimitives();
method public boolean hasWrappers();
- method public java.lang.invoke.MethodType insertParameterTypes(int, java.lang.Class<?>...);
+ method public java.lang.invoke.MethodType insertParameterTypes(int, Class<?>...);
method public java.lang.invoke.MethodType insertParameterTypes(int, java.util.List<java.lang.Class<?>>);
- method public static java.lang.invoke.MethodType methodType(java.lang.Class<?>, java.lang.Class<?>[]);
- method public static java.lang.invoke.MethodType methodType(java.lang.Class<?>, java.util.List<java.lang.Class<?>>);
- method public static java.lang.invoke.MethodType methodType(java.lang.Class<?>, java.lang.Class<?>, java.lang.Class<?>...);
- method public static java.lang.invoke.MethodType methodType(java.lang.Class<?>);
- method public static java.lang.invoke.MethodType methodType(java.lang.Class<?>, java.lang.Class<?>);
- method public static java.lang.invoke.MethodType methodType(java.lang.Class<?>, java.lang.invoke.MethodType);
- method public java.lang.Class<?>[] parameterArray();
+ method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>[]);
+ method public static java.lang.invoke.MethodType methodType(Class<?>, java.util.List<java.lang.Class<?>>);
+ method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>, Class<?>...);
+ method public static java.lang.invoke.MethodType methodType(Class<?>);
+ method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>);
+ method public static java.lang.invoke.MethodType methodType(Class<?>, java.lang.invoke.MethodType);
+ method public Class<?>[] parameterArray();
method public int parameterCount();
method public java.util.List<java.lang.Class<?>> parameterList();
- method public java.lang.Class<?> parameterType(int);
- method public java.lang.Class<?> returnType();
- method public java.lang.String toMethodDescriptorString();
+ method public Class<?> parameterType(int);
+ method public Class<?> returnType();
+ method public String toMethodDescriptorString();
method public java.lang.invoke.MethodType unwrap();
method public java.lang.invoke.MethodType wrap();
}
@@ -60758,14 +60861,14 @@
public class WrongMethodTypeException extends java.lang.RuntimeException {
ctor public WrongMethodTypeException();
- ctor public WrongMethodTypeException(java.lang.String);
+ ctor public WrongMethodTypeException(String);
}
}
package java.lang.ref {
- public class PhantomReference<T> extends java.lang.ref.Reference {
+ public class PhantomReference<T> extends java.lang.ref.Reference<T> {
ctor public PhantomReference(T, java.lang.ref.ReferenceQueue<? super T>);
}
@@ -60774,7 +60877,7 @@
method public boolean enqueue();
method public T get();
method public boolean isEnqueued();
- method public static void reachabilityFence(java.lang.Object);
+ method public static void reachabilityFence(Object);
}
public class ReferenceQueue<T> {
@@ -60784,12 +60887,12 @@
method public java.lang.ref.Reference<? extends T> remove() throws java.lang.InterruptedException;
}
- public class SoftReference<T> extends java.lang.ref.Reference {
+ public class SoftReference<T> extends java.lang.ref.Reference<T> {
ctor public SoftReference(T);
ctor public SoftReference(T, java.lang.ref.ReferenceQueue<? super T>);
}
- public class WeakReference<T> extends java.lang.ref.Reference {
+ public class WeakReference<T> extends java.lang.ref.Reference<T> {
ctor public WeakReference(T);
ctor public WeakReference(T, java.lang.ref.ReferenceQueue<? super T>);
}
@@ -60800,7 +60903,7 @@
public class AccessibleObject implements java.lang.reflect.AnnotatedElement {
ctor protected AccessibleObject();
- method public <T extends java.lang.annotation.Annotation> T getAnnotation(java.lang.Class<T>);
+ method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
method public java.lang.annotation.Annotation[] getAnnotations();
method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
method public boolean isAccessible();
@@ -60808,118 +60911,117 @@
method public void setAccessible(boolean) throws java.lang.SecurityException;
}
- public abstract interface AnnotatedElement {
- method public abstract <T extends java.lang.annotation.Annotation> T getAnnotation(java.lang.Class<T>);
- method public abstract java.lang.annotation.Annotation[] getAnnotations();
- method public default <T extends java.lang.annotation.Annotation> T[] getAnnotationsByType(java.lang.Class<T>);
- method public default <T extends java.lang.annotation.Annotation> T getDeclaredAnnotation(java.lang.Class<T>);
- method public abstract java.lang.annotation.Annotation[] getDeclaredAnnotations();
- method public default <T extends java.lang.annotation.Annotation> T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
- method public default boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
+ public interface AnnotatedElement {
+ method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
+ method public java.lang.annotation.Annotation[] getAnnotations();
+ method public default <T extends java.lang.annotation.Annotation> T[] getAnnotationsByType(@NonNull Class<T>);
+ method @Nullable public default <T extends java.lang.annotation.Annotation> T getDeclaredAnnotation(@NonNull Class<T>);
+ method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+ method public default <T extends java.lang.annotation.Annotation> T[] getDeclaredAnnotationsByType(@NonNull Class<T>);
+ method public default boolean isAnnotationPresent(@NonNull Class<? extends java.lang.annotation.Annotation>);
}
public final class Array {
- method public static java.lang.Object get(java.lang.Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static boolean getBoolean(java.lang.Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static byte getByte(java.lang.Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static char getChar(java.lang.Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static double getDouble(java.lang.Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static float getFloat(java.lang.Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static int getInt(java.lang.Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static int getLength(java.lang.Object);
- method public static long getLong(java.lang.Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static short getShort(java.lang.Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static java.lang.Object newInstance(java.lang.Class<?>, int) throws java.lang.NegativeArraySizeException;
- method public static java.lang.Object newInstance(java.lang.Class<?>, int...) throws java.lang.IllegalArgumentException, java.lang.NegativeArraySizeException;
- method public static void set(java.lang.Object, int, java.lang.Object) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static void setBoolean(java.lang.Object, int, boolean);
- method public static void setByte(java.lang.Object, int, byte) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static void setChar(java.lang.Object, int, char) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static void setDouble(java.lang.Object, int, double) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static void setFloat(java.lang.Object, int, float) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static void setInt(java.lang.Object, int, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static void setLong(java.lang.Object, int, long) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
- method public static void setShort(java.lang.Object, int, short) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method @Nullable public static Object get(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static boolean getBoolean(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static byte getByte(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static char getChar(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static double getDouble(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static float getFloat(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static int getInt(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static int getLength(@NonNull Object);
+ method public static long getLong(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static short getShort(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method @NonNull public static Object newInstance(@NonNull Class<?>, int) throws java.lang.NegativeArraySizeException;
+ method @NonNull public static Object newInstance(@NonNull Class<?>, int...) throws java.lang.IllegalArgumentException, java.lang.NegativeArraySizeException;
+ method public static void set(@NonNull Object, int, @Nullable Object) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static void setBoolean(@NonNull Object, int, boolean);
+ method public static void setByte(@NonNull Object, int, byte) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static void setChar(@NonNull Object, int, char) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static void setDouble(@NonNull Object, int, double) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static void setFloat(@NonNull Object, int, float) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static void setInt(@NonNull Object, int, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static void setLong(@NonNull Object, int, long) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+ method public static void setShort(@NonNull Object, int, short) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
}
public final class Constructor<T> extends java.lang.reflect.Executable {
- method public java.lang.Class<T> getDeclaringClass();
- method public java.lang.Class<?>[] getExceptionTypes();
+ method @NonNull public Class<T> getDeclaringClass();
+ method public Class<?>[] getExceptionTypes();
method public int getModifiers();
- method public java.lang.String getName();
+ method @NonNull public String getName();
method public java.lang.annotation.Annotation[][] getParameterAnnotations();
- method public java.lang.Class<?>[] getParameterTypes();
+ method public Class<?>[] getParameterTypes();
method public java.lang.reflect.TypeVariable<java.lang.reflect.Constructor<T>>[] getTypeParameters();
- method public T newInstance(java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException;
- method public java.lang.String toGenericString();
+ method @NonNull public T newInstance(java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException;
+ method @NonNull public String toGenericString();
}
public abstract class Executable extends java.lang.reflect.AccessibleObject implements java.lang.reflect.GenericDeclaration java.lang.reflect.Member {
- method public abstract java.lang.Class<?>[] getExceptionTypes();
+ method public abstract Class<?>[] getExceptionTypes();
method public java.lang.reflect.Type[] getGenericExceptionTypes();
method public java.lang.reflect.Type[] getGenericParameterTypes();
method public abstract java.lang.annotation.Annotation[][] getParameterAnnotations();
method public int getParameterCount();
- method public abstract java.lang.Class<?>[] getParameterTypes();
+ method public abstract Class<?>[] getParameterTypes();
method public java.lang.reflect.Parameter[] getParameters();
- method public final boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
+ method public final boolean isAnnotationPresent(@NonNull Class<? extends java.lang.annotation.Annotation>);
method public boolean isSynthetic();
method public boolean isVarArgs();
- method public abstract java.lang.String toGenericString();
+ method @NonNull public abstract String toGenericString();
}
public final class Field extends java.lang.reflect.AccessibleObject implements java.lang.reflect.Member {
- method public java.lang.Object get(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public boolean getBoolean(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public byte getByte(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public char getChar(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public java.lang.Class<?> getDeclaringClass();
- method public double getDouble(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public float getFloat(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public java.lang.reflect.Type getGenericType();
- method public int getInt(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public long getLong(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method @Nullable public Object get(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public boolean getBoolean(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public byte getByte(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public char getChar(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method @NonNull public Class<?> getDeclaringClass();
+ method public double getDouble(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public float getFloat(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method @NonNull public java.lang.reflect.Type getGenericType();
+ method public int getInt(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public long getLong(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
method public int getModifiers();
- method public java.lang.String getName();
- method public short getShort(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public java.lang.Class<?> getType();
+ method @NonNull public String getName();
+ method public short getShort(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method @NonNull public Class<?> getType();
method public boolean isEnumConstant();
method public boolean isSynthetic();
- method public void set(java.lang.Object, java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public void setBoolean(java.lang.Object, boolean) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public void setByte(java.lang.Object, byte) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public void setChar(java.lang.Object, char) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public void setDouble(java.lang.Object, double) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public void setFloat(java.lang.Object, float) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public void setInt(java.lang.Object, int) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public void setLong(java.lang.Object, long) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public void setShort(java.lang.Object, short) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
- method public java.lang.String toGenericString();
+ method public void set(@Nullable Object, @Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public void setBoolean(@Nullable Object, boolean) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public void setByte(@Nullable Object, byte) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public void setChar(@Nullable Object, char) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public void setDouble(@Nullable Object, double) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public void setFloat(@Nullable Object, float) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public void setInt(@Nullable Object, int) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public void setLong(@Nullable Object, long) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method public void setShort(@Nullable Object, short) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+ method @NonNull public String toGenericString();
}
- public abstract interface GenericArrayType implements java.lang.reflect.Type {
- method public abstract java.lang.reflect.Type getGenericComponentType();
+ public interface GenericArrayType extends java.lang.reflect.Type {
+ method @NonNull public java.lang.reflect.Type getGenericComponentType();
}
- public abstract interface GenericDeclaration implements java.lang.reflect.AnnotatedElement {
- method public abstract java.lang.reflect.TypeVariable<?>[] getTypeParameters();
+ public interface GenericDeclaration extends java.lang.reflect.AnnotatedElement {
+ method @NonNull public java.lang.reflect.TypeVariable<?>[] getTypeParameters();
}
public class GenericSignatureFormatError extends java.lang.ClassFormatError {
ctor public GenericSignatureFormatError();
- ctor public GenericSignatureFormatError(java.lang.String);
+ ctor public GenericSignatureFormatError(String);
}
- public abstract interface InvocationHandler {
- method public abstract java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) throws java.lang.Throwable;
+ public interface InvocationHandler {
+ method public Object invoke(Object, java.lang.reflect.Method, Object[]) throws java.lang.Throwable;
}
public class InvocationTargetException extends java.lang.ReflectiveOperationException {
ctor protected InvocationTargetException();
- ctor public InvocationTargetException(java.lang.Throwable);
- ctor public InvocationTargetException(java.lang.Throwable, java.lang.String);
- method public java.lang.Throwable getCause();
- method public java.lang.Throwable getTargetException();
+ ctor public InvocationTargetException(Throwable);
+ ctor public InvocationTargetException(Throwable, String);
+ method public Throwable getTargetException();
}
public class MalformedParameterizedTypeException extends java.lang.RuntimeException {
@@ -60928,33 +61030,33 @@
public class MalformedParametersException extends java.lang.RuntimeException {
ctor public MalformedParametersException();
- ctor public MalformedParametersException(java.lang.String);
+ ctor public MalformedParametersException(String);
}
- public abstract interface Member {
- method public abstract java.lang.Class<?> getDeclaringClass();
- method public abstract int getModifiers();
- method public abstract java.lang.String getName();
- method public abstract boolean isSynthetic();
+ public interface Member {
+ method @NonNull public Class<?> getDeclaringClass();
+ method public int getModifiers();
+ method @NonNull public String getName();
+ method public boolean isSynthetic();
field public static final int DECLARED = 1; // 0x1
field public static final int PUBLIC = 0; // 0x0
}
public final class Method extends java.lang.reflect.Executable {
- method public java.lang.Class<?> getDeclaringClass();
- method public java.lang.Object getDefaultValue();
- method public java.lang.Class<?>[] getExceptionTypes();
- method public java.lang.reflect.Type getGenericReturnType();
+ method @NonNull public Class<?> getDeclaringClass();
+ method @Nullable public Object getDefaultValue();
+ method @NonNull public Class<?>[] getExceptionTypes();
+ method @NonNull public java.lang.reflect.Type getGenericReturnType();
method public int getModifiers();
- method public java.lang.String getName();
- method public java.lang.annotation.Annotation[][] getParameterAnnotations();
- method public java.lang.Class<?>[] getParameterTypes();
- method public java.lang.Class<?> getReturnType();
- method public java.lang.reflect.TypeVariable<java.lang.reflect.Method>[] getTypeParameters();
- method public java.lang.Object invoke(java.lang.Object, java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException;
+ method @NonNull public String getName();
+ method @NonNull public java.lang.annotation.Annotation[][] getParameterAnnotations();
+ method @NonNull public Class<?>[] getParameterTypes();
+ method @NonNull public Class<?> getReturnType();
+ method @NonNull public java.lang.reflect.TypeVariable<java.lang.reflect.Method>[] getTypeParameters();
+ method @Nullable public Object invoke(@Nullable Object, java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException;
method public boolean isBridge();
method public boolean isDefault();
- method public java.lang.String toGenericString();
+ method @NonNull public String toGenericString();
}
public class Modifier {
@@ -60977,7 +61079,7 @@
method public static boolean isVolatile(int);
method public static int methodModifiers();
method public static int parameterModifiers();
- method public static java.lang.String toString(int);
+ method public static String toString(int);
field public static final int ABSTRACT = 1024; // 0x400
field public static final int FINAL = 16; // 0x10
field public static final int INTERFACE = 512; // 0x200
@@ -60993,73 +61095,72 @@
}
public final class Parameter implements java.lang.reflect.AnnotatedElement {
- method public <T extends java.lang.annotation.Annotation> T getAnnotation(java.lang.Class<T>);
+ method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
method public java.lang.annotation.Annotation[] getAnnotations();
method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
- method public java.lang.reflect.Executable getDeclaringExecutable();
+ method @NonNull public java.lang.reflect.Executable getDeclaringExecutable();
method public int getModifiers();
- method public java.lang.String getName();
- method public java.lang.reflect.Type getParameterizedType();
- method public java.lang.Class<?> getType();
+ method @NonNull public String getName();
+ method @NonNull public java.lang.reflect.Type getParameterizedType();
+ method @NonNull public Class<?> getType();
method public boolean isImplicit();
method public boolean isNamePresent();
method public boolean isSynthetic();
method public boolean isVarArgs();
}
- public abstract interface ParameterizedType implements java.lang.reflect.Type {
- method public abstract java.lang.reflect.Type[] getActualTypeArguments();
- method public abstract java.lang.reflect.Type getOwnerType();
- method public abstract java.lang.reflect.Type getRawType();
+ public interface ParameterizedType extends java.lang.reflect.Type {
+ method public java.lang.reflect.Type[] getActualTypeArguments();
+ method @Nullable public java.lang.reflect.Type getOwnerType();
+ method @NonNull public java.lang.reflect.Type getRawType();
}
public class Proxy implements java.io.Serializable {
- ctor protected Proxy(java.lang.reflect.InvocationHandler);
- method public static java.lang.reflect.InvocationHandler getInvocationHandler(java.lang.Object) throws java.lang.IllegalArgumentException;
- method public static java.lang.Class<?> getProxyClass(java.lang.ClassLoader, java.lang.Class<?>...) throws java.lang.IllegalArgumentException;
- method public static boolean isProxyClass(java.lang.Class<?>);
- method public static java.lang.Object newProxyInstance(java.lang.ClassLoader, java.lang.Class<?>[], java.lang.reflect.InvocationHandler) throws java.lang.IllegalArgumentException;
+ ctor protected Proxy(@NonNull java.lang.reflect.InvocationHandler);
+ method @NonNull public static java.lang.reflect.InvocationHandler getInvocationHandler(@NonNull Object) throws java.lang.IllegalArgumentException;
+ method @NonNull public static Class<?> getProxyClass(@Nullable ClassLoader, Class<?>...) throws java.lang.IllegalArgumentException;
+ method public static boolean isProxyClass(@NonNull Class<?>);
+ method @NonNull public static Object newProxyInstance(@Nullable ClassLoader, Class<?>[], @NonNull java.lang.reflect.InvocationHandler) throws java.lang.IllegalArgumentException;
field protected java.lang.reflect.InvocationHandler h;
}
public final class ReflectPermission extends java.security.BasicPermission {
- ctor public ReflectPermission(java.lang.String);
- ctor public ReflectPermission(java.lang.String, java.lang.String);
+ ctor public ReflectPermission(String);
+ ctor public ReflectPermission(String, String);
}
- public abstract interface Type {
- method public default java.lang.String getTypeName();
+ public interface Type {
+ method @NonNull public default String getTypeName();
}
- public abstract interface TypeVariable<D extends java.lang.reflect.GenericDeclaration> implements java.lang.reflect.Type {
- method public abstract java.lang.reflect.Type[] getBounds();
- method public abstract D getGenericDeclaration();
- method public abstract java.lang.String getName();
+ public interface TypeVariable<D extends java.lang.reflect.GenericDeclaration> extends java.lang.reflect.Type {
+ method public java.lang.reflect.Type[] getBounds();
+ method @NonNull public D getGenericDeclaration();
+ method @NonNull public String getName();
}
public class UndeclaredThrowableException extends java.lang.RuntimeException {
- ctor public UndeclaredThrowableException(java.lang.Throwable);
- ctor public UndeclaredThrowableException(java.lang.Throwable, java.lang.String);
- method public java.lang.Throwable getCause();
- method public java.lang.Throwable getUndeclaredThrowable();
+ ctor public UndeclaredThrowableException(Throwable);
+ ctor public UndeclaredThrowableException(Throwable, String);
+ method public Throwable getUndeclaredThrowable();
}
- public abstract interface WildcardType implements java.lang.reflect.Type {
- method public abstract java.lang.reflect.Type[] getLowerBounds();
- method public abstract java.lang.reflect.Type[] getUpperBounds();
+ public interface WildcardType extends java.lang.reflect.Type {
+ method public java.lang.reflect.Type[] getLowerBounds();
+ method public java.lang.reflect.Type[] getUpperBounds();
}
}
package java.math {
- public class BigDecimal extends java.lang.Number implements java.lang.Comparable java.io.Serializable {
+ public class BigDecimal extends java.lang.Number implements java.lang.Comparable<java.math.BigDecimal> java.io.Serializable {
ctor public BigDecimal(char[], int, int);
ctor public BigDecimal(char[], int, int, java.math.MathContext);
ctor public BigDecimal(char[]);
ctor public BigDecimal(char[], java.math.MathContext);
- ctor public BigDecimal(java.lang.String);
- ctor public BigDecimal(java.lang.String, java.math.MathContext);
+ ctor public BigDecimal(String);
+ ctor public BigDecimal(String, java.math.MathContext);
ctor public BigDecimal(double);
ctor public BigDecimal(double, java.math.MathContext);
ctor public BigDecimal(java.math.BigInteger);
@@ -61120,8 +61221,8 @@
method public java.math.BigDecimal subtract(java.math.BigDecimal, java.math.MathContext);
method public java.math.BigInteger toBigInteger();
method public java.math.BigInteger toBigIntegerExact();
- method public java.lang.String toEngineeringString();
- method public java.lang.String toPlainString();
+ method public String toEngineeringString();
+ method public String toPlainString();
method public java.math.BigDecimal ulp();
method public java.math.BigInteger unscaledValue();
method public static java.math.BigDecimal valueOf(long, int);
@@ -61140,63 +61241,63 @@
field public static final java.math.BigDecimal ZERO;
}
- public class BigInteger extends java.lang.Number implements java.lang.Comparable java.io.Serializable {
- ctor public BigInteger(int, java.util.Random);
- ctor public BigInteger(int, int, java.util.Random);
- ctor public BigInteger(java.lang.String);
- ctor public BigInteger(java.lang.String, int);
+ public class BigInteger extends java.lang.Number implements java.lang.Comparable<java.math.BigInteger> java.io.Serializable {
+ ctor public BigInteger(int, @NonNull java.util.Random);
+ ctor public BigInteger(int, int, @NonNull java.util.Random);
+ ctor public BigInteger(@NonNull String);
+ ctor public BigInteger(@NonNull String, int);
ctor public BigInteger(int, byte[]);
ctor public BigInteger(byte[]);
- method public java.math.BigInteger abs();
- method public java.math.BigInteger add(java.math.BigInteger);
- method public java.math.BigInteger and(java.math.BigInteger);
- method public java.math.BigInteger andNot(java.math.BigInteger);
+ method @NonNull public java.math.BigInteger abs();
+ method @NonNull public java.math.BigInteger add(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger and(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger andNot(@NonNull java.math.BigInteger);
method public int bitCount();
method public int bitLength();
- method public java.math.BigInteger clearBit(int);
- method public int compareTo(java.math.BigInteger);
- method public java.math.BigInteger divide(java.math.BigInteger);
- method public java.math.BigInteger[] divideAndRemainder(java.math.BigInteger);
+ method @NonNull public java.math.BigInteger clearBit(int);
+ method public int compareTo(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger divide(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger[] divideAndRemainder(@NonNull java.math.BigInteger);
method public double doubleValue();
- method public java.math.BigInteger flipBit(int);
+ method @NonNull public java.math.BigInteger flipBit(int);
method public float floatValue();
- method public java.math.BigInteger gcd(java.math.BigInteger);
+ method @NonNull public java.math.BigInteger gcd(@NonNull java.math.BigInteger);
method public int getLowestSetBit();
method public int intValue();
method public boolean isProbablePrime(int);
method public long longValue();
- method public java.math.BigInteger max(java.math.BigInteger);
- method public java.math.BigInteger min(java.math.BigInteger);
- method public java.math.BigInteger mod(java.math.BigInteger);
- method public java.math.BigInteger modInverse(java.math.BigInteger);
- method public java.math.BigInteger modPow(java.math.BigInteger, java.math.BigInteger);
- method public java.math.BigInteger multiply(java.math.BigInteger);
- method public java.math.BigInteger negate();
- method public java.math.BigInteger nextProbablePrime();
- method public java.math.BigInteger not();
- method public java.math.BigInteger or(java.math.BigInteger);
- method public java.math.BigInteger pow(int);
- method public static java.math.BigInteger probablePrime(int, java.util.Random);
- method public java.math.BigInteger remainder(java.math.BigInteger);
- method public java.math.BigInteger setBit(int);
- method public java.math.BigInteger shiftLeft(int);
- method public java.math.BigInteger shiftRight(int);
+ method @NonNull public java.math.BigInteger max(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger min(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger mod(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger modInverse(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger modPow(@NonNull java.math.BigInteger, @NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger multiply(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger negate();
+ method @NonNull public java.math.BigInteger nextProbablePrime();
+ method @NonNull public java.math.BigInteger not();
+ method @NonNull public java.math.BigInteger or(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger pow(int);
+ method @NonNull public static java.math.BigInteger probablePrime(int, @NonNull java.util.Random);
+ method @NonNull public java.math.BigInteger remainder(@NonNull java.math.BigInteger);
+ method @NonNull public java.math.BigInteger setBit(int);
+ method @NonNull public java.math.BigInteger shiftLeft(int);
+ method @NonNull public java.math.BigInteger shiftRight(int);
method public int signum();
- method public java.math.BigInteger subtract(java.math.BigInteger);
+ method @NonNull public java.math.BigInteger subtract(@NonNull java.math.BigInteger);
method public boolean testBit(int);
method public byte[] toByteArray();
- method public java.lang.String toString(int);
- method public static java.math.BigInteger valueOf(long);
- method public java.math.BigInteger xor(java.math.BigInteger);
- field public static final java.math.BigInteger ONE;
- field public static final java.math.BigInteger TEN;
- field public static final java.math.BigInteger ZERO;
+ method @NonNull public String toString(int);
+ method @NonNull public static java.math.BigInteger valueOf(long);
+ method @NonNull public java.math.BigInteger xor(@NonNull java.math.BigInteger);
+ field @NonNull public static final java.math.BigInteger ONE;
+ field @NonNull public static final java.math.BigInteger TEN;
+ field @NonNull public static final java.math.BigInteger ZERO;
}
public final class MathContext implements java.io.Serializable {
ctor public MathContext(int);
ctor public MathContext(int, java.math.RoundingMode);
- ctor public MathContext(java.lang.String);
+ ctor public MathContext(String);
method public int getPrecision();
method public java.math.RoundingMode getRoundingMode();
field public static final java.math.MathContext DECIMAL128;
@@ -61205,10 +61306,8 @@
field public static final java.math.MathContext UNLIMITED;
}
- public final class RoundingMode extends java.lang.Enum {
- method public static java.math.RoundingMode valueOf(java.lang.String);
+ public enum RoundingMode {
method public static java.math.RoundingMode valueOf(int);
- method public static final java.math.RoundingMode[] values();
enum_constant public static final java.math.RoundingMode CEILING;
enum_constant public static final java.math.RoundingMode DOWN;
enum_constant public static final java.math.RoundingMode FLOOR;
@@ -61226,29 +61325,27 @@
public abstract class Authenticator {
ctor public Authenticator();
method protected java.net.PasswordAuthentication getPasswordAuthentication();
- method protected final java.lang.String getRequestingHost();
+ method protected final String getRequestingHost();
method protected final int getRequestingPort();
- method protected final java.lang.String getRequestingPrompt();
- method protected final java.lang.String getRequestingProtocol();
- method protected final java.lang.String getRequestingScheme();
+ method protected final String getRequestingPrompt();
+ method protected final String getRequestingProtocol();
+ method protected final String getRequestingScheme();
method protected final java.net.InetAddress getRequestingSite();
method protected java.net.URL getRequestingURL();
method protected java.net.Authenticator.RequestorType getRequestorType();
- method public static java.net.PasswordAuthentication requestPasswordAuthentication(java.net.InetAddress, int, java.lang.String, java.lang.String, java.lang.String);
- method public static java.net.PasswordAuthentication requestPasswordAuthentication(java.lang.String, java.net.InetAddress, int, java.lang.String, java.lang.String, java.lang.String);
- method public static java.net.PasswordAuthentication requestPasswordAuthentication(java.lang.String, java.net.InetAddress, int, java.lang.String, java.lang.String, java.lang.String, java.net.URL, java.net.Authenticator.RequestorType);
- method public static synchronized void setDefault(java.net.Authenticator);
+ method public static java.net.PasswordAuthentication requestPasswordAuthentication(java.net.InetAddress, int, String, String, String);
+ method public static java.net.PasswordAuthentication requestPasswordAuthentication(String, java.net.InetAddress, int, String, String, String);
+ method public static java.net.PasswordAuthentication requestPasswordAuthentication(String, java.net.InetAddress, int, String, String, String, java.net.URL, java.net.Authenticator.RequestorType);
+ method public static void setDefault(java.net.Authenticator);
}
- public static final class Authenticator.RequestorType extends java.lang.Enum {
- method public static java.net.Authenticator.RequestorType valueOf(java.lang.String);
- method public static final java.net.Authenticator.RequestorType[] values();
+ public enum Authenticator.RequestorType {
enum_constant public static final java.net.Authenticator.RequestorType PROXY;
enum_constant public static final java.net.Authenticator.RequestorType SERVER;
}
public class BindException extends java.net.SocketException {
- ctor public BindException(java.lang.String);
+ ctor public BindException(String);
ctor public BindException();
}
@@ -61261,55 +61358,55 @@
public abstract class CacheResponse {
ctor public CacheResponse();
method public abstract java.io.InputStream getBody() throws java.io.IOException;
- method public abstract java.util.Map<java.lang.String, java.util.List<java.lang.String>> getHeaders() throws java.io.IOException;
+ method public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaders() throws java.io.IOException;
}
public class ConnectException extends java.net.SocketException {
- ctor public ConnectException(java.lang.String);
+ ctor public ConnectException(String);
ctor public ConnectException();
}
public abstract class ContentHandler {
ctor public ContentHandler();
- method public abstract java.lang.Object getContent(java.net.URLConnection) throws java.io.IOException;
- method public java.lang.Object getContent(java.net.URLConnection, java.lang.Class[]) throws java.io.IOException;
+ method public abstract Object getContent(java.net.URLConnection) throws java.io.IOException;
+ method public Object getContent(java.net.URLConnection, Class[]) throws java.io.IOException;
}
- public abstract interface ContentHandlerFactory {
- method public abstract java.net.ContentHandler createContentHandler(java.lang.String);
+ public interface ContentHandlerFactory {
+ method public java.net.ContentHandler createContentHandler(String);
}
public abstract class CookieHandler {
ctor public CookieHandler();
- method public abstract java.util.Map<java.lang.String, java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String, java.util.List<java.lang.String>>) throws java.io.IOException;
- method public static synchronized java.net.CookieHandler getDefault();
- method public abstract void put(java.net.URI, java.util.Map<java.lang.String, java.util.List<java.lang.String>>) throws java.io.IOException;
- method public static synchronized void setDefault(java.net.CookieHandler);
+ method public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+ method public static java.net.CookieHandler getDefault();
+ method public abstract void put(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+ method public static void setDefault(java.net.CookieHandler);
}
public class CookieManager extends java.net.CookieHandler {
ctor public CookieManager();
ctor public CookieManager(java.net.CookieStore, java.net.CookiePolicy);
- method public java.util.Map<java.lang.String, java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String, java.util.List<java.lang.String>>) throws java.io.IOException;
+ method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
method public java.net.CookieStore getCookieStore();
- method public void put(java.net.URI, java.util.Map<java.lang.String, java.util.List<java.lang.String>>) throws java.io.IOException;
+ method public void put(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
method public void setCookiePolicy(java.net.CookiePolicy);
}
- public abstract interface CookiePolicy {
- method public abstract boolean shouldAccept(java.net.URI, java.net.HttpCookie);
+ public interface CookiePolicy {
+ method public boolean shouldAccept(java.net.URI, java.net.HttpCookie);
field public static final java.net.CookiePolicy ACCEPT_ALL;
field public static final java.net.CookiePolicy ACCEPT_NONE;
field public static final java.net.CookiePolicy ACCEPT_ORIGINAL_SERVER;
}
- public abstract interface CookieStore {
- method public abstract void add(java.net.URI, java.net.HttpCookie);
- method public abstract java.util.List<java.net.HttpCookie> get(java.net.URI);
- method public abstract java.util.List<java.net.HttpCookie> getCookies();
- method public abstract java.util.List<java.net.URI> getURIs();
- method public abstract boolean remove(java.net.URI, java.net.HttpCookie);
- method public abstract boolean removeAll();
+ public interface CookieStore {
+ method public void add(java.net.URI, java.net.HttpCookie);
+ method public java.util.List<java.net.HttpCookie> get(java.net.URI);
+ method public java.util.List<java.net.HttpCookie> getCookies();
+ method public java.util.List<java.net.URI> getURIs();
+ method public boolean remove(java.net.URI, java.net.HttpCookie);
+ method public boolean removeAll();
}
public final class DatagramPacket {
@@ -61319,18 +61416,18 @@
ctor public DatagramPacket(byte[], int, int, java.net.SocketAddress);
ctor public DatagramPacket(byte[], int, java.net.InetAddress, int);
ctor public DatagramPacket(byte[], int, java.net.SocketAddress);
- method public synchronized java.net.InetAddress getAddress();
- method public synchronized byte[] getData();
- method public synchronized int getLength();
- method public synchronized int getOffset();
- method public synchronized int getPort();
- method public synchronized java.net.SocketAddress getSocketAddress();
- method public synchronized void setAddress(java.net.InetAddress);
- method public synchronized void setData(byte[], int, int);
- method public synchronized void setData(byte[]);
- method public synchronized void setLength(int);
- method public synchronized void setPort(int);
- method public synchronized void setSocketAddress(java.net.SocketAddress);
+ method public java.net.InetAddress getAddress();
+ method public byte[] getData();
+ method public int getLength();
+ method public int getOffset();
+ method public int getPort();
+ method public java.net.SocketAddress getSocketAddress();
+ method public void setAddress(java.net.InetAddress);
+ method public void setData(byte[], int, int);
+ method public void setData(byte[]);
+ method public void setLength(int);
+ method public void setPort(int);
+ method public void setSocketAddress(java.net.SocketAddress);
}
public class DatagramSocket implements java.io.Closeable {
@@ -61339,36 +61436,36 @@
ctor public DatagramSocket(java.net.SocketAddress) throws java.net.SocketException;
ctor public DatagramSocket(int) throws java.net.SocketException;
ctor public DatagramSocket(int, java.net.InetAddress) throws java.net.SocketException;
- method public synchronized void bind(java.net.SocketAddress) throws java.net.SocketException;
+ method public void bind(java.net.SocketAddress) throws java.net.SocketException;
method public void close();
method public void connect(java.net.InetAddress, int);
method public void connect(java.net.SocketAddress) throws java.net.SocketException;
method public void disconnect();
- method public synchronized boolean getBroadcast() throws java.net.SocketException;
+ method public boolean getBroadcast() throws java.net.SocketException;
method public java.nio.channels.DatagramChannel getChannel();
method public java.net.InetAddress getInetAddress();
method public java.net.InetAddress getLocalAddress();
method public int getLocalPort();
method public java.net.SocketAddress getLocalSocketAddress();
method public int getPort();
- method public synchronized int getReceiveBufferSize() throws java.net.SocketException;
+ method public int getReceiveBufferSize() throws java.net.SocketException;
method public java.net.SocketAddress getRemoteSocketAddress();
- method public synchronized boolean getReuseAddress() throws java.net.SocketException;
- method public synchronized int getSendBufferSize() throws java.net.SocketException;
- method public synchronized int getSoTimeout() throws java.net.SocketException;
- method public synchronized int getTrafficClass() throws java.net.SocketException;
+ method public boolean getReuseAddress() throws java.net.SocketException;
+ method public int getSendBufferSize() throws java.net.SocketException;
+ method public int getSoTimeout() throws java.net.SocketException;
+ method public int getTrafficClass() throws java.net.SocketException;
method public boolean isBound();
method public boolean isClosed();
method public boolean isConnected();
- method public synchronized void receive(java.net.DatagramPacket) throws java.io.IOException;
+ method public void receive(java.net.DatagramPacket) throws java.io.IOException;
method public void send(java.net.DatagramPacket) throws java.io.IOException;
- method public synchronized void setBroadcast(boolean) throws java.net.SocketException;
- method public static synchronized void setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory) throws java.io.IOException;
- method public synchronized void setReceiveBufferSize(int) throws java.net.SocketException;
- method public synchronized void setReuseAddress(boolean) throws java.net.SocketException;
- method public synchronized void setSendBufferSize(int) throws java.net.SocketException;
- method public synchronized void setSoTimeout(int) throws java.net.SocketException;
- method public synchronized void setTrafficClass(int) throws java.net.SocketException;
+ method public void setBroadcast(boolean) throws java.net.SocketException;
+ method public static void setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory) throws java.io.IOException;
+ method public void setReceiveBufferSize(int) throws java.net.SocketException;
+ method public void setReuseAddress(boolean) throws java.net.SocketException;
+ method public void setSendBufferSize(int) throws java.net.SocketException;
+ method public void setSoTimeout(int) throws java.net.SocketException;
+ method public void setTrafficClass(int) throws java.net.SocketException;
}
public abstract class DatagramSocketImpl implements java.net.SocketOptions {
@@ -61380,7 +61477,7 @@
method protected void disconnect();
method protected java.io.FileDescriptor getFileDescriptor();
method protected int getLocalPort();
- method protected abstract deprecated byte getTTL() throws java.io.IOException;
+ method @Deprecated protected abstract byte getTTL() throws java.io.IOException;
method protected abstract int getTimeToLive() throws java.io.IOException;
method protected abstract void join(java.net.InetAddress) throws java.io.IOException;
method protected abstract void joinGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
@@ -61390,56 +61487,56 @@
method protected abstract int peekData(java.net.DatagramPacket) throws java.io.IOException;
method protected abstract void receive(java.net.DatagramPacket) throws java.io.IOException;
method protected abstract void send(java.net.DatagramPacket) throws java.io.IOException;
- method protected abstract deprecated void setTTL(byte) throws java.io.IOException;
+ method @Deprecated protected abstract void setTTL(byte) throws java.io.IOException;
method protected abstract void setTimeToLive(int) throws java.io.IOException;
field protected java.io.FileDescriptor fd;
field protected int localPort;
}
- public abstract interface DatagramSocketImplFactory {
- method public abstract java.net.DatagramSocketImpl createDatagramSocketImpl();
+ public interface DatagramSocketImplFactory {
+ method public java.net.DatagramSocketImpl createDatagramSocketImpl();
}
- public abstract interface FileNameMap {
- method public abstract java.lang.String getContentTypeFor(java.lang.String);
+ public interface FileNameMap {
+ method public String getContentTypeFor(String);
}
public final class HttpCookie implements java.lang.Cloneable {
- ctor public HttpCookie(java.lang.String, java.lang.String);
- method public java.lang.Object clone();
- method public static boolean domainMatches(java.lang.String, java.lang.String);
- method public java.lang.String getComment();
- method public java.lang.String getCommentURL();
+ ctor public HttpCookie(String, String);
+ method public Object clone();
+ method public static boolean domainMatches(String, String);
+ method public String getComment();
+ method public String getCommentURL();
method public boolean getDiscard();
- method public java.lang.String getDomain();
+ method public String getDomain();
method public long getMaxAge();
- method public java.lang.String getName();
- method public java.lang.String getPath();
- method public java.lang.String getPortlist();
+ method public String getName();
+ method public String getPath();
+ method public String getPortlist();
method public boolean getSecure();
- method public java.lang.String getValue();
+ method public String getValue();
method public int getVersion();
method public boolean hasExpired();
method public boolean isHttpOnly();
- method public static java.util.List<java.net.HttpCookie> parse(java.lang.String);
- method public void setComment(java.lang.String);
- method public void setCommentURL(java.lang.String);
+ method public static java.util.List<java.net.HttpCookie> parse(String);
+ method public void setComment(String);
+ method public void setCommentURL(String);
method public void setDiscard(boolean);
- method public void setDomain(java.lang.String);
+ method public void setDomain(String);
method public void setHttpOnly(boolean);
method public void setMaxAge(long);
- method public void setPath(java.lang.String);
- method public void setPortlist(java.lang.String);
+ method public void setPath(String);
+ method public void setPortlist(String);
method public void setSecure(boolean);
- method public void setValue(java.lang.String);
+ method public void setValue(String);
method public void setVersion(int);
}
public class HttpRetryException extends java.io.IOException {
- ctor public HttpRetryException(java.lang.String, int);
- ctor public HttpRetryException(java.lang.String, int, java.lang.String);
- method public java.lang.String getLocation();
- method public java.lang.String getReason();
+ ctor public HttpRetryException(String, int);
+ ctor public HttpRetryException(String, int, String);
+ method public String getLocation();
+ method public String getReason();
method public int responseCode();
}
@@ -61449,15 +61546,15 @@
method public java.io.InputStream getErrorStream();
method public static boolean getFollowRedirects();
method public boolean getInstanceFollowRedirects();
- method public java.lang.String getRequestMethod();
+ method public String getRequestMethod();
method public int getResponseCode() throws java.io.IOException;
- method public java.lang.String getResponseMessage() throws java.io.IOException;
+ method public String getResponseMessage() throws java.io.IOException;
method public void setChunkedStreamingMode(int);
method public void setFixedLengthStreamingMode(int);
method public void setFixedLengthStreamingMode(long);
method public static void setFollowRedirects(boolean);
method public void setInstanceFollowRedirects(boolean);
- method public void setRequestMethod(java.lang.String) throws java.net.ProtocolException;
+ method public void setRequestMethod(String) throws java.net.ProtocolException;
method public abstract boolean usingProxy();
field public static final int HTTP_ACCEPTED = 202; // 0xca
field public static final int HTTP_BAD_GATEWAY = 502; // 0x1f6
@@ -61489,7 +61586,7 @@
field public static final int HTTP_REQ_TOO_LONG = 414; // 0x19e
field public static final int HTTP_RESET = 205; // 0xcd
field public static final int HTTP_SEE_OTHER = 303; // 0x12f
- field public static final deprecated int HTTP_SERVER_ERROR = 500; // 0x1f4
+ field @Deprecated public static final int HTTP_SERVER_ERROR = 500; // 0x1f4
field public static final int HTTP_UNAUTHORIZED = 401; // 0x191
field public static final int HTTP_UNAVAILABLE = 503; // 0x1f7
field public static final int HTTP_UNSUPPORTED_TYPE = 415; // 0x19f
@@ -61499,16 +61596,16 @@
field protected int fixedContentLength;
field protected long fixedContentLengthLong;
field protected boolean instanceFollowRedirects;
- field protected java.lang.String method;
+ field protected String method;
field protected int responseCode;
- field protected java.lang.String responseMessage;
+ field protected String responseMessage;
}
public final class IDN {
- method public static java.lang.String toASCII(java.lang.String, int);
- method public static java.lang.String toASCII(java.lang.String);
- method public static java.lang.String toUnicode(java.lang.String, int);
- method public static java.lang.String toUnicode(java.lang.String);
+ method public static String toASCII(String, int);
+ method public static String toASCII(String);
+ method public static String toUnicode(String, int);
+ method public static String toUnicode(String);
field public static final int ALLOW_UNASSIGNED = 1; // 0x1
field public static final int USE_STD3_ASCII_RULES = 2; // 0x2
}
@@ -61517,8 +61614,8 @@
}
public final class Inet6Address extends java.net.InetAddress {
- method public static java.net.Inet6Address getByAddress(java.lang.String, byte[], java.net.NetworkInterface) throws java.net.UnknownHostException;
- method public static java.net.Inet6Address getByAddress(java.lang.String, byte[], int) throws java.net.UnknownHostException;
+ method public static java.net.Inet6Address getByAddress(String, byte[], java.net.NetworkInterface) throws java.net.UnknownHostException;
+ method public static java.net.Inet6Address getByAddress(String, byte[], int) throws java.net.UnknownHostException;
method public int getScopeId();
method public java.net.NetworkInterface getScopedInterface();
method public boolean isIPv4CompatibleAddress();
@@ -61526,13 +61623,13 @@
public class InetAddress implements java.io.Serializable {
method public byte[] getAddress();
- method public static java.net.InetAddress[] getAllByName(java.lang.String) throws java.net.UnknownHostException;
- method public static java.net.InetAddress getByAddress(java.lang.String, byte[]) throws java.net.UnknownHostException;
+ method public static java.net.InetAddress[] getAllByName(String) throws java.net.UnknownHostException;
+ method public static java.net.InetAddress getByAddress(String, byte[]) throws java.net.UnknownHostException;
method public static java.net.InetAddress getByAddress(byte[]) throws java.net.UnknownHostException;
- method public static java.net.InetAddress getByName(java.lang.String) throws java.net.UnknownHostException;
- method public java.lang.String getCanonicalHostName();
- method public java.lang.String getHostAddress();
- method public java.lang.String getHostName();
+ method public static java.net.InetAddress getByName(String) throws java.net.UnknownHostException;
+ method public String getCanonicalHostName();
+ method public String getHostAddress();
+ method public String getHostName();
method public static java.net.InetAddress getLocalHost() throws java.net.UnknownHostException;
method public static java.net.InetAddress getLoopbackAddress();
method public boolean isAnyLocalAddress();
@@ -61552,12 +61649,12 @@
public class InetSocketAddress extends java.net.SocketAddress {
ctor public InetSocketAddress(int);
ctor public InetSocketAddress(java.net.InetAddress, int);
- ctor public InetSocketAddress(java.lang.String, int);
- method public static java.net.InetSocketAddress createUnresolved(java.lang.String, int);
- method public final boolean equals(java.lang.Object);
+ ctor public InetSocketAddress(String, int);
+ method public static java.net.InetSocketAddress createUnresolved(String, int);
+ method public final boolean equals(Object);
method public final java.net.InetAddress getAddress();
- method public final java.lang.String getHostName();
- method public final java.lang.String getHostString();
+ method public final String getHostName();
+ method public final String getHostString();
method public final int getPort();
method public final int hashCode();
method public final boolean isUnresolved();
@@ -61573,7 +61670,7 @@
ctor protected JarURLConnection(java.net.URL) throws java.net.MalformedURLException;
method public java.util.jar.Attributes getAttributes() throws java.io.IOException;
method public java.security.cert.Certificate[] getCertificates() throws java.io.IOException;
- method public java.lang.String getEntryName();
+ method public String getEntryName();
method public java.util.jar.JarEntry getJarEntry() throws java.io.IOException;
method public abstract java.util.jar.JarFile getJarFile() throws java.io.IOException;
method public java.net.URL getJarFileURL();
@@ -61584,7 +61681,7 @@
public class MalformedURLException extends java.io.IOException {
ctor public MalformedURLException();
- ctor public MalformedURLException(java.lang.String);
+ ctor public MalformedURLException(String);
}
public class MulticastSocket extends java.net.DatagramSocket {
@@ -61594,36 +61691,36 @@
method public java.net.InetAddress getInterface() throws java.net.SocketException;
method public boolean getLoopbackMode() throws java.net.SocketException;
method public java.net.NetworkInterface getNetworkInterface() throws java.net.SocketException;
- method public deprecated byte getTTL() throws java.io.IOException;
+ method @Deprecated public byte getTTL() throws java.io.IOException;
method public int getTimeToLive() throws java.io.IOException;
method public void joinGroup(java.net.InetAddress) throws java.io.IOException;
method public void joinGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
method public void leaveGroup(java.net.InetAddress) throws java.io.IOException;
method public void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
- method public deprecated void send(java.net.DatagramPacket, byte) throws java.io.IOException;
+ method @Deprecated public void send(java.net.DatagramPacket, byte) throws java.io.IOException;
method public void setInterface(java.net.InetAddress) throws java.net.SocketException;
method public void setLoopbackMode(boolean) throws java.net.SocketException;
method public void setNetworkInterface(java.net.NetworkInterface) throws java.net.SocketException;
- method public deprecated void setTTL(byte) throws java.io.IOException;
+ method @Deprecated public void setTTL(byte) throws java.io.IOException;
method public void setTimeToLive(int) throws java.io.IOException;
}
public final class NetPermission extends java.security.BasicPermission {
- ctor public NetPermission(java.lang.String);
- ctor public NetPermission(java.lang.String, java.lang.String);
+ ctor public NetPermission(String);
+ ctor public NetPermission(String, String);
}
public final class NetworkInterface {
method public static java.net.NetworkInterface getByIndex(int) throws java.net.SocketException;
method public static java.net.NetworkInterface getByInetAddress(java.net.InetAddress) throws java.net.SocketException;
- method public static java.net.NetworkInterface getByName(java.lang.String) throws java.net.SocketException;
- method public java.lang.String getDisplayName();
+ method public static java.net.NetworkInterface getByName(String) throws java.net.SocketException;
+ method public String getDisplayName();
method public byte[] getHardwareAddress() throws java.net.SocketException;
method public int getIndex();
method public java.util.Enumeration<java.net.InetAddress> getInetAddresses();
method public java.util.List<java.net.InterfaceAddress> getInterfaceAddresses();
method public int getMTU() throws java.net.SocketException;
- method public java.lang.String getName();
+ method public String getName();
method public static java.util.Enumeration<java.net.NetworkInterface> getNetworkInterfaces() throws java.net.SocketException;
method public java.net.NetworkInterface getParent();
method public java.util.Enumeration<java.net.NetworkInterface> getSubInterfaces();
@@ -61635,42 +61732,40 @@
}
public class NoRouteToHostException extends java.net.SocketException {
- ctor public NoRouteToHostException(java.lang.String);
+ ctor public NoRouteToHostException(String);
ctor public NoRouteToHostException();
}
public final class PasswordAuthentication {
- ctor public PasswordAuthentication(java.lang.String, char[]);
+ ctor public PasswordAuthentication(String, char[]);
method public char[] getPassword();
- method public java.lang.String getUserName();
+ method public String getUserName();
}
public class PortUnreachableException extends java.net.SocketException {
- ctor public PortUnreachableException(java.lang.String);
+ ctor public PortUnreachableException(String);
ctor public PortUnreachableException();
}
public class ProtocolException extends java.io.IOException {
- ctor public ProtocolException(java.lang.String);
+ ctor public ProtocolException(String);
ctor public ProtocolException();
}
- public abstract interface ProtocolFamily {
- method public abstract java.lang.String name();
+ public interface ProtocolFamily {
+ method public String name();
}
public class Proxy {
ctor public Proxy(java.net.Proxy.Type, java.net.SocketAddress);
method public java.net.SocketAddress address();
- method public final boolean equals(java.lang.Object);
+ method public final boolean equals(Object);
method public final int hashCode();
method public java.net.Proxy.Type type();
field public static final java.net.Proxy NO_PROXY;
}
- public static final class Proxy.Type extends java.lang.Enum {
- method public static java.net.Proxy.Type valueOf(java.lang.String);
- method public static final java.net.Proxy.Type[] values();
+ public enum Proxy.Type {
enum_constant public static final java.net.Proxy.Type DIRECT;
enum_constant public static final java.net.Proxy.Type HTTP;
enum_constant public static final java.net.Proxy.Type SOCKS;
@@ -61686,15 +61781,15 @@
public abstract class ResponseCache {
ctor public ResponseCache();
- method public abstract java.net.CacheResponse get(java.net.URI, java.lang.String, java.util.Map<java.lang.String, java.util.List<java.lang.String>>) throws java.io.IOException;
- method public static synchronized java.net.ResponseCache getDefault();
+ method public abstract java.net.CacheResponse get(java.net.URI, String, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+ method public static java.net.ResponseCache getDefault();
method public abstract java.net.CacheRequest put(java.net.URI, java.net.URLConnection) throws java.io.IOException;
- method public static synchronized void setDefault(java.net.ResponseCache);
+ method public static void setDefault(java.net.ResponseCache);
}
public abstract class SecureCacheResponse extends java.net.CacheResponse {
ctor public SecureCacheResponse();
- method public abstract java.lang.String getCipherSuite();
+ method public abstract String getCipherSuite();
method public abstract java.util.List<java.security.cert.Certificate> getLocalCertificateChain();
method public abstract java.security.Principal getLocalPrincipal();
method public abstract java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
@@ -61714,31 +61809,31 @@
method public java.net.InetAddress getInetAddress();
method public int getLocalPort();
method public java.net.SocketAddress getLocalSocketAddress();
- method public synchronized int getReceiveBufferSize() throws java.net.SocketException;
+ method public int getReceiveBufferSize() throws java.net.SocketException;
method public boolean getReuseAddress() throws java.net.SocketException;
- method public synchronized int getSoTimeout() throws java.io.IOException;
+ method public int getSoTimeout() throws java.io.IOException;
method protected final void implAccept(java.net.Socket) throws java.io.IOException;
method public boolean isBound();
method public boolean isClosed();
method public void setPerformancePreferences(int, int, int);
- method public synchronized void setReceiveBufferSize(int) throws java.net.SocketException;
+ method public void setReceiveBufferSize(int) throws java.net.SocketException;
method public void setReuseAddress(boolean) throws java.net.SocketException;
- method public synchronized void setSoTimeout(int) throws java.net.SocketException;
- method public static synchronized void setSocketFactory(java.net.SocketImplFactory) throws java.io.IOException;
+ method public void setSoTimeout(int) throws java.net.SocketException;
+ method public static void setSocketFactory(java.net.SocketImplFactory) throws java.io.IOException;
}
public class Socket implements java.io.Closeable {
ctor public Socket();
ctor public Socket(java.net.Proxy);
ctor protected Socket(java.net.SocketImpl) throws java.net.SocketException;
- ctor public Socket(java.lang.String, int) throws java.io.IOException, java.net.UnknownHostException;
+ ctor public Socket(String, int) throws java.io.IOException, java.net.UnknownHostException;
ctor public Socket(java.net.InetAddress, int) throws java.io.IOException;
- ctor public Socket(java.lang.String, int, java.net.InetAddress, int) throws java.io.IOException;
+ ctor public Socket(String, int, java.net.InetAddress, int) throws java.io.IOException;
ctor public Socket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
- ctor public deprecated Socket(java.lang.String, int, boolean) throws java.io.IOException;
- ctor public deprecated Socket(java.net.InetAddress, int, boolean) throws java.io.IOException;
+ ctor @Deprecated public Socket(String, int, boolean) throws java.io.IOException;
+ ctor @Deprecated public Socket(java.net.InetAddress, int, boolean) throws java.io.IOException;
method public void bind(java.net.SocketAddress) throws java.io.IOException;
- method public synchronized void close() throws java.io.IOException;
+ method public void close() throws java.io.IOException;
method public void connect(java.net.SocketAddress) throws java.io.IOException;
method public void connect(java.net.SocketAddress, int) throws java.io.IOException;
method public java.nio.channels.SocketChannel getChannel();
@@ -61751,12 +61846,12 @@
method public boolean getOOBInline() throws java.net.SocketException;
method public java.io.OutputStream getOutputStream() throws java.io.IOException;
method public int getPort();
- method public synchronized int getReceiveBufferSize() throws java.net.SocketException;
+ method public int getReceiveBufferSize() throws java.net.SocketException;
method public java.net.SocketAddress getRemoteSocketAddress();
method public boolean getReuseAddress() throws java.net.SocketException;
- method public synchronized int getSendBufferSize() throws java.net.SocketException;
+ method public int getSendBufferSize() throws java.net.SocketException;
method public int getSoLinger() throws java.net.SocketException;
- method public synchronized int getSoTimeout() throws java.net.SocketException;
+ method public int getSoTimeout() throws java.net.SocketException;
method public boolean getTcpNoDelay() throws java.net.SocketException;
method public int getTrafficClass() throws java.net.SocketException;
method public boolean isBound();
@@ -61768,12 +61863,12 @@
method public void setKeepAlive(boolean) throws java.net.SocketException;
method public void setOOBInline(boolean) throws java.net.SocketException;
method public void setPerformancePreferences(int, int, int);
- method public synchronized void setReceiveBufferSize(int) throws java.net.SocketException;
+ method public void setReceiveBufferSize(int) throws java.net.SocketException;
method public void setReuseAddress(boolean) throws java.net.SocketException;
- method public synchronized void setSendBufferSize(int) throws java.net.SocketException;
+ method public void setSendBufferSize(int) throws java.net.SocketException;
method public void setSoLinger(boolean, int) throws java.net.SocketException;
- method public synchronized void setSoTimeout(int) throws java.net.SocketException;
- method public static synchronized void setSocketImplFactory(java.net.SocketImplFactory) throws java.io.IOException;
+ method public void setSoTimeout(int) throws java.net.SocketException;
+ method public static void setSocketImplFactory(java.net.SocketImplFactory) throws java.io.IOException;
method public void setTcpNoDelay(boolean) throws java.net.SocketException;
method public void setTrafficClass(int) throws java.net.SocketException;
method public void shutdownInput() throws java.io.IOException;
@@ -61785,7 +61880,7 @@
}
public class SocketException extends java.io.IOException {
- ctor public SocketException(java.lang.String);
+ ctor public SocketException(String);
ctor public SocketException();
}
@@ -61795,7 +61890,7 @@
method protected abstract int available() throws java.io.IOException;
method protected abstract void bind(java.net.InetAddress, int) throws java.io.IOException;
method protected abstract void close() throws java.io.IOException;
- method protected abstract void connect(java.lang.String, int) throws java.io.IOException;
+ method protected abstract void connect(String, int) throws java.io.IOException;
method protected abstract void connect(java.net.InetAddress, int) throws java.io.IOException;
method protected abstract void connect(java.net.SocketAddress, int) throws java.io.IOException;
method protected abstract void create(boolean) throws java.io.IOException;
@@ -61817,18 +61912,18 @@
field protected int port;
}
- public abstract interface SocketImplFactory {
- method public abstract java.net.SocketImpl createSocketImpl();
+ public interface SocketImplFactory {
+ method public java.net.SocketImpl createSocketImpl();
}
- public abstract interface SocketOption<T> {
- method public abstract java.lang.String name();
- method public abstract java.lang.Class<T> type();
+ public interface SocketOption<T> {
+ method public String name();
+ method public Class<T> type();
}
- public abstract interface SocketOptions {
- method public abstract java.lang.Object getOption(int) throws java.net.SocketException;
- method public abstract void setOption(int, java.lang.Object) throws java.net.SocketException;
+ public interface SocketOptions {
+ method public Object getOption(int) throws java.net.SocketException;
+ method public void setOption(int, Object) throws java.net.SocketException;
field public static final int IP_MULTICAST_IF = 16; // 0x10
field public static final int IP_MULTICAST_IF2 = 31; // 0x1f
field public static final int IP_MULTICAST_LOOP = 18; // 0x12
@@ -61846,19 +61941,17 @@
}
public final class SocketPermission extends java.security.Permission implements java.io.Serializable {
- ctor public SocketPermission(java.lang.String, java.lang.String);
- method public java.lang.String getActions();
+ ctor public SocketPermission(String, String);
+ method public String getActions();
method public boolean implies(java.security.Permission);
}
public class SocketTimeoutException extends java.io.InterruptedIOException {
- ctor public SocketTimeoutException(java.lang.String);
+ ctor public SocketTimeoutException(String);
ctor public SocketTimeoutException();
}
- public final class StandardProtocolFamily extends java.lang.Enum implements java.net.ProtocolFamily {
- method public static java.net.StandardProtocolFamily valueOf(java.lang.String);
- method public static final java.net.StandardProtocolFamily[] values();
+ public enum StandardProtocolFamily implements java.net.ProtocolFamily {
enum_constant public static final java.net.StandardProtocolFamily INET;
enum_constant public static final java.net.StandardProtocolFamily INET6;
}
@@ -61877,142 +61970,141 @@
field public static final java.net.SocketOption<java.lang.Boolean> TCP_NODELAY;
}
- public final class URI implements java.lang.Comparable java.io.Serializable {
- ctor public URI(java.lang.String) throws java.net.URISyntaxException;
- ctor public URI(java.lang.String, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String) throws java.net.URISyntaxException;
- ctor public URI(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.net.URISyntaxException;
- ctor public URI(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.net.URISyntaxException;
- ctor public URI(java.lang.String, java.lang.String, java.lang.String) throws java.net.URISyntaxException;
+ public final class URI implements java.lang.Comparable<java.net.URI> java.io.Serializable {
+ ctor public URI(String) throws java.net.URISyntaxException;
+ ctor public URI(String, String, String, int, String, String, String) throws java.net.URISyntaxException;
+ ctor public URI(String, String, String, String, String) throws java.net.URISyntaxException;
+ ctor public URI(String, String, String, String) throws java.net.URISyntaxException;
+ ctor public URI(String, String, String) throws java.net.URISyntaxException;
method public int compareTo(java.net.URI);
- method public static java.net.URI create(java.lang.String);
- method public java.lang.String getAuthority();
- method public java.lang.String getFragment();
- method public java.lang.String getHost();
- method public java.lang.String getPath();
+ method public static java.net.URI create(String);
+ method public String getAuthority();
+ method public String getFragment();
+ method public String getHost();
+ method public String getPath();
method public int getPort();
- method public java.lang.String getQuery();
- method public java.lang.String getRawAuthority();
- method public java.lang.String getRawFragment();
- method public java.lang.String getRawPath();
- method public java.lang.String getRawQuery();
- method public java.lang.String getRawSchemeSpecificPart();
- method public java.lang.String getRawUserInfo();
- method public java.lang.String getScheme();
- method public java.lang.String getSchemeSpecificPart();
- method public java.lang.String getUserInfo();
+ method public String getQuery();
+ method public String getRawAuthority();
+ method public String getRawFragment();
+ method public String getRawPath();
+ method public String getRawQuery();
+ method public String getRawSchemeSpecificPart();
+ method public String getRawUserInfo();
+ method public String getScheme();
+ method public String getSchemeSpecificPart();
+ method public String getUserInfo();
method public boolean isAbsolute();
method public boolean isOpaque();
method public java.net.URI normalize();
method public java.net.URI parseServerAuthority() throws java.net.URISyntaxException;
method public java.net.URI relativize(java.net.URI);
method public java.net.URI resolve(java.net.URI);
- method public java.net.URI resolve(java.lang.String);
- method public java.lang.String toASCIIString();
+ method public java.net.URI resolve(String);
+ method public String toASCIIString();
method public java.net.URL toURL() throws java.net.MalformedURLException;
}
public class URISyntaxException extends java.lang.Exception {
- ctor public URISyntaxException(java.lang.String, java.lang.String, int);
- ctor public URISyntaxException(java.lang.String, java.lang.String);
+ ctor public URISyntaxException(String, String, int);
+ ctor public URISyntaxException(String, String);
method public int getIndex();
- method public java.lang.String getInput();
- method public java.lang.String getReason();
+ method public String getInput();
+ method public String getReason();
}
public final class URL implements java.io.Serializable {
- ctor public URL(java.lang.String, java.lang.String, int, java.lang.String) throws java.net.MalformedURLException;
- ctor public URL(java.lang.String, java.lang.String, java.lang.String) throws java.net.MalformedURLException;
- ctor public URL(java.lang.String, java.lang.String, int, java.lang.String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
- ctor public URL(java.lang.String) throws java.net.MalformedURLException;
- ctor public URL(java.net.URL, java.lang.String) throws java.net.MalformedURLException;
- ctor public URL(java.net.URL, java.lang.String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
- method public java.lang.String getAuthority();
- method public java.lang.Object getContent() throws java.io.IOException;
- method public java.lang.Object getContent(java.lang.Class[]) throws java.io.IOException;
+ ctor public URL(String, String, int, String) throws java.net.MalformedURLException;
+ ctor public URL(String, String, String) throws java.net.MalformedURLException;
+ ctor public URL(String, String, int, String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
+ ctor public URL(String) throws java.net.MalformedURLException;
+ ctor public URL(java.net.URL, String) throws java.net.MalformedURLException;
+ ctor public URL(java.net.URL, String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
+ method public String getAuthority();
+ method public Object getContent() throws java.io.IOException;
+ method public Object getContent(Class[]) throws java.io.IOException;
method public int getDefaultPort();
- method public java.lang.String getFile();
- method public java.lang.String getHost();
- method public java.lang.String getPath();
+ method public String getFile();
+ method public String getHost();
+ method public String getPath();
method public int getPort();
- method public java.lang.String getProtocol();
- method public java.lang.String getQuery();
- method public java.lang.String getRef();
- method public java.lang.String getUserInfo();
- method public synchronized int hashCode();
+ method public String getProtocol();
+ method public String getQuery();
+ method public String getRef();
+ method public String getUserInfo();
method public java.net.URLConnection openConnection() throws java.io.IOException;
method public java.net.URLConnection openConnection(java.net.Proxy) throws java.io.IOException;
method public java.io.InputStream openStream() throws java.io.IOException;
method public boolean sameFile(java.net.URL);
method public static void setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory);
- method public java.lang.String toExternalForm();
+ method public String toExternalForm();
method public java.net.URI toURI() throws java.net.URISyntaxException;
}
public class URLClassLoader extends java.security.SecureClassLoader implements java.io.Closeable {
- ctor public URLClassLoader(java.net.URL[], java.lang.ClassLoader);
+ ctor public URLClassLoader(java.net.URL[], ClassLoader);
ctor public URLClassLoader(java.net.URL[]);
- ctor public URLClassLoader(java.net.URL[], java.lang.ClassLoader, java.net.URLStreamHandlerFactory);
+ ctor public URLClassLoader(java.net.URL[], ClassLoader, java.net.URLStreamHandlerFactory);
method protected void addURL(java.net.URL);
method public void close() throws java.io.IOException;
- method protected java.lang.Package definePackage(java.lang.String, java.util.jar.Manifest, java.net.URL) throws java.lang.IllegalArgumentException;
- method public java.net.URL findResource(java.lang.String);
- method public java.util.Enumeration<java.net.URL> findResources(java.lang.String) throws java.io.IOException;
+ method protected Package definePackage(String, java.util.jar.Manifest, java.net.URL) throws java.lang.IllegalArgumentException;
+ method public java.net.URL findResource(String);
+ method public java.util.Enumeration<java.net.URL> findResources(String) throws java.io.IOException;
method public java.net.URL[] getURLs();
- method public static java.net.URLClassLoader newInstance(java.net.URL[], java.lang.ClassLoader);
+ method public static java.net.URLClassLoader newInstance(java.net.URL[], ClassLoader);
method public static java.net.URLClassLoader newInstance(java.net.URL[]);
}
public abstract class URLConnection {
ctor protected URLConnection(java.net.URL);
- method public void addRequestProperty(java.lang.String, java.lang.String);
+ method public void addRequestProperty(String, String);
method public abstract void connect() throws java.io.IOException;
method public boolean getAllowUserInteraction();
method public int getConnectTimeout();
- method public java.lang.Object getContent() throws java.io.IOException;
- method public java.lang.Object getContent(java.lang.Class[]) throws java.io.IOException;
- method public java.lang.String getContentEncoding();
+ method public Object getContent() throws java.io.IOException;
+ method public Object getContent(Class[]) throws java.io.IOException;
+ method public String getContentEncoding();
method public int getContentLength();
method public long getContentLengthLong();
- method public java.lang.String getContentType();
+ method public String getContentType();
method public long getDate();
method public static boolean getDefaultAllowUserInteraction();
- method public static deprecated java.lang.String getDefaultRequestProperty(java.lang.String);
+ method @Deprecated public static String getDefaultRequestProperty(String);
method public boolean getDefaultUseCaches();
method public boolean getDoInput();
method public boolean getDoOutput();
method public long getExpiration();
- method public static synchronized java.net.FileNameMap getFileNameMap();
- method public java.lang.String getHeaderField(java.lang.String);
- method public java.lang.String getHeaderField(int);
- method public long getHeaderFieldDate(java.lang.String, long);
- method public int getHeaderFieldInt(java.lang.String, int);
- method public java.lang.String getHeaderFieldKey(int);
- method public long getHeaderFieldLong(java.lang.String, long);
- method public java.util.Map<java.lang.String, java.util.List<java.lang.String>> getHeaderFields();
+ method public static java.net.FileNameMap getFileNameMap();
+ method public String getHeaderField(String);
+ method public String getHeaderField(int);
+ method public long getHeaderFieldDate(String, long);
+ method public int getHeaderFieldInt(String, int);
+ method public String getHeaderFieldKey(int);
+ method public long getHeaderFieldLong(String, long);
+ method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaderFields();
method public long getIfModifiedSince();
method public java.io.InputStream getInputStream() throws java.io.IOException;
method public long getLastModified();
method public java.io.OutputStream getOutputStream() throws java.io.IOException;
method public java.security.Permission getPermission() throws java.io.IOException;
method public int getReadTimeout();
- method public java.util.Map<java.lang.String, java.util.List<java.lang.String>> getRequestProperties();
- method public java.lang.String getRequestProperty(java.lang.String);
+ method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getRequestProperties();
+ method public String getRequestProperty(String);
method public java.net.URL getURL();
method public boolean getUseCaches();
- method public static java.lang.String guessContentTypeFromName(java.lang.String);
- method public static java.lang.String guessContentTypeFromStream(java.io.InputStream) throws java.io.IOException;
+ method public static String guessContentTypeFromName(String);
+ method public static String guessContentTypeFromStream(java.io.InputStream) throws java.io.IOException;
method public void setAllowUserInteraction(boolean);
method public void setConnectTimeout(int);
- method public static synchronized void setContentHandlerFactory(java.net.ContentHandlerFactory);
+ method public static void setContentHandlerFactory(java.net.ContentHandlerFactory);
method public static void setDefaultAllowUserInteraction(boolean);
- method public static deprecated void setDefaultRequestProperty(java.lang.String, java.lang.String);
+ method @Deprecated public static void setDefaultRequestProperty(String, String);
method public void setDefaultUseCaches(boolean);
method public void setDoInput(boolean);
method public void setDoOutput(boolean);
method public static void setFileNameMap(java.net.FileNameMap);
method public void setIfModifiedSince(long);
method public void setReadTimeout(int);
- method public void setRequestProperty(java.lang.String, java.lang.String);
+ method public void setRequestProperty(String, String);
method public void setUseCaches(boolean);
field protected boolean allowUserInteraction;
field protected boolean connected;
@@ -62025,43 +62117,43 @@
public class URLDecoder {
ctor public URLDecoder();
- method public static deprecated java.lang.String decode(java.lang.String);
- method public static java.lang.String decode(java.lang.String, java.lang.String) throws java.io.UnsupportedEncodingException;
+ method @Deprecated public static String decode(String);
+ method public static String decode(String, String) throws java.io.UnsupportedEncodingException;
}
public class URLEncoder {
- method public static deprecated java.lang.String encode(java.lang.String);
- method public static java.lang.String encode(java.lang.String, java.lang.String) throws java.io.UnsupportedEncodingException;
+ method @Deprecated public static String encode(String);
+ method public static String encode(String, String) throws java.io.UnsupportedEncodingException;
}
public abstract class URLStreamHandler {
ctor public URLStreamHandler();
method protected boolean equals(java.net.URL, java.net.URL);
method protected int getDefaultPort();
- method protected synchronized java.net.InetAddress getHostAddress(java.net.URL);
+ method protected java.net.InetAddress getHostAddress(java.net.URL);
method protected int hashCode(java.net.URL);
method protected boolean hostsEqual(java.net.URL, java.net.URL);
method protected abstract java.net.URLConnection openConnection(java.net.URL) throws java.io.IOException;
method protected java.net.URLConnection openConnection(java.net.URL, java.net.Proxy) throws java.io.IOException;
- method protected void parseURL(java.net.URL, java.lang.String, int, int);
+ method protected void parseURL(java.net.URL, String, int, int);
method protected boolean sameFile(java.net.URL, java.net.URL);
- method protected void setURL(java.net.URL, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method protected deprecated void setURL(java.net.URL, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String);
- method protected java.lang.String toExternalForm(java.net.URL);
+ method protected void setURL(java.net.URL, String, String, int, String, String, String, String, String);
+ method @Deprecated protected void setURL(java.net.URL, String, String, int, String, String);
+ method protected String toExternalForm(java.net.URL);
}
- public abstract interface URLStreamHandlerFactory {
- method public abstract java.net.URLStreamHandler createURLStreamHandler(java.lang.String);
+ public interface URLStreamHandlerFactory {
+ method public java.net.URLStreamHandler createURLStreamHandler(String);
}
public class UnknownHostException extends java.io.IOException {
- ctor public UnknownHostException(java.lang.String);
+ ctor public UnknownHostException(String);
ctor public UnknownHostException();
}
public class UnknownServiceException extends java.io.IOException {
ctor public UnknownServiceException();
- ctor public UnknownServiceException(java.lang.String);
+ ctor public UnknownServiceException(String);
}
}
@@ -62069,7 +62161,7 @@
package java.nio {
public abstract class Buffer {
- method public abstract java.lang.Object array();
+ method public abstract Object array();
method public abstract int arrayOffset();
method public final int capacity();
method public final java.nio.Buffer clear();
@@ -62096,25 +62188,25 @@
ctor public BufferUnderflowException();
}
- public abstract class ByteBuffer extends java.nio.Buffer implements java.lang.Comparable {
- method public static java.nio.ByteBuffer allocate(int);
- method public static java.nio.ByteBuffer allocateDirect(int);
+ public abstract class ByteBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.ByteBuffer> {
+ method @NonNull public static java.nio.ByteBuffer allocate(int);
+ method @NonNull public static java.nio.ByteBuffer allocateDirect(int);
method public final byte[] array();
method public final int arrayOffset();
- method public abstract java.nio.CharBuffer asCharBuffer();
- method public abstract java.nio.DoubleBuffer asDoubleBuffer();
- method public abstract java.nio.FloatBuffer asFloatBuffer();
- method public abstract java.nio.IntBuffer asIntBuffer();
- method public abstract java.nio.LongBuffer asLongBuffer();
- method public abstract java.nio.ByteBuffer asReadOnlyBuffer();
- method public abstract java.nio.ShortBuffer asShortBuffer();
- method public abstract java.nio.ByteBuffer compact();
- method public int compareTo(java.nio.ByteBuffer);
- method public abstract java.nio.ByteBuffer duplicate();
+ method @NonNull public abstract java.nio.CharBuffer asCharBuffer();
+ method @NonNull public abstract java.nio.DoubleBuffer asDoubleBuffer();
+ method @NonNull public abstract java.nio.FloatBuffer asFloatBuffer();
+ method @NonNull public abstract java.nio.IntBuffer asIntBuffer();
+ method @NonNull public abstract java.nio.LongBuffer asLongBuffer();
+ method @NonNull public abstract java.nio.ByteBuffer asReadOnlyBuffer();
+ method @NonNull public abstract java.nio.ShortBuffer asShortBuffer();
+ method @NonNull public abstract java.nio.ByteBuffer compact();
+ method public int compareTo(@NonNull java.nio.ByteBuffer);
+ method @NonNull public abstract java.nio.ByteBuffer duplicate();
method public abstract byte get();
method public abstract byte get(int);
- method public java.nio.ByteBuffer get(byte[], int, int);
- method public java.nio.ByteBuffer get(byte[]);
+ method @NonNull public java.nio.ByteBuffer get(byte[], int, int);
+ method @NonNull public java.nio.ByteBuffer get(byte[]);
method public abstract char getChar();
method public abstract char getChar(int);
method public abstract double getDouble();
@@ -62128,28 +62220,28 @@
method public abstract short getShort();
method public abstract short getShort(int);
method public final boolean hasArray();
- method public final java.nio.ByteOrder order();
- method public final java.nio.ByteBuffer order(java.nio.ByteOrder);
- method public abstract java.nio.ByteBuffer put(byte);
- method public abstract java.nio.ByteBuffer put(int, byte);
- method public java.nio.ByteBuffer put(java.nio.ByteBuffer);
- method public java.nio.ByteBuffer put(byte[], int, int);
- method public final java.nio.ByteBuffer put(byte[]);
- method public abstract java.nio.ByteBuffer putChar(char);
- method public abstract java.nio.ByteBuffer putChar(int, char);
- method public abstract java.nio.ByteBuffer putDouble(double);
- method public abstract java.nio.ByteBuffer putDouble(int, double);
- method public abstract java.nio.ByteBuffer putFloat(float);
- method public abstract java.nio.ByteBuffer putFloat(int, float);
- method public abstract java.nio.ByteBuffer putInt(int);
- method public abstract java.nio.ByteBuffer putInt(int, int);
- method public abstract java.nio.ByteBuffer putLong(long);
- method public abstract java.nio.ByteBuffer putLong(int, long);
- method public abstract java.nio.ByteBuffer putShort(short);
- method public abstract java.nio.ByteBuffer putShort(int, short);
- method public abstract java.nio.ByteBuffer slice();
- method public static java.nio.ByteBuffer wrap(byte[], int, int);
- method public static java.nio.ByteBuffer wrap(byte[]);
+ method @NonNull public final java.nio.ByteOrder order();
+ method @NonNull public final java.nio.ByteBuffer order(@NonNull java.nio.ByteOrder);
+ method @NonNull public abstract java.nio.ByteBuffer put(byte);
+ method @NonNull public abstract java.nio.ByteBuffer put(int, byte);
+ method @NonNull public java.nio.ByteBuffer put(@NonNull java.nio.ByteBuffer);
+ method @NonNull public java.nio.ByteBuffer put(byte[], int, int);
+ method @NonNull public final java.nio.ByteBuffer put(byte[]);
+ method @NonNull public abstract java.nio.ByteBuffer putChar(char);
+ method @NonNull public abstract java.nio.ByteBuffer putChar(int, char);
+ method @NonNull public abstract java.nio.ByteBuffer putDouble(double);
+ method @NonNull public abstract java.nio.ByteBuffer putDouble(int, double);
+ method @NonNull public abstract java.nio.ByteBuffer putFloat(float);
+ method @NonNull public abstract java.nio.ByteBuffer putFloat(int, float);
+ method @NonNull public abstract java.nio.ByteBuffer putInt(int);
+ method @NonNull public abstract java.nio.ByteBuffer putInt(int, int);
+ method @NonNull public abstract java.nio.ByteBuffer putLong(long);
+ method @NonNull public abstract java.nio.ByteBuffer putLong(int, long);
+ method @NonNull public abstract java.nio.ByteBuffer putShort(short);
+ method @NonNull public abstract java.nio.ByteBuffer putShort(int, short);
+ method @NonNull public abstract java.nio.ByteBuffer slice();
+ method @NonNull public static java.nio.ByteBuffer wrap(byte[], int, int);
+ method @NonNull public static java.nio.ByteBuffer wrap(byte[]);
}
public final class ByteOrder {
@@ -62158,10 +62250,10 @@
field public static final java.nio.ByteOrder LITTLE_ENDIAN;
}
- public abstract class CharBuffer extends java.nio.Buffer implements java.lang.Appendable java.lang.CharSequence java.lang.Comparable java.lang.Readable {
+ public abstract class CharBuffer extends java.nio.Buffer implements java.lang.Appendable java.lang.CharSequence java.lang.Comparable<java.nio.CharBuffer> java.lang.Readable {
method public static java.nio.CharBuffer allocate(int);
- method public java.nio.CharBuffer append(java.lang.CharSequence);
- method public java.nio.CharBuffer append(java.lang.CharSequence, int, int);
+ method public java.nio.CharBuffer append(CharSequence);
+ method public java.nio.CharBuffer append(CharSequence, int, int);
method public java.nio.CharBuffer append(char);
method public final char[] array();
method public final int arrayOffset();
@@ -62182,18 +62274,18 @@
method public java.nio.CharBuffer put(java.nio.CharBuffer);
method public java.nio.CharBuffer put(char[], int, int);
method public final java.nio.CharBuffer put(char[]);
- method public java.nio.CharBuffer put(java.lang.String, int, int);
- method public final java.nio.CharBuffer put(java.lang.String);
+ method public java.nio.CharBuffer put(String, int, int);
+ method public final java.nio.CharBuffer put(String);
method public int read(java.nio.CharBuffer) throws java.io.IOException;
method public abstract java.nio.CharBuffer slice();
method public abstract java.nio.CharBuffer subSequence(int, int);
method public static java.nio.CharBuffer wrap(char[], int, int);
method public static java.nio.CharBuffer wrap(char[]);
- method public static java.nio.CharBuffer wrap(java.lang.CharSequence, int, int);
- method public static java.nio.CharBuffer wrap(java.lang.CharSequence);
+ method public static java.nio.CharBuffer wrap(CharSequence, int, int);
+ method public static java.nio.CharBuffer wrap(CharSequence);
}
- public abstract class DoubleBuffer extends java.nio.Buffer implements java.lang.Comparable {
+ public abstract class DoubleBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.DoubleBuffer> {
method public static java.nio.DoubleBuffer allocate(int);
method public final double[] array();
method public final int arrayOffset();
@@ -62217,7 +62309,7 @@
method public static java.nio.DoubleBuffer wrap(double[]);
}
- public abstract class FloatBuffer extends java.nio.Buffer implements java.lang.Comparable {
+ public abstract class FloatBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.FloatBuffer> {
method public static java.nio.FloatBuffer allocate(int);
method public final float[] array();
method public final int arrayOffset();
@@ -62241,7 +62333,7 @@
method public static java.nio.FloatBuffer wrap(float[]);
}
- public abstract class IntBuffer extends java.nio.Buffer implements java.lang.Comparable {
+ public abstract class IntBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.IntBuffer> {
method public static java.nio.IntBuffer allocate(int);
method public final int[] array();
method public final int arrayOffset();
@@ -62269,7 +62361,7 @@
ctor public InvalidMarkException();
}
- public abstract class LongBuffer extends java.nio.Buffer implements java.lang.Comparable {
+ public abstract class LongBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.LongBuffer> {
method public static java.nio.LongBuffer allocate(int);
method public final long[] array();
method public final int arrayOffset();
@@ -62303,7 +62395,7 @@
ctor public ReadOnlyBufferException();
}
- public abstract class ShortBuffer extends java.nio.Buffer implements java.lang.Comparable {
+ public abstract class ShortBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.ShortBuffer> {
method public static java.nio.ShortBuffer allocate(int);
method public final short[] array();
method public final int arrayOffset();
@@ -62343,14 +62435,14 @@
ctor public AlreadyConnectedException();
}
- public abstract interface AsynchronousByteChannel implements java.nio.channels.AsynchronousChannel {
- method public abstract <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
- method public abstract java.util.concurrent.Future<java.lang.Integer> read(java.nio.ByteBuffer);
- method public abstract <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
- method public abstract java.util.concurrent.Future<java.lang.Integer> write(java.nio.ByteBuffer);
+ public interface AsynchronousByteChannel extends java.nio.channels.AsynchronousChannel {
+ method public <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+ method public java.util.concurrent.Future<java.lang.Integer> read(java.nio.ByteBuffer);
+ method public <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+ method public java.util.concurrent.Future<java.lang.Integer> write(java.nio.ByteBuffer);
}
- public abstract interface AsynchronousChannel implements java.nio.channels.Channel {
+ public interface AsynchronousChannel extends java.nio.channels.Channel {
}
public abstract class AsynchronousChannelGroup {
@@ -62373,25 +62465,25 @@
public abstract class AsynchronousFileChannel implements java.nio.channels.AsynchronousChannel {
ctor protected AsynchronousFileChannel();
method public abstract void force(boolean) throws java.io.IOException;
- method public abstract <A> void lock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>);
- method public final <A> void lock(A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>);
+ method public abstract <A> void lock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock,? super A>);
+ method public final <A> void lock(A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock,? super A>);
method public abstract java.util.concurrent.Future<java.nio.channels.FileLock> lock(long, long, boolean);
method public final java.util.concurrent.Future<java.nio.channels.FileLock> lock();
method public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.util.concurrent.ExecutorService, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
method public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
- method public abstract <A> void read(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
+ method public abstract <A> void read(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
method public abstract java.util.concurrent.Future<java.lang.Integer> read(java.nio.ByteBuffer, long);
method public abstract long size() throws java.io.IOException;
method public abstract java.nio.channels.AsynchronousFileChannel truncate(long) throws java.io.IOException;
method public abstract java.nio.channels.FileLock tryLock(long, long, boolean) throws java.io.IOException;
method public final java.nio.channels.FileLock tryLock() throws java.io.IOException;
- method public abstract <A> void write(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
+ method public abstract <A> void write(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
method public abstract java.util.concurrent.Future<java.lang.Integer> write(java.nio.ByteBuffer, long);
}
public abstract class AsynchronousServerSocketChannel implements java.nio.channels.AsynchronousChannel java.nio.channels.NetworkChannel {
ctor protected AsynchronousServerSocketChannel(java.nio.channels.spi.AsynchronousChannelProvider);
- method public abstract <A> void accept(A, java.nio.channels.CompletionHandler<java.nio.channels.AsynchronousSocketChannel, ? super A>);
+ method public abstract <A> void accept(A, java.nio.channels.CompletionHandler<java.nio.channels.AsynchronousSocketChannel,? super A>);
method public abstract java.util.concurrent.Future<java.nio.channels.AsynchronousSocketChannel> accept();
method public final java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
method public abstract java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
@@ -62404,32 +62496,32 @@
public abstract class AsynchronousSocketChannel implements java.nio.channels.AsynchronousByteChannel java.nio.channels.NetworkChannel {
ctor protected AsynchronousSocketChannel(java.nio.channels.spi.AsynchronousChannelProvider);
method public abstract java.nio.channels.AsynchronousSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
- method public abstract <A> void connect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void, ? super A>);
+ method public abstract <A> void connect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void,? super A>);
method public abstract java.util.concurrent.Future<java.lang.Void> connect(java.net.SocketAddress);
method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
method public static java.nio.channels.AsynchronousSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
method public static java.nio.channels.AsynchronousSocketChannel open() throws java.io.IOException;
method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
- method public abstract <A> void read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
- method public final <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
- method public abstract <A> void read(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>);
+ method public abstract <A> void read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+ method public final <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+ method public abstract <A> void read(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long,? super A>);
method public abstract <T> java.nio.channels.AsynchronousSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
method public abstract java.nio.channels.AsynchronousSocketChannel shutdownInput() throws java.io.IOException;
method public abstract java.nio.channels.AsynchronousSocketChannel shutdownOutput() throws java.io.IOException;
- method public abstract <A> void write(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
- method public final <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
- method public abstract <A> void write(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>);
+ method public abstract <A> void write(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+ method public final <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+ method public abstract <A> void write(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long,? super A>);
}
- public abstract interface ByteChannel implements java.nio.channels.ReadableByteChannel java.nio.channels.WritableByteChannel {
+ public interface ByteChannel extends java.nio.channels.ReadableByteChannel java.nio.channels.WritableByteChannel {
}
public class CancelledKeyException extends java.lang.IllegalStateException {
ctor public CancelledKeyException();
}
- public abstract interface Channel implements java.io.Closeable {
- method public abstract boolean isOpen();
+ public interface Channel extends java.io.Closeable {
+ method public boolean isOpen();
}
public final class Channels {
@@ -62440,9 +62532,9 @@
method public static java.io.OutputStream newOutputStream(java.nio.channels.WritableByteChannel);
method public static java.io.OutputStream newOutputStream(java.nio.channels.AsynchronousByteChannel);
method public static java.io.Reader newReader(java.nio.channels.ReadableByteChannel, java.nio.charset.CharsetDecoder, int);
- method public static java.io.Reader newReader(java.nio.channels.ReadableByteChannel, java.lang.String);
+ method public static java.io.Reader newReader(java.nio.channels.ReadableByteChannel, String);
method public static java.io.Writer newWriter(java.nio.channels.WritableByteChannel, java.nio.charset.CharsetEncoder, int);
- method public static java.io.Writer newWriter(java.nio.channels.WritableByteChannel, java.lang.String);
+ method public static java.io.Writer newWriter(java.nio.channels.WritableByteChannel, String);
}
public class ClosedByInterruptException extends java.nio.channels.AsynchronousCloseException {
@@ -62457,9 +62549,9 @@
ctor public ClosedSelectorException();
}
- public abstract interface CompletionHandler<V, A> {
- method public abstract void completed(V, A);
- method public abstract void failed(java.lang.Throwable, A);
+ public interface CompletionHandler<V, A> {
+ method public void completed(V, A);
+ method public void failed(Throwable, A);
}
public class ConnectionPendingException extends java.lang.IllegalStateException {
@@ -62522,16 +62614,16 @@
method public final long position();
method public abstract void release() throws java.io.IOException;
method public final long size();
- method public final java.lang.String toString();
+ method public final String toString();
}
public class FileLockInterruptionException extends java.io.IOException {
ctor public FileLockInterruptionException();
}
- public abstract interface GatheringByteChannel implements java.nio.channels.WritableByteChannel {
- method public abstract long write(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
- method public abstract long write(java.nio.ByteBuffer[]) throws java.io.IOException;
+ public interface GatheringByteChannel extends java.nio.channels.WritableByteChannel {
+ method public long write(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
+ method public long write(java.nio.ByteBuffer[]) throws java.io.IOException;
}
public class IllegalBlockingModeException extends java.lang.IllegalStateException {
@@ -62550,7 +62642,7 @@
ctor public InterruptedByTimeoutException();
}
- public abstract interface InterruptibleChannel implements java.nio.channels.Channel {
+ public interface InterruptibleChannel extends java.nio.channels.Channel {
}
public abstract class MembershipKey {
@@ -62565,17 +62657,17 @@
method public abstract java.nio.channels.MembershipKey unblock(java.net.InetAddress);
}
- public abstract interface MulticastChannel implements java.nio.channels.NetworkChannel {
- method public abstract java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface) throws java.io.IOException;
- method public abstract java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface, java.net.InetAddress) throws java.io.IOException;
+ public interface MulticastChannel extends java.nio.channels.NetworkChannel {
+ method public java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface) throws java.io.IOException;
+ method public java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface, java.net.InetAddress) throws java.io.IOException;
}
- public abstract interface NetworkChannel implements java.nio.channels.Channel {
- method public abstract java.nio.channels.NetworkChannel bind(java.net.SocketAddress) throws java.io.IOException;
- method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
- method public abstract <T> T getOption(java.net.SocketOption<T>) throws java.io.IOException;
- method public abstract <T> java.nio.channels.NetworkChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
- method public abstract java.util.Set<java.net.SocketOption<?>> supportedOptions();
+ public interface NetworkChannel extends java.nio.channels.Channel {
+ method public java.nio.channels.NetworkChannel bind(java.net.SocketAddress) throws java.io.IOException;
+ method public java.net.SocketAddress getLocalAddress() throws java.io.IOException;
+ method public <T> T getOption(java.net.SocketOption<T>) throws java.io.IOException;
+ method public <T> java.nio.channels.NetworkChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
+ method public java.util.Set<java.net.SocketOption<?>> supportedOptions();
}
public class NoConnectionPendingException extends java.lang.IllegalStateException {
@@ -62609,12 +62701,12 @@
method public abstract java.nio.channels.Pipe.SourceChannel source();
}
- public static abstract class Pipe.SinkChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.GatheringByteChannel java.nio.channels.WritableByteChannel {
+ public abstract static class Pipe.SinkChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.GatheringByteChannel java.nio.channels.WritableByteChannel {
ctor protected Pipe.SinkChannel(java.nio.channels.spi.SelectorProvider);
method public final int validOps();
}
- public static abstract class Pipe.SourceChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ReadableByteChannel java.nio.channels.ScatteringByteChannel {
+ public abstract static class Pipe.SourceChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ReadableByteChannel java.nio.channels.ScatteringByteChannel {
ctor protected Pipe.SourceChannel(java.nio.channels.spi.SelectorProvider);
method public final int validOps();
}
@@ -62623,39 +62715,39 @@
ctor public ReadPendingException();
}
- public abstract interface ReadableByteChannel implements java.nio.channels.Channel {
- method public abstract int read(java.nio.ByteBuffer) throws java.io.IOException;
+ public interface ReadableByteChannel extends java.nio.channels.Channel {
+ method public int read(java.nio.ByteBuffer) throws java.io.IOException;
}
- public abstract interface ScatteringByteChannel implements java.nio.channels.ReadableByteChannel {
- method public abstract long read(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
- method public abstract long read(java.nio.ByteBuffer[]) throws java.io.IOException;
+ public interface ScatteringByteChannel extends java.nio.channels.ReadableByteChannel {
+ method public long read(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
+ method public long read(java.nio.ByteBuffer[]) throws java.io.IOException;
}
- public abstract interface SeekableByteChannel implements java.nio.channels.ByteChannel {
- method public abstract long position() throws java.io.IOException;
- method public abstract java.nio.channels.SeekableByteChannel position(long) throws java.io.IOException;
- method public abstract long size() throws java.io.IOException;
- method public abstract java.nio.channels.SeekableByteChannel truncate(long) throws java.io.IOException;
+ public interface SeekableByteChannel extends java.nio.channels.ByteChannel {
+ method public long position() throws java.io.IOException;
+ method public java.nio.channels.SeekableByteChannel position(long) throws java.io.IOException;
+ method public long size() throws java.io.IOException;
+ method public java.nio.channels.SeekableByteChannel truncate(long) throws java.io.IOException;
}
public abstract class SelectableChannel extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.Channel {
ctor protected SelectableChannel();
- method public abstract java.lang.Object blockingLock();
+ method public abstract Object blockingLock();
method public abstract java.nio.channels.SelectableChannel configureBlocking(boolean) throws java.io.IOException;
method public abstract boolean isBlocking();
method public abstract boolean isRegistered();
method public abstract java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
method public abstract java.nio.channels.spi.SelectorProvider provider();
- method public abstract java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, java.lang.Object) throws java.nio.channels.ClosedChannelException;
+ method public abstract java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, Object) throws java.nio.channels.ClosedChannelException;
method public final java.nio.channels.SelectionKey register(java.nio.channels.Selector, int) throws java.nio.channels.ClosedChannelException;
method public abstract int validOps();
}
public abstract class SelectionKey {
ctor protected SelectionKey();
- method public final java.lang.Object attach(java.lang.Object);
- method public final java.lang.Object attachment();
+ method public final Object attach(Object);
+ method public final Object attachment();
method public abstract void cancel();
method public abstract java.nio.channels.SelectableChannel channel();
method public abstract int interestOps();
@@ -62728,8 +62820,8 @@
ctor public UnsupportedAddressTypeException();
}
- public abstract interface WritableByteChannel implements java.nio.channels.Channel {
- method public abstract int write(java.nio.ByteBuffer) throws java.io.IOException;
+ public interface WritableByteChannel extends java.nio.channels.Channel {
+ method public int write(java.nio.ByteBuffer) throws java.io.IOException;
}
public class WritePendingException extends java.lang.IllegalStateException {
@@ -62751,7 +62843,7 @@
public abstract class AbstractSelectableChannel extends java.nio.channels.SelectableChannel {
ctor protected AbstractSelectableChannel(java.nio.channels.spi.SelectorProvider);
- method public final java.lang.Object blockingLock();
+ method public final Object blockingLock();
method public final java.nio.channels.SelectableChannel configureBlocking(boolean) throws java.io.IOException;
method protected final void implCloseChannel() throws java.io.IOException;
method protected abstract void implCloseSelectableChannel() throws java.io.IOException;
@@ -62760,7 +62852,7 @@
method public final boolean isRegistered();
method public final java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
method public final java.nio.channels.spi.SelectorProvider provider();
- method public final java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, java.lang.Object) throws java.nio.channels.ClosedChannelException;
+ method public final java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, Object) throws java.nio.channels.ClosedChannelException;
}
public abstract class AbstractSelectionKey extends java.nio.channels.SelectionKey {
@@ -62779,7 +62871,7 @@
method protected abstract void implCloseSelector() throws java.io.IOException;
method public final boolean isOpen();
method public final java.nio.channels.spi.SelectorProvider provider();
- method protected abstract java.nio.channels.SelectionKey register(java.nio.channels.spi.AbstractSelectableChannel, int, java.lang.Object);
+ method protected abstract java.nio.channels.SelectionKey register(java.nio.channels.spi.AbstractSelectableChannel, int, Object);
}
public abstract class AsynchronousChannelProvider {
@@ -62811,28 +62903,28 @@
ctor public CharacterCodingException();
}
- public abstract class Charset implements java.lang.Comparable {
- ctor protected Charset(java.lang.String, java.lang.String[]);
+ public abstract class Charset implements java.lang.Comparable<java.nio.charset.Charset> {
+ ctor protected Charset(String, String[]);
method public final java.util.Set<java.lang.String> aliases();
- method public static java.util.SortedMap<java.lang.String, java.nio.charset.Charset> availableCharsets();
+ method public static java.util.SortedMap<java.lang.String,java.nio.charset.Charset> availableCharsets();
method public boolean canEncode();
method public final int compareTo(java.nio.charset.Charset);
method public abstract boolean contains(java.nio.charset.Charset);
method public final java.nio.CharBuffer decode(java.nio.ByteBuffer);
method public static java.nio.charset.Charset defaultCharset();
- method public java.lang.String displayName();
- method public java.lang.String displayName(java.util.Locale);
+ method public String displayName();
+ method public String displayName(java.util.Locale);
method public final java.nio.ByteBuffer encode(java.nio.CharBuffer);
- method public final java.nio.ByteBuffer encode(java.lang.String);
- method public final boolean equals(java.lang.Object);
- method public static java.nio.charset.Charset forName(java.lang.String);
+ method public final java.nio.ByteBuffer encode(String);
+ method public final boolean equals(Object);
+ method public static java.nio.charset.Charset forName(String);
method public final int hashCode();
method public final boolean isRegistered();
- method public static boolean isSupported(java.lang.String);
- method public final java.lang.String name();
+ method public static boolean isSupported(String);
+ method public final String name();
method public abstract java.nio.charset.CharsetDecoder newDecoder();
method public abstract java.nio.charset.CharsetEncoder newEncoder();
- method public final java.lang.String toString();
+ method public final String toString();
}
public abstract class CharsetDecoder {
@@ -62847,7 +62939,7 @@
method protected java.nio.charset.CoderResult implFlush(java.nio.CharBuffer);
method protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
method protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
- method protected void implReplaceWith(java.lang.String);
+ method protected void implReplaceWith(String);
method protected void implReset();
method public boolean isAutoDetecting();
method public boolean isCharsetDetected();
@@ -62855,8 +62947,8 @@
method public final float maxCharsPerByte();
method public final java.nio.charset.CharsetDecoder onMalformedInput(java.nio.charset.CodingErrorAction);
method public final java.nio.charset.CharsetDecoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
- method public final java.nio.charset.CharsetDecoder replaceWith(java.lang.String);
- method public final java.lang.String replacement();
+ method public final java.nio.charset.CharsetDecoder replaceWith(String);
+ method public final String replacement();
method public final java.nio.charset.CharsetDecoder reset();
method public java.nio.charset.CodingErrorAction unmappableCharacterAction();
}
@@ -62866,7 +62958,7 @@
ctor protected CharsetEncoder(java.nio.charset.Charset, float, float);
method public final float averageBytesPerChar();
method public boolean canEncode(char);
- method public boolean canEncode(java.lang.CharSequence);
+ method public boolean canEncode(CharSequence);
method public final java.nio.charset.Charset charset();
method public final java.nio.charset.CoderResult encode(java.nio.CharBuffer, java.nio.ByteBuffer, boolean);
method public final java.nio.ByteBuffer encode(java.nio.CharBuffer) throws java.nio.charset.CharacterCodingException;
@@ -62889,7 +62981,7 @@
}
public class CoderMalfunctionError extends java.lang.Error {
- ctor public CoderMalfunctionError(java.lang.Exception);
+ ctor public CoderMalfunctionError(Exception);
}
public class CoderResult {
@@ -62913,8 +63005,8 @@
}
public class IllegalCharsetNameException extends java.lang.IllegalArgumentException {
- ctor public IllegalCharsetNameException(java.lang.String);
- method public java.lang.String getCharsetName();
+ ctor public IllegalCharsetNameException(String);
+ method public String getCharsetName();
}
public class MalformedInputException extends java.nio.charset.CharacterCodingException {
@@ -62937,8 +63029,8 @@
}
public class UnsupportedCharsetException extends java.lang.IllegalArgumentException {
- ctor public UnsupportedCharsetException(java.lang.String);
- method public java.lang.String getCharsetName();
+ ctor public UnsupportedCharsetException(String);
+ method public String getCharsetName();
}
}
@@ -62947,7 +63039,7 @@
public abstract class CharsetProvider {
ctor protected CharsetProvider();
- method public abstract java.nio.charset.Charset charsetForName(java.lang.String);
+ method public abstract java.nio.charset.Charset charsetForName(String);
method public abstract java.util.Iterator<java.nio.charset.Charset> charsets();
}
@@ -62956,20 +63048,18 @@
package java.nio.file {
public class AccessDeniedException extends java.nio.file.FileSystemException {
- ctor public AccessDeniedException(java.lang.String);
- ctor public AccessDeniedException(java.lang.String, java.lang.String, java.lang.String);
+ ctor public AccessDeniedException(String);
+ ctor public AccessDeniedException(String, String, String);
}
- public final class AccessMode extends java.lang.Enum {
- method public static java.nio.file.AccessMode valueOf(java.lang.String);
- method public static final java.nio.file.AccessMode[] values();
+ public enum AccessMode {
enum_constant public static final java.nio.file.AccessMode EXECUTE;
enum_constant public static final java.nio.file.AccessMode READ;
enum_constant public static final java.nio.file.AccessMode WRITE;
}
public class AtomicMoveNotSupportedException extends java.nio.file.FileSystemException {
- ctor public AtomicMoveNotSupportedException(java.lang.String, java.lang.String, java.lang.String);
+ ctor public AtomicMoveNotSupportedException(String, String, String);
}
public class ClosedDirectoryStreamException extends java.lang.IllegalStateException {
@@ -62984,7 +63074,7 @@
ctor public ClosedWatchServiceException();
}
- public abstract interface CopyOption {
+ public interface CopyOption {
}
public final class DirectoryIteratorException extends java.util.ConcurrentModificationException {
@@ -62993,42 +63083,42 @@
}
public class DirectoryNotEmptyException extends java.nio.file.FileSystemException {
- ctor public DirectoryNotEmptyException(java.lang.String);
+ ctor public DirectoryNotEmptyException(String);
}
- public abstract interface DirectoryStream<T> implements java.io.Closeable java.lang.Iterable {
+ public interface DirectoryStream<T> extends java.io.Closeable java.lang.Iterable<T> {
}
- public static abstract interface DirectoryStream.Filter<T> {
- method public abstract boolean accept(T) throws java.io.IOException;
+ @java.lang.FunctionalInterface public static interface DirectoryStream.Filter<T> {
+ method public boolean accept(T) throws java.io.IOException;
}
public class FileAlreadyExistsException extends java.nio.file.FileSystemException {
- ctor public FileAlreadyExistsException(java.lang.String);
- ctor public FileAlreadyExistsException(java.lang.String, java.lang.String, java.lang.String);
+ ctor public FileAlreadyExistsException(String);
+ ctor public FileAlreadyExistsException(String, String, String);
}
public abstract class FileStore {
ctor protected FileStore();
- method public abstract java.lang.Object getAttribute(java.lang.String) throws java.io.IOException;
- method public abstract <V extends java.nio.file.attribute.FileStoreAttributeView> V getFileStoreAttributeView(java.lang.Class<V>);
+ method public abstract Object getAttribute(String) throws java.io.IOException;
+ method public abstract <V extends java.nio.file.attribute.FileStoreAttributeView> V getFileStoreAttributeView(Class<V>);
method public abstract long getTotalSpace() throws java.io.IOException;
method public abstract long getUnallocatedSpace() throws java.io.IOException;
method public abstract long getUsableSpace() throws java.io.IOException;
method public abstract boolean isReadOnly();
- method public abstract java.lang.String name();
- method public abstract boolean supportsFileAttributeView(java.lang.Class<? extends java.nio.file.attribute.FileAttributeView>);
- method public abstract boolean supportsFileAttributeView(java.lang.String);
- method public abstract java.lang.String type();
+ method public abstract String name();
+ method public abstract boolean supportsFileAttributeView(Class<? extends java.nio.file.attribute.FileAttributeView>);
+ method public abstract boolean supportsFileAttributeView(String);
+ method public abstract String type();
}
public abstract class FileSystem implements java.io.Closeable {
ctor protected FileSystem();
- method public abstract java.lang.Iterable<java.nio.file.FileStore> getFileStores();
- method public abstract java.nio.file.Path getPath(java.lang.String, java.lang.String...);
- method public abstract java.nio.file.PathMatcher getPathMatcher(java.lang.String);
- method public abstract java.lang.Iterable<java.nio.file.Path> getRootDirectories();
- method public abstract java.lang.String getSeparator();
+ method public abstract Iterable<java.nio.file.FileStore> getFileStores();
+ method public abstract java.nio.file.Path getPath(String, java.lang.String...);
+ method public abstract java.nio.file.PathMatcher getPathMatcher(String);
+ method public abstract Iterable<java.nio.file.Path> getRootDirectories();
+ method public abstract String getSeparator();
method public abstract java.nio.file.attribute.UserPrincipalLookupService getUserPrincipalLookupService();
method public abstract boolean isOpen();
method public abstract boolean isReadOnly();
@@ -63039,54 +63129,50 @@
public class FileSystemAlreadyExistsException extends java.lang.RuntimeException {
ctor public FileSystemAlreadyExistsException();
- ctor public FileSystemAlreadyExistsException(java.lang.String);
+ ctor public FileSystemAlreadyExistsException(String);
}
public class FileSystemException extends java.io.IOException {
- ctor public FileSystemException(java.lang.String);
- ctor public FileSystemException(java.lang.String, java.lang.String, java.lang.String);
- method public java.lang.String getFile();
- method public java.lang.String getOtherFile();
- method public java.lang.String getReason();
+ ctor public FileSystemException(String);
+ ctor public FileSystemException(String, String, String);
+ method public String getFile();
+ method public String getOtherFile();
+ method public String getReason();
}
public class FileSystemLoopException extends java.nio.file.FileSystemException {
- ctor public FileSystemLoopException(java.lang.String);
+ ctor public FileSystemLoopException(String);
}
public class FileSystemNotFoundException extends java.lang.RuntimeException {
ctor public FileSystemNotFoundException();
- ctor public FileSystemNotFoundException(java.lang.String);
+ ctor public FileSystemNotFoundException(String);
}
public final class FileSystems {
method public static java.nio.file.FileSystem getDefault();
method public static java.nio.file.FileSystem getFileSystem(java.net.URI);
- method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String, ?>) throws java.io.IOException;
- method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String, ?>, java.lang.ClassLoader) throws java.io.IOException;
- method public static java.nio.file.FileSystem newFileSystem(java.nio.file.Path, java.lang.ClassLoader) throws java.io.IOException;
+ method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>) throws java.io.IOException;
+ method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>, ClassLoader) throws java.io.IOException;
+ method public static java.nio.file.FileSystem newFileSystem(java.nio.file.Path, ClassLoader) throws java.io.IOException;
}
- public final class FileVisitOption extends java.lang.Enum {
- method public static java.nio.file.FileVisitOption valueOf(java.lang.String);
- method public static final java.nio.file.FileVisitOption[] values();
+ public enum FileVisitOption {
enum_constant public static final java.nio.file.FileVisitOption FOLLOW_LINKS;
}
- public final class FileVisitResult extends java.lang.Enum {
- method public static java.nio.file.FileVisitResult valueOf(java.lang.String);
- method public static final java.nio.file.FileVisitResult[] values();
+ public enum FileVisitResult {
enum_constant public static final java.nio.file.FileVisitResult CONTINUE;
enum_constant public static final java.nio.file.FileVisitResult SKIP_SIBLINGS;
enum_constant public static final java.nio.file.FileVisitResult SKIP_SUBTREE;
enum_constant public static final java.nio.file.FileVisitResult TERMINATE;
}
- public abstract interface FileVisitor<T> {
- method public abstract java.nio.file.FileVisitResult postVisitDirectory(T, java.io.IOException) throws java.io.IOException;
- method public abstract java.nio.file.FileVisitResult preVisitDirectory(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
- method public abstract java.nio.file.FileVisitResult visitFile(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
- method public abstract java.nio.file.FileVisitResult visitFileFailed(T, java.io.IOException) throws java.io.IOException;
+ public interface FileVisitor<T> {
+ method public java.nio.file.FileVisitResult postVisitDirectory(T, java.io.IOException) throws java.io.IOException;
+ method public java.nio.file.FileVisitResult preVisitDirectory(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
+ method public java.nio.file.FileVisitResult visitFile(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
+ method public java.nio.file.FileVisitResult visitFileFailed(T, java.io.IOException) throws java.io.IOException;
}
public final class Files {
@@ -63098,16 +63184,16 @@
method public static java.nio.file.Path createFile(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
method public static java.nio.file.Path createLink(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
method public static java.nio.file.Path createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
- method public static java.nio.file.Path createTempDirectory(java.nio.file.Path, java.lang.String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
- method public static java.nio.file.Path createTempDirectory(java.lang.String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
- method public static java.nio.file.Path createTempFile(java.nio.file.Path, java.lang.String, java.lang.String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
- method public static java.nio.file.Path createTempFile(java.lang.String, java.lang.String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+ method public static java.nio.file.Path createTempDirectory(java.nio.file.Path, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+ method public static java.nio.file.Path createTempDirectory(String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+ method public static java.nio.file.Path createTempFile(java.nio.file.Path, String, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+ method public static java.nio.file.Path createTempFile(String, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
method public static void delete(java.nio.file.Path) throws java.io.IOException;
method public static boolean deleteIfExists(java.nio.file.Path) throws java.io.IOException;
method public static boolean exists(java.nio.file.Path, java.nio.file.LinkOption...);
- method public static java.util.stream.Stream<java.nio.file.Path> find(java.nio.file.Path, int, java.util.function.BiPredicate<java.nio.file.Path, java.nio.file.attribute.BasicFileAttributes>, java.nio.file.FileVisitOption...) throws java.io.IOException;
- method public static java.lang.Object getAttribute(java.nio.file.Path, java.lang.String, java.nio.file.LinkOption...) throws java.io.IOException;
- method public static <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, java.lang.Class<V>, java.nio.file.LinkOption...);
+ method public static java.util.stream.Stream<java.nio.file.Path> find(java.nio.file.Path, int, java.util.function.BiPredicate<java.nio.file.Path,java.nio.file.attribute.BasicFileAttributes>, java.nio.file.FileVisitOption...) throws java.io.IOException;
+ method public static Object getAttribute(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
+ method public static <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, Class<V>, java.nio.file.LinkOption...);
method public static java.nio.file.FileStore getFileStore(java.nio.file.Path) throws java.io.IOException;
method public static java.nio.file.attribute.FileTime getLastModifiedTime(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
method public static java.nio.file.attribute.UserPrincipal getOwner(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
@@ -63131,19 +63217,19 @@
method public static java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
method public static java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path) throws java.io.IOException;
- method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.lang.String) throws java.io.IOException;
+ method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, String) throws java.io.IOException;
method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter<? super java.nio.file.Path>) throws java.io.IOException;
method public static java.io.InputStream newInputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
method public static java.io.OutputStream newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
method public static boolean notExists(java.nio.file.Path, java.nio.file.LinkOption...);
- method public static java.lang.String probeContentType(java.nio.file.Path) throws java.io.IOException;
+ method public static String probeContentType(java.nio.file.Path) throws java.io.IOException;
method public static byte[] readAllBytes(java.nio.file.Path) throws java.io.IOException;
method public static java.util.List<java.lang.String> readAllLines(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
method public static java.util.List<java.lang.String> readAllLines(java.nio.file.Path) throws java.io.IOException;
- method public static <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, java.lang.Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
- method public static java.util.Map<java.lang.String, java.lang.Object> readAttributes(java.nio.file.Path, java.lang.String, java.nio.file.LinkOption...) throws java.io.IOException;
+ method public static <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
+ method public static java.util.Map<java.lang.String,java.lang.Object> readAttributes(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
method public static java.nio.file.Path readSymbolicLink(java.nio.file.Path) throws java.io.IOException;
- method public static java.nio.file.Path setAttribute(java.nio.file.Path, java.lang.String, java.lang.Object, java.nio.file.LinkOption...) throws java.io.IOException;
+ method public static java.nio.file.Path setAttribute(java.nio.file.Path, String, Object, java.nio.file.LinkOption...) throws java.io.IOException;
method public static java.nio.file.Path setLastModifiedTime(java.nio.file.Path, java.nio.file.attribute.FileTime) throws java.io.IOException;
method public static java.nio.file.Path setOwner(java.nio.file.Path, java.nio.file.attribute.UserPrincipal) throws java.io.IOException;
method public static java.nio.file.Path setPosixFilePermissions(java.nio.file.Path, java.util.Set<java.nio.file.attribute.PosixFilePermission>) throws java.io.IOException;
@@ -63153,110 +63239,108 @@
method public static java.nio.file.Path walkFileTree(java.nio.file.Path, java.util.Set<java.nio.file.FileVisitOption>, int, java.nio.file.FileVisitor<? super java.nio.file.Path>) throws java.io.IOException;
method public static java.nio.file.Path walkFileTree(java.nio.file.Path, java.nio.file.FileVisitor<? super java.nio.file.Path>) throws java.io.IOException;
method public static java.nio.file.Path write(java.nio.file.Path, byte[], java.nio.file.OpenOption...) throws java.io.IOException;
- method public static java.nio.file.Path write(java.nio.file.Path, java.lang.Iterable<? extends java.lang.CharSequence>, java.nio.charset.Charset, java.nio.file.OpenOption...) throws java.io.IOException;
- method public static java.nio.file.Path write(java.nio.file.Path, java.lang.Iterable<? extends java.lang.CharSequence>, java.nio.file.OpenOption...) throws java.io.IOException;
+ method public static java.nio.file.Path write(java.nio.file.Path, Iterable<? extends java.lang.CharSequence>, java.nio.charset.Charset, java.nio.file.OpenOption...) throws java.io.IOException;
+ method public static java.nio.file.Path write(java.nio.file.Path, Iterable<? extends java.lang.CharSequence>, java.nio.file.OpenOption...) throws java.io.IOException;
}
public class InvalidPathException extends java.lang.IllegalArgumentException {
- ctor public InvalidPathException(java.lang.String, java.lang.String, int);
- ctor public InvalidPathException(java.lang.String, java.lang.String);
+ ctor public InvalidPathException(String, String, int);
+ ctor public InvalidPathException(String, String);
method public int getIndex();
- method public java.lang.String getInput();
- method public java.lang.String getReason();
+ method public String getInput();
+ method public String getReason();
}
- public final class LinkOption extends java.lang.Enum implements java.nio.file.CopyOption java.nio.file.OpenOption {
- method public static java.nio.file.LinkOption valueOf(java.lang.String);
- method public static final java.nio.file.LinkOption[] values();
+ public enum LinkOption implements java.nio.file.CopyOption java.nio.file.OpenOption {
enum_constant public static final java.nio.file.LinkOption NOFOLLOW_LINKS;
}
public final class LinkPermission extends java.security.BasicPermission {
- ctor public LinkPermission(java.lang.String);
- ctor public LinkPermission(java.lang.String, java.lang.String);
+ ctor public LinkPermission(String);
+ ctor public LinkPermission(String, String);
}
public class NoSuchFileException extends java.nio.file.FileSystemException {
- ctor public NoSuchFileException(java.lang.String);
- ctor public NoSuchFileException(java.lang.String, java.lang.String, java.lang.String);
+ ctor public NoSuchFileException(String);
+ ctor public NoSuchFileException(String, String, String);
}
public class NotDirectoryException extends java.nio.file.FileSystemException {
- ctor public NotDirectoryException(java.lang.String);
+ ctor public NotDirectoryException(String);
}
public class NotLinkException extends java.nio.file.FileSystemException {
- ctor public NotLinkException(java.lang.String);
- ctor public NotLinkException(java.lang.String, java.lang.String, java.lang.String);
+ ctor public NotLinkException(String);
+ ctor public NotLinkException(String, String, String);
}
- public abstract interface OpenOption {
+ public interface OpenOption {
}
- public abstract interface Path implements java.lang.Comparable java.lang.Iterable java.nio.file.Watchable {
- method public abstract int compareTo(java.nio.file.Path);
- method public abstract boolean endsWith(java.nio.file.Path);
- method public abstract boolean endsWith(java.lang.String);
- method public abstract boolean equals(java.lang.Object);
- method public abstract java.nio.file.Path getFileName();
- method public abstract java.nio.file.FileSystem getFileSystem();
- method public abstract java.nio.file.Path getName(int);
- method public abstract int getNameCount();
- method public abstract java.nio.file.Path getParent();
- method public abstract java.nio.file.Path getRoot();
- method public abstract int hashCode();
- method public abstract boolean isAbsolute();
- method public abstract java.util.Iterator<java.nio.file.Path> iterator();
- method public abstract java.nio.file.Path normalize();
- method public abstract java.nio.file.Path relativize(java.nio.file.Path);
- method public abstract java.nio.file.Path resolve(java.nio.file.Path);
- method public abstract java.nio.file.Path resolve(java.lang.String);
- method public abstract java.nio.file.Path resolveSibling(java.nio.file.Path);
- method public abstract java.nio.file.Path resolveSibling(java.lang.String);
- method public abstract boolean startsWith(java.nio.file.Path);
- method public abstract boolean startsWith(java.lang.String);
- method public abstract java.nio.file.Path subpath(int, int);
- method public abstract java.nio.file.Path toAbsolutePath();
- method public abstract java.io.File toFile();
- method public abstract java.nio.file.Path toRealPath(java.nio.file.LinkOption...) throws java.io.IOException;
- method public abstract java.lang.String toString();
- method public abstract java.net.URI toUri();
+ public interface Path extends java.lang.Comparable<java.nio.file.Path> java.lang.Iterable<java.nio.file.Path> java.nio.file.Watchable {
+ method public int compareTo(java.nio.file.Path);
+ method public boolean endsWith(java.nio.file.Path);
+ method public boolean endsWith(String);
+ method public boolean equals(Object);
+ method public java.nio.file.Path getFileName();
+ method public java.nio.file.FileSystem getFileSystem();
+ method public java.nio.file.Path getName(int);
+ method public int getNameCount();
+ method public java.nio.file.Path getParent();
+ method public java.nio.file.Path getRoot();
+ method public int hashCode();
+ method public boolean isAbsolute();
+ method public java.util.Iterator<java.nio.file.Path> iterator();
+ method public java.nio.file.Path normalize();
+ method public java.nio.file.Path relativize(java.nio.file.Path);
+ method public java.nio.file.Path resolve(java.nio.file.Path);
+ method public java.nio.file.Path resolve(String);
+ method public java.nio.file.Path resolveSibling(java.nio.file.Path);
+ method public java.nio.file.Path resolveSibling(String);
+ method public boolean startsWith(java.nio.file.Path);
+ method public boolean startsWith(String);
+ method public java.nio.file.Path subpath(int, int);
+ method public java.nio.file.Path toAbsolutePath();
+ method public java.io.File toFile();
+ method public java.nio.file.Path toRealPath(java.nio.file.LinkOption...) throws java.io.IOException;
+ method public String toString();
+ method public java.net.URI toUri();
}
- public abstract interface PathMatcher {
- method public abstract boolean matches(java.nio.file.Path);
+ @java.lang.FunctionalInterface public interface PathMatcher {
+ method public boolean matches(java.nio.file.Path);
}
public final class Paths {
- method public static java.nio.file.Path get(java.lang.String, java.lang.String...);
+ method public static java.nio.file.Path get(String, java.lang.String...);
method public static java.nio.file.Path get(java.net.URI);
}
public class ProviderMismatchException extends java.lang.IllegalArgumentException {
ctor public ProviderMismatchException();
- ctor public ProviderMismatchException(java.lang.String);
+ ctor public ProviderMismatchException(String);
}
public class ProviderNotFoundException extends java.lang.RuntimeException {
ctor public ProviderNotFoundException();
- ctor public ProviderNotFoundException(java.lang.String);
+ ctor public ProviderNotFoundException(String);
}
public class ReadOnlyFileSystemException extends java.lang.UnsupportedOperationException {
ctor public ReadOnlyFileSystemException();
}
- public abstract interface SecureDirectoryStream<T> implements java.nio.file.DirectoryStream {
- method public abstract void deleteDirectory(T) throws java.io.IOException;
- method public abstract void deleteFile(T) throws java.io.IOException;
- method public abstract <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.lang.Class<V>);
- method public abstract <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(T, java.lang.Class<V>, java.nio.file.LinkOption...);
- method public abstract void move(T, java.nio.file.SecureDirectoryStream<T>, T) throws java.io.IOException;
- method public abstract java.nio.channels.SeekableByteChannel newByteChannel(T, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
- method public abstract java.nio.file.SecureDirectoryStream<T> newDirectoryStream(T, java.nio.file.LinkOption...) throws java.io.IOException;
+ public interface SecureDirectoryStream<T> extends java.nio.file.DirectoryStream<T> {
+ method public void deleteDirectory(T) throws java.io.IOException;
+ method public void deleteFile(T) throws java.io.IOException;
+ method public <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(Class<V>);
+ method public <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(T, Class<V>, java.nio.file.LinkOption...);
+ method public void move(T, java.nio.file.SecureDirectoryStream<T>, T) throws java.io.IOException;
+ method public java.nio.channels.SeekableByteChannel newByteChannel(T, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+ method public java.nio.file.SecureDirectoryStream<T> newDirectoryStream(T, java.nio.file.LinkOption...) throws java.io.IOException;
}
- public class SimpleFileVisitor<T> implements java.nio.file.FileVisitor {
+ public class SimpleFileVisitor<T> implements java.nio.file.FileVisitor<T> {
ctor protected SimpleFileVisitor();
method public java.nio.file.FileVisitResult postVisitDirectory(T, java.io.IOException) throws java.io.IOException;
method public java.nio.file.FileVisitResult preVisitDirectory(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
@@ -63264,17 +63348,13 @@
method public java.nio.file.FileVisitResult visitFileFailed(T, java.io.IOException) throws java.io.IOException;
}
- public final class StandardCopyOption extends java.lang.Enum implements java.nio.file.CopyOption {
- method public static java.nio.file.StandardCopyOption valueOf(java.lang.String);
- method public static final java.nio.file.StandardCopyOption[] values();
+ public enum StandardCopyOption implements java.nio.file.CopyOption {
enum_constant public static final java.nio.file.StandardCopyOption ATOMIC_MOVE;
enum_constant public static final java.nio.file.StandardCopyOption COPY_ATTRIBUTES;
enum_constant public static final java.nio.file.StandardCopyOption REPLACE_EXISTING;
}
- public final class StandardOpenOption extends java.lang.Enum implements java.nio.file.OpenOption {
- method public static java.nio.file.StandardOpenOption valueOf(java.lang.String);
- method public static final java.nio.file.StandardOpenOption[] values();
+ public enum StandardOpenOption implements java.nio.file.OpenOption {
enum_constant public static final java.nio.file.StandardOpenOption APPEND;
enum_constant public static final java.nio.file.StandardOpenOption CREATE;
enum_constant public static final java.nio.file.StandardOpenOption CREATE_NEW;
@@ -63294,38 +63374,38 @@
field public static final java.nio.file.WatchEvent.Kind<java.lang.Object> OVERFLOW;
}
- public abstract interface WatchEvent<T> {
- method public abstract T context();
- method public abstract int count();
- method public abstract java.nio.file.WatchEvent.Kind<T> kind();
+ public interface WatchEvent<T> {
+ method public T context();
+ method public int count();
+ method public java.nio.file.WatchEvent.Kind<T> kind();
}
- public static abstract interface WatchEvent.Kind<T> {
- method public abstract java.lang.String name();
- method public abstract java.lang.Class<T> type();
+ public static interface WatchEvent.Kind<T> {
+ method public String name();
+ method public Class<T> type();
}
- public static abstract interface WatchEvent.Modifier {
- method public abstract java.lang.String name();
+ public static interface WatchEvent.Modifier {
+ method public String name();
}
- public abstract interface WatchKey {
- method public abstract void cancel();
- method public abstract boolean isValid();
- method public abstract java.util.List<java.nio.file.WatchEvent<?>> pollEvents();
- method public abstract boolean reset();
- method public abstract java.nio.file.Watchable watchable();
+ public interface WatchKey {
+ method public void cancel();
+ method public boolean isValid();
+ method public java.util.List<java.nio.file.WatchEvent<?>> pollEvents();
+ method public boolean reset();
+ method public java.nio.file.Watchable watchable();
}
- public abstract interface WatchService implements java.io.Closeable {
- method public abstract java.nio.file.WatchKey poll();
- method public abstract java.nio.file.WatchKey poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract java.nio.file.WatchKey take() throws java.lang.InterruptedException;
+ public interface WatchService extends java.io.Closeable {
+ method public java.nio.file.WatchKey poll();
+ method public java.nio.file.WatchKey poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public java.nio.file.WatchKey take() throws java.lang.InterruptedException;
}
- public abstract interface Watchable {
- method public abstract java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>[], java.nio.file.WatchEvent.Modifier...) throws java.io.IOException;
- method public abstract java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>...) throws java.io.IOException;
+ public interface Watchable {
+ method public java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>[], java.nio.file.WatchEvent.Modifier...) throws java.io.IOException;
+ method public java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>...) throws java.io.IOException;
}
}
@@ -63351,18 +63431,14 @@
method public java.nio.file.attribute.AclEntry.Builder setType(java.nio.file.attribute.AclEntryType);
}
- public final class AclEntryFlag extends java.lang.Enum {
- method public static java.nio.file.attribute.AclEntryFlag valueOf(java.lang.String);
- method public static final java.nio.file.attribute.AclEntryFlag[] values();
+ public enum AclEntryFlag {
enum_constant public static final java.nio.file.attribute.AclEntryFlag DIRECTORY_INHERIT;
enum_constant public static final java.nio.file.attribute.AclEntryFlag FILE_INHERIT;
enum_constant public static final java.nio.file.attribute.AclEntryFlag INHERIT_ONLY;
enum_constant public static final java.nio.file.attribute.AclEntryFlag NO_PROPAGATE_INHERIT;
}
- public final class AclEntryPermission extends java.lang.Enum {
- method public static java.nio.file.attribute.AclEntryPermission valueOf(java.lang.String);
- method public static final java.nio.file.attribute.AclEntryPermission[] values();
+ public enum AclEntryPermission {
enum_constant public static final java.nio.file.attribute.AclEntryPermission APPEND_DATA;
enum_constant public static final java.nio.file.attribute.AclEntryPermission DELETE;
enum_constant public static final java.nio.file.attribute.AclEntryPermission DELETE_CHILD;
@@ -63382,73 +63458,71 @@
field public static final java.nio.file.attribute.AclEntryPermission LIST_DIRECTORY;
}
- public final class AclEntryType extends java.lang.Enum {
- method public static java.nio.file.attribute.AclEntryType valueOf(java.lang.String);
- method public static final java.nio.file.attribute.AclEntryType[] values();
+ public enum AclEntryType {
enum_constant public static final java.nio.file.attribute.AclEntryType ALARM;
enum_constant public static final java.nio.file.attribute.AclEntryType ALLOW;
enum_constant public static final java.nio.file.attribute.AclEntryType AUDIT;
enum_constant public static final java.nio.file.attribute.AclEntryType DENY;
}
- public abstract interface AclFileAttributeView implements java.nio.file.attribute.FileOwnerAttributeView {
- method public abstract java.util.List<java.nio.file.attribute.AclEntry> getAcl() throws java.io.IOException;
- method public abstract void setAcl(java.util.List<java.nio.file.attribute.AclEntry>) throws java.io.IOException;
+ public interface AclFileAttributeView extends java.nio.file.attribute.FileOwnerAttributeView {
+ method public java.util.List<java.nio.file.attribute.AclEntry> getAcl() throws java.io.IOException;
+ method public void setAcl(java.util.List<java.nio.file.attribute.AclEntry>) throws java.io.IOException;
}
- public abstract interface AttributeView {
- method public abstract java.lang.String name();
+ public interface AttributeView {
+ method public String name();
}
- public abstract interface BasicFileAttributeView implements java.nio.file.attribute.FileAttributeView {
- method public abstract java.nio.file.attribute.BasicFileAttributes readAttributes() throws java.io.IOException;
- method public abstract void setTimes(java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime) throws java.io.IOException;
+ public interface BasicFileAttributeView extends java.nio.file.attribute.FileAttributeView {
+ method public java.nio.file.attribute.BasicFileAttributes readAttributes() throws java.io.IOException;
+ method public void setTimes(java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime) throws java.io.IOException;
}
- public abstract interface BasicFileAttributes {
- method public abstract java.nio.file.attribute.FileTime creationTime();
- method public abstract java.lang.Object fileKey();
- method public abstract boolean isDirectory();
- method public abstract boolean isOther();
- method public abstract boolean isRegularFile();
- method public abstract boolean isSymbolicLink();
- method public abstract java.nio.file.attribute.FileTime lastAccessTime();
- method public abstract java.nio.file.attribute.FileTime lastModifiedTime();
- method public abstract long size();
+ public interface BasicFileAttributes {
+ method public java.nio.file.attribute.FileTime creationTime();
+ method public Object fileKey();
+ method public boolean isDirectory();
+ method public boolean isOther();
+ method public boolean isRegularFile();
+ method public boolean isSymbolicLink();
+ method public java.nio.file.attribute.FileTime lastAccessTime();
+ method public java.nio.file.attribute.FileTime lastModifiedTime();
+ method public long size();
}
- public abstract interface DosFileAttributeView implements java.nio.file.attribute.BasicFileAttributeView {
- method public abstract java.nio.file.attribute.DosFileAttributes readAttributes() throws java.io.IOException;
- method public abstract void setArchive(boolean) throws java.io.IOException;
- method public abstract void setHidden(boolean) throws java.io.IOException;
- method public abstract void setReadOnly(boolean) throws java.io.IOException;
- method public abstract void setSystem(boolean) throws java.io.IOException;
+ public interface DosFileAttributeView extends java.nio.file.attribute.BasicFileAttributeView {
+ method public java.nio.file.attribute.DosFileAttributes readAttributes() throws java.io.IOException;
+ method public void setArchive(boolean) throws java.io.IOException;
+ method public void setHidden(boolean) throws java.io.IOException;
+ method public void setReadOnly(boolean) throws java.io.IOException;
+ method public void setSystem(boolean) throws java.io.IOException;
}
- public abstract interface DosFileAttributes implements java.nio.file.attribute.BasicFileAttributes {
- method public abstract boolean isArchive();
- method public abstract boolean isHidden();
- method public abstract boolean isReadOnly();
- method public abstract boolean isSystem();
+ public interface DosFileAttributes extends java.nio.file.attribute.BasicFileAttributes {
+ method public boolean isArchive();
+ method public boolean isHidden();
+ method public boolean isReadOnly();
+ method public boolean isSystem();
}
- public abstract interface FileAttribute<T> {
- method public abstract java.lang.String name();
- method public abstract T value();
+ public interface FileAttribute<T> {
+ method public String name();
+ method public T value();
}
- public abstract interface FileAttributeView implements java.nio.file.attribute.AttributeView {
+ public interface FileAttributeView extends java.nio.file.attribute.AttributeView {
}
- public abstract interface FileOwnerAttributeView implements java.nio.file.attribute.FileAttributeView {
- method public abstract java.nio.file.attribute.UserPrincipal getOwner() throws java.io.IOException;
- method public abstract void setOwner(java.nio.file.attribute.UserPrincipal) throws java.io.IOException;
+ public interface FileOwnerAttributeView extends java.nio.file.attribute.FileAttributeView {
+ method public java.nio.file.attribute.UserPrincipal getOwner() throws java.io.IOException;
+ method public void setOwner(java.nio.file.attribute.UserPrincipal) throws java.io.IOException;
}
- public abstract interface FileStoreAttributeView implements java.nio.file.attribute.AttributeView {
+ public interface FileStoreAttributeView extends java.nio.file.attribute.AttributeView {
}
- public final class FileTime implements java.lang.Comparable {
+ public final class FileTime implements java.lang.Comparable<java.nio.file.attribute.FileTime> {
method public int compareTo(java.nio.file.attribute.FileTime);
method public static java.nio.file.attribute.FileTime from(long, java.util.concurrent.TimeUnit);
method public static java.nio.file.attribute.FileTime from(java.time.Instant);
@@ -63458,24 +63532,22 @@
method public long toMillis();
}
- public abstract interface GroupPrincipal implements java.nio.file.attribute.UserPrincipal {
+ public interface GroupPrincipal extends java.nio.file.attribute.UserPrincipal {
}
- public abstract interface PosixFileAttributeView implements java.nio.file.attribute.BasicFileAttributeView java.nio.file.attribute.FileOwnerAttributeView {
- method public abstract java.nio.file.attribute.PosixFileAttributes readAttributes() throws java.io.IOException;
- method public abstract void setGroup(java.nio.file.attribute.GroupPrincipal) throws java.io.IOException;
- method public abstract void setPermissions(java.util.Set<java.nio.file.attribute.PosixFilePermission>) throws java.io.IOException;
+ public interface PosixFileAttributeView extends java.nio.file.attribute.BasicFileAttributeView java.nio.file.attribute.FileOwnerAttributeView {
+ method public java.nio.file.attribute.PosixFileAttributes readAttributes() throws java.io.IOException;
+ method public void setGroup(java.nio.file.attribute.GroupPrincipal) throws java.io.IOException;
+ method public void setPermissions(java.util.Set<java.nio.file.attribute.PosixFilePermission>) throws java.io.IOException;
}
- public abstract interface PosixFileAttributes implements java.nio.file.attribute.BasicFileAttributes {
- method public abstract java.nio.file.attribute.GroupPrincipal group();
- method public abstract java.nio.file.attribute.UserPrincipal owner();
- method public abstract java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions();
+ public interface PosixFileAttributes extends java.nio.file.attribute.BasicFileAttributes {
+ method public java.nio.file.attribute.GroupPrincipal group();
+ method public java.nio.file.attribute.UserPrincipal owner();
+ method public java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions();
}
- public final class PosixFilePermission extends java.lang.Enum {
- method public static java.nio.file.attribute.PosixFilePermission valueOf(java.lang.String);
- method public static final java.nio.file.attribute.PosixFilePermission[] values();
+ public enum PosixFilePermission {
enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_EXECUTE;
enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_READ;
enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_WRITE;
@@ -63489,30 +63561,30 @@
public final class PosixFilePermissions {
method public static java.nio.file.attribute.FileAttribute<java.util.Set<java.nio.file.attribute.PosixFilePermission>> asFileAttribute(java.util.Set<java.nio.file.attribute.PosixFilePermission>);
- method public static java.util.Set<java.nio.file.attribute.PosixFilePermission> fromString(java.lang.String);
- method public static java.lang.String toString(java.util.Set<java.nio.file.attribute.PosixFilePermission>);
+ method public static java.util.Set<java.nio.file.attribute.PosixFilePermission> fromString(String);
+ method public static String toString(java.util.Set<java.nio.file.attribute.PosixFilePermission>);
}
- public abstract interface UserDefinedFileAttributeView implements java.nio.file.attribute.FileAttributeView {
- method public abstract void delete(java.lang.String) throws java.io.IOException;
- method public abstract java.util.List<java.lang.String> list() throws java.io.IOException;
- method public abstract int read(java.lang.String, java.nio.ByteBuffer) throws java.io.IOException;
- method public abstract int size(java.lang.String) throws java.io.IOException;
- method public abstract int write(java.lang.String, java.nio.ByteBuffer) throws java.io.IOException;
+ public interface UserDefinedFileAttributeView extends java.nio.file.attribute.FileAttributeView {
+ method public void delete(String) throws java.io.IOException;
+ method public java.util.List<java.lang.String> list() throws java.io.IOException;
+ method public int read(String, java.nio.ByteBuffer) throws java.io.IOException;
+ method public int size(String) throws java.io.IOException;
+ method public int write(String, java.nio.ByteBuffer) throws java.io.IOException;
}
- public abstract interface UserPrincipal implements java.security.Principal {
+ public interface UserPrincipal extends java.security.Principal {
}
public abstract class UserPrincipalLookupService {
ctor protected UserPrincipalLookupService();
- method public abstract java.nio.file.attribute.GroupPrincipal lookupPrincipalByGroupName(java.lang.String) throws java.io.IOException;
- method public abstract java.nio.file.attribute.UserPrincipal lookupPrincipalByName(java.lang.String) throws java.io.IOException;
+ method public abstract java.nio.file.attribute.GroupPrincipal lookupPrincipalByGroupName(String) throws java.io.IOException;
+ method public abstract java.nio.file.attribute.UserPrincipal lookupPrincipalByName(String) throws java.io.IOException;
}
public class UserPrincipalNotFoundException extends java.io.IOException {
- ctor public UserPrincipalNotFoundException(java.lang.String);
- method public java.lang.String getName();
+ ctor public UserPrincipalNotFoundException(String);
+ method public String getName();
}
}
@@ -63528,11 +63600,11 @@
method public void createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
method public abstract void delete(java.nio.file.Path) throws java.io.IOException;
method public boolean deleteIfExists(java.nio.file.Path) throws java.io.IOException;
- method public abstract <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, java.lang.Class<V>, java.nio.file.LinkOption...);
+ method public abstract <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, Class<V>, java.nio.file.LinkOption...);
method public abstract java.nio.file.FileStore getFileStore(java.nio.file.Path) throws java.io.IOException;
method public abstract java.nio.file.FileSystem getFileSystem(java.net.URI);
method public abstract java.nio.file.Path getPath(java.net.URI);
- method public abstract java.lang.String getScheme();
+ method public abstract String getScheme();
method public static java.util.List<java.nio.file.spi.FileSystemProvider> installedProviders();
method public abstract boolean isHidden(java.nio.file.Path) throws java.io.IOException;
method public abstract boolean isSameFile(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
@@ -63541,19 +63613,19 @@
method public abstract java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
method public abstract java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter<? super java.nio.file.Path>) throws java.io.IOException;
method public java.nio.channels.FileChannel newFileChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
- method public abstract java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String, ?>) throws java.io.IOException;
- method public java.nio.file.FileSystem newFileSystem(java.nio.file.Path, java.util.Map<java.lang.String, ?>) throws java.io.IOException;
+ method public abstract java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>) throws java.io.IOException;
+ method public java.nio.file.FileSystem newFileSystem(java.nio.file.Path, java.util.Map<java.lang.String,?>) throws java.io.IOException;
method public java.io.InputStream newInputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
method public java.io.OutputStream newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
- method public abstract <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, java.lang.Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
- method public abstract java.util.Map<java.lang.String, java.lang.Object> readAttributes(java.nio.file.Path, java.lang.String, java.nio.file.LinkOption...) throws java.io.IOException;
+ method public abstract <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
+ method public abstract java.util.Map<java.lang.String,java.lang.Object> readAttributes(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
method public java.nio.file.Path readSymbolicLink(java.nio.file.Path) throws java.io.IOException;
- method public abstract void setAttribute(java.nio.file.Path, java.lang.String, java.lang.Object, java.nio.file.LinkOption...) throws java.io.IOException;
+ method public abstract void setAttribute(java.nio.file.Path, String, Object, java.nio.file.LinkOption...) throws java.io.IOException;
}
public abstract class FileTypeDetector {
ctor protected FileTypeDetector();
- method public abstract java.lang.String probeContentType(java.nio.file.Path) throws java.io.IOException;
+ method public abstract String probeContentType(java.nio.file.Path) throws java.io.IOException;
}
}
@@ -63568,8 +63640,8 @@
}
public class AccessControlException extends java.lang.SecurityException {
- ctor public AccessControlException(java.lang.String);
- ctor public AccessControlException(java.lang.String, java.security.Permission);
+ ctor public AccessControlException(String);
+ ctor public AccessControlException(String, java.security.Permission);
method public java.security.Permission getPermission();
}
@@ -63584,19 +63656,19 @@
method public static java.security.AccessControlContext getContext();
}
- public abstract interface AlgorithmConstraints {
- method public abstract boolean permits(java.util.Set<java.security.CryptoPrimitive>, java.lang.String, java.security.AlgorithmParameters);
- method public abstract boolean permits(java.util.Set<java.security.CryptoPrimitive>, java.security.Key);
- method public abstract boolean permits(java.util.Set<java.security.CryptoPrimitive>, java.lang.String, java.security.Key, java.security.AlgorithmParameters);
+ public interface AlgorithmConstraints {
+ method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, String, java.security.AlgorithmParameters);
+ method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, java.security.Key);
+ method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, String, java.security.Key, java.security.AlgorithmParameters);
}
public class AlgorithmParameterGenerator {
- ctor protected AlgorithmParameterGenerator(java.security.AlgorithmParameterGeneratorSpi, java.security.Provider, java.lang.String);
+ ctor protected AlgorithmParameterGenerator(java.security.AlgorithmParameterGeneratorSpi, java.security.Provider, String);
method public final java.security.AlgorithmParameters generateParameters();
- method public final java.lang.String getAlgorithm();
- method public static java.security.AlgorithmParameterGenerator getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static java.security.AlgorithmParameterGenerator getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.AlgorithmParameterGenerator getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final String getAlgorithm();
+ method public static java.security.AlgorithmParameterGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.AlgorithmParameterGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.AlgorithmParameterGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
method public final void init(int);
method public final void init(int, java.security.SecureRandom);
@@ -63612,61 +63684,61 @@
}
public class AlgorithmParameters {
- ctor protected AlgorithmParameters(java.security.AlgorithmParametersSpi, java.security.Provider, java.lang.String);
- method public final java.lang.String getAlgorithm();
+ ctor protected AlgorithmParameters(java.security.AlgorithmParametersSpi, java.security.Provider, String);
+ method public final String getAlgorithm();
method public final byte[] getEncoded() throws java.io.IOException;
- method public final byte[] getEncoded(java.lang.String) throws java.io.IOException;
- method public static java.security.AlgorithmParameters getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static java.security.AlgorithmParameters getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.AlgorithmParameters getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
- method public final <T extends java.security.spec.AlgorithmParameterSpec> T getParameterSpec(java.lang.Class<T>) throws java.security.spec.InvalidParameterSpecException;
+ method public final byte[] getEncoded(String) throws java.io.IOException;
+ method public static java.security.AlgorithmParameters getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.AlgorithmParameters getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.AlgorithmParameters getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final <T extends java.security.spec.AlgorithmParameterSpec> T getParameterSpec(Class<T>) throws java.security.spec.InvalidParameterSpecException;
method public final java.security.Provider getProvider();
method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.spec.InvalidParameterSpecException;
method public final void init(byte[]) throws java.io.IOException;
- method public final void init(byte[], java.lang.String) throws java.io.IOException;
- method public final java.lang.String toString();
+ method public final void init(byte[], String) throws java.io.IOException;
+ method public final String toString();
}
public abstract class AlgorithmParametersSpi {
ctor public AlgorithmParametersSpi();
method protected abstract byte[] engineGetEncoded() throws java.io.IOException;
- method protected abstract byte[] engineGetEncoded(java.lang.String) throws java.io.IOException;
- method protected abstract <T extends java.security.spec.AlgorithmParameterSpec> T engineGetParameterSpec(java.lang.Class<T>) throws java.security.spec.InvalidParameterSpecException;
+ method protected abstract byte[] engineGetEncoded(String) throws java.io.IOException;
+ method protected abstract <T extends java.security.spec.AlgorithmParameterSpec> T engineGetParameterSpec(Class<T>) throws java.security.spec.InvalidParameterSpecException;
method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec) throws java.security.spec.InvalidParameterSpecException;
method protected abstract void engineInit(byte[]) throws java.io.IOException;
- method protected abstract void engineInit(byte[], java.lang.String) throws java.io.IOException;
- method protected abstract java.lang.String engineToString();
+ method protected abstract void engineInit(byte[], String) throws java.io.IOException;
+ method protected abstract String engineToString();
}
public final class AllPermission extends java.security.Permission {
ctor public AllPermission();
- ctor public AllPermission(java.lang.String, java.lang.String);
- method public java.lang.String getActions();
+ ctor public AllPermission(String, String);
+ method public String getActions();
method public boolean implies(java.security.Permission);
}
public abstract class AuthProvider extends java.security.Provider {
- ctor protected AuthProvider(java.lang.String, double, java.lang.String);
+ ctor protected AuthProvider(String, double, String);
method public abstract void login(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler) throws javax.security.auth.login.LoginException;
method public abstract void logout() throws javax.security.auth.login.LoginException;
method public abstract void setCallbackHandler(javax.security.auth.callback.CallbackHandler);
}
public abstract class BasicPermission extends java.security.Permission implements java.io.Serializable {
- ctor public BasicPermission(java.lang.String);
- ctor public BasicPermission(java.lang.String, java.lang.String);
- method public java.lang.String getActions();
+ ctor public BasicPermission(String);
+ ctor public BasicPermission(String, String);
+ method public String getActions();
method public boolean implies(java.security.Permission);
}
- public abstract deprecated interface Certificate {
- method public abstract void decode(java.io.InputStream) throws java.io.IOException, java.security.KeyException;
- method public abstract void encode(java.io.OutputStream) throws java.io.IOException, java.security.KeyException;
- method public abstract java.lang.String getFormat();
- method public abstract java.security.Principal getGuarantor();
- method public abstract java.security.Principal getPrincipal();
- method public abstract java.security.PublicKey getPublicKey();
- method public abstract java.lang.String toString(boolean);
+ @Deprecated public interface Certificate {
+ method @Deprecated public void decode(java.io.InputStream) throws java.io.IOException, java.security.KeyException;
+ method @Deprecated public void encode(java.io.OutputStream) throws java.io.IOException, java.security.KeyException;
+ method @Deprecated public String getFormat();
+ method @Deprecated public java.security.Principal getGuarantor();
+ method @Deprecated public java.security.Principal getPrincipal();
+ method @Deprecated public java.security.PublicKey getPublicKey();
+ method @Deprecated public String toString(boolean);
}
public final class CodeSigner implements java.io.Serializable {
@@ -63684,9 +63756,7 @@
method public boolean implies(java.security.CodeSource);
}
- public final class CryptoPrimitive extends java.lang.Enum {
- method public static java.security.CryptoPrimitive valueOf(java.lang.String);
- method public static final java.security.CryptoPrimitive[] values();
+ public enum CryptoPrimitive {
enum_constant public static final java.security.CryptoPrimitive BLOCK_CIPHER;
enum_constant public static final java.security.CryptoPrimitive KEY_AGREEMENT;
enum_constant public static final java.security.CryptoPrimitive KEY_ENCAPSULATION;
@@ -63701,9 +63771,9 @@
public class DigestException extends java.security.GeneralSecurityException {
ctor public DigestException();
- ctor public DigestException(java.lang.String);
- ctor public DigestException(java.lang.String, java.lang.Throwable);
- ctor public DigestException(java.lang.Throwable);
+ ctor public DigestException(String);
+ ctor public DigestException(String, Throwable);
+ ctor public DigestException(Throwable);
}
public class DigestInputStream extends java.io.FilterInputStream {
@@ -63722,108 +63792,108 @@
field protected java.security.MessageDigest digest;
}
- public abstract interface DomainCombiner {
- method public abstract java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
+ public interface DomainCombiner {
+ method public java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
}
public final class DomainLoadStoreParameter implements java.security.KeyStore.LoadStoreParameter {
- ctor public DomainLoadStoreParameter(java.net.URI, java.util.Map<java.lang.String, java.security.KeyStore.ProtectionParameter>);
+ ctor public DomainLoadStoreParameter(java.net.URI, java.util.Map<java.lang.String,java.security.KeyStore.ProtectionParameter>);
method public java.net.URI getConfiguration();
method public java.security.KeyStore.ProtectionParameter getProtectionParameter();
- method public java.util.Map<java.lang.String, java.security.KeyStore.ProtectionParameter> getProtectionParams();
+ method public java.util.Map<java.lang.String,java.security.KeyStore.ProtectionParameter> getProtectionParams();
}
public class GeneralSecurityException extends java.lang.Exception {
ctor public GeneralSecurityException();
- ctor public GeneralSecurityException(java.lang.String);
- ctor public GeneralSecurityException(java.lang.String, java.lang.Throwable);
- ctor public GeneralSecurityException(java.lang.Throwable);
+ ctor public GeneralSecurityException(String);
+ ctor public GeneralSecurityException(String, Throwable);
+ ctor public GeneralSecurityException(Throwable);
}
- public abstract interface Guard {
- method public abstract void checkGuard(java.lang.Object) throws java.lang.SecurityException;
+ public interface Guard {
+ method public void checkGuard(Object) throws java.lang.SecurityException;
}
public class GuardedObject implements java.io.Serializable {
- ctor public GuardedObject(java.lang.Object, java.security.Guard);
- method public java.lang.Object getObject() throws java.lang.SecurityException;
+ ctor public GuardedObject(Object, java.security.Guard);
+ method public Object getObject() throws java.lang.SecurityException;
}
- public abstract deprecated class Identity implements java.security.Principal java.io.Serializable {
- ctor protected Identity();
- ctor public Identity(java.lang.String, java.security.IdentityScope) throws java.security.KeyManagementException;
- ctor public Identity(java.lang.String);
- method public void addCertificate(java.security.Certificate) throws java.security.KeyManagementException;
- method public java.security.Certificate[] certificates();
- method public final boolean equals(java.lang.Object);
- method public java.lang.String getInfo();
- method public final java.lang.String getName();
- method public java.security.PublicKey getPublicKey();
- method public final java.security.IdentityScope getScope();
- method protected boolean identityEquals(java.security.Identity);
- method public void removeCertificate(java.security.Certificate) throws java.security.KeyManagementException;
- method public void setInfo(java.lang.String);
- method public void setPublicKey(java.security.PublicKey) throws java.security.KeyManagementException;
- method public java.lang.String toString(boolean);
+ @Deprecated public abstract class Identity implements java.security.Principal java.io.Serializable {
+ ctor @Deprecated protected Identity();
+ ctor @Deprecated public Identity(String, java.security.IdentityScope) throws java.security.KeyManagementException;
+ ctor @Deprecated public Identity(String);
+ method @Deprecated public void addCertificate(java.security.Certificate) throws java.security.KeyManagementException;
+ method @Deprecated public java.security.Certificate[] certificates();
+ method @Deprecated public final boolean equals(Object);
+ method @Deprecated public String getInfo();
+ method @Deprecated public final String getName();
+ method @Deprecated public java.security.PublicKey getPublicKey();
+ method @Deprecated public final java.security.IdentityScope getScope();
+ method @Deprecated protected boolean identityEquals(java.security.Identity);
+ method @Deprecated public void removeCertificate(java.security.Certificate) throws java.security.KeyManagementException;
+ method @Deprecated public void setInfo(String);
+ method @Deprecated public void setPublicKey(java.security.PublicKey) throws java.security.KeyManagementException;
+ method @Deprecated public String toString(boolean);
}
- public abstract deprecated class IdentityScope extends java.security.Identity {
- ctor protected IdentityScope();
- ctor public IdentityScope(java.lang.String);
- ctor public IdentityScope(java.lang.String, java.security.IdentityScope) throws java.security.KeyManagementException;
- method public abstract void addIdentity(java.security.Identity) throws java.security.KeyManagementException;
- method public abstract java.security.Identity getIdentity(java.lang.String);
- method public java.security.Identity getIdentity(java.security.Principal);
- method public abstract java.security.Identity getIdentity(java.security.PublicKey);
- method public static java.security.IdentityScope getSystemScope();
- method public abstract java.util.Enumeration<java.security.Identity> identities();
- method public abstract void removeIdentity(java.security.Identity) throws java.security.KeyManagementException;
- method protected static void setSystemScope(java.security.IdentityScope);
- method public abstract int size();
+ @Deprecated public abstract class IdentityScope extends java.security.Identity {
+ ctor @Deprecated protected IdentityScope();
+ ctor @Deprecated public IdentityScope(String);
+ ctor @Deprecated public IdentityScope(String, java.security.IdentityScope) throws java.security.KeyManagementException;
+ method @Deprecated public abstract void addIdentity(java.security.Identity) throws java.security.KeyManagementException;
+ method @Deprecated public abstract java.security.Identity getIdentity(String);
+ method @Deprecated public java.security.Identity getIdentity(java.security.Principal);
+ method @Deprecated public abstract java.security.Identity getIdentity(java.security.PublicKey);
+ method @Deprecated public static java.security.IdentityScope getSystemScope();
+ method @Deprecated public abstract java.util.Enumeration<java.security.Identity> identities();
+ method @Deprecated public abstract void removeIdentity(java.security.Identity) throws java.security.KeyManagementException;
+ method @Deprecated protected static void setSystemScope(java.security.IdentityScope);
+ method @Deprecated public abstract int size();
}
public class InvalidAlgorithmParameterException extends java.security.GeneralSecurityException {
ctor public InvalidAlgorithmParameterException();
- ctor public InvalidAlgorithmParameterException(java.lang.String);
- ctor public InvalidAlgorithmParameterException(java.lang.String, java.lang.Throwable);
- ctor public InvalidAlgorithmParameterException(java.lang.Throwable);
+ ctor public InvalidAlgorithmParameterException(String);
+ ctor public InvalidAlgorithmParameterException(String, Throwable);
+ ctor public InvalidAlgorithmParameterException(Throwable);
}
public class InvalidKeyException extends java.security.KeyException {
ctor public InvalidKeyException();
- ctor public InvalidKeyException(java.lang.String);
- ctor public InvalidKeyException(java.lang.String, java.lang.Throwable);
- ctor public InvalidKeyException(java.lang.Throwable);
+ ctor public InvalidKeyException(String);
+ ctor public InvalidKeyException(String, Throwable);
+ ctor public InvalidKeyException(Throwable);
}
public class InvalidParameterException extends java.lang.IllegalArgumentException {
ctor public InvalidParameterException();
- ctor public InvalidParameterException(java.lang.String);
+ ctor public InvalidParameterException(String);
}
- public abstract interface Key implements java.io.Serializable {
- method public abstract java.lang.String getAlgorithm();
- method public abstract byte[] getEncoded();
- method public abstract java.lang.String getFormat();
+ public interface Key extends java.io.Serializable {
+ method public String getAlgorithm();
+ method public byte[] getEncoded();
+ method public String getFormat();
field public static final long serialVersionUID = 6603384152749567654L; // 0x5ba3eee69414eea6L
}
public class KeyException extends java.security.GeneralSecurityException {
ctor public KeyException();
- ctor public KeyException(java.lang.String);
- ctor public KeyException(java.lang.String, java.lang.Throwable);
- ctor public KeyException(java.lang.Throwable);
+ ctor public KeyException(String);
+ ctor public KeyException(String, Throwable);
+ ctor public KeyException(Throwable);
}
public class KeyFactory {
- ctor protected KeyFactory(java.security.KeyFactorySpi, java.security.Provider, java.lang.String);
+ ctor protected KeyFactory(java.security.KeyFactorySpi, java.security.Provider, String);
method public final java.security.PrivateKey generatePrivate(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
method public final java.security.PublicKey generatePublic(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
- method public final java.lang.String getAlgorithm();
- method public static java.security.KeyFactory getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static java.security.KeyFactory getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.KeyFactory getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
- method public final <T extends java.security.spec.KeySpec> T getKeySpec(java.security.Key, java.lang.Class<T>) throws java.security.spec.InvalidKeySpecException;
+ method public final String getAlgorithm();
+ method public static java.security.KeyFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.KeyFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.KeyFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final <T extends java.security.spec.KeySpec> T getKeySpec(java.security.Key, Class<T>) throws java.security.spec.InvalidKeySpecException;
method public final java.security.Provider getProvider();
method public final java.security.Key translateKey(java.security.Key) throws java.security.InvalidKeyException;
}
@@ -63832,15 +63902,15 @@
ctor public KeyFactorySpi();
method protected abstract java.security.PrivateKey engineGeneratePrivate(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
method protected abstract java.security.PublicKey engineGeneratePublic(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
- method protected abstract <T extends java.security.spec.KeySpec> T engineGetKeySpec(java.security.Key, java.lang.Class<T>) throws java.security.spec.InvalidKeySpecException;
+ method protected abstract <T extends java.security.spec.KeySpec> T engineGetKeySpec(java.security.Key, Class<T>) throws java.security.spec.InvalidKeySpecException;
method protected abstract java.security.Key engineTranslateKey(java.security.Key) throws java.security.InvalidKeyException;
}
public class KeyManagementException extends java.security.KeyException {
ctor public KeyManagementException();
- ctor public KeyManagementException(java.lang.String);
- ctor public KeyManagementException(java.lang.String, java.lang.Throwable);
- ctor public KeyManagementException(java.lang.Throwable);
+ ctor public KeyManagementException(String);
+ ctor public KeyManagementException(String, Throwable);
+ ctor public KeyManagementException(Throwable);
}
public final class KeyPair implements java.io.Serializable {
@@ -63850,13 +63920,13 @@
}
public abstract class KeyPairGenerator extends java.security.KeyPairGeneratorSpi {
- ctor protected KeyPairGenerator(java.lang.String);
+ ctor protected KeyPairGenerator(String);
method public final java.security.KeyPair genKeyPair();
method public java.security.KeyPair generateKeyPair();
- method public java.lang.String getAlgorithm();
- method public static java.security.KeyPairGenerator getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static java.security.KeyPairGenerator getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.KeyPairGenerator getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public String getAlgorithm();
+ method public static java.security.KeyPairGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.KeyPairGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.KeyPairGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
method public void initialize(int);
method public void initialize(int, java.security.SecureRandom);
@@ -63871,56 +63941,54 @@
}
public class KeyRep implements java.io.Serializable {
- ctor public KeyRep(java.security.KeyRep.Type, java.lang.String, java.lang.String, byte[]);
- method protected java.lang.Object readResolve() throws java.io.ObjectStreamException;
+ ctor public KeyRep(java.security.KeyRep.Type, String, String, byte[]);
+ method protected Object readResolve() throws java.io.ObjectStreamException;
}
- public static final class KeyRep.Type extends java.lang.Enum {
- method public static java.security.KeyRep.Type valueOf(java.lang.String);
- method public static final java.security.KeyRep.Type[] values();
+ public enum KeyRep.Type {
enum_constant public static final java.security.KeyRep.Type PRIVATE;
enum_constant public static final java.security.KeyRep.Type PUBLIC;
enum_constant public static final java.security.KeyRep.Type SECRET;
}
public class KeyStore {
- ctor protected KeyStore(java.security.KeyStoreSpi, java.security.Provider, java.lang.String);
+ ctor protected KeyStore(java.security.KeyStoreSpi, java.security.Provider, String);
method public final java.util.Enumeration<java.lang.String> aliases() throws java.security.KeyStoreException;
- method public final boolean containsAlias(java.lang.String) throws java.security.KeyStoreException;
- method public final void deleteEntry(java.lang.String) throws java.security.KeyStoreException;
- method public final boolean entryInstanceOf(java.lang.String, java.lang.Class<? extends java.security.KeyStore.Entry>) throws java.security.KeyStoreException;
- method public final java.security.cert.Certificate getCertificate(java.lang.String) throws java.security.KeyStoreException;
- method public final java.lang.String getCertificateAlias(java.security.cert.Certificate) throws java.security.KeyStoreException;
- method public final java.security.cert.Certificate[] getCertificateChain(java.lang.String) throws java.security.KeyStoreException;
- method public final java.util.Date getCreationDate(java.lang.String) throws java.security.KeyStoreException;
- method public static final java.lang.String getDefaultType();
- method public final java.security.KeyStore.Entry getEntry(java.lang.String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
- method public static java.security.KeyStore getInstance(java.lang.String) throws java.security.KeyStoreException;
- method public static java.security.KeyStore getInstance(java.lang.String, java.lang.String) throws java.security.KeyStoreException, java.security.NoSuchProviderException;
- method public static java.security.KeyStore getInstance(java.lang.String, java.security.Provider) throws java.security.KeyStoreException;
- method public final java.security.Key getKey(java.lang.String, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+ method public final boolean containsAlias(String) throws java.security.KeyStoreException;
+ method public final void deleteEntry(String) throws java.security.KeyStoreException;
+ method public final boolean entryInstanceOf(String, Class<? extends java.security.KeyStore.Entry>) throws java.security.KeyStoreException;
+ method public final java.security.cert.Certificate getCertificate(String) throws java.security.KeyStoreException;
+ method public final String getCertificateAlias(java.security.cert.Certificate) throws java.security.KeyStoreException;
+ method public final java.security.cert.Certificate[] getCertificateChain(String) throws java.security.KeyStoreException;
+ method public final java.util.Date getCreationDate(String) throws java.security.KeyStoreException;
+ method public static final String getDefaultType();
+ method public final java.security.KeyStore.Entry getEntry(String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
+ method public static java.security.KeyStore getInstance(String) throws java.security.KeyStoreException;
+ method public static java.security.KeyStore getInstance(String, String) throws java.security.KeyStoreException, java.security.NoSuchProviderException;
+ method public static java.security.KeyStore getInstance(String, java.security.Provider) throws java.security.KeyStoreException;
+ method public final java.security.Key getKey(String, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
method public final java.security.Provider getProvider();
- method public final java.lang.String getType();
- method public final boolean isCertificateEntry(java.lang.String) throws java.security.KeyStoreException;
- method public final boolean isKeyEntry(java.lang.String) throws java.security.KeyStoreException;
+ method public final String getType();
+ method public final boolean isCertificateEntry(String) throws java.security.KeyStoreException;
+ method public final boolean isKeyEntry(String) throws java.security.KeyStoreException;
method public final void load(java.io.InputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
method public final void load(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
- method public final void setCertificateEntry(java.lang.String, java.security.cert.Certificate) throws java.security.KeyStoreException;
- method public final void setEntry(java.lang.String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
- method public final void setKeyEntry(java.lang.String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
- method public final void setKeyEntry(java.lang.String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
+ method public final void setCertificateEntry(String, java.security.cert.Certificate) throws java.security.KeyStoreException;
+ method public final void setEntry(String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
+ method public final void setKeyEntry(String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
+ method public final void setKeyEntry(String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
method public final int size() throws java.security.KeyStoreException;
method public final void store(java.io.OutputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException;
method public final void store(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException;
}
- public static abstract class KeyStore.Builder {
+ public abstract static class KeyStore.Builder {
ctor protected KeyStore.Builder();
method public abstract java.security.KeyStore getKeyStore() throws java.security.KeyStoreException;
- method public abstract java.security.KeyStore.ProtectionParameter getProtectionParameter(java.lang.String) throws java.security.KeyStoreException;
+ method public abstract java.security.KeyStore.ProtectionParameter getProtectionParameter(String) throws java.security.KeyStoreException;
method public static java.security.KeyStore.Builder newInstance(java.security.KeyStore, java.security.KeyStore.ProtectionParameter);
- method public static java.security.KeyStore.Builder newInstance(java.lang.String, java.security.Provider, java.io.File, java.security.KeyStore.ProtectionParameter);
- method public static java.security.KeyStore.Builder newInstance(java.lang.String, java.security.Provider, java.security.KeyStore.ProtectionParameter);
+ method public static java.security.KeyStore.Builder newInstance(String, java.security.Provider, java.io.File, java.security.KeyStore.ProtectionParameter);
+ method public static java.security.KeyStore.Builder newInstance(String, java.security.Provider, java.security.KeyStore.ProtectionParameter);
}
public static class KeyStore.CallbackHandlerProtection implements java.security.KeyStore.ProtectionParameter {
@@ -63928,27 +63996,25 @@
method public javax.security.auth.callback.CallbackHandler getCallbackHandler();
}
- public static abstract interface KeyStore.Entry {
+ public static interface KeyStore.Entry {
method public default java.util.Set<java.security.KeyStore.Entry.Attribute> getAttributes();
}
- public static abstract interface KeyStore.Entry.Attribute {
- method public abstract java.lang.String getName();
- method public abstract java.lang.String getValue();
+ public static interface KeyStore.Entry.Attribute {
+ method public String getName();
+ method public String getValue();
}
- public static abstract interface KeyStore.LoadStoreParameter {
- method public abstract java.security.KeyStore.ProtectionParameter getProtectionParameter();
+ public static interface KeyStore.LoadStoreParameter {
+ method public java.security.KeyStore.ProtectionParameter getProtectionParameter();
}
public static class KeyStore.PasswordProtection implements javax.security.auth.Destroyable java.security.KeyStore.ProtectionParameter {
ctor public KeyStore.PasswordProtection(char[]);
- ctor public KeyStore.PasswordProtection(char[], java.lang.String, java.security.spec.AlgorithmParameterSpec);
- method public synchronized void destroy() throws javax.security.auth.DestroyFailedException;
- method public synchronized char[] getPassword();
- method public java.lang.String getProtectionAlgorithm();
+ ctor public KeyStore.PasswordProtection(char[], String, java.security.spec.AlgorithmParameterSpec);
+ method public char[] getPassword();
+ method public String getProtectionAlgorithm();
method public java.security.spec.AlgorithmParameterSpec getProtectionParameters();
- method public synchronized boolean isDestroyed();
}
public static final class KeyStore.PrivateKeyEntry implements java.security.KeyStore.Entry {
@@ -63959,7 +64025,7 @@
method public java.security.PrivateKey getPrivateKey();
}
- public static abstract interface KeyStore.ProtectionParameter {
+ public static interface KeyStore.ProtectionParameter {
}
public static final class KeyStore.SecretKeyEntry implements java.security.KeyStore.Entry {
@@ -63976,58 +64042,58 @@
public class KeyStoreException extends java.security.GeneralSecurityException {
ctor public KeyStoreException();
- ctor public KeyStoreException(java.lang.String);
- ctor public KeyStoreException(java.lang.String, java.lang.Throwable);
- ctor public KeyStoreException(java.lang.Throwable);
+ ctor public KeyStoreException(String);
+ ctor public KeyStoreException(String, Throwable);
+ ctor public KeyStoreException(Throwable);
}
public abstract class KeyStoreSpi {
ctor public KeyStoreSpi();
method public abstract java.util.Enumeration<java.lang.String> engineAliases();
- method public abstract boolean engineContainsAlias(java.lang.String);
- method public abstract void engineDeleteEntry(java.lang.String) throws java.security.KeyStoreException;
- method public boolean engineEntryInstanceOf(java.lang.String, java.lang.Class<? extends java.security.KeyStore.Entry>);
- method public abstract java.security.cert.Certificate engineGetCertificate(java.lang.String);
- method public abstract java.lang.String engineGetCertificateAlias(java.security.cert.Certificate);
- method public abstract java.security.cert.Certificate[] engineGetCertificateChain(java.lang.String);
- method public abstract java.util.Date engineGetCreationDate(java.lang.String);
- method public java.security.KeyStore.Entry engineGetEntry(java.lang.String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
- method public abstract java.security.Key engineGetKey(java.lang.String, char[]) throws java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
- method public abstract boolean engineIsCertificateEntry(java.lang.String);
- method public abstract boolean engineIsKeyEntry(java.lang.String);
+ method public abstract boolean engineContainsAlias(String);
+ method public abstract void engineDeleteEntry(String) throws java.security.KeyStoreException;
+ method public boolean engineEntryInstanceOf(String, Class<? extends java.security.KeyStore.Entry>);
+ method public abstract java.security.cert.Certificate engineGetCertificate(String);
+ method public abstract String engineGetCertificateAlias(java.security.cert.Certificate);
+ method public abstract java.security.cert.Certificate[] engineGetCertificateChain(String);
+ method public abstract java.util.Date engineGetCreationDate(String);
+ method public java.security.KeyStore.Entry engineGetEntry(String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
+ method public abstract java.security.Key engineGetKey(String, char[]) throws java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+ method public abstract boolean engineIsCertificateEntry(String);
+ method public abstract boolean engineIsKeyEntry(String);
method public abstract void engineLoad(java.io.InputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
method public void engineLoad(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
- method public abstract void engineSetCertificateEntry(java.lang.String, java.security.cert.Certificate) throws java.security.KeyStoreException;
- method public void engineSetEntry(java.lang.String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
- method public abstract void engineSetKeyEntry(java.lang.String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
- method public abstract void engineSetKeyEntry(java.lang.String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
+ method public abstract void engineSetCertificateEntry(String, java.security.cert.Certificate) throws java.security.KeyStoreException;
+ method public void engineSetEntry(String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
+ method public abstract void engineSetKeyEntry(String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
+ method public abstract void engineSetKeyEntry(String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
method public abstract int engineSize();
method public abstract void engineStore(java.io.OutputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
method public void engineStore(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
}
public abstract class MessageDigest extends java.security.MessageDigestSpi {
- ctor protected MessageDigest(java.lang.String);
+ ctor protected MessageDigest(@NonNull String);
method public byte[] digest();
method public int digest(byte[], int, int) throws java.security.DigestException;
method public byte[] digest(byte[]);
- method public final java.lang.String getAlgorithm();
+ method @NonNull public final String getAlgorithm();
method public final int getDigestLength();
- method public static java.security.MessageDigest getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static java.security.MessageDigest getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.MessageDigest getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
- method public final java.security.Provider getProvider();
+ method @NonNull public static java.security.MessageDigest getInstance(@NonNull String) throws java.security.NoSuchAlgorithmException;
+ method @NonNull public static java.security.MessageDigest getInstance(@NonNull String, @NonNull String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method @NonNull public static java.security.MessageDigest getInstance(@NonNull String, @NonNull java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method @NonNull public final java.security.Provider getProvider();
method public static boolean isEqual(byte[], byte[]);
method public void reset();
method public void update(byte);
method public void update(byte[], int, int);
method public void update(byte[]);
- method public final void update(java.nio.ByteBuffer);
+ method public final void update(@NonNull java.nio.ByteBuffer);
}
public abstract class MessageDigestSpi {
ctor public MessageDigestSpi();
- method public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
+ method public Object clone() throws java.lang.CloneNotSupportedException;
method protected abstract byte[] engineDigest();
method protected int engineDigest(byte[], int, int) throws java.security.DigestException;
method protected int engineGetDigestLength();
@@ -64039,29 +64105,29 @@
public class NoSuchAlgorithmException extends java.security.GeneralSecurityException {
ctor public NoSuchAlgorithmException();
- ctor public NoSuchAlgorithmException(java.lang.String);
- ctor public NoSuchAlgorithmException(java.lang.String, java.lang.Throwable);
- ctor public NoSuchAlgorithmException(java.lang.Throwable);
+ ctor public NoSuchAlgorithmException(String);
+ ctor public NoSuchAlgorithmException(String, Throwable);
+ ctor public NoSuchAlgorithmException(Throwable);
}
public class NoSuchProviderException extends java.security.GeneralSecurityException {
ctor public NoSuchProviderException();
- ctor public NoSuchProviderException(java.lang.String);
+ ctor public NoSuchProviderException(String);
}
public final class PKCS12Attribute implements java.security.KeyStore.Entry.Attribute {
- ctor public PKCS12Attribute(java.lang.String, java.lang.String);
+ ctor public PKCS12Attribute(String, String);
ctor public PKCS12Attribute(byte[]);
method public byte[] getEncoded();
- method public java.lang.String getName();
- method public java.lang.String getValue();
+ method public String getName();
+ method public String getValue();
}
public abstract class Permission implements java.security.Guard java.io.Serializable {
- ctor public Permission(java.lang.String);
- method public void checkGuard(java.lang.Object) throws java.lang.SecurityException;
- method public abstract java.lang.String getActions();
- method public final java.lang.String getName();
+ ctor public Permission(String);
+ method public void checkGuard(Object) throws java.lang.SecurityException;
+ method public abstract String getActions();
+ method public final String getName();
method public abstract boolean implies(java.security.Permission);
method public java.security.PermissionCollection newPermissionCollection();
}
@@ -64084,22 +64150,22 @@
public abstract class Policy {
ctor public Policy();
- method public static java.security.Policy getInstance(java.lang.String, java.security.Policy.Parameters) throws java.security.NoSuchAlgorithmException;
- method public static java.security.Policy getInstance(java.lang.String, java.security.Policy.Parameters, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.Policy getInstance(java.lang.String, java.security.Policy.Parameters, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.Policy getInstance(String, java.security.Policy.Parameters) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.Policy getInstance(String, java.security.Policy.Parameters, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.Policy getInstance(String, java.security.Policy.Parameters, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public java.security.Policy.Parameters getParameters();
method public java.security.PermissionCollection getPermissions(java.security.CodeSource);
method public java.security.PermissionCollection getPermissions(java.security.ProtectionDomain);
method public static java.security.Policy getPolicy();
method public java.security.Provider getProvider();
- method public java.lang.String getType();
+ method public String getType();
method public boolean implies(java.security.ProtectionDomain, java.security.Permission);
method public void refresh();
method public static void setPolicy(java.security.Policy);
field public static final java.security.PermissionCollection UNSUPPORTED_EMPTY_COLLECTION;
}
- public static abstract interface Policy.Parameters {
+ public static interface Policy.Parameters {
}
public abstract class PolicySpi {
@@ -64110,36 +64176,35 @@
method protected void engineRefresh();
}
- public abstract interface Principal {
- method public abstract boolean equals(java.lang.Object);
- method public abstract java.lang.String getName();
- method public abstract int hashCode();
+ public interface Principal {
+ method public boolean equals(Object);
+ method public String getName();
+ method public int hashCode();
method public default boolean implies(javax.security.auth.Subject);
- method public abstract java.lang.String toString();
+ method public String toString();
}
- public abstract interface PrivateKey implements javax.security.auth.Destroyable java.security.Key {
+ public interface PrivateKey extends java.security.Key javax.security.auth.Destroyable {
field public static final long serialVersionUID = 6034044314589513430L; // 0x53bd3b559a12c6d6L
}
- public abstract interface PrivilegedAction<T> {
- method public abstract T run();
+ public interface PrivilegedAction<T> {
+ method public T run();
}
public class PrivilegedActionException extends java.lang.Exception {
- ctor public PrivilegedActionException(java.lang.Exception);
- method public java.lang.Throwable getCause();
- method public java.lang.Exception getException();
+ ctor public PrivilegedActionException(Exception);
+ method public Exception getException();
}
- public abstract interface PrivilegedExceptionAction<T> {
- method public abstract T run() throws java.lang.Exception;
+ public interface PrivilegedExceptionAction<T> {
+ method public T run() throws java.lang.Exception;
}
public class ProtectionDomain {
ctor public ProtectionDomain(java.security.CodeSource, java.security.PermissionCollection);
- ctor public ProtectionDomain(java.security.CodeSource, java.security.PermissionCollection, java.lang.ClassLoader, java.security.Principal[]);
- method public final java.lang.ClassLoader getClassLoader();
+ ctor public ProtectionDomain(java.security.CodeSource, java.security.PermissionCollection, ClassLoader, java.security.Principal[]);
+ method public final ClassLoader getClassLoader();
method public final java.security.CodeSource getCodeSource();
method public final java.security.PermissionCollection getPermissions();
method public final java.security.Principal[] getPrincipals();
@@ -64147,62 +64212,62 @@
}
public abstract class Provider extends java.util.Properties {
- ctor protected Provider(java.lang.String, double, java.lang.String);
- method public synchronized java.lang.Object compute(java.lang.Object, java.util.function.BiFunction<? super java.lang.Object, ? super java.lang.Object, ? extends java.lang.Object>);
- method public synchronized java.lang.Object computeIfAbsent(java.lang.Object, java.util.function.Function<? super java.lang.Object, ? extends java.lang.Object>);
- method public synchronized java.lang.Object computeIfPresent(java.lang.Object, java.util.function.BiFunction<? super java.lang.Object, ? super java.lang.Object, ? extends java.lang.Object>);
+ ctor protected Provider(String, double, String);
+ method public Object compute(Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
+ method public Object computeIfAbsent(Object, java.util.function.Function<? super java.lang.Object,?>);
+ method public Object computeIfPresent(Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
method public java.util.Enumeration<java.lang.Object> elements();
- method public synchronized java.util.Set<java.util.Map.Entry<java.lang.Object, java.lang.Object>> entrySet();
- method public synchronized void forEach(java.util.function.BiConsumer<? super java.lang.Object, ? super java.lang.Object>);
- method public java.lang.Object get(java.lang.Object);
- method public java.lang.String getInfo();
- method public java.lang.String getName();
- method public synchronized java.lang.Object getOrDefault(java.lang.Object, java.lang.Object);
- method public synchronized java.security.Provider.Service getService(java.lang.String, java.lang.String);
- method public synchronized java.util.Set<java.security.Provider.Service> getServices();
+ method public java.util.Set<java.util.Map.Entry<java.lang.Object,java.lang.Object>> entrySet();
+ method public void forEach(java.util.function.BiConsumer<? super java.lang.Object,? super java.lang.Object>);
+ method public Object get(Object);
+ method public String getInfo();
+ method public String getName();
+ method public Object getOrDefault(Object, Object);
+ method public java.security.Provider.Service getService(String, String);
+ method public java.util.Set<java.security.Provider.Service> getServices();
method public double getVersion();
method public java.util.Set<java.lang.Object> keySet();
method public java.util.Enumeration<java.lang.Object> keys();
- method public synchronized java.lang.Object merge(java.lang.Object, java.lang.Object, java.util.function.BiFunction<? super java.lang.Object, ? super java.lang.Object, ? extends java.lang.Object>);
- method public synchronized java.lang.Object put(java.lang.Object, java.lang.Object);
- method public synchronized void putAll(java.util.Map<?, ?>);
- method public synchronized java.lang.Object putIfAbsent(java.lang.Object, java.lang.Object);
- method protected synchronized void putService(java.security.Provider.Service);
- method public synchronized java.lang.Object remove(java.lang.Object);
- method protected synchronized void removeService(java.security.Provider.Service);
- method public synchronized boolean replace(java.lang.Object, java.lang.Object, java.lang.Object);
- method public synchronized java.lang.Object replace(java.lang.Object, java.lang.Object);
- method public synchronized void replaceAll(java.util.function.BiFunction<? super java.lang.Object, ? super java.lang.Object, ? extends java.lang.Object>);
+ method public Object merge(Object, Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
+ method public Object put(Object, Object);
+ method public void putAll(java.util.Map<?,?>);
+ method public Object putIfAbsent(Object, Object);
+ method protected void putService(java.security.Provider.Service);
+ method public Object remove(Object);
+ method protected void removeService(java.security.Provider.Service);
+ method public boolean replace(Object, Object, Object);
+ method public Object replace(Object, Object);
+ method public void replaceAll(java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
method public java.util.Collection<java.lang.Object> values();
}
public static class Provider.Service {
- ctor public Provider.Service(java.security.Provider, java.lang.String, java.lang.String, java.lang.String, java.util.List<java.lang.String>, java.util.Map<java.lang.String, java.lang.String>);
- method public final java.lang.String getAlgorithm();
- method public final java.lang.String getAttribute(java.lang.String);
- method public final java.lang.String getClassName();
+ ctor public Provider.Service(java.security.Provider, String, String, String, java.util.List<java.lang.String>, java.util.Map<java.lang.String,java.lang.String>);
+ method public final String getAlgorithm();
+ method public final String getAttribute(String);
+ method public final String getClassName();
method public final java.security.Provider getProvider();
- method public final java.lang.String getType();
- method public java.lang.Object newInstance(java.lang.Object) throws java.security.NoSuchAlgorithmException;
- method public boolean supportsParameter(java.lang.Object);
+ method public final String getType();
+ method public Object newInstance(Object) throws java.security.NoSuchAlgorithmException;
+ method public boolean supportsParameter(Object);
}
public class ProviderException extends java.lang.RuntimeException {
ctor public ProviderException();
- ctor public ProviderException(java.lang.String);
- ctor public ProviderException(java.lang.String, java.lang.Throwable);
- ctor public ProviderException(java.lang.Throwable);
+ ctor public ProviderException(String);
+ ctor public ProviderException(String, Throwable);
+ ctor public ProviderException(Throwable);
}
- public abstract interface PublicKey implements java.security.Key {
+ public interface PublicKey extends java.security.Key {
field public static final long serialVersionUID = 7187392471159151072L; // 0x63bebf5f40c219e0L
}
public class SecureClassLoader extends java.lang.ClassLoader {
- ctor protected SecureClassLoader(java.lang.ClassLoader);
+ ctor protected SecureClassLoader(ClassLoader);
ctor protected SecureClassLoader();
- method protected final java.lang.Class<?> defineClass(java.lang.String, byte[], int, int, java.security.CodeSource);
- method protected final java.lang.Class<?> defineClass(java.lang.String, java.nio.ByteBuffer, java.security.CodeSource);
+ method protected final Class<?> defineClass(String, byte[], int, int, java.security.CodeSource);
+ method protected final Class<?> defineClass(String, java.nio.ByteBuffer, java.security.CodeSource);
method protected java.security.PermissionCollection getPermissions(java.security.CodeSource);
}
@@ -64211,17 +64276,15 @@
ctor public SecureRandom(byte[]);
ctor protected SecureRandom(java.security.SecureRandomSpi, java.security.Provider);
method public byte[] generateSeed(int);
- method public java.lang.String getAlgorithm();
- method public static java.security.SecureRandom getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static java.security.SecureRandom getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.SecureRandom getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public String getAlgorithm();
+ method public static java.security.SecureRandom getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.SecureRandom getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.SecureRandom getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public static java.security.SecureRandom getInstanceStrong() throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
method public static byte[] getSeed(int);
method protected final int next(int);
- method public synchronized void nextBytes(byte[]);
- method public synchronized void setSeed(byte[]);
- method public void setSeed(long);
+ method public void setSeed(byte[]);
}
public abstract class SecureRandomSpi implements java.io.Serializable {
@@ -64233,37 +64296,37 @@
public final class Security {
method public static int addProvider(java.security.Provider);
- method public static deprecated java.lang.String getAlgorithmProperty(java.lang.String, java.lang.String);
- method public static java.util.Set<java.lang.String> getAlgorithms(java.lang.String);
- method public static java.lang.String getProperty(java.lang.String);
- method public static java.security.Provider getProvider(java.lang.String);
+ method @Deprecated public static String getAlgorithmProperty(String, String);
+ method public static java.util.Set<java.lang.String> getAlgorithms(String);
+ method public static String getProperty(String);
+ method public static java.security.Provider getProvider(String);
method public static java.security.Provider[] getProviders();
- method public static java.security.Provider[] getProviders(java.lang.String);
- method public static java.security.Provider[] getProviders(java.util.Map<java.lang.String, java.lang.String>);
- method public static synchronized int insertProviderAt(java.security.Provider, int);
- method public static synchronized void removeProvider(java.lang.String);
- method public static void setProperty(java.lang.String, java.lang.String);
+ method public static java.security.Provider[] getProviders(String);
+ method public static java.security.Provider[] getProviders(java.util.Map<java.lang.String,java.lang.String>);
+ method public static int insertProviderAt(java.security.Provider, int);
+ method public static void removeProvider(String);
+ method public static void setProperty(String, String);
}
public final class SecurityPermission extends java.security.BasicPermission {
- ctor public SecurityPermission(java.lang.String);
- ctor public SecurityPermission(java.lang.String, java.lang.String);
+ ctor public SecurityPermission(String);
+ ctor public SecurityPermission(String, String);
}
public abstract class Signature extends java.security.SignatureSpi {
- ctor protected Signature(java.lang.String);
- method public final java.lang.String getAlgorithm();
- method public static java.security.Signature getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static java.security.Signature getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.Signature getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
- method public final deprecated java.lang.Object getParameter(java.lang.String) throws java.security.InvalidParameterException;
+ ctor protected Signature(String);
+ method public final String getAlgorithm();
+ method public static java.security.Signature getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.Signature getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.Signature getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method @Deprecated public final Object getParameter(String) throws java.security.InvalidParameterException;
method public final java.security.AlgorithmParameters getParameters();
method public final java.security.Provider getProvider();
method public final void initSign(java.security.PrivateKey) throws java.security.InvalidKeyException;
method public final void initSign(java.security.PrivateKey, java.security.SecureRandom) throws java.security.InvalidKeyException;
method public final void initVerify(java.security.PublicKey) throws java.security.InvalidKeyException;
method public final void initVerify(java.security.cert.Certificate) throws java.security.InvalidKeyException;
- method public final deprecated void setParameter(java.lang.String, java.lang.Object) throws java.security.InvalidParameterException;
+ method @Deprecated public final void setParameter(String, Object) throws java.security.InvalidParameterException;
method public final void setParameter(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
method public final byte[] sign() throws java.security.SignatureException;
method public final int sign(byte[], int, int) throws java.security.SignatureException;
@@ -64281,20 +64344,20 @@
public class SignatureException extends java.security.GeneralSecurityException {
ctor public SignatureException();
- ctor public SignatureException(java.lang.String);
- ctor public SignatureException(java.lang.String, java.lang.Throwable);
- ctor public SignatureException(java.lang.Throwable);
+ ctor public SignatureException(String);
+ ctor public SignatureException(String, Throwable);
+ ctor public SignatureException(Throwable);
}
public abstract class SignatureSpi {
ctor public SignatureSpi();
- method public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
- method protected abstract deprecated java.lang.Object engineGetParameter(java.lang.String) throws java.security.InvalidParameterException;
+ method public Object clone() throws java.lang.CloneNotSupportedException;
+ method @Deprecated protected abstract Object engineGetParameter(String) throws java.security.InvalidParameterException;
method protected java.security.AlgorithmParameters engineGetParameters();
method protected abstract void engineInitSign(java.security.PrivateKey) throws java.security.InvalidKeyException;
method protected void engineInitSign(java.security.PrivateKey, java.security.SecureRandom) throws java.security.InvalidKeyException;
method protected abstract void engineInitVerify(java.security.PublicKey) throws java.security.InvalidKeyException;
- method protected abstract deprecated void engineSetParameter(java.lang.String, java.lang.Object) throws java.security.InvalidParameterException;
+ method @Deprecated protected abstract void engineSetParameter(String, Object) throws java.security.InvalidParameterException;
method protected void engineSetParameter(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
method protected abstract byte[] engineSign() throws java.security.SignatureException;
method protected int engineSign(byte[], int, int) throws java.security.SignatureException;
@@ -64308,18 +64371,18 @@
public final class SignedObject implements java.io.Serializable {
ctor public SignedObject(java.io.Serializable, java.security.PrivateKey, java.security.Signature) throws java.io.IOException, java.security.InvalidKeyException, java.security.SignatureException;
- method public java.lang.String getAlgorithm();
- method public java.lang.Object getObject() throws java.lang.ClassNotFoundException, java.io.IOException;
+ method public String getAlgorithm();
+ method public Object getObject() throws java.lang.ClassNotFoundException, java.io.IOException;
method public byte[] getSignature();
method public boolean verify(java.security.PublicKey, java.security.Signature) throws java.security.InvalidKeyException, java.security.SignatureException;
}
- public abstract deprecated class Signer extends java.security.Identity {
- ctor protected Signer();
- ctor public Signer(java.lang.String);
- ctor public Signer(java.lang.String, java.security.IdentityScope) throws java.security.KeyManagementException;
- method public java.security.PrivateKey getPrivateKey();
- method public final void setKeyPair(java.security.KeyPair) throws java.security.InvalidParameterException, java.security.KeyException;
+ @Deprecated public abstract class Signer extends java.security.Identity {
+ ctor @Deprecated protected Signer();
+ ctor @Deprecated public Signer(String);
+ ctor @Deprecated public Signer(String, java.security.IdentityScope) throws java.security.KeyManagementException;
+ method @Deprecated public java.security.PrivateKey getPrivateKey();
+ method @Deprecated public final void setKeyPair(java.security.KeyPair) throws java.security.InvalidParameterException, java.security.KeyException;
}
public final class Timestamp implements java.io.Serializable {
@@ -64330,21 +64393,21 @@
public class UnrecoverableEntryException extends java.security.GeneralSecurityException {
ctor public UnrecoverableEntryException();
- ctor public UnrecoverableEntryException(java.lang.String);
+ ctor public UnrecoverableEntryException(String);
}
public class UnrecoverableKeyException extends java.security.UnrecoverableEntryException {
ctor public UnrecoverableKeyException();
- ctor public UnrecoverableKeyException(java.lang.String);
+ ctor public UnrecoverableKeyException(String);
}
public final class UnresolvedPermission extends java.security.Permission implements java.io.Serializable {
- ctor public UnresolvedPermission(java.lang.String, java.lang.String, java.lang.String, java.security.cert.Certificate[]);
- method public java.lang.String getActions();
- method public java.lang.String getUnresolvedActions();
+ ctor public UnresolvedPermission(String, String, String, java.security.cert.Certificate[]);
+ method public String getActions();
+ method public String getUnresolvedActions();
method public java.security.cert.Certificate[] getUnresolvedCerts();
- method public java.lang.String getUnresolvedName();
- method public java.lang.String getUnresolvedType();
+ method public String getUnresolvedName();
+ method public String getUnresolvedType();
method public boolean implies(java.security.Permission);
}
@@ -64352,39 +64415,39 @@
package java.security.acl {
- public abstract interface Acl implements java.security.acl.Owner {
- method public abstract boolean addEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
- method public abstract boolean checkPermission(java.security.Principal, java.security.acl.Permission);
- method public abstract java.util.Enumeration<java.security.acl.AclEntry> entries();
- method public abstract java.lang.String getName();
- method public abstract java.util.Enumeration<java.security.acl.Permission> getPermissions(java.security.Principal);
- method public abstract boolean removeEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
- method public abstract void setName(java.security.Principal, java.lang.String) throws java.security.acl.NotOwnerException;
- method public abstract java.lang.String toString();
+ public interface Acl extends java.security.acl.Owner {
+ method public boolean addEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
+ method public boolean checkPermission(java.security.Principal, java.security.acl.Permission);
+ method public java.util.Enumeration<java.security.acl.AclEntry> entries();
+ method public String getName();
+ method public java.util.Enumeration<java.security.acl.Permission> getPermissions(java.security.Principal);
+ method public boolean removeEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
+ method public void setName(java.security.Principal, String) throws java.security.acl.NotOwnerException;
+ method public String toString();
}
- public abstract interface AclEntry implements java.lang.Cloneable {
- method public abstract boolean addPermission(java.security.acl.Permission);
- method public abstract boolean checkPermission(java.security.acl.Permission);
- method public abstract java.lang.Object clone();
- method public abstract java.security.Principal getPrincipal();
- method public abstract boolean isNegative();
- method public abstract java.util.Enumeration<java.security.acl.Permission> permissions();
- method public abstract boolean removePermission(java.security.acl.Permission);
- method public abstract void setNegativePermissions();
- method public abstract boolean setPrincipal(java.security.Principal);
- method public abstract java.lang.String toString();
+ public interface AclEntry extends java.lang.Cloneable {
+ method public boolean addPermission(java.security.acl.Permission);
+ method public boolean checkPermission(java.security.acl.Permission);
+ method public Object clone();
+ method public java.security.Principal getPrincipal();
+ method public boolean isNegative();
+ method public java.util.Enumeration<java.security.acl.Permission> permissions();
+ method public boolean removePermission(java.security.acl.Permission);
+ method public void setNegativePermissions();
+ method public boolean setPrincipal(java.security.Principal);
+ method public String toString();
}
public class AclNotFoundException extends java.lang.Exception {
ctor public AclNotFoundException();
}
- public abstract interface Group implements java.security.Principal {
- method public abstract boolean addMember(java.security.Principal);
- method public abstract boolean isMember(java.security.Principal);
- method public abstract java.util.Enumeration<? extends java.security.Principal> members();
- method public abstract boolean removeMember(java.security.Principal);
+ public interface Group extends java.security.Principal {
+ method public boolean addMember(java.security.Principal);
+ method public boolean isMember(java.security.Principal);
+ method public java.util.Enumeration<? extends java.security.Principal> members();
+ method public boolean removeMember(java.security.Principal);
}
public class LastOwnerException extends java.lang.Exception {
@@ -64395,13 +64458,13 @@
ctor public NotOwnerException();
}
- public abstract interface Owner {
- method public abstract boolean addOwner(java.security.Principal, java.security.Principal) throws java.security.acl.NotOwnerException;
- method public abstract boolean deleteOwner(java.security.Principal, java.security.Principal) throws java.security.acl.LastOwnerException, java.security.acl.NotOwnerException;
- method public abstract boolean isOwner(java.security.Principal);
+ public interface Owner {
+ method public boolean addOwner(java.security.Principal, java.security.Principal) throws java.security.acl.NotOwnerException;
+ method public boolean deleteOwner(java.security.Principal, java.security.Principal) throws java.security.acl.LastOwnerException, java.security.acl.NotOwnerException;
+ method public boolean isOwner(java.security.Principal);
}
- public abstract interface Permission {
+ public interface Permission {
}
}
@@ -64409,22 +64472,20 @@
package java.security.cert {
public abstract class CRL {
- ctor protected CRL(java.lang.String);
- method public final java.lang.String getType();
+ ctor protected CRL(String);
+ method public final String getType();
method public abstract boolean isRevoked(java.security.cert.Certificate);
- method public abstract java.lang.String toString();
+ method public abstract String toString();
}
public class CRLException extends java.security.GeneralSecurityException {
ctor public CRLException();
- ctor public CRLException(java.lang.String);
- ctor public CRLException(java.lang.String, java.lang.Throwable);
- ctor public CRLException(java.lang.Throwable);
+ ctor public CRLException(String);
+ ctor public CRLException(String, Throwable);
+ ctor public CRLException(Throwable);
}
- public final class CRLReason extends java.lang.Enum {
- method public static java.security.cert.CRLReason valueOf(java.lang.String);
- method public static final java.security.cert.CRLReason[] values();
+ public enum CRLReason {
enum_constant public static final java.security.cert.CRLReason AA_COMPROMISE;
enum_constant public static final java.security.cert.CRLReason AFFILIATION_CHANGED;
enum_constant public static final java.security.cert.CRLReason CA_COMPROMISE;
@@ -64438,48 +64499,48 @@
enum_constant public static final java.security.cert.CRLReason UNUSED;
}
- public abstract interface CRLSelector implements java.lang.Cloneable {
- method public abstract java.lang.Object clone();
- method public abstract boolean match(java.security.cert.CRL);
+ public interface CRLSelector extends java.lang.Cloneable {
+ method public Object clone();
+ method public boolean match(java.security.cert.CRL);
}
public abstract class CertPath implements java.io.Serializable {
- ctor protected CertPath(java.lang.String);
+ ctor protected CertPath(String);
method public abstract java.util.List<? extends java.security.cert.Certificate> getCertificates();
method public abstract byte[] getEncoded() throws java.security.cert.CertificateEncodingException;
- method public abstract byte[] getEncoded(java.lang.String) throws java.security.cert.CertificateEncodingException;
+ method public abstract byte[] getEncoded(String) throws java.security.cert.CertificateEncodingException;
method public abstract java.util.Iterator<java.lang.String> getEncodings();
- method public java.lang.String getType();
- method protected java.lang.Object writeReplace() throws java.io.ObjectStreamException;
+ method public String getType();
+ method protected Object writeReplace() throws java.io.ObjectStreamException;
}
protected static class CertPath.CertPathRep implements java.io.Serializable {
- ctor protected CertPath.CertPathRep(java.lang.String, byte[]);
- method protected java.lang.Object readResolve() throws java.io.ObjectStreamException;
+ ctor protected CertPath.CertPathRep(String, byte[]);
+ method protected Object readResolve() throws java.io.ObjectStreamException;
}
public class CertPathBuilder {
- ctor protected CertPathBuilder(java.security.cert.CertPathBuilderSpi, java.security.Provider, java.lang.String);
+ ctor protected CertPathBuilder(java.security.cert.CertPathBuilderSpi, java.security.Provider, String);
method public final java.security.cert.CertPathBuilderResult build(java.security.cert.CertPathParameters) throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException;
- method public final java.lang.String getAlgorithm();
- method public static final java.lang.String getDefaultType();
- method public static java.security.cert.CertPathBuilder getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static java.security.cert.CertPathBuilder getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.cert.CertPathBuilder getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final String getAlgorithm();
+ method public static final String getDefaultType();
+ method public static java.security.cert.CertPathBuilder getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.cert.CertPathBuilder getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.cert.CertPathBuilder getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
method public final java.security.cert.CertPathChecker getRevocationChecker();
}
public class CertPathBuilderException extends java.security.GeneralSecurityException {
ctor public CertPathBuilderException();
- ctor public CertPathBuilderException(java.lang.String);
- ctor public CertPathBuilderException(java.lang.Throwable);
- ctor public CertPathBuilderException(java.lang.String, java.lang.Throwable);
+ ctor public CertPathBuilderException(String);
+ ctor public CertPathBuilderException(Throwable);
+ ctor public CertPathBuilderException(String, Throwable);
}
- public abstract interface CertPathBuilderResult implements java.lang.Cloneable {
- method public abstract java.lang.Object clone();
- method public abstract java.security.cert.CertPath getCertPath();
+ public interface CertPathBuilderResult extends java.lang.Cloneable {
+ method public Object clone();
+ method public java.security.cert.CertPath getCertPath();
}
public abstract class CertPathBuilderSpi {
@@ -64488,23 +64549,23 @@
method public java.security.cert.CertPathChecker engineGetRevocationChecker();
}
- public abstract interface CertPathChecker {
- method public abstract void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
- method public abstract void init(boolean) throws java.security.cert.CertPathValidatorException;
- method public abstract boolean isForwardCheckingSupported();
+ public interface CertPathChecker {
+ method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
+ method public void init(boolean) throws java.security.cert.CertPathValidatorException;
+ method public boolean isForwardCheckingSupported();
}
- public abstract interface CertPathParameters implements java.lang.Cloneable {
- method public abstract java.lang.Object clone();
+ public interface CertPathParameters extends java.lang.Cloneable {
+ method public Object clone();
}
public class CertPathValidator {
- ctor protected CertPathValidator(java.security.cert.CertPathValidatorSpi, java.security.Provider, java.lang.String);
- method public final java.lang.String getAlgorithm();
- method public static final java.lang.String getDefaultType();
- method public static java.security.cert.CertPathValidator getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static java.security.cert.CertPathValidator getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.cert.CertPathValidator getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ ctor protected CertPathValidator(java.security.cert.CertPathValidatorSpi, java.security.Provider, String);
+ method public final String getAlgorithm();
+ method public static final String getDefaultType();
+ method public static java.security.cert.CertPathValidator getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static java.security.cert.CertPathValidator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.cert.CertPathValidator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
method public final java.security.cert.CertPathChecker getRevocationChecker();
method public final java.security.cert.CertPathValidatorResult validate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
@@ -64512,19 +64573,17 @@
public class CertPathValidatorException extends java.security.GeneralSecurityException {
ctor public CertPathValidatorException();
- ctor public CertPathValidatorException(java.lang.String);
- ctor public CertPathValidatorException(java.lang.Throwable);
- ctor public CertPathValidatorException(java.lang.String, java.lang.Throwable);
- ctor public CertPathValidatorException(java.lang.String, java.lang.Throwable, java.security.cert.CertPath, int);
- ctor public CertPathValidatorException(java.lang.String, java.lang.Throwable, java.security.cert.CertPath, int, java.security.cert.CertPathValidatorException.Reason);
+ ctor public CertPathValidatorException(String);
+ ctor public CertPathValidatorException(Throwable);
+ ctor public CertPathValidatorException(String, Throwable);
+ ctor public CertPathValidatorException(String, Throwable, java.security.cert.CertPath, int);
+ ctor public CertPathValidatorException(String, Throwable, java.security.cert.CertPath, int, java.security.cert.CertPathValidatorException.Reason);
method public java.security.cert.CertPath getCertPath();
method public int getIndex();
method public java.security.cert.CertPathValidatorException.Reason getReason();
}
- public static final class CertPathValidatorException.BasicReason extends java.lang.Enum implements java.security.cert.CertPathValidatorException.Reason {
- method public static java.security.cert.CertPathValidatorException.BasicReason valueOf(java.lang.String);
- method public static final java.security.cert.CertPathValidatorException.BasicReason[] values();
+ public enum CertPathValidatorException.BasicReason implements java.security.cert.CertPathValidatorException.Reason {
enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason ALGORITHM_CONSTRAINED;
enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason EXPIRED;
enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason INVALID_SIGNATURE;
@@ -64534,11 +64593,11 @@
enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason UNSPECIFIED;
}
- public static abstract interface CertPathValidatorException.Reason implements java.io.Serializable {
+ public static interface CertPathValidatorException.Reason extends java.io.Serializable {
}
- public abstract interface CertPathValidatorResult implements java.lang.Cloneable {
- method public abstract java.lang.Object clone();
+ public interface CertPathValidatorResult extends java.lang.Cloneable {
+ method public Object clone();
}
public abstract class CertPathValidatorSpi {
@@ -64547,33 +64606,33 @@
method public abstract java.security.cert.CertPathValidatorResult engineValidate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
}
- public abstract interface CertSelector implements java.lang.Cloneable {
- method public abstract java.lang.Object clone();
- method public abstract boolean match(java.security.cert.Certificate);
+ public interface CertSelector extends java.lang.Cloneable {
+ method public Object clone();
+ method public boolean match(java.security.cert.Certificate);
}
public class CertStore {
- ctor protected CertStore(java.security.cert.CertStoreSpi, java.security.Provider, java.lang.String, java.security.cert.CertStoreParameters);
+ ctor protected CertStore(java.security.cert.CertStoreSpi, java.security.Provider, String, java.security.cert.CertStoreParameters);
method public final java.util.Collection<? extends java.security.cert.CRL> getCRLs(java.security.cert.CRLSelector) throws java.security.cert.CertStoreException;
method public final java.security.cert.CertStoreParameters getCertStoreParameters();
method public final java.util.Collection<? extends java.security.cert.Certificate> getCertificates(java.security.cert.CertSelector) throws java.security.cert.CertStoreException;
- method public static final java.lang.String getDefaultType();
- method public static java.security.cert.CertStore getInstance(java.lang.String, java.security.cert.CertStoreParameters) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
- method public static java.security.cert.CertStore getInstance(java.lang.String, java.security.cert.CertStoreParameters, java.lang.String) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static java.security.cert.CertStore getInstance(java.lang.String, java.security.cert.CertStoreParameters, java.security.Provider) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
+ method public static final String getDefaultType();
+ method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
+ method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters, String) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters, java.security.Provider) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
- method public final java.lang.String getType();
+ method public final String getType();
}
public class CertStoreException extends java.security.GeneralSecurityException {
ctor public CertStoreException();
- ctor public CertStoreException(java.lang.String);
- ctor public CertStoreException(java.lang.Throwable);
- ctor public CertStoreException(java.lang.String, java.lang.Throwable);
+ ctor public CertStoreException(String);
+ ctor public CertStoreException(Throwable);
+ ctor public CertStoreException(String, Throwable);
}
- public abstract interface CertStoreParameters implements java.lang.Cloneable {
- method public abstract java.lang.Object clone();
+ public interface CertStoreParameters extends java.lang.Cloneable {
+ method public Object clone();
}
public abstract class CertStoreSpi {
@@ -64583,56 +64642,56 @@
}
public abstract class Certificate implements java.io.Serializable {
- ctor protected Certificate(java.lang.String);
+ ctor protected Certificate(String);
method public abstract byte[] getEncoded() throws java.security.cert.CertificateEncodingException;
method public abstract java.security.PublicKey getPublicKey();
- method public final java.lang.String getType();
- method public abstract java.lang.String toString();
+ method public final String getType();
+ method public abstract String toString();
method public abstract void verify(java.security.PublicKey) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
- method public abstract void verify(java.security.PublicKey, java.lang.String) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
+ method public abstract void verify(java.security.PublicKey, String) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
- method protected java.lang.Object writeReplace() throws java.io.ObjectStreamException;
+ method protected Object writeReplace() throws java.io.ObjectStreamException;
}
protected static class Certificate.CertificateRep implements java.io.Serializable {
- ctor protected Certificate.CertificateRep(java.lang.String, byte[]);
- method protected java.lang.Object readResolve() throws java.io.ObjectStreamException;
+ ctor protected Certificate.CertificateRep(String, byte[]);
+ method protected Object readResolve() throws java.io.ObjectStreamException;
}
public class CertificateEncodingException extends java.security.cert.CertificateException {
ctor public CertificateEncodingException();
- ctor public CertificateEncodingException(java.lang.String);
- ctor public CertificateEncodingException(java.lang.String, java.lang.Throwable);
- ctor public CertificateEncodingException(java.lang.Throwable);
+ ctor public CertificateEncodingException(String);
+ ctor public CertificateEncodingException(String, Throwable);
+ ctor public CertificateEncodingException(Throwable);
}
public class CertificateException extends java.security.GeneralSecurityException {
ctor public CertificateException();
- ctor public CertificateException(java.lang.String);
- ctor public CertificateException(java.lang.String, java.lang.Throwable);
- ctor public CertificateException(java.lang.Throwable);
+ ctor public CertificateException(String);
+ ctor public CertificateException(String, Throwable);
+ ctor public CertificateException(Throwable);
}
public class CertificateExpiredException extends java.security.cert.CertificateException {
ctor public CertificateExpiredException();
- ctor public CertificateExpiredException(java.lang.String);
+ ctor public CertificateExpiredException(String);
}
public class CertificateFactory {
- ctor protected CertificateFactory(java.security.cert.CertificateFactorySpi, java.security.Provider, java.lang.String);
+ ctor protected CertificateFactory(java.security.cert.CertificateFactorySpi, java.security.Provider, String);
method public final java.security.cert.CRL generateCRL(java.io.InputStream) throws java.security.cert.CRLException;
method public final java.util.Collection<? extends java.security.cert.CRL> generateCRLs(java.io.InputStream) throws java.security.cert.CRLException;
method public final java.security.cert.CertPath generateCertPath(java.io.InputStream) throws java.security.cert.CertificateException;
- method public final java.security.cert.CertPath generateCertPath(java.io.InputStream, java.lang.String) throws java.security.cert.CertificateException;
+ method public final java.security.cert.CertPath generateCertPath(java.io.InputStream, String) throws java.security.cert.CertificateException;
method public final java.security.cert.CertPath generateCertPath(java.util.List<? extends java.security.cert.Certificate>) throws java.security.cert.CertificateException;
method public final java.security.cert.Certificate generateCertificate(java.io.InputStream) throws java.security.cert.CertificateException;
method public final java.util.Collection<? extends java.security.cert.Certificate> generateCertificates(java.io.InputStream) throws java.security.cert.CertificateException;
method public final java.util.Iterator<java.lang.String> getCertPathEncodings();
- method public static final java.security.cert.CertificateFactory getInstance(java.lang.String) throws java.security.cert.CertificateException;
- method public static final java.security.cert.CertificateFactory getInstance(java.lang.String, java.lang.String) throws java.security.cert.CertificateException, java.security.NoSuchProviderException;
- method public static final java.security.cert.CertificateFactory getInstance(java.lang.String, java.security.Provider) throws java.security.cert.CertificateException;
+ method public static final java.security.cert.CertificateFactory getInstance(String) throws java.security.cert.CertificateException;
+ method public static final java.security.cert.CertificateFactory getInstance(String, String) throws java.security.cert.CertificateException, java.security.NoSuchProviderException;
+ method public static final java.security.cert.CertificateFactory getInstance(String, java.security.Provider) throws java.security.cert.CertificateException;
method public final java.security.Provider getProvider();
- method public final java.lang.String getType();
+ method public final String getType();
}
public abstract class CertificateFactorySpi {
@@ -64640,7 +64699,7 @@
method public abstract java.security.cert.CRL engineGenerateCRL(java.io.InputStream) throws java.security.cert.CRLException;
method public abstract java.util.Collection<? extends java.security.cert.CRL> engineGenerateCRLs(java.io.InputStream) throws java.security.cert.CRLException;
method public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream) throws java.security.cert.CertificateException;
- method public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream, java.lang.String) throws java.security.cert.CertificateException;
+ method public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream, String) throws java.security.cert.CertificateException;
method public java.security.cert.CertPath engineGenerateCertPath(java.util.List<? extends java.security.cert.Certificate>) throws java.security.cert.CertificateException;
method public abstract java.security.cert.Certificate engineGenerateCertificate(java.io.InputStream) throws java.security.cert.CertificateException;
method public abstract java.util.Collection<? extends java.security.cert.Certificate> engineGenerateCertificates(java.io.InputStream) throws java.security.cert.CertificateException;
@@ -64649,20 +64708,20 @@
public class CertificateNotYetValidException extends java.security.cert.CertificateException {
ctor public CertificateNotYetValidException();
- ctor public CertificateNotYetValidException(java.lang.String);
+ ctor public CertificateNotYetValidException(String);
}
public class CertificateParsingException extends java.security.cert.CertificateException {
ctor public CertificateParsingException();
- ctor public CertificateParsingException(java.lang.String);
- ctor public CertificateParsingException(java.lang.String, java.lang.Throwable);
- ctor public CertificateParsingException(java.lang.Throwable);
+ ctor public CertificateParsingException(String);
+ ctor public CertificateParsingException(String, Throwable);
+ ctor public CertificateParsingException(Throwable);
}
public class CertificateRevokedException extends java.security.cert.CertificateException {
- ctor public CertificateRevokedException(java.util.Date, java.security.cert.CRLReason, javax.security.auth.x500.X500Principal, java.util.Map<java.lang.String, java.security.cert.Extension>);
+ ctor public CertificateRevokedException(java.util.Date, java.security.cert.CRLReason, javax.security.auth.x500.X500Principal, java.util.Map<java.lang.String,java.security.cert.Extension>);
method public javax.security.auth.x500.X500Principal getAuthorityName();
- method public java.util.Map<java.lang.String, java.security.cert.Extension> getExtensions();
+ method public java.util.Map<java.lang.String,java.security.cert.Extension> getExtensions();
method public java.util.Date getInvalidityDate();
method public java.util.Date getRevocationDate();
method public java.security.cert.CRLReason getRevocationReason();
@@ -64671,24 +64730,24 @@
public class CollectionCertStoreParameters implements java.security.cert.CertStoreParameters {
ctor public CollectionCertStoreParameters(java.util.Collection<?>);
ctor public CollectionCertStoreParameters();
- method public java.lang.Object clone();
+ method public Object clone();
method public java.util.Collection<?> getCollection();
}
- public abstract interface Extension {
- method public abstract void encode(java.io.OutputStream) throws java.io.IOException;
- method public abstract java.lang.String getId();
- method public abstract byte[] getValue();
- method public abstract boolean isCritical();
+ public interface Extension {
+ method public void encode(java.io.OutputStream) throws java.io.IOException;
+ method public String getId();
+ method public byte[] getValue();
+ method public boolean isCritical();
}
public class LDAPCertStoreParameters implements java.security.cert.CertStoreParameters {
- ctor public LDAPCertStoreParameters(java.lang.String, int);
- ctor public LDAPCertStoreParameters(java.lang.String);
+ ctor public LDAPCertStoreParameters(String, int);
+ ctor public LDAPCertStoreParameters(String);
ctor public LDAPCertStoreParameters();
- method public java.lang.Object clone();
+ method public Object clone();
method public int getPort();
- method public java.lang.String getServerName();
+ method public String getServerName();
}
public class PKIXBuilderParameters extends java.security.cert.PKIXParameters {
@@ -64707,13 +64766,13 @@
ctor protected PKIXCertPathChecker();
method public abstract void check(java.security.cert.Certificate, java.util.Collection<java.lang.String>) throws java.security.cert.CertPathValidatorException;
method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
- method public java.lang.Object clone();
+ method public Object clone();
method public abstract java.util.Set<java.lang.String> getSupportedExtensions();
}
public class PKIXCertPathValidatorResult implements java.security.cert.CertPathValidatorResult {
ctor public PKIXCertPathValidatorResult(java.security.cert.TrustAnchor, java.security.cert.PolicyNode, java.security.PublicKey);
- method public java.lang.Object clone();
+ method public Object clone();
method public java.security.cert.PolicyNode getPolicyTree();
method public java.security.PublicKey getPublicKey();
method public java.security.cert.TrustAnchor getTrustAnchor();
@@ -64724,13 +64783,13 @@
ctor public PKIXParameters(java.security.KeyStore) throws java.security.InvalidAlgorithmParameterException, java.security.KeyStoreException;
method public void addCertPathChecker(java.security.cert.PKIXCertPathChecker);
method public void addCertStore(java.security.cert.CertStore);
- method public java.lang.Object clone();
+ method public Object clone();
method public java.util.List<java.security.cert.PKIXCertPathChecker> getCertPathCheckers();
method public java.util.List<java.security.cert.CertStore> getCertStores();
method public java.util.Date getDate();
method public java.util.Set<java.lang.String> getInitialPolicies();
method public boolean getPolicyQualifiersRejected();
- method public java.lang.String getSigProvider();
+ method public String getSigProvider();
method public java.security.cert.CertSelector getTargetCertConstraints();
method public java.util.Set<java.security.cert.TrustAnchor> getTrustAnchors();
method public boolean isAnyPolicyInhibited();
@@ -64746,14 +64805,12 @@
method public void setPolicyMappingInhibited(boolean);
method public void setPolicyQualifiersRejected(boolean);
method public void setRevocationEnabled(boolean);
- method public void setSigProvider(java.lang.String);
+ method public void setSigProvider(String);
method public void setTargetCertConstraints(java.security.cert.CertSelector);
method public void setTrustAnchors(java.util.Set<java.security.cert.TrustAnchor>) throws java.security.InvalidAlgorithmParameterException;
}
- public final class PKIXReason extends java.lang.Enum implements java.security.cert.CertPathValidatorException.Reason {
- method public static java.security.cert.PKIXReason valueOf(java.lang.String);
- method public static final java.security.cert.PKIXReason[] values();
+ public enum PKIXReason implements java.security.cert.CertPathValidatorException.Reason {
enum_constant public static final java.security.cert.PKIXReason INVALID_KEY_USAGE;
enum_constant public static final java.security.cert.PKIXReason INVALID_NAME;
enum_constant public static final java.security.cert.PKIXReason INVALID_POLICY;
@@ -64770,48 +64827,46 @@
method public java.util.List<java.security.cert.Extension> getOcspExtensions();
method public java.net.URI getOcspResponder();
method public java.security.cert.X509Certificate getOcspResponderCert();
- method public java.util.Map<java.security.cert.X509Certificate, byte[]> getOcspResponses();
+ method public java.util.Map<java.security.cert.X509Certificate,byte[]> getOcspResponses();
method public java.util.Set<java.security.cert.PKIXRevocationChecker.Option> getOptions();
method public abstract java.util.List<java.security.cert.CertPathValidatorException> getSoftFailExceptions();
method public void setOcspExtensions(java.util.List<java.security.cert.Extension>);
method public void setOcspResponder(java.net.URI);
method public void setOcspResponderCert(java.security.cert.X509Certificate);
- method public void setOcspResponses(java.util.Map<java.security.cert.X509Certificate, byte[]>);
+ method public void setOcspResponses(java.util.Map<java.security.cert.X509Certificate,byte[]>);
method public void setOptions(java.util.Set<java.security.cert.PKIXRevocationChecker.Option>);
}
- public static final class PKIXRevocationChecker.Option extends java.lang.Enum {
- method public static java.security.cert.PKIXRevocationChecker.Option valueOf(java.lang.String);
- method public static final java.security.cert.PKIXRevocationChecker.Option[] values();
+ public enum PKIXRevocationChecker.Option {
enum_constant public static final java.security.cert.PKIXRevocationChecker.Option NO_FALLBACK;
enum_constant public static final java.security.cert.PKIXRevocationChecker.Option ONLY_END_ENTITY;
enum_constant public static final java.security.cert.PKIXRevocationChecker.Option PREFER_CRLS;
enum_constant public static final java.security.cert.PKIXRevocationChecker.Option SOFT_FAIL;
}
- public abstract interface PolicyNode {
- method public abstract java.util.Iterator<? extends java.security.cert.PolicyNode> getChildren();
- method public abstract int getDepth();
- method public abstract java.util.Set<java.lang.String> getExpectedPolicies();
- method public abstract java.security.cert.PolicyNode getParent();
- method public abstract java.util.Set<? extends java.security.cert.PolicyQualifierInfo> getPolicyQualifiers();
- method public abstract java.lang.String getValidPolicy();
- method public abstract boolean isCritical();
+ public interface PolicyNode {
+ method public java.util.Iterator<? extends java.security.cert.PolicyNode> getChildren();
+ method public int getDepth();
+ method public java.util.Set<java.lang.String> getExpectedPolicies();
+ method public java.security.cert.PolicyNode getParent();
+ method public java.util.Set<? extends java.security.cert.PolicyQualifierInfo> getPolicyQualifiers();
+ method public String getValidPolicy();
+ method public boolean isCritical();
}
public class PolicyQualifierInfo {
ctor public PolicyQualifierInfo(byte[]) throws java.io.IOException;
method public final byte[] getEncoded();
method public final byte[] getPolicyQualifier();
- method public final java.lang.String getPolicyQualifierId();
+ method public final String getPolicyQualifierId();
}
public class TrustAnchor {
ctor public TrustAnchor(java.security.cert.X509Certificate, byte[]);
ctor public TrustAnchor(javax.security.auth.x500.X500Principal, java.security.PublicKey, byte[]);
- ctor public TrustAnchor(java.lang.String, java.security.PublicKey, byte[]);
+ ctor public TrustAnchor(String, java.security.PublicKey, byte[]);
method public final javax.security.auth.x500.X500Principal getCA();
- method public final java.lang.String getCAName();
+ method public final String getCAName();
method public final java.security.PublicKey getCAPublicKey();
method public final byte[] getNameConstraints();
method public final java.security.cert.X509Certificate getTrustedCert();
@@ -64826,15 +64881,15 @@
method public abstract java.security.cert.X509CRLEntry getRevokedCertificate(java.math.BigInteger);
method public java.security.cert.X509CRLEntry getRevokedCertificate(java.security.cert.X509Certificate);
method public abstract java.util.Set<? extends java.security.cert.X509CRLEntry> getRevokedCertificates();
- method public abstract java.lang.String getSigAlgName();
- method public abstract java.lang.String getSigAlgOID();
+ method public abstract String getSigAlgName();
+ method public abstract String getSigAlgOID();
method public abstract byte[] getSigAlgParams();
method public abstract byte[] getSignature();
method public abstract byte[] getTBSCertList() throws java.security.cert.CRLException;
method public abstract java.util.Date getThisUpdate();
method public abstract int getVersion();
method public abstract void verify(java.security.PublicKey) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
- method public abstract void verify(java.security.PublicKey, java.lang.String) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
+ method public abstract void verify(java.security.PublicKey, String) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
}
@@ -64846,15 +64901,15 @@
method public java.security.cert.CRLReason getRevocationReason();
method public abstract java.math.BigInteger getSerialNumber();
method public abstract boolean hasExtensions();
- method public abstract java.lang.String toString();
+ method public abstract String toString();
}
public class X509CRLSelector implements java.security.cert.CRLSelector {
ctor public X509CRLSelector();
method public void addIssuer(javax.security.auth.x500.X500Principal);
- method public void addIssuerName(java.lang.String) throws java.io.IOException;
+ method public void addIssuerName(String) throws java.io.IOException;
method public void addIssuerName(byte[]) throws java.io.IOException;
- method public java.lang.Object clone();
+ method public Object clone();
method public java.security.cert.X509Certificate getCertificateChecking();
method public java.util.Date getDateAndTime();
method public java.util.Collection<java.lang.Object> getIssuerNames();
@@ -64872,11 +64927,11 @@
public class X509CertSelector implements java.security.cert.CertSelector {
ctor public X509CertSelector();
- method public void addPathToName(int, java.lang.String) throws java.io.IOException;
+ method public void addPathToName(int, String) throws java.io.IOException;
method public void addPathToName(int, byte[]) throws java.io.IOException;
- method public void addSubjectAlternativeName(int, java.lang.String) throws java.io.IOException;
+ method public void addSubjectAlternativeName(int, String) throws java.io.IOException;
method public void addSubjectAlternativeName(int, byte[]) throws java.io.IOException;
- method public java.lang.Object clone();
+ method public Object clone();
method public byte[] getAuthorityKeyIdentifier();
method public int getBasicConstraints();
method public java.security.cert.X509Certificate getCertificate();
@@ -64884,7 +64939,7 @@
method public java.util.Set<java.lang.String> getExtendedKeyUsage();
method public javax.security.auth.x500.X500Principal getIssuer();
method public byte[] getIssuerAsBytes() throws java.io.IOException;
- method public java.lang.String getIssuerAsString();
+ method public String getIssuerAsString();
method public boolean[] getKeyUsage();
method public boolean getMatchAllSubjectAltNames();
method public byte[] getNameConstraints();
@@ -64895,10 +64950,10 @@
method public javax.security.auth.x500.X500Principal getSubject();
method public java.util.Collection<java.util.List<?>> getSubjectAlternativeNames();
method public byte[] getSubjectAsBytes() throws java.io.IOException;
- method public java.lang.String getSubjectAsString();
+ method public String getSubjectAsString();
method public byte[] getSubjectKeyIdentifier();
method public java.security.PublicKey getSubjectPublicKey();
- method public java.lang.String getSubjectPublicKeyAlgID();
+ method public String getSubjectPublicKeyAlgID();
method public boolean match(java.security.cert.Certificate);
method public void setAuthorityKeyIdentifier(byte[]);
method public void setBasicConstraints(int);
@@ -64906,7 +64961,7 @@
method public void setCertificateValid(java.util.Date);
method public void setExtendedKeyUsage(java.util.Set<java.lang.String>) throws java.io.IOException;
method public void setIssuer(javax.security.auth.x500.X500Principal);
- method public void setIssuer(java.lang.String) throws java.io.IOException;
+ method public void setIssuer(String) throws java.io.IOException;
method public void setIssuer(byte[]) throws java.io.IOException;
method public void setKeyUsage(boolean[]);
method public void setMatchAllSubjectAltNames(boolean);
@@ -64916,13 +64971,13 @@
method public void setPrivateKeyValid(java.util.Date);
method public void setSerialNumber(java.math.BigInteger);
method public void setSubject(javax.security.auth.x500.X500Principal);
- method public void setSubject(java.lang.String) throws java.io.IOException;
+ method public void setSubject(String) throws java.io.IOException;
method public void setSubject(byte[]) throws java.io.IOException;
method public void setSubjectAlternativeNames(java.util.Collection<java.util.List<?>>) throws java.io.IOException;
method public void setSubjectKeyIdentifier(byte[]);
method public void setSubjectPublicKey(java.security.PublicKey);
method public void setSubjectPublicKey(byte[]) throws java.io.IOException;
- method public void setSubjectPublicKeyAlgID(java.lang.String) throws java.io.IOException;
+ method public void setSubjectPublicKeyAlgID(String) throws java.io.IOException;
}
public abstract class X509Certificate extends java.security.cert.Certificate implements java.security.cert.X509Extension {
@@ -64939,8 +64994,8 @@
method public abstract java.util.Date getNotAfter();
method public abstract java.util.Date getNotBefore();
method public abstract java.math.BigInteger getSerialNumber();
- method public abstract java.lang.String getSigAlgName();
- method public abstract java.lang.String getSigAlgOID();
+ method public abstract String getSigAlgName();
+ method public abstract String getSigAlgOID();
method public abstract byte[] getSigAlgParams();
method public abstract byte[] getSignature();
method public java.util.Collection<java.util.List<?>> getSubjectAlternativeNames() throws java.security.cert.CertificateParsingException;
@@ -64951,88 +65006,88 @@
method public abstract int getVersion();
}
- public abstract interface X509Extension {
- method public abstract java.util.Set<java.lang.String> getCriticalExtensionOIDs();
- method public abstract byte[] getExtensionValue(java.lang.String);
- method public abstract java.util.Set<java.lang.String> getNonCriticalExtensionOIDs();
- method public abstract boolean hasUnsupportedCriticalExtension();
+ public interface X509Extension {
+ method public java.util.Set<java.lang.String> getCriticalExtensionOIDs();
+ method public byte[] getExtensionValue(String);
+ method public java.util.Set<java.lang.String> getNonCriticalExtensionOIDs();
+ method public boolean hasUnsupportedCriticalExtension();
}
}
package java.security.interfaces {
- public abstract interface DSAKey {
- method public abstract java.security.interfaces.DSAParams getParams();
+ public interface DSAKey {
+ method public java.security.interfaces.DSAParams getParams();
}
- public abstract interface DSAKeyPairGenerator {
- method public abstract void initialize(java.security.interfaces.DSAParams, java.security.SecureRandom) throws java.security.InvalidParameterException;
- method public abstract void initialize(int, boolean, java.security.SecureRandom) throws java.security.InvalidParameterException;
+ public interface DSAKeyPairGenerator {
+ method public void initialize(java.security.interfaces.DSAParams, java.security.SecureRandom) throws java.security.InvalidParameterException;
+ method public void initialize(int, boolean, java.security.SecureRandom) throws java.security.InvalidParameterException;
}
- public abstract interface DSAParams {
- method public abstract java.math.BigInteger getG();
- method public abstract java.math.BigInteger getP();
- method public abstract java.math.BigInteger getQ();
+ public interface DSAParams {
+ method public java.math.BigInteger getG();
+ method public java.math.BigInteger getP();
+ method public java.math.BigInteger getQ();
}
- public abstract interface DSAPrivateKey implements java.security.interfaces.DSAKey java.security.PrivateKey {
- method public abstract java.math.BigInteger getX();
+ public interface DSAPrivateKey extends java.security.interfaces.DSAKey java.security.PrivateKey {
+ method public java.math.BigInteger getX();
field public static final long serialVersionUID = 7776497482533790279L; // 0x6bebab423b256247L
}
- public abstract interface DSAPublicKey implements java.security.interfaces.DSAKey java.security.PublicKey {
- method public abstract java.math.BigInteger getY();
+ public interface DSAPublicKey extends java.security.interfaces.DSAKey java.security.PublicKey {
+ method public java.math.BigInteger getY();
field public static final long serialVersionUID = 1234526332779022332L; // 0x1121eb28ab28c7fcL
}
- public abstract interface ECKey {
- method public abstract java.security.spec.ECParameterSpec getParams();
+ public interface ECKey {
+ method public java.security.spec.ECParameterSpec getParams();
}
- public abstract interface ECPrivateKey implements java.security.interfaces.ECKey java.security.PrivateKey {
- method public abstract java.math.BigInteger getS();
+ public interface ECPrivateKey extends java.security.PrivateKey java.security.interfaces.ECKey {
+ method public java.math.BigInteger getS();
field public static final long serialVersionUID = -7896394956925609184L; // 0x926a5e9fa2435b20L
}
- public abstract interface ECPublicKey implements java.security.interfaces.ECKey java.security.PublicKey {
- method public abstract java.security.spec.ECPoint getW();
+ public interface ECPublicKey extends java.security.PublicKey java.security.interfaces.ECKey {
+ method public java.security.spec.ECPoint getW();
field public static final long serialVersionUID = -3314988629879632826L; // 0xd1fecb679990cc46L
}
- public abstract interface RSAKey {
- method public abstract java.math.BigInteger getModulus();
+ public interface RSAKey {
+ method public java.math.BigInteger getModulus();
}
- public abstract interface RSAMultiPrimePrivateCrtKey implements java.security.interfaces.RSAPrivateKey {
- method public abstract java.math.BigInteger getCrtCoefficient();
- method public abstract java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo();
- method public abstract java.math.BigInteger getPrimeExponentP();
- method public abstract java.math.BigInteger getPrimeExponentQ();
- method public abstract java.math.BigInteger getPrimeP();
- method public abstract java.math.BigInteger getPrimeQ();
- method public abstract java.math.BigInteger getPublicExponent();
+ public interface RSAMultiPrimePrivateCrtKey extends java.security.interfaces.RSAPrivateKey {
+ method public java.math.BigInteger getCrtCoefficient();
+ method public java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo();
+ method public java.math.BigInteger getPrimeExponentP();
+ method public java.math.BigInteger getPrimeExponentQ();
+ method public java.math.BigInteger getPrimeP();
+ method public java.math.BigInteger getPrimeQ();
+ method public java.math.BigInteger getPublicExponent();
field public static final long serialVersionUID = 618058533534628008L; // 0x893c8f62dbaf8a8L
}
- public abstract interface RSAPrivateCrtKey implements java.security.interfaces.RSAPrivateKey {
- method public abstract java.math.BigInteger getCrtCoefficient();
- method public abstract java.math.BigInteger getPrimeExponentP();
- method public abstract java.math.BigInteger getPrimeExponentQ();
- method public abstract java.math.BigInteger getPrimeP();
- method public abstract java.math.BigInteger getPrimeQ();
- method public abstract java.math.BigInteger getPublicExponent();
+ public interface RSAPrivateCrtKey extends java.security.interfaces.RSAPrivateKey {
+ method public java.math.BigInteger getCrtCoefficient();
+ method public java.math.BigInteger getPrimeExponentP();
+ method public java.math.BigInteger getPrimeExponentQ();
+ method public java.math.BigInteger getPrimeP();
+ method public java.math.BigInteger getPrimeQ();
+ method public java.math.BigInteger getPublicExponent();
field public static final long serialVersionUID = -5682214253527700368L; // 0xb124b83df8d1ec70L
}
- public abstract interface RSAPrivateKey implements java.security.PrivateKey java.security.interfaces.RSAKey {
- method public abstract java.math.BigInteger getPrivateExponent();
+ public interface RSAPrivateKey extends java.security.PrivateKey java.security.interfaces.RSAKey {
+ method public java.math.BigInteger getPrivateExponent();
field public static final long serialVersionUID = 5187144804936595022L; // 0x47fc70b7a8c2364eL
}
- public abstract interface RSAPublicKey implements java.security.PublicKey java.security.interfaces.RSAKey {
- method public abstract java.math.BigInteger getPublicExponent();
+ public interface RSAPublicKey extends java.security.PublicKey java.security.interfaces.RSAKey {
+ method public java.math.BigInteger getPublicExponent();
field public static final long serialVersionUID = -8727434096241101194L; // 0x86e1ecedeceab676L
}
@@ -65040,7 +65095,7 @@
package java.security.spec {
- public abstract interface AlgorithmParameterSpec {
+ public interface AlgorithmParameterSpec {
}
public class DSAParameterSpec implements java.security.spec.AlgorithmParameterSpec java.security.interfaces.DSAParams {
@@ -65066,8 +65121,8 @@
method public java.math.BigInteger getY();
}
- public abstract interface ECField {
- method public abstract int getFieldSize();
+ public interface ECField {
+ method public int getFieldSize();
}
public class ECFieldF2m implements java.security.spec.ECField {
@@ -65087,8 +65142,8 @@
}
public class ECGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
- ctor public ECGenParameterSpec(java.lang.String);
- method public java.lang.String getName();
+ ctor public ECGenParameterSpec(String);
+ method public String getName();
}
public class ECParameterSpec implements java.security.spec.AlgorithmParameterSpec {
@@ -65130,27 +65185,27 @@
public abstract class EncodedKeySpec implements java.security.spec.KeySpec {
ctor public EncodedKeySpec(byte[]);
method public byte[] getEncoded();
- method public abstract java.lang.String getFormat();
+ method public abstract String getFormat();
}
public class InvalidKeySpecException extends java.security.GeneralSecurityException {
ctor public InvalidKeySpecException();
- ctor public InvalidKeySpecException(java.lang.String);
- ctor public InvalidKeySpecException(java.lang.String, java.lang.Throwable);
- ctor public InvalidKeySpecException(java.lang.Throwable);
+ ctor public InvalidKeySpecException(String);
+ ctor public InvalidKeySpecException(String, Throwable);
+ ctor public InvalidKeySpecException(Throwable);
}
public class InvalidParameterSpecException extends java.security.GeneralSecurityException {
ctor public InvalidParameterSpecException();
- ctor public InvalidParameterSpecException(java.lang.String);
+ ctor public InvalidParameterSpecException(String);
}
- public abstract interface KeySpec {
+ public interface KeySpec {
}
public class MGF1ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
- ctor public MGF1ParameterSpec(java.lang.String);
- method public java.lang.String getDigestAlgorithm();
+ ctor public MGF1ParameterSpec(String);
+ method public String getDigestAlgorithm();
field public static final java.security.spec.MGF1ParameterSpec SHA1;
field public static final java.security.spec.MGF1ParameterSpec SHA224;
field public static final java.security.spec.MGF1ParameterSpec SHA256;
@@ -65160,14 +65215,14 @@
public class PKCS8EncodedKeySpec extends java.security.spec.EncodedKeySpec {
ctor public PKCS8EncodedKeySpec(byte[]);
- method public final java.lang.String getFormat();
+ method public final String getFormat();
}
public class PSSParameterSpec implements java.security.spec.AlgorithmParameterSpec {
- ctor public PSSParameterSpec(java.lang.String, java.lang.String, java.security.spec.AlgorithmParameterSpec, int, int);
+ ctor public PSSParameterSpec(String, String, java.security.spec.AlgorithmParameterSpec, int, int);
ctor public PSSParameterSpec(int);
- method public java.lang.String getDigestAlgorithm();
- method public java.lang.String getMGFAlgorithm();
+ method public String getDigestAlgorithm();
+ method public String getMGFAlgorithm();
method public java.security.spec.AlgorithmParameterSpec getMGFParameters();
method public int getSaltLength();
method public int getTrailerField();
@@ -65224,242 +65279,240 @@
public class X509EncodedKeySpec extends java.security.spec.EncodedKeySpec {
ctor public X509EncodedKeySpec(byte[]);
- method public final java.lang.String getFormat();
+ method public final String getFormat();
}
}
package java.sql {
- public abstract interface Array {
- method public abstract void free() throws java.sql.SQLException;
- method public abstract java.lang.Object getArray() throws java.sql.SQLException;
- method public abstract java.lang.Object getArray(java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract java.lang.Object getArray(long, int) throws java.sql.SQLException;
- method public abstract java.lang.Object getArray(long, int, java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract int getBaseType() throws java.sql.SQLException;
- method public abstract java.lang.String getBaseTypeName() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getResultSet() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getResultSet(java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getResultSet(long, int) throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getResultSet(long, int, java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
+ public interface Array {
+ method public void free() throws java.sql.SQLException;
+ method public Object getArray() throws java.sql.SQLException;
+ method public Object getArray(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public Object getArray(long, int) throws java.sql.SQLException;
+ method public Object getArray(long, int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public int getBaseType() throws java.sql.SQLException;
+ method public String getBaseTypeName() throws java.sql.SQLException;
+ method public java.sql.ResultSet getResultSet() throws java.sql.SQLException;
+ method public java.sql.ResultSet getResultSet(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public java.sql.ResultSet getResultSet(long, int) throws java.sql.SQLException;
+ method public java.sql.ResultSet getResultSet(long, int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
}
public class BatchUpdateException extends java.sql.SQLException {
- ctor public BatchUpdateException(java.lang.String, java.lang.String, int, int[]);
- ctor public BatchUpdateException(java.lang.String, java.lang.String, int[]);
- ctor public BatchUpdateException(java.lang.String, int[]);
+ ctor public BatchUpdateException(String, String, int, int[]);
+ ctor public BatchUpdateException(String, String, int[]);
+ ctor public BatchUpdateException(String, int[]);
ctor public BatchUpdateException(int[]);
ctor public BatchUpdateException();
- ctor public BatchUpdateException(java.lang.Throwable);
- ctor public BatchUpdateException(int[], java.lang.Throwable);
- ctor public BatchUpdateException(java.lang.String, int[], java.lang.Throwable);
- ctor public BatchUpdateException(java.lang.String, java.lang.String, int[], java.lang.Throwable);
- ctor public BatchUpdateException(java.lang.String, java.lang.String, int, int[], java.lang.Throwable);
+ ctor public BatchUpdateException(Throwable);
+ ctor public BatchUpdateException(int[], Throwable);
+ ctor public BatchUpdateException(String, int[], Throwable);
+ ctor public BatchUpdateException(String, String, int[], Throwable);
+ ctor public BatchUpdateException(String, String, int, int[], Throwable);
method public int[] getUpdateCounts();
}
- public abstract interface Blob {
- method public abstract void free() throws java.sql.SQLException;
- method public abstract java.io.InputStream getBinaryStream() throws java.sql.SQLException;
- method public abstract java.io.InputStream getBinaryStream(long, long) throws java.sql.SQLException;
- method public abstract byte[] getBytes(long, int) throws java.sql.SQLException;
- method public abstract long length() throws java.sql.SQLException;
- method public abstract long position(byte[], long) throws java.sql.SQLException;
- method public abstract long position(java.sql.Blob, long) throws java.sql.SQLException;
- method public abstract java.io.OutputStream setBinaryStream(long) throws java.sql.SQLException;
- method public abstract int setBytes(long, byte[]) throws java.sql.SQLException;
- method public abstract int setBytes(long, byte[], int, int) throws java.sql.SQLException;
- method public abstract void truncate(long) throws java.sql.SQLException;
+ public interface Blob {
+ method public void free() throws java.sql.SQLException;
+ method public java.io.InputStream getBinaryStream() throws java.sql.SQLException;
+ method public java.io.InputStream getBinaryStream(long, long) throws java.sql.SQLException;
+ method public byte[] getBytes(long, int) throws java.sql.SQLException;
+ method public long length() throws java.sql.SQLException;
+ method public long position(byte[], long) throws java.sql.SQLException;
+ method public long position(java.sql.Blob, long) throws java.sql.SQLException;
+ method public java.io.OutputStream setBinaryStream(long) throws java.sql.SQLException;
+ method public int setBytes(long, byte[]) throws java.sql.SQLException;
+ method public int setBytes(long, byte[], int, int) throws java.sql.SQLException;
+ method public void truncate(long) throws java.sql.SQLException;
}
- public abstract interface CallableStatement implements java.sql.PreparedStatement {
- method public abstract java.sql.Array getArray(int) throws java.sql.SQLException;
- method public abstract java.sql.Array getArray(java.lang.String) throws java.sql.SQLException;
- method public abstract deprecated java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
- method public abstract java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
- method public abstract java.math.BigDecimal getBigDecimal(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Blob getBlob(int) throws java.sql.SQLException;
- method public abstract java.sql.Blob getBlob(java.lang.String) throws java.sql.SQLException;
- method public abstract boolean getBoolean(int) throws java.sql.SQLException;
- method public abstract boolean getBoolean(java.lang.String) throws java.sql.SQLException;
- method public abstract byte getByte(int) throws java.sql.SQLException;
- method public abstract byte getByte(java.lang.String) throws java.sql.SQLException;
- method public abstract byte[] getBytes(int) throws java.sql.SQLException;
- method public abstract byte[] getBytes(java.lang.String) throws java.sql.SQLException;
- method public abstract java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
- method public abstract java.io.Reader getCharacterStream(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Clob getClob(int) throws java.sql.SQLException;
- method public abstract java.sql.Clob getClob(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Date getDate(int) throws java.sql.SQLException;
- method public abstract java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
- method public abstract java.sql.Date getDate(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Date getDate(java.lang.String, java.util.Calendar) throws java.sql.SQLException;
- method public abstract double getDouble(int) throws java.sql.SQLException;
- method public abstract double getDouble(java.lang.String) throws java.sql.SQLException;
- method public abstract float getFloat(int) throws java.sql.SQLException;
- method public abstract float getFloat(java.lang.String) throws java.sql.SQLException;
- method public abstract int getInt(int) throws java.sql.SQLException;
- method public abstract int getInt(java.lang.String) throws java.sql.SQLException;
- method public abstract long getLong(int) throws java.sql.SQLException;
- method public abstract long getLong(java.lang.String) throws java.sql.SQLException;
- method public abstract java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
- method public abstract java.io.Reader getNCharacterStream(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.NClob getNClob(int) throws java.sql.SQLException;
- method public abstract java.sql.NClob getNClob(java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.String getNString(int) throws java.sql.SQLException;
- method public abstract java.lang.String getNString(java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.Object getObject(int) throws java.sql.SQLException;
- method public abstract java.lang.Object getObject(int, java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract java.lang.Object getObject(java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.Object getObject(java.lang.String, java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract java.sql.Ref getRef(int) throws java.sql.SQLException;
- method public abstract java.sql.Ref getRef(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.RowId getRowId(int) throws java.sql.SQLException;
- method public abstract java.sql.RowId getRowId(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
- method public abstract java.sql.SQLXML getSQLXML(java.lang.String) throws java.sql.SQLException;
- method public abstract short getShort(int) throws java.sql.SQLException;
- method public abstract short getShort(java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.String getString(int) throws java.sql.SQLException;
- method public abstract java.lang.String getString(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Time getTime(int) throws java.sql.SQLException;
- method public abstract java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
- method public abstract java.sql.Time getTime(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Time getTime(java.lang.String, java.util.Calendar) throws java.sql.SQLException;
- method public abstract java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
- method public abstract java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
- method public abstract java.sql.Timestamp getTimestamp(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Timestamp getTimestamp(java.lang.String, java.util.Calendar) throws java.sql.SQLException;
- method public abstract java.net.URL getURL(int) throws java.sql.SQLException;
- method public abstract java.net.URL getURL(java.lang.String) throws java.sql.SQLException;
- method public abstract void registerOutParameter(int, int) throws java.sql.SQLException;
- method public abstract void registerOutParameter(int, int, int) throws java.sql.SQLException;
- method public abstract void registerOutParameter(int, int, java.lang.String) throws java.sql.SQLException;
- method public abstract void registerOutParameter(java.lang.String, int) throws java.sql.SQLException;
- method public abstract void registerOutParameter(java.lang.String, int, int) throws java.sql.SQLException;
- method public abstract void registerOutParameter(java.lang.String, int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setAsciiStream(java.lang.String, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void setAsciiStream(java.lang.String, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void setAsciiStream(java.lang.String, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBigDecimal(java.lang.String, java.math.BigDecimal) throws java.sql.SQLException;
- method public abstract void setBinaryStream(java.lang.String, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void setBinaryStream(java.lang.String, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void setBinaryStream(java.lang.String, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBlob(java.lang.String, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void setBlob(java.lang.String, java.sql.Blob) throws java.sql.SQLException;
- method public abstract void setBlob(java.lang.String, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBoolean(java.lang.String, boolean) throws java.sql.SQLException;
- method public abstract void setByte(java.lang.String, byte) throws java.sql.SQLException;
- method public abstract void setBytes(java.lang.String, byte[]) throws java.sql.SQLException;
- method public abstract void setCharacterStream(java.lang.String, java.io.Reader, int) throws java.sql.SQLException;
- method public abstract void setCharacterStream(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setCharacterStream(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setClob(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setClob(java.lang.String, java.sql.Clob) throws java.sql.SQLException;
- method public abstract void setClob(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setDate(java.lang.String, java.sql.Date) throws java.sql.SQLException;
- method public abstract void setDate(java.lang.String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setDouble(java.lang.String, double) throws java.sql.SQLException;
- method public abstract void setFloat(java.lang.String, float) throws java.sql.SQLException;
- method public abstract void setInt(java.lang.String, int) throws java.sql.SQLException;
- method public abstract void setLong(java.lang.String, long) throws java.sql.SQLException;
- method public abstract void setNCharacterStream(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setNCharacterStream(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setNClob(java.lang.String, java.sql.NClob) throws java.sql.SQLException;
- method public abstract void setNClob(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setNClob(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setNString(java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract void setNull(java.lang.String, int) throws java.sql.SQLException;
- method public abstract void setNull(java.lang.String, int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setObject(java.lang.String, java.lang.Object, int, int) throws java.sql.SQLException;
- method public abstract void setObject(java.lang.String, java.lang.Object, int) throws java.sql.SQLException;
- method public abstract void setObject(java.lang.String, java.lang.Object) throws java.sql.SQLException;
- method public abstract void setRowId(java.lang.String, java.sql.RowId) throws java.sql.SQLException;
- method public abstract void setSQLXML(java.lang.String, java.sql.SQLXML) throws java.sql.SQLException;
- method public abstract void setShort(java.lang.String, short) throws java.sql.SQLException;
- method public abstract void setString(java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract void setTime(java.lang.String, java.sql.Time) throws java.sql.SQLException;
- method public abstract void setTime(java.lang.String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setTimestamp(java.lang.String, java.sql.Timestamp) throws java.sql.SQLException;
- method public abstract void setTimestamp(java.lang.String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setURL(java.lang.String, java.net.URL) throws java.sql.SQLException;
- method public abstract boolean wasNull() throws java.sql.SQLException;
+ public interface CallableStatement extends java.sql.PreparedStatement {
+ method public java.sql.Array getArray(int) throws java.sql.SQLException;
+ method public java.sql.Array getArray(String) throws java.sql.SQLException;
+ method @Deprecated public java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
+ method public java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
+ method public java.math.BigDecimal getBigDecimal(String) throws java.sql.SQLException;
+ method public java.sql.Blob getBlob(int) throws java.sql.SQLException;
+ method public java.sql.Blob getBlob(String) throws java.sql.SQLException;
+ method public boolean getBoolean(int) throws java.sql.SQLException;
+ method public boolean getBoolean(String) throws java.sql.SQLException;
+ method public byte getByte(int) throws java.sql.SQLException;
+ method public byte getByte(String) throws java.sql.SQLException;
+ method public byte[] getBytes(int) throws java.sql.SQLException;
+ method public byte[] getBytes(String) throws java.sql.SQLException;
+ method public java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
+ method public java.io.Reader getCharacterStream(String) throws java.sql.SQLException;
+ method public java.sql.Clob getClob(int) throws java.sql.SQLException;
+ method public java.sql.Clob getClob(String) throws java.sql.SQLException;
+ method public java.sql.Date getDate(int) throws java.sql.SQLException;
+ method public java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
+ method public java.sql.Date getDate(String) throws java.sql.SQLException;
+ method public java.sql.Date getDate(String, java.util.Calendar) throws java.sql.SQLException;
+ method public double getDouble(int) throws java.sql.SQLException;
+ method public double getDouble(String) throws java.sql.SQLException;
+ method public float getFloat(int) throws java.sql.SQLException;
+ method public float getFloat(String) throws java.sql.SQLException;
+ method public int getInt(int) throws java.sql.SQLException;
+ method public int getInt(String) throws java.sql.SQLException;
+ method public long getLong(int) throws java.sql.SQLException;
+ method public long getLong(String) throws java.sql.SQLException;
+ method public java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
+ method public java.io.Reader getNCharacterStream(String) throws java.sql.SQLException;
+ method public java.sql.NClob getNClob(int) throws java.sql.SQLException;
+ method public java.sql.NClob getNClob(String) throws java.sql.SQLException;
+ method public String getNString(int) throws java.sql.SQLException;
+ method public String getNString(String) throws java.sql.SQLException;
+ method public Object getObject(int) throws java.sql.SQLException;
+ method public Object getObject(int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public Object getObject(String) throws java.sql.SQLException;
+ method public Object getObject(String, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public java.sql.Ref getRef(int) throws java.sql.SQLException;
+ method public java.sql.Ref getRef(String) throws java.sql.SQLException;
+ method public java.sql.RowId getRowId(int) throws java.sql.SQLException;
+ method public java.sql.RowId getRowId(String) throws java.sql.SQLException;
+ method public java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
+ method public java.sql.SQLXML getSQLXML(String) throws java.sql.SQLException;
+ method public short getShort(int) throws java.sql.SQLException;
+ method public short getShort(String) throws java.sql.SQLException;
+ method public String getString(int) throws java.sql.SQLException;
+ method public String getString(String) throws java.sql.SQLException;
+ method public java.sql.Time getTime(int) throws java.sql.SQLException;
+ method public java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
+ method public java.sql.Time getTime(String) throws java.sql.SQLException;
+ method public java.sql.Time getTime(String, java.util.Calendar) throws java.sql.SQLException;
+ method public java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
+ method public java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
+ method public java.sql.Timestamp getTimestamp(String) throws java.sql.SQLException;
+ method public java.sql.Timestamp getTimestamp(String, java.util.Calendar) throws java.sql.SQLException;
+ method public java.net.URL getURL(int) throws java.sql.SQLException;
+ method public java.net.URL getURL(String) throws java.sql.SQLException;
+ method public void registerOutParameter(int, int) throws java.sql.SQLException;
+ method public void registerOutParameter(int, int, int) throws java.sql.SQLException;
+ method public void registerOutParameter(int, int, String) throws java.sql.SQLException;
+ method public void registerOutParameter(String, int) throws java.sql.SQLException;
+ method public void registerOutParameter(String, int, int) throws java.sql.SQLException;
+ method public void registerOutParameter(String, int, String) throws java.sql.SQLException;
+ method public void setAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void setAsciiStream(String, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void setAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
+ method public void setBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void setBinaryStream(String, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void setBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void setBlob(String, java.sql.Blob) throws java.sql.SQLException;
+ method public void setBlob(String, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBoolean(String, boolean) throws java.sql.SQLException;
+ method public void setByte(String, byte) throws java.sql.SQLException;
+ method public void setBytes(String, byte[]) throws java.sql.SQLException;
+ method public void setCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
+ method public void setCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+ method public void setClob(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setClob(String, java.sql.Clob) throws java.sql.SQLException;
+ method public void setClob(String, java.io.Reader) throws java.sql.SQLException;
+ method public void setDate(String, java.sql.Date) throws java.sql.SQLException;
+ method public void setDate(String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
+ method public void setDouble(String, double) throws java.sql.SQLException;
+ method public void setFloat(String, float) throws java.sql.SQLException;
+ method public void setInt(String, int) throws java.sql.SQLException;
+ method public void setLong(String, long) throws java.sql.SQLException;
+ method public void setNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+ method public void setNClob(String, java.sql.NClob) throws java.sql.SQLException;
+ method public void setNClob(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setNClob(String, java.io.Reader) throws java.sql.SQLException;
+ method public void setNString(String, String) throws java.sql.SQLException;
+ method public void setNull(String, int) throws java.sql.SQLException;
+ method public void setNull(String, int, String) throws java.sql.SQLException;
+ method public void setObject(String, Object, int, int) throws java.sql.SQLException;
+ method public void setObject(String, Object, int) throws java.sql.SQLException;
+ method public void setObject(String, Object) throws java.sql.SQLException;
+ method public void setRowId(String, java.sql.RowId) throws java.sql.SQLException;
+ method public void setSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
+ method public void setShort(String, short) throws java.sql.SQLException;
+ method public void setString(String, String) throws java.sql.SQLException;
+ method public void setTime(String, java.sql.Time) throws java.sql.SQLException;
+ method public void setTime(String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
+ method public void setTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
+ method public void setTimestamp(String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
+ method public void setURL(String, java.net.URL) throws java.sql.SQLException;
+ method public boolean wasNull() throws java.sql.SQLException;
}
- public final class ClientInfoStatus extends java.lang.Enum {
- method public static java.sql.ClientInfoStatus valueOf(java.lang.String);
- method public static final java.sql.ClientInfoStatus[] values();
+ public enum ClientInfoStatus {
enum_constant public static final java.sql.ClientInfoStatus REASON_UNKNOWN;
enum_constant public static final java.sql.ClientInfoStatus REASON_UNKNOWN_PROPERTY;
enum_constant public static final java.sql.ClientInfoStatus REASON_VALUE_INVALID;
enum_constant public static final java.sql.ClientInfoStatus REASON_VALUE_TRUNCATED;
}
- public abstract interface Clob {
- method public abstract void free() throws java.sql.SQLException;
- method public abstract java.io.InputStream getAsciiStream() throws java.sql.SQLException;
- method public abstract java.io.Reader getCharacterStream() throws java.sql.SQLException;
- method public abstract java.io.Reader getCharacterStream(long, long) throws java.sql.SQLException;
- method public abstract java.lang.String getSubString(long, int) throws java.sql.SQLException;
- method public abstract long length() throws java.sql.SQLException;
- method public abstract long position(java.lang.String, long) throws java.sql.SQLException;
- method public abstract long position(java.sql.Clob, long) throws java.sql.SQLException;
- method public abstract java.io.OutputStream setAsciiStream(long) throws java.sql.SQLException;
- method public abstract java.io.Writer setCharacterStream(long) throws java.sql.SQLException;
- method public abstract int setString(long, java.lang.String) throws java.sql.SQLException;
- method public abstract int setString(long, java.lang.String, int, int) throws java.sql.SQLException;
- method public abstract void truncate(long) throws java.sql.SQLException;
+ public interface Clob {
+ method public void free() throws java.sql.SQLException;
+ method public java.io.InputStream getAsciiStream() throws java.sql.SQLException;
+ method public java.io.Reader getCharacterStream() throws java.sql.SQLException;
+ method public java.io.Reader getCharacterStream(long, long) throws java.sql.SQLException;
+ method public String getSubString(long, int) throws java.sql.SQLException;
+ method public long length() throws java.sql.SQLException;
+ method public long position(String, long) throws java.sql.SQLException;
+ method public long position(java.sql.Clob, long) throws java.sql.SQLException;
+ method public java.io.OutputStream setAsciiStream(long) throws java.sql.SQLException;
+ method public java.io.Writer setCharacterStream(long) throws java.sql.SQLException;
+ method public int setString(long, String) throws java.sql.SQLException;
+ method public int setString(long, String, int, int) throws java.sql.SQLException;
+ method public void truncate(long) throws java.sql.SQLException;
}
- public abstract interface Connection implements java.lang.AutoCloseable java.sql.Wrapper {
- method public abstract void clearWarnings() throws java.sql.SQLException;
- method public abstract void close() throws java.sql.SQLException;
- method public abstract void commit() throws java.sql.SQLException;
- method public abstract java.sql.Array createArrayOf(java.lang.String, java.lang.Object[]) throws java.sql.SQLException;
- method public abstract java.sql.Blob createBlob() throws java.sql.SQLException;
- method public abstract java.sql.Clob createClob() throws java.sql.SQLException;
- method public abstract java.sql.NClob createNClob() throws java.sql.SQLException;
- method public abstract java.sql.SQLXML createSQLXML() throws java.sql.SQLException;
- method public abstract java.sql.Statement createStatement() throws java.sql.SQLException;
- method public abstract java.sql.Statement createStatement(int, int) throws java.sql.SQLException;
- method public abstract java.sql.Statement createStatement(int, int, int) throws java.sql.SQLException;
- method public abstract java.sql.Struct createStruct(java.lang.String, java.lang.Object[]) throws java.sql.SQLException;
- method public abstract boolean getAutoCommit() throws java.sql.SQLException;
- method public abstract java.lang.String getCatalog() throws java.sql.SQLException;
- method public abstract java.lang.String getClientInfo(java.lang.String) throws java.sql.SQLException;
- method public abstract java.util.Properties getClientInfo() throws java.sql.SQLException;
- method public abstract int getHoldability() throws java.sql.SQLException;
- method public abstract java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException;
- method public abstract int getTransactionIsolation() throws java.sql.SQLException;
- method public abstract java.util.Map<java.lang.String, java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
- method public abstract java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
- method public abstract boolean isClosed() throws java.sql.SQLException;
- method public abstract boolean isReadOnly() throws java.sql.SQLException;
- method public abstract boolean isValid(int) throws java.sql.SQLException;
- method public abstract java.lang.String nativeSQL(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.CallableStatement prepareCall(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.CallableStatement prepareCall(java.lang.String, int, int) throws java.sql.SQLException;
- method public abstract java.sql.CallableStatement prepareCall(java.lang.String, int, int, int) throws java.sql.SQLException;
- method public abstract java.sql.PreparedStatement prepareStatement(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.PreparedStatement prepareStatement(java.lang.String, int, int) throws java.sql.SQLException;
- method public abstract java.sql.PreparedStatement prepareStatement(java.lang.String, int, int, int) throws java.sql.SQLException;
- method public abstract java.sql.PreparedStatement prepareStatement(java.lang.String, int) throws java.sql.SQLException;
- method public abstract java.sql.PreparedStatement prepareStatement(java.lang.String, int[]) throws java.sql.SQLException;
- method public abstract java.sql.PreparedStatement prepareStatement(java.lang.String, java.lang.String[]) throws java.sql.SQLException;
- method public abstract void releaseSavepoint(java.sql.Savepoint) throws java.sql.SQLException;
- method public abstract void rollback() throws java.sql.SQLException;
- method public abstract void rollback(java.sql.Savepoint) throws java.sql.SQLException;
- method public abstract void setAutoCommit(boolean) throws java.sql.SQLException;
- method public abstract void setCatalog(java.lang.String) throws java.sql.SQLException;
- method public abstract void setClientInfo(java.lang.String, java.lang.String) throws java.sql.SQLClientInfoException;
- method public abstract void setClientInfo(java.util.Properties) throws java.sql.SQLClientInfoException;
- method public abstract void setHoldability(int) throws java.sql.SQLException;
- method public abstract void setReadOnly(boolean) throws java.sql.SQLException;
- method public abstract java.sql.Savepoint setSavepoint() throws java.sql.SQLException;
- method public abstract java.sql.Savepoint setSavepoint(java.lang.String) throws java.sql.SQLException;
- method public abstract void setTransactionIsolation(int) throws java.sql.SQLException;
- method public abstract void setTypeMap(java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
+ public interface Connection extends java.sql.Wrapper java.lang.AutoCloseable {
+ method public void clearWarnings() throws java.sql.SQLException;
+ method public void close() throws java.sql.SQLException;
+ method public void commit() throws java.sql.SQLException;
+ method public java.sql.Array createArrayOf(String, Object[]) throws java.sql.SQLException;
+ method public java.sql.Blob createBlob() throws java.sql.SQLException;
+ method public java.sql.Clob createClob() throws java.sql.SQLException;
+ method public java.sql.NClob createNClob() throws java.sql.SQLException;
+ method public java.sql.SQLXML createSQLXML() throws java.sql.SQLException;
+ method public java.sql.Statement createStatement() throws java.sql.SQLException;
+ method public java.sql.Statement createStatement(int, int) throws java.sql.SQLException;
+ method public java.sql.Statement createStatement(int, int, int) throws java.sql.SQLException;
+ method public java.sql.Struct createStruct(String, Object[]) throws java.sql.SQLException;
+ method public boolean getAutoCommit() throws java.sql.SQLException;
+ method public String getCatalog() throws java.sql.SQLException;
+ method public String getClientInfo(String) throws java.sql.SQLException;
+ method public java.util.Properties getClientInfo() throws java.sql.SQLException;
+ method public int getHoldability() throws java.sql.SQLException;
+ method public java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException;
+ method public int getTransactionIsolation() throws java.sql.SQLException;
+ method public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
+ method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
+ method public boolean isClosed() throws java.sql.SQLException;
+ method public boolean isReadOnly() throws java.sql.SQLException;
+ method public boolean isValid(int) throws java.sql.SQLException;
+ method public String nativeSQL(String) throws java.sql.SQLException;
+ method public java.sql.CallableStatement prepareCall(String) throws java.sql.SQLException;
+ method public java.sql.CallableStatement prepareCall(String, int, int) throws java.sql.SQLException;
+ method public java.sql.CallableStatement prepareCall(String, int, int, int) throws java.sql.SQLException;
+ method public java.sql.PreparedStatement prepareStatement(String) throws java.sql.SQLException;
+ method public java.sql.PreparedStatement prepareStatement(String, int, int) throws java.sql.SQLException;
+ method public java.sql.PreparedStatement prepareStatement(String, int, int, int) throws java.sql.SQLException;
+ method public java.sql.PreparedStatement prepareStatement(String, int) throws java.sql.SQLException;
+ method public java.sql.PreparedStatement prepareStatement(String, int[]) throws java.sql.SQLException;
+ method public java.sql.PreparedStatement prepareStatement(String, String[]) throws java.sql.SQLException;
+ method public void releaseSavepoint(java.sql.Savepoint) throws java.sql.SQLException;
+ method public void rollback() throws java.sql.SQLException;
+ method public void rollback(java.sql.Savepoint) throws java.sql.SQLException;
+ method public void setAutoCommit(boolean) throws java.sql.SQLException;
+ method public void setCatalog(String) throws java.sql.SQLException;
+ method public void setClientInfo(String, String) throws java.sql.SQLClientInfoException;
+ method public void setClientInfo(java.util.Properties) throws java.sql.SQLClientInfoException;
+ method public void setHoldability(int) throws java.sql.SQLException;
+ method public void setReadOnly(boolean) throws java.sql.SQLException;
+ method public java.sql.Savepoint setSavepoint() throws java.sql.SQLException;
+ method public java.sql.Savepoint setSavepoint(String) throws java.sql.SQLException;
+ method public void setTransactionIsolation(int) throws java.sql.SQLException;
+ method public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
field public static final int TRANSACTION_NONE = 0; // 0x0
field public static final int TRANSACTION_READ_COMMITTED = 2; // 0x2
field public static final int TRANSACTION_READ_UNCOMMITTED = 1; // 0x1
@@ -65469,7 +65522,7 @@
public class DataTruncation extends java.sql.SQLWarning {
ctor public DataTruncation(int, boolean, boolean, int, int);
- ctor public DataTruncation(int, boolean, boolean, int, int, java.lang.Throwable);
+ ctor public DataTruncation(int, boolean, boolean, int, int, Throwable);
method public int getDataSize();
method public int getIndex();
method public boolean getParameter();
@@ -65477,179 +65530,179 @@
method public int getTransferSize();
}
- public abstract interface DatabaseMetaData implements java.sql.Wrapper {
- method public abstract boolean allProceduresAreCallable() throws java.sql.SQLException;
- method public abstract boolean allTablesAreSelectable() throws java.sql.SQLException;
- method public abstract boolean autoCommitFailureClosesAllResultSets() throws java.sql.SQLException;
- method public abstract boolean dataDefinitionCausesTransactionCommit() throws java.sql.SQLException;
- method public abstract boolean dataDefinitionIgnoredInTransactions() throws java.sql.SQLException;
- method public abstract boolean deletesAreDetected(int) throws java.sql.SQLException;
- method public abstract boolean doesMaxRowSizeIncludeBlobs() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getAttributes(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getBestRowIdentifier(java.lang.String, java.lang.String, java.lang.String, int, boolean) throws java.sql.SQLException;
- method public abstract java.lang.String getCatalogSeparator() throws java.sql.SQLException;
- method public abstract java.lang.String getCatalogTerm() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getCatalogs() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getClientInfoProperties() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getColumnPrivileges(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Connection getConnection() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getCrossReference(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract int getDatabaseMajorVersion() throws java.sql.SQLException;
- method public abstract int getDatabaseMinorVersion() throws java.sql.SQLException;
- method public abstract java.lang.String getDatabaseProductName() throws java.sql.SQLException;
- method public abstract java.lang.String getDatabaseProductVersion() throws java.sql.SQLException;
- method public abstract int getDefaultTransactionIsolation() throws java.sql.SQLException;
- method public abstract int getDriverMajorVersion();
- method public abstract int getDriverMinorVersion();
- method public abstract java.lang.String getDriverName() throws java.sql.SQLException;
- method public abstract java.lang.String getDriverVersion() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getExportedKeys(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.String getExtraNameCharacters() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getFunctionColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getFunctions(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.String getIdentifierQuoteString() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getImportedKeys(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getIndexInfo(java.lang.String, java.lang.String, java.lang.String, boolean, boolean) throws java.sql.SQLException;
- method public abstract int getJDBCMajorVersion() throws java.sql.SQLException;
- method public abstract int getJDBCMinorVersion() throws java.sql.SQLException;
- method public abstract int getMaxBinaryLiteralLength() throws java.sql.SQLException;
- method public abstract int getMaxCatalogNameLength() throws java.sql.SQLException;
- method public abstract int getMaxCharLiteralLength() throws java.sql.SQLException;
- method public abstract int getMaxColumnNameLength() throws java.sql.SQLException;
- method public abstract int getMaxColumnsInGroupBy() throws java.sql.SQLException;
- method public abstract int getMaxColumnsInIndex() throws java.sql.SQLException;
- method public abstract int getMaxColumnsInOrderBy() throws java.sql.SQLException;
- method public abstract int getMaxColumnsInSelect() throws java.sql.SQLException;
- method public abstract int getMaxColumnsInTable() throws java.sql.SQLException;
- method public abstract int getMaxConnections() throws java.sql.SQLException;
- method public abstract int getMaxCursorNameLength() throws java.sql.SQLException;
- method public abstract int getMaxIndexLength() throws java.sql.SQLException;
- method public abstract int getMaxProcedureNameLength() throws java.sql.SQLException;
- method public abstract int getMaxRowSize() throws java.sql.SQLException;
- method public abstract int getMaxSchemaNameLength() throws java.sql.SQLException;
- method public abstract int getMaxStatementLength() throws java.sql.SQLException;
- method public abstract int getMaxStatements() throws java.sql.SQLException;
- method public abstract int getMaxTableNameLength() throws java.sql.SQLException;
- method public abstract int getMaxTablesInSelect() throws java.sql.SQLException;
- method public abstract int getMaxUserNameLength() throws java.sql.SQLException;
- method public abstract java.lang.String getNumericFunctions() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getPrimaryKeys(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getProcedureColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.String getProcedureTerm() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getProcedures(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract int getResultSetHoldability() throws java.sql.SQLException;
- method public abstract java.sql.RowIdLifetime getRowIdLifetime() throws java.sql.SQLException;
- method public abstract java.lang.String getSQLKeywords() throws java.sql.SQLException;
- method public abstract int getSQLStateType() throws java.sql.SQLException;
- method public abstract java.lang.String getSchemaTerm() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getSchemas() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getSchemas(java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.String getSearchStringEscape() throws java.sql.SQLException;
- method public abstract java.lang.String getStringFunctions() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getSuperTables(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getSuperTypes(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.String getSystemFunctions() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getTablePrivileges(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getTableTypes() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getTables(java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) throws java.sql.SQLException;
- method public abstract java.lang.String getTimeDateFunctions() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getTypeInfo() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getUDTs(java.lang.String, java.lang.String, java.lang.String, int[]) throws java.sql.SQLException;
- method public abstract java.lang.String getURL() throws java.sql.SQLException;
- method public abstract java.lang.String getUserName() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getVersionColumns(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract boolean insertsAreDetected(int) throws java.sql.SQLException;
- method public abstract boolean isCatalogAtStart() throws java.sql.SQLException;
- method public abstract boolean isReadOnly() throws java.sql.SQLException;
- method public abstract boolean locatorsUpdateCopy() throws java.sql.SQLException;
- method public abstract boolean nullPlusNonNullIsNull() throws java.sql.SQLException;
- method public abstract boolean nullsAreSortedAtEnd() throws java.sql.SQLException;
- method public abstract boolean nullsAreSortedAtStart() throws java.sql.SQLException;
- method public abstract boolean nullsAreSortedHigh() throws java.sql.SQLException;
- method public abstract boolean nullsAreSortedLow() throws java.sql.SQLException;
- method public abstract boolean othersDeletesAreVisible(int) throws java.sql.SQLException;
- method public abstract boolean othersInsertsAreVisible(int) throws java.sql.SQLException;
- method public abstract boolean othersUpdatesAreVisible(int) throws java.sql.SQLException;
- method public abstract boolean ownDeletesAreVisible(int) throws java.sql.SQLException;
- method public abstract boolean ownInsertsAreVisible(int) throws java.sql.SQLException;
- method public abstract boolean ownUpdatesAreVisible(int) throws java.sql.SQLException;
- method public abstract boolean storesLowerCaseIdentifiers() throws java.sql.SQLException;
- method public abstract boolean storesLowerCaseQuotedIdentifiers() throws java.sql.SQLException;
- method public abstract boolean storesMixedCaseIdentifiers() throws java.sql.SQLException;
- method public abstract boolean storesMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
- method public abstract boolean storesUpperCaseIdentifiers() throws java.sql.SQLException;
- method public abstract boolean storesUpperCaseQuotedIdentifiers() throws java.sql.SQLException;
- method public abstract boolean supportsANSI92EntryLevelSQL() throws java.sql.SQLException;
- method public abstract boolean supportsANSI92FullSQL() throws java.sql.SQLException;
- method public abstract boolean supportsANSI92IntermediateSQL() throws java.sql.SQLException;
- method public abstract boolean supportsAlterTableWithAddColumn() throws java.sql.SQLException;
- method public abstract boolean supportsAlterTableWithDropColumn() throws java.sql.SQLException;
- method public abstract boolean supportsBatchUpdates() throws java.sql.SQLException;
- method public abstract boolean supportsCatalogsInDataManipulation() throws java.sql.SQLException;
- method public abstract boolean supportsCatalogsInIndexDefinitions() throws java.sql.SQLException;
- method public abstract boolean supportsCatalogsInPrivilegeDefinitions() throws java.sql.SQLException;
- method public abstract boolean supportsCatalogsInProcedureCalls() throws java.sql.SQLException;
- method public abstract boolean supportsCatalogsInTableDefinitions() throws java.sql.SQLException;
- method public abstract boolean supportsColumnAliasing() throws java.sql.SQLException;
- method public abstract boolean supportsConvert() throws java.sql.SQLException;
- method public abstract boolean supportsConvert(int, int) throws java.sql.SQLException;
- method public abstract boolean supportsCoreSQLGrammar() throws java.sql.SQLException;
- method public abstract boolean supportsCorrelatedSubqueries() throws java.sql.SQLException;
- method public abstract boolean supportsDataDefinitionAndDataManipulationTransactions() throws java.sql.SQLException;
- method public abstract boolean supportsDataManipulationTransactionsOnly() throws java.sql.SQLException;
- method public abstract boolean supportsDifferentTableCorrelationNames() throws java.sql.SQLException;
- method public abstract boolean supportsExpressionsInOrderBy() throws java.sql.SQLException;
- method public abstract boolean supportsExtendedSQLGrammar() throws java.sql.SQLException;
- method public abstract boolean supportsFullOuterJoins() throws java.sql.SQLException;
- method public abstract boolean supportsGetGeneratedKeys() throws java.sql.SQLException;
- method public abstract boolean supportsGroupBy() throws java.sql.SQLException;
- method public abstract boolean supportsGroupByBeyondSelect() throws java.sql.SQLException;
- method public abstract boolean supportsGroupByUnrelated() throws java.sql.SQLException;
- method public abstract boolean supportsIntegrityEnhancementFacility() throws java.sql.SQLException;
- method public abstract boolean supportsLikeEscapeClause() throws java.sql.SQLException;
- method public abstract boolean supportsLimitedOuterJoins() throws java.sql.SQLException;
- method public abstract boolean supportsMinimumSQLGrammar() throws java.sql.SQLException;
- method public abstract boolean supportsMixedCaseIdentifiers() throws java.sql.SQLException;
- method public abstract boolean supportsMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
- method public abstract boolean supportsMultipleOpenResults() throws java.sql.SQLException;
- method public abstract boolean supportsMultipleResultSets() throws java.sql.SQLException;
- method public abstract boolean supportsMultipleTransactions() throws java.sql.SQLException;
- method public abstract boolean supportsNamedParameters() throws java.sql.SQLException;
- method public abstract boolean supportsNonNullableColumns() throws java.sql.SQLException;
- method public abstract boolean supportsOpenCursorsAcrossCommit() throws java.sql.SQLException;
- method public abstract boolean supportsOpenCursorsAcrossRollback() throws java.sql.SQLException;
- method public abstract boolean supportsOpenStatementsAcrossCommit() throws java.sql.SQLException;
- method public abstract boolean supportsOpenStatementsAcrossRollback() throws java.sql.SQLException;
- method public abstract boolean supportsOrderByUnrelated() throws java.sql.SQLException;
- method public abstract boolean supportsOuterJoins() throws java.sql.SQLException;
- method public abstract boolean supportsPositionedDelete() throws java.sql.SQLException;
- method public abstract boolean supportsPositionedUpdate() throws java.sql.SQLException;
- method public abstract boolean supportsResultSetConcurrency(int, int) throws java.sql.SQLException;
- method public abstract boolean supportsResultSetHoldability(int) throws java.sql.SQLException;
- method public abstract boolean supportsResultSetType(int) throws java.sql.SQLException;
- method public abstract boolean supportsSavepoints() throws java.sql.SQLException;
- method public abstract boolean supportsSchemasInDataManipulation() throws java.sql.SQLException;
- method public abstract boolean supportsSchemasInIndexDefinitions() throws java.sql.SQLException;
- method public abstract boolean supportsSchemasInPrivilegeDefinitions() throws java.sql.SQLException;
- method public abstract boolean supportsSchemasInProcedureCalls() throws java.sql.SQLException;
- method public abstract boolean supportsSchemasInTableDefinitions() throws java.sql.SQLException;
- method public abstract boolean supportsSelectForUpdate() throws java.sql.SQLException;
- method public abstract boolean supportsStatementPooling() throws java.sql.SQLException;
- method public abstract boolean supportsStoredFunctionsUsingCallSyntax() throws java.sql.SQLException;
- method public abstract boolean supportsStoredProcedures() throws java.sql.SQLException;
- method public abstract boolean supportsSubqueriesInComparisons() throws java.sql.SQLException;
- method public abstract boolean supportsSubqueriesInExists() throws java.sql.SQLException;
- method public abstract boolean supportsSubqueriesInIns() throws java.sql.SQLException;
- method public abstract boolean supportsSubqueriesInQuantifieds() throws java.sql.SQLException;
- method public abstract boolean supportsTableCorrelationNames() throws java.sql.SQLException;
- method public abstract boolean supportsTransactionIsolationLevel(int) throws java.sql.SQLException;
- method public abstract boolean supportsTransactions() throws java.sql.SQLException;
- method public abstract boolean supportsUnion() throws java.sql.SQLException;
- method public abstract boolean supportsUnionAll() throws java.sql.SQLException;
- method public abstract boolean updatesAreDetected(int) throws java.sql.SQLException;
- method public abstract boolean usesLocalFilePerTable() throws java.sql.SQLException;
- method public abstract boolean usesLocalFiles() throws java.sql.SQLException;
+ public interface DatabaseMetaData extends java.sql.Wrapper {
+ method public boolean allProceduresAreCallable() throws java.sql.SQLException;
+ method public boolean allTablesAreSelectable() throws java.sql.SQLException;
+ method public boolean autoCommitFailureClosesAllResultSets() throws java.sql.SQLException;
+ method public boolean dataDefinitionCausesTransactionCommit() throws java.sql.SQLException;
+ method public boolean dataDefinitionIgnoredInTransactions() throws java.sql.SQLException;
+ method public boolean deletesAreDetected(int) throws java.sql.SQLException;
+ method public boolean doesMaxRowSizeIncludeBlobs() throws java.sql.SQLException;
+ method public java.sql.ResultSet getAttributes(String, String, String, String) throws java.sql.SQLException;
+ method public java.sql.ResultSet getBestRowIdentifier(String, String, String, int, boolean) throws java.sql.SQLException;
+ method public String getCatalogSeparator() throws java.sql.SQLException;
+ method public String getCatalogTerm() throws java.sql.SQLException;
+ method public java.sql.ResultSet getCatalogs() throws java.sql.SQLException;
+ method public java.sql.ResultSet getClientInfoProperties() throws java.sql.SQLException;
+ method public java.sql.ResultSet getColumnPrivileges(String, String, String, String) throws java.sql.SQLException;
+ method public java.sql.ResultSet getColumns(String, String, String, String) throws java.sql.SQLException;
+ method public java.sql.Connection getConnection() throws java.sql.SQLException;
+ method public java.sql.ResultSet getCrossReference(String, String, String, String, String, String) throws java.sql.SQLException;
+ method public int getDatabaseMajorVersion() throws java.sql.SQLException;
+ method public int getDatabaseMinorVersion() throws java.sql.SQLException;
+ method public String getDatabaseProductName() throws java.sql.SQLException;
+ method public String getDatabaseProductVersion() throws java.sql.SQLException;
+ method public int getDefaultTransactionIsolation() throws java.sql.SQLException;
+ method public int getDriverMajorVersion();
+ method public int getDriverMinorVersion();
+ method public String getDriverName() throws java.sql.SQLException;
+ method public String getDriverVersion() throws java.sql.SQLException;
+ method public java.sql.ResultSet getExportedKeys(String, String, String) throws java.sql.SQLException;
+ method public String getExtraNameCharacters() throws java.sql.SQLException;
+ method public java.sql.ResultSet getFunctionColumns(String, String, String, String) throws java.sql.SQLException;
+ method public java.sql.ResultSet getFunctions(String, String, String) throws java.sql.SQLException;
+ method public String getIdentifierQuoteString() throws java.sql.SQLException;
+ method public java.sql.ResultSet getImportedKeys(String, String, String) throws java.sql.SQLException;
+ method public java.sql.ResultSet getIndexInfo(String, String, String, boolean, boolean) throws java.sql.SQLException;
+ method public int getJDBCMajorVersion() throws java.sql.SQLException;
+ method public int getJDBCMinorVersion() throws java.sql.SQLException;
+ method public int getMaxBinaryLiteralLength() throws java.sql.SQLException;
+ method public int getMaxCatalogNameLength() throws java.sql.SQLException;
+ method public int getMaxCharLiteralLength() throws java.sql.SQLException;
+ method public int getMaxColumnNameLength() throws java.sql.SQLException;
+ method public int getMaxColumnsInGroupBy() throws java.sql.SQLException;
+ method public int getMaxColumnsInIndex() throws java.sql.SQLException;
+ method public int getMaxColumnsInOrderBy() throws java.sql.SQLException;
+ method public int getMaxColumnsInSelect() throws java.sql.SQLException;
+ method public int getMaxColumnsInTable() throws java.sql.SQLException;
+ method public int getMaxConnections() throws java.sql.SQLException;
+ method public int getMaxCursorNameLength() throws java.sql.SQLException;
+ method public int getMaxIndexLength() throws java.sql.SQLException;
+ method public int getMaxProcedureNameLength() throws java.sql.SQLException;
+ method public int getMaxRowSize() throws java.sql.SQLException;
+ method public int getMaxSchemaNameLength() throws java.sql.SQLException;
+ method public int getMaxStatementLength() throws java.sql.SQLException;
+ method public int getMaxStatements() throws java.sql.SQLException;
+ method public int getMaxTableNameLength() throws java.sql.SQLException;
+ method public int getMaxTablesInSelect() throws java.sql.SQLException;
+ method public int getMaxUserNameLength() throws java.sql.SQLException;
+ method public String getNumericFunctions() throws java.sql.SQLException;
+ method public java.sql.ResultSet getPrimaryKeys(String, String, String) throws java.sql.SQLException;
+ method public java.sql.ResultSet getProcedureColumns(String, String, String, String) throws java.sql.SQLException;
+ method public String getProcedureTerm() throws java.sql.SQLException;
+ method public java.sql.ResultSet getProcedures(String, String, String) throws java.sql.SQLException;
+ method public int getResultSetHoldability() throws java.sql.SQLException;
+ method public java.sql.RowIdLifetime getRowIdLifetime() throws java.sql.SQLException;
+ method public String getSQLKeywords() throws java.sql.SQLException;
+ method public int getSQLStateType() throws java.sql.SQLException;
+ method public String getSchemaTerm() throws java.sql.SQLException;
+ method public java.sql.ResultSet getSchemas() throws java.sql.SQLException;
+ method public java.sql.ResultSet getSchemas(String, String) throws java.sql.SQLException;
+ method public String getSearchStringEscape() throws java.sql.SQLException;
+ method public String getStringFunctions() throws java.sql.SQLException;
+ method public java.sql.ResultSet getSuperTables(String, String, String) throws java.sql.SQLException;
+ method public java.sql.ResultSet getSuperTypes(String, String, String) throws java.sql.SQLException;
+ method public String getSystemFunctions() throws java.sql.SQLException;
+ method public java.sql.ResultSet getTablePrivileges(String, String, String) throws java.sql.SQLException;
+ method public java.sql.ResultSet getTableTypes() throws java.sql.SQLException;
+ method public java.sql.ResultSet getTables(String, String, String, String[]) throws java.sql.SQLException;
+ method public String getTimeDateFunctions() throws java.sql.SQLException;
+ method public java.sql.ResultSet getTypeInfo() throws java.sql.SQLException;
+ method public java.sql.ResultSet getUDTs(String, String, String, int[]) throws java.sql.SQLException;
+ method public String getURL() throws java.sql.SQLException;
+ method public String getUserName() throws java.sql.SQLException;
+ method public java.sql.ResultSet getVersionColumns(String, String, String) throws java.sql.SQLException;
+ method public boolean insertsAreDetected(int) throws java.sql.SQLException;
+ method public boolean isCatalogAtStart() throws java.sql.SQLException;
+ method public boolean isReadOnly() throws java.sql.SQLException;
+ method public boolean locatorsUpdateCopy() throws java.sql.SQLException;
+ method public boolean nullPlusNonNullIsNull() throws java.sql.SQLException;
+ method public boolean nullsAreSortedAtEnd() throws java.sql.SQLException;
+ method public boolean nullsAreSortedAtStart() throws java.sql.SQLException;
+ method public boolean nullsAreSortedHigh() throws java.sql.SQLException;
+ method public boolean nullsAreSortedLow() throws java.sql.SQLException;
+ method public boolean othersDeletesAreVisible(int) throws java.sql.SQLException;
+ method public boolean othersInsertsAreVisible(int) throws java.sql.SQLException;
+ method public boolean othersUpdatesAreVisible(int) throws java.sql.SQLException;
+ method public boolean ownDeletesAreVisible(int) throws java.sql.SQLException;
+ method public boolean ownInsertsAreVisible(int) throws java.sql.SQLException;
+ method public boolean ownUpdatesAreVisible(int) throws java.sql.SQLException;
+ method public boolean storesLowerCaseIdentifiers() throws java.sql.SQLException;
+ method public boolean storesLowerCaseQuotedIdentifiers() throws java.sql.SQLException;
+ method public boolean storesMixedCaseIdentifiers() throws java.sql.SQLException;
+ method public boolean storesMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
+ method public boolean storesUpperCaseIdentifiers() throws java.sql.SQLException;
+ method public boolean storesUpperCaseQuotedIdentifiers() throws java.sql.SQLException;
+ method public boolean supportsANSI92EntryLevelSQL() throws java.sql.SQLException;
+ method public boolean supportsANSI92FullSQL() throws java.sql.SQLException;
+ method public boolean supportsANSI92IntermediateSQL() throws java.sql.SQLException;
+ method public boolean supportsAlterTableWithAddColumn() throws java.sql.SQLException;
+ method public boolean supportsAlterTableWithDropColumn() throws java.sql.SQLException;
+ method public boolean supportsBatchUpdates() throws java.sql.SQLException;
+ method public boolean supportsCatalogsInDataManipulation() throws java.sql.SQLException;
+ method public boolean supportsCatalogsInIndexDefinitions() throws java.sql.SQLException;
+ method public boolean supportsCatalogsInPrivilegeDefinitions() throws java.sql.SQLException;
+ method public boolean supportsCatalogsInProcedureCalls() throws java.sql.SQLException;
+ method public boolean supportsCatalogsInTableDefinitions() throws java.sql.SQLException;
+ method public boolean supportsColumnAliasing() throws java.sql.SQLException;
+ method public boolean supportsConvert() throws java.sql.SQLException;
+ method public boolean supportsConvert(int, int) throws java.sql.SQLException;
+ method public boolean supportsCoreSQLGrammar() throws java.sql.SQLException;
+ method public boolean supportsCorrelatedSubqueries() throws java.sql.SQLException;
+ method public boolean supportsDataDefinitionAndDataManipulationTransactions() throws java.sql.SQLException;
+ method public boolean supportsDataManipulationTransactionsOnly() throws java.sql.SQLException;
+ method public boolean supportsDifferentTableCorrelationNames() throws java.sql.SQLException;
+ method public boolean supportsExpressionsInOrderBy() throws java.sql.SQLException;
+ method public boolean supportsExtendedSQLGrammar() throws java.sql.SQLException;
+ method public boolean supportsFullOuterJoins() throws java.sql.SQLException;
+ method public boolean supportsGetGeneratedKeys() throws java.sql.SQLException;
+ method public boolean supportsGroupBy() throws java.sql.SQLException;
+ method public boolean supportsGroupByBeyondSelect() throws java.sql.SQLException;
+ method public boolean supportsGroupByUnrelated() throws java.sql.SQLException;
+ method public boolean supportsIntegrityEnhancementFacility() throws java.sql.SQLException;
+ method public boolean supportsLikeEscapeClause() throws java.sql.SQLException;
+ method public boolean supportsLimitedOuterJoins() throws java.sql.SQLException;
+ method public boolean supportsMinimumSQLGrammar() throws java.sql.SQLException;
+ method public boolean supportsMixedCaseIdentifiers() throws java.sql.SQLException;
+ method public boolean supportsMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
+ method public boolean supportsMultipleOpenResults() throws java.sql.SQLException;
+ method public boolean supportsMultipleResultSets() throws java.sql.SQLException;
+ method public boolean supportsMultipleTransactions() throws java.sql.SQLException;
+ method public boolean supportsNamedParameters() throws java.sql.SQLException;
+ method public boolean supportsNonNullableColumns() throws java.sql.SQLException;
+ method public boolean supportsOpenCursorsAcrossCommit() throws java.sql.SQLException;
+ method public boolean supportsOpenCursorsAcrossRollback() throws java.sql.SQLException;
+ method public boolean supportsOpenStatementsAcrossCommit() throws java.sql.SQLException;
+ method public boolean supportsOpenStatementsAcrossRollback() throws java.sql.SQLException;
+ method public boolean supportsOrderByUnrelated() throws java.sql.SQLException;
+ method public boolean supportsOuterJoins() throws java.sql.SQLException;
+ method public boolean supportsPositionedDelete() throws java.sql.SQLException;
+ method public boolean supportsPositionedUpdate() throws java.sql.SQLException;
+ method public boolean supportsResultSetConcurrency(int, int) throws java.sql.SQLException;
+ method public boolean supportsResultSetHoldability(int) throws java.sql.SQLException;
+ method public boolean supportsResultSetType(int) throws java.sql.SQLException;
+ method public boolean supportsSavepoints() throws java.sql.SQLException;
+ method public boolean supportsSchemasInDataManipulation() throws java.sql.SQLException;
+ method public boolean supportsSchemasInIndexDefinitions() throws java.sql.SQLException;
+ method public boolean supportsSchemasInPrivilegeDefinitions() throws java.sql.SQLException;
+ method public boolean supportsSchemasInProcedureCalls() throws java.sql.SQLException;
+ method public boolean supportsSchemasInTableDefinitions() throws java.sql.SQLException;
+ method public boolean supportsSelectForUpdate() throws java.sql.SQLException;
+ method public boolean supportsStatementPooling() throws java.sql.SQLException;
+ method public boolean supportsStoredFunctionsUsingCallSyntax() throws java.sql.SQLException;
+ method public boolean supportsStoredProcedures() throws java.sql.SQLException;
+ method public boolean supportsSubqueriesInComparisons() throws java.sql.SQLException;
+ method public boolean supportsSubqueriesInExists() throws java.sql.SQLException;
+ method public boolean supportsSubqueriesInIns() throws java.sql.SQLException;
+ method public boolean supportsSubqueriesInQuantifieds() throws java.sql.SQLException;
+ method public boolean supportsTableCorrelationNames() throws java.sql.SQLException;
+ method public boolean supportsTransactionIsolationLevel(int) throws java.sql.SQLException;
+ method public boolean supportsTransactions() throws java.sql.SQLException;
+ method public boolean supportsUnion() throws java.sql.SQLException;
+ method public boolean supportsUnionAll() throws java.sql.SQLException;
+ method public boolean updatesAreDetected(int) throws java.sql.SQLException;
+ method public boolean usesLocalFilePerTable() throws java.sql.SQLException;
+ method public boolean usesLocalFiles() throws java.sql.SQLException;
field public static final short attributeNoNulls = 0; // 0x0
field public static final short attributeNullable = 1; // 0x1
field public static final short attributeNullableUnknown = 2; // 0x2
@@ -65714,59 +65767,59 @@
}
public class Date extends java.util.Date {
- ctor public deprecated Date(int, int, int);
+ ctor @Deprecated public Date(int, int, int);
ctor public Date(long);
- method public static java.sql.Date valueOf(java.lang.String);
+ method public static java.sql.Date valueOf(String);
}
- public abstract interface Driver {
- method public abstract boolean acceptsURL(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Connection connect(java.lang.String, java.util.Properties) throws java.sql.SQLException;
- method public abstract int getMajorVersion();
- method public abstract int getMinorVersion();
- method public abstract java.sql.DriverPropertyInfo[] getPropertyInfo(java.lang.String, java.util.Properties) throws java.sql.SQLException;
- method public abstract boolean jdbcCompliant();
+ public interface Driver {
+ method public boolean acceptsURL(String) throws java.sql.SQLException;
+ method public java.sql.Connection connect(String, java.util.Properties) throws java.sql.SQLException;
+ method public int getMajorVersion();
+ method public int getMinorVersion();
+ method public java.sql.DriverPropertyInfo[] getPropertyInfo(String, java.util.Properties) throws java.sql.SQLException;
+ method public boolean jdbcCompliant();
}
public class DriverManager {
- method public static synchronized void deregisterDriver(java.sql.Driver) throws java.sql.SQLException;
- method public static java.sql.Connection getConnection(java.lang.String, java.util.Properties) throws java.sql.SQLException;
- method public static java.sql.Connection getConnection(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public static java.sql.Connection getConnection(java.lang.String) throws java.sql.SQLException;
- method public static java.sql.Driver getDriver(java.lang.String) throws java.sql.SQLException;
+ method public static void deregisterDriver(java.sql.Driver) throws java.sql.SQLException;
+ method public static java.sql.Connection getConnection(String, java.util.Properties) throws java.sql.SQLException;
+ method public static java.sql.Connection getConnection(String, String, String) throws java.sql.SQLException;
+ method public static java.sql.Connection getConnection(String) throws java.sql.SQLException;
+ method public static java.sql.Driver getDriver(String) throws java.sql.SQLException;
method public static java.util.Enumeration<java.sql.Driver> getDrivers();
- method public static deprecated java.io.PrintStream getLogStream();
+ method @Deprecated public static java.io.PrintStream getLogStream();
method public static java.io.PrintWriter getLogWriter();
method public static int getLoginTimeout();
- method public static void println(java.lang.String);
- method public static synchronized void registerDriver(java.sql.Driver) throws java.sql.SQLException;
- method public static deprecated void setLogStream(java.io.PrintStream);
+ method public static void println(String);
+ method public static void registerDriver(java.sql.Driver) throws java.sql.SQLException;
+ method @Deprecated public static void setLogStream(java.io.PrintStream);
method public static void setLogWriter(java.io.PrintWriter);
method public static void setLoginTimeout(int);
}
public class DriverPropertyInfo {
- ctor public DriverPropertyInfo(java.lang.String, java.lang.String);
- field public java.lang.String[] choices;
- field public java.lang.String description;
- field public java.lang.String name;
+ ctor public DriverPropertyInfo(String, String);
+ field public String[] choices;
+ field public String description;
+ field public String name;
field public boolean required;
- field public java.lang.String value;
+ field public String value;
}
- public abstract interface NClob implements java.sql.Clob {
+ public interface NClob extends java.sql.Clob {
}
- public abstract interface ParameterMetaData implements java.sql.Wrapper {
- method public abstract java.lang.String getParameterClassName(int) throws java.sql.SQLException;
- method public abstract int getParameterCount() throws java.sql.SQLException;
- method public abstract int getParameterMode(int) throws java.sql.SQLException;
- method public abstract int getParameterType(int) throws java.sql.SQLException;
- method public abstract java.lang.String getParameterTypeName(int) throws java.sql.SQLException;
- method public abstract int getPrecision(int) throws java.sql.SQLException;
- method public abstract int getScale(int) throws java.sql.SQLException;
- method public abstract int isNullable(int) throws java.sql.SQLException;
- method public abstract boolean isSigned(int) throws java.sql.SQLException;
+ public interface ParameterMetaData extends java.sql.Wrapper {
+ method public String getParameterClassName(int) throws java.sql.SQLException;
+ method public int getParameterCount() throws java.sql.SQLException;
+ method public int getParameterMode(int) throws java.sql.SQLException;
+ method public int getParameterType(int) throws java.sql.SQLException;
+ method public String getParameterTypeName(int) throws java.sql.SQLException;
+ method public int getPrecision(int) throws java.sql.SQLException;
+ method public int getScale(int) throws java.sql.SQLException;
+ method public int isNullable(int) throws java.sql.SQLException;
+ method public boolean isSigned(int) throws java.sql.SQLException;
field public static final int parameterModeIn = 1; // 0x1
field public static final int parameterModeInOut = 2; // 0x2
field public static final int parameterModeOut = 4; // 0x4
@@ -65776,259 +65829,259 @@
field public static final int parameterNullableUnknown = 2; // 0x2
}
- public abstract interface PreparedStatement implements java.sql.Statement {
- method public abstract void addBatch() throws java.sql.SQLException;
- method public abstract void clearParameters() throws java.sql.SQLException;
- method public abstract boolean execute() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet executeQuery() throws java.sql.SQLException;
- method public abstract int executeUpdate() throws java.sql.SQLException;
- method public abstract java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
- method public abstract java.sql.ParameterMetaData getParameterMetaData() throws java.sql.SQLException;
- method public abstract void setArray(int, java.sql.Array) throws java.sql.SQLException;
- method public abstract void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void setAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
- method public abstract void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void setBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
- method public abstract void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBoolean(int, boolean) throws java.sql.SQLException;
- method public abstract void setByte(int, byte) throws java.sql.SQLException;
- method public abstract void setBytes(int, byte[]) throws java.sql.SQLException;
- method public abstract void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
- method public abstract void setCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setClob(int, java.sql.Clob) throws java.sql.SQLException;
- method public abstract void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setClob(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setDate(int, java.sql.Date) throws java.sql.SQLException;
- method public abstract void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setDouble(int, double) throws java.sql.SQLException;
- method public abstract void setFloat(int, float) throws java.sql.SQLException;
- method public abstract void setInt(int, int) throws java.sql.SQLException;
- method public abstract void setLong(int, long) throws java.sql.SQLException;
- method public abstract void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
- method public abstract void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setNClob(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setNString(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setNull(int, int) throws java.sql.SQLException;
- method public abstract void setNull(int, int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setObject(int, java.lang.Object, int) throws java.sql.SQLException;
- method public abstract void setObject(int, java.lang.Object) throws java.sql.SQLException;
- method public abstract void setObject(int, java.lang.Object, int, int) throws java.sql.SQLException;
- method public abstract void setRef(int, java.sql.Ref) throws java.sql.SQLException;
- method public abstract void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
- method public abstract void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
- method public abstract void setShort(int, short) throws java.sql.SQLException;
- method public abstract void setString(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setTime(int, java.sql.Time) throws java.sql.SQLException;
- method public abstract void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
- method public abstract void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setURL(int, java.net.URL) throws java.sql.SQLException;
- method public abstract deprecated void setUnicodeStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+ public interface PreparedStatement extends java.sql.Statement {
+ method public void addBatch() throws java.sql.SQLException;
+ method public void clearParameters() throws java.sql.SQLException;
+ method public boolean execute() throws java.sql.SQLException;
+ method public java.sql.ResultSet executeQuery() throws java.sql.SQLException;
+ method public int executeUpdate() throws java.sql.SQLException;
+ method public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
+ method public java.sql.ParameterMetaData getParameterMetaData() throws java.sql.SQLException;
+ method public void setArray(int, java.sql.Array) throws java.sql.SQLException;
+ method public void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void setAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
+ method public void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void setBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
+ method public void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBoolean(int, boolean) throws java.sql.SQLException;
+ method public void setByte(int, byte) throws java.sql.SQLException;
+ method public void setBytes(int, byte[]) throws java.sql.SQLException;
+ method public void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
+ method public void setCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+ method public void setClob(int, java.sql.Clob) throws java.sql.SQLException;
+ method public void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setClob(int, java.io.Reader) throws java.sql.SQLException;
+ method public void setDate(int, java.sql.Date) throws java.sql.SQLException;
+ method public void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
+ method public void setDouble(int, double) throws java.sql.SQLException;
+ method public void setFloat(int, float) throws java.sql.SQLException;
+ method public void setInt(int, int) throws java.sql.SQLException;
+ method public void setLong(int, long) throws java.sql.SQLException;
+ method public void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+ method public void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
+ method public void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setNClob(int, java.io.Reader) throws java.sql.SQLException;
+ method public void setNString(int, String) throws java.sql.SQLException;
+ method public void setNull(int, int) throws java.sql.SQLException;
+ method public void setNull(int, int, String) throws java.sql.SQLException;
+ method public void setObject(int, Object, int) throws java.sql.SQLException;
+ method public void setObject(int, Object) throws java.sql.SQLException;
+ method public void setObject(int, Object, int, int) throws java.sql.SQLException;
+ method public void setRef(int, java.sql.Ref) throws java.sql.SQLException;
+ method public void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
+ method public void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
+ method public void setShort(int, short) throws java.sql.SQLException;
+ method public void setString(int, String) throws java.sql.SQLException;
+ method public void setTime(int, java.sql.Time) throws java.sql.SQLException;
+ method public void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
+ method public void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
+ method public void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
+ method public void setURL(int, java.net.URL) throws java.sql.SQLException;
+ method @Deprecated public void setUnicodeStream(int, java.io.InputStream, int) throws java.sql.SQLException;
}
- public abstract interface Ref {
- method public abstract java.lang.String getBaseTypeName() throws java.sql.SQLException;
- method public abstract java.lang.Object getObject(java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract java.lang.Object getObject() throws java.sql.SQLException;
- method public abstract void setObject(java.lang.Object) throws java.sql.SQLException;
+ public interface Ref {
+ method public String getBaseTypeName() throws java.sql.SQLException;
+ method public Object getObject(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public Object getObject() throws java.sql.SQLException;
+ method public void setObject(Object) throws java.sql.SQLException;
}
- public abstract interface ResultSet implements java.lang.AutoCloseable java.sql.Wrapper {
- method public abstract boolean absolute(int) throws java.sql.SQLException;
- method public abstract void afterLast() throws java.sql.SQLException;
- method public abstract void beforeFirst() throws java.sql.SQLException;
- method public abstract void cancelRowUpdates() throws java.sql.SQLException;
- method public abstract void clearWarnings() throws java.sql.SQLException;
- method public abstract void close() throws java.sql.SQLException;
- method public abstract void deleteRow() throws java.sql.SQLException;
- method public abstract int findColumn(java.lang.String) throws java.sql.SQLException;
- method public abstract boolean first() throws java.sql.SQLException;
- method public abstract java.sql.Array getArray(int) throws java.sql.SQLException;
- method public abstract java.sql.Array getArray(java.lang.String) throws java.sql.SQLException;
- method public abstract java.io.InputStream getAsciiStream(int) throws java.sql.SQLException;
- method public abstract java.io.InputStream getAsciiStream(java.lang.String) throws java.sql.SQLException;
- method public abstract deprecated java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
- method public abstract deprecated java.math.BigDecimal getBigDecimal(java.lang.String, int) throws java.sql.SQLException;
- method public abstract java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
- method public abstract java.math.BigDecimal getBigDecimal(java.lang.String) throws java.sql.SQLException;
- method public abstract java.io.InputStream getBinaryStream(int) throws java.sql.SQLException;
- method public abstract java.io.InputStream getBinaryStream(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Blob getBlob(int) throws java.sql.SQLException;
- method public abstract java.sql.Blob getBlob(java.lang.String) throws java.sql.SQLException;
- method public abstract boolean getBoolean(int) throws java.sql.SQLException;
- method public abstract boolean getBoolean(java.lang.String) throws java.sql.SQLException;
- method public abstract byte getByte(int) throws java.sql.SQLException;
- method public abstract byte getByte(java.lang.String) throws java.sql.SQLException;
- method public abstract byte[] getBytes(int) throws java.sql.SQLException;
- method public abstract byte[] getBytes(java.lang.String) throws java.sql.SQLException;
- method public abstract java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
- method public abstract java.io.Reader getCharacterStream(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Clob getClob(int) throws java.sql.SQLException;
- method public abstract java.sql.Clob getClob(java.lang.String) throws java.sql.SQLException;
- method public abstract int getConcurrency() throws java.sql.SQLException;
- method public abstract java.lang.String getCursorName() throws java.sql.SQLException;
- method public abstract java.sql.Date getDate(int) throws java.sql.SQLException;
- method public abstract java.sql.Date getDate(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
- method public abstract java.sql.Date getDate(java.lang.String, java.util.Calendar) throws java.sql.SQLException;
- method public abstract double getDouble(int) throws java.sql.SQLException;
- method public abstract double getDouble(java.lang.String) throws java.sql.SQLException;
- method public abstract int getFetchDirection() throws java.sql.SQLException;
- method public abstract int getFetchSize() throws java.sql.SQLException;
- method public abstract float getFloat(int) throws java.sql.SQLException;
- method public abstract float getFloat(java.lang.String) throws java.sql.SQLException;
- method public abstract int getHoldability() throws java.sql.SQLException;
- method public abstract int getInt(int) throws java.sql.SQLException;
- method public abstract int getInt(java.lang.String) throws java.sql.SQLException;
- method public abstract long getLong(int) throws java.sql.SQLException;
- method public abstract long getLong(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
- method public abstract java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
- method public abstract java.io.Reader getNCharacterStream(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.NClob getNClob(int) throws java.sql.SQLException;
- method public abstract java.sql.NClob getNClob(java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.String getNString(int) throws java.sql.SQLException;
- method public abstract java.lang.String getNString(java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.Object getObject(int) throws java.sql.SQLException;
- method public abstract java.lang.Object getObject(java.lang.String) throws java.sql.SQLException;
- method public abstract java.lang.Object getObject(int, java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract java.lang.Object getObject(java.lang.String, java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract java.sql.Ref getRef(int) throws java.sql.SQLException;
- method public abstract java.sql.Ref getRef(java.lang.String) throws java.sql.SQLException;
- method public abstract int getRow() throws java.sql.SQLException;
- method public abstract java.sql.RowId getRowId(int) throws java.sql.SQLException;
- method public abstract java.sql.RowId getRowId(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
- method public abstract java.sql.SQLXML getSQLXML(java.lang.String) throws java.sql.SQLException;
- method public abstract short getShort(int) throws java.sql.SQLException;
- method public abstract short getShort(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Statement getStatement() throws java.sql.SQLException;
- method public abstract java.lang.String getString(int) throws java.sql.SQLException;
- method public abstract java.lang.String getString(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Time getTime(int) throws java.sql.SQLException;
- method public abstract java.sql.Time getTime(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
- method public abstract java.sql.Time getTime(java.lang.String, java.util.Calendar) throws java.sql.SQLException;
- method public abstract java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
- method public abstract java.sql.Timestamp getTimestamp(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
- method public abstract java.sql.Timestamp getTimestamp(java.lang.String, java.util.Calendar) throws java.sql.SQLException;
- method public abstract int getType() throws java.sql.SQLException;
- method public abstract java.net.URL getURL(int) throws java.sql.SQLException;
- method public abstract java.net.URL getURL(java.lang.String) throws java.sql.SQLException;
- method public abstract deprecated java.io.InputStream getUnicodeStream(int) throws java.sql.SQLException;
- method public abstract deprecated java.io.InputStream getUnicodeStream(java.lang.String) throws java.sql.SQLException;
- method public abstract java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
- method public abstract void insertRow() throws java.sql.SQLException;
- method public abstract boolean isAfterLast() throws java.sql.SQLException;
- method public abstract boolean isBeforeFirst() throws java.sql.SQLException;
- method public abstract boolean isClosed() throws java.sql.SQLException;
- method public abstract boolean isFirst() throws java.sql.SQLException;
- method public abstract boolean isLast() throws java.sql.SQLException;
- method public abstract boolean last() throws java.sql.SQLException;
- method public abstract void moveToCurrentRow() throws java.sql.SQLException;
- method public abstract void moveToInsertRow() throws java.sql.SQLException;
- method public abstract boolean next() throws java.sql.SQLException;
- method public abstract boolean previous() throws java.sql.SQLException;
- method public abstract void refreshRow() throws java.sql.SQLException;
- method public abstract boolean relative(int) throws java.sql.SQLException;
- method public abstract boolean rowDeleted() throws java.sql.SQLException;
- method public abstract boolean rowInserted() throws java.sql.SQLException;
- method public abstract boolean rowUpdated() throws java.sql.SQLException;
- method public abstract void setFetchDirection(int) throws java.sql.SQLException;
- method public abstract void setFetchSize(int) throws java.sql.SQLException;
- method public abstract void updateArray(int, java.sql.Array) throws java.sql.SQLException;
- method public abstract void updateArray(java.lang.String, java.sql.Array) throws java.sql.SQLException;
- method public abstract void updateAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void updateAsciiStream(java.lang.String, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void updateAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void updateAsciiStream(java.lang.String, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void updateAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void updateAsciiStream(java.lang.String, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void updateBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
- method public abstract void updateBigDecimal(java.lang.String, java.math.BigDecimal) throws java.sql.SQLException;
- method public abstract void updateBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void updateBinaryStream(java.lang.String, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void updateBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void updateBinaryStream(java.lang.String, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void updateBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void updateBinaryStream(java.lang.String, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void updateBlob(int, java.sql.Blob) throws java.sql.SQLException;
- method public abstract void updateBlob(java.lang.String, java.sql.Blob) throws java.sql.SQLException;
- method public abstract void updateBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void updateBlob(java.lang.String, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void updateBlob(int, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void updateBlob(java.lang.String, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void updateBoolean(int, boolean) throws java.sql.SQLException;
- method public abstract void updateBoolean(java.lang.String, boolean) throws java.sql.SQLException;
- method public abstract void updateByte(int, byte) throws java.sql.SQLException;
- method public abstract void updateByte(java.lang.String, byte) throws java.sql.SQLException;
- method public abstract void updateBytes(int, byte[]) throws java.sql.SQLException;
- method public abstract void updateBytes(java.lang.String, byte[]) throws java.sql.SQLException;
- method public abstract void updateCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
- method public abstract void updateCharacterStream(java.lang.String, java.io.Reader, int) throws java.sql.SQLException;
- method public abstract void updateCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void updateCharacterStream(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void updateCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void updateCharacterStream(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void updateClob(int, java.sql.Clob) throws java.sql.SQLException;
- method public abstract void updateClob(java.lang.String, java.sql.Clob) throws java.sql.SQLException;
- method public abstract void updateClob(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void updateClob(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void updateClob(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void updateClob(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void updateDate(int, java.sql.Date) throws java.sql.SQLException;
- method public abstract void updateDate(java.lang.String, java.sql.Date) throws java.sql.SQLException;
- method public abstract void updateDouble(int, double) throws java.sql.SQLException;
- method public abstract void updateDouble(java.lang.String, double) throws java.sql.SQLException;
- method public abstract void updateFloat(int, float) throws java.sql.SQLException;
- method public abstract void updateFloat(java.lang.String, float) throws java.sql.SQLException;
- method public abstract void updateInt(int, int) throws java.sql.SQLException;
- method public abstract void updateInt(java.lang.String, int) throws java.sql.SQLException;
- method public abstract void updateLong(int, long) throws java.sql.SQLException;
- method public abstract void updateLong(java.lang.String, long) throws java.sql.SQLException;
- method public abstract void updateNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void updateNCharacterStream(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void updateNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void updateNCharacterStream(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void updateNClob(int, java.sql.NClob) throws java.sql.SQLException;
- method public abstract void updateNClob(java.lang.String, java.sql.NClob) throws java.sql.SQLException;
- method public abstract void updateNClob(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void updateNClob(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void updateNClob(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void updateNClob(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void updateNString(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void updateNString(java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract void updateNull(int) throws java.sql.SQLException;
- method public abstract void updateNull(java.lang.String) throws java.sql.SQLException;
- method public abstract void updateObject(int, java.lang.Object, int) throws java.sql.SQLException;
- method public abstract void updateObject(int, java.lang.Object) throws java.sql.SQLException;
- method public abstract void updateObject(java.lang.String, java.lang.Object, int) throws java.sql.SQLException;
- method public abstract void updateObject(java.lang.String, java.lang.Object) throws java.sql.SQLException;
- method public abstract void updateRef(int, java.sql.Ref) throws java.sql.SQLException;
- method public abstract void updateRef(java.lang.String, java.sql.Ref) throws java.sql.SQLException;
- method public abstract void updateRow() throws java.sql.SQLException;
- method public abstract void updateRowId(int, java.sql.RowId) throws java.sql.SQLException;
- method public abstract void updateRowId(java.lang.String, java.sql.RowId) throws java.sql.SQLException;
- method public abstract void updateSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
- method public abstract void updateSQLXML(java.lang.String, java.sql.SQLXML) throws java.sql.SQLException;
- method public abstract void updateShort(int, short) throws java.sql.SQLException;
- method public abstract void updateShort(java.lang.String, short) throws java.sql.SQLException;
- method public abstract void updateString(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void updateString(java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract void updateTime(int, java.sql.Time) throws java.sql.SQLException;
- method public abstract void updateTime(java.lang.String, java.sql.Time) throws java.sql.SQLException;
- method public abstract void updateTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
- method public abstract void updateTimestamp(java.lang.String, java.sql.Timestamp) throws java.sql.SQLException;
- method public abstract boolean wasNull() throws java.sql.SQLException;
+ public interface ResultSet extends java.sql.Wrapper java.lang.AutoCloseable {
+ method public boolean absolute(int) throws java.sql.SQLException;
+ method public void afterLast() throws java.sql.SQLException;
+ method public void beforeFirst() throws java.sql.SQLException;
+ method public void cancelRowUpdates() throws java.sql.SQLException;
+ method public void clearWarnings() throws java.sql.SQLException;
+ method public void close() throws java.sql.SQLException;
+ method public void deleteRow() throws java.sql.SQLException;
+ method public int findColumn(String) throws java.sql.SQLException;
+ method public boolean first() throws java.sql.SQLException;
+ method public java.sql.Array getArray(int) throws java.sql.SQLException;
+ method public java.sql.Array getArray(String) throws java.sql.SQLException;
+ method public java.io.InputStream getAsciiStream(int) throws java.sql.SQLException;
+ method public java.io.InputStream getAsciiStream(String) throws java.sql.SQLException;
+ method @Deprecated public java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
+ method @Deprecated public java.math.BigDecimal getBigDecimal(String, int) throws java.sql.SQLException;
+ method public java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
+ method public java.math.BigDecimal getBigDecimal(String) throws java.sql.SQLException;
+ method public java.io.InputStream getBinaryStream(int) throws java.sql.SQLException;
+ method public java.io.InputStream getBinaryStream(String) throws java.sql.SQLException;
+ method public java.sql.Blob getBlob(int) throws java.sql.SQLException;
+ method public java.sql.Blob getBlob(String) throws java.sql.SQLException;
+ method public boolean getBoolean(int) throws java.sql.SQLException;
+ method public boolean getBoolean(String) throws java.sql.SQLException;
+ method public byte getByte(int) throws java.sql.SQLException;
+ method public byte getByte(String) throws java.sql.SQLException;
+ method public byte[] getBytes(int) throws java.sql.SQLException;
+ method public byte[] getBytes(String) throws java.sql.SQLException;
+ method public java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
+ method public java.io.Reader getCharacterStream(String) throws java.sql.SQLException;
+ method public java.sql.Clob getClob(int) throws java.sql.SQLException;
+ method public java.sql.Clob getClob(String) throws java.sql.SQLException;
+ method public int getConcurrency() throws java.sql.SQLException;
+ method public String getCursorName() throws java.sql.SQLException;
+ method public java.sql.Date getDate(int) throws java.sql.SQLException;
+ method public java.sql.Date getDate(String) throws java.sql.SQLException;
+ method public java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
+ method public java.sql.Date getDate(String, java.util.Calendar) throws java.sql.SQLException;
+ method public double getDouble(int) throws java.sql.SQLException;
+ method public double getDouble(String) throws java.sql.SQLException;
+ method public int getFetchDirection() throws java.sql.SQLException;
+ method public int getFetchSize() throws java.sql.SQLException;
+ method public float getFloat(int) throws java.sql.SQLException;
+ method public float getFloat(String) throws java.sql.SQLException;
+ method public int getHoldability() throws java.sql.SQLException;
+ method public int getInt(int) throws java.sql.SQLException;
+ method public int getInt(String) throws java.sql.SQLException;
+ method public long getLong(int) throws java.sql.SQLException;
+ method public long getLong(String) throws java.sql.SQLException;
+ method public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
+ method public java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
+ method public java.io.Reader getNCharacterStream(String) throws java.sql.SQLException;
+ method public java.sql.NClob getNClob(int) throws java.sql.SQLException;
+ method public java.sql.NClob getNClob(String) throws java.sql.SQLException;
+ method public String getNString(int) throws java.sql.SQLException;
+ method public String getNString(String) throws java.sql.SQLException;
+ method public Object getObject(int) throws java.sql.SQLException;
+ method public Object getObject(String) throws java.sql.SQLException;
+ method public Object getObject(int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public Object getObject(String, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public java.sql.Ref getRef(int) throws java.sql.SQLException;
+ method public java.sql.Ref getRef(String) throws java.sql.SQLException;
+ method public int getRow() throws java.sql.SQLException;
+ method public java.sql.RowId getRowId(int) throws java.sql.SQLException;
+ method public java.sql.RowId getRowId(String) throws java.sql.SQLException;
+ method public java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
+ method public java.sql.SQLXML getSQLXML(String) throws java.sql.SQLException;
+ method public short getShort(int) throws java.sql.SQLException;
+ method public short getShort(String) throws java.sql.SQLException;
+ method public java.sql.Statement getStatement() throws java.sql.SQLException;
+ method public String getString(int) throws java.sql.SQLException;
+ method public String getString(String) throws java.sql.SQLException;
+ method public java.sql.Time getTime(int) throws java.sql.SQLException;
+ method public java.sql.Time getTime(String) throws java.sql.SQLException;
+ method public java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
+ method public java.sql.Time getTime(String, java.util.Calendar) throws java.sql.SQLException;
+ method public java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
+ method public java.sql.Timestamp getTimestamp(String) throws java.sql.SQLException;
+ method public java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
+ method public java.sql.Timestamp getTimestamp(String, java.util.Calendar) throws java.sql.SQLException;
+ method public int getType() throws java.sql.SQLException;
+ method public java.net.URL getURL(int) throws java.sql.SQLException;
+ method public java.net.URL getURL(String) throws java.sql.SQLException;
+ method @Deprecated public java.io.InputStream getUnicodeStream(int) throws java.sql.SQLException;
+ method @Deprecated public java.io.InputStream getUnicodeStream(String) throws java.sql.SQLException;
+ method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
+ method public void insertRow() throws java.sql.SQLException;
+ method public boolean isAfterLast() throws java.sql.SQLException;
+ method public boolean isBeforeFirst() throws java.sql.SQLException;
+ method public boolean isClosed() throws java.sql.SQLException;
+ method public boolean isFirst() throws java.sql.SQLException;
+ method public boolean isLast() throws java.sql.SQLException;
+ method public boolean last() throws java.sql.SQLException;
+ method public void moveToCurrentRow() throws java.sql.SQLException;
+ method public void moveToInsertRow() throws java.sql.SQLException;
+ method public boolean next() throws java.sql.SQLException;
+ method public boolean previous() throws java.sql.SQLException;
+ method public void refreshRow() throws java.sql.SQLException;
+ method public boolean relative(int) throws java.sql.SQLException;
+ method public boolean rowDeleted() throws java.sql.SQLException;
+ method public boolean rowInserted() throws java.sql.SQLException;
+ method public boolean rowUpdated() throws java.sql.SQLException;
+ method public void setFetchDirection(int) throws java.sql.SQLException;
+ method public void setFetchSize(int) throws java.sql.SQLException;
+ method public void updateArray(int, java.sql.Array) throws java.sql.SQLException;
+ method public void updateArray(String, java.sql.Array) throws java.sql.SQLException;
+ method public void updateAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void updateAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void updateAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void updateAsciiStream(String, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void updateAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
+ method public void updateAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
+ method public void updateBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
+ method public void updateBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
+ method public void updateBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void updateBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void updateBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void updateBinaryStream(String, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void updateBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
+ method public void updateBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
+ method public void updateBlob(int, java.sql.Blob) throws java.sql.SQLException;
+ method public void updateBlob(String, java.sql.Blob) throws java.sql.SQLException;
+ method public void updateBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void updateBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void updateBlob(int, java.io.InputStream) throws java.sql.SQLException;
+ method public void updateBlob(String, java.io.InputStream) throws java.sql.SQLException;
+ method public void updateBoolean(int, boolean) throws java.sql.SQLException;
+ method public void updateBoolean(String, boolean) throws java.sql.SQLException;
+ method public void updateByte(int, byte) throws java.sql.SQLException;
+ method public void updateByte(String, byte) throws java.sql.SQLException;
+ method public void updateBytes(int, byte[]) throws java.sql.SQLException;
+ method public void updateBytes(String, byte[]) throws java.sql.SQLException;
+ method public void updateCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
+ method public void updateCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
+ method public void updateCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void updateCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void updateCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+ method public void updateCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+ method public void updateClob(int, java.sql.Clob) throws java.sql.SQLException;
+ method public void updateClob(String, java.sql.Clob) throws java.sql.SQLException;
+ method public void updateClob(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void updateClob(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void updateClob(int, java.io.Reader) throws java.sql.SQLException;
+ method public void updateClob(String, java.io.Reader) throws java.sql.SQLException;
+ method public void updateDate(int, java.sql.Date) throws java.sql.SQLException;
+ method public void updateDate(String, java.sql.Date) throws java.sql.SQLException;
+ method public void updateDouble(int, double) throws java.sql.SQLException;
+ method public void updateDouble(String, double) throws java.sql.SQLException;
+ method public void updateFloat(int, float) throws java.sql.SQLException;
+ method public void updateFloat(String, float) throws java.sql.SQLException;
+ method public void updateInt(int, int) throws java.sql.SQLException;
+ method public void updateInt(String, int) throws java.sql.SQLException;
+ method public void updateLong(int, long) throws java.sql.SQLException;
+ method public void updateLong(String, long) throws java.sql.SQLException;
+ method public void updateNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void updateNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void updateNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+ method public void updateNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+ method public void updateNClob(int, java.sql.NClob) throws java.sql.SQLException;
+ method public void updateNClob(String, java.sql.NClob) throws java.sql.SQLException;
+ method public void updateNClob(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void updateNClob(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void updateNClob(int, java.io.Reader) throws java.sql.SQLException;
+ method public void updateNClob(String, java.io.Reader) throws java.sql.SQLException;
+ method public void updateNString(int, String) throws java.sql.SQLException;
+ method public void updateNString(String, String) throws java.sql.SQLException;
+ method public void updateNull(int) throws java.sql.SQLException;
+ method public void updateNull(String) throws java.sql.SQLException;
+ method public void updateObject(int, Object, int) throws java.sql.SQLException;
+ method public void updateObject(int, Object) throws java.sql.SQLException;
+ method public void updateObject(String, Object, int) throws java.sql.SQLException;
+ method public void updateObject(String, Object) throws java.sql.SQLException;
+ method public void updateRef(int, java.sql.Ref) throws java.sql.SQLException;
+ method public void updateRef(String, java.sql.Ref) throws java.sql.SQLException;
+ method public void updateRow() throws java.sql.SQLException;
+ method public void updateRowId(int, java.sql.RowId) throws java.sql.SQLException;
+ method public void updateRowId(String, java.sql.RowId) throws java.sql.SQLException;
+ method public void updateSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
+ method public void updateSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
+ method public void updateShort(int, short) throws java.sql.SQLException;
+ method public void updateShort(String, short) throws java.sql.SQLException;
+ method public void updateString(int, String) throws java.sql.SQLException;
+ method public void updateString(String, String) throws java.sql.SQLException;
+ method public void updateTime(int, java.sql.Time) throws java.sql.SQLException;
+ method public void updateTime(String, java.sql.Time) throws java.sql.SQLException;
+ method public void updateTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
+ method public void updateTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
+ method public boolean wasNull() throws java.sql.SQLException;
field public static final int CLOSE_CURSORS_AT_COMMIT = 2; // 0x2
field public static final int CONCUR_READ_ONLY = 1007; // 0x3ef
field public static final int CONCUR_UPDATABLE = 1008; // 0x3f0
@@ -66041,43 +66094,41 @@
field public static final int TYPE_SCROLL_SENSITIVE = 1005; // 0x3ed
}
- public abstract interface ResultSetMetaData implements java.sql.Wrapper {
- method public abstract java.lang.String getCatalogName(int) throws java.sql.SQLException;
- method public abstract java.lang.String getColumnClassName(int) throws java.sql.SQLException;
- method public abstract int getColumnCount() throws java.sql.SQLException;
- method public abstract int getColumnDisplaySize(int) throws java.sql.SQLException;
- method public abstract java.lang.String getColumnLabel(int) throws java.sql.SQLException;
- method public abstract java.lang.String getColumnName(int) throws java.sql.SQLException;
- method public abstract int getColumnType(int) throws java.sql.SQLException;
- method public abstract java.lang.String getColumnTypeName(int) throws java.sql.SQLException;
- method public abstract int getPrecision(int) throws java.sql.SQLException;
- method public abstract int getScale(int) throws java.sql.SQLException;
- method public abstract java.lang.String getSchemaName(int) throws java.sql.SQLException;
- method public abstract java.lang.String getTableName(int) throws java.sql.SQLException;
- method public abstract boolean isAutoIncrement(int) throws java.sql.SQLException;
- method public abstract boolean isCaseSensitive(int) throws java.sql.SQLException;
- method public abstract boolean isCurrency(int) throws java.sql.SQLException;
- method public abstract boolean isDefinitelyWritable(int) throws java.sql.SQLException;
- method public abstract int isNullable(int) throws java.sql.SQLException;
- method public abstract boolean isReadOnly(int) throws java.sql.SQLException;
- method public abstract boolean isSearchable(int) throws java.sql.SQLException;
- method public abstract boolean isSigned(int) throws java.sql.SQLException;
- method public abstract boolean isWritable(int) throws java.sql.SQLException;
+ public interface ResultSetMetaData extends java.sql.Wrapper {
+ method public String getCatalogName(int) throws java.sql.SQLException;
+ method public String getColumnClassName(int) throws java.sql.SQLException;
+ method public int getColumnCount() throws java.sql.SQLException;
+ method public int getColumnDisplaySize(int) throws java.sql.SQLException;
+ method public String getColumnLabel(int) throws java.sql.SQLException;
+ method public String getColumnName(int) throws java.sql.SQLException;
+ method public int getColumnType(int) throws java.sql.SQLException;
+ method public String getColumnTypeName(int) throws java.sql.SQLException;
+ method public int getPrecision(int) throws java.sql.SQLException;
+ method public int getScale(int) throws java.sql.SQLException;
+ method public String getSchemaName(int) throws java.sql.SQLException;
+ method public String getTableName(int) throws java.sql.SQLException;
+ method public boolean isAutoIncrement(int) throws java.sql.SQLException;
+ method public boolean isCaseSensitive(int) throws java.sql.SQLException;
+ method public boolean isCurrency(int) throws java.sql.SQLException;
+ method public boolean isDefinitelyWritable(int) throws java.sql.SQLException;
+ method public int isNullable(int) throws java.sql.SQLException;
+ method public boolean isReadOnly(int) throws java.sql.SQLException;
+ method public boolean isSearchable(int) throws java.sql.SQLException;
+ method public boolean isSigned(int) throws java.sql.SQLException;
+ method public boolean isWritable(int) throws java.sql.SQLException;
field public static final int columnNoNulls = 0; // 0x0
field public static final int columnNullable = 1; // 0x1
field public static final int columnNullableUnknown = 2; // 0x2
}
- public abstract interface RowId {
- method public abstract boolean equals(java.lang.Object);
- method public abstract byte[] getBytes();
- method public abstract int hashCode();
- method public abstract java.lang.String toString();
+ public interface RowId {
+ method public boolean equals(Object);
+ method public byte[] getBytes();
+ method public int hashCode();
+ method public String toString();
}
- public final class RowIdLifetime extends java.lang.Enum {
- method public static java.sql.RowIdLifetime valueOf(java.lang.String);
- method public static final java.sql.RowIdLifetime[] values();
+ public enum RowIdLifetime {
enum_constant public static final java.sql.RowIdLifetime ROWID_UNSUPPORTED;
enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_FOREVER;
enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_OTHER;
@@ -66087,307 +66138,307 @@
public class SQLClientInfoException extends java.sql.SQLException {
ctor public SQLClientInfoException();
- ctor public SQLClientInfoException(java.util.Map<java.lang.String, java.sql.ClientInfoStatus>);
- ctor public SQLClientInfoException(java.util.Map<java.lang.String, java.sql.ClientInfoStatus>, java.lang.Throwable);
- ctor public SQLClientInfoException(java.lang.String, java.util.Map<java.lang.String, java.sql.ClientInfoStatus>);
- ctor public SQLClientInfoException(java.lang.String, java.util.Map<java.lang.String, java.sql.ClientInfoStatus>, java.lang.Throwable);
- ctor public SQLClientInfoException(java.lang.String, java.lang.String, java.util.Map<java.lang.String, java.sql.ClientInfoStatus>);
- ctor public SQLClientInfoException(java.lang.String, java.lang.String, java.util.Map<java.lang.String, java.sql.ClientInfoStatus>, java.lang.Throwable);
- ctor public SQLClientInfoException(java.lang.String, java.lang.String, int, java.util.Map<java.lang.String, java.sql.ClientInfoStatus>);
- ctor public SQLClientInfoException(java.lang.String, java.lang.String, int, java.util.Map<java.lang.String, java.sql.ClientInfoStatus>, java.lang.Throwable);
- method public java.util.Map<java.lang.String, java.sql.ClientInfoStatus> getFailedProperties();
+ ctor public SQLClientInfoException(java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
+ ctor public SQLClientInfoException(java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
+ ctor public SQLClientInfoException(String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
+ ctor public SQLClientInfoException(String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
+ ctor public SQLClientInfoException(String, String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
+ ctor public SQLClientInfoException(String, String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
+ ctor public SQLClientInfoException(String, String, int, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
+ ctor public SQLClientInfoException(String, String, int, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
+ method public java.util.Map<java.lang.String,java.sql.ClientInfoStatus> getFailedProperties();
}
- public abstract interface SQLData {
- method public abstract java.lang.String getSQLTypeName() throws java.sql.SQLException;
- method public abstract void readSQL(java.sql.SQLInput, java.lang.String) throws java.sql.SQLException;
- method public abstract void writeSQL(java.sql.SQLOutput) throws java.sql.SQLException;
+ public interface SQLData {
+ method public String getSQLTypeName() throws java.sql.SQLException;
+ method public void readSQL(java.sql.SQLInput, String) throws java.sql.SQLException;
+ method public void writeSQL(java.sql.SQLOutput) throws java.sql.SQLException;
}
public class SQLDataException extends java.sql.SQLNonTransientException {
ctor public SQLDataException();
- ctor public SQLDataException(java.lang.String);
- ctor public SQLDataException(java.lang.String, java.lang.String);
- ctor public SQLDataException(java.lang.String, java.lang.String, int);
- ctor public SQLDataException(java.lang.Throwable);
- ctor public SQLDataException(java.lang.String, java.lang.Throwable);
- ctor public SQLDataException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLDataException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLDataException(String);
+ ctor public SQLDataException(String, String);
+ ctor public SQLDataException(String, String, int);
+ ctor public SQLDataException(Throwable);
+ ctor public SQLDataException(String, Throwable);
+ ctor public SQLDataException(String, String, Throwable);
+ ctor public SQLDataException(String, String, int, Throwable);
}
- public class SQLException extends java.lang.Exception implements java.lang.Iterable {
- ctor public SQLException(java.lang.String, java.lang.String, int);
- ctor public SQLException(java.lang.String, java.lang.String);
- ctor public SQLException(java.lang.String);
+ public class SQLException extends java.lang.Exception implements java.lang.Iterable<java.lang.Throwable> {
+ ctor public SQLException(String, String, int);
+ ctor public SQLException(String, String);
+ ctor public SQLException(String);
ctor public SQLException();
- ctor public SQLException(java.lang.Throwable);
- ctor public SQLException(java.lang.String, java.lang.Throwable);
- ctor public SQLException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLException(Throwable);
+ ctor public SQLException(String, Throwable);
+ ctor public SQLException(String, String, Throwable);
+ ctor public SQLException(String, String, int, Throwable);
method public int getErrorCode();
method public java.sql.SQLException getNextException();
- method public java.lang.String getSQLState();
+ method public String getSQLState();
method public java.util.Iterator<java.lang.Throwable> iterator();
method public void setNextException(java.sql.SQLException);
}
public class SQLFeatureNotSupportedException extends java.sql.SQLNonTransientException {
ctor public SQLFeatureNotSupportedException();
- ctor public SQLFeatureNotSupportedException(java.lang.String);
- ctor public SQLFeatureNotSupportedException(java.lang.String, java.lang.String);
- ctor public SQLFeatureNotSupportedException(java.lang.String, java.lang.String, int);
- ctor public SQLFeatureNotSupportedException(java.lang.Throwable);
- ctor public SQLFeatureNotSupportedException(java.lang.String, java.lang.Throwable);
- ctor public SQLFeatureNotSupportedException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLFeatureNotSupportedException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLFeatureNotSupportedException(String);
+ ctor public SQLFeatureNotSupportedException(String, String);
+ ctor public SQLFeatureNotSupportedException(String, String, int);
+ ctor public SQLFeatureNotSupportedException(Throwable);
+ ctor public SQLFeatureNotSupportedException(String, Throwable);
+ ctor public SQLFeatureNotSupportedException(String, String, Throwable);
+ ctor public SQLFeatureNotSupportedException(String, String, int, Throwable);
}
- public abstract interface SQLInput {
- method public abstract java.sql.Array readArray() throws java.sql.SQLException;
- method public abstract java.io.InputStream readAsciiStream() throws java.sql.SQLException;
- method public abstract java.math.BigDecimal readBigDecimal() throws java.sql.SQLException;
- method public abstract java.io.InputStream readBinaryStream() throws java.sql.SQLException;
- method public abstract java.sql.Blob readBlob() throws java.sql.SQLException;
- method public abstract boolean readBoolean() throws java.sql.SQLException;
- method public abstract byte readByte() throws java.sql.SQLException;
- method public abstract byte[] readBytes() throws java.sql.SQLException;
- method public abstract java.io.Reader readCharacterStream() throws java.sql.SQLException;
- method public abstract java.sql.Clob readClob() throws java.sql.SQLException;
- method public abstract java.sql.Date readDate() throws java.sql.SQLException;
- method public abstract double readDouble() throws java.sql.SQLException;
- method public abstract float readFloat() throws java.sql.SQLException;
- method public abstract int readInt() throws java.sql.SQLException;
- method public abstract long readLong() throws java.sql.SQLException;
- method public abstract java.sql.NClob readNClob() throws java.sql.SQLException;
- method public abstract java.lang.String readNString() throws java.sql.SQLException;
- method public abstract java.lang.Object readObject() throws java.sql.SQLException;
- method public abstract java.sql.Ref readRef() throws java.sql.SQLException;
- method public abstract java.sql.RowId readRowId() throws java.sql.SQLException;
- method public abstract java.sql.SQLXML readSQLXML() throws java.sql.SQLException;
- method public abstract short readShort() throws java.sql.SQLException;
- method public abstract java.lang.String readString() throws java.sql.SQLException;
- method public abstract java.sql.Time readTime() throws java.sql.SQLException;
- method public abstract java.sql.Timestamp readTimestamp() throws java.sql.SQLException;
- method public abstract java.net.URL readURL() throws java.sql.SQLException;
- method public abstract boolean wasNull() throws java.sql.SQLException;
+ public interface SQLInput {
+ method public java.sql.Array readArray() throws java.sql.SQLException;
+ method public java.io.InputStream readAsciiStream() throws java.sql.SQLException;
+ method public java.math.BigDecimal readBigDecimal() throws java.sql.SQLException;
+ method public java.io.InputStream readBinaryStream() throws java.sql.SQLException;
+ method public java.sql.Blob readBlob() throws java.sql.SQLException;
+ method public boolean readBoolean() throws java.sql.SQLException;
+ method public byte readByte() throws java.sql.SQLException;
+ method public byte[] readBytes() throws java.sql.SQLException;
+ method public java.io.Reader readCharacterStream() throws java.sql.SQLException;
+ method public java.sql.Clob readClob() throws java.sql.SQLException;
+ method public java.sql.Date readDate() throws java.sql.SQLException;
+ method public double readDouble() throws java.sql.SQLException;
+ method public float readFloat() throws java.sql.SQLException;
+ method public int readInt() throws java.sql.SQLException;
+ method public long readLong() throws java.sql.SQLException;
+ method public java.sql.NClob readNClob() throws java.sql.SQLException;
+ method public String readNString() throws java.sql.SQLException;
+ method public Object readObject() throws java.sql.SQLException;
+ method public java.sql.Ref readRef() throws java.sql.SQLException;
+ method public java.sql.RowId readRowId() throws java.sql.SQLException;
+ method public java.sql.SQLXML readSQLXML() throws java.sql.SQLException;
+ method public short readShort() throws java.sql.SQLException;
+ method public String readString() throws java.sql.SQLException;
+ method public java.sql.Time readTime() throws java.sql.SQLException;
+ method public java.sql.Timestamp readTimestamp() throws java.sql.SQLException;
+ method public java.net.URL readURL() throws java.sql.SQLException;
+ method public boolean wasNull() throws java.sql.SQLException;
}
public class SQLIntegrityConstraintViolationException extends java.sql.SQLNonTransientException {
ctor public SQLIntegrityConstraintViolationException();
- ctor public SQLIntegrityConstraintViolationException(java.lang.String);
- ctor public SQLIntegrityConstraintViolationException(java.lang.String, java.lang.String);
- ctor public SQLIntegrityConstraintViolationException(java.lang.String, java.lang.String, int);
- ctor public SQLIntegrityConstraintViolationException(java.lang.Throwable);
- ctor public SQLIntegrityConstraintViolationException(java.lang.String, java.lang.Throwable);
- ctor public SQLIntegrityConstraintViolationException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLIntegrityConstraintViolationException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLIntegrityConstraintViolationException(String);
+ ctor public SQLIntegrityConstraintViolationException(String, String);
+ ctor public SQLIntegrityConstraintViolationException(String, String, int);
+ ctor public SQLIntegrityConstraintViolationException(Throwable);
+ ctor public SQLIntegrityConstraintViolationException(String, Throwable);
+ ctor public SQLIntegrityConstraintViolationException(String, String, Throwable);
+ ctor public SQLIntegrityConstraintViolationException(String, String, int, Throwable);
}
public class SQLInvalidAuthorizationSpecException extends java.sql.SQLNonTransientException {
ctor public SQLInvalidAuthorizationSpecException();
- ctor public SQLInvalidAuthorizationSpecException(java.lang.String);
- ctor public SQLInvalidAuthorizationSpecException(java.lang.String, java.lang.String);
- ctor public SQLInvalidAuthorizationSpecException(java.lang.String, java.lang.String, int);
- ctor public SQLInvalidAuthorizationSpecException(java.lang.Throwable);
- ctor public SQLInvalidAuthorizationSpecException(java.lang.String, java.lang.Throwable);
- ctor public SQLInvalidAuthorizationSpecException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLInvalidAuthorizationSpecException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLInvalidAuthorizationSpecException(String);
+ ctor public SQLInvalidAuthorizationSpecException(String, String);
+ ctor public SQLInvalidAuthorizationSpecException(String, String, int);
+ ctor public SQLInvalidAuthorizationSpecException(Throwable);
+ ctor public SQLInvalidAuthorizationSpecException(String, Throwable);
+ ctor public SQLInvalidAuthorizationSpecException(String, String, Throwable);
+ ctor public SQLInvalidAuthorizationSpecException(String, String, int, Throwable);
}
public class SQLNonTransientConnectionException extends java.sql.SQLNonTransientException {
ctor public SQLNonTransientConnectionException();
- ctor public SQLNonTransientConnectionException(java.lang.String);
- ctor public SQLNonTransientConnectionException(java.lang.String, java.lang.String);
- ctor public SQLNonTransientConnectionException(java.lang.String, java.lang.String, int);
- ctor public SQLNonTransientConnectionException(java.lang.Throwable);
- ctor public SQLNonTransientConnectionException(java.lang.String, java.lang.Throwable);
- ctor public SQLNonTransientConnectionException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLNonTransientConnectionException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLNonTransientConnectionException(String);
+ ctor public SQLNonTransientConnectionException(String, String);
+ ctor public SQLNonTransientConnectionException(String, String, int);
+ ctor public SQLNonTransientConnectionException(Throwable);
+ ctor public SQLNonTransientConnectionException(String, Throwable);
+ ctor public SQLNonTransientConnectionException(String, String, Throwable);
+ ctor public SQLNonTransientConnectionException(String, String, int, Throwable);
}
public class SQLNonTransientException extends java.sql.SQLException {
ctor public SQLNonTransientException();
- ctor public SQLNonTransientException(java.lang.String);
- ctor public SQLNonTransientException(java.lang.String, java.lang.String);
- ctor public SQLNonTransientException(java.lang.String, java.lang.String, int);
- ctor public SQLNonTransientException(java.lang.Throwable);
- ctor public SQLNonTransientException(java.lang.String, java.lang.Throwable);
- ctor public SQLNonTransientException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLNonTransientException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLNonTransientException(String);
+ ctor public SQLNonTransientException(String, String);
+ ctor public SQLNonTransientException(String, String, int);
+ ctor public SQLNonTransientException(Throwable);
+ ctor public SQLNonTransientException(String, Throwable);
+ ctor public SQLNonTransientException(String, String, Throwable);
+ ctor public SQLNonTransientException(String, String, int, Throwable);
}
- public abstract interface SQLOutput {
- method public abstract void writeArray(java.sql.Array) throws java.sql.SQLException;
- method public abstract void writeAsciiStream(java.io.InputStream) throws java.sql.SQLException;
- method public abstract void writeBigDecimal(java.math.BigDecimal) throws java.sql.SQLException;
- method public abstract void writeBinaryStream(java.io.InputStream) throws java.sql.SQLException;
- method public abstract void writeBlob(java.sql.Blob) throws java.sql.SQLException;
- method public abstract void writeBoolean(boolean) throws java.sql.SQLException;
- method public abstract void writeByte(byte) throws java.sql.SQLException;
- method public abstract void writeBytes(byte[]) throws java.sql.SQLException;
- method public abstract void writeCharacterStream(java.io.Reader) throws java.sql.SQLException;
- method public abstract void writeClob(java.sql.Clob) throws java.sql.SQLException;
- method public abstract void writeDate(java.sql.Date) throws java.sql.SQLException;
- method public abstract void writeDouble(double) throws java.sql.SQLException;
- method public abstract void writeFloat(float) throws java.sql.SQLException;
- method public abstract void writeInt(int) throws java.sql.SQLException;
- method public abstract void writeLong(long) throws java.sql.SQLException;
- method public abstract void writeNClob(java.sql.NClob) throws java.sql.SQLException;
- method public abstract void writeNString(java.lang.String) throws java.sql.SQLException;
- method public abstract void writeObject(java.sql.SQLData) throws java.sql.SQLException;
- method public abstract void writeRef(java.sql.Ref) throws java.sql.SQLException;
- method public abstract void writeRowId(java.sql.RowId) throws java.sql.SQLException;
- method public abstract void writeSQLXML(java.sql.SQLXML) throws java.sql.SQLException;
- method public abstract void writeShort(short) throws java.sql.SQLException;
- method public abstract void writeString(java.lang.String) throws java.sql.SQLException;
- method public abstract void writeStruct(java.sql.Struct) throws java.sql.SQLException;
- method public abstract void writeTime(java.sql.Time) throws java.sql.SQLException;
- method public abstract void writeTimestamp(java.sql.Timestamp) throws java.sql.SQLException;
- method public abstract void writeURL(java.net.URL) throws java.sql.SQLException;
+ public interface SQLOutput {
+ method public void writeArray(java.sql.Array) throws java.sql.SQLException;
+ method public void writeAsciiStream(java.io.InputStream) throws java.sql.SQLException;
+ method public void writeBigDecimal(java.math.BigDecimal) throws java.sql.SQLException;
+ method public void writeBinaryStream(java.io.InputStream) throws java.sql.SQLException;
+ method public void writeBlob(java.sql.Blob) throws java.sql.SQLException;
+ method public void writeBoolean(boolean) throws java.sql.SQLException;
+ method public void writeByte(byte) throws java.sql.SQLException;
+ method public void writeBytes(byte[]) throws java.sql.SQLException;
+ method public void writeCharacterStream(java.io.Reader) throws java.sql.SQLException;
+ method public void writeClob(java.sql.Clob) throws java.sql.SQLException;
+ method public void writeDate(java.sql.Date) throws java.sql.SQLException;
+ method public void writeDouble(double) throws java.sql.SQLException;
+ method public void writeFloat(float) throws java.sql.SQLException;
+ method public void writeInt(int) throws java.sql.SQLException;
+ method public void writeLong(long) throws java.sql.SQLException;
+ method public void writeNClob(java.sql.NClob) throws java.sql.SQLException;
+ method public void writeNString(String) throws java.sql.SQLException;
+ method public void writeObject(java.sql.SQLData) throws java.sql.SQLException;
+ method public void writeRef(java.sql.Ref) throws java.sql.SQLException;
+ method public void writeRowId(java.sql.RowId) throws java.sql.SQLException;
+ method public void writeSQLXML(java.sql.SQLXML) throws java.sql.SQLException;
+ method public void writeShort(short) throws java.sql.SQLException;
+ method public void writeString(String) throws java.sql.SQLException;
+ method public void writeStruct(java.sql.Struct) throws java.sql.SQLException;
+ method public void writeTime(java.sql.Time) throws java.sql.SQLException;
+ method public void writeTimestamp(java.sql.Timestamp) throws java.sql.SQLException;
+ method public void writeURL(java.net.URL) throws java.sql.SQLException;
}
public final class SQLPermission extends java.security.BasicPermission {
- ctor public SQLPermission(java.lang.String);
- ctor public SQLPermission(java.lang.String, java.lang.String);
+ ctor public SQLPermission(String);
+ ctor public SQLPermission(String, String);
}
public class SQLRecoverableException extends java.sql.SQLException {
ctor public SQLRecoverableException();
- ctor public SQLRecoverableException(java.lang.String);
- ctor public SQLRecoverableException(java.lang.String, java.lang.String);
- ctor public SQLRecoverableException(java.lang.String, java.lang.String, int);
- ctor public SQLRecoverableException(java.lang.Throwable);
- ctor public SQLRecoverableException(java.lang.String, java.lang.Throwable);
- ctor public SQLRecoverableException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLRecoverableException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLRecoverableException(String);
+ ctor public SQLRecoverableException(String, String);
+ ctor public SQLRecoverableException(String, String, int);
+ ctor public SQLRecoverableException(Throwable);
+ ctor public SQLRecoverableException(String, Throwable);
+ ctor public SQLRecoverableException(String, String, Throwable);
+ ctor public SQLRecoverableException(String, String, int, Throwable);
}
public class SQLSyntaxErrorException extends java.sql.SQLNonTransientException {
ctor public SQLSyntaxErrorException();
- ctor public SQLSyntaxErrorException(java.lang.String);
- ctor public SQLSyntaxErrorException(java.lang.String, java.lang.String);
- ctor public SQLSyntaxErrorException(java.lang.String, java.lang.String, int);
- ctor public SQLSyntaxErrorException(java.lang.Throwable);
- ctor public SQLSyntaxErrorException(java.lang.String, java.lang.Throwable);
- ctor public SQLSyntaxErrorException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLSyntaxErrorException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLSyntaxErrorException(String);
+ ctor public SQLSyntaxErrorException(String, String);
+ ctor public SQLSyntaxErrorException(String, String, int);
+ ctor public SQLSyntaxErrorException(Throwable);
+ ctor public SQLSyntaxErrorException(String, Throwable);
+ ctor public SQLSyntaxErrorException(String, String, Throwable);
+ ctor public SQLSyntaxErrorException(String, String, int, Throwable);
}
public class SQLTimeoutException extends java.sql.SQLTransientException {
ctor public SQLTimeoutException();
- ctor public SQLTimeoutException(java.lang.String);
- ctor public SQLTimeoutException(java.lang.String, java.lang.String);
- ctor public SQLTimeoutException(java.lang.String, java.lang.String, int);
- ctor public SQLTimeoutException(java.lang.Throwable);
- ctor public SQLTimeoutException(java.lang.String, java.lang.Throwable);
- ctor public SQLTimeoutException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLTimeoutException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLTimeoutException(String);
+ ctor public SQLTimeoutException(String, String);
+ ctor public SQLTimeoutException(String, String, int);
+ ctor public SQLTimeoutException(Throwable);
+ ctor public SQLTimeoutException(String, Throwable);
+ ctor public SQLTimeoutException(String, String, Throwable);
+ ctor public SQLTimeoutException(String, String, int, Throwable);
}
public class SQLTransactionRollbackException extends java.sql.SQLTransientException {
ctor public SQLTransactionRollbackException();
- ctor public SQLTransactionRollbackException(java.lang.String);
- ctor public SQLTransactionRollbackException(java.lang.String, java.lang.String);
- ctor public SQLTransactionRollbackException(java.lang.String, java.lang.String, int);
- ctor public SQLTransactionRollbackException(java.lang.Throwable);
- ctor public SQLTransactionRollbackException(java.lang.String, java.lang.Throwable);
- ctor public SQLTransactionRollbackException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLTransactionRollbackException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLTransactionRollbackException(String);
+ ctor public SQLTransactionRollbackException(String, String);
+ ctor public SQLTransactionRollbackException(String, String, int);
+ ctor public SQLTransactionRollbackException(Throwable);
+ ctor public SQLTransactionRollbackException(String, Throwable);
+ ctor public SQLTransactionRollbackException(String, String, Throwable);
+ ctor public SQLTransactionRollbackException(String, String, int, Throwable);
}
public class SQLTransientConnectionException extends java.sql.SQLTransientException {
ctor public SQLTransientConnectionException();
- ctor public SQLTransientConnectionException(java.lang.String);
- ctor public SQLTransientConnectionException(java.lang.String, java.lang.String);
- ctor public SQLTransientConnectionException(java.lang.String, java.lang.String, int);
- ctor public SQLTransientConnectionException(java.lang.Throwable);
- ctor public SQLTransientConnectionException(java.lang.String, java.lang.Throwable);
- ctor public SQLTransientConnectionException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLTransientConnectionException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLTransientConnectionException(String);
+ ctor public SQLTransientConnectionException(String, String);
+ ctor public SQLTransientConnectionException(String, String, int);
+ ctor public SQLTransientConnectionException(Throwable);
+ ctor public SQLTransientConnectionException(String, Throwable);
+ ctor public SQLTransientConnectionException(String, String, Throwable);
+ ctor public SQLTransientConnectionException(String, String, int, Throwable);
}
public class SQLTransientException extends java.sql.SQLException {
ctor public SQLTransientException();
- ctor public SQLTransientException(java.lang.String);
- ctor public SQLTransientException(java.lang.String, java.lang.String);
- ctor public SQLTransientException(java.lang.String, java.lang.String, int);
- ctor public SQLTransientException(java.lang.Throwable);
- ctor public SQLTransientException(java.lang.String, java.lang.Throwable);
- ctor public SQLTransientException(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLTransientException(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLTransientException(String);
+ ctor public SQLTransientException(String, String);
+ ctor public SQLTransientException(String, String, int);
+ ctor public SQLTransientException(Throwable);
+ ctor public SQLTransientException(String, Throwable);
+ ctor public SQLTransientException(String, String, Throwable);
+ ctor public SQLTransientException(String, String, int, Throwable);
}
public class SQLWarning extends java.sql.SQLException {
- ctor public SQLWarning(java.lang.String, java.lang.String, int);
- ctor public SQLWarning(java.lang.String, java.lang.String);
- ctor public SQLWarning(java.lang.String);
+ ctor public SQLWarning(String, String, int);
+ ctor public SQLWarning(String, String);
+ ctor public SQLWarning(String);
ctor public SQLWarning();
- ctor public SQLWarning(java.lang.Throwable);
- ctor public SQLWarning(java.lang.String, java.lang.Throwable);
- ctor public SQLWarning(java.lang.String, java.lang.String, java.lang.Throwable);
- ctor public SQLWarning(java.lang.String, java.lang.String, int, java.lang.Throwable);
+ ctor public SQLWarning(Throwable);
+ ctor public SQLWarning(String, Throwable);
+ ctor public SQLWarning(String, String, Throwable);
+ ctor public SQLWarning(String, String, int, Throwable);
method public java.sql.SQLWarning getNextWarning();
method public void setNextWarning(java.sql.SQLWarning);
}
- public abstract interface SQLXML {
- method public abstract void free() throws java.sql.SQLException;
- method public abstract java.io.InputStream getBinaryStream() throws java.sql.SQLException;
- method public abstract java.io.Reader getCharacterStream() throws java.sql.SQLException;
- method public abstract <T extends javax.xml.transform.Source> T getSource(java.lang.Class<T>) throws java.sql.SQLException;
- method public abstract java.lang.String getString() throws java.sql.SQLException;
- method public abstract java.io.OutputStream setBinaryStream() throws java.sql.SQLException;
- method public abstract java.io.Writer setCharacterStream() throws java.sql.SQLException;
- method public abstract <T extends javax.xml.transform.Result> T setResult(java.lang.Class<T>) throws java.sql.SQLException;
- method public abstract void setString(java.lang.String) throws java.sql.SQLException;
+ public interface SQLXML {
+ method public void free() throws java.sql.SQLException;
+ method public java.io.InputStream getBinaryStream() throws java.sql.SQLException;
+ method public java.io.Reader getCharacterStream() throws java.sql.SQLException;
+ method public <T extends javax.xml.transform.Source> T getSource(Class<T>) throws java.sql.SQLException;
+ method public String getString() throws java.sql.SQLException;
+ method public java.io.OutputStream setBinaryStream() throws java.sql.SQLException;
+ method public java.io.Writer setCharacterStream() throws java.sql.SQLException;
+ method public <T extends javax.xml.transform.Result> T setResult(Class<T>) throws java.sql.SQLException;
+ method public void setString(String) throws java.sql.SQLException;
}
- public abstract interface Savepoint {
- method public abstract int getSavepointId() throws java.sql.SQLException;
- method public abstract java.lang.String getSavepointName() throws java.sql.SQLException;
+ public interface Savepoint {
+ method public int getSavepointId() throws java.sql.SQLException;
+ method public String getSavepointName() throws java.sql.SQLException;
}
- public abstract interface Statement implements java.lang.AutoCloseable java.sql.Wrapper {
- method public abstract void addBatch(java.lang.String) throws java.sql.SQLException;
- method public abstract void cancel() throws java.sql.SQLException;
- method public abstract void clearBatch() throws java.sql.SQLException;
- method public abstract void clearWarnings() throws java.sql.SQLException;
- method public abstract void close() throws java.sql.SQLException;
- method public abstract boolean execute(java.lang.String) throws java.sql.SQLException;
- method public abstract boolean execute(java.lang.String, int) throws java.sql.SQLException;
- method public abstract boolean execute(java.lang.String, int[]) throws java.sql.SQLException;
- method public abstract boolean execute(java.lang.String, java.lang.String[]) throws java.sql.SQLException;
- method public abstract int[] executeBatch() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet executeQuery(java.lang.String) throws java.sql.SQLException;
- method public abstract int executeUpdate(java.lang.String) throws java.sql.SQLException;
- method public abstract int executeUpdate(java.lang.String, int) throws java.sql.SQLException;
- method public abstract int executeUpdate(java.lang.String, int[]) throws java.sql.SQLException;
- method public abstract int executeUpdate(java.lang.String, java.lang.String[]) throws java.sql.SQLException;
- method public abstract java.sql.Connection getConnection() throws java.sql.SQLException;
- method public abstract int getFetchDirection() throws java.sql.SQLException;
- method public abstract int getFetchSize() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException;
- method public abstract int getMaxFieldSize() throws java.sql.SQLException;
- method public abstract int getMaxRows() throws java.sql.SQLException;
- method public abstract boolean getMoreResults() throws java.sql.SQLException;
- method public abstract boolean getMoreResults(int) throws java.sql.SQLException;
- method public abstract int getQueryTimeout() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getResultSet() throws java.sql.SQLException;
- method public abstract int getResultSetConcurrency() throws java.sql.SQLException;
- method public abstract int getResultSetHoldability() throws java.sql.SQLException;
- method public abstract int getResultSetType() throws java.sql.SQLException;
- method public abstract int getUpdateCount() throws java.sql.SQLException;
- method public abstract java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
- method public abstract boolean isClosed() throws java.sql.SQLException;
- method public abstract boolean isPoolable() throws java.sql.SQLException;
- method public abstract void setCursorName(java.lang.String) throws java.sql.SQLException;
- method public abstract void setEscapeProcessing(boolean) throws java.sql.SQLException;
- method public abstract void setFetchDirection(int) throws java.sql.SQLException;
- method public abstract void setFetchSize(int) throws java.sql.SQLException;
- method public abstract void setMaxFieldSize(int) throws java.sql.SQLException;
- method public abstract void setMaxRows(int) throws java.sql.SQLException;
- method public abstract void setPoolable(boolean) throws java.sql.SQLException;
- method public abstract void setQueryTimeout(int) throws java.sql.SQLException;
+ public interface Statement extends java.sql.Wrapper java.lang.AutoCloseable {
+ method public void addBatch(String) throws java.sql.SQLException;
+ method public void cancel() throws java.sql.SQLException;
+ method public void clearBatch() throws java.sql.SQLException;
+ method public void clearWarnings() throws java.sql.SQLException;
+ method public void close() throws java.sql.SQLException;
+ method public boolean execute(String) throws java.sql.SQLException;
+ method public boolean execute(String, int) throws java.sql.SQLException;
+ method public boolean execute(String, int[]) throws java.sql.SQLException;
+ method public boolean execute(String, String[]) throws java.sql.SQLException;
+ method public int[] executeBatch() throws java.sql.SQLException;
+ method public java.sql.ResultSet executeQuery(String) throws java.sql.SQLException;
+ method public int executeUpdate(String) throws java.sql.SQLException;
+ method public int executeUpdate(String, int) throws java.sql.SQLException;
+ method public int executeUpdate(String, int[]) throws java.sql.SQLException;
+ method public int executeUpdate(String, String[]) throws java.sql.SQLException;
+ method public java.sql.Connection getConnection() throws java.sql.SQLException;
+ method public int getFetchDirection() throws java.sql.SQLException;
+ method public int getFetchSize() throws java.sql.SQLException;
+ method public java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException;
+ method public int getMaxFieldSize() throws java.sql.SQLException;
+ method public int getMaxRows() throws java.sql.SQLException;
+ method public boolean getMoreResults() throws java.sql.SQLException;
+ method public boolean getMoreResults(int) throws java.sql.SQLException;
+ method public int getQueryTimeout() throws java.sql.SQLException;
+ method public java.sql.ResultSet getResultSet() throws java.sql.SQLException;
+ method public int getResultSetConcurrency() throws java.sql.SQLException;
+ method public int getResultSetHoldability() throws java.sql.SQLException;
+ method public int getResultSetType() throws java.sql.SQLException;
+ method public int getUpdateCount() throws java.sql.SQLException;
+ method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
+ method public boolean isClosed() throws java.sql.SQLException;
+ method public boolean isPoolable() throws java.sql.SQLException;
+ method public void setCursorName(String) throws java.sql.SQLException;
+ method public void setEscapeProcessing(boolean) throws java.sql.SQLException;
+ method public void setFetchDirection(int) throws java.sql.SQLException;
+ method public void setFetchSize(int) throws java.sql.SQLException;
+ method public void setMaxFieldSize(int) throws java.sql.SQLException;
+ method public void setMaxRows(int) throws java.sql.SQLException;
+ method public void setPoolable(boolean) throws java.sql.SQLException;
+ method public void setQueryTimeout(int) throws java.sql.SQLException;
field public static final int CLOSE_ALL_RESULTS = 3; // 0x3
field public static final int CLOSE_CURRENT_RESULT = 1; // 0x1
field public static final int EXECUTE_FAILED = -3; // 0xfffffffd
@@ -66397,20 +66448,20 @@
field public static final int SUCCESS_NO_INFO = -2; // 0xfffffffe
}
- public abstract interface Struct {
- method public abstract java.lang.Object[] getAttributes() throws java.sql.SQLException;
- method public abstract java.lang.Object[] getAttributes(java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract java.lang.String getSQLTypeName() throws java.sql.SQLException;
+ public interface Struct {
+ method public Object[] getAttributes() throws java.sql.SQLException;
+ method public Object[] getAttributes(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public String getSQLTypeName() throws java.sql.SQLException;
}
public class Time extends java.util.Date {
- ctor public deprecated Time(int, int, int);
+ ctor @Deprecated public Time(int, int, int);
ctor public Time(long);
- method public static java.sql.Time valueOf(java.lang.String);
+ method public static java.sql.Time valueOf(String);
}
public class Timestamp extends java.util.Date {
- ctor public deprecated Timestamp(int, int, int, int, int, int, int);
+ ctor @Deprecated public Timestamp(int, int, int, int, int, int, int);
ctor public Timestamp(long);
method public boolean after(java.sql.Timestamp);
method public boolean before(java.sql.Timestamp);
@@ -66418,7 +66469,7 @@
method public boolean equals(java.sql.Timestamp);
method public int getNanos();
method public void setNanos(int);
- method public static java.sql.Timestamp valueOf(java.lang.String);
+ method public static java.sql.Timestamp valueOf(String);
}
public class Types {
@@ -66460,9 +66511,9 @@
field public static final int VARCHAR = 12; // 0xc
}
- public abstract interface Wrapper {
- method public abstract boolean isWrapperFor(java.lang.Class<?>) throws java.sql.SQLException;
- method public abstract <T> T unwrap(java.lang.Class<T>) throws java.sql.SQLException;
+ public interface Wrapper {
+ method public boolean isWrapperFor(Class<?>) throws java.sql.SQLException;
+ method public <T> T unwrap(Class<T>) throws java.sql.SQLException;
}
}
@@ -66470,49 +66521,49 @@
package java.text {
public class Annotation {
- ctor public Annotation(java.lang.Object);
- method public java.lang.Object getValue();
+ ctor public Annotation(Object);
+ method public Object getValue();
}
- public abstract interface AttributedCharacterIterator implements java.text.CharacterIterator {
- method public abstract java.util.Set<java.text.AttributedCharacterIterator.Attribute> getAllAttributeKeys();
- method public abstract java.lang.Object getAttribute(java.text.AttributedCharacterIterator.Attribute);
- method public abstract java.util.Map<java.text.AttributedCharacterIterator.Attribute, java.lang.Object> getAttributes();
- method public abstract int getRunLimit();
- method public abstract int getRunLimit(java.text.AttributedCharacterIterator.Attribute);
- method public abstract int getRunLimit(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
- method public abstract int getRunStart();
- method public abstract int getRunStart(java.text.AttributedCharacterIterator.Attribute);
- method public abstract int getRunStart(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
+ public interface AttributedCharacterIterator extends java.text.CharacterIterator {
+ method public java.util.Set<java.text.AttributedCharacterIterator.Attribute> getAllAttributeKeys();
+ method public Object getAttribute(java.text.AttributedCharacterIterator.Attribute);
+ method public java.util.Map<java.text.AttributedCharacterIterator.Attribute,java.lang.Object> getAttributes();
+ method public int getRunLimit();
+ method public int getRunLimit(java.text.AttributedCharacterIterator.Attribute);
+ method public int getRunLimit(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
+ method public int getRunStart();
+ method public int getRunStart(java.text.AttributedCharacterIterator.Attribute);
+ method public int getRunStart(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
}
public static class AttributedCharacterIterator.Attribute implements java.io.Serializable {
- ctor protected AttributedCharacterIterator.Attribute(java.lang.String);
- method public final boolean equals(java.lang.Object);
- method protected java.lang.String getName();
+ ctor protected AttributedCharacterIterator.Attribute(String);
+ method public final boolean equals(Object);
+ method protected String getName();
method public final int hashCode();
- method protected java.lang.Object readResolve() throws java.io.InvalidObjectException;
+ method protected Object readResolve() throws java.io.InvalidObjectException;
field public static final java.text.AttributedCharacterIterator.Attribute INPUT_METHOD_SEGMENT;
field public static final java.text.AttributedCharacterIterator.Attribute LANGUAGE;
field public static final java.text.AttributedCharacterIterator.Attribute READING;
}
public class AttributedString {
- ctor public AttributedString(java.lang.String);
- ctor public AttributedString(java.lang.String, java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute, ?>);
+ ctor public AttributedString(String);
+ ctor public AttributedString(String, java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute,?>);
ctor public AttributedString(java.text.AttributedCharacterIterator);
ctor public AttributedString(java.text.AttributedCharacterIterator, int, int);
ctor public AttributedString(java.text.AttributedCharacterIterator, int, int, java.text.AttributedCharacterIterator.Attribute[]);
- method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, java.lang.Object);
- method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, java.lang.Object, int, int);
- method public void addAttributes(java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute, ?>, int, int);
+ method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, Object);
+ method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, Object, int, int);
+ method public void addAttributes(java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute,?>, int, int);
method public java.text.AttributedCharacterIterator getIterator();
method public java.text.AttributedCharacterIterator getIterator(java.text.AttributedCharacterIterator.Attribute[]);
method public java.text.AttributedCharacterIterator getIterator(java.text.AttributedCharacterIterator.Attribute[], int, int);
}
public final class Bidi {
- ctor public Bidi(java.lang.String, int);
+ ctor public Bidi(String, int);
ctor public Bidi(java.text.AttributedCharacterIterator);
ctor public Bidi(char[], int, byte[], int, int, int);
method public boolean baseIsLeftToRight();
@@ -66527,7 +66578,7 @@
method public boolean isLeftToRight();
method public boolean isMixed();
method public boolean isRightToLeft();
- method public static void reorderVisually(byte[], int, java.lang.Object[], int, int);
+ method public static void reorderVisually(byte[], int, Object[], int, int);
method public static boolean requiresBidi(char[], int, int);
field public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = -2; // 0xfffffffe
field public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = -1; // 0xffffffff
@@ -66537,11 +66588,11 @@
public abstract class BreakIterator implements java.lang.Cloneable {
ctor protected BreakIterator();
- method public java.lang.Object clone();
+ method public Object clone();
method public abstract int current();
method public abstract int first();
method public abstract int following(int);
- method public static synchronized java.util.Locale[] getAvailableLocales();
+ method public static java.util.Locale[] getAvailableLocales();
method public static java.text.BreakIterator getCharacterInstance();
method public static java.text.BreakIterator getCharacterInstance(java.util.Locale);
method public static java.text.BreakIterator getLineInstance();
@@ -66557,39 +66608,39 @@
method public abstract int next();
method public int preceding(int);
method public abstract int previous();
- method public void setText(java.lang.String);
+ method public void setText(String);
method public abstract void setText(java.text.CharacterIterator);
field public static final int DONE = -1; // 0xffffffff
}
- public abstract interface CharacterIterator implements java.lang.Cloneable {
- method public abstract java.lang.Object clone();
- method public abstract char current();
- method public abstract char first();
- method public abstract int getBeginIndex();
- method public abstract int getEndIndex();
- method public abstract int getIndex();
- method public abstract char last();
- method public abstract char next();
- method public abstract char previous();
- method public abstract char setIndex(int);
+ public interface CharacterIterator extends java.lang.Cloneable {
+ method public Object clone();
+ method public char current();
+ method public char first();
+ method public int getBeginIndex();
+ method public int getEndIndex();
+ method public int getIndex();
+ method public char last();
+ method public char next();
+ method public char previous();
+ method public char setIndex(int);
field public static final char DONE = 65535; // 0xffff '\uffff'
}
public class ChoiceFormat extends java.text.NumberFormat {
- ctor public ChoiceFormat(java.lang.String);
- ctor public ChoiceFormat(double[], java.lang.String[]);
- method public void applyPattern(java.lang.String);
- method public java.lang.StringBuffer format(long, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuffer format(double, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.Object[] getFormats();
+ ctor public ChoiceFormat(String);
+ ctor public ChoiceFormat(double[], String[]);
+ method public void applyPattern(String);
+ method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
+ method public Object[] getFormats();
method public double[] getLimits();
method public static final double nextDouble(double);
method public static double nextDouble(double, boolean);
- method public java.lang.Number parse(java.lang.String, java.text.ParsePosition);
+ method public Number parse(String, java.text.ParsePosition);
method public static final double previousDouble(double);
- method public void setChoices(double[], java.lang.String[]);
- method public java.lang.String toPattern();
+ method public void setChoices(double[], String[]);
+ method public String toPattern();
}
public final class CollationElementIterator {
@@ -66601,34 +66652,34 @@
method public void reset();
method public static short secondaryOrder(int);
method public void setOffset(int);
- method public void setText(java.lang.String);
+ method public void setText(String);
method public void setText(java.text.CharacterIterator);
method public static short tertiaryOrder(int);
field public static final int NULLORDER = -1; // 0xffffffff
}
- public abstract class CollationKey implements java.lang.Comparable {
- ctor protected CollationKey(java.lang.String);
+ public abstract class CollationKey implements java.lang.Comparable<java.text.CollationKey> {
+ ctor protected CollationKey(String);
method public abstract int compareTo(java.text.CollationKey);
- method public java.lang.String getSourceString();
+ method public String getSourceString();
method public abstract byte[] toByteArray();
}
- public abstract class Collator implements java.lang.Cloneable java.util.Comparator {
+ public abstract class Collator implements java.lang.Cloneable java.util.Comparator<java.lang.Object> {
ctor protected Collator();
- method public java.lang.Object clone();
- method public abstract int compare(java.lang.String, java.lang.String);
- method public int compare(java.lang.Object, java.lang.Object);
- method public boolean equals(java.lang.String, java.lang.String);
- method public static synchronized java.util.Locale[] getAvailableLocales();
- method public abstract java.text.CollationKey getCollationKey(java.lang.String);
- method public synchronized int getDecomposition();
- method public static synchronized java.text.Collator getInstance();
- method public static synchronized java.text.Collator getInstance(java.util.Locale);
- method public synchronized int getStrength();
+ method public Object clone();
+ method public abstract int compare(String, String);
+ method public int compare(Object, Object);
+ method public boolean equals(String, String);
+ method public static java.util.Locale[] getAvailableLocales();
+ method public abstract java.text.CollationKey getCollationKey(String);
+ method public int getDecomposition();
+ method public static java.text.Collator getInstance();
+ method public static java.text.Collator getInstance(java.util.Locale);
+ method public int getStrength();
method public abstract int hashCode();
- method public synchronized void setDecomposition(int);
- method public synchronized void setStrength(int);
+ method public void setDecomposition(int);
+ method public void setStrength(int);
field public static final int CANONICAL_DECOMPOSITION = 1; // 0x1
field public static final int FULL_DECOMPOSITION = 2; // 0x2
field public static final int IDENTICAL = 3; // 0x3
@@ -66640,31 +66691,31 @@
public abstract class DateFormat extends java.text.Format {
ctor protected DateFormat();
- method public final java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public abstract java.lang.StringBuffer format(java.util.Date, java.lang.StringBuffer, java.text.FieldPosition);
- method public final java.lang.String format(java.util.Date);
+ method @NonNull public final StringBuffer format(@NonNull Object, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
+ method @NonNull public abstract StringBuffer format(@NonNull java.util.Date, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
+ method @NonNull public final String format(@NonNull java.util.Date);
method public static java.util.Locale[] getAvailableLocales();
- method public java.util.Calendar getCalendar();
- method public static final java.text.DateFormat getDateInstance();
- method public static final java.text.DateFormat getDateInstance(int);
- method public static final java.text.DateFormat getDateInstance(int, java.util.Locale);
- method public static final java.text.DateFormat getDateTimeInstance();
- method public static final java.text.DateFormat getDateTimeInstance(int, int);
- method public static final java.text.DateFormat getDateTimeInstance(int, int, java.util.Locale);
- method public static final java.text.DateFormat getInstance();
- method public java.text.NumberFormat getNumberFormat();
- method public static final java.text.DateFormat getTimeInstance();
- method public static final java.text.DateFormat getTimeInstance(int);
- method public static final java.text.DateFormat getTimeInstance(int, java.util.Locale);
- method public java.util.TimeZone getTimeZone();
+ method @NonNull public java.util.Calendar getCalendar();
+ method @NonNull public static final java.text.DateFormat getDateInstance();
+ method @NonNull public static final java.text.DateFormat getDateInstance(int);
+ method @NonNull public static final java.text.DateFormat getDateInstance(int, @NonNull java.util.Locale);
+ method @NonNull public static final java.text.DateFormat getDateTimeInstance();
+ method @NonNull public static final java.text.DateFormat getDateTimeInstance(int, int);
+ method @NonNull public static final java.text.DateFormat getDateTimeInstance(int, int, @NonNull java.util.Locale);
+ method @NonNull public static final java.text.DateFormat getInstance();
+ method @NonNull public java.text.NumberFormat getNumberFormat();
+ method @NonNull public static final java.text.DateFormat getTimeInstance();
+ method @NonNull public static final java.text.DateFormat getTimeInstance(int);
+ method @NonNull public static final java.text.DateFormat getTimeInstance(int, @NonNull java.util.Locale);
+ method @NonNull public java.util.TimeZone getTimeZone();
method public boolean isLenient();
- method public java.util.Date parse(java.lang.String) throws java.text.ParseException;
- method public abstract java.util.Date parse(java.lang.String, java.text.ParsePosition);
- method public java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
- method public void setCalendar(java.util.Calendar);
+ method @Nullable public java.util.Date parse(@NonNull String) throws java.text.ParseException;
+ method @Nullable public abstract java.util.Date parse(@NonNull String, @NonNull java.text.ParsePosition);
+ method @Nullable public Object parseObject(@NonNull String, @NonNull java.text.ParsePosition);
+ method public void setCalendar(@NonNull java.util.Calendar);
method public void setLenient(boolean);
- method public void setNumberFormat(java.text.NumberFormat);
- method public void setTimeZone(java.util.TimeZone);
+ method public void setNumberFormat(@NonNull java.text.NumberFormat);
+ method public void setTimeZone(@NonNull java.util.TimeZone);
field public static final int AM_PM_FIELD = 14; // 0xe
field public static final int DATE_FIELD = 3; // 0x3
field public static final int DAY_OF_WEEK_FIELD = 9; // 0x9
@@ -66688,124 +66739,124 @@
field public static final int WEEK_OF_MONTH_FIELD = 13; // 0xd
field public static final int WEEK_OF_YEAR_FIELD = 12; // 0xc
field public static final int YEAR_FIELD = 1; // 0x1
- field protected java.util.Calendar calendar;
- field protected java.text.NumberFormat numberFormat;
+ field @NonNull protected java.util.Calendar calendar;
+ field @NonNull protected java.text.NumberFormat numberFormat;
}
public static class DateFormat.Field extends java.text.Format.Field {
- ctor protected DateFormat.Field(java.lang.String, int);
+ ctor protected DateFormat.Field(@NonNull String, int);
method public int getCalendarField();
- method public static java.text.DateFormat.Field ofCalendarField(int);
- field public static final java.text.DateFormat.Field AM_PM;
- field public static final java.text.DateFormat.Field DAY_OF_MONTH;
- field public static final java.text.DateFormat.Field DAY_OF_WEEK;
- field public static final java.text.DateFormat.Field DAY_OF_WEEK_IN_MONTH;
- field public static final java.text.DateFormat.Field DAY_OF_YEAR;
- field public static final java.text.DateFormat.Field ERA;
- field public static final java.text.DateFormat.Field HOUR0;
- field public static final java.text.DateFormat.Field HOUR1;
- field public static final java.text.DateFormat.Field HOUR_OF_DAY0;
- field public static final java.text.DateFormat.Field HOUR_OF_DAY1;
- field public static final java.text.DateFormat.Field MILLISECOND;
- field public static final java.text.DateFormat.Field MINUTE;
- field public static final java.text.DateFormat.Field MONTH;
- field public static final java.text.DateFormat.Field SECOND;
- field public static final java.text.DateFormat.Field TIME_ZONE;
- field public static final java.text.DateFormat.Field WEEK_OF_MONTH;
- field public static final java.text.DateFormat.Field WEEK_OF_YEAR;
- field public static final java.text.DateFormat.Field YEAR;
+ method @NonNull public static java.text.DateFormat.Field ofCalendarField(int);
+ field @NonNull public static final java.text.DateFormat.Field AM_PM;
+ field @NonNull public static final java.text.DateFormat.Field DAY_OF_MONTH;
+ field @NonNull public static final java.text.DateFormat.Field DAY_OF_WEEK;
+ field @NonNull public static final java.text.DateFormat.Field DAY_OF_WEEK_IN_MONTH;
+ field @NonNull public static final java.text.DateFormat.Field DAY_OF_YEAR;
+ field @NonNull public static final java.text.DateFormat.Field ERA;
+ field @NonNull public static final java.text.DateFormat.Field HOUR0;
+ field @NonNull public static final java.text.DateFormat.Field HOUR1;
+ field @NonNull public static final java.text.DateFormat.Field HOUR_OF_DAY0;
+ field @NonNull public static final java.text.DateFormat.Field HOUR_OF_DAY1;
+ field @NonNull public static final java.text.DateFormat.Field MILLISECOND;
+ field @NonNull public static final java.text.DateFormat.Field MINUTE;
+ field @NonNull public static final java.text.DateFormat.Field MONTH;
+ field @NonNull public static final java.text.DateFormat.Field SECOND;
+ field @NonNull public static final java.text.DateFormat.Field TIME_ZONE;
+ field @NonNull public static final java.text.DateFormat.Field WEEK_OF_MONTH;
+ field @NonNull public static final java.text.DateFormat.Field WEEK_OF_YEAR;
+ field @NonNull public static final java.text.DateFormat.Field YEAR;
}
public class DateFormatSymbols implements java.lang.Cloneable java.io.Serializable {
ctor public DateFormatSymbols();
ctor public DateFormatSymbols(java.util.Locale);
- method public java.lang.Object clone();
- method public java.lang.String[] getAmPmStrings();
+ method public Object clone();
+ method public String[] getAmPmStrings();
method public static java.util.Locale[] getAvailableLocales();
- method public java.lang.String[] getEras();
+ method public String[] getEras();
method public static final java.text.DateFormatSymbols getInstance();
method public static final java.text.DateFormatSymbols getInstance(java.util.Locale);
- method public java.lang.String getLocalPatternChars();
- method public java.lang.String[] getMonths();
- method public java.lang.String[] getShortMonths();
- method public java.lang.String[] getShortWeekdays();
- method public java.lang.String[] getWeekdays();
- method public java.lang.String[][] getZoneStrings();
- method public void setAmPmStrings(java.lang.String[]);
- method public void setEras(java.lang.String[]);
- method public void setLocalPatternChars(java.lang.String);
- method public void setMonths(java.lang.String[]);
- method public void setShortMonths(java.lang.String[]);
- method public void setShortWeekdays(java.lang.String[]);
- method public void setWeekdays(java.lang.String[]);
- method public void setZoneStrings(java.lang.String[][]);
+ method public String getLocalPatternChars();
+ method public String[] getMonths();
+ method public String[] getShortMonths();
+ method public String[] getShortWeekdays();
+ method public String[] getWeekdays();
+ method public String[][] getZoneStrings();
+ method public void setAmPmStrings(String[]);
+ method public void setEras(String[]);
+ method public void setLocalPatternChars(String);
+ method public void setMonths(String[]);
+ method public void setShortMonths(String[]);
+ method public void setShortWeekdays(String[]);
+ method public void setWeekdays(String[]);
+ method public void setZoneStrings(String[][]);
}
public class DecimalFormat extends java.text.NumberFormat {
ctor public DecimalFormat();
- ctor public DecimalFormat(java.lang.String);
- ctor public DecimalFormat(java.lang.String, java.text.DecimalFormatSymbols);
- method public void applyLocalizedPattern(java.lang.String);
- method public void applyPattern(java.lang.String);
- method public final java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuffer format(double, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.lang.StringBuffer format(long, java.lang.StringBuffer, java.text.FieldPosition);
+ ctor public DecimalFormat(String);
+ ctor public DecimalFormat(String, java.text.DecimalFormatSymbols);
+ method public void applyLocalizedPattern(String);
+ method public void applyPattern(String);
+ method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
+ method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
method public java.text.DecimalFormatSymbols getDecimalFormatSymbols();
method public int getGroupingSize();
method public int getMultiplier();
- method public java.lang.String getNegativePrefix();
- method public java.lang.String getNegativeSuffix();
- method public java.lang.String getPositivePrefix();
- method public java.lang.String getPositiveSuffix();
+ method public String getNegativePrefix();
+ method public String getNegativeSuffix();
+ method public String getPositivePrefix();
+ method public String getPositiveSuffix();
method public boolean isDecimalSeparatorAlwaysShown();
method public boolean isParseBigDecimal();
- method public java.lang.Number parse(java.lang.String, java.text.ParsePosition);
+ method public Number parse(String, java.text.ParsePosition);
method public void setDecimalFormatSymbols(java.text.DecimalFormatSymbols);
method public void setDecimalSeparatorAlwaysShown(boolean);
method public void setGroupingSize(int);
method public void setMultiplier(int);
- method public void setNegativePrefix(java.lang.String);
- method public void setNegativeSuffix(java.lang.String);
+ method public void setNegativePrefix(String);
+ method public void setNegativeSuffix(String);
method public void setParseBigDecimal(boolean);
- method public void setPositivePrefix(java.lang.String);
- method public void setPositiveSuffix(java.lang.String);
- method public java.lang.String toLocalizedPattern();
- method public java.lang.String toPattern();
+ method public void setPositivePrefix(String);
+ method public void setPositiveSuffix(String);
+ method public String toLocalizedPattern();
+ method public String toPattern();
}
public class DecimalFormatSymbols implements java.lang.Cloneable java.io.Serializable {
ctor public DecimalFormatSymbols();
ctor public DecimalFormatSymbols(java.util.Locale);
- method public java.lang.Object clone();
+ method public Object clone();
method public static java.util.Locale[] getAvailableLocales();
method public java.util.Currency getCurrency();
- method public java.lang.String getCurrencySymbol();
+ method public String getCurrencySymbol();
method public char getDecimalSeparator();
method public char getDigit();
- method public java.lang.String getExponentSeparator();
+ method public String getExponentSeparator();
method public char getGroupingSeparator();
- method public java.lang.String getInfinity();
+ method public String getInfinity();
method public static final java.text.DecimalFormatSymbols getInstance();
method public static final java.text.DecimalFormatSymbols getInstance(java.util.Locale);
- method public java.lang.String getInternationalCurrencySymbol();
+ method public String getInternationalCurrencySymbol();
method public char getMinusSign();
method public char getMonetaryDecimalSeparator();
- method public java.lang.String getNaN();
+ method public String getNaN();
method public char getPatternSeparator();
method public char getPerMill();
method public char getPercent();
method public char getZeroDigit();
method public void setCurrency(java.util.Currency);
- method public void setCurrencySymbol(java.lang.String);
+ method public void setCurrencySymbol(String);
method public void setDecimalSeparator(char);
method public void setDigit(char);
- method public void setExponentSeparator(java.lang.String);
+ method public void setExponentSeparator(String);
method public void setGroupingSeparator(char);
- method public void setInfinity(java.lang.String);
- method public void setInternationalCurrencySymbol(java.lang.String);
+ method public void setInfinity(String);
+ method public void setInternationalCurrencySymbol(String);
method public void setMinusSign(char);
method public void setMonetaryDecimalSeparator(char);
- method public void setNaN(java.lang.String);
+ method public void setNaN(String);
method public void setPatternSeparator(char);
method public void setPerMill(char);
method public void setPercent(char);
@@ -66826,52 +66877,50 @@
public abstract class Format implements java.lang.Cloneable java.io.Serializable {
ctor protected Format();
- method public java.lang.Object clone();
- method public final java.lang.String format(java.lang.Object);
- method public abstract java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public java.text.AttributedCharacterIterator formatToCharacterIterator(java.lang.Object);
- method public abstract java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
- method public java.lang.Object parseObject(java.lang.String) throws java.text.ParseException;
+ method public Object clone();
+ method public final String format(Object);
+ method public abstract StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+ method public java.text.AttributedCharacterIterator formatToCharacterIterator(Object);
+ method public abstract Object parseObject(String, java.text.ParsePosition);
+ method public Object parseObject(String) throws java.text.ParseException;
}
public static class Format.Field extends java.text.AttributedCharacterIterator.Attribute {
- ctor protected Format.Field(java.lang.String);
+ ctor protected Format.Field(String);
}
public class MessageFormat extends java.text.Format {
- ctor public MessageFormat(java.lang.String);
- ctor public MessageFormat(java.lang.String, java.util.Locale);
- method public void applyPattern(java.lang.String);
- method public final java.lang.StringBuffer format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition);
- method public static java.lang.String format(java.lang.String, java.lang.Object...);
- method public final java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
+ ctor public MessageFormat(String);
+ ctor public MessageFormat(String, java.util.Locale);
+ method public void applyPattern(String);
+ method public final StringBuffer format(Object[], StringBuffer, java.text.FieldPosition);
+ method public static String format(String, java.lang.Object...);
+ method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
method public java.text.Format[] getFormats();
method public java.text.Format[] getFormatsByArgumentIndex();
method public java.util.Locale getLocale();
- method public java.lang.Object[] parse(java.lang.String, java.text.ParsePosition);
- method public java.lang.Object[] parse(java.lang.String) throws java.text.ParseException;
- method public java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
+ method public Object[] parse(String, java.text.ParsePosition);
+ method public Object[] parse(String) throws java.text.ParseException;
+ method public Object parseObject(String, java.text.ParsePosition);
method public void setFormat(int, java.text.Format);
method public void setFormatByArgumentIndex(int, java.text.Format);
method public void setFormats(java.text.Format[]);
method public void setFormatsByArgumentIndex(java.text.Format[]);
method public void setLocale(java.util.Locale);
- method public java.lang.String toPattern();
+ method public String toPattern();
}
public static class MessageFormat.Field extends java.text.Format.Field {
- ctor protected MessageFormat.Field(java.lang.String);
+ ctor protected MessageFormat.Field(String);
field public static final java.text.MessageFormat.Field ARGUMENT;
}
public final class Normalizer {
- method public static boolean isNormalized(java.lang.CharSequence, java.text.Normalizer.Form);
- method public static java.lang.String normalize(java.lang.CharSequence, java.text.Normalizer.Form);
+ method public static boolean isNormalized(CharSequence, java.text.Normalizer.Form);
+ method public static String normalize(CharSequence, java.text.Normalizer.Form);
}
- public static final class Normalizer.Form extends java.lang.Enum {
- method public static java.text.Normalizer.Form valueOf(java.lang.String);
- method public static final java.text.Normalizer.Form[] values();
+ public enum Normalizer.Form {
enum_constant public static final java.text.Normalizer.Form NFC;
enum_constant public static final java.text.Normalizer.Form NFD;
enum_constant public static final java.text.Normalizer.Form NFKC;
@@ -66880,62 +66929,62 @@
public abstract class NumberFormat extends java.text.Format {
ctor protected NumberFormat();
- method public java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
- method public final java.lang.String format(double);
- method public final java.lang.String format(long);
- method public abstract java.lang.StringBuffer format(double, java.lang.StringBuffer, java.text.FieldPosition);
- method public abstract java.lang.StringBuffer format(long, java.lang.StringBuffer, java.text.FieldPosition);
+ method @NonNull public StringBuffer format(@NonNull Object, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
+ method @NonNull public final String format(double);
+ method @NonNull public final String format(long);
+ method @NonNull public abstract StringBuffer format(double, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
+ method @NonNull public abstract StringBuffer format(long, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
method public static java.util.Locale[] getAvailableLocales();
- method public java.util.Currency getCurrency();
- method public static final java.text.NumberFormat getCurrencyInstance();
- method public static java.text.NumberFormat getCurrencyInstance(java.util.Locale);
- method public static final java.text.NumberFormat getInstance();
- method public static java.text.NumberFormat getInstance(java.util.Locale);
- method public static final java.text.NumberFormat getIntegerInstance();
- method public static java.text.NumberFormat getIntegerInstance(java.util.Locale);
+ method @Nullable public java.util.Currency getCurrency();
+ method @NonNull public static final java.text.NumberFormat getCurrencyInstance();
+ method @NonNull public static java.text.NumberFormat getCurrencyInstance(@NonNull java.util.Locale);
+ method @NonNull public static final java.text.NumberFormat getInstance();
+ method @NonNull public static java.text.NumberFormat getInstance(@NonNull java.util.Locale);
+ method @NonNull public static final java.text.NumberFormat getIntegerInstance();
+ method @NonNull public static java.text.NumberFormat getIntegerInstance(@NonNull java.util.Locale);
method public int getMaximumFractionDigits();
method public int getMaximumIntegerDigits();
method public int getMinimumFractionDigits();
method public int getMinimumIntegerDigits();
- method public static final java.text.NumberFormat getNumberInstance();
- method public static java.text.NumberFormat getNumberInstance(java.util.Locale);
- method public static final java.text.NumberFormat getPercentInstance();
- method public static java.text.NumberFormat getPercentInstance(java.util.Locale);
- method public java.math.RoundingMode getRoundingMode();
+ method @NonNull public static final java.text.NumberFormat getNumberInstance();
+ method @NonNull public static java.text.NumberFormat getNumberInstance(@NonNull java.util.Locale);
+ method @NonNull public static final java.text.NumberFormat getPercentInstance();
+ method @NonNull public static java.text.NumberFormat getPercentInstance(@NonNull java.util.Locale);
+ method @NonNull public java.math.RoundingMode getRoundingMode();
method public boolean isGroupingUsed();
method public boolean isParseIntegerOnly();
- method public abstract java.lang.Number parse(java.lang.String, java.text.ParsePosition);
- method public java.lang.Number parse(java.lang.String) throws java.text.ParseException;
- method public final java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
- method public void setCurrency(java.util.Currency);
+ method @Nullable public abstract Number parse(@NonNull String, @NonNull java.text.ParsePosition);
+ method @Nullable public Number parse(@NonNull String) throws java.text.ParseException;
+ method @Nullable public final Object parseObject(@NonNull String, @NonNull java.text.ParsePosition);
+ method public void setCurrency(@NonNull java.util.Currency);
method public void setGroupingUsed(boolean);
method public void setMaximumFractionDigits(int);
method public void setMaximumIntegerDigits(int);
method public void setMinimumFractionDigits(int);
method public void setMinimumIntegerDigits(int);
method public void setParseIntegerOnly(boolean);
- method public void setRoundingMode(java.math.RoundingMode);
+ method public void setRoundingMode(@Nullable java.math.RoundingMode);
field public static final int FRACTION_FIELD = 1; // 0x1
field public static final int INTEGER_FIELD = 0; // 0x0
}
public static class NumberFormat.Field extends java.text.Format.Field {
- ctor protected NumberFormat.Field(java.lang.String);
- field public static final java.text.NumberFormat.Field CURRENCY;
- field public static final java.text.NumberFormat.Field DECIMAL_SEPARATOR;
- field public static final java.text.NumberFormat.Field EXPONENT;
- field public static final java.text.NumberFormat.Field EXPONENT_SIGN;
- field public static final java.text.NumberFormat.Field EXPONENT_SYMBOL;
- field public static final java.text.NumberFormat.Field FRACTION;
- field public static final java.text.NumberFormat.Field GROUPING_SEPARATOR;
- field public static final java.text.NumberFormat.Field INTEGER;
- field public static final java.text.NumberFormat.Field PERCENT;
- field public static final java.text.NumberFormat.Field PERMILLE;
- field public static final java.text.NumberFormat.Field SIGN;
+ ctor protected NumberFormat.Field(@NonNull String);
+ field @NonNull public static final java.text.NumberFormat.Field CURRENCY;
+ field @NonNull public static final java.text.NumberFormat.Field DECIMAL_SEPARATOR;
+ field @NonNull public static final java.text.NumberFormat.Field EXPONENT;
+ field @NonNull public static final java.text.NumberFormat.Field EXPONENT_SIGN;
+ field @NonNull public static final java.text.NumberFormat.Field EXPONENT_SYMBOL;
+ field @NonNull public static final java.text.NumberFormat.Field FRACTION;
+ field @NonNull public static final java.text.NumberFormat.Field GROUPING_SEPARATOR;
+ field @NonNull public static final java.text.NumberFormat.Field INTEGER;
+ field @NonNull public static final java.text.NumberFormat.Field PERCENT;
+ field @NonNull public static final java.text.NumberFormat.Field PERMILLE;
+ field @NonNull public static final java.text.NumberFormat.Field SIGN;
}
public class ParseException extends java.lang.Exception {
- ctor public ParseException(java.lang.String, int);
+ ctor public ParseException(String, int);
method public int getErrorOffset();
}
@@ -66948,36 +66997,36 @@
}
public class RuleBasedCollator extends java.text.Collator {
- ctor public RuleBasedCollator(java.lang.String) throws java.text.ParseException;
- method public synchronized int compare(java.lang.String, java.lang.String);
- method public java.text.CollationElementIterator getCollationElementIterator(java.lang.String);
+ ctor public RuleBasedCollator(String) throws java.text.ParseException;
+ method public int compare(String, String);
+ method public java.text.CollationElementIterator getCollationElementIterator(String);
method public java.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator);
- method public synchronized java.text.CollationKey getCollationKey(java.lang.String);
- method public java.lang.String getRules();
+ method public java.text.CollationKey getCollationKey(String);
+ method public String getRules();
}
public class SimpleDateFormat extends java.text.DateFormat {
ctor public SimpleDateFormat();
- ctor public SimpleDateFormat(java.lang.String);
- ctor public SimpleDateFormat(java.lang.String, java.util.Locale);
- ctor public SimpleDateFormat(java.lang.String, java.text.DateFormatSymbols);
- method public void applyLocalizedPattern(java.lang.String);
- method public void applyPattern(java.lang.String);
- method public java.lang.StringBuffer format(java.util.Date, java.lang.StringBuffer, java.text.FieldPosition);
+ ctor public SimpleDateFormat(String);
+ ctor public SimpleDateFormat(String, java.util.Locale);
+ ctor public SimpleDateFormat(String, java.text.DateFormatSymbols);
+ method public void applyLocalizedPattern(String);
+ method public void applyPattern(String);
+ method public StringBuffer format(java.util.Date, StringBuffer, java.text.FieldPosition);
method public java.util.Date get2DigitYearStart();
method public java.text.DateFormatSymbols getDateFormatSymbols();
- method public java.util.Date parse(java.lang.String, java.text.ParsePosition);
+ method public java.util.Date parse(String, java.text.ParsePosition);
method public void set2DigitYearStart(java.util.Date);
method public void setDateFormatSymbols(java.text.DateFormatSymbols);
- method public java.lang.String toLocalizedPattern();
- method public java.lang.String toPattern();
+ method public String toLocalizedPattern();
+ method public String toPattern();
}
public final class StringCharacterIterator implements java.text.CharacterIterator {
- ctor public StringCharacterIterator(java.lang.String);
- ctor public StringCharacterIterator(java.lang.String, int);
- ctor public StringCharacterIterator(java.lang.String, int, int, int);
- method public java.lang.Object clone();
+ ctor public StringCharacterIterator(String);
+ ctor public StringCharacterIterator(String, int);
+ ctor public StringCharacterIterator(String, int, int, int);
+ method public Object clone();
method public char current();
method public char first();
method public int getBeginIndex();
@@ -66987,7 +67036,7 @@
method public char next();
method public char previous();
method public char setIndex(int);
- method public void setText(java.lang.String);
+ method public void setText(String);
}
}
@@ -67011,22 +67060,20 @@
}
public class DateTimeException extends java.lang.RuntimeException {
- ctor public DateTimeException(java.lang.String);
- ctor public DateTimeException(java.lang.String, java.lang.Throwable);
+ ctor public DateTimeException(String);
+ ctor public DateTimeException(String, Throwable);
}
- public final class DayOfWeek extends java.lang.Enum implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+ public enum DayOfWeek implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public static java.time.DayOfWeek from(java.time.temporal.TemporalAccessor);
- method public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+ method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
method public long getLong(java.time.temporal.TemporalField);
method public int getValue();
method public boolean isSupported(java.time.temporal.TemporalField);
method public java.time.DayOfWeek minus(long);
method public static java.time.DayOfWeek of(int);
method public java.time.DayOfWeek plus(long);
- method public static java.time.DayOfWeek valueOf(java.lang.String);
- method public static final java.time.DayOfWeek[] values();
enum_constant public static final java.time.DayOfWeek FRIDAY;
enum_constant public static final java.time.DayOfWeek MONDAY;
enum_constant public static final java.time.DayOfWeek SATURDAY;
@@ -67036,7 +67083,7 @@
enum_constant public static final java.time.DayOfWeek WEDNESDAY;
}
- public final class Duration implements java.lang.Comparable java.io.Serializable java.time.temporal.TemporalAmount {
+ public final class Duration implements java.lang.Comparable<java.time.Duration> java.io.Serializable java.time.temporal.TemporalAmount {
method public java.time.Duration abs();
method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
method public static java.time.Duration between(java.time.temporal.Temporal, java.time.temporal.Temporal);
@@ -67067,7 +67114,7 @@
method public static java.time.Duration ofNanos(long);
method public static java.time.Duration ofSeconds(long);
method public static java.time.Duration ofSeconds(long, long);
- method public static java.time.Duration parse(java.lang.CharSequence);
+ method public static java.time.Duration parse(CharSequence);
method public java.time.Duration plus(java.time.Duration);
method public java.time.Duration plus(long, java.time.temporal.TemporalUnit);
method public java.time.Duration plusDays(long);
@@ -67087,7 +67134,7 @@
field public static final java.time.Duration ZERO;
}
- public final class Instant implements java.lang.Comparable java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+ public final class Instant implements java.lang.Comparable<java.time.Instant> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
method public java.time.ZonedDateTime atZone(java.time.ZoneId);
@@ -67110,7 +67157,7 @@
method public static java.time.Instant ofEpochMilli(long);
method public static java.time.Instant ofEpochSecond(long);
method public static java.time.Instant ofEpochSecond(long, long);
- method public static java.time.Instant parse(java.lang.CharSequence);
+ method public static java.time.Instant parse(CharSequence);
method public java.time.Instant plus(java.time.temporal.TemporalAmount);
method public java.time.Instant plus(long, java.time.temporal.TemporalUnit);
method public java.time.Instant plusMillis(long);
@@ -67157,8 +67204,8 @@
method public static java.time.LocalDate of(int, int, int);
method public static java.time.LocalDate ofEpochDay(long);
method public static java.time.LocalDate ofYearDay(int, int);
- method public static java.time.LocalDate parse(java.lang.CharSequence);
- method public static java.time.LocalDate parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
+ method public static java.time.LocalDate parse(CharSequence);
+ method public static java.time.LocalDate parse(CharSequence, java.time.format.DateTimeFormatter);
method public java.time.LocalDate plus(java.time.temporal.TemporalAmount);
method public java.time.LocalDate plus(long, java.time.temporal.TemporalUnit);
method public java.time.LocalDate plusDays(long);
@@ -67177,7 +67224,7 @@
field public static final java.time.LocalDate MIN;
}
- public final class LocalDateTime implements java.time.chrono.ChronoLocalDateTime java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+ public final class LocalDateTime implements java.time.chrono.ChronoLocalDateTime<java.time.LocalDate> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
method public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
method public java.time.ZonedDateTime atZone(java.time.ZoneId);
method public static java.time.LocalDateTime from(java.time.temporal.TemporalAccessor);
@@ -67215,8 +67262,8 @@
method public static java.time.LocalDateTime of(java.time.LocalDate, java.time.LocalTime);
method public static java.time.LocalDateTime ofEpochSecond(long, int, java.time.ZoneOffset);
method public static java.time.LocalDateTime ofInstant(java.time.Instant, java.time.ZoneId);
- method public static java.time.LocalDateTime parse(java.lang.CharSequence);
- method public static java.time.LocalDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
+ method public static java.time.LocalDateTime parse(CharSequence);
+ method public static java.time.LocalDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
method public java.time.LocalDateTime plus(java.time.temporal.TemporalAmount);
method public java.time.LocalDateTime plus(long, java.time.temporal.TemporalUnit);
method public java.time.LocalDateTime plusDays(long);
@@ -67245,12 +67292,12 @@
field public static final java.time.LocalDateTime MIN;
}
- public final class LocalTime implements java.lang.Comparable java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+ public final class LocalTime implements java.lang.Comparable<java.time.LocalTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public java.time.LocalDateTime atDate(java.time.LocalDate);
method public java.time.OffsetTime atOffset(java.time.ZoneOffset);
method public int compareTo(java.time.LocalTime);
- method public java.lang.String format(java.time.format.DateTimeFormatter);
+ method public String format(java.time.format.DateTimeFormatter);
method public static java.time.LocalTime from(java.time.temporal.TemporalAccessor);
method public int getHour();
method public long getLong(java.time.temporal.TemporalField);
@@ -67275,8 +67322,8 @@
method public static java.time.LocalTime of(int, int, int, int);
method public static java.time.LocalTime ofNanoOfDay(long);
method public static java.time.LocalTime ofSecondOfDay(long);
- method public static java.time.LocalTime parse(java.lang.CharSequence);
- method public static java.time.LocalTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
+ method public static java.time.LocalTime parse(CharSequence);
+ method public static java.time.LocalTime parse(CharSequence, java.time.format.DateTimeFormatter);
method public java.time.LocalTime plus(java.time.temporal.TemporalAmount);
method public java.time.LocalTime plus(long, java.time.temporal.TemporalUnit);
method public java.time.LocalTime plusHours(long);
@@ -67299,12 +67346,12 @@
field public static final java.time.LocalTime NOON;
}
- public final class Month extends java.lang.Enum implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+ public enum Month implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public int firstDayOfYear(boolean);
method public java.time.Month firstMonthOfQuarter();
method public static java.time.Month from(java.time.temporal.TemporalAccessor);
- method public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+ method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
method public long getLong(java.time.temporal.TemporalField);
method public int getValue();
method public boolean isSupported(java.time.temporal.TemporalField);
@@ -67314,8 +67361,6 @@
method public java.time.Month minus(long);
method public static java.time.Month of(int);
method public java.time.Month plus(long);
- method public static java.time.Month valueOf(java.lang.String);
- method public static final java.time.Month[] values();
enum_constant public static final java.time.Month APRIL;
enum_constant public static final java.time.Month AUGUST;
enum_constant public static final java.time.Month DECEMBER;
@@ -67330,11 +67375,11 @@
enum_constant public static final java.time.Month SEPTEMBER;
}
- public final class MonthDay implements java.lang.Comparable java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+ public final class MonthDay implements java.lang.Comparable<java.time.MonthDay> java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public java.time.LocalDate atYear(int);
method public int compareTo(java.time.MonthDay);
- method public java.lang.String format(java.time.format.DateTimeFormatter);
+ method public String format(java.time.format.DateTimeFormatter);
method public static java.time.MonthDay from(java.time.temporal.TemporalAccessor);
method public int getDayOfMonth();
method public long getLong(java.time.temporal.TemporalField);
@@ -67349,19 +67394,19 @@
method public static java.time.MonthDay now(java.time.Clock);
method public static java.time.MonthDay of(java.time.Month, int);
method public static java.time.MonthDay of(int, int);
- method public static java.time.MonthDay parse(java.lang.CharSequence);
- method public static java.time.MonthDay parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
+ method public static java.time.MonthDay parse(CharSequence);
+ method public static java.time.MonthDay parse(CharSequence, java.time.format.DateTimeFormatter);
method public java.time.MonthDay with(java.time.Month);
method public java.time.MonthDay withDayOfMonth(int);
method public java.time.MonthDay withMonth(int);
}
- public final class OffsetDateTime implements java.lang.Comparable java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+ public final class OffsetDateTime implements java.lang.Comparable<java.time.OffsetDateTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public java.time.ZonedDateTime atZoneSameInstant(java.time.ZoneId);
method public java.time.ZonedDateTime atZoneSimilarLocal(java.time.ZoneId);
method public int compareTo(java.time.OffsetDateTime);
- method public java.lang.String format(java.time.format.DateTimeFormatter);
+ method public String format(java.time.format.DateTimeFormatter);
method public static java.time.OffsetDateTime from(java.time.temporal.TemporalAccessor);
method public int getDayOfMonth();
method public java.time.DayOfWeek getDayOfWeek();
@@ -67397,8 +67442,8 @@
method public static java.time.OffsetDateTime of(java.time.LocalDateTime, java.time.ZoneOffset);
method public static java.time.OffsetDateTime of(int, int, int, int, int, int, int, java.time.ZoneOffset);
method public static java.time.OffsetDateTime ofInstant(java.time.Instant, java.time.ZoneId);
- method public static java.time.OffsetDateTime parse(java.lang.CharSequence);
- method public static java.time.OffsetDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
+ method public static java.time.OffsetDateTime parse(CharSequence);
+ method public static java.time.OffsetDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
method public java.time.OffsetDateTime plus(java.time.temporal.TemporalAmount);
method public java.time.OffsetDateTime plus(long, java.time.temporal.TemporalUnit);
method public java.time.OffsetDateTime plusDays(long);
@@ -67435,11 +67480,11 @@
field public static final java.time.OffsetDateTime MIN;
}
- public final class OffsetTime implements java.lang.Comparable java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+ public final class OffsetTime implements java.lang.Comparable<java.time.OffsetTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public java.time.OffsetDateTime atDate(java.time.LocalDate);
method public int compareTo(java.time.OffsetTime);
- method public java.lang.String format(java.time.format.DateTimeFormatter);
+ method public String format(java.time.format.DateTimeFormatter);
method public static java.time.OffsetTime from(java.time.temporal.TemporalAccessor);
method public int getHour();
method public long getLong(java.time.temporal.TemporalField);
@@ -67464,8 +67509,8 @@
method public static java.time.OffsetTime of(java.time.LocalTime, java.time.ZoneOffset);
method public static java.time.OffsetTime of(int, int, int, int, java.time.ZoneOffset);
method public static java.time.OffsetTime ofInstant(java.time.Instant, java.time.ZoneId);
- method public static java.time.OffsetTime parse(java.lang.CharSequence);
- method public static java.time.OffsetTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
+ method public static java.time.OffsetTime parse(CharSequence);
+ method public static java.time.OffsetTime parse(CharSequence, java.time.format.DateTimeFormatter);
method public java.time.OffsetTime plus(java.time.temporal.TemporalAmount);
method public java.time.OffsetTime plus(long, java.time.temporal.TemporalUnit);
method public java.time.OffsetTime plusHours(long);
@@ -67509,7 +67554,7 @@
method public static java.time.Period ofMonths(int);
method public static java.time.Period ofWeeks(int);
method public static java.time.Period ofYears(int);
- method public static java.time.Period parse(java.lang.CharSequence);
+ method public static java.time.Period parse(CharSequence);
method public java.time.Period plus(java.time.temporal.TemporalAmount);
method public java.time.Period plusDays(long);
method public java.time.Period plusMonths(long);
@@ -67522,14 +67567,14 @@
field public static final java.time.Period ZERO;
}
- public final class Year implements java.lang.Comparable java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+ public final class Year implements java.lang.Comparable<java.time.Year> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public java.time.LocalDate atDay(int);
method public java.time.YearMonth atMonth(java.time.Month);
method public java.time.YearMonth atMonth(int);
method public java.time.LocalDate atMonthDay(java.time.MonthDay);
method public int compareTo(java.time.Year);
- method public java.lang.String format(java.time.format.DateTimeFormatter);
+ method public String format(java.time.format.DateTimeFormatter);
method public static java.time.Year from(java.time.temporal.TemporalAccessor);
method public long getLong(java.time.temporal.TemporalField);
method public int getValue();
@@ -67548,8 +67593,8 @@
method public static java.time.Year now(java.time.ZoneId);
method public static java.time.Year now(java.time.Clock);
method public static java.time.Year of(int);
- method public static java.time.Year parse(java.lang.CharSequence);
- method public static java.time.Year parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
+ method public static java.time.Year parse(CharSequence);
+ method public static java.time.Year parse(CharSequence, java.time.format.DateTimeFormatter);
method public java.time.Year plus(java.time.temporal.TemporalAmount);
method public java.time.Year plus(long, java.time.temporal.TemporalUnit);
method public java.time.Year plusYears(long);
@@ -67560,12 +67605,12 @@
field public static final int MIN_VALUE = -999999999; // 0xc4653601
}
- public final class YearMonth implements java.lang.Comparable java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+ public final class YearMonth implements java.lang.Comparable<java.time.YearMonth> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public java.time.LocalDate atDay(int);
method public java.time.LocalDate atEndOfMonth();
method public int compareTo(java.time.YearMonth);
- method public java.lang.String format(java.time.format.DateTimeFormatter);
+ method public String format(java.time.format.DateTimeFormatter);
method public static java.time.YearMonth from(java.time.temporal.TemporalAccessor);
method public long getLong(java.time.temporal.TemporalField);
method public java.time.Month getMonth();
@@ -67588,8 +67633,8 @@
method public static java.time.YearMonth now(java.time.Clock);
method public static java.time.YearMonth of(int, java.time.Month);
method public static java.time.YearMonth of(int, int);
- method public static java.time.YearMonth parse(java.lang.CharSequence);
- method public static java.time.YearMonth parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
+ method public static java.time.YearMonth parse(CharSequence);
+ method public static java.time.YearMonth parse(CharSequence, java.time.format.DateTimeFormatter);
method public java.time.YearMonth plus(java.time.temporal.TemporalAmount);
method public java.time.YearMonth plus(long, java.time.temporal.TemporalUnit);
method public java.time.YearMonth plusMonths(long);
@@ -67604,27 +67649,27 @@
public abstract class ZoneId implements java.io.Serializable {
method public static java.time.ZoneId from(java.time.temporal.TemporalAccessor);
method public static java.util.Set<java.lang.String> getAvailableZoneIds();
- method public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
- method public abstract java.lang.String getId();
+ method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+ method public abstract String getId();
method public abstract java.time.zone.ZoneRules getRules();
method public java.time.ZoneId normalized();
- method public static java.time.ZoneId of(java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
- method public static java.time.ZoneId of(java.lang.String);
- method public static java.time.ZoneId ofOffset(java.lang.String, java.time.ZoneOffset);
+ method public static java.time.ZoneId of(String, java.util.Map<java.lang.String,java.lang.String>);
+ method public static java.time.ZoneId of(String);
+ method public static java.time.ZoneId ofOffset(String, java.time.ZoneOffset);
method public static java.time.ZoneId systemDefault();
- field public static final java.util.Map<java.lang.String, java.lang.String> SHORT_IDS;
+ field public static final java.util.Map<java.lang.String,java.lang.String> SHORT_IDS;
}
- public final class ZoneOffset extends java.time.ZoneId implements java.lang.Comparable java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+ public final class ZoneOffset extends java.time.ZoneId implements java.lang.Comparable<java.time.ZoneOffset> java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public int compareTo(java.time.ZoneOffset);
method public static java.time.ZoneOffset from(java.time.temporal.TemporalAccessor);
- method public java.lang.String getId();
+ method public String getId();
method public long getLong(java.time.temporal.TemporalField);
method public java.time.zone.ZoneRules getRules();
method public int getTotalSeconds();
method public boolean isSupported(java.time.temporal.TemporalField);
- method public static java.time.ZoneOffset of(java.lang.String);
+ method public static java.time.ZoneOffset of(String);
method public static java.time.ZoneOffset ofHours(int);
method public static java.time.ZoneOffset ofHoursMinutes(int, int);
method public static java.time.ZoneOffset ofHoursMinutesSeconds(int, int, int);
@@ -67634,7 +67679,7 @@
field public static final java.time.ZoneOffset UTC;
}
- public final class ZonedDateTime implements java.time.chrono.ChronoZonedDateTime java.io.Serializable java.time.temporal.Temporal {
+ public final class ZonedDateTime implements java.time.chrono.ChronoZonedDateTime<java.time.LocalDate> java.io.Serializable java.time.temporal.Temporal {
method public static java.time.ZonedDateTime from(java.time.temporal.TemporalAccessor);
method public int getDayOfMonth();
method public java.time.DayOfWeek getDayOfWeek();
@@ -67669,8 +67714,8 @@
method public static java.time.ZonedDateTime ofInstant(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
method public static java.time.ZonedDateTime ofLocal(java.time.LocalDateTime, java.time.ZoneId, java.time.ZoneOffset);
method public static java.time.ZonedDateTime ofStrict(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
- method public static java.time.ZonedDateTime parse(java.lang.CharSequence);
- method public static java.time.ZonedDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
+ method public static java.time.ZonedDateTime parse(CharSequence);
+ method public static java.time.ZonedDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
method public java.time.ZonedDateTime plus(java.time.temporal.TemporalAmount);
method public java.time.ZonedDateTime plus(long, java.time.temporal.TemporalUnit);
method public java.time.ZonedDateTime plusDays(long);
@@ -67710,26 +67755,26 @@
public abstract class AbstractChronology implements java.time.chrono.Chronology {
ctor protected AbstractChronology();
method public int compareTo(java.time.chrono.Chronology);
- method public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField, java.lang.Long>, java.time.format.ResolverStyle);
+ method public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
}
- public abstract interface ChronoLocalDate implements java.lang.Comparable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+ public interface ChronoLocalDate extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoLocalDate> java.time.temporal.TemporalAdjuster {
method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
method public default java.time.chrono.ChronoLocalDateTime<?> atTime(java.time.LocalTime);
method public default int compareTo(java.time.chrono.ChronoLocalDate);
- method public abstract boolean equals(java.lang.Object);
- method public default java.lang.String format(java.time.format.DateTimeFormatter);
+ method public boolean equals(Object);
+ method public default String format(java.time.format.DateTimeFormatter);
method public static java.time.chrono.ChronoLocalDate from(java.time.temporal.TemporalAccessor);
- method public abstract java.time.chrono.Chronology getChronology();
+ method public java.time.chrono.Chronology getChronology();
method public default java.time.chrono.Era getEra();
- method public abstract int hashCode();
+ method public int hashCode();
method public default boolean isAfter(java.time.chrono.ChronoLocalDate);
method public default boolean isBefore(java.time.chrono.ChronoLocalDate);
method public default boolean isEqual(java.time.chrono.ChronoLocalDate);
method public default boolean isLeapYear();
method public default boolean isSupported(java.time.temporal.TemporalField);
method public default boolean isSupported(java.time.temporal.TemporalUnit);
- method public abstract int lengthOfMonth();
+ method public int lengthOfMonth();
method public default int lengthOfYear();
method public default java.time.chrono.ChronoLocalDate minus(java.time.temporal.TemporalAmount);
method public default java.time.chrono.ChronoLocalDate minus(long, java.time.temporal.TemporalUnit);
@@ -67737,21 +67782,21 @@
method public default java.time.chrono.ChronoLocalDate plus(long, java.time.temporal.TemporalUnit);
method public static java.util.Comparator<java.time.chrono.ChronoLocalDate> timeLineOrder();
method public default long toEpochDay();
- method public abstract java.lang.String toString();
- method public abstract java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+ method public String toString();
+ method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalAdjuster);
method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalField, long);
}
- public abstract interface ChronoLocalDateTime<D extends java.time.chrono.ChronoLocalDate> implements java.lang.Comparable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+ public interface ChronoLocalDateTime<D extends java.time.chrono.ChronoLocalDate> extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoLocalDateTime<?>> java.time.temporal.TemporalAdjuster {
method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
- method public abstract java.time.chrono.ChronoZonedDateTime<D> atZone(java.time.ZoneId);
+ method public java.time.chrono.ChronoZonedDateTime<D> atZone(java.time.ZoneId);
method public default int compareTo(java.time.chrono.ChronoLocalDateTime<?>);
- method public abstract boolean equals(java.lang.Object);
- method public default java.lang.String format(java.time.format.DateTimeFormatter);
+ method public boolean equals(Object);
+ method public default String format(java.time.format.DateTimeFormatter);
method public static java.time.chrono.ChronoLocalDateTime<?> from(java.time.temporal.TemporalAccessor);
method public default java.time.chrono.Chronology getChronology();
- method public abstract int hashCode();
+ method public int hashCode();
method public default boolean isAfter(java.time.chrono.ChronoLocalDateTime<?>);
method public default boolean isBefore(java.time.chrono.ChronoLocalDateTime<?>);
method public default boolean isEqual(java.time.chrono.ChronoLocalDateTime<?>);
@@ -67759,42 +67804,42 @@
method public default java.time.chrono.ChronoLocalDateTime<D> minus(java.time.temporal.TemporalAmount);
method public default java.time.chrono.ChronoLocalDateTime<D> minus(long, java.time.temporal.TemporalUnit);
method public default java.time.chrono.ChronoLocalDateTime<D> plus(java.time.temporal.TemporalAmount);
- method public abstract java.time.chrono.ChronoLocalDateTime<D> plus(long, java.time.temporal.TemporalUnit);
+ method public java.time.chrono.ChronoLocalDateTime<D> plus(long, java.time.temporal.TemporalUnit);
method public static java.util.Comparator<java.time.chrono.ChronoLocalDateTime<?>> timeLineOrder();
method public default long toEpochSecond(java.time.ZoneOffset);
method public default java.time.Instant toInstant(java.time.ZoneOffset);
- method public abstract D toLocalDate();
- method public abstract java.time.LocalTime toLocalTime();
- method public abstract java.lang.String toString();
+ method public D toLocalDate();
+ method public java.time.LocalTime toLocalTime();
+ method public String toString();
method public default java.time.chrono.ChronoLocalDateTime<D> with(java.time.temporal.TemporalAdjuster);
- method public abstract java.time.chrono.ChronoLocalDateTime<D> with(java.time.temporal.TemporalField, long);
+ method public java.time.chrono.ChronoLocalDateTime<D> with(java.time.temporal.TemporalField, long);
}
- public abstract interface ChronoPeriod implements java.time.temporal.TemporalAmount {
+ public interface ChronoPeriod extends java.time.temporal.TemporalAmount {
method public static java.time.chrono.ChronoPeriod between(java.time.chrono.ChronoLocalDate, java.time.chrono.ChronoLocalDate);
- method public abstract boolean equals(java.lang.Object);
- method public abstract java.time.chrono.Chronology getChronology();
- method public abstract int hashCode();
+ method public boolean equals(Object);
+ method public java.time.chrono.Chronology getChronology();
+ method public int hashCode();
method public default boolean isNegative();
method public default boolean isZero();
- method public abstract java.time.chrono.ChronoPeriod minus(java.time.temporal.TemporalAmount);
- method public abstract java.time.chrono.ChronoPeriod multipliedBy(int);
+ method public java.time.chrono.ChronoPeriod minus(java.time.temporal.TemporalAmount);
+ method public java.time.chrono.ChronoPeriod multipliedBy(int);
method public default java.time.chrono.ChronoPeriod negated();
- method public abstract java.time.chrono.ChronoPeriod normalized();
- method public abstract java.time.chrono.ChronoPeriod plus(java.time.temporal.TemporalAmount);
- method public abstract java.lang.String toString();
+ method public java.time.chrono.ChronoPeriod normalized();
+ method public java.time.chrono.ChronoPeriod plus(java.time.temporal.TemporalAmount);
+ method public String toString();
}
- public abstract interface ChronoZonedDateTime<D extends java.time.chrono.ChronoLocalDate> implements java.lang.Comparable java.time.temporal.Temporal {
+ public interface ChronoZonedDateTime<D extends java.time.chrono.ChronoLocalDate> extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoZonedDateTime<?>> {
method public default int compareTo(java.time.chrono.ChronoZonedDateTime<?>);
- method public abstract boolean equals(java.lang.Object);
- method public default java.lang.String format(java.time.format.DateTimeFormatter);
+ method public boolean equals(Object);
+ method public default String format(java.time.format.DateTimeFormatter);
method public static java.time.chrono.ChronoZonedDateTime<?> from(java.time.temporal.TemporalAccessor);
method public default java.time.chrono.Chronology getChronology();
method public default long getLong(java.time.temporal.TemporalField);
- method public abstract java.time.ZoneOffset getOffset();
- method public abstract java.time.ZoneId getZone();
- method public abstract int hashCode();
+ method public java.time.ZoneOffset getOffset();
+ method public java.time.ZoneId getZone();
+ method public int hashCode();
method public default boolean isAfter(java.time.chrono.ChronoZonedDateTime<?>);
method public default boolean isBefore(java.time.chrono.ChronoZonedDateTime<?>);
method public default boolean isEqual(java.time.chrono.ChronoZonedDateTime<?>);
@@ -67802,60 +67847,60 @@
method public default java.time.chrono.ChronoZonedDateTime<D> minus(java.time.temporal.TemporalAmount);
method public default java.time.chrono.ChronoZonedDateTime<D> minus(long, java.time.temporal.TemporalUnit);
method public default java.time.chrono.ChronoZonedDateTime<D> plus(java.time.temporal.TemporalAmount);
- method public abstract java.time.chrono.ChronoZonedDateTime<D> plus(long, java.time.temporal.TemporalUnit);
+ method public java.time.chrono.ChronoZonedDateTime<D> plus(long, java.time.temporal.TemporalUnit);
method public static java.util.Comparator<java.time.chrono.ChronoZonedDateTime<?>> timeLineOrder();
method public default long toEpochSecond();
method public default java.time.Instant toInstant();
method public default D toLocalDate();
- method public abstract java.time.chrono.ChronoLocalDateTime<D> toLocalDateTime();
+ method public java.time.chrono.ChronoLocalDateTime<D> toLocalDateTime();
method public default java.time.LocalTime toLocalTime();
- method public abstract java.lang.String toString();
+ method public String toString();
method public default java.time.chrono.ChronoZonedDateTime<D> with(java.time.temporal.TemporalAdjuster);
- method public abstract java.time.chrono.ChronoZonedDateTime<D> with(java.time.temporal.TemporalField, long);
- method public abstract java.time.chrono.ChronoZonedDateTime<D> withEarlierOffsetAtOverlap();
- method public abstract java.time.chrono.ChronoZonedDateTime<D> withLaterOffsetAtOverlap();
- method public abstract java.time.chrono.ChronoZonedDateTime<D> withZoneSameInstant(java.time.ZoneId);
- method public abstract java.time.chrono.ChronoZonedDateTime<D> withZoneSameLocal(java.time.ZoneId);
+ method public java.time.chrono.ChronoZonedDateTime<D> with(java.time.temporal.TemporalField, long);
+ method public java.time.chrono.ChronoZonedDateTime<D> withEarlierOffsetAtOverlap();
+ method public java.time.chrono.ChronoZonedDateTime<D> withLaterOffsetAtOverlap();
+ method public java.time.chrono.ChronoZonedDateTime<D> withZoneSameInstant(java.time.ZoneId);
+ method public java.time.chrono.ChronoZonedDateTime<D> withZoneSameLocal(java.time.ZoneId);
}
- public abstract interface Chronology implements java.lang.Comparable {
- method public abstract int compareTo(java.time.chrono.Chronology);
+ public interface Chronology extends java.lang.Comparable<java.time.chrono.Chronology> {
+ method public int compareTo(java.time.chrono.Chronology);
method public default java.time.chrono.ChronoLocalDate date(java.time.chrono.Era, int, int, int);
- method public abstract java.time.chrono.ChronoLocalDate date(int, int, int);
- method public abstract java.time.chrono.ChronoLocalDate date(java.time.temporal.TemporalAccessor);
- method public abstract java.time.chrono.ChronoLocalDate dateEpochDay(long);
+ method public java.time.chrono.ChronoLocalDate date(int, int, int);
+ method public java.time.chrono.ChronoLocalDate date(java.time.temporal.TemporalAccessor);
+ method public java.time.chrono.ChronoLocalDate dateEpochDay(long);
method public default java.time.chrono.ChronoLocalDate dateNow();
method public default java.time.chrono.ChronoLocalDate dateNow(java.time.ZoneId);
method public default java.time.chrono.ChronoLocalDate dateNow(java.time.Clock);
method public default java.time.chrono.ChronoLocalDate dateYearDay(java.time.chrono.Era, int, int);
- method public abstract java.time.chrono.ChronoLocalDate dateYearDay(int, int);
- method public abstract boolean equals(java.lang.Object);
- method public abstract java.time.chrono.Era eraOf(int);
- method public abstract java.util.List<java.time.chrono.Era> eras();
+ method public java.time.chrono.ChronoLocalDate dateYearDay(int, int);
+ method public boolean equals(Object);
+ method public java.time.chrono.Era eraOf(int);
+ method public java.util.List<java.time.chrono.Era> eras();
method public static java.time.chrono.Chronology from(java.time.temporal.TemporalAccessor);
method public static java.util.Set<java.time.chrono.Chronology> getAvailableChronologies();
- method public abstract java.lang.String getCalendarType();
- method public default java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
- method public abstract java.lang.String getId();
- method public abstract int hashCode();
- method public abstract boolean isLeapYear(long);
+ method public String getCalendarType();
+ method public default String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+ method public String getId();
+ method public int hashCode();
+ method public boolean isLeapYear(long);
method public default java.time.chrono.ChronoLocalDateTime<? extends java.time.chrono.ChronoLocalDate> localDateTime(java.time.temporal.TemporalAccessor);
- method public static java.time.chrono.Chronology of(java.lang.String);
+ method public static java.time.chrono.Chronology of(String);
method public static java.time.chrono.Chronology ofLocale(java.util.Locale);
method public default java.time.chrono.ChronoPeriod period(int, int, int);
- method public abstract int prolepticYear(java.time.chrono.Era, int);
- method public abstract java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
- method public abstract java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField, java.lang.Long>, java.time.format.ResolverStyle);
- method public abstract java.lang.String toString();
+ method public int prolepticYear(java.time.chrono.Era, int);
+ method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
+ method public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
+ method public String toString();
method public default java.time.chrono.ChronoZonedDateTime<? extends java.time.chrono.ChronoLocalDate> zonedDateTime(java.time.temporal.TemporalAccessor);
method public default java.time.chrono.ChronoZonedDateTime<? extends java.time.chrono.ChronoLocalDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
}
- public abstract interface Era implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+ public interface Era extends java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
- method public default java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+ method public default String getDisplayName(java.time.format.TextStyle, java.util.Locale);
method public default long getLong(java.time.temporal.TemporalField);
- method public abstract int getValue();
+ method public int getValue();
method public default boolean isSupported(java.time.temporal.TemporalField);
}
@@ -67871,13 +67916,13 @@
method public java.time.chrono.HijrahDate dateYearDay(int, int);
method public java.time.chrono.HijrahEra eraOf(int);
method public java.util.List<java.time.chrono.Era> eras();
- method public java.lang.String getCalendarType();
- method public java.lang.String getId();
+ method public String getCalendarType();
+ method public String getId();
method public boolean isLeapYear(long);
method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.HijrahDate> localDateTime(java.time.temporal.TemporalAccessor);
method public int prolepticYear(java.time.chrono.Era, int);
method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
- method public java.time.chrono.HijrahDate resolveDate(java.util.Map<java.time.temporal.TemporalField, java.lang.Long>, java.time.format.ResolverStyle);
+ method public java.time.chrono.HijrahDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.HijrahDate> zonedDateTime(java.time.temporal.TemporalAccessor);
method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.HijrahDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
field public static final java.time.chrono.HijrahChronology INSTANCE;
@@ -67899,16 +67944,15 @@
method public java.time.chrono.HijrahDate plus(java.time.temporal.TemporalAmount);
method public java.time.chrono.HijrahDate plus(long, java.time.temporal.TemporalUnit);
method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+ method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalField, long);
method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalAdjuster);
method public java.time.chrono.HijrahDate withVariant(java.time.chrono.HijrahChronology);
}
- public final class HijrahEra extends java.lang.Enum implements java.time.chrono.Era {
+ public enum HijrahEra implements java.time.chrono.Era {
method public int getValue();
method public static java.time.chrono.HijrahEra of(int);
- method public static java.time.chrono.HijrahEra valueOf(java.lang.String);
- method public static final java.time.chrono.HijrahEra[] values();
enum_constant public static final java.time.chrono.HijrahEra AH;
}
@@ -67924,24 +67968,22 @@
method public java.time.LocalDate dateYearDay(int, int);
method public java.time.chrono.IsoEra eraOf(int);
method public java.util.List<java.time.chrono.Era> eras();
- method public java.lang.String getCalendarType();
- method public java.lang.String getId();
+ method public String getCalendarType();
+ method public String getId();
method public boolean isLeapYear(long);
method public java.time.LocalDateTime localDateTime(java.time.temporal.TemporalAccessor);
method public java.time.Period period(int, int, int);
method public int prolepticYear(java.time.chrono.Era, int);
method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
- method public java.time.LocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField, java.lang.Long>, java.time.format.ResolverStyle);
+ method public java.time.LocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
method public java.time.ZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor);
method public java.time.ZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId);
field public static final java.time.chrono.IsoChronology INSTANCE;
}
- public final class IsoEra extends java.lang.Enum implements java.time.chrono.Era {
+ public enum IsoEra implements java.time.chrono.Era {
method public int getValue();
method public static java.time.chrono.IsoEra of(int);
- method public static java.time.chrono.IsoEra valueOf(java.lang.String);
- method public static final java.time.chrono.IsoEra[] values();
enum_constant public static final java.time.chrono.IsoEra BCE;
enum_constant public static final java.time.chrono.IsoEra CE;
}
@@ -67958,13 +68000,13 @@
method public java.time.chrono.JapaneseDate dateYearDay(int, int);
method public java.time.chrono.JapaneseEra eraOf(int);
method public java.util.List<java.time.chrono.Era> eras();
- method public java.lang.String getCalendarType();
- method public java.lang.String getId();
+ method public String getCalendarType();
+ method public String getId();
method public boolean isLeapYear(long);
method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.JapaneseDate> localDateTime(java.time.temporal.TemporalAccessor);
method public int prolepticYear(java.time.chrono.Era, int);
method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
- method public java.time.chrono.JapaneseDate resolveDate(java.util.Map<java.time.temporal.TemporalField, java.lang.Long>, java.time.format.ResolverStyle);
+ method public java.time.chrono.JapaneseDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.JapaneseDate> zonedDateTime(java.time.temporal.TemporalAccessor);
method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.JapaneseDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
field public static final java.time.chrono.JapaneseChronology INSTANCE;
@@ -67987,6 +68029,7 @@
method public java.time.chrono.JapaneseDate plus(java.time.temporal.TemporalAmount);
method public java.time.chrono.JapaneseDate plus(long, java.time.temporal.TemporalUnit);
method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+ method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalField, long);
method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalAdjuster);
}
@@ -67994,7 +68037,7 @@
public final class JapaneseEra implements java.time.chrono.Era java.io.Serializable {
method public int getValue();
method public static java.time.chrono.JapaneseEra of(int);
- method public static java.time.chrono.JapaneseEra valueOf(java.lang.String);
+ method public static java.time.chrono.JapaneseEra valueOf(String);
method public static java.time.chrono.JapaneseEra[] values();
field public static final java.time.chrono.JapaneseEra HEISEI;
field public static final java.time.chrono.JapaneseEra MEIJI;
@@ -68014,13 +68057,13 @@
method public java.time.chrono.MinguoDate dateYearDay(int, int);
method public java.time.chrono.MinguoEra eraOf(int);
method public java.util.List<java.time.chrono.Era> eras();
- method public java.lang.String getCalendarType();
- method public java.lang.String getId();
+ method public String getCalendarType();
+ method public String getId();
method public boolean isLeapYear(long);
method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.MinguoDate> localDateTime(java.time.temporal.TemporalAccessor);
method public int prolepticYear(java.time.chrono.Era, int);
method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
- method public java.time.chrono.MinguoDate resolveDate(java.util.Map<java.time.temporal.TemporalField, java.lang.Long>, java.time.format.ResolverStyle);
+ method public java.time.chrono.MinguoDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.MinguoDate> zonedDateTime(java.time.temporal.TemporalAccessor);
method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.MinguoDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
field public static final java.time.chrono.MinguoChronology INSTANCE;
@@ -68042,15 +68085,14 @@
method public java.time.chrono.MinguoDate plus(java.time.temporal.TemporalAmount);
method public java.time.chrono.MinguoDate plus(long, java.time.temporal.TemporalUnit);
method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+ method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalField, long);
method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalAdjuster);
}
- public final class MinguoEra extends java.lang.Enum implements java.time.chrono.Era {
+ public enum MinguoEra implements java.time.chrono.Era {
method public int getValue();
method public static java.time.chrono.MinguoEra of(int);
- method public static java.time.chrono.MinguoEra valueOf(java.lang.String);
- method public static final java.time.chrono.MinguoEra[] values();
enum_constant public static final java.time.chrono.MinguoEra BEFORE_ROC;
enum_constant public static final java.time.chrono.MinguoEra ROC;
}
@@ -68067,13 +68109,13 @@
method public java.time.chrono.ThaiBuddhistDate dateYearDay(int, int);
method public java.time.chrono.ThaiBuddhistEra eraOf(int);
method public java.util.List<java.time.chrono.Era> eras();
- method public java.lang.String getCalendarType();
- method public java.lang.String getId();
+ method public String getCalendarType();
+ method public String getId();
method public boolean isLeapYear(long);
method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.ThaiBuddhistDate> localDateTime(java.time.temporal.TemporalAccessor);
method public int prolepticYear(java.time.chrono.Era, int);
method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
- method public java.time.chrono.ThaiBuddhistDate resolveDate(java.util.Map<java.time.temporal.TemporalField, java.lang.Long>, java.time.format.ResolverStyle);
+ method public java.time.chrono.ThaiBuddhistDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.ThaiBuddhistDate> zonedDateTime(java.time.temporal.TemporalAccessor);
method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.ThaiBuddhistDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
field public static final java.time.chrono.ThaiBuddhistChronology INSTANCE;
@@ -68095,15 +68137,14 @@
method public java.time.chrono.ThaiBuddhistDate plus(java.time.temporal.TemporalAmount);
method public java.time.chrono.ThaiBuddhistDate plus(long, java.time.temporal.TemporalUnit);
method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+ method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalField, long);
method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalAdjuster);
}
- public final class ThaiBuddhistEra extends java.lang.Enum implements java.time.chrono.Era {
+ public enum ThaiBuddhistEra implements java.time.chrono.Era {
method public int getValue();
method public static java.time.chrono.ThaiBuddhistEra of(int);
- method public static java.time.chrono.ThaiBuddhistEra valueOf(java.lang.String);
- method public static final java.time.chrono.ThaiBuddhistEra[] values();
enum_constant public static final java.time.chrono.ThaiBuddhistEra BE;
enum_constant public static final java.time.chrono.ThaiBuddhistEra BEFORE_BE;
}
@@ -68113,8 +68154,8 @@
package java.time.format {
public final class DateTimeFormatter {
- method public java.lang.String format(java.time.temporal.TemporalAccessor);
- method public void formatTo(java.time.temporal.TemporalAccessor, java.lang.Appendable);
+ method public String format(java.time.temporal.TemporalAccessor);
+ method public void formatTo(java.time.temporal.TemporalAccessor, Appendable);
method public java.time.chrono.Chronology getChronology();
method public java.time.format.DecimalStyle getDecimalStyle();
method public java.util.Locale getLocale();
@@ -68125,13 +68166,13 @@
method public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle);
method public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle, java.time.format.FormatStyle);
method public static java.time.format.DateTimeFormatter ofLocalizedTime(java.time.format.FormatStyle);
- method public static java.time.format.DateTimeFormatter ofPattern(java.lang.String);
- method public static java.time.format.DateTimeFormatter ofPattern(java.lang.String, java.util.Locale);
- method public java.time.temporal.TemporalAccessor parse(java.lang.CharSequence);
- method public java.time.temporal.TemporalAccessor parse(java.lang.CharSequence, java.text.ParsePosition);
- method public <T> T parse(java.lang.CharSequence, java.time.temporal.TemporalQuery<T>);
- method public java.time.temporal.TemporalAccessor parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...);
- method public java.time.temporal.TemporalAccessor parseUnresolved(java.lang.CharSequence, java.text.ParsePosition);
+ method public static java.time.format.DateTimeFormatter ofPattern(String);
+ method public static java.time.format.DateTimeFormatter ofPattern(String, java.util.Locale);
+ method public java.time.temporal.TemporalAccessor parse(CharSequence);
+ method public java.time.temporal.TemporalAccessor parse(CharSequence, java.text.ParsePosition);
+ method public <T> T parse(CharSequence, java.time.temporal.TemporalQuery<T>);
+ method public java.time.temporal.TemporalAccessor parseBest(CharSequence, java.time.temporal.TemporalQuery<?>...);
+ method public java.time.temporal.TemporalAccessor parseUnresolved(CharSequence, java.text.ParsePosition);
method public static java.time.temporal.TemporalQuery<java.time.Period> parsedExcessDays();
method public static java.time.temporal.TemporalQuery<java.lang.Boolean> parsedLeapSecond();
method public java.text.Format toFormat();
@@ -68169,16 +68210,16 @@
method public java.time.format.DateTimeFormatterBuilder appendInstant();
method public java.time.format.DateTimeFormatterBuilder appendInstant(int);
method public java.time.format.DateTimeFormatterBuilder appendLiteral(char);
- method public java.time.format.DateTimeFormatterBuilder appendLiteral(java.lang.String);
+ method public java.time.format.DateTimeFormatterBuilder appendLiteral(String);
method public java.time.format.DateTimeFormatterBuilder appendLocalized(java.time.format.FormatStyle, java.time.format.FormatStyle);
method public java.time.format.DateTimeFormatterBuilder appendLocalizedOffset(java.time.format.TextStyle);
- method public java.time.format.DateTimeFormatterBuilder appendOffset(java.lang.String, java.lang.String);
+ method public java.time.format.DateTimeFormatterBuilder appendOffset(String, String);
method public java.time.format.DateTimeFormatterBuilder appendOffsetId();
method public java.time.format.DateTimeFormatterBuilder appendOptional(java.time.format.DateTimeFormatter);
- method public java.time.format.DateTimeFormatterBuilder appendPattern(java.lang.String);
+ method public java.time.format.DateTimeFormatterBuilder appendPattern(String);
method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField);
method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField, java.time.format.TextStyle);
- method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField, java.util.Map<java.lang.Long, java.lang.String>);
+ method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField, java.util.Map<java.lang.Long,java.lang.String>);
method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField);
method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField, int);
method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField, int, int, java.time.format.SignStyle);
@@ -68189,7 +68230,7 @@
method public java.time.format.DateTimeFormatterBuilder appendZoneRegionId();
method public java.time.format.DateTimeFormatterBuilder appendZoneText(java.time.format.TextStyle);
method public java.time.format.DateTimeFormatterBuilder appendZoneText(java.time.format.TextStyle, java.util.Set<java.time.ZoneId>);
- method public static java.lang.String getLocalizedDateTimePattern(java.time.format.FormatStyle, java.time.format.FormatStyle, java.time.chrono.Chronology, java.util.Locale);
+ method public static String getLocalizedDateTimePattern(java.time.format.FormatStyle, java.time.format.FormatStyle, java.time.chrono.Chronology, java.util.Locale);
method public java.time.format.DateTimeFormatterBuilder optionalEnd();
method public java.time.format.DateTimeFormatterBuilder optionalStart();
method public java.time.format.DateTimeFormatterBuilder padNext(int);
@@ -68204,10 +68245,10 @@
}
public class DateTimeParseException extends java.time.DateTimeException {
- ctor public DateTimeParseException(java.lang.String, java.lang.CharSequence, int);
- ctor public DateTimeParseException(java.lang.String, java.lang.CharSequence, int, java.lang.Throwable);
+ ctor public DateTimeParseException(String, CharSequence, int);
+ ctor public DateTimeParseException(String, CharSequence, int, Throwable);
method public int getErrorIndex();
- method public java.lang.String getParsedString();
+ method public String getParsedString();
}
public final class DecimalStyle {
@@ -68225,26 +68266,20 @@
field public static final java.time.format.DecimalStyle STANDARD;
}
- public final class FormatStyle extends java.lang.Enum {
- method public static java.time.format.FormatStyle valueOf(java.lang.String);
- method public static final java.time.format.FormatStyle[] values();
+ public enum FormatStyle {
enum_constant public static final java.time.format.FormatStyle FULL;
enum_constant public static final java.time.format.FormatStyle LONG;
enum_constant public static final java.time.format.FormatStyle MEDIUM;
enum_constant public static final java.time.format.FormatStyle SHORT;
}
- public final class ResolverStyle extends java.lang.Enum {
- method public static java.time.format.ResolverStyle valueOf(java.lang.String);
- method public static final java.time.format.ResolverStyle[] values();
+ public enum ResolverStyle {
enum_constant public static final java.time.format.ResolverStyle LENIENT;
enum_constant public static final java.time.format.ResolverStyle SMART;
enum_constant public static final java.time.format.ResolverStyle STRICT;
}
- public final class SignStyle extends java.lang.Enum {
- method public static java.time.format.SignStyle valueOf(java.lang.String);
- method public static final java.time.format.SignStyle[] values();
+ public enum SignStyle {
enum_constant public static final java.time.format.SignStyle ALWAYS;
enum_constant public static final java.time.format.SignStyle EXCEEDS_PAD;
enum_constant public static final java.time.format.SignStyle NEVER;
@@ -68252,12 +68287,10 @@
enum_constant public static final java.time.format.SignStyle NOT_NEGATIVE;
}
- public final class TextStyle extends java.lang.Enum {
+ public enum TextStyle {
method public java.time.format.TextStyle asNormal();
method public java.time.format.TextStyle asStandalone();
method public boolean isStandalone();
- method public static java.time.format.TextStyle valueOf(java.lang.String);
- method public static final java.time.format.TextStyle[] values();
enum_constant public static final java.time.format.TextStyle FULL;
enum_constant public static final java.time.format.TextStyle FULL_STANDALONE;
enum_constant public static final java.time.format.TextStyle NARROW;
@@ -68270,7 +68303,7 @@
package java.time.temporal {
- public final class ChronoField extends java.lang.Enum implements java.time.temporal.TemporalField {
+ public enum ChronoField implements java.time.temporal.TemporalField {
method public <R extends java.time.temporal.Temporal> R adjustInto(R, long);
method public int checkValidIntValue(long);
method public long checkValidValue(long);
@@ -68282,8 +68315,6 @@
method public boolean isTimeBased();
method public java.time.temporal.ValueRange range();
method public java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
- method public static java.time.temporal.ChronoField valueOf(java.lang.String);
- method public static final java.time.temporal.ChronoField[] values();
enum_constant public static final java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_MONTH;
enum_constant public static final java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_YEAR;
enum_constant public static final java.time.temporal.ChronoField ALIGNED_WEEK_OF_MONTH;
@@ -68316,15 +68347,13 @@
enum_constant public static final java.time.temporal.ChronoField YEAR_OF_ERA;
}
- public final class ChronoUnit extends java.lang.Enum implements java.time.temporal.TemporalUnit {
+ public enum ChronoUnit implements java.time.temporal.TemporalUnit {
method public <R extends java.time.temporal.Temporal> R addTo(R, long);
method public long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
method public java.time.Duration getDuration();
method public boolean isDateBased();
method public boolean isDurationEstimated();
method public boolean isTimeBased();
- method public static java.time.temporal.ChronoUnit valueOf(java.lang.String);
- method public static final java.time.temporal.ChronoUnit[] values();
enum_constant public static final java.time.temporal.ChronoUnit CENTURIES;
enum_constant public static final java.time.temporal.ChronoUnit DAYS;
enum_constant public static final java.time.temporal.ChronoUnit DECADES;
@@ -68358,27 +68387,27 @@
field public static final java.time.temporal.TemporalField RATA_DIE;
}
- public abstract interface Temporal implements java.time.temporal.TemporalAccessor {
- method public abstract boolean isSupported(java.time.temporal.TemporalUnit);
+ public interface Temporal extends java.time.temporal.TemporalAccessor {
+ method public boolean isSupported(java.time.temporal.TemporalUnit);
method public default java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
method public default java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
method public default java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
- method public abstract java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
- method public abstract long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+ method public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
+ method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
method public default java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
- method public abstract java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
+ method public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
}
- public abstract interface TemporalAccessor {
+ public interface TemporalAccessor {
method public default int get(java.time.temporal.TemporalField);
- method public abstract long getLong(java.time.temporal.TemporalField);
- method public abstract boolean isSupported(java.time.temporal.TemporalField);
+ method public long getLong(java.time.temporal.TemporalField);
+ method public boolean isSupported(java.time.temporal.TemporalField);
method public default <R> R query(java.time.temporal.TemporalQuery<R>);
method public default java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
}
- public abstract interface TemporalAdjuster {
- method public abstract java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+ @java.lang.FunctionalInterface public interface TemporalAdjuster {
+ method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
}
public final class TemporalAdjusters {
@@ -68398,26 +68427,26 @@
method public static java.time.temporal.TemporalAdjuster previousOrSame(java.time.DayOfWeek);
}
- public abstract interface TemporalAmount {
- method public abstract java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
- method public abstract long get(java.time.temporal.TemporalUnit);
- method public abstract java.util.List<java.time.temporal.TemporalUnit> getUnits();
- method public abstract java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
+ public interface TemporalAmount {
+ method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
+ method public long get(java.time.temporal.TemporalUnit);
+ method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
+ method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
}
- public abstract interface TemporalField {
- method public abstract <R extends java.time.temporal.Temporal> R adjustInto(R, long);
- method public abstract java.time.temporal.TemporalUnit getBaseUnit();
- method public default java.lang.String getDisplayName(java.util.Locale);
- method public abstract long getFrom(java.time.temporal.TemporalAccessor);
- method public abstract java.time.temporal.TemporalUnit getRangeUnit();
- method public abstract boolean isDateBased();
- method public abstract boolean isSupportedBy(java.time.temporal.TemporalAccessor);
- method public abstract boolean isTimeBased();
- method public abstract java.time.temporal.ValueRange range();
- method public abstract java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
- method public default java.time.temporal.TemporalAccessor resolve(java.util.Map<java.time.temporal.TemporalField, java.lang.Long>, java.time.temporal.TemporalAccessor, java.time.format.ResolverStyle);
- method public abstract java.lang.String toString();
+ public interface TemporalField {
+ method public <R extends java.time.temporal.Temporal> R adjustInto(R, long);
+ method public java.time.temporal.TemporalUnit getBaseUnit();
+ method public default String getDisplayName(java.util.Locale);
+ method public long getFrom(java.time.temporal.TemporalAccessor);
+ method public java.time.temporal.TemporalUnit getRangeUnit();
+ method public boolean isDateBased();
+ method public boolean isSupportedBy(java.time.temporal.TemporalAccessor);
+ method public boolean isTimeBased();
+ method public java.time.temporal.ValueRange range();
+ method public java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
+ method public default java.time.temporal.TemporalAccessor resolve(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.temporal.TemporalAccessor, java.time.format.ResolverStyle);
+ method public String toString();
}
public final class TemporalQueries {
@@ -68430,24 +68459,24 @@
method public static java.time.temporal.TemporalQuery<java.time.ZoneId> zoneId();
}
- public abstract interface TemporalQuery<R> {
- method public abstract R queryFrom(java.time.temporal.TemporalAccessor);
+ @java.lang.FunctionalInterface public interface TemporalQuery<R> {
+ method public R queryFrom(java.time.temporal.TemporalAccessor);
}
- public abstract interface TemporalUnit {
- method public abstract <R extends java.time.temporal.Temporal> R addTo(R, long);
- method public abstract long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
- method public abstract java.time.Duration getDuration();
- method public abstract boolean isDateBased();
- method public abstract boolean isDurationEstimated();
+ public interface TemporalUnit {
+ method public <R extends java.time.temporal.Temporal> R addTo(R, long);
+ method public long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
+ method public java.time.Duration getDuration();
+ method public boolean isDateBased();
+ method public boolean isDurationEstimated();
method public default boolean isSupportedBy(java.time.temporal.Temporal);
- method public abstract boolean isTimeBased();
- method public abstract java.lang.String toString();
+ method public boolean isTimeBased();
+ method public String toString();
}
public class UnsupportedTemporalTypeException extends java.time.DateTimeException {
- ctor public UnsupportedTemporalTypeException(java.lang.String);
- ctor public UnsupportedTemporalTypeException(java.lang.String, java.lang.Throwable);
+ ctor public UnsupportedTemporalTypeException(String);
+ ctor public UnsupportedTemporalTypeException(String, Throwable);
}
public final class ValueRange implements java.io.Serializable {
@@ -68485,7 +68514,7 @@
package java.time.zone {
- public final class ZoneOffsetTransition implements java.lang.Comparable java.io.Serializable {
+ public final class ZoneOffsetTransition implements java.lang.Comparable<java.time.zone.ZoneOffsetTransition> java.io.Serializable {
method public int compareTo(java.time.zone.ZoneOffsetTransition);
method public java.time.LocalDateTime getDateTimeAfter();
method public java.time.LocalDateTime getDateTimeBefore();
@@ -68514,10 +68543,8 @@
method public static java.time.zone.ZoneOffsetTransitionRule of(java.time.Month, int, java.time.DayOfWeek, java.time.LocalTime, boolean, java.time.zone.ZoneOffsetTransitionRule.TimeDefinition, java.time.ZoneOffset, java.time.ZoneOffset, java.time.ZoneOffset);
}
- public static final class ZoneOffsetTransitionRule.TimeDefinition extends java.lang.Enum {
+ public enum ZoneOffsetTransitionRule.TimeDefinition {
method public java.time.LocalDateTime createDateTime(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneOffset);
- method public static java.time.zone.ZoneOffsetTransitionRule.TimeDefinition valueOf(java.lang.String);
- method public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition[] values();
enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition STANDARD;
enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition UTC;
enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition WALL;
@@ -68542,136 +68569,136 @@
}
public class ZoneRulesException extends java.time.DateTimeException {
- ctor public ZoneRulesException(java.lang.String);
- ctor public ZoneRulesException(java.lang.String, java.lang.Throwable);
+ ctor public ZoneRulesException(String);
+ ctor public ZoneRulesException(String, Throwable);
}
}
package java.util {
- public abstract class AbstractCollection<E> implements java.util.Collection {
+ public abstract class AbstractCollection<E> implements java.util.Collection<E> {
ctor protected AbstractCollection();
method public boolean add(E);
- method public boolean addAll(java.util.Collection<? extends E>);
+ method public boolean addAll(@NonNull java.util.Collection<? extends E>);
method public void clear();
- method public boolean contains(java.lang.Object);
- method public boolean containsAll(java.util.Collection<?>);
+ method public boolean contains(@Nullable Object);
+ method public boolean containsAll(@NonNull java.util.Collection<?>);
method public boolean isEmpty();
- method public boolean remove(java.lang.Object);
- method public boolean removeAll(java.util.Collection<?>);
- method public boolean retainAll(java.util.Collection<?>);
- method public java.lang.Object[] toArray();
+ method public boolean remove(@Nullable Object);
+ method public boolean removeAll(@NonNull java.util.Collection<?>);
+ method public boolean retainAll(@NonNull java.util.Collection<?>);
+ method public Object[] toArray();
method public <T> T[] toArray(T[]);
}
- public abstract class AbstractList<E> extends java.util.AbstractCollection implements java.util.List {
+ public abstract class AbstractList<E> extends java.util.AbstractCollection<E> implements java.util.List<E> {
ctor protected AbstractList();
method public void add(int, E);
- method public boolean addAll(int, java.util.Collection<? extends E>);
- method public int indexOf(java.lang.Object);
- method public java.util.Iterator<E> iterator();
- method public int lastIndexOf(java.lang.Object);
- method public java.util.ListIterator<E> listIterator();
- method public java.util.ListIterator<E> listIterator(int);
+ method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
+ method public int indexOf(@Nullable Object);
+ method @NonNull public java.util.Iterator<E> iterator();
+ method public int lastIndexOf(@Nullable Object);
+ method @NonNull public java.util.ListIterator<E> listIterator();
+ method @NonNull public java.util.ListIterator<E> listIterator(int);
method public E remove(int);
method protected void removeRange(int, int);
method public E set(int, E);
- method public java.util.List<E> subList(int, int);
+ method @NonNull public java.util.List<E> subList(int, int);
field protected transient int modCount;
}
- public abstract class AbstractMap<K, V> implements java.util.Map {
+ public abstract class AbstractMap<K, V> implements java.util.Map<K,V> {
ctor protected AbstractMap();
method public void clear();
- method public boolean containsKey(java.lang.Object);
- method public boolean containsValue(java.lang.Object);
- method public V get(java.lang.Object);
+ method public boolean containsKey(@Nullable Object);
+ method public boolean containsValue(@Nullable Object);
+ method @Nullable public V get(@Nullable Object);
method public boolean isEmpty();
- method public java.util.Set<K> keySet();
- method public V put(K, V);
- method public void putAll(java.util.Map<? extends K, ? extends V>);
- method public V remove(java.lang.Object);
+ method @NonNull public java.util.Set<K> keySet();
+ method @Nullable public V put(K, V);
+ method public void putAll(@NonNull java.util.Map<? extends K,? extends V>);
+ method @Nullable public V remove(@Nullable Object);
method public int size();
- method public java.util.Collection<V> values();
+ method @NonNull public java.util.Collection<V> values();
}
- public static class AbstractMap.SimpleEntry<K, V> implements java.util.Map.Entry java.io.Serializable {
+ public static class AbstractMap.SimpleEntry<K, V> implements java.util.Map.Entry<K,V> java.io.Serializable {
ctor public AbstractMap.SimpleEntry(K, V);
- ctor public AbstractMap.SimpleEntry(java.util.Map.Entry<? extends K, ? extends V>);
+ ctor public AbstractMap.SimpleEntry(@NonNull java.util.Map.Entry<? extends K,? extends V>);
method public K getKey();
method public V getValue();
method public V setValue(V);
}
- public static class AbstractMap.SimpleImmutableEntry<K, V> implements java.util.Map.Entry java.io.Serializable {
+ public static class AbstractMap.SimpleImmutableEntry<K, V> implements java.util.Map.Entry<K,V> java.io.Serializable {
ctor public AbstractMap.SimpleImmutableEntry(K, V);
- ctor public AbstractMap.SimpleImmutableEntry(java.util.Map.Entry<? extends K, ? extends V>);
+ ctor public AbstractMap.SimpleImmutableEntry(@NonNull java.util.Map.Entry<? extends K,? extends V>);
method public K getKey();
method public V getValue();
method public V setValue(V);
}
- public abstract class AbstractQueue<E> extends java.util.AbstractCollection implements java.util.Queue {
+ public abstract class AbstractQueue<E> extends java.util.AbstractCollection<E> implements java.util.Queue<E> {
ctor protected AbstractQueue();
method public E element();
method public E remove();
}
- public abstract class AbstractSequentialList<E> extends java.util.AbstractList {
+ public abstract class AbstractSequentialList<E> extends java.util.AbstractList<E> {
ctor protected AbstractSequentialList();
method public E get(int);
}
- public abstract class AbstractSet<E> extends java.util.AbstractCollection implements java.util.Set {
+ public abstract class AbstractSet<E> extends java.util.AbstractCollection<E> implements java.util.Set<E> {
ctor protected AbstractSet();
}
- public class ArrayDeque<E> extends java.util.AbstractCollection implements java.lang.Cloneable java.util.Deque java.io.Serializable {
+ public class ArrayDeque<E> extends java.util.AbstractCollection<E> implements java.lang.Cloneable java.util.Deque<E> java.io.Serializable {
ctor public ArrayDeque();
ctor public ArrayDeque(int);
- ctor public ArrayDeque(java.util.Collection<? extends E>);
+ ctor public ArrayDeque(@NonNull java.util.Collection<? extends E>);
method public void addFirst(E);
method public void addLast(E);
- method public java.util.ArrayDeque<E> clone();
- method public java.util.Iterator<E> descendingIterator();
+ method @NonNull public java.util.ArrayDeque<E> clone();
+ method @NonNull public java.util.Iterator<E> descendingIterator();
method public E element();
method public E getFirst();
method public E getLast();
- method public java.util.Iterator<E> iterator();
+ method @NonNull public java.util.Iterator<E> iterator();
method public boolean offer(E);
method public boolean offerFirst(E);
method public boolean offerLast(E);
- method public E peek();
- method public E peekFirst();
- method public E peekLast();
- method public E poll();
- method public E pollFirst();
- method public E pollLast();
+ method @Nullable public E peek();
+ method @Nullable public E peekFirst();
+ method @Nullable public E peekLast();
+ method @Nullable public E poll();
+ method @Nullable public E pollFirst();
+ method @Nullable public E pollLast();
method public E pop();
method public void push(E);
method public E remove();
method public E removeFirst();
- method public boolean removeFirstOccurrence(java.lang.Object);
+ method public boolean removeFirstOccurrence(@Nullable Object);
method public E removeLast();
- method public boolean removeLastOccurrence(java.lang.Object);
+ method public boolean removeLastOccurrence(@Nullable Object);
method public int size();
}
- public class ArrayList<E> extends java.util.AbstractList implements java.lang.Cloneable java.util.List java.util.RandomAccess java.io.Serializable {
+ public class ArrayList<E> extends java.util.AbstractList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
ctor public ArrayList(int);
ctor public ArrayList();
- ctor public ArrayList(java.util.Collection<? extends E>);
- method public java.lang.Object clone();
+ ctor public ArrayList(@NonNull java.util.Collection<? extends E>);
+ method @NonNull public Object clone();
method public void ensureCapacity(int);
- method public void forEach(java.util.function.Consumer<? super E>);
+ method public void forEach(@NonNull java.util.function.Consumer<? super E>);
method public E get(int);
method public int size();
method public void trimToSize();
}
public class Arrays {
- method public static <T> java.util.List<T> asList(T...);
+ method @NonNull @java.lang.SafeVarargs public static <T> java.util.List<T> asList(T...);
method public static int binarySearch(long[], long);
method public static int binarySearch(long[], int, int, long);
method public static int binarySearch(int[], int);
@@ -68686,12 +68713,12 @@
method public static int binarySearch(double[], int, int, double);
method public static int binarySearch(float[], float);
method public static int binarySearch(float[], int, int, float);
- method public static int binarySearch(java.lang.Object[], java.lang.Object);
- method public static int binarySearch(java.lang.Object[], int, int, java.lang.Object);
- method public static <T> int binarySearch(T[], T, java.util.Comparator<? super T>);
- method public static <T> int binarySearch(T[], int, int, T, java.util.Comparator<? super T>);
+ method public static int binarySearch(Object[], @NonNull Object);
+ method public static int binarySearch(Object[], int, int, @NonNull Object);
+ method public static <T> int binarySearch(T[], T, @Nullable java.util.Comparator<? super T>);
+ method public static <T> int binarySearch(T[], int, int, T, @Nullable java.util.Comparator<? super T>);
method public static <T> T[] copyOf(T[], int);
- method public static <T, U> T[] copyOf(U[], int, java.lang.Class<? extends T[]>);
+ method public static <T, U> T[] copyOf(U[], int, @NonNull Class<? extends T[]>);
method public static byte[] copyOf(byte[], int);
method public static short[] copyOf(short[], int);
method public static int[] copyOf(int[], int);
@@ -68701,7 +68728,7 @@
method public static double[] copyOf(double[], int);
method public static boolean[] copyOf(boolean[], int);
method public static <T> T[] copyOfRange(T[], int, int);
- method public static <T, U> T[] copyOfRange(U[], int, int, java.lang.Class<? extends T[]>);
+ method public static <T, U> T[] copyOfRange(U[], int, int, @NonNull Class<? extends T[]>);
method public static byte[] copyOfRange(byte[], int, int);
method public static short[] copyOfRange(short[], int, int);
method public static int[] copyOfRange(int[], int, int);
@@ -68710,9 +68737,9 @@
method public static float[] copyOfRange(float[], int, int);
method public static double[] copyOfRange(double[], int, int);
method public static boolean[] copyOfRange(boolean[], int, int);
- method public static boolean deepEquals(java.lang.Object[], java.lang.Object[]);
- method public static int deepHashCode(java.lang.Object[]);
- method public static java.lang.String deepToString(java.lang.Object[]);
+ method public static boolean deepEquals(Object[], Object[]);
+ method public static int deepHashCode(Object[]);
+ method @NonNull public static String deepToString(Object[]);
method public static boolean equals(long[], long[]);
method public static boolean equals(int[], int[]);
method public static boolean equals(short[], short[]);
@@ -68721,7 +68748,7 @@
method public static boolean equals(boolean[], boolean[]);
method public static boolean equals(double[], double[]);
method public static boolean equals(float[], float[]);
- method public static boolean equals(java.lang.Object[], java.lang.Object[]);
+ method public static boolean equals(Object[], Object[]);
method public static void fill(long[], long);
method public static void fill(long[], int, int, long);
method public static void fill(int[], int);
@@ -68738,8 +68765,8 @@
method public static void fill(double[], int, int, double);
method public static void fill(float[], float);
method public static void fill(float[], int, int, float);
- method public static void fill(java.lang.Object[], java.lang.Object);
- method public static void fill(java.lang.Object[], int, int, java.lang.Object);
+ method public static void fill(Object[], @Nullable Object);
+ method public static void fill(Object[], int, int, @Nullable Object);
method public static int hashCode(long[]);
method public static int hashCode(int[]);
method public static int hashCode(short[]);
@@ -68748,19 +68775,19 @@
method public static int hashCode(boolean[]);
method public static int hashCode(float[]);
method public static int hashCode(double[]);
- method public static int hashCode(java.lang.Object[]);
- method public static <T> void parallelPrefix(T[], java.util.function.BinaryOperator<T>);
- method public static <T> void parallelPrefix(T[], int, int, java.util.function.BinaryOperator<T>);
- method public static void parallelPrefix(long[], java.util.function.LongBinaryOperator);
- method public static void parallelPrefix(long[], int, int, java.util.function.LongBinaryOperator);
- method public static void parallelPrefix(double[], java.util.function.DoubleBinaryOperator);
- method public static void parallelPrefix(double[], int, int, java.util.function.DoubleBinaryOperator);
- method public static void parallelPrefix(int[], java.util.function.IntBinaryOperator);
- method public static void parallelPrefix(int[], int, int, java.util.function.IntBinaryOperator);
- method public static <T> void parallelSetAll(T[], java.util.function.IntFunction<? extends T>);
- method public static void parallelSetAll(int[], java.util.function.IntUnaryOperator);
- method public static void parallelSetAll(long[], java.util.function.IntToLongFunction);
- method public static void parallelSetAll(double[], java.util.function.IntToDoubleFunction);
+ method public static int hashCode(Object[]);
+ method public static <T> void parallelPrefix(T[], @NonNull java.util.function.BinaryOperator<T>);
+ method public static <T> void parallelPrefix(T[], int, int, @NonNull java.util.function.BinaryOperator<T>);
+ method public static void parallelPrefix(long[], @NonNull java.util.function.LongBinaryOperator);
+ method public static void parallelPrefix(long[], int, int, @NonNull java.util.function.LongBinaryOperator);
+ method public static void parallelPrefix(double[], @NonNull java.util.function.DoubleBinaryOperator);
+ method public static void parallelPrefix(double[], int, int, @NonNull java.util.function.DoubleBinaryOperator);
+ method public static void parallelPrefix(int[], @NonNull java.util.function.IntBinaryOperator);
+ method public static void parallelPrefix(int[], int, int, @NonNull java.util.function.IntBinaryOperator);
+ method public static <T> void parallelSetAll(T[], @NonNull java.util.function.IntFunction<? extends T>);
+ method public static void parallelSetAll(int[], @NonNull java.util.function.IntUnaryOperator);
+ method public static void parallelSetAll(long[], @NonNull java.util.function.IntToLongFunction);
+ method public static void parallelSetAll(double[], @NonNull java.util.function.IntToDoubleFunction);
method public static void parallelSort(byte[]);
method public static void parallelSort(byte[], int, int);
method public static void parallelSort(char[]);
@@ -68777,12 +68804,12 @@
method public static void parallelSort(double[], int, int);
method public static <T extends java.lang.Comparable<? super T>> void parallelSort(T[]);
method public static <T extends java.lang.Comparable<? super T>> void parallelSort(T[], int, int);
- method public static <T> void parallelSort(T[], java.util.Comparator<? super T>);
- method public static <T> void parallelSort(T[], int, int, java.util.Comparator<? super T>);
- method public static <T> void setAll(T[], java.util.function.IntFunction<? extends T>);
- method public static void setAll(int[], java.util.function.IntUnaryOperator);
- method public static void setAll(long[], java.util.function.IntToLongFunction);
- method public static void setAll(double[], java.util.function.IntToDoubleFunction);
+ method public static <T> void parallelSort(T[], @Nullable java.util.Comparator<? super T>);
+ method public static <T> void parallelSort(T[], int, int, @Nullable java.util.Comparator<? super T>);
+ method public static <T> void setAll(T[], @NonNull java.util.function.IntFunction<? extends T>);
+ method public static void setAll(int[], @NonNull java.util.function.IntUnaryOperator);
+ method public static void setAll(long[], @NonNull java.util.function.IntToLongFunction);
+ method public static void setAll(double[], @NonNull java.util.function.IntToDoubleFunction);
method public static void sort(int[]);
method public static void sort(int[], int, int);
method public static void sort(long[]);
@@ -68797,35 +68824,35 @@
method public static void sort(float[], int, int);
method public static void sort(double[]);
method public static void sort(double[], int, int);
- method public static void sort(java.lang.Object[]);
- method public static void sort(java.lang.Object[], int, int);
- method public static <T> void sort(T[], java.util.Comparator<? super T>);
- method public static <T> void sort(T[], int, int, java.util.Comparator<? super T>);
- method public static <T> java.util.Spliterator<T> spliterator(T[]);
- method public static <T> java.util.Spliterator<T> spliterator(T[], int, int);
- method public static java.util.Spliterator.OfInt spliterator(int[]);
- method public static java.util.Spliterator.OfInt spliterator(int[], int, int);
- method public static java.util.Spliterator.OfLong spliterator(long[]);
- method public static java.util.Spliterator.OfLong spliterator(long[], int, int);
- method public static java.util.Spliterator.OfDouble spliterator(double[]);
- method public static java.util.Spliterator.OfDouble spliterator(double[], int, int);
- method public static <T> java.util.stream.Stream<T> stream(T[]);
- method public static <T> java.util.stream.Stream<T> stream(T[], int, int);
- method public static java.util.stream.IntStream stream(int[]);
- method public static java.util.stream.IntStream stream(int[], int, int);
- method public static java.util.stream.LongStream stream(long[]);
- method public static java.util.stream.LongStream stream(long[], int, int);
- method public static java.util.stream.DoubleStream stream(double[]);
- method public static java.util.stream.DoubleStream stream(double[], int, int);
- method public static java.lang.String toString(long[]);
- method public static java.lang.String toString(int[]);
- method public static java.lang.String toString(short[]);
- method public static java.lang.String toString(char[]);
- method public static java.lang.String toString(byte[]);
- method public static java.lang.String toString(boolean[]);
- method public static java.lang.String toString(float[]);
- method public static java.lang.String toString(double[]);
- method public static java.lang.String toString(java.lang.Object[]);
+ method public static void sort(Object[]);
+ method public static void sort(Object[], int, int);
+ method public static <T> void sort(T[], @Nullable java.util.Comparator<? super T>);
+ method public static <T> void sort(T[], int, int, @Nullable java.util.Comparator<? super T>);
+ method @NonNull public static <T> java.util.Spliterator<T> spliterator(T[]);
+ method @NonNull public static <T> java.util.Spliterator<T> spliterator(T[], int, int);
+ method @NonNull public static java.util.Spliterator.OfInt spliterator(int[]);
+ method @NonNull public static java.util.Spliterator.OfInt spliterator(int[], int, int);
+ method @NonNull public static java.util.Spliterator.OfLong spliterator(long[]);
+ method @NonNull public static java.util.Spliterator.OfLong spliterator(long[], int, int);
+ method @NonNull public static java.util.Spliterator.OfDouble spliterator(double[]);
+ method @NonNull public static java.util.Spliterator.OfDouble spliterator(double[], int, int);
+ method @NonNull public static <T> java.util.stream.Stream<T> stream(T[]);
+ method @NonNull public static <T> java.util.stream.Stream<T> stream(T[], int, int);
+ method @NonNull public static java.util.stream.IntStream stream(int[]);
+ method @NonNull public static java.util.stream.IntStream stream(int[], int, int);
+ method @NonNull public static java.util.stream.LongStream stream(long[]);
+ method @NonNull public static java.util.stream.LongStream stream(long[], int, int);
+ method @NonNull public static java.util.stream.DoubleStream stream(double[]);
+ method @NonNull public static java.util.stream.DoubleStream stream(double[], int, int);
+ method @NonNull public static String toString(long[]);
+ method @NonNull public static String toString(int[]);
+ method @NonNull public static String toString(short[]);
+ method @NonNull public static String toString(char[]);
+ method @NonNull public static String toString(byte[]);
+ method @NonNull public static String toString(boolean[]);
+ method @NonNull public static String toString(float[]);
+ method @NonNull public static String toString(double[]);
+ method @NonNull public static String toString(Object[]);
}
public class Base64 {
@@ -68840,7 +68867,7 @@
public static class Base64.Decoder {
method public byte[] decode(byte[]);
- method public byte[] decode(java.lang.String);
+ method public byte[] decode(String);
method public int decode(byte[], byte[]);
method public java.nio.ByteBuffer decode(java.nio.ByteBuffer);
method public java.io.InputStream wrap(java.io.InputStream);
@@ -68850,7 +68877,7 @@
method public byte[] encode(byte[]);
method public int encode(byte[], byte[]);
method public java.nio.ByteBuffer encode(java.nio.ByteBuffer);
- method public java.lang.String encodeToString(byte[]);
+ method public String encodeToString(byte[]);
method public java.util.Base64.Encoder withoutPadding();
method public java.io.OutputStream wrap(java.io.OutputStream);
}
@@ -68864,7 +68891,7 @@
method public void clear(int);
method public void clear(int, int);
method public void clear();
- method public java.lang.Object clone();
+ method public Object clone();
method public void flip(int);
method public void flip(int, int);
method public boolean get(int);
@@ -68892,40 +68919,40 @@
method public void xor(java.util.BitSet);
}
- public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable java.io.Serializable {
+ public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable<java.util.Calendar> java.io.Serializable {
ctor protected Calendar();
- ctor protected Calendar(java.util.TimeZone, java.util.Locale);
+ ctor protected Calendar(@NonNull java.util.TimeZone, @NonNull java.util.Locale);
method public abstract void add(int, int);
- method public boolean after(java.lang.Object);
- method public boolean before(java.lang.Object);
+ method public boolean after(@Nullable Object);
+ method public boolean before(@Nullable Object);
method public final void clear();
method public final void clear(int);
- method public java.lang.Object clone();
- method public int compareTo(java.util.Calendar);
+ method @NonNull public Object clone();
+ method public int compareTo(@NonNull java.util.Calendar);
method protected void complete();
method protected abstract void computeFields();
method protected abstract void computeTime();
method public int get(int);
method public int getActualMaximum(int);
method public int getActualMinimum(int);
- method public static java.util.Set<java.lang.String> getAvailableCalendarTypes();
- method public static synchronized java.util.Locale[] getAvailableLocales();
- method public java.lang.String getCalendarType();
- method public java.lang.String getDisplayName(int, int, java.util.Locale);
- method public java.util.Map<java.lang.String, java.lang.Integer> getDisplayNames(int, int, java.util.Locale);
+ method @NonNull public static java.util.Set<java.lang.String> getAvailableCalendarTypes();
+ method public static java.util.Locale[] getAvailableLocales();
+ method @NonNull public String getCalendarType();
+ method @Nullable public String getDisplayName(int, int, @NonNull java.util.Locale);
+ method @Nullable public java.util.Map<java.lang.String,java.lang.Integer> getDisplayNames(int, int, @NonNull java.util.Locale);
method public int getFirstDayOfWeek();
method public abstract int getGreatestMinimum(int);
- method public static java.util.Calendar getInstance();
- method public static java.util.Calendar getInstance(java.util.TimeZone);
- method public static java.util.Calendar getInstance(java.util.Locale);
- method public static java.util.Calendar getInstance(java.util.TimeZone, java.util.Locale);
+ method @NonNull public static java.util.Calendar getInstance();
+ method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.TimeZone);
+ method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.Locale);
+ method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.TimeZone, @NonNull java.util.Locale);
method public abstract int getLeastMaximum(int);
method public abstract int getMaximum(int);
method public int getMinimalDaysInFirstWeek();
method public abstract int getMinimum(int);
- method public final java.util.Date getTime();
+ method @NonNull public final java.util.Date getTime();
method public long getTimeInMillis();
- method public java.util.TimeZone getTimeZone();
+ method @NonNull public java.util.TimeZone getTimeZone();
method public int getWeekYear();
method public int getWeeksInWeekYear();
method protected final int internalGet(int);
@@ -68941,11 +68968,11 @@
method public void setFirstDayOfWeek(int);
method public void setLenient(boolean);
method public void setMinimalDaysInFirstWeek(int);
- method public final void setTime(java.util.Date);
+ method public final void setTime(@NonNull java.util.Date);
method public void setTimeInMillis(long);
- method public void setTimeZone(java.util.TimeZone);
+ method public void setTimeZone(@NonNull java.util.TimeZone);
method public void setWeekDate(int, int, int);
- method public final java.time.Instant toInstant();
+ method @NonNull public final java.time.Instant toInstant();
field public static final int ALL_STYLES = 0; // 0x0
field public static final int AM = 0; // 0x0
field public static final int AM_PM = 9; // 0x9
@@ -69005,132 +69032,132 @@
public static class Calendar.Builder {
ctor public Calendar.Builder();
- method public java.util.Calendar build();
- method public java.util.Calendar.Builder set(int, int);
- method public java.util.Calendar.Builder setCalendarType(java.lang.String);
- method public java.util.Calendar.Builder setDate(int, int, int);
- method public java.util.Calendar.Builder setFields(int...);
- method public java.util.Calendar.Builder setInstant(long);
- method public java.util.Calendar.Builder setInstant(java.util.Date);
- method public java.util.Calendar.Builder setLenient(boolean);
- method public java.util.Calendar.Builder setLocale(java.util.Locale);
- method public java.util.Calendar.Builder setTimeOfDay(int, int, int);
- method public java.util.Calendar.Builder setTimeOfDay(int, int, int, int);
- method public java.util.Calendar.Builder setTimeZone(java.util.TimeZone);
- method public java.util.Calendar.Builder setWeekDate(int, int, int);
- method public java.util.Calendar.Builder setWeekDefinition(int, int);
+ method @NonNull public java.util.Calendar build();
+ method @NonNull public java.util.Calendar.Builder set(int, int);
+ method @NonNull public java.util.Calendar.Builder setCalendarType(@NonNull String);
+ method @NonNull public java.util.Calendar.Builder setDate(int, int, int);
+ method @NonNull public java.util.Calendar.Builder setFields(int...);
+ method @NonNull public java.util.Calendar.Builder setInstant(long);
+ method @NonNull public java.util.Calendar.Builder setInstant(@NonNull java.util.Date);
+ method @NonNull public java.util.Calendar.Builder setLenient(boolean);
+ method @NonNull public java.util.Calendar.Builder setLocale(@NonNull java.util.Locale);
+ method @NonNull public java.util.Calendar.Builder setTimeOfDay(int, int, int);
+ method @NonNull public java.util.Calendar.Builder setTimeOfDay(int, int, int, int);
+ method @NonNull public java.util.Calendar.Builder setTimeZone(@NonNull java.util.TimeZone);
+ method @NonNull public java.util.Calendar.Builder setWeekDate(int, int, int);
+ method @NonNull public java.util.Calendar.Builder setWeekDefinition(int, int);
}
- public abstract interface Collection<E> implements java.lang.Iterable {
- method public abstract boolean add(E);
- method public abstract boolean addAll(java.util.Collection<? extends E>);
- method public abstract void clear();
- method public abstract boolean contains(java.lang.Object);
- method public abstract boolean containsAll(java.util.Collection<?>);
- method public abstract boolean equals(java.lang.Object);
- method public abstract int hashCode();
- method public abstract boolean isEmpty();
- method public abstract java.util.Iterator<E> iterator();
- method public default java.util.stream.Stream<E> parallelStream();
- method public abstract boolean remove(java.lang.Object);
- method public abstract boolean removeAll(java.util.Collection<?>);
- method public default boolean removeIf(java.util.function.Predicate<? super E>);
- method public abstract boolean retainAll(java.util.Collection<?>);
- method public abstract int size();
- method public default java.util.Spliterator<E> spliterator();
- method public default java.util.stream.Stream<E> stream();
- method public abstract java.lang.Object[] toArray();
- method public abstract <T> T[] toArray(T[]);
+ public interface Collection<E> extends java.lang.Iterable<E> {
+ method public boolean add(E);
+ method public boolean addAll(@NonNull java.util.Collection<? extends E>);
+ method public void clear();
+ method public boolean contains(@Nullable Object);
+ method public boolean containsAll(@NonNull java.util.Collection<?>);
+ method public boolean equals(@Nullable Object);
+ method public int hashCode();
+ method public boolean isEmpty();
+ method @NonNull public java.util.Iterator<E> iterator();
+ method @NonNull public default java.util.stream.Stream<E> parallelStream();
+ method public boolean remove(@Nullable Object);
+ method public boolean removeAll(@NonNull java.util.Collection<?>);
+ method public default boolean removeIf(@NonNull java.util.function.Predicate<? super E>);
+ method public boolean retainAll(@NonNull java.util.Collection<?>);
+ method public int size();
+ method @NonNull public default java.util.Spliterator<E> spliterator();
+ method @NonNull public default java.util.stream.Stream<E> stream();
+ method public Object[] toArray();
+ method public <T> T[] toArray(T[]);
}
public class Collections {
- method public static <T> boolean addAll(java.util.Collection<? super T>, T...);
- method public static <T> java.util.Queue<T> asLifoQueue(java.util.Deque<T>);
- method public static <T> int binarySearch(java.util.List<? extends java.lang.Comparable<? super T>>, T);
- method public static <T> int binarySearch(java.util.List<? extends T>, T, java.util.Comparator<? super T>);
- method public static <E> java.util.Collection<E> checkedCollection(java.util.Collection<E>, java.lang.Class<E>);
- method public static <E> java.util.List<E> checkedList(java.util.List<E>, java.lang.Class<E>);
- method public static <K, V> java.util.Map<K, V> checkedMap(java.util.Map<K, V>, java.lang.Class<K>, java.lang.Class<V>);
- method public static <K, V> java.util.NavigableMap<K, V> checkedNavigableMap(java.util.NavigableMap<K, V>, java.lang.Class<K>, java.lang.Class<V>);
- method public static <E> java.util.NavigableSet<E> checkedNavigableSet(java.util.NavigableSet<E>, java.lang.Class<E>);
- method public static <E> java.util.Queue<E> checkedQueue(java.util.Queue<E>, java.lang.Class<E>);
- method public static <E> java.util.Set<E> checkedSet(java.util.Set<E>, java.lang.Class<E>);
- method public static <K, V> java.util.SortedMap<K, V> checkedSortedMap(java.util.SortedMap<K, V>, java.lang.Class<K>, java.lang.Class<V>);
- method public static <E> java.util.SortedSet<E> checkedSortedSet(java.util.SortedSet<E>, java.lang.Class<E>);
- method public static <T> void copy(java.util.List<? super T>, java.util.List<? extends T>);
- method public static boolean disjoint(java.util.Collection<?>, java.util.Collection<?>);
- method public static <T> java.util.Enumeration<T> emptyEnumeration();
- method public static <T> java.util.Iterator<T> emptyIterator();
- method public static final <T> java.util.List<T> emptyList();
- method public static <T> java.util.ListIterator<T> emptyListIterator();
- method public static final <K, V> java.util.Map<K, V> emptyMap();
- method public static final <K, V> java.util.NavigableMap<K, V> emptyNavigableMap();
- method public static <E> java.util.NavigableSet<E> emptyNavigableSet();
- method public static final <T> java.util.Set<T> emptySet();
- method public static final <K, V> java.util.SortedMap<K, V> emptySortedMap();
- method public static <E> java.util.SortedSet<E> emptySortedSet();
- method public static <T> java.util.Enumeration<T> enumeration(java.util.Collection<T>);
- method public static <T> void fill(java.util.List<? super T>, T);
- method public static int frequency(java.util.Collection<?>, java.lang.Object);
- method public static int indexOfSubList(java.util.List<?>, java.util.List<?>);
- method public static int lastIndexOfSubList(java.util.List<?>, java.util.List<?>);
- method public static <T> java.util.ArrayList<T> list(java.util.Enumeration<T>);
- method public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T max(java.util.Collection<? extends T>);
- method public static <T> T max(java.util.Collection<? extends T>, java.util.Comparator<? super T>);
- method public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T min(java.util.Collection<? extends T>);
- method public static <T> T min(java.util.Collection<? extends T>, java.util.Comparator<? super T>);
- method public static <T> java.util.List<T> nCopies(int, T);
- method public static <E> java.util.Set<E> newSetFromMap(java.util.Map<E, java.lang.Boolean>);
- method public static <T> boolean replaceAll(java.util.List<T>, T, T);
- method public static void reverse(java.util.List<?>);
- method public static <T> java.util.Comparator<T> reverseOrder();
- method public static <T> java.util.Comparator<T> reverseOrder(java.util.Comparator<T>);
- method public static void rotate(java.util.List<?>, int);
- method public static void shuffle(java.util.List<?>);
- method public static void shuffle(java.util.List<?>, java.util.Random);
- method public static <T> java.util.Set<T> singleton(T);
- method public static <T> java.util.List<T> singletonList(T);
- method public static <K, V> java.util.Map<K, V> singletonMap(K, V);
- method public static <T extends java.lang.Comparable<? super T>> void sort(java.util.List<T>);
- method public static <T> void sort(java.util.List<T>, java.util.Comparator<? super T>);
- method public static void swap(java.util.List<?>, int, int);
- method public static <T> java.util.Collection<T> synchronizedCollection(java.util.Collection<T>);
- method public static <T> java.util.List<T> synchronizedList(java.util.List<T>);
- method public static <K, V> java.util.Map<K, V> synchronizedMap(java.util.Map<K, V>);
- method public static <K, V> java.util.NavigableMap<K, V> synchronizedNavigableMap(java.util.NavigableMap<K, V>);
- method public static <T> java.util.NavigableSet<T> synchronizedNavigableSet(java.util.NavigableSet<T>);
- method public static <T> java.util.Set<T> synchronizedSet(java.util.Set<T>);
- method public static <K, V> java.util.SortedMap<K, V> synchronizedSortedMap(java.util.SortedMap<K, V>);
- method public static <T> java.util.SortedSet<T> synchronizedSortedSet(java.util.SortedSet<T>);
- method public static <T> java.util.Collection<T> unmodifiableCollection(java.util.Collection<? extends T>);
- method public static <T> java.util.List<T> unmodifiableList(java.util.List<? extends T>);
- method public static <K, V> java.util.Map<K, V> unmodifiableMap(java.util.Map<? extends K, ? extends V>);
- method public static <K, V> java.util.NavigableMap<K, V> unmodifiableNavigableMap(java.util.NavigableMap<K, ? extends V>);
- method public static <T> java.util.NavigableSet<T> unmodifiableNavigableSet(java.util.NavigableSet<T>);
- method public static <T> java.util.Set<T> unmodifiableSet(java.util.Set<? extends T>);
- method public static <K, V> java.util.SortedMap<K, V> unmodifiableSortedMap(java.util.SortedMap<K, ? extends V>);
- method public static <T> java.util.SortedSet<T> unmodifiableSortedSet(java.util.SortedSet<T>);
- field public static final java.util.List EMPTY_LIST;
- field public static final java.util.Map EMPTY_MAP;
- field public static final java.util.Set EMPTY_SET;
+ method @java.lang.SafeVarargs public static <T> boolean addAll(@NonNull java.util.Collection<? super T>, T...);
+ method @NonNull public static <T> java.util.Queue<T> asLifoQueue(@NonNull java.util.Deque<T>);
+ method public static <T> int binarySearch(@NonNull java.util.List<? extends java.lang.Comparable<? super T>>, @NonNull T);
+ method public static <T> int binarySearch(@NonNull java.util.List<? extends T>, T, @Nullable java.util.Comparator<? super T>);
+ method @NonNull public static <E> java.util.Collection<E> checkedCollection(@NonNull java.util.Collection<E>, @NonNull Class<E>);
+ method @NonNull public static <E> java.util.List<E> checkedList(@NonNull java.util.List<E>, @NonNull Class<E>);
+ method @NonNull public static <K, V> java.util.Map<K,V> checkedMap(@NonNull java.util.Map<K,V>, @NonNull Class<K>, @NonNull Class<V>);
+ method @NonNull public static <K, V> java.util.NavigableMap<K,V> checkedNavigableMap(@NonNull java.util.NavigableMap<K,V>, @NonNull Class<K>, @NonNull Class<V>);
+ method @NonNull public static <E> java.util.NavigableSet<E> checkedNavigableSet(@NonNull java.util.NavigableSet<E>, @NonNull Class<E>);
+ method @NonNull public static <E> java.util.Queue<E> checkedQueue(@NonNull java.util.Queue<E>, @NonNull Class<E>);
+ method @NonNull public static <E> java.util.Set<E> checkedSet(@NonNull java.util.Set<E>, @NonNull Class<E>);
+ method @NonNull public static <K, V> java.util.SortedMap<K,V> checkedSortedMap(@NonNull java.util.SortedMap<K,V>, @NonNull Class<K>, @NonNull Class<V>);
+ method @NonNull public static <E> java.util.SortedSet<E> checkedSortedSet(@NonNull java.util.SortedSet<E>, @NonNull Class<E>);
+ method public static <T> void copy(@NonNull java.util.List<? super T>, @NonNull java.util.List<? extends T>);
+ method public static boolean disjoint(@NonNull java.util.Collection<?>, @NonNull java.util.Collection<?>);
+ method @NonNull public static <T> java.util.Enumeration<T> emptyEnumeration();
+ method @NonNull public static <T> java.util.Iterator<T> emptyIterator();
+ method @NonNull public static final <T> java.util.List<T> emptyList();
+ method @NonNull public static <T> java.util.ListIterator<T> emptyListIterator();
+ method @NonNull public static final <K, V> java.util.Map<K,V> emptyMap();
+ method @NonNull public static final <K, V> java.util.NavigableMap<K,V> emptyNavigableMap();
+ method @NonNull public static <E> java.util.NavigableSet<E> emptyNavigableSet();
+ method @NonNull public static final <T> java.util.Set<T> emptySet();
+ method @NonNull public static final <K, V> java.util.SortedMap<K,V> emptySortedMap();
+ method @NonNull public static <E> java.util.SortedSet<E> emptySortedSet();
+ method @NonNull public static <T> java.util.Enumeration<T> enumeration(@NonNull java.util.Collection<T>);
+ method public static <T> void fill(@NonNull java.util.List<? super T>, T);
+ method public static int frequency(@NonNull java.util.Collection<?>, @Nullable Object);
+ method public static int indexOfSubList(@NonNull java.util.List<?>, @NonNull java.util.List<?>);
+ method public static int lastIndexOfSubList(@NonNull java.util.List<?>, @NonNull java.util.List<?>);
+ method @NonNull public static <T> java.util.ArrayList<T> list(@NonNull java.util.Enumeration<T>);
+ method @NonNull public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T max(@NonNull java.util.Collection<? extends T>);
+ method public static <T> T max(@NonNull java.util.Collection<? extends T>, @Nullable java.util.Comparator<? super T>);
+ method @NonNull public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T min(@NonNull java.util.Collection<? extends T>);
+ method public static <T> T min(@NonNull java.util.Collection<? extends T>, @Nullable java.util.Comparator<? super T>);
+ method @NonNull public static <T> java.util.List<T> nCopies(int, T);
+ method @NonNull public static <E> java.util.Set<E> newSetFromMap(@NonNull java.util.Map<E,java.lang.Boolean>);
+ method public static <T> boolean replaceAll(@NonNull java.util.List<T>, T, T);
+ method public static void reverse(@NonNull java.util.List<?>);
+ method @NonNull public static <T> java.util.Comparator<T> reverseOrder();
+ method @NonNull public static <T> java.util.Comparator<T> reverseOrder(@Nullable java.util.Comparator<T>);
+ method public static void rotate(@NonNull java.util.List<?>, int);
+ method public static void shuffle(@NonNull java.util.List<?>);
+ method public static void shuffle(@NonNull java.util.List<?>, @NonNull java.util.Random);
+ method @NonNull public static <T> java.util.Set<T> singleton(T);
+ method @NonNull public static <T> java.util.List<T> singletonList(T);
+ method @NonNull public static <K, V> java.util.Map<K,V> singletonMap(K, V);
+ method public static <T extends java.lang.Comparable<? super T>> void sort(@NonNull java.util.List<T>);
+ method public static <T> void sort(@NonNull java.util.List<T>, @Nullable java.util.Comparator<? super T>);
+ method public static void swap(@NonNull java.util.List<?>, int, int);
+ method @NonNull public static <T> java.util.Collection<T> synchronizedCollection(@NonNull java.util.Collection<T>);
+ method @NonNull public static <T> java.util.List<T> synchronizedList(@NonNull java.util.List<T>);
+ method @NonNull public static <K, V> java.util.Map<K,V> synchronizedMap(@NonNull java.util.Map<K,V>);
+ method @NonNull public static <K, V> java.util.NavigableMap<K,V> synchronizedNavigableMap(@NonNull java.util.NavigableMap<K,V>);
+ method @NonNull public static <T> java.util.NavigableSet<T> synchronizedNavigableSet(@NonNull java.util.NavigableSet<T>);
+ method @NonNull public static <T> java.util.Set<T> synchronizedSet(@NonNull java.util.Set<T>);
+ method @NonNull public static <K, V> java.util.SortedMap<K,V> synchronizedSortedMap(@NonNull java.util.SortedMap<K,V>);
+ method @NonNull public static <T> java.util.SortedSet<T> synchronizedSortedSet(@NonNull java.util.SortedSet<T>);
+ method @NonNull public static <T> java.util.Collection<T> unmodifiableCollection(@NonNull java.util.Collection<? extends T>);
+ method @NonNull public static <T> java.util.List<T> unmodifiableList(@NonNull java.util.List<? extends T>);
+ method @NonNull public static <K, V> java.util.Map<K,V> unmodifiableMap(@NonNull java.util.Map<? extends K,? extends V>);
+ method @NonNull public static <K, V> java.util.NavigableMap<K,V> unmodifiableNavigableMap(@NonNull java.util.NavigableMap<K,? extends V>);
+ method @NonNull public static <T> java.util.NavigableSet<T> unmodifiableNavigableSet(@NonNull java.util.NavigableSet<T>);
+ method @NonNull public static <T> java.util.Set<T> unmodifiableSet(@NonNull java.util.Set<? extends T>);
+ method @NonNull public static <K, V> java.util.SortedMap<K,V> unmodifiableSortedMap(@NonNull java.util.SortedMap<K,? extends V>);
+ method @NonNull public static <T> java.util.SortedSet<T> unmodifiableSortedSet(@NonNull java.util.SortedSet<T>);
+ field @NonNull public static final java.util.List EMPTY_LIST;
+ field @NonNull public static final java.util.Map EMPTY_MAP;
+ field @NonNull public static final java.util.Set EMPTY_SET;
}
- public abstract interface Comparator<T> {
- method public abstract int compare(T, T);
- method public static <T, U> java.util.Comparator<T> comparing(java.util.function.Function<? super T, ? extends U>, java.util.Comparator<? super U>);
- method public static <T, U extends java.lang.Comparable<? super U>> java.util.Comparator<T> comparing(java.util.function.Function<? super T, ? extends U>);
+ @java.lang.FunctionalInterface public interface Comparator<T> {
+ method public int compare(T, T);
+ method public static <T, U> java.util.Comparator<T> comparing(java.util.function.Function<? super T,? extends U>, java.util.Comparator<? super U>);
+ method public static <T, U extends java.lang.Comparable<? super U>> java.util.Comparator<T> comparing(java.util.function.Function<? super T,? extends U>);
method public static <T> java.util.Comparator<T> comparingDouble(java.util.function.ToDoubleFunction<? super T>);
method public static <T> java.util.Comparator<T> comparingInt(java.util.function.ToIntFunction<? super T>);
method public static <T> java.util.Comparator<T> comparingLong(java.util.function.ToLongFunction<? super T>);
- method public abstract boolean equals(java.lang.Object);
+ method public boolean equals(Object);
method public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> naturalOrder();
method public static <T> java.util.Comparator<T> nullsFirst(java.util.Comparator<? super T>);
method public static <T> java.util.Comparator<T> nullsLast(java.util.Comparator<? super T>);
method public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> reverseOrder();
method public default java.util.Comparator<T> reversed();
method public default java.util.Comparator<T> thenComparing(java.util.Comparator<? super T>);
- method public default <U> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T, ? extends U>, java.util.Comparator<? super U>);
- method public default <U extends java.lang.Comparable<? super U>> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T, ? extends U>);
+ method public default <U> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T,? extends U>, java.util.Comparator<? super U>);
+ method public default <U extends java.lang.Comparable<? super U>> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T,? extends U>);
method public default java.util.Comparator<T> thenComparingDouble(java.util.function.ToDoubleFunction<? super T>);
method public default java.util.Comparator<T> thenComparingInt(java.util.function.ToIntFunction<? super T>);
method public default java.util.Comparator<T> thenComparingLong(java.util.function.ToLongFunction<? super T>);
@@ -69138,87 +69165,87 @@
public class ConcurrentModificationException extends java.lang.RuntimeException {
ctor public ConcurrentModificationException();
- ctor public ConcurrentModificationException(java.lang.String);
- ctor public ConcurrentModificationException(java.lang.Throwable);
- ctor public ConcurrentModificationException(java.lang.String, java.lang.Throwable);
+ ctor public ConcurrentModificationException(String);
+ ctor public ConcurrentModificationException(Throwable);
+ ctor public ConcurrentModificationException(String, Throwable);
}
public final class Currency implements java.io.Serializable {
method public static java.util.Set<java.util.Currency> getAvailableCurrencies();
- method public java.lang.String getCurrencyCode();
+ method public String getCurrencyCode();
method public int getDefaultFractionDigits();
- method public java.lang.String getDisplayName();
- method public java.lang.String getDisplayName(java.util.Locale);
- method public static java.util.Currency getInstance(java.lang.String);
+ method public String getDisplayName();
+ method public String getDisplayName(java.util.Locale);
+ method public static java.util.Currency getInstance(String);
method public static java.util.Currency getInstance(java.util.Locale);
method public int getNumericCode();
- method public java.lang.String getSymbol();
- method public java.lang.String getSymbol(java.util.Locale);
+ method public String getSymbol();
+ method public String getSymbol(java.util.Locale);
}
- public class Date implements java.lang.Cloneable java.lang.Comparable java.io.Serializable {
+ public class Date implements java.lang.Cloneable java.lang.Comparable<java.util.Date> java.io.Serializable {
ctor public Date();
ctor public Date(long);
- ctor public deprecated Date(int, int, int);
- ctor public deprecated Date(int, int, int, int, int);
- ctor public deprecated Date(int, int, int, int, int, int);
- ctor public deprecated Date(java.lang.String);
- method public static deprecated long UTC(int, int, int, int, int, int);
+ ctor @Deprecated public Date(int, int, int);
+ ctor @Deprecated public Date(int, int, int, int, int);
+ ctor @Deprecated public Date(int, int, int, int, int, int);
+ ctor @Deprecated public Date(String);
+ method @Deprecated public static long UTC(int, int, int, int, int, int);
method public boolean after(java.util.Date);
method public boolean before(java.util.Date);
- method public java.lang.Object clone();
+ method public Object clone();
method public int compareTo(java.util.Date);
method public static java.util.Date from(java.time.Instant);
- method public deprecated int getDate();
- method public deprecated int getDay();
- method public deprecated int getHours();
- method public deprecated int getMinutes();
- method public deprecated int getMonth();
- method public deprecated int getSeconds();
+ method @Deprecated public int getDate();
+ method @Deprecated public int getDay();
+ method @Deprecated public int getHours();
+ method @Deprecated public int getMinutes();
+ method @Deprecated public int getMonth();
+ method @Deprecated public int getSeconds();
method public long getTime();
- method public deprecated int getTimezoneOffset();
- method public deprecated int getYear();
- method public static deprecated long parse(java.lang.String);
- method public deprecated void setDate(int);
- method public deprecated void setHours(int);
- method public deprecated void setMinutes(int);
- method public deprecated void setMonth(int);
- method public deprecated void setSeconds(int);
+ method @Deprecated public int getTimezoneOffset();
+ method @Deprecated public int getYear();
+ method @Deprecated public static long parse(String);
+ method @Deprecated public void setDate(int);
+ method @Deprecated public void setHours(int);
+ method @Deprecated public void setMinutes(int);
+ method @Deprecated public void setMonth(int);
+ method @Deprecated public void setSeconds(int);
method public void setTime(long);
- method public deprecated void setYear(int);
- method public deprecated java.lang.String toGMTString();
+ method @Deprecated public void setYear(int);
+ method @Deprecated public String toGMTString();
method public java.time.Instant toInstant();
- method public deprecated java.lang.String toLocaleString();
+ method @Deprecated public String toLocaleString();
}
- public abstract interface Deque<E> implements java.util.Queue {
- method public abstract void addFirst(E);
- method public abstract void addLast(E);
- method public abstract java.util.Iterator<E> descendingIterator();
- method public abstract E getFirst();
- method public abstract E getLast();
- method public abstract boolean offerFirst(E);
- method public abstract boolean offerLast(E);
- method public abstract E peekFirst();
- method public abstract E peekLast();
- method public abstract E pollFirst();
- method public abstract E pollLast();
- method public abstract E pop();
- method public abstract void push(E);
- method public abstract E removeFirst();
- method public abstract boolean removeFirstOccurrence(java.lang.Object);
- method public abstract E removeLast();
- method public abstract boolean removeLastOccurrence(java.lang.Object);
+ public interface Deque<E> extends java.util.Queue<E> {
+ method public void addFirst(E);
+ method public void addLast(E);
+ method @NonNull public java.util.Iterator<E> descendingIterator();
+ method public E getFirst();
+ method public E getLast();
+ method public boolean offerFirst(E);
+ method public boolean offerLast(E);
+ method @Nullable public E peekFirst();
+ method @Nullable public E peekLast();
+ method @Nullable public E pollFirst();
+ method @Nullable public E pollLast();
+ method public E pop();
+ method public void push(E);
+ method public E removeFirst();
+ method public boolean removeFirstOccurrence(@Nullable Object);
+ method public E removeLast();
+ method public boolean removeLastOccurrence(@Nullable Object);
}
public abstract class Dictionary<K, V> {
ctor public Dictionary();
method public abstract java.util.Enumeration<V> elements();
- method public abstract V get(java.lang.Object);
+ method public abstract V get(Object);
method public abstract boolean isEmpty();
method public abstract java.util.Enumeration<K> keys();
method public abstract V put(K, V);
- method public abstract V remove(java.lang.Object);
+ method public abstract V remove(Object);
method public abstract int size();
}
@@ -69234,44 +69261,44 @@
}
public class DuplicateFormatFlagsException extends java.util.IllegalFormatException {
- ctor public DuplicateFormatFlagsException(java.lang.String);
- method public java.lang.String getFlags();
+ ctor public DuplicateFormatFlagsException(String);
+ method public String getFlags();
}
public class EmptyStackException extends java.lang.RuntimeException {
ctor public EmptyStackException();
}
- public class EnumMap<K extends java.lang.Enum<K>, V> extends java.util.AbstractMap implements java.lang.Cloneable java.io.Serializable {
- ctor public EnumMap(java.lang.Class<K>);
- ctor public EnumMap(java.util.EnumMap<K, ? extends V>);
- ctor public EnumMap(java.util.Map<K, ? extends V>);
- method public java.util.EnumMap<K, V> clone();
- method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
+ public class EnumMap<K extends java.lang.Enum<K>, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.io.Serializable {
+ ctor public EnumMap(Class<K>);
+ ctor public EnumMap(java.util.EnumMap<K,? extends V>);
+ ctor public EnumMap(java.util.Map<K,? extends V>);
+ method public java.util.EnumMap<K,V> clone();
+ method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
}
- public abstract class EnumSet<E extends java.lang.Enum<E>> extends java.util.AbstractSet implements java.lang.Cloneable java.io.Serializable {
- method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> allOf(java.lang.Class<E>);
+ public abstract class EnumSet<E extends java.lang.Enum<E>> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.io.Serializable {
+ method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> allOf(Class<E>);
method public java.util.EnumSet<E> clone();
method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> complementOf(java.util.EnumSet<E>);
method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> copyOf(java.util.EnumSet<E>);
method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> copyOf(java.util.Collection<E>);
- method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> noneOf(java.lang.Class<E>);
+ method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> noneOf(Class<E>);
method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E);
method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E);
method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E);
method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E, E);
method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E, E, E);
- method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E...);
+ method @java.lang.SafeVarargs public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E...);
method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> range(E, E);
}
- public abstract interface Enumeration<E> {
- method public abstract boolean hasMoreElements();
- method public abstract E nextElement();
+ public interface Enumeration<E> {
+ method public boolean hasMoreElements();
+ method public E nextElement();
}
- public abstract interface EventListener {
+ public interface EventListener {
}
public abstract class EventListenerProxy<T extends java.util.EventListener> implements java.util.EventListener {
@@ -69280,19 +69307,19 @@
}
public class EventObject implements java.io.Serializable {
- ctor public EventObject(java.lang.Object);
- method public java.lang.Object getSource();
- field protected transient java.lang.Object source;
+ ctor public EventObject(Object);
+ method public Object getSource();
+ field protected transient Object source;
}
public class FormatFlagsConversionMismatchException extends java.util.IllegalFormatException {
- ctor public FormatFlagsConversionMismatchException(java.lang.String, char);
+ ctor public FormatFlagsConversionMismatchException(String, char);
method public char getConversion();
- method public java.lang.String getFlags();
+ method public String getFlags();
}
- public abstract interface Formattable {
- method public abstract void formatTo(java.util.Formatter, int, int, int);
+ public interface Formattable {
+ method public void formatTo(java.util.Formatter, int, int, int);
}
public class FormattableFlags {
@@ -69303,31 +69330,29 @@
public final class Formatter implements java.io.Closeable java.io.Flushable {
ctor public Formatter();
- ctor public Formatter(java.lang.Appendable);
+ ctor public Formatter(Appendable);
ctor public Formatter(java.util.Locale);
- ctor public Formatter(java.lang.Appendable, java.util.Locale);
- ctor public Formatter(java.lang.String) throws java.io.FileNotFoundException;
- ctor public Formatter(java.lang.String, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
- ctor public Formatter(java.lang.String, java.lang.String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+ ctor public Formatter(Appendable, java.util.Locale);
+ ctor public Formatter(String) throws java.io.FileNotFoundException;
+ ctor public Formatter(String, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+ ctor public Formatter(String, String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
ctor public Formatter(java.io.File) throws java.io.FileNotFoundException;
- ctor public Formatter(java.io.File, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
- ctor public Formatter(java.io.File, java.lang.String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+ ctor public Formatter(java.io.File, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+ ctor public Formatter(java.io.File, String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
ctor public Formatter(java.io.PrintStream);
ctor public Formatter(java.io.OutputStream);
- ctor public Formatter(java.io.OutputStream, java.lang.String) throws java.io.UnsupportedEncodingException;
- ctor public Formatter(java.io.OutputStream, java.lang.String, java.util.Locale) throws java.io.UnsupportedEncodingException;
+ ctor public Formatter(java.io.OutputStream, String) throws java.io.UnsupportedEncodingException;
+ ctor public Formatter(java.io.OutputStream, String, java.util.Locale) throws java.io.UnsupportedEncodingException;
method public void close();
method public void flush();
- method public java.util.Formatter format(java.lang.String, java.lang.Object...);
- method public java.util.Formatter format(java.util.Locale, java.lang.String, java.lang.Object...);
+ method public java.util.Formatter format(String, java.lang.Object...);
+ method public java.util.Formatter format(java.util.Locale, String, java.lang.Object...);
method public java.io.IOException ioException();
method public java.util.Locale locale();
- method public java.lang.Appendable out();
+ method public Appendable out();
}
- public static final class Formatter.BigDecimalLayoutForm extends java.lang.Enum {
- method public static java.util.Formatter.BigDecimalLayoutForm valueOf(java.lang.String);
- method public static final java.util.Formatter.BigDecimalLayoutForm[] values();
+ public enum Formatter.BigDecimalLayoutForm {
enum_constant public static final java.util.Formatter.BigDecimalLayoutForm DECIMAL_FLOAT;
enum_constant public static final java.util.Formatter.BigDecimalLayoutForm SCIENTIFIC;
}
@@ -69362,69 +69387,55 @@
field public static final int BC = 0; // 0x0
}
- public class HashMap<K, V> extends java.util.AbstractMap implements java.lang.Cloneable java.util.Map java.io.Serializable {
+ public class HashMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
ctor public HashMap(int, float);
ctor public HashMap(int);
ctor public HashMap();
- ctor public HashMap(java.util.Map<? extends K, ? extends V>);
- method public java.lang.Object clone();
- method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
+ ctor public HashMap(@NonNull java.util.Map<? extends K,? extends V>);
+ method @NonNull public Object clone();
+ method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
}
- public class HashSet<E> extends java.util.AbstractSet implements java.lang.Cloneable java.io.Serializable java.util.Set {
+ public class HashSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.io.Serializable java.util.Set<E> {
ctor public HashSet();
- ctor public HashSet(java.util.Collection<? extends E>);
+ ctor public HashSet(@NonNull java.util.Collection<? extends E>);
ctor public HashSet(int, float);
ctor public HashSet(int);
- method public java.lang.Object clone();
- method public java.util.Iterator<E> iterator();
+ method @NonNull public Object clone();
+ method @NonNull public java.util.Iterator<E> iterator();
method public int size();
}
- public class Hashtable<K, V> extends java.util.Dictionary implements java.lang.Cloneable java.util.Map java.io.Serializable {
+ public class Hashtable<K, V> extends java.util.Dictionary<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
ctor public Hashtable(int, float);
ctor public Hashtable(int);
ctor public Hashtable();
- ctor public Hashtable(java.util.Map<? extends K, ? extends V>);
- method public synchronized void clear();
- method public synchronized java.lang.Object clone();
- method public synchronized V compute(K, java.util.function.BiFunction<? super K, ? super V, ? extends V>);
- method public synchronized V computeIfAbsent(K, java.util.function.Function<? super K, ? extends V>);
- method public synchronized V computeIfPresent(K, java.util.function.BiFunction<? super K, ? super V, ? extends V>);
- method public synchronized boolean contains(java.lang.Object);
- method public synchronized boolean containsKey(java.lang.Object);
- method public boolean containsValue(java.lang.Object);
- method public synchronized java.util.Enumeration<V> elements();
- method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
- method public synchronized boolean equals(java.lang.Object);
- method public synchronized void forEach(java.util.function.BiConsumer<? super K, ? super V>);
- method public synchronized V get(java.lang.Object);
- method public synchronized V getOrDefault(java.lang.Object, V);
- method public synchronized int hashCode();
- method public synchronized boolean isEmpty();
+ ctor public Hashtable(java.util.Map<? extends K,? extends V>);
+ method public void clear();
+ method public Object clone();
+ method public boolean contains(Object);
+ method public boolean containsKey(Object);
+ method public boolean containsValue(Object);
+ method public java.util.Enumeration<V> elements();
+ method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+ method public V get(Object);
+ method public boolean isEmpty();
method public java.util.Set<K> keySet();
- method public synchronized java.util.Enumeration<K> keys();
- method public synchronized V merge(K, V, java.util.function.BiFunction<? super V, ? super V, ? extends V>);
- method public synchronized V put(K, V);
- method public synchronized void putAll(java.util.Map<? extends K, ? extends V>);
- method public synchronized V putIfAbsent(K, V);
+ method public java.util.Enumeration<K> keys();
+ method public V put(K, V);
+ method public void putAll(java.util.Map<? extends K,? extends V>);
method protected void rehash();
- method public synchronized V remove(java.lang.Object);
- method public synchronized boolean remove(java.lang.Object, java.lang.Object);
- method public synchronized boolean replace(K, V, V);
- method public synchronized V replace(K, V);
- method public synchronized void replaceAll(java.util.function.BiFunction<? super K, ? super V, ? extends V>);
- method public synchronized int size();
- method public synchronized java.lang.String toString();
+ method public V remove(Object);
+ method public int size();
method public java.util.Collection<V> values();
}
- public class IdentityHashMap<K, V> extends java.util.AbstractMap implements java.lang.Cloneable java.util.Map java.io.Serializable {
+ public class IdentityHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
ctor public IdentityHashMap();
ctor public IdentityHashMap(int);
- ctor public IdentityHashMap(java.util.Map<? extends K, ? extends V>);
- method public java.lang.Object clone();
- method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
+ ctor public IdentityHashMap(java.util.Map<? extends K,? extends V>);
+ method public Object clone();
+ method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
}
public class IllegalFormatCodePointException extends java.util.IllegalFormatException {
@@ -69433,8 +69444,8 @@
}
public class IllegalFormatConversionException extends java.util.IllegalFormatException {
- ctor public IllegalFormatConversionException(char, java.lang.Class<?>);
- method public java.lang.Class<?> getArgumentClass();
+ ctor public IllegalFormatConversionException(char, Class<?>);
+ method public Class<?> getArgumentClass();
method public char getConversion();
}
@@ -69442,8 +69453,8 @@
}
public class IllegalFormatFlagsException extends java.util.IllegalFormatException {
- ctor public IllegalFormatFlagsException(java.lang.String);
- method public java.lang.String getFlags();
+ ctor public IllegalFormatFlagsException(String);
+ method public String getFlags();
}
public class IllegalFormatPrecisionException extends java.util.IllegalFormatException {
@@ -69458,14 +69469,14 @@
public class IllformedLocaleException extends java.lang.RuntimeException {
ctor public IllformedLocaleException();
- ctor public IllformedLocaleException(java.lang.String);
- ctor public IllformedLocaleException(java.lang.String, int);
+ ctor public IllformedLocaleException(String);
+ ctor public IllformedLocaleException(String, int);
method public int getErrorIndex();
}
public class InputMismatchException extends java.util.NoSuchElementException {
ctor public InputMismatchException();
- ctor public InputMismatchException(java.lang.String);
+ ctor public InputMismatchException(String);
}
public class IntSummaryStatistics implements java.util.function.IntConsumer {
@@ -69480,190 +69491,186 @@
}
public class InvalidPropertiesFormatException extends java.io.IOException {
- ctor public InvalidPropertiesFormatException(java.lang.Throwable);
- ctor public InvalidPropertiesFormatException(java.lang.String);
+ ctor public InvalidPropertiesFormatException(Throwable);
+ ctor public InvalidPropertiesFormatException(String);
}
- public abstract interface Iterator<E> {
- method public default void forEachRemaining(java.util.function.Consumer<? super E>);
- method public abstract boolean hasNext();
- method public abstract E next();
+ public interface Iterator<E> {
+ method public default void forEachRemaining(@NonNull java.util.function.Consumer<? super E>);
+ method public boolean hasNext();
+ method public E next();
method public default void remove();
}
- public class LinkedHashMap<K, V> extends java.util.HashMap implements java.util.Map {
+ public class LinkedHashMap<K, V> extends java.util.HashMap<K,V> implements java.util.Map<K,V> {
ctor public LinkedHashMap(int, float);
ctor public LinkedHashMap(int);
ctor public LinkedHashMap();
- ctor public LinkedHashMap(java.util.Map<? extends K, ? extends V>);
+ ctor public LinkedHashMap(java.util.Map<? extends K,? extends V>);
ctor public LinkedHashMap(int, float, boolean);
- method protected boolean removeEldestEntry(java.util.Map.Entry<K, V>);
+ method protected boolean removeEldestEntry(java.util.Map.Entry<K,V>);
}
- public class LinkedHashSet<E> extends java.util.HashSet implements java.lang.Cloneable java.io.Serializable java.util.Set {
+ public class LinkedHashSet<E> extends java.util.HashSet<E> implements java.lang.Cloneable java.io.Serializable java.util.Set<E> {
ctor public LinkedHashSet(int, float);
ctor public LinkedHashSet(int);
ctor public LinkedHashSet();
ctor public LinkedHashSet(java.util.Collection<? extends E>);
}
- public class LinkedList<E> extends java.util.AbstractSequentialList implements java.lang.Cloneable java.util.Deque java.util.List java.io.Serializable {
+ public class LinkedList<E> extends java.util.AbstractSequentialList<E> implements java.lang.Cloneable java.util.Deque<E> java.util.List<E> java.io.Serializable {
ctor public LinkedList();
- ctor public LinkedList(java.util.Collection<? extends E>);
+ ctor public LinkedList(@NonNull java.util.Collection<? extends E>);
method public void addFirst(E);
method public void addLast(E);
- method public java.lang.Object clone();
- method public java.util.Iterator<E> descendingIterator();
+ method @NonNull public Object clone();
+ method @NonNull public java.util.Iterator<E> descendingIterator();
method public E element();
method public E getFirst();
method public E getLast();
method public boolean offer(E);
method public boolean offerFirst(E);
method public boolean offerLast(E);
- method public E peek();
- method public E peekFirst();
- method public E peekLast();
- method public E poll();
- method public E pollFirst();
- method public E pollLast();
+ method @Nullable public E peek();
+ method @Nullable public E peekFirst();
+ method @Nullable public E peekLast();
+ method @Nullable public E poll();
+ method @Nullable public E pollFirst();
+ method @Nullable public E pollLast();
method public E pop();
method public void push(E);
method public E remove();
method public E removeFirst();
- method public boolean removeFirstOccurrence(java.lang.Object);
+ method public boolean removeFirstOccurrence(@Nullable Object);
method public E removeLast();
- method public boolean removeLastOccurrence(java.lang.Object);
+ method public boolean removeLastOccurrence(@Nullable Object);
method public int size();
}
- public abstract interface List<E> implements java.util.Collection {
- method public abstract void add(int, E);
- method public abstract boolean addAll(int, java.util.Collection<? extends E>);
- method public abstract E get(int);
- method public abstract int indexOf(java.lang.Object);
- method public abstract int lastIndexOf(java.lang.Object);
- method public abstract java.util.ListIterator<E> listIterator();
- method public abstract java.util.ListIterator<E> listIterator(int);
- method public abstract E remove(int);
- method public default void replaceAll(java.util.function.UnaryOperator<E>);
- method public abstract E set(int, E);
- method public default void sort(java.util.Comparator<? super E>);
- method public abstract java.util.List<E> subList(int, int);
+ public interface List<E> extends java.util.Collection<E> {
+ method public void add(int, E);
+ method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
+ method public E get(int);
+ method public int indexOf(@Nullable Object);
+ method public int lastIndexOf(@Nullable Object);
+ method @NonNull public java.util.ListIterator<E> listIterator();
+ method @NonNull public java.util.ListIterator<E> listIterator(int);
+ method public E remove(int);
+ method public default void replaceAll(@NonNull java.util.function.UnaryOperator<E>);
+ method public E set(int, E);
+ method public default void sort(@Nullable java.util.Comparator<? super E>);
+ method @NonNull public java.util.List<E> subList(int, int);
}
- public abstract interface ListIterator<E> implements java.util.Iterator {
- method public abstract void add(E);
- method public abstract boolean hasPrevious();
- method public abstract int nextIndex();
- method public abstract E previous();
- method public abstract int previousIndex();
- method public abstract void remove();
- method public abstract void set(E);
+ public interface ListIterator<E> extends java.util.Iterator<E> {
+ method public void add(E);
+ method public boolean hasPrevious();
+ method public int nextIndex();
+ method public E previous();
+ method public int previousIndex();
+ method public void remove();
+ method public void set(E);
}
public abstract class ListResourceBundle extends java.util.ResourceBundle {
ctor public ListResourceBundle();
- method protected abstract java.lang.Object[][] getContents();
+ method protected abstract Object[][] getContents();
method public java.util.Enumeration<java.lang.String> getKeys();
- method public final java.lang.Object handleGetObject(java.lang.String);
+ method public final Object handleGetObject(String);
}
public final class Locale implements java.lang.Cloneable java.io.Serializable {
- ctor public Locale(java.lang.String, java.lang.String, java.lang.String);
- ctor public Locale(java.lang.String, java.lang.String);
- ctor public Locale(java.lang.String);
- method public java.lang.Object clone();
- method public static java.util.List<java.util.Locale> filter(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.util.Locale>, java.util.Locale.FilteringMode);
- method public static java.util.List<java.util.Locale> filter(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.util.Locale>);
- method public static java.util.List<java.lang.String> filterTags(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.lang.String>, java.util.Locale.FilteringMode);
- method public static java.util.List<java.lang.String> filterTags(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.lang.String>);
- method public static java.util.Locale forLanguageTag(java.lang.String);
+ ctor public Locale(@NonNull String, @NonNull String, @NonNull String);
+ ctor public Locale(@NonNull String, @NonNull String);
+ ctor public Locale(@NonNull String);
+ method @NonNull public Object clone();
+ method @NonNull public static java.util.List<java.util.Locale> filter(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>, @NonNull java.util.Locale.FilteringMode);
+ method @NonNull public static java.util.List<java.util.Locale> filter(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>);
+ method @NonNull public static java.util.List<java.lang.String> filterTags(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>, @NonNull java.util.Locale.FilteringMode);
+ method @NonNull public static java.util.List<java.lang.String> filterTags(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>);
+ method @NonNull public static java.util.Locale forLanguageTag(@NonNull String);
method public static java.util.Locale[] getAvailableLocales();
- method public java.lang.String getCountry();
- method public static java.util.Locale getDefault();
- method public static java.util.Locale getDefault(java.util.Locale.Category);
- method public java.lang.String getDisplayCountry();
- method public java.lang.String getDisplayCountry(java.util.Locale);
- method public java.lang.String getDisplayLanguage();
- method public java.lang.String getDisplayLanguage(java.util.Locale);
- method public java.lang.String getDisplayName();
- method public java.lang.String getDisplayName(java.util.Locale);
- method public java.lang.String getDisplayScript();
- method public java.lang.String getDisplayScript(java.util.Locale);
- method public java.lang.String getDisplayVariant();
- method public java.lang.String getDisplayVariant(java.util.Locale);
- method public java.lang.String getExtension(char);
- method public java.util.Set<java.lang.Character> getExtensionKeys();
- method public java.lang.String getISO3Country() throws java.util.MissingResourceException;
- method public java.lang.String getISO3Language() throws java.util.MissingResourceException;
- method public static java.lang.String[] getISOCountries();
- method public static java.lang.String[] getISOLanguages();
- method public java.lang.String getLanguage();
- method public java.lang.String getScript();
- method public java.util.Set<java.lang.String> getUnicodeLocaleAttributes();
- method public java.util.Set<java.lang.String> getUnicodeLocaleKeys();
- method public java.lang.String getUnicodeLocaleType(java.lang.String);
- method public java.lang.String getVariant();
+ method @NonNull public String getCountry();
+ method @NonNull public static java.util.Locale getDefault();
+ method @NonNull public static java.util.Locale getDefault(@NonNull java.util.Locale.Category);
+ method @NonNull public String getDisplayCountry();
+ method @NonNull public String getDisplayCountry(@NonNull java.util.Locale);
+ method @NonNull public String getDisplayLanguage();
+ method @NonNull public String getDisplayLanguage(@NonNull java.util.Locale);
+ method @NonNull public String getDisplayName();
+ method @NonNull public String getDisplayName(@NonNull java.util.Locale);
+ method @NonNull public String getDisplayScript();
+ method @NonNull public String getDisplayScript(@NonNull java.util.Locale);
+ method @NonNull public String getDisplayVariant();
+ method @NonNull public String getDisplayVariant(@NonNull java.util.Locale);
+ method @Nullable public String getExtension(char);
+ method @NonNull public java.util.Set<java.lang.Character> getExtensionKeys();
+ method @NonNull public String getISO3Country() throws java.util.MissingResourceException;
+ method @NonNull public String getISO3Language() throws java.util.MissingResourceException;
+ method public static String[] getISOCountries();
+ method public static String[] getISOLanguages();
+ method @NonNull public String getLanguage();
+ method @NonNull public String getScript();
+ method @NonNull public java.util.Set<java.lang.String> getUnicodeLocaleAttributes();
+ method @NonNull public java.util.Set<java.lang.String> getUnicodeLocaleKeys();
+ method @Nullable public String getUnicodeLocaleType(@NonNull String);
+ method @NonNull public String getVariant();
method public boolean hasExtensions();
- method public static java.util.Locale lookup(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.util.Locale>);
- method public static java.lang.String lookupTag(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.lang.String>);
- method public static synchronized void setDefault(java.util.Locale);
- method public static synchronized void setDefault(java.util.Locale.Category, java.util.Locale);
- method public java.util.Locale stripExtensions();
- method public java.lang.String toLanguageTag();
- field public static final java.util.Locale CANADA;
- field public static final java.util.Locale CANADA_FRENCH;
- field public static final java.util.Locale CHINA;
- field public static final java.util.Locale CHINESE;
- field public static final java.util.Locale ENGLISH;
- field public static final java.util.Locale FRANCE;
- field public static final java.util.Locale FRENCH;
- field public static final java.util.Locale GERMAN;
- field public static final java.util.Locale GERMANY;
- field public static final java.util.Locale ITALIAN;
- field public static final java.util.Locale ITALY;
- field public static final java.util.Locale JAPAN;
- field public static final java.util.Locale JAPANESE;
- field public static final java.util.Locale KOREA;
- field public static final java.util.Locale KOREAN;
- field public static final java.util.Locale PRC;
+ method @Nullable public static java.util.Locale lookup(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>);
+ method @Nullable public static String lookupTag(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>);
+ method public static void setDefault(@NonNull java.util.Locale);
+ method public static void setDefault(@NonNull java.util.Locale.Category, @NonNull java.util.Locale);
+ method @NonNull public java.util.Locale stripExtensions();
+ method @NonNull public String toLanguageTag();
+ field @NonNull public static final java.util.Locale CANADA;
+ field @NonNull public static final java.util.Locale CANADA_FRENCH;
+ field @NonNull public static final java.util.Locale CHINA;
+ field @NonNull public static final java.util.Locale CHINESE;
+ field @NonNull public static final java.util.Locale ENGLISH;
+ field @NonNull public static final java.util.Locale FRANCE;
+ field @NonNull public static final java.util.Locale FRENCH;
+ field @NonNull public static final java.util.Locale GERMAN;
+ field @NonNull public static final java.util.Locale GERMANY;
+ field @NonNull public static final java.util.Locale ITALIAN;
+ field @NonNull public static final java.util.Locale ITALY;
+ field @NonNull public static final java.util.Locale JAPAN;
+ field @NonNull public static final java.util.Locale JAPANESE;
+ field @NonNull public static final java.util.Locale KOREA;
+ field @NonNull public static final java.util.Locale KOREAN;
+ field @NonNull public static final java.util.Locale PRC;
field public static final char PRIVATE_USE_EXTENSION = 120; // 0x0078 'x'
- field public static final java.util.Locale ROOT;
- field public static final java.util.Locale SIMPLIFIED_CHINESE;
- field public static final java.util.Locale TAIWAN;
- field public static final java.util.Locale TRADITIONAL_CHINESE;
- field public static final java.util.Locale UK;
+ field @NonNull public static final java.util.Locale ROOT;
+ field @NonNull public static final java.util.Locale SIMPLIFIED_CHINESE;
+ field @NonNull public static final java.util.Locale TAIWAN;
+ field @NonNull public static final java.util.Locale TRADITIONAL_CHINESE;
+ field @NonNull public static final java.util.Locale UK;
field public static final char UNICODE_LOCALE_EXTENSION = 117; // 0x0075 'u'
- field public static final java.util.Locale US;
+ field @NonNull public static final java.util.Locale US;
}
public static final class Locale.Builder {
ctor public Locale.Builder();
- method public java.util.Locale.Builder addUnicodeLocaleAttribute(java.lang.String);
- method public java.util.Locale build();
- method public java.util.Locale.Builder clear();
- method public java.util.Locale.Builder clearExtensions();
- method public java.util.Locale.Builder removeUnicodeLocaleAttribute(java.lang.String);
- method public java.util.Locale.Builder setExtension(char, java.lang.String);
- method public java.util.Locale.Builder setLanguage(java.lang.String);
- method public java.util.Locale.Builder setLanguageTag(java.lang.String);
- method public java.util.Locale.Builder setLocale(java.util.Locale);
- method public java.util.Locale.Builder setRegion(java.lang.String);
- method public java.util.Locale.Builder setScript(java.lang.String);
- method public java.util.Locale.Builder setUnicodeLocaleKeyword(java.lang.String, java.lang.String);
- method public java.util.Locale.Builder setVariant(java.lang.String);
+ method @NonNull public java.util.Locale.Builder addUnicodeLocaleAttribute(@NonNull String);
+ method @NonNull public java.util.Locale build();
+ method @NonNull public java.util.Locale.Builder clear();
+ method @NonNull public java.util.Locale.Builder clearExtensions();
+ method @NonNull public java.util.Locale.Builder removeUnicodeLocaleAttribute(@NonNull String);
+ method @NonNull public java.util.Locale.Builder setExtension(char, @Nullable String);
+ method @NonNull public java.util.Locale.Builder setLanguage(@Nullable String);
+ method @NonNull public java.util.Locale.Builder setLanguageTag(@NonNull String);
+ method @NonNull public java.util.Locale.Builder setLocale(@NonNull java.util.Locale);
+ method @NonNull public java.util.Locale.Builder setRegion(@Nullable String);
+ method @NonNull public java.util.Locale.Builder setScript(@Nullable String);
+ method @NonNull public java.util.Locale.Builder setUnicodeLocaleKeyword(@NonNull String, @Nullable String);
+ method @NonNull public java.util.Locale.Builder setVariant(@Nullable String);
}
- public static final class Locale.Category extends java.lang.Enum {
- method public static java.util.Locale.Category valueOf(java.lang.String);
- method public static final java.util.Locale.Category[] values();
+ public enum Locale.Category {
enum_constant public static final java.util.Locale.Category DISPLAY;
enum_constant public static final java.util.Locale.Category FORMAT;
}
- public static final class Locale.FilteringMode extends java.lang.Enum {
- method public static java.util.Locale.FilteringMode valueOf(java.lang.String);
- method public static final java.util.Locale.FilteringMode[] values();
+ public enum Locale.FilteringMode {
enum_constant public static final java.util.Locale.FilteringMode AUTOSELECT_FILTERING;
enum_constant public static final java.util.Locale.FilteringMode EXTENDED_FILTERING;
enum_constant public static final java.util.Locale.FilteringMode IGNORE_EXTENDED_RANGES;
@@ -69672,13 +69679,13 @@
}
public static final class Locale.LanguageRange {
- ctor public Locale.LanguageRange(java.lang.String);
- ctor public Locale.LanguageRange(java.lang.String, double);
- method public java.lang.String getRange();
+ ctor public Locale.LanguageRange(@NonNull String);
+ ctor public Locale.LanguageRange(@NonNull String, double);
+ method @NonNull public String getRange();
method public double getWeight();
- method public static java.util.List<java.util.Locale.LanguageRange> mapEquivalents(java.util.List<java.util.Locale.LanguageRange>, java.util.Map<java.lang.String, java.util.List<java.lang.String>>);
- method public static java.util.List<java.util.Locale.LanguageRange> parse(java.lang.String);
- method public static java.util.List<java.util.Locale.LanguageRange> parse(java.lang.String, java.util.Map<java.lang.String, java.util.List<java.lang.String>>);
+ method @NonNull public static java.util.List<java.util.Locale.LanguageRange> mapEquivalents(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
+ method @NonNull public static java.util.List<java.util.Locale.LanguageRange> parse(@NonNull String);
+ method @NonNull public static java.util.List<java.util.Locale.LanguageRange> parse(@NonNull String, @NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
field public static final double MAX_WEIGHT = 1.0;
field public static final double MIN_WEIGHT = 0.0;
}
@@ -69695,147 +69702,147 @@
method public final long getSum();
}
- public abstract interface Map<K, V> {
- method public abstract void clear();
- method public default V compute(K, java.util.function.BiFunction<? super K, ? super V, ? extends V>);
- method public default V computeIfAbsent(K, java.util.function.Function<? super K, ? extends V>);
- method public default V computeIfPresent(K, java.util.function.BiFunction<? super K, ? super V, ? extends V>);
- method public abstract boolean containsKey(java.lang.Object);
- method public abstract boolean containsValue(java.lang.Object);
- method public abstract java.util.Set<java.util.Map.Entry<K, V>> entrySet();
- method public abstract boolean equals(java.lang.Object);
- method public default void forEach(java.util.function.BiConsumer<? super K, ? super V>);
- method public abstract V get(java.lang.Object);
- method public default V getOrDefault(java.lang.Object, V);
- method public abstract int hashCode();
- method public abstract boolean isEmpty();
- method public abstract java.util.Set<K> keySet();
- method public default V merge(K, V, java.util.function.BiFunction<? super V, ? super V, ? extends V>);
- method public abstract V put(K, V);
- method public abstract void putAll(java.util.Map<? extends K, ? extends V>);
- method public default V putIfAbsent(K, V);
- method public abstract V remove(java.lang.Object);
- method public default boolean remove(java.lang.Object, java.lang.Object);
- method public default boolean replace(K, V, V);
- method public default V replace(K, V);
- method public default void replaceAll(java.util.function.BiFunction<? super K, ? super V, ? extends V>);
- method public abstract int size();
- method public abstract java.util.Collection<V> values();
+ public interface Map<K, V> {
+ method public void clear();
+ method @Nullable public default V compute(K, @NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
+ method @Nullable public default V computeIfAbsent(K, @NonNull java.util.function.Function<? super K,? extends V>);
+ method @Nullable public default V computeIfPresent(K, @NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
+ method public boolean containsKey(@Nullable Object);
+ method public boolean containsValue(@Nullable Object);
+ method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+ method public boolean equals(@Nullable Object);
+ method public default void forEach(@NonNull java.util.function.BiConsumer<? super K,? super V>);
+ method @Nullable public V get(@Nullable Object);
+ method @Nullable public default V getOrDefault(@Nullable Object, @Nullable V);
+ method public int hashCode();
+ method public boolean isEmpty();
+ method @NonNull public java.util.Set<K> keySet();
+ method @Nullable public default V merge(K, @NonNull V, @NonNull java.util.function.BiFunction<? super V,? super V,? extends V>);
+ method @Nullable public V put(K, V);
+ method public void putAll(@NonNull java.util.Map<? extends K,? extends V>);
+ method @Nullable public default V putIfAbsent(K, V);
+ method @Nullable public V remove(@Nullable Object);
+ method public default boolean remove(@Nullable Object, @Nullable Object);
+ method public default boolean replace(K, @Nullable V, V);
+ method @Nullable public default V replace(K, V);
+ method public default void replaceAll(@NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
+ method public int size();
+ method @NonNull public java.util.Collection<V> values();
}
- public static abstract interface Map.Entry<K, V> {
- method public static <K extends java.lang.Comparable<? super K>, V> java.util.Comparator<java.util.Map.Entry<K, V>> comparingByKey();
- method public static <K, V> java.util.Comparator<java.util.Map.Entry<K, V>> comparingByKey(java.util.Comparator<? super K>);
- method public static <K, V extends java.lang.Comparable<? super V>> java.util.Comparator<java.util.Map.Entry<K, V>> comparingByValue();
- method public static <K, V> java.util.Comparator<java.util.Map.Entry<K, V>> comparingByValue(java.util.Comparator<? super V>);
- method public abstract boolean equals(java.lang.Object);
- method public abstract K getKey();
- method public abstract V getValue();
- method public abstract int hashCode();
- method public abstract V setValue(V);
+ public static interface Map.Entry<K, V> {
+ method @NonNull public static <K extends java.lang.Comparable<? super K>, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByKey();
+ method @NonNull public static <K, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByKey(@NonNull java.util.Comparator<? super K>);
+ method @NonNull public static <K, V extends java.lang.Comparable<? super V>> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByValue();
+ method @NonNull public static <K, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByValue(@NonNull java.util.Comparator<? super V>);
+ method public boolean equals(@Nullable Object);
+ method public K getKey();
+ method public V getValue();
+ method public int hashCode();
+ method public V setValue(V);
}
public class MissingFormatArgumentException extends java.util.IllegalFormatException {
- ctor public MissingFormatArgumentException(java.lang.String);
- method public java.lang.String getFormatSpecifier();
+ ctor public MissingFormatArgumentException(String);
+ method public String getFormatSpecifier();
}
public class MissingFormatWidthException extends java.util.IllegalFormatException {
- ctor public MissingFormatWidthException(java.lang.String);
- method public java.lang.String getFormatSpecifier();
+ ctor public MissingFormatWidthException(String);
+ method public String getFormatSpecifier();
}
public class MissingResourceException extends java.lang.RuntimeException {
- ctor public MissingResourceException(java.lang.String, java.lang.String, java.lang.String);
- method public java.lang.String getClassName();
- method public java.lang.String getKey();
+ ctor public MissingResourceException(String, String, String);
+ method public String getClassName();
+ method public String getKey();
}
- public abstract interface NavigableMap<K, V> implements java.util.SortedMap {
- method public abstract java.util.Map.Entry<K, V> ceilingEntry(K);
- method public abstract K ceilingKey(K);
- method public abstract java.util.NavigableSet<K> descendingKeySet();
- method public abstract java.util.NavigableMap<K, V> descendingMap();
- method public abstract java.util.Map.Entry<K, V> firstEntry();
- method public abstract java.util.Map.Entry<K, V> floorEntry(K);
- method public abstract K floorKey(K);
- method public abstract java.util.NavigableMap<K, V> headMap(K, boolean);
- method public abstract java.util.Map.Entry<K, V> higherEntry(K);
- method public abstract K higherKey(K);
- method public abstract java.util.Map.Entry<K, V> lastEntry();
- method public abstract java.util.Map.Entry<K, V> lowerEntry(K);
- method public abstract K lowerKey(K);
- method public abstract java.util.NavigableSet<K> navigableKeySet();
- method public abstract java.util.Map.Entry<K, V> pollFirstEntry();
- method public abstract java.util.Map.Entry<K, V> pollLastEntry();
- method public abstract java.util.NavigableMap<K, V> subMap(K, boolean, K, boolean);
- method public abstract java.util.NavigableMap<K, V> tailMap(K, boolean);
+ public interface NavigableMap<K, V> extends java.util.SortedMap<K,V> {
+ method @Nullable public java.util.Map.Entry<K,V> ceilingEntry(K);
+ method @Nullable public K ceilingKey(K);
+ method @NonNull public java.util.NavigableSet<K> descendingKeySet();
+ method @NonNull public java.util.NavigableMap<K,V> descendingMap();
+ method @Nullable public java.util.Map.Entry<K,V> firstEntry();
+ method @Nullable public java.util.Map.Entry<K,V> floorEntry(K);
+ method @Nullable public K floorKey(K);
+ method @NonNull public java.util.NavigableMap<K,V> headMap(K, boolean);
+ method @Nullable public java.util.Map.Entry<K,V> higherEntry(K);
+ method @Nullable public K higherKey(K);
+ method @Nullable public java.util.Map.Entry<K,V> lastEntry();
+ method @Nullable public java.util.Map.Entry<K,V> lowerEntry(K);
+ method @Nullable public K lowerKey(K);
+ method @NonNull public java.util.NavigableSet<K> navigableKeySet();
+ method @Nullable public java.util.Map.Entry<K,V> pollFirstEntry();
+ method @Nullable public java.util.Map.Entry<K,V> pollLastEntry();
+ method @NonNull public java.util.NavigableMap<K,V> subMap(K, boolean, K, boolean);
+ method @NonNull public java.util.NavigableMap<K,V> tailMap(K, boolean);
}
- public abstract interface NavigableSet<E> implements java.util.SortedSet {
- method public abstract E ceiling(E);
- method public abstract java.util.Iterator<E> descendingIterator();
- method public abstract java.util.NavigableSet<E> descendingSet();
- method public abstract E floor(E);
- method public abstract java.util.NavigableSet<E> headSet(E, boolean);
- method public abstract E higher(E);
- method public abstract E lower(E);
- method public abstract E pollFirst();
- method public abstract E pollLast();
- method public abstract java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
- method public abstract java.util.NavigableSet<E> tailSet(E, boolean);
+ public interface NavigableSet<E> extends java.util.SortedSet<E> {
+ method public E ceiling(E);
+ method public java.util.Iterator<E> descendingIterator();
+ method public java.util.NavigableSet<E> descendingSet();
+ method public E floor(E);
+ method public java.util.NavigableSet<E> headSet(E, boolean);
+ method public E higher(E);
+ method public E lower(E);
+ method public E pollFirst();
+ method public E pollLast();
+ method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
+ method public java.util.NavigableSet<E> tailSet(E, boolean);
}
public class NoSuchElementException extends java.lang.RuntimeException {
ctor public NoSuchElementException();
- ctor public NoSuchElementException(java.lang.String);
+ ctor public NoSuchElementException(String);
}
public final class Objects {
- method public static <T> int compare(T, T, java.util.Comparator<? super T>);
- method public static boolean deepEquals(java.lang.Object, java.lang.Object);
- method public static boolean equals(java.lang.Object, java.lang.Object);
+ method public static <T> int compare(T, T, @NonNull java.util.Comparator<? super T>);
+ method public static boolean deepEquals(@Nullable Object, @Nullable Object);
+ method public static boolean equals(@Nullable Object, @Nullable Object);
method public static int hash(java.lang.Object...);
- method public static int hashCode(java.lang.Object);
- method public static boolean isNull(java.lang.Object);
- method public static boolean nonNull(java.lang.Object);
- method public static <T> T requireNonNull(T);
- method public static <T> T requireNonNull(T, java.lang.String);
- method public static <T> T requireNonNull(T, java.util.function.Supplier<java.lang.String>);
- method public static java.lang.String toString(java.lang.Object);
- method public static java.lang.String toString(java.lang.Object, java.lang.String);
+ method public static int hashCode(@Nullable Object);
+ method public static boolean isNull(@Nullable Object);
+ method public static boolean nonNull(@Nullable Object);
+ method @NonNull public static <T> T requireNonNull(@Nullable T);
+ method @NonNull public static <T> T requireNonNull(@Nullable T, @NonNull String);
+ method @NonNull public static <T> T requireNonNull(@Nullable T, @NonNull java.util.function.Supplier<java.lang.String>);
+ method @NonNull public static String toString(@Nullable Object);
+ method @NonNull public static String toString(@Nullable Object, @NonNull String);
}
public class Observable {
ctor public Observable();
- method public synchronized void addObserver(java.util.Observer);
- method protected synchronized void clearChanged();
- method public synchronized int countObservers();
- method public synchronized void deleteObserver(java.util.Observer);
- method public synchronized void deleteObservers();
- method public synchronized boolean hasChanged();
+ method public void addObserver(java.util.Observer);
+ method protected void clearChanged();
+ method public int countObservers();
+ method public void deleteObserver(java.util.Observer);
+ method public void deleteObservers();
+ method public boolean hasChanged();
method public void notifyObservers();
- method public void notifyObservers(java.lang.Object);
- method protected synchronized void setChanged();
+ method public void notifyObservers(Object);
+ method protected void setChanged();
}
- public abstract interface Observer {
- method public abstract void update(java.util.Observable, java.lang.Object);
+ public interface Observer {
+ method public void update(java.util.Observable, Object);
}
public final class Optional<T> {
method public static <T> java.util.Optional<T> empty();
method public java.util.Optional<T> filter(java.util.function.Predicate<? super T>);
- method public <U> java.util.Optional<U> flatMap(java.util.function.Function<? super T, java.util.Optional<U>>);
+ method public <U> java.util.Optional<U> flatMap(java.util.function.Function<? super T,java.util.Optional<U>>);
method public T get();
method public void ifPresent(java.util.function.Consumer<? super T>);
method public boolean isPresent();
- method public <U> java.util.Optional<U> map(java.util.function.Function<? super T, ? extends U>);
+ method public <U> java.util.Optional<U> map(java.util.function.Function<? super T,? extends U>);
method public static <T> java.util.Optional<T> of(T);
method public static <T> java.util.Optional<T> ofNullable(T);
method public T orElse(T);
method public T orElseGet(java.util.function.Supplier<? extends T>);
- method public <X extends java.lang.Throwable> T orElseThrow(java.util.function.Supplier<? extends X>) throws java.lang.Throwable;
+ method public <X extends java.lang.Throwable> T orElseThrow(java.util.function.Supplier<? extends X>) throws X;
}
public final class OptionalDouble {
@@ -69846,7 +69853,7 @@
method public static java.util.OptionalDouble of(double);
method public double orElse(double);
method public double orElseGet(java.util.function.DoubleSupplier);
- method public <X extends java.lang.Throwable> double orElseThrow(java.util.function.Supplier<X>) throws java.lang.Throwable;
+ method public <X extends java.lang.Throwable> double orElseThrow(java.util.function.Supplier<X>) throws X;
}
public final class OptionalInt {
@@ -69857,7 +69864,7 @@
method public static java.util.OptionalInt of(int);
method public int orElse(int);
method public int orElseGet(java.util.function.IntSupplier);
- method public <X extends java.lang.Throwable> int orElseThrow(java.util.function.Supplier<X>) throws java.lang.Throwable;
+ method public <X extends java.lang.Throwable> int orElseThrow(java.util.function.Supplier<X>) throws X;
}
public final class OptionalLong {
@@ -69868,35 +69875,35 @@
method public static java.util.OptionalLong of(long);
method public long orElse(long);
method public long orElseGet(java.util.function.LongSupplier);
- method public <X extends java.lang.Throwable> long orElseThrow(java.util.function.Supplier<X>) throws java.lang.Throwable;
+ method public <X extends java.lang.Throwable> long orElseThrow(java.util.function.Supplier<X>) throws X;
}
- public abstract interface PrimitiveIterator<T, T_CONS> implements java.util.Iterator {
- method public abstract void forEachRemaining(T_CONS);
+ public interface PrimitiveIterator<T, T_CONS> extends java.util.Iterator<T> {
+ method public void forEachRemaining(T_CONS);
}
- public static abstract interface PrimitiveIterator.OfDouble implements java.util.PrimitiveIterator {
+ public static interface PrimitiveIterator.OfDouble extends java.util.PrimitiveIterator<java.lang.Double,java.util.function.DoubleConsumer> {
method public default void forEachRemaining(java.util.function.DoubleConsumer);
method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Double>);
- method public default java.lang.Double next();
- method public abstract double nextDouble();
+ method public default Double next();
+ method public double nextDouble();
}
- public static abstract interface PrimitiveIterator.OfInt implements java.util.PrimitiveIterator {
+ public static interface PrimitiveIterator.OfInt extends java.util.PrimitiveIterator<java.lang.Integer,java.util.function.IntConsumer> {
method public default void forEachRemaining(java.util.function.IntConsumer);
method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Integer>);
- method public default java.lang.Integer next();
- method public abstract int nextInt();
+ method public default Integer next();
+ method public int nextInt();
}
- public static abstract interface PrimitiveIterator.OfLong implements java.util.PrimitiveIterator {
+ public static interface PrimitiveIterator.OfLong extends java.util.PrimitiveIterator<java.lang.Long,java.util.function.LongConsumer> {
method public default void forEachRemaining(java.util.function.LongConsumer);
method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Long>);
- method public default java.lang.Long next();
- method public abstract long nextLong();
+ method public default Long next();
+ method public long nextLong();
}
- public class PriorityQueue<E> extends java.util.AbstractQueue implements java.io.Serializable {
+ public class PriorityQueue<E> extends java.util.AbstractQueue<E> implements java.io.Serializable {
ctor public PriorityQueue();
ctor public PriorityQueue(int);
ctor public PriorityQueue(java.util.Comparator<? super E>);
@@ -69913,44 +69920,44 @@
method public final java.util.Spliterator<E> spliterator();
}
- public class Properties extends java.util.Hashtable {
+ public class Properties extends java.util.Hashtable<java.lang.Object,java.lang.Object> {
ctor public Properties();
ctor public Properties(java.util.Properties);
- method public java.lang.String getProperty(java.lang.String);
- method public java.lang.String getProperty(java.lang.String, java.lang.String);
+ method public String getProperty(String);
+ method public String getProperty(String, String);
method public void list(java.io.PrintStream);
method public void list(java.io.PrintWriter);
- method public synchronized void load(java.io.Reader) throws java.io.IOException;
- method public synchronized void load(java.io.InputStream) throws java.io.IOException;
- method public synchronized void loadFromXML(java.io.InputStream) throws java.io.IOException, java.util.InvalidPropertiesFormatException;
+ method public void load(java.io.Reader) throws java.io.IOException;
+ method public void load(java.io.InputStream) throws java.io.IOException;
+ method public void loadFromXML(java.io.InputStream) throws java.io.IOException, java.util.InvalidPropertiesFormatException;
method public java.util.Enumeration<?> propertyNames();
- method public deprecated void save(java.io.OutputStream, java.lang.String);
- method public synchronized java.lang.Object setProperty(java.lang.String, java.lang.String);
- method public void store(java.io.Writer, java.lang.String) throws java.io.IOException;
- method public void store(java.io.OutputStream, java.lang.String) throws java.io.IOException;
- method public void storeToXML(java.io.OutputStream, java.lang.String) throws java.io.IOException;
- method public void storeToXML(java.io.OutputStream, java.lang.String, java.lang.String) throws java.io.IOException;
+ method @Deprecated public void save(java.io.OutputStream, String);
+ method public Object setProperty(String, String);
+ method public void store(java.io.Writer, String) throws java.io.IOException;
+ method public void store(java.io.OutputStream, String) throws java.io.IOException;
+ method public void storeToXML(java.io.OutputStream, String) throws java.io.IOException;
+ method public void storeToXML(java.io.OutputStream, String, String) throws java.io.IOException;
method public java.util.Set<java.lang.String> stringPropertyNames();
field protected java.util.Properties defaults;
}
public final class PropertyPermission extends java.security.BasicPermission {
- ctor public PropertyPermission(java.lang.String, java.lang.String);
+ ctor public PropertyPermission(String, String);
}
public class PropertyResourceBundle extends java.util.ResourceBundle {
ctor public PropertyResourceBundle(java.io.InputStream) throws java.io.IOException;
ctor public PropertyResourceBundle(java.io.Reader) throws java.io.IOException;
method public java.util.Enumeration<java.lang.String> getKeys();
- method public java.lang.Object handleGetObject(java.lang.String);
+ method public Object handleGetObject(String);
}
- public abstract interface Queue<E> implements java.util.Collection {
- method public abstract E element();
- method public abstract boolean offer(E);
- method public abstract E peek();
- method public abstract E poll();
- method public abstract E remove();
+ public interface Queue<E> extends java.util.Collection<E> {
+ method public E element();
+ method public boolean offer(E);
+ method @Nullable public E peek();
+ method @Nullable public E poll();
+ method public E remove();
}
public class Random implements java.io.Serializable {
@@ -69973,34 +69980,34 @@
method public void nextBytes(byte[]);
method public double nextDouble();
method public float nextFloat();
- method public synchronized double nextGaussian();
+ method public double nextGaussian();
method public int nextInt();
method public int nextInt(int);
method public long nextLong();
- method public synchronized void setSeed(long);
+ method public void setSeed(long);
}
- public abstract interface RandomAccess {
+ public interface RandomAccess {
}
public abstract class ResourceBundle {
ctor public ResourceBundle();
method public static final void clearCache();
- method public static final void clearCache(java.lang.ClassLoader);
- method public boolean containsKey(java.lang.String);
- method public java.lang.String getBaseBundleName();
- method public static final java.util.ResourceBundle getBundle(java.lang.String);
- method public static final java.util.ResourceBundle getBundle(java.lang.String, java.util.ResourceBundle.Control);
- method public static final java.util.ResourceBundle getBundle(java.lang.String, java.util.Locale);
- method public static final java.util.ResourceBundle getBundle(java.lang.String, java.util.Locale, java.util.ResourceBundle.Control);
- method public static java.util.ResourceBundle getBundle(java.lang.String, java.util.Locale, java.lang.ClassLoader);
- method public static java.util.ResourceBundle getBundle(java.lang.String, java.util.Locale, java.lang.ClassLoader, java.util.ResourceBundle.Control);
+ method public static final void clearCache(ClassLoader);
+ method public boolean containsKey(String);
+ method public String getBaseBundleName();
+ method public static final java.util.ResourceBundle getBundle(String);
+ method public static final java.util.ResourceBundle getBundle(String, java.util.ResourceBundle.Control);
+ method public static final java.util.ResourceBundle getBundle(String, java.util.Locale);
+ method public static final java.util.ResourceBundle getBundle(String, java.util.Locale, java.util.ResourceBundle.Control);
+ method public static java.util.ResourceBundle getBundle(String, java.util.Locale, ClassLoader);
+ method public static java.util.ResourceBundle getBundle(String, java.util.Locale, ClassLoader, java.util.ResourceBundle.Control);
method public abstract java.util.Enumeration<java.lang.String> getKeys();
method public java.util.Locale getLocale();
- method public final java.lang.Object getObject(java.lang.String);
- method public final java.lang.String getString(java.lang.String);
- method public final java.lang.String[] getStringArray(java.lang.String);
- method protected abstract java.lang.Object handleGetObject(java.lang.String);
+ method public final Object getObject(String);
+ method public final String getString(String);
+ method public final String[] getStringArray(String);
+ method protected abstract Object handleGetObject(String);
method protected java.util.Set<java.lang.String> handleKeySet();
method public java.util.Set<java.lang.String> keySet();
method protected void setParent(java.util.ResourceBundle);
@@ -70009,16 +70016,16 @@
public static class ResourceBundle.Control {
ctor protected ResourceBundle.Control();
- method public java.util.List<java.util.Locale> getCandidateLocales(java.lang.String, java.util.Locale);
+ method public java.util.List<java.util.Locale> getCandidateLocales(String, java.util.Locale);
method public static final java.util.ResourceBundle.Control getControl(java.util.List<java.lang.String>);
- method public java.util.Locale getFallbackLocale(java.lang.String, java.util.Locale);
- method public java.util.List<java.lang.String> getFormats(java.lang.String);
+ method public java.util.Locale getFallbackLocale(String, java.util.Locale);
+ method public java.util.List<java.lang.String> getFormats(String);
method public static final java.util.ResourceBundle.Control getNoFallbackControl(java.util.List<java.lang.String>);
- method public long getTimeToLive(java.lang.String, java.util.Locale);
- method public boolean needsReload(java.lang.String, java.util.Locale, java.lang.String, java.lang.ClassLoader, java.util.ResourceBundle, long);
- method public java.util.ResourceBundle newBundle(java.lang.String, java.util.Locale, java.lang.String, java.lang.ClassLoader, boolean) throws java.io.IOException, java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public java.lang.String toBundleName(java.lang.String, java.util.Locale);
- method public final java.lang.String toResourceName(java.lang.String, java.lang.String);
+ method public long getTimeToLive(String, java.util.Locale);
+ method public boolean needsReload(String, java.util.Locale, String, ClassLoader, java.util.ResourceBundle, long);
+ method public java.util.ResourceBundle newBundle(String, java.util.Locale, String, ClassLoader, boolean) throws java.io.IOException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public String toBundleName(String, java.util.Locale);
+ method public final String toResourceName(String, String);
field public static final java.util.List<java.lang.String> FORMAT_CLASS;
field public static final java.util.List<java.lang.String> FORMAT_DEFAULT;
field public static final java.util.List<java.lang.String> FORMAT_PROPERTIES;
@@ -70026,25 +70033,25 @@
field public static final long TTL_NO_EXPIRATION_CONTROL = -2L; // 0xfffffffffffffffeL
}
- public final class Scanner implements java.io.Closeable java.util.Iterator {
- ctor public Scanner(java.lang.Readable);
+ public final class Scanner implements java.io.Closeable java.util.Iterator<java.lang.String> {
+ ctor public Scanner(Readable);
ctor public Scanner(java.io.InputStream);
- ctor public Scanner(java.io.InputStream, java.lang.String);
+ ctor public Scanner(java.io.InputStream, String);
ctor public Scanner(java.io.File) throws java.io.FileNotFoundException;
- ctor public Scanner(java.io.File, java.lang.String) throws java.io.FileNotFoundException;
+ ctor public Scanner(java.io.File, String) throws java.io.FileNotFoundException;
ctor public Scanner(java.nio.file.Path) throws java.io.IOException;
- ctor public Scanner(java.nio.file.Path, java.lang.String) throws java.io.IOException;
- ctor public Scanner(java.lang.String);
+ ctor public Scanner(java.nio.file.Path, String) throws java.io.IOException;
+ ctor public Scanner(String);
ctor public Scanner(java.nio.channels.ReadableByteChannel);
- ctor public Scanner(java.nio.channels.ReadableByteChannel, java.lang.String);
+ ctor public Scanner(java.nio.channels.ReadableByteChannel, String);
method public void close();
method public java.util.regex.Pattern delimiter();
- method public java.lang.String findInLine(java.lang.String);
- method public java.lang.String findInLine(java.util.regex.Pattern);
- method public java.lang.String findWithinHorizon(java.lang.String, int);
- method public java.lang.String findWithinHorizon(java.util.regex.Pattern, int);
+ method public String findInLine(String);
+ method public String findInLine(java.util.regex.Pattern);
+ method public String findWithinHorizon(String, int);
+ method public String findWithinHorizon(java.util.regex.Pattern, int);
method public boolean hasNext();
- method public boolean hasNext(java.lang.String);
+ method public boolean hasNext(String);
method public boolean hasNext(java.util.regex.Pattern);
method public boolean hasNextBigDecimal();
method public boolean hasNextBigInteger();
@@ -70064,9 +70071,9 @@
method public java.io.IOException ioException();
method public java.util.Locale locale();
method public java.util.regex.MatchResult match();
- method public java.lang.String next();
- method public java.lang.String next(java.lang.String);
- method public java.lang.String next(java.util.regex.Pattern);
+ method public String next();
+ method public String next(String);
+ method public String next(java.util.regex.Pattern);
method public java.math.BigDecimal nextBigDecimal();
method public java.math.BigInteger nextBigInteger();
method public java.math.BigInteger nextBigInteger(int);
@@ -70077,7 +70084,7 @@
method public float nextFloat();
method public int nextInt();
method public int nextInt(int);
- method public java.lang.String nextLine();
+ method public String nextLine();
method public long nextLong();
method public long nextLong(int);
method public short nextShort();
@@ -70085,37 +70092,36 @@
method public int radix();
method public java.util.Scanner reset();
method public java.util.Scanner skip(java.util.regex.Pattern);
- method public java.util.Scanner skip(java.lang.String);
+ method public java.util.Scanner skip(String);
method public java.util.Scanner useDelimiter(java.util.regex.Pattern);
- method public java.util.Scanner useDelimiter(java.lang.String);
+ method public java.util.Scanner useDelimiter(String);
method public java.util.Scanner useLocale(java.util.Locale);
method public java.util.Scanner useRadix(int);
}
public class ServiceConfigurationError extends java.lang.Error {
- ctor public ServiceConfigurationError(java.lang.String);
- ctor public ServiceConfigurationError(java.lang.String, java.lang.Throwable);
+ ctor public ServiceConfigurationError(String);
+ ctor public ServiceConfigurationError(String, Throwable);
}
- public final class ServiceLoader<S> implements java.lang.Iterable {
+ public final class ServiceLoader<S> implements java.lang.Iterable<S> {
method public java.util.Iterator<S> iterator();
- method public static <S> java.util.ServiceLoader<S> load(java.lang.Class<S>, java.lang.ClassLoader);
- method public static <S> java.util.ServiceLoader<S> load(java.lang.Class<S>);
- method public static <S> java.util.ServiceLoader<S> loadInstalled(java.lang.Class<S>);
+ method public static <S> java.util.ServiceLoader<S> load(Class<S>, ClassLoader);
+ method public static <S> java.util.ServiceLoader<S> load(Class<S>);
+ method public static <S> java.util.ServiceLoader<S> loadInstalled(Class<S>);
method public void reload();
}
- public abstract interface Set<E> implements java.util.Collection {
+ public interface Set<E> extends java.util.Collection<E> {
}
public class SimpleTimeZone extends java.util.TimeZone {
- ctor public SimpleTimeZone(int, java.lang.String);
- ctor public SimpleTimeZone(int, java.lang.String, int, int, int, int, int, int, int, int);
- ctor public SimpleTimeZone(int, java.lang.String, int, int, int, int, int, int, int, int, int);
- ctor public SimpleTimeZone(int, java.lang.String, int, int, int, int, int, int, int, int, int, int, int);
+ ctor public SimpleTimeZone(int, String);
+ ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int);
+ ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int, int);
+ ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int, int, int, int);
method public int getOffset(int, int, int, int, int, int);
method public int getRawOffset();
- method public synchronized int hashCode();
method public boolean inDaylightTime(java.util.Date);
method public void setDSTSavings(int);
method public void setEndRule(int, int, int, int);
@@ -70132,33 +70138,33 @@
field public static final int WALL_TIME = 0; // 0x0
}
- public abstract interface SortedMap<K, V> implements java.util.Map {
- method public abstract java.util.Comparator<? super K> comparator();
- method public abstract K firstKey();
- method public abstract java.util.SortedMap<K, V> headMap(K);
- method public abstract K lastKey();
- method public abstract java.util.SortedMap<K, V> subMap(K, K);
- method public abstract java.util.SortedMap<K, V> tailMap(K);
+ public interface SortedMap<K, V> extends java.util.Map<K,V> {
+ method @Nullable public java.util.Comparator<? super K> comparator();
+ method public K firstKey();
+ method @NonNull public java.util.SortedMap<K,V> headMap(K);
+ method public K lastKey();
+ method @NonNull public java.util.SortedMap<K,V> subMap(K, K);
+ method @NonNull public java.util.SortedMap<K,V> tailMap(K);
}
- public abstract interface SortedSet<E> implements java.util.Set {
- method public abstract java.util.Comparator<? super E> comparator();
- method public abstract E first();
- method public abstract java.util.SortedSet<E> headSet(E);
- method public abstract E last();
- method public abstract java.util.SortedSet<E> subSet(E, E);
- method public abstract java.util.SortedSet<E> tailSet(E);
+ public interface SortedSet<E> extends java.util.Set<E> {
+ method public java.util.Comparator<? super E> comparator();
+ method public E first();
+ method public java.util.SortedSet<E> headSet(E);
+ method public E last();
+ method public java.util.SortedSet<E> subSet(E, E);
+ method public java.util.SortedSet<E> tailSet(E);
}
- public abstract interface Spliterator<T> {
- method public abstract int characteristics();
- method public abstract long estimateSize();
+ public interface Spliterator<T> {
+ method public int characteristics();
+ method public long estimateSize();
method public default void forEachRemaining(java.util.function.Consumer<? super T>);
method public default java.util.Comparator<? super T> getComparator();
method public default long getExactSizeIfKnown();
method public default boolean hasCharacteristics(int);
- method public abstract boolean tryAdvance(java.util.function.Consumer<? super T>);
- method public abstract java.util.Spliterator<T> trySplit();
+ method public boolean tryAdvance(java.util.function.Consumer<? super T>);
+ method public java.util.Spliterator<T> trySplit();
field public static final int CONCURRENT = 4096; // 0x1000
field public static final int DISTINCT = 1; // 0x1
field public static final int IMMUTABLE = 1024; // 0x400
@@ -70169,34 +70175,34 @@
field public static final int SUBSIZED = 16384; // 0x4000
}
- public static abstract interface Spliterator.OfDouble implements java.util.Spliterator.OfPrimitive {
+ public static interface Spliterator.OfDouble extends java.util.Spliterator.OfPrimitive<java.lang.Double,java.util.function.DoubleConsumer,java.util.Spliterator.OfDouble> {
method public default void forEachRemaining(java.util.function.DoubleConsumer);
method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Double>);
- method public abstract boolean tryAdvance(java.util.function.DoubleConsumer);
+ method public boolean tryAdvance(java.util.function.DoubleConsumer);
method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Double>);
- method public abstract java.util.Spliterator.OfDouble trySplit();
+ method public java.util.Spliterator.OfDouble trySplit();
}
- public static abstract interface Spliterator.OfInt implements java.util.Spliterator.OfPrimitive {
+ public static interface Spliterator.OfInt extends java.util.Spliterator.OfPrimitive<java.lang.Integer,java.util.function.IntConsumer,java.util.Spliterator.OfInt> {
method public default void forEachRemaining(java.util.function.IntConsumer);
method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Integer>);
- method public abstract boolean tryAdvance(java.util.function.IntConsumer);
+ method public boolean tryAdvance(java.util.function.IntConsumer);
method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Integer>);
- method public abstract java.util.Spliterator.OfInt trySplit();
+ method public java.util.Spliterator.OfInt trySplit();
}
- public static abstract interface Spliterator.OfLong implements java.util.Spliterator.OfPrimitive {
+ public static interface Spliterator.OfLong extends java.util.Spliterator.OfPrimitive<java.lang.Long,java.util.function.LongConsumer,java.util.Spliterator.OfLong> {
method public default void forEachRemaining(java.util.function.LongConsumer);
method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Long>);
- method public abstract boolean tryAdvance(java.util.function.LongConsumer);
+ method public boolean tryAdvance(java.util.function.LongConsumer);
method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Long>);
- method public abstract java.util.Spliterator.OfLong trySplit();
+ method public java.util.Spliterator.OfLong trySplit();
}
- public static abstract interface Spliterator.OfPrimitive<T, T_CONS, T_SPLITR extends java.util.Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>> implements java.util.Spliterator {
+ public static interface Spliterator.OfPrimitive<T, T_CONS, T_SPLITR extends java.util.Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>> extends java.util.Spliterator<T> {
method public default void forEachRemaining(T_CONS);
- method public abstract boolean tryAdvance(T_CONS);
- method public abstract T_SPLITR trySplit();
+ method public boolean tryAdvance(T_CONS);
+ method public T_SPLITR trySplit();
}
public final class Spliterators {
@@ -70208,8 +70214,8 @@
method public static java.util.PrimitiveIterator.OfInt iterator(java.util.Spliterator.OfInt);
method public static java.util.PrimitiveIterator.OfLong iterator(java.util.Spliterator.OfLong);
method public static java.util.PrimitiveIterator.OfDouble iterator(java.util.Spliterator.OfDouble);
- method public static <T> java.util.Spliterator<T> spliterator(java.lang.Object[], int);
- method public static <T> java.util.Spliterator<T> spliterator(java.lang.Object[], int, int, int);
+ method public static <T> java.util.Spliterator<T> spliterator(Object[], int);
+ method public static <T> java.util.Spliterator<T> spliterator(Object[], int, int, int);
method public static java.util.Spliterator.OfInt spliterator(int[], int);
method public static java.util.Spliterator.OfInt spliterator(int[], int, int, int);
method public static java.util.Spliterator.OfLong spliterator(long[], int);
@@ -70227,28 +70233,28 @@
method public static java.util.Spliterator.OfDouble spliteratorUnknownSize(java.util.PrimitiveIterator.OfDouble, int);
}
- public static abstract class Spliterators.AbstractDoubleSpliterator implements java.util.Spliterator.OfDouble {
+ public abstract static class Spliterators.AbstractDoubleSpliterator implements java.util.Spliterator.OfDouble {
ctor protected Spliterators.AbstractDoubleSpliterator(long, int);
method public int characteristics();
method public long estimateSize();
method public java.util.Spliterator.OfDouble trySplit();
}
- public static abstract class Spliterators.AbstractIntSpliterator implements java.util.Spliterator.OfInt {
+ public abstract static class Spliterators.AbstractIntSpliterator implements java.util.Spliterator.OfInt {
ctor protected Spliterators.AbstractIntSpliterator(long, int);
method public int characteristics();
method public long estimateSize();
method public java.util.Spliterator.OfInt trySplit();
}
- public static abstract class Spliterators.AbstractLongSpliterator implements java.util.Spliterator.OfLong {
+ public abstract static class Spliterators.AbstractLongSpliterator implements java.util.Spliterator.OfLong {
ctor protected Spliterators.AbstractLongSpliterator(long, int);
method public int characteristics();
method public long estimateSize();
method public java.util.Spliterator.OfLong trySplit();
}
- public static abstract class Spliterators.AbstractSpliterator<T> implements java.util.Spliterator {
+ public abstract static class Spliterators.AbstractSpliterator<T> implements java.util.Spliterator<T> {
ctor protected Spliterators.AbstractSpliterator(long, int);
method public int characteristics();
method public long estimateSize();
@@ -70283,58 +70289,58 @@
method public java.util.SplittableRandom split();
}
- public class Stack<E> extends java.util.Vector {
+ public class Stack<E> extends java.util.Vector<E> {
ctor public Stack();
method public boolean empty();
- method public synchronized E peek();
- method public synchronized E pop();
+ method public E peek();
+ method public E pop();
method public E push(E);
- method public synchronized int search(java.lang.Object);
+ method public int search(Object);
}
public final class StringJoiner {
- ctor public StringJoiner(java.lang.CharSequence);
- ctor public StringJoiner(java.lang.CharSequence, java.lang.CharSequence, java.lang.CharSequence);
- method public java.util.StringJoiner add(java.lang.CharSequence);
+ ctor public StringJoiner(CharSequence);
+ ctor public StringJoiner(CharSequence, CharSequence, CharSequence);
+ method public java.util.StringJoiner add(CharSequence);
method public int length();
method public java.util.StringJoiner merge(java.util.StringJoiner);
- method public java.util.StringJoiner setEmptyValue(java.lang.CharSequence);
+ method public java.util.StringJoiner setEmptyValue(CharSequence);
}
- public class StringTokenizer implements java.util.Enumeration {
- ctor public StringTokenizer(java.lang.String, java.lang.String, boolean);
- ctor public StringTokenizer(java.lang.String, java.lang.String);
- ctor public StringTokenizer(java.lang.String);
+ public class StringTokenizer implements java.util.Enumeration<java.lang.Object> {
+ ctor public StringTokenizer(String, String, boolean);
+ ctor public StringTokenizer(String, String);
+ ctor public StringTokenizer(String);
method public int countTokens();
method public boolean hasMoreElements();
method public boolean hasMoreTokens();
- method public java.lang.Object nextElement();
- method public java.lang.String nextToken();
- method public java.lang.String nextToken(java.lang.String);
+ method public Object nextElement();
+ method public String nextToken();
+ method public String nextToken(String);
}
public abstract class TimeZone implements java.lang.Cloneable java.io.Serializable {
ctor public TimeZone();
- method public java.lang.Object clone();
- method public static synchronized java.lang.String[] getAvailableIDs(int);
- method public static synchronized java.lang.String[] getAvailableIDs();
+ method public Object clone();
+ method public static String[] getAvailableIDs(int);
+ method public static String[] getAvailableIDs();
method public int getDSTSavings();
method public static java.util.TimeZone getDefault();
- method public final java.lang.String getDisplayName();
- method public final java.lang.String getDisplayName(java.util.Locale);
- method public final java.lang.String getDisplayName(boolean, int);
- method public java.lang.String getDisplayName(boolean, int, java.util.Locale);
- method public java.lang.String getID();
+ method public final String getDisplayName();
+ method public final String getDisplayName(java.util.Locale);
+ method public final String getDisplayName(boolean, int);
+ method public String getDisplayName(boolean, int, java.util.Locale);
+ method public String getID();
method public abstract int getOffset(int, int, int, int, int, int);
method public int getOffset(long);
method public abstract int getRawOffset();
- method public static synchronized java.util.TimeZone getTimeZone(java.lang.String);
+ method public static java.util.TimeZone getTimeZone(String);
method public static java.util.TimeZone getTimeZone(java.time.ZoneId);
method public boolean hasSameRules(java.util.TimeZone);
method public abstract boolean inDaylightTime(java.util.Date);
method public boolean observesDaylightTime();
- method public static synchronized void setDefault(java.util.TimeZone);
- method public void setID(java.lang.String);
+ method public static void setDefault(java.util.TimeZone);
+ method public void setID(String);
method public abstract void setRawOffset(int);
method public java.time.ZoneId toZoneId();
method public abstract boolean useDaylightTime();
@@ -70345,8 +70351,8 @@
public class Timer {
ctor public Timer();
ctor public Timer(boolean);
- ctor public Timer(java.lang.String);
- ctor public Timer(java.lang.String, boolean);
+ ctor public Timer(String);
+ ctor public Timer(String, boolean);
method public void cancel();
method public int purge();
method public void schedule(java.util.TimerTask, long);
@@ -70365,49 +70371,49 @@
public class TooManyListenersException extends java.lang.Exception {
ctor public TooManyListenersException();
- ctor public TooManyListenersException(java.lang.String);
+ ctor public TooManyListenersException(String);
}
- public class TreeMap<K, V> extends java.util.AbstractMap implements java.lang.Cloneable java.util.NavigableMap java.io.Serializable {
+ public class TreeMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.NavigableMap<K,V> java.io.Serializable {
ctor public TreeMap();
- ctor public TreeMap(java.util.Comparator<? super K>);
- ctor public TreeMap(java.util.Map<? extends K, ? extends V>);
- ctor public TreeMap(java.util.SortedMap<K, ? extends V>);
- method public java.util.Map.Entry<K, V> ceilingEntry(K);
- method public K ceilingKey(K);
- method public java.lang.Object clone();
- method public java.util.Comparator<? super K> comparator();
- method public java.util.NavigableSet<K> descendingKeySet();
- method public java.util.NavigableMap<K, V> descendingMap();
- method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
- method public java.util.Map.Entry<K, V> firstEntry();
+ ctor public TreeMap(@Nullable java.util.Comparator<? super K>);
+ ctor public TreeMap(@NonNull java.util.Map<? extends K,? extends V>);
+ ctor public TreeMap(@NonNull java.util.SortedMap<K,? extends V>);
+ method @Nullable public java.util.Map.Entry<K,V> ceilingEntry(K);
+ method @Nullable public K ceilingKey(K);
+ method @NonNull public Object clone();
+ method @Nullable public java.util.Comparator<? super K> comparator();
+ method @NonNull public java.util.NavigableSet<K> descendingKeySet();
+ method @NonNull public java.util.NavigableMap<K,V> descendingMap();
+ method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+ method @Nullable public java.util.Map.Entry<K,V> firstEntry();
method public K firstKey();
- method public java.util.Map.Entry<K, V> floorEntry(K);
- method public K floorKey(K);
- method public java.util.NavigableMap<K, V> headMap(K, boolean);
- method public java.util.SortedMap<K, V> headMap(K);
- method public java.util.Map.Entry<K, V> higherEntry(K);
- method public K higherKey(K);
- method public java.util.Map.Entry<K, V> lastEntry();
+ method @Nullable public java.util.Map.Entry<K,V> floorEntry(K);
+ method @Nullable public K floorKey(K);
+ method @NonNull public java.util.NavigableMap<K,V> headMap(K, boolean);
+ method @NonNull public java.util.SortedMap<K,V> headMap(K);
+ method @Nullable public java.util.Map.Entry<K,V> higherEntry(K);
+ method @Nullable public K higherKey(K);
+ method @Nullable public java.util.Map.Entry<K,V> lastEntry();
method public K lastKey();
- method public java.util.Map.Entry<K, V> lowerEntry(K);
- method public K lowerKey(K);
- method public java.util.NavigableSet<K> navigableKeySet();
- method public java.util.Map.Entry<K, V> pollFirstEntry();
- method public java.util.Map.Entry<K, V> pollLastEntry();
- method public java.util.NavigableMap<K, V> subMap(K, boolean, K, boolean);
- method public java.util.SortedMap<K, V> subMap(K, K);
- method public java.util.NavigableMap<K, V> tailMap(K, boolean);
- method public java.util.SortedMap<K, V> tailMap(K);
+ method @Nullable public java.util.Map.Entry<K,V> lowerEntry(K);
+ method @Nullable public K lowerKey(K);
+ method @NonNull public java.util.NavigableSet<K> navigableKeySet();
+ method @Nullable public java.util.Map.Entry<K,V> pollFirstEntry();
+ method @Nullable public java.util.Map.Entry<K,V> pollLastEntry();
+ method @NonNull public java.util.NavigableMap<K,V> subMap(K, boolean, K, boolean);
+ method @NonNull public java.util.SortedMap<K,V> subMap(K, K);
+ method @NonNull public java.util.NavigableMap<K,V> tailMap(K, boolean);
+ method @NonNull public java.util.SortedMap<K,V> tailMap(K);
}
- public class TreeSet<E> extends java.util.AbstractSet implements java.lang.Cloneable java.util.NavigableSet java.io.Serializable {
+ public class TreeSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.util.NavigableSet<E> java.io.Serializable {
ctor public TreeSet();
ctor public TreeSet(java.util.Comparator<? super E>);
ctor public TreeSet(java.util.Collection<? extends E>);
ctor public TreeSet(java.util.SortedSet<E>);
method public E ceiling(E);
- method public java.lang.Object clone();
+ method public Object clone();
method public java.util.Comparator<? super E> comparator();
method public java.util.Iterator<E> descendingIterator();
method public java.util.NavigableSet<E> descendingSet();
@@ -70428,11 +70434,11 @@
method public java.util.SortedSet<E> tailSet(E);
}
- public final class UUID implements java.lang.Comparable java.io.Serializable {
+ public final class UUID implements java.lang.Comparable<java.util.UUID> java.io.Serializable {
ctor public UUID(long, long);
method public int clockSequence();
method public int compareTo(java.util.UUID);
- method public static java.util.UUID fromString(java.lang.String);
+ method public static java.util.UUID fromString(String);
method public long getLeastSignificantBits();
method public long getMostSignificantBits();
method public static java.util.UUID nameUUIDFromBytes(byte[]);
@@ -70444,75 +70450,52 @@
}
public class UnknownFormatConversionException extends java.util.IllegalFormatException {
- ctor public UnknownFormatConversionException(java.lang.String);
- method public java.lang.String getConversion();
+ ctor public UnknownFormatConversionException(String);
+ method public String getConversion();
}
public class UnknownFormatFlagsException extends java.util.IllegalFormatException {
- ctor public UnknownFormatFlagsException(java.lang.String);
- method public java.lang.String getFlags();
+ ctor public UnknownFormatFlagsException(String);
+ method public String getFlags();
}
- public class Vector<E> extends java.util.AbstractList implements java.lang.Cloneable java.util.List java.util.RandomAccess java.io.Serializable {
+ public class Vector<E> extends java.util.AbstractList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
ctor public Vector(int, int);
ctor public Vector(int);
ctor public Vector();
- ctor public Vector(java.util.Collection<? extends E>);
- method public synchronized boolean add(E);
- method public synchronized boolean addAll(java.util.Collection<? extends E>);
- method public synchronized boolean addAll(int, java.util.Collection<? extends E>);
- method public synchronized void addElement(E);
- method public synchronized int capacity();
- method public synchronized java.lang.Object clone();
- method public synchronized boolean containsAll(java.util.Collection<?>);
- method public synchronized void copyInto(java.lang.Object[]);
- method public synchronized E elementAt(int);
- method public java.util.Enumeration<E> elements();
- method public synchronized void ensureCapacity(int);
- method public synchronized boolean equals(java.lang.Object);
- method public synchronized E firstElement();
- method public synchronized void forEach(java.util.function.Consumer<? super E>);
- method public synchronized E get(int);
- method public synchronized int hashCode();
- method public synchronized int indexOf(java.lang.Object, int);
- method public synchronized void insertElementAt(E, int);
- method public synchronized boolean isEmpty();
- method public synchronized java.util.Iterator<E> iterator();
- method public synchronized E lastElement();
- method public synchronized int lastIndexOf(java.lang.Object);
- method public synchronized int lastIndexOf(java.lang.Object, int);
- method public synchronized java.util.ListIterator<E> listIterator(int);
- method public synchronized java.util.ListIterator<E> listIterator();
- method public synchronized E remove(int);
- method public synchronized boolean removeAll(java.util.Collection<?>);
- method public synchronized void removeAllElements();
- method public synchronized boolean removeElement(java.lang.Object);
- method public synchronized void removeElementAt(int);
- method public synchronized boolean removeIf(java.util.function.Predicate<? super E>);
- method protected synchronized void removeRange(int, int);
- method public synchronized void replaceAll(java.util.function.UnaryOperator<E>);
- method public synchronized boolean retainAll(java.util.Collection<?>);
- method public synchronized E set(int, E);
- method public synchronized void setElementAt(E, int);
- method public synchronized void setSize(int);
- method public synchronized int size();
- method public synchronized void sort(java.util.Comparator<? super E>);
- method public synchronized java.util.List<E> subList(int, int);
- method public synchronized java.lang.Object[] toArray();
- method public synchronized <T> T[] toArray(T[]);
- method public synchronized java.lang.String toString();
- method public synchronized void trimToSize();
+ ctor public Vector(@NonNull java.util.Collection<? extends E>);
+ method public void addElement(E);
+ method public int capacity();
+ method @NonNull public Object clone();
+ method public void copyInto(Object[]);
+ method public E elementAt(int);
+ method @NonNull public java.util.Enumeration<E> elements();
+ method public void ensureCapacity(int);
+ method public E firstElement();
+ method public void forEach(@NonNull java.util.function.Consumer<? super E>);
+ method public E get(int);
+ method public int indexOf(@Nullable Object, int);
+ method public void insertElementAt(E, int);
+ method public E lastElement();
+ method public int lastIndexOf(@Nullable Object, int);
+ method public void removeAllElements();
+ method public boolean removeElement(@Nullable Object);
+ method public void removeElementAt(int);
+ method public void setElementAt(E, int);
+ method public void setSize(int);
+ method public int size();
+ method public void trimToSize();
field protected int capacityIncrement;
field protected int elementCount;
- field protected java.lang.Object[] elementData;
+ field protected Object[] elementData;
}
- public class WeakHashMap<K, V> extends java.util.AbstractMap implements java.util.Map {
+ public class WeakHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.util.Map<K,V> {
ctor public WeakHashMap(int, float);
ctor public WeakHashMap(int);
ctor public WeakHashMap();
- ctor public WeakHashMap(java.util.Map<? extends K, ? extends V>);
- method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
+ ctor public WeakHashMap(@NonNull java.util.Map<? extends K,? extends V>);
+ method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
}
}
@@ -70525,14 +70508,14 @@
method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
- method protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(java.lang.Runnable, T);
+ method protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(Runnable, T);
method protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(java.util.concurrent.Callable<T>);
- method public java.util.concurrent.Future<?> submit(java.lang.Runnable);
- method public <T> java.util.concurrent.Future<T> submit(java.lang.Runnable, T);
+ method public java.util.concurrent.Future<?> submit(Runnable);
+ method public <T> java.util.concurrent.Future<T> submit(Runnable, T);
method public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T>);
}
- public class ArrayBlockingQueue<E> extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue java.io.Serializable {
+ public class ArrayBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
ctor public ArrayBlockingQueue(int);
ctor public ArrayBlockingQueue(int, boolean);
ctor public ArrayBlockingQueue(int, boolean, java.util.Collection<? extends E>);
@@ -70550,221 +70533,231 @@
method public E take() throws java.lang.InterruptedException;
}
- public abstract interface BlockingDeque<E> implements java.util.concurrent.BlockingQueue java.util.Deque {
- method public abstract boolean offerFirst(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract boolean offerLast(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract E pollFirst(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract E pollLast(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract void putFirst(E) throws java.lang.InterruptedException;
- method public abstract void putLast(E) throws java.lang.InterruptedException;
- method public abstract E takeFirst() throws java.lang.InterruptedException;
- method public abstract E takeLast() throws java.lang.InterruptedException;
+ public interface BlockingDeque<E> extends java.util.concurrent.BlockingQueue<E> java.util.Deque<E> {
+ method public boolean offerFirst(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public boolean offerLast(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public E pollFirst(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public E pollLast(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public void putFirst(E) throws java.lang.InterruptedException;
+ method public void putLast(E) throws java.lang.InterruptedException;
+ method public E takeFirst() throws java.lang.InterruptedException;
+ method public E takeLast() throws java.lang.InterruptedException;
}
- public abstract interface BlockingQueue<E> implements java.util.Queue {
- method public abstract int drainTo(java.util.Collection<? super E>);
- method public abstract int drainTo(java.util.Collection<? super E>, int);
- method public abstract boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract void put(E) throws java.lang.InterruptedException;
- method public abstract int remainingCapacity();
- method public abstract E take() throws java.lang.InterruptedException;
+ public interface BlockingQueue<E> extends java.util.Queue<E> {
+ method public int drainTo(java.util.Collection<? super E>);
+ method public int drainTo(java.util.Collection<? super E>, int);
+ method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public void put(E) throws java.lang.InterruptedException;
+ method public int remainingCapacity();
+ method public E take() throws java.lang.InterruptedException;
}
public class BrokenBarrierException extends java.lang.Exception {
ctor public BrokenBarrierException();
- ctor public BrokenBarrierException(java.lang.String);
+ ctor public BrokenBarrierException(String);
}
- public abstract interface Callable<V> {
- method public abstract V call() throws java.lang.Exception;
+ @java.lang.FunctionalInterface public interface Callable<V> {
+ method public V call() throws java.lang.Exception;
}
public class CancellationException extends java.lang.IllegalStateException {
ctor public CancellationException();
- ctor public CancellationException(java.lang.String);
+ ctor public CancellationException(String);
}
- public class CompletableFuture<T> implements java.util.concurrent.CompletionStage java.util.concurrent.Future {
+ public class CompletableFuture<T> implements java.util.concurrent.CompletionStage<T> java.util.concurrent.Future<T> {
ctor public CompletableFuture();
method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
method public static java.util.concurrent.CompletableFuture<java.lang.Void> allOf(java.util.concurrent.CompletableFuture<?>...);
method public static java.util.concurrent.CompletableFuture<java.lang.Object> anyOf(java.util.concurrent.CompletableFuture<?>...);
- method public <U> java.util.concurrent.CompletableFuture<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T, U>);
- method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T, U>);
- method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T, U>, java.util.concurrent.Executor);
+ method public <U> java.util.concurrent.CompletableFuture<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
+ method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
+ method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>, java.util.concurrent.Executor);
method public boolean cancel(boolean);
method public boolean complete(T);
- method public boolean completeExceptionally(java.lang.Throwable);
+ method public boolean completeExceptionally(Throwable);
method public static <U> java.util.concurrent.CompletableFuture<U> completedFuture(U);
- method public java.util.concurrent.CompletableFuture<T> exceptionally(java.util.function.Function<java.lang.Throwable, ? extends T>);
+ method public java.util.concurrent.CompletableFuture<T> exceptionally(java.util.function.Function<java.lang.Throwable,? extends T>);
method public T get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
method public T get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
method public T getNow(T);
method public int getNumberOfDependents();
- method public <U> java.util.concurrent.CompletableFuture<U> handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>);
- method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>);
- method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>, java.util.concurrent.Executor);
+ method public <U> java.util.concurrent.CompletableFuture<U> handle(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
+ method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
+ method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>, java.util.concurrent.Executor);
method public boolean isCancelled();
method public boolean isCompletedExceptionally();
method public boolean isDone();
method public T join();
- method public void obtrudeException(java.lang.Throwable);
+ method public void obtrudeException(Throwable);
method public void obtrudeValue(T);
- method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, java.lang.Runnable);
- method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, java.lang.Runnable);
- method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, java.lang.Runnable, java.util.concurrent.Executor);
- method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, java.lang.Runnable);
- method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, java.lang.Runnable);
- method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, java.lang.Runnable, java.util.concurrent.Executor);
- method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(java.lang.Runnable);
- method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(java.lang.Runnable, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, Runnable);
+ method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable);
+ method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, Runnable);
+ method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable);
+ method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
+ method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(Runnable);
+ method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(Runnable, java.util.concurrent.Executor);
method public static <U> java.util.concurrent.CompletableFuture<U> supplyAsync(java.util.function.Supplier<U>);
method public static <U> java.util.concurrent.CompletableFuture<U> supplyAsync(java.util.function.Supplier<U>, java.util.concurrent.Executor);
method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAccept(java.util.function.Consumer<? super T>);
method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>);
method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
- method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T, ? super U>);
- method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T, ? super U>);
- method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T, ? super U>, java.util.concurrent.Executor);
- method public <U> java.util.concurrent.CompletableFuture<U> thenApply(java.util.function.Function<? super T, ? extends U>);
- method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T, ? extends U>);
- method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T, ? extends U>, java.util.concurrent.Executor);
- method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T, ? super U, ? extends V>);
- method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T, ? super U, ? extends V>);
- method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T, ? super U, ? extends V>, java.util.concurrent.Executor);
- method public <U> java.util.concurrent.CompletableFuture<U> thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>);
- method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>);
- method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
- method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRun(java.lang.Runnable);
- method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(java.lang.Runnable);
- method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(java.lang.Runnable, java.util.concurrent.Executor);
+ method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
+ method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
+ method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>, java.util.concurrent.Executor);
+ method public <U> java.util.concurrent.CompletableFuture<U> thenApply(java.util.function.Function<? super T,? extends U>);
+ method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>);
+ method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>, java.util.concurrent.Executor);
+ method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
+ method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
+ method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>, java.util.concurrent.Executor);
+ method public <U> java.util.concurrent.CompletableFuture<U> thenCompose(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
+ method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
+ method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRun(Runnable);
+ method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(Runnable);
+ method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(Runnable, java.util.concurrent.Executor);
method public java.util.concurrent.CompletableFuture<T> toCompletableFuture();
- method public java.util.concurrent.CompletableFuture<T> whenComplete(java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
- method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
- method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletableFuture<T> whenComplete(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
+ method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
+ method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>, java.util.concurrent.Executor);
}
- public static abstract interface CompletableFuture.AsynchronousCompletionTask {
+ public static interface CompletableFuture.AsynchronousCompletionTask {
}
public class CompletionException extends java.lang.RuntimeException {
ctor protected CompletionException();
- ctor protected CompletionException(java.lang.String);
- ctor public CompletionException(java.lang.String, java.lang.Throwable);
- ctor public CompletionException(java.lang.Throwable);
+ ctor protected CompletionException(String);
+ ctor public CompletionException(String, Throwable);
+ ctor public CompletionException(Throwable);
}
- public abstract interface CompletionService<V> {
- method public abstract java.util.concurrent.Future<V> poll();
- method public abstract java.util.concurrent.Future<V> poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract java.util.concurrent.Future<V> submit(java.util.concurrent.Callable<V>);
- method public abstract java.util.concurrent.Future<V> submit(java.lang.Runnable, V);
- method public abstract java.util.concurrent.Future<V> take() throws java.lang.InterruptedException;
+ public interface CompletionService<V> {
+ method public java.util.concurrent.Future<V> poll();
+ method public java.util.concurrent.Future<V> poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public java.util.concurrent.Future<V> submit(java.util.concurrent.Callable<V>);
+ method public java.util.concurrent.Future<V> submit(Runnable, V);
+ method public java.util.concurrent.Future<V> take() throws java.lang.InterruptedException;
}
- public abstract interface CompletionStage<T> {
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
- method public abstract <U> java.util.concurrent.CompletionStage<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T, U>);
- method public abstract <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T, U>);
- method public abstract <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T, U>, java.util.concurrent.Executor);
- method public abstract java.util.concurrent.CompletionStage<T> exceptionally(java.util.function.Function<java.lang.Throwable, ? extends T>);
- method public abstract <U> java.util.concurrent.CompletionStage<U> handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>);
- method public abstract <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>);
- method public abstract <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>, java.util.concurrent.Executor);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, java.lang.Runnable);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, java.lang.Runnable);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, java.lang.Runnable, java.util.concurrent.Executor);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, java.lang.Runnable);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, java.lang.Runnable);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, java.lang.Runnable, java.util.concurrent.Executor);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenAccept(java.util.function.Consumer<? super T>);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
- method public abstract <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T, ? super U>);
- method public abstract <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T, ? super U>);
- method public abstract <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T, ? super U>, java.util.concurrent.Executor);
- method public abstract <U> java.util.concurrent.CompletionStage<U> thenApply(java.util.function.Function<? super T, ? extends U>);
- method public abstract <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T, ? extends U>);
- method public abstract <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T, ? extends U>, java.util.concurrent.Executor);
- method public abstract <U, V> java.util.concurrent.CompletionStage<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T, ? super U, ? extends V>);
- method public abstract <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T, ? super U, ? extends V>);
- method public abstract <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T, ? super U, ? extends V>, java.util.concurrent.Executor);
- method public abstract <U> java.util.concurrent.CompletionStage<U> thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>);
- method public abstract <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>);
- method public abstract <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenRun(java.lang.Runnable);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(java.lang.Runnable);
- method public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(java.lang.Runnable, java.util.concurrent.Executor);
- method public abstract java.util.concurrent.CompletableFuture<T> toCompletableFuture();
- method public abstract java.util.concurrent.CompletionStage<T> whenComplete(java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
- method public abstract java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>);
- method public abstract java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T, ? super java.lang.Throwable>, java.util.concurrent.Executor);
+ public interface CompletionStage<T> {
+ method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
+ method public <U> java.util.concurrent.CompletionStage<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
+ method public <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
+ method public <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletionStage<T> exceptionally(java.util.function.Function<java.lang.Throwable,? extends T>);
+ method public <U> java.util.concurrent.CompletionStage<U> handle(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
+ method public <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
+ method public <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, Runnable);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, Runnable);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> thenAccept(java.util.function.Consumer<? super T>);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
+ method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
+ method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
+ method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>, java.util.concurrent.Executor);
+ method public <U> java.util.concurrent.CompletionStage<U> thenApply(java.util.function.Function<? super T,? extends U>);
+ method public <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>);
+ method public <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>, java.util.concurrent.Executor);
+ method public <U, V> java.util.concurrent.CompletionStage<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
+ method public <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
+ method public <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>, java.util.concurrent.Executor);
+ method public <U> java.util.concurrent.CompletionStage<U> thenCompose(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
+ method public <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
+ method public <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> thenRun(Runnable);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(Runnable);
+ method public java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(Runnable, java.util.concurrent.Executor);
+ method public java.util.concurrent.CompletableFuture<T> toCompletableFuture();
+ method public java.util.concurrent.CompletionStage<T> whenComplete(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
+ method public java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
+ method public java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>, java.util.concurrent.Executor);
}
- public class ConcurrentHashMap<K, V> extends java.util.AbstractMap implements java.util.concurrent.ConcurrentMap java.io.Serializable {
+ public class ConcurrentHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.util.concurrent.ConcurrentMap<K,V> java.io.Serializable {
ctor public ConcurrentHashMap();
ctor public ConcurrentHashMap(int);
- ctor public ConcurrentHashMap(java.util.Map<? extends K, ? extends V>);
+ ctor public ConcurrentHashMap(@NonNull java.util.Map<? extends K,? extends V>);
ctor public ConcurrentHashMap(int, float);
ctor public ConcurrentHashMap(int, float, int);
- method public boolean contains(java.lang.Object);
- method public java.util.Enumeration<V> elements();
- method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
- method public void forEach(long, java.util.function.BiConsumer<? super K, ? super V>);
- method public <U> void forEach(long, java.util.function.BiFunction<? super K, ? super V, ? extends U>, java.util.function.Consumer<? super U>);
- method public void forEachEntry(long, java.util.function.Consumer<? super java.util.Map.Entry<K, V>>);
- method public <U> void forEachEntry(long, java.util.function.Function<java.util.Map.Entry<K, V>, ? extends U>, java.util.function.Consumer<? super U>);
- method public void forEachKey(long, java.util.function.Consumer<? super K>);
- method public <U> void forEachKey(long, java.util.function.Function<? super K, ? extends U>, java.util.function.Consumer<? super U>);
- method public void forEachValue(long, java.util.function.Consumer<? super V>);
- method public <U> void forEachValue(long, java.util.function.Function<? super V, ? extends U>, java.util.function.Consumer<? super U>);
- method public java.util.concurrent.ConcurrentHashMap.KeySetView<K, V> keySet(V);
- method public java.util.Enumeration<K> keys();
+ method public boolean contains(@NonNull Object);
+ method @NonNull public java.util.Enumeration<V> elements();
+ method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+ method public void forEach(long, @NonNull java.util.function.BiConsumer<? super K,? super V>);
+ method public <U> void forEach(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>, @NonNull java.util.function.Consumer<? super U>);
+ method public void forEachEntry(long, @NonNull java.util.function.Consumer<? super java.util.Map.Entry<K,V>>);
+ method public <U> void forEachEntry(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>, @NonNull java.util.function.Consumer<? super U>);
+ method public void forEachKey(long, @NonNull java.util.function.Consumer<? super K>);
+ method public <U> void forEachKey(long, @NonNull java.util.function.Function<? super K,? extends U>, @NonNull java.util.function.Consumer<? super U>);
+ method public void forEachValue(long, @NonNull java.util.function.Consumer<? super V>);
+ method public <U> void forEachValue(long, @NonNull java.util.function.Function<? super V,? extends U>, @NonNull java.util.function.Consumer<? super U>);
+ method @NonNull public java.util.concurrent.ConcurrentHashMap.KeySetView<K,V> keySet(@NonNull V);
+ method @NonNull public java.util.Enumeration<K> keys();
method public long mappingCount();
- method public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K, java.lang.Boolean> newKeySet();
- method public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K, java.lang.Boolean> newKeySet(int);
- method public <U> U reduce(long, java.util.function.BiFunction<? super K, ? super V, ? extends U>, java.util.function.BiFunction<? super U, ? super U, ? extends U>);
- method public java.util.Map.Entry<K, V> reduceEntries(long, java.util.function.BiFunction<java.util.Map.Entry<K, V>, java.util.Map.Entry<K, V>, ? extends java.util.Map.Entry<K, V>>);
- method public <U> U reduceEntries(long, java.util.function.Function<java.util.Map.Entry<K, V>, ? extends U>, java.util.function.BiFunction<? super U, ? super U, ? extends U>);
- method public double reduceEntriesToDouble(long, java.util.function.ToDoubleFunction<java.util.Map.Entry<K, V>>, double, java.util.function.DoubleBinaryOperator);
- method public int reduceEntriesToInt(long, java.util.function.ToIntFunction<java.util.Map.Entry<K, V>>, int, java.util.function.IntBinaryOperator);
- method public long reduceEntriesToLong(long, java.util.function.ToLongFunction<java.util.Map.Entry<K, V>>, long, java.util.function.LongBinaryOperator);
- method public K reduceKeys(long, java.util.function.BiFunction<? super K, ? super K, ? extends K>);
- method public <U> U reduceKeys(long, java.util.function.Function<? super K, ? extends U>, java.util.function.BiFunction<? super U, ? super U, ? extends U>);
- method public double reduceKeysToDouble(long, java.util.function.ToDoubleFunction<? super K>, double, java.util.function.DoubleBinaryOperator);
- method public int reduceKeysToInt(long, java.util.function.ToIntFunction<? super K>, int, java.util.function.IntBinaryOperator);
- method public long reduceKeysToLong(long, java.util.function.ToLongFunction<? super K>, long, java.util.function.LongBinaryOperator);
- method public double reduceToDouble(long, java.util.function.ToDoubleBiFunction<? super K, ? super V>, double, java.util.function.DoubleBinaryOperator);
- method public int reduceToInt(long, java.util.function.ToIntBiFunction<? super K, ? super V>, int, java.util.function.IntBinaryOperator);
- method public long reduceToLong(long, java.util.function.ToLongBiFunction<? super K, ? super V>, long, java.util.function.LongBinaryOperator);
- method public V reduceValues(long, java.util.function.BiFunction<? super V, ? super V, ? extends V>);
- method public <U> U reduceValues(long, java.util.function.Function<? super V, ? extends U>, java.util.function.BiFunction<? super U, ? super U, ? extends U>);
- method public double reduceValuesToDouble(long, java.util.function.ToDoubleFunction<? super V>, double, java.util.function.DoubleBinaryOperator);
- method public int reduceValuesToInt(long, java.util.function.ToIntFunction<? super V>, int, java.util.function.IntBinaryOperator);
- method public long reduceValuesToLong(long, java.util.function.ToLongFunction<? super V>, long, java.util.function.LongBinaryOperator);
- method public <U> U search(long, java.util.function.BiFunction<? super K, ? super V, ? extends U>);
- method public <U> U searchEntries(long, java.util.function.Function<java.util.Map.Entry<K, V>, ? extends U>);
- method public <U> U searchKeys(long, java.util.function.Function<? super K, ? extends U>);
- method public <U> U searchValues(long, java.util.function.Function<? super V, ? extends U>);
+ method @NonNull public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K,java.lang.Boolean> newKeySet();
+ method @NonNull public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K,java.lang.Boolean> newKeySet(int);
+ method @Nullable public <U> U reduce(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
+ method @Nullable public java.util.Map.Entry<K,V> reduceEntries(long, @NonNull java.util.function.BiFunction<java.util.Map.Entry<K,V>,java.util.Map.Entry<K,V>,? extends java.util.Map.Entry<K,V>>);
+ method @Nullable public <U> U reduceEntries(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
+ method public double reduceEntriesToDouble(long, @NonNull java.util.function.ToDoubleFunction<java.util.Map.Entry<K,V>>, double, @NonNull java.util.function.DoubleBinaryOperator);
+ method public int reduceEntriesToInt(long, @NonNull java.util.function.ToIntFunction<java.util.Map.Entry<K,V>>, int, @NonNull java.util.function.IntBinaryOperator);
+ method public long reduceEntriesToLong(long, @NonNull java.util.function.ToLongFunction<java.util.Map.Entry<K,V>>, long, @NonNull java.util.function.LongBinaryOperator);
+ method @Nullable public K reduceKeys(long, @NonNull java.util.function.BiFunction<? super K,? super K,? extends K>);
+ method @Nullable public <U> U reduceKeys(long, @NonNull java.util.function.Function<? super K,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
+ method public double reduceKeysToDouble(long, @NonNull java.util.function.ToDoubleFunction<? super K>, double, @NonNull java.util.function.DoubleBinaryOperator);
+ method public int reduceKeysToInt(long, @NonNull java.util.function.ToIntFunction<? super K>, int, @NonNull java.util.function.IntBinaryOperator);
+ method public long reduceKeysToLong(long, @NonNull java.util.function.ToLongFunction<? super K>, long, @NonNull java.util.function.LongBinaryOperator);
+ method public double reduceToDouble(long, @NonNull java.util.function.ToDoubleBiFunction<? super K,? super V>, double, @NonNull java.util.function.DoubleBinaryOperator);
+ method public int reduceToInt(long, @NonNull java.util.function.ToIntBiFunction<? super K,? super V>, int, @NonNull java.util.function.IntBinaryOperator);
+ method public long reduceToLong(long, @NonNull java.util.function.ToLongBiFunction<? super K,? super V>, long, @NonNull java.util.function.LongBinaryOperator);
+ method @Nullable public V reduceValues(long, @NonNull java.util.function.BiFunction<? super V,? super V,? extends V>);
+ method @Nullable public <U> U reduceValues(long, @NonNull java.util.function.Function<? super V,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
+ method public double reduceValuesToDouble(long, @NonNull java.util.function.ToDoubleFunction<? super V>, double, @NonNull java.util.function.DoubleBinaryOperator);
+ method public int reduceValuesToInt(long, @NonNull java.util.function.ToIntFunction<? super V>, int, @NonNull java.util.function.IntBinaryOperator);
+ method public long reduceValuesToLong(long, @NonNull java.util.function.ToLongFunction<? super V>, long, @NonNull java.util.function.LongBinaryOperator);
+ method @Nullable public <U> U search(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>);
+ method @Nullable public <U> U searchEntries(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>);
+ method @Nullable public <U> U searchKeys(long, @NonNull java.util.function.Function<? super K,? extends U>);
+ method @Nullable public <U> U searchValues(long, @NonNull java.util.function.Function<? super V,? extends U>);
}
- public static class ConcurrentHashMap.KeySetView<K, V> implements java.util.Collection java.io.Serializable java.util.Set {
- method public boolean add(K);
- method public boolean addAll(java.util.Collection<? extends K>);
- method public boolean contains(java.lang.Object);
- method public void forEach(java.util.function.Consumer<? super K>);
- method public V getMappedValue();
- method public java.util.Iterator<K> iterator();
- method public boolean remove(java.lang.Object);
- method public java.util.Spliterator<K> spliterator();
+ public static class ConcurrentHashMap.KeySetView<K, V> implements java.util.Collection<K> java.io.Serializable java.util.Set<K> {
+ method public boolean add(@NonNull K);
+ method public boolean addAll(@NonNull java.util.Collection<? extends K>);
+ method public final void clear();
+ method public boolean contains(@NonNull Object);
+ method public final boolean containsAll(java.util.Collection<?>);
+ method public void forEach(@NonNull java.util.function.Consumer<? super K>);
+ method public java.util.concurrent.ConcurrentHashMap<K,V> getMap();
+ method @Nullable public V getMappedValue();
+ method public final boolean isEmpty();
+ method @NonNull public java.util.Iterator<K> iterator();
+ method public boolean remove(@NonNull Object);
+ method public final boolean removeAll(java.util.Collection<?>);
+ method public final boolean retainAll(java.util.Collection<?>);
+ method public final int size();
+ method @NonNull public java.util.Spliterator<K> spliterator();
+ method public final Object[] toArray();
+ method public final <T> T[] toArray(T[]);
+ method public final String toString();
}
- public class ConcurrentLinkedDeque<E> extends java.util.AbstractCollection implements java.util.Deque java.io.Serializable {
+ public class ConcurrentLinkedDeque<E> extends java.util.AbstractCollection<E> implements java.util.Deque<E> java.io.Serializable {
ctor public ConcurrentLinkedDeque();
ctor public ConcurrentLinkedDeque(java.util.Collection<? extends E>);
method public void addFirst(E);
@@ -70787,13 +70780,13 @@
method public void push(E);
method public E remove();
method public E removeFirst();
- method public boolean removeFirstOccurrence(java.lang.Object);
+ method public boolean removeFirstOccurrence(Object);
method public E removeLast();
- method public boolean removeLastOccurrence(java.lang.Object);
+ method public boolean removeLastOccurrence(Object);
method public int size();
}
- public class ConcurrentLinkedQueue<E> extends java.util.AbstractQueue implements java.util.Queue java.io.Serializable {
+ public class ConcurrentLinkedQueue<E> extends java.util.AbstractQueue<E> implements java.util.Queue<E> java.io.Serializable {
ctor public ConcurrentLinkedQueue();
ctor public ConcurrentLinkedQueue(java.util.Collection<? extends E>);
method public java.util.Iterator<E> iterator();
@@ -70803,59 +70796,59 @@
method public int size();
}
- public abstract interface ConcurrentMap<K, V> implements java.util.Map {
- method public abstract V putIfAbsent(K, V);
- method public abstract boolean remove(java.lang.Object, java.lang.Object);
- method public abstract boolean replace(K, V, V);
- method public abstract V replace(K, V);
+ public interface ConcurrentMap<K, V> extends java.util.Map<K,V> {
+ method public V putIfAbsent(K, V);
+ method public boolean remove(Object, Object);
+ method public boolean replace(K, V, V);
+ method public V replace(K, V);
}
- public abstract interface ConcurrentNavigableMap<K, V> implements java.util.concurrent.ConcurrentMap java.util.NavigableMap {
- method public abstract java.util.concurrent.ConcurrentNavigableMap<K, V> descendingMap();
- method public abstract java.util.concurrent.ConcurrentNavigableMap<K, V> headMap(K, boolean);
- method public abstract java.util.concurrent.ConcurrentNavigableMap<K, V> headMap(K);
- method public abstract java.util.NavigableSet<K> keySet();
- method public abstract java.util.concurrent.ConcurrentNavigableMap<K, V> subMap(K, boolean, K, boolean);
- method public abstract java.util.concurrent.ConcurrentNavigableMap<K, V> subMap(K, K);
- method public abstract java.util.concurrent.ConcurrentNavigableMap<K, V> tailMap(K, boolean);
- method public abstract java.util.concurrent.ConcurrentNavigableMap<K, V> tailMap(K);
+ public interface ConcurrentNavigableMap<K, V> extends java.util.concurrent.ConcurrentMap<K,V> java.util.NavigableMap<K,V> {
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> descendingMap();
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K, boolean);
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K);
+ method public java.util.NavigableSet<K> keySet();
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, boolean, K, boolean);
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, K);
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K, boolean);
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K);
}
- public class ConcurrentSkipListMap<K, V> extends java.util.AbstractMap implements java.lang.Cloneable java.util.concurrent.ConcurrentNavigableMap java.io.Serializable {
+ public class ConcurrentSkipListMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.concurrent.ConcurrentNavigableMap<K,V> java.io.Serializable {
ctor public ConcurrentSkipListMap();
ctor public ConcurrentSkipListMap(java.util.Comparator<? super K>);
- ctor public ConcurrentSkipListMap(java.util.Map<? extends K, ? extends V>);
- ctor public ConcurrentSkipListMap(java.util.SortedMap<K, ? extends V>);
- method public java.util.Map.Entry<K, V> ceilingEntry(K);
+ ctor public ConcurrentSkipListMap(java.util.Map<? extends K,? extends V>);
+ ctor public ConcurrentSkipListMap(java.util.SortedMap<K,? extends V>);
+ method public java.util.Map.Entry<K,V> ceilingEntry(K);
method public K ceilingKey(K);
- method public java.util.concurrent.ConcurrentSkipListMap<K, V> clone();
+ method public java.util.concurrent.ConcurrentSkipListMap<K,V> clone();
method public java.util.Comparator<? super K> comparator();
method public java.util.NavigableSet<K> descendingKeySet();
- method public java.util.concurrent.ConcurrentNavigableMap<K, V> descendingMap();
- method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
- method public java.util.Map.Entry<K, V> firstEntry();
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> descendingMap();
+ method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+ method public java.util.Map.Entry<K,V> firstEntry();
method public K firstKey();
- method public java.util.Map.Entry<K, V> floorEntry(K);
+ method public java.util.Map.Entry<K,V> floorEntry(K);
method public K floorKey(K);
- method public java.util.concurrent.ConcurrentNavigableMap<K, V> headMap(K, boolean);
- method public java.util.concurrent.ConcurrentNavigableMap<K, V> headMap(K);
- method public java.util.Map.Entry<K, V> higherEntry(K);
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K, boolean);
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K);
+ method public java.util.Map.Entry<K,V> higherEntry(K);
method public K higherKey(K);
method public java.util.NavigableSet<K> keySet();
- method public java.util.Map.Entry<K, V> lastEntry();
+ method public java.util.Map.Entry<K,V> lastEntry();
method public K lastKey();
- method public java.util.Map.Entry<K, V> lowerEntry(K);
+ method public java.util.Map.Entry<K,V> lowerEntry(K);
method public K lowerKey(K);
method public java.util.NavigableSet<K> navigableKeySet();
- method public java.util.Map.Entry<K, V> pollFirstEntry();
- method public java.util.Map.Entry<K, V> pollLastEntry();
- method public java.util.concurrent.ConcurrentNavigableMap<K, V> subMap(K, boolean, K, boolean);
- method public java.util.concurrent.ConcurrentNavigableMap<K, V> subMap(K, K);
- method public java.util.concurrent.ConcurrentNavigableMap<K, V> tailMap(K, boolean);
- method public java.util.concurrent.ConcurrentNavigableMap<K, V> tailMap(K);
+ method public java.util.Map.Entry<K,V> pollFirstEntry();
+ method public java.util.Map.Entry<K,V> pollLastEntry();
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, boolean, K, boolean);
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, K);
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K, boolean);
+ method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K);
}
- public class ConcurrentSkipListSet<E> extends java.util.AbstractSet implements java.lang.Cloneable java.util.NavigableSet java.io.Serializable {
+ public class ConcurrentSkipListSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.util.NavigableSet<E> java.io.Serializable {
ctor public ConcurrentSkipListSet();
ctor public ConcurrentSkipListSet(java.util.Comparator<? super E>);
ctor public ConcurrentSkipListSet(java.util.Collection<? extends E>);
@@ -70882,42 +70875,42 @@
method public java.util.NavigableSet<E> tailSet(E);
}
- public class CopyOnWriteArrayList<E> implements java.lang.Cloneable java.util.List java.util.RandomAccess java.io.Serializable {
+ public class CopyOnWriteArrayList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
ctor public CopyOnWriteArrayList();
- ctor public CopyOnWriteArrayList(java.util.Collection<? extends E>);
+ ctor public CopyOnWriteArrayList(@NonNull java.util.Collection<? extends E>);
ctor public CopyOnWriteArrayList(E[]);
method public boolean add(E);
method public void add(int, E);
- method public boolean addAll(java.util.Collection<? extends E>);
- method public boolean addAll(int, java.util.Collection<? extends E>);
- method public int addAllAbsent(java.util.Collection<? extends E>);
+ method public boolean addAll(@NonNull java.util.Collection<? extends E>);
+ method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
+ method public int addAllAbsent(@NonNull java.util.Collection<? extends E>);
method public boolean addIfAbsent(E);
method public void clear();
- method public java.lang.Object clone();
- method public boolean contains(java.lang.Object);
- method public boolean containsAll(java.util.Collection<?>);
- method public void forEach(java.util.function.Consumer<? super E>);
+ method @NonNull public Object clone();
+ method public boolean contains(@Nullable Object);
+ method public boolean containsAll(@NonNull java.util.Collection<?>);
+ method public void forEach(@NonNull java.util.function.Consumer<? super E>);
method public E get(int);
- method public int indexOf(java.lang.Object);
- method public int indexOf(E, int);
+ method public int indexOf(@Nullable Object);
+ method public int indexOf(@Nullable E, int);
method public boolean isEmpty();
- method public java.util.Iterator<E> iterator();
- method public int lastIndexOf(java.lang.Object);
- method public int lastIndexOf(E, int);
- method public java.util.ListIterator<E> listIterator();
- method public java.util.ListIterator<E> listIterator(int);
+ method @NonNull public java.util.Iterator<E> iterator();
+ method public int lastIndexOf(@Nullable Object);
+ method public int lastIndexOf(@Nullable E, int);
+ method @NonNull public java.util.ListIterator<E> listIterator();
+ method @NonNull public java.util.ListIterator<E> listIterator(int);
method public E remove(int);
- method public boolean remove(java.lang.Object);
- method public boolean removeAll(java.util.Collection<?>);
- method public boolean retainAll(java.util.Collection<?>);
+ method public boolean remove(@Nullable Object);
+ method public boolean removeAll(@NonNull java.util.Collection<?>);
+ method public boolean retainAll(@NonNull java.util.Collection<?>);
method public E set(int, E);
method public int size();
- method public java.util.List<E> subList(int, int);
- method public java.lang.Object[] toArray();
+ method @NonNull public java.util.List<E> subList(int, int);
+ method public Object[] toArray();
method public <T> T[] toArray(T[]);
}
- public class CopyOnWriteArraySet<E> extends java.util.AbstractSet implements java.io.Serializable {
+ public class CopyOnWriteArraySet<E> extends java.util.AbstractSet<E> implements java.io.Serializable {
ctor public CopyOnWriteArraySet();
ctor public CopyOnWriteArraySet(java.util.Collection<? extends E>);
method public void forEach(java.util.function.Consumer<? super E>);
@@ -70933,7 +70926,7 @@
method public long getCount();
}
- public abstract class CountedCompleter<T> extends java.util.concurrent.ForkJoinTask {
+ public abstract class CountedCompleter<T> extends java.util.concurrent.ForkJoinTask<T> {
ctor protected CountedCompleter(java.util.concurrent.CountedCompleter<?>, int);
ctor protected CountedCompleter(java.util.concurrent.CountedCompleter<?>);
ctor protected CountedCompleter();
@@ -70951,7 +70944,7 @@
method public final void helpComplete(int);
method public final java.util.concurrent.CountedCompleter<?> nextComplete();
method public void onCompletion(java.util.concurrent.CountedCompleter<?>);
- method public boolean onExceptionalCompletion(java.lang.Throwable, java.util.concurrent.CountedCompleter<?>);
+ method public boolean onExceptionalCompletion(Throwable, java.util.concurrent.CountedCompleter<?>);
method public final void propagateCompletion();
method public final void quietlyCompleteRoot();
method public final void setPendingCount(int);
@@ -70960,7 +70953,7 @@
}
public class CyclicBarrier {
- ctor public CyclicBarrier(int, java.lang.Runnable);
+ ctor public CyclicBarrier(int, Runnable);
ctor public CyclicBarrier(int);
method public int await() throws java.util.concurrent.BrokenBarrierException, java.lang.InterruptedException;
method public int await(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.BrokenBarrierException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
@@ -70970,7 +70963,7 @@
method public void reset();
}
- public class DelayQueue<E extends java.util.concurrent.Delayed> extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue {
+ public class DelayQueue<E extends java.util.concurrent.Delayed> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> {
ctor public DelayQueue();
ctor public DelayQueue(java.util.Collection<? extends E>);
method public int drainTo(java.util.Collection<? super E>);
@@ -70987,8 +70980,8 @@
method public E take() throws java.lang.InterruptedException;
}
- public abstract interface Delayed implements java.lang.Comparable {
- method public abstract long getDelay(java.util.concurrent.TimeUnit);
+ public interface Delayed extends java.lang.Comparable<java.util.concurrent.Delayed> {
+ method public long getDelay(java.util.concurrent.TimeUnit);
}
public class Exchanger<V> {
@@ -70999,43 +70992,43 @@
public class ExecutionException extends java.lang.Exception {
ctor protected ExecutionException();
- ctor protected ExecutionException(java.lang.String);
- ctor public ExecutionException(java.lang.String, java.lang.Throwable);
- ctor public ExecutionException(java.lang.Throwable);
+ ctor protected ExecutionException(String);
+ ctor public ExecutionException(String, Throwable);
+ ctor public ExecutionException(Throwable);
}
- public abstract interface Executor {
- method public abstract void execute(java.lang.Runnable);
+ public interface Executor {
+ method public void execute(Runnable);
}
- public class ExecutorCompletionService<V> implements java.util.concurrent.CompletionService {
+ public class ExecutorCompletionService<V> implements java.util.concurrent.CompletionService<V> {
ctor public ExecutorCompletionService(java.util.concurrent.Executor);
ctor public ExecutorCompletionService(java.util.concurrent.Executor, java.util.concurrent.BlockingQueue<java.util.concurrent.Future<V>>);
method public java.util.concurrent.Future<V> poll();
method public java.util.concurrent.Future<V> poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
method public java.util.concurrent.Future<V> submit(java.util.concurrent.Callable<V>);
- method public java.util.concurrent.Future<V> submit(java.lang.Runnable, V);
+ method public java.util.concurrent.Future<V> submit(Runnable, V);
method public java.util.concurrent.Future<V> take() throws java.lang.InterruptedException;
}
- public abstract interface ExecutorService implements java.util.concurrent.Executor {
- method public abstract boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.lang.InterruptedException;
- method public abstract <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
- method public abstract <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
- method public abstract boolean isShutdown();
- method public abstract boolean isTerminated();
- method public abstract void shutdown();
- method public abstract java.util.List<java.lang.Runnable> shutdownNow();
- method public abstract <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T>);
- method public abstract <T> java.util.concurrent.Future<T> submit(java.lang.Runnable, T);
- method public abstract java.util.concurrent.Future<?> submit(java.lang.Runnable);
+ public interface ExecutorService extends java.util.concurrent.Executor {
+ method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.lang.InterruptedException;
+ method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+ method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+ method public boolean isShutdown();
+ method public boolean isTerminated();
+ method public void shutdown();
+ method public java.util.List<java.lang.Runnable> shutdownNow();
+ method public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T>);
+ method public <T> java.util.concurrent.Future<T> submit(Runnable, T);
+ method public java.util.concurrent.Future<?> submit(Runnable);
}
public class Executors {
- method public static <T> java.util.concurrent.Callable<T> callable(java.lang.Runnable, T);
- method public static java.util.concurrent.Callable<java.lang.Object> callable(java.lang.Runnable);
+ method public static <T> java.util.concurrent.Callable<T> callable(Runnable, T);
+ method public static java.util.concurrent.Callable<java.lang.Object> callable(Runnable);
method public static java.util.concurrent.Callable<java.lang.Object> callable(java.security.PrivilegedAction<?>);
method public static java.util.concurrent.Callable<java.lang.Object> callable(java.security.PrivilegedExceptionAction<?>);
method public static java.util.concurrent.ThreadFactory defaultThreadFactory();
@@ -71067,7 +71060,7 @@
method public static java.util.concurrent.ForkJoinPool commonPool();
method protected int drainTasksTo(java.util.Collection<? super java.util.concurrent.ForkJoinTask<?>>);
method public void execute(java.util.concurrent.ForkJoinTask<?>);
- method public void execute(java.lang.Runnable);
+ method public void execute(Runnable);
method public int getActiveThreadCount();
method public boolean getAsyncMode();
method public static int getCommonPoolParallelism();
@@ -71092,34 +71085,34 @@
method public java.util.List<java.lang.Runnable> shutdownNow();
method public <T> java.util.concurrent.ForkJoinTask<T> submit(java.util.concurrent.ForkJoinTask<T>);
method public <T> java.util.concurrent.ForkJoinTask<T> submit(java.util.concurrent.Callable<T>);
- method public <T> java.util.concurrent.ForkJoinTask<T> submit(java.lang.Runnable, T);
- method public java.util.concurrent.ForkJoinTask<?> submit(java.lang.Runnable);
+ method public <T> java.util.concurrent.ForkJoinTask<T> submit(Runnable, T);
+ method public java.util.concurrent.ForkJoinTask<?> submit(Runnable);
field public static final java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory defaultForkJoinWorkerThreadFactory;
}
- public static abstract interface ForkJoinPool.ForkJoinWorkerThreadFactory {
- method public abstract java.util.concurrent.ForkJoinWorkerThread newThread(java.util.concurrent.ForkJoinPool);
+ public static interface ForkJoinPool.ForkJoinWorkerThreadFactory {
+ method public java.util.concurrent.ForkJoinWorkerThread newThread(java.util.concurrent.ForkJoinPool);
}
- public static abstract interface ForkJoinPool.ManagedBlocker {
- method public abstract boolean block() throws java.lang.InterruptedException;
- method public abstract boolean isReleasable();
+ public static interface ForkJoinPool.ManagedBlocker {
+ method public boolean block() throws java.lang.InterruptedException;
+ method public boolean isReleasable();
}
- public abstract class ForkJoinTask<V> implements java.util.concurrent.Future java.io.Serializable {
+ public abstract class ForkJoinTask<V> implements java.util.concurrent.Future<V> java.io.Serializable {
ctor public ForkJoinTask();
- method public static java.util.concurrent.ForkJoinTask<?> adapt(java.lang.Runnable);
- method public static <T> java.util.concurrent.ForkJoinTask<T> adapt(java.lang.Runnable, T);
+ method public static java.util.concurrent.ForkJoinTask<?> adapt(Runnable);
+ method public static <T> java.util.concurrent.ForkJoinTask<T> adapt(Runnable, T);
method public static <T> java.util.concurrent.ForkJoinTask<T> adapt(java.util.concurrent.Callable<? extends T>);
method public boolean cancel(boolean);
method public final boolean compareAndSetForkJoinTaskTag(short, short);
method public void complete(V);
- method public void completeExceptionally(java.lang.Throwable);
+ method public void completeExceptionally(Throwable);
method protected abstract boolean exec();
method public final java.util.concurrent.ForkJoinTask<V> fork();
method public final V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
method public final V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
- method public final java.lang.Throwable getException();
+ method public final Throwable getException();
method public final short getForkJoinTaskTag();
method public static java.util.concurrent.ForkJoinPool getPool();
method public static int getQueuedTaskCount();
@@ -71153,20 +71146,20 @@
method public java.util.concurrent.ForkJoinPool getPool();
method public int getPoolIndex();
method protected void onStart();
- method protected void onTermination(java.lang.Throwable);
+ method protected void onTermination(Throwable);
}
- public abstract interface Future<V> {
- method public abstract boolean cancel(boolean);
- method public abstract V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
- method public abstract V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
- method public abstract boolean isCancelled();
- method public abstract boolean isDone();
+ public interface Future<V> {
+ method public boolean cancel(boolean);
+ method public V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+ method public V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+ method public boolean isCancelled();
+ method public boolean isDone();
}
- public class FutureTask<V> implements java.util.concurrent.RunnableFuture {
+ public class FutureTask<V> implements java.util.concurrent.RunnableFuture<V> {
ctor public FutureTask(java.util.concurrent.Callable<V>);
- ctor public FutureTask(java.lang.Runnable, V);
+ ctor public FutureTask(Runnable, V);
method public boolean cancel(boolean);
method protected void done();
method public V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
@@ -71176,10 +71169,10 @@
method public void run();
method protected boolean runAndReset();
method protected void set(V);
- method protected void setException(java.lang.Throwable);
+ method protected void setException(Throwable);
}
- public class LinkedBlockingDeque<E> extends java.util.AbstractQueue implements java.util.concurrent.BlockingDeque java.io.Serializable {
+ public class LinkedBlockingDeque<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingDeque<E> java.io.Serializable {
ctor public LinkedBlockingDeque();
ctor public LinkedBlockingDeque(int);
ctor public LinkedBlockingDeque(java.util.Collection<? extends E>);
@@ -71213,16 +71206,16 @@
method public void putLast(E) throws java.lang.InterruptedException;
method public int remainingCapacity();
method public E removeFirst();
- method public boolean removeFirstOccurrence(java.lang.Object);
+ method public boolean removeFirstOccurrence(Object);
method public E removeLast();
- method public boolean removeLastOccurrence(java.lang.Object);
+ method public boolean removeLastOccurrence(Object);
method public int size();
method public E take() throws java.lang.InterruptedException;
method public E takeFirst() throws java.lang.InterruptedException;
method public E takeLast() throws java.lang.InterruptedException;
}
- public class LinkedBlockingQueue<E> extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue java.io.Serializable {
+ public class LinkedBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
ctor public LinkedBlockingQueue();
ctor public LinkedBlockingQueue(int);
ctor public LinkedBlockingQueue(java.util.Collection<? extends E>);
@@ -71240,7 +71233,7 @@
method public E take() throws java.lang.InterruptedException;
}
- public class LinkedTransferQueue<E> extends java.util.AbstractQueue implements java.io.Serializable java.util.concurrent.TransferQueue {
+ public class LinkedTransferQueue<E> extends java.util.AbstractQueue<E> implements java.io.Serializable java.util.concurrent.TransferQueue<E> {
ctor public LinkedTransferQueue();
ctor public LinkedTransferQueue(java.util.Collection<? extends E>);
method public int drainTo(java.util.Collection<? super E>);
@@ -71286,7 +71279,7 @@
method public int register();
}
- public class PriorityBlockingQueue<E> extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue java.io.Serializable {
+ public class PriorityBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
ctor public PriorityBlockingQueue();
ctor public PriorityBlockingQueue(int);
ctor public PriorityBlockingQueue(int, java.util.Comparator<? super E>);
@@ -71306,15 +71299,15 @@
method public E take() throws java.lang.InterruptedException;
}
- public abstract class RecursiveAction extends java.util.concurrent.ForkJoinTask {
+ public abstract class RecursiveAction extends java.util.concurrent.ForkJoinTask<java.lang.Void> {
ctor public RecursiveAction();
method protected abstract void compute();
method protected final boolean exec();
- method public final java.lang.Void getRawResult();
- method protected final void setRawResult(java.lang.Void);
+ method public final Void getRawResult();
+ method protected final void setRawResult(Void);
}
- public abstract class RecursiveTask<V> extends java.util.concurrent.ForkJoinTask {
+ public abstract class RecursiveTask<V> extends java.util.concurrent.ForkJoinTask<V> {
ctor public RecursiveTask();
method protected abstract V compute();
method protected final boolean exec();
@@ -71324,30 +71317,30 @@
public class RejectedExecutionException extends java.lang.RuntimeException {
ctor public RejectedExecutionException();
- ctor public RejectedExecutionException(java.lang.String);
- ctor public RejectedExecutionException(java.lang.String, java.lang.Throwable);
- ctor public RejectedExecutionException(java.lang.Throwable);
+ ctor public RejectedExecutionException(String);
+ ctor public RejectedExecutionException(String, Throwable);
+ ctor public RejectedExecutionException(Throwable);
}
- public abstract interface RejectedExecutionHandler {
- method public abstract void rejectedExecution(java.lang.Runnable, java.util.concurrent.ThreadPoolExecutor);
+ public interface RejectedExecutionHandler {
+ method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
}
- public abstract interface RunnableFuture<V> implements java.util.concurrent.Future java.lang.Runnable {
+ public interface RunnableFuture<V> extends java.lang.Runnable java.util.concurrent.Future<V> {
}
- public abstract interface RunnableScheduledFuture<V> implements java.util.concurrent.RunnableFuture java.util.concurrent.ScheduledFuture {
- method public abstract boolean isPeriodic();
+ public interface RunnableScheduledFuture<V> extends java.util.concurrent.RunnableFuture<V> java.util.concurrent.ScheduledFuture<V> {
+ method public boolean isPeriodic();
}
- public abstract interface ScheduledExecutorService implements java.util.concurrent.ExecutorService {
- method public abstract java.util.concurrent.ScheduledFuture<?> schedule(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
- method public abstract <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V>, long, java.util.concurrent.TimeUnit);
- method public abstract java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit);
- method public abstract java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit);
+ public interface ScheduledExecutorService extends java.util.concurrent.ExecutorService {
+ method public java.util.concurrent.ScheduledFuture<?> schedule(Runnable, long, java.util.concurrent.TimeUnit);
+ method public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V>, long, java.util.concurrent.TimeUnit);
+ method public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(Runnable, long, long, java.util.concurrent.TimeUnit);
+ method public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(Runnable, long, long, java.util.concurrent.TimeUnit);
}
- public abstract interface ScheduledFuture<V> implements java.util.concurrent.Delayed java.util.concurrent.Future {
+ public interface ScheduledFuture<V> extends java.util.concurrent.Delayed java.util.concurrent.Future<V> {
}
public class ScheduledThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor implements java.util.concurrent.ScheduledExecutorService {
@@ -71355,15 +71348,15 @@
ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.ThreadFactory);
ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.RejectedExecutionHandler);
ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler);
- method protected <V> java.util.concurrent.RunnableScheduledFuture<V> decorateTask(java.lang.Runnable, java.util.concurrent.RunnableScheduledFuture<V>);
+ method protected <V> java.util.concurrent.RunnableScheduledFuture<V> decorateTask(Runnable, java.util.concurrent.RunnableScheduledFuture<V>);
method protected <V> java.util.concurrent.RunnableScheduledFuture<V> decorateTask(java.util.concurrent.Callable<V>, java.util.concurrent.RunnableScheduledFuture<V>);
method public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy();
method public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy();
method public boolean getRemoveOnCancelPolicy();
- method public java.util.concurrent.ScheduledFuture<?> schedule(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
+ method public java.util.concurrent.ScheduledFuture<?> schedule(Runnable, long, java.util.concurrent.TimeUnit);
method public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V>, long, java.util.concurrent.TimeUnit);
- method public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit);
- method public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit);
+ method public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(Runnable, long, long, java.util.concurrent.TimeUnit);
+ method public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(Runnable, long, long, java.util.concurrent.TimeUnit);
method public void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean);
method public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean);
method public void setRemoveOnCancelPolicy(boolean);
@@ -71391,7 +71384,7 @@
method public boolean tryAcquire(int, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
}
- public class SynchronousQueue<E> extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue java.io.Serializable {
+ public class SynchronousQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
ctor public SynchronousQueue();
ctor public SynchronousQueue(boolean);
method public int drainTo(java.util.Collection<? super E>);
@@ -71408,19 +71401,17 @@
method public E take() throws java.lang.InterruptedException;
}
- public abstract interface ThreadFactory {
- method public abstract java.lang.Thread newThread(java.lang.Runnable);
+ public interface ThreadFactory {
+ method public Thread newThread(Runnable);
}
public class ThreadLocalRandom extends java.util.Random {
method public static java.util.concurrent.ThreadLocalRandom current();
method public double nextDouble(double);
method public double nextDouble(double, double);
- method public double nextGaussian();
method public int nextInt(int, int);
method public long nextLong(long);
method public long nextLong(long, long);
- method public void setSeed(long);
}
public class ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService {
@@ -71428,12 +71419,12 @@
ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory);
ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.RejectedExecutionHandler);
ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler);
- method protected void afterExecute(java.lang.Runnable, java.lang.Throwable);
+ method protected void afterExecute(Runnable, Throwable);
method public void allowCoreThreadTimeOut(boolean);
method public boolean allowsCoreThreadTimeOut();
method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method protected void beforeExecute(java.lang.Thread, java.lang.Runnable);
- method public void execute(java.lang.Runnable);
+ method protected void beforeExecute(Thread, Runnable);
+ method public void execute(Runnable);
method protected void finalize();
method public int getActiveCount();
method public long getCompletedTaskCount();
@@ -71452,7 +71443,7 @@
method public int prestartAllCoreThreads();
method public boolean prestartCoreThread();
method public void purge();
- method public boolean remove(java.lang.Runnable);
+ method public boolean remove(Runnable);
method public void setCorePoolSize(int);
method public void setKeepAliveTime(long, java.util.concurrent.TimeUnit);
method public void setMaximumPoolSize(int);
@@ -71465,29 +71456,29 @@
public static class ThreadPoolExecutor.AbortPolicy implements java.util.concurrent.RejectedExecutionHandler {
ctor public ThreadPoolExecutor.AbortPolicy();
- method public void rejectedExecution(java.lang.Runnable, java.util.concurrent.ThreadPoolExecutor);
+ method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
}
public static class ThreadPoolExecutor.CallerRunsPolicy implements java.util.concurrent.RejectedExecutionHandler {
ctor public ThreadPoolExecutor.CallerRunsPolicy();
- method public void rejectedExecution(java.lang.Runnable, java.util.concurrent.ThreadPoolExecutor);
+ method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
}
public static class ThreadPoolExecutor.DiscardOldestPolicy implements java.util.concurrent.RejectedExecutionHandler {
ctor public ThreadPoolExecutor.DiscardOldestPolicy();
- method public void rejectedExecution(java.lang.Runnable, java.util.concurrent.ThreadPoolExecutor);
+ method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
}
public static class ThreadPoolExecutor.DiscardPolicy implements java.util.concurrent.RejectedExecutionHandler {
ctor public ThreadPoolExecutor.DiscardPolicy();
- method public void rejectedExecution(java.lang.Runnable, java.util.concurrent.ThreadPoolExecutor);
+ method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
}
- public class TimeUnit extends java.lang.Enum {
+ public enum TimeUnit {
method public long convert(long, java.util.concurrent.TimeUnit);
method public void sleep(long) throws java.lang.InterruptedException;
- method public void timedJoin(java.lang.Thread, long) throws java.lang.InterruptedException;
- method public void timedWait(java.lang.Object, long) throws java.lang.InterruptedException;
+ method public void timedJoin(Thread, long) throws java.lang.InterruptedException;
+ method public void timedWait(Object, long) throws java.lang.InterruptedException;
method public long toDays(long);
method public long toHours(long);
method public long toMicros(long);
@@ -71495,8 +71486,6 @@
method public long toMinutes(long);
method public long toNanos(long);
method public long toSeconds(long);
- method public static java.util.concurrent.TimeUnit valueOf(java.lang.String);
- method public static final java.util.concurrent.TimeUnit[] values();
enum_constant public static final java.util.concurrent.TimeUnit DAYS;
enum_constant public static final java.util.concurrent.TimeUnit HOURS;
enum_constant public static final java.util.concurrent.TimeUnit MICROSECONDS;
@@ -71508,15 +71497,15 @@
public class TimeoutException extends java.lang.Exception {
ctor public TimeoutException();
- ctor public TimeoutException(java.lang.String);
+ ctor public TimeoutException(String);
}
- public abstract interface TransferQueue<E> implements java.util.concurrent.BlockingQueue {
- method public abstract int getWaitingConsumerCount();
- method public abstract boolean hasWaitingConsumer();
- method public abstract void transfer(E) throws java.lang.InterruptedException;
- method public abstract boolean tryTransfer(E);
- method public abstract boolean tryTransfer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ public interface TransferQueue<E> extends java.util.concurrent.BlockingQueue<E> {
+ method public int getWaitingConsumerCount();
+ method public boolean hasWaitingConsumer();
+ method public void transfer(E) throws java.lang.InterruptedException;
+ method public boolean tryTransfer(E);
+ method public boolean tryTransfer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
}
}
@@ -71596,7 +71585,7 @@
method public final int getAndUpdate(T, java.util.function.IntUnaryOperator);
method public int incrementAndGet(T);
method public abstract void lazySet(T, int);
- method public static <U> java.util.concurrent.atomic.AtomicIntegerFieldUpdater<U> newUpdater(java.lang.Class<U>, java.lang.String);
+ method public static <U> java.util.concurrent.atomic.AtomicIntegerFieldUpdater<U> newUpdater(Class<U>, String);
method public abstract void set(T, int);
method public final int updateAndGet(T, java.util.function.IntUnaryOperator);
method public abstract boolean weakCompareAndSet(T, int, int);
@@ -71664,7 +71653,7 @@
method public final long getAndUpdate(T, java.util.function.LongUnaryOperator);
method public long incrementAndGet(T);
method public abstract void lazySet(T, long);
- method public static <U> java.util.concurrent.atomic.AtomicLongFieldUpdater<U> newUpdater(java.lang.Class<U>, java.lang.String);
+ method public static <U> java.util.concurrent.atomic.AtomicLongFieldUpdater<U> newUpdater(Class<U>, String);
method public abstract void set(T, long);
method public final long updateAndGet(T, java.util.function.LongUnaryOperator);
method public abstract boolean weakCompareAndSet(T, long, long);
@@ -71721,7 +71710,7 @@
method public V getAndSet(T, V);
method public final V getAndUpdate(T, java.util.function.UnaryOperator<V>);
method public abstract void lazySet(T, V);
- method public static <U, W> java.util.concurrent.atomic.AtomicReferenceFieldUpdater<U, W> newUpdater(java.lang.Class<U>, java.lang.Class<W>, java.lang.String);
+ method public static <U, W> java.util.concurrent.atomic.AtomicReferenceFieldUpdater<U,W> newUpdater(Class<U>, Class<W>, String);
method public abstract void set(T, V);
method public final V updateAndGet(T, java.util.function.UnaryOperator<V>);
method public abstract boolean weakCompareAndSet(T, V, V);
@@ -71794,8 +71783,8 @@
public abstract class AbstractOwnableSynchronizer implements java.io.Serializable {
ctor protected AbstractOwnableSynchronizer();
- method protected final java.lang.Thread getExclusiveOwnerThread();
- method protected final void setExclusiveOwnerThread(java.lang.Thread);
+ method protected final Thread getExclusiveOwnerThread();
+ method protected final void setExclusiveOwnerThread(Thread);
}
public abstract class AbstractQueuedLongSynchronizer extends java.util.concurrent.locks.AbstractOwnableSynchronizer implements java.io.Serializable {
@@ -71806,7 +71795,7 @@
method public final void acquireSharedInterruptibly(long) throws java.lang.InterruptedException;
method protected final boolean compareAndSetState(long, long);
method public final java.util.Collection<java.lang.Thread> getExclusiveQueuedThreads();
- method public final java.lang.Thread getFirstQueuedThread();
+ method public final Thread getFirstQueuedThread();
method public final int getQueueLength();
method public final java.util.Collection<java.lang.Thread> getQueuedThreads();
method public final java.util.Collection<java.lang.Thread> getSharedQueuedThreads();
@@ -71818,7 +71807,7 @@
method public final boolean hasQueuedThreads();
method public final boolean hasWaiters(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
method protected boolean isHeldExclusively();
- method public final boolean isQueued(java.lang.Thread);
+ method public final boolean isQueued(Thread);
method public final boolean owns(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
method public final boolean release(long);
method public final boolean releaseShared(long);
@@ -71853,7 +71842,7 @@
method public final void acquireSharedInterruptibly(int) throws java.lang.InterruptedException;
method protected final boolean compareAndSetState(int, int);
method public final java.util.Collection<java.lang.Thread> getExclusiveQueuedThreads();
- method public final java.lang.Thread getFirstQueuedThread();
+ method public final Thread getFirstQueuedThread();
method public final int getQueueLength();
method public final java.util.Collection<java.lang.Thread> getQueuedThreads();
method public final java.util.Collection<java.lang.Thread> getSharedQueuedThreads();
@@ -71865,7 +71854,7 @@
method public final boolean hasQueuedThreads();
method public final boolean hasWaiters(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
method protected boolean isHeldExclusively();
- method public final boolean isQueued(java.lang.Thread);
+ method public final boolean isQueued(Thread);
method public final boolean owns(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
method public final boolean release(int);
method public final boolean releaseShared(int);
@@ -71892,51 +71881,51 @@
method public final void signalAll();
}
- public abstract interface Condition {
- method public abstract void await() throws java.lang.InterruptedException;
- method public abstract boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract long awaitNanos(long) throws java.lang.InterruptedException;
- method public abstract void awaitUninterruptibly();
- method public abstract boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
- method public abstract void signal();
- method public abstract void signalAll();
+ public interface Condition {
+ method public void await() throws java.lang.InterruptedException;
+ method public boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public long awaitNanos(long) throws java.lang.InterruptedException;
+ method public void awaitUninterruptibly();
+ method public boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
+ method public void signal();
+ method public void signalAll();
}
- public abstract interface Lock {
- method public abstract void lock();
- method public abstract void lockInterruptibly() throws java.lang.InterruptedException;
- method public abstract java.util.concurrent.locks.Condition newCondition();
- method public abstract boolean tryLock();
- method public abstract boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
- method public abstract void unlock();
+ public interface Lock {
+ method public void lock();
+ method public void lockInterruptibly() throws java.lang.InterruptedException;
+ method public java.util.concurrent.locks.Condition newCondition();
+ method public boolean tryLock();
+ method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+ method public void unlock();
}
public class LockSupport {
- method public static java.lang.Object getBlocker(java.lang.Thread);
- method public static void park(java.lang.Object);
+ method public static Object getBlocker(Thread);
+ method public static void park(Object);
method public static void park();
- method public static void parkNanos(java.lang.Object, long);
+ method public static void parkNanos(Object, long);
method public static void parkNanos(long);
- method public static void parkUntil(java.lang.Object, long);
+ method public static void parkUntil(Object, long);
method public static void parkUntil(long);
- method public static void unpark(java.lang.Thread);
+ method public static void unpark(Thread);
}
- public abstract interface ReadWriteLock {
- method public abstract java.util.concurrent.locks.Lock readLock();
- method public abstract java.util.concurrent.locks.Lock writeLock();
+ public interface ReadWriteLock {
+ method public java.util.concurrent.locks.Lock readLock();
+ method public java.util.concurrent.locks.Lock writeLock();
}
public class ReentrantLock implements java.util.concurrent.locks.Lock java.io.Serializable {
ctor public ReentrantLock();
ctor public ReentrantLock(boolean);
method public int getHoldCount();
- method protected java.lang.Thread getOwner();
+ method protected Thread getOwner();
method public final int getQueueLength();
method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
method public int getWaitQueueLength(java.util.concurrent.locks.Condition);
method protected java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.Condition);
- method public final boolean hasQueuedThread(java.lang.Thread);
+ method public final boolean hasQueuedThread(Thread);
method public final boolean hasQueuedThreads();
method public boolean hasWaiters(java.util.concurrent.locks.Condition);
method public final boolean isFair();
@@ -71953,7 +71942,7 @@
public class ReentrantReadWriteLock implements java.util.concurrent.locks.ReadWriteLock java.io.Serializable {
ctor public ReentrantReadWriteLock();
ctor public ReentrantReadWriteLock(boolean);
- method protected java.lang.Thread getOwner();
+ method protected Thread getOwner();
method public final int getQueueLength();
method protected java.util.Collection<java.lang.Thread> getQueuedReaderThreads();
method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
@@ -71963,7 +71952,7 @@
method public int getWaitQueueLength(java.util.concurrent.locks.Condition);
method protected java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.Condition);
method public int getWriteHoldCount();
- method public final boolean hasQueuedThread(java.lang.Thread);
+ method public final boolean hasQueuedThread(Thread);
method public final boolean hasQueuedThreads();
method public boolean hasWaiters(java.util.concurrent.locks.Condition);
method public final boolean isFair();
@@ -72027,210 +72016,210 @@
package java.util.function {
- public abstract interface BiConsumer<T, U> {
- method public abstract void accept(T, U);
- method public default java.util.function.BiConsumer<T, U> andThen(java.util.function.BiConsumer<? super T, ? super U>);
+ @java.lang.FunctionalInterface public interface BiConsumer<T, U> {
+ method public void accept(T, U);
+ method public default java.util.function.BiConsumer<T,U> andThen(java.util.function.BiConsumer<? super T,? super U>);
}
- public abstract interface BiFunction<T, U, R> {
- method public default <V> java.util.function.BiFunction<T, U, V> andThen(java.util.function.Function<? super R, ? extends V>);
- method public abstract R apply(T, U);
+ @java.lang.FunctionalInterface public interface BiFunction<T, U, R> {
+ method public default <V> java.util.function.BiFunction<T,U,V> andThen(java.util.function.Function<? super R,? extends V>);
+ method public R apply(T, U);
}
- public abstract interface BiPredicate<T, U> {
- method public default java.util.function.BiPredicate<T, U> and(java.util.function.BiPredicate<? super T, ? super U>);
- method public default java.util.function.BiPredicate<T, U> negate();
- method public default java.util.function.BiPredicate<T, U> or(java.util.function.BiPredicate<? super T, ? super U>);
- method public abstract boolean test(T, U);
+ @java.lang.FunctionalInterface public interface BiPredicate<T, U> {
+ method public default java.util.function.BiPredicate<T,U> and(java.util.function.BiPredicate<? super T,? super U>);
+ method public default java.util.function.BiPredicate<T,U> negate();
+ method public default java.util.function.BiPredicate<T,U> or(java.util.function.BiPredicate<? super T,? super U>);
+ method public boolean test(T, U);
}
- public abstract interface BinaryOperator<T> implements java.util.function.BiFunction {
+ @java.lang.FunctionalInterface public interface BinaryOperator<T> extends java.util.function.BiFunction<T,T,T> {
method public static <T> java.util.function.BinaryOperator<T> maxBy(java.util.Comparator<? super T>);
method public static <T> java.util.function.BinaryOperator<T> minBy(java.util.Comparator<? super T>);
}
- public abstract interface BooleanSupplier {
- method public abstract boolean getAsBoolean();
+ @java.lang.FunctionalInterface public interface BooleanSupplier {
+ method public boolean getAsBoolean();
}
- public abstract interface Consumer<T> {
- method public abstract void accept(T);
+ @java.lang.FunctionalInterface public interface Consumer<T> {
+ method public void accept(T);
method public default java.util.function.Consumer<T> andThen(java.util.function.Consumer<? super T>);
}
- public abstract interface DoubleBinaryOperator {
- method public abstract double applyAsDouble(double, double);
+ @java.lang.FunctionalInterface public interface DoubleBinaryOperator {
+ method public double applyAsDouble(double, double);
}
- public abstract interface DoubleConsumer {
- method public abstract void accept(double);
+ @java.lang.FunctionalInterface public interface DoubleConsumer {
+ method public void accept(double);
method public default java.util.function.DoubleConsumer andThen(java.util.function.DoubleConsumer);
}
- public abstract interface DoubleFunction<R> {
- method public abstract R apply(double);
+ @java.lang.FunctionalInterface public interface DoubleFunction<R> {
+ method public R apply(double);
}
- public abstract interface DoublePredicate {
+ @java.lang.FunctionalInterface public interface DoublePredicate {
method public default java.util.function.DoublePredicate and(java.util.function.DoublePredicate);
method public default java.util.function.DoublePredicate negate();
method public default java.util.function.DoublePredicate or(java.util.function.DoublePredicate);
- method public abstract boolean test(double);
+ method public boolean test(double);
}
- public abstract interface DoubleSupplier {
- method public abstract double getAsDouble();
+ @java.lang.FunctionalInterface public interface DoubleSupplier {
+ method public double getAsDouble();
}
- public abstract interface DoubleToIntFunction {
- method public abstract int applyAsInt(double);
+ @java.lang.FunctionalInterface public interface DoubleToIntFunction {
+ method public int applyAsInt(double);
}
- public abstract interface DoubleToLongFunction {
- method public abstract long applyAsLong(double);
+ @java.lang.FunctionalInterface public interface DoubleToLongFunction {
+ method public long applyAsLong(double);
}
- public abstract interface DoubleUnaryOperator {
+ @java.lang.FunctionalInterface public interface DoubleUnaryOperator {
method public default java.util.function.DoubleUnaryOperator andThen(java.util.function.DoubleUnaryOperator);
- method public abstract double applyAsDouble(double);
+ method public double applyAsDouble(double);
method public default java.util.function.DoubleUnaryOperator compose(java.util.function.DoubleUnaryOperator);
method public static java.util.function.DoubleUnaryOperator identity();
}
- public abstract interface Function<T, R> {
- method public default <V> java.util.function.Function<T, V> andThen(java.util.function.Function<? super R, ? extends V>);
- method public abstract R apply(T);
- method public default <V> java.util.function.Function<V, R> compose(java.util.function.Function<? super V, ? extends T>);
- method public static <T> java.util.function.Function<T, T> identity();
+ @java.lang.FunctionalInterface public interface Function<T, R> {
+ method public default <V> java.util.function.Function<T,V> andThen(java.util.function.Function<? super R,? extends V>);
+ method public R apply(T);
+ method public default <V> java.util.function.Function<V,R> compose(java.util.function.Function<? super V,? extends T>);
+ method public static <T> java.util.function.Function<T,T> identity();
}
- public abstract interface IntBinaryOperator {
- method public abstract int applyAsInt(int, int);
+ @java.lang.FunctionalInterface public interface IntBinaryOperator {
+ method public int applyAsInt(int, int);
}
- public abstract interface IntConsumer {
- method public abstract void accept(int);
+ @java.lang.FunctionalInterface public interface IntConsumer {
+ method public void accept(int);
method public default java.util.function.IntConsumer andThen(java.util.function.IntConsumer);
}
- public abstract interface IntFunction<R> {
- method public abstract R apply(int);
+ @java.lang.FunctionalInterface public interface IntFunction<R> {
+ method public R apply(int);
}
- public abstract interface IntPredicate {
+ @java.lang.FunctionalInterface public interface IntPredicate {
method public default java.util.function.IntPredicate and(java.util.function.IntPredicate);
method public default java.util.function.IntPredicate negate();
method public default java.util.function.IntPredicate or(java.util.function.IntPredicate);
- method public abstract boolean test(int);
+ method public boolean test(int);
}
- public abstract interface IntSupplier {
- method public abstract int getAsInt();
+ @java.lang.FunctionalInterface public interface IntSupplier {
+ method public int getAsInt();
}
- public abstract interface IntToDoubleFunction {
- method public abstract double applyAsDouble(int);
+ @java.lang.FunctionalInterface public interface IntToDoubleFunction {
+ method public double applyAsDouble(int);
}
- public abstract interface IntToLongFunction {
- method public abstract long applyAsLong(int);
+ @java.lang.FunctionalInterface public interface IntToLongFunction {
+ method public long applyAsLong(int);
}
- public abstract interface IntUnaryOperator {
+ @java.lang.FunctionalInterface public interface IntUnaryOperator {
method public default java.util.function.IntUnaryOperator andThen(java.util.function.IntUnaryOperator);
- method public abstract int applyAsInt(int);
+ method public int applyAsInt(int);
method public default java.util.function.IntUnaryOperator compose(java.util.function.IntUnaryOperator);
method public static java.util.function.IntUnaryOperator identity();
}
- public abstract interface LongBinaryOperator {
- method public abstract long applyAsLong(long, long);
+ @java.lang.FunctionalInterface public interface LongBinaryOperator {
+ method public long applyAsLong(long, long);
}
- public abstract interface LongConsumer {
- method public abstract void accept(long);
+ @java.lang.FunctionalInterface public interface LongConsumer {
+ method public void accept(long);
method public default java.util.function.LongConsumer andThen(java.util.function.LongConsumer);
}
- public abstract interface LongFunction<R> {
- method public abstract R apply(long);
+ @java.lang.FunctionalInterface public interface LongFunction<R> {
+ method public R apply(long);
}
- public abstract interface LongPredicate {
+ @java.lang.FunctionalInterface public interface LongPredicate {
method public default java.util.function.LongPredicate and(java.util.function.LongPredicate);
method public default java.util.function.LongPredicate negate();
method public default java.util.function.LongPredicate or(java.util.function.LongPredicate);
- method public abstract boolean test(long);
+ method public boolean test(long);
}
- public abstract interface LongSupplier {
- method public abstract long getAsLong();
+ @java.lang.FunctionalInterface public interface LongSupplier {
+ method public long getAsLong();
}
- public abstract interface LongToDoubleFunction {
- method public abstract double applyAsDouble(long);
+ @java.lang.FunctionalInterface public interface LongToDoubleFunction {
+ method public double applyAsDouble(long);
}
- public abstract interface LongToIntFunction {
- method public abstract int applyAsInt(long);
+ @java.lang.FunctionalInterface public interface LongToIntFunction {
+ method public int applyAsInt(long);
}
- public abstract interface LongUnaryOperator {
+ @java.lang.FunctionalInterface public interface LongUnaryOperator {
method public default java.util.function.LongUnaryOperator andThen(java.util.function.LongUnaryOperator);
- method public abstract long applyAsLong(long);
+ method public long applyAsLong(long);
method public default java.util.function.LongUnaryOperator compose(java.util.function.LongUnaryOperator);
method public static java.util.function.LongUnaryOperator identity();
}
- public abstract interface ObjDoubleConsumer<T> {
- method public abstract void accept(T, double);
+ @java.lang.FunctionalInterface public interface ObjDoubleConsumer<T> {
+ method public void accept(T, double);
}
- public abstract interface ObjIntConsumer<T> {
- method public abstract void accept(T, int);
+ @java.lang.FunctionalInterface public interface ObjIntConsumer<T> {
+ method public void accept(T, int);
}
- public abstract interface ObjLongConsumer<T> {
- method public abstract void accept(T, long);
+ @java.lang.FunctionalInterface public interface ObjLongConsumer<T> {
+ method public void accept(T, long);
}
- public abstract interface Predicate<T> {
+ @java.lang.FunctionalInterface public interface Predicate<T> {
method public default java.util.function.Predicate<T> and(java.util.function.Predicate<? super T>);
- method public static <T> java.util.function.Predicate<T> isEqual(java.lang.Object);
+ method public static <T> java.util.function.Predicate<T> isEqual(Object);
method public default java.util.function.Predicate<T> negate();
method public default java.util.function.Predicate<T> or(java.util.function.Predicate<? super T>);
- method public abstract boolean test(T);
+ method public boolean test(T);
}
- public abstract interface Supplier<T> {
- method public abstract T get();
+ @java.lang.FunctionalInterface public interface Supplier<T> {
+ method public T get();
}
- public abstract interface ToDoubleBiFunction<T, U> {
- method public abstract double applyAsDouble(T, U);
+ @java.lang.FunctionalInterface public interface ToDoubleBiFunction<T, U> {
+ method public double applyAsDouble(T, U);
}
- public abstract interface ToDoubleFunction<T> {
- method public abstract double applyAsDouble(T);
+ @java.lang.FunctionalInterface public interface ToDoubleFunction<T> {
+ method public double applyAsDouble(T);
}
- public abstract interface ToIntBiFunction<T, U> {
- method public abstract int applyAsInt(T, U);
+ @java.lang.FunctionalInterface public interface ToIntBiFunction<T, U> {
+ method public int applyAsInt(T, U);
}
- public abstract interface ToIntFunction<T> {
- method public abstract int applyAsInt(T);
+ @java.lang.FunctionalInterface public interface ToIntFunction<T> {
+ method public int applyAsInt(T);
}
- public abstract interface ToLongBiFunction<T, U> {
- method public abstract long applyAsLong(T, U);
+ @java.lang.FunctionalInterface public interface ToLongBiFunction<T, U> {
+ method public long applyAsLong(T, U);
}
- public abstract interface ToLongFunction<T> {
- method public abstract long applyAsLong(T);
+ @java.lang.FunctionalInterface public interface ToLongFunction<T> {
+ method public long applyAsLong(T);
}
- public abstract interface UnaryOperator<T> implements java.util.function.Function {
+ @java.lang.FunctionalInterface public interface UnaryOperator<T> extends java.util.function.Function<T,T> {
method public static <T> java.util.function.UnaryOperator<T> identity();
}
@@ -72238,40 +72227,40 @@
package java.util.jar {
- public class Attributes implements java.lang.Cloneable java.util.Map {
+ public class Attributes implements java.lang.Cloneable java.util.Map<java.lang.Object,java.lang.Object> {
ctor public Attributes();
ctor public Attributes(int);
ctor public Attributes(java.util.jar.Attributes);
method public void clear();
- method public java.lang.Object clone();
- method public boolean containsKey(java.lang.Object);
- method public boolean containsValue(java.lang.Object);
- method public java.util.Set<java.util.Map.Entry<java.lang.Object, java.lang.Object>> entrySet();
- method public java.lang.Object get(java.lang.Object);
- method public java.lang.String getValue(java.lang.String);
- method public java.lang.String getValue(java.util.jar.Attributes.Name);
+ method public Object clone();
+ method public boolean containsKey(Object);
+ method public boolean containsValue(Object);
+ method public java.util.Set<java.util.Map.Entry<java.lang.Object,java.lang.Object>> entrySet();
+ method public Object get(Object);
+ method public String getValue(String);
+ method public String getValue(java.util.jar.Attributes.Name);
method public boolean isEmpty();
method public java.util.Set<java.lang.Object> keySet();
- method public java.lang.Object put(java.lang.Object, java.lang.Object);
- method public void putAll(java.util.Map<?, ?>);
- method public java.lang.String putValue(java.lang.String, java.lang.String);
- method public java.lang.Object remove(java.lang.Object);
+ method public Object put(Object, Object);
+ method public void putAll(java.util.Map<?,?>);
+ method public String putValue(String, String);
+ method public Object remove(Object);
method public int size();
method public java.util.Collection<java.lang.Object> values();
- field protected java.util.Map<java.lang.Object, java.lang.Object> map;
+ field protected java.util.Map<java.lang.Object,java.lang.Object> map;
}
public static class Attributes.Name {
- ctor public Attributes.Name(java.lang.String);
+ ctor public Attributes.Name(String);
field public static final java.util.jar.Attributes.Name CLASS_PATH;
field public static final java.util.jar.Attributes.Name CONTENT_TYPE;
- field public static final deprecated java.util.jar.Attributes.Name EXTENSION_INSTALLATION;
+ field @Deprecated public static final java.util.jar.Attributes.Name EXTENSION_INSTALLATION;
field public static final java.util.jar.Attributes.Name EXTENSION_LIST;
field public static final java.util.jar.Attributes.Name EXTENSION_NAME;
field public static final java.util.jar.Attributes.Name IMPLEMENTATION_TITLE;
- field public static final deprecated java.util.jar.Attributes.Name IMPLEMENTATION_URL;
+ field @Deprecated public static final java.util.jar.Attributes.Name IMPLEMENTATION_URL;
field public static final java.util.jar.Attributes.Name IMPLEMENTATION_VENDOR;
- field public static final deprecated java.util.jar.Attributes.Name IMPLEMENTATION_VENDOR_ID;
+ field @Deprecated public static final java.util.jar.Attributes.Name IMPLEMENTATION_VENDOR_ID;
field public static final java.util.jar.Attributes.Name IMPLEMENTATION_VERSION;
field public static final java.util.jar.Attributes.Name MAIN_CLASS;
field public static final java.util.jar.Attributes.Name MANIFEST_VERSION;
@@ -72283,7 +72272,7 @@
}
public class JarEntry extends java.util.zip.ZipEntry {
- ctor public JarEntry(java.lang.String);
+ ctor public JarEntry(String);
ctor public JarEntry(java.util.zip.ZipEntry);
ctor public JarEntry(java.util.jar.JarEntry);
method public java.util.jar.Attributes getAttributes() throws java.io.IOException;
@@ -72333,18 +72322,17 @@
public class JarException extends java.util.zip.ZipException {
ctor public JarException();
- ctor public JarException(java.lang.String);
+ ctor public JarException(String);
}
public class JarFile extends java.util.zip.ZipFile {
- ctor public JarFile(java.lang.String) throws java.io.IOException;
- ctor public JarFile(java.lang.String, boolean) throws java.io.IOException;
+ ctor public JarFile(String) throws java.io.IOException;
+ ctor public JarFile(String, boolean) throws java.io.IOException;
ctor public JarFile(java.io.File) throws java.io.IOException;
ctor public JarFile(java.io.File, boolean) throws java.io.IOException;
ctor public JarFile(java.io.File, boolean, int) throws java.io.IOException;
method public java.util.Enumeration<java.util.jar.JarEntry> entries();
- method public synchronized java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException;
- method public java.util.jar.JarEntry getJarEntry(java.lang.String);
+ method public java.util.jar.JarEntry getJarEntry(String);
method public java.util.jar.Manifest getManifest() throws java.io.IOException;
method public java.util.stream.Stream<java.util.jar.JarEntry> stream();
field public static final int CENATT = 36; // 0x24
@@ -72387,7 +72375,7 @@
field public static final int LOCSIZ = 18; // 0x12
field public static final int LOCTIM = 10; // 0xa
field public static final int LOCVER = 4; // 0x4
- field public static final java.lang.String MANIFEST_NAME = "META-INF/MANIFEST.MF";
+ field public static final String MANIFEST_NAME = "META-INF/MANIFEST.MF";
}
public class JarInputStream extends java.util.zip.ZipInputStream {
@@ -72487,57 +72475,57 @@
ctor public Manifest(java.io.InputStream) throws java.io.IOException;
ctor public Manifest(java.util.jar.Manifest);
method public void clear();
- method public java.lang.Object clone();
- method public java.util.jar.Attributes getAttributes(java.lang.String);
- method public java.util.Map<java.lang.String, java.util.jar.Attributes> getEntries();
+ method public Object clone();
+ method public java.util.jar.Attributes getAttributes(String);
+ method public java.util.Map<java.lang.String,java.util.jar.Attributes> getEntries();
method public java.util.jar.Attributes getMainAttributes();
method public void read(java.io.InputStream) throws java.io.IOException;
method public void write(java.io.OutputStream) throws java.io.IOException;
}
public abstract class Pack200 {
- method public static synchronized java.util.jar.Pack200.Packer newPacker();
+ method public static java.util.jar.Pack200.Packer newPacker();
method public static java.util.jar.Pack200.Unpacker newUnpacker();
}
- public static abstract interface Pack200.Packer {
- method public default deprecated void addPropertyChangeListener(java.beans.PropertyChangeListener);
- method public abstract void pack(java.util.jar.JarFile, java.io.OutputStream) throws java.io.IOException;
- method public abstract void pack(java.util.jar.JarInputStream, java.io.OutputStream) throws java.io.IOException;
- method public abstract java.util.SortedMap<java.lang.String, java.lang.String> properties();
- method public default deprecated void removePropertyChangeListener(java.beans.PropertyChangeListener);
- field public static final java.lang.String CLASS_ATTRIBUTE_PFX = "pack.class.attribute.";
- field public static final java.lang.String CODE_ATTRIBUTE_PFX = "pack.code.attribute.";
- field public static final java.lang.String DEFLATE_HINT = "pack.deflate.hint";
- field public static final java.lang.String EFFORT = "pack.effort";
- field public static final java.lang.String ERROR = "error";
- field public static final java.lang.String FALSE = "false";
- field public static final java.lang.String FIELD_ATTRIBUTE_PFX = "pack.field.attribute.";
- field public static final java.lang.String KEEP = "keep";
- field public static final java.lang.String KEEP_FILE_ORDER = "pack.keep.file.order";
- field public static final java.lang.String LATEST = "latest";
- field public static final java.lang.String METHOD_ATTRIBUTE_PFX = "pack.method.attribute.";
- field public static final java.lang.String MODIFICATION_TIME = "pack.modification.time";
- field public static final java.lang.String PASS = "pass";
- field public static final java.lang.String PASS_FILE_PFX = "pack.pass.file.";
- field public static final java.lang.String PROGRESS = "pack.progress";
- field public static final java.lang.String SEGMENT_LIMIT = "pack.segment.limit";
- field public static final java.lang.String STRIP = "strip";
- field public static final java.lang.String TRUE = "true";
- field public static final java.lang.String UNKNOWN_ATTRIBUTE = "pack.unknown.attribute";
+ public static interface Pack200.Packer {
+ method @Deprecated public default void addPropertyChangeListener(java.beans.PropertyChangeListener);
+ method public void pack(java.util.jar.JarFile, java.io.OutputStream) throws java.io.IOException;
+ method public void pack(java.util.jar.JarInputStream, java.io.OutputStream) throws java.io.IOException;
+ method public java.util.SortedMap<java.lang.String,java.lang.String> properties();
+ method @Deprecated public default void removePropertyChangeListener(java.beans.PropertyChangeListener);
+ field public static final String CLASS_ATTRIBUTE_PFX = "pack.class.attribute.";
+ field public static final String CODE_ATTRIBUTE_PFX = "pack.code.attribute.";
+ field public static final String DEFLATE_HINT = "pack.deflate.hint";
+ field public static final String EFFORT = "pack.effort";
+ field public static final String ERROR = "error";
+ field public static final String FALSE = "false";
+ field public static final String FIELD_ATTRIBUTE_PFX = "pack.field.attribute.";
+ field public static final String KEEP = "keep";
+ field public static final String KEEP_FILE_ORDER = "pack.keep.file.order";
+ field public static final String LATEST = "latest";
+ field public static final String METHOD_ATTRIBUTE_PFX = "pack.method.attribute.";
+ field public static final String MODIFICATION_TIME = "pack.modification.time";
+ field public static final String PASS = "pass";
+ field public static final String PASS_FILE_PFX = "pack.pass.file.";
+ field public static final String PROGRESS = "pack.progress";
+ field public static final String SEGMENT_LIMIT = "pack.segment.limit";
+ field public static final String STRIP = "strip";
+ field public static final String TRUE = "true";
+ field public static final String UNKNOWN_ATTRIBUTE = "pack.unknown.attribute";
}
- public static abstract interface Pack200.Unpacker {
- method public default deprecated void addPropertyChangeListener(java.beans.PropertyChangeListener);
- method public abstract java.util.SortedMap<java.lang.String, java.lang.String> properties();
- method public default deprecated void removePropertyChangeListener(java.beans.PropertyChangeListener);
- method public abstract void unpack(java.io.InputStream, java.util.jar.JarOutputStream) throws java.io.IOException;
- method public abstract void unpack(java.io.File, java.util.jar.JarOutputStream) throws java.io.IOException;
- field public static final java.lang.String DEFLATE_HINT = "unpack.deflate.hint";
- field public static final java.lang.String FALSE = "false";
- field public static final java.lang.String KEEP = "keep";
- field public static final java.lang.String PROGRESS = "unpack.progress";
- field public static final java.lang.String TRUE = "true";
+ public static interface Pack200.Unpacker {
+ method @Deprecated public default void addPropertyChangeListener(java.beans.PropertyChangeListener);
+ method public java.util.SortedMap<java.lang.String,java.lang.String> properties();
+ method @Deprecated public default void removePropertyChangeListener(java.beans.PropertyChangeListener);
+ method public void unpack(java.io.InputStream, java.util.jar.JarOutputStream) throws java.io.IOException;
+ method public void unpack(java.io.File, java.util.jar.JarOutputStream) throws java.io.IOException;
+ field public static final String DEFLATE_HINT = "unpack.deflate.hint";
+ field public static final String FALSE = "false";
+ field public static final String KEEP = "keep";
+ field public static final String PROGRESS = "unpack.progress";
+ field public static final String TRUE = "true";
}
}
@@ -72547,12 +72535,11 @@
public class ConsoleHandler extends java.util.logging.StreamHandler {
ctor public ConsoleHandler();
method public void close();
- method public void publish(java.util.logging.LogRecord);
}
public class ErrorManager {
ctor public ErrorManager();
- method public synchronized void error(java.lang.String, java.lang.Exception, int);
+ method public void error(String, Exception, int);
field public static final int CLOSE_FAILURE = 3; // 0x3
field public static final int FLUSH_FAILURE = 2; // 0x2
field public static final int FORMAT_FAILURE = 5; // 0x5
@@ -72563,183 +72550,183 @@
public class FileHandler extends java.util.logging.StreamHandler {
ctor public FileHandler() throws java.io.IOException, java.lang.SecurityException;
- ctor public FileHandler(java.lang.String) throws java.io.IOException, java.lang.SecurityException;
- ctor public FileHandler(java.lang.String, boolean) throws java.io.IOException, java.lang.SecurityException;
- ctor public FileHandler(java.lang.String, int, int) throws java.io.IOException, java.lang.SecurityException;
- ctor public FileHandler(java.lang.String, int, int, boolean) throws java.io.IOException, java.lang.SecurityException;
+ ctor public FileHandler(String) throws java.io.IOException, java.lang.SecurityException;
+ ctor public FileHandler(String, boolean) throws java.io.IOException, java.lang.SecurityException;
+ ctor public FileHandler(String, int, int) throws java.io.IOException, java.lang.SecurityException;
+ ctor public FileHandler(String, int, int, boolean) throws java.io.IOException, java.lang.SecurityException;
}
- public abstract interface Filter {
- method public abstract boolean isLoggable(java.util.logging.LogRecord);
+ @java.lang.FunctionalInterface public interface Filter {
+ method public boolean isLoggable(java.util.logging.LogRecord);
}
public abstract class Formatter {
ctor protected Formatter();
- method public abstract java.lang.String format(java.util.logging.LogRecord);
- method public synchronized java.lang.String formatMessage(java.util.logging.LogRecord);
- method public java.lang.String getHead(java.util.logging.Handler);
- method public java.lang.String getTail(java.util.logging.Handler);
+ method public abstract String format(java.util.logging.LogRecord);
+ method public String formatMessage(java.util.logging.LogRecord);
+ method public String getHead(java.util.logging.Handler);
+ method public String getTail(java.util.logging.Handler);
}
public abstract class Handler {
ctor protected Handler();
method public abstract void close() throws java.lang.SecurityException;
method public abstract void flush();
- method public java.lang.String getEncoding();
+ method public String getEncoding();
method public java.util.logging.ErrorManager getErrorManager();
method public java.util.logging.Filter getFilter();
method public java.util.logging.Formatter getFormatter();
method public java.util.logging.Level getLevel();
method public boolean isLoggable(java.util.logging.LogRecord);
method public abstract void publish(java.util.logging.LogRecord);
- method protected void reportError(java.lang.String, java.lang.Exception, int);
- method public synchronized void setEncoding(java.lang.String) throws java.lang.SecurityException, java.io.UnsupportedEncodingException;
- method public synchronized void setErrorManager(java.util.logging.ErrorManager);
- method public synchronized void setFilter(java.util.logging.Filter) throws java.lang.SecurityException;
- method public synchronized void setFormatter(java.util.logging.Formatter) throws java.lang.SecurityException;
- method public synchronized void setLevel(java.util.logging.Level) throws java.lang.SecurityException;
+ method protected void reportError(String, Exception, int);
+ method public void setEncoding(String) throws java.lang.SecurityException, java.io.UnsupportedEncodingException;
+ method public void setErrorManager(java.util.logging.ErrorManager);
+ method public void setFilter(java.util.logging.Filter) throws java.lang.SecurityException;
+ method public void setFormatter(java.util.logging.Formatter) throws java.lang.SecurityException;
+ method public void setLevel(java.util.logging.Level) throws java.lang.SecurityException;
}
public class Level implements java.io.Serializable {
- ctor protected Level(java.lang.String, int);
- ctor protected Level(java.lang.String, int, java.lang.String);
- method public java.lang.String getLocalizedName();
- method public java.lang.String getName();
- method public java.lang.String getResourceBundleName();
+ ctor protected Level(@NonNull String, int);
+ ctor protected Level(@NonNull String, int, @Nullable String);
+ method @NonNull public String getLocalizedName();
+ method @NonNull public String getName();
+ method @Nullable public String getResourceBundleName();
method public final int intValue();
- method public static synchronized java.util.logging.Level parse(java.lang.String) throws java.lang.IllegalArgumentException;
- method public final java.lang.String toString();
- field public static final java.util.logging.Level ALL;
- field public static final java.util.logging.Level CONFIG;
- field public static final java.util.logging.Level FINE;
- field public static final java.util.logging.Level FINER;
- field public static final java.util.logging.Level FINEST;
- field public static final java.util.logging.Level INFO;
- field public static final java.util.logging.Level OFF;
- field public static final java.util.logging.Level SEVERE;
- field public static final java.util.logging.Level WARNING;
+ method @NonNull public static java.util.logging.Level parse(@NonNull String) throws java.lang.IllegalArgumentException;
+ method @NonNull public final String toString();
+ field @NonNull public static final java.util.logging.Level ALL;
+ field @NonNull public static final java.util.logging.Level CONFIG;
+ field @NonNull public static final java.util.logging.Level FINE;
+ field @NonNull public static final java.util.logging.Level FINER;
+ field @NonNull public static final java.util.logging.Level FINEST;
+ field @NonNull public static final java.util.logging.Level INFO;
+ field @NonNull public static final java.util.logging.Level OFF;
+ field @NonNull public static final java.util.logging.Level SEVERE;
+ field @NonNull public static final java.util.logging.Level WARNING;
}
public class LogManager {
ctor protected LogManager();
method public boolean addLogger(java.util.logging.Logger);
- method public deprecated void addPropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
+ method @Deprecated public void addPropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
method public void checkAccess() throws java.lang.SecurityException;
method public static java.util.logging.LogManager getLogManager();
- method public java.util.logging.Logger getLogger(java.lang.String);
+ method public java.util.logging.Logger getLogger(String);
method public java.util.Enumeration<java.lang.String> getLoggerNames();
- method public static synchronized java.util.logging.LoggingMXBean getLoggingMXBean();
- method public java.lang.String getProperty(java.lang.String);
+ method public static java.util.logging.LoggingMXBean getLoggingMXBean();
+ method public String getProperty(String);
method public void readConfiguration() throws java.io.IOException, java.lang.SecurityException;
method public void readConfiguration(java.io.InputStream) throws java.io.IOException, java.lang.SecurityException;
- method public deprecated void removePropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
+ method @Deprecated public void removePropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
method public void reset() throws java.lang.SecurityException;
- field public static final java.lang.String LOGGING_MXBEAN_NAME = "java.util.logging:type=Logging";
+ field public static final String LOGGING_MXBEAN_NAME = "java.util.logging:type=Logging";
}
public class LogRecord implements java.io.Serializable {
- ctor public LogRecord(java.util.logging.Level, java.lang.String);
+ ctor public LogRecord(java.util.logging.Level, String);
method public java.util.logging.Level getLevel();
- method public java.lang.String getLoggerName();
- method public java.lang.String getMessage();
+ method public String getLoggerName();
+ method public String getMessage();
method public long getMillis();
- method public java.lang.Object[] getParameters();
+ method public Object[] getParameters();
method public java.util.ResourceBundle getResourceBundle();
- method public java.lang.String getResourceBundleName();
+ method public String getResourceBundleName();
method public long getSequenceNumber();
- method public java.lang.String getSourceClassName();
- method public java.lang.String getSourceMethodName();
+ method public String getSourceClassName();
+ method public String getSourceMethodName();
method public int getThreadID();
- method public java.lang.Throwable getThrown();
+ method public Throwable getThrown();
method public void setLevel(java.util.logging.Level);
- method public void setLoggerName(java.lang.String);
- method public void setMessage(java.lang.String);
+ method public void setLoggerName(String);
+ method public void setMessage(String);
method public void setMillis(long);
- method public void setParameters(java.lang.Object[]);
+ method public void setParameters(Object[]);
method public void setResourceBundle(java.util.ResourceBundle);
- method public void setResourceBundleName(java.lang.String);
+ method public void setResourceBundleName(String);
method public void setSequenceNumber(long);
- method public void setSourceClassName(java.lang.String);
- method public void setSourceMethodName(java.lang.String);
+ method public void setSourceClassName(String);
+ method public void setSourceMethodName(String);
method public void setThreadID(int);
- method public void setThrown(java.lang.Throwable);
+ method public void setThrown(Throwable);
}
public class Logger {
- ctor protected Logger(java.lang.String, java.lang.String);
- method public void addHandler(java.util.logging.Handler) throws java.lang.SecurityException;
- method public void config(java.lang.String);
- method public void config(java.util.function.Supplier<java.lang.String>);
- method public void entering(java.lang.String, java.lang.String);
- method public void entering(java.lang.String, java.lang.String, java.lang.Object);
- method public void entering(java.lang.String, java.lang.String, java.lang.Object[]);
- method public void exiting(java.lang.String, java.lang.String);
- method public void exiting(java.lang.String, java.lang.String, java.lang.Object);
- method public void fine(java.lang.String);
- method public void fine(java.util.function.Supplier<java.lang.String>);
- method public void finer(java.lang.String);
- method public void finer(java.util.function.Supplier<java.lang.String>);
- method public void finest(java.lang.String);
- method public void finest(java.util.function.Supplier<java.lang.String>);
- method public static java.util.logging.Logger getAnonymousLogger();
- method public static java.util.logging.Logger getAnonymousLogger(java.lang.String);
- method public java.util.logging.Filter getFilter();
- method public static final java.util.logging.Logger getGlobal();
+ ctor protected Logger(@Nullable String, @Nullable String);
+ method public void addHandler(@NonNull java.util.logging.Handler) throws java.lang.SecurityException;
+ method public void config(@Nullable String);
+ method public void config(@NonNull java.util.function.Supplier<java.lang.String>);
+ method public void entering(@Nullable String, @Nullable String);
+ method public void entering(@Nullable String, @Nullable String, @Nullable Object);
+ method public void entering(@Nullable String, @Nullable String, Object[]);
+ method public void exiting(@Nullable String, @Nullable String);
+ method public void exiting(@Nullable String, @Nullable String, @Nullable Object);
+ method public void fine(@Nullable String);
+ method public void fine(@NonNull java.util.function.Supplier<java.lang.String>);
+ method public void finer(@Nullable String);
+ method public void finer(@NonNull java.util.function.Supplier<java.lang.String>);
+ method public void finest(@Nullable String);
+ method public void finest(@NonNull java.util.function.Supplier<java.lang.String>);
+ method @NonNull public static java.util.logging.Logger getAnonymousLogger();
+ method @NonNull public static java.util.logging.Logger getAnonymousLogger(@Nullable String);
+ method @Nullable public java.util.logging.Filter getFilter();
+ method @NonNull public static final java.util.logging.Logger getGlobal();
method public java.util.logging.Handler[] getHandlers();
- method public java.util.logging.Level getLevel();
- method public static java.util.logging.Logger getLogger(java.lang.String);
- method public static java.util.logging.Logger getLogger(java.lang.String, java.lang.String);
- method public java.lang.String getName();
- method public java.util.logging.Logger getParent();
- method public java.util.ResourceBundle getResourceBundle();
- method public java.lang.String getResourceBundleName();
+ method @Nullable public java.util.logging.Level getLevel();
+ method @NonNull public static java.util.logging.Logger getLogger(@NonNull String);
+ method @NonNull public static java.util.logging.Logger getLogger(@NonNull String, @Nullable String);
+ method @Nullable public String getName();
+ method @Nullable public java.util.logging.Logger getParent();
+ method @Nullable public java.util.ResourceBundle getResourceBundle();
+ method @Nullable public String getResourceBundleName();
method public boolean getUseParentHandlers();
- method public void info(java.lang.String);
- method public void info(java.util.function.Supplier<java.lang.String>);
- method public boolean isLoggable(java.util.logging.Level);
- method public void log(java.util.logging.LogRecord);
- method public void log(java.util.logging.Level, java.lang.String);
- method public void log(java.util.logging.Level, java.util.function.Supplier<java.lang.String>);
- method public void log(java.util.logging.Level, java.lang.String, java.lang.Object);
- method public void log(java.util.logging.Level, java.lang.String, java.lang.Object[]);
- method public void log(java.util.logging.Level, java.lang.String, java.lang.Throwable);
- method public void log(java.util.logging.Level, java.lang.Throwable, java.util.function.Supplier<java.lang.String>);
- method public void logp(java.util.logging.Level, java.lang.String, java.lang.String, java.lang.String);
- method public void logp(java.util.logging.Level, java.lang.String, java.lang.String, java.util.function.Supplier<java.lang.String>);
- method public void logp(java.util.logging.Level, java.lang.String, java.lang.String, java.lang.String, java.lang.Object);
- method public void logp(java.util.logging.Level, java.lang.String, java.lang.String, java.lang.String, java.lang.Object[]);
- method public void logp(java.util.logging.Level, java.lang.String, java.lang.String, java.lang.String, java.lang.Throwable);
- method public void logp(java.util.logging.Level, java.lang.String, java.lang.String, java.lang.Throwable, java.util.function.Supplier<java.lang.String>);
- method public deprecated void logrb(java.util.logging.Level, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public deprecated void logrb(java.util.logging.Level, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Object);
- method public deprecated void logrb(java.util.logging.Level, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Object[]);
- method public void logrb(java.util.logging.Level, java.lang.String, java.lang.String, java.util.ResourceBundle, java.lang.String, java.lang.Object...);
- method public deprecated void logrb(java.util.logging.Level, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Throwable);
- method public void logrb(java.util.logging.Level, java.lang.String, java.lang.String, java.util.ResourceBundle, java.lang.String, java.lang.Throwable);
- method public void removeHandler(java.util.logging.Handler) throws java.lang.SecurityException;
- method public void setFilter(java.util.logging.Filter) throws java.lang.SecurityException;
- method public void setLevel(java.util.logging.Level) throws java.lang.SecurityException;
- method public void setParent(java.util.logging.Logger);
- method public void setResourceBundle(java.util.ResourceBundle);
+ method public void info(@Nullable String);
+ method public void info(@NonNull java.util.function.Supplier<java.lang.String>);
+ method public boolean isLoggable(@NonNull java.util.logging.Level);
+ method public void log(@NonNull java.util.logging.LogRecord);
+ method public void log(@NonNull java.util.logging.Level, @Nullable String);
+ method public void log(@NonNull java.util.logging.Level, @NonNull java.util.function.Supplier<java.lang.String>);
+ method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Object);
+ method public void log(@NonNull java.util.logging.Level, @Nullable String, Object[]);
+ method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Throwable);
+ method public void log(@NonNull java.util.logging.Level, @Nullable Throwable, @NonNull java.util.function.Supplier<java.lang.String>);
+ method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String);
+ method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @NonNull java.util.function.Supplier<java.lang.String>);
+ method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Object);
+ method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, Object[]);
+ method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Throwable);
+ method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable Throwable, @NonNull java.util.function.Supplier<java.lang.String>);
+ method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String);
+ method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Object);
+ method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, Object[]);
+ method public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable java.util.ResourceBundle, @Nullable String, java.lang.Object...);
+ method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Throwable);
+ method public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable java.util.ResourceBundle, @Nullable String, @Nullable Throwable);
+ method public void removeHandler(@Nullable java.util.logging.Handler) throws java.lang.SecurityException;
+ method public void setFilter(@Nullable java.util.logging.Filter) throws java.lang.SecurityException;
+ method public void setLevel(@Nullable java.util.logging.Level) throws java.lang.SecurityException;
+ method public void setParent(@NonNull java.util.logging.Logger);
+ method public void setResourceBundle(@NonNull java.util.ResourceBundle);
method public void setUseParentHandlers(boolean);
- method public void severe(java.lang.String);
- method public void severe(java.util.function.Supplier<java.lang.String>);
- method public void throwing(java.lang.String, java.lang.String, java.lang.Throwable);
- method public void warning(java.lang.String);
- method public void warning(java.util.function.Supplier<java.lang.String>);
- field public static final java.lang.String GLOBAL_LOGGER_NAME = "global";
- field public static final deprecated java.util.logging.Logger global;
+ method public void severe(@Nullable String);
+ method public void severe(@NonNull java.util.function.Supplier<java.lang.String>);
+ method public void throwing(@Nullable String, @Nullable String, @Nullable Throwable);
+ method public void warning(@Nullable String);
+ method public void warning(@NonNull java.util.function.Supplier<java.lang.String>);
+ field @NonNull public static final String GLOBAL_LOGGER_NAME = "global";
+ field @Deprecated @NonNull public static final java.util.logging.Logger global;
}
- public abstract interface LoggingMXBean {
- method public abstract java.lang.String getLoggerLevel(java.lang.String);
- method public abstract java.util.List<java.lang.String> getLoggerNames();
- method public abstract java.lang.String getParentLoggerName(java.lang.String);
- method public abstract void setLoggerLevel(java.lang.String, java.lang.String);
+ public interface LoggingMXBean {
+ method public String getLoggerLevel(String);
+ method public java.util.List<java.lang.String> getLoggerNames();
+ method public String getParentLoggerName(String);
+ method public void setLoggerLevel(String, String);
}
public final class LoggingPermission extends java.security.BasicPermission {
- ctor public LoggingPermission(java.lang.String, java.lang.String) throws java.lang.IllegalArgumentException;
+ ctor public LoggingPermission(String, String) throws java.lang.IllegalArgumentException;
}
public class MemoryHandler extends java.util.logging.Handler {
@@ -72748,33 +72735,33 @@
method public void close() throws java.lang.SecurityException;
method public void flush();
method public java.util.logging.Level getPushLevel();
- method public synchronized void publish(java.util.logging.LogRecord);
- method public synchronized void push();
- method public synchronized void setPushLevel(java.util.logging.Level) throws java.lang.SecurityException;
+ method public void publish(java.util.logging.LogRecord);
+ method public void push();
+ method public void setPushLevel(java.util.logging.Level) throws java.lang.SecurityException;
}
public class SimpleFormatter extends java.util.logging.Formatter {
ctor public SimpleFormatter();
- method public synchronized java.lang.String format(java.util.logging.LogRecord);
+ method public String format(java.util.logging.LogRecord);
}
public class SocketHandler extends java.util.logging.StreamHandler {
ctor public SocketHandler() throws java.io.IOException;
- ctor public SocketHandler(java.lang.String, int) throws java.io.IOException;
+ ctor public SocketHandler(String, int) throws java.io.IOException;
}
public class StreamHandler extends java.util.logging.Handler {
ctor public StreamHandler();
ctor public StreamHandler(java.io.OutputStream, java.util.logging.Formatter);
- method public synchronized void close() throws java.lang.SecurityException;
- method public synchronized void flush();
- method public synchronized void publish(java.util.logging.LogRecord);
- method protected synchronized void setOutputStream(java.io.OutputStream) throws java.lang.SecurityException;
+ method public void close() throws java.lang.SecurityException;
+ method public void flush();
+ method public void publish(java.util.logging.LogRecord);
+ method protected void setOutputStream(java.io.OutputStream) throws java.lang.SecurityException;
}
public class XMLFormatter extends java.util.logging.Formatter {
ctor public XMLFormatter();
- method public java.lang.String format(java.util.logging.LogRecord);
+ method public String format(java.util.logging.LogRecord);
}
}
@@ -72782,65 +72769,65 @@
package java.util.prefs {
public abstract class AbstractPreferences extends java.util.prefs.Preferences {
- ctor protected AbstractPreferences(java.util.prefs.AbstractPreferences, java.lang.String);
- method public java.lang.String absolutePath();
+ ctor protected AbstractPreferences(java.util.prefs.AbstractPreferences, String);
+ method public String absolutePath();
method public void addNodeChangeListener(java.util.prefs.NodeChangeListener);
method public void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
method protected final java.util.prefs.AbstractPreferences[] cachedChildren();
- method protected abstract java.util.prefs.AbstractPreferences childSpi(java.lang.String);
- method public java.lang.String[] childrenNames() throws java.util.prefs.BackingStoreException;
- method protected abstract java.lang.String[] childrenNamesSpi() throws java.util.prefs.BackingStoreException;
+ method protected abstract java.util.prefs.AbstractPreferences childSpi(String);
+ method public String[] childrenNames() throws java.util.prefs.BackingStoreException;
+ method protected abstract String[] childrenNamesSpi() throws java.util.prefs.BackingStoreException;
method public void clear() throws java.util.prefs.BackingStoreException;
method public void exportNode(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
method public void exportSubtree(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
method public void flush() throws java.util.prefs.BackingStoreException;
method protected abstract void flushSpi() throws java.util.prefs.BackingStoreException;
- method public java.lang.String get(java.lang.String, java.lang.String);
- method public boolean getBoolean(java.lang.String, boolean);
- method public byte[] getByteArray(java.lang.String, byte[]);
- method protected java.util.prefs.AbstractPreferences getChild(java.lang.String) throws java.util.prefs.BackingStoreException;
- method public double getDouble(java.lang.String, double);
- method public float getFloat(java.lang.String, float);
- method public int getInt(java.lang.String, int);
- method public long getLong(java.lang.String, long);
- method protected abstract java.lang.String getSpi(java.lang.String);
+ method public String get(String, String);
+ method public boolean getBoolean(String, boolean);
+ method public byte[] getByteArray(String, byte[]);
+ method protected java.util.prefs.AbstractPreferences getChild(String) throws java.util.prefs.BackingStoreException;
+ method public double getDouble(String, double);
+ method public float getFloat(String, float);
+ method public int getInt(String, int);
+ method public long getLong(String, long);
+ method protected abstract String getSpi(String);
method protected boolean isRemoved();
method public boolean isUserNode();
- method public java.lang.String[] keys() throws java.util.prefs.BackingStoreException;
- method protected abstract java.lang.String[] keysSpi() throws java.util.prefs.BackingStoreException;
- method public java.lang.String name();
- method public java.util.prefs.Preferences node(java.lang.String);
- method public boolean nodeExists(java.lang.String) throws java.util.prefs.BackingStoreException;
+ method public String[] keys() throws java.util.prefs.BackingStoreException;
+ method protected abstract String[] keysSpi() throws java.util.prefs.BackingStoreException;
+ method public String name();
+ method public java.util.prefs.Preferences node(String);
+ method public boolean nodeExists(String) throws java.util.prefs.BackingStoreException;
method public java.util.prefs.Preferences parent();
- method public void put(java.lang.String, java.lang.String);
- method public void putBoolean(java.lang.String, boolean);
- method public void putByteArray(java.lang.String, byte[]);
- method public void putDouble(java.lang.String, double);
- method public void putFloat(java.lang.String, float);
- method public void putInt(java.lang.String, int);
- method public void putLong(java.lang.String, long);
- method protected abstract void putSpi(java.lang.String, java.lang.String);
- method public void remove(java.lang.String);
+ method public void put(String, String);
+ method public void putBoolean(String, boolean);
+ method public void putByteArray(String, byte[]);
+ method public void putDouble(String, double);
+ method public void putFloat(String, float);
+ method public void putInt(String, int);
+ method public void putLong(String, long);
+ method protected abstract void putSpi(String, String);
+ method public void remove(String);
method public void removeNode() throws java.util.prefs.BackingStoreException;
method public void removeNodeChangeListener(java.util.prefs.NodeChangeListener);
method protected abstract void removeNodeSpi() throws java.util.prefs.BackingStoreException;
method public void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
- method protected abstract void removeSpi(java.lang.String);
+ method protected abstract void removeSpi(String);
method public void sync() throws java.util.prefs.BackingStoreException;
method protected abstract void syncSpi() throws java.util.prefs.BackingStoreException;
- field protected final java.lang.Object lock;
+ field protected final Object lock;
field protected boolean newNode;
}
public class BackingStoreException extends java.lang.Exception {
- ctor public BackingStoreException(java.lang.String);
- ctor public BackingStoreException(java.lang.Throwable);
+ ctor public BackingStoreException(String);
+ ctor public BackingStoreException(Throwable);
}
public class InvalidPreferencesFormatException extends java.lang.Exception {
- ctor public InvalidPreferencesFormatException(java.lang.Throwable);
- ctor public InvalidPreferencesFormatException(java.lang.String);
- ctor public InvalidPreferencesFormatException(java.lang.String, java.lang.Throwable);
+ ctor public InvalidPreferencesFormatException(Throwable);
+ ctor public InvalidPreferencesFormatException(String);
+ ctor public InvalidPreferencesFormatException(String, Throwable);
}
public class NodeChangeEvent extends java.util.EventObject {
@@ -72849,135 +72836,135 @@
method public java.util.prefs.Preferences getParent();
}
- public abstract interface NodeChangeListener implements java.util.EventListener {
- method public abstract void childAdded(java.util.prefs.NodeChangeEvent);
- method public abstract void childRemoved(java.util.prefs.NodeChangeEvent);
+ public interface NodeChangeListener extends java.util.EventListener {
+ method public void childAdded(java.util.prefs.NodeChangeEvent);
+ method public void childRemoved(java.util.prefs.NodeChangeEvent);
}
public class PreferenceChangeEvent extends java.util.EventObject {
- ctor public PreferenceChangeEvent(java.util.prefs.Preferences, java.lang.String, java.lang.String);
- method public java.lang.String getKey();
- method public java.lang.String getNewValue();
+ ctor public PreferenceChangeEvent(java.util.prefs.Preferences, String, String);
+ method public String getKey();
+ method public String getNewValue();
method public java.util.prefs.Preferences getNode();
}
- public abstract interface PreferenceChangeListener implements java.util.EventListener {
- method public abstract void preferenceChange(java.util.prefs.PreferenceChangeEvent);
+ @java.lang.FunctionalInterface public interface PreferenceChangeListener extends java.util.EventListener {
+ method public void preferenceChange(java.util.prefs.PreferenceChangeEvent);
}
public abstract class Preferences {
ctor protected Preferences();
- method public abstract java.lang.String absolutePath();
+ method public abstract String absolutePath();
method public abstract void addNodeChangeListener(java.util.prefs.NodeChangeListener);
method public abstract void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
- method public abstract java.lang.String[] childrenNames() throws java.util.prefs.BackingStoreException;
+ method public abstract String[] childrenNames() throws java.util.prefs.BackingStoreException;
method public abstract void clear() throws java.util.prefs.BackingStoreException;
method public abstract void exportNode(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
method public abstract void exportSubtree(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
method public abstract void flush() throws java.util.prefs.BackingStoreException;
- method public abstract java.lang.String get(java.lang.String, java.lang.String);
- method public abstract boolean getBoolean(java.lang.String, boolean);
- method public abstract byte[] getByteArray(java.lang.String, byte[]);
- method public abstract double getDouble(java.lang.String, double);
- method public abstract float getFloat(java.lang.String, float);
- method public abstract int getInt(java.lang.String, int);
- method public abstract long getLong(java.lang.String, long);
+ method public abstract String get(String, String);
+ method public abstract boolean getBoolean(String, boolean);
+ method public abstract byte[] getByteArray(String, byte[]);
+ method public abstract double getDouble(String, double);
+ method public abstract float getFloat(String, float);
+ method public abstract int getInt(String, int);
+ method public abstract long getLong(String, long);
method public static void importPreferences(java.io.InputStream) throws java.io.IOException, java.util.prefs.InvalidPreferencesFormatException;
method public abstract boolean isUserNode();
- method public abstract java.lang.String[] keys() throws java.util.prefs.BackingStoreException;
- method public abstract java.lang.String name();
- method public abstract java.util.prefs.Preferences node(java.lang.String);
- method public abstract boolean nodeExists(java.lang.String) throws java.util.prefs.BackingStoreException;
+ method public abstract String[] keys() throws java.util.prefs.BackingStoreException;
+ method public abstract String name();
+ method public abstract java.util.prefs.Preferences node(String);
+ method public abstract boolean nodeExists(String) throws java.util.prefs.BackingStoreException;
method public abstract java.util.prefs.Preferences parent();
- method public abstract void put(java.lang.String, java.lang.String);
- method public abstract void putBoolean(java.lang.String, boolean);
- method public abstract void putByteArray(java.lang.String, byte[]);
- method public abstract void putDouble(java.lang.String, double);
- method public abstract void putFloat(java.lang.String, float);
- method public abstract void putInt(java.lang.String, int);
- method public abstract void putLong(java.lang.String, long);
- method public abstract void remove(java.lang.String);
+ method public abstract void put(String, String);
+ method public abstract void putBoolean(String, boolean);
+ method public abstract void putByteArray(String, byte[]);
+ method public abstract void putDouble(String, double);
+ method public abstract void putFloat(String, float);
+ method public abstract void putInt(String, int);
+ method public abstract void putLong(String, long);
+ method public abstract void remove(String);
method public abstract void removeNode() throws java.util.prefs.BackingStoreException;
method public abstract void removeNodeChangeListener(java.util.prefs.NodeChangeListener);
method public abstract void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
method public abstract void sync() throws java.util.prefs.BackingStoreException;
- method public static java.util.prefs.Preferences systemNodeForPackage(java.lang.Class<?>);
+ method public static java.util.prefs.Preferences systemNodeForPackage(Class<?>);
method public static java.util.prefs.Preferences systemRoot();
- method public abstract java.lang.String toString();
- method public static java.util.prefs.Preferences userNodeForPackage(java.lang.Class<?>);
+ method public abstract String toString();
+ method public static java.util.prefs.Preferences userNodeForPackage(Class<?>);
method public static java.util.prefs.Preferences userRoot();
field public static final int MAX_KEY_LENGTH = 80; // 0x50
field public static final int MAX_NAME_LENGTH = 80; // 0x50
field public static final int MAX_VALUE_LENGTH = 8192; // 0x2000
}
- public abstract interface PreferencesFactory {
- method public abstract java.util.prefs.Preferences systemRoot();
- method public abstract java.util.prefs.Preferences userRoot();
+ public interface PreferencesFactory {
+ method public java.util.prefs.Preferences systemRoot();
+ method public java.util.prefs.Preferences userRoot();
}
}
package java.util.regex {
- public abstract interface MatchResult {
- method public abstract int end();
- method public abstract int end(int);
- method public abstract java.lang.String group();
- method public abstract java.lang.String group(int);
- method public abstract int groupCount();
- method public abstract int start();
- method public abstract int start(int);
+ public interface MatchResult {
+ method public int end();
+ method public int end(int);
+ method public String group();
+ method public String group(int);
+ method public int groupCount();
+ method public int start();
+ method public int start(int);
}
public final class Matcher implements java.util.regex.MatchResult {
- method public java.util.regex.Matcher appendReplacement(java.lang.StringBuffer, java.lang.String);
- method public java.lang.StringBuffer appendTail(java.lang.StringBuffer);
+ method @NonNull public java.util.regex.Matcher appendReplacement(@NonNull StringBuffer, @NonNull String);
+ method @NonNull public StringBuffer appendTail(@NonNull StringBuffer);
method public int end();
method public int end(int);
- method public int end(java.lang.String);
+ method public int end(@NonNull String);
method public boolean find();
method public boolean find(int);
- method public java.lang.String group();
- method public java.lang.String group(int);
- method public java.lang.String group(java.lang.String);
+ method @NonNull public String group();
+ method @Nullable public String group(int);
+ method @Nullable public String group(@NonNull String);
method public int groupCount();
method public boolean hasAnchoringBounds();
method public boolean hasTransparentBounds();
method public boolean hitEnd();
method public boolean lookingAt();
method public boolean matches();
- method public java.util.regex.Pattern pattern();
- method public static java.lang.String quoteReplacement(java.lang.String);
- method public java.util.regex.Matcher region(int, int);
+ method @NonNull public java.util.regex.Pattern pattern();
+ method @NonNull public static String quoteReplacement(@NonNull String);
+ method @NonNull public java.util.regex.Matcher region(int, int);
method public int regionEnd();
method public int regionStart();
- method public java.lang.String replaceAll(java.lang.String);
- method public java.lang.String replaceFirst(java.lang.String);
+ method @NonNull public String replaceAll(@NonNull String);
+ method @NonNull public String replaceFirst(@NonNull String);
method public boolean requireEnd();
- method public java.util.regex.Matcher reset();
- method public java.util.regex.Matcher reset(java.lang.CharSequence);
+ method @NonNull public java.util.regex.Matcher reset();
+ method @NonNull public java.util.regex.Matcher reset(@NonNull CharSequence);
method public int start();
method public int start(int);
- method public int start(java.lang.String);
- method public java.util.regex.MatchResult toMatchResult();
- method public java.util.regex.Matcher useAnchoringBounds(boolean);
- method public java.util.regex.Matcher usePattern(java.util.regex.Pattern);
- method public java.util.regex.Matcher useTransparentBounds(boolean);
+ method public int start(@NonNull String);
+ method @NonNull public java.util.regex.MatchResult toMatchResult();
+ method @NonNull public java.util.regex.Matcher useAnchoringBounds(boolean);
+ method @NonNull public java.util.regex.Matcher usePattern(@NonNull java.util.regex.Pattern);
+ method @NonNull public java.util.regex.Matcher useTransparentBounds(boolean);
}
public final class Pattern implements java.io.Serializable {
- method public java.util.function.Predicate<java.lang.String> asPredicate();
- method public static java.util.regex.Pattern compile(java.lang.String);
- method public static java.util.regex.Pattern compile(java.lang.String, int);
+ method @NonNull public java.util.function.Predicate<java.lang.String> asPredicate();
+ method @NonNull public static java.util.regex.Pattern compile(@NonNull String);
+ method @NonNull public static java.util.regex.Pattern compile(@NonNull String, int);
method public int flags();
- method public java.util.regex.Matcher matcher(java.lang.CharSequence);
- method public static boolean matches(java.lang.String, java.lang.CharSequence);
- method public java.lang.String pattern();
- method public static java.lang.String quote(java.lang.String);
- method public java.lang.String[] split(java.lang.CharSequence, int);
- method public java.lang.String[] split(java.lang.CharSequence);
- method public java.util.stream.Stream<java.lang.String> splitAsStream(java.lang.CharSequence);
+ method @NonNull public java.util.regex.Matcher matcher(@NonNull CharSequence);
+ method public static boolean matches(@NonNull String, @NonNull CharSequence);
+ method @NonNull public String pattern();
+ method @NonNull public static String quote(@NonNull String);
+ method public String[] split(@NonNull CharSequence, int);
+ method public String[] split(@NonNull CharSequence);
+ method @NonNull public java.util.stream.Stream<java.lang.String> splitAsStream(@NonNull CharSequence);
field public static final int CANON_EQ = 128; // 0x80
field public static final int CASE_INSENSITIVE = 2; // 0x2
field public static final int COMMENTS = 4; // 0x4
@@ -72990,281 +72977,279 @@
}
public class PatternSyntaxException extends java.lang.IllegalArgumentException {
- ctor public PatternSyntaxException(java.lang.String, java.lang.String, int);
- method public java.lang.String getDescription();
+ ctor public PatternSyntaxException(String, String, int);
+ method public String getDescription();
method public int getIndex();
- method public java.lang.String getPattern();
+ method public String getPattern();
}
}
package java.util.stream {
- public abstract interface BaseStream<T, S extends java.util.stream.BaseStream<T, S>> implements java.lang.AutoCloseable {
- method public abstract void close();
- method public abstract boolean isParallel();
- method public abstract java.util.Iterator<T> iterator();
- method public abstract S onClose(java.lang.Runnable);
- method public abstract S parallel();
- method public abstract S sequential();
- method public abstract java.util.Spliterator<T> spliterator();
- method public abstract S unordered();
+ public interface BaseStream<T, S extends java.util.stream.BaseStream<T, S>> extends java.lang.AutoCloseable {
+ method public void close();
+ method public boolean isParallel();
+ method public java.util.Iterator<T> iterator();
+ method public S onClose(Runnable);
+ method public S parallel();
+ method public S sequential();
+ method public java.util.Spliterator<T> spliterator();
+ method public S unordered();
}
- public abstract interface Collector<T, A, R> {
- method public abstract java.util.function.BiConsumer<A, T> accumulator();
- method public abstract java.util.Set<java.util.stream.Collector.Characteristics> characteristics();
- method public abstract java.util.function.BinaryOperator<A> combiner();
- method public abstract java.util.function.Function<A, R> finisher();
- method public static <T, R> java.util.stream.Collector<T, R, R> of(java.util.function.Supplier<R>, java.util.function.BiConsumer<R, T>, java.util.function.BinaryOperator<R>, java.util.stream.Collector.Characteristics...);
- method public static <T, A, R> java.util.stream.Collector<T, A, R> of(java.util.function.Supplier<A>, java.util.function.BiConsumer<A, T>, java.util.function.BinaryOperator<A>, java.util.function.Function<A, R>, java.util.stream.Collector.Characteristics...);
- method public abstract java.util.function.Supplier<A> supplier();
+ public interface Collector<T, A, R> {
+ method public java.util.function.BiConsumer<A,T> accumulator();
+ method public java.util.Set<java.util.stream.Collector.Characteristics> characteristics();
+ method public java.util.function.BinaryOperator<A> combiner();
+ method public java.util.function.Function<A,R> finisher();
+ method public static <T, R> java.util.stream.Collector<T,R,R> of(java.util.function.Supplier<R>, java.util.function.BiConsumer<R,T>, java.util.function.BinaryOperator<R>, java.util.stream.Collector.Characteristics...);
+ method public static <T, A, R> java.util.stream.Collector<T,A,R> of(java.util.function.Supplier<A>, java.util.function.BiConsumer<A,T>, java.util.function.BinaryOperator<A>, java.util.function.Function<A,R>, java.util.stream.Collector.Characteristics...);
+ method public java.util.function.Supplier<A> supplier();
}
- public static final class Collector.Characteristics extends java.lang.Enum {
- method public static java.util.stream.Collector.Characteristics valueOf(java.lang.String);
- method public static final java.util.stream.Collector.Characteristics[] values();
+ public enum Collector.Characteristics {
enum_constant public static final java.util.stream.Collector.Characteristics CONCURRENT;
enum_constant public static final java.util.stream.Collector.Characteristics IDENTITY_FINISH;
enum_constant public static final java.util.stream.Collector.Characteristics UNORDERED;
}
public final class Collectors {
- method public static <T> java.util.stream.Collector<T, ?, java.lang.Double> averagingDouble(java.util.function.ToDoubleFunction<? super T>);
- method public static <T> java.util.stream.Collector<T, ?, java.lang.Double> averagingInt(java.util.function.ToIntFunction<? super T>);
- method public static <T> java.util.stream.Collector<T, ?, java.lang.Double> averagingLong(java.util.function.ToLongFunction<? super T>);
- method public static <T, A, R, RR> java.util.stream.Collector<T, A, RR> collectingAndThen(java.util.stream.Collector<T, A, R>, java.util.function.Function<R, RR>);
- method public static <T> java.util.stream.Collector<T, ?, java.lang.Long> counting();
- method public static <T, K> java.util.stream.Collector<T, ?, java.util.Map<K, java.util.List<T>>> groupingBy(java.util.function.Function<? super T, ? extends K>);
- method public static <T, K, A, D> java.util.stream.Collector<T, ?, java.util.Map<K, D>> groupingBy(java.util.function.Function<? super T, ? extends K>, java.util.stream.Collector<? super T, A, D>);
- method public static <T, K, D, A, M extends java.util.Map<K, D>> java.util.stream.Collector<T, ?, M> groupingBy(java.util.function.Function<? super T, ? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T, A, D>);
- method public static <T, K> java.util.stream.Collector<T, ?, java.util.concurrent.ConcurrentMap<K, java.util.List<T>>> groupingByConcurrent(java.util.function.Function<? super T, ? extends K>);
- method public static <T, K, A, D> java.util.stream.Collector<T, ?, java.util.concurrent.ConcurrentMap<K, D>> groupingByConcurrent(java.util.function.Function<? super T, ? extends K>, java.util.stream.Collector<? super T, A, D>);
- method public static <T, K, A, D, M extends java.util.concurrent.ConcurrentMap<K, D>> java.util.stream.Collector<T, ?, M> groupingByConcurrent(java.util.function.Function<? super T, ? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T, A, D>);
- method public static java.util.stream.Collector<java.lang.CharSequence, ?, java.lang.String> joining();
- method public static java.util.stream.Collector<java.lang.CharSequence, ?, java.lang.String> joining(java.lang.CharSequence);
- method public static java.util.stream.Collector<java.lang.CharSequence, ?, java.lang.String> joining(java.lang.CharSequence, java.lang.CharSequence, java.lang.CharSequence);
- method public static <T, U, A, R> java.util.stream.Collector<T, ?, R> mapping(java.util.function.Function<? super T, ? extends U>, java.util.stream.Collector<? super U, A, R>);
- method public static <T> java.util.stream.Collector<T, ?, java.util.Optional<T>> maxBy(java.util.Comparator<? super T>);
- method public static <T> java.util.stream.Collector<T, ?, java.util.Optional<T>> minBy(java.util.Comparator<? super T>);
- method public static <T> java.util.stream.Collector<T, ?, java.util.Map<java.lang.Boolean, java.util.List<T>>> partitioningBy(java.util.function.Predicate<? super T>);
- method public static <T, D, A> java.util.stream.Collector<T, ?, java.util.Map<java.lang.Boolean, D>> partitioningBy(java.util.function.Predicate<? super T>, java.util.stream.Collector<? super T, A, D>);
- method public static <T> java.util.stream.Collector<T, ?, T> reducing(T, java.util.function.BinaryOperator<T>);
- method public static <T> java.util.stream.Collector<T, ?, java.util.Optional<T>> reducing(java.util.function.BinaryOperator<T>);
- method public static <T, U> java.util.stream.Collector<T, ?, U> reducing(U, java.util.function.Function<? super T, ? extends U>, java.util.function.BinaryOperator<U>);
- method public static <T> java.util.stream.Collector<T, ?, java.util.DoubleSummaryStatistics> summarizingDouble(java.util.function.ToDoubleFunction<? super T>);
- method public static <T> java.util.stream.Collector<T, ?, java.util.IntSummaryStatistics> summarizingInt(java.util.function.ToIntFunction<? super T>);
- method public static <T> java.util.stream.Collector<T, ?, java.util.LongSummaryStatistics> summarizingLong(java.util.function.ToLongFunction<? super T>);
- method public static <T> java.util.stream.Collector<T, ?, java.lang.Double> summingDouble(java.util.function.ToDoubleFunction<? super T>);
- method public static <T> java.util.stream.Collector<T, ?, java.lang.Integer> summingInt(java.util.function.ToIntFunction<? super T>);
- method public static <T> java.util.stream.Collector<T, ?, java.lang.Long> summingLong(java.util.function.ToLongFunction<? super T>);
- method public static <T, C extends java.util.Collection<T>> java.util.stream.Collector<T, ?, C> toCollection(java.util.function.Supplier<C>);
- method public static <T, K, U> java.util.stream.Collector<T, ?, java.util.concurrent.ConcurrentMap<K, U>> toConcurrentMap(java.util.function.Function<? super T, ? extends K>, java.util.function.Function<? super T, ? extends U>);
- method public static <T, K, U> java.util.stream.Collector<T, ?, java.util.concurrent.ConcurrentMap<K, U>> toConcurrentMap(java.util.function.Function<? super T, ? extends K>, java.util.function.Function<? super T, ? extends U>, java.util.function.BinaryOperator<U>);
- method public static <T, K, U, M extends java.util.concurrent.ConcurrentMap<K, U>> java.util.stream.Collector<T, ?, M> toConcurrentMap(java.util.function.Function<? super T, ? extends K>, java.util.function.Function<? super T, ? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
- method public static <T> java.util.stream.Collector<T, ?, java.util.List<T>> toList();
- method public static <T, K, U> java.util.stream.Collector<T, ?, java.util.Map<K, U>> toMap(java.util.function.Function<? super T, ? extends K>, java.util.function.Function<? super T, ? extends U>);
- method public static <T, K, U> java.util.stream.Collector<T, ?, java.util.Map<K, U>> toMap(java.util.function.Function<? super T, ? extends K>, java.util.function.Function<? super T, ? extends U>, java.util.function.BinaryOperator<U>);
- method public static <T, K, U, M extends java.util.Map<K, U>> java.util.stream.Collector<T, ?, M> toMap(java.util.function.Function<? super T, ? extends K>, java.util.function.Function<? super T, ? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
- method public static <T> java.util.stream.Collector<T, ?, java.util.Set<T>> toSet();
+ method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingDouble(java.util.function.ToDoubleFunction<? super T>);
+ method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingInt(java.util.function.ToIntFunction<? super T>);
+ method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingLong(java.util.function.ToLongFunction<? super T>);
+ method public static <T, A, R, RR> java.util.stream.Collector<T,A,RR> collectingAndThen(java.util.stream.Collector<T,A,R>, java.util.function.Function<R,RR>);
+ method public static <T> java.util.stream.Collector<T,?,java.lang.Long> counting();
+ method public static <T, K> java.util.stream.Collector<T,?,java.util.Map<K,java.util.List<T>>> groupingBy(java.util.function.Function<? super T,? extends K>);
+ method public static <T, K, A, D> java.util.stream.Collector<T,?,java.util.Map<K,D>> groupingBy(java.util.function.Function<? super T,? extends K>, java.util.stream.Collector<? super T,A,D>);
+ method public static <T, K, D, A, M extends java.util.Map<K, D>> java.util.stream.Collector<T,?,M> groupingBy(java.util.function.Function<? super T,? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T,A,D>);
+ method public static <T, K> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,java.util.List<T>>> groupingByConcurrent(java.util.function.Function<? super T,? extends K>);
+ method public static <T, K, A, D> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,D>> groupingByConcurrent(java.util.function.Function<? super T,? extends K>, java.util.stream.Collector<? super T,A,D>);
+ method public static <T, K, A, D, M extends java.util.concurrent.ConcurrentMap<K, D>> java.util.stream.Collector<T,?,M> groupingByConcurrent(java.util.function.Function<? super T,? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T,A,D>);
+ method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining();
+ method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining(CharSequence);
+ method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining(CharSequence, CharSequence, CharSequence);
+ method public static <T, U, A, R> java.util.stream.Collector<T,?,R> mapping(java.util.function.Function<? super T,? extends U>, java.util.stream.Collector<? super U,A,R>);
+ method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> maxBy(java.util.Comparator<? super T>);
+ method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> minBy(java.util.Comparator<? super T>);
+ method public static <T> java.util.stream.Collector<T,?,java.util.Map<java.lang.Boolean,java.util.List<T>>> partitioningBy(java.util.function.Predicate<? super T>);
+ method public static <T, D, A> java.util.stream.Collector<T,?,java.util.Map<java.lang.Boolean,D>> partitioningBy(java.util.function.Predicate<? super T>, java.util.stream.Collector<? super T,A,D>);
+ method public static <T> java.util.stream.Collector<T,?,T> reducing(T, java.util.function.BinaryOperator<T>);
+ method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> reducing(java.util.function.BinaryOperator<T>);
+ method public static <T, U> java.util.stream.Collector<T,?,U> reducing(U, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
+ method public static <T> java.util.stream.Collector<T,?,java.util.DoubleSummaryStatistics> summarizingDouble(java.util.function.ToDoubleFunction<? super T>);
+ method public static <T> java.util.stream.Collector<T,?,java.util.IntSummaryStatistics> summarizingInt(java.util.function.ToIntFunction<? super T>);
+ method public static <T> java.util.stream.Collector<T,?,java.util.LongSummaryStatistics> summarizingLong(java.util.function.ToLongFunction<? super T>);
+ method public static <T> java.util.stream.Collector<T,?,java.lang.Double> summingDouble(java.util.function.ToDoubleFunction<? super T>);
+ method public static <T> java.util.stream.Collector<T,?,java.lang.Integer> summingInt(java.util.function.ToIntFunction<? super T>);
+ method public static <T> java.util.stream.Collector<T,?,java.lang.Long> summingLong(java.util.function.ToLongFunction<? super T>);
+ method public static <T, C extends java.util.Collection<T>> java.util.stream.Collector<T,?,C> toCollection(java.util.function.Supplier<C>);
+ method public static <T, K, U> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,U>> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>);
+ method public static <T, K, U> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,U>> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
+ method public static <T, K, U, M extends java.util.concurrent.ConcurrentMap<K, U>> java.util.stream.Collector<T,?,M> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
+ method public static <T> java.util.stream.Collector<T,?,java.util.List<T>> toList();
+ method public static <T, K, U> java.util.stream.Collector<T,?,java.util.Map<K,U>> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>);
+ method public static <T, K, U> java.util.stream.Collector<T,?,java.util.Map<K,U>> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
+ method public static <T, K, U, M extends java.util.Map<K, U>> java.util.stream.Collector<T,?,M> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
+ method public static <T> java.util.stream.Collector<T,?,java.util.Set<T>> toSet();
}
- public abstract interface DoubleStream implements java.util.stream.BaseStream {
- method public abstract boolean allMatch(java.util.function.DoublePredicate);
- method public abstract boolean anyMatch(java.util.function.DoublePredicate);
- method public abstract java.util.OptionalDouble average();
- method public abstract java.util.stream.Stream<java.lang.Double> boxed();
+ public interface DoubleStream extends java.util.stream.BaseStream<java.lang.Double,java.util.stream.DoubleStream> {
+ method public boolean allMatch(java.util.function.DoublePredicate);
+ method public boolean anyMatch(java.util.function.DoublePredicate);
+ method public java.util.OptionalDouble average();
+ method public java.util.stream.Stream<java.lang.Double> boxed();
method public static java.util.stream.DoubleStream.Builder builder();
- method public abstract <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjDoubleConsumer<R>, java.util.function.BiConsumer<R, R>);
+ method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjDoubleConsumer<R>, java.util.function.BiConsumer<R,R>);
method public static java.util.stream.DoubleStream concat(java.util.stream.DoubleStream, java.util.stream.DoubleStream);
- method public abstract long count();
- method public abstract java.util.stream.DoubleStream distinct();
+ method public long count();
+ method public java.util.stream.DoubleStream distinct();
method public static java.util.stream.DoubleStream empty();
- method public abstract java.util.stream.DoubleStream filter(java.util.function.DoublePredicate);
- method public abstract java.util.OptionalDouble findAny();
- method public abstract java.util.OptionalDouble findFirst();
- method public abstract java.util.stream.DoubleStream flatMap(java.util.function.DoubleFunction<? extends java.util.stream.DoubleStream>);
- method public abstract void forEach(java.util.function.DoubleConsumer);
- method public abstract void forEachOrdered(java.util.function.DoubleConsumer);
+ method public java.util.stream.DoubleStream filter(java.util.function.DoublePredicate);
+ method public java.util.OptionalDouble findAny();
+ method public java.util.OptionalDouble findFirst();
+ method public java.util.stream.DoubleStream flatMap(java.util.function.DoubleFunction<? extends java.util.stream.DoubleStream>);
+ method public void forEach(java.util.function.DoubleConsumer);
+ method public void forEachOrdered(java.util.function.DoubleConsumer);
method public static java.util.stream.DoubleStream generate(java.util.function.DoubleSupplier);
method public static java.util.stream.DoubleStream iterate(double, java.util.function.DoubleUnaryOperator);
- method public abstract java.util.PrimitiveIterator.OfDouble iterator();
- method public abstract java.util.stream.DoubleStream limit(long);
- method public abstract java.util.stream.DoubleStream map(java.util.function.DoubleUnaryOperator);
- method public abstract java.util.stream.IntStream mapToInt(java.util.function.DoubleToIntFunction);
- method public abstract java.util.stream.LongStream mapToLong(java.util.function.DoubleToLongFunction);
- method public abstract <U> java.util.stream.Stream<U> mapToObj(java.util.function.DoubleFunction<? extends U>);
- method public abstract java.util.OptionalDouble max();
- method public abstract java.util.OptionalDouble min();
- method public abstract boolean noneMatch(java.util.function.DoublePredicate);
+ method public java.util.PrimitiveIterator.OfDouble iterator();
+ method public java.util.stream.DoubleStream limit(long);
+ method public java.util.stream.DoubleStream map(java.util.function.DoubleUnaryOperator);
+ method public java.util.stream.IntStream mapToInt(java.util.function.DoubleToIntFunction);
+ method public java.util.stream.LongStream mapToLong(java.util.function.DoubleToLongFunction);
+ method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.DoubleFunction<? extends U>);
+ method public java.util.OptionalDouble max();
+ method public java.util.OptionalDouble min();
+ method public boolean noneMatch(java.util.function.DoublePredicate);
method public static java.util.stream.DoubleStream of(double);
method public static java.util.stream.DoubleStream of(double...);
- method public abstract java.util.stream.DoubleStream parallel();
- method public abstract java.util.stream.DoubleStream peek(java.util.function.DoubleConsumer);
- method public abstract double reduce(double, java.util.function.DoubleBinaryOperator);
- method public abstract java.util.OptionalDouble reduce(java.util.function.DoubleBinaryOperator);
- method public abstract java.util.stream.DoubleStream sequential();
- method public abstract java.util.stream.DoubleStream skip(long);
- method public abstract java.util.stream.DoubleStream sorted();
- method public abstract java.util.Spliterator.OfDouble spliterator();
- method public abstract double sum();
- method public abstract java.util.DoubleSummaryStatistics summaryStatistics();
- method public abstract double[] toArray();
+ method public java.util.stream.DoubleStream parallel();
+ method public java.util.stream.DoubleStream peek(java.util.function.DoubleConsumer);
+ method public double reduce(double, java.util.function.DoubleBinaryOperator);
+ method public java.util.OptionalDouble reduce(java.util.function.DoubleBinaryOperator);
+ method public java.util.stream.DoubleStream sequential();
+ method public java.util.stream.DoubleStream skip(long);
+ method public java.util.stream.DoubleStream sorted();
+ method public java.util.Spliterator.OfDouble spliterator();
+ method public double sum();
+ method public java.util.DoubleSummaryStatistics summaryStatistics();
+ method public double[] toArray();
}
- public static abstract interface DoubleStream.Builder implements java.util.function.DoubleConsumer {
+ public static interface DoubleStream.Builder extends java.util.function.DoubleConsumer {
method public default java.util.stream.DoubleStream.Builder add(double);
- method public abstract java.util.stream.DoubleStream build();
+ method public java.util.stream.DoubleStream build();
}
- public abstract interface IntStream implements java.util.stream.BaseStream {
- method public abstract boolean allMatch(java.util.function.IntPredicate);
- method public abstract boolean anyMatch(java.util.function.IntPredicate);
- method public abstract java.util.stream.DoubleStream asDoubleStream();
- method public abstract java.util.stream.LongStream asLongStream();
- method public abstract java.util.OptionalDouble average();
- method public abstract java.util.stream.Stream<java.lang.Integer> boxed();
+ public interface IntStream extends java.util.stream.BaseStream<java.lang.Integer,java.util.stream.IntStream> {
+ method public boolean allMatch(java.util.function.IntPredicate);
+ method public boolean anyMatch(java.util.function.IntPredicate);
+ method public java.util.stream.DoubleStream asDoubleStream();
+ method public java.util.stream.LongStream asLongStream();
+ method public java.util.OptionalDouble average();
+ method public java.util.stream.Stream<java.lang.Integer> boxed();
method public static java.util.stream.IntStream.Builder builder();
- method public abstract <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjIntConsumer<R>, java.util.function.BiConsumer<R, R>);
+ method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjIntConsumer<R>, java.util.function.BiConsumer<R,R>);
method public static java.util.stream.IntStream concat(java.util.stream.IntStream, java.util.stream.IntStream);
- method public abstract long count();
- method public abstract java.util.stream.IntStream distinct();
+ method public long count();
+ method public java.util.stream.IntStream distinct();
method public static java.util.stream.IntStream empty();
- method public abstract java.util.stream.IntStream filter(java.util.function.IntPredicate);
- method public abstract java.util.OptionalInt findAny();
- method public abstract java.util.OptionalInt findFirst();
- method public abstract java.util.stream.IntStream flatMap(java.util.function.IntFunction<? extends java.util.stream.IntStream>);
- method public abstract void forEach(java.util.function.IntConsumer);
- method public abstract void forEachOrdered(java.util.function.IntConsumer);
+ method public java.util.stream.IntStream filter(java.util.function.IntPredicate);
+ method public java.util.OptionalInt findAny();
+ method public java.util.OptionalInt findFirst();
+ method public java.util.stream.IntStream flatMap(java.util.function.IntFunction<? extends java.util.stream.IntStream>);
+ method public void forEach(java.util.function.IntConsumer);
+ method public void forEachOrdered(java.util.function.IntConsumer);
method public static java.util.stream.IntStream generate(java.util.function.IntSupplier);
method public static java.util.stream.IntStream iterate(int, java.util.function.IntUnaryOperator);
- method public abstract java.util.PrimitiveIterator.OfInt iterator();
- method public abstract java.util.stream.IntStream limit(long);
- method public abstract java.util.stream.IntStream map(java.util.function.IntUnaryOperator);
- method public abstract java.util.stream.DoubleStream mapToDouble(java.util.function.IntToDoubleFunction);
- method public abstract java.util.stream.LongStream mapToLong(java.util.function.IntToLongFunction);
- method public abstract <U> java.util.stream.Stream<U> mapToObj(java.util.function.IntFunction<? extends U>);
- method public abstract java.util.OptionalInt max();
- method public abstract java.util.OptionalInt min();
- method public abstract boolean noneMatch(java.util.function.IntPredicate);
+ method public java.util.PrimitiveIterator.OfInt iterator();
+ method public java.util.stream.IntStream limit(long);
+ method public java.util.stream.IntStream map(java.util.function.IntUnaryOperator);
+ method public java.util.stream.DoubleStream mapToDouble(java.util.function.IntToDoubleFunction);
+ method public java.util.stream.LongStream mapToLong(java.util.function.IntToLongFunction);
+ method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.IntFunction<? extends U>);
+ method public java.util.OptionalInt max();
+ method public java.util.OptionalInt min();
+ method public boolean noneMatch(java.util.function.IntPredicate);
method public static java.util.stream.IntStream of(int);
method public static java.util.stream.IntStream of(int...);
- method public abstract java.util.stream.IntStream parallel();
- method public abstract java.util.stream.IntStream peek(java.util.function.IntConsumer);
+ method public java.util.stream.IntStream parallel();
+ method public java.util.stream.IntStream peek(java.util.function.IntConsumer);
method public static java.util.stream.IntStream range(int, int);
method public static java.util.stream.IntStream rangeClosed(int, int);
- method public abstract int reduce(int, java.util.function.IntBinaryOperator);
- method public abstract java.util.OptionalInt reduce(java.util.function.IntBinaryOperator);
- method public abstract java.util.stream.IntStream sequential();
- method public abstract java.util.stream.IntStream skip(long);
- method public abstract java.util.stream.IntStream sorted();
- method public abstract java.util.Spliterator.OfInt spliterator();
- method public abstract int sum();
- method public abstract java.util.IntSummaryStatistics summaryStatistics();
- method public abstract int[] toArray();
+ method public int reduce(int, java.util.function.IntBinaryOperator);
+ method public java.util.OptionalInt reduce(java.util.function.IntBinaryOperator);
+ method public java.util.stream.IntStream sequential();
+ method public java.util.stream.IntStream skip(long);
+ method public java.util.stream.IntStream sorted();
+ method public java.util.Spliterator.OfInt spliterator();
+ method public int sum();
+ method public java.util.IntSummaryStatistics summaryStatistics();
+ method public int[] toArray();
}
- public static abstract interface IntStream.Builder implements java.util.function.IntConsumer {
+ public static interface IntStream.Builder extends java.util.function.IntConsumer {
method public default java.util.stream.IntStream.Builder add(int);
- method public abstract java.util.stream.IntStream build();
+ method public java.util.stream.IntStream build();
}
- public abstract interface LongStream implements java.util.stream.BaseStream {
- method public abstract boolean allMatch(java.util.function.LongPredicate);
- method public abstract boolean anyMatch(java.util.function.LongPredicate);
- method public abstract java.util.stream.DoubleStream asDoubleStream();
- method public abstract java.util.OptionalDouble average();
- method public abstract java.util.stream.Stream<java.lang.Long> boxed();
+ public interface LongStream extends java.util.stream.BaseStream<java.lang.Long,java.util.stream.LongStream> {
+ method public boolean allMatch(java.util.function.LongPredicate);
+ method public boolean anyMatch(java.util.function.LongPredicate);
+ method public java.util.stream.DoubleStream asDoubleStream();
+ method public java.util.OptionalDouble average();
+ method public java.util.stream.Stream<java.lang.Long> boxed();
method public static java.util.stream.LongStream.Builder builder();
- method public abstract <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjLongConsumer<R>, java.util.function.BiConsumer<R, R>);
+ method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjLongConsumer<R>, java.util.function.BiConsumer<R,R>);
method public static java.util.stream.LongStream concat(java.util.stream.LongStream, java.util.stream.LongStream);
- method public abstract long count();
- method public abstract java.util.stream.LongStream distinct();
+ method public long count();
+ method public java.util.stream.LongStream distinct();
method public static java.util.stream.LongStream empty();
- method public abstract java.util.stream.LongStream filter(java.util.function.LongPredicate);
- method public abstract java.util.OptionalLong findAny();
- method public abstract java.util.OptionalLong findFirst();
- method public abstract java.util.stream.LongStream flatMap(java.util.function.LongFunction<? extends java.util.stream.LongStream>);
- method public abstract void forEach(java.util.function.LongConsumer);
- method public abstract void forEachOrdered(java.util.function.LongConsumer);
+ method public java.util.stream.LongStream filter(java.util.function.LongPredicate);
+ method public java.util.OptionalLong findAny();
+ method public java.util.OptionalLong findFirst();
+ method public java.util.stream.LongStream flatMap(java.util.function.LongFunction<? extends java.util.stream.LongStream>);
+ method public void forEach(java.util.function.LongConsumer);
+ method public void forEachOrdered(java.util.function.LongConsumer);
method public static java.util.stream.LongStream generate(java.util.function.LongSupplier);
method public static java.util.stream.LongStream iterate(long, java.util.function.LongUnaryOperator);
- method public abstract java.util.PrimitiveIterator.OfLong iterator();
- method public abstract java.util.stream.LongStream limit(long);
- method public abstract java.util.stream.LongStream map(java.util.function.LongUnaryOperator);
- method public abstract java.util.stream.DoubleStream mapToDouble(java.util.function.LongToDoubleFunction);
- method public abstract java.util.stream.IntStream mapToInt(java.util.function.LongToIntFunction);
- method public abstract <U> java.util.stream.Stream<U> mapToObj(java.util.function.LongFunction<? extends U>);
- method public abstract java.util.OptionalLong max();
- method public abstract java.util.OptionalLong min();
- method public abstract boolean noneMatch(java.util.function.LongPredicate);
+ method public java.util.PrimitiveIterator.OfLong iterator();
+ method public java.util.stream.LongStream limit(long);
+ method public java.util.stream.LongStream map(java.util.function.LongUnaryOperator);
+ method public java.util.stream.DoubleStream mapToDouble(java.util.function.LongToDoubleFunction);
+ method public java.util.stream.IntStream mapToInt(java.util.function.LongToIntFunction);
+ method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.LongFunction<? extends U>);
+ method public java.util.OptionalLong max();
+ method public java.util.OptionalLong min();
+ method public boolean noneMatch(java.util.function.LongPredicate);
method public static java.util.stream.LongStream of(long);
method public static java.util.stream.LongStream of(long...);
- method public abstract java.util.stream.LongStream parallel();
- method public abstract java.util.stream.LongStream peek(java.util.function.LongConsumer);
+ method public java.util.stream.LongStream parallel();
+ method public java.util.stream.LongStream peek(java.util.function.LongConsumer);
method public static java.util.stream.LongStream range(long, long);
method public static java.util.stream.LongStream rangeClosed(long, long);
- method public abstract long reduce(long, java.util.function.LongBinaryOperator);
- method public abstract java.util.OptionalLong reduce(java.util.function.LongBinaryOperator);
- method public abstract java.util.stream.LongStream sequential();
- method public abstract java.util.stream.LongStream skip(long);
- method public abstract java.util.stream.LongStream sorted();
- method public abstract java.util.Spliterator.OfLong spliterator();
- method public abstract long sum();
- method public abstract java.util.LongSummaryStatistics summaryStatistics();
- method public abstract long[] toArray();
+ method public long reduce(long, java.util.function.LongBinaryOperator);
+ method public java.util.OptionalLong reduce(java.util.function.LongBinaryOperator);
+ method public java.util.stream.LongStream sequential();
+ method public java.util.stream.LongStream skip(long);
+ method public java.util.stream.LongStream sorted();
+ method public java.util.Spliterator.OfLong spliterator();
+ method public long sum();
+ method public java.util.LongSummaryStatistics summaryStatistics();
+ method public long[] toArray();
}
- public static abstract interface LongStream.Builder implements java.util.function.LongConsumer {
+ public static interface LongStream.Builder extends java.util.function.LongConsumer {
method public default java.util.stream.LongStream.Builder add(long);
- method public abstract java.util.stream.LongStream build();
+ method public java.util.stream.LongStream build();
}
- public abstract interface Stream<T> implements java.util.stream.BaseStream {
- method public abstract boolean allMatch(java.util.function.Predicate<? super T>);
- method public abstract boolean anyMatch(java.util.function.Predicate<? super T>);
+ public interface Stream<T> extends java.util.stream.BaseStream<T,java.util.stream.Stream<T>> {
+ method public boolean allMatch(java.util.function.Predicate<? super T>);
+ method public boolean anyMatch(java.util.function.Predicate<? super T>);
method public static <T> java.util.stream.Stream.Builder<T> builder();
- method public abstract <R> R collect(java.util.function.Supplier<R>, java.util.function.BiConsumer<R, ? super T>, java.util.function.BiConsumer<R, R>);
- method public abstract <R, A> R collect(java.util.stream.Collector<? super T, A, R>);
+ method public <R> R collect(java.util.function.Supplier<R>, java.util.function.BiConsumer<R,? super T>, java.util.function.BiConsumer<R,R>);
+ method public <R, A> R collect(java.util.stream.Collector<? super T,A,R>);
method public static <T> java.util.stream.Stream<T> concat(java.util.stream.Stream<? extends T>, java.util.stream.Stream<? extends T>);
- method public abstract long count();
- method public abstract java.util.stream.Stream<T> distinct();
+ method public long count();
+ method public java.util.stream.Stream<T> distinct();
method public static <T> java.util.stream.Stream<T> empty();
- method public abstract java.util.stream.Stream<T> filter(java.util.function.Predicate<? super T>);
- method public abstract java.util.Optional<T> findAny();
- method public abstract java.util.Optional<T> findFirst();
- method public abstract <R> java.util.stream.Stream<R> flatMap(java.util.function.Function<? super T, ? extends java.util.stream.Stream<? extends R>>);
- method public abstract java.util.stream.DoubleStream flatMapToDouble(java.util.function.Function<? super T, ? extends java.util.stream.DoubleStream>);
- method public abstract java.util.stream.IntStream flatMapToInt(java.util.function.Function<? super T, ? extends java.util.stream.IntStream>);
- method public abstract java.util.stream.LongStream flatMapToLong(java.util.function.Function<? super T, ? extends java.util.stream.LongStream>);
- method public abstract void forEach(java.util.function.Consumer<? super T>);
- method public abstract void forEachOrdered(java.util.function.Consumer<? super T>);
+ method public java.util.stream.Stream<T> filter(java.util.function.Predicate<? super T>);
+ method public java.util.Optional<T> findAny();
+ method public java.util.Optional<T> findFirst();
+ method public <R> java.util.stream.Stream<R> flatMap(java.util.function.Function<? super T,? extends java.util.stream.Stream<? extends R>>);
+ method public java.util.stream.DoubleStream flatMapToDouble(java.util.function.Function<? super T,? extends java.util.stream.DoubleStream>);
+ method public java.util.stream.IntStream flatMapToInt(java.util.function.Function<? super T,? extends java.util.stream.IntStream>);
+ method public java.util.stream.LongStream flatMapToLong(java.util.function.Function<? super T,? extends java.util.stream.LongStream>);
+ method public void forEach(java.util.function.Consumer<? super T>);
+ method public void forEachOrdered(java.util.function.Consumer<? super T>);
method public static <T> java.util.stream.Stream<T> generate(java.util.function.Supplier<T>);
method public static <T> java.util.stream.Stream<T> iterate(T, java.util.function.UnaryOperator<T>);
- method public abstract java.util.stream.Stream<T> limit(long);
- method public abstract <R> java.util.stream.Stream<R> map(java.util.function.Function<? super T, ? extends R>);
- method public abstract java.util.stream.DoubleStream mapToDouble(java.util.function.ToDoubleFunction<? super T>);
- method public abstract java.util.stream.IntStream mapToInt(java.util.function.ToIntFunction<? super T>);
- method public abstract java.util.stream.LongStream mapToLong(java.util.function.ToLongFunction<? super T>);
- method public abstract java.util.Optional<T> max(java.util.Comparator<? super T>);
- method public abstract java.util.Optional<T> min(java.util.Comparator<? super T>);
- method public abstract boolean noneMatch(java.util.function.Predicate<? super T>);
+ method public java.util.stream.Stream<T> limit(long);
+ method public <R> java.util.stream.Stream<R> map(java.util.function.Function<? super T,? extends R>);
+ method public java.util.stream.DoubleStream mapToDouble(java.util.function.ToDoubleFunction<? super T>);
+ method public java.util.stream.IntStream mapToInt(java.util.function.ToIntFunction<? super T>);
+ method public java.util.stream.LongStream mapToLong(java.util.function.ToLongFunction<? super T>);
+ method public java.util.Optional<T> max(java.util.Comparator<? super T>);
+ method public java.util.Optional<T> min(java.util.Comparator<? super T>);
+ method public boolean noneMatch(java.util.function.Predicate<? super T>);
method public static <T> java.util.stream.Stream<T> of(T);
- method public static <T> java.util.stream.Stream<T> of(T...);
- method public abstract java.util.stream.Stream<T> peek(java.util.function.Consumer<? super T>);
- method public abstract T reduce(T, java.util.function.BinaryOperator<T>);
- method public abstract java.util.Optional<T> reduce(java.util.function.BinaryOperator<T>);
- method public abstract <U> U reduce(U, java.util.function.BiFunction<U, ? super T, U>, java.util.function.BinaryOperator<U>);
- method public abstract java.util.stream.Stream<T> skip(long);
- method public abstract java.util.stream.Stream<T> sorted();
- method public abstract java.util.stream.Stream<T> sorted(java.util.Comparator<? super T>);
- method public abstract java.lang.Object[] toArray();
- method public abstract <A> A[] toArray(java.util.function.IntFunction<A[]>);
+ method @java.lang.SafeVarargs public static <T> java.util.stream.Stream<T> of(T...);
+ method public java.util.stream.Stream<T> peek(java.util.function.Consumer<? super T>);
+ method public T reduce(T, java.util.function.BinaryOperator<T>);
+ method public java.util.Optional<T> reduce(java.util.function.BinaryOperator<T>);
+ method public <U> U reduce(U, java.util.function.BiFunction<U,? super T,U>, java.util.function.BinaryOperator<U>);
+ method public java.util.stream.Stream<T> skip(long);
+ method public java.util.stream.Stream<T> sorted();
+ method public java.util.stream.Stream<T> sorted(java.util.Comparator<? super T>);
+ method public Object[] toArray();
+ method public <A> A[] toArray(java.util.function.IntFunction<A[]>);
}
- public static abstract interface Stream.Builder<T> implements java.util.function.Consumer {
+ public static interface Stream.Builder<T> extends java.util.function.Consumer<T> {
method public default java.util.stream.Stream.Builder<T> add(T);
- method public abstract java.util.stream.Stream<T> build();
+ method public java.util.stream.Stream<T> build();
}
public final class StreamSupport {
@@ -73312,16 +73297,16 @@
method public java.util.zip.Checksum getChecksum();
}
- public abstract interface Checksum {
- method public abstract long getValue();
- method public abstract void reset();
- method public abstract void update(int);
- method public abstract void update(byte[], int, int);
+ public interface Checksum {
+ method public long getValue();
+ method public void reset();
+ method public void update(int);
+ method public void update(byte[], int, int);
}
public class DataFormatException extends java.lang.Exception {
ctor public DataFormatException();
- ctor public DataFormatException(java.lang.String);
+ ctor public DataFormatException(String);
}
public class Deflater {
@@ -73365,8 +73350,6 @@
ctor public DeflaterInputStream(java.io.InputStream);
ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater);
ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater, int);
- method public void mark(int);
- method public void reset() throws java.io.IOException;
field protected final byte[] buf;
field protected final java.util.zip.Deflater def;
}
@@ -73397,7 +73380,6 @@
ctor public GZIPOutputStream(java.io.OutputStream, int, boolean) throws java.io.IOException;
ctor public GZIPOutputStream(java.io.OutputStream) throws java.io.IOException;
ctor public GZIPOutputStream(java.io.OutputStream, boolean) throws java.io.IOException;
- method public synchronized void write(byte[], int, int) throws java.io.IOException;
field protected java.util.zip.CRC32 crc;
}
@@ -73430,7 +73412,7 @@
ctor public InflaterInputStream(java.io.InputStream);
method protected void fill() throws java.io.IOException;
field protected byte[] buf;
- field protected deprecated boolean closed;
+ field @Deprecated protected boolean closed;
field protected java.util.zip.Inflater inf;
field protected int len;
}
@@ -73445,10 +73427,10 @@
}
public class ZipEntry implements java.lang.Cloneable {
- ctor public ZipEntry(java.lang.String);
+ ctor public ZipEntry(String);
ctor public ZipEntry(java.util.zip.ZipEntry);
- method public java.lang.Object clone();
- method public java.lang.String getComment();
+ method public Object clone();
+ method public String getComment();
method public long getCompressedSize();
method public long getCrc();
method public java.nio.file.attribute.FileTime getCreationTime();
@@ -73456,11 +73438,11 @@
method public java.nio.file.attribute.FileTime getLastAccessTime();
method public java.nio.file.attribute.FileTime getLastModifiedTime();
method public int getMethod();
- method public java.lang.String getName();
+ method public String getName();
method public long getSize();
method public long getTime();
method public boolean isDirectory();
- method public void setComment(java.lang.String);
+ method public void setComment(String);
method public void setCompressedSize(long);
method public void setCrc(long);
method public java.util.zip.ZipEntry setCreationTime(java.nio.file.attribute.FileTime);
@@ -73515,28 +73497,28 @@
}
public class ZipError extends java.lang.InternalError {
- ctor public ZipError(java.lang.String);
+ ctor public ZipError(String);
}
public class ZipException extends java.io.IOException {
ctor public ZipException();
- ctor public ZipException(java.lang.String);
+ ctor public ZipException(String);
}
public class ZipFile implements java.io.Closeable {
- ctor public ZipFile(java.lang.String) throws java.io.IOException;
+ ctor public ZipFile(String) throws java.io.IOException;
ctor public ZipFile(java.io.File, int) throws java.io.IOException;
ctor public ZipFile(java.io.File) throws java.io.IOException, java.util.zip.ZipException;
ctor public ZipFile(java.io.File, int, java.nio.charset.Charset) throws java.io.IOException;
- ctor public ZipFile(java.lang.String, java.nio.charset.Charset) throws java.io.IOException;
+ ctor public ZipFile(String, java.nio.charset.Charset) throws java.io.IOException;
ctor public ZipFile(java.io.File, java.nio.charset.Charset) throws java.io.IOException;
method public void close() throws java.io.IOException;
method public java.util.Enumeration<? extends java.util.zip.ZipEntry> entries();
method protected void finalize() throws java.io.IOException;
- method public java.lang.String getComment();
- method public java.util.zip.ZipEntry getEntry(java.lang.String);
+ method public String getComment();
+ method public java.util.zip.ZipEntry getEntry(String);
method public java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException;
- method public java.lang.String getName();
+ method public String getName();
method public int size();
method public java.util.stream.Stream<? extends java.util.zip.ZipEntry> stream();
field public static final int CENATT = 36; // 0x24
@@ -73587,7 +73569,7 @@
ctor public ZipInputStream(java.io.InputStream);
ctor public ZipInputStream(java.io.InputStream, java.nio.charset.Charset);
method public void closeEntry() throws java.io.IOException;
- method protected java.util.zip.ZipEntry createZipEntry(java.lang.String);
+ method protected java.util.zip.ZipEntry createZipEntry(String);
method public java.util.zip.ZipEntry getNextEntry() throws java.io.IOException;
field public static final int CENATT = 36; // 0x24
field public static final int CENATX = 38; // 0x26
@@ -73636,10 +73618,9 @@
ctor public ZipOutputStream(java.io.OutputStream, java.nio.charset.Charset);
method public void closeEntry() throws java.io.IOException;
method public void putNextEntry(java.util.zip.ZipEntry) throws java.io.IOException;
- method public void setComment(java.lang.String);
+ method public void setComment(String);
method public void setLevel(int);
method public void setMethod(int);
- method public synchronized void write(byte[], int, int) throws java.io.IOException;
field public static final int CENATT = 36; // 0x24
field public static final int CENATX = 38; // 0x26
field public static final int CENCOM = 32; // 0x20
@@ -73690,16 +73671,16 @@
public class AEADBadTagException extends javax.crypto.BadPaddingException {
ctor public AEADBadTagException();
- ctor public AEADBadTagException(java.lang.String);
+ ctor public AEADBadTagException(String);
}
public class BadPaddingException extends java.security.GeneralSecurityException {
ctor public BadPaddingException();
- ctor public BadPaddingException(java.lang.String);
+ ctor public BadPaddingException(String);
}
public class Cipher {
- ctor protected Cipher(javax.crypto.CipherSpi, java.security.Provider, java.lang.String);
+ ctor protected Cipher(javax.crypto.CipherSpi, java.security.Provider, String);
method public final byte[] doFinal() throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
method public final int doFinal(byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
method public final byte[] doFinal(byte[]) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
@@ -73707,15 +73688,15 @@
method public final int doFinal(byte[], int, int, byte[]) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
method public final int doFinal(byte[], int, int, byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
method public final int doFinal(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
- method public final java.lang.String getAlgorithm();
+ method public final String getAlgorithm();
method public final int getBlockSize();
method public final javax.crypto.ExemptionMechanism getExemptionMechanism();
method public final byte[] getIV();
- method public static final javax.crypto.Cipher getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
- method public static final javax.crypto.Cipher getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, java.security.NoSuchProviderException;
- method public static final javax.crypto.Cipher getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
- method public static final int getMaxAllowedKeyLength(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static final java.security.spec.AlgorithmParameterSpec getMaxAllowedParameterSpec(java.lang.String) throws java.security.NoSuchAlgorithmException;
+ method public static final javax.crypto.Cipher getInstance(String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
+ method public static final javax.crypto.Cipher getInstance(String, String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, java.security.NoSuchProviderException;
+ method public static final javax.crypto.Cipher getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
+ method public static final int getMaxAllowedKeyLength(String) throws java.security.NoSuchAlgorithmException;
+ method public static final java.security.spec.AlgorithmParameterSpec getMaxAllowedParameterSpec(String) throws java.security.NoSuchAlgorithmException;
method public final int getOutputSize(int);
method public final java.security.AlgorithmParameters getParameters();
method public final java.security.Provider getProvider();
@@ -73727,7 +73708,7 @@
method public final void init(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
method public final void init(int, java.security.cert.Certificate) throws java.security.InvalidKeyException;
method public final void init(int, java.security.cert.Certificate, java.security.SecureRandom) throws java.security.InvalidKeyException;
- method public final java.security.Key unwrap(byte[], java.lang.String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+ method public final java.security.Key unwrap(byte[], String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
method public final byte[] update(byte[]);
method public final byte[] update(byte[], int, int);
method public final int update(byte[], int, int, byte[]) throws javax.crypto.ShortBufferException;
@@ -73769,9 +73750,9 @@
method protected abstract void engineInit(int, java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
method protected abstract void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
method protected abstract void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
- method protected abstract void engineSetMode(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method protected abstract void engineSetPadding(java.lang.String) throws javax.crypto.NoSuchPaddingException;
- method protected java.security.Key engineUnwrap(byte[], java.lang.String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+ method protected abstract void engineSetMode(String) throws java.security.NoSuchAlgorithmException;
+ method protected abstract void engineSetPadding(String) throws javax.crypto.NoSuchPaddingException;
+ method protected java.security.Key engineUnwrap(byte[], String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
method protected abstract byte[] engineUpdate(byte[], int, int);
method protected abstract int engineUpdate(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;
method protected int engineUpdate(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException;
@@ -73782,27 +73763,27 @@
public class EncryptedPrivateKeyInfo {
ctor public EncryptedPrivateKeyInfo(byte[]) throws java.io.IOException;
- ctor public EncryptedPrivateKeyInfo(java.lang.String, byte[]) throws java.security.NoSuchAlgorithmException;
+ ctor public EncryptedPrivateKeyInfo(String, byte[]) throws java.security.NoSuchAlgorithmException;
ctor public EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) throws java.security.NoSuchAlgorithmException;
- method public java.lang.String getAlgName();
+ method public String getAlgName();
method public java.security.AlgorithmParameters getAlgParameters();
method public byte[] getEncoded() throws java.io.IOException;
method public byte[] getEncryptedData();
method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(javax.crypto.Cipher) throws java.security.spec.InvalidKeySpecException;
method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
- method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key, java.lang.String) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key, String) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key, java.security.Provider) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
}
public class ExemptionMechanism {
- ctor protected ExemptionMechanism(javax.crypto.ExemptionMechanismSpi, java.security.Provider, java.lang.String);
+ ctor protected ExemptionMechanism(javax.crypto.ExemptionMechanismSpi, java.security.Provider, String);
method public final byte[] genExemptionBlob() throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException;
method public final int genExemptionBlob(byte[]) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException;
method public final int genExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException;
- method public static final javax.crypto.ExemptionMechanism getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static final javax.crypto.ExemptionMechanism getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static final javax.crypto.ExemptionMechanism getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
- method public final java.lang.String getName();
+ method public static final javax.crypto.ExemptionMechanism getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static final javax.crypto.ExemptionMechanism getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static final javax.crypto.ExemptionMechanism getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final String getName();
method public final int getOutputSize(int) throws java.lang.IllegalStateException;
method public final java.security.Provider getProvider();
method public final void init(java.security.Key) throws javax.crypto.ExemptionMechanismException, java.security.InvalidKeyException;
@@ -73813,7 +73794,7 @@
public class ExemptionMechanismException extends java.security.GeneralSecurityException {
ctor public ExemptionMechanismException();
- ctor public ExemptionMechanismException(java.lang.String);
+ ctor public ExemptionMechanismException(String);
}
public abstract class ExemptionMechanismSpi {
@@ -73828,19 +73809,19 @@
public class IllegalBlockSizeException extends java.security.GeneralSecurityException {
ctor public IllegalBlockSizeException();
- ctor public IllegalBlockSizeException(java.lang.String);
+ ctor public IllegalBlockSizeException(String);
}
public class KeyAgreement {
- ctor protected KeyAgreement(javax.crypto.KeyAgreementSpi, java.security.Provider, java.lang.String);
+ ctor protected KeyAgreement(javax.crypto.KeyAgreementSpi, java.security.Provider, String);
method public final java.security.Key doPhase(java.security.Key, boolean) throws java.lang.IllegalStateException, java.security.InvalidKeyException;
method public final byte[] generateSecret() throws java.lang.IllegalStateException;
method public final int generateSecret(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
- method public final javax.crypto.SecretKey generateSecret(java.lang.String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
- method public final java.lang.String getAlgorithm();
- method public static final javax.crypto.KeyAgreement getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static final javax.crypto.KeyAgreement getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static final javax.crypto.KeyAgreement getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final javax.crypto.SecretKey generateSecret(String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+ method public final String getAlgorithm();
+ method public static final javax.crypto.KeyAgreement getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static final javax.crypto.KeyAgreement getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static final javax.crypto.KeyAgreement getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
method public final void init(java.security.Key) throws java.security.InvalidKeyException;
method public final void init(java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
@@ -73853,18 +73834,18 @@
method protected abstract java.security.Key engineDoPhase(java.security.Key, boolean) throws java.lang.IllegalStateException, java.security.InvalidKeyException;
method protected abstract byte[] engineGenerateSecret() throws java.lang.IllegalStateException;
method protected abstract int engineGenerateSecret(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
- method protected abstract javax.crypto.SecretKey engineGenerateSecret(java.lang.String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+ method protected abstract javax.crypto.SecretKey engineGenerateSecret(String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
method protected abstract void engineInit(java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
}
public class KeyGenerator {
- ctor protected KeyGenerator(javax.crypto.KeyGeneratorSpi, java.security.Provider, java.lang.String);
+ ctor protected KeyGenerator(javax.crypto.KeyGeneratorSpi, java.security.Provider, String);
method public final javax.crypto.SecretKey generateKey();
- method public final java.lang.String getAlgorithm();
- method public static final javax.crypto.KeyGenerator getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static final javax.crypto.KeyGenerator getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static final javax.crypto.KeyGenerator getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final String getAlgorithm();
+ method public static final javax.crypto.KeyGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static final javax.crypto.KeyGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static final javax.crypto.KeyGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
method public final void init(java.security.SecureRandom);
method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
@@ -73882,15 +73863,15 @@
}
public class Mac implements java.lang.Cloneable {
- ctor protected Mac(javax.crypto.MacSpi, java.security.Provider, java.lang.String);
- method public final java.lang.Object clone() throws java.lang.CloneNotSupportedException;
+ ctor protected Mac(javax.crypto.MacSpi, java.security.Provider, String);
+ method public final Object clone() throws java.lang.CloneNotSupportedException;
method public final byte[] doFinal() throws java.lang.IllegalStateException;
method public final void doFinal(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
method public final byte[] doFinal(byte[]) throws java.lang.IllegalStateException;
- method public final java.lang.String getAlgorithm();
- method public static final javax.crypto.Mac getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static final javax.crypto.Mac getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static final javax.crypto.Mac getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final String getAlgorithm();
+ method public static final javax.crypto.Mac getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static final javax.crypto.Mac getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static final javax.crypto.Mac getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final int getMacLength();
method public final java.security.Provider getProvider();
method public final void init(java.security.Key) throws java.security.InvalidKeyException;
@@ -73904,7 +73885,7 @@
public abstract class MacSpi {
ctor public MacSpi();
- method public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
+ method public Object clone() throws java.lang.CloneNotSupportedException;
method protected abstract byte[] engineDoFinal();
method protected abstract int engineGetMacLength();
method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
@@ -73916,7 +73897,7 @@
public class NoSuchPaddingException extends java.security.GeneralSecurityException {
ctor public NoSuchPaddingException();
- ctor public NoSuchPaddingException(java.lang.String);
+ ctor public NoSuchPaddingException(String);
}
public class NullCipher extends javax.crypto.Cipher {
@@ -73926,25 +73907,25 @@
public class SealedObject implements java.io.Serializable {
ctor public SealedObject(java.io.Serializable, javax.crypto.Cipher) throws java.io.IOException, javax.crypto.IllegalBlockSizeException;
ctor protected SealedObject(javax.crypto.SealedObject);
- method public final java.lang.String getAlgorithm();
- method public final java.lang.Object getObject(java.security.Key) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
- method public final java.lang.Object getObject(javax.crypto.Cipher) throws javax.crypto.BadPaddingException, java.lang.ClassNotFoundException, java.io.IOException, javax.crypto.IllegalBlockSizeException;
- method public final java.lang.Object getObject(java.security.Key, java.lang.String) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public final String getAlgorithm();
+ method public final Object getObject(java.security.Key) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+ method public final Object getObject(javax.crypto.Cipher) throws javax.crypto.BadPaddingException, java.lang.ClassNotFoundException, java.io.IOException, javax.crypto.IllegalBlockSizeException;
+ method public final Object getObject(java.security.Key, String) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
field protected byte[] encodedParams;
}
- public abstract interface SecretKey implements javax.security.auth.Destroyable java.security.Key {
+ public interface SecretKey extends java.security.Key javax.security.auth.Destroyable {
field public static final long serialVersionUID = -4795878709595146952L; // 0xbd719db928b8f538L
}
public class SecretKeyFactory {
- ctor protected SecretKeyFactory(javax.crypto.SecretKeyFactorySpi, java.security.Provider, java.lang.String);
+ ctor protected SecretKeyFactory(javax.crypto.SecretKeyFactorySpi, java.security.Provider, String);
method public final javax.crypto.SecretKey generateSecret(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
- method public final java.lang.String getAlgorithm();
- method public static final javax.crypto.SecretKeyFactory getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static final javax.crypto.SecretKeyFactory getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static final javax.crypto.SecretKeyFactory getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
- method public final java.security.spec.KeySpec getKeySpec(javax.crypto.SecretKey, java.lang.Class<?>) throws java.security.spec.InvalidKeySpecException;
+ method public final String getAlgorithm();
+ method public static final javax.crypto.SecretKeyFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static final javax.crypto.SecretKeyFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static final javax.crypto.SecretKeyFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final java.security.spec.KeySpec getKeySpec(javax.crypto.SecretKey, Class<?>) throws java.security.spec.InvalidKeySpecException;
method public final java.security.Provider getProvider();
method public final javax.crypto.SecretKey translateKey(javax.crypto.SecretKey) throws java.security.InvalidKeyException;
}
@@ -73952,37 +73933,37 @@
public abstract class SecretKeyFactorySpi {
ctor public SecretKeyFactorySpi();
method protected abstract javax.crypto.SecretKey engineGenerateSecret(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
- method protected abstract java.security.spec.KeySpec engineGetKeySpec(javax.crypto.SecretKey, java.lang.Class<?>) throws java.security.spec.InvalidKeySpecException;
+ method protected abstract java.security.spec.KeySpec engineGetKeySpec(javax.crypto.SecretKey, Class<?>) throws java.security.spec.InvalidKeySpecException;
method protected abstract javax.crypto.SecretKey engineTranslateKey(javax.crypto.SecretKey) throws java.security.InvalidKeyException;
}
public class ShortBufferException extends java.security.GeneralSecurityException {
ctor public ShortBufferException();
- ctor public ShortBufferException(java.lang.String);
+ ctor public ShortBufferException(String);
}
}
package javax.crypto.interfaces {
- public abstract interface DHKey {
- method public abstract javax.crypto.spec.DHParameterSpec getParams();
+ public interface DHKey {
+ method public javax.crypto.spec.DHParameterSpec getParams();
}
- public abstract interface DHPrivateKey implements javax.crypto.interfaces.DHKey java.security.PrivateKey {
- method public abstract java.math.BigInteger getX();
+ public interface DHPrivateKey extends javax.crypto.interfaces.DHKey java.security.PrivateKey {
+ method public java.math.BigInteger getX();
field public static final long serialVersionUID = 2211791113380396553L; // 0x1eb1dc4c8e677e09L
}
- public abstract interface DHPublicKey implements javax.crypto.interfaces.DHKey java.security.PublicKey {
- method public abstract java.math.BigInteger getY();
+ public interface DHPublicKey extends javax.crypto.interfaces.DHKey java.security.PublicKey {
+ method public java.math.BigInteger getY();
field public static final long serialVersionUID = -6628103563352519193L; // 0xa4043eed23df4de7L
}
- public abstract interface PBEKey implements javax.crypto.SecretKey {
- method public abstract int getIterationCount();
- method public abstract char[] getPassword();
- method public abstract byte[] getSalt();
+ public interface PBEKey extends javax.crypto.SecretKey {
+ method public int getIterationCount();
+ method public char[] getPassword();
+ method public byte[] getSalt();
field public static final long serialVersionUID = -1430015993304333921L; // 0xec279007d7f7c19fL
}
@@ -74049,9 +74030,9 @@
}
public class OAEPParameterSpec implements java.security.spec.AlgorithmParameterSpec {
- ctor public OAEPParameterSpec(java.lang.String, java.lang.String, java.security.spec.AlgorithmParameterSpec, javax.crypto.spec.PSource);
- method public java.lang.String getDigestAlgorithm();
- method public java.lang.String getMGFAlgorithm();
+ ctor public OAEPParameterSpec(String, String, java.security.spec.AlgorithmParameterSpec, javax.crypto.spec.PSource);
+ method public String getDigestAlgorithm();
+ method public String getMGFAlgorithm();
method public java.security.spec.AlgorithmParameterSpec getMGFParameters();
method public javax.crypto.spec.PSource getPSource();
field public static final javax.crypto.spec.OAEPParameterSpec DEFAULT;
@@ -74077,8 +74058,8 @@
}
public class PSource {
- ctor protected PSource(java.lang.String);
- method public java.lang.String getAlgorithm();
+ ctor protected PSource(String);
+ method public String getAlgorithm();
}
public static final class PSource.PSpecified extends javax.crypto.spec.PSource {
@@ -74106,45 +74087,45 @@
}
public class SecretKeySpec implements java.security.spec.KeySpec javax.crypto.SecretKey {
- ctor public SecretKeySpec(byte[], java.lang.String);
- ctor public SecretKeySpec(byte[], int, int, java.lang.String);
- method public java.lang.String getAlgorithm();
+ ctor public SecretKeySpec(byte[], String);
+ ctor public SecretKeySpec(byte[], int, int, String);
+ method public String getAlgorithm();
method public byte[] getEncoded();
- method public java.lang.String getFormat();
+ method public String getFormat();
}
}
package javax.microedition.khronos.egl {
- public abstract interface EGL {
+ public interface EGL {
}
- public abstract interface EGL10 implements javax.microedition.khronos.egl.EGL {
- method public abstract boolean eglChooseConfig(javax.microedition.khronos.egl.EGLDisplay, int[], javax.microedition.khronos.egl.EGLConfig[], int, int[]);
- method public abstract boolean eglCopyBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, java.lang.Object);
- method public abstract javax.microedition.khronos.egl.EGLContext eglCreateContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, javax.microedition.khronos.egl.EGLContext, int[]);
- method public abstract javax.microedition.khronos.egl.EGLSurface eglCreatePbufferSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int[]);
- method public abstract deprecated javax.microedition.khronos.egl.EGLSurface eglCreatePixmapSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, java.lang.Object, int[]);
- method public abstract javax.microedition.khronos.egl.EGLSurface eglCreateWindowSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, java.lang.Object, int[]);
- method public abstract boolean eglDestroyContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
- method public abstract boolean eglDestroySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
- method public abstract boolean eglGetConfigAttrib(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int, int[]);
- method public abstract boolean eglGetConfigs(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig[], int, int[]);
- method public abstract javax.microedition.khronos.egl.EGLContext eglGetCurrentContext();
- method public abstract javax.microedition.khronos.egl.EGLDisplay eglGetCurrentDisplay();
- method public abstract javax.microedition.khronos.egl.EGLSurface eglGetCurrentSurface(int);
- method public abstract javax.microedition.khronos.egl.EGLDisplay eglGetDisplay(java.lang.Object);
- method public abstract int eglGetError();
- method public abstract boolean eglInitialize(javax.microedition.khronos.egl.EGLDisplay, int[]);
- method public abstract boolean eglMakeCurrent(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLContext);
- method public abstract boolean eglQueryContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext, int, int[]);
- method public abstract java.lang.String eglQueryString(javax.microedition.khronos.egl.EGLDisplay, int);
- method public abstract boolean eglQuerySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, int, int[]);
- method public abstract boolean eglSwapBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
- method public abstract boolean eglTerminate(javax.microedition.khronos.egl.EGLDisplay);
- method public abstract boolean eglWaitGL();
- method public abstract boolean eglWaitNative(int, java.lang.Object);
+ public interface EGL10 extends javax.microedition.khronos.egl.EGL {
+ method public boolean eglChooseConfig(javax.microedition.khronos.egl.EGLDisplay, int[], javax.microedition.khronos.egl.EGLConfig[], int, int[]);
+ method public boolean eglCopyBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, Object);
+ method public javax.microedition.khronos.egl.EGLContext eglCreateContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, javax.microedition.khronos.egl.EGLContext, int[]);
+ method public javax.microedition.khronos.egl.EGLSurface eglCreatePbufferSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int[]);
+ method @Deprecated public javax.microedition.khronos.egl.EGLSurface eglCreatePixmapSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object, int[]);
+ method public javax.microedition.khronos.egl.EGLSurface eglCreateWindowSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object, int[]);
+ method public boolean eglDestroyContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
+ method public boolean eglDestroySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
+ method public boolean eglGetConfigAttrib(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int, int[]);
+ method public boolean eglGetConfigs(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig[], int, int[]);
+ method public javax.microedition.khronos.egl.EGLContext eglGetCurrentContext();
+ method public javax.microedition.khronos.egl.EGLDisplay eglGetCurrentDisplay();
+ method public javax.microedition.khronos.egl.EGLSurface eglGetCurrentSurface(int);
+ method public javax.microedition.khronos.egl.EGLDisplay eglGetDisplay(Object);
+ method public int eglGetError();
+ method public boolean eglInitialize(javax.microedition.khronos.egl.EGLDisplay, int[]);
+ method public boolean eglMakeCurrent(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLContext);
+ method public boolean eglQueryContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext, int, int[]);
+ method public String eglQueryString(javax.microedition.khronos.egl.EGLDisplay, int);
+ method public boolean eglQuerySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, int, int[]);
+ method public boolean eglSwapBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
+ method public boolean eglTerminate(javax.microedition.khronos.egl.EGLDisplay);
+ method public boolean eglWaitGL();
+ method public boolean eglWaitNative(int, Object);
field public static final int EGL_ALPHA_FORMAT = 12424; // 0x3088
field public static final int EGL_ALPHA_MASK_SIZE = 12350; // 0x303e
field public static final int EGL_ALPHA_SIZE = 12321; // 0x3021
@@ -74167,7 +74148,7 @@
field public static final int EGL_CONFIG_CAVEAT = 12327; // 0x3027
field public static final int EGL_CONFIG_ID = 12328; // 0x3028
field public static final int EGL_CORE_NATIVE_ENGINE = 12379; // 0x305b
- field public static final java.lang.Object EGL_DEFAULT_DISPLAY;
+ field public static final Object EGL_DEFAULT_DISPLAY;
field public static final int EGL_DEPTH_SIZE = 12325; // 0x3025
field public static final int EGL_DONT_CARE = -1; // 0xffffffff
field public static final int EGL_DRAW = 12377; // 0x3059
@@ -74218,7 +74199,7 @@
field public static final int EGL_WINDOW_BIT = 4; // 0x4
}
- public abstract interface EGL11 implements javax.microedition.khronos.egl.EGL10 {
+ public interface EGL11 extends javax.microedition.khronos.egl.EGL10 {
field public static final int EGL_CONTEXT_LOST = 12302; // 0x300e
}
@@ -74244,133 +74225,133 @@
package javax.microedition.khronos.opengles {
- public abstract interface GL {
+ public interface GL {
}
- public abstract interface GL10 implements javax.microedition.khronos.opengles.GL {
- method public abstract void glActiveTexture(int);
- method public abstract void glAlphaFunc(int, float);
- method public abstract void glAlphaFuncx(int, int);
- method public abstract void glBindTexture(int, int);
- method public abstract void glBlendFunc(int, int);
- method public abstract void glClear(int);
- method public abstract void glClearColor(float, float, float, float);
- method public abstract void glClearColorx(int, int, int, int);
- method public abstract void glClearDepthf(float);
- method public abstract void glClearDepthx(int);
- method public abstract void glClearStencil(int);
- method public abstract void glClientActiveTexture(int);
- method public abstract void glColor4f(float, float, float, float);
- method public abstract void glColor4x(int, int, int, int);
- method public abstract void glColorMask(boolean, boolean, boolean, boolean);
- method public abstract void glColorPointer(int, int, int, java.nio.Buffer);
- method public abstract void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
- method public abstract void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
- method public abstract void glCopyTexImage2D(int, int, int, int, int, int, int, int);
- method public abstract void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
- method public abstract void glCullFace(int);
- method public abstract void glDeleteTextures(int, int[], int);
- method public abstract void glDeleteTextures(int, java.nio.IntBuffer);
- method public abstract void glDepthFunc(int);
- method public abstract void glDepthMask(boolean);
- method public abstract void glDepthRangef(float, float);
- method public abstract void glDepthRangex(int, int);
- method public abstract void glDisable(int);
- method public abstract void glDisableClientState(int);
- method public abstract void glDrawArrays(int, int, int);
- method public abstract void glDrawElements(int, int, int, java.nio.Buffer);
- method public abstract void glEnable(int);
- method public abstract void glEnableClientState(int);
- method public abstract void glFinish();
- method public abstract void glFlush();
- method public abstract void glFogf(int, float);
- method public abstract void glFogfv(int, float[], int);
- method public abstract void glFogfv(int, java.nio.FloatBuffer);
- method public abstract void glFogx(int, int);
- method public abstract void glFogxv(int, int[], int);
- method public abstract void glFogxv(int, java.nio.IntBuffer);
- method public abstract void glFrontFace(int);
- method public abstract void glFrustumf(float, float, float, float, float, float);
- method public abstract void glFrustumx(int, int, int, int, int, int);
- method public abstract void glGenTextures(int, int[], int);
- method public abstract void glGenTextures(int, java.nio.IntBuffer);
- method public abstract int glGetError();
- method public abstract void glGetIntegerv(int, int[], int);
- method public abstract void glGetIntegerv(int, java.nio.IntBuffer);
- method public abstract java.lang.String glGetString(int);
- method public abstract void glHint(int, int);
- method public abstract void glLightModelf(int, float);
- method public abstract void glLightModelfv(int, float[], int);
- method public abstract void glLightModelfv(int, java.nio.FloatBuffer);
- method public abstract void glLightModelx(int, int);
- method public abstract void glLightModelxv(int, int[], int);
- method public abstract void glLightModelxv(int, java.nio.IntBuffer);
- method public abstract void glLightf(int, int, float);
- method public abstract void glLightfv(int, int, float[], int);
- method public abstract void glLightfv(int, int, java.nio.FloatBuffer);
- method public abstract void glLightx(int, int, int);
- method public abstract void glLightxv(int, int, int[], int);
- method public abstract void glLightxv(int, int, java.nio.IntBuffer);
- method public abstract void glLineWidth(float);
- method public abstract void glLineWidthx(int);
- method public abstract void glLoadIdentity();
- method public abstract void glLoadMatrixf(float[], int);
- method public abstract void glLoadMatrixf(java.nio.FloatBuffer);
- method public abstract void glLoadMatrixx(int[], int);
- method public abstract void glLoadMatrixx(java.nio.IntBuffer);
- method public abstract void glLogicOp(int);
- method public abstract void glMaterialf(int, int, float);
- method public abstract void glMaterialfv(int, int, float[], int);
- method public abstract void glMaterialfv(int, int, java.nio.FloatBuffer);
- method public abstract void glMaterialx(int, int, int);
- method public abstract void glMaterialxv(int, int, int[], int);
- method public abstract void glMaterialxv(int, int, java.nio.IntBuffer);
- method public abstract void glMatrixMode(int);
- method public abstract void glMultMatrixf(float[], int);
- method public abstract void glMultMatrixf(java.nio.FloatBuffer);
- method public abstract void glMultMatrixx(int[], int);
- method public abstract void glMultMatrixx(java.nio.IntBuffer);
- method public abstract void glMultiTexCoord4f(int, float, float, float, float);
- method public abstract void glMultiTexCoord4x(int, int, int, int, int);
- method public abstract void glNormal3f(float, float, float);
- method public abstract void glNormal3x(int, int, int);
- method public abstract void glNormalPointer(int, int, java.nio.Buffer);
- method public abstract void glOrthof(float, float, float, float, float, float);
- method public abstract void glOrthox(int, int, int, int, int, int);
- method public abstract void glPixelStorei(int, int);
- method public abstract void glPointSize(float);
- method public abstract void glPointSizex(int);
- method public abstract void glPolygonOffset(float, float);
- method public abstract void glPolygonOffsetx(int, int);
- method public abstract void glPopMatrix();
- method public abstract void glPushMatrix();
- method public abstract void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
- method public abstract void glRotatef(float, float, float, float);
- method public abstract void glRotatex(int, int, int, int);
- method public abstract void glSampleCoverage(float, boolean);
- method public abstract void glSampleCoveragex(int, boolean);
- method public abstract void glScalef(float, float, float);
- method public abstract void glScalex(int, int, int);
- method public abstract void glScissor(int, int, int, int);
- method public abstract void glShadeModel(int);
- method public abstract void glStencilFunc(int, int, int);
- method public abstract void glStencilMask(int);
- method public abstract void glStencilOp(int, int, int);
- method public abstract void glTexCoordPointer(int, int, int, java.nio.Buffer);
- method public abstract void glTexEnvf(int, int, float);
- method public abstract void glTexEnvfv(int, int, float[], int);
- method public abstract void glTexEnvfv(int, int, java.nio.FloatBuffer);
- method public abstract void glTexEnvx(int, int, int);
- method public abstract void glTexEnvxv(int, int, int[], int);
- method public abstract void glTexEnvxv(int, int, java.nio.IntBuffer);
- method public abstract void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
- method public abstract void glTexParameterf(int, int, float);
- method public abstract void glTexParameterx(int, int, int);
- method public abstract void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
- method public abstract void glTranslatef(float, float, float);
- method public abstract void glTranslatex(int, int, int);
- method public abstract void glVertexPointer(int, int, int, java.nio.Buffer);
- method public abstract void glViewport(int, int, int, int);
+ public interface GL10 extends javax.microedition.khronos.opengles.GL {
+ method public void glActiveTexture(int);
+ method public void glAlphaFunc(int, float);
+ method public void glAlphaFuncx(int, int);
+ method public void glBindTexture(int, int);
+ method public void glBlendFunc(int, int);
+ method public void glClear(int);
+ method public void glClearColor(float, float, float, float);
+ method public void glClearColorx(int, int, int, int);
+ method public void glClearDepthf(float);
+ method public void glClearDepthx(int);
+ method public void glClearStencil(int);
+ method public void glClientActiveTexture(int);
+ method public void glColor4f(float, float, float, float);
+ method public void glColor4x(int, int, int, int);
+ method public void glColorMask(boolean, boolean, boolean, boolean);
+ method public void glColorPointer(int, int, int, java.nio.Buffer);
+ method public void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
+ method public void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+ method public void glCopyTexImage2D(int, int, int, int, int, int, int, int);
+ method public void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
+ method public void glCullFace(int);
+ method public void glDeleteTextures(int, int[], int);
+ method public void glDeleteTextures(int, java.nio.IntBuffer);
+ method public void glDepthFunc(int);
+ method public void glDepthMask(boolean);
+ method public void glDepthRangef(float, float);
+ method public void glDepthRangex(int, int);
+ method public void glDisable(int);
+ method public void glDisableClientState(int);
+ method public void glDrawArrays(int, int, int);
+ method public void glDrawElements(int, int, int, java.nio.Buffer);
+ method public void glEnable(int);
+ method public void glEnableClientState(int);
+ method public void glFinish();
+ method public void glFlush();
+ method public void glFogf(int, float);
+ method public void glFogfv(int, float[], int);
+ method public void glFogfv(int, java.nio.FloatBuffer);
+ method public void glFogx(int, int);
+ method public void glFogxv(int, int[], int);
+ method public void glFogxv(int, java.nio.IntBuffer);
+ method public void glFrontFace(int);
+ method public void glFrustumf(float, float, float, float, float, float);
+ method public void glFrustumx(int, int, int, int, int, int);
+ method public void glGenTextures(int, int[], int);
+ method public void glGenTextures(int, java.nio.IntBuffer);
+ method public int glGetError();
+ method public void glGetIntegerv(int, int[], int);
+ method public void glGetIntegerv(int, java.nio.IntBuffer);
+ method public String glGetString(int);
+ method public void glHint(int, int);
+ method public void glLightModelf(int, float);
+ method public void glLightModelfv(int, float[], int);
+ method public void glLightModelfv(int, java.nio.FloatBuffer);
+ method public void glLightModelx(int, int);
+ method public void glLightModelxv(int, int[], int);
+ method public void glLightModelxv(int, java.nio.IntBuffer);
+ method public void glLightf(int, int, float);
+ method public void glLightfv(int, int, float[], int);
+ method public void glLightfv(int, int, java.nio.FloatBuffer);
+ method public void glLightx(int, int, int);
+ method public void glLightxv(int, int, int[], int);
+ method public void glLightxv(int, int, java.nio.IntBuffer);
+ method public void glLineWidth(float);
+ method public void glLineWidthx(int);
+ method public void glLoadIdentity();
+ method public void glLoadMatrixf(float[], int);
+ method public void glLoadMatrixf(java.nio.FloatBuffer);
+ method public void glLoadMatrixx(int[], int);
+ method public void glLoadMatrixx(java.nio.IntBuffer);
+ method public void glLogicOp(int);
+ method public void glMaterialf(int, int, float);
+ method public void glMaterialfv(int, int, float[], int);
+ method public void glMaterialfv(int, int, java.nio.FloatBuffer);
+ method public void glMaterialx(int, int, int);
+ method public void glMaterialxv(int, int, int[], int);
+ method public void glMaterialxv(int, int, java.nio.IntBuffer);
+ method public void glMatrixMode(int);
+ method public void glMultMatrixf(float[], int);
+ method public void glMultMatrixf(java.nio.FloatBuffer);
+ method public void glMultMatrixx(int[], int);
+ method public void glMultMatrixx(java.nio.IntBuffer);
+ method public void glMultiTexCoord4f(int, float, float, float, float);
+ method public void glMultiTexCoord4x(int, int, int, int, int);
+ method public void glNormal3f(float, float, float);
+ method public void glNormal3x(int, int, int);
+ method public void glNormalPointer(int, int, java.nio.Buffer);
+ method public void glOrthof(float, float, float, float, float, float);
+ method public void glOrthox(int, int, int, int, int, int);
+ method public void glPixelStorei(int, int);
+ method public void glPointSize(float);
+ method public void glPointSizex(int);
+ method public void glPolygonOffset(float, float);
+ method public void glPolygonOffsetx(int, int);
+ method public void glPopMatrix();
+ method public void glPushMatrix();
+ method public void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
+ method public void glRotatef(float, float, float, float);
+ method public void glRotatex(int, int, int, int);
+ method public void glSampleCoverage(float, boolean);
+ method public void glSampleCoveragex(int, boolean);
+ method public void glScalef(float, float, float);
+ method public void glScalex(int, int, int);
+ method public void glScissor(int, int, int, int);
+ method public void glShadeModel(int);
+ method public void glStencilFunc(int, int, int);
+ method public void glStencilMask(int);
+ method public void glStencilOp(int, int, int);
+ method public void glTexCoordPointer(int, int, int, java.nio.Buffer);
+ method public void glTexEnvf(int, int, float);
+ method public void glTexEnvfv(int, int, float[], int);
+ method public void glTexEnvfv(int, int, java.nio.FloatBuffer);
+ method public void glTexEnvx(int, int, int);
+ method public void glTexEnvxv(int, int, int[], int);
+ method public void glTexEnvxv(int, int, java.nio.IntBuffer);
+ method public void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+ method public void glTexParameterf(int, int, float);
+ method public void glTexParameterx(int, int, int);
+ method public void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+ method public void glTranslatef(float, float, float);
+ method public void glTranslatex(int, int, int);
+ method public void glVertexPointer(int, int, int, java.nio.Buffer);
+ method public void glViewport(int, int, int, int);
field public static final int GL_ADD = 260; // 0x104
field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
@@ -74610,80 +74591,80 @@
field public static final int GL_ZERO = 0; // 0x0
}
- public abstract interface GL10Ext implements javax.microedition.khronos.opengles.GL {
- method public abstract int glQueryMatrixxOES(int[], int, int[], int);
- method public abstract int glQueryMatrixxOES(java.nio.IntBuffer, java.nio.IntBuffer);
+ public interface GL10Ext extends javax.microedition.khronos.opengles.GL {
+ method public int glQueryMatrixxOES(int[], int, int[], int);
+ method public int glQueryMatrixxOES(java.nio.IntBuffer, java.nio.IntBuffer);
}
- public abstract interface GL11 implements javax.microedition.khronos.opengles.GL10 {
- method public abstract void glBindBuffer(int, int);
- method public abstract void glBufferData(int, int, java.nio.Buffer, int);
- method public abstract void glBufferSubData(int, int, int, java.nio.Buffer);
- method public abstract void glClipPlanef(int, float[], int);
- method public abstract void glClipPlanef(int, java.nio.FloatBuffer);
- method public abstract void glClipPlanex(int, int[], int);
- method public abstract void glClipPlanex(int, java.nio.IntBuffer);
- method public abstract void glColor4ub(byte, byte, byte, byte);
- method public abstract void glColorPointer(int, int, int, int);
- method public abstract void glDeleteBuffers(int, int[], int);
- method public abstract void glDeleteBuffers(int, java.nio.IntBuffer);
- method public abstract void glDrawElements(int, int, int, int);
- method public abstract void glGenBuffers(int, int[], int);
- method public abstract void glGenBuffers(int, java.nio.IntBuffer);
- method public abstract void glGetBooleanv(int, boolean[], int);
- method public abstract void glGetBooleanv(int, java.nio.IntBuffer);
- method public abstract void glGetBufferParameteriv(int, int, int[], int);
- method public abstract void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
- method public abstract void glGetClipPlanef(int, float[], int);
- method public abstract void glGetClipPlanef(int, java.nio.FloatBuffer);
- method public abstract void glGetClipPlanex(int, int[], int);
- method public abstract void glGetClipPlanex(int, java.nio.IntBuffer);
- method public abstract void glGetFixedv(int, int[], int);
- method public abstract void glGetFixedv(int, java.nio.IntBuffer);
- method public abstract void glGetFloatv(int, float[], int);
- method public abstract void glGetFloatv(int, java.nio.FloatBuffer);
- method public abstract void glGetLightfv(int, int, float[], int);
- method public abstract void glGetLightfv(int, int, java.nio.FloatBuffer);
- method public abstract void glGetLightxv(int, int, int[], int);
- method public abstract void glGetLightxv(int, int, java.nio.IntBuffer);
- method public abstract void glGetMaterialfv(int, int, float[], int);
- method public abstract void glGetMaterialfv(int, int, java.nio.FloatBuffer);
- method public abstract void glGetMaterialxv(int, int, int[], int);
- method public abstract void glGetMaterialxv(int, int, java.nio.IntBuffer);
- method public abstract void glGetPointerv(int, java.nio.Buffer[]);
- method public abstract void glGetTexEnviv(int, int, int[], int);
- method public abstract void glGetTexEnviv(int, int, java.nio.IntBuffer);
- method public abstract void glGetTexEnvxv(int, int, int[], int);
- method public abstract void glGetTexEnvxv(int, int, java.nio.IntBuffer);
- method public abstract void glGetTexParameterfv(int, int, float[], int);
- method public abstract void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
- method public abstract void glGetTexParameteriv(int, int, int[], int);
- method public abstract void glGetTexParameteriv(int, int, java.nio.IntBuffer);
- method public abstract void glGetTexParameterxv(int, int, int[], int);
- method public abstract void glGetTexParameterxv(int, int, java.nio.IntBuffer);
- method public abstract boolean glIsBuffer(int);
- method public abstract boolean glIsEnabled(int);
- method public abstract boolean glIsTexture(int);
- method public abstract void glNormalPointer(int, int, int);
- method public abstract void glPointParameterf(int, float);
- method public abstract void glPointParameterfv(int, float[], int);
- method public abstract void glPointParameterfv(int, java.nio.FloatBuffer);
- method public abstract void glPointParameterx(int, int);
- method public abstract void glPointParameterxv(int, int[], int);
- method public abstract void glPointParameterxv(int, java.nio.IntBuffer);
- method public abstract void glPointSizePointerOES(int, int, java.nio.Buffer);
- method public abstract void glTexCoordPointer(int, int, int, int);
- method public abstract void glTexEnvi(int, int, int);
- method public abstract void glTexEnviv(int, int, int[], int);
- method public abstract void glTexEnviv(int, int, java.nio.IntBuffer);
- method public abstract void glTexParameterfv(int, int, float[], int);
- method public abstract void glTexParameterfv(int, int, java.nio.FloatBuffer);
- method public abstract void glTexParameteri(int, int, int);
- method public abstract void glTexParameteriv(int, int, int[], int);
- method public abstract void glTexParameteriv(int, int, java.nio.IntBuffer);
- method public abstract void glTexParameterxv(int, int, int[], int);
- method public abstract void glTexParameterxv(int, int, java.nio.IntBuffer);
- method public abstract void glVertexPointer(int, int, int, int);
+ public interface GL11 extends javax.microedition.khronos.opengles.GL10 {
+ method public void glBindBuffer(int, int);
+ method public void glBufferData(int, int, java.nio.Buffer, int);
+ method public void glBufferSubData(int, int, int, java.nio.Buffer);
+ method public void glClipPlanef(int, float[], int);
+ method public void glClipPlanef(int, java.nio.FloatBuffer);
+ method public void glClipPlanex(int, int[], int);
+ method public void glClipPlanex(int, java.nio.IntBuffer);
+ method public void glColor4ub(byte, byte, byte, byte);
+ method public void glColorPointer(int, int, int, int);
+ method public void glDeleteBuffers(int, int[], int);
+ method public void glDeleteBuffers(int, java.nio.IntBuffer);
+ method public void glDrawElements(int, int, int, int);
+ method public void glGenBuffers(int, int[], int);
+ method public void glGenBuffers(int, java.nio.IntBuffer);
+ method public void glGetBooleanv(int, boolean[], int);
+ method public void glGetBooleanv(int, java.nio.IntBuffer);
+ method public void glGetBufferParameteriv(int, int, int[], int);
+ method public void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
+ method public void glGetClipPlanef(int, float[], int);
+ method public void glGetClipPlanef(int, java.nio.FloatBuffer);
+ method public void glGetClipPlanex(int, int[], int);
+ method public void glGetClipPlanex(int, java.nio.IntBuffer);
+ method public void glGetFixedv(int, int[], int);
+ method public void glGetFixedv(int, java.nio.IntBuffer);
+ method public void glGetFloatv(int, float[], int);
+ method public void glGetFloatv(int, java.nio.FloatBuffer);
+ method public void glGetLightfv(int, int, float[], int);
+ method public void glGetLightfv(int, int, java.nio.FloatBuffer);
+ method public void glGetLightxv(int, int, int[], int);
+ method public void glGetLightxv(int, int, java.nio.IntBuffer);
+ method public void glGetMaterialfv(int, int, float[], int);
+ method public void glGetMaterialfv(int, int, java.nio.FloatBuffer);
+ method public void glGetMaterialxv(int, int, int[], int);
+ method public void glGetMaterialxv(int, int, java.nio.IntBuffer);
+ method public void glGetPointerv(int, java.nio.Buffer[]);
+ method public void glGetTexEnviv(int, int, int[], int);
+ method public void glGetTexEnviv(int, int, java.nio.IntBuffer);
+ method public void glGetTexEnvxv(int, int, int[], int);
+ method public void glGetTexEnvxv(int, int, java.nio.IntBuffer);
+ method public void glGetTexParameterfv(int, int, float[], int);
+ method public void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
+ method public void glGetTexParameteriv(int, int, int[], int);
+ method public void glGetTexParameteriv(int, int, java.nio.IntBuffer);
+ method public void glGetTexParameterxv(int, int, int[], int);
+ method public void glGetTexParameterxv(int, int, java.nio.IntBuffer);
+ method public boolean glIsBuffer(int);
+ method public boolean glIsEnabled(int);
+ method public boolean glIsTexture(int);
+ method public void glNormalPointer(int, int, int);
+ method public void glPointParameterf(int, float);
+ method public void glPointParameterfv(int, float[], int);
+ method public void glPointParameterfv(int, java.nio.FloatBuffer);
+ method public void glPointParameterx(int, int);
+ method public void glPointParameterxv(int, int[], int);
+ method public void glPointParameterxv(int, java.nio.IntBuffer);
+ method public void glPointSizePointerOES(int, int, java.nio.Buffer);
+ method public void glTexCoordPointer(int, int, int, int);
+ method public void glTexEnvi(int, int, int);
+ method public void glTexEnviv(int, int, int[], int);
+ method public void glTexEnviv(int, int, java.nio.IntBuffer);
+ method public void glTexParameterfv(int, int, float[], int);
+ method public void glTexParameterfv(int, int, java.nio.FloatBuffer);
+ method public void glTexParameteri(int, int, int);
+ method public void glTexParameteriv(int, int, int[], int);
+ method public void glTexParameteriv(int, int, java.nio.IntBuffer);
+ method public void glTexParameterxv(int, int, int[], int);
+ method public void glTexParameterxv(int, int, java.nio.IntBuffer);
+ method public void glVertexPointer(int, int, int, int);
field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
field public static final int GL_ADD_SIGNED = 34164; // 0x8574
field public static final int GL_ALPHA_SCALE = 3356; // 0xd1c
@@ -74808,28 +74789,28 @@
field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
}
- public abstract interface GL11Ext implements javax.microedition.khronos.opengles.GL {
- method public abstract void glCurrentPaletteMatrixOES(int);
- method public abstract void glDrawTexfOES(float, float, float, float, float);
- method public abstract void glDrawTexfvOES(float[], int);
- method public abstract void glDrawTexfvOES(java.nio.FloatBuffer);
- method public abstract void glDrawTexiOES(int, int, int, int, int);
- method public abstract void glDrawTexivOES(int[], int);
- method public abstract void glDrawTexivOES(java.nio.IntBuffer);
- method public abstract void glDrawTexsOES(short, short, short, short, short);
- method public abstract void glDrawTexsvOES(short[], int);
- method public abstract void glDrawTexsvOES(java.nio.ShortBuffer);
- method public abstract void glDrawTexxOES(int, int, int, int, int);
- method public abstract void glDrawTexxvOES(int[], int);
- method public abstract void glDrawTexxvOES(java.nio.IntBuffer);
- method public abstract void glEnable(int);
- method public abstract void glEnableClientState(int);
- method public abstract void glLoadPaletteFromModelViewMatrixOES();
- method public abstract void glMatrixIndexPointerOES(int, int, int, java.nio.Buffer);
- method public abstract void glMatrixIndexPointerOES(int, int, int, int);
- method public abstract void glTexParameterfv(int, int, float[], int);
- method public abstract void glWeightPointerOES(int, int, int, java.nio.Buffer);
- method public abstract void glWeightPointerOES(int, int, int, int);
+ public interface GL11Ext extends javax.microedition.khronos.opengles.GL {
+ method public void glCurrentPaletteMatrixOES(int);
+ method public void glDrawTexfOES(float, float, float, float, float);
+ method public void glDrawTexfvOES(float[], int);
+ method public void glDrawTexfvOES(java.nio.FloatBuffer);
+ method public void glDrawTexiOES(int, int, int, int, int);
+ method public void glDrawTexivOES(int[], int);
+ method public void glDrawTexivOES(java.nio.IntBuffer);
+ method public void glDrawTexsOES(short, short, short, short, short);
+ method public void glDrawTexsvOES(short[], int);
+ method public void glDrawTexsvOES(java.nio.ShortBuffer);
+ method public void glDrawTexxOES(int, int, int, int, int);
+ method public void glDrawTexxvOES(int[], int);
+ method public void glDrawTexxvOES(java.nio.IntBuffer);
+ method public void glEnable(int);
+ method public void glEnableClientState(int);
+ method public void glLoadPaletteFromModelViewMatrixOES();
+ method public void glMatrixIndexPointerOES(int, int, int, java.nio.Buffer);
+ method public void glMatrixIndexPointerOES(int, int, int, int);
+ method public void glTexParameterfv(int, int, float[], int);
+ method public void glWeightPointerOES(int, int, int, java.nio.Buffer);
+ method public void glWeightPointerOES(int, int, int, int);
field public static final int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 35742; // 0x8b9e
field public static final int GL_MATRIX_INDEX_ARRAY_OES = 34884; // 0x8844
field public static final int GL_MATRIX_INDEX_ARRAY_POINTER_OES = 34889; // 0x8849
@@ -74848,60 +74829,60 @@
field public static final int GL_WEIGHT_ARRAY_TYPE_OES = 34473; // 0x86a9
}
- public abstract interface GL11ExtensionPack implements javax.microedition.khronos.opengles.GL {
- method public abstract void glBindFramebufferOES(int, int);
- method public abstract void glBindRenderbufferOES(int, int);
- method public abstract void glBindTexture(int, int);
- method public abstract void glBlendEquation(int);
- method public abstract void glBlendEquationSeparate(int, int);
- method public abstract void glBlendFuncSeparate(int, int, int, int);
- method public abstract int glCheckFramebufferStatusOES(int);
- method public abstract void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
- method public abstract void glCopyTexImage2D(int, int, int, int, int, int, int, int);
- method public abstract void glDeleteFramebuffersOES(int, int[], int);
- method public abstract void glDeleteFramebuffersOES(int, java.nio.IntBuffer);
- method public abstract void glDeleteRenderbuffersOES(int, int[], int);
- method public abstract void glDeleteRenderbuffersOES(int, java.nio.IntBuffer);
- method public abstract void glEnable(int);
- method public abstract void glFramebufferRenderbufferOES(int, int, int, int);
- method public abstract void glFramebufferTexture2DOES(int, int, int, int, int);
- method public abstract void glGenFramebuffersOES(int, int[], int);
- method public abstract void glGenFramebuffersOES(int, java.nio.IntBuffer);
- method public abstract void glGenRenderbuffersOES(int, int[], int);
- method public abstract void glGenRenderbuffersOES(int, java.nio.IntBuffer);
- method public abstract void glGenerateMipmapOES(int);
- method public abstract void glGetFramebufferAttachmentParameterivOES(int, int, int, int[], int);
- method public abstract void glGetFramebufferAttachmentParameterivOES(int, int, int, java.nio.IntBuffer);
- method public abstract void glGetIntegerv(int, int[], int);
- method public abstract void glGetIntegerv(int, java.nio.IntBuffer);
- method public abstract void glGetRenderbufferParameterivOES(int, int, int[], int);
- method public abstract void glGetRenderbufferParameterivOES(int, int, java.nio.IntBuffer);
- method public abstract void glGetTexGenfv(int, int, float[], int);
- method public abstract void glGetTexGenfv(int, int, java.nio.FloatBuffer);
- method public abstract void glGetTexGeniv(int, int, int[], int);
- method public abstract void glGetTexGeniv(int, int, java.nio.IntBuffer);
- method public abstract void glGetTexGenxv(int, int, int[], int);
- method public abstract void glGetTexGenxv(int, int, java.nio.IntBuffer);
- method public abstract boolean glIsFramebufferOES(int);
- method public abstract boolean glIsRenderbufferOES(int);
- method public abstract void glRenderbufferStorageOES(int, int, int, int);
- method public abstract void glStencilOp(int, int, int);
- method public abstract void glTexEnvf(int, int, float);
- method public abstract void glTexEnvfv(int, int, float[], int);
- method public abstract void glTexEnvfv(int, int, java.nio.FloatBuffer);
- method public abstract void glTexEnvx(int, int, int);
- method public abstract void glTexEnvxv(int, int, int[], int);
- method public abstract void glTexEnvxv(int, int, java.nio.IntBuffer);
- method public abstract void glTexGenf(int, int, float);
- method public abstract void glTexGenfv(int, int, float[], int);
- method public abstract void glTexGenfv(int, int, java.nio.FloatBuffer);
- method public abstract void glTexGeni(int, int, int);
- method public abstract void glTexGeniv(int, int, int[], int);
- method public abstract void glTexGeniv(int, int, java.nio.IntBuffer);
- method public abstract void glTexGenx(int, int, int);
- method public abstract void glTexGenxv(int, int, int[], int);
- method public abstract void glTexGenxv(int, int, java.nio.IntBuffer);
- method public abstract void glTexParameterf(int, int, float);
+ public interface GL11ExtensionPack extends javax.microedition.khronos.opengles.GL {
+ method public void glBindFramebufferOES(int, int);
+ method public void glBindRenderbufferOES(int, int);
+ method public void glBindTexture(int, int);
+ method public void glBlendEquation(int);
+ method public void glBlendEquationSeparate(int, int);
+ method public void glBlendFuncSeparate(int, int, int, int);
+ method public int glCheckFramebufferStatusOES(int);
+ method public void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
+ method public void glCopyTexImage2D(int, int, int, int, int, int, int, int);
+ method public void glDeleteFramebuffersOES(int, int[], int);
+ method public void glDeleteFramebuffersOES(int, java.nio.IntBuffer);
+ method public void glDeleteRenderbuffersOES(int, int[], int);
+ method public void glDeleteRenderbuffersOES(int, java.nio.IntBuffer);
+ method public void glEnable(int);
+ method public void glFramebufferRenderbufferOES(int, int, int, int);
+ method public void glFramebufferTexture2DOES(int, int, int, int, int);
+ method public void glGenFramebuffersOES(int, int[], int);
+ method public void glGenFramebuffersOES(int, java.nio.IntBuffer);
+ method public void glGenRenderbuffersOES(int, int[], int);
+ method public void glGenRenderbuffersOES(int, java.nio.IntBuffer);
+ method public void glGenerateMipmapOES(int);
+ method public void glGetFramebufferAttachmentParameterivOES(int, int, int, int[], int);
+ method public void glGetFramebufferAttachmentParameterivOES(int, int, int, java.nio.IntBuffer);
+ method public void glGetIntegerv(int, int[], int);
+ method public void glGetIntegerv(int, java.nio.IntBuffer);
+ method public void glGetRenderbufferParameterivOES(int, int, int[], int);
+ method public void glGetRenderbufferParameterivOES(int, int, java.nio.IntBuffer);
+ method public void glGetTexGenfv(int, int, float[], int);
+ method public void glGetTexGenfv(int, int, java.nio.FloatBuffer);
+ method public void glGetTexGeniv(int, int, int[], int);
+ method public void glGetTexGeniv(int, int, java.nio.IntBuffer);
+ method public void glGetTexGenxv(int, int, int[], int);
+ method public void glGetTexGenxv(int, int, java.nio.IntBuffer);
+ method public boolean glIsFramebufferOES(int);
+ method public boolean glIsRenderbufferOES(int);
+ method public void glRenderbufferStorageOES(int, int, int, int);
+ method public void glStencilOp(int, int, int);
+ method public void glTexEnvf(int, int, float);
+ method public void glTexEnvfv(int, int, float[], int);
+ method public void glTexEnvfv(int, int, java.nio.FloatBuffer);
+ method public void glTexEnvx(int, int, int);
+ method public void glTexEnvxv(int, int, int[], int);
+ method public void glTexEnvxv(int, int, java.nio.IntBuffer);
+ method public void glTexGenf(int, int, float);
+ method public void glTexGenfv(int, int, float[], int);
+ method public void glTexGenfv(int, int, java.nio.FloatBuffer);
+ method public void glTexGeni(int, int, int);
+ method public void glTexGeniv(int, int, int[], int);
+ method public void glTexGeniv(int, int, java.nio.IntBuffer);
+ method public void glTexGenx(int, int, int);
+ method public void glTexGenxv(int, int, int[], int);
+ method public void glTexGenxv(int, int, java.nio.IntBuffer);
+ method public void glTexParameterf(int, int, float);
field public static final int GL_BLEND_DST_ALPHA = 32970; // 0x80ca
field public static final int GL_BLEND_DST_RGB = 32968; // 0x80c8
field public static final int GL_BLEND_EQUATION = 32777; // 0x8009
@@ -75006,8 +74987,8 @@
public abstract class SocketFactory {
ctor protected SocketFactory();
method public java.net.Socket createSocket() throws java.io.IOException;
- method public abstract java.net.Socket createSocket(java.lang.String, int) throws java.io.IOException, java.net.UnknownHostException;
- method public abstract java.net.Socket createSocket(java.lang.String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
+ method public abstract java.net.Socket createSocket(String, int) throws java.io.IOException, java.net.UnknownHostException;
+ method public abstract java.net.Socket createSocket(String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
method public abstract java.net.Socket createSocket(java.net.InetAddress, int) throws java.io.IOException;
method public abstract java.net.Socket createSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
method public static javax.net.SocketFactory getDefault();
@@ -75024,14 +75005,14 @@
public abstract class ExtendedSSLSession implements javax.net.ssl.SSLSession {
ctor public ExtendedSSLSession();
- method public abstract java.lang.String[] getLocalSupportedSignatureAlgorithms();
- method public abstract java.lang.String[] getPeerSupportedSignatureAlgorithms();
+ method public abstract String[] getLocalSupportedSignatureAlgorithms();
+ method public abstract String[] getPeerSupportedSignatureAlgorithms();
method public java.util.List<javax.net.ssl.SNIServerName> getRequestedServerNames();
}
public class HandshakeCompletedEvent extends java.util.EventObject {
ctor public HandshakeCompletedEvent(javax.net.ssl.SSLSocket, javax.net.ssl.SSLSession);
- method public java.lang.String getCipherSuite();
+ method public String getCipherSuite();
method public java.security.cert.Certificate[] getLocalCertificates();
method public java.security.Principal getLocalPrincipal();
method public javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
@@ -75041,17 +75022,17 @@
method public javax.net.ssl.SSLSocket getSocket();
}
- public abstract interface HandshakeCompletedListener implements java.util.EventListener {
- method public abstract void handshakeCompleted(javax.net.ssl.HandshakeCompletedEvent);
+ public interface HandshakeCompletedListener extends java.util.EventListener {
+ method public void handshakeCompleted(javax.net.ssl.HandshakeCompletedEvent);
}
- public abstract interface HostnameVerifier {
- method public abstract boolean verify(java.lang.String, javax.net.ssl.SSLSession);
+ public interface HostnameVerifier {
+ method public boolean verify(String, javax.net.ssl.SSLSession);
}
public abstract class HttpsURLConnection extends java.net.HttpURLConnection {
ctor protected HttpsURLConnection(java.net.URL);
- method public abstract java.lang.String getCipherSuite();
+ method public abstract String getCipherSuite();
method public static javax.net.ssl.HostnameVerifier getDefaultHostnameVerifier();
method public static javax.net.ssl.SSLSocketFactory getDefaultSSLSocketFactory();
method public javax.net.ssl.HostnameVerifier getHostnameVerifier();
@@ -75067,16 +75048,16 @@
field protected javax.net.ssl.HostnameVerifier hostnameVerifier;
}
- public abstract interface KeyManager {
+ public interface KeyManager {
}
public class KeyManagerFactory {
- ctor protected KeyManagerFactory(javax.net.ssl.KeyManagerFactorySpi, java.security.Provider, java.lang.String);
- method public final java.lang.String getAlgorithm();
- method public static final java.lang.String getDefaultAlgorithm();
- method public static final javax.net.ssl.KeyManagerFactory getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static final javax.net.ssl.KeyManagerFactory getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static final javax.net.ssl.KeyManagerFactory getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ ctor protected KeyManagerFactory(javax.net.ssl.KeyManagerFactorySpi, java.security.Provider, String);
+ method public final String getAlgorithm();
+ method public static final String getDefaultAlgorithm();
+ method public static final javax.net.ssl.KeyManagerFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static final javax.net.ssl.KeyManagerFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static final javax.net.ssl.KeyManagerFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final javax.net.ssl.KeyManager[] getKeyManagers();
method public final java.security.Provider getProvider();
method public final void init(java.security.KeyStore, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
@@ -75096,14 +75077,14 @@
method public java.util.List<java.security.KeyStore.Builder> getParameters();
}
- public abstract interface ManagerFactoryParameters {
+ public interface ManagerFactoryParameters {
}
public final class SNIHostName extends javax.net.ssl.SNIServerName {
- ctor public SNIHostName(java.lang.String);
+ ctor public SNIHostName(String);
ctor public SNIHostName(byte[]);
- method public static javax.net.ssl.SNIMatcher createSNIMatcher(java.lang.String);
- method public java.lang.String getAsciiName();
+ method public static javax.net.ssl.SNIMatcher createSNIMatcher(String);
+ method public String getAsciiName();
}
public abstract class SNIMatcher {
@@ -75119,29 +75100,29 @@
}
public class SSLContext {
- ctor protected SSLContext(javax.net.ssl.SSLContextSpi, java.security.Provider, java.lang.String);
+ ctor protected SSLContext(javax.net.ssl.SSLContextSpi, java.security.Provider, String);
method public final javax.net.ssl.SSLEngine createSSLEngine();
- method public final javax.net.ssl.SSLEngine createSSLEngine(java.lang.String, int);
+ method public final javax.net.ssl.SSLEngine createSSLEngine(String, int);
method public final javax.net.ssl.SSLSessionContext getClientSessionContext();
- method public static synchronized javax.net.ssl.SSLContext getDefault() throws java.security.NoSuchAlgorithmException;
+ method public static javax.net.ssl.SSLContext getDefault() throws java.security.NoSuchAlgorithmException;
method public final javax.net.ssl.SSLParameters getDefaultSSLParameters();
- method public static javax.net.ssl.SSLContext getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static javax.net.ssl.SSLContext getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static javax.net.ssl.SSLContext getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
- method public final java.lang.String getProtocol();
+ method public static javax.net.ssl.SSLContext getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static javax.net.ssl.SSLContext getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static javax.net.ssl.SSLContext getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ method public final String getProtocol();
method public final java.security.Provider getProvider();
method public final javax.net.ssl.SSLSessionContext getServerSessionContext();
method public final javax.net.ssl.SSLServerSocketFactory getServerSocketFactory();
method public final javax.net.ssl.SSLSocketFactory getSocketFactory();
method public final javax.net.ssl.SSLParameters getSupportedSSLParameters();
method public final void init(javax.net.ssl.KeyManager[], javax.net.ssl.TrustManager[], java.security.SecureRandom) throws java.security.KeyManagementException;
- method public static synchronized void setDefault(javax.net.ssl.SSLContext);
+ method public static void setDefault(javax.net.ssl.SSLContext);
}
public abstract class SSLContextSpi {
ctor public SSLContextSpi();
method protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine();
- method protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine(java.lang.String, int);
+ method protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine(String, int);
method protected abstract javax.net.ssl.SSLSessionContext engineGetClientSessionContext();
method protected javax.net.ssl.SSLParameters engineGetDefaultSSLParameters();
method protected abstract javax.net.ssl.SSLSessionContext engineGetServerSessionContext();
@@ -75153,34 +75134,34 @@
public abstract class SSLEngine {
ctor protected SSLEngine();
- ctor protected SSLEngine(java.lang.String, int);
+ ctor protected SSLEngine(String, int);
method public abstract void beginHandshake() throws javax.net.ssl.SSLException;
method public abstract void closeInbound() throws javax.net.ssl.SSLException;
method public abstract void closeOutbound();
- method public java.lang.String getApplicationProtocol();
- method public abstract java.lang.Runnable getDelegatedTask();
+ method public String getApplicationProtocol();
+ method public abstract Runnable getDelegatedTask();
method public abstract boolean getEnableSessionCreation();
- method public abstract java.lang.String[] getEnabledCipherSuites();
- method public abstract java.lang.String[] getEnabledProtocols();
- method public java.lang.String getHandshakeApplicationProtocol();
- method public java.util.function.BiFunction<javax.net.ssl.SSLEngine, java.util.List<java.lang.String>, java.lang.String> getHandshakeApplicationProtocolSelector();
+ method public abstract String[] getEnabledCipherSuites();
+ method public abstract String[] getEnabledProtocols();
+ method public String getHandshakeApplicationProtocol();
+ method public java.util.function.BiFunction<javax.net.ssl.SSLEngine,java.util.List<java.lang.String>,java.lang.String> getHandshakeApplicationProtocolSelector();
method public javax.net.ssl.SSLSession getHandshakeSession();
method public abstract javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus();
method public abstract boolean getNeedClientAuth();
- method public java.lang.String getPeerHost();
+ method public String getPeerHost();
method public int getPeerPort();
method public javax.net.ssl.SSLParameters getSSLParameters();
method public abstract javax.net.ssl.SSLSession getSession();
- method public abstract java.lang.String[] getSupportedCipherSuites();
- method public abstract java.lang.String[] getSupportedProtocols();
+ method public abstract String[] getSupportedCipherSuites();
+ method public abstract String[] getSupportedProtocols();
method public abstract boolean getUseClientMode();
method public abstract boolean getWantClientAuth();
method public abstract boolean isInboundDone();
method public abstract boolean isOutboundDone();
method public abstract void setEnableSessionCreation(boolean);
- method public abstract void setEnabledCipherSuites(java.lang.String[]);
- method public abstract void setEnabledProtocols(java.lang.String[]);
- method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLEngine, java.util.List<java.lang.String>, java.lang.String>);
+ method public abstract void setEnabledCipherSuites(String[]);
+ method public abstract void setEnabledProtocols(String[]);
+ method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLEngine,java.util.List<java.lang.String>,java.lang.String>);
method public abstract void setNeedClientAuth(boolean);
method public void setSSLParameters(javax.net.ssl.SSLParameters);
method public abstract void setUseClientMode(boolean);
@@ -75201,9 +75182,7 @@
method public final javax.net.ssl.SSLEngineResult.Status getStatus();
}
- public static final class SSLEngineResult.HandshakeStatus extends java.lang.Enum {
- method public static javax.net.ssl.SSLEngineResult.HandshakeStatus valueOf(java.lang.String);
- method public static final javax.net.ssl.SSLEngineResult.HandshakeStatus[] values();
+ public enum SSLEngineResult.HandshakeStatus {
enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus FINISHED;
enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_TASK;
enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_UNWRAP;
@@ -75211,9 +75190,7 @@
enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NOT_HANDSHAKING;
}
- public static final class SSLEngineResult.Status extends java.lang.Enum {
- method public static javax.net.ssl.SSLEngineResult.Status valueOf(java.lang.String);
- method public static final javax.net.ssl.SSLEngineResult.Status[] values();
+ public enum SSLEngineResult.Status {
enum_constant public static final javax.net.ssl.SSLEngineResult.Status BUFFER_OVERFLOW;
enum_constant public static final javax.net.ssl.SSLEngineResult.Status BUFFER_UNDERFLOW;
enum_constant public static final javax.net.ssl.SSLEngineResult.Status CLOSED;
@@ -75221,39 +75198,39 @@
}
public class SSLException extends java.io.IOException {
- ctor public SSLException(java.lang.String);
- ctor public SSLException(java.lang.String, java.lang.Throwable);
- ctor public SSLException(java.lang.Throwable);
+ ctor public SSLException(String);
+ ctor public SSLException(String, Throwable);
+ ctor public SSLException(Throwable);
}
public class SSLHandshakeException extends javax.net.ssl.SSLException {
- ctor public SSLHandshakeException(java.lang.String);
+ ctor public SSLHandshakeException(String);
}
public class SSLKeyException extends javax.net.ssl.SSLException {
- ctor public SSLKeyException(java.lang.String);
+ ctor public SSLKeyException(String);
}
public class SSLParameters {
ctor public SSLParameters();
- ctor public SSLParameters(java.lang.String[]);
- ctor public SSLParameters(java.lang.String[], java.lang.String[]);
+ ctor public SSLParameters(String[]);
+ ctor public SSLParameters(String[], String[]);
method public java.security.AlgorithmConstraints getAlgorithmConstraints();
- method public java.lang.String[] getApplicationProtocols();
- method public java.lang.String[] getCipherSuites();
- method public java.lang.String getEndpointIdentificationAlgorithm();
+ method public String[] getApplicationProtocols();
+ method public String[] getCipherSuites();
+ method public String getEndpointIdentificationAlgorithm();
method public boolean getNeedClientAuth();
- method public java.lang.String[] getProtocols();
+ method public String[] getProtocols();
method public final java.util.Collection<javax.net.ssl.SNIMatcher> getSNIMatchers();
method public final java.util.List<javax.net.ssl.SNIServerName> getServerNames();
method public final boolean getUseCipherSuitesOrder();
method public boolean getWantClientAuth();
method public void setAlgorithmConstraints(java.security.AlgorithmConstraints);
- method public void setApplicationProtocols(java.lang.String[]);
- method public void setCipherSuites(java.lang.String[]);
- method public void setEndpointIdentificationAlgorithm(java.lang.String);
+ method public void setApplicationProtocols(String[]);
+ method public void setCipherSuites(String[]);
+ method public void setEndpointIdentificationAlgorithm(String);
method public void setNeedClientAuth(boolean);
- method public void setProtocols(java.lang.String[]);
+ method public void setProtocols(String[]);
method public final void setSNIMatchers(java.util.Collection<javax.net.ssl.SNIMatcher>);
method public final void setServerNames(java.util.List<javax.net.ssl.SNIServerName>);
method public final void setUseCipherSuitesOrder(boolean);
@@ -75261,16 +75238,16 @@
}
public class SSLPeerUnverifiedException extends javax.net.ssl.SSLException {
- ctor public SSLPeerUnverifiedException(java.lang.String);
+ ctor public SSLPeerUnverifiedException(String);
}
public final class SSLPermission extends java.security.BasicPermission {
- ctor public SSLPermission(java.lang.String);
- ctor public SSLPermission(java.lang.String, java.lang.String);
+ ctor public SSLPermission(String);
+ ctor public SSLPermission(String, String);
}
public class SSLProtocolException extends javax.net.ssl.SSLException {
- ctor public SSLProtocolException(java.lang.String);
+ ctor public SSLProtocolException(String);
}
public abstract class SSLServerSocket extends java.net.ServerSocket {
@@ -75279,17 +75256,17 @@
ctor protected SSLServerSocket(int, int) throws java.io.IOException;
ctor protected SSLServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
method public abstract boolean getEnableSessionCreation();
- method public abstract java.lang.String[] getEnabledCipherSuites();
- method public abstract java.lang.String[] getEnabledProtocols();
+ method public abstract String[] getEnabledCipherSuites();
+ method public abstract String[] getEnabledProtocols();
method public abstract boolean getNeedClientAuth();
method public javax.net.ssl.SSLParameters getSSLParameters();
- method public abstract java.lang.String[] getSupportedCipherSuites();
- method public abstract java.lang.String[] getSupportedProtocols();
+ method public abstract String[] getSupportedCipherSuites();
+ method public abstract String[] getSupportedProtocols();
method public abstract boolean getUseClientMode();
method public abstract boolean getWantClientAuth();
method public abstract void setEnableSessionCreation(boolean);
- method public abstract void setEnabledCipherSuites(java.lang.String[]);
- method public abstract void setEnabledProtocols(java.lang.String[]);
+ method public abstract void setEnabledCipherSuites(String[]);
+ method public abstract void setEnabledProtocols(String[]);
method public abstract void setNeedClientAuth(boolean);
method public void setSSLParameters(javax.net.ssl.SSLParameters);
method public abstract void setUseClientMode(boolean);
@@ -75298,81 +75275,81 @@
public abstract class SSLServerSocketFactory extends javax.net.ServerSocketFactory {
ctor protected SSLServerSocketFactory();
- method public static synchronized javax.net.ServerSocketFactory getDefault();
- method public abstract java.lang.String[] getDefaultCipherSuites();
- method public abstract java.lang.String[] getSupportedCipherSuites();
+ method public static javax.net.ServerSocketFactory getDefault();
+ method public abstract String[] getDefaultCipherSuites();
+ method public abstract String[] getSupportedCipherSuites();
}
- public abstract interface SSLSession {
- method public abstract int getApplicationBufferSize();
- method public abstract java.lang.String getCipherSuite();
- method public abstract long getCreationTime();
- method public abstract byte[] getId();
- method public abstract long getLastAccessedTime();
- method public abstract java.security.cert.Certificate[] getLocalCertificates();
- method public abstract java.security.Principal getLocalPrincipal();
- method public abstract int getPacketBufferSize();
- method public abstract javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
- method public abstract java.security.cert.Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
- method public abstract java.lang.String getPeerHost();
- method public abstract int getPeerPort();
- method public abstract java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
- method public abstract java.lang.String getProtocol();
- method public abstract javax.net.ssl.SSLSessionContext getSessionContext();
- method public abstract java.lang.Object getValue(java.lang.String);
- method public abstract java.lang.String[] getValueNames();
- method public abstract void invalidate();
- method public abstract boolean isValid();
- method public abstract void putValue(java.lang.String, java.lang.Object);
- method public abstract void removeValue(java.lang.String);
+ public interface SSLSession {
+ method public int getApplicationBufferSize();
+ method public String getCipherSuite();
+ method public long getCreationTime();
+ method public byte[] getId();
+ method public long getLastAccessedTime();
+ method public java.security.cert.Certificate[] getLocalCertificates();
+ method public java.security.Principal getLocalPrincipal();
+ method public int getPacketBufferSize();
+ method public javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
+ method public java.security.cert.Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
+ method public String getPeerHost();
+ method public int getPeerPort();
+ method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
+ method public String getProtocol();
+ method public javax.net.ssl.SSLSessionContext getSessionContext();
+ method public Object getValue(String);
+ method public String[] getValueNames();
+ method public void invalidate();
+ method public boolean isValid();
+ method public void putValue(String, Object);
+ method public void removeValue(String);
}
public class SSLSessionBindingEvent extends java.util.EventObject {
- ctor public SSLSessionBindingEvent(javax.net.ssl.SSLSession, java.lang.String);
- method public java.lang.String getName();
+ ctor public SSLSessionBindingEvent(javax.net.ssl.SSLSession, String);
+ method public String getName();
method public javax.net.ssl.SSLSession getSession();
}
- public abstract interface SSLSessionBindingListener implements java.util.EventListener {
- method public abstract void valueBound(javax.net.ssl.SSLSessionBindingEvent);
- method public abstract void valueUnbound(javax.net.ssl.SSLSessionBindingEvent);
+ public interface SSLSessionBindingListener extends java.util.EventListener {
+ method public void valueBound(javax.net.ssl.SSLSessionBindingEvent);
+ method public void valueUnbound(javax.net.ssl.SSLSessionBindingEvent);
}
- public abstract interface SSLSessionContext {
- method public abstract java.util.Enumeration<byte[]> getIds();
- method public abstract javax.net.ssl.SSLSession getSession(byte[]);
- method public abstract int getSessionCacheSize();
- method public abstract int getSessionTimeout();
- method public abstract void setSessionCacheSize(int) throws java.lang.IllegalArgumentException;
- method public abstract void setSessionTimeout(int) throws java.lang.IllegalArgumentException;
+ public interface SSLSessionContext {
+ method public java.util.Enumeration<byte[]> getIds();
+ method public javax.net.ssl.SSLSession getSession(byte[]);
+ method public int getSessionCacheSize();
+ method public int getSessionTimeout();
+ method public void setSessionCacheSize(int) throws java.lang.IllegalArgumentException;
+ method public void setSessionTimeout(int) throws java.lang.IllegalArgumentException;
}
public abstract class SSLSocket extends java.net.Socket {
ctor protected SSLSocket();
- ctor protected SSLSocket(java.lang.String, int) throws java.io.IOException, java.net.UnknownHostException;
+ ctor protected SSLSocket(String, int) throws java.io.IOException, java.net.UnknownHostException;
ctor protected SSLSocket(java.net.InetAddress, int) throws java.io.IOException;
- ctor protected SSLSocket(java.lang.String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
+ ctor protected SSLSocket(String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
ctor protected SSLSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
method public abstract void addHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
- method public java.lang.String getApplicationProtocol();
+ method public String getApplicationProtocol();
method public abstract boolean getEnableSessionCreation();
- method public abstract java.lang.String[] getEnabledCipherSuites();
- method public abstract java.lang.String[] getEnabledProtocols();
- method public java.lang.String getHandshakeApplicationProtocol();
- method public java.util.function.BiFunction<javax.net.ssl.SSLSocket, java.util.List<java.lang.String>, java.lang.String> getHandshakeApplicationProtocolSelector();
+ method public abstract String[] getEnabledCipherSuites();
+ method public abstract String[] getEnabledProtocols();
+ method public String getHandshakeApplicationProtocol();
+ method public java.util.function.BiFunction<javax.net.ssl.SSLSocket,java.util.List<java.lang.String>,java.lang.String> getHandshakeApplicationProtocolSelector();
method public javax.net.ssl.SSLSession getHandshakeSession();
method public abstract boolean getNeedClientAuth();
method public javax.net.ssl.SSLParameters getSSLParameters();
method public abstract javax.net.ssl.SSLSession getSession();
- method public abstract java.lang.String[] getSupportedCipherSuites();
- method public abstract java.lang.String[] getSupportedProtocols();
+ method public abstract String[] getSupportedCipherSuites();
+ method public abstract String[] getSupportedProtocols();
method public abstract boolean getUseClientMode();
method public abstract boolean getWantClientAuth();
method public abstract void removeHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
method public abstract void setEnableSessionCreation(boolean);
- method public abstract void setEnabledCipherSuites(java.lang.String[]);
- method public abstract void setEnabledProtocols(java.lang.String[]);
- method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLSocket, java.util.List<java.lang.String>, java.lang.String>);
+ method public abstract void setEnabledCipherSuites(String[]);
+ method public abstract void setEnabledProtocols(String[]);
+ method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLSocket,java.util.List<java.lang.String>,java.lang.String>);
method public abstract void setNeedClientAuth(boolean);
method public void setSSLParameters(javax.net.ssl.SSLParameters);
method public abstract void setUseClientMode(boolean);
@@ -75382,26 +75359,26 @@
public abstract class SSLSocketFactory extends javax.net.SocketFactory {
ctor public SSLSocketFactory();
- method public abstract java.net.Socket createSocket(java.net.Socket, java.lang.String, int, boolean) throws java.io.IOException;
- method public static synchronized javax.net.SocketFactory getDefault();
- method public abstract java.lang.String[] getDefaultCipherSuites();
- method public abstract java.lang.String[] getSupportedCipherSuites();
+ method public abstract java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException;
+ method public static javax.net.SocketFactory getDefault();
+ method public abstract String[] getDefaultCipherSuites();
+ method public abstract String[] getSupportedCipherSuites();
}
public final class StandardConstants {
field public static final int SNI_HOST_NAME = 0; // 0x0
}
- public abstract interface TrustManager {
+ public interface TrustManager {
}
public class TrustManagerFactory {
- ctor protected TrustManagerFactory(javax.net.ssl.TrustManagerFactorySpi, java.security.Provider, java.lang.String);
- method public final java.lang.String getAlgorithm();
- method public static final java.lang.String getDefaultAlgorithm();
- method public static final javax.net.ssl.TrustManagerFactory getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
- method public static final javax.net.ssl.TrustManagerFactory getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
- method public static final javax.net.ssl.TrustManagerFactory getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+ ctor protected TrustManagerFactory(javax.net.ssl.TrustManagerFactorySpi, java.security.Provider, String);
+ method public final String getAlgorithm();
+ method public static final String getDefaultAlgorithm();
+ method public static final javax.net.ssl.TrustManagerFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
+ method public static final javax.net.ssl.TrustManagerFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+ method public static final javax.net.ssl.TrustManagerFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
method public final javax.net.ssl.TrustManager[] getTrustManagers();
method public final void init(java.security.KeyStore) throws java.security.KeyStoreException;
@@ -75417,31 +75394,31 @@
public abstract class X509ExtendedKeyManager implements javax.net.ssl.X509KeyManager {
ctor protected X509ExtendedKeyManager();
- method public java.lang.String chooseEngineClientAlias(java.lang.String[], java.security.Principal[], javax.net.ssl.SSLEngine);
- method public java.lang.String chooseEngineServerAlias(java.lang.String, java.security.Principal[], javax.net.ssl.SSLEngine);
+ method public String chooseEngineClientAlias(String[], java.security.Principal[], javax.net.ssl.SSLEngine);
+ method public String chooseEngineServerAlias(String, java.security.Principal[], javax.net.ssl.SSLEngine);
}
public abstract class X509ExtendedTrustManager implements javax.net.ssl.X509TrustManager {
ctor public X509ExtendedTrustManager();
- method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], java.lang.String, java.net.Socket) throws java.security.cert.CertificateException;
- method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], java.lang.String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
- method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String, java.net.Socket) throws java.security.cert.CertificateException;
- method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
+ method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
+ method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
+ method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
+ method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
}
- public abstract interface X509KeyManager implements javax.net.ssl.KeyManager {
- method public abstract java.lang.String chooseClientAlias(java.lang.String[], java.security.Principal[], java.net.Socket);
- method public abstract java.lang.String chooseServerAlias(java.lang.String, java.security.Principal[], java.net.Socket);
- method public abstract java.security.cert.X509Certificate[] getCertificateChain(java.lang.String);
- method public abstract java.lang.String[] getClientAliases(java.lang.String, java.security.Principal[]);
- method public abstract java.security.PrivateKey getPrivateKey(java.lang.String);
- method public abstract java.lang.String[] getServerAliases(java.lang.String, java.security.Principal[]);
+ public interface X509KeyManager extends javax.net.ssl.KeyManager {
+ method public String chooseClientAlias(String[], java.security.Principal[], java.net.Socket);
+ method public String chooseServerAlias(String, java.security.Principal[], java.net.Socket);
+ method public java.security.cert.X509Certificate[] getCertificateChain(String);
+ method public String[] getClientAliases(String, java.security.Principal[]);
+ method public java.security.PrivateKey getPrivateKey(String);
+ method public String[] getServerAliases(String, java.security.Principal[]);
}
- public abstract interface X509TrustManager implements javax.net.ssl.TrustManager {
- method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], java.lang.String) throws java.security.cert.CertificateException;
- method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String) throws java.security.cert.CertificateException;
- method public abstract java.security.cert.X509Certificate[] getAcceptedIssuers();
+ public interface X509TrustManager extends javax.net.ssl.TrustManager {
+ method public void checkClientTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
+ method public void checkServerTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
+ method public java.security.cert.X509Certificate[] getAcceptedIssuers();
}
}
@@ -75449,25 +75426,25 @@
package javax.security.auth {
public final class AuthPermission extends java.security.BasicPermission {
- ctor public AuthPermission(java.lang.String);
- ctor public AuthPermission(java.lang.String, java.lang.String);
+ ctor public AuthPermission(String);
+ ctor public AuthPermission(String, String);
}
public class DestroyFailedException extends java.lang.Exception {
ctor public DestroyFailedException();
- ctor public DestroyFailedException(java.lang.String);
+ ctor public DestroyFailedException(String);
}
- public abstract interface Destroyable {
+ public interface Destroyable {
method public default void destroy() throws javax.security.auth.DestroyFailedException;
method public default boolean isDestroyed();
}
public final class PrivateCredentialPermission extends java.security.Permission {
- ctor public PrivateCredentialPermission(java.lang.String, java.lang.String);
- method public java.lang.String getActions();
- method public java.lang.String getCredentialClass();
- method public java.lang.String[][] getPrincipals();
+ ctor public PrivateCredentialPermission(String, String);
+ method public String getActions();
+ method public String getCredentialClass();
+ method public String[][] getPrincipals();
method public boolean implies(java.security.Permission);
}
@@ -75479,11 +75456,11 @@
method public static <T> T doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedAction<T>, java.security.AccessControlContext);
method public static <T> T doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction<T>, java.security.AccessControlContext) throws java.security.PrivilegedActionException;
method public java.util.Set<java.security.Principal> getPrincipals();
- method public <T extends java.security.Principal> java.util.Set<T> getPrincipals(java.lang.Class<T>);
+ method public <T extends java.security.Principal> java.util.Set<T> getPrincipals(Class<T>);
method public java.util.Set<java.lang.Object> getPrivateCredentials();
- method public <T> java.util.Set<T> getPrivateCredentials(java.lang.Class<T>);
+ method public <T> java.util.Set<T> getPrivateCredentials(Class<T>);
method public java.util.Set<java.lang.Object> getPublicCredentials();
- method public <T> java.util.Set<T> getPublicCredentials(java.lang.Class<T>);
+ method public <T> java.util.Set<T> getPublicCredentials(Class<T>);
method public static javax.security.auth.Subject getSubject(java.security.AccessControlContext);
method public boolean isReadOnly();
method public void setReadOnly();
@@ -75499,25 +75476,25 @@
package javax.security.auth.callback {
- public abstract interface Callback {
+ public interface Callback {
}
- public abstract interface CallbackHandler {
- method public abstract void handle(javax.security.auth.callback.Callback[]) throws java.io.IOException, javax.security.auth.callback.UnsupportedCallbackException;
+ public interface CallbackHandler {
+ method public void handle(javax.security.auth.callback.Callback[]) throws java.io.IOException, javax.security.auth.callback.UnsupportedCallbackException;
}
public class PasswordCallback implements javax.security.auth.callback.Callback java.io.Serializable {
- ctor public PasswordCallback(java.lang.String, boolean);
+ ctor public PasswordCallback(String, boolean);
method public void clearPassword();
method public char[] getPassword();
- method public java.lang.String getPrompt();
+ method public String getPrompt();
method public boolean isEchoOn();
method public void setPassword(char[]);
}
public class UnsupportedCallbackException extends java.lang.Exception {
ctor public UnsupportedCallbackException(javax.security.auth.callback.Callback);
- ctor public UnsupportedCallbackException(javax.security.auth.callback.Callback, java.lang.String);
+ ctor public UnsupportedCallbackException(javax.security.auth.callback.Callback, String);
method public javax.security.auth.callback.Callback getCallback();
}
@@ -75527,7 +75504,7 @@
public class LoginException extends java.security.GeneralSecurityException {
ctor public LoginException();
- ctor public LoginException(java.lang.String);
+ ctor public LoginException(String);
}
}
@@ -75535,17 +75512,17 @@
package javax.security.auth.x500 {
public final class X500Principal implements java.security.Principal java.io.Serializable {
- ctor public X500Principal(java.lang.String);
- ctor public X500Principal(java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
+ ctor public X500Principal(String);
+ ctor public X500Principal(String, java.util.Map<java.lang.String,java.lang.String>);
ctor public X500Principal(byte[]);
ctor public X500Principal(java.io.InputStream);
method public byte[] getEncoded();
- method public java.lang.String getName();
- method public java.lang.String getName(java.lang.String);
- method public java.lang.String getName(java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
- field public static final java.lang.String CANONICAL = "CANONICAL";
- field public static final java.lang.String RFC1779 = "RFC1779";
- field public static final java.lang.String RFC2253 = "RFC2253";
+ method public String getName();
+ method public String getName(String);
+ method public String getName(String, java.util.Map<java.lang.String,java.lang.String>);
+ field public static final String CANONICAL = "CANONICAL";
+ field public static final String RFC1779 = "RFC1779";
+ field public static final String RFC2253 = "RFC2253";
}
}
@@ -75556,34 +75533,34 @@
ctor public Certificate();
method public abstract byte[] getEncoded() throws javax.security.cert.CertificateEncodingException;
method public abstract java.security.PublicKey getPublicKey();
- method public abstract java.lang.String toString();
+ method public abstract String toString();
method public abstract void verify(java.security.PublicKey) throws javax.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
- method public abstract void verify(java.security.PublicKey, java.lang.String) throws javax.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
+ method public abstract void verify(java.security.PublicKey, String) throws javax.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
}
public class CertificateEncodingException extends javax.security.cert.CertificateException {
ctor public CertificateEncodingException();
- ctor public CertificateEncodingException(java.lang.String);
+ ctor public CertificateEncodingException(String);
}
public class CertificateException extends java.lang.Exception {
ctor public CertificateException();
- ctor public CertificateException(java.lang.String);
+ ctor public CertificateException(String);
}
public class CertificateExpiredException extends javax.security.cert.CertificateException {
ctor public CertificateExpiredException();
- ctor public CertificateExpiredException(java.lang.String);
+ ctor public CertificateExpiredException(String);
}
public class CertificateNotYetValidException extends javax.security.cert.CertificateException {
ctor public CertificateNotYetValidException();
- ctor public CertificateNotYetValidException(java.lang.String);
+ ctor public CertificateNotYetValidException(String);
}
public class CertificateParsingException extends javax.security.cert.CertificateException {
ctor public CertificateParsingException();
- ctor public CertificateParsingException(java.lang.String);
+ ctor public CertificateParsingException(String);
}
public abstract class X509Certificate extends javax.security.cert.Certificate {
@@ -75596,8 +75573,8 @@
method public abstract java.util.Date getNotAfter();
method public abstract java.util.Date getNotBefore();
method public abstract java.math.BigInteger getSerialNumber();
- method public abstract java.lang.String getSigAlgName();
- method public abstract java.lang.String getSigAlgOID();
+ method public abstract String getSigAlgName();
+ method public abstract String getSigAlgOID();
method public abstract byte[] getSigAlgParams();
method public abstract java.security.Principal getSubjectDN();
method public abstract int getVersion();
@@ -75607,12 +75584,12 @@
package javax.sql {
- public abstract interface CommonDataSource {
- method public abstract java.io.PrintWriter getLogWriter() throws java.sql.SQLException;
- method public abstract int getLoginTimeout() throws java.sql.SQLException;
- method public abstract java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException;
- method public abstract void setLogWriter(java.io.PrintWriter) throws java.sql.SQLException;
- method public abstract void setLoginTimeout(int) throws java.sql.SQLException;
+ public interface CommonDataSource {
+ method public java.io.PrintWriter getLogWriter() throws java.sql.SQLException;
+ method public int getLoginTimeout() throws java.sql.SQLException;
+ method public java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException;
+ method public void setLogWriter(java.io.PrintWriter) throws java.sql.SQLException;
+ method public void setLoginTimeout(int) throws java.sql.SQLException;
}
public class ConnectionEvent extends java.util.EventObject {
@@ -75621,192 +75598,192 @@
method public java.sql.SQLException getSQLException();
}
- public abstract interface ConnectionEventListener implements java.util.EventListener {
- method public abstract void connectionClosed(javax.sql.ConnectionEvent);
- method public abstract void connectionErrorOccurred(javax.sql.ConnectionEvent);
+ public interface ConnectionEventListener extends java.util.EventListener {
+ method public void connectionClosed(javax.sql.ConnectionEvent);
+ method public void connectionErrorOccurred(javax.sql.ConnectionEvent);
}
- public abstract interface ConnectionPoolDataSource implements javax.sql.CommonDataSource {
- method public abstract javax.sql.PooledConnection getPooledConnection() throws java.sql.SQLException;
- method public abstract javax.sql.PooledConnection getPooledConnection(java.lang.String, java.lang.String) throws java.sql.SQLException;
+ public interface ConnectionPoolDataSource extends javax.sql.CommonDataSource {
+ method public javax.sql.PooledConnection getPooledConnection() throws java.sql.SQLException;
+ method public javax.sql.PooledConnection getPooledConnection(String, String) throws java.sql.SQLException;
}
- public abstract interface DataSource implements javax.sql.CommonDataSource java.sql.Wrapper {
- method public abstract java.sql.Connection getConnection() throws java.sql.SQLException;
- method public abstract java.sql.Connection getConnection(java.lang.String, java.lang.String) throws java.sql.SQLException;
+ public interface DataSource extends javax.sql.CommonDataSource java.sql.Wrapper {
+ method public java.sql.Connection getConnection() throws java.sql.SQLException;
+ method public java.sql.Connection getConnection(String, String) throws java.sql.SQLException;
}
- public abstract interface PooledConnection {
- method public abstract void addConnectionEventListener(javax.sql.ConnectionEventListener);
- method public abstract void addStatementEventListener(javax.sql.StatementEventListener);
- method public abstract void close() throws java.sql.SQLException;
- method public abstract java.sql.Connection getConnection() throws java.sql.SQLException;
- method public abstract void removeConnectionEventListener(javax.sql.ConnectionEventListener);
- method public abstract void removeStatementEventListener(javax.sql.StatementEventListener);
+ public interface PooledConnection {
+ method public void addConnectionEventListener(javax.sql.ConnectionEventListener);
+ method public void addStatementEventListener(javax.sql.StatementEventListener);
+ method public void close() throws java.sql.SQLException;
+ method public java.sql.Connection getConnection() throws java.sql.SQLException;
+ method public void removeConnectionEventListener(javax.sql.ConnectionEventListener);
+ method public void removeStatementEventListener(javax.sql.StatementEventListener);
}
- public abstract interface RowSet implements java.sql.ResultSet {
- method public abstract void addRowSetListener(javax.sql.RowSetListener);
- method public abstract void clearParameters() throws java.sql.SQLException;
- method public abstract void execute() throws java.sql.SQLException;
- method public abstract java.lang.String getCommand();
- method public abstract java.lang.String getDataSourceName();
- method public abstract boolean getEscapeProcessing() throws java.sql.SQLException;
- method public abstract int getMaxFieldSize() throws java.sql.SQLException;
- method public abstract int getMaxRows() throws java.sql.SQLException;
- method public abstract java.lang.String getPassword();
- method public abstract int getQueryTimeout() throws java.sql.SQLException;
- method public abstract int getTransactionIsolation();
- method public abstract java.util.Map<java.lang.String, java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
- method public abstract java.lang.String getUrl() throws java.sql.SQLException;
- method public abstract java.lang.String getUsername();
- method public abstract boolean isReadOnly();
- method public abstract void removeRowSetListener(javax.sql.RowSetListener);
- method public abstract void setArray(int, java.sql.Array) throws java.sql.SQLException;
- method public abstract void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void setAsciiStream(java.lang.String, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setAsciiStream(java.lang.String, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
- method public abstract void setBigDecimal(java.lang.String, java.math.BigDecimal) throws java.sql.SQLException;
- method public abstract void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void setBinaryStream(java.lang.String, java.io.InputStream, int) throws java.sql.SQLException;
- method public abstract void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBinaryStream(java.lang.String, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
- method public abstract void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBlob(java.lang.String, java.io.InputStream, long) throws java.sql.SQLException;
- method public abstract void setBlob(java.lang.String, java.sql.Blob) throws java.sql.SQLException;
- method public abstract void setBlob(java.lang.String, java.io.InputStream) throws java.sql.SQLException;
- method public abstract void setBoolean(int, boolean) throws java.sql.SQLException;
- method public abstract void setBoolean(java.lang.String, boolean) throws java.sql.SQLException;
- method public abstract void setByte(int, byte) throws java.sql.SQLException;
- method public abstract void setByte(java.lang.String, byte) throws java.sql.SQLException;
- method public abstract void setBytes(int, byte[]) throws java.sql.SQLException;
- method public abstract void setBytes(java.lang.String, byte[]) throws java.sql.SQLException;
- method public abstract void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
- method public abstract void setCharacterStream(java.lang.String, java.io.Reader, int) throws java.sql.SQLException;
- method public abstract void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setCharacterStream(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setClob(int, java.sql.Clob) throws java.sql.SQLException;
- method public abstract void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setClob(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setClob(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setClob(java.lang.String, java.sql.Clob) throws java.sql.SQLException;
- method public abstract void setClob(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setCommand(java.lang.String) throws java.sql.SQLException;
- method public abstract void setConcurrency(int) throws java.sql.SQLException;
- method public abstract void setDataSourceName(java.lang.String) throws java.sql.SQLException;
- method public abstract void setDate(int, java.sql.Date) throws java.sql.SQLException;
- method public abstract void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setDate(java.lang.String, java.sql.Date) throws java.sql.SQLException;
- method public abstract void setDate(java.lang.String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setDouble(int, double) throws java.sql.SQLException;
- method public abstract void setDouble(java.lang.String, double) throws java.sql.SQLException;
- method public abstract void setEscapeProcessing(boolean) throws java.sql.SQLException;
- method public abstract void setFloat(int, float) throws java.sql.SQLException;
- method public abstract void setFloat(java.lang.String, float) throws java.sql.SQLException;
- method public abstract void setInt(int, int) throws java.sql.SQLException;
- method public abstract void setInt(java.lang.String, int) throws java.sql.SQLException;
- method public abstract void setLong(int, long) throws java.sql.SQLException;
- method public abstract void setLong(java.lang.String, long) throws java.sql.SQLException;
- method public abstract void setMaxFieldSize(int) throws java.sql.SQLException;
- method public abstract void setMaxRows(int) throws java.sql.SQLException;
- method public abstract void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setNCharacterStream(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setNCharacterStream(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setNClob(java.lang.String, java.sql.NClob) throws java.sql.SQLException;
- method public abstract void setNClob(java.lang.String, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setNClob(java.lang.String, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
- method public abstract void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
- method public abstract void setNClob(int, java.io.Reader) throws java.sql.SQLException;
- method public abstract void setNString(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setNString(java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract void setNull(int, int) throws java.sql.SQLException;
- method public abstract void setNull(java.lang.String, int) throws java.sql.SQLException;
- method public abstract void setNull(int, int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setNull(java.lang.String, int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setObject(int, java.lang.Object, int, int) throws java.sql.SQLException;
- method public abstract void setObject(java.lang.String, java.lang.Object, int, int) throws java.sql.SQLException;
- method public abstract void setObject(int, java.lang.Object, int) throws java.sql.SQLException;
- method public abstract void setObject(java.lang.String, java.lang.Object, int) throws java.sql.SQLException;
- method public abstract void setObject(java.lang.String, java.lang.Object) throws java.sql.SQLException;
- method public abstract void setObject(int, java.lang.Object) throws java.sql.SQLException;
- method public abstract void setPassword(java.lang.String) throws java.sql.SQLException;
- method public abstract void setQueryTimeout(int) throws java.sql.SQLException;
- method public abstract void setReadOnly(boolean) throws java.sql.SQLException;
- method public abstract void setRef(int, java.sql.Ref) throws java.sql.SQLException;
- method public abstract void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
- method public abstract void setRowId(java.lang.String, java.sql.RowId) throws java.sql.SQLException;
- method public abstract void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
- method public abstract void setSQLXML(java.lang.String, java.sql.SQLXML) throws java.sql.SQLException;
- method public abstract void setShort(int, short) throws java.sql.SQLException;
- method public abstract void setShort(java.lang.String, short) throws java.sql.SQLException;
- method public abstract void setString(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setString(java.lang.String, java.lang.String) throws java.sql.SQLException;
- method public abstract void setTime(int, java.sql.Time) throws java.sql.SQLException;
- method public abstract void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setTime(java.lang.String, java.sql.Time) throws java.sql.SQLException;
- method public abstract void setTime(java.lang.String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
- method public abstract void setTimestamp(java.lang.String, java.sql.Timestamp) throws java.sql.SQLException;
- method public abstract void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setTimestamp(java.lang.String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
- method public abstract void setTransactionIsolation(int) throws java.sql.SQLException;
- method public abstract void setType(int) throws java.sql.SQLException;
- method public abstract void setTypeMap(java.util.Map<java.lang.String, java.lang.Class<?>>) throws java.sql.SQLException;
- method public abstract void setURL(int, java.net.URL) throws java.sql.SQLException;
- method public abstract void setUrl(java.lang.String) throws java.sql.SQLException;
- method public abstract void setUsername(java.lang.String) throws java.sql.SQLException;
+ public interface RowSet extends java.sql.ResultSet {
+ method public void addRowSetListener(javax.sql.RowSetListener);
+ method public void clearParameters() throws java.sql.SQLException;
+ method public void execute() throws java.sql.SQLException;
+ method public String getCommand();
+ method public String getDataSourceName();
+ method public boolean getEscapeProcessing() throws java.sql.SQLException;
+ method public int getMaxFieldSize() throws java.sql.SQLException;
+ method public int getMaxRows() throws java.sql.SQLException;
+ method public String getPassword();
+ method public int getQueryTimeout() throws java.sql.SQLException;
+ method public int getTransactionIsolation();
+ method public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
+ method public String getUrl() throws java.sql.SQLException;
+ method public String getUsername();
+ method public boolean isReadOnly();
+ method public void removeRowSetListener(javax.sql.RowSetListener);
+ method public void setArray(int, java.sql.Array) throws java.sql.SQLException;
+ method public void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void setAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
+ method public void setAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
+ method public void setBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
+ method public void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void setBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+ method public void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
+ method public void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
+ method public void setBlob(String, java.sql.Blob) throws java.sql.SQLException;
+ method public void setBlob(String, java.io.InputStream) throws java.sql.SQLException;
+ method public void setBoolean(int, boolean) throws java.sql.SQLException;
+ method public void setBoolean(String, boolean) throws java.sql.SQLException;
+ method public void setByte(int, byte) throws java.sql.SQLException;
+ method public void setByte(String, byte) throws java.sql.SQLException;
+ method public void setBytes(int, byte[]) throws java.sql.SQLException;
+ method public void setBytes(String, byte[]) throws java.sql.SQLException;
+ method public void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
+ method public void setCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
+ method public void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+ method public void setCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+ method public void setClob(int, java.sql.Clob) throws java.sql.SQLException;
+ method public void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setClob(int, java.io.Reader) throws java.sql.SQLException;
+ method public void setClob(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setClob(String, java.sql.Clob) throws java.sql.SQLException;
+ method public void setClob(String, java.io.Reader) throws java.sql.SQLException;
+ method public void setCommand(String) throws java.sql.SQLException;
+ method public void setConcurrency(int) throws java.sql.SQLException;
+ method public void setDataSourceName(String) throws java.sql.SQLException;
+ method public void setDate(int, java.sql.Date) throws java.sql.SQLException;
+ method public void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
+ method public void setDate(String, java.sql.Date) throws java.sql.SQLException;
+ method public void setDate(String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
+ method public void setDouble(int, double) throws java.sql.SQLException;
+ method public void setDouble(String, double) throws java.sql.SQLException;
+ method public void setEscapeProcessing(boolean) throws java.sql.SQLException;
+ method public void setFloat(int, float) throws java.sql.SQLException;
+ method public void setFloat(String, float) throws java.sql.SQLException;
+ method public void setInt(int, int) throws java.sql.SQLException;
+ method public void setInt(String, int) throws java.sql.SQLException;
+ method public void setLong(int, long) throws java.sql.SQLException;
+ method public void setLong(String, long) throws java.sql.SQLException;
+ method public void setMaxFieldSize(int) throws java.sql.SQLException;
+ method public void setMaxRows(int) throws java.sql.SQLException;
+ method public void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+ method public void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+ method public void setNClob(String, java.sql.NClob) throws java.sql.SQLException;
+ method public void setNClob(String, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setNClob(String, java.io.Reader) throws java.sql.SQLException;
+ method public void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
+ method public void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
+ method public void setNClob(int, java.io.Reader) throws java.sql.SQLException;
+ method public void setNString(int, String) throws java.sql.SQLException;
+ method public void setNString(String, String) throws java.sql.SQLException;
+ method public void setNull(int, int) throws java.sql.SQLException;
+ method public void setNull(String, int) throws java.sql.SQLException;
+ method public void setNull(int, int, String) throws java.sql.SQLException;
+ method public void setNull(String, int, String) throws java.sql.SQLException;
+ method public void setObject(int, Object, int, int) throws java.sql.SQLException;
+ method public void setObject(String, Object, int, int) throws java.sql.SQLException;
+ method public void setObject(int, Object, int) throws java.sql.SQLException;
+ method public void setObject(String, Object, int) throws java.sql.SQLException;
+ method public void setObject(String, Object) throws java.sql.SQLException;
+ method public void setObject(int, Object) throws java.sql.SQLException;
+ method public void setPassword(String) throws java.sql.SQLException;
+ method public void setQueryTimeout(int) throws java.sql.SQLException;
+ method public void setReadOnly(boolean) throws java.sql.SQLException;
+ method public void setRef(int, java.sql.Ref) throws java.sql.SQLException;
+ method public void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
+ method public void setRowId(String, java.sql.RowId) throws java.sql.SQLException;
+ method public void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
+ method public void setSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
+ method public void setShort(int, short) throws java.sql.SQLException;
+ method public void setShort(String, short) throws java.sql.SQLException;
+ method public void setString(int, String) throws java.sql.SQLException;
+ method public void setString(String, String) throws java.sql.SQLException;
+ method public void setTime(int, java.sql.Time) throws java.sql.SQLException;
+ method public void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
+ method public void setTime(String, java.sql.Time) throws java.sql.SQLException;
+ method public void setTime(String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
+ method public void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
+ method public void setTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
+ method public void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
+ method public void setTimestamp(String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
+ method public void setTransactionIsolation(int) throws java.sql.SQLException;
+ method public void setType(int) throws java.sql.SQLException;
+ method public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+ method public void setURL(int, java.net.URL) throws java.sql.SQLException;
+ method public void setUrl(String) throws java.sql.SQLException;
+ method public void setUsername(String) throws java.sql.SQLException;
}
public class RowSetEvent extends java.util.EventObject {
ctor public RowSetEvent(javax.sql.RowSet);
}
- public abstract interface RowSetInternal {
- method public abstract java.sql.Connection getConnection() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getOriginal() throws java.sql.SQLException;
- method public abstract java.sql.ResultSet getOriginalRow() throws java.sql.SQLException;
- method public abstract java.lang.Object[] getParams() throws java.sql.SQLException;
- method public abstract void setMetaData(javax.sql.RowSetMetaData) throws java.sql.SQLException;
+ public interface RowSetInternal {
+ method public java.sql.Connection getConnection() throws java.sql.SQLException;
+ method public java.sql.ResultSet getOriginal() throws java.sql.SQLException;
+ method public java.sql.ResultSet getOriginalRow() throws java.sql.SQLException;
+ method public Object[] getParams() throws java.sql.SQLException;
+ method public void setMetaData(javax.sql.RowSetMetaData) throws java.sql.SQLException;
}
- public abstract interface RowSetListener implements java.util.EventListener {
- method public abstract void cursorMoved(javax.sql.RowSetEvent);
- method public abstract void rowChanged(javax.sql.RowSetEvent);
- method public abstract void rowSetChanged(javax.sql.RowSetEvent);
+ public interface RowSetListener extends java.util.EventListener {
+ method public void cursorMoved(javax.sql.RowSetEvent);
+ method public void rowChanged(javax.sql.RowSetEvent);
+ method public void rowSetChanged(javax.sql.RowSetEvent);
}
- public abstract interface RowSetMetaData implements java.sql.ResultSetMetaData {
- method public abstract void setAutoIncrement(int, boolean) throws java.sql.SQLException;
- method public abstract void setCaseSensitive(int, boolean) throws java.sql.SQLException;
- method public abstract void setCatalogName(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setColumnCount(int) throws java.sql.SQLException;
- method public abstract void setColumnDisplaySize(int, int) throws java.sql.SQLException;
- method public abstract void setColumnLabel(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setColumnName(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setColumnType(int, int) throws java.sql.SQLException;
- method public abstract void setColumnTypeName(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setCurrency(int, boolean) throws java.sql.SQLException;
- method public abstract void setNullable(int, int) throws java.sql.SQLException;
- method public abstract void setPrecision(int, int) throws java.sql.SQLException;
- method public abstract void setScale(int, int) throws java.sql.SQLException;
- method public abstract void setSchemaName(int, java.lang.String) throws java.sql.SQLException;
- method public abstract void setSearchable(int, boolean) throws java.sql.SQLException;
- method public abstract void setSigned(int, boolean) throws java.sql.SQLException;
- method public abstract void setTableName(int, java.lang.String) throws java.sql.SQLException;
+ public interface RowSetMetaData extends java.sql.ResultSetMetaData {
+ method public void setAutoIncrement(int, boolean) throws java.sql.SQLException;
+ method public void setCaseSensitive(int, boolean) throws java.sql.SQLException;
+ method public void setCatalogName(int, String) throws java.sql.SQLException;
+ method public void setColumnCount(int) throws java.sql.SQLException;
+ method public void setColumnDisplaySize(int, int) throws java.sql.SQLException;
+ method public void setColumnLabel(int, String) throws java.sql.SQLException;
+ method public void setColumnName(int, String) throws java.sql.SQLException;
+ method public void setColumnType(int, int) throws java.sql.SQLException;
+ method public void setColumnTypeName(int, String) throws java.sql.SQLException;
+ method public void setCurrency(int, boolean) throws java.sql.SQLException;
+ method public void setNullable(int, int) throws java.sql.SQLException;
+ method public void setPrecision(int, int) throws java.sql.SQLException;
+ method public void setScale(int, int) throws java.sql.SQLException;
+ method public void setSchemaName(int, String) throws java.sql.SQLException;
+ method public void setSearchable(int, boolean) throws java.sql.SQLException;
+ method public void setSigned(int, boolean) throws java.sql.SQLException;
+ method public void setTableName(int, String) throws java.sql.SQLException;
}
- public abstract interface RowSetReader {
- method public abstract void readData(javax.sql.RowSetInternal) throws java.sql.SQLException;
+ public interface RowSetReader {
+ method public void readData(javax.sql.RowSetInternal) throws java.sql.SQLException;
}
- public abstract interface RowSetWriter {
- method public abstract boolean writeData(javax.sql.RowSetInternal) throws java.sql.SQLException;
+ public interface RowSetWriter {
+ method public boolean writeData(javax.sql.RowSetInternal) throws java.sql.SQLException;
}
public class StatementEvent extends java.util.EventObject {
@@ -75816,9 +75793,9 @@
method public java.sql.PreparedStatement getStatement();
}
- public abstract interface StatementEventListener implements java.util.EventListener {
- method public abstract void statementClosed(javax.sql.StatementEvent);
- method public abstract void statementErrorOccurred(javax.sql.StatementEvent);
+ public interface StatementEventListener extends java.util.EventListener {
+ method public void statementClosed(javax.sql.StatementEvent);
+ method public void statementErrorOccurred(javax.sql.StatementEvent);
}
}
@@ -75826,18 +75803,18 @@
package javax.xml {
public final class XMLConstants {
- field public static final java.lang.String DEFAULT_NS_PREFIX = "";
- field public static final java.lang.String FEATURE_SECURE_PROCESSING = "http://javax.xml.XMLConstants/feature/secure-processing";
- field public static final java.lang.String NULL_NS_URI = "";
- field public static final java.lang.String RELAXNG_NS_URI = "http://relaxng.org/ns/structure/1.0";
- field public static final java.lang.String W3C_XML_SCHEMA_INSTANCE_NS_URI = "http://www.w3.org/2001/XMLSchema-instance";
- field public static final java.lang.String W3C_XML_SCHEMA_NS_URI = "http://www.w3.org/2001/XMLSchema";
- field public static final java.lang.String W3C_XPATH_DATATYPE_NS_URI = "http://www.w3.org/2003/11/xpath-datatypes";
- field public static final java.lang.String XMLNS_ATTRIBUTE = "xmlns";
- field public static final java.lang.String XMLNS_ATTRIBUTE_NS_URI = "http://www.w3.org/2000/xmlns/";
- field public static final java.lang.String XML_DTD_NS_URI = "http://www.w3.org/TR/REC-xml";
- field public static final java.lang.String XML_NS_PREFIX = "xml";
- field public static final java.lang.String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
+ field public static final String DEFAULT_NS_PREFIX = "";
+ field public static final String FEATURE_SECURE_PROCESSING = "http://javax.xml.XMLConstants/feature/secure-processing";
+ field public static final String NULL_NS_URI = "";
+ field public static final String RELAXNG_NS_URI = "http://relaxng.org/ns/structure/1.0";
+ field public static final String W3C_XML_SCHEMA_INSTANCE_NS_URI = "http://www.w3.org/2001/XMLSchema-instance";
+ field public static final String W3C_XML_SCHEMA_NS_URI = "http://www.w3.org/2001/XMLSchema";
+ field public static final String W3C_XPATH_DATATYPE_NS_URI = "http://www.w3.org/2003/11/xpath-datatypes";
+ field public static final String XMLNS_ATTRIBUTE = "xmlns";
+ field public static final String XMLNS_ATTRIBUTE_NS_URI = "http://www.w3.org/2000/xmlns/";
+ field public static final String XML_DTD_NS_URI = "http://www.w3.org/TR/REC-xml";
+ field public static final String XML_NS_PREFIX = "xml";
+ field public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
}
}
@@ -75846,9 +75823,9 @@
public class DatatypeConfigurationException extends java.lang.Exception {
ctor public DatatypeConfigurationException();
- ctor public DatatypeConfigurationException(java.lang.String);
- ctor public DatatypeConfigurationException(java.lang.String, java.lang.Throwable);
- ctor public DatatypeConfigurationException(java.lang.Throwable);
+ ctor public DatatypeConfigurationException(String);
+ ctor public DatatypeConfigurationException(String, Throwable);
+ ctor public DatatypeConfigurationException(Throwable);
}
public final class DatatypeConstants {
@@ -75896,22 +75873,22 @@
public abstract class DatatypeFactory {
ctor protected DatatypeFactory();
- method public abstract javax.xml.datatype.Duration newDuration(java.lang.String);
+ method public abstract javax.xml.datatype.Duration newDuration(String);
method public abstract javax.xml.datatype.Duration newDuration(long);
method public abstract javax.xml.datatype.Duration newDuration(boolean, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigDecimal);
method public javax.xml.datatype.Duration newDuration(boolean, int, int, int, int, int, int);
- method public javax.xml.datatype.Duration newDurationDayTime(java.lang.String);
+ method public javax.xml.datatype.Duration newDurationDayTime(String);
method public javax.xml.datatype.Duration newDurationDayTime(long);
method public javax.xml.datatype.Duration newDurationDayTime(boolean, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
method public javax.xml.datatype.Duration newDurationDayTime(boolean, int, int, int, int);
- method public javax.xml.datatype.Duration newDurationYearMonth(java.lang.String);
+ method public javax.xml.datatype.Duration newDurationYearMonth(String);
method public javax.xml.datatype.Duration newDurationYearMonth(long);
method public javax.xml.datatype.Duration newDurationYearMonth(boolean, java.math.BigInteger, java.math.BigInteger);
method public javax.xml.datatype.Duration newDurationYearMonth(boolean, int, int);
method public static javax.xml.datatype.DatatypeFactory newInstance() throws javax.xml.datatype.DatatypeConfigurationException;
- method public static javax.xml.datatype.DatatypeFactory newInstance(java.lang.String, java.lang.ClassLoader) throws javax.xml.datatype.DatatypeConfigurationException;
+ method public static javax.xml.datatype.DatatypeFactory newInstance(String, ClassLoader) throws javax.xml.datatype.DatatypeConfigurationException;
method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar();
- method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(java.lang.String);
+ method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(String);
method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(java.util.GregorianCalendar);
method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(java.math.BigInteger, int, int, int, int, int, java.math.BigDecimal, int);
method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(int, int, int, int, int, int, int, int);
@@ -75919,8 +75896,8 @@
method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, int);
method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, java.math.BigDecimal, int);
method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, int, int);
- field public static final java.lang.String DATATYPEFACTORY_IMPLEMENTATION_CLASS;
- field public static final java.lang.String DATATYPEFACTORY_PROPERTY = "javax.xml.datatype.DatatypeFactory";
+ field public static final String DATATYPEFACTORY_IMPLEMENTATION_CLASS;
+ field public static final String DATATYPEFACTORY_PROPERTY = "javax.xml.datatype.DatatypeFactory";
}
public abstract class Duration {
@@ -75930,7 +75907,7 @@
method public void addTo(java.util.Date);
method public abstract int compare(javax.xml.datatype.Duration);
method public int getDays();
- method public abstract java.lang.Number getField(javax.xml.datatype.DatatypeConstants.Field);
+ method public abstract Number getField(javax.xml.datatype.DatatypeConstants.Field);
method public int getHours();
method public int getMinutes();
method public int getMonths();
@@ -75955,7 +75932,7 @@
ctor public XMLGregorianCalendar();
method public abstract void add(javax.xml.datatype.Duration);
method public abstract void clear();
- method public abstract java.lang.Object clone();
+ method public abstract Object clone();
method public abstract int compare(javax.xml.datatype.XMLGregorianCalendar);
method public abstract int getDay();
method public abstract java.math.BigInteger getEon();
@@ -75988,29 +75965,29 @@
method public abstract void setYear(int);
method public abstract java.util.GregorianCalendar toGregorianCalendar();
method public abstract java.util.GregorianCalendar toGregorianCalendar(java.util.TimeZone, java.util.Locale, javax.xml.datatype.XMLGregorianCalendar);
- method public abstract java.lang.String toXMLFormat();
+ method public abstract String toXMLFormat();
}
}
package javax.xml.namespace {
- public abstract interface NamespaceContext {
- method public abstract java.lang.String getNamespaceURI(java.lang.String);
- method public abstract java.lang.String getPrefix(java.lang.String);
- method public abstract java.util.Iterator getPrefixes(java.lang.String);
+ public interface NamespaceContext {
+ method public String getNamespaceURI(String);
+ method public String getPrefix(String);
+ method public java.util.Iterator getPrefixes(String);
}
public class QName implements java.io.Serializable {
- ctor public QName(java.lang.String, java.lang.String);
- ctor public QName(java.lang.String, java.lang.String, java.lang.String);
- ctor public QName(java.lang.String);
- method public final boolean equals(java.lang.Object);
- method public java.lang.String getLocalPart();
- method public java.lang.String getNamespaceURI();
- method public java.lang.String getPrefix();
+ ctor public QName(String, String);
+ ctor public QName(String, String, String);
+ ctor public QName(String);
+ method public final boolean equals(Object);
+ method public String getLocalPart();
+ method public String getNamespaceURI();
+ method public String getPrefix();
method public final int hashCode();
- method public static javax.xml.namespace.QName valueOf(java.lang.String);
+ method public static javax.xml.namespace.QName valueOf(String);
}
}
@@ -76026,8 +76003,8 @@
method public boolean isXIncludeAware();
method public abstract org.w3c.dom.Document newDocument();
method public org.w3c.dom.Document parse(java.io.InputStream) throws java.io.IOException, org.xml.sax.SAXException;
- method public org.w3c.dom.Document parse(java.io.InputStream, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
- method public org.w3c.dom.Document parse(java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public org.w3c.dom.Document parse(java.io.InputStream, String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public org.w3c.dom.Document parse(String) throws java.io.IOException, org.xml.sax.SAXException;
method public org.w3c.dom.Document parse(java.io.File) throws java.io.IOException, org.xml.sax.SAXException;
method public abstract org.w3c.dom.Document parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
method public void reset();
@@ -76037,8 +76014,8 @@
public abstract class DocumentBuilderFactory {
ctor protected DocumentBuilderFactory();
- method public abstract java.lang.Object getAttribute(java.lang.String) throws java.lang.IllegalArgumentException;
- method public abstract boolean getFeature(java.lang.String) throws javax.xml.parsers.ParserConfigurationException;
+ method public abstract Object getAttribute(String) throws java.lang.IllegalArgumentException;
+ method public abstract boolean getFeature(String) throws javax.xml.parsers.ParserConfigurationException;
method public javax.xml.validation.Schema getSchema();
method public boolean isCoalescing();
method public boolean isExpandEntityReferences();
@@ -76049,11 +76026,11 @@
method public boolean isXIncludeAware();
method public abstract javax.xml.parsers.DocumentBuilder newDocumentBuilder() throws javax.xml.parsers.ParserConfigurationException;
method public static javax.xml.parsers.DocumentBuilderFactory newInstance();
- method public static javax.xml.parsers.DocumentBuilderFactory newInstance(java.lang.String, java.lang.ClassLoader);
- method public abstract void setAttribute(java.lang.String, java.lang.Object) throws java.lang.IllegalArgumentException;
+ method public static javax.xml.parsers.DocumentBuilderFactory newInstance(String, ClassLoader);
+ method public abstract void setAttribute(String, Object) throws java.lang.IllegalArgumentException;
method public void setCoalescing(boolean);
method public void setExpandEntityReferences(boolean);
- method public abstract void setFeature(java.lang.String, boolean) throws javax.xml.parsers.ParserConfigurationException;
+ method public abstract void setFeature(String, boolean) throws javax.xml.parsers.ParserConfigurationException;
method public void setIgnoringComments(boolean);
method public void setIgnoringElementContentWhitespace(boolean);
method public void setNamespaceAware(boolean);
@@ -76064,51 +76041,51 @@
public class FactoryConfigurationError extends java.lang.Error {
ctor public FactoryConfigurationError();
- ctor public FactoryConfigurationError(java.lang.String);
- ctor public FactoryConfigurationError(java.lang.Exception);
- ctor public FactoryConfigurationError(java.lang.Exception, java.lang.String);
- method public java.lang.Exception getException();
+ ctor public FactoryConfigurationError(String);
+ ctor public FactoryConfigurationError(Exception);
+ ctor public FactoryConfigurationError(Exception, String);
+ method public Exception getException();
}
public class ParserConfigurationException extends java.lang.Exception {
ctor public ParserConfigurationException();
- ctor public ParserConfigurationException(java.lang.String);
+ ctor public ParserConfigurationException(String);
}
public abstract class SAXParser {
ctor protected SAXParser();
method public abstract org.xml.sax.Parser getParser() throws org.xml.sax.SAXException;
- method public abstract java.lang.Object getProperty(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public abstract Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public javax.xml.validation.Schema getSchema();
method public abstract org.xml.sax.XMLReader getXMLReader() throws org.xml.sax.SAXException;
method public abstract boolean isNamespaceAware();
method public abstract boolean isValidating();
method public boolean isXIncludeAware();
method public void parse(java.io.InputStream, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
- method public void parse(java.io.InputStream, org.xml.sax.HandlerBase, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void parse(java.io.InputStream, org.xml.sax.HandlerBase, String) throws java.io.IOException, org.xml.sax.SAXException;
method public void parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
- method public void parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
- method public void parse(java.lang.String, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
- method public void parse(java.lang.String, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler, String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void parse(String, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void parse(String, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
method public void parse(java.io.File, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
method public void parse(java.io.File, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
method public void parse(org.xml.sax.InputSource, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
method public void parse(org.xml.sax.InputSource, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
method public void reset();
- method public abstract void setProperty(java.lang.String, java.lang.Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public abstract void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
}
public abstract class SAXParserFactory {
ctor protected SAXParserFactory();
- method public abstract boolean getFeature(java.lang.String) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public abstract boolean getFeature(String) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public javax.xml.validation.Schema getSchema();
method public boolean isNamespaceAware();
method public boolean isValidating();
method public boolean isXIncludeAware();
method public static javax.xml.parsers.SAXParserFactory newInstance();
- method public static javax.xml.parsers.SAXParserFactory newInstance(java.lang.String, java.lang.ClassLoader);
+ method public static javax.xml.parsers.SAXParserFactory newInstance(String, ClassLoader);
method public abstract javax.xml.parsers.SAXParser newSAXParser() throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXException;
- method public abstract void setFeature(java.lang.String, boolean) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public abstract void setFeature(String, boolean) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public void setNamespaceAware(boolean);
method public void setSchema(javax.xml.validation.Schema);
method public void setValidating(boolean);
@@ -76119,47 +76096,47 @@
package javax.xml.transform {
- public abstract interface ErrorListener {
- method public abstract void error(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
- method public abstract void fatalError(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
- method public abstract void warning(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
+ public interface ErrorListener {
+ method public void error(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
+ method public void fatalError(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
+ method public void warning(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
}
public class OutputKeys {
- field public static final java.lang.String CDATA_SECTION_ELEMENTS = "cdata-section-elements";
- field public static final java.lang.String DOCTYPE_PUBLIC = "doctype-public";
- field public static final java.lang.String DOCTYPE_SYSTEM = "doctype-system";
- field public static final java.lang.String ENCODING = "encoding";
- field public static final java.lang.String INDENT = "indent";
- field public static final java.lang.String MEDIA_TYPE = "media-type";
- field public static final java.lang.String METHOD = "method";
- field public static final java.lang.String OMIT_XML_DECLARATION = "omit-xml-declaration";
- field public static final java.lang.String STANDALONE = "standalone";
- field public static final java.lang.String VERSION = "version";
+ field public static final String CDATA_SECTION_ELEMENTS = "cdata-section-elements";
+ field public static final String DOCTYPE_PUBLIC = "doctype-public";
+ field public static final String DOCTYPE_SYSTEM = "doctype-system";
+ field public static final String ENCODING = "encoding";
+ field public static final String INDENT = "indent";
+ field public static final String MEDIA_TYPE = "media-type";
+ field public static final String METHOD = "method";
+ field public static final String OMIT_XML_DECLARATION = "omit-xml-declaration";
+ field public static final String STANDALONE = "standalone";
+ field public static final String VERSION = "version";
}
- public abstract interface Result {
- method public abstract java.lang.String getSystemId();
- method public abstract void setSystemId(java.lang.String);
- field public static final java.lang.String PI_DISABLE_OUTPUT_ESCAPING = "javax.xml.transform.disable-output-escaping";
- field public static final java.lang.String PI_ENABLE_OUTPUT_ESCAPING = "javax.xml.transform.enable-output-escaping";
+ public interface Result {
+ method public String getSystemId();
+ method public void setSystemId(String);
+ field public static final String PI_DISABLE_OUTPUT_ESCAPING = "javax.xml.transform.disable-output-escaping";
+ field public static final String PI_ENABLE_OUTPUT_ESCAPING = "javax.xml.transform.enable-output-escaping";
}
- public abstract interface Source {
- method public abstract java.lang.String getSystemId();
- method public abstract void setSystemId(java.lang.String);
+ public interface Source {
+ method public String getSystemId();
+ method public void setSystemId(String);
}
- public abstract interface SourceLocator {
- method public abstract int getColumnNumber();
- method public abstract int getLineNumber();
- method public abstract java.lang.String getPublicId();
- method public abstract java.lang.String getSystemId();
+ public interface SourceLocator {
+ method public int getColumnNumber();
+ method public int getLineNumber();
+ method public String getPublicId();
+ method public String getSystemId();
}
- public abstract interface Templates {
- method public abstract java.util.Properties getOutputProperties();
- method public abstract javax.xml.transform.Transformer newTransformer() throws javax.xml.transform.TransformerConfigurationException;
+ public interface Templates {
+ method public java.util.Properties getOutputProperties();
+ method public javax.xml.transform.Transformer newTransformer() throws javax.xml.transform.TransformerConfigurationException;
}
public abstract class Transformer {
@@ -76167,103 +76144,102 @@
method public abstract void clearParameters();
method public abstract javax.xml.transform.ErrorListener getErrorListener();
method public abstract java.util.Properties getOutputProperties();
- method public abstract java.lang.String getOutputProperty(java.lang.String) throws java.lang.IllegalArgumentException;
- method public abstract java.lang.Object getParameter(java.lang.String);
+ method public abstract String getOutputProperty(String) throws java.lang.IllegalArgumentException;
+ method public abstract Object getParameter(String);
method public abstract javax.xml.transform.URIResolver getURIResolver();
method public void reset();
method public abstract void setErrorListener(javax.xml.transform.ErrorListener) throws java.lang.IllegalArgumentException;
method public abstract void setOutputProperties(java.util.Properties);
- method public abstract void setOutputProperty(java.lang.String, java.lang.String) throws java.lang.IllegalArgumentException;
- method public abstract void setParameter(java.lang.String, java.lang.Object);
+ method public abstract void setOutputProperty(String, String) throws java.lang.IllegalArgumentException;
+ method public abstract void setParameter(String, Object);
method public abstract void setURIResolver(javax.xml.transform.URIResolver);
method public abstract void transform(javax.xml.transform.Source, javax.xml.transform.Result) throws javax.xml.transform.TransformerException;
}
public class TransformerConfigurationException extends javax.xml.transform.TransformerException {
ctor public TransformerConfigurationException();
- ctor public TransformerConfigurationException(java.lang.String);
- ctor public TransformerConfigurationException(java.lang.Throwable);
- ctor public TransformerConfigurationException(java.lang.String, java.lang.Throwable);
- ctor public TransformerConfigurationException(java.lang.String, javax.xml.transform.SourceLocator);
- ctor public TransformerConfigurationException(java.lang.String, javax.xml.transform.SourceLocator, java.lang.Throwable);
+ ctor public TransformerConfigurationException(String);
+ ctor public TransformerConfigurationException(Throwable);
+ ctor public TransformerConfigurationException(String, Throwable);
+ ctor public TransformerConfigurationException(String, javax.xml.transform.SourceLocator);
+ ctor public TransformerConfigurationException(String, javax.xml.transform.SourceLocator, Throwable);
}
public class TransformerException extends java.lang.Exception {
- ctor public TransformerException(java.lang.String);
- ctor public TransformerException(java.lang.Throwable);
- ctor public TransformerException(java.lang.String, java.lang.Throwable);
- ctor public TransformerException(java.lang.String, javax.xml.transform.SourceLocator);
- ctor public TransformerException(java.lang.String, javax.xml.transform.SourceLocator, java.lang.Throwable);
- method public java.lang.Throwable getCause();
- method public java.lang.Throwable getException();
- method public java.lang.String getLocationAsString();
+ ctor public TransformerException(String);
+ ctor public TransformerException(Throwable);
+ ctor public TransformerException(String, Throwable);
+ ctor public TransformerException(String, javax.xml.transform.SourceLocator);
+ ctor public TransformerException(String, javax.xml.transform.SourceLocator, Throwable);
+ method public Throwable getException();
+ method public String getLocationAsString();
method public javax.xml.transform.SourceLocator getLocator();
- method public java.lang.String getMessageAndLocation();
+ method public String getMessageAndLocation();
method public void setLocator(javax.xml.transform.SourceLocator);
}
public abstract class TransformerFactory {
ctor protected TransformerFactory();
- method public abstract javax.xml.transform.Source getAssociatedStylesheet(javax.xml.transform.Source, java.lang.String, java.lang.String, java.lang.String) throws javax.xml.transform.TransformerConfigurationException;
- method public abstract java.lang.Object getAttribute(java.lang.String);
+ method public abstract javax.xml.transform.Source getAssociatedStylesheet(javax.xml.transform.Source, String, String, String) throws javax.xml.transform.TransformerConfigurationException;
+ method public abstract Object getAttribute(String);
method public abstract javax.xml.transform.ErrorListener getErrorListener();
- method public abstract boolean getFeature(java.lang.String);
+ method public abstract boolean getFeature(String);
method public abstract javax.xml.transform.URIResolver getURIResolver();
method public static javax.xml.transform.TransformerFactory newInstance() throws javax.xml.transform.TransformerFactoryConfigurationError;
- method public static javax.xml.transform.TransformerFactory newInstance(java.lang.String, java.lang.ClassLoader) throws javax.xml.transform.TransformerFactoryConfigurationError;
+ method public static javax.xml.transform.TransformerFactory newInstance(String, ClassLoader) throws javax.xml.transform.TransformerFactoryConfigurationError;
method public abstract javax.xml.transform.Templates newTemplates(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
method public abstract javax.xml.transform.Transformer newTransformer(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
method public abstract javax.xml.transform.Transformer newTransformer() throws javax.xml.transform.TransformerConfigurationException;
- method public abstract void setAttribute(java.lang.String, java.lang.Object);
+ method public abstract void setAttribute(String, Object);
method public abstract void setErrorListener(javax.xml.transform.ErrorListener);
- method public abstract void setFeature(java.lang.String, boolean) throws javax.xml.transform.TransformerConfigurationException;
+ method public abstract void setFeature(String, boolean) throws javax.xml.transform.TransformerConfigurationException;
method public abstract void setURIResolver(javax.xml.transform.URIResolver);
}
public class TransformerFactoryConfigurationError extends java.lang.Error {
ctor public TransformerFactoryConfigurationError();
- ctor public TransformerFactoryConfigurationError(java.lang.String);
- ctor public TransformerFactoryConfigurationError(java.lang.Exception);
- ctor public TransformerFactoryConfigurationError(java.lang.Exception, java.lang.String);
- method public java.lang.Exception getException();
+ ctor public TransformerFactoryConfigurationError(String);
+ ctor public TransformerFactoryConfigurationError(Exception);
+ ctor public TransformerFactoryConfigurationError(Exception, String);
+ method public Exception getException();
}
- public abstract interface URIResolver {
- method public abstract javax.xml.transform.Source resolve(java.lang.String, java.lang.String) throws javax.xml.transform.TransformerException;
+ public interface URIResolver {
+ method public javax.xml.transform.Source resolve(String, String) throws javax.xml.transform.TransformerException;
}
}
package javax.xml.transform.dom {
- public abstract interface DOMLocator implements javax.xml.transform.SourceLocator {
- method public abstract org.w3c.dom.Node getOriginatingNode();
+ public interface DOMLocator extends javax.xml.transform.SourceLocator {
+ method public org.w3c.dom.Node getOriginatingNode();
}
public class DOMResult implements javax.xml.transform.Result {
ctor public DOMResult();
ctor public DOMResult(org.w3c.dom.Node);
- ctor public DOMResult(org.w3c.dom.Node, java.lang.String);
+ ctor public DOMResult(org.w3c.dom.Node, String);
ctor public DOMResult(org.w3c.dom.Node, org.w3c.dom.Node);
- ctor public DOMResult(org.w3c.dom.Node, org.w3c.dom.Node, java.lang.String);
+ ctor public DOMResult(org.w3c.dom.Node, org.w3c.dom.Node, String);
method public org.w3c.dom.Node getNextSibling();
method public org.w3c.dom.Node getNode();
- method public java.lang.String getSystemId();
+ method public String getSystemId();
method public void setNextSibling(org.w3c.dom.Node);
method public void setNode(org.w3c.dom.Node);
- method public void setSystemId(java.lang.String);
- field public static final java.lang.String FEATURE = "http://javax.xml.transform.dom.DOMResult/feature";
+ method public void setSystemId(String);
+ field public static final String FEATURE = "http://javax.xml.transform.dom.DOMResult/feature";
}
public class DOMSource implements javax.xml.transform.Source {
ctor public DOMSource();
ctor public DOMSource(org.w3c.dom.Node);
- ctor public DOMSource(org.w3c.dom.Node, java.lang.String);
+ ctor public DOMSource(org.w3c.dom.Node, String);
method public org.w3c.dom.Node getNode();
- method public java.lang.String getSystemId();
+ method public String getSystemId();
method public void setNode(org.w3c.dom.Node);
- method public void setSystemId(java.lang.String);
- field public static final java.lang.String FEATURE = "http://javax.xml.transform.dom.DOMSource/feature";
+ method public void setSystemId(String);
+ field public static final String FEATURE = "http://javax.xml.transform.dom.DOMSource/feature";
}
}
@@ -76275,11 +76251,11 @@
ctor public SAXResult(org.xml.sax.ContentHandler);
method public org.xml.sax.ContentHandler getHandler();
method public org.xml.sax.ext.LexicalHandler getLexicalHandler();
- method public java.lang.String getSystemId();
+ method public String getSystemId();
method public void setHandler(org.xml.sax.ContentHandler);
method public void setLexicalHandler(org.xml.sax.ext.LexicalHandler);
- method public void setSystemId(java.lang.String);
- field public static final java.lang.String FEATURE = "http://javax.xml.transform.sax.SAXResult/feature";
+ method public void setSystemId(String);
+ field public static final String FEATURE = "http://javax.xml.transform.sax.SAXResult/feature";
}
public class SAXSource implements javax.xml.transform.Source {
@@ -76287,13 +76263,13 @@
ctor public SAXSource(org.xml.sax.XMLReader, org.xml.sax.InputSource);
ctor public SAXSource(org.xml.sax.InputSource);
method public org.xml.sax.InputSource getInputSource();
- method public java.lang.String getSystemId();
+ method public String getSystemId();
method public org.xml.sax.XMLReader getXMLReader();
method public void setInputSource(org.xml.sax.InputSource);
- method public void setSystemId(java.lang.String);
+ method public void setSystemId(String);
method public void setXMLReader(org.xml.sax.XMLReader);
method public static org.xml.sax.InputSource sourceToInputSource(javax.xml.transform.Source);
- field public static final java.lang.String FEATURE = "http://javax.xml.transform.sax.SAXSource/feature";
+ field public static final String FEATURE = "http://javax.xml.transform.sax.SAXSource/feature";
}
public abstract class SAXTransformerFactory extends javax.xml.transform.TransformerFactory {
@@ -76304,21 +76280,21 @@
method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler() throws javax.xml.transform.TransformerConfigurationException;
method public abstract org.xml.sax.XMLFilter newXMLFilter(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
method public abstract org.xml.sax.XMLFilter newXMLFilter(javax.xml.transform.Templates) throws javax.xml.transform.TransformerConfigurationException;
- field public static final java.lang.String FEATURE = "http://javax.xml.transform.sax.SAXTransformerFactory/feature";
- field public static final java.lang.String FEATURE_XMLFILTER = "http://javax.xml.transform.sax.SAXTransformerFactory/feature/xmlfilter";
+ field public static final String FEATURE = "http://javax.xml.transform.sax.SAXTransformerFactory/feature";
+ field public static final String FEATURE_XMLFILTER = "http://javax.xml.transform.sax.SAXTransformerFactory/feature/xmlfilter";
}
- public abstract interface TemplatesHandler implements org.xml.sax.ContentHandler {
- method public abstract java.lang.String getSystemId();
- method public abstract javax.xml.transform.Templates getTemplates();
- method public abstract void setSystemId(java.lang.String);
+ public interface TemplatesHandler extends org.xml.sax.ContentHandler {
+ method public String getSystemId();
+ method public javax.xml.transform.Templates getTemplates();
+ method public void setSystemId(String);
}
- public abstract interface TransformerHandler implements org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.ext.LexicalHandler {
- method public abstract java.lang.String getSystemId();
- method public abstract javax.xml.transform.Transformer getTransformer();
- method public abstract void setResult(javax.xml.transform.Result) throws java.lang.IllegalArgumentException;
- method public abstract void setSystemId(java.lang.String);
+ public interface TransformerHandler extends org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.ext.LexicalHandler {
+ method public String getSystemId();
+ method public javax.xml.transform.Transformer getTransformer();
+ method public void setResult(javax.xml.transform.Result) throws java.lang.IllegalArgumentException;
+ method public void setSystemId(String);
}
}
@@ -76329,36 +76305,36 @@
ctor public StreamResult();
ctor public StreamResult(java.io.OutputStream);
ctor public StreamResult(java.io.Writer);
- ctor public StreamResult(java.lang.String);
+ ctor public StreamResult(String);
ctor public StreamResult(java.io.File);
method public java.io.OutputStream getOutputStream();
- method public java.lang.String getSystemId();
+ method public String getSystemId();
method public java.io.Writer getWriter();
method public void setOutputStream(java.io.OutputStream);
- method public void setSystemId(java.lang.String);
+ method public void setSystemId(String);
method public void setSystemId(java.io.File);
method public void setWriter(java.io.Writer);
- field public static final java.lang.String FEATURE = "http://javax.xml.transform.stream.StreamResult/feature";
+ field public static final String FEATURE = "http://javax.xml.transform.stream.StreamResult/feature";
}
public class StreamSource implements javax.xml.transform.Source {
ctor public StreamSource();
ctor public StreamSource(java.io.InputStream);
- ctor public StreamSource(java.io.InputStream, java.lang.String);
+ ctor public StreamSource(java.io.InputStream, String);
ctor public StreamSource(java.io.Reader);
- ctor public StreamSource(java.io.Reader, java.lang.String);
- ctor public StreamSource(java.lang.String);
+ ctor public StreamSource(java.io.Reader, String);
+ ctor public StreamSource(String);
ctor public StreamSource(java.io.File);
method public java.io.InputStream getInputStream();
- method public java.lang.String getPublicId();
+ method public String getPublicId();
method public java.io.Reader getReader();
- method public java.lang.String getSystemId();
+ method public String getSystemId();
method public void setInputStream(java.io.InputStream);
- method public void setPublicId(java.lang.String);
+ method public void setPublicId(String);
method public void setReader(java.io.Reader);
- method public void setSystemId(java.lang.String);
+ method public void setSystemId(String);
method public void setSystemId(java.io.File);
- field public static final java.lang.String FEATURE = "http://javax.xml.transform.stream.StreamSource/feature";
+ field public static final String FEATURE = "http://javax.xml.transform.stream.StreamSource/feature";
}
}
@@ -76374,26 +76350,26 @@
public abstract class SchemaFactory {
ctor protected SchemaFactory();
method public abstract org.xml.sax.ErrorHandler getErrorHandler();
- method public boolean getFeature(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public java.lang.Object getProperty(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
- method public abstract boolean isSchemaLanguageSupported(java.lang.String);
- method public static javax.xml.validation.SchemaFactory newInstance(java.lang.String);
- method public static javax.xml.validation.SchemaFactory newInstance(java.lang.String, java.lang.String, java.lang.ClassLoader);
+ method public abstract boolean isSchemaLanguageSupported(String);
+ method public static javax.xml.validation.SchemaFactory newInstance(String);
+ method public static javax.xml.validation.SchemaFactory newInstance(String, String, ClassLoader);
method public javax.xml.validation.Schema newSchema(javax.xml.transform.Source) throws org.xml.sax.SAXException;
method public javax.xml.validation.Schema newSchema(java.io.File) throws org.xml.sax.SAXException;
method public javax.xml.validation.Schema newSchema(java.net.URL) throws org.xml.sax.SAXException;
method public abstract javax.xml.validation.Schema newSchema(javax.xml.transform.Source[]) throws org.xml.sax.SAXException;
method public abstract javax.xml.validation.Schema newSchema() throws org.xml.sax.SAXException;
method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
- method public void setFeature(java.lang.String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public void setProperty(java.lang.String, java.lang.Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
}
public abstract class SchemaFactoryLoader {
ctor protected SchemaFactoryLoader();
- method public abstract javax.xml.validation.SchemaFactory newFactory(java.lang.String);
+ method public abstract javax.xml.validation.SchemaFactory newFactory(String);
}
public abstract class TypeInfoProvider {
@@ -76407,13 +76383,13 @@
public abstract class Validator {
ctor protected Validator();
method public abstract org.xml.sax.ErrorHandler getErrorHandler();
- method public boolean getFeature(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public java.lang.Object getProperty(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
method public abstract void reset();
method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
- method public void setFeature(java.lang.String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public void setProperty(java.lang.String, java.lang.Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
method public void validate(javax.xml.transform.Source) throws java.io.IOException, org.xml.sax.SAXException;
method public abstract void validate(javax.xml.transform.Source, javax.xml.transform.Result) throws java.io.IOException, org.xml.sax.SAXException;
@@ -76423,14 +76399,14 @@
ctor protected ValidatorHandler();
method public abstract org.xml.sax.ContentHandler getContentHandler();
method public abstract org.xml.sax.ErrorHandler getErrorHandler();
- method public boolean getFeature(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public java.lang.Object getProperty(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
method public abstract javax.xml.validation.TypeInfoProvider getTypeInfoProvider();
method public abstract void setContentHandler(org.xml.sax.ContentHandler);
method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
- method public void setFeature(java.lang.String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public void setProperty(java.lang.String, java.lang.Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
}
@@ -76438,24 +76414,24 @@
package javax.xml.xpath {
- public abstract interface XPath {
- method public abstract javax.xml.xpath.XPathExpression compile(java.lang.String) throws javax.xml.xpath.XPathExpressionException;
- method public abstract java.lang.Object evaluate(java.lang.String, java.lang.Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
- method public abstract java.lang.String evaluate(java.lang.String, java.lang.Object) throws javax.xml.xpath.XPathExpressionException;
- method public abstract java.lang.Object evaluate(java.lang.String, org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
- method public abstract java.lang.String evaluate(java.lang.String, org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
- method public abstract javax.xml.namespace.NamespaceContext getNamespaceContext();
- method public abstract javax.xml.xpath.XPathFunctionResolver getXPathFunctionResolver();
- method public abstract javax.xml.xpath.XPathVariableResolver getXPathVariableResolver();
- method public abstract void reset();
- method public abstract void setNamespaceContext(javax.xml.namespace.NamespaceContext);
- method public abstract void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver);
- method public abstract void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver);
+ public interface XPath {
+ method public javax.xml.xpath.XPathExpression compile(String) throws javax.xml.xpath.XPathExpressionException;
+ method public Object evaluate(String, Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
+ method public String evaluate(String, Object) throws javax.xml.xpath.XPathExpressionException;
+ method public Object evaluate(String, org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
+ method public String evaluate(String, org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
+ method public javax.xml.namespace.NamespaceContext getNamespaceContext();
+ method public javax.xml.xpath.XPathFunctionResolver getXPathFunctionResolver();
+ method public javax.xml.xpath.XPathVariableResolver getXPathVariableResolver();
+ method public void reset();
+ method public void setNamespaceContext(javax.xml.namespace.NamespaceContext);
+ method public void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver);
+ method public void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver);
}
public class XPathConstants {
field public static final javax.xml.namespace.QName BOOLEAN;
- field public static final java.lang.String DOM_OBJECT_MODEL = "http://java.sun.com/jaxp/xpath/dom";
+ field public static final String DOM_OBJECT_MODEL = "http://java.sun.com/jaxp/xpath/dom";
field public static final javax.xml.namespace.QName NODE;
field public static final javax.xml.namespace.QName NODESET;
field public static final javax.xml.namespace.QName NUMBER;
@@ -76463,192 +76439,191 @@
}
public class XPathException extends java.lang.Exception {
- ctor public XPathException(java.lang.String);
- ctor public XPathException(java.lang.Throwable);
- method public java.lang.Throwable getCause();
+ ctor public XPathException(String);
+ ctor public XPathException(Throwable);
}
- public abstract interface XPathExpression {
- method public abstract java.lang.Object evaluate(java.lang.Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
- method public abstract java.lang.String evaluate(java.lang.Object) throws javax.xml.xpath.XPathExpressionException;
- method public abstract java.lang.Object evaluate(org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
- method public abstract java.lang.String evaluate(org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
+ public interface XPathExpression {
+ method public Object evaluate(Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
+ method public String evaluate(Object) throws javax.xml.xpath.XPathExpressionException;
+ method public Object evaluate(org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
+ method public String evaluate(org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
}
public class XPathExpressionException extends javax.xml.xpath.XPathException {
- ctor public XPathExpressionException(java.lang.String);
- ctor public XPathExpressionException(java.lang.Throwable);
+ ctor public XPathExpressionException(String);
+ ctor public XPathExpressionException(Throwable);
}
public abstract class XPathFactory {
ctor protected XPathFactory();
- method public abstract boolean getFeature(java.lang.String) throws javax.xml.xpath.XPathFactoryConfigurationException;
- method public abstract boolean isObjectModelSupported(java.lang.String);
+ method public abstract boolean getFeature(String) throws javax.xml.xpath.XPathFactoryConfigurationException;
+ method public abstract boolean isObjectModelSupported(String);
method public static final javax.xml.xpath.XPathFactory newInstance();
- method public static final javax.xml.xpath.XPathFactory newInstance(java.lang.String) throws javax.xml.xpath.XPathFactoryConfigurationException;
- method public static javax.xml.xpath.XPathFactory newInstance(java.lang.String, java.lang.String, java.lang.ClassLoader) throws javax.xml.xpath.XPathFactoryConfigurationException;
+ method public static final javax.xml.xpath.XPathFactory newInstance(String) throws javax.xml.xpath.XPathFactoryConfigurationException;
+ method public static javax.xml.xpath.XPathFactory newInstance(String, String, ClassLoader) throws javax.xml.xpath.XPathFactoryConfigurationException;
method public abstract javax.xml.xpath.XPath newXPath();
- method public abstract void setFeature(java.lang.String, boolean) throws javax.xml.xpath.XPathFactoryConfigurationException;
+ method public abstract void setFeature(String, boolean) throws javax.xml.xpath.XPathFactoryConfigurationException;
method public abstract void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver);
method public abstract void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver);
- field public static final java.lang.String DEFAULT_OBJECT_MODEL_URI = "http://java.sun.com/jaxp/xpath/dom";
- field public static final java.lang.String DEFAULT_PROPERTY_NAME = "javax.xml.xpath.XPathFactory";
+ field public static final String DEFAULT_OBJECT_MODEL_URI = "http://java.sun.com/jaxp/xpath/dom";
+ field public static final String DEFAULT_PROPERTY_NAME = "javax.xml.xpath.XPathFactory";
}
public class XPathFactoryConfigurationException extends javax.xml.xpath.XPathException {
- ctor public XPathFactoryConfigurationException(java.lang.String);
- ctor public XPathFactoryConfigurationException(java.lang.Throwable);
+ ctor public XPathFactoryConfigurationException(String);
+ ctor public XPathFactoryConfigurationException(Throwable);
}
- public abstract interface XPathFunction {
- method public abstract java.lang.Object evaluate(java.util.List) throws javax.xml.xpath.XPathFunctionException;
+ public interface XPathFunction {
+ method public Object evaluate(java.util.List) throws javax.xml.xpath.XPathFunctionException;
}
public class XPathFunctionException extends javax.xml.xpath.XPathExpressionException {
- ctor public XPathFunctionException(java.lang.String);
- ctor public XPathFunctionException(java.lang.Throwable);
+ ctor public XPathFunctionException(String);
+ ctor public XPathFunctionException(Throwable);
}
- public abstract interface XPathFunctionResolver {
- method public abstract javax.xml.xpath.XPathFunction resolveFunction(javax.xml.namespace.QName, int);
+ public interface XPathFunctionResolver {
+ method public javax.xml.xpath.XPathFunction resolveFunction(javax.xml.namespace.QName, int);
}
- public abstract interface XPathVariableResolver {
- method public abstract java.lang.Object resolveVariable(javax.xml.namespace.QName);
+ public interface XPathVariableResolver {
+ method public Object resolveVariable(javax.xml.namespace.QName);
}
}
package org.apache.http.conn {
- public deprecated class ConnectTimeoutException extends java.io.InterruptedIOException {
- ctor public ConnectTimeoutException();
- ctor public ConnectTimeoutException(java.lang.String);
+ @Deprecated public class ConnectTimeoutException extends java.io.InterruptedIOException {
+ ctor @Deprecated public ConnectTimeoutException();
+ ctor @Deprecated public ConnectTimeoutException(String);
}
}
package org.apache.http.conn.scheme {
- public abstract deprecated interface HostNameResolver {
- method public abstract java.net.InetAddress resolve(java.lang.String) throws java.io.IOException;
+ @Deprecated public interface HostNameResolver {
+ method @Deprecated public java.net.InetAddress resolve(String) throws java.io.IOException;
}
- public abstract deprecated interface LayeredSocketFactory implements org.apache.http.conn.scheme.SocketFactory {
- method public abstract java.net.Socket createSocket(java.net.Socket, java.lang.String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
+ @Deprecated public interface LayeredSocketFactory extends org.apache.http.conn.scheme.SocketFactory {
+ method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
}
- public abstract deprecated interface SocketFactory {
- method public abstract java.net.Socket connectSocket(java.net.Socket, java.lang.String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws org.apache.http.conn.ConnectTimeoutException, java.io.IOException, java.net.UnknownHostException;
- method public abstract java.net.Socket createSocket() throws java.io.IOException;
- method public abstract boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
+ @Deprecated public interface SocketFactory {
+ method @Deprecated public java.net.Socket connectSocket(java.net.Socket, String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws org.apache.http.conn.ConnectTimeoutException, java.io.IOException, java.net.UnknownHostException;
+ method @Deprecated public java.net.Socket createSocket() throws java.io.IOException;
+ method @Deprecated public boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
}
}
package org.apache.http.conn.ssl {
- public abstract deprecated class AbstractVerifier implements org.apache.http.conn.ssl.X509HostnameVerifier {
- ctor public AbstractVerifier();
- method public static boolean acceptableCountryWildcard(java.lang.String);
- method public static int countDots(java.lang.String);
- method public static java.lang.String[] getCNs(java.security.cert.X509Certificate);
- method public static java.lang.String[] getDNSSubjectAlts(java.security.cert.X509Certificate);
- method public final void verify(java.lang.String, javax.net.ssl.SSLSocket) throws java.io.IOException;
- method public final boolean verify(java.lang.String, javax.net.ssl.SSLSession);
- method public final void verify(java.lang.String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
- method public final void verify(java.lang.String, java.lang.String[], java.lang.String[], boolean) throws javax.net.ssl.SSLException;
+ @Deprecated public abstract class AbstractVerifier implements org.apache.http.conn.ssl.X509HostnameVerifier {
+ ctor @Deprecated public AbstractVerifier();
+ method @Deprecated public static boolean acceptableCountryWildcard(String);
+ method @Deprecated public static int countDots(String);
+ method @Deprecated public static String[] getCNs(java.security.cert.X509Certificate);
+ method @Deprecated public static String[] getDNSSubjectAlts(java.security.cert.X509Certificate);
+ method @Deprecated public final void verify(String, javax.net.ssl.SSLSocket) throws java.io.IOException;
+ method @Deprecated public final boolean verify(String, javax.net.ssl.SSLSession);
+ method @Deprecated public final void verify(String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
+ method @Deprecated public final void verify(String, String[], String[], boolean) throws javax.net.ssl.SSLException;
}
- public deprecated class AllowAllHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
- ctor public AllowAllHostnameVerifier();
- method public final java.lang.String toString();
- method public final void verify(java.lang.String, java.lang.String[], java.lang.String[]);
+ @Deprecated public class AllowAllHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
+ ctor @Deprecated public AllowAllHostnameVerifier();
+ method @Deprecated public final String toString();
+ method @Deprecated public final void verify(String, String[], String[]);
}
- public deprecated class BrowserCompatHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
- ctor public BrowserCompatHostnameVerifier();
- method public final java.lang.String toString();
- method public final void verify(java.lang.String, java.lang.String[], java.lang.String[]) throws javax.net.ssl.SSLException;
+ @Deprecated public class BrowserCompatHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
+ ctor @Deprecated public BrowserCompatHostnameVerifier();
+ method @Deprecated public final String toString();
+ method @Deprecated public final void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
}
- public deprecated class SSLSocketFactory implements org.apache.http.conn.scheme.LayeredSocketFactory {
- ctor public SSLSocketFactory(java.lang.String, java.security.KeyStore, java.lang.String, java.security.KeyStore, java.security.SecureRandom, org.apache.http.conn.scheme.HostNameResolver) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
- ctor public SSLSocketFactory(java.security.KeyStore, java.lang.String, java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
- ctor public SSLSocketFactory(java.security.KeyStore, java.lang.String) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
- ctor public SSLSocketFactory(java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
- method public java.net.Socket connectSocket(java.net.Socket, java.lang.String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws java.io.IOException;
- method public java.net.Socket createSocket() throws java.io.IOException;
- method public java.net.Socket createSocket(java.net.Socket, java.lang.String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
- method public org.apache.http.conn.ssl.X509HostnameVerifier getHostnameVerifier();
- method public static org.apache.http.conn.ssl.SSLSocketFactory getSocketFactory();
- method public boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
- method public void setHostnameVerifier(org.apache.http.conn.ssl.X509HostnameVerifier);
- field public static final org.apache.http.conn.ssl.X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER;
- field public static final org.apache.http.conn.ssl.X509HostnameVerifier BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
- field public static final java.lang.String SSL = "SSL";
- field public static final java.lang.String SSLV2 = "SSLv2";
- field public static final org.apache.http.conn.ssl.X509HostnameVerifier STRICT_HOSTNAME_VERIFIER;
- field public static final java.lang.String TLS = "TLS";
+ @Deprecated public class SSLSocketFactory implements org.apache.http.conn.scheme.LayeredSocketFactory {
+ ctor @Deprecated public SSLSocketFactory(String, java.security.KeyStore, String, java.security.KeyStore, java.security.SecureRandom, org.apache.http.conn.scheme.HostNameResolver) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+ ctor @Deprecated public SSLSocketFactory(java.security.KeyStore, String, java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+ ctor @Deprecated public SSLSocketFactory(java.security.KeyStore, String) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+ ctor @Deprecated public SSLSocketFactory(java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+ method @Deprecated public java.net.Socket connectSocket(java.net.Socket, String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws java.io.IOException;
+ method @Deprecated public java.net.Socket createSocket() throws java.io.IOException;
+ method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
+ method @Deprecated public org.apache.http.conn.ssl.X509HostnameVerifier getHostnameVerifier();
+ method @Deprecated public static org.apache.http.conn.ssl.SSLSocketFactory getSocketFactory();
+ method @Deprecated public boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
+ method @Deprecated public void setHostnameVerifier(org.apache.http.conn.ssl.X509HostnameVerifier);
+ field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER;
+ field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
+ field @Deprecated public static final String SSL = "SSL";
+ field @Deprecated public static final String SSLV2 = "SSLv2";
+ field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier STRICT_HOSTNAME_VERIFIER;
+ field @Deprecated public static final String TLS = "TLS";
}
- public deprecated class StrictHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
- ctor public StrictHostnameVerifier();
- method public final java.lang.String toString();
- method public final void verify(java.lang.String, java.lang.String[], java.lang.String[]) throws javax.net.ssl.SSLException;
+ @Deprecated public class StrictHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
+ ctor @Deprecated public StrictHostnameVerifier();
+ method @Deprecated public final String toString();
+ method @Deprecated public final void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
}
- public abstract deprecated interface X509HostnameVerifier implements javax.net.ssl.HostnameVerifier {
- method public abstract void verify(java.lang.String, javax.net.ssl.SSLSocket) throws java.io.IOException;
- method public abstract void verify(java.lang.String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
- method public abstract void verify(java.lang.String, java.lang.String[], java.lang.String[]) throws javax.net.ssl.SSLException;
+ @Deprecated public interface X509HostnameVerifier extends javax.net.ssl.HostnameVerifier {
+ method @Deprecated public void verify(String, javax.net.ssl.SSLSocket) throws java.io.IOException;
+ method @Deprecated public void verify(String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
+ method @Deprecated public void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
}
}
package org.apache.http.params {
- public abstract deprecated interface CoreConnectionPNames {
- field public static final java.lang.String CONNECTION_TIMEOUT = "http.connection.timeout";
- field public static final java.lang.String MAX_HEADER_COUNT = "http.connection.max-header-count";
- field public static final java.lang.String MAX_LINE_LENGTH = "http.connection.max-line-length";
- field public static final java.lang.String SOCKET_BUFFER_SIZE = "http.socket.buffer-size";
- field public static final java.lang.String SO_LINGER = "http.socket.linger";
- field public static final java.lang.String SO_TIMEOUT = "http.socket.timeout";
- field public static final java.lang.String STALE_CONNECTION_CHECK = "http.connection.stalecheck";
- field public static final java.lang.String TCP_NODELAY = "http.tcp.nodelay";
+ @Deprecated public interface CoreConnectionPNames {
+ field @Deprecated public static final String CONNECTION_TIMEOUT = "http.connection.timeout";
+ field @Deprecated public static final String MAX_HEADER_COUNT = "http.connection.max-header-count";
+ field @Deprecated public static final String MAX_LINE_LENGTH = "http.connection.max-line-length";
+ field @Deprecated public static final String SOCKET_BUFFER_SIZE = "http.socket.buffer-size";
+ field @Deprecated public static final String SO_LINGER = "http.socket.linger";
+ field @Deprecated public static final String SO_TIMEOUT = "http.socket.timeout";
+ field @Deprecated public static final String STALE_CONNECTION_CHECK = "http.connection.stalecheck";
+ field @Deprecated public static final String TCP_NODELAY = "http.tcp.nodelay";
}
- public final deprecated class HttpConnectionParams implements org.apache.http.params.CoreConnectionPNames {
- method public static int getConnectionTimeout(org.apache.http.params.HttpParams);
- method public static int getLinger(org.apache.http.params.HttpParams);
- method public static int getSoTimeout(org.apache.http.params.HttpParams);
- method public static int getSocketBufferSize(org.apache.http.params.HttpParams);
- method public static boolean getTcpNoDelay(org.apache.http.params.HttpParams);
- method public static boolean isStaleCheckingEnabled(org.apache.http.params.HttpParams);
- method public static void setConnectionTimeout(org.apache.http.params.HttpParams, int);
- method public static void setLinger(org.apache.http.params.HttpParams, int);
- method public static void setSoTimeout(org.apache.http.params.HttpParams, int);
- method public static void setSocketBufferSize(org.apache.http.params.HttpParams, int);
- method public static void setStaleCheckingEnabled(org.apache.http.params.HttpParams, boolean);
- method public static void setTcpNoDelay(org.apache.http.params.HttpParams, boolean);
+ @Deprecated public final class HttpConnectionParams implements org.apache.http.params.CoreConnectionPNames {
+ method @Deprecated public static int getConnectionTimeout(org.apache.http.params.HttpParams);
+ method @Deprecated public static int getLinger(org.apache.http.params.HttpParams);
+ method @Deprecated public static int getSoTimeout(org.apache.http.params.HttpParams);
+ method @Deprecated public static int getSocketBufferSize(org.apache.http.params.HttpParams);
+ method @Deprecated public static boolean getTcpNoDelay(org.apache.http.params.HttpParams);
+ method @Deprecated public static boolean isStaleCheckingEnabled(org.apache.http.params.HttpParams);
+ method @Deprecated public static void setConnectionTimeout(org.apache.http.params.HttpParams, int);
+ method @Deprecated public static void setLinger(org.apache.http.params.HttpParams, int);
+ method @Deprecated public static void setSoTimeout(org.apache.http.params.HttpParams, int);
+ method @Deprecated public static void setSocketBufferSize(org.apache.http.params.HttpParams, int);
+ method @Deprecated public static void setStaleCheckingEnabled(org.apache.http.params.HttpParams, boolean);
+ method @Deprecated public static void setTcpNoDelay(org.apache.http.params.HttpParams, boolean);
}
- public abstract deprecated interface HttpParams {
- method public abstract org.apache.http.params.HttpParams copy();
- method public abstract boolean getBooleanParameter(java.lang.String, boolean);
- method public abstract double getDoubleParameter(java.lang.String, double);
- method public abstract int getIntParameter(java.lang.String, int);
- method public abstract long getLongParameter(java.lang.String, long);
- method public abstract java.lang.Object getParameter(java.lang.String);
- method public abstract boolean isParameterFalse(java.lang.String);
- method public abstract boolean isParameterTrue(java.lang.String);
- method public abstract boolean removeParameter(java.lang.String);
- method public abstract org.apache.http.params.HttpParams setBooleanParameter(java.lang.String, boolean);
- method public abstract org.apache.http.params.HttpParams setDoubleParameter(java.lang.String, double);
- method public abstract org.apache.http.params.HttpParams setIntParameter(java.lang.String, int);
- method public abstract org.apache.http.params.HttpParams setLongParameter(java.lang.String, long);
- method public abstract org.apache.http.params.HttpParams setParameter(java.lang.String, java.lang.Object);
+ @Deprecated public interface HttpParams {
+ method @Deprecated public org.apache.http.params.HttpParams copy();
+ method @Deprecated public boolean getBooleanParameter(String, boolean);
+ method @Deprecated public double getDoubleParameter(String, double);
+ method @Deprecated public int getIntParameter(String, int);
+ method @Deprecated public long getLongParameter(String, long);
+ method @Deprecated public Object getParameter(String);
+ method @Deprecated public boolean isParameterFalse(String);
+ method @Deprecated public boolean isParameterTrue(String);
+ method @Deprecated public boolean removeParameter(String);
+ method @Deprecated public org.apache.http.params.HttpParams setBooleanParameter(String, boolean);
+ method @Deprecated public org.apache.http.params.HttpParams setDoubleParameter(String, double);
+ method @Deprecated public org.apache.http.params.HttpParams setIntParameter(String, int);
+ method @Deprecated public org.apache.http.params.HttpParams setLongParameter(String, long);
+ method @Deprecated public org.apache.http.params.HttpParams setParameter(String, Object);
}
}
@@ -76659,20 +76634,20 @@
ctor public JSONArray();
ctor public JSONArray(java.util.Collection);
ctor public JSONArray(org.json.JSONTokener) throws org.json.JSONException;
- ctor public JSONArray(java.lang.String) throws org.json.JSONException;
- ctor public JSONArray(java.lang.Object) throws org.json.JSONException;
- method public java.lang.Object get(int) throws org.json.JSONException;
+ ctor public JSONArray(String) throws org.json.JSONException;
+ ctor public JSONArray(Object) throws org.json.JSONException;
+ method public Object get(int) throws org.json.JSONException;
method public boolean getBoolean(int) throws org.json.JSONException;
method public double getDouble(int) throws org.json.JSONException;
method public int getInt(int) throws org.json.JSONException;
method public org.json.JSONArray getJSONArray(int) throws org.json.JSONException;
method public org.json.JSONObject getJSONObject(int) throws org.json.JSONException;
method public long getLong(int) throws org.json.JSONException;
- method public java.lang.String getString(int) throws org.json.JSONException;
+ method public String getString(int) throws org.json.JSONException;
method public boolean isNull(int);
- method public java.lang.String join(java.lang.String) throws org.json.JSONException;
+ method public String join(String) throws org.json.JSONException;
method public int length();
- method public java.lang.Object opt(int);
+ method public Object opt(int);
method public boolean optBoolean(int);
method public boolean optBoolean(int, boolean);
method public double optDouble(int);
@@ -76683,75 +76658,75 @@
method public org.json.JSONObject optJSONObject(int);
method public long optLong(int);
method public long optLong(int, long);
- method public java.lang.String optString(int);
- method public java.lang.String optString(int, java.lang.String);
+ method public String optString(int);
+ method public String optString(int, String);
method public org.json.JSONArray put(boolean);
method public org.json.JSONArray put(double) throws org.json.JSONException;
method public org.json.JSONArray put(int);
method public org.json.JSONArray put(long);
- method public org.json.JSONArray put(java.lang.Object);
+ method public org.json.JSONArray put(Object);
method public org.json.JSONArray put(int, boolean) throws org.json.JSONException;
method public org.json.JSONArray put(int, double) throws org.json.JSONException;
method public org.json.JSONArray put(int, int) throws org.json.JSONException;
method public org.json.JSONArray put(int, long) throws org.json.JSONException;
- method public org.json.JSONArray put(int, java.lang.Object) throws org.json.JSONException;
- method public java.lang.Object remove(int);
+ method public org.json.JSONArray put(int, Object) throws org.json.JSONException;
+ method public Object remove(int);
method public org.json.JSONObject toJSONObject(org.json.JSONArray) throws org.json.JSONException;
- method public java.lang.String toString(int) throws org.json.JSONException;
+ method public String toString(int) throws org.json.JSONException;
}
public class JSONException extends java.lang.Exception {
- ctor public JSONException(java.lang.String);
- ctor public JSONException(java.lang.String, java.lang.Throwable);
- ctor public JSONException(java.lang.Throwable);
+ ctor public JSONException(String);
+ ctor public JSONException(String, Throwable);
+ ctor public JSONException(Throwable);
}
public class JSONObject {
ctor public JSONObject();
- ctor public JSONObject(java.util.Map);
- ctor public JSONObject(org.json.JSONTokener) throws org.json.JSONException;
- ctor public JSONObject(java.lang.String) throws org.json.JSONException;
- ctor public JSONObject(org.json.JSONObject, java.lang.String[]) throws org.json.JSONException;
- method public org.json.JSONObject accumulate(java.lang.String, java.lang.Object) throws org.json.JSONException;
- method public java.lang.Object get(java.lang.String) throws org.json.JSONException;
- method public boolean getBoolean(java.lang.String) throws org.json.JSONException;
- method public double getDouble(java.lang.String) throws org.json.JSONException;
- method public int getInt(java.lang.String) throws org.json.JSONException;
- method public org.json.JSONArray getJSONArray(java.lang.String) throws org.json.JSONException;
- method public org.json.JSONObject getJSONObject(java.lang.String) throws org.json.JSONException;
- method public long getLong(java.lang.String) throws org.json.JSONException;
- method public java.lang.String getString(java.lang.String) throws org.json.JSONException;
- method public boolean has(java.lang.String);
- method public boolean isNull(java.lang.String);
- method public java.util.Iterator<java.lang.String> keys();
+ ctor public JSONObject(@NonNull java.util.Map);
+ ctor public JSONObject(@NonNull org.json.JSONTokener) throws org.json.JSONException;
+ ctor public JSONObject(@NonNull String) throws org.json.JSONException;
+ ctor public JSONObject(@NonNull org.json.JSONObject, @NonNull String[]) throws org.json.JSONException;
+ method @NonNull public org.json.JSONObject accumulate(@NonNull String, @Nullable Object) throws org.json.JSONException;
+ method @NonNull public Object get(@NonNull String) throws org.json.JSONException;
+ method public boolean getBoolean(@NonNull String) throws org.json.JSONException;
+ method public double getDouble(@NonNull String) throws org.json.JSONException;
+ method public int getInt(@NonNull String) throws org.json.JSONException;
+ method @NonNull public org.json.JSONArray getJSONArray(@NonNull String) throws org.json.JSONException;
+ method @NonNull public org.json.JSONObject getJSONObject(@NonNull String) throws org.json.JSONException;
+ method public long getLong(@NonNull String) throws org.json.JSONException;
+ method @NonNull public String getString(@NonNull String) throws org.json.JSONException;
+ method public boolean has(@Nullable String);
+ method public boolean isNull(@Nullable String);
+ method @NonNull public java.util.Iterator<java.lang.String> keys();
method public int length();
- method public org.json.JSONArray names();
- method public static java.lang.String numberToString(java.lang.Number) throws org.json.JSONException;
- method public java.lang.Object opt(java.lang.String);
- method public boolean optBoolean(java.lang.String);
- method public boolean optBoolean(java.lang.String, boolean);
- method public double optDouble(java.lang.String);
- method public double optDouble(java.lang.String, double);
- method public int optInt(java.lang.String);
- method public int optInt(java.lang.String, int);
- method public org.json.JSONArray optJSONArray(java.lang.String);
- method public org.json.JSONObject optJSONObject(java.lang.String);
- method public long optLong(java.lang.String);
- method public long optLong(java.lang.String, long);
- method public java.lang.String optString(java.lang.String);
- method public java.lang.String optString(java.lang.String, java.lang.String);
- method public org.json.JSONObject put(java.lang.String, boolean) throws org.json.JSONException;
- method public org.json.JSONObject put(java.lang.String, double) throws org.json.JSONException;
- method public org.json.JSONObject put(java.lang.String, int) throws org.json.JSONException;
- method public org.json.JSONObject put(java.lang.String, long) throws org.json.JSONException;
- method public org.json.JSONObject put(java.lang.String, java.lang.Object) throws org.json.JSONException;
- method public org.json.JSONObject putOpt(java.lang.String, java.lang.Object) throws org.json.JSONException;
- method public static java.lang.String quote(java.lang.String);
- method public java.lang.Object remove(java.lang.String);
- method public org.json.JSONArray toJSONArray(org.json.JSONArray) throws org.json.JSONException;
- method public java.lang.String toString(int) throws org.json.JSONException;
- method public static java.lang.Object wrap(java.lang.Object);
- field public static final java.lang.Object NULL;
+ method @Nullable public org.json.JSONArray names();
+ method @NonNull public static String numberToString(@NonNull Number) throws org.json.JSONException;
+ method @Nullable public Object opt(@Nullable String);
+ method public boolean optBoolean(@Nullable String);
+ method public boolean optBoolean(@Nullable String, boolean);
+ method public double optDouble(@Nullable String);
+ method public double optDouble(@Nullable String, double);
+ method public int optInt(@Nullable String);
+ method public int optInt(@Nullable String, int);
+ method @Nullable public org.json.JSONArray optJSONArray(@Nullable String);
+ method @Nullable public org.json.JSONObject optJSONObject(@Nullable String);
+ method public long optLong(@Nullable String);
+ method public long optLong(@Nullable String, long);
+ method @NonNull public String optString(@Nullable String);
+ method @NonNull public String optString(@Nullable String, @NonNull String);
+ method @NonNull public org.json.JSONObject put(@NonNull String, boolean) throws org.json.JSONException;
+ method @NonNull public org.json.JSONObject put(@NonNull String, double) throws org.json.JSONException;
+ method @NonNull public org.json.JSONObject put(@NonNull String, int) throws org.json.JSONException;
+ method @NonNull public org.json.JSONObject put(@NonNull String, long) throws org.json.JSONException;
+ method @NonNull public org.json.JSONObject put(@NonNull String, @Nullable Object) throws org.json.JSONException;
+ method @NonNull public org.json.JSONObject putOpt(@Nullable String, @Nullable Object) throws org.json.JSONException;
+ method @NonNull public static String quote(@Nullable String);
+ method @Nullable public Object remove(@Nullable String);
+ method @Nullable public org.json.JSONArray toJSONArray(@Nullable org.json.JSONArray) throws org.json.JSONException;
+ method @NonNull public String toString(int) throws org.json.JSONException;
+ method @Nullable public static Object wrap(@Nullable Object);
+ field @NonNull public static final Object NULL;
}
public class JSONStringer {
@@ -76759,88 +76734,88 @@
method public org.json.JSONStringer array() throws org.json.JSONException;
method public org.json.JSONStringer endArray() throws org.json.JSONException;
method public org.json.JSONStringer endObject() throws org.json.JSONException;
- method public org.json.JSONStringer key(java.lang.String) throws org.json.JSONException;
+ method public org.json.JSONStringer key(String) throws org.json.JSONException;
method public org.json.JSONStringer object() throws org.json.JSONException;
- method public org.json.JSONStringer value(java.lang.Object) throws org.json.JSONException;
+ method public org.json.JSONStringer value(Object) throws org.json.JSONException;
method public org.json.JSONStringer value(boolean) throws org.json.JSONException;
method public org.json.JSONStringer value(double) throws org.json.JSONException;
method public org.json.JSONStringer value(long) throws org.json.JSONException;
}
public class JSONTokener {
- ctor public JSONTokener(java.lang.String);
+ ctor public JSONTokener(String);
method public void back();
method public static int dehexchar(char);
method public boolean more();
method public char next();
method public char next(char) throws org.json.JSONException;
- method public java.lang.String next(int) throws org.json.JSONException;
+ method public String next(int) throws org.json.JSONException;
method public char nextClean() throws org.json.JSONException;
- method public java.lang.String nextString(char) throws org.json.JSONException;
- method public java.lang.String nextTo(java.lang.String);
- method public java.lang.String nextTo(char);
- method public java.lang.Object nextValue() throws org.json.JSONException;
- method public void skipPast(java.lang.String);
+ method public String nextString(char) throws org.json.JSONException;
+ method public String nextTo(String);
+ method public String nextTo(char);
+ method public Object nextValue() throws org.json.JSONException;
+ method public void skipPast(String);
method public char skipTo(char);
- method public org.json.JSONException syntaxError(java.lang.String);
+ method public org.json.JSONException syntaxError(String);
}
}
package org.w3c.dom {
- public abstract interface Attr implements org.w3c.dom.Node {
- method public abstract java.lang.String getName();
- method public abstract org.w3c.dom.Element getOwnerElement();
- method public abstract org.w3c.dom.TypeInfo getSchemaTypeInfo();
- method public abstract boolean getSpecified();
- method public abstract java.lang.String getValue();
- method public abstract boolean isId();
- method public abstract void setValue(java.lang.String) throws org.w3c.dom.DOMException;
+ public interface Attr extends org.w3c.dom.Node {
+ method public String getName();
+ method public org.w3c.dom.Element getOwnerElement();
+ method public org.w3c.dom.TypeInfo getSchemaTypeInfo();
+ method public boolean getSpecified();
+ method public String getValue();
+ method public boolean isId();
+ method public void setValue(String) throws org.w3c.dom.DOMException;
}
- public abstract interface CDATASection implements org.w3c.dom.Text {
+ public interface CDATASection extends org.w3c.dom.Text {
}
- public abstract interface CharacterData implements org.w3c.dom.Node {
- method public abstract void appendData(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract void deleteData(int, int) throws org.w3c.dom.DOMException;
- method public abstract java.lang.String getData() throws org.w3c.dom.DOMException;
- method public abstract int getLength();
- method public abstract void insertData(int, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract void replaceData(int, int, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract void setData(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract java.lang.String substringData(int, int) throws org.w3c.dom.DOMException;
+ public interface CharacterData extends org.w3c.dom.Node {
+ method public void appendData(String) throws org.w3c.dom.DOMException;
+ method public void deleteData(int, int) throws org.w3c.dom.DOMException;
+ method public String getData() throws org.w3c.dom.DOMException;
+ method public int getLength();
+ method public void insertData(int, String) throws org.w3c.dom.DOMException;
+ method public void replaceData(int, int, String) throws org.w3c.dom.DOMException;
+ method public void setData(String) throws org.w3c.dom.DOMException;
+ method public String substringData(int, int) throws org.w3c.dom.DOMException;
}
- public abstract interface Comment implements org.w3c.dom.CharacterData {
+ public interface Comment extends org.w3c.dom.CharacterData {
}
- public abstract interface DOMConfiguration {
- method public abstract boolean canSetParameter(java.lang.String, java.lang.Object);
- method public abstract java.lang.Object getParameter(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.DOMStringList getParameterNames();
- method public abstract void setParameter(java.lang.String, java.lang.Object) throws org.w3c.dom.DOMException;
+ public interface DOMConfiguration {
+ method public boolean canSetParameter(String, Object);
+ method public Object getParameter(String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.DOMStringList getParameterNames();
+ method public void setParameter(String, Object) throws org.w3c.dom.DOMException;
}
- public abstract interface DOMError {
- method public abstract org.w3c.dom.DOMLocator getLocation();
- method public abstract java.lang.String getMessage();
- method public abstract java.lang.Object getRelatedData();
- method public abstract java.lang.Object getRelatedException();
- method public abstract short getSeverity();
- method public abstract java.lang.String getType();
+ public interface DOMError {
+ method public org.w3c.dom.DOMLocator getLocation();
+ method public String getMessage();
+ method public Object getRelatedData();
+ method public Object getRelatedException();
+ method public short getSeverity();
+ method public String getType();
field public static final short SEVERITY_ERROR = 2; // 0x2
field public static final short SEVERITY_FATAL_ERROR = 3; // 0x3
field public static final short SEVERITY_WARNING = 1; // 0x1
}
- public abstract interface DOMErrorHandler {
- method public abstract boolean handleError(org.w3c.dom.DOMError);
+ public interface DOMErrorHandler {
+ method public boolean handleError(org.w3c.dom.DOMError);
}
public class DOMException extends java.lang.RuntimeException {
- ctor public DOMException(short, java.lang.String);
+ ctor public DOMException(short, String);
field public static final short DOMSTRING_SIZE_ERR = 2; // 0x2
field public static final short HIERARCHY_REQUEST_ERR = 3; // 0x3
field public static final short INDEX_SIZE_ERR = 1; // 0x1
@@ -76861,176 +76836,176 @@
field public short code;
}
- public abstract interface DOMImplementation {
- method public abstract org.w3c.dom.Document createDocument(java.lang.String, java.lang.String, org.w3c.dom.DocumentType) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.DocumentType createDocumentType(java.lang.String, java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract java.lang.Object getFeature(java.lang.String, java.lang.String);
- method public abstract boolean hasFeature(java.lang.String, java.lang.String);
+ public interface DOMImplementation {
+ method public org.w3c.dom.Document createDocument(String, String, org.w3c.dom.DocumentType) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.DocumentType createDocumentType(String, String, String) throws org.w3c.dom.DOMException;
+ method public Object getFeature(String, String);
+ method public boolean hasFeature(String, String);
}
- public abstract interface DOMImplementationList {
- method public abstract int getLength();
- method public abstract org.w3c.dom.DOMImplementation item(int);
+ public interface DOMImplementationList {
+ method public int getLength();
+ method public org.w3c.dom.DOMImplementation item(int);
}
- public abstract interface DOMImplementationSource {
- method public abstract org.w3c.dom.DOMImplementation getDOMImplementation(java.lang.String);
- method public abstract org.w3c.dom.DOMImplementationList getDOMImplementationList(java.lang.String);
+ public interface DOMImplementationSource {
+ method public org.w3c.dom.DOMImplementation getDOMImplementation(String);
+ method public org.w3c.dom.DOMImplementationList getDOMImplementationList(String);
}
- public abstract interface DOMLocator {
- method public abstract int getByteOffset();
- method public abstract int getColumnNumber();
- method public abstract int getLineNumber();
- method public abstract org.w3c.dom.Node getRelatedNode();
- method public abstract java.lang.String getUri();
- method public abstract int getUtf16Offset();
+ public interface DOMLocator {
+ method public int getByteOffset();
+ method public int getColumnNumber();
+ method public int getLineNumber();
+ method public org.w3c.dom.Node getRelatedNode();
+ method public String getUri();
+ method public int getUtf16Offset();
}
- public abstract interface DOMStringList {
- method public abstract boolean contains(java.lang.String);
- method public abstract int getLength();
- method public abstract java.lang.String item(int);
+ public interface DOMStringList {
+ method public boolean contains(String);
+ method public int getLength();
+ method public String item(int);
}
- public abstract interface Document implements org.w3c.dom.Node {
- method public abstract org.w3c.dom.Node adoptNode(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Attr createAttribute(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Attr createAttributeNS(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.CDATASection createCDATASection(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Comment createComment(java.lang.String);
- method public abstract org.w3c.dom.DocumentFragment createDocumentFragment();
- method public abstract org.w3c.dom.Element createElement(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Element createElementNS(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.EntityReference createEntityReference(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.ProcessingInstruction createProcessingInstruction(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Text createTextNode(java.lang.String);
- method public abstract org.w3c.dom.DocumentType getDoctype();
- method public abstract org.w3c.dom.Element getDocumentElement();
- method public abstract java.lang.String getDocumentURI();
- method public abstract org.w3c.dom.DOMConfiguration getDomConfig();
- method public abstract org.w3c.dom.Element getElementById(java.lang.String);
- method public abstract org.w3c.dom.NodeList getElementsByTagName(java.lang.String);
- method public abstract org.w3c.dom.NodeList getElementsByTagNameNS(java.lang.String, java.lang.String);
- method public abstract org.w3c.dom.DOMImplementation getImplementation();
- method public abstract java.lang.String getInputEncoding();
- method public abstract boolean getStrictErrorChecking();
- method public abstract java.lang.String getXmlEncoding();
- method public abstract boolean getXmlStandalone();
- method public abstract java.lang.String getXmlVersion();
- method public abstract org.w3c.dom.Node importNode(org.w3c.dom.Node, boolean) throws org.w3c.dom.DOMException;
- method public abstract void normalizeDocument();
- method public abstract org.w3c.dom.Node renameNode(org.w3c.dom.Node, java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract void setDocumentURI(java.lang.String);
- method public abstract void setStrictErrorChecking(boolean);
- method public abstract void setXmlStandalone(boolean) throws org.w3c.dom.DOMException;
- method public abstract void setXmlVersion(java.lang.String) throws org.w3c.dom.DOMException;
+ public interface Document extends org.w3c.dom.Node {
+ method public org.w3c.dom.Node adoptNode(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Attr createAttribute(String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Attr createAttributeNS(String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.CDATASection createCDATASection(String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Comment createComment(String);
+ method public org.w3c.dom.DocumentFragment createDocumentFragment();
+ method public org.w3c.dom.Element createElement(String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Element createElementNS(String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.EntityReference createEntityReference(String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.ProcessingInstruction createProcessingInstruction(String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Text createTextNode(String);
+ method public org.w3c.dom.DocumentType getDoctype();
+ method public org.w3c.dom.Element getDocumentElement();
+ method public String getDocumentURI();
+ method public org.w3c.dom.DOMConfiguration getDomConfig();
+ method public org.w3c.dom.Element getElementById(String);
+ method public org.w3c.dom.NodeList getElementsByTagName(String);
+ method public org.w3c.dom.NodeList getElementsByTagNameNS(String, String);
+ method public org.w3c.dom.DOMImplementation getImplementation();
+ method public String getInputEncoding();
+ method public boolean getStrictErrorChecking();
+ method public String getXmlEncoding();
+ method public boolean getXmlStandalone();
+ method public String getXmlVersion();
+ method public org.w3c.dom.Node importNode(org.w3c.dom.Node, boolean) throws org.w3c.dom.DOMException;
+ method public void normalizeDocument();
+ method public org.w3c.dom.Node renameNode(org.w3c.dom.Node, String, String) throws org.w3c.dom.DOMException;
+ method public void setDocumentURI(String);
+ method public void setStrictErrorChecking(boolean);
+ method public void setXmlStandalone(boolean) throws org.w3c.dom.DOMException;
+ method public void setXmlVersion(String) throws org.w3c.dom.DOMException;
}
- public abstract interface DocumentFragment implements org.w3c.dom.Node {
+ public interface DocumentFragment extends org.w3c.dom.Node {
}
- public abstract interface DocumentType implements org.w3c.dom.Node {
- method public abstract org.w3c.dom.NamedNodeMap getEntities();
- method public abstract java.lang.String getInternalSubset();
- method public abstract java.lang.String getName();
- method public abstract org.w3c.dom.NamedNodeMap getNotations();
- method public abstract java.lang.String getPublicId();
- method public abstract java.lang.String getSystemId();
+ public interface DocumentType extends org.w3c.dom.Node {
+ method public org.w3c.dom.NamedNodeMap getEntities();
+ method public String getInternalSubset();
+ method public String getName();
+ method public org.w3c.dom.NamedNodeMap getNotations();
+ method public String getPublicId();
+ method public String getSystemId();
}
- public abstract interface Element implements org.w3c.dom.Node {
- method public abstract java.lang.String getAttribute(java.lang.String);
- method public abstract java.lang.String getAttributeNS(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Attr getAttributeNode(java.lang.String);
- method public abstract org.w3c.dom.Attr getAttributeNodeNS(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.NodeList getElementsByTagName(java.lang.String);
- method public abstract org.w3c.dom.NodeList getElementsByTagNameNS(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.TypeInfo getSchemaTypeInfo();
- method public abstract java.lang.String getTagName();
- method public abstract boolean hasAttribute(java.lang.String);
- method public abstract boolean hasAttributeNS(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract void removeAttribute(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract void removeAttributeNS(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Attr removeAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
- method public abstract void setAttribute(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract void setAttributeNS(java.lang.String, java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Attr setAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Attr setAttributeNodeNS(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
- method public abstract void setIdAttribute(java.lang.String, boolean) throws org.w3c.dom.DOMException;
- method public abstract void setIdAttributeNS(java.lang.String, java.lang.String, boolean) throws org.w3c.dom.DOMException;
- method public abstract void setIdAttributeNode(org.w3c.dom.Attr, boolean) throws org.w3c.dom.DOMException;
+ public interface Element extends org.w3c.dom.Node {
+ method public String getAttribute(String);
+ method public String getAttributeNS(String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Attr getAttributeNode(String);
+ method public org.w3c.dom.Attr getAttributeNodeNS(String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.NodeList getElementsByTagName(String);
+ method public org.w3c.dom.NodeList getElementsByTagNameNS(String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.TypeInfo getSchemaTypeInfo();
+ method public String getTagName();
+ method public boolean hasAttribute(String);
+ method public boolean hasAttributeNS(String, String) throws org.w3c.dom.DOMException;
+ method public void removeAttribute(String) throws org.w3c.dom.DOMException;
+ method public void removeAttributeNS(String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Attr removeAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
+ method public void setAttribute(String, String) throws org.w3c.dom.DOMException;
+ method public void setAttributeNS(String, String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Attr setAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Attr setAttributeNodeNS(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
+ method public void setIdAttribute(String, boolean) throws org.w3c.dom.DOMException;
+ method public void setIdAttributeNS(String, String, boolean) throws org.w3c.dom.DOMException;
+ method public void setIdAttributeNode(org.w3c.dom.Attr, boolean) throws org.w3c.dom.DOMException;
}
- public abstract interface Entity implements org.w3c.dom.Node {
- method public abstract java.lang.String getInputEncoding();
- method public abstract java.lang.String getNotationName();
- method public abstract java.lang.String getPublicId();
- method public abstract java.lang.String getSystemId();
- method public abstract java.lang.String getXmlEncoding();
- method public abstract java.lang.String getXmlVersion();
+ public interface Entity extends org.w3c.dom.Node {
+ method public String getInputEncoding();
+ method public String getNotationName();
+ method public String getPublicId();
+ method public String getSystemId();
+ method public String getXmlEncoding();
+ method public String getXmlVersion();
}
- public abstract interface EntityReference implements org.w3c.dom.Node {
+ public interface EntityReference extends org.w3c.dom.Node {
}
- public abstract interface NameList {
- method public abstract boolean contains(java.lang.String);
- method public abstract boolean containsNS(java.lang.String, java.lang.String);
- method public abstract int getLength();
- method public abstract java.lang.String getName(int);
- method public abstract java.lang.String getNamespaceURI(int);
+ public interface NameList {
+ method public boolean contains(String);
+ method public boolean containsNS(String, String);
+ method public int getLength();
+ method public String getName(int);
+ method public String getNamespaceURI(int);
}
- public abstract interface NamedNodeMap {
- method public abstract int getLength();
- method public abstract org.w3c.dom.Node getNamedItem(java.lang.String);
- method public abstract org.w3c.dom.Node getNamedItemNS(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Node item(int);
- method public abstract org.w3c.dom.Node removeNamedItem(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Node removeNamedItemNS(java.lang.String, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Node setNamedItem(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Node setNamedItemNS(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+ public interface NamedNodeMap {
+ method public int getLength();
+ method public org.w3c.dom.Node getNamedItem(String);
+ method public org.w3c.dom.Node getNamedItemNS(String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Node item(int);
+ method public org.w3c.dom.Node removeNamedItem(String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Node removeNamedItemNS(String, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Node setNamedItem(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Node setNamedItemNS(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
}
- public abstract interface Node {
- method public abstract org.w3c.dom.Node appendChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Node cloneNode(boolean);
- method public abstract short compareDocumentPosition(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.NamedNodeMap getAttributes();
- method public abstract java.lang.String getBaseURI();
- method public abstract org.w3c.dom.NodeList getChildNodes();
- method public abstract java.lang.Object getFeature(java.lang.String, java.lang.String);
- method public abstract org.w3c.dom.Node getFirstChild();
- method public abstract org.w3c.dom.Node getLastChild();
- method public abstract java.lang.String getLocalName();
- method public abstract java.lang.String getNamespaceURI();
- method public abstract org.w3c.dom.Node getNextSibling();
- method public abstract java.lang.String getNodeName();
- method public abstract short getNodeType();
- method public abstract java.lang.String getNodeValue() throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Document getOwnerDocument();
- method public abstract org.w3c.dom.Node getParentNode();
- method public abstract java.lang.String getPrefix();
- method public abstract org.w3c.dom.Node getPreviousSibling();
- method public abstract java.lang.String getTextContent() throws org.w3c.dom.DOMException;
- method public abstract java.lang.Object getUserData(java.lang.String);
- method public abstract boolean hasAttributes();
- method public abstract boolean hasChildNodes();
- method public abstract org.w3c.dom.Node insertBefore(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
- method public abstract boolean isDefaultNamespace(java.lang.String);
- method public abstract boolean isEqualNode(org.w3c.dom.Node);
- method public abstract boolean isSameNode(org.w3c.dom.Node);
- method public abstract boolean isSupported(java.lang.String, java.lang.String);
- method public abstract java.lang.String lookupNamespaceURI(java.lang.String);
- method public abstract java.lang.String lookupPrefix(java.lang.String);
- method public abstract void normalize();
- method public abstract org.w3c.dom.Node removeChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Node replaceChild(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
- method public abstract void setNodeValue(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract void setPrefix(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract void setTextContent(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract java.lang.Object setUserData(java.lang.String, java.lang.Object, org.w3c.dom.UserDataHandler);
+ public interface Node {
+ method public org.w3c.dom.Node appendChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Node cloneNode(boolean);
+ method public short compareDocumentPosition(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.NamedNodeMap getAttributes();
+ method public String getBaseURI();
+ method public org.w3c.dom.NodeList getChildNodes();
+ method public Object getFeature(String, String);
+ method public org.w3c.dom.Node getFirstChild();
+ method public org.w3c.dom.Node getLastChild();
+ method public String getLocalName();
+ method public String getNamespaceURI();
+ method public org.w3c.dom.Node getNextSibling();
+ method public String getNodeName();
+ method public short getNodeType();
+ method public String getNodeValue() throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Document getOwnerDocument();
+ method public org.w3c.dom.Node getParentNode();
+ method public String getPrefix();
+ method public org.w3c.dom.Node getPreviousSibling();
+ method public String getTextContent() throws org.w3c.dom.DOMException;
+ method public Object getUserData(String);
+ method public boolean hasAttributes();
+ method public boolean hasChildNodes();
+ method public org.w3c.dom.Node insertBefore(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+ method public boolean isDefaultNamespace(String);
+ method public boolean isEqualNode(org.w3c.dom.Node);
+ method public boolean isSameNode(org.w3c.dom.Node);
+ method public boolean isSupported(String, String);
+ method public String lookupNamespaceURI(String);
+ method public String lookupPrefix(String);
+ method public void normalize();
+ method public org.w3c.dom.Node removeChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Node replaceChild(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+ method public void setNodeValue(String) throws org.w3c.dom.DOMException;
+ method public void setPrefix(String) throws org.w3c.dom.DOMException;
+ method public void setTextContent(String) throws org.w3c.dom.DOMException;
+ method public Object setUserData(String, Object, org.w3c.dom.UserDataHandler);
field public static final short ATTRIBUTE_NODE = 2; // 0x2
field public static final short CDATA_SECTION_NODE = 4; // 0x4
field public static final short COMMENT_NODE = 8; // 0x8
@@ -77051,41 +77026,41 @@
field public static final short TEXT_NODE = 3; // 0x3
}
- public abstract interface NodeList {
- method public abstract int getLength();
- method public abstract org.w3c.dom.Node item(int);
+ public interface NodeList {
+ method public int getLength();
+ method public org.w3c.dom.Node item(int);
}
- public abstract interface Notation implements org.w3c.dom.Node {
- method public abstract java.lang.String getPublicId();
- method public abstract java.lang.String getSystemId();
+ public interface Notation extends org.w3c.dom.Node {
+ method public String getPublicId();
+ method public String getSystemId();
}
- public abstract interface ProcessingInstruction implements org.w3c.dom.Node {
- method public abstract java.lang.String getData();
- method public abstract java.lang.String getTarget();
- method public abstract void setData(java.lang.String) throws org.w3c.dom.DOMException;
+ public interface ProcessingInstruction extends org.w3c.dom.Node {
+ method public String getData();
+ method public String getTarget();
+ method public void setData(String) throws org.w3c.dom.DOMException;
}
- public abstract interface Text implements org.w3c.dom.CharacterData {
- method public abstract java.lang.String getWholeText();
- method public abstract boolean isElementContentWhitespace();
- method public abstract org.w3c.dom.Text replaceWholeText(java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.Text splitText(int) throws org.w3c.dom.DOMException;
+ public interface Text extends org.w3c.dom.CharacterData {
+ method public String getWholeText();
+ method public boolean isElementContentWhitespace();
+ method public org.w3c.dom.Text replaceWholeText(String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.Text splitText(int) throws org.w3c.dom.DOMException;
}
- public abstract interface TypeInfo {
- method public abstract java.lang.String getTypeName();
- method public abstract java.lang.String getTypeNamespace();
- method public abstract boolean isDerivedFrom(java.lang.String, java.lang.String, int);
+ public interface TypeInfo {
+ method public String getTypeName();
+ method public String getTypeNamespace();
+ method public boolean isDerivedFrom(String, String, int);
field public static final int DERIVATION_EXTENSION = 2; // 0x2
field public static final int DERIVATION_LIST = 8; // 0x8
field public static final int DERIVATION_RESTRICTION = 1; // 0x1
field public static final int DERIVATION_UNION = 4; // 0x4
}
- public abstract interface UserDataHandler {
- method public abstract void handle(short, java.lang.String, java.lang.Object, org.w3c.dom.Node, org.w3c.dom.Node);
+ public interface UserDataHandler {
+ method public void handle(short, String, Object, org.w3c.dom.Node, org.w3c.dom.Node);
field public static final short NODE_ADOPTED = 5; // 0x5
field public static final short NODE_CLONED = 1; // 0x1
field public static final short NODE_DELETED = 3; // 0x3
@@ -77097,62 +77072,62 @@
package org.w3c.dom.ls {
- public abstract interface DOMImplementationLS {
- method public abstract org.w3c.dom.ls.LSInput createLSInput();
- method public abstract org.w3c.dom.ls.LSOutput createLSOutput();
- method public abstract org.w3c.dom.ls.LSParser createLSParser(short, java.lang.String) throws org.w3c.dom.DOMException;
- method public abstract org.w3c.dom.ls.LSSerializer createLSSerializer();
+ public interface DOMImplementationLS {
+ method public org.w3c.dom.ls.LSInput createLSInput();
+ method public org.w3c.dom.ls.LSOutput createLSOutput();
+ method public org.w3c.dom.ls.LSParser createLSParser(short, String) throws org.w3c.dom.DOMException;
+ method public org.w3c.dom.ls.LSSerializer createLSSerializer();
field public static final short MODE_ASYNCHRONOUS = 2; // 0x2
field public static final short MODE_SYNCHRONOUS = 1; // 0x1
}
public class LSException extends java.lang.RuntimeException {
- ctor public LSException(short, java.lang.String);
+ ctor public LSException(short, String);
field public static final short PARSE_ERR = 81; // 0x51
field public static final short SERIALIZE_ERR = 82; // 0x52
field public short code;
}
- public abstract interface LSInput {
- method public abstract java.lang.String getBaseURI();
- method public abstract java.io.InputStream getByteStream();
- method public abstract boolean getCertifiedText();
- method public abstract java.io.Reader getCharacterStream();
- method public abstract java.lang.String getEncoding();
- method public abstract java.lang.String getPublicId();
- method public abstract java.lang.String getStringData();
- method public abstract java.lang.String getSystemId();
- method public abstract void setBaseURI(java.lang.String);
- method public abstract void setByteStream(java.io.InputStream);
- method public abstract void setCertifiedText(boolean);
- method public abstract void setCharacterStream(java.io.Reader);
- method public abstract void setEncoding(java.lang.String);
- method public abstract void setPublicId(java.lang.String);
- method public abstract void setStringData(java.lang.String);
- method public abstract void setSystemId(java.lang.String);
+ public interface LSInput {
+ method public String getBaseURI();
+ method public java.io.InputStream getByteStream();
+ method public boolean getCertifiedText();
+ method public java.io.Reader getCharacterStream();
+ method public String getEncoding();
+ method public String getPublicId();
+ method public String getStringData();
+ method public String getSystemId();
+ method public void setBaseURI(String);
+ method public void setByteStream(java.io.InputStream);
+ method public void setCertifiedText(boolean);
+ method public void setCharacterStream(java.io.Reader);
+ method public void setEncoding(String);
+ method public void setPublicId(String);
+ method public void setStringData(String);
+ method public void setSystemId(String);
}
- public abstract interface LSOutput {
- method public abstract java.io.OutputStream getByteStream();
- method public abstract java.io.Writer getCharacterStream();
- method public abstract java.lang.String getEncoding();
- method public abstract java.lang.String getSystemId();
- method public abstract void setByteStream(java.io.OutputStream);
- method public abstract void setCharacterStream(java.io.Writer);
- method public abstract void setEncoding(java.lang.String);
- method public abstract void setSystemId(java.lang.String);
+ public interface LSOutput {
+ method public java.io.OutputStream getByteStream();
+ method public java.io.Writer getCharacterStream();
+ method public String getEncoding();
+ method public String getSystemId();
+ method public void setByteStream(java.io.OutputStream);
+ method public void setCharacterStream(java.io.Writer);
+ method public void setEncoding(String);
+ method public void setSystemId(String);
}
- public abstract interface LSParser {
- method public abstract void abort();
- method public abstract boolean getAsync();
- method public abstract boolean getBusy();
- method public abstract org.w3c.dom.DOMConfiguration getDomConfig();
- method public abstract org.w3c.dom.ls.LSParserFilter getFilter();
- method public abstract org.w3c.dom.Document parse(org.w3c.dom.ls.LSInput) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
- method public abstract org.w3c.dom.Document parseURI(java.lang.String) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
- method public abstract org.w3c.dom.Node parseWithContext(org.w3c.dom.ls.LSInput, org.w3c.dom.Node, short) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
- method public abstract void setFilter(org.w3c.dom.ls.LSParserFilter);
+ public interface LSParser {
+ method public void abort();
+ method public boolean getAsync();
+ method public boolean getBusy();
+ method public org.w3c.dom.DOMConfiguration getDomConfig();
+ method public org.w3c.dom.ls.LSParserFilter getFilter();
+ method public org.w3c.dom.Document parse(org.w3c.dom.ls.LSInput) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
+ method public org.w3c.dom.Document parseURI(String) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
+ method public org.w3c.dom.Node parseWithContext(org.w3c.dom.ls.LSInput, org.w3c.dom.Node, short) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
+ method public void setFilter(org.w3c.dom.ls.LSParserFilter);
field public static final short ACTION_APPEND_AS_CHILDREN = 1; // 0x1
field public static final short ACTION_INSERT_AFTER = 4; // 0x4
field public static final short ACTION_INSERT_BEFORE = 3; // 0x3
@@ -77160,343 +77135,343 @@
field public static final short ACTION_REPLACE_CHILDREN = 2; // 0x2
}
- public abstract interface LSParserFilter {
- method public abstract short acceptNode(org.w3c.dom.Node);
- method public abstract int getWhatToShow();
- method public abstract short startElement(org.w3c.dom.Element);
+ public interface LSParserFilter {
+ method public short acceptNode(org.w3c.dom.Node);
+ method public int getWhatToShow();
+ method public short startElement(org.w3c.dom.Element);
field public static final short FILTER_ACCEPT = 1; // 0x1
field public static final short FILTER_INTERRUPT = 4; // 0x4
field public static final short FILTER_REJECT = 2; // 0x2
field public static final short FILTER_SKIP = 3; // 0x3
}
- public abstract interface LSResourceResolver {
- method public abstract org.w3c.dom.ls.LSInput resolveResource(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ public interface LSResourceResolver {
+ method public org.w3c.dom.ls.LSInput resolveResource(String, String, String, String, String);
}
- public abstract interface LSSerializer {
- method public abstract org.w3c.dom.DOMConfiguration getDomConfig();
- method public abstract java.lang.String getNewLine();
- method public abstract void setNewLine(java.lang.String);
- method public abstract boolean write(org.w3c.dom.Node, org.w3c.dom.ls.LSOutput) throws org.w3c.dom.ls.LSException;
- method public abstract java.lang.String writeToString(org.w3c.dom.Node) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
- method public abstract boolean writeToURI(org.w3c.dom.Node, java.lang.String) throws org.w3c.dom.ls.LSException;
+ public interface LSSerializer {
+ method public org.w3c.dom.DOMConfiguration getDomConfig();
+ method public String getNewLine();
+ method public void setNewLine(String);
+ method public boolean write(org.w3c.dom.Node, org.w3c.dom.ls.LSOutput) throws org.w3c.dom.ls.LSException;
+ method public String writeToString(org.w3c.dom.Node) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
+ method public boolean writeToURI(org.w3c.dom.Node, String) throws org.w3c.dom.ls.LSException;
}
}
package org.xml.sax {
- public abstract deprecated interface AttributeList {
- method public abstract int getLength();
- method public abstract java.lang.String getName(int);
- method public abstract java.lang.String getType(int);
- method public abstract java.lang.String getType(java.lang.String);
- method public abstract java.lang.String getValue(int);
- method public abstract java.lang.String getValue(java.lang.String);
+ @Deprecated public interface AttributeList {
+ method @Deprecated public int getLength();
+ method @Deprecated public String getName(int);
+ method @Deprecated public String getType(int);
+ method @Deprecated public String getType(String);
+ method @Deprecated public String getValue(int);
+ method @Deprecated public String getValue(String);
}
- public abstract interface Attributes {
- method public abstract int getIndex(java.lang.String, java.lang.String);
- method public abstract int getIndex(java.lang.String);
- method public abstract int getLength();
- method public abstract java.lang.String getLocalName(int);
- method public abstract java.lang.String getQName(int);
- method public abstract java.lang.String getType(int);
- method public abstract java.lang.String getType(java.lang.String, java.lang.String);
- method public abstract java.lang.String getType(java.lang.String);
- method public abstract java.lang.String getURI(int);
- method public abstract java.lang.String getValue(int);
- method public abstract java.lang.String getValue(java.lang.String, java.lang.String);
- method public abstract java.lang.String getValue(java.lang.String);
+ public interface Attributes {
+ method public int getIndex(String, String);
+ method public int getIndex(String);
+ method public int getLength();
+ method public String getLocalName(int);
+ method public String getQName(int);
+ method public String getType(int);
+ method public String getType(String, String);
+ method public String getType(String);
+ method public String getURI(int);
+ method public String getValue(int);
+ method public String getValue(String, String);
+ method public String getValue(String);
}
- public abstract interface ContentHandler {
- method public abstract void characters(char[], int, int) throws org.xml.sax.SAXException;
- method public abstract void endDocument() throws org.xml.sax.SAXException;
- method public abstract void endElement(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void endPrefixMapping(java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
- method public abstract void processingInstruction(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void setDocumentLocator(org.xml.sax.Locator);
- method public abstract void skippedEntity(java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void startDocument() throws org.xml.sax.SAXException;
- method public abstract void startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
- method public abstract void startPrefixMapping(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- }
-
- public abstract interface DTDHandler {
- method public abstract void notationDecl(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- }
-
- public abstract deprecated interface DocumentHandler {
- method public abstract void characters(char[], int, int) throws org.xml.sax.SAXException;
- method public abstract void endDocument() throws org.xml.sax.SAXException;
- method public abstract void endElement(java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
- method public abstract void processingInstruction(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void setDocumentLocator(org.xml.sax.Locator);
- method public abstract void startDocument() throws org.xml.sax.SAXException;
- method public abstract void startElement(java.lang.String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
- }
-
- public abstract interface EntityResolver {
- method public abstract org.xml.sax.InputSource resolveEntity(java.lang.String, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
- }
-
- public abstract interface ErrorHandler {
- method public abstract void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
- method public abstract void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
- method public abstract void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
- }
-
- public deprecated class HandlerBase implements org.xml.sax.DTDHandler org.xml.sax.DocumentHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler {
- ctor public HandlerBase();
+ public interface ContentHandler {
method public void characters(char[], int, int) throws org.xml.sax.SAXException;
method public void endDocument() throws org.xml.sax.SAXException;
- method public void endElement(java.lang.String) throws org.xml.sax.SAXException;
+ method public void endElement(String, String, String) throws org.xml.sax.SAXException;
+ method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
+ method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+ method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+ method public void setDocumentLocator(org.xml.sax.Locator);
+ method public void skippedEntity(String) throws org.xml.sax.SAXException;
+ method public void startDocument() throws org.xml.sax.SAXException;
+ method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
+ method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
+ }
+
+ public interface DTDHandler {
+ method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
+ method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
+ }
+
+ @Deprecated public interface DocumentHandler {
+ method @Deprecated public void characters(char[], int, int) throws org.xml.sax.SAXException;
+ method @Deprecated public void endDocument() throws org.xml.sax.SAXException;
+ method @Deprecated public void endElement(String) throws org.xml.sax.SAXException;
+ method @Deprecated public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+ method @Deprecated public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+ method @Deprecated public void setDocumentLocator(org.xml.sax.Locator);
+ method @Deprecated public void startDocument() throws org.xml.sax.SAXException;
+ method @Deprecated public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
+ }
+
+ public interface EntityResolver {
+ method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
+ }
+
+ public interface ErrorHandler {
method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
- method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
- method public void notationDecl(java.lang.String, java.lang.String, java.lang.String);
- method public void processingInstruction(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public org.xml.sax.InputSource resolveEntity(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public void setDocumentLocator(org.xml.sax.Locator);
- method public void startDocument() throws org.xml.sax.SAXException;
- method public void startElement(java.lang.String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
- method public void unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
}
+ @Deprecated public class HandlerBase implements org.xml.sax.DTDHandler org.xml.sax.DocumentHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler {
+ ctor @Deprecated public HandlerBase();
+ method @Deprecated public void characters(char[], int, int) throws org.xml.sax.SAXException;
+ method @Deprecated public void endDocument() throws org.xml.sax.SAXException;
+ method @Deprecated public void endElement(String) throws org.xml.sax.SAXException;
+ method @Deprecated public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+ method @Deprecated public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+ method @Deprecated public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+ method @Deprecated public void notationDecl(String, String, String);
+ method @Deprecated public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+ method @Deprecated public org.xml.sax.InputSource resolveEntity(String, String) throws org.xml.sax.SAXException;
+ method @Deprecated public void setDocumentLocator(org.xml.sax.Locator);
+ method @Deprecated public void startDocument() throws org.xml.sax.SAXException;
+ method @Deprecated public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
+ method @Deprecated public void unparsedEntityDecl(String, String, String, String);
+ method @Deprecated public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+ }
+
public class InputSource {
ctor public InputSource();
- ctor public InputSource(java.lang.String);
+ ctor public InputSource(String);
ctor public InputSource(java.io.InputStream);
ctor public InputSource(java.io.Reader);
method public java.io.InputStream getByteStream();
method public java.io.Reader getCharacterStream();
- method public java.lang.String getEncoding();
- method public java.lang.String getPublicId();
- method public java.lang.String getSystemId();
+ method public String getEncoding();
+ method public String getPublicId();
+ method public String getSystemId();
method public void setByteStream(java.io.InputStream);
method public void setCharacterStream(java.io.Reader);
- method public void setEncoding(java.lang.String);
- method public void setPublicId(java.lang.String);
- method public void setSystemId(java.lang.String);
+ method public void setEncoding(String);
+ method public void setPublicId(String);
+ method public void setSystemId(String);
}
- public abstract interface Locator {
- method public abstract int getColumnNumber();
- method public abstract int getLineNumber();
- method public abstract java.lang.String getPublicId();
- method public abstract java.lang.String getSystemId();
+ public interface Locator {
+ method public int getColumnNumber();
+ method public int getLineNumber();
+ method public String getPublicId();
+ method public String getSystemId();
}
- public abstract deprecated interface Parser {
- method public abstract void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
- method public abstract void parse(java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
- method public abstract void setDTDHandler(org.xml.sax.DTDHandler);
- method public abstract void setDocumentHandler(org.xml.sax.DocumentHandler);
- method public abstract void setEntityResolver(org.xml.sax.EntityResolver);
- method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
- method public abstract void setLocale(java.util.Locale) throws org.xml.sax.SAXException;
+ @Deprecated public interface Parser {
+ method @Deprecated public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
+ method @Deprecated public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+ method @Deprecated public void setDTDHandler(org.xml.sax.DTDHandler);
+ method @Deprecated public void setDocumentHandler(org.xml.sax.DocumentHandler);
+ method @Deprecated public void setEntityResolver(org.xml.sax.EntityResolver);
+ method @Deprecated public void setErrorHandler(org.xml.sax.ErrorHandler);
+ method @Deprecated public void setLocale(java.util.Locale) throws org.xml.sax.SAXException;
}
public class SAXException extends java.lang.Exception {
ctor public SAXException();
- ctor public SAXException(java.lang.String);
- ctor public SAXException(java.lang.Exception);
- ctor public SAXException(java.lang.String, java.lang.Exception);
- method public java.lang.Exception getException();
+ ctor public SAXException(String);
+ ctor public SAXException(Exception);
+ ctor public SAXException(String, Exception);
+ method public Exception getException();
}
public class SAXNotRecognizedException extends org.xml.sax.SAXException {
ctor public SAXNotRecognizedException();
- ctor public SAXNotRecognizedException(java.lang.String);
+ ctor public SAXNotRecognizedException(String);
}
public class SAXNotSupportedException extends org.xml.sax.SAXException {
ctor public SAXNotSupportedException();
- ctor public SAXNotSupportedException(java.lang.String);
+ ctor public SAXNotSupportedException(String);
}
public class SAXParseException extends org.xml.sax.SAXException {
- ctor public SAXParseException(java.lang.String, org.xml.sax.Locator);
- ctor public SAXParseException(java.lang.String, org.xml.sax.Locator, java.lang.Exception);
- ctor public SAXParseException(java.lang.String, java.lang.String, java.lang.String, int, int);
- ctor public SAXParseException(java.lang.String, java.lang.String, java.lang.String, int, int, java.lang.Exception);
+ ctor public SAXParseException(String, org.xml.sax.Locator);
+ ctor public SAXParseException(String, org.xml.sax.Locator, Exception);
+ ctor public SAXParseException(String, String, String, int, int);
+ ctor public SAXParseException(String, String, String, int, int, Exception);
method public int getColumnNumber();
method public int getLineNumber();
- method public java.lang.String getPublicId();
- method public java.lang.String getSystemId();
+ method public String getPublicId();
+ method public String getSystemId();
}
- public abstract interface XMLFilter implements org.xml.sax.XMLReader {
- method public abstract org.xml.sax.XMLReader getParent();
- method public abstract void setParent(org.xml.sax.XMLReader);
+ public interface XMLFilter extends org.xml.sax.XMLReader {
+ method public org.xml.sax.XMLReader getParent();
+ method public void setParent(org.xml.sax.XMLReader);
}
- public abstract interface XMLReader {
- method public abstract org.xml.sax.ContentHandler getContentHandler();
- method public abstract org.xml.sax.DTDHandler getDTDHandler();
- method public abstract org.xml.sax.EntityResolver getEntityResolver();
- method public abstract org.xml.sax.ErrorHandler getErrorHandler();
- method public abstract boolean getFeature(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public abstract java.lang.Object getProperty(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public abstract void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
- method public abstract void parse(java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
- method public abstract void setContentHandler(org.xml.sax.ContentHandler);
- method public abstract void setDTDHandler(org.xml.sax.DTDHandler);
- method public abstract void setEntityResolver(org.xml.sax.EntityResolver);
- method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
- method public abstract void setFeature(java.lang.String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public abstract void setProperty(java.lang.String, java.lang.Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ public interface XMLReader {
+ method public org.xml.sax.ContentHandler getContentHandler();
+ method public org.xml.sax.DTDHandler getDTDHandler();
+ method public org.xml.sax.EntityResolver getEntityResolver();
+ method public org.xml.sax.ErrorHandler getErrorHandler();
+ method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void setContentHandler(org.xml.sax.ContentHandler);
+ method public void setDTDHandler(org.xml.sax.DTDHandler);
+ method public void setEntityResolver(org.xml.sax.EntityResolver);
+ method public void setErrorHandler(org.xml.sax.ErrorHandler);
+ method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
}
}
package org.xml.sax.ext {
- public abstract interface Attributes2 implements org.xml.sax.Attributes {
- method public abstract boolean isDeclared(int);
- method public abstract boolean isDeclared(java.lang.String);
- method public abstract boolean isDeclared(java.lang.String, java.lang.String);
- method public abstract boolean isSpecified(int);
- method public abstract boolean isSpecified(java.lang.String, java.lang.String);
- method public abstract boolean isSpecified(java.lang.String);
+ public interface Attributes2 extends org.xml.sax.Attributes {
+ method public boolean isDeclared(int);
+ method public boolean isDeclared(String);
+ method public boolean isDeclared(String, String);
+ method public boolean isSpecified(int);
+ method public boolean isSpecified(String, String);
+ method public boolean isSpecified(String);
}
public class Attributes2Impl extends org.xml.sax.helpers.AttributesImpl implements org.xml.sax.ext.Attributes2 {
ctor public Attributes2Impl();
ctor public Attributes2Impl(org.xml.sax.Attributes);
method public boolean isDeclared(int);
- method public boolean isDeclared(java.lang.String, java.lang.String);
- method public boolean isDeclared(java.lang.String);
+ method public boolean isDeclared(String, String);
+ method public boolean isDeclared(String);
method public boolean isSpecified(int);
- method public boolean isSpecified(java.lang.String, java.lang.String);
- method public boolean isSpecified(java.lang.String);
+ method public boolean isSpecified(String, String);
+ method public boolean isSpecified(String);
method public void setDeclared(int, boolean);
method public void setSpecified(int, boolean);
}
- public abstract interface DeclHandler {
- method public abstract void attributeDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void elementDecl(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void externalEntityDecl(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void internalEntityDecl(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
+ public interface DeclHandler {
+ method public void attributeDecl(String, String, String, String, String) throws org.xml.sax.SAXException;
+ method public void elementDecl(String, String) throws org.xml.sax.SAXException;
+ method public void externalEntityDecl(String, String, String) throws org.xml.sax.SAXException;
+ method public void internalEntityDecl(String, String) throws org.xml.sax.SAXException;
}
public class DefaultHandler2 extends org.xml.sax.helpers.DefaultHandler implements org.xml.sax.ext.DeclHandler org.xml.sax.ext.EntityResolver2 org.xml.sax.ext.LexicalHandler {
ctor public DefaultHandler2();
- method public void attributeDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
+ method public void attributeDecl(String, String, String, String, String) throws org.xml.sax.SAXException;
method public void comment(char[], int, int) throws org.xml.sax.SAXException;
- method public void elementDecl(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
+ method public void elementDecl(String, String) throws org.xml.sax.SAXException;
method public void endCDATA() throws org.xml.sax.SAXException;
method public void endDTD() throws org.xml.sax.SAXException;
- method public void endEntity(java.lang.String) throws org.xml.sax.SAXException;
- method public void externalEntityDecl(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public org.xml.sax.InputSource getExternalSubset(java.lang.String, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
- method public void internalEntityDecl(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public org.xml.sax.InputSource resolveEntity(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void endEntity(String) throws org.xml.sax.SAXException;
+ method public void externalEntityDecl(String, String, String) throws org.xml.sax.SAXException;
+ method public org.xml.sax.InputSource getExternalSubset(String, String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void internalEntityDecl(String, String) throws org.xml.sax.SAXException;
+ method public org.xml.sax.InputSource resolveEntity(String, String, String, String) throws java.io.IOException, org.xml.sax.SAXException;
method public void startCDATA() throws org.xml.sax.SAXException;
- method public void startDTD(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public void startEntity(java.lang.String) throws org.xml.sax.SAXException;
+ method public void startDTD(String, String, String) throws org.xml.sax.SAXException;
+ method public void startEntity(String) throws org.xml.sax.SAXException;
}
- public abstract interface EntityResolver2 implements org.xml.sax.EntityResolver {
- method public abstract org.xml.sax.InputSource getExternalSubset(java.lang.String, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
- method public abstract org.xml.sax.InputSource resolveEntity(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
+ public interface EntityResolver2 extends org.xml.sax.EntityResolver {
+ method public org.xml.sax.InputSource getExternalSubset(String, String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public org.xml.sax.InputSource resolveEntity(String, String, String, String) throws java.io.IOException, org.xml.sax.SAXException;
}
- public abstract interface LexicalHandler {
- method public abstract void comment(char[], int, int) throws org.xml.sax.SAXException;
- method public abstract void endCDATA() throws org.xml.sax.SAXException;
- method public abstract void endDTD() throws org.xml.sax.SAXException;
- method public abstract void endEntity(java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void startCDATA() throws org.xml.sax.SAXException;
- method public abstract void startDTD(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public abstract void startEntity(java.lang.String) throws org.xml.sax.SAXException;
+ public interface LexicalHandler {
+ method public void comment(char[], int, int) throws org.xml.sax.SAXException;
+ method public void endCDATA() throws org.xml.sax.SAXException;
+ method public void endDTD() throws org.xml.sax.SAXException;
+ method public void endEntity(String) throws org.xml.sax.SAXException;
+ method public void startCDATA() throws org.xml.sax.SAXException;
+ method public void startDTD(String, String, String) throws org.xml.sax.SAXException;
+ method public void startEntity(String) throws org.xml.sax.SAXException;
}
- public abstract interface Locator2 implements org.xml.sax.Locator {
- method public abstract java.lang.String getEncoding();
- method public abstract java.lang.String getXMLVersion();
+ public interface Locator2 extends org.xml.sax.Locator {
+ method public String getEncoding();
+ method public String getXMLVersion();
}
public class Locator2Impl extends org.xml.sax.helpers.LocatorImpl implements org.xml.sax.ext.Locator2 {
ctor public Locator2Impl();
ctor public Locator2Impl(org.xml.sax.Locator);
- method public java.lang.String getEncoding();
- method public java.lang.String getXMLVersion();
- method public void setEncoding(java.lang.String);
- method public void setXMLVersion(java.lang.String);
+ method public String getEncoding();
+ method public String getXMLVersion();
+ method public void setEncoding(String);
+ method public void setXMLVersion(String);
}
}
package org.xml.sax.helpers {
- public deprecated class AttributeListImpl implements org.xml.sax.AttributeList {
- ctor public AttributeListImpl();
- ctor public AttributeListImpl(org.xml.sax.AttributeList);
- method public void addAttribute(java.lang.String, java.lang.String, java.lang.String);
- method public void clear();
- method public int getLength();
- method public java.lang.String getName(int);
- method public java.lang.String getType(int);
- method public java.lang.String getType(java.lang.String);
- method public java.lang.String getValue(int);
- method public java.lang.String getValue(java.lang.String);
- method public void removeAttribute(java.lang.String);
- method public void setAttributeList(org.xml.sax.AttributeList);
+ @Deprecated public class AttributeListImpl implements org.xml.sax.AttributeList {
+ ctor @Deprecated public AttributeListImpl();
+ ctor @Deprecated public AttributeListImpl(org.xml.sax.AttributeList);
+ method @Deprecated public void addAttribute(String, String, String);
+ method @Deprecated public void clear();
+ method @Deprecated public int getLength();
+ method @Deprecated public String getName(int);
+ method @Deprecated public String getType(int);
+ method @Deprecated public String getType(String);
+ method @Deprecated public String getValue(int);
+ method @Deprecated public String getValue(String);
+ method @Deprecated public void removeAttribute(String);
+ method @Deprecated public void setAttributeList(org.xml.sax.AttributeList);
}
public class AttributesImpl implements org.xml.sax.Attributes {
ctor public AttributesImpl();
ctor public AttributesImpl(org.xml.sax.Attributes);
- method public void addAttribute(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ method public void addAttribute(String, String, String, String, String);
method public void clear();
- method public int getIndex(java.lang.String, java.lang.String);
- method public int getIndex(java.lang.String);
+ method public int getIndex(String, String);
+ method public int getIndex(String);
method public int getLength();
- method public java.lang.String getLocalName(int);
- method public java.lang.String getQName(int);
- method public java.lang.String getType(int);
- method public java.lang.String getType(java.lang.String, java.lang.String);
- method public java.lang.String getType(java.lang.String);
- method public java.lang.String getURI(int);
- method public java.lang.String getValue(int);
- method public java.lang.String getValue(java.lang.String, java.lang.String);
- method public java.lang.String getValue(java.lang.String);
+ method public String getLocalName(int);
+ method public String getQName(int);
+ method public String getType(int);
+ method public String getType(String, String);
+ method public String getType(String);
+ method public String getURI(int);
+ method public String getValue(int);
+ method public String getValue(String, String);
+ method public String getValue(String);
method public void removeAttribute(int);
- method public void setAttribute(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ method public void setAttribute(int, String, String, String, String, String);
method public void setAttributes(org.xml.sax.Attributes);
- method public void setLocalName(int, java.lang.String);
- method public void setQName(int, java.lang.String);
- method public void setType(int, java.lang.String);
- method public void setURI(int, java.lang.String);
- method public void setValue(int, java.lang.String);
+ method public void setLocalName(int, String);
+ method public void setQName(int, String);
+ method public void setType(int, String);
+ method public void setURI(int, String);
+ method public void setValue(int, String);
}
public class DefaultHandler implements org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler {
ctor public DefaultHandler();
method public void characters(char[], int, int) throws org.xml.sax.SAXException;
method public void endDocument() throws org.xml.sax.SAXException;
- method public void endElement(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public void endPrefixMapping(java.lang.String) throws org.xml.sax.SAXException;
+ method public void endElement(String, String, String) throws org.xml.sax.SAXException;
+ method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
- method public void notationDecl(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public void processingInstruction(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public org.xml.sax.InputSource resolveEntity(java.lang.String, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
+ method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+ method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
method public void setDocumentLocator(org.xml.sax.Locator);
- method public void skippedEntity(java.lang.String) throws org.xml.sax.SAXException;
+ method public void skippedEntity(String) throws org.xml.sax.SAXException;
method public void startDocument() throws org.xml.sax.SAXException;
- method public void startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
- method public void startPrefixMapping(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public void unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
+ method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
+ method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
+ method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
}
@@ -77505,30 +77480,30 @@
ctor public LocatorImpl(org.xml.sax.Locator);
method public int getColumnNumber();
method public int getLineNumber();
- method public java.lang.String getPublicId();
- method public java.lang.String getSystemId();
+ method public String getPublicId();
+ method public String getSystemId();
method public void setColumnNumber(int);
method public void setLineNumber(int);
- method public void setPublicId(java.lang.String);
- method public void setSystemId(java.lang.String);
+ method public void setPublicId(String);
+ method public void setSystemId(String);
}
public class NamespaceSupport {
ctor public NamespaceSupport();
- method public boolean declarePrefix(java.lang.String, java.lang.String);
+ method public boolean declarePrefix(String, String);
method public java.util.Enumeration getDeclaredPrefixes();
- method public java.lang.String getPrefix(java.lang.String);
+ method public String getPrefix(String);
method public java.util.Enumeration getPrefixes();
- method public java.util.Enumeration getPrefixes(java.lang.String);
- method public java.lang.String getURI(java.lang.String);
+ method public java.util.Enumeration getPrefixes(String);
+ method public String getURI(String);
method public boolean isNamespaceDeclUris();
method public void popContext();
- method public java.lang.String[] processName(java.lang.String, java.lang.String[], boolean);
+ method public String[] processName(String, String[], boolean);
method public void pushContext();
method public void reset();
method public void setNamespaceDeclUris(boolean);
- field public static final java.lang.String NSDECL = "http://www.w3.org/xmlns/2000/";
- field public static final java.lang.String XMLNS = "http://www.w3.org/XML/1998/namespace";
+ field public static final String NSDECL = "http://www.w3.org/xmlns/2000/";
+ field public static final String XMLNS = "http://www.w3.org/XML/1998/namespace";
}
public class ParserAdapter implements org.xml.sax.DocumentHandler org.xml.sax.XMLReader {
@@ -77536,31 +77511,31 @@
ctor public ParserAdapter(org.xml.sax.Parser);
method public void characters(char[], int, int) throws org.xml.sax.SAXException;
method public void endDocument() throws org.xml.sax.SAXException;
- method public void endElement(java.lang.String) throws org.xml.sax.SAXException;
+ method public void endElement(String) throws org.xml.sax.SAXException;
method public org.xml.sax.ContentHandler getContentHandler();
method public org.xml.sax.DTDHandler getDTDHandler();
method public org.xml.sax.EntityResolver getEntityResolver();
method public org.xml.sax.ErrorHandler getErrorHandler();
- method public boolean getFeature(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public java.lang.Object getProperty(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
- method public void parse(java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
- method public void processingInstruction(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
+ method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
method public void setContentHandler(org.xml.sax.ContentHandler);
method public void setDTDHandler(org.xml.sax.DTDHandler);
method public void setDocumentLocator(org.xml.sax.Locator);
method public void setEntityResolver(org.xml.sax.EntityResolver);
method public void setErrorHandler(org.xml.sax.ErrorHandler);
- method public void setFeature(java.lang.String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public void setProperty(java.lang.String, java.lang.Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public void startDocument() throws org.xml.sax.SAXException;
- method public void startElement(java.lang.String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
+ method public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
}
- public deprecated class ParserFactory {
- method public static org.xml.sax.Parser makeParser() throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.NullPointerException;
- method public static org.xml.sax.Parser makeParser(java.lang.String) throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ @Deprecated public class ParserFactory {
+ method @Deprecated public static org.xml.sax.Parser makeParser() throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.NullPointerException;
+ method @Deprecated public static org.xml.sax.Parser makeParser(String) throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
}
public class XMLFilterImpl implements org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler org.xml.sax.XMLFilter {
@@ -77568,36 +77543,36 @@
ctor public XMLFilterImpl(org.xml.sax.XMLReader);
method public void characters(char[], int, int) throws org.xml.sax.SAXException;
method public void endDocument() throws org.xml.sax.SAXException;
- method public void endElement(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public void endPrefixMapping(java.lang.String) throws org.xml.sax.SAXException;
+ method public void endElement(String, String, String) throws org.xml.sax.SAXException;
+ method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
method public org.xml.sax.ContentHandler getContentHandler();
method public org.xml.sax.DTDHandler getDTDHandler();
method public org.xml.sax.EntityResolver getEntityResolver();
method public org.xml.sax.ErrorHandler getErrorHandler();
- method public boolean getFeature(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public org.xml.sax.XMLReader getParent();
- method public java.lang.Object getProperty(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
- method public void notationDecl(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
+ method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
- method public void parse(java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
- method public void processingInstruction(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public org.xml.sax.InputSource resolveEntity(java.lang.String, java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+ method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
method public void setContentHandler(org.xml.sax.ContentHandler);
method public void setDTDHandler(org.xml.sax.DTDHandler);
method public void setDocumentLocator(org.xml.sax.Locator);
method public void setEntityResolver(org.xml.sax.EntityResolver);
method public void setErrorHandler(org.xml.sax.ErrorHandler);
- method public void setFeature(java.lang.String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
method public void setParent(org.xml.sax.XMLReader);
- method public void setProperty(java.lang.String, java.lang.Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public void skippedEntity(java.lang.String) throws org.xml.sax.SAXException;
+ method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void skippedEntity(String) throws org.xml.sax.SAXException;
method public void startDocument() throws org.xml.sax.SAXException;
- method public void startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
- method public void startPrefixMapping(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public void unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
+ method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
+ method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
+ method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
}
@@ -77606,146 +77581,146 @@
ctor public XMLReaderAdapter(org.xml.sax.XMLReader);
method public void characters(char[], int, int) throws org.xml.sax.SAXException;
method public void endDocument() throws org.xml.sax.SAXException;
- method public void endElement(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- method public void endPrefixMapping(java.lang.String);
+ method public void endElement(String, String, String) throws org.xml.sax.SAXException;
+ method public void endPrefixMapping(String);
method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
- method public void parse(java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
- method public void processingInstruction(java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
+ method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
method public void setDTDHandler(org.xml.sax.DTDHandler);
method public void setDocumentHandler(org.xml.sax.DocumentHandler);
method public void setDocumentLocator(org.xml.sax.Locator);
method public void setEntityResolver(org.xml.sax.EntityResolver);
method public void setErrorHandler(org.xml.sax.ErrorHandler);
method public void setLocale(java.util.Locale) throws org.xml.sax.SAXException;
- method public void skippedEntity(java.lang.String) throws org.xml.sax.SAXException;
+ method public void skippedEntity(String) throws org.xml.sax.SAXException;
method public void startDocument() throws org.xml.sax.SAXException;
- method public void startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
- method public void startPrefixMapping(java.lang.String, java.lang.String);
+ method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
+ method public void startPrefixMapping(String, String);
}
public final class XMLReaderFactory {
method public static org.xml.sax.XMLReader createXMLReader() throws org.xml.sax.SAXException;
- method public static org.xml.sax.XMLReader createXMLReader(java.lang.String) throws org.xml.sax.SAXException;
+ method public static org.xml.sax.XMLReader createXMLReader(String) throws org.xml.sax.SAXException;
}
}
package org.xmlpull.v1 {
- public abstract interface XmlPullParser {
- method public abstract void defineEntityReplacementText(java.lang.String, java.lang.String) throws org.xmlpull.v1.XmlPullParserException;
- method public abstract int getAttributeCount();
- method public abstract java.lang.String getAttributeName(int);
- method public abstract java.lang.String getAttributeNamespace(int);
- method public abstract java.lang.String getAttributePrefix(int);
- method public abstract java.lang.String getAttributeType(int);
- method public abstract java.lang.String getAttributeValue(int);
- method public abstract java.lang.String getAttributeValue(java.lang.String, java.lang.String);
- method public abstract int getColumnNumber();
- method public abstract int getDepth();
- method public abstract int getEventType() throws org.xmlpull.v1.XmlPullParserException;
- method public abstract boolean getFeature(java.lang.String);
- method public abstract java.lang.String getInputEncoding();
- method public abstract int getLineNumber();
- method public abstract java.lang.String getName();
- method public abstract java.lang.String getNamespace(java.lang.String);
- method public abstract java.lang.String getNamespace();
- method public abstract int getNamespaceCount(int) throws org.xmlpull.v1.XmlPullParserException;
- method public abstract java.lang.String getNamespacePrefix(int) throws org.xmlpull.v1.XmlPullParserException;
- method public abstract java.lang.String getNamespaceUri(int) throws org.xmlpull.v1.XmlPullParserException;
- method public abstract java.lang.String getPositionDescription();
- method public abstract java.lang.String getPrefix();
- method public abstract java.lang.Object getProperty(java.lang.String);
- method public abstract java.lang.String getText();
- method public abstract char[] getTextCharacters(int[]);
- method public abstract boolean isAttributeDefault(int);
- method public abstract boolean isEmptyElementTag() throws org.xmlpull.v1.XmlPullParserException;
- method public abstract boolean isWhitespace() throws org.xmlpull.v1.XmlPullParserException;
- method public abstract int next() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public abstract int nextTag() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public abstract java.lang.String nextText() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public abstract int nextToken() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public abstract void require(int, java.lang.String, java.lang.String) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public abstract void setFeature(java.lang.String, boolean) throws org.xmlpull.v1.XmlPullParserException;
- method public abstract void setInput(java.io.Reader) throws org.xmlpull.v1.XmlPullParserException;
- method public abstract void setInput(java.io.InputStream, java.lang.String) throws org.xmlpull.v1.XmlPullParserException;
- method public abstract void setProperty(java.lang.String, java.lang.Object) throws org.xmlpull.v1.XmlPullParserException;
+ public interface XmlPullParser {
+ method public void defineEntityReplacementText(String, String) throws org.xmlpull.v1.XmlPullParserException;
+ method public int getAttributeCount();
+ method public String getAttributeName(int);
+ method public String getAttributeNamespace(int);
+ method public String getAttributePrefix(int);
+ method public String getAttributeType(int);
+ method public String getAttributeValue(int);
+ method public String getAttributeValue(String, String);
+ method public int getColumnNumber();
+ method public int getDepth();
+ method public int getEventType() throws org.xmlpull.v1.XmlPullParserException;
+ method public boolean getFeature(String);
+ method public String getInputEncoding();
+ method public int getLineNumber();
+ method public String getName();
+ method public String getNamespace(String);
+ method public String getNamespace();
+ method public int getNamespaceCount(int) throws org.xmlpull.v1.XmlPullParserException;
+ method public String getNamespacePrefix(int) throws org.xmlpull.v1.XmlPullParserException;
+ method public String getNamespaceUri(int) throws org.xmlpull.v1.XmlPullParserException;
+ method public String getPositionDescription();
+ method public String getPrefix();
+ method public Object getProperty(String);
+ method public String getText();
+ method public char[] getTextCharacters(int[]);
+ method public boolean isAttributeDefault(int);
+ method public boolean isEmptyElementTag() throws org.xmlpull.v1.XmlPullParserException;
+ method public boolean isWhitespace() throws org.xmlpull.v1.XmlPullParserException;
+ method public int next() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public int nextTag() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public String nextText() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public int nextToken() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public void require(int, String, String) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public void setFeature(String, boolean) throws org.xmlpull.v1.XmlPullParserException;
+ method public void setInput(java.io.Reader) throws org.xmlpull.v1.XmlPullParserException;
+ method public void setInput(java.io.InputStream, String) throws org.xmlpull.v1.XmlPullParserException;
+ method public void setProperty(String, Object) throws org.xmlpull.v1.XmlPullParserException;
field public static final int CDSECT = 5; // 0x5
field public static final int COMMENT = 9; // 0x9
field public static final int DOCDECL = 10; // 0xa
field public static final int END_DOCUMENT = 1; // 0x1
field public static final int END_TAG = 3; // 0x3
field public static final int ENTITY_REF = 6; // 0x6
- field public static final java.lang.String FEATURE_PROCESS_DOCDECL = "http://xmlpull.org/v1/doc/features.html#process-docdecl";
- field public static final java.lang.String FEATURE_PROCESS_NAMESPACES = "http://xmlpull.org/v1/doc/features.html#process-namespaces";
- field public static final java.lang.String FEATURE_REPORT_NAMESPACE_ATTRIBUTES = "http://xmlpull.org/v1/doc/features.html#report-namespace-prefixes";
- field public static final java.lang.String FEATURE_VALIDATION = "http://xmlpull.org/v1/doc/features.html#validation";
+ field public static final String FEATURE_PROCESS_DOCDECL = "http://xmlpull.org/v1/doc/features.html#process-docdecl";
+ field public static final String FEATURE_PROCESS_NAMESPACES = "http://xmlpull.org/v1/doc/features.html#process-namespaces";
+ field public static final String FEATURE_REPORT_NAMESPACE_ATTRIBUTES = "http://xmlpull.org/v1/doc/features.html#report-namespace-prefixes";
+ field public static final String FEATURE_VALIDATION = "http://xmlpull.org/v1/doc/features.html#validation";
field public static final int IGNORABLE_WHITESPACE = 7; // 0x7
- field public static final java.lang.String NO_NAMESPACE = "";
+ field public static final String NO_NAMESPACE = "";
field public static final int PROCESSING_INSTRUCTION = 8; // 0x8
field public static final int START_DOCUMENT = 0; // 0x0
field public static final int START_TAG = 2; // 0x2
field public static final int TEXT = 4; // 0x4
- field public static final java.lang.String[] TYPES;
+ field public static final String[] TYPES;
}
public class XmlPullParserException extends java.lang.Exception {
- ctor public XmlPullParserException(java.lang.String);
- ctor public XmlPullParserException(java.lang.String, org.xmlpull.v1.XmlPullParser, java.lang.Throwable);
+ ctor public XmlPullParserException(String);
+ ctor public XmlPullParserException(String, org.xmlpull.v1.XmlPullParser, Throwable);
method public int getColumnNumber();
- method public java.lang.Throwable getDetail();
+ method public Throwable getDetail();
method public int getLineNumber();
field protected int column;
- field protected java.lang.Throwable detail;
+ field protected Throwable detail;
field protected int row;
}
public class XmlPullParserFactory {
ctor protected XmlPullParserFactory();
- method public boolean getFeature(java.lang.String);
+ method public boolean getFeature(String);
method public boolean isNamespaceAware();
method public boolean isValidating();
method public static org.xmlpull.v1.XmlPullParserFactory newInstance() throws org.xmlpull.v1.XmlPullParserException;
- method public static org.xmlpull.v1.XmlPullParserFactory newInstance(java.lang.String, java.lang.Class) throws org.xmlpull.v1.XmlPullParserException;
+ method public static org.xmlpull.v1.XmlPullParserFactory newInstance(String, Class) throws org.xmlpull.v1.XmlPullParserException;
method public org.xmlpull.v1.XmlPullParser newPullParser() throws org.xmlpull.v1.XmlPullParserException;
method public org.xmlpull.v1.XmlSerializer newSerializer() throws org.xmlpull.v1.XmlPullParserException;
- method public void setFeature(java.lang.String, boolean) throws org.xmlpull.v1.XmlPullParserException;
+ method public void setFeature(String, boolean) throws org.xmlpull.v1.XmlPullParserException;
method public void setNamespaceAware(boolean);
method public void setValidating(boolean);
- field public static final java.lang.String PROPERTY_NAME = "org.xmlpull.v1.XmlPullParserFactory";
- field protected java.lang.String classNamesLocation;
- field protected java.util.HashMap<java.lang.String, java.lang.Boolean> features;
+ field public static final String PROPERTY_NAME = "org.xmlpull.v1.XmlPullParserFactory";
+ field protected String classNamesLocation;
+ field protected java.util.HashMap<java.lang.String,java.lang.Boolean> features;
field protected java.util.ArrayList parserClasses;
field protected java.util.ArrayList serializerClasses;
}
- public abstract interface XmlSerializer {
- method public abstract org.xmlpull.v1.XmlSerializer attribute(java.lang.String, java.lang.String, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void cdsect(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void comment(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void docdecl(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void endDocument() throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract org.xmlpull.v1.XmlSerializer endTag(java.lang.String, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void entityRef(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void flush() throws java.io.IOException;
- method public abstract int getDepth();
- method public abstract boolean getFeature(java.lang.String);
- method public abstract java.lang.String getName();
- method public abstract java.lang.String getNamespace();
- method public abstract java.lang.String getPrefix(java.lang.String, boolean) throws java.lang.IllegalArgumentException;
- method public abstract java.lang.Object getProperty(java.lang.String);
- method public abstract void ignorableWhitespace(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void processingInstruction(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void setFeature(java.lang.String, boolean) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void setOutput(java.io.OutputStream, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void setOutput(java.io.Writer) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void setPrefix(java.lang.String, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void setProperty(java.lang.String, java.lang.Object) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract void startDocument(java.lang.String, java.lang.Boolean) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract org.xmlpull.v1.XmlSerializer startTag(java.lang.String, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract org.xmlpull.v1.XmlSerializer text(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public abstract org.xmlpull.v1.XmlSerializer text(char[], int, int) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ public interface XmlSerializer {
+ method public org.xmlpull.v1.XmlSerializer attribute(String, String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void cdsect(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void comment(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void docdecl(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void endDocument() throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public org.xmlpull.v1.XmlSerializer endTag(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void entityRef(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void flush() throws java.io.IOException;
+ method public int getDepth();
+ method public boolean getFeature(String);
+ method public String getName();
+ method public String getNamespace();
+ method public String getPrefix(String, boolean) throws java.lang.IllegalArgumentException;
+ method public Object getProperty(String);
+ method public void ignorableWhitespace(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void processingInstruction(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void setFeature(String, boolean) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void setOutput(java.io.OutputStream, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void setOutput(java.io.Writer) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void setPrefix(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void setProperty(String, Object) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public void startDocument(String, Boolean) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public org.xmlpull.v1.XmlSerializer startTag(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public org.xmlpull.v1.XmlSerializer text(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+ method public org.xmlpull.v1.XmlSerializer text(char[], int, int) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
}
}
@@ -77760,44 +77735,44 @@
method public org.xml.sax.DTDHandler getDTDHandler();
method public org.xml.sax.EntityResolver getEntityResolver();
method public org.xml.sax.ErrorHandler getErrorHandler();
- method public boolean getFeature(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public int getIndex(java.lang.String, java.lang.String);
- method public int getIndex(java.lang.String);
+ method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public int getIndex(String, String);
+ method public int getIndex(String);
method public int getLength();
method public int getLineNumber();
- method public java.lang.String getLocalName(int);
- method public java.lang.Object getProperty(java.lang.String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public java.lang.String getPublicId();
- method public java.lang.String getQName(int);
- method public java.lang.String getSystemId();
- method public java.lang.String getType(int);
- method public java.lang.String getType(java.lang.String, java.lang.String);
- method public java.lang.String getType(java.lang.String);
- method public java.lang.String getURI(int);
- method public java.lang.String getValue(int);
- method public java.lang.String getValue(java.lang.String, java.lang.String);
- method public java.lang.String getValue(java.lang.String);
+ method public String getLocalName(int);
+ method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public String getPublicId();
+ method public String getQName(int);
+ method public String getSystemId();
+ method public String getType(int);
+ method public String getType(String, String);
+ method public String getType(String);
+ method public String getURI(int);
+ method public String getValue(int);
+ method public String getValue(String, String);
+ method public String getValue(String);
method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
- method public void parse(java.lang.String) throws java.io.IOException, org.xml.sax.SAXException;
+ method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
method public void parseSubTree(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xml.sax.SAXException;
method public void setContentHandler(org.xml.sax.ContentHandler);
method public void setDTDHandler(org.xml.sax.DTDHandler);
method public void setEntityResolver(org.xml.sax.EntityResolver);
method public void setErrorHandler(org.xml.sax.ErrorHandler);
- method public void setFeature(java.lang.String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method public void setProperty(java.lang.String, java.lang.Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
- method protected void startElement(java.lang.String, java.lang.String, java.lang.String) throws org.xml.sax.SAXException;
- field protected static final java.lang.String APACHE_DYNAMIC_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/dynamic";
- field protected static final java.lang.String APACHE_SCHEMA_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/schema";
- field protected static final java.lang.String DECLARATION_HANDLER_PROPERTY = "http://xml.org/sax/properties/declaration-handler";
- field protected static final java.lang.String LEXICAL_HANDLER_PROPERTY = "http://xml.org/sax/properties/lexical-handler";
- field protected static final java.lang.String NAMESPACES_FEATURE = "http://xml.org/sax/features/namespaces";
- field protected static final java.lang.String NAMESPACE_PREFIXES_FEATURE = "http://xml.org/sax/features/namespace-prefixes";
- field protected static final java.lang.String VALIDATION_FEATURE = "http://xml.org/sax/features/validation";
+ method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+ method protected void startElement(String, String, String) throws org.xml.sax.SAXException;
+ field protected static final String APACHE_DYNAMIC_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/dynamic";
+ field protected static final String APACHE_SCHEMA_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/schema";
+ field protected static final String DECLARATION_HANDLER_PROPERTY = "http://xml.org/sax/properties/declaration-handler";
+ field protected static final String LEXICAL_HANDLER_PROPERTY = "http://xml.org/sax/properties/lexical-handler";
+ field protected static final String NAMESPACES_FEATURE = "http://xml.org/sax/features/namespaces";
+ field protected static final String NAMESPACE_PREFIXES_FEATURE = "http://xml.org/sax/features/namespace-prefixes";
+ field protected static final String VALIDATION_FEATURE = "http://xml.org/sax/features/validation";
field protected org.xml.sax.ContentHandler contentHandler;
field protected org.xml.sax.ErrorHandler errorHandler;
field protected org.xmlpull.v1.XmlPullParser pp;
- field protected java.lang.String systemId;
+ field protected String systemId;
}
}
diff --git a/api/removed.txt b/api/removed.txt
index f7106d2..2c567e0 100644
--- a/api/removed.txt
+++ b/api/removed.txt
@@ -1,31 +1,32 @@
+// Signature format: 2.0
package android.app {
public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
- method public deprecated boolean enterPictureInPictureMode(android.app.PictureInPictureArgs);
- method public deprecated void setPictureInPictureArgs(android.app.PictureInPictureArgs);
+ method @Deprecated public boolean enterPictureInPictureMode(@NonNull android.app.PictureInPictureArgs);
+ method @Deprecated public void setPictureInPictureArgs(@NonNull android.app.PictureInPictureArgs);
}
public class ActivityManager {
- method public static deprecated int getMaxNumPictureInPictureActions();
+ method @Deprecated public static int getMaxNumPictureInPictureActions();
}
public class KeyguardManager {
- method public deprecated void dismissKeyguard(android.app.Activity, android.app.KeyguardManager.KeyguardDismissCallback, android.os.Handler);
+ method @Deprecated public void dismissKeyguard(@NonNull android.app.Activity, @Nullable android.app.KeyguardManager.KeyguardDismissCallback, @Nullable android.os.Handler);
}
public class Notification implements android.os.Parcelable {
- method public deprecated java.lang.String getChannel();
- method public static java.lang.Class<? extends android.app.Notification.Style> getNotificationStyleClass(java.lang.String);
- method public deprecated long getTimeout();
- method public deprecated void setLatestEventInfo(android.content.Context, java.lang.CharSequence, java.lang.CharSequence, android.app.PendingIntent);
+ method @Deprecated public String getChannel();
+ method public static Class<? extends android.app.Notification.Style> getNotificationStyleClass(String);
+ method @Deprecated public long getTimeout();
+ method @Deprecated public void setLatestEventInfo(android.content.Context, CharSequence, CharSequence, android.app.PendingIntent);
}
public static class Notification.Builder {
- method public deprecated android.app.Notification.Builder setChannel(java.lang.String);
- method public deprecated android.app.Notification.Builder setTimeout(long);
+ method @Deprecated public android.app.Notification.Builder setChannel(String);
+ method @Deprecated public android.app.Notification.Builder setTimeout(long);
}
- public final deprecated class PictureInPictureArgs implements android.os.Parcelable {
+ @Deprecated public final class PictureInPictureArgs implements android.os.Parcelable {
method public static android.app.PictureInPictureArgs convert(android.app.PictureInPictureParams);
method public static android.app.PictureInPictureParams convert(android.app.PictureInPictureArgs);
method public int describeContents();
@@ -48,8 +49,8 @@
package android.app.admin {
public class DevicePolicyManager {
- method public deprecated android.os.UserHandle createAndInitializeUser(android.content.ComponentName, java.lang.String, java.lang.String, android.content.ComponentName, android.os.Bundle);
- method public deprecated android.os.UserHandle createUser(android.content.ComponentName, java.lang.String);
+ method @Deprecated @Nullable public android.os.UserHandle createAndInitializeUser(@NonNull android.content.ComponentName, String, String, @NonNull android.content.ComponentName, android.os.Bundle);
+ method @Deprecated @Nullable public android.os.UserHandle createUser(@NonNull android.content.ComponentName, String);
}
}
@@ -57,17 +58,17 @@
package android.app.job {
public class JobInfo implements android.os.Parcelable {
- method public deprecated long getEstimatedNetworkBytes();
+ method @Deprecated public long getEstimatedNetworkBytes();
}
public static final class JobInfo.Builder {
- method public deprecated android.app.job.JobInfo.Builder setEstimatedNetworkBytes(long);
- method public deprecated android.app.job.JobInfo.Builder setIsPrefetch(boolean);
+ method @Deprecated public android.app.job.JobInfo.Builder setEstimatedNetworkBytes(long);
+ method @Deprecated public android.app.job.JobInfo.Builder setIsPrefetch(boolean);
}
public final class JobWorkItem implements android.os.Parcelable {
- ctor public deprecated JobWorkItem(android.content.Intent, long);
- method public deprecated long getEstimatedNetworkBytes();
+ ctor @Deprecated public JobWorkItem(android.content.Intent, long);
+ method @Deprecated public long getEstimatedNetworkBytes();
}
}
@@ -75,29 +76,29 @@
package android.app.slice {
public final class Slice implements android.os.Parcelable {
- field public static final deprecated java.lang.String EXTRA_SLIDER_VALUE = "android.app.slice.extra.SLIDER_VALUE";
- field public static final deprecated java.lang.String SUBTYPE_SLIDER = "slider";
+ field @Deprecated public static final String EXTRA_SLIDER_VALUE = "android.app.slice.extra.SLIDER_VALUE";
+ field @Deprecated public static final String SUBTYPE_SLIDER = "slider";
}
public static class Slice.Builder {
- ctor public deprecated Slice.Builder(android.net.Uri);
- method public deprecated android.app.slice.Slice.Builder addTimestamp(long, java.lang.String, java.util.List<java.lang.String>);
- method public deprecated android.app.slice.Slice.Builder setSpec(android.app.slice.SliceSpec);
+ ctor @Deprecated public Slice.Builder(@NonNull android.net.Uri);
+ method @Deprecated public android.app.slice.Slice.Builder addTimestamp(long, @Nullable String, java.util.List<java.lang.String>);
+ method @Deprecated public android.app.slice.Slice.Builder setSpec(android.app.slice.SliceSpec);
}
public final class SliceItem implements android.os.Parcelable {
- method public deprecated long getTimestamp();
- field public static final deprecated java.lang.String FORMAT_TIMESTAMP = "long";
+ method @Deprecated public long getTimestamp();
+ field @Deprecated public static final String FORMAT_TIMESTAMP = "long";
}
public class SliceManager {
- method public deprecated android.app.slice.Slice bindSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
- method public deprecated android.app.slice.Slice bindSlice(android.content.Intent, java.util.List<android.app.slice.SliceSpec>);
- method public deprecated void pinSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
+ method @Deprecated @Nullable public android.app.slice.Slice bindSlice(@NonNull android.net.Uri, @NonNull java.util.List<android.app.slice.SliceSpec>);
+ method @Deprecated @Nullable public android.app.slice.Slice bindSlice(@NonNull android.content.Intent, @NonNull java.util.List<android.app.slice.SliceSpec>);
+ method @Deprecated public void pinSlice(@NonNull android.net.Uri, @NonNull java.util.List<android.app.slice.SliceSpec>);
}
public abstract class SliceProvider extends android.content.ContentProvider {
- method public deprecated android.app.slice.Slice onBindSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
+ method @Deprecated public android.app.slice.Slice onBindSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
}
}
@@ -105,17 +106,17 @@
package android.app.usage {
public final class StorageStats implements android.os.Parcelable {
- method public deprecated long getCodeBytes();
+ method @Deprecated public long getCodeBytes();
}
public class StorageStatsManager {
- method public deprecated long getFreeBytes(java.lang.String) throws java.io.IOException;
- method public deprecated long getTotalBytes(java.lang.String) throws java.io.IOException;
- method public deprecated boolean isQuotaSupported(java.lang.String);
- method public deprecated android.app.usage.ExternalStorageStats queryExternalStatsForUser(java.lang.String, android.os.UserHandle) throws java.io.IOException;
- method public deprecated android.app.usage.StorageStats queryStatsForPackage(java.lang.String, java.lang.String, android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
- method public deprecated android.app.usage.StorageStats queryStatsForUid(java.lang.String, int) throws java.io.IOException;
- method public deprecated android.app.usage.StorageStats queryStatsForUser(java.lang.String, android.os.UserHandle) throws java.io.IOException;
+ method @Deprecated public long getFreeBytes(String) throws java.io.IOException;
+ method @Deprecated public long getTotalBytes(String) throws java.io.IOException;
+ method @Deprecated public boolean isQuotaSupported(String);
+ method @Deprecated public android.app.usage.ExternalStorageStats queryExternalStatsForUser(String, android.os.UserHandle) throws java.io.IOException;
+ method @Deprecated public android.app.usage.StorageStats queryStatsForPackage(String, String, android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.app.usage.StorageStats queryStatsForUid(String, int) throws java.io.IOException;
+ method @Deprecated public android.app.usage.StorageStats queryStatsForUser(String, android.os.UserHandle) throws java.io.IOException;
}
}
@@ -123,21 +124,21 @@
package android.content {
public class ClipData implements android.os.Parcelable {
- method public deprecated void addItem(android.content.ClipData.Item, android.content.ContentResolver);
+ method @Deprecated public void addItem(android.content.ClipData.Item, android.content.ContentResolver);
}
public abstract class Context {
method public abstract android.content.SharedPreferences getSharedPreferences(java.io.File, int);
- method public abstract java.io.File getSharedPreferencesPath(java.lang.String);
+ method public abstract java.io.File getSharedPreferencesPath(String);
}
public class ContextWrapper extends android.content.Context {
method public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
- method public java.io.File getSharedPreferencesPath(java.lang.String);
+ method public java.io.File getSharedPreferencesPath(String);
}
public class Intent implements java.lang.Cloneable android.os.Parcelable {
- field public static final deprecated java.lang.String EXTRA_QUICK_VIEW_ADVANCED = "android.intent.extra.QUICK_VIEW_ADVANCED";
+ field @Deprecated public static final String EXTRA_QUICK_VIEW_ADVANCED = "android.intent.extra.QUICK_VIEW_ADVANCED";
}
}
@@ -145,11 +146,11 @@
package android.content.pm {
public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
- field public deprecated java.lang.String volumeUuid;
+ field @Deprecated public String volumeUuid;
}
public class ComponentInfo extends android.content.pm.PackageItemInfo {
- field public deprecated boolean encryptionAware;
+ field @Deprecated public boolean encryptionAware;
}
public class PackageInfo implements android.os.Parcelable {
@@ -157,11 +158,11 @@
}
public abstract class PackageManager {
- method public abstract boolean setInstantAppCookie(byte[]);
+ method public abstract boolean setInstantAppCookie(@Nullable byte[]);
}
public class ResolveInfo implements android.os.Parcelable {
- field public deprecated boolean instantAppAvailable;
+ field @Deprecated public boolean instantAppAvailable;
}
public final class SharedLibraryInfo implements android.os.Parcelable {
@@ -175,76 +176,74 @@
package android.database {
public abstract class AbstractCursor implements android.database.CrossProcessCursor {
- field protected java.lang.Long mCurrentRowID;
+ field protected Long mCurrentRowID;
field protected int mRowIdColumnIndex;
- field protected java.util.HashMap<java.lang.Long, java.util.Map<java.lang.String, java.lang.Object>> mUpdatedRows;
+ field protected java.util.HashMap<java.lang.Long,java.util.Map<java.lang.String,java.lang.Object>> mUpdatedRows;
}
}
package android.graphics {
- public deprecated class AvoidXfermode extends android.graphics.Xfermode {
+ @Deprecated public class AvoidXfermode extends android.graphics.Xfermode {
ctor public AvoidXfermode(int, int, android.graphics.AvoidXfermode.Mode);
}
- public static final class AvoidXfermode.Mode extends java.lang.Enum {
- method public static android.graphics.AvoidXfermode.Mode valueOf(java.lang.String);
- method public static final android.graphics.AvoidXfermode.Mode[] values();
+ public enum AvoidXfermode.Mode {
enum_constant public static final android.graphics.AvoidXfermode.Mode AVOID;
enum_constant public static final android.graphics.AvoidXfermode.Mode TARGET;
}
public class Canvas {
- method public deprecated boolean clipRegion(android.graphics.Region, android.graphics.Region.Op);
- method public deprecated boolean clipRegion(android.graphics.Region);
- method public deprecated int save(int);
- field public static final deprecated int CLIP_SAVE_FLAG = 2; // 0x2
- field public static final deprecated int CLIP_TO_LAYER_SAVE_FLAG = 16; // 0x10
- field public static final deprecated int FULL_COLOR_LAYER_SAVE_FLAG = 8; // 0x8
- field public static final deprecated int HAS_ALPHA_LAYER_SAVE_FLAG = 4; // 0x4
- field public static final deprecated int MATRIX_SAVE_FLAG = 1; // 0x1
+ method @Deprecated public boolean clipRegion(@NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
+ method @Deprecated public boolean clipRegion(@NonNull android.graphics.Region);
+ method @Deprecated public int save(int);
+ field @Deprecated public static final int CLIP_SAVE_FLAG = 2; // 0x2
+ field @Deprecated public static final int CLIP_TO_LAYER_SAVE_FLAG = 16; // 0x10
+ field @Deprecated public static final int FULL_COLOR_LAYER_SAVE_FLAG = 8; // 0x8
+ field @Deprecated public static final int HAS_ALPHA_LAYER_SAVE_FLAG = 4; // 0x4
+ field @Deprecated public static final int MATRIX_SAVE_FLAG = 1; // 0x1
}
public final class ImageDecoder implements java.lang.AutoCloseable {
- method public deprecated boolean getAsAlphaMask();
- method public deprecated boolean getConserveMemory();
- method public deprecated boolean getDecodeAsAlphaMask();
- method public deprecated boolean getMutable();
- method public deprecated boolean getRequireUnpremultiplied();
- method public deprecated android.graphics.ImageDecoder setAsAlphaMask(boolean);
- method public deprecated void setConserveMemory(boolean);
- method public deprecated android.graphics.ImageDecoder setDecodeAsAlphaMask(boolean);
- method public deprecated android.graphics.ImageDecoder setMutable(boolean);
- method public deprecated android.graphics.ImageDecoder setRequireUnpremultiplied(boolean);
- method public deprecated android.graphics.ImageDecoder setResize(int, int);
- method public deprecated android.graphics.ImageDecoder setResize(int);
- field public static final deprecated int ERROR_SOURCE_ERROR = 3; // 0x3
- field public static final deprecated int ERROR_SOURCE_EXCEPTION = 1; // 0x1
- field public static final deprecated int ERROR_SOURCE_INCOMPLETE = 2; // 0x2
+ method @Deprecated public boolean getAsAlphaMask();
+ method @Deprecated public boolean getConserveMemory();
+ method @Deprecated public boolean getDecodeAsAlphaMask();
+ method @Deprecated public boolean getMutable();
+ method @Deprecated public boolean getRequireUnpremultiplied();
+ method @Deprecated public android.graphics.ImageDecoder setAsAlphaMask(boolean);
+ method @Deprecated public void setConserveMemory(boolean);
+ method @Deprecated public android.graphics.ImageDecoder setDecodeAsAlphaMask(boolean);
+ method @Deprecated public android.graphics.ImageDecoder setMutable(boolean);
+ method @Deprecated public android.graphics.ImageDecoder setRequireUnpremultiplied(boolean);
+ method @Deprecated public android.graphics.ImageDecoder setResize(int, int);
+ method @Deprecated public android.graphics.ImageDecoder setResize(int);
+ field @Deprecated public static final int ERROR_SOURCE_ERROR = 3; // 0x3
+ field @Deprecated public static final int ERROR_SOURCE_EXCEPTION = 1; // 0x1
+ field @Deprecated public static final int ERROR_SOURCE_INCOMPLETE = 2; // 0x2
}
- public static deprecated class ImageDecoder.IncompleteException extends java.io.IOException {
+ @Deprecated public static class ImageDecoder.IncompleteException extends java.io.IOException {
ctor public ImageDecoder.IncompleteException();
}
- public deprecated class LayerRasterizer extends android.graphics.Rasterizer {
+ @Deprecated public class LayerRasterizer extends android.graphics.Rasterizer {
ctor public LayerRasterizer();
method public void addLayer(android.graphics.Paint, float, float);
method public void addLayer(android.graphics.Paint);
}
public class Paint {
- method public deprecated android.graphics.Rasterizer getRasterizer();
- method public deprecated android.graphics.Rasterizer setRasterizer(android.graphics.Rasterizer);
+ method @Deprecated public android.graphics.Rasterizer getRasterizer();
+ method @Deprecated public android.graphics.Rasterizer setRasterizer(android.graphics.Rasterizer);
}
public class Picture {
- method public static deprecated android.graphics.Picture createFromStream(java.io.InputStream);
- method public deprecated void writeToStream(java.io.OutputStream);
+ method @Deprecated public static android.graphics.Picture createFromStream(java.io.InputStream);
+ method @Deprecated public void writeToStream(java.io.OutputStream);
}
- public deprecated class PixelXorXfermode extends android.graphics.Xfermode {
+ @Deprecated public class PixelXorXfermode extends android.graphics.Xfermode {
ctor public PixelXorXfermode(int);
}
@@ -257,9 +256,9 @@
package android.graphics.drawable {
public class AnimatedImageDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
- method public deprecated int getLoopCount(int);
- method public deprecated void setLoopCount(int);
- field public static final deprecated int LOOP_INFINITE = -1; // 0xffffffff
+ method @Deprecated public int getLoopCount(int);
+ method @Deprecated public void setLoopCount(int);
+ field @Deprecated public static final int LOOP_INFINITE = -1; // 0xffffffff
}
}
@@ -267,16 +266,16 @@
package android.hardware {
public final class HardwareBuffer implements java.lang.AutoCloseable android.os.Parcelable {
- method public deprecated void destroy();
- method public deprecated boolean isDestroyed();
+ method @Deprecated public void destroy();
+ method @Deprecated public boolean isDestroyed();
}
public final class SensorDirectChannel implements java.nio.channels.Channel {
- method public deprecated boolean isValid();
+ method @Deprecated public boolean isValid();
}
public abstract class SensorManager {
- method public deprecated int configureDirectChannel(android.hardware.SensorDirectChannel, android.hardware.Sensor, int);
+ method @Deprecated public int configureDirectChannel(android.hardware.SensorDirectChannel, android.hardware.Sensor, int);
}
}
@@ -284,9 +283,9 @@
package android.location {
public class Location implements android.os.Parcelable {
- method public deprecated void removeBearingAccuracy();
- method public deprecated void removeSpeedAccuracy();
- method public deprecated void removeVerticalAccuracy();
+ method @Deprecated public void removeBearingAccuracy();
+ method @Deprecated public void removeSpeedAccuracy();
+ method @Deprecated public void removeVerticalAccuracy();
}
}
@@ -310,28 +309,28 @@
package android.net {
public class ConnectivityManager {
- method public deprecated boolean requestRouteToHost(int, int);
- method public deprecated int startUsingNetworkFeature(int, java.lang.String);
- method public deprecated int stopUsingNetworkFeature(int, java.lang.String);
+ method @Deprecated public boolean requestRouteToHost(int, int);
+ method @Deprecated public int startUsingNetworkFeature(int, String);
+ method @Deprecated public int stopUsingNetworkFeature(int, String);
}
- public deprecated class NetworkBadging {
- method public static android.graphics.drawable.Drawable getWifiIcon(int, int, android.content.res.Resources.Theme);
+ @Deprecated public class NetworkBadging {
+ method @NonNull public static android.graphics.drawable.Drawable getWifiIcon(@IntRange(from=0, to=4) int, int, @Nullable android.content.res.Resources.Theme);
field public static final int BADGING_4K = 30; // 0x1e
field public static final int BADGING_HD = 20; // 0x14
field public static final int BADGING_NONE = 0; // 0x0
field public static final int BADGING_SD = 10; // 0xa
}
- public static abstract class NetworkBadging.Badging implements java.lang.annotation.Annotation {
+ @IntDef({0x0, 0xa, 0x14, 0x1e}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NetworkBadging.Badging {
}
public class SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory {
- method public static deprecated org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int, android.net.SSLSessionCache);
+ method @Deprecated public static org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int, android.net.SSLSessionCache);
}
public class TrafficStats {
- method public static deprecated void setThreadStatsUidSelf();
+ method @Deprecated public static void setThreadStatsUidSelf();
}
}
@@ -344,7 +343,7 @@
public final class PowerManager {
method public void goToSleep(long);
- method public deprecated void userActivity(long, boolean);
+ method @Deprecated public void userActivity(long, boolean);
method public void wakeUp(long);
}
@@ -353,27 +352,27 @@
}
public static final class StrictMode.ThreadPolicy.Builder {
- method public android.os.StrictMode.ThreadPolicy.Builder penaltyListener(android.os.StrictMode.OnThreadViolationListener, java.util.concurrent.Executor);
+ method public android.os.StrictMode.ThreadPolicy.Builder penaltyListener(@NonNull android.os.StrictMode.OnThreadViolationListener, @NonNull java.util.concurrent.Executor);
}
public static final class StrictMode.VmPolicy.Builder {
- method public android.os.StrictMode.VmPolicy.Builder penaltyListener(android.os.StrictMode.OnVmViolationListener, java.util.concurrent.Executor);
+ method public android.os.StrictMode.VmPolicy.Builder penaltyListener(@NonNull android.os.StrictMode.OnVmViolationListener, @NonNull java.util.concurrent.Executor);
}
public final class SystemClock {
- method public static java.time.Clock elapsedRealtimeClock();
- method public static java.time.Clock uptimeClock();
- method public static deprecated java.time.Clock uptimeMillisClock();
+ method @NonNull public static java.time.Clock elapsedRealtimeClock();
+ method @NonNull public static java.time.Clock uptimeClock();
+ method @Deprecated @NonNull public static java.time.Clock uptimeMillisClock();
}
public class TestLooperManager {
- method public deprecated android.os.MessageQueue getQueue();
+ method @Deprecated public android.os.MessageQueue getQueue();
}
public class UserManager {
method public android.graphics.drawable.Drawable getBadgedDrawableForUser(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
method public android.graphics.drawable.Drawable getBadgedIconForUser(android.graphics.drawable.Drawable, android.os.UserHandle);
- method public java.lang.CharSequence getBadgedLabelForUser(java.lang.CharSequence, android.os.UserHandle);
+ method public CharSequence getBadgedLabelForUser(CharSequence, android.os.UserHandle);
}
}
@@ -381,8 +380,8 @@
package android.os.storage {
public class StorageManager {
- method public android.os.storage.StorageVolume getPrimaryVolume();
- method public android.os.storage.StorageVolume[] getVolumeList();
+ method @NonNull public android.os.storage.StorageVolume getPrimaryVolume();
+ method @NonNull public android.os.storage.StorageVolume[] getVolumeList();
}
}
@@ -390,20 +389,20 @@
package android.provider {
public class Browser {
- method public static final void addSearchUrl(android.content.ContentResolver, java.lang.String);
- method public static final boolean canClearHistory(android.content.ContentResolver);
- method public static final void clearHistory(android.content.ContentResolver);
- method public static final void clearSearches(android.content.ContentResolver);
- method public static final void deleteFromHistory(android.content.ContentResolver, java.lang.String);
- method public static final void deleteHistoryTimeFrame(android.content.ContentResolver, long, long);
- method public static final android.database.Cursor getAllBookmarks(android.content.ContentResolver) throws java.lang.IllegalStateException;
- method public static final android.database.Cursor getAllVisitedUrls(android.content.ContentResolver) throws java.lang.IllegalStateException;
- method public static final void requestAllIcons(android.content.ContentResolver, java.lang.String, android.webkit.WebIconDatabase.IconListener);
- method public static final void saveBookmark(android.content.Context, java.lang.String, java.lang.String);
- method public static final void truncateHistory(android.content.ContentResolver);
- method public static final void updateVisitedHistory(android.content.ContentResolver, java.lang.String, boolean);
- field public static final android.net.Uri BOOKMARKS_URI;
- field public static final java.lang.String[] HISTORY_PROJECTION;
+ method @RequiresPermission(allOf={"com.android.browser.permission.READ_HISTORY_BOOKMARKS", "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"}, apis="..22") public static final void addSearchUrl(android.content.ContentResolver, String);
+ method @RequiresPermission(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") public static final boolean canClearHistory(android.content.ContentResolver);
+ method @RequiresPermission(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final void clearHistory(android.content.ContentResolver);
+ method @RequiresPermission(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final void clearSearches(android.content.ContentResolver);
+ method @RequiresPermission(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final void deleteFromHistory(android.content.ContentResolver, String);
+ method @RequiresPermission(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final void deleteHistoryTimeFrame(android.content.ContentResolver, long, long);
+ method @RequiresPermission(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") public static final android.database.Cursor getAllBookmarks(android.content.ContentResolver) throws java.lang.IllegalStateException;
+ method @RequiresPermission(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") public static final android.database.Cursor getAllVisitedUrls(android.content.ContentResolver) throws java.lang.IllegalStateException;
+ method @RequiresPermission(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") public static final void requestAllIcons(android.content.ContentResolver, String, android.webkit.WebIconDatabase.IconListener);
+ method public static final void saveBookmark(android.content.Context, String, String);
+ method @RequiresPermission(allOf={"com.android.browser.permission.READ_HISTORY_BOOKMARKS", "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"}, apis="..22") public static final void truncateHistory(android.content.ContentResolver);
+ method @RequiresPermission(allOf={"com.android.browser.permission.READ_HISTORY_BOOKMARKS", "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"}, apis="..22") public static final void updateVisitedHistory(android.content.ContentResolver, String, boolean);
+ field @RequiresPermission.Read(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") @RequiresPermission.Write(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final android.net.Uri BOOKMARKS_URI;
+ field public static final String[] HISTORY_PROJECTION;
field public static final int HISTORY_PROJECTION_BOOKMARK_INDEX = 4; // 0x4
field public static final int HISTORY_PROJECTION_DATE_INDEX = 3; // 0x3
field public static final int HISTORY_PROJECTION_FAVICON_INDEX = 6; // 0x6
@@ -411,121 +410,121 @@
field public static final int HISTORY_PROJECTION_TITLE_INDEX = 5; // 0x5
field public static final int HISTORY_PROJECTION_URL_INDEX = 1; // 0x1
field public static final int HISTORY_PROJECTION_VISITS_INDEX = 2; // 0x2
- field public static final java.lang.String[] SEARCHES_PROJECTION;
+ field public static final String[] SEARCHES_PROJECTION;
field public static final int SEARCHES_PROJECTION_DATE_INDEX = 2; // 0x2
field public static final int SEARCHES_PROJECTION_SEARCH_INDEX = 1; // 0x1
- field public static final android.net.Uri SEARCHES_URI;
- field public static final java.lang.String[] TRUNCATE_HISTORY_PROJECTION;
+ field @RequiresPermission.Read(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") @RequiresPermission.Write(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final android.net.Uri SEARCHES_URI;
+ field public static final String[] TRUNCATE_HISTORY_PROJECTION;
field public static final int TRUNCATE_HISTORY_PROJECTION_ID_INDEX = 0; // 0x0
field public static final int TRUNCATE_N_OLDEST = 5; // 0x5
}
public static class Browser.BookmarkColumns implements android.provider.BaseColumns {
ctor public Browser.BookmarkColumns();
- field public static final java.lang.String BOOKMARK = "bookmark";
- field public static final java.lang.String CREATED = "created";
- field public static final java.lang.String DATE = "date";
- field public static final java.lang.String FAVICON = "favicon";
- field public static final java.lang.String TITLE = "title";
- field public static final java.lang.String URL = "url";
- field public static final java.lang.String VISITS = "visits";
- field public static final java.lang.String _COUNT = "_count";
- field public static final java.lang.String _ID = "_id";
+ field public static final String BOOKMARK = "bookmark";
+ field public static final String CREATED = "created";
+ field public static final String DATE = "date";
+ field public static final String FAVICON = "favicon";
+ field public static final String TITLE = "title";
+ field public static final String URL = "url";
+ field public static final String VISITS = "visits";
+ field public static final String _COUNT = "_count";
+ field public static final String _ID = "_id";
}
public static class Browser.SearchColumns implements android.provider.BaseColumns {
ctor public Browser.SearchColumns();
- field public static final java.lang.String DATE = "date";
- field public static final java.lang.String SEARCH = "search";
- field public static final deprecated java.lang.String URL = "url";
- field public static final java.lang.String _COUNT = "_count";
- field public static final java.lang.String _ID = "_id";
+ field public static final String DATE = "date";
+ field public static final String SEARCH = "search";
+ field @Deprecated public static final String URL = "url";
+ field public static final String _COUNT = "_count";
+ field public static final String _ID = "_id";
}
- public static final deprecated class ContactsContract.Contacts.StreamItems implements android.provider.ContactsContract.StreamItemsColumns {
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "stream_items";
+ @Deprecated public static final class ContactsContract.Contacts.StreamItems implements android.provider.ContactsContract.StreamItemsColumns {
+ field @Deprecated public static final String CONTENT_DIRECTORY = "stream_items";
}
- public static final deprecated class ContactsContract.RawContacts.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "stream_items";
- field public static final java.lang.String _COUNT = "_count";
- field public static final java.lang.String _ID = "_id";
+ @Deprecated public static final class ContactsContract.RawContacts.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
+ field @Deprecated public static final String CONTENT_DIRECTORY = "stream_items";
+ field public static final String _COUNT = "_count";
+ field public static final String _ID = "_id";
}
- public static final deprecated class ContactsContract.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
- field public static final deprecated java.lang.String PHOTO = "photo";
- field public static final java.lang.String _COUNT = "_count";
- field public static final java.lang.String _ID = "_id";
+ @Deprecated public static final class ContactsContract.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
+ field @Deprecated public static final String PHOTO = "photo";
+ field public static final String _COUNT = "_count";
+ field public static final String _ID = "_id";
}
- protected static abstract deprecated interface ContactsContract.StreamItemPhotosColumns {
- field public static final deprecated java.lang.String PHOTO_FILE_ID = "photo_file_id";
- field public static final deprecated java.lang.String PHOTO_URI = "photo_uri";
- field public static final deprecated java.lang.String SORT_INDEX = "sort_index";
- field public static final deprecated java.lang.String STREAM_ITEM_ID = "stream_item_id";
- field public static final deprecated java.lang.String SYNC1 = "stream_item_photo_sync1";
- field public static final deprecated java.lang.String SYNC2 = "stream_item_photo_sync2";
- field public static final deprecated java.lang.String SYNC3 = "stream_item_photo_sync3";
- field public static final deprecated java.lang.String SYNC4 = "stream_item_photo_sync4";
+ @Deprecated protected static interface ContactsContract.StreamItemPhotosColumns {
+ field @Deprecated public static final String PHOTO_FILE_ID = "photo_file_id";
+ field @Deprecated public static final String PHOTO_URI = "photo_uri";
+ field @Deprecated public static final String SORT_INDEX = "sort_index";
+ field @Deprecated public static final String STREAM_ITEM_ID = "stream_item_id";
+ field @Deprecated public static final String SYNC1 = "stream_item_photo_sync1";
+ field @Deprecated public static final String SYNC2 = "stream_item_photo_sync2";
+ field @Deprecated public static final String SYNC3 = "stream_item_photo_sync3";
+ field @Deprecated public static final String SYNC4 = "stream_item_photo_sync4";
}
- public static final deprecated class ContactsContract.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
- field public static final deprecated java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item";
- field public static final deprecated android.net.Uri CONTENT_LIMIT_URI;
- field public static final deprecated android.net.Uri CONTENT_PHOTO_URI;
- field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item";
- field public static final deprecated android.net.Uri CONTENT_URI;
- field public static final deprecated java.lang.String MAX_ITEMS = "max_items";
- field public static final java.lang.String _COUNT = "_count";
- field public static final java.lang.String _ID = "_id";
+ @Deprecated public static final class ContactsContract.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
+ field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item";
+ field @Deprecated public static final android.net.Uri CONTENT_LIMIT_URI;
+ field @Deprecated public static final android.net.Uri CONTENT_PHOTO_URI;
+ field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item";
+ field @Deprecated public static final android.net.Uri CONTENT_URI;
+ field @Deprecated public static final String MAX_ITEMS = "max_items";
+ field public static final String _COUNT = "_count";
+ field public static final String _ID = "_id";
}
- public static final deprecated class ContactsContract.StreamItems.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
- field public static final deprecated java.lang.String CONTENT_DIRECTORY = "photo";
- field public static final deprecated java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item_photo";
- field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item_photo";
- field public static final java.lang.String _COUNT = "_count";
- field public static final java.lang.String _ID = "_id";
+ @Deprecated public static final class ContactsContract.StreamItems.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
+ field @Deprecated public static final String CONTENT_DIRECTORY = "photo";
+ field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item_photo";
+ field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item_photo";
+ field public static final String _COUNT = "_count";
+ field public static final String _ID = "_id";
}
- protected static abstract deprecated interface ContactsContract.StreamItemsColumns {
- field public static final deprecated java.lang.String ACCOUNT_NAME = "account_name";
- field public static final deprecated java.lang.String ACCOUNT_TYPE = "account_type";
- field public static final deprecated java.lang.String COMMENTS = "comments";
- field public static final deprecated java.lang.String CONTACT_ID = "contact_id";
- field public static final deprecated java.lang.String CONTACT_LOOKUP_KEY = "contact_lookup";
- field public static final deprecated java.lang.String DATA_SET = "data_set";
- field public static final deprecated java.lang.String RAW_CONTACT_ID = "raw_contact_id";
- field public static final deprecated java.lang.String RAW_CONTACT_SOURCE_ID = "raw_contact_source_id";
- field public static final deprecated java.lang.String RES_ICON = "icon";
- field public static final deprecated java.lang.String RES_LABEL = "label";
- field public static final deprecated java.lang.String RES_PACKAGE = "res_package";
- field public static final deprecated java.lang.String SYNC1 = "stream_item_sync1";
- field public static final deprecated java.lang.String SYNC2 = "stream_item_sync2";
- field public static final deprecated java.lang.String SYNC3 = "stream_item_sync3";
- field public static final deprecated java.lang.String SYNC4 = "stream_item_sync4";
- field public static final deprecated java.lang.String TEXT = "text";
- field public static final deprecated java.lang.String TIMESTAMP = "timestamp";
+ @Deprecated protected static interface ContactsContract.StreamItemsColumns {
+ field @Deprecated public static final String ACCOUNT_NAME = "account_name";
+ field @Deprecated public static final String ACCOUNT_TYPE = "account_type";
+ field @Deprecated public static final String COMMENTS = "comments";
+ field @Deprecated public static final String CONTACT_ID = "contact_id";
+ field @Deprecated public static final String CONTACT_LOOKUP_KEY = "contact_lookup";
+ field @Deprecated public static final String DATA_SET = "data_set";
+ field @Deprecated public static final String RAW_CONTACT_ID = "raw_contact_id";
+ field @Deprecated public static final String RAW_CONTACT_SOURCE_ID = "raw_contact_source_id";
+ field @Deprecated public static final String RES_ICON = "icon";
+ field @Deprecated public static final String RES_LABEL = "label";
+ field @Deprecated public static final String RES_PACKAGE = "res_package";
+ field @Deprecated public static final String SYNC1 = "stream_item_sync1";
+ field @Deprecated public static final String SYNC2 = "stream_item_sync2";
+ field @Deprecated public static final String SYNC3 = "stream_item_sync3";
+ field @Deprecated public static final String SYNC4 = "stream_item_sync4";
+ field @Deprecated public static final String TEXT = "text";
+ field @Deprecated public static final String TIMESTAMP = "timestamp";
}
public static final class Settings.Global extends android.provider.Settings.NameValueTable {
- field public static final deprecated java.lang.String CONTACT_METADATA_SYNC = "contact_metadata_sync";
+ field @Deprecated public static final String CONTACT_METADATA_SYNC = "contact_metadata_sync";
}
public static final class Settings.System extends android.provider.Settings.NameValueTable {
- field public static final java.lang.String APPEND_FOR_LAST_AUDIBLE = "_last_audible";
- field public static final java.lang.String VOLUME_ALARM = "volume_alarm";
- field public static final java.lang.String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco";
- field public static final java.lang.String VOLUME_MUSIC = "volume_music";
- field public static final java.lang.String VOLUME_NOTIFICATION = "volume_notification";
- field public static final java.lang.String VOLUME_RING = "volume_ring";
- field public static final java.lang.String[] VOLUME_SETTINGS;
- field public static final java.lang.String VOLUME_SYSTEM = "volume_system";
- field public static final java.lang.String VOLUME_VOICE = "volume_voice";
+ field public static final String APPEND_FOR_LAST_AUDIBLE = "_last_audible";
+ field public static final String VOLUME_ALARM = "volume_alarm";
+ field public static final String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco";
+ field public static final String VOLUME_MUSIC = "volume_music";
+ field public static final String VOLUME_NOTIFICATION = "volume_notification";
+ field public static final String VOLUME_RING = "volume_ring";
+ field public static final String[] VOLUME_SETTINGS;
+ field public static final String VOLUME_SYSTEM = "volume_system";
+ field public static final String VOLUME_VOICE = "volume_voice";
}
public static final class Telephony.Sms.Intents {
- field public static final java.lang.String SMS_EMERGENCY_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED";
+ field public static final String SMS_EMERGENCY_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED";
}
}
@@ -533,7 +532,7 @@
package android.speech.tts {
public abstract class UtteranceProgressListener {
- method public deprecated void onUtteranceRangeStart(java.lang.String, int, int);
+ method @Deprecated public void onUtteranceRangeStart(String, int, int);
}
}
@@ -541,12 +540,12 @@
package android.telephony {
public class NetworkScan {
- method public deprecated void stop() throws android.os.RemoteException;
+ method @Deprecated public void stop() throws android.os.RemoteException;
}
public class TelephonyManager {
- method public deprecated java.util.List<android.telephony.NeighboringCellInfo> getNeighboringCellInfo();
- method public deprecated android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, android.telephony.TelephonyScanManager.NetworkScanCallback);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public java.util.List<android.telephony.NeighboringCellInfo> getNeighboringCellInfo();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, android.telephony.TelephonyScanManager.NetworkScanCallback);
}
}
@@ -554,19 +553,19 @@
package android.text.format {
public class DateFormat {
- field public static final deprecated char AM_PM = 97; // 0x0061 'a'
- field public static final deprecated char CAPITAL_AM_PM = 65; // 0x0041 'A'
- field public static final deprecated char DATE = 100; // 0x0064 'd'
- field public static final deprecated char DAY = 69; // 0x0045 'E'
- field public static final deprecated char HOUR = 104; // 0x0068 'h'
- field public static final deprecated char HOUR_OF_DAY = 107; // 0x006b 'k'
- field public static final deprecated char MINUTE = 109; // 0x006d 'm'
- field public static final deprecated char MONTH = 77; // 0x004d 'M'
- field public static final deprecated char QUOTE = 39; // 0x0027 '\''
- field public static final deprecated char SECONDS = 115; // 0x0073 's'
- field public static final deprecated char STANDALONE_MONTH = 76; // 0x004c 'L'
- field public static final deprecated char TIME_ZONE = 122; // 0x007a 'z'
- field public static final deprecated char YEAR = 121; // 0x0079 'y'
+ field @Deprecated public static final char AM_PM = 97; // 0x0061 'a'
+ field @Deprecated public static final char CAPITAL_AM_PM = 65; // 0x0041 'A'
+ field @Deprecated public static final char DATE = 100; // 0x0064 'd'
+ field @Deprecated public static final char DAY = 69; // 0x0045 'E'
+ field @Deprecated public static final char HOUR = 104; // 0x0068 'h'
+ field @Deprecated public static final char HOUR_OF_DAY = 107; // 0x006b 'k'
+ field @Deprecated public static final char MINUTE = 109; // 0x006d 'm'
+ field @Deprecated public static final char MONTH = 77; // 0x004d 'M'
+ field @Deprecated public static final char QUOTE = 39; // 0x0027 '\''
+ field @Deprecated public static final char SECONDS = 115; // 0x0073 's'
+ field @Deprecated public static final char STANDALONE_MONTH = 76; // 0x004c 'L'
+ field @Deprecated public static final char TIME_ZONE = 122; // 0x007a 'z'
+ field @Deprecated public static final char YEAR = 121; // 0x0079 'y'
}
}
@@ -583,7 +582,7 @@
package android.util {
- public deprecated class FloatMath {
+ @Deprecated public class FloatMath {
method public static float ceil(float);
method public static float cos(float);
method public static float exp(float);
@@ -598,7 +597,7 @@
package android.view {
- public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
+ @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
method protected void initializeFadingEdge(android.content.res.TypedArray);
method protected void initializeScrollbars(android.content.res.TypedArray);
}
@@ -623,12 +622,12 @@
package android.widget {
- public class ListView extends android.widget.AbsListView {
- method protected <T extends android.view.View> T findViewTraversal(int);
- method protected <T extends android.view.View> T findViewWithTagTraversal(java.lang.Object);
+ @android.widget.RemoteViews.RemoteView public class ListView extends android.widget.AbsListView {
+ method protected <T extends android.view.View> T findViewTraversal(@IdRes int);
+ method protected <T extends android.view.View> T findViewWithTagTraversal(Object);
}
- public class TextView extends android.view.View implements android.view.ViewTreeObserver.OnPreDrawListener {
+ @android.widget.RemoteViews.RemoteView public class TextView extends android.view.View implements android.view.ViewTreeObserver.OnPreDrawListener {
method public static int getTextColor(android.content.Context, android.content.res.TypedArray, int);
method public static android.content.res.ColorStateList getTextColors(android.content.Context, android.content.res.TypedArray);
}
diff --git a/api/system-current.txt b/api/system-current.txt
index e5b65b1..ce0ef38 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -1,200 +1,205 @@
+// Signature format: 2.0
package android {
public static final class Manifest.permission {
- field public static final java.lang.String ACCESS_AMBIENT_LIGHT_STATS = "android.permission.ACCESS_AMBIENT_LIGHT_STATS";
- field public static final java.lang.String ACCESS_BROADCAST_RADIO = "android.permission.ACCESS_BROADCAST_RADIO";
- field public static final java.lang.String ACCESS_CACHE_FILESYSTEM = "android.permission.ACCESS_CACHE_FILESYSTEM";
- field public static final java.lang.String ACCESS_DRM_CERTIFICATES = "android.permission.ACCESS_DRM_CERTIFICATES";
- field public static final deprecated java.lang.String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO";
- field public static final java.lang.String ACCESS_INSTANT_APPS = "android.permission.ACCESS_INSTANT_APPS";
- field public static final java.lang.String ACCESS_MOCK_LOCATION = "android.permission.ACCESS_MOCK_LOCATION";
- field public static final java.lang.String ACCESS_MTP = "android.permission.ACCESS_MTP";
- field public static final java.lang.String ACCESS_NETWORK_CONDITIONS = "android.permission.ACCESS_NETWORK_CONDITIONS";
- field public static final java.lang.String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
- field public static final java.lang.String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
- field public static final java.lang.String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
- field public static final java.lang.String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
- field public static final java.lang.String ALLOCATE_AGGRESSIVE = "android.permission.ALLOCATE_AGGRESSIVE";
- field public static final java.lang.String ALLOW_ANY_CODEC_FOR_PLAYBACK = "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK";
- field public static final java.lang.String AMBIENT_WALLPAPER = "android.permission.AMBIENT_WALLPAPER";
- field public static final java.lang.String BACKUP = "android.permission.BACKUP";
- field public static final java.lang.String BIND_AUGMENTED_AUTOFILL_SERVICE = "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE";
- field public static final deprecated java.lang.String BIND_CONNECTION_SERVICE = "android.permission.BIND_CONNECTION_SERVICE";
- field public static final java.lang.String BIND_CONTENT_CAPTURE_SERVICE = "android.permission.BIND_CONTENT_CAPTURE_SERVICE";
- field public static final java.lang.String BIND_DIRECTORY_SEARCH = "android.permission.BIND_DIRECTORY_SEARCH";
- field public static final java.lang.String BIND_EUICC_SERVICE = "android.permission.BIND_EUICC_SERVICE";
- field public static final java.lang.String BIND_IMS_SERVICE = "android.permission.BIND_IMS_SERVICE";
- field public static final java.lang.String BIND_KEYGUARD_APPWIDGET = "android.permission.BIND_KEYGUARD_APPWIDGET";
- field public static final java.lang.String BIND_NETWORK_RECOMMENDATION_SERVICE = "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE";
- field public static final java.lang.String BIND_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE";
- field public static final java.lang.String BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE = "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE";
- field public static final java.lang.String BIND_PRINT_RECOMMENDATION_SERVICE = "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE";
- field public static final java.lang.String BIND_RESOLVER_RANKER_SERVICE = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
- field public static final java.lang.String BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE = "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE";
- field public static final java.lang.String BIND_SETTINGS_SUGGESTIONS_SERVICE = "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE";
- field public static final java.lang.String BIND_SOUND_TRIGGER_DETECTION_SERVICE = "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE";
- field public static final java.lang.String BIND_TELEPHONY_DATA_SERVICE = "android.permission.BIND_TELEPHONY_DATA_SERVICE";
- field public static final java.lang.String BIND_TELEPHONY_NETWORK_SERVICE = "android.permission.BIND_TELEPHONY_NETWORK_SERVICE";
- field public static final java.lang.String BIND_TEXTCLASSIFIER_SERVICE = "android.permission.BIND_TEXTCLASSIFIER_SERVICE";
- field public static final java.lang.String BIND_TRUST_AGENT = "android.permission.BIND_TRUST_AGENT";
- field public static final java.lang.String BIND_TV_REMOTE_SERVICE = "android.permission.BIND_TV_REMOTE_SERVICE";
- field public static final java.lang.String BRICK = "android.permission.BRICK";
- field public static final java.lang.String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
- field public static final deprecated java.lang.String BROADCAST_NETWORK_PRIVILEGED = "android.permission.BROADCAST_NETWORK_PRIVILEGED";
- field public static final java.lang.String CAMERA_DISABLE_TRANSMIT_LED = "android.permission.CAMERA_DISABLE_TRANSMIT_LED";
- field public static final java.lang.String CAPTURE_AUDIO_HOTWORD = "android.permission.CAPTURE_AUDIO_HOTWORD";
- field public static final java.lang.String CAPTURE_TV_INPUT = "android.permission.CAPTURE_TV_INPUT";
- field public static final java.lang.String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
- field public static final java.lang.String CHANGE_DEVICE_IDLE_TEMP_WHITELIST = "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST";
- field public static final java.lang.String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
- field public static final java.lang.String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
- field public static final java.lang.String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL";
- field public static final java.lang.String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS";
- field public static final java.lang.String CONTROL_DISPLAY_COLOR_TRANSFORMS = "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS";
- field public static final java.lang.String CONTROL_DISPLAY_SATURATION = "android.permission.CONTROL_DISPLAY_SATURATION";
- field public static final java.lang.String CONTROL_INCALL_EXPERIENCE = "android.permission.CONTROL_INCALL_EXPERIENCE";
- field public static final java.lang.String CONTROL_KEYGUARD_SECURE_NOTIFICATIONS = "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS";
- field public static final java.lang.String CONTROL_VPN = "android.permission.CONTROL_VPN";
- field public static final java.lang.String CRYPT_KEEPER = "android.permission.CRYPT_KEEPER";
- field public static final java.lang.String DEVICE_POWER = "android.permission.DEVICE_POWER";
- field public static final java.lang.String DISPATCH_PROVISIONING_MESSAGE = "android.permission.DISPATCH_PROVISIONING_MESSAGE";
- field public static final java.lang.String FORCE_BACK = "android.permission.FORCE_BACK";
- field public static final java.lang.String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
- field public static final java.lang.String GET_APP_OPS_STATS = "android.permission.GET_APP_OPS_STATS";
- field public static final java.lang.String GET_PROCESS_STATE_AND_OOM_SCORE = "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE";
- field public static final java.lang.String GET_RUNTIME_PERMISSIONS = "android.permission.GET_RUNTIME_PERMISSIONS";
- field public static final java.lang.String GET_TOP_ACTIVITY_INFO = "android.permission.GET_TOP_ACTIVITY_INFO";
- field public static final java.lang.String GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS = "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS";
- field public static final java.lang.String GRANT_RUNTIME_PERMISSIONS = "android.permission.GRANT_RUNTIME_PERMISSIONS";
- field public static final java.lang.String HARDWARE_TEST = "android.permission.HARDWARE_TEST";
- field public static final java.lang.String HDMI_CEC = "android.permission.HDMI_CEC";
- field public static final java.lang.String HIDE_NON_SYSTEM_OVERLAY_WINDOWS = "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS";
- field public static final java.lang.String INJECT_EVENTS = "android.permission.INJECT_EVENTS";
- field public static final java.lang.String INSTALL_GRANT_RUNTIME_PERMISSIONS = "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS";
- field public static final java.lang.String INSTALL_PACKAGE_UPDATES = "android.permission.INSTALL_PACKAGE_UPDATES";
- field public static final java.lang.String INSTALL_SELF_UPDATES = "android.permission.INSTALL_SELF_UPDATES";
- field public static final java.lang.String INTENT_FILTER_VERIFICATION_AGENT = "android.permission.INTENT_FILTER_VERIFICATION_AGENT";
- field public static final java.lang.String INTERACT_ACROSS_PROFILES = "android.permission.INTERACT_ACROSS_PROFILES";
- field public static final java.lang.String INTERACT_ACROSS_USERS = "android.permission.INTERACT_ACROSS_USERS";
- field public static final java.lang.String INTERACT_ACROSS_USERS_FULL = "android.permission.INTERACT_ACROSS_USERS_FULL";
- field public static final java.lang.String INTERNAL_SYSTEM_WINDOW = "android.permission.INTERNAL_SYSTEM_WINDOW";
- field public static final java.lang.String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP";
- field public static final java.lang.String KILL_UID = "android.permission.KILL_UID";
- field public static final java.lang.String LOCAL_MAC_ADDRESS = "android.permission.LOCAL_MAC_ADDRESS";
- field public static final java.lang.String LOCK_DEVICE = "android.permission.LOCK_DEVICE";
- field public static final java.lang.String LOOP_RADIO = "android.permission.LOOP_RADIO";
- field public static final java.lang.String MANAGE_ACCESSIBILITY = "android.permission.MANAGE_ACCESSIBILITY";
- field public static final java.lang.String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
- field public static final java.lang.String MANAGE_APP_OPS_RESTRICTIONS = "android.permission.MANAGE_APP_OPS_RESTRICTIONS";
- field public static final java.lang.String MANAGE_APP_PREDICTIONS = "android.permission.MANAGE_APP_PREDICTIONS";
- field public static final java.lang.String MANAGE_APP_TOKENS = "android.permission.MANAGE_APP_TOKENS";
- field public static final java.lang.String MANAGE_AUTO_FILL = "android.permission.MANAGE_AUTO_FILL";
- field public static final java.lang.String MANAGE_CARRIER_OEM_UNLOCK_STATE = "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE";
- field public static final java.lang.String MANAGE_CA_CERTIFICATES = "android.permission.MANAGE_CA_CERTIFICATES";
- field public static final java.lang.String MANAGE_CONTENT_CAPTURE = "android.permission.MANAGE_CONTENT_CAPTURE";
- field public static final java.lang.String MANAGE_CONTENT_SUGGESTIONS = "android.permission.MANAGE_CONTENT_SUGGESTIONS";
- field public static final java.lang.String MANAGE_DEBUGGING = "android.permission.MANAGE_DEBUGGING";
- field public static final java.lang.String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS";
- field public static final java.lang.String MANAGE_IPSEC_TUNNELS = "android.permission.MANAGE_IPSEC_TUNNELS";
- field public static final java.lang.String MANAGE_ROLE_HOLDERS = "android.permission.MANAGE_ROLE_HOLDERS";
- field public static final java.lang.String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS";
- field public static final java.lang.String MANAGE_SENSOR_PRIVACY = "android.permission.MANAGE_SENSOR_PRIVACY";
- field public static final java.lang.String MANAGE_SOUND_TRIGGER = "android.permission.MANAGE_SOUND_TRIGGER";
- field public static final java.lang.String MANAGE_SUBSCRIPTION_PLANS = "android.permission.MANAGE_SUBSCRIPTION_PLANS";
- field public static final java.lang.String MANAGE_USB = "android.permission.MANAGE_USB";
- field public static final java.lang.String MANAGE_USERS = "android.permission.MANAGE_USERS";
- field public static final java.lang.String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
- field public static final java.lang.String MODIFY_APPWIDGET_BIND_PERMISSIONS = "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS";
- field public static final java.lang.String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING";
- field public static final java.lang.String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS";
- field public static final java.lang.String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE";
- field public static final deprecated java.lang.String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING";
- field public static final java.lang.String MODIFY_PARENTAL_CONTROLS = "android.permission.MODIFY_PARENTAL_CONTROLS";
- field public static final java.lang.String MODIFY_QUIET_MODE = "android.permission.MODIFY_QUIET_MODE";
- field public static final java.lang.String MOVE_PACKAGE = "android.permission.MOVE_PACKAGE";
- field public static final java.lang.String NETWORK_MANAGED_PROVISIONING = "android.permission.NETWORK_MANAGED_PROVISIONING";
- field public static final java.lang.String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD";
- field public static final java.lang.String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP";
- field public static final java.lang.String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS";
- field public static final java.lang.String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE";
- field public static final java.lang.String OBSERVE_ROLE_HOLDERS = "android.permission.OBSERVE_ROLE_HOLDERS";
- field public static final java.lang.String OVERRIDE_WIFI_CONFIG = "android.permission.OVERRIDE_WIFI_CONFIG";
- field public static final java.lang.String PACKAGE_VERIFICATION_AGENT = "android.permission.PACKAGE_VERIFICATION_AGENT";
- field public static final java.lang.String PEERS_MAC_ADDRESS = "android.permission.PEERS_MAC_ADDRESS";
- field public static final java.lang.String PERFORM_CDMA_PROVISIONING = "android.permission.PERFORM_CDMA_PROVISIONING";
- field public static final java.lang.String PERFORM_SIM_ACTIVATION = "android.permission.PERFORM_SIM_ACTIVATION";
- field public static final java.lang.String POWER_SAVER = "android.permission.POWER_SAVER";
- field public static final java.lang.String PROVIDE_RESOLVER_RANKER_SERVICE = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
- field public static final java.lang.String PROVIDE_TRUST_AGENT = "android.permission.PROVIDE_TRUST_AGENT";
- field public static final java.lang.String QUERY_TIME_ZONE_RULES = "android.permission.QUERY_TIME_ZONE_RULES";
- field public static final java.lang.String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
- field public static final java.lang.String READ_CONTENT_RATING_SYSTEMS = "android.permission.READ_CONTENT_RATING_SYSTEMS";
- field public static final java.lang.String READ_DREAM_STATE = "android.permission.READ_DREAM_STATE";
- field public static final java.lang.String READ_INSTALL_SESSIONS = "android.permission.READ_INSTALL_SESSIONS";
- field public static final java.lang.String READ_NETWORK_USAGE_HISTORY = "android.permission.READ_NETWORK_USAGE_HISTORY";
- field public static final java.lang.String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE";
- field public static final java.lang.String READ_PRINT_SERVICES = "android.permission.READ_PRINT_SERVICES";
- field public static final java.lang.String READ_PRINT_SERVICE_RECOMMENDATIONS = "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS";
- field public static final java.lang.String READ_PRIVILEGED_PHONE_STATE = "android.permission.READ_PRIVILEGED_PHONE_STATE";
- field public static final java.lang.String READ_RUNTIME_PROFILES = "android.permission.READ_RUNTIME_PROFILES";
- field public static final java.lang.String READ_SEARCH_INDEXABLES = "android.permission.READ_SEARCH_INDEXABLES";
- field public static final java.lang.String READ_SYSTEM_UPDATE_INFO = "android.permission.READ_SYSTEM_UPDATE_INFO";
- field public static final java.lang.String READ_WALLPAPER_INTERNAL = "android.permission.READ_WALLPAPER_INTERNAL";
- field public static final java.lang.String READ_WIFI_CREDENTIAL = "android.permission.READ_WIFI_CREDENTIAL";
- field public static final java.lang.String REAL_GET_TASKS = "android.permission.REAL_GET_TASKS";
- field public static final java.lang.String RECEIVE_DATA_ACTIVITY_CHANGE = "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE";
- field public static final java.lang.String RECEIVE_DEVICE_CUSTOMIZATION_READY = "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY";
- field public static final java.lang.String RECEIVE_EMERGENCY_BROADCAST = "android.permission.RECEIVE_EMERGENCY_BROADCAST";
- field public static final java.lang.String RECEIVE_WIFI_CREDENTIAL_CHANGE = "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE";
- field public static final java.lang.String RECOVERY = "android.permission.RECOVERY";
- field public static final java.lang.String RECOVER_KEYSTORE = "android.permission.RECOVER_KEYSTORE";
- field public static final java.lang.String REGISTER_CALL_PROVIDER = "android.permission.REGISTER_CALL_PROVIDER";
- field public static final java.lang.String REGISTER_CONNECTION_MANAGER = "android.permission.REGISTER_CONNECTION_MANAGER";
- field public static final java.lang.String REGISTER_SIM_SUBSCRIPTION = "android.permission.REGISTER_SIM_SUBSCRIPTION";
- field public static final java.lang.String REMOVE_DRM_CERTIFICATES = "android.permission.REMOVE_DRM_CERTIFICATES";
- field public static final java.lang.String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
- field public static final java.lang.String RESET_PASSWORD = "android.permission.RESET_PASSWORD";
- field public static final java.lang.String RESTRICTED_VR_ACCESS = "android.permission.RESTRICTED_VR_ACCESS";
- field public static final java.lang.String RETRIEVE_WINDOW_CONTENT = "android.permission.RETRIEVE_WINDOW_CONTENT";
- field public static final java.lang.String REVOKE_RUNTIME_PERMISSIONS = "android.permission.REVOKE_RUNTIME_PERMISSIONS";
- field public static final java.lang.String SCORE_NETWORKS = "android.permission.SCORE_NETWORKS";
- field public static final java.lang.String SEND_DEVICE_CUSTOMIZATION_READY = "android.permission.SEND_DEVICE_CUSTOMIZATION_READY";
- field public static final java.lang.String SEND_SHOW_SUSPENDED_APP_DETAILS = "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS";
- field public static final java.lang.String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION";
- field public static final java.lang.String SERIAL_PORT = "android.permission.SERIAL_PORT";
- field public static final java.lang.String SET_ACTIVITY_WATCHER = "android.permission.SET_ACTIVITY_WATCHER";
- field public static final java.lang.String SET_HARMFUL_APP_WARNINGS = "android.permission.SET_HARMFUL_APP_WARNINGS";
- field public static final java.lang.String SET_MEDIA_KEY_LISTENER = "android.permission.SET_MEDIA_KEY_LISTENER";
- field public static final java.lang.String SET_ORIENTATION = "android.permission.SET_ORIENTATION";
- field public static final java.lang.String SET_POINTER_SPEED = "android.permission.SET_POINTER_SPEED";
- field public static final java.lang.String SET_SCREEN_COMPATIBILITY = "android.permission.SET_SCREEN_COMPATIBILITY";
- field public static final java.lang.String SET_VOLUME_KEY_LONG_PRESS_LISTENER = "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER";
- field public static final java.lang.String SET_WALLPAPER_COMPONENT = "android.permission.SET_WALLPAPER_COMPONENT";
- field public static final java.lang.String SHOW_KEYGUARD_MESSAGE = "android.permission.SHOW_KEYGUARD_MESSAGE";
- field public static final java.lang.String SHUTDOWN = "android.permission.SHUTDOWN";
- field public static final java.lang.String STOP_APP_SWITCHES = "android.permission.STOP_APP_SWITCHES";
- field public static final java.lang.String SUBSTITUTE_NOTIFICATION_APP_NAME = "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME";
- field public static final java.lang.String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
- field public static final java.lang.String TETHER_PRIVILEGED = "android.permission.TETHER_PRIVILEGED";
- field public static final java.lang.String TV_INPUT_HARDWARE = "android.permission.TV_INPUT_HARDWARE";
- field public static final java.lang.String TV_VIRTUAL_REMOTE_CONTROLLER = "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER";
- field public static final java.lang.String UNLIMITED_SHORTCUTS_API_CALLS = "android.permission.UNLIMITED_SHORTCUTS_API_CALLS";
- field public static final java.lang.String UPDATE_APP_OPS_STATS = "android.permission.UPDATE_APP_OPS_STATS";
- field public static final java.lang.String UPDATE_LOCK = "android.permission.UPDATE_LOCK";
- field public static final java.lang.String UPDATE_TIME_ZONE_RULES = "android.permission.UPDATE_TIME_ZONE_RULES";
- field public static final java.lang.String USER_ACTIVITY = "android.permission.USER_ACTIVITY";
- field public static final java.lang.String USE_RESERVED_DISK = "android.permission.USE_RESERVED_DISK";
- field public static final java.lang.String WRITE_DREAM_STATE = "android.permission.WRITE_DREAM_STATE";
- field public static final java.lang.String WRITE_EMBEDDED_SUBSCRIPTIONS = "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS";
- field public static final java.lang.String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE";
- field public static final java.lang.String WRITE_OBB = "android.permission.WRITE_OBB";
+ field public static final String ACCESS_AMBIENT_LIGHT_STATS = "android.permission.ACCESS_AMBIENT_LIGHT_STATS";
+ field public static final String ACCESS_BROADCAST_RADIO = "android.permission.ACCESS_BROADCAST_RADIO";
+ field public static final String ACCESS_CACHE_FILESYSTEM = "android.permission.ACCESS_CACHE_FILESYSTEM";
+ field public static final String ACCESS_DRM_CERTIFICATES = "android.permission.ACCESS_DRM_CERTIFICATES";
+ field @Deprecated public static final String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO";
+ field public static final String ACCESS_INSTANT_APPS = "android.permission.ACCESS_INSTANT_APPS";
+ field public static final String ACCESS_MOCK_LOCATION = "android.permission.ACCESS_MOCK_LOCATION";
+ field public static final String ACCESS_MTP = "android.permission.ACCESS_MTP";
+ field public static final String ACCESS_NETWORK_CONDITIONS = "android.permission.ACCESS_NETWORK_CONDITIONS";
+ field public static final String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
+ field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
+ field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
+ field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
+ field public static final String ALLOCATE_AGGRESSIVE = "android.permission.ALLOCATE_AGGRESSIVE";
+ field public static final String ALLOW_ANY_CODEC_FOR_PLAYBACK = "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK";
+ field public static final String AMBIENT_WALLPAPER = "android.permission.AMBIENT_WALLPAPER";
+ field public static final String BACKUP = "android.permission.BACKUP";
+ field public static final String BIND_ATTENTION_SERVICE = "android.permission.BIND_ATTENTION_SERVICE";
+ field public static final String BIND_AUGMENTED_AUTOFILL_SERVICE = "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE";
+ field @Deprecated public static final String BIND_CONNECTION_SERVICE = "android.permission.BIND_CONNECTION_SERVICE";
+ field public static final String BIND_CONTENT_CAPTURE_SERVICE = "android.permission.BIND_CONTENT_CAPTURE_SERVICE";
+ field public static final String BIND_DIRECTORY_SEARCH = "android.permission.BIND_DIRECTORY_SEARCH";
+ field public static final String BIND_EUICC_SERVICE = "android.permission.BIND_EUICC_SERVICE";
+ field public static final String BIND_IMS_SERVICE = "android.permission.BIND_IMS_SERVICE";
+ field public static final String BIND_KEYGUARD_APPWIDGET = "android.permission.BIND_KEYGUARD_APPWIDGET";
+ field public static final String BIND_NETWORK_RECOMMENDATION_SERVICE = "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE";
+ field public static final String BIND_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE";
+ field public static final String BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE = "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE";
+ field public static final String BIND_PRINT_RECOMMENDATION_SERVICE = "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE";
+ field public static final String BIND_RESOLVER_RANKER_SERVICE = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
+ field public static final String BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE = "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE";
+ field public static final String BIND_SETTINGS_SUGGESTIONS_SERVICE = "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE";
+ field public static final String BIND_SOUND_TRIGGER_DETECTION_SERVICE = "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE";
+ field public static final String BIND_TELEPHONY_DATA_SERVICE = "android.permission.BIND_TELEPHONY_DATA_SERVICE";
+ field public static final String BIND_TELEPHONY_NETWORK_SERVICE = "android.permission.BIND_TELEPHONY_NETWORK_SERVICE";
+ field public static final String BIND_TEXTCLASSIFIER_SERVICE = "android.permission.BIND_TEXTCLASSIFIER_SERVICE";
+ field public static final String BIND_TRUST_AGENT = "android.permission.BIND_TRUST_AGENT";
+ field public static final String BIND_TV_REMOTE_SERVICE = "android.permission.BIND_TV_REMOTE_SERVICE";
+ field public static final String BRICK = "android.permission.BRICK";
+ field public static final String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
+ field @Deprecated public static final String BROADCAST_NETWORK_PRIVILEGED = "android.permission.BROADCAST_NETWORK_PRIVILEGED";
+ field public static final String CAMERA_DISABLE_TRANSMIT_LED = "android.permission.CAMERA_DISABLE_TRANSMIT_LED";
+ field public static final String CAPTURE_AUDIO_HOTWORD = "android.permission.CAPTURE_AUDIO_HOTWORD";
+ field public static final String CAPTURE_TV_INPUT = "android.permission.CAPTURE_TV_INPUT";
+ field public static final String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
+ field public static final String CHANGE_DEVICE_IDLE_TEMP_WHITELIST = "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST";
+ field public static final String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
+ field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
+ field public static final String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL";
+ field public static final String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS";
+ field public static final String CONTROL_DISPLAY_COLOR_TRANSFORMS = "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS";
+ field public static final String CONTROL_DISPLAY_SATURATION = "android.permission.CONTROL_DISPLAY_SATURATION";
+ field public static final String CONTROL_INCALL_EXPERIENCE = "android.permission.CONTROL_INCALL_EXPERIENCE";
+ field public static final String CONTROL_KEYGUARD_SECURE_NOTIFICATIONS = "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS";
+ field public static final String CONTROL_VPN = "android.permission.CONTROL_VPN";
+ field public static final String CRYPT_KEEPER = "android.permission.CRYPT_KEEPER";
+ field public static final String DEVICE_POWER = "android.permission.DEVICE_POWER";
+ field public static final String DISPATCH_PROVISIONING_MESSAGE = "android.permission.DISPATCH_PROVISIONING_MESSAGE";
+ field public static final String FORCE_BACK = "android.permission.FORCE_BACK";
+ field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
+ field public static final String GET_APP_OPS_STATS = "android.permission.GET_APP_OPS_STATS";
+ field public static final String GET_PROCESS_STATE_AND_OOM_SCORE = "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE";
+ field public static final String GET_RUNTIME_PERMISSIONS = "android.permission.GET_RUNTIME_PERMISSIONS";
+ field public static final String GET_TOP_ACTIVITY_INFO = "android.permission.GET_TOP_ACTIVITY_INFO";
+ field public static final String GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS = "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS";
+ field public static final String GRANT_RUNTIME_PERMISSIONS = "android.permission.GRANT_RUNTIME_PERMISSIONS";
+ field public static final String HARDWARE_TEST = "android.permission.HARDWARE_TEST";
+ field public static final String HDMI_CEC = "android.permission.HDMI_CEC";
+ field public static final String HIDE_NON_SYSTEM_OVERLAY_WINDOWS = "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS";
+ field public static final String INJECT_EVENTS = "android.permission.INJECT_EVENTS";
+ field public static final String INSTALL_GRANT_RUNTIME_PERMISSIONS = "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS";
+ field public static final String INSTALL_PACKAGE_UPDATES = "android.permission.INSTALL_PACKAGE_UPDATES";
+ field public static final String INSTALL_SELF_UPDATES = "android.permission.INSTALL_SELF_UPDATES";
+ field public static final String INTENT_FILTER_VERIFICATION_AGENT = "android.permission.INTENT_FILTER_VERIFICATION_AGENT";
+ field public static final String INTERACT_ACROSS_PROFILES = "android.permission.INTERACT_ACROSS_PROFILES";
+ field public static final String INTERACT_ACROSS_USERS = "android.permission.INTERACT_ACROSS_USERS";
+ field public static final String INTERACT_ACROSS_USERS_FULL = "android.permission.INTERACT_ACROSS_USERS_FULL";
+ field public static final String INTERNAL_SYSTEM_WINDOW = "android.permission.INTERNAL_SYSTEM_WINDOW";
+ field public static final String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP";
+ field public static final String KILL_UID = "android.permission.KILL_UID";
+ field public static final String LOCAL_MAC_ADDRESS = "android.permission.LOCAL_MAC_ADDRESS";
+ field public static final String LOCK_DEVICE = "android.permission.LOCK_DEVICE";
+ field public static final String LOOP_RADIO = "android.permission.LOOP_RADIO";
+ field public static final String MANAGE_ACCESSIBILITY = "android.permission.MANAGE_ACCESSIBILITY";
+ field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
+ field public static final String MANAGE_APP_OPS_RESTRICTIONS = "android.permission.MANAGE_APP_OPS_RESTRICTIONS";
+ field public static final String MANAGE_APP_PREDICTIONS = "android.permission.MANAGE_APP_PREDICTIONS";
+ field public static final String MANAGE_APP_TOKENS = "android.permission.MANAGE_APP_TOKENS";
+ field public static final String MANAGE_AUTO_FILL = "android.permission.MANAGE_AUTO_FILL";
+ field public static final String MANAGE_CARRIER_OEM_UNLOCK_STATE = "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE";
+ field public static final String MANAGE_CA_CERTIFICATES = "android.permission.MANAGE_CA_CERTIFICATES";
+ field public static final String MANAGE_CONTENT_CAPTURE = "android.permission.MANAGE_CONTENT_CAPTURE";
+ field public static final String MANAGE_CONTENT_SUGGESTIONS = "android.permission.MANAGE_CONTENT_SUGGESTIONS";
+ field public static final String MANAGE_DEBUGGING = "android.permission.MANAGE_DEBUGGING";
+ field public static final String MANAGE_IPSEC_TUNNELS = "android.permission.MANAGE_IPSEC_TUNNELS";
+ field public static final String MANAGE_ROLE_HOLDERS = "android.permission.MANAGE_ROLE_HOLDERS";
+ field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS";
+ field public static final String MANAGE_SENSOR_PRIVACY = "android.permission.MANAGE_SENSOR_PRIVACY";
+ field public static final String MANAGE_SOUND_TRIGGER = "android.permission.MANAGE_SOUND_TRIGGER";
+ field public static final String MANAGE_SUBSCRIPTION_PLANS = "android.permission.MANAGE_SUBSCRIPTION_PLANS";
+ field public static final String MANAGE_USB = "android.permission.MANAGE_USB";
+ field public static final String MANAGE_USERS = "android.permission.MANAGE_USERS";
+ field public static final String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
+ field public static final String MODIFY_APPWIDGET_BIND_PERMISSIONS = "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS";
+ field public static final String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING";
+ field public static final String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS";
+ field public static final String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE";
+ field @Deprecated public static final String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING";
+ field public static final String MODIFY_PARENTAL_CONTROLS = "android.permission.MODIFY_PARENTAL_CONTROLS";
+ field public static final String MODIFY_QUIET_MODE = "android.permission.MODIFY_QUIET_MODE";
+ field public static final String MOVE_PACKAGE = "android.permission.MOVE_PACKAGE";
+ field public static final String NETWORK_MANAGED_PROVISIONING = "android.permission.NETWORK_MANAGED_PROVISIONING";
+ field public static final String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD";
+ field public static final String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP";
+ field public static final String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS";
+ field public static final String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE";
+ field public static final String OBSERVE_ROLE_HOLDERS = "android.permission.OBSERVE_ROLE_HOLDERS";
+ field public static final String OVERRIDE_WIFI_CONFIG = "android.permission.OVERRIDE_WIFI_CONFIG";
+ field public static final String PACKAGE_VERIFICATION_AGENT = "android.permission.PACKAGE_VERIFICATION_AGENT";
+ field public static final String PEERS_MAC_ADDRESS = "android.permission.PEERS_MAC_ADDRESS";
+ field public static final String PERFORM_CDMA_PROVISIONING = "android.permission.PERFORM_CDMA_PROVISIONING";
+ field public static final String PERFORM_SIM_ACTIVATION = "android.permission.PERFORM_SIM_ACTIVATION";
+ field public static final String POWER_SAVER = "android.permission.POWER_SAVER";
+ field public static final String PROVIDE_RESOLVER_RANKER_SERVICE = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
+ field public static final String PROVIDE_TRUST_AGENT = "android.permission.PROVIDE_TRUST_AGENT";
+ field public static final String QUERY_TIME_ZONE_RULES = "android.permission.QUERY_TIME_ZONE_RULES";
+ field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
+ field public static final String READ_CONTENT_RATING_SYSTEMS = "android.permission.READ_CONTENT_RATING_SYSTEMS";
+ field public static final String READ_DEVICE_CONFIG = "android.permission.READ_DEVICE_CONFIG";
+ field public static final String READ_DREAM_STATE = "android.permission.READ_DREAM_STATE";
+ field public static final String READ_INSTALL_SESSIONS = "android.permission.READ_INSTALL_SESSIONS";
+ field public static final String READ_NETWORK_USAGE_HISTORY = "android.permission.READ_NETWORK_USAGE_HISTORY";
+ field public static final String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE";
+ field public static final String READ_PRINT_SERVICES = "android.permission.READ_PRINT_SERVICES";
+ field public static final String READ_PRINT_SERVICE_RECOMMENDATIONS = "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS";
+ field public static final String READ_PRIVILEGED_PHONE_STATE = "android.permission.READ_PRIVILEGED_PHONE_STATE";
+ field public static final String READ_RUNTIME_PROFILES = "android.permission.READ_RUNTIME_PROFILES";
+ field public static final String READ_SEARCH_INDEXABLES = "android.permission.READ_SEARCH_INDEXABLES";
+ field public static final String READ_SYSTEM_UPDATE_INFO = "android.permission.READ_SYSTEM_UPDATE_INFO";
+ field public static final String READ_WALLPAPER_INTERNAL = "android.permission.READ_WALLPAPER_INTERNAL";
+ field public static final String READ_WIFI_CREDENTIAL = "android.permission.READ_WIFI_CREDENTIAL";
+ field public static final String REAL_GET_TASKS = "android.permission.REAL_GET_TASKS";
+ field public static final String RECEIVE_DATA_ACTIVITY_CHANGE = "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE";
+ field public static final String RECEIVE_DEVICE_CUSTOMIZATION_READY = "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY";
+ field public static final String RECEIVE_EMERGENCY_BROADCAST = "android.permission.RECEIVE_EMERGENCY_BROADCAST";
+ field public static final String RECEIVE_WIFI_CREDENTIAL_CHANGE = "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE";
+ field public static final String RECOVERY = "android.permission.RECOVERY";
+ field public static final String RECOVER_KEYSTORE = "android.permission.RECOVER_KEYSTORE";
+ field public static final String REGISTER_CALL_PROVIDER = "android.permission.REGISTER_CALL_PROVIDER";
+ field public static final String REGISTER_CONNECTION_MANAGER = "android.permission.REGISTER_CONNECTION_MANAGER";
+ field public static final String REGISTER_SIM_SUBSCRIPTION = "android.permission.REGISTER_SIM_SUBSCRIPTION";
+ field public static final String REMOTE_DISPLAY_PROVIDER = "android.permission.REMOTE_DISPLAY_PROVIDER";
+ field public static final String REMOVE_DRM_CERTIFICATES = "android.permission.REMOVE_DRM_CERTIFICATES";
+ field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
+ field public static final String RESET_PASSWORD = "android.permission.RESET_PASSWORD";
+ field public static final String RESTRICTED_VR_ACCESS = "android.permission.RESTRICTED_VR_ACCESS";
+ field public static final String RETRIEVE_WINDOW_CONTENT = "android.permission.RETRIEVE_WINDOW_CONTENT";
+ field public static final String REVOKE_RUNTIME_PERMISSIONS = "android.permission.REVOKE_RUNTIME_PERMISSIONS";
+ field public static final String SCORE_NETWORKS = "android.permission.SCORE_NETWORKS";
+ field public static final String SEND_DEVICE_CUSTOMIZATION_READY = "android.permission.SEND_DEVICE_CUSTOMIZATION_READY";
+ field public static final String SEND_SHOW_SUSPENDED_APP_DETAILS = "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS";
+ field public static final String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION";
+ field public static final String SERIAL_PORT = "android.permission.SERIAL_PORT";
+ field public static final String SET_ACTIVITY_WATCHER = "android.permission.SET_ACTIVITY_WATCHER";
+ field public static final String SET_HARMFUL_APP_WARNINGS = "android.permission.SET_HARMFUL_APP_WARNINGS";
+ field public static final String SET_MEDIA_KEY_LISTENER = "android.permission.SET_MEDIA_KEY_LISTENER";
+ field public static final String SET_ORIENTATION = "android.permission.SET_ORIENTATION";
+ field public static final String SET_POINTER_SPEED = "android.permission.SET_POINTER_SPEED";
+ field public static final String SET_SCREEN_COMPATIBILITY = "android.permission.SET_SCREEN_COMPATIBILITY";
+ field public static final String SET_VOLUME_KEY_LONG_PRESS_LISTENER = "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER";
+ field public static final String SET_WALLPAPER_COMPONENT = "android.permission.SET_WALLPAPER_COMPONENT";
+ field public static final String SHOW_KEYGUARD_MESSAGE = "android.permission.SHOW_KEYGUARD_MESSAGE";
+ field public static final String SHUTDOWN = "android.permission.SHUTDOWN";
+ field public static final String STOP_APP_SWITCHES = "android.permission.STOP_APP_SWITCHES";
+ field public static final String SUBSTITUTE_NOTIFICATION_APP_NAME = "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME";
+ field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
+ field public static final String TETHER_PRIVILEGED = "android.permission.TETHER_PRIVILEGED";
+ field public static final String TV_INPUT_HARDWARE = "android.permission.TV_INPUT_HARDWARE";
+ field public static final String TV_VIRTUAL_REMOTE_CONTROLLER = "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER";
+ field public static final String UNLIMITED_SHORTCUTS_API_CALLS = "android.permission.UNLIMITED_SHORTCUTS_API_CALLS";
+ field public static final String UPDATE_APP_OPS_STATS = "android.permission.UPDATE_APP_OPS_STATS";
+ field public static final String UPDATE_LOCK = "android.permission.UPDATE_LOCK";
+ field public static final String UPDATE_TIME_ZONE_RULES = "android.permission.UPDATE_TIME_ZONE_RULES";
+ field public static final String USER_ACTIVITY = "android.permission.USER_ACTIVITY";
+ field public static final String USE_RESERVED_DISK = "android.permission.USE_RESERVED_DISK";
+ field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG";
+ field public static final String WRITE_DREAM_STATE = "android.permission.WRITE_DREAM_STATE";
+ field public static final String WRITE_EMBEDDED_SUBSCRIPTIONS = "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS";
+ field public static final String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE";
+ field public static final String WRITE_OBB = "android.permission.WRITE_OBB";
}
public static final class Manifest.permission_group {
- field public static final java.lang.String UNDEFINED = "android.permission-group.UNDEFINED";
+ field public static final String UNDEFINED = "android.permission-group.UNDEFINED";
}
public static final class R.array {
+ field public static final int config_defaultRoleHolders = 17235974; // 0x1070006
field public static final int config_keySystemUuidMapping = 17235973; // 0x1070005
}
@@ -247,7 +252,7 @@
package android.accounts {
public class AccountManager {
- method public android.accounts.AccountManagerFuture<android.os.Bundle> finishSessionAsUser(android.os.Bundle, android.app.Activity, android.os.UserHandle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.accounts.AccountManagerFuture<android.os.Bundle> finishSessionAsUser(android.os.Bundle, android.app.Activity, android.os.UserHandle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
}
}
@@ -257,89 +262,89 @@
public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
method public void convertFromTranslucent();
method public boolean convertToTranslucent(android.app.Activity.TranslucentConversionListener, android.app.ActivityOptions);
- method public deprecated boolean isBackgroundVisibleBehind();
- method public deprecated void onBackgroundVisibleBehindChanged(boolean);
+ method @Deprecated public boolean isBackgroundVisibleBehind();
+ method @Deprecated public void onBackgroundVisibleBehindChanged(boolean);
method public void setInheritShowWhenLocked(boolean);
}
- public static abstract interface Activity.TranslucentConversionListener {
- method public abstract void onTranslucentConversionComplete(boolean);
+ public static interface Activity.TranslucentConversionListener {
+ method public void onTranslucentConversionComplete(boolean);
}
public class ActivityManager {
- method public void addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int);
- method public void forceStopPackage(java.lang.String);
- method public static int getCurrentUser();
- method public int getPackageImportance(java.lang.String);
- method public int getUidImportance(int);
- method public void killUid(int, java.lang.String);
- method public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
- method public static void setPersistentVrThread(int);
- method public boolean switchUser(android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int);
+ method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void forceStopPackage(String);
+ method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public static int getCurrentUser();
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getPackageImportance(String);
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidImportance(int);
+ method @RequiresPermission(android.Manifest.permission.KILL_UID) public void killUid(int, String);
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
+ method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public static void setPersistentVrThread(int);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean switchUser(@NonNull android.os.UserHandle);
}
- public static abstract interface ActivityManager.OnUidImportanceListener {
- method public abstract void onUidImportance(int, int);
+ public static interface ActivityManager.OnUidImportanceListener {
+ method public void onUidImportance(int, int);
}
public class AlarmManager {
- method public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource);
- method public void set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource);
+ method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource);
+ method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource);
}
public class AppOpsManager {
- method public void getHistoricalOps(int, java.lang.String, java.lang.String[], long, long, java.util.concurrent.Executor, java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
- method public static java.lang.String[] getOpStrs();
- method public deprecated java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, java.lang.String, int[]);
- method public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, java.lang.String, java.lang.String...);
- method public java.util.List<android.app.AppOpsManager.PackageOps> getPackagesForOps(java.lang.String[]);
- method public static int opToDefaultMode(java.lang.String);
- method public static java.lang.String opToPermission(java.lang.String);
- method public void setMode(java.lang.String, int, java.lang.String, int);
- method public void setUidMode(java.lang.String, int, int);
- field public static final java.lang.String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
- field public static final java.lang.String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
- field public static final java.lang.String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
- field public static final java.lang.String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot";
- field public static final java.lang.String OPSTR_ASSIST_STRUCTURE = "android:assist_structure";
- field public static final java.lang.String OPSTR_AUDIO_ACCESSIBILITY_VOLUME = "android:audio_accessibility_volume";
- field public static final java.lang.String OPSTR_AUDIO_ALARM_VOLUME = "android:audio_alarm_volume";
- field public static final java.lang.String OPSTR_AUDIO_BLUETOOTH_VOLUME = "android:audio_bluetooth_volume";
- field public static final java.lang.String OPSTR_AUDIO_MASTER_VOLUME = "android:audio_master_volume";
- field public static final java.lang.String OPSTR_AUDIO_MEDIA_VOLUME = "android:audio_media_volume";
- field public static final java.lang.String OPSTR_AUDIO_NOTIFICATION_VOLUME = "android:audio_notification_volume";
- field public static final java.lang.String OPSTR_AUDIO_RING_VOLUME = "android:audio_ring_volume";
- field public static final java.lang.String OPSTR_AUDIO_VOICE_VOLUME = "android:audio_voice_volume";
- field public static final java.lang.String OPSTR_BIND_ACCESSIBILITY_SERVICE = "android:bind_accessibility_service";
- field public static final java.lang.String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
- field public static final java.lang.String OPSTR_GET_ACCOUNTS = "android:get_accounts";
- field public static final java.lang.String OPSTR_GPS = "android:gps";
- field public static final java.lang.String OPSTR_INSTANT_APP_START_FOREGROUND = "android:instant_app_start_foreground";
- field public static final java.lang.String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
- field public static final java.lang.String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
- field public static final java.lang.String OPSTR_NEIGHBORING_CELLS = "android:neighboring_cells";
- field public static final java.lang.String OPSTR_PLAY_AUDIO = "android:play_audio";
- field public static final java.lang.String OPSTR_POST_NOTIFICATION = "android:post_notification";
- field public static final java.lang.String OPSTR_PROJECT_MEDIA = "android:project_media";
- field public static final java.lang.String OPSTR_READ_CLIPBOARD = "android:read_clipboard";
- field public static final java.lang.String OPSTR_READ_ICC_SMS = "android:read_icc_sms";
- field public static final java.lang.String OPSTR_RECEIVE_EMERGENCY_BROADCAST = "android:receive_emergency_broadcast";
- field public static final java.lang.String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages";
- field public static final java.lang.String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages";
- field public static final java.lang.String OPSTR_RUN_ANY_IN_BACKGROUND = "android:run_any_in_background";
- field public static final java.lang.String OPSTR_RUN_IN_BACKGROUND = "android:run_in_background";
- field public static final java.lang.String OPSTR_START_FOREGROUND = "android:start_foreground";
- field public static final java.lang.String OPSTR_TAKE_AUDIO_FOCUS = "android:take_audio_focus";
- field public static final java.lang.String OPSTR_TAKE_MEDIA_BUTTONS = "android:take_media_buttons";
- field public static final java.lang.String OPSTR_TOAST_WINDOW = "android:toast_window";
- field public static final java.lang.String OPSTR_TURN_SCREEN_ON = "android:turn_screen_on";
- field public static final java.lang.String OPSTR_VIBRATE = "android:vibrate";
- field public static final java.lang.String OPSTR_WAKE_LOCK = "android:wake_lock";
- field public static final java.lang.String OPSTR_WIFI_SCAN = "android:wifi_scan";
- field public static final java.lang.String OPSTR_WRITE_CLIPBOARD = "android:write_clipboard";
- field public static final java.lang.String OPSTR_WRITE_ICC_SMS = "android:write_icc_sms";
- field public static final java.lang.String OPSTR_WRITE_SMS = "android:write_sms";
- field public static final java.lang.String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
+ method @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public void getHistoricalOps(int, @Nullable String, @Nullable String[], long, long, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
+ method public static String[] getOpStrs();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, String, int[]);
+ method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, @NonNull String, @Nullable java.lang.String...);
+ method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getPackagesForOps(@Nullable String[]);
+ method public static int opToDefaultMode(@NonNull String);
+ method @Nullable public static String opToPermission(@NonNull String);
+ method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(String, int, String, int);
+ method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setUidMode(String, int, int);
+ field public static final String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
+ field public static final String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
+ field public static final String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
+ field public static final String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot";
+ field public static final String OPSTR_ASSIST_STRUCTURE = "android:assist_structure";
+ field public static final String OPSTR_AUDIO_ACCESSIBILITY_VOLUME = "android:audio_accessibility_volume";
+ field public static final String OPSTR_AUDIO_ALARM_VOLUME = "android:audio_alarm_volume";
+ field public static final String OPSTR_AUDIO_BLUETOOTH_VOLUME = "android:audio_bluetooth_volume";
+ field public static final String OPSTR_AUDIO_MASTER_VOLUME = "android:audio_master_volume";
+ field public static final String OPSTR_AUDIO_MEDIA_VOLUME = "android:audio_media_volume";
+ field public static final String OPSTR_AUDIO_NOTIFICATION_VOLUME = "android:audio_notification_volume";
+ field public static final String OPSTR_AUDIO_RING_VOLUME = "android:audio_ring_volume";
+ field public static final String OPSTR_AUDIO_VOICE_VOLUME = "android:audio_voice_volume";
+ field public static final String OPSTR_BIND_ACCESSIBILITY_SERVICE = "android:bind_accessibility_service";
+ field public static final String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
+ field public static final String OPSTR_GET_ACCOUNTS = "android:get_accounts";
+ field public static final String OPSTR_GPS = "android:gps";
+ field public static final String OPSTR_INSTANT_APP_START_FOREGROUND = "android:instant_app_start_foreground";
+ field public static final String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
+ field public static final String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
+ field public static final String OPSTR_NEIGHBORING_CELLS = "android:neighboring_cells";
+ field public static final String OPSTR_PLAY_AUDIO = "android:play_audio";
+ field public static final String OPSTR_POST_NOTIFICATION = "android:post_notification";
+ field public static final String OPSTR_PROJECT_MEDIA = "android:project_media";
+ field public static final String OPSTR_READ_CLIPBOARD = "android:read_clipboard";
+ field public static final String OPSTR_READ_ICC_SMS = "android:read_icc_sms";
+ field public static final String OPSTR_RECEIVE_EMERGENCY_BROADCAST = "android:receive_emergency_broadcast";
+ field public static final String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages";
+ field public static final String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages";
+ field public static final String OPSTR_RUN_ANY_IN_BACKGROUND = "android:run_any_in_background";
+ field public static final String OPSTR_RUN_IN_BACKGROUND = "android:run_in_background";
+ field public static final String OPSTR_START_FOREGROUND = "android:start_foreground";
+ field public static final String OPSTR_TAKE_AUDIO_FOCUS = "android:take_audio_focus";
+ field public static final String OPSTR_TAKE_MEDIA_BUTTONS = "android:take_media_buttons";
+ field public static final String OPSTR_TOAST_WINDOW = "android:toast_window";
+ field public static final String OPSTR_TURN_SCREEN_ON = "android:turn_screen_on";
+ field public static final String OPSTR_VIBRATE = "android:vibrate";
+ field public static final String OPSTR_WAKE_LOCK = "android:wake_lock";
+ field public static final String OPSTR_WIFI_SCAN = "android:wifi_scan";
+ field public static final String OPSTR_WRITE_CLIPBOARD = "android:write_clipboard";
+ field public static final String OPSTR_WRITE_ICC_SMS = "android:write_icc_sms";
+ field public static final String OPSTR_WRITE_SMS = "android:write_sms";
+ field public static final String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
field public static final int UID_STATE_BACKGROUND = 4; // 0x4
field public static final int UID_STATE_CACHED = 5; // 0x5
field public static final int UID_STATE_FOREGROUND = 3; // 0x3
@@ -358,7 +363,7 @@
method public long getForegroundAccessCount();
method public long getForegroundAccessDuration();
method public long getForegroundRejectCount();
- method public java.lang.String getOpName();
+ method @NonNull public String getOpName();
method public long getRejectCount(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOp> CREATOR;
@@ -369,27 +374,27 @@
method public long getBeginTimeMillis();
method public long getEndTimeMillis();
method public int getUidCount();
- method public android.app.AppOpsManager.HistoricalUidOps getUidOps(int);
- method public android.app.AppOpsManager.HistoricalUidOps getUidOpsAt(int);
+ method @Nullable public android.app.AppOpsManager.HistoricalUidOps getUidOps(int);
+ method @NonNull public android.app.AppOpsManager.HistoricalUidOps getUidOpsAt(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOps> CREATOR;
}
public static final class AppOpsManager.HistoricalPackageOps implements android.os.Parcelable {
method public int describeContents();
- method public android.app.AppOpsManager.HistoricalOp getOp(java.lang.String);
- method public android.app.AppOpsManager.HistoricalOp getOpAt(int);
+ method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
+ method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(int);
method public int getOpCount();
- method public java.lang.String getPackageName();
- method public void writeToParcel(android.os.Parcel, int);
+ method @NonNull public String getPackageName();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalPackageOps> CREATOR;
}
public static final class AppOpsManager.HistoricalUidOps implements android.os.Parcelable {
method public int describeContents();
method public int getPackageCount();
- method public android.app.AppOpsManager.HistoricalPackageOps getPackageOps(java.lang.String);
- method public android.app.AppOpsManager.HistoricalPackageOps getPackageOpsAt(int);
+ method @Nullable public android.app.AppOpsManager.HistoricalPackageOps getPackageOps(@NonNull String);
+ method @NonNull public android.app.AppOpsManager.HistoricalPackageOps getPackageOpsAt(int);
method public int getUid();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalUidOps> CREATOR;
@@ -405,8 +410,8 @@
method public long getLastRejectForegroundTime();
method public long getLastRejectTime();
method public int getMode();
- method public java.lang.String getOpStr();
- method public java.lang.String getProxyPackageName();
+ method public String getOpStr();
+ method public String getProxyPackageName();
method public int getProxyUid();
method public boolean isRunning();
method public void writeToParcel(android.os.Parcel, int);
@@ -416,7 +421,7 @@
public static final class AppOpsManager.PackageOps implements android.os.Parcelable {
method public int describeContents();
method public java.util.List<android.app.AppOpsManager.OpEntry> getOps();
- method public java.lang.String getPackageName();
+ method public String getPackageName();
method public int getUid();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AppOpsManager.PackageOps> CREATOR;
@@ -425,24 +430,24 @@
public class BroadcastOptions {
method public static android.app.BroadcastOptions makeBasic();
method public void setDontSendToRestrictedApps(boolean);
- method public void setTemporaryAppWhitelistDuration(long);
+ method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void setTemporaryAppWhitelistDuration(long);
method public android.os.Bundle toBundle();
}
public class DownloadManager {
- field public static final java.lang.String ACTION_DOWNLOAD_COMPLETED = "android.intent.action.DOWNLOAD_COMPLETED";
+ field public static final String ACTION_DOWNLOAD_COMPLETED = "android.intent.action.DOWNLOAD_COMPLETED";
}
public abstract class InstantAppResolverService extends android.app.Service {
ctor public InstantAppResolverService();
method public final void attachBaseContext(android.content.Context);
method public final android.os.IBinder onBind(android.content.Intent);
- method public deprecated void onGetInstantAppIntentFilter(int[], java.lang.String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
- method public deprecated void onGetInstantAppIntentFilter(android.content.Intent, int[], java.lang.String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
- method public void onGetInstantAppIntentFilter(android.content.Intent, int[], android.os.UserHandle, java.lang.String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
- method public deprecated void onGetInstantAppResolveInfo(int[], java.lang.String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
- method public deprecated void onGetInstantAppResolveInfo(android.content.Intent, int[], java.lang.String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
- method public void onGetInstantAppResolveInfo(android.content.Intent, int[], android.os.UserHandle, java.lang.String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
+ method @Deprecated public void onGetInstantAppIntentFilter(int[], String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
+ method @Deprecated public void onGetInstantAppIntentFilter(android.content.Intent, int[], String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
+ method public void onGetInstantAppIntentFilter(android.content.Intent, int[], android.os.UserHandle, String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
+ method @Deprecated public void onGetInstantAppResolveInfo(int[], String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
+ method @Deprecated public void onGetInstantAppResolveInfo(android.content.Intent, int[], String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
+ method public void onGetInstantAppResolveInfo(android.content.Intent, int[], android.os.UserHandle, String, android.app.InstantAppResolverService.InstantAppResolutionCallback);
}
public static final class InstantAppResolverService.InstantAppResolutionCallback {
@@ -450,18 +455,18 @@
}
public class KeyguardManager {
- method public android.content.Intent createConfirmFactoryResetCredentialIntent(java.lang.CharSequence, java.lang.CharSequence, java.lang.CharSequence);
- method public boolean getPrivateNotificationsAllowed();
- method public void requestDismissKeyguard(android.app.Activity, java.lang.CharSequence, android.app.KeyguardManager.KeyguardDismissCallback);
- method public void setPrivateNotificationsAllowed(boolean);
+ method public android.content.Intent createConfirmFactoryResetCredentialIntent(CharSequence, CharSequence, CharSequence);
+ method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public boolean getPrivateNotificationsAllowed();
+ method @RequiresPermission(android.Manifest.permission.SHOW_KEYGUARD_MESSAGE) public void requestDismissKeyguard(@NonNull android.app.Activity, @Nullable CharSequence, @Nullable android.app.KeyguardManager.KeyguardDismissCallback);
+ method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public void setPrivateNotificationsAllowed(boolean);
}
public class Notification implements android.os.Parcelable {
- field public static final java.lang.String CATEGORY_CAR_EMERGENCY = "car_emergency";
- field public static final java.lang.String CATEGORY_CAR_INFORMATION = "car_information";
- field public static final java.lang.String CATEGORY_CAR_WARNING = "car_warning";
- field public static final java.lang.String EXTRA_ALLOW_DURING_SETUP = "android.allowDuringSetup";
- field public static final java.lang.String EXTRA_SUBSTITUTE_APP_NAME = "android.substName";
+ field public static final String CATEGORY_CAR_EMERGENCY = "car_emergency";
+ field public static final String CATEGORY_CAR_INFORMATION = "car_information";
+ field public static final String CATEGORY_CAR_WARNING = "car_warning";
+ field @RequiresPermission(android.Manifest.permission.NOTIFICATION_DURING_SETUP) public static final String EXTRA_ALLOW_DURING_SETUP = "android.allowDuringSetup";
+ field @RequiresPermission(android.Manifest.permission.SUBSTITUTE_NOTIFICATION_APP_NAME) public static final String EXTRA_SUBSTITUTE_APP_NAME = "android.substName";
field public static final int FLAG_AUTOGROUP_SUMMARY = 1024; // 0x400
}
@@ -469,13 +474,13 @@
ctor public Notification.TvExtender();
ctor public Notification.TvExtender(android.app.Notification);
method public android.app.Notification.Builder extend(android.app.Notification.Builder);
- method public java.lang.String getChannelId();
+ method public String getChannelId();
method public android.app.PendingIntent getContentIntent();
method public android.app.PendingIntent getDeleteIntent();
method public boolean getSuppressShowOverApps();
method public boolean isAvailableOnTv();
- method public android.app.Notification.TvExtender setChannel(java.lang.String);
- method public android.app.Notification.TvExtender setChannelId(java.lang.String);
+ method public android.app.Notification.TvExtender setChannel(String);
+ method public android.app.Notification.TvExtender setChannelId(String);
method public android.app.Notification.TvExtender setContentIntent(android.app.PendingIntent);
method public android.app.Notification.TvExtender setDeleteIntent(android.app.PendingIntent);
method public android.app.Notification.TvExtender setSuppressShowOverApps(boolean);
@@ -494,36 +499,36 @@
}
public final class StatsManager {
- method public void addConfig(long, byte[]) throws android.app.StatsManager.StatsUnavailableException;
- method public deprecated boolean addConfiguration(long, byte[]);
- method public deprecated byte[] getData(long);
- method public deprecated byte[] getMetadata();
- method public byte[] getReports(long) throws android.app.StatsManager.StatsUnavailableException;
- method public byte[] getStatsMetadata() throws android.app.StatsManager.StatsUnavailableException;
- method public void removeConfig(long) throws android.app.StatsManager.StatsUnavailableException;
- method public deprecated boolean removeConfiguration(long);
- method public void setBroadcastSubscriber(android.app.PendingIntent, long, long) throws android.app.StatsManager.StatsUnavailableException;
- method public deprecated boolean setBroadcastSubscriber(long, long, android.app.PendingIntent);
- method public deprecated boolean setDataFetchOperation(long, android.app.PendingIntent);
- method public void setFetchReportsOperation(android.app.PendingIntent, long) throws android.app.StatsManager.StatsUnavailableException;
- field public static final java.lang.String ACTION_STATSD_STARTED = "android.app.action.STATSD_STARTED";
- field public static final java.lang.String EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES = "android.app.extra.STATS_BROADCAST_SUBSCRIBER_COOKIES";
- field public static final java.lang.String EXTRA_STATS_CONFIG_KEY = "android.app.extra.STATS_CONFIG_KEY";
- field public static final java.lang.String EXTRA_STATS_CONFIG_UID = "android.app.extra.STATS_CONFIG_UID";
- field public static final java.lang.String EXTRA_STATS_DIMENSIONS_VALUE = "android.app.extra.STATS_DIMENSIONS_VALUE";
- field public static final java.lang.String EXTRA_STATS_SUBSCRIPTION_ID = "android.app.extra.STATS_SUBSCRIPTION_ID";
- field public static final java.lang.String EXTRA_STATS_SUBSCRIPTION_RULE_ID = "android.app.extra.STATS_SUBSCRIPTION_RULE_ID";
+ method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void addConfig(long, byte[]) throws android.app.StatsManager.StatsUnavailableException;
+ method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean addConfiguration(long, byte[]);
+ method @Deprecated @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getData(long);
+ method @Deprecated @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getMetadata();
+ method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getReports(long) throws android.app.StatsManager.StatsUnavailableException;
+ method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getStatsMetadata() throws android.app.StatsManager.StatsUnavailableException;
+ method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void removeConfig(long) throws android.app.StatsManager.StatsUnavailableException;
+ method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean removeConfiguration(long);
+ method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void setBroadcastSubscriber(android.app.PendingIntent, long, long) throws android.app.StatsManager.StatsUnavailableException;
+ method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean setBroadcastSubscriber(long, long, android.app.PendingIntent);
+ method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean setDataFetchOperation(long, android.app.PendingIntent);
+ method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void setFetchReportsOperation(android.app.PendingIntent, long) throws android.app.StatsManager.StatsUnavailableException;
+ field public static final String ACTION_STATSD_STARTED = "android.app.action.STATSD_STARTED";
+ field public static final String EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES = "android.app.extra.STATS_BROADCAST_SUBSCRIBER_COOKIES";
+ field public static final String EXTRA_STATS_CONFIG_KEY = "android.app.extra.STATS_CONFIG_KEY";
+ field public static final String EXTRA_STATS_CONFIG_UID = "android.app.extra.STATS_CONFIG_UID";
+ field public static final String EXTRA_STATS_DIMENSIONS_VALUE = "android.app.extra.STATS_DIMENSIONS_VALUE";
+ field public static final String EXTRA_STATS_SUBSCRIPTION_ID = "android.app.extra.STATS_SUBSCRIPTION_ID";
+ field public static final String EXTRA_STATS_SUBSCRIPTION_RULE_ID = "android.app.extra.STATS_SUBSCRIPTION_RULE_ID";
}
public static class StatsManager.StatsUnavailableException extends android.util.AndroidException {
- ctor public StatsManager.StatsUnavailableException(java.lang.String);
- ctor public StatsManager.StatsUnavailableException(java.lang.String, java.lang.Throwable);
+ ctor public StatsManager.StatsUnavailableException(String);
+ ctor public StatsManager.StatsUnavailableException(String, Throwable);
}
public final class Vr2dDisplayProperties implements android.os.Parcelable {
ctor public Vr2dDisplayProperties(int, int, int);
method public int describeContents();
- method public void dump(java.io.PrintWriter, java.lang.String);
+ method public void dump(java.io.PrintWriter, String);
method public int getAddedFlags();
method public int getDpi();
method public int getHeight();
@@ -544,16 +549,16 @@
}
public class VrManager {
- method public int getVr2dDisplayId();
- method public boolean isPersistentVrModeEnabled();
- method public boolean isVrModeEnabled();
- method public void registerVrStateCallback(java.util.concurrent.Executor, android.app.VrStateCallback);
- method public void setAndBindVrCompositor(android.content.ComponentName);
- method public void setPersistentVrModeEnabled(boolean);
- method public void setStandbyEnabled(boolean);
- method public void setVr2dDisplayProperties(android.app.Vr2dDisplayProperties);
- method public void setVrInputMethod(android.content.ComponentName);
- method public void unregisterVrStateCallback(android.app.VrStateCallback);
+ method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public int getVr2dDisplayId();
+ method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isPersistentVrModeEnabled();
+ method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isVrModeEnabled();
+ method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void registerVrStateCallback(@NonNull java.util.concurrent.Executor, android.app.VrStateCallback);
+ method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setAndBindVrCompositor(android.content.ComponentName);
+ method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setPersistentVrModeEnabled(boolean);
+ method @RequiresPermission("android.permission.ACCESS_VR_MANAGER") public void setStandbyEnabled(boolean);
+ method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVr2dDisplayProperties(android.app.Vr2dDisplayProperties);
+ method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVrInputMethod(android.content.ComponentName);
+ method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void unregisterVrStateCallback(android.app.VrStateCallback);
}
public abstract class VrStateCallback {
@@ -563,7 +568,7 @@
}
public final class WallpaperColors implements android.os.Parcelable {
- ctor public WallpaperColors(android.graphics.Color, android.graphics.Color, android.graphics.Color, int);
+ ctor public WallpaperColors(@NonNull android.graphics.Color, @Nullable android.graphics.Color, @Nullable android.graphics.Color, int);
method public int getColorHints();
field public static final int HINT_SUPPORTS_DARK_TEXT = 1; // 0x1
field public static final int HINT_SUPPORTS_DARK_THEME = 2; // 0x2
@@ -574,9 +579,9 @@
}
public class WallpaperManager {
- method public void clearWallpaper(int, int);
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void clearWallpaper(int, int);
method public void setDisplayOffset(android.os.IBinder, int, int);
- method public boolean setWallpaperComponent(android.content.ComponentName);
+ method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_COMPONENT) public boolean setWallpaperComponent(android.content.ComponentName);
}
}
@@ -584,41 +589,41 @@
package android.app.admin {
public class DevicePolicyManager {
- method public java.lang.String getDeviceOwner();
- method public android.content.ComponentName getDeviceOwnerComponentOnAnyUser();
- method public java.lang.String getDeviceOwnerNameOnAnyUser();
- method public java.lang.CharSequence getDeviceOwnerOrganizationName();
- method public android.os.UserHandle getDeviceOwnerUser();
- method public java.util.List<java.lang.String> getPermittedAccessibilityServices(int);
- method public java.util.List<java.lang.String> getPermittedInputMethodsForCurrentUser();
- method public android.content.ComponentName getProfileOwner() throws java.lang.IllegalArgumentException;
- method public android.content.ComponentName getProfileOwnerAsUser(android.os.UserHandle);
- method public java.lang.String getProfileOwnerNameAsUser(int) throws java.lang.IllegalArgumentException;
- method public int getUserProvisioningState();
+ method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getDeviceOwner();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.content.ComponentName getDeviceOwnerComponentOnAnyUser();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getDeviceOwnerNameOnAnyUser();
+ method @Nullable public CharSequence getDeviceOwnerOrganizationName();
+ method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getDeviceOwnerUser();
+ method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedAccessibilityServices(int);
+ method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedInputMethodsForCurrentUser();
+ method @Nullable public android.content.ComponentName getProfileOwner() throws java.lang.IllegalArgumentException;
+ method @Nullable @RequiresPermission(value=android.Manifest.permission.INTERACT_ACROSS_USERS, conditional=true) public android.content.ComponentName getProfileOwnerAsUser(@NonNull android.os.UserHandle);
+ method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getProfileOwnerNameAsUser(int) throws java.lang.IllegalArgumentException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserProvisioningState();
method public boolean isDeviceManaged();
- method public boolean isDeviceProvisioned();
- method public boolean isDeviceProvisioningConfigApplied();
- method public boolean isManagedKiosk();
- method public boolean isUnattendedManagedKiosk();
- method public void notifyPendingSystemUpdate(long);
- method public void notifyPendingSystemUpdate(long, boolean);
- method public boolean packageHasActiveAdmins(java.lang.String);
- method public deprecated boolean setActiveProfileOwner(android.content.ComponentName, java.lang.String) throws java.lang.IllegalArgumentException;
- method public void setDeviceProvisioningConfigApplied();
- method public void setProfileOwnerCanAccessDeviceIdsForUser(android.content.ComponentName, android.os.UserHandle);
- field public static final java.lang.String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
- field public static final java.lang.String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
- field public static final java.lang.String ACTION_PROVISION_FINALIZATION = "android.app.action.PROVISION_FINALIZATION";
- field public static final java.lang.String ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE = "android.app.action.PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE";
- field public static final java.lang.String ACTION_SET_PROFILE_OWNER = "android.app.action.SET_PROFILE_OWNER";
- field public static final java.lang.String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE";
- field public static final java.lang.String EXTRA_PROFILE_OWNER_NAME = "android.app.extra.PROFILE_OWNER_NAME";
- field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI";
- field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL";
- field public static final java.lang.String EXTRA_PROVISIONING_ORGANIZATION_NAME = "android.app.extra.PROVISIONING_ORGANIZATION_NAME";
- field public static final java.lang.String EXTRA_PROVISIONING_SUPPORT_URL = "android.app.extra.PROVISIONING_SUPPORT_URL";
- field public static final java.lang.String EXTRA_PROVISIONING_TRIGGER = "android.app.extra.PROVISIONING_TRIGGER";
- field public static final java.lang.String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION";
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioned();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioningConfigApplied();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isManagedKiosk();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUnattendedManagedKiosk();
+ method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long);
+ method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long, boolean);
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public boolean packageHasActiveAdmins(String);
+ method @Deprecated @RequiresPermission("android.permission.MANAGE_DEVICE_ADMINS") public boolean setActiveProfileOwner(@NonNull android.content.ComponentName, String) throws java.lang.IllegalArgumentException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setDeviceProvisioningConfigApplied();
+ method public void setProfileOwnerCanAccessDeviceIdsForUser(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
+ field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
+ field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
+ field public static final String ACTION_PROVISION_FINALIZATION = "android.app.action.PROVISION_FINALIZATION";
+ field public static final String ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE = "android.app.action.PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE";
+ field public static final String ACTION_SET_PROFILE_OWNER = "android.app.action.SET_PROFILE_OWNER";
+ field public static final String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE";
+ field public static final String EXTRA_PROFILE_OWNER_NAME = "android.app.extra.PROFILE_OWNER_NAME";
+ field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI";
+ field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL";
+ field public static final String EXTRA_PROVISIONING_ORGANIZATION_NAME = "android.app.extra.PROVISIONING_ORGANIZATION_NAME";
+ field public static final String EXTRA_PROVISIONING_SUPPORT_URL = "android.app.extra.PROVISIONING_SUPPORT_URL";
+ field public static final String EXTRA_PROVISIONING_TRIGGER = "android.app.extra.PROVISIONING_TRIGGER";
+ field public static final String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION";
field public static final int PROVISIONING_TRIGGER_CLOUD_ENROLLMENT = 1; // 0x1
field public static final int PROVISIONING_TRIGGER_PERSISTENT_DEVICE_OWNER = 3; // 0x3
field public static final int PROVISIONING_TRIGGER_QR_CODE = 2; // 0x2
@@ -662,28 +667,28 @@
}
public class BackupManager {
- method public void backupNow();
- method public android.app.backup.RestoreSession beginRestoreSession();
- method public void cancelBackups();
- method public long getAvailableRestoreToken(java.lang.String);
- method public android.content.Intent getConfigurationIntent(java.lang.String);
- method public java.lang.String getCurrentTransport();
- method public android.content.ComponentName getCurrentTransportComponent();
- method public android.content.Intent getDataManagementIntent(java.lang.String);
- method public java.lang.String getDataManagementLabel(java.lang.String);
- method public java.lang.String getDestinationString(java.lang.String);
- method public boolean isAppEligibleForBackup(java.lang.String);
- method public boolean isBackupEnabled();
- method public boolean isBackupServiceActive(android.os.UserHandle);
- method public java.lang.String[] listAllTransports();
- method public int requestBackup(java.lang.String[], android.app.backup.BackupObserver);
- method public int requestBackup(java.lang.String[], android.app.backup.BackupObserver, android.app.backup.BackupManagerMonitor, int);
- method public deprecated int requestRestore(android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
- method public deprecated java.lang.String selectBackupTransport(java.lang.String);
- method public void selectBackupTransport(android.content.ComponentName, android.app.backup.SelectBackupTransportCallback);
- method public void setAutoRestore(boolean);
- method public void setBackupEnabled(boolean);
- method public void updateTransportAttributes(android.content.ComponentName, java.lang.String, android.content.Intent, java.lang.String, android.content.Intent, java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public void backupNow();
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public android.app.backup.RestoreSession beginRestoreSession();
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public void cancelBackups();
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public long getAvailableRestoreToken(String);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.Intent getConfigurationIntent(String);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public String getCurrentTransport();
+ method @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.ComponentName getCurrentTransportComponent();
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.Intent getDataManagementIntent(String);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public String getDataManagementLabel(String);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public String getDestinationString(String);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isAppEligibleForBackup(String);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isBackupEnabled();
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isBackupServiceActive(android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public String[] listAllTransports();
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public int requestBackup(String[], android.app.backup.BackupObserver);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public int requestBackup(String[], android.app.backup.BackupObserver, android.app.backup.BackupManagerMonitor, int);
+ method @Deprecated public int requestRestore(android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.BACKUP) public String selectBackupTransport(String);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public void selectBackupTransport(android.content.ComponentName, android.app.backup.SelectBackupTransportCallback);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public void setAutoRestore(boolean);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public void setBackupEnabled(boolean);
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public void updateTransportAttributes(android.content.ComponentName, String, @Nullable android.content.Intent, String, @Nullable android.content.Intent, @Nullable String);
field public static final int ERROR_AGENT_FAILURE = -1003; // 0xfffffc15
field public static final int ERROR_BACKUP_CANCELLED = -2003; // 0xfffff82d
field public static final int ERROR_BACKUP_NOT_ALLOWED = -2001; // 0xfffff82f
@@ -694,28 +699,28 @@
field public static final int ERROR_TRANSPORT_QUOTA_EXCEEDED = -1005; // 0xfffffc13
field public static final int ERROR_TRANSPORT_UNAVAILABLE = -1; // 0xffffffff
field public static final int FLAG_NON_INCREMENTAL_BACKUP = 1; // 0x1
- field public static final java.lang.String PACKAGE_MANAGER_SENTINEL = "@pm@";
+ field public static final String PACKAGE_MANAGER_SENTINEL = "@pm@";
field public static final int SUCCESS = 0; // 0x0
}
public class BackupManagerMonitor {
ctor public BackupManagerMonitor();
method public void onEvent(android.os.Bundle);
- field public static final java.lang.String EXTRA_LOG_CANCEL_ALL = "android.app.backup.extra.LOG_CANCEL_ALL";
- field public static final java.lang.String EXTRA_LOG_EVENT_CATEGORY = "android.app.backup.extra.LOG_EVENT_CATEGORY";
- field public static final java.lang.String EXTRA_LOG_EVENT_ID = "android.app.backup.extra.LOG_EVENT_ID";
- field public static final java.lang.String EXTRA_LOG_EVENT_PACKAGE_LONG_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_FULL_VERSION";
- field public static final java.lang.String EXTRA_LOG_EVENT_PACKAGE_NAME = "android.app.backup.extra.LOG_EVENT_PACKAGE_NAME";
- field public static final deprecated java.lang.String EXTRA_LOG_EVENT_PACKAGE_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_VERSION";
- field public static final java.lang.String EXTRA_LOG_EXCEPTION_FULL_BACKUP = "android.app.backup.extra.LOG_EXCEPTION_FULL_BACKUP";
- field public static final java.lang.String EXTRA_LOG_ILLEGAL_KEY = "android.app.backup.extra.LOG_ILLEGAL_KEY";
- field public static final java.lang.String EXTRA_LOG_MANIFEST_PACKAGE_NAME = "android.app.backup.extra.LOG_MANIFEST_PACKAGE_NAME";
- field public static final java.lang.String EXTRA_LOG_OLD_VERSION = "android.app.backup.extra.LOG_OLD_VERSION";
- field public static final java.lang.String EXTRA_LOG_POLICY_ALLOW_APKS = "android.app.backup.extra.LOG_POLICY_ALLOW_APKS";
- field public static final java.lang.String EXTRA_LOG_PREFLIGHT_ERROR = "android.app.backup.extra.LOG_PREFLIGHT_ERROR";
- field public static final java.lang.String EXTRA_LOG_RESTORE_ANYWAY = "android.app.backup.extra.LOG_RESTORE_ANYWAY";
- field public static final java.lang.String EXTRA_LOG_RESTORE_VERSION = "android.app.backup.extra.LOG_RESTORE_VERSION";
- field public static final java.lang.String EXTRA_LOG_WIDGET_PACKAGE_NAME = "android.app.backup.extra.LOG_WIDGET_PACKAGE_NAME";
+ field public static final String EXTRA_LOG_CANCEL_ALL = "android.app.backup.extra.LOG_CANCEL_ALL";
+ field public static final String EXTRA_LOG_EVENT_CATEGORY = "android.app.backup.extra.LOG_EVENT_CATEGORY";
+ field public static final String EXTRA_LOG_EVENT_ID = "android.app.backup.extra.LOG_EVENT_ID";
+ field public static final String EXTRA_LOG_EVENT_PACKAGE_LONG_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_FULL_VERSION";
+ field public static final String EXTRA_LOG_EVENT_PACKAGE_NAME = "android.app.backup.extra.LOG_EVENT_PACKAGE_NAME";
+ field @Deprecated public static final String EXTRA_LOG_EVENT_PACKAGE_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_VERSION";
+ field public static final String EXTRA_LOG_EXCEPTION_FULL_BACKUP = "android.app.backup.extra.LOG_EXCEPTION_FULL_BACKUP";
+ field public static final String EXTRA_LOG_ILLEGAL_KEY = "android.app.backup.extra.LOG_ILLEGAL_KEY";
+ field public static final String EXTRA_LOG_MANIFEST_PACKAGE_NAME = "android.app.backup.extra.LOG_MANIFEST_PACKAGE_NAME";
+ field public static final String EXTRA_LOG_OLD_VERSION = "android.app.backup.extra.LOG_OLD_VERSION";
+ field public static final String EXTRA_LOG_POLICY_ALLOW_APKS = "android.app.backup.extra.LOG_POLICY_ALLOW_APKS";
+ field public static final String EXTRA_LOG_PREFLIGHT_ERROR = "android.app.backup.extra.LOG_PREFLIGHT_ERROR";
+ field public static final String EXTRA_LOG_RESTORE_ANYWAY = "android.app.backup.extra.LOG_RESTORE_ANYWAY";
+ field public static final String EXTRA_LOG_RESTORE_VERSION = "android.app.backup.extra.LOG_RESTORE_VERSION";
+ field public static final String EXTRA_LOG_WIDGET_PACKAGE_NAME = "android.app.backup.extra.LOG_WIDGET_PACKAGE_NAME";
field public static final int LOG_EVENT_CATEGORY_AGENT = 2; // 0x2
field public static final int LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY = 3; // 0x3
field public static final int LOG_EVENT_CATEGORY_TRANSPORT = 1; // 0x1
@@ -766,8 +771,8 @@
public abstract class BackupObserver {
ctor public BackupObserver();
method public void backupFinished(int);
- method public void onResult(java.lang.String, int);
- method public void onUpdate(java.lang.String, android.app.backup.BackupProgress);
+ method public void onResult(String, int);
+ method public void onUpdate(String, android.app.backup.BackupProgress);
}
public class BackupProgress implements android.os.Parcelable {
@@ -786,13 +791,13 @@
method public int checkFullBackupSize(long);
method public int clearBackupData(android.content.pm.PackageInfo);
method public android.content.Intent configurationIntent();
- method public java.lang.String currentDestinationString();
+ method public String currentDestinationString();
method public android.content.Intent dataManagementIntent();
- method public java.lang.String dataManagementLabel();
+ method public String dataManagementLabel();
method public int finishBackup();
method public void finishRestore();
method public android.app.backup.RestoreSet[] getAvailableRestoreSets();
- method public long getBackupQuota(java.lang.String, boolean);
+ method public long getBackupQuota(String, boolean);
method public android.os.IBinder getBinder();
method public long getCurrentRestoreSet();
method public int getNextFullRestoreDataChunk(android.os.ParcelFileDescriptor);
@@ -800,7 +805,7 @@
method public int getTransportFlags();
method public int initializeDevice();
method public boolean isAppEligibleForBackup(android.content.pm.PackageInfo, boolean);
- method public java.lang.String name();
+ method public String name();
method public android.app.backup.RestoreDescription nextRestorePackage();
method public int performBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor, int);
method public int performBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor);
@@ -810,10 +815,10 @@
method public long requestFullBackupTime();
method public int sendBackupData(int);
method public int startRestore(long, android.content.pm.PackageInfo[]);
- method public java.lang.String transportDirName();
+ method public String transportDirName();
field public static final int AGENT_ERROR = -1003; // 0xfffffc15
field public static final int AGENT_UNKNOWN = -1004; // 0xfffffc14
- field public static final java.lang.String EXTRA_TRANSPORT_REGISTRATION = "android.app.backup.extra.TRANSPORT_REGISTRATION";
+ field public static final String EXTRA_TRANSPORT_REGISTRATION = "android.app.backup.extra.TRANSPORT_REGISTRATION";
field public static final int FLAG_INCREMENTAL = 2; // 0x2
field public static final int FLAG_NON_INCREMENTAL = 4; // 0x4
field public static final int FLAG_USER_INITIATED = 1; // 0x1
@@ -827,10 +832,10 @@
}
public class RestoreDescription implements android.os.Parcelable {
- ctor public RestoreDescription(java.lang.String, int);
+ ctor public RestoreDescription(String, int);
method public int describeContents();
method public int getDataType();
- method public java.lang.String getPackageName();
+ method public String getPackageName();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.backup.RestoreDescription> CREATOR;
field public static final android.app.backup.RestoreDescription NO_MORE_PACKAGES;
@@ -848,27 +853,27 @@
method public int getAvailableRestoreSets(android.app.backup.RestoreObserver);
method public int restoreAll(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
method public int restoreAll(long, android.app.backup.RestoreObserver);
- method public int restorePackage(java.lang.String, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
- method public int restorePackage(java.lang.String, android.app.backup.RestoreObserver);
- method public int restoreSome(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor, java.lang.String[]);
- method public int restoreSome(long, android.app.backup.RestoreObserver, java.lang.String[]);
+ method public int restorePackage(String, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
+ method public int restorePackage(String, android.app.backup.RestoreObserver);
+ method public int restoreSome(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor, String[]);
+ method public int restoreSome(long, android.app.backup.RestoreObserver, String[]);
}
public class RestoreSet implements android.os.Parcelable {
ctor public RestoreSet();
- ctor public RestoreSet(java.lang.String, java.lang.String, long);
+ ctor public RestoreSet(String, String, long);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.backup.RestoreSet> CREATOR;
- field public java.lang.String device;
- field public java.lang.String name;
+ field public String device;
+ field public String name;
field public long token;
}
public abstract class SelectBackupTransportCallback {
ctor public SelectBackupTransportCallback();
method public void onFailure(int);
- method public void onSuccess(java.lang.String);
+ method public void onSuccess(String);
}
}
@@ -884,42 +889,42 @@
}
public static final class ClassificationsRequest.Builder {
- ctor public ClassificationsRequest.Builder(java.util.List<android.app.contentsuggestions.ContentSelection>);
+ ctor public ClassificationsRequest.Builder(@NonNull java.util.List<android.app.contentsuggestions.ContentSelection>);
method public android.app.contentsuggestions.ClassificationsRequest build();
- method public android.app.contentsuggestions.ClassificationsRequest.Builder setExtras(android.os.Bundle);
+ method public android.app.contentsuggestions.ClassificationsRequest.Builder setExtras(@NonNull android.os.Bundle);
}
public final class ContentClassification implements android.os.Parcelable {
- ctor public ContentClassification(java.lang.String, android.os.Bundle);
+ ctor public ContentClassification(@NonNull String, @NonNull android.os.Bundle);
method public int describeContents();
method public android.os.Bundle getExtras();
- method public java.lang.String getId();
+ method public String getId();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ContentClassification> CREATOR;
}
public final class ContentSelection implements android.os.Parcelable {
- ctor public ContentSelection(java.lang.String, android.os.Bundle);
+ ctor public ContentSelection(@NonNull String, @NonNull android.os.Bundle);
method public int describeContents();
method public android.os.Bundle getExtras();
- method public java.lang.String getId();
+ method public String getId();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ContentSelection> CREATOR;
}
public final class ContentSuggestionsManager {
- method public void classifyContentSelections(android.app.contentsuggestions.ClassificationsRequest, java.util.concurrent.Executor, android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
- method public void notifyInteraction(java.lang.String, android.os.Bundle);
- method public void provideContextImage(int, android.os.Bundle);
- method public void suggestContentSelections(android.app.contentsuggestions.SelectionsRequest, java.util.concurrent.Executor, android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
+ method public void classifyContentSelections(@NonNull android.app.contentsuggestions.ClassificationsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
+ method public void notifyInteraction(@NonNull String, @NonNull android.os.Bundle);
+ method public void provideContextImage(int, @NonNull android.os.Bundle);
+ method public void suggestContentSelections(@NonNull android.app.contentsuggestions.SelectionsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
}
- public static abstract interface ContentSuggestionsManager.ClassificationsCallback {
- method public abstract void onContentClassificationsAvailable(int, java.util.List<android.app.contentsuggestions.ContentClassification>);
+ public static interface ContentSuggestionsManager.ClassificationsCallback {
+ method public void onContentClassificationsAvailable(int, @NonNull java.util.List<android.app.contentsuggestions.ContentClassification>);
}
- public static abstract interface ContentSuggestionsManager.SelectionsCallback {
- method public abstract void onContentSelectionsAvailable(int, java.util.List<android.app.contentsuggestions.ContentSelection>);
+ public static interface ContentSuggestionsManager.SelectionsCallback {
+ method public void onContentSelectionsAvailable(int, @NonNull java.util.List<android.app.contentsuggestions.ContentSelection>);
}
public final class SelectionsRequest implements android.os.Parcelable {
@@ -934,8 +939,8 @@
public static final class SelectionsRequest.Builder {
ctor public SelectionsRequest.Builder(int);
method public android.app.contentsuggestions.SelectionsRequest build();
- method public android.app.contentsuggestions.SelectionsRequest.Builder setExtras(android.os.Bundle);
- method public android.app.contentsuggestions.SelectionsRequest.Builder setInterestPoint(android.graphics.Point);
+ method public android.app.contentsuggestions.SelectionsRequest.Builder setExtras(@NonNull android.os.Bundle);
+ method public android.app.contentsuggestions.SelectionsRequest.Builder setInterestPoint(@NonNull android.graphics.Point);
}
}
@@ -943,7 +948,7 @@
package android.app.job {
public abstract class JobScheduler {
- method public abstract int scheduleAsPackage(android.app.job.JobInfo, java.lang.String, int, java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public abstract int scheduleAsPackage(@NonNull android.app.job.JobInfo, @NonNull String, int, String);
}
}
@@ -952,23 +957,23 @@
public final class AppPredictionContext implements android.os.Parcelable {
method public int describeContents();
- method public android.os.Bundle getExtras();
- method public java.lang.String getPackageName();
+ method @Nullable public android.os.Bundle getExtras();
+ method @NonNull public String getPackageName();
method public int getPredictedTargetCount();
- method public java.lang.String getUiSurface();
+ method public String getUiSurface();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionContext> CREATOR;
}
public static final class AppPredictionContext.Builder {
method public android.app.prediction.AppPredictionContext build();
- method public android.app.prediction.AppPredictionContext.Builder setExtras(android.os.Bundle);
+ method public android.app.prediction.AppPredictionContext.Builder setExtras(@Nullable android.os.Bundle);
method public android.app.prediction.AppPredictionContext.Builder setPredictedTargetCount(int);
- method public android.app.prediction.AppPredictionContext.Builder setUiSurface(java.lang.String);
+ method public android.app.prediction.AppPredictionContext.Builder setUiSurface(@Nullable String);
}
public final class AppPredictionManager {
- method public android.app.prediction.AppPredictor createAppPredictionSession(android.app.prediction.AppPredictionContext);
+ method public android.app.prediction.AppPredictor createAppPredictionSession(@NonNull android.app.prediction.AppPredictionContext);
}
public final class AppPredictionSessionId implements android.os.Parcelable {
@@ -979,35 +984,35 @@
public final class AppPredictor {
method public void destroy();
- method public void notifyAppTargetEvent(android.app.prediction.AppTargetEvent);
- method public void notifyLocationShown(java.lang.String, java.util.List<android.app.prediction.AppTargetId>);
- method public void registerPredictionUpdates(java.util.concurrent.Executor, android.app.prediction.AppPredictor.Callback);
+ method public void notifyAppTargetEvent(@NonNull android.app.prediction.AppTargetEvent);
+ method public void notifyLocationShown(@NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
+ method public void registerPredictionUpdates(@NonNull java.util.concurrent.Executor, @NonNull android.app.prediction.AppPredictor.Callback);
method public void requestPredictionUpdate();
- method public void sortTargets(java.util.List<android.app.prediction.AppTarget>, java.util.concurrent.Executor, java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
- method public void unregisterPredictionUpdates(android.app.prediction.AppPredictor.Callback);
+ method @Nullable public void sortTargets(@NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
+ method public void unregisterPredictionUpdates(@NonNull android.app.prediction.AppPredictor.Callback);
}
- public static abstract interface AppPredictor.Callback {
- method public abstract void onTargetsAvailable(java.util.List<android.app.prediction.AppTarget>);
+ public static interface AppPredictor.Callback {
+ method public void onTargetsAvailable(@NonNull java.util.List<android.app.prediction.AppTarget>);
}
public final class AppTarget implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getClassName();
- method public android.app.prediction.AppTargetId getId();
- method public java.lang.String getPackageName();
+ method @Nullable public String getClassName();
+ method @NonNull public android.app.prediction.AppTargetId getId();
+ method @NonNull public String getPackageName();
method public int getRank();
- method public android.content.pm.ShortcutInfo getShortcutInfo();
- method public android.os.UserHandle getUser();
+ method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
+ method @NonNull public android.os.UserHandle getUser();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.prediction.AppTarget> CREATOR;
}
public final class AppTargetEvent implements android.os.Parcelable {
method public int describeContents();
- method public int getAction();
- method public java.lang.String getLaunchLocation();
- method public android.app.prediction.AppTarget getTarget();
+ method @NonNull public int getAction();
+ method @NonNull public String getLaunchLocation();
+ method @Nullable public android.app.prediction.AppTarget getTarget();
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACTION_DISMISS = 2; // 0x2
field public static final int ACTION_LAUNCH = 1; // 0x1
@@ -1016,9 +1021,9 @@
}
public static final class AppTargetEvent.Builder {
- ctor public AppTargetEvent.Builder(android.app.prediction.AppTarget, int);
+ ctor public AppTargetEvent.Builder(@Nullable android.app.prediction.AppTarget, int);
method public android.app.prediction.AppTargetEvent build();
- method public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(java.lang.String);
+ method public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(String);
}
public final class AppTargetId implements android.os.Parcelable {
@@ -1031,27 +1036,27 @@
package android.app.role {
- public abstract interface OnRoleHoldersChangedListener {
- method public abstract void onRoleHoldersChanged(java.lang.String, android.os.UserHandle);
+ public interface OnRoleHoldersChangedListener {
+ method public void onRoleHoldersChanged(@NonNull String, @NonNull android.os.UserHandle);
}
public final class RoleManager {
- method public void addOnRoleHoldersChangedListenerAsUser(java.util.concurrent.Executor, android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle);
- method public void addRoleHolderAsUser(java.lang.String, java.lang.String, android.os.UserHandle, java.util.concurrent.Executor, android.app.role.RoleManagerCallback);
- method public boolean addRoleHolderFromController(java.lang.String, java.lang.String);
- method public void clearRoleHoldersAsUser(java.lang.String, android.os.UserHandle, java.util.concurrent.Executor, android.app.role.RoleManagerCallback);
- method public java.util.List<java.lang.String> getHeldRolesFromController(java.lang.String);
- method public java.util.List<java.lang.String> getRoleHolders(java.lang.String);
- method public java.util.List<java.lang.String> getRoleHoldersAsUser(java.lang.String, android.os.UserHandle);
- method public void removeOnRoleHoldersChangedListenerAsUser(android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle);
- method public void removeRoleHolderAsUser(java.lang.String, java.lang.String, android.os.UserHandle, java.util.concurrent.Executor, android.app.role.RoleManagerCallback);
- method public boolean removeRoleHolderFromController(java.lang.String, java.lang.String);
- method public void setRoleNamesFromController(java.util.List<java.lang.String>);
+ method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void addOnRoleHoldersChangedListenerAsUser(@NonNull java.util.concurrent.Executor, @NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void addRoleHolderAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull android.app.role.RoleManagerCallback);
+ method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean addRoleHolderFromController(@NonNull String, @NonNull String);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void clearRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull android.app.role.RoleManagerCallback);
+ method @NonNull @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public java.util.List<java.lang.String> getHeldRolesFromController(@NonNull String);
+ method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHolders(@NonNull String);
+ method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void removeOnRoleHoldersChangedListenerAsUser(@NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void removeRoleHolderAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull android.app.role.RoleManagerCallback);
+ method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean removeRoleHolderFromController(@NonNull String, @NonNull String);
+ method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>);
}
- public abstract interface RoleManagerCallback {
- method public abstract void onFailure();
- method public abstract void onSuccess();
+ public interface RoleManagerCallback {
+ method public void onFailure();
+ method public void onSuccess();
}
}
@@ -1064,7 +1069,7 @@
method public long getQuota();
method public int getUid();
method public android.app.usage.UsageStats getUsageStats();
- method public java.lang.String getVolumeUuid();
+ method public String getVolumeUuid();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.usage.CacheQuotaHint> CREATOR;
field public static final long QUOTA_NOT_SET = -1L; // 0xffffffffffffffffL
@@ -1073,23 +1078,23 @@
public static final class CacheQuotaHint.Builder {
ctor public CacheQuotaHint.Builder();
ctor public CacheQuotaHint.Builder(android.app.usage.CacheQuotaHint);
- method public android.app.usage.CacheQuotaHint build();
- method public android.app.usage.CacheQuotaHint.Builder setQuota(long);
- method public android.app.usage.CacheQuotaHint.Builder setUid(int);
- method public android.app.usage.CacheQuotaHint.Builder setUsageStats(android.app.usage.UsageStats);
- method public android.app.usage.CacheQuotaHint.Builder setVolumeUuid(java.lang.String);
+ method @NonNull public android.app.usage.CacheQuotaHint build();
+ method @NonNull public android.app.usage.CacheQuotaHint.Builder setQuota(long);
+ method @NonNull public android.app.usage.CacheQuotaHint.Builder setUid(int);
+ method @NonNull public android.app.usage.CacheQuotaHint.Builder setUsageStats(@Nullable android.app.usage.UsageStats);
+ method @NonNull public android.app.usage.CacheQuotaHint.Builder setVolumeUuid(@Nullable String);
}
public abstract class CacheQuotaService extends android.app.Service {
ctor public CacheQuotaService();
method public android.os.IBinder onBind(android.content.Intent);
method public abstract java.util.List<android.app.usage.CacheQuotaHint> onComputeCacheQuotaHints(java.util.List<android.app.usage.CacheQuotaHint>);
- field public static final java.lang.String SERVICE_INTERFACE = "android.app.usage.CacheQuotaService";
+ field public static final String SERVICE_INTERFACE = "android.app.usage.CacheQuotaService";
}
public static final class UsageEvents.Event {
method public int getInstanceId();
- method public java.lang.String getNotificationChannelId();
+ method public String getNotificationChannelId();
field public static final int NOTIFICATION_INTERRUPTION = 12; // 0xc
field public static final int NOTIFICATION_SEEN = 10; // 0xa
field public static final int SLICE_PINNED = 14; // 0xe
@@ -1102,21 +1107,21 @@
}
public final class UsageStatsManager {
- method public int getAppStandbyBucket(java.lang.String);
- method public java.util.Map<java.lang.String, java.lang.Integer> getAppStandbyBuckets();
- method public void registerAppUsageObserver(int, java.lang.String[], long, java.util.concurrent.TimeUnit, android.app.PendingIntent);
- method public void registerUsageSessionObserver(int, java.lang.String[], long, java.util.concurrent.TimeUnit, long, java.util.concurrent.TimeUnit, android.app.PendingIntent, android.app.PendingIntent);
- method public void reportUsageStart(android.app.Activity, java.lang.String);
- method public void reportUsageStart(android.app.Activity, java.lang.String, long);
- method public void reportUsageStop(android.app.Activity, java.lang.String);
- method public void setAppStandbyBucket(java.lang.String, int);
- method public void setAppStandbyBuckets(java.util.Map<java.lang.String, java.lang.Integer>);
- method public void unregisterAppUsageObserver(int);
- method public void unregisterUsageSessionObserver(int);
- method public void whitelistAppTemporarily(java.lang.String, long, android.os.UserHandle);
- field public static final java.lang.String EXTRA_OBSERVER_ID = "android.app.usage.extra.OBSERVER_ID";
- field public static final java.lang.String EXTRA_TIME_LIMIT = "android.app.usage.extra.TIME_LIMIT";
- field public static final java.lang.String EXTRA_TIME_USED = "android.app.usage.extra.TIME_USED";
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getAppStandbyBucket(String);
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public java.util.Map<java.lang.String,java.lang.Integer> getAppStandbyBuckets();
+ method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerAppUsageObserver(int, @NonNull String[], long, @NonNull java.util.concurrent.TimeUnit, @NonNull android.app.PendingIntent);
+ method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerUsageSessionObserver(int, @NonNull String[], long, @NonNull java.util.concurrent.TimeUnit, long, @NonNull java.util.concurrent.TimeUnit, @NonNull android.app.PendingIntent, @Nullable android.app.PendingIntent);
+ method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String);
+ method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String, long);
+ method public void reportUsageStop(@NonNull android.app.Activity, @NonNull String);
+ method @RequiresPermission(android.Manifest.permission.CHANGE_APP_IDLE_STATE) public void setAppStandbyBucket(String, int);
+ method @RequiresPermission(android.Manifest.permission.CHANGE_APP_IDLE_STATE) public void setAppStandbyBuckets(java.util.Map<java.lang.String,java.lang.Integer>);
+ method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterAppUsageObserver(int);
+ method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterUsageSessionObserver(int);
+ method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(String, long, android.os.UserHandle);
+ field public static final String EXTRA_OBSERVER_ID = "android.app.usage.extra.OBSERVER_ID";
+ field public static final String EXTRA_TIME_LIMIT = "android.app.usage.extra.TIME_LIMIT";
+ field public static final String EXTRA_TIME_USED = "android.app.usage.extra.TIME_USED";
field public static final int STANDBY_BUCKET_EXEMPTED = 5; // 0x5
field public static final int STANDBY_BUCKET_NEVER = 50; // 0x32
}
@@ -1128,31 +1133,31 @@
public final class BluetoothAdapter {
method public boolean disableBLE();
method public boolean enableBLE();
- method public boolean enableNoAutoConnect();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean enableNoAutoConnect();
method public boolean isBleScanAlwaysAvailable();
method public boolean isLeEnabled();
- field public static final java.lang.String ACTION_BLE_STATE_CHANGED = "android.bluetooth.adapter.action.BLE_STATE_CHANGED";
- field public static final java.lang.String ACTION_REQUEST_BLE_SCAN_ALWAYS_AVAILABLE = "android.bluetooth.adapter.action.REQUEST_BLE_SCAN_ALWAYS_AVAILABLE";
+ field public static final String ACTION_BLE_STATE_CHANGED = "android.bluetooth.adapter.action.BLE_STATE_CHANGED";
+ field public static final String ACTION_REQUEST_BLE_SCAN_ALWAYS_AVAILABLE = "android.bluetooth.adapter.action.REQUEST_BLE_SCAN_ALWAYS_AVAILABLE";
}
public final class BluetoothDevice implements android.os.Parcelable {
- method public boolean cancelBondProcess();
- method public boolean isConnected();
- method public boolean isEncrypted();
- method public boolean removeBond();
- method public boolean setPhonebookAccessPermission(int);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean cancelBondProcess();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isConnected();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEncrypted();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean removeBond();
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPhonebookAccessPermission(int);
field public static final int ACCESS_ALLOWED = 1; // 0x1
field public static final int ACCESS_REJECTED = 2; // 0x2
field public static final int ACCESS_UNKNOWN = 0; // 0x0
}
public final class BluetoothHeadset implements android.bluetooth.BluetoothProfile {
- method public boolean connect(android.bluetooth.BluetoothDevice);
- method public boolean disconnect(android.bluetooth.BluetoothDevice);
- method public boolean setPriority(android.bluetooth.BluetoothDevice, int);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean connect(android.bluetooth.BluetoothDevice);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disconnect(android.bluetooth.BluetoothDevice);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setPriority(android.bluetooth.BluetoothDevice, int);
}
- public abstract interface BluetoothProfile {
+ public interface BluetoothProfile {
field public static final int PRIORITY_OFF = 0; // 0x0
field public static final int PRIORITY_ON = 100; // 0x64
}
@@ -1162,8 +1167,8 @@
package android.bluetooth.le {
public final class BluetoothLeScanner {
- method public void startScanFromSource(android.os.WorkSource, android.bluetooth.le.ScanCallback);
- method public void startScanFromSource(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.os.WorkSource, android.bluetooth.le.ScanCallback);
+ method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADMIN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(android.os.WorkSource, android.bluetooth.le.ScanCallback);
+ method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADMIN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.os.WorkSource, android.bluetooth.le.ScanCallback);
method public void startTruncatedScan(java.util.List<android.bluetooth.le.TruncatedFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
}
@@ -1197,102 +1202,102 @@
package android.content {
public class ContentProviderClient implements java.lang.AutoCloseable android.content.ContentInterface {
- method public void setDetectNotResponding(long);
+ method @RequiresPermission(android.Manifest.permission.REMOVE_TASKS) public void setDetectNotResponding(long);
}
public abstract class ContentResolver implements android.content.ContentInterface {
- method public android.graphics.drawable.Drawable getTypeDrawable(java.lang.String);
+ method public android.graphics.drawable.Drawable getTypeDrawable(String);
}
public abstract class Context {
- method public boolean bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public boolean bindServiceAsUser(@RequiresPermission android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle);
method public abstract android.content.Context createCredentialProtectedStorageContext();
- method public android.content.Context createPackageContextAsUser(java.lang.String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract java.io.File getPreloadsFileCache();
+ method public android.content.Context createPackageContextAsUser(String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Nullable public abstract java.io.File getPreloadsFileCache();
method public abstract boolean isCredentialProtectedStorage();
- method public abstract void sendBroadcast(android.content.Intent, java.lang.String, android.os.Bundle);
- method public abstract void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.os.Bundle);
- method public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public void startActivityAsUser(android.content.Intent, android.os.UserHandle);
- field public static final java.lang.String APP_PREDICTION_SERVICE = "app_prediction";
- field public static final java.lang.String BACKUP_SERVICE = "backup";
- field public static final java.lang.String CONTENT_SUGGESTIONS_SERVICE = "content_suggestions";
- field public static final java.lang.String CONTEXTHUB_SERVICE = "contexthub";
- field public static final java.lang.String EUICC_CARD_SERVICE = "euicc_card";
- field public static final java.lang.String HDMI_CONTROL_SERVICE = "hdmi_control";
- field public static final java.lang.String NETWORK_SCORE_SERVICE = "network_score";
- field public static final java.lang.String OEM_LOCK_SERVICE = "oem_lock";
- field public static final java.lang.String PERMISSION_SERVICE = "permission";
- field public static final java.lang.String PERSISTENT_DATA_BLOCK_SERVICE = "persistent_data_block";
- field public static final java.lang.String ROLLBACK_SERVICE = "rollback";
- field public static final java.lang.String SECURE_ELEMENT_SERVICE = "secure_element";
- field public static final java.lang.String STATS_MANAGER = "stats";
- field public static final java.lang.String SYSTEM_UPDATE_SERVICE = "system_update";
- field public static final java.lang.String VR_SERVICE = "vrmanager";
- field public static final deprecated java.lang.String WIFI_RTT_SERVICE = "rttmanager";
- field public static final java.lang.String WIFI_SCANNING_SERVICE = "wifiscanner";
+ method public abstract void sendBroadcast(android.content.Intent, @Nullable String, @Nullable android.os.Bundle);
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, @Nullable android.os.Bundle);
+ method public abstract void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable android.os.Bundle, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void startActivityAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
+ field public static final String APP_PREDICTION_SERVICE = "app_prediction";
+ field public static final String BACKUP_SERVICE = "backup";
+ field public static final String CONTENT_SUGGESTIONS_SERVICE = "content_suggestions";
+ field public static final String CONTEXTHUB_SERVICE = "contexthub";
+ field public static final String EUICC_CARD_SERVICE = "euicc_card";
+ field public static final String HDMI_CONTROL_SERVICE = "hdmi_control";
+ field public static final String NETWORK_SCORE_SERVICE = "network_score";
+ field public static final String OEM_LOCK_SERVICE = "oem_lock";
+ field public static final String PERMISSION_SERVICE = "permission";
+ field public static final String PERSISTENT_DATA_BLOCK_SERVICE = "persistent_data_block";
+ field public static final String ROLLBACK_SERVICE = "rollback";
+ field public static final String SECURE_ELEMENT_SERVICE = "secure_element";
+ field public static final String STATS_MANAGER = "stats";
+ field public static final String SYSTEM_UPDATE_SERVICE = "system_update";
+ field public static final String VR_SERVICE = "vrmanager";
+ field @Deprecated public static final String WIFI_RTT_SERVICE = "rttmanager";
+ field public static final String WIFI_SCANNING_SERVICE = "wifiscanner";
}
public class ContextWrapper extends android.content.Context {
method public android.content.Context createCredentialProtectedStorageContext();
method public java.io.File getPreloadsFileCache();
method public boolean isCredentialProtectedStorage();
- method public void sendBroadcast(android.content.Intent, java.lang.String, android.os.Bundle);
- method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.os.Bundle);
- method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+ method public void sendBroadcast(android.content.Intent, String, android.os.Bundle);
+ method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.os.Bundle);
+ method public void sendOrderedBroadcast(android.content.Intent, String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
}
public class Intent implements java.lang.Cloneable android.os.Parcelable {
- field public static final java.lang.String ACTION_BATTERY_LEVEL_CHANGED = "android.intent.action.BATTERY_LEVEL_CHANGED";
- field public static final java.lang.String ACTION_CALL_EMERGENCY = "android.intent.action.CALL_EMERGENCY";
- field public static final java.lang.String ACTION_CALL_PRIVILEGED = "android.intent.action.CALL_PRIVILEGED";
- field public static final java.lang.String ACTION_DEVICE_CUSTOMIZATION_READY = "android.intent.action.DEVICE_CUSTOMIZATION_READY";
- field public static final java.lang.String ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET";
- field public static final java.lang.String ACTION_GLOBAL_BUTTON = "android.intent.action.GLOBAL_BUTTON";
- field public static final java.lang.String ACTION_INSTALL_INSTANT_APP_PACKAGE = "android.intent.action.INSTALL_INSTANT_APP_PACKAGE";
- field public static final java.lang.String ACTION_INSTANT_APP_RESOLVER_SETTINGS = "android.intent.action.INSTANT_APP_RESOLVER_SETTINGS";
- field public static final java.lang.String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION";
- field public static final java.lang.String ACTION_MANAGE_APP_PERMISSIONS = "android.intent.action.MANAGE_APP_PERMISSIONS";
- field public static final java.lang.String ACTION_MANAGE_DEFAULT_APP = "android.intent.action.MANAGE_DEFAULT_APP";
- field public static final java.lang.String ACTION_MANAGE_PERMISSIONS = "android.intent.action.MANAGE_PERMISSIONS";
- field public static final java.lang.String ACTION_MANAGE_PERMISSION_APPS = "android.intent.action.MANAGE_PERMISSION_APPS";
- field public static final java.lang.String ACTION_MANAGE_SPECIAL_APP_ACCESSES = "android.intent.action.MANAGE_SPECIAL_APP_ACCESSES";
- field public static final java.lang.String ACTION_MASTER_CLEAR_NOTIFICATION = "android.intent.action.MASTER_CLEAR_NOTIFICATION";
- field public static final java.lang.String ACTION_PACKAGE_ROLLBACK_EXECUTED = "android.intent.action.PACKAGE_ROLLBACK_EXECUTED";
- field public static final java.lang.String ACTION_PRE_BOOT_COMPLETED = "android.intent.action.PRE_BOOT_COMPLETED";
- field public static final java.lang.String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";
- field public static final java.lang.String ACTION_RESOLVE_INSTANT_APP_PACKAGE = "android.intent.action.RESOLVE_INSTANT_APP_PACKAGE";
- field public static final java.lang.String ACTION_REVIEW_APP_PERMISSION_USAGE = "android.intent.action.REVIEW_APP_PERMISSION_USAGE";
- field public static final java.lang.String ACTION_REVIEW_PERMISSIONS = "android.intent.action.REVIEW_PERMISSIONS";
- field public static final java.lang.String ACTION_REVIEW_PERMISSION_USAGE = "android.intent.action.REVIEW_PERMISSION_USAGE";
- field public static final java.lang.String ACTION_SHOW_SUSPENDED_APP_DETAILS = "android.intent.action.SHOW_SUSPENDED_APP_DETAILS";
- field public static final deprecated java.lang.String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
- field public static final java.lang.String ACTION_SPLIT_CONFIGURATION_CHANGED = "android.intent.action.SPLIT_CONFIGURATION_CHANGED";
- field public static final java.lang.String ACTION_UPGRADE_SETUP = "android.intent.action.UPGRADE_SETUP";
- field public static final java.lang.String ACTION_USER_REMOVED = "android.intent.action.USER_REMOVED";
- field public static final java.lang.String ACTION_VOICE_ASSIST = "android.intent.action.VOICE_ASSIST";
- field public static final java.lang.String CATEGORY_LEANBACK_SETTINGS = "android.intent.category.LEANBACK_SETTINGS";
- field public static final java.lang.String EXTRA_CALLING_PACKAGE = "android.intent.extra.CALLING_PACKAGE";
- field public static final java.lang.String EXTRA_FORCE_FACTORY_RESET = "android.intent.extra.FORCE_FACTORY_RESET";
- field public static final java.lang.String EXTRA_INSTANT_APP_ACTION = "android.intent.extra.INSTANT_APP_ACTION";
- field public static final java.lang.String EXTRA_INSTANT_APP_BUNDLES = "android.intent.extra.INSTANT_APP_BUNDLES";
- field public static final java.lang.String EXTRA_INSTANT_APP_EXTRAS = "android.intent.extra.INSTANT_APP_EXTRAS";
- field public static final java.lang.String EXTRA_INSTANT_APP_FAILURE = "android.intent.extra.INSTANT_APP_FAILURE";
- field public static final java.lang.String EXTRA_INSTANT_APP_HOSTNAME = "android.intent.extra.INSTANT_APP_HOSTNAME";
- field public static final java.lang.String EXTRA_INSTANT_APP_SUCCESS = "android.intent.extra.INSTANT_APP_SUCCESS";
- field public static final java.lang.String EXTRA_INSTANT_APP_TOKEN = "android.intent.extra.INSTANT_APP_TOKEN";
- field public static final java.lang.String EXTRA_LONG_VERSION_CODE = "android.intent.extra.LONG_VERSION_CODE";
- field public static final java.lang.String EXTRA_ORIGINATING_UID = "android.intent.extra.ORIGINATING_UID";
- field public static final java.lang.String EXTRA_PACKAGES = "android.intent.extra.PACKAGES";
- field public static final java.lang.String EXTRA_PERMISSION_NAME = "android.intent.extra.PERMISSION_NAME";
- field public static final java.lang.String EXTRA_PERMISSION_GROUP_NAME = "android.intent.extra.PERMISSION_GROUP_NAME";
- field public static final java.lang.String EXTRA_REASON = "android.intent.extra.REASON";
- field public static final java.lang.String EXTRA_REMOTE_CALLBACK = "android.intent.extra.REMOTE_CALLBACK";
- field public static final java.lang.String EXTRA_RESULT_NEEDED = "android.intent.extra.RESULT_NEEDED";
- field public static final java.lang.String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME";
- field public static final java.lang.String EXTRA_UNKNOWN_INSTANT_APP = "android.intent.extra.UNKNOWN_INSTANT_APP";
- field public static final java.lang.String EXTRA_VERIFICATION_BUNDLE = "android.intent.extra.VERIFICATION_BUNDLE";
- field public static final java.lang.String METADATA_SETUP_VERSION = "android.SETUP_VERSION";
+ field public static final String ACTION_BATTERY_LEVEL_CHANGED = "android.intent.action.BATTERY_LEVEL_CHANGED";
+ field public static final String ACTION_CALL_EMERGENCY = "android.intent.action.CALL_EMERGENCY";
+ field public static final String ACTION_CALL_PRIVILEGED = "android.intent.action.CALL_PRIVILEGED";
+ field public static final String ACTION_DEVICE_CUSTOMIZATION_READY = "android.intent.action.DEVICE_CUSTOMIZATION_READY";
+ field public static final String ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET";
+ field public static final String ACTION_GLOBAL_BUTTON = "android.intent.action.GLOBAL_BUTTON";
+ field public static final String ACTION_INSTALL_INSTANT_APP_PACKAGE = "android.intent.action.INSTALL_INSTANT_APP_PACKAGE";
+ field public static final String ACTION_INSTANT_APP_RESOLVER_SETTINGS = "android.intent.action.INSTANT_APP_RESOLVER_SETTINGS";
+ field public static final String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION";
+ field public static final String ACTION_MANAGE_APP_PERMISSIONS = "android.intent.action.MANAGE_APP_PERMISSIONS";
+ field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_DEFAULT_APP = "android.intent.action.MANAGE_DEFAULT_APP";
+ field public static final String ACTION_MANAGE_PERMISSIONS = "android.intent.action.MANAGE_PERMISSIONS";
+ field public static final String ACTION_MANAGE_PERMISSION_APPS = "android.intent.action.MANAGE_PERMISSION_APPS";
+ field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_SPECIAL_APP_ACCESSES = "android.intent.action.MANAGE_SPECIAL_APP_ACCESSES";
+ field public static final String ACTION_MASTER_CLEAR_NOTIFICATION = "android.intent.action.MASTER_CLEAR_NOTIFICATION";
+ field public static final String ACTION_PACKAGE_ROLLBACK_EXECUTED = "android.intent.action.PACKAGE_ROLLBACK_EXECUTED";
+ field public static final String ACTION_PRE_BOOT_COMPLETED = "android.intent.action.PRE_BOOT_COMPLETED";
+ field public static final String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";
+ field public static final String ACTION_RESOLVE_INSTANT_APP_PACKAGE = "android.intent.action.RESOLVE_INSTANT_APP_PACKAGE";
+ field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_REVIEW_APP_PERMISSION_USAGE = "android.intent.action.REVIEW_APP_PERMISSION_USAGE";
+ field public static final String ACTION_REVIEW_PERMISSIONS = "android.intent.action.REVIEW_PERMISSIONS";
+ field public static final String ACTION_REVIEW_PERMISSION_USAGE = "android.intent.action.REVIEW_PERMISSION_USAGE";
+ field public static final String ACTION_SHOW_SUSPENDED_APP_DETAILS = "android.intent.action.SHOW_SUSPENDED_APP_DETAILS";
+ field @Deprecated public static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
+ field public static final String ACTION_SPLIT_CONFIGURATION_CHANGED = "android.intent.action.SPLIT_CONFIGURATION_CHANGED";
+ field public static final String ACTION_UPGRADE_SETUP = "android.intent.action.UPGRADE_SETUP";
+ field public static final String ACTION_USER_REMOVED = "android.intent.action.USER_REMOVED";
+ field public static final String ACTION_VOICE_ASSIST = "android.intent.action.VOICE_ASSIST";
+ field public static final String CATEGORY_LEANBACK_SETTINGS = "android.intent.category.LEANBACK_SETTINGS";
+ field public static final String EXTRA_CALLING_PACKAGE = "android.intent.extra.CALLING_PACKAGE";
+ field public static final String EXTRA_FORCE_FACTORY_RESET = "android.intent.extra.FORCE_FACTORY_RESET";
+ field public static final String EXTRA_INSTANT_APP_ACTION = "android.intent.extra.INSTANT_APP_ACTION";
+ field public static final String EXTRA_INSTANT_APP_BUNDLES = "android.intent.extra.INSTANT_APP_BUNDLES";
+ field public static final String EXTRA_INSTANT_APP_EXTRAS = "android.intent.extra.INSTANT_APP_EXTRAS";
+ field public static final String EXTRA_INSTANT_APP_FAILURE = "android.intent.extra.INSTANT_APP_FAILURE";
+ field public static final String EXTRA_INSTANT_APP_HOSTNAME = "android.intent.extra.INSTANT_APP_HOSTNAME";
+ field public static final String EXTRA_INSTANT_APP_SUCCESS = "android.intent.extra.INSTANT_APP_SUCCESS";
+ field public static final String EXTRA_INSTANT_APP_TOKEN = "android.intent.extra.INSTANT_APP_TOKEN";
+ field public static final String EXTRA_LONG_VERSION_CODE = "android.intent.extra.LONG_VERSION_CODE";
+ field public static final String EXTRA_ORIGINATING_UID = "android.intent.extra.ORIGINATING_UID";
+ field public static final String EXTRA_PACKAGES = "android.intent.extra.PACKAGES";
+ field public static final String EXTRA_PERMISSION_GROUP_NAME = "android.intent.extra.PERMISSION_GROUP_NAME";
+ field public static final String EXTRA_PERMISSION_NAME = "android.intent.extra.PERMISSION_NAME";
+ field public static final String EXTRA_REASON = "android.intent.extra.REASON";
+ field public static final String EXTRA_REMOTE_CALLBACK = "android.intent.extra.REMOTE_CALLBACK";
+ field public static final String EXTRA_RESULT_NEEDED = "android.intent.extra.RESULT_NEEDED";
+ field public static final String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME";
+ field public static final String EXTRA_UNKNOWN_INSTANT_APP = "android.intent.extra.UNKNOWN_INSTANT_APP";
+ field public static final String EXTRA_VERIFICATION_BUNDLE = "android.intent.extra.VERIFICATION_BUNDLE";
+ field public static final String METADATA_SETUP_VERSION = "android.SETUP_VERSION";
}
public class IntentFilter implements android.os.Parcelable {
@@ -1309,15 +1314,15 @@
method public boolean isEnabled();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.om.OverlayInfo> CREATOR;
- field public final java.lang.String category;
- field public final java.lang.String packageName;
- field public final java.lang.String targetPackageName;
+ field public final String category;
+ field public final String packageName;
+ field public final String targetPackageName;
field public final int userId;
}
public class OverlayManager {
- method public java.util.List<android.content.om.OverlayInfo> getOverlayInfosForTarget(java.lang.String, int);
- method public boolean setEnabledExclusiveInCategory(java.lang.String, int);
+ method public java.util.List<android.content.om.OverlayInfo> getOverlayInfosForTarget(@Nullable String, int);
+ method public boolean setEnabledExclusiveInCategory(@Nullable String, int);
}
}
@@ -1327,57 +1332,57 @@
public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
method public boolean isEncryptionAware();
method public boolean isInstantApp();
- field public java.lang.String credentialProtectedDataDir;
+ field public String credentialProtectedDataDir;
field public int targetSandboxVersion;
}
public class CrossProfileApps {
- method public void startAnyActivity(android.content.ComponentName, android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_PROFILES) public void startActivity(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
}
public final class InstantAppInfo implements android.os.Parcelable {
- ctor public InstantAppInfo(android.content.pm.ApplicationInfo, java.lang.String[], java.lang.String[]);
- ctor public InstantAppInfo(java.lang.String, java.lang.CharSequence, java.lang.String[], java.lang.String[]);
+ ctor public InstantAppInfo(android.content.pm.ApplicationInfo, String[], String[]);
+ ctor public InstantAppInfo(String, CharSequence, String[], String[]);
method public int describeContents();
- method public android.content.pm.ApplicationInfo getApplicationInfo();
- method public java.lang.String[] getGrantedPermissions();
- method public java.lang.String getPackageName();
- method public java.lang.String[] getRequestedPermissions();
- method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ method @Nullable public android.content.pm.ApplicationInfo getApplicationInfo();
+ method @Nullable public String[] getGrantedPermissions();
+ method @NonNull public String getPackageName();
+ method @Nullable public String[] getRequestedPermissions();
+ method @NonNull public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.pm.PackageManager);
+ method @NonNull public CharSequence loadLabel(@NonNull android.content.pm.PackageManager);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.InstantAppInfo> CREATOR;
}
public final class InstantAppIntentFilter implements android.os.Parcelable {
- ctor public InstantAppIntentFilter(java.lang.String, java.util.List<android.content.IntentFilter>);
+ ctor public InstantAppIntentFilter(@Nullable String, @NonNull java.util.List<android.content.IntentFilter>);
method public int describeContents();
method public java.util.List<android.content.IntentFilter> getFilters();
- method public java.lang.String getSplitName();
+ method public String getSplitName();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.InstantAppIntentFilter> CREATOR;
}
public final class InstantAppResolveInfo implements android.os.Parcelable {
- ctor public InstantAppResolveInfo(android.content.pm.InstantAppResolveInfo.InstantAppDigest, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>, int);
- ctor public InstantAppResolveInfo(android.content.pm.InstantAppResolveInfo.InstantAppDigest, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>, long, android.os.Bundle);
- ctor public InstantAppResolveInfo(java.lang.String, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>);
- ctor public InstantAppResolveInfo(android.os.Bundle);
+ ctor public InstantAppResolveInfo(@NonNull android.content.pm.InstantAppResolveInfo.InstantAppDigest, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>, int);
+ ctor public InstantAppResolveInfo(@NonNull android.content.pm.InstantAppResolveInfo.InstantAppDigest, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>, long, @Nullable android.os.Bundle);
+ ctor public InstantAppResolveInfo(@NonNull String, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>);
+ ctor public InstantAppResolveInfo(@Nullable android.os.Bundle);
method public int describeContents();
method public byte[] getDigestBytes();
method public int getDigestPrefix();
- method public android.os.Bundle getExtras();
+ method @Nullable public android.os.Bundle getExtras();
method public java.util.List<android.content.pm.InstantAppIntentFilter> getIntentFilters();
method public long getLongVersionCode();
- method public java.lang.String getPackageName();
- method public deprecated int getVersionCode();
+ method public String getPackageName();
+ method @Deprecated public int getVersionCode();
method public boolean shouldLetInstallerDecide();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo> CREATOR;
}
public static final class InstantAppResolveInfo.InstantAppDigest implements android.os.Parcelable {
- ctor public InstantAppResolveInfo.InstantAppDigest(java.lang.String);
+ ctor public InstantAppResolveInfo.InstantAppDigest(@NonNull String);
method public int describeContents();
method public byte[][] getDigestBytes();
method public int[] getDigestPrefix();
@@ -1389,92 +1394,92 @@
public final class IntentFilterVerificationInfo implements android.os.Parcelable {
method public int describeContents();
method public java.util.Set<java.lang.String> getDomains();
- method public java.lang.String getPackageName();
+ method public String getPackageName();
method public int getStatus();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.pm.IntentFilterVerificationInfo> CREATOR;
}
public class PackageInstaller {
- method public void setPermissionsResult(int, boolean);
+ method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean);
}
public static class PackageInstaller.Session implements java.io.Closeable {
- method public void commitTransferred(android.content.IntentSender);
+ method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void commitTransferred(@NonNull android.content.IntentSender);
}
public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
method public boolean getAllocateAggressive();
method public boolean getAllowDowngrade();
method public boolean getDontKillApp();
- method public java.lang.String[] getGrantedRuntimePermissions();
+ method @Nullable public String[] getGrantedRuntimePermissions();
method public boolean getInstallAsFullApp(boolean);
method public boolean getInstallAsInstantApp(boolean);
method public boolean getInstallAsVirtualPreload();
}
public static class PackageInstaller.SessionParams implements android.os.Parcelable {
- method public void setAllocateAggressive(boolean);
+ method @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public void setAllocateAggressive(boolean);
method public void setAllowDowngrade(boolean);
method public void setDontKillApp(boolean);
method public void setEnableRollback();
- method public void setGrantedRuntimePermissions(java.lang.String[]);
+ method @RequiresPermission(android.Manifest.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS) public void setGrantedRuntimePermissions(String[]);
method public void setInstallAsInstantApp(boolean);
method public void setInstallAsVirtualPreload();
}
public class PackageItemInfo {
method public static void forceSafeLabels();
- method public deprecated java.lang.CharSequence loadSafeLabel(android.content.pm.PackageManager);
- method public java.lang.CharSequence loadSafeLabel(android.content.pm.PackageManager, float, int);
- field public static final deprecated int SAFE_LABEL_FLAG_FIRST_LINE = 4; // 0x4
- field public static final deprecated int SAFE_LABEL_FLAG_SINGLE_LINE = 2; // 0x2
- field public static final deprecated int SAFE_LABEL_FLAG_TRIM = 1; // 0x1
+ method @Deprecated @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager);
+ method @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager, @FloatRange(from=0) float, int);
+ field @Deprecated public static final int SAFE_LABEL_FLAG_FIRST_LINE = 4; // 0x4
+ field @Deprecated public static final int SAFE_LABEL_FLAG_SINGLE_LINE = 2; // 0x2
+ field @Deprecated public static final int SAFE_LABEL_FLAG_TRIM = 1; // 0x1
}
public abstract class PackageManager {
- method public abstract void addOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener);
+ method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void addOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener);
method public abstract boolean arePermissionsIndividuallyControlled();
- method public abstract java.util.List<android.content.IntentFilter> getAllIntentFilters(java.lang.String);
- method public android.content.pm.ApplicationInfo getApplicationInfoAsUser(java.lang.String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.pm.dex.ArtManager getArtManager();
- method public abstract java.lang.String getDefaultBrowserPackageNameAsUser(int);
- method public java.lang.CharSequence getHarmfulAppWarning(java.lang.String);
- method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
- method public abstract android.graphics.drawable.Drawable getInstantAppIcon(java.lang.String);
+ method public abstract java.util.List<android.content.IntentFilter> getAllIntentFilters(String);
+ method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @NonNull public android.content.pm.dex.ArtManager getArtManager();
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract String getDefaultBrowserPackageNameAsUser(int);
+ method @Nullable @RequiresPermission(android.Manifest.permission.SET_HARMFUL_APP_WARNINGS) public CharSequence getHarmfulAppWarning(@NonNull String);
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
+ method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_INSTANT_APPS) public abstract android.graphics.drawable.Drawable getInstantAppIcon(String);
method public abstract android.content.ComponentName getInstantAppInstallerComponent();
method public abstract android.content.ComponentName getInstantAppResolverSettingsComponent();
- method public abstract java.util.List<android.content.pm.InstantAppInfo> getInstantApps();
- method public abstract java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(java.lang.String);
- method public abstract int getIntentVerificationStatusAsUser(java.lang.String, int);
- method public abstract int getPermissionFlags(java.lang.String, java.lang.String, android.os.UserHandle);
- method public java.lang.String[] getUnsuspendablePackages(java.lang.String[]);
- method public abstract void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
- method public abstract int installExistingPackage(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public abstract int installExistingPackage(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceiversAsUser(android.content.Intent, int, android.os.UserHandle);
- method public java.util.List<android.content.pm.ResolveInfo> queryIntentActivitiesAsUser(android.content.Intent, int, android.os.UserHandle);
- method public java.util.List<android.content.pm.ResolveInfo> queryIntentContentProvidersAsUser(android.content.Intent, int, android.os.UserHandle);
- method public java.util.List<android.content.pm.ResolveInfo> queryIntentServicesAsUser(android.content.Intent, int, android.os.UserHandle);
- method public abstract void registerDexModule(java.lang.String, android.content.pm.PackageManager.DexModuleRegisterCallback);
- method public abstract void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener);
- method public deprecated void replacePreferredActivity(android.content.IntentFilter, int, java.util.List<android.content.ComponentName>, android.content.ComponentName);
- method public abstract void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
+ method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_INSTANT_APPS) public abstract java.util.List<android.content.pm.InstantAppInfo> getInstantApps();
+ method public abstract java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(String);
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract int getIntentVerificationStatusAsUser(String, int);
+ method @android.content.pm.PackageManager.PermissionFlags @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS}) public abstract int getPermissionFlags(String, String, @NonNull android.os.UserHandle);
+ method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] getUnsuspendablePackages(@NonNull String[]);
+ method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
+ method public abstract int installExistingPackage(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract int installExistingPackage(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceiversAsUser(android.content.Intent, int, android.os.UserHandle);
+ method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentActivitiesAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
+ method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentContentProvidersAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
+ method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentServicesAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
+ method public abstract void registerDexModule(String, @Nullable android.content.pm.PackageManager.DexModuleRegisterCallback);
+ method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener);
+ method @Deprecated public void replacePreferredActivity(@NonNull android.content.IntentFilter, int, @NonNull java.util.List<android.content.ComponentName>, @NonNull android.content.ComponentName);
+ method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
method public void sendDeviceCustomizationReadyBroadcast();
- method public abstract boolean setDefaultBrowserPackageNameAsUser(java.lang.String, int);
- method public java.lang.String[] setDistractingPackageRestrictions(java.lang.String[], int);
- method public void setHarmfulAppWarning(java.lang.String, java.lang.CharSequence);
- method public deprecated java.lang.String[] setPackagesSuspended(java.lang.String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, java.lang.String);
- method public java.lang.String[] setPackagesSuspended(java.lang.String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, android.content.pm.SuspendDialogInfo);
- method public abstract void setUpdateAvailable(java.lang.String, boolean);
- method public abstract boolean updateIntentVerificationStatusAsUser(java.lang.String, int, int);
- method public abstract void updatePermissionFlags(java.lang.String, java.lang.String, int, int, android.os.UserHandle);
- method public abstract void verifyIntentFilter(int, int, java.util.List<java.lang.String>);
- field public static final java.lang.String ACTION_REQUEST_PERMISSIONS = "android.content.pm.action.REQUEST_PERMISSIONS";
- field public static final java.lang.String EXTRA_REQUEST_PERMISSIONS_NAMES = "android.content.pm.extra.REQUEST_PERMISSIONS_NAMES";
- field public static final java.lang.String EXTRA_REQUEST_PERMISSIONS_RESULTS = "android.content.pm.extra.REQUEST_PERMISSIONS_RESULTS";
- field public static final java.lang.String FEATURE_BROADCAST_RADIO = "android.hardware.broadcastradio";
- field public static final java.lang.String FEATURE_TELEPHONY_CARRIERLOCK = "android.hardware.telephony.carrierlock";
+ method @RequiresPermission(allOf={android.Manifest.permission.SET_PREFERRED_APPLICATIONS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public abstract boolean setDefaultBrowserPackageNameAsUser(String, int);
+ method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setDistractingPackageRestrictions(@NonNull String[], @android.content.pm.PackageManager.DistractionRestriction int);
+ method @RequiresPermission(android.Manifest.permission.SET_HARMFUL_APP_WARNINGS) public void setHarmfulAppWarning(@NonNull String, @Nullable CharSequence);
+ method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable String);
+ method @Nullable @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable android.content.pm.SuspendDialogInfo);
+ method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public abstract void setUpdateAvailable(String, boolean);
+ method @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS) public abstract boolean updateIntentVerificationStatusAsUser(String, int, int);
+ method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS}) public abstract void updatePermissionFlags(String, String, @android.content.pm.PackageManager.PermissionFlags int, @android.content.pm.PackageManager.PermissionFlags int, @NonNull android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.INTENT_FILTER_VERIFICATION_AGENT) public abstract void verifyIntentFilter(int, int, java.util.List<java.lang.String>);
+ field public static final String ACTION_REQUEST_PERMISSIONS = "android.content.pm.action.REQUEST_PERMISSIONS";
+ field public static final String EXTRA_REQUEST_PERMISSIONS_NAMES = "android.content.pm.extra.REQUEST_PERMISSIONS_NAMES";
+ field public static final String EXTRA_REQUEST_PERMISSIONS_RESULTS = "android.content.pm.extra.REQUEST_PERMISSIONS_RESULTS";
+ field public static final String FEATURE_BROADCAST_RADIO = "android.hardware.broadcastradio";
+ field public static final String FEATURE_TELEPHONY_CARRIERLOCK = "android.hardware.telephony.carrierlock";
field public static final int FLAG_PERMISSION_GRANTED_BY_DEFAULT = 32; // 0x20
field public static final int FLAG_PERMISSION_POLICY_FIXED = 4; // 0x4
field public static final int FLAG_PERMISSION_REVIEW_REQUIRED = 64; // 0x40
@@ -1535,38 +1540,55 @@
field public static final int RESTRICTION_NONE = 0; // 0x0
}
- public static abstract class PackageManager.DexModuleRegisterCallback {
+ public abstract static class PackageManager.DexModuleRegisterCallback {
ctor public PackageManager.DexModuleRegisterCallback();
- method public abstract void onDexModuleRegistered(java.lang.String, boolean, java.lang.String);
+ method public abstract void onDexModuleRegistered(String, boolean, String);
}
- public static abstract class PackageManager.DistractionRestriction implements java.lang.annotation.Annotation {
+ @IntDef(flag=true, prefix={"RESTRICTION_"}, value={android.content.pm.PackageManager.RESTRICTION_NONE, android.content.pm.PackageManager.RESTRICTION_HIDE_FROM_SUGGESTIONS, android.content.pm.PackageManager.RESTRICTION_HIDE_NOTIFICATIONS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PackageManager.DistractionRestriction {
}
- public static abstract interface PackageManager.OnPermissionsChangedListener {
- method public abstract void onPermissionsChanged(int);
+ public static interface PackageManager.OnPermissionsChangedListener {
+ method public void onPermissionsChanged(int);
}
- public static abstract class PackageManager.PermissionFlags implements java.lang.annotation.Annotation {
+ @IntDef(prefix={"FLAG_PERMISSION_"}, value={android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET, android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE, android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PackageManager.PermissionFlags {
}
public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
- field public int backgroundRequestDetailResourceId;
- field public int backgroundRequestResourceId;
- field public int requestDetailResourceId;
- field public int requestRes;
+ field @StringRes public int backgroundRequestDetailResourceId;
+ field @StringRes public int backgroundRequestResourceId;
+ field @StringRes public int requestDetailResourceId;
+ field @StringRes public int requestRes;
}
public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
field public static final int FLAG_REMOVED = 2; // 0x2
+ field public static final int PROTECTION_FLAG_CONFIGURATOR = 524288; // 0x80000
field public static final int PROTECTION_FLAG_DOCUMENTER = 262144; // 0x40000
field public static final int PROTECTION_FLAG_OEM = 16384; // 0x4000
field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000
field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000
- field public java.lang.String backgroundPermission;
+ field public String backgroundPermission;
field public int requestRes;
}
+ public class ResolveInfo implements android.os.Parcelable {
+ field public boolean handleAllWebDataURI;
+ }
+
+ public class ShortcutManager {
+ method @NonNull public java.util.List<android.content.pm.ShortcutManager.ShareShortcutInfo> getShareTargets(@NonNull android.content.IntentFilter);
+ }
+
+ public static final class ShortcutManager.ShareShortcutInfo implements android.os.Parcelable {
+ method public int describeContents();
+ method public android.content.pm.ShortcutInfo getShortcutInfo();
+ method public android.content.ComponentName getTargetComponent();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator<android.content.pm.ShortcutManager.ShareShortcutInfo> CREATOR;
+ }
+
public final class SuspendDialogInfo implements android.os.Parcelable {
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
@@ -1575,12 +1597,12 @@
public static final class SuspendDialogInfo.Builder {
ctor public SuspendDialogInfo.Builder();
- method public android.content.pm.SuspendDialogInfo build();
- method public android.content.pm.SuspendDialogInfo.Builder setIcon(int);
- method public android.content.pm.SuspendDialogInfo.Builder setMessage(java.lang.String);
- method public android.content.pm.SuspendDialogInfo.Builder setMessage(int);
- method public android.content.pm.SuspendDialogInfo.Builder setNeutralButtonText(int);
- method public android.content.pm.SuspendDialogInfo.Builder setTitle(int);
+ method @NonNull public android.content.pm.SuspendDialogInfo build();
+ method @NonNull public android.content.pm.SuspendDialogInfo.Builder setIcon(@DrawableRes int);
+ method @NonNull public android.content.pm.SuspendDialogInfo.Builder setMessage(@NonNull String);
+ method @NonNull public android.content.pm.SuspendDialogInfo.Builder setMessage(@StringRes int);
+ method @NonNull public android.content.pm.SuspendDialogInfo.Builder setNeutralButtonText(@StringRes int);
+ method @NonNull public android.content.pm.SuspendDialogInfo.Builder setTitle(@StringRes int);
}
}
@@ -1588,8 +1610,8 @@
package android.content.pm.dex {
public class ArtManager {
- method public boolean isRuntimeProfilingEnabled(int);
- method public void snapshotRuntimeProfile(int, java.lang.String, java.lang.String, java.util.concurrent.Executor, android.content.pm.dex.ArtManager.SnapshotRuntimeProfileCallback);
+ method @RequiresPermission(allOf={android.Manifest.permission.READ_RUNTIME_PROFILES, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean isRuntimeProfilingEnabled(int);
+ method @RequiresPermission(allOf={android.Manifest.permission.READ_RUNTIME_PROFILES, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void snapshotRuntimeProfile(int, @Nullable String, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.content.pm.dex.ArtManager.SnapshotRuntimeProfileCallback);
field public static final int PROFILE_APPS = 0; // 0x0
field public static final int PROFILE_BOOT_IMAGE = 1; // 0x1
field public static final int SNAPSHOT_FAILED_CODE_PATH_NOT_FOUND = 1; // 0x1
@@ -1597,7 +1619,7 @@
field public static final int SNAPSHOT_FAILED_PACKAGE_NOT_FOUND = 0; // 0x0
}
- public static abstract class ArtManager.SnapshotRuntimeProfileCallback {
+ public abstract static class ArtManager.SnapshotRuntimeProfileCallback {
ctor public ArtManager.SnapshotRuntimeProfileCallback();
method public abstract void onError(int);
method public abstract void onSuccess(android.os.ParcelFileDescriptor);
@@ -1607,14 +1629,14 @@
package android.content.pm.permission {
- public final deprecated class RuntimePermissionPresentationInfo implements android.os.Parcelable {
- ctor public RuntimePermissionPresentationInfo(java.lang.CharSequence, boolean, boolean);
- method public int describeContents();
- method public java.lang.CharSequence getLabel();
- method public boolean isGranted();
- method public boolean isStandard();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.content.pm.permission.RuntimePermissionPresentationInfo> CREATOR;
+ @Deprecated public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
+ ctor @Deprecated public RuntimePermissionPresentationInfo(CharSequence, boolean, boolean);
+ method @Deprecated public int describeContents();
+ method @Deprecated @NonNull public CharSequence getLabel();
+ method @Deprecated public boolean isGranted();
+ method @Deprecated public boolean isStandard();
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.content.pm.permission.RuntimePermissionPresentationInfo> CREATOR;
}
}
@@ -1622,13 +1644,13 @@
package android.content.rollback {
public final class PackageRollbackInfo implements android.os.Parcelable {
- ctor public PackageRollbackInfo(java.lang.String, android.content.rollback.PackageRollbackInfo.PackageVersion, android.content.rollback.PackageRollbackInfo.PackageVersion);
+ ctor public PackageRollbackInfo(String, android.content.rollback.PackageRollbackInfo.PackageVersion, android.content.rollback.PackageRollbackInfo.PackageVersion);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.content.rollback.PackageRollbackInfo> CREATOR;
field public final android.content.rollback.PackageRollbackInfo.PackageVersion higherVersion;
field public final android.content.rollback.PackageRollbackInfo.PackageVersion lowerVersion;
- field public final java.lang.String packageName;
+ field public final String packageName;
}
public static class PackageRollbackInfo.PackageVersion {
@@ -1644,12 +1666,12 @@
}
public final class RollbackManager {
- method public void executeRollback(android.content.rollback.RollbackInfo, android.content.IntentSender);
- method public void expireRollbackForPackage(java.lang.String);
- method public android.content.rollback.RollbackInfo getAvailableRollback(java.lang.String);
- method public java.util.List<java.lang.String> getPackagesWithAvailableRollbacks();
- method public java.util.List<android.content.rollback.RollbackInfo> getRecentlyExecutedRollbacks();
- method public void reloadPersistedData();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void executeRollback(@NonNull android.content.rollback.RollbackInfo, @NonNull android.content.IntentSender);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void expireRollbackForPackage(@NonNull String);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) @Nullable public android.content.rollback.RollbackInfo getAvailableRollback(@NonNull String);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) @NonNull public java.util.List<java.lang.String> getPackagesWithAvailableRollbacks();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) @NonNull public java.util.List<android.content.rollback.RollbackInfo> getRecentlyExecutedRollbacks();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void reloadPersistedData();
}
}
@@ -1659,8 +1681,8 @@
public final class Sensor {
method public java.util.UUID getUuid();
method public boolean isDataInjectionSupported();
- field public static final java.lang.String STRING_TYPE_DYNAMIC_SENSOR_META = "android.sensor.dynamic_sensor_meta";
- field public static final java.lang.String STRING_TYPE_WRIST_TILT_GESTURE = "android.sensor.wrist_tilt_gesture";
+ field public static final String STRING_TYPE_DYNAMIC_SENSOR_META = "android.sensor.dynamic_sensor_meta";
+ field public static final String STRING_TYPE_WRIST_TILT_GESTURE = "android.sensor.wrist_tilt_gesture";
field public static final int TYPE_DYNAMIC_SENSOR_META = 32; // 0x20
field public static final int TYPE_WRIST_TILT_GESTURE = 26; // 0x1a
}
@@ -1675,7 +1697,7 @@
package android.hardware.camera2 {
public abstract class CameraDevice implements java.lang.AutoCloseable {
- method public abstract void createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method public abstract void createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
field public static final int SESSION_OPERATION_MODE_CONSTRAINED_HIGH_SPEED = 1; // 0x1
field public static final int SESSION_OPERATION_MODE_NORMAL = 0; // 0x0
field public static final int SESSION_OPERATION_MODE_VENDOR_START = 32768; // 0x8000
@@ -1686,8 +1708,8 @@
package android.hardware.camera2.params {
public final class OutputConfiguration implements android.os.Parcelable {
- ctor public OutputConfiguration(android.view.Surface, int);
- ctor public OutputConfiguration(int, android.view.Surface, int);
+ ctor public OutputConfiguration(@NonNull android.view.Surface, int);
+ ctor public OutputConfiguration(int, @NonNull android.view.Surface, int);
method public int getRotation();
field public static final int ROTATION_0 = 0; // 0x0
field public static final int ROTATION_180 = 2; // 0x2
@@ -1721,16 +1743,16 @@
field public final long[] luxTimestamps;
field public final float[] luxValues;
field public final boolean nightMode;
- field public final java.lang.String packageName;
+ field public final String packageName;
field public final float powerBrightnessFactor;
field public final long timeStamp;
}
public final class BrightnessConfiguration implements android.os.Parcelable {
method public int describeContents();
- method public android.hardware.display.BrightnessCorrection getCorrectionByCategory(int);
- method public android.hardware.display.BrightnessCorrection getCorrectionByPackageName(java.lang.String);
- method public android.util.Pair<float[], float[]> getCurve();
+ method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByCategory(int);
+ method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByPackageName(String);
+ method public android.util.Pair<float[],float[]> getCurve();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessConfiguration> CREATOR;
}
@@ -1738,34 +1760,35 @@
public static class BrightnessConfiguration.Builder {
ctor public BrightnessConfiguration.Builder(float[], float[]);
method public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByCategory(int, android.hardware.display.BrightnessCorrection);
- method public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByPackageName(java.lang.String, android.hardware.display.BrightnessCorrection);
+ method public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByPackageName(String, android.hardware.display.BrightnessCorrection);
method public android.hardware.display.BrightnessConfiguration build();
method public int getMaxCorrectionsByCategory();
method public int getMaxCorrectionsByPackageName();
- method public android.hardware.display.BrightnessConfiguration.Builder setDescription(java.lang.String);
+ method public android.hardware.display.BrightnessConfiguration.Builder setDescription(@Nullable String);
}
public final class BrightnessCorrection implements android.os.Parcelable {
method public float apply(float);
- method public static android.hardware.display.BrightnessCorrection createScaleAndTranslateLog(float, float);
+ method @NonNull public static android.hardware.display.BrightnessCorrection createScaleAndTranslateLog(float, float);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessCorrection> CREATOR;
}
public final class ColorDisplayManager {
- method public boolean setSaturationLevel(int);
+ method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setAppSaturationLevel(@NonNull String, @IntRange(from=0, to=100) int);
+ method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setSaturationLevel(@IntRange(from=0, to=100) int);
}
public final class DisplayManager {
- method public java.util.List<android.hardware.display.AmbientBrightnessDayStats> getAmbientBrightnessStats();
- method public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
- method public java.util.List<android.hardware.display.BrightnessChangeEvent> getBrightnessEvents();
- method public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
- method public android.util.Pair<float[], float[]> getMinimumBrightnessCurve();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_AMBIENT_LIGHT_STATS) public java.util.List<android.hardware.display.AmbientBrightnessDayStats> getAmbientBrightnessStats();
+ method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
+ method @RequiresPermission(android.Manifest.permission.BRIGHTNESS_SLIDER_USAGE) public java.util.List<android.hardware.display.BrightnessChangeEvent> getBrightnessEvents();
+ method @Nullable @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
+ method public android.util.Pair<float[],float[]> getMinimumBrightnessCurve();
method public android.graphics.Point getStableDisplaySize();
- method public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
- method public deprecated void setSaturationLevel(float);
+ method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_SATURATION) public void setSaturationLevel(float);
}
}
@@ -1776,17 +1799,17 @@
method public android.hardware.hdmi.HdmiDeviceInfo getActiveSource();
method public void sendKeyEvent(int, boolean);
method public void sendVendorCommand(int, byte[], boolean);
- method public void setVendorCommandListener(android.hardware.hdmi.HdmiControlManager.VendorCommandListener);
+ method public void setVendorCommandListener(@NonNull android.hardware.hdmi.HdmiControlManager.VendorCommandListener);
}
public final class HdmiControlManager {
- method public void addHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
- method public android.hardware.hdmi.HdmiClient getClient(int);
- method public android.hardware.hdmi.HdmiPlaybackClient getPlaybackClient();
- method public android.hardware.hdmi.HdmiTvClient getTvClient();
- method public void removeHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
- method public void setStandbyMode(boolean);
- field public static final java.lang.String ACTION_OSD_MESSAGE = "android.hardware.hdmi.action.OSD_MESSAGE";
+ method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void addHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
+ method @Nullable public android.hardware.hdmi.HdmiClient getClient(int);
+ method @Nullable public android.hardware.hdmi.HdmiPlaybackClient getPlaybackClient();
+ method @Nullable public android.hardware.hdmi.HdmiTvClient getTvClient();
+ method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void removeHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
+ method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setStandbyMode(boolean);
+ field public static final String ACTION_OSD_MESSAGE = "android.hardware.hdmi.action.OSD_MESSAGE";
field public static final int AVR_VOLUME_MUTED = 101; // 0x65
field public static final int CLEAR_TIMER_STATUS_CEC_DISABLE = 162; // 0xa2
field public static final int CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION = 160; // 0xa0
@@ -1802,8 +1825,8 @@
field public static final int DEVICE_EVENT_ADD_DEVICE = 1; // 0x1
field public static final int DEVICE_EVENT_REMOVE_DEVICE = 2; // 0x2
field public static final int DEVICE_EVENT_UPDATE_DEVICE = 3; // 0x3
- field public static final java.lang.String EXTRA_MESSAGE_EXTRA_PARAM1 = "android.hardware.hdmi.extra.MESSAGE_EXTRA_PARAM1";
- field public static final java.lang.String EXTRA_MESSAGE_ID = "android.hardware.hdmi.extra.MESSAGE_ID";
+ field public static final String EXTRA_MESSAGE_EXTRA_PARAM1 = "android.hardware.hdmi.extra.MESSAGE_EXTRA_PARAM1";
+ field public static final String EXTRA_MESSAGE_ID = "android.hardware.hdmi.extra.MESSAGE_ID";
field public static final int ONE_TOUCH_RECORD_ALREADY_RECORDING = 18; // 0x12
field public static final int ONE_TOUCH_RECORD_CEC_DISABLED = 51; // 0x33
field public static final int ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION = 49; // 0x31
@@ -1839,7 +1862,7 @@
field public static final int POWER_STATUS_TRANSIENT_TO_ON = 2; // 0x2
field public static final int POWER_STATUS_TRANSIENT_TO_STANDBY = 3; // 0x3
field public static final int POWER_STATUS_UNKNOWN = -1; // 0xffffffff
- field public static final deprecated int RESULT_ALREADY_IN_PROGRESS = 4; // 0x4
+ field @Deprecated public static final int RESULT_ALREADY_IN_PROGRESS = 4; // 0x4
field public static final int RESULT_COMMUNICATION_FAILED = 7; // 0x7
field public static final int RESULT_EXCEPTION = 5; // 0x5
field public static final int RESULT_INCORRECT_MODE = 6; // 0x6
@@ -1874,13 +1897,13 @@
field public static final int TIMER_STATUS_PROGRAMMED_INFO_NO_MEDIA_INFO = 10; // 0xa
}
- public static abstract interface HdmiControlManager.HotplugEventListener {
- method public abstract void onReceived(android.hardware.hdmi.HdmiHotplugEvent);
+ public static interface HdmiControlManager.HotplugEventListener {
+ method public void onReceived(android.hardware.hdmi.HdmiHotplugEvent);
}
- public static abstract interface HdmiControlManager.VendorCommandListener {
- method public abstract void onControlStateChanged(boolean, int);
- method public abstract void onReceived(int, int, byte[], boolean);
+ public static interface HdmiControlManager.VendorCommandListener {
+ method public void onControlStateChanged(boolean, int);
+ method public void onReceived(int, int, byte[], boolean);
}
public class HdmiDeviceInfo implements android.os.Parcelable {
@@ -1890,7 +1913,7 @@
method public int getDeviceId();
method public int getDevicePowerStatus();
method public int getDeviceType();
- method public java.lang.String getDisplayName();
+ method public String getDisplayName();
method public int getId();
method public int getLogicalAddress();
method public int getPhysicalAddress();
@@ -1935,12 +1958,12 @@
method public void sendStandby();
}
- public static abstract interface HdmiPlaybackClient.DisplayStatusCallback {
- method public abstract void onComplete(int);
+ public static interface HdmiPlaybackClient.DisplayStatusCallback {
+ method public void onComplete(int);
}
- public static abstract interface HdmiPlaybackClient.OneTouchPlayCallback {
- method public abstract void onComplete(int);
+ public static interface HdmiPlaybackClient.OneTouchPlayCallback {
+ method public void onComplete(int);
}
public final class HdmiPortInfo implements android.os.Parcelable {
@@ -1997,7 +2020,7 @@
public static final class HdmiRecordSources.OwnSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
}
- public static abstract class HdmiRecordSources.RecordSource {
+ public abstract static class HdmiRecordSources.RecordSource {
}
public class HdmiTimerRecordSources {
@@ -2033,34 +2056,34 @@
public final class HdmiTvClient extends android.hardware.hdmi.HdmiClient {
method public void clearTimerRecording(int, int, android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource);
- method public void deviceSelect(int, android.hardware.hdmi.HdmiTvClient.SelectCallback);
+ method public void deviceSelect(int, @NonNull android.hardware.hdmi.HdmiTvClient.SelectCallback);
method public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getDeviceList();
method public int getDeviceType();
- method public void portSelect(int, android.hardware.hdmi.HdmiTvClient.SelectCallback);
+ method public void portSelect(int, @NonNull android.hardware.hdmi.HdmiTvClient.SelectCallback);
method public void sendMhlVendorCommand(int, int, int, byte[]);
method public void sendStandby(int);
method public void setHdmiMhlVendorCommandListener(android.hardware.hdmi.HdmiTvClient.HdmiMhlVendorCommandListener);
method public void setInputChangeListener(android.hardware.hdmi.HdmiTvClient.InputChangeListener);
- method public void setRecordListener(android.hardware.hdmi.HdmiRecordListener);
+ method public void setRecordListener(@NonNull android.hardware.hdmi.HdmiRecordListener);
method public void setSystemAudioMode(boolean, android.hardware.hdmi.HdmiTvClient.SelectCallback);
method public void setSystemAudioMute(boolean);
method public void setSystemAudioVolume(int, int, int);
- method public void startOneTouchRecord(int, android.hardware.hdmi.HdmiRecordSources.RecordSource);
+ method public void startOneTouchRecord(int, @NonNull android.hardware.hdmi.HdmiRecordSources.RecordSource);
method public void startTimerRecording(int, int, android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource);
method public void stopOneTouchRecord(int);
field public static final int VENDOR_DATA_SIZE = 16; // 0x10
}
- public static abstract interface HdmiTvClient.HdmiMhlVendorCommandListener {
- method public abstract void onReceived(int, int, int, byte[]);
+ public static interface HdmiTvClient.HdmiMhlVendorCommandListener {
+ method public void onReceived(int, int, int, byte[]);
}
- public static abstract interface HdmiTvClient.InputChangeListener {
- method public abstract void onChanged(android.hardware.hdmi.HdmiDeviceInfo);
+ public static interface HdmiTvClient.InputChangeListener {
+ method public void onChanged(android.hardware.hdmi.HdmiDeviceInfo);
}
- public static abstract interface HdmiTvClient.SelectCallback {
- method public abstract void onComplete(int);
+ public static interface HdmiTvClient.SelectCallback {
+ method public void onComplete(int);
}
}
@@ -2069,8 +2092,8 @@
public class ContextHubClient implements java.io.Closeable {
method public void close();
- method public android.hardware.location.ContextHubInfo getAttachedHub();
- method public int sendMessageToNanoApp(android.hardware.location.NanoAppMessage);
+ method @NonNull public android.hardware.location.ContextHubInfo getAttachedHub();
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int sendMessageToNanoApp(@NonNull android.hardware.location.NanoAppMessage);
}
public class ContextHubClientCallback {
@@ -2094,7 +2117,7 @@
method public int getId();
method public int getMaxPacketLengthBytes();
method public android.hardware.location.MemoryRegion[] getMemoryRegions();
- method public java.lang.String getName();
+ method public String getName();
method public float getPeakMips();
method public float getPeakPowerDrawMw();
method public int getPlatformVersion();
@@ -2102,42 +2125,42 @@
method public int getStaticSwVersion();
method public float getStoppedPowerDrawMw();
method public int[] getSupportedSensors();
- method public java.lang.String getToolchain();
+ method public String getToolchain();
method public int getToolchainVersion();
- method public java.lang.String getVendor();
+ method public String getVendor();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.location.ContextHubInfo> CREATOR;
}
public class ContextHubIntentEvent {
- method public static android.hardware.location.ContextHubIntentEvent fromIntent(android.content.Intent);
- method public android.hardware.location.ContextHubInfo getContextHubInfo();
+ method @NonNull public static android.hardware.location.ContextHubIntentEvent fromIntent(@NonNull android.content.Intent);
+ method @NonNull public android.hardware.location.ContextHubInfo getContextHubInfo();
method public int getEventType();
method public int getNanoAppAbortCode();
method public long getNanoAppId();
- method public android.hardware.location.NanoAppMessage getNanoAppMessage();
+ method @NonNull public android.hardware.location.NanoAppMessage getNanoAppMessage();
}
public final class ContextHubManager {
- method public android.hardware.location.ContextHubClient createClient(android.hardware.location.ContextHubInfo, android.hardware.location.ContextHubClientCallback, java.util.concurrent.Executor);
- method public android.hardware.location.ContextHubClient createClient(android.hardware.location.ContextHubInfo, android.hardware.location.ContextHubClientCallback);
- method public android.hardware.location.ContextHubClient createClient(android.hardware.location.ContextHubInfo, android.app.PendingIntent, long);
- method public android.hardware.location.ContextHubTransaction<java.lang.Void> disableNanoApp(android.hardware.location.ContextHubInfo, long);
- method public android.hardware.location.ContextHubTransaction<java.lang.Void> enableNanoApp(android.hardware.location.ContextHubInfo, long);
- method public deprecated int[] findNanoAppOnHub(int, android.hardware.location.NanoAppFilter);
- method public deprecated int[] getContextHubHandles();
- method public deprecated android.hardware.location.ContextHubInfo getContextHubInfo(int);
- method public java.util.List<android.hardware.location.ContextHubInfo> getContextHubs();
- method public deprecated android.hardware.location.NanoAppInstanceInfo getNanoAppInstanceInfo(int);
- method public deprecated int loadNanoApp(int, android.hardware.location.NanoApp);
- method public android.hardware.location.ContextHubTransaction<java.lang.Void> loadNanoApp(android.hardware.location.ContextHubInfo, android.hardware.location.NanoAppBinary);
- method public android.hardware.location.ContextHubTransaction<java.util.List<android.hardware.location.NanoAppState>> queryNanoApps(android.hardware.location.ContextHubInfo);
- method public deprecated int registerCallback(android.hardware.location.ContextHubManager.Callback);
- method public deprecated int registerCallback(android.hardware.location.ContextHubManager.Callback, android.os.Handler);
- method public deprecated int sendMessage(int, int, android.hardware.location.ContextHubMessage);
- method public deprecated int unloadNanoApp(int);
- method public android.hardware.location.ContextHubTransaction<java.lang.Void> unloadNanoApp(android.hardware.location.ContextHubInfo, long);
- method public deprecated int unregisterCallback(android.hardware.location.ContextHubManager.Callback);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) @NonNull public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.ContextHubClientCallback, @NonNull java.util.concurrent.Executor);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) @NonNull public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.ContextHubClientCallback);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) @NonNull public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.app.PendingIntent, long);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) @NonNull public android.hardware.location.ContextHubTransaction<java.lang.Void> disableNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) @NonNull public android.hardware.location.ContextHubTransaction<java.lang.Void> enableNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
+ method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int[] findNanoAppOnHub(int, @NonNull android.hardware.location.NanoAppFilter);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int[] getContextHubHandles();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public android.hardware.location.ContextHubInfo getContextHubInfo(int);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) @NonNull public java.util.List<android.hardware.location.ContextHubInfo> getContextHubs();
+ method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public android.hardware.location.NanoAppInstanceInfo getNanoAppInstanceInfo(int);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int loadNanoApp(int, @NonNull android.hardware.location.NanoApp);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) @NonNull public android.hardware.location.ContextHubTransaction<java.lang.Void> loadNanoApp(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.NanoAppBinary);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) @NonNull public android.hardware.location.ContextHubTransaction<java.util.List<android.hardware.location.NanoAppState>> queryNanoApps(@NonNull android.hardware.location.ContextHubInfo);
+ method @Deprecated public int registerCallback(@NonNull android.hardware.location.ContextHubManager.Callback);
+ method @Deprecated public int registerCallback(android.hardware.location.ContextHubManager.Callback, android.os.Handler);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int sendMessage(int, int, @NonNull android.hardware.location.ContextHubMessage);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int unloadNanoApp(int);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) @NonNull public android.hardware.location.ContextHubTransaction<java.lang.Void> unloadNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
+ method @Deprecated public int unregisterCallback(@NonNull android.hardware.location.ContextHubManager.Callback);
field public static final int EVENT_HUB_RESET = 6; // 0x6
field public static final int EVENT_NANOAPP_ABORTED = 4; // 0x4
field public static final int EVENT_NANOAPP_DISABLED = 3; // 0x3
@@ -2145,36 +2168,36 @@
field public static final int EVENT_NANOAPP_LOADED = 0; // 0x0
field public static final int EVENT_NANOAPP_MESSAGE = 5; // 0x5
field public static final int EVENT_NANOAPP_UNLOADED = 1; // 0x1
- field public static final java.lang.String EXTRA_CONTEXT_HUB_INFO = "android.hardware.location.extra.CONTEXT_HUB_INFO";
- field public static final java.lang.String EXTRA_EVENT_TYPE = "android.hardware.location.extra.EVENT_TYPE";
- field public static final java.lang.String EXTRA_MESSAGE = "android.hardware.location.extra.MESSAGE";
- field public static final java.lang.String EXTRA_NANOAPP_ABORT_CODE = "android.hardware.location.extra.NANOAPP_ABORT_CODE";
- field public static final java.lang.String EXTRA_NANOAPP_ID = "android.hardware.location.extra.NANOAPP_ID";
+ field public static final String EXTRA_CONTEXT_HUB_INFO = "android.hardware.location.extra.CONTEXT_HUB_INFO";
+ field public static final String EXTRA_EVENT_TYPE = "android.hardware.location.extra.EVENT_TYPE";
+ field public static final String EXTRA_MESSAGE = "android.hardware.location.extra.MESSAGE";
+ field public static final String EXTRA_NANOAPP_ABORT_CODE = "android.hardware.location.extra.NANOAPP_ABORT_CODE";
+ field public static final String EXTRA_NANOAPP_ID = "android.hardware.location.extra.NANOAPP_ID";
}
- public static abstract deprecated class ContextHubManager.Callback {
- ctor protected ContextHubManager.Callback();
- method public abstract void onMessageReceipt(int, int, android.hardware.location.ContextHubMessage);
+ @Deprecated public abstract static class ContextHubManager.Callback {
+ ctor @Deprecated protected ContextHubManager.Callback();
+ method @Deprecated public abstract void onMessageReceipt(int, int, @NonNull android.hardware.location.ContextHubMessage);
}
- public deprecated class ContextHubMessage implements android.os.Parcelable {
- ctor public ContextHubMessage(int, int, byte[]);
- method public int describeContents();
- method public byte[] getData();
- method public int getMsgType();
- method public int getVersion();
- method public void setMsgData(byte[]);
- method public void setMsgType(int);
- method public void setVersion(int);
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.hardware.location.ContextHubMessage> CREATOR;
+ @Deprecated public class ContextHubMessage implements android.os.Parcelable {
+ ctor @Deprecated public ContextHubMessage(int, int, byte[]);
+ method @Deprecated public int describeContents();
+ method @Deprecated public byte[] getData();
+ method @Deprecated public int getMsgType();
+ method @Deprecated public int getVersion();
+ method @Deprecated public void setMsgData(byte[]);
+ method @Deprecated public void setMsgType(int);
+ method @Deprecated public void setVersion(int);
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.hardware.location.ContextHubMessage> CREATOR;
}
public class ContextHubTransaction<T> {
method public int getType();
- method public void setOnCompleteListener(android.hardware.location.ContextHubTransaction.OnCompleteListener<T>, java.util.concurrent.Executor);
- method public void setOnCompleteListener(android.hardware.location.ContextHubTransaction.OnCompleteListener<T>);
- method public static java.lang.String typeToString(int, boolean);
+ method public void setOnCompleteListener(@NonNull android.hardware.location.ContextHubTransaction.OnCompleteListener<T>, @NonNull java.util.concurrent.Executor);
+ method public void setOnCompleteListener(@NonNull android.hardware.location.ContextHubTransaction.OnCompleteListener<T>);
+ method public static String typeToString(int, boolean);
method public android.hardware.location.ContextHubTransaction.Response<T> waitForResponse(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
field public static final int RESULT_FAILED_AT_HUB = 5; // 0x5
field public static final int RESULT_FAILED_BAD_PARAMS = 2; // 0x2
@@ -2192,8 +2215,8 @@
field public static final int TYPE_UNLOAD_NANOAPP = 1; // 0x1
}
- public static abstract interface ContextHubTransaction.OnCompleteListener<L> {
- method public abstract void onComplete(android.hardware.location.ContextHubTransaction<L>, android.hardware.location.ContextHubTransaction.Response<L>);
+ @java.lang.FunctionalInterface public static interface ContextHubTransaction.OnCompleteListener<L> {
+ method public void onComplete(android.hardware.location.ContextHubTransaction<L>, android.hardware.location.ContextHubTransaction.Response<L>);
}
public static class ContextHubTransaction.Response<R> {
@@ -2243,7 +2266,7 @@
public abstract class GeofenceHardwareMonitorCallback {
ctor public GeofenceHardwareMonitorCallback();
- method public deprecated void onMonitoringSystemChange(int, boolean, android.location.Location);
+ method @Deprecated public void onMonitoringSystemChange(int, boolean, android.location.Location);
method public void onMonitoringSystemChange(android.hardware.location.GeofenceHardwareMonitorEvent);
}
@@ -2288,33 +2311,33 @@
field public static final android.os.Parcelable.Creator<android.hardware.location.MemoryRegion> CREATOR;
}
- public deprecated class NanoApp implements android.os.Parcelable {
- ctor public NanoApp();
- ctor public deprecated NanoApp(int, byte[]);
- ctor public NanoApp(long, byte[]);
- method public int describeContents();
- method public byte[] getAppBinary();
- method public long getAppId();
- method public int getAppVersion();
- method public java.lang.String getName();
- method public int getNeededExecMemBytes();
- method public int getNeededReadMemBytes();
- method public int[] getNeededSensors();
- method public int getNeededWriteMemBytes();
- method public int[] getOutputEvents();
- method public java.lang.String getPublisher();
- method public void setAppBinary(byte[]);
- method public void setAppId(long);
- method public void setAppVersion(int);
- method public void setName(java.lang.String);
- method public void setNeededExecMemBytes(int);
- method public void setNeededReadMemBytes(int);
- method public void setNeededSensors(int[]);
- method public void setNeededWriteMemBytes(int);
- method public void setOutputEvents(int[]);
- method public void setPublisher(java.lang.String);
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.hardware.location.NanoApp> CREATOR;
+ @Deprecated public class NanoApp implements android.os.Parcelable {
+ ctor @Deprecated public NanoApp();
+ ctor @Deprecated public NanoApp(int, byte[]);
+ ctor @Deprecated public NanoApp(long, byte[]);
+ method @Deprecated public int describeContents();
+ method @Deprecated public byte[] getAppBinary();
+ method @Deprecated public long getAppId();
+ method @Deprecated public int getAppVersion();
+ method @Deprecated public String getName();
+ method @Deprecated public int getNeededExecMemBytes();
+ method @Deprecated public int getNeededReadMemBytes();
+ method @Deprecated public int[] getNeededSensors();
+ method @Deprecated public int getNeededWriteMemBytes();
+ method @Deprecated public int[] getOutputEvents();
+ method @Deprecated public String getPublisher();
+ method @Deprecated public void setAppBinary(byte[]);
+ method @Deprecated public void setAppId(long);
+ method @Deprecated public void setAppVersion(int);
+ method @Deprecated public void setName(String);
+ method @Deprecated public void setNeededExecMemBytes(int);
+ method @Deprecated public void setNeededReadMemBytes(int);
+ method @Deprecated public void setNeededSensors(int[]);
+ method @Deprecated public void setNeededWriteMemBytes(int);
+ method @Deprecated public void setOutputEvents(int[]);
+ method @Deprecated public void setPublisher(String);
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.hardware.location.NanoApp> CREATOR;
}
public final class NanoAppBinary implements android.os.Parcelable {
@@ -2336,37 +2359,37 @@
field public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppBinary> CREATOR;
}
- public deprecated class NanoAppFilter implements android.os.Parcelable {
- ctor public NanoAppFilter(long, int, int, long);
- method public int describeContents();
- method public boolean testMatch(android.hardware.location.NanoAppInstanceInfo);
- method public void writeToParcel(android.os.Parcel, int);
- field public static final int APP_ANY = -1; // 0xffffffff
- field public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppFilter> CREATOR;
- field public static final int FLAGS_VERSION_ANY = -1; // 0xffffffff
- field public static final int FLAGS_VERSION_GREAT_THAN = 2; // 0x2
- field public static final int FLAGS_VERSION_LESS_THAN = 4; // 0x4
- field public static final int FLAGS_VERSION_STRICTLY_EQUAL = 8; // 0x8
- field public static final int HUB_ANY = -1; // 0xffffffff
- field public static final int VENDOR_ANY = -1; // 0xffffffff
+ @Deprecated public class NanoAppFilter implements android.os.Parcelable {
+ ctor @Deprecated public NanoAppFilter(long, int, int, long);
+ method @Deprecated public int describeContents();
+ method @Deprecated public boolean testMatch(android.hardware.location.NanoAppInstanceInfo);
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final int APP_ANY = -1; // 0xffffffff
+ field @Deprecated public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppFilter> CREATOR;
+ field @Deprecated public static final int FLAGS_VERSION_ANY = -1; // 0xffffffff
+ field @Deprecated public static final int FLAGS_VERSION_GREAT_THAN = 2; // 0x2
+ field @Deprecated public static final int FLAGS_VERSION_LESS_THAN = 4; // 0x4
+ field @Deprecated public static final int FLAGS_VERSION_STRICTLY_EQUAL = 8; // 0x8
+ field @Deprecated public static final int HUB_ANY = -1; // 0xffffffff
+ field @Deprecated public static final int VENDOR_ANY = -1; // 0xffffffff
}
- public deprecated class NanoAppInstanceInfo implements android.os.Parcelable {
- ctor public NanoAppInstanceInfo();
- method public int describeContents();
- method public long getAppId();
- method public int getAppVersion();
- method public int getContexthubId();
- method public int getHandle();
- method public java.lang.String getName();
- method public int getNeededExecMemBytes();
- method public int getNeededReadMemBytes();
- method public int[] getNeededSensors();
- method public int getNeededWriteMemBytes();
- method public int[] getOutputEvents();
- method public java.lang.String getPublisher();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppInstanceInfo> CREATOR;
+ @Deprecated public class NanoAppInstanceInfo implements android.os.Parcelable {
+ ctor @Deprecated public NanoAppInstanceInfo();
+ method @Deprecated public int describeContents();
+ method @Deprecated public long getAppId();
+ method @Deprecated public int getAppVersion();
+ method @Deprecated public int getContexthubId();
+ method @Deprecated public int getHandle();
+ method @Deprecated public String getName();
+ method @Deprecated public int getNeededExecMemBytes();
+ method @Deprecated public int getNeededReadMemBytes();
+ method @Deprecated @NonNull public int[] getNeededSensors();
+ method @Deprecated public int getNeededWriteMemBytes();
+ method @Deprecated @NonNull public int[] getOutputEvents();
+ method @Deprecated public String getPublisher();
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppInstanceInfo> CREATOR;
}
public final class NanoAppMessage implements android.os.Parcelable {
@@ -2397,9 +2420,9 @@
public final class Announcement implements android.os.Parcelable {
method public int describeContents();
- method public android.hardware.radio.ProgramSelector getSelector();
+ method @NonNull public android.hardware.radio.ProgramSelector getSelector();
method public int getType();
- method public java.util.Map<java.lang.String, java.lang.String> getVendorInfo();
+ method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.radio.Announcement> CREATOR;
field public static final int TYPE_EMERGENCY = 1; // 0x1
@@ -2412,55 +2435,55 @@
field public static final int TYPE_WEATHER = 4; // 0x4
}
- public static abstract interface Announcement.OnListUpdatedListener {
- method public abstract void onListUpdated(java.util.Collection<android.hardware.radio.Announcement>);
+ public static interface Announcement.OnListUpdatedListener {
+ method public void onListUpdated(java.util.Collection<android.hardware.radio.Announcement>);
}
public final class ProgramList implements java.lang.AutoCloseable {
- method public void addOnCompleteListener(java.util.concurrent.Executor, android.hardware.radio.ProgramList.OnCompleteListener);
- method public void addOnCompleteListener(android.hardware.radio.ProgramList.OnCompleteListener);
+ method public void addOnCompleteListener(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.radio.ProgramList.OnCompleteListener);
+ method public void addOnCompleteListener(@NonNull android.hardware.radio.ProgramList.OnCompleteListener);
method public void close();
- method public android.hardware.radio.RadioManager.ProgramInfo get(android.hardware.radio.ProgramSelector.Identifier);
- method public void registerListCallback(java.util.concurrent.Executor, android.hardware.radio.ProgramList.ListCallback);
- method public void registerListCallback(android.hardware.radio.ProgramList.ListCallback);
- method public void removeOnCompleteListener(android.hardware.radio.ProgramList.OnCompleteListener);
- method public java.util.List<android.hardware.radio.RadioManager.ProgramInfo> toList();
- method public void unregisterListCallback(android.hardware.radio.ProgramList.ListCallback);
+ method @Nullable public android.hardware.radio.RadioManager.ProgramInfo get(@NonNull android.hardware.radio.ProgramSelector.Identifier);
+ method public void registerListCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.radio.ProgramList.ListCallback);
+ method public void registerListCallback(@NonNull android.hardware.radio.ProgramList.ListCallback);
+ method public void removeOnCompleteListener(@NonNull android.hardware.radio.ProgramList.OnCompleteListener);
+ method @NonNull public java.util.List<android.hardware.radio.RadioManager.ProgramInfo> toList();
+ method public void unregisterListCallback(@NonNull android.hardware.radio.ProgramList.ListCallback);
}
public static final class ProgramList.Filter implements android.os.Parcelable {
- ctor public ProgramList.Filter(java.util.Set<java.lang.Integer>, java.util.Set<android.hardware.radio.ProgramSelector.Identifier>, boolean, boolean);
+ ctor public ProgramList.Filter(@NonNull java.util.Set<java.lang.Integer>, @NonNull java.util.Set<android.hardware.radio.ProgramSelector.Identifier>, boolean, boolean);
method public boolean areCategoriesIncluded();
method public boolean areModificationsExcluded();
method public int describeContents();
- method public java.util.Set<java.lang.Integer> getIdentifierTypes();
- method public java.util.Set<android.hardware.radio.ProgramSelector.Identifier> getIdentifiers();
+ method @NonNull public java.util.Set<java.lang.Integer> getIdentifierTypes();
+ method @NonNull public java.util.Set<android.hardware.radio.ProgramSelector.Identifier> getIdentifiers();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramList.Filter> CREATOR;
}
- public static abstract class ProgramList.ListCallback {
+ public abstract static class ProgramList.ListCallback {
ctor public ProgramList.ListCallback();
- method public void onItemChanged(android.hardware.radio.ProgramSelector.Identifier);
- method public void onItemRemoved(android.hardware.radio.ProgramSelector.Identifier);
+ method public void onItemChanged(@NonNull android.hardware.radio.ProgramSelector.Identifier);
+ method public void onItemRemoved(@NonNull android.hardware.radio.ProgramSelector.Identifier);
}
- public static abstract interface ProgramList.OnCompleteListener {
- method public abstract void onComplete();
+ public static interface ProgramList.OnCompleteListener {
+ method public void onComplete();
}
public final class ProgramSelector implements android.os.Parcelable {
- ctor public ProgramSelector(int, android.hardware.radio.ProgramSelector.Identifier, android.hardware.radio.ProgramSelector.Identifier[], long[]);
- method public static android.hardware.radio.ProgramSelector createAmFmSelector(int, int);
- method public static android.hardware.radio.ProgramSelector createAmFmSelector(int, int, int);
+ ctor public ProgramSelector(@android.hardware.radio.ProgramSelector.ProgramType int, @NonNull android.hardware.radio.ProgramSelector.Identifier, @Nullable android.hardware.radio.ProgramSelector.Identifier[], @Nullable long[]);
+ method @NonNull public static android.hardware.radio.ProgramSelector createAmFmSelector(@android.hardware.radio.RadioManager.Band int, int);
+ method @NonNull public static android.hardware.radio.ProgramSelector createAmFmSelector(@android.hardware.radio.RadioManager.Band int, int, int);
method public int describeContents();
- method public android.hardware.radio.ProgramSelector.Identifier[] getAllIds(int);
- method public long getFirstId(int);
- method public android.hardware.radio.ProgramSelector.Identifier getPrimaryId();
- method public deprecated int getProgramType();
- method public android.hardware.radio.ProgramSelector.Identifier[] getSecondaryIds();
- method public deprecated long[] getVendorIds();
- method public android.hardware.radio.ProgramSelector withSecondaryPreferred(android.hardware.radio.ProgramSelector.Identifier);
+ method @NonNull public android.hardware.radio.ProgramSelector.Identifier[] getAllIds(@android.hardware.radio.ProgramSelector.IdentifierType int);
+ method public long getFirstId(@android.hardware.radio.ProgramSelector.IdentifierType int);
+ method @NonNull public android.hardware.radio.ProgramSelector.Identifier getPrimaryId();
+ method @Deprecated @android.hardware.radio.ProgramSelector.ProgramType public int getProgramType();
+ method @NonNull public android.hardware.radio.ProgramSelector.Identifier[] getSecondaryIds();
+ method @Deprecated @NonNull public long[] getVendorIds();
+ method @NonNull public android.hardware.radio.ProgramSelector withSecondaryPreferred(@NonNull android.hardware.radio.ProgramSelector.Identifier);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramSelector> CREATOR;
field public static final int IDENTIFIER_TYPE_AMFM_FREQUENCY = 1; // 0x1
@@ -2470,52 +2493,52 @@
field public static final int IDENTIFIER_TYPE_DAB_SIDECC = 5; // 0x5
field public static final int IDENTIFIER_TYPE_DAB_SID_EXT = 5; // 0x5
field public static final int IDENTIFIER_TYPE_DRMO_FREQUENCY = 10; // 0xa
- field public static final deprecated int IDENTIFIER_TYPE_DRMO_MODULATION = 11; // 0xb
+ field @Deprecated public static final int IDENTIFIER_TYPE_DRMO_MODULATION = 11; // 0xb
field public static final int IDENTIFIER_TYPE_DRMO_SERVICE_ID = 9; // 0x9
field public static final int IDENTIFIER_TYPE_HD_STATION_ID_EXT = 3; // 0x3
field public static final int IDENTIFIER_TYPE_HD_STATION_NAME = 10004; // 0x2714
- field public static final deprecated int IDENTIFIER_TYPE_HD_SUBCHANNEL = 4; // 0x4
+ field @Deprecated public static final int IDENTIFIER_TYPE_HD_SUBCHANNEL = 4; // 0x4
field public static final int IDENTIFIER_TYPE_INVALID = 0; // 0x0
field public static final int IDENTIFIER_TYPE_RDS_PI = 2; // 0x2
field public static final int IDENTIFIER_TYPE_SXM_CHANNEL = 13; // 0xd
field public static final int IDENTIFIER_TYPE_SXM_SERVICE_ID = 12; // 0xc
field public static final int IDENTIFIER_TYPE_VENDOR_END = 1999; // 0x7cf
- field public static final deprecated int IDENTIFIER_TYPE_VENDOR_PRIMARY_END = 1999; // 0x7cf
- field public static final deprecated int IDENTIFIER_TYPE_VENDOR_PRIMARY_START = 1000; // 0x3e8
+ field @Deprecated public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_END = 1999; // 0x7cf
+ field @Deprecated public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_START = 1000; // 0x3e8
field public static final int IDENTIFIER_TYPE_VENDOR_START = 1000; // 0x3e8
- field public static final deprecated int PROGRAM_TYPE_AM = 1; // 0x1
- field public static final deprecated int PROGRAM_TYPE_AM_HD = 3; // 0x3
- field public static final deprecated int PROGRAM_TYPE_DAB = 5; // 0x5
- field public static final deprecated int PROGRAM_TYPE_DRMO = 6; // 0x6
- field public static final deprecated int PROGRAM_TYPE_FM = 2; // 0x2
- field public static final deprecated int PROGRAM_TYPE_FM_HD = 4; // 0x4
- field public static final deprecated int PROGRAM_TYPE_INVALID = 0; // 0x0
- field public static final deprecated int PROGRAM_TYPE_SXM = 7; // 0x7
- field public static final deprecated int PROGRAM_TYPE_VENDOR_END = 1999; // 0x7cf
- field public static final deprecated int PROGRAM_TYPE_VENDOR_START = 1000; // 0x3e8
+ field @Deprecated public static final int PROGRAM_TYPE_AM = 1; // 0x1
+ field @Deprecated public static final int PROGRAM_TYPE_AM_HD = 3; // 0x3
+ field @Deprecated public static final int PROGRAM_TYPE_DAB = 5; // 0x5
+ field @Deprecated public static final int PROGRAM_TYPE_DRMO = 6; // 0x6
+ field @Deprecated public static final int PROGRAM_TYPE_FM = 2; // 0x2
+ field @Deprecated public static final int PROGRAM_TYPE_FM_HD = 4; // 0x4
+ field @Deprecated public static final int PROGRAM_TYPE_INVALID = 0; // 0x0
+ field @Deprecated public static final int PROGRAM_TYPE_SXM = 7; // 0x7
+ field @Deprecated public static final int PROGRAM_TYPE_VENDOR_END = 1999; // 0x7cf
+ field @Deprecated public static final int PROGRAM_TYPE_VENDOR_START = 1000; // 0x3e8
}
public static final class ProgramSelector.Identifier implements android.os.Parcelable {
- ctor public ProgramSelector.Identifier(int, long);
+ ctor public ProgramSelector.Identifier(@android.hardware.radio.ProgramSelector.IdentifierType int, long);
method public int describeContents();
- method public int getType();
+ method @android.hardware.radio.ProgramSelector.IdentifierType public int getType();
method public long getValue();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramSelector.Identifier> CREATOR;
}
- public static abstract class ProgramSelector.IdentifierType implements java.lang.annotation.Annotation {
+ @IntDef(prefix={"IDENTIFIER_TYPE_"}, value={android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_INVALID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_AMFM_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_RDS_PI, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_STATION_ID_EXT, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_SUBCHANNEL, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_STATION_NAME, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SID_EXT, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SIDECC, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_ENSEMBLE, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SCID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_SERVICE_ID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_MODULATION, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_SXM_SERVICE_ID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_SXM_CHANNEL}) @IntRange(from=android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_VENDOR_START, to=android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_VENDOR_END) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ProgramSelector.IdentifierType {
}
- public static abstract deprecated class ProgramSelector.ProgramType implements java.lang.annotation.Annotation {
+ @Deprecated @IntDef(prefix={"PROGRAM_TYPE_"}, value={android.hardware.radio.ProgramSelector.PROGRAM_TYPE_INVALID, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_AM, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_FM, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_AM_HD, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_FM_HD, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_DAB, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_DRMO, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_SXM}) @IntRange(from=android.hardware.radio.ProgramSelector.PROGRAM_TYPE_VENDOR_START, to=android.hardware.radio.ProgramSelector.PROGRAM_TYPE_VENDOR_END) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ProgramSelector.ProgramType {
}
public class RadioManager {
- method public void addAnnouncementListener(java.util.Set<java.lang.Integer>, android.hardware.radio.Announcement.OnListUpdatedListener);
- method public void addAnnouncementListener(java.util.concurrent.Executor, java.util.Set<java.lang.Integer>, android.hardware.radio.Announcement.OnListUpdatedListener);
- method public int listModules(java.util.List<android.hardware.radio.RadioManager.ModuleProperties>);
- method public android.hardware.radio.RadioTuner openTuner(int, android.hardware.radio.RadioManager.BandConfig, boolean, android.hardware.radio.RadioTuner.Callback, android.os.Handler);
- method public void removeAnnouncementListener(android.hardware.radio.Announcement.OnListUpdatedListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void addAnnouncementListener(@NonNull java.util.Set<java.lang.Integer>, @NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void addAnnouncementListener(@NonNull java.util.concurrent.Executor, @NonNull java.util.Set<java.lang.Integer>, @NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public int listModules(java.util.List<android.hardware.radio.RadioManager.ModuleProperties>);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public android.hardware.radio.RadioTuner openTuner(int, android.hardware.radio.RadioManager.BandConfig, boolean, android.hardware.radio.RadioTuner.Callback, android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void removeAnnouncementListener(@NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
field public static final int BAND_AM = 0; // 0x0
field public static final int BAND_AM_HD = 3; // 0x3
field public static final int BAND_FM = 1; // 0x1
@@ -2565,7 +2588,7 @@
field public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.AmBandDescriptor> CREATOR;
}
- public static abstract class RadioManager.Band implements java.lang.annotation.Annotation {
+ @IntDef(prefix={"BAND_"}, value={android.hardware.radio.RadioManager.BAND_INVALID, android.hardware.radio.RadioManager.BAND_AM, android.hardware.radio.RadioManager.BAND_FM, android.hardware.radio.RadioManager.BAND_AM_HD, android.hardware.radio.RadioManager.BAND_FM_HD}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RadioManager.Band {
}
public static class RadioManager.BandConfig implements android.os.Parcelable {
@@ -2625,37 +2648,37 @@
method public int describeContents();
method public android.hardware.radio.RadioManager.BandDescriptor[] getBands();
method public int getClassId();
- method public java.util.Map<java.lang.String, java.lang.Integer> getDabFrequencyTable();
+ method @Nullable public java.util.Map<java.lang.String,java.lang.Integer> getDabFrequencyTable();
method public int getId();
- method public java.lang.String getImplementor();
+ method public String getImplementor();
method public int getNumAudioSources();
method public int getNumTuners();
- method public java.lang.String getProduct();
- method public java.lang.String getSerial();
- method public java.lang.String getServiceName();
- method public java.util.Map<java.lang.String, java.lang.String> getVendorInfo();
- method public java.lang.String getVersion();
+ method public String getProduct();
+ method public String getSerial();
+ method @NonNull public String getServiceName();
+ method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
+ method public String getVersion();
method public boolean isBackgroundScanningSupported();
method public boolean isCaptureSupported();
method public boolean isInitializationRequired();
- method public boolean isProgramIdentifierSupported(int);
- method public boolean isProgramTypeSupported(int);
+ method public boolean isProgramIdentifierSupported(@android.hardware.radio.ProgramSelector.IdentifierType int);
+ method public boolean isProgramTypeSupported(@android.hardware.radio.ProgramSelector.ProgramType int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.ModuleProperties> CREATOR;
}
public static class RadioManager.ProgramInfo implements android.os.Parcelable {
method public int describeContents();
- method public deprecated int getChannel();
- method public android.hardware.radio.ProgramSelector.Identifier getLogicallyTunedTo();
+ method @Deprecated public int getChannel();
+ method @Nullable public android.hardware.radio.ProgramSelector.Identifier getLogicallyTunedTo();
method public android.hardware.radio.RadioMetadata getMetadata();
- method public android.hardware.radio.ProgramSelector.Identifier getPhysicallyTunedTo();
- method public java.util.Collection<android.hardware.radio.ProgramSelector.Identifier> getRelatedContent();
- method public android.hardware.radio.ProgramSelector getSelector();
+ method @Nullable public android.hardware.radio.ProgramSelector.Identifier getPhysicallyTunedTo();
+ method @Nullable public java.util.Collection<android.hardware.radio.ProgramSelector.Identifier> getRelatedContent();
+ method @NonNull public android.hardware.radio.ProgramSelector getSelector();
method public int getSignalStrength();
- method public deprecated int getSubChannel();
- method public java.util.Map<java.lang.String, java.lang.String> getVendorInfo();
- method public deprecated boolean isDigital();
+ method @Deprecated public int getSubChannel();
+ method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
+ method @Deprecated public boolean isDigital();
method public boolean isLive();
method public boolean isMuted();
method public boolean isStereo();
@@ -2667,45 +2690,45 @@
}
public final class RadioMetadata implements android.os.Parcelable {
- method public boolean containsKey(java.lang.String);
+ method public boolean containsKey(String);
method public int describeContents();
- method public deprecated android.graphics.Bitmap getBitmap(java.lang.String);
- method public android.hardware.radio.RadioMetadata.Clock getClock(java.lang.String);
- method public int getInt(java.lang.String);
- method public java.lang.String getString(java.lang.String);
+ method @Deprecated public android.graphics.Bitmap getBitmap(String);
+ method public android.hardware.radio.RadioMetadata.Clock getClock(String);
+ method public int getInt(String);
+ method public String getString(String);
method public java.util.Set<java.lang.String> keySet();
method public int size();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.radio.RadioMetadata> CREATOR;
- field public static final java.lang.String METADATA_KEY_ALBUM = "android.hardware.radio.metadata.ALBUM";
- field public static final java.lang.String METADATA_KEY_ART = "android.hardware.radio.metadata.ART";
- field public static final java.lang.String METADATA_KEY_ARTIST = "android.hardware.radio.metadata.ARTIST";
- field public static final java.lang.String METADATA_KEY_CLOCK = "android.hardware.radio.metadata.CLOCK";
- field public static final java.lang.String METADATA_KEY_DAB_COMPONENT_NAME = "android.hardware.radio.metadata.DAB_COMPONENT_NAME";
- field public static final java.lang.String METADATA_KEY_DAB_COMPONENT_NAME_SHORT = "android.hardware.radio.metadata.DAB_COMPONENT_NAME_SHORT";
- field public static final java.lang.String METADATA_KEY_DAB_ENSEMBLE_NAME = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME";
- field public static final java.lang.String METADATA_KEY_DAB_ENSEMBLE_NAME_SHORT = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME_SHORT";
- field public static final java.lang.String METADATA_KEY_DAB_SERVICE_NAME = "android.hardware.radio.metadata.DAB_SERVICE_NAME";
- field public static final java.lang.String METADATA_KEY_DAB_SERVICE_NAME_SHORT = "android.hardware.radio.metadata.DAB_SERVICE_NAME_SHORT";
- field public static final java.lang.String METADATA_KEY_GENRE = "android.hardware.radio.metadata.GENRE";
- field public static final java.lang.String METADATA_KEY_ICON = "android.hardware.radio.metadata.ICON";
- field public static final java.lang.String METADATA_KEY_PROGRAM_NAME = "android.hardware.radio.metadata.PROGRAM_NAME";
- field public static final java.lang.String METADATA_KEY_RBDS_PTY = "android.hardware.radio.metadata.RBDS_PTY";
- field public static final java.lang.String METADATA_KEY_RDS_PI = "android.hardware.radio.metadata.RDS_PI";
- field public static final java.lang.String METADATA_KEY_RDS_PS = "android.hardware.radio.metadata.RDS_PS";
- field public static final java.lang.String METADATA_KEY_RDS_PTY = "android.hardware.radio.metadata.RDS_PTY";
- field public static final java.lang.String METADATA_KEY_RDS_RT = "android.hardware.radio.metadata.RDS_RT";
- field public static final java.lang.String METADATA_KEY_TITLE = "android.hardware.radio.metadata.TITLE";
+ field public static final String METADATA_KEY_ALBUM = "android.hardware.radio.metadata.ALBUM";
+ field public static final String METADATA_KEY_ART = "android.hardware.radio.metadata.ART";
+ field public static final String METADATA_KEY_ARTIST = "android.hardware.radio.metadata.ARTIST";
+ field public static final String METADATA_KEY_CLOCK = "android.hardware.radio.metadata.CLOCK";
+ field public static final String METADATA_KEY_DAB_COMPONENT_NAME = "android.hardware.radio.metadata.DAB_COMPONENT_NAME";
+ field public static final String METADATA_KEY_DAB_COMPONENT_NAME_SHORT = "android.hardware.radio.metadata.DAB_COMPONENT_NAME_SHORT";
+ field public static final String METADATA_KEY_DAB_ENSEMBLE_NAME = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME";
+ field public static final String METADATA_KEY_DAB_ENSEMBLE_NAME_SHORT = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME_SHORT";
+ field public static final String METADATA_KEY_DAB_SERVICE_NAME = "android.hardware.radio.metadata.DAB_SERVICE_NAME";
+ field public static final String METADATA_KEY_DAB_SERVICE_NAME_SHORT = "android.hardware.radio.metadata.DAB_SERVICE_NAME_SHORT";
+ field public static final String METADATA_KEY_GENRE = "android.hardware.radio.metadata.GENRE";
+ field public static final String METADATA_KEY_ICON = "android.hardware.radio.metadata.ICON";
+ field public static final String METADATA_KEY_PROGRAM_NAME = "android.hardware.radio.metadata.PROGRAM_NAME";
+ field public static final String METADATA_KEY_RBDS_PTY = "android.hardware.radio.metadata.RBDS_PTY";
+ field public static final String METADATA_KEY_RDS_PI = "android.hardware.radio.metadata.RDS_PI";
+ field public static final String METADATA_KEY_RDS_PS = "android.hardware.radio.metadata.RDS_PS";
+ field public static final String METADATA_KEY_RDS_PTY = "android.hardware.radio.metadata.RDS_PTY";
+ field public static final String METADATA_KEY_RDS_RT = "android.hardware.radio.metadata.RDS_RT";
+ field public static final String METADATA_KEY_TITLE = "android.hardware.radio.metadata.TITLE";
}
public static final class RadioMetadata.Builder {
ctor public RadioMetadata.Builder();
ctor public RadioMetadata.Builder(android.hardware.radio.RadioMetadata);
method public android.hardware.radio.RadioMetadata build();
- method public android.hardware.radio.RadioMetadata.Builder putBitmap(java.lang.String, android.graphics.Bitmap);
- method public android.hardware.radio.RadioMetadata.Builder putClock(java.lang.String, long, int);
- method public android.hardware.radio.RadioMetadata.Builder putInt(java.lang.String, int);
- method public android.hardware.radio.RadioMetadata.Builder putString(java.lang.String, java.lang.String);
+ method public android.hardware.radio.RadioMetadata.Builder putBitmap(String, android.graphics.Bitmap);
+ method public android.hardware.radio.RadioMetadata.Builder putClock(String, long, int);
+ method public android.hardware.radio.RadioMetadata.Builder putInt(String, int);
+ method public android.hardware.radio.RadioMetadata.Builder putString(String, String);
}
public static final class RadioMetadata.Clock implements android.os.Parcelable {
@@ -2722,53 +2745,53 @@
method public abstract int cancel();
method public abstract void cancelAnnouncement();
method public abstract void close();
- method public abstract deprecated int getConfiguration(android.hardware.radio.RadioManager.BandConfig[]);
- method public android.hardware.radio.ProgramList getDynamicProgramList(android.hardware.radio.ProgramList.Filter);
+ method @Deprecated public abstract int getConfiguration(android.hardware.radio.RadioManager.BandConfig[]);
+ method @Nullable public android.hardware.radio.ProgramList getDynamicProgramList(@Nullable android.hardware.radio.ProgramList.Filter);
method public abstract boolean getMute();
- method public java.util.Map<java.lang.String, java.lang.String> getParameters(java.util.List<java.lang.String>);
- method public abstract deprecated int getProgramInformation(android.hardware.radio.RadioManager.ProgramInfo[]);
- method public abstract deprecated java.util.List<android.hardware.radio.RadioManager.ProgramInfo> getProgramList(java.util.Map<java.lang.String, java.lang.String>);
+ method @NonNull public java.util.Map<java.lang.String,java.lang.String> getParameters(@NonNull java.util.List<java.lang.String>);
+ method @Deprecated public abstract int getProgramInformation(android.hardware.radio.RadioManager.ProgramInfo[]);
+ method @Deprecated @NonNull public abstract java.util.List<android.hardware.radio.RadioManager.ProgramInfo> getProgramList(@Nullable java.util.Map<java.lang.String,java.lang.String>);
method public abstract boolean hasControl();
- method public abstract deprecated boolean isAnalogForced();
- method public abstract deprecated boolean isAntennaConnected();
+ method @Deprecated public abstract boolean isAnalogForced();
+ method @Deprecated public abstract boolean isAntennaConnected();
method public boolean isConfigFlagSet(int);
method public boolean isConfigFlagSupported(int);
method public abstract int scan(int, boolean);
- method public abstract deprecated void setAnalogForced(boolean);
+ method @Deprecated public abstract void setAnalogForced(boolean);
method public void setConfigFlag(int, boolean);
- method public abstract deprecated int setConfiguration(android.hardware.radio.RadioManager.BandConfig);
+ method @Deprecated public abstract int setConfiguration(android.hardware.radio.RadioManager.BandConfig);
method public abstract int setMute(boolean);
- method public java.util.Map<java.lang.String, java.lang.String> setParameters(java.util.Map<java.lang.String, java.lang.String>);
+ method @NonNull public java.util.Map<java.lang.String,java.lang.String> setParameters(@NonNull java.util.Map<java.lang.String,java.lang.String>);
method public abstract boolean startBackgroundScan();
method public abstract int step(int, boolean);
- method public abstract deprecated int tune(int, int);
- method public abstract void tune(android.hardware.radio.ProgramSelector);
+ method @Deprecated public abstract int tune(int, int);
+ method public abstract void tune(@NonNull android.hardware.radio.ProgramSelector);
field public static final int DIRECTION_DOWN = 1; // 0x1
field public static final int DIRECTION_UP = 0; // 0x0
- field public static final deprecated int ERROR_BACKGROUND_SCAN_FAILED = 6; // 0x6
- field public static final deprecated int ERROR_BACKGROUND_SCAN_UNAVAILABLE = 5; // 0x5
- field public static final deprecated int ERROR_CANCELLED = 2; // 0x2
- field public static final deprecated int ERROR_CONFIG = 4; // 0x4
- field public static final deprecated int ERROR_HARDWARE_FAILURE = 0; // 0x0
- field public static final deprecated int ERROR_SCAN_TIMEOUT = 3; // 0x3
- field public static final deprecated int ERROR_SERVER_DIED = 1; // 0x1
+ field @Deprecated public static final int ERROR_BACKGROUND_SCAN_FAILED = 6; // 0x6
+ field @Deprecated public static final int ERROR_BACKGROUND_SCAN_UNAVAILABLE = 5; // 0x5
+ field @Deprecated public static final int ERROR_CANCELLED = 2; // 0x2
+ field @Deprecated public static final int ERROR_CONFIG = 4; // 0x4
+ field @Deprecated public static final int ERROR_HARDWARE_FAILURE = 0; // 0x0
+ field @Deprecated public static final int ERROR_SCAN_TIMEOUT = 3; // 0x3
+ field @Deprecated public static final int ERROR_SERVER_DIED = 1; // 0x1
}
- public static abstract class RadioTuner.Callback {
+ public abstract static class RadioTuner.Callback {
ctor public RadioTuner.Callback();
method public void onAntennaState(boolean);
method public void onBackgroundScanAvailabilityChange(boolean);
method public void onBackgroundScanComplete();
- method public deprecated void onConfigurationChanged(android.hardware.radio.RadioManager.BandConfig);
+ method @Deprecated public void onConfigurationChanged(android.hardware.radio.RadioManager.BandConfig);
method public void onControlChanged(boolean);
method public void onEmergencyAnnouncement(boolean);
- method public deprecated void onError(int);
- method public deprecated void onMetadataChanged(android.hardware.radio.RadioMetadata);
- method public void onParametersUpdated(java.util.Map<java.lang.String, java.lang.String>);
+ method @Deprecated public void onError(int);
+ method @Deprecated public void onMetadataChanged(android.hardware.radio.RadioMetadata);
+ method public void onParametersUpdated(@NonNull java.util.Map<java.lang.String,java.lang.String>);
method public void onProgramInfoChanged(android.hardware.radio.RadioManager.ProgramInfo);
method public void onProgramListChanged();
method public void onTrafficAnnouncement(boolean);
- method public void onTuneFailed(int, android.hardware.radio.ProgramSelector);
+ method public void onTuneFailed(int, @Nullable android.hardware.radio.ProgramSelector);
}
}
@@ -2780,7 +2803,7 @@
}
public static class SoundTrigger.RecognitionEvent {
- method public android.media.AudioFormat getCaptureFormat();
+ method @Nullable public android.media.AudioFormat getCaptureFormat();
method public int getCaptureSession();
method public byte[] getData();
method public boolean isCaptureAvailable();
@@ -2795,14 +2818,14 @@
}
public class UsbManager {
- method public java.util.List<android.hardware.usb.UsbPort> getPorts();
- method public void grantPermission(android.hardware.usb.UsbDevice, java.lang.String);
- field public static final java.lang.String ACTION_USB_PORT_CHANGED = "android.hardware.usb.action.USB_PORT_CHANGED";
+ method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_USB) public java.util.List<android.hardware.usb.UsbPort> getPorts();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void grantPermission(android.hardware.usb.UsbDevice, String);
+ field @RequiresPermission(android.Manifest.permission.MANAGE_USB) public static final String ACTION_USB_PORT_CHANGED = "android.hardware.usb.action.USB_PORT_CHANGED";
}
public final class UsbPort {
- method public android.hardware.usb.UsbPortStatus getStatus();
- method public void setRoles(int, int);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USB) @Nullable public android.hardware.usb.UsbPortStatus getStatus();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void setRoles(int, int);
}
public final class UsbPortStatus implements android.os.Parcelable {
@@ -2842,7 +2865,7 @@
method public double getAltitudeMeters();
method public double getLatitudeDegrees();
method public double getLongitudeDegrees();
- method public java.util.List<android.location.GnssSingleSatCorrection> getSingleSatCorrectionList();
+ method @Nullable public java.util.List<android.location.GnssSingleSatCorrection> getSingleSatCorrectionList();
method public long getToaGpsNanosecondsOfWeek();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.location.GnssMeasurementCorrections> CREATOR;
@@ -2854,7 +2877,7 @@
method public android.location.GnssMeasurementCorrections.Builder setAltitudeMeters(double);
method public android.location.GnssMeasurementCorrections.Builder setLatitudeDegrees(double);
method public android.location.GnssMeasurementCorrections.Builder setLongitudeDegrees(double);
- method public android.location.GnssMeasurementCorrections.Builder setSingleSatCorrectionList(java.util.List<android.location.GnssSingleSatCorrection>);
+ method public android.location.GnssMeasurementCorrections.Builder setSingleSatCorrectionList(@Nullable java.util.List<android.location.GnssSingleSatCorrection>);
method public android.location.GnssMeasurementCorrections.Builder setToaGpsNanosecondsOfWeek(long);
}
@@ -2883,20 +2906,20 @@
method public int getConstellationType();
method public float getExcessPathLengthMeters();
method public float getExcessPathLengthUncertaintyMeters();
- method public android.location.GnssReflectingPlane getReflectingPlane();
+ method @FloatRange(from=0.0f, to=1.0f) public float getProbSatIsLos();
+ method @Nullable public android.location.GnssReflectingPlane getReflectingPlane();
method public int getSatId();
method public int getSingleSatCorrectionFlags();
method public boolean hasExcessPathLength();
method public boolean hasExcessPathLengthUncertainty();
method public boolean hasReflectingPlane();
method public boolean hasSatelliteLineOfSight();
- method public boolean isSatelliteLineOfSight();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.location.GnssSingleSatCorrection> CREATOR;
field public static final int HAS_EXCESS_PATH_LENGTH_MASK = 2; // 0x2
field public static final int HAS_EXCESS_PATH_LENGTH_UNC_MASK = 4; // 0x4
+ field public static final int HAS_PROB_SAT_IS_LOS_MASK = 1; // 0x1
field public static final int HAS_REFLECTING_PLANE_MASK = 8; // 0x8
- field public static final int HAS_SAT_IS_LOS_MASK = 1; // 0x1
}
public static class GnssSingleSatCorrection.Builder {
@@ -2906,9 +2929,9 @@
method public android.location.GnssSingleSatCorrection.Builder setConstellationType(int);
method public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthMeters(float);
method public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthUncertaintyMeters(float);
+ method public android.location.GnssSingleSatCorrection.Builder setProbSatIsLos(@FloatRange(from=0.0f, to=1.0f) float);
method public android.location.GnssSingleSatCorrection.Builder setReflectingPlane(android.location.GnssReflectingPlane);
method public android.location.GnssSingleSatCorrection.Builder setSatId(int);
- method public android.location.GnssSingleSatCorrection.Builder setSatIsLos(boolean);
method public android.location.GnssSingleSatCorrection.Builder setSingleSatCorrectionFlags(int);
}
@@ -3079,8 +3102,8 @@
public class GpsMeasurementsEvent implements android.os.Parcelable {
ctor public GpsMeasurementsEvent(android.location.GpsClock, android.location.GpsMeasurement[]);
method public int describeContents();
- method public android.location.GpsClock getClock();
- method public java.util.Collection<android.location.GpsMeasurement> getMeasurements();
+ method @NonNull public android.location.GpsClock getClock();
+ method @NonNull public java.util.Collection<android.location.GpsMeasurement> getMeasurements();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.location.GpsMeasurementsEvent> CREATOR;
field public static final int STATUS_GPS_LOCATION_DISABLED = 2; // 0x2
@@ -3088,14 +3111,14 @@
field public static final int STATUS_READY = 1; // 0x1
}
- public static abstract interface GpsMeasurementsEvent.Listener {
- method public abstract void onGpsMeasurementsReceived(android.location.GpsMeasurementsEvent);
- method public abstract void onStatusChanged(int);
+ public static interface GpsMeasurementsEvent.Listener {
+ method public void onGpsMeasurementsReceived(android.location.GpsMeasurementsEvent);
+ method public void onStatusChanged(int);
}
public class GpsNavigationMessage implements android.os.Parcelable {
method public int describeContents();
- method public byte[] getData();
+ method @NonNull public byte[] getData();
method public short getMessageId();
method public byte getPrn();
method public short getStatus();
@@ -3124,7 +3147,7 @@
public class GpsNavigationMessageEvent implements android.os.Parcelable {
ctor public GpsNavigationMessageEvent(android.location.GpsNavigationMessage);
method public int describeContents();
- method public android.location.GpsNavigationMessage getNavigationMessage();
+ method @NonNull public android.location.GpsNavigationMessage getNavigationMessage();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessageEvent> CREATOR;
field public static int STATUS_GPS_LOCATION_DISABLED;
@@ -3132,9 +3155,9 @@
field public static int STATUS_READY;
}
- public static abstract interface GpsNavigationMessageEvent.Listener {
- method public abstract void onGpsNavigationMessageReceived(android.location.GpsNavigationMessageEvent);
- method public abstract void onStatusChanged(int);
+ public static interface GpsNavigationMessageEvent.Listener {
+ method public void onGpsNavigationMessageReceived(android.location.GpsNavigationMessageEvent);
+ method public void onStatusChanged(int);
}
public class Location implements android.os.Parcelable {
@@ -3144,40 +3167,40 @@
}
public class LocationManager {
- method public deprecated boolean addGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
- method public deprecated boolean addGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
- method public void flushGnssBatch();
- method public int getGnssBatchSize();
+ method @Deprecated public boolean addGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
+ method @Deprecated public boolean addGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void flushGnssBatch();
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int getGnssBatchSize();
method public int getGnssCapabilities();
- method public java.lang.String getLocationControllerExtraPackage();
- method public java.lang.String getNetworkProviderPackage();
- method public void injectGnssMeasurementCorrections(android.location.GnssMeasurementCorrections);
+ method @Nullable public String getLocationControllerExtraPackage();
+ method @Nullable public String getNetworkProviderPackage();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void injectGnssMeasurementCorrections(@NonNull android.location.GnssMeasurementCorrections);
method public boolean isLocationControllerExtraPackageEnabled();
method public boolean isLocationEnabledForUser(android.os.UserHandle);
- method public boolean isProviderEnabledForUser(java.lang.String, android.os.UserHandle);
- method public boolean registerGnssBatchedLocationCallback(long, boolean, android.location.BatchedLocationCallback, android.os.Handler);
- method public deprecated void removeGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
- method public deprecated void removeGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
- method public void requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper);
- method public void requestLocationUpdates(android.location.LocationRequest, android.app.PendingIntent);
- method public void setLocationControllerExtraPackage(java.lang.String);
- method public void setLocationControllerExtraPackageEnabled(boolean);
- method public void setLocationEnabledForUser(boolean, android.os.UserHandle);
- method public deprecated boolean setProviderEnabledForUser(java.lang.String, boolean, android.os.UserHandle);
- method public boolean unregisterGnssBatchedLocationCallback(android.location.BatchedLocationCallback);
+ method public boolean isProviderEnabledForUser(String, android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean registerGnssBatchedLocationCallback(long, boolean, android.location.BatchedLocationCallback, android.os.Handler);
+ method @Deprecated public void removeGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
+ method @Deprecated public void removeGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(android.location.LocationRequest, android.app.PendingIntent);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackage(String);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackageEnabled(boolean);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, android.os.UserHandle);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setProviderEnabledForUser(String, boolean, android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean unregisterGnssBatchedLocationCallback(android.location.BatchedLocationCallback);
}
public final class LocationRequest implements android.os.Parcelable {
method public static android.location.LocationRequest create();
method public static android.location.LocationRequest createFromDeprecatedCriteria(android.location.Criteria, long, float, boolean);
- method public static android.location.LocationRequest createFromDeprecatedProvider(java.lang.String, long, float, boolean);
+ method public static android.location.LocationRequest createFromDeprecatedProvider(String, long, float, boolean);
method public int describeContents();
method public long getExpireAt();
method public long getFastestInterval();
method public boolean getHideFromAppOps();
method public long getInterval();
method public int getNumUpdates();
- method public java.lang.String getProvider();
+ method public String getProvider();
method public int getQuality();
method public float getSmallestDisplacement();
method public android.os.WorkSource getWorkSource();
@@ -3189,7 +3212,7 @@
method public android.location.LocationRequest setInterval(long);
method public android.location.LocationRequest setLowPowerMode(boolean);
method public android.location.LocationRequest setNumUpdates(int);
- method public android.location.LocationRequest setProvider(java.lang.String);
+ method public android.location.LocationRequest setProvider(String);
method public android.location.LocationRequest setQuality(int);
method public android.location.LocationRequest setSmallestDisplacement(float);
method public void setWorkSource(android.os.WorkSource);
@@ -3218,7 +3241,7 @@
}
public static class AudioAttributes.Builder {
- method public android.media.AudioAttributes.Builder addBundle(android.os.Bundle);
+ method public android.media.AudioAttributes.Builder addBundle(@NonNull android.os.Bundle);
method public android.media.AudioAttributes.Builder setCapturePreset(int);
method public android.media.AudioAttributes.Builder setInternalCapturePreset(int);
}
@@ -3226,12 +3249,12 @@
public final class AudioFocusInfo implements android.os.Parcelable {
method public int describeContents();
method public android.media.AudioAttributes getAttributes();
- method public java.lang.String getClientId();
+ method public String getClientId();
method public int getClientUid();
method public int getFlags();
method public int getGainRequest();
method public int getLossReceived();
- method public java.lang.String getPackageName();
+ method public String getPackageName();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.AudioFocusInfo> CREATOR;
}
@@ -3241,22 +3264,22 @@
}
public static final class AudioFocusRequest.Builder {
- method public android.media.AudioFocusRequest.Builder setLocksFocus(boolean);
+ method @NonNull public android.media.AudioFocusRequest.Builder setLocksFocus(boolean);
}
public class AudioManager {
- method public deprecated int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes);
+ method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes);
method public void clearAudioServerStateCallback();
- method public int dispatchAudioFocusChange(android.media.AudioFocusInfo, int, android.media.audiopolicy.AudioPolicy);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int dispatchAudioFocusChange(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
method public boolean isAudioServerRunning();
method public boolean isHdmiSystemAudioSupported();
- method public int registerAudioPolicy(android.media.audiopolicy.AudioPolicy);
- method public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException;
- method public deprecated int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException;
- method public int requestAudioFocus(android.media.AudioFocusRequest, android.media.audiopolicy.AudioPolicy);
- method public void setAudioServerStateCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioServerStateCallback);
- method public void setFocusRequestResult(android.media.AudioFocusInfo, int, android.media.audiopolicy.AudioPolicy);
- method public void unregisterAudioPolicyAsync(android.media.audiopolicy.AudioPolicy);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException;
+ method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException;
+ method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int requestAudioFocus(@NonNull android.media.AudioFocusRequest, @Nullable android.media.audiopolicy.AudioPolicy);
+ method public void setAudioServerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioServerStateCallback);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void unregisterAudioPolicyAsync(@NonNull android.media.audiopolicy.AudioPolicy);
field public static final int AUDIOFOCUS_FLAG_DELAY_OK = 1; // 0x1
field public static final int AUDIOFOCUS_FLAG_LOCK = 4; // 0x4
field public static final int AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS = 2; // 0x2
@@ -3264,7 +3287,7 @@
field public static final int SUCCESS = 0; // 0x0
}
- public static abstract class AudioManager.AudioServerStateCallback {
+ public abstract static class AudioManager.AudioServerStateCallback {
ctor public AudioManager.AudioServerStateCallback();
method public void onAudioServerDown();
method public void onAudioServerUp();
@@ -3296,20 +3319,21 @@
}
public static class AudioRecord.Builder {
- method public android.media.AudioRecord.Builder setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
+ method public android.media.AudioRecord.Builder setAudioAttributes(@NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
method public android.media.AudioRecord.Builder setSessionId(int) throws java.lang.IllegalArgumentException;
}
public final class MediaRecorder.AudioSource {
- field public static final int HOTWORD = 1999; // 0x7cf
+ field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int ECHO_REFERENCE = 1997; // 0x7cd
+ field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_HOTWORD) public static final int HOTWORD = 1999; // 0x7cf
field public static final int RADIO_TUNER = 1998; // 0x7ce
}
public static class MediaTimestamp.Builder {
ctor public MediaTimestamp.Builder();
- ctor public MediaTimestamp.Builder(android.media.MediaTimestamp);
- method public android.media.MediaTimestamp build();
- method public android.media.MediaTimestamp.Builder setMediaTimestamp(long, long, float);
+ ctor public MediaTimestamp.Builder(@NonNull android.media.MediaTimestamp);
+ method @NonNull public android.media.MediaTimestamp build();
+ method @NonNull public android.media.MediaTimestamp.Builder setMediaTimestamp(long, long, float);
}
public class PlayerProxy {
@@ -3323,16 +3347,16 @@
public static class SubtitleData.Builder {
ctor public SubtitleData.Builder();
- ctor public SubtitleData.Builder(android.media.SubtitleData);
- method public android.media.SubtitleData build();
- method public android.media.SubtitleData.Builder setSubtitleData(int, long, long, byte[]);
+ ctor public SubtitleData.Builder(@NonNull android.media.SubtitleData);
+ method @NonNull public android.media.SubtitleData build();
+ method @NonNull public android.media.SubtitleData.Builder setSubtitleData(int, long, long, @NonNull byte[]);
}
public static class TimedMetaData.Builder {
ctor public TimedMetaData.Builder();
- ctor public TimedMetaData.Builder(android.media.TimedMetaData);
- method public android.media.TimedMetaData build();
- method public android.media.TimedMetaData.Builder setTimedMetaData(long, byte[]);
+ ctor public TimedMetaData.Builder(@NonNull android.media.TimedMetaData);
+ method @NonNull public android.media.TimedMetaData build();
+ method @NonNull public android.media.TimedMetaData.Builder setTimedMetaData(long, @NonNull byte[]);
}
}
@@ -3351,7 +3375,7 @@
public static class AudioMix.Builder {
ctor public AudioMix.Builder(android.media.audiopolicy.AudioMixingRule) throws java.lang.IllegalArgumentException;
method public android.media.audiopolicy.AudioMix build() throws java.lang.IllegalArgumentException;
- method public android.media.audiopolicy.AudioMix.Builder setDevice(android.media.AudioDeviceInfo) throws java.lang.IllegalArgumentException;
+ method public android.media.audiopolicy.AudioMix.Builder setDevice(@NonNull android.media.AudioDeviceInfo) throws java.lang.IllegalArgumentException;
method public android.media.audiopolicy.AudioMix.Builder setFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException;
method public android.media.audiopolicy.AudioMix.Builder setRouteFlags(int) throws java.lang.IllegalArgumentException;
}
@@ -3364,25 +3388,25 @@
public static class AudioMixingRule.Builder {
ctor public AudioMixingRule.Builder();
- method public android.media.audiopolicy.AudioMixingRule.Builder addMixRule(int, java.lang.Object) throws java.lang.IllegalArgumentException;
+ method public android.media.audiopolicy.AudioMixingRule.Builder addMixRule(int, Object) throws java.lang.IllegalArgumentException;
method public android.media.audiopolicy.AudioMixingRule.Builder addRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
method public android.media.audiopolicy.AudioMixingRule build();
- method public android.media.audiopolicy.AudioMixingRule.Builder excludeMixRule(int, java.lang.Object) throws java.lang.IllegalArgumentException;
+ method public android.media.audiopolicy.AudioMixingRule.Builder excludeMixRule(int, Object) throws java.lang.IllegalArgumentException;
method public android.media.audiopolicy.AudioMixingRule.Builder excludeRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
}
public class AudioPolicy {
- method public int attachMixes(java.util.List<android.media.audiopolicy.AudioMix>);
+ method public int attachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
method public android.media.AudioRecord createAudioRecordSink(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
method public android.media.AudioTrack createAudioTrackSource(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
- method public int detachMixes(java.util.List<android.media.audiopolicy.AudioMix>);
+ method public int detachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
method public int getFocusDuckingBehavior();
method public int getStatus();
method public int removeUidDeviceAffinity(int);
method public int setFocusDuckingBehavior(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
- method public void setRegistration(java.lang.String);
- method public int setUidDeviceAffinity(int, java.util.List<android.media.AudioDeviceInfo>);
- method public java.lang.String toLogFriendlyString();
+ method public void setRegistration(String);
+ method public int setUidDeviceAffinity(int, @NonNull java.util.List<android.media.AudioDeviceInfo>);
+ method public String toLogFriendlyString();
field public static final int FOCUS_POLICY_DUCKING_DEFAULT = 0; // 0x0
field public static final int FOCUS_POLICY_DUCKING_IN_APP = 0; // 0x0
field public static final int FOCUS_POLICY_DUCKING_IN_POLICY = 1; // 0x1
@@ -3390,7 +3414,7 @@
field public static final int POLICY_STATUS_UNREGISTERED = 1; // 0x1
}
- public static abstract class AudioPolicy.AudioPolicyFocusListener {
+ public abstract static class AudioPolicy.AudioPolicyFocusListener {
ctor public AudioPolicy.AudioPolicyFocusListener();
method public void onAudioFocusAbandon(android.media.AudioFocusInfo);
method public void onAudioFocusGrant(android.media.AudioFocusInfo, int);
@@ -3398,25 +3422,25 @@
method public void onAudioFocusRequest(android.media.AudioFocusInfo, int);
}
- public static abstract class AudioPolicy.AudioPolicyStatusListener {
+ public abstract static class AudioPolicy.AudioPolicyStatusListener {
ctor public AudioPolicy.AudioPolicyStatusListener();
method public void onMixStateUpdate(android.media.audiopolicy.AudioMix);
method public void onStatusChange();
}
- public static abstract class AudioPolicy.AudioPolicyVolumeCallback {
+ public abstract static class AudioPolicy.AudioPolicyVolumeCallback {
method public void onVolumeAdjustment(int);
}
public static class AudioPolicy.Builder {
ctor public AudioPolicy.Builder(android.content.Context);
- method public android.media.audiopolicy.AudioPolicy.Builder addMix(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
+ method public android.media.audiopolicy.AudioPolicy.Builder addMix(@NonNull android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
method public android.media.audiopolicy.AudioPolicy build();
method public void setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener);
method public void setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener);
- method public android.media.audiopolicy.AudioPolicy.Builder setAudioPolicyVolumeCallback(android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback);
+ method public android.media.audiopolicy.AudioPolicy.Builder setAudioPolicyVolumeCallback(@NonNull android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback);
method public android.media.audiopolicy.AudioPolicy.Builder setIsAudioFocusPolicy(boolean);
- method public android.media.audiopolicy.AudioPolicy.Builder setLooper(android.os.Looper) throws java.lang.IllegalArgumentException;
+ method public android.media.audiopolicy.AudioPolicy.Builder setLooper(@NonNull android.os.Looper) throws java.lang.IllegalArgumentException;
}
}
@@ -3424,32 +3448,32 @@
package android.media.session {
public final class ControllerCallbackLink implements android.os.Parcelable {
- ctor public ControllerCallbackLink(android.media.session.ControllerCallbackLink.CallbackStub);
+ ctor public ControllerCallbackLink(@NonNull android.media.session.ControllerCallbackLink.CallbackStub);
}
- public static abstract class ControllerCallbackLink.CallbackStub {
+ public abstract static class ControllerCallbackLink.CallbackStub {
ctor public ControllerCallbackLink.CallbackStub();
- method public void onEvent(java.lang.String, android.os.Bundle);
- method public void onExtrasChanged(android.os.Bundle);
- method public void onMetadataChanged(android.media.MediaMetadata);
- method public void onPlaybackStateChanged(android.media.session.PlaybackState);
- method public void onQueueChanged(java.util.List<android.media.session.MediaSession.QueueItem>);
- method public void onQueueTitleChanged(java.lang.CharSequence);
+ method public void onEvent(@NonNull String, @Nullable android.os.Bundle);
+ method public void onExtrasChanged(@Nullable android.os.Bundle);
+ method public void onMetadataChanged(@Nullable android.media.MediaMetadata);
+ method public void onPlaybackStateChanged(@Nullable android.media.session.PlaybackState);
+ method public void onQueueChanged(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
+ method public void onQueueTitleChanged(@Nullable CharSequence);
method public void onSessionDestroyed();
- method public void onVolumeInfoChanged(android.media.session.MediaController.PlaybackInfo);
+ method public void onVolumeInfoChanged(@NonNull android.media.session.MediaController.PlaybackInfo);
}
public final class MediaSessionManager {
- method public void setOnMediaKeyListener(android.media.session.MediaSessionManager.OnMediaKeyListener, android.os.Handler);
- method public void setOnVolumeKeyLongPressListener(android.media.session.MediaSessionManager.OnVolumeKeyLongPressListener, android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.SET_MEDIA_KEY_LISTENER) public void setOnMediaKeyListener(android.media.session.MediaSessionManager.OnMediaKeyListener, @Nullable android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER) public void setOnVolumeKeyLongPressListener(android.media.session.MediaSessionManager.OnVolumeKeyLongPressListener, @Nullable android.os.Handler);
}
- public static abstract interface MediaSessionManager.OnMediaKeyListener {
- method public abstract boolean onMediaKey(android.view.KeyEvent);
+ public static interface MediaSessionManager.OnMediaKeyListener {
+ method public boolean onMediaKey(android.view.KeyEvent);
}
- public static abstract interface MediaSessionManager.OnVolumeKeyLongPressListener {
- method public abstract void onVolumeKeyLongPress(android.view.KeyEvent);
+ public static interface MediaSessionManager.OnVolumeKeyLongPressListener {
+ method public void onVolumeKeyLongPress(android.view.KeyEvent);
}
}
@@ -3458,41 +3482,41 @@
public abstract class SoundTriggerDetectionService extends android.app.Service {
ctor public SoundTriggerDetectionService();
- method public void onConnected(java.util.UUID, android.os.Bundle);
- method public void onDisconnected(java.util.UUID, android.os.Bundle);
- method public void onError(java.util.UUID, android.os.Bundle, int, int);
- method public void onGenericRecognitionEvent(java.util.UUID, android.os.Bundle, int, android.hardware.soundtrigger.SoundTrigger.RecognitionEvent);
- method public abstract void onStopOperation(java.util.UUID, android.os.Bundle, int);
- method public final void operationFinished(java.util.UUID, int);
+ method @MainThread public void onConnected(@NonNull java.util.UUID, @Nullable android.os.Bundle);
+ method @MainThread public void onDisconnected(@NonNull java.util.UUID, @Nullable android.os.Bundle);
+ method @MainThread public void onError(@NonNull java.util.UUID, @Nullable android.os.Bundle, int, int);
+ method @MainThread public void onGenericRecognitionEvent(@NonNull java.util.UUID, @Nullable android.os.Bundle, int, @NonNull android.hardware.soundtrigger.SoundTrigger.RecognitionEvent);
+ method @MainThread public abstract void onStopOperation(@NonNull java.util.UUID, @Nullable android.os.Bundle, int);
+ method public final void operationFinished(@Nullable java.util.UUID, int);
}
public final class SoundTriggerDetector {
- method public boolean startRecognition(int);
- method public boolean stopRecognition();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public boolean startRecognition(int);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public boolean stopRecognition();
field public static final int RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS = 2; // 0x2
field public static final int RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO = 1; // 0x1
}
- public static abstract class SoundTriggerDetector.Callback {
+ public abstract static class SoundTriggerDetector.Callback {
ctor public SoundTriggerDetector.Callback();
method public abstract void onAvailabilityChanged(int);
- method public abstract void onDetected(android.media.soundtrigger.SoundTriggerDetector.EventPayload);
+ method public abstract void onDetected(@NonNull android.media.soundtrigger.SoundTriggerDetector.EventPayload);
method public abstract void onError();
method public abstract void onRecognitionPaused();
method public abstract void onRecognitionResumed();
}
public static class SoundTriggerDetector.EventPayload {
- method public android.media.AudioFormat getCaptureAudioFormat();
- method public byte[] getTriggerAudio();
+ method @Nullable public android.media.AudioFormat getCaptureAudioFormat();
+ method @Nullable public byte[] getTriggerAudio();
}
public final class SoundTriggerManager {
- method public android.media.soundtrigger.SoundTriggerDetector createSoundTriggerDetector(java.util.UUID, android.media.soundtrigger.SoundTriggerDetector.Callback, android.os.Handler);
- method public void deleteModel(java.util.UUID);
+ method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.media.soundtrigger.SoundTriggerDetector createSoundTriggerDetector(java.util.UUID, @NonNull android.media.soundtrigger.SoundTriggerDetector.Callback, @Nullable android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public void deleteModel(java.util.UUID);
method public int getDetectionServiceOperationsTimeout();
- method public android.media.soundtrigger.SoundTriggerManager.Model getModel(java.util.UUID);
- method public void updateModel(android.media.soundtrigger.SoundTriggerManager.Model);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.media.soundtrigger.SoundTriggerManager.Model getModel(java.util.UUID);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public void updateModel(android.media.soundtrigger.SoundTriggerManager.Model);
}
public static class SoundTriggerManager.Model {
@@ -3515,44 +3539,44 @@
}
public final class TvContract {
- method public static android.net.Uri buildChannelsUriForInput(java.lang.String, boolean);
- method public static android.net.Uri buildChannelsUriForInput(java.lang.String, java.lang.String, boolean);
- field public static final java.lang.String ACTION_CHANNEL_BROWSABLE_REQUESTED = "android.media.tv.action.CHANNEL_BROWSABLE_REQUESTED";
- field public static final java.lang.String EXTRA_BLOCKED_PACKAGES = "android.media.tv.extra.BLOCKED_PACKAGES";
- field public static final java.lang.String EXTRA_COLUMN_NAME = "android.media.tv.extra.COLUMN_NAME";
- field public static final java.lang.String EXTRA_DATA_TYPE = "android.media.tv.extra.DATA_TYPE";
- field public static final java.lang.String EXTRA_DEFAULT_VALUE = "android.media.tv.extra.DEFAULT_VALUE";
- field public static final java.lang.String EXTRA_EXISTING_COLUMN_NAMES = "android.media.tv.extra.EXISTING_COLUMN_NAMES";
- field public static final java.lang.String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME";
- field public static final java.lang.String EXTRA_RESULT_CODE = "android.media.tv.extra.RESULT_CODE";
- field public static final java.lang.String METHOD_ADD_COLUMN = "add_column";
- field public static final java.lang.String METHOD_BLOCK_PACKAGE = "block_package";
- field public static final java.lang.String METHOD_GET_BLOCKED_PACKAGES = "get_blocked_packages";
- field public static final java.lang.String METHOD_GET_COLUMNS = "get_columns";
- field public static final java.lang.String METHOD_UNBLOCK_PACKAGE = "unblock_package";
+ method public static android.net.Uri buildChannelsUriForInput(@Nullable String, boolean);
+ method public static android.net.Uri buildChannelsUriForInput(@Nullable String, @Nullable String, boolean);
+ field public static final String ACTION_CHANNEL_BROWSABLE_REQUESTED = "android.media.tv.action.CHANNEL_BROWSABLE_REQUESTED";
+ field public static final String EXTRA_BLOCKED_PACKAGES = "android.media.tv.extra.BLOCKED_PACKAGES";
+ field public static final String EXTRA_COLUMN_NAME = "android.media.tv.extra.COLUMN_NAME";
+ field public static final String EXTRA_DATA_TYPE = "android.media.tv.extra.DATA_TYPE";
+ field public static final String EXTRA_DEFAULT_VALUE = "android.media.tv.extra.DEFAULT_VALUE";
+ field public static final String EXTRA_EXISTING_COLUMN_NAMES = "android.media.tv.extra.EXISTING_COLUMN_NAMES";
+ field public static final String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME";
+ field public static final String EXTRA_RESULT_CODE = "android.media.tv.extra.RESULT_CODE";
+ field public static final String METHOD_ADD_COLUMN = "add_column";
+ field public static final String METHOD_BLOCK_PACKAGE = "block_package";
+ field public static final String METHOD_GET_BLOCKED_PACKAGES = "get_blocked_packages";
+ field public static final String METHOD_GET_COLUMNS = "get_columns";
+ field public static final String METHOD_UNBLOCK_PACKAGE = "unblock_package";
field public static final int RESULT_ERROR_INVALID_ARGUMENT = 2; // 0x2
field public static final int RESULT_ERROR_IO = 1; // 0x1
field public static final int RESULT_OK = 0; // 0x0
}
public static final class TvContract.WatchedPrograms implements android.media.tv.TvContract.BaseTvColumns {
- field public static final java.lang.String COLUMN_CHANNEL_ID = "channel_id";
- field public static final java.lang.String COLUMN_DESCRIPTION = "description";
- field public static final java.lang.String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
- field public static final java.lang.String COLUMN_INTERNAL_SESSION_TOKEN = "session_token";
- field public static final java.lang.String COLUMN_INTERNAL_TUNE_PARAMS = "tune_params";
- field public static final java.lang.String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
- field public static final java.lang.String COLUMN_TITLE = "title";
- field public static final java.lang.String COLUMN_WATCH_END_TIME_UTC_MILLIS = "watch_end_time_utc_millis";
- field public static final java.lang.String COLUMN_WATCH_START_TIME_UTC_MILLIS = "watch_start_time_utc_millis";
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watched_program";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/watched_program";
+ field public static final String COLUMN_CHANNEL_ID = "channel_id";
+ field public static final String COLUMN_DESCRIPTION = "description";
+ field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
+ field public static final String COLUMN_INTERNAL_SESSION_TOKEN = "session_token";
+ field public static final String COLUMN_INTERNAL_TUNE_PARAMS = "tune_params";
+ field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
+ field public static final String COLUMN_TITLE = "title";
+ field public static final String COLUMN_WATCH_END_TIME_UTC_MILLIS = "watch_end_time_utc_millis";
+ field public static final String COLUMN_WATCH_START_TIME_UTC_MILLIS = "watch_start_time_utc_millis";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watched_program";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watched_program";
field public static final android.net.Uri CONTENT_URI;
}
public final class TvInputHardwareInfo implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getAudioAddress();
+ method public String getAudioAddress();
method public int getAudioType();
method public int getCableConnectionStatus();
method public int getDeviceId();
@@ -3578,7 +3602,7 @@
public static final class TvInputHardwareInfo.Builder {
ctor public TvInputHardwareInfo.Builder();
- method public android.media.tv.TvInputHardwareInfo.Builder audioAddress(java.lang.String);
+ method public android.media.tv.TvInputHardwareInfo.Builder audioAddress(String);
method public android.media.tv.TvInputHardwareInfo.Builder audioType(int);
method public android.media.tv.TvInputHardwareInfo build();
method public android.media.tv.TvInputHardwareInfo.Builder cableConnectionStatus(int);
@@ -3588,79 +3612,79 @@
}
public final class TvInputInfo implements android.os.Parcelable {
- method public static deprecated android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, java.lang.String, java.lang.String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public static deprecated android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, java.lang.String, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public static deprecated android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, java.lang.String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public static deprecated android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, String, String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, String, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
method public android.hardware.hdmi.HdmiDeviceInfo getHdmiDeviceInfo();
method public boolean isConnectedToHdmiSwitch();
method public boolean isHardwareInput();
- method public android.graphics.drawable.Drawable loadIcon(android.content.Context, int);
+ method public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context, int);
}
public static final class TvInputInfo.Builder {
method public android.media.tv.TvInputInfo.Builder setHdmiDeviceInfo(android.hardware.hdmi.HdmiDeviceInfo);
method public android.media.tv.TvInputInfo.Builder setIcon(android.graphics.drawable.Icon);
method public android.media.tv.TvInputInfo.Builder setIcon(android.graphics.drawable.Icon, int);
- method public android.media.tv.TvInputInfo.Builder setLabel(java.lang.CharSequence);
- method public android.media.tv.TvInputInfo.Builder setLabel(int);
- method public android.media.tv.TvInputInfo.Builder setParentId(java.lang.String);
+ method public android.media.tv.TvInputInfo.Builder setLabel(CharSequence);
+ method public android.media.tv.TvInputInfo.Builder setLabel(@StringRes int);
+ method public android.media.tv.TvInputInfo.Builder setParentId(String);
method public android.media.tv.TvInputInfo.Builder setTvInputHardwareInfo(android.media.tv.TvInputHardwareInfo);
}
public static final class TvInputInfo.TvInputSettings {
- method public static java.util.Map<java.lang.String, java.lang.String> getCustomLabels(android.content.Context, int);
+ method public static java.util.Map<java.lang.String,java.lang.String> getCustomLabels(android.content.Context, int);
method public static java.util.Set<java.lang.String> getHiddenTvInputIds(android.content.Context, int);
- method public static void putCustomLabels(android.content.Context, java.util.Map<java.lang.String, java.lang.String>, int);
+ method public static void putCustomLabels(android.content.Context, java.util.Map<java.lang.String,java.lang.String>, int);
method public static void putHiddenTvInputs(android.content.Context, java.util.Set<java.lang.String>, int);
}
public final class TvInputManager {
- method public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, android.media.tv.TvInputInfo, android.media.tv.TvInputManager.HardwareCallback);
- method public void addBlockedRating(android.media.tv.TvContentRating);
- method public boolean captureFrame(java.lang.String, android.view.Surface, android.media.tv.TvStreamConfig);
- method public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(java.lang.String);
- method public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
- method public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
- method public boolean isSingleSessionActive();
- method public void notifyPreviewProgramAddedToWatchNext(java.lang.String, long, long);
- method public void notifyPreviewProgramBrowsableDisabled(java.lang.String, long);
- method public void notifyWatchNextProgramBrowsableDisabled(java.lang.String, long);
- method public void releaseTvInputHardware(int, android.media.tv.TvInputManager.Hardware);
- method public void removeBlockedRating(android.media.tv.TvContentRating);
- method public void setParentalControlsEnabled(boolean);
+ method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, android.media.tv.TvInputInfo, android.media.tv.TvInputManager.HardwareCallback);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating);
+ method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig);
+ method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String);
+ method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
+ method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
+ method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean isSingleSessionActive();
+ method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramAddedToWatchNext(String, long, long);
+ method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramBrowsableDisabled(String, long);
+ method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyWatchNextProgramBrowsableDisabled(String, long);
+ method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public void releaseTvInputHardware(int, android.media.tv.TvInputManager.Hardware);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void removeBlockedRating(@NonNull android.media.tv.TvContentRating);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void setParentalControlsEnabled(boolean);
}
public static final class TvInputManager.Hardware {
- method public void overrideAudioSink(int, java.lang.String, int, int, int);
+ method public void overrideAudioSink(int, String, int, int, int);
method public void setStreamVolume(float);
method public boolean setSurface(android.view.Surface, android.media.tv.TvStreamConfig);
}
- public static abstract class TvInputManager.HardwareCallback {
+ public abstract static class TvInputManager.HardwareCallback {
ctor public TvInputManager.HardwareCallback();
method public abstract void onReleased();
method public abstract void onStreamConfigChanged(android.media.tv.TvStreamConfig[]);
}
public abstract class TvInputService extends android.app.Service {
- method public android.media.tv.TvInputInfo onHardwareAdded(android.media.tv.TvInputHardwareInfo);
- method public java.lang.String onHardwareRemoved(android.media.tv.TvInputHardwareInfo);
- method public android.media.tv.TvInputInfo onHdmiDeviceAdded(android.hardware.hdmi.HdmiDeviceInfo);
- method public java.lang.String onHdmiDeviceRemoved(android.hardware.hdmi.HdmiDeviceInfo);
+ method @Nullable public android.media.tv.TvInputInfo onHardwareAdded(android.media.tv.TvInputHardwareInfo);
+ method @Nullable public String onHardwareRemoved(android.media.tv.TvInputHardwareInfo);
+ method @Nullable public android.media.tv.TvInputInfo onHdmiDeviceAdded(android.hardware.hdmi.HdmiDeviceInfo);
+ method @Nullable public String onHdmiDeviceRemoved(android.hardware.hdmi.HdmiDeviceInfo);
}
- public static abstract class TvInputService.RecordingSession {
- method public void notifySessionEvent(java.lang.String, android.os.Bundle);
+ public abstract static class TvInputService.RecordingSession {
+ method public void notifySessionEvent(@NonNull String, android.os.Bundle);
}
- public static abstract class TvInputService.Session implements android.view.KeyEvent.Callback {
- method public void notifySessionEvent(java.lang.String, android.os.Bundle);
+ public abstract static class TvInputService.Session implements android.view.KeyEvent.Callback {
+ method public void notifySessionEvent(@NonNull String, android.os.Bundle);
method public void onSetMain(boolean);
}
- public static abstract class TvRecordingClient.RecordingCallback {
- method public void onEvent(java.lang.String, java.lang.String, android.os.Bundle);
+ public abstract static class TvRecordingClient.RecordingCallback {
+ method public void onEvent(String, String, android.os.Bundle);
}
public class TvStreamConfig implements android.os.Parcelable {
@@ -3687,12 +3711,12 @@
}
public class TvView extends android.view.ViewGroup {
- method public void setMain();
- method public void unblockContent(android.media.tv.TvContentRating);
+ method @RequiresPermission("android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE") public void setMain();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void unblockContent(android.media.tv.TvContentRating);
}
- public static abstract class TvView.TvInputCallback {
- method public void onEvent(java.lang.String, java.lang.String, android.os.Bundle);
+ public abstract static class TvView.TvInputCallback {
+ method public void onEvent(String, String, android.os.Bundle);
}
}
@@ -3701,31 +3725,31 @@
public class LogMaker {
ctor public LogMaker(int);
- ctor public LogMaker(java.lang.Object[]);
- method public android.metrics.LogMaker addTaggedData(int, java.lang.Object);
+ ctor public LogMaker(Object[]);
+ method public android.metrics.LogMaker addTaggedData(int, Object);
method public android.metrics.LogMaker clearCategory();
method public android.metrics.LogMaker clearPackageName();
method public android.metrics.LogMaker clearSubtype();
method public android.metrics.LogMaker clearTaggedData(int);
method public android.metrics.LogMaker clearType();
- method public void deserialize(java.lang.Object[]);
+ method public void deserialize(Object[]);
method public int getCategory();
method public long getCounterBucket();
- method public java.lang.String getCounterName();
+ method public String getCounterName();
method public int getCounterValue();
- method public java.lang.String getPackageName();
+ method public String getPackageName();
method public int getProcessId();
method public int getSubtype();
- method public java.lang.Object getTaggedData(int);
+ method public Object getTaggedData(int);
method public long getTimestamp();
method public int getType();
method public int getUid();
method public boolean isLongCounterBucket();
method public boolean isSubsetOf(android.metrics.LogMaker);
- method public boolean isValidValue(java.lang.Object);
- method public java.lang.Object[] serialize();
+ method public boolean isValidValue(Object);
+ method public Object[] serialize();
method public android.metrics.LogMaker setCategory(int);
- method public android.metrics.LogMaker setPackageName(java.lang.String);
+ method public android.metrics.LogMaker setPackageName(String);
method public android.metrics.LogMaker setSubtype(int);
method public android.metrics.LogMaker setType(int);
}
@@ -3744,42 +3768,42 @@
package android.net {
public class ConnectivityManager {
- method public java.lang.String getCaptivePortalServerUrl();
- method public boolean isTetheringSupported();
- method public void setAirplaneMode(boolean);
- method public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback);
- method public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback, android.os.Handler);
- method public void stopTethering(int);
+ method @RequiresPermission(android.Manifest.permission.LOCAL_MAC_ADDRESS) public String getCaptivePortalServerUrl();
+ method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public boolean isTetheringSupported();
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void setAirplaneMode(boolean);
+ method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback);
+ method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback, android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void stopTethering(int);
field public static final int TETHERING_BLUETOOTH = 2; // 0x2
field public static final int TETHERING_USB = 1; // 0x1
field public static final int TETHERING_WIFI = 0; // 0x0
}
- public static abstract class ConnectivityManager.OnStartTetheringCallback {
+ public abstract static class ConnectivityManager.OnStartTetheringCallback {
ctor public ConnectivityManager.OnStartTetheringCallback();
method public void onTetheringFailed();
method public void onTetheringStarted();
}
public final class IpSecManager {
- method public void applyTunnelModeTransform(android.net.IpSecManager.IpSecTunnelInterface, int, android.net.IpSecTransform) throws java.io.IOException;
- method public android.net.IpSecManager.IpSecTunnelInterface createIpSecTunnelInterface(java.net.InetAddress, java.net.InetAddress, android.net.Network) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void applyTunnelModeTransform(@NonNull android.net.IpSecManager.IpSecTunnelInterface, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
+ method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecManager.IpSecTunnelInterface createIpSecTunnelInterface(@NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull android.net.Network) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
}
public static final class IpSecManager.IpSecTunnelInterface implements java.lang.AutoCloseable {
- method public void addAddress(java.net.InetAddress, int) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void addAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
method public void close();
- method public java.lang.String getInterfaceName();
- method public void removeAddress(java.net.InetAddress, int) throws java.io.IOException;
+ method @NonNull public String getInterfaceName();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void removeAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
}
public final class IpSecTransform implements java.lang.AutoCloseable {
- method public void startNattKeepalive(android.net.IpSecTransform.NattKeepaliveCallback, int, android.os.Handler) throws java.io.IOException;
- method public void stopNattKeepalive();
+ method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_IPSEC_TUNNELS, "android.permission.PACKET_KEEPALIVE_OFFLOAD"}) public void startNattKeepalive(@NonNull android.net.IpSecTransform.NattKeepaliveCallback, int, @NonNull android.os.Handler) throws java.io.IOException;
+ method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_IPSEC_TUNNELS, "android.permission.PACKET_KEEPALIVE_OFFLOAD"}) public void stopNattKeepalive();
}
public static class IpSecTransform.Builder {
- method public android.net.IpSecTransform buildTunnelModeTransform(java.net.InetAddress, android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
+ method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecTransform buildTunnelModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
}
public static class IpSecTransform.NattKeepaliveCallback {
@@ -3794,7 +3818,7 @@
public class LinkAddress implements android.os.Parcelable {
ctor public LinkAddress(java.net.InetAddress, int);
- ctor public LinkAddress(java.lang.String);
+ ctor public LinkAddress(String);
}
public final class LinkProperties implements android.os.Parcelable {
@@ -3802,9 +3826,9 @@
method public boolean addRoute(android.net.RouteInfo);
method public void clear();
method public void setDnsServers(java.util.Collection<java.net.InetAddress>);
- method public void setDomains(java.lang.String);
+ method public void setDomains(String);
method public void setHttpProxy(android.net.ProxyInfo);
- method public void setInterfaceName(java.lang.String);
+ method public void setInterfaceName(String);
method public void setLinkAddresses(java.util.Collection<android.net.LinkAddress>);
method public void setMtu(int);
}
@@ -3835,19 +3859,19 @@
}
public class NetworkScoreManager {
- method public boolean clearScores() throws java.lang.SecurityException;
- method public void disableScoring() throws java.lang.SecurityException;
- method public java.lang.String getActiveScorerPackage();
- method public boolean setActiveScorer(java.lang.String) throws java.lang.SecurityException;
- method public boolean updateScores(android.net.ScoredNetwork[]) throws java.lang.SecurityException;
- field public static final java.lang.String ACTION_CHANGE_ACTIVE = "android.net.scoring.CHANGE_ACTIVE";
- field public static final java.lang.String ACTION_CUSTOM_ENABLE = "android.net.scoring.CUSTOM_ENABLE";
- field public static final java.lang.String ACTION_RECOMMEND_NETWORKS = "android.net.action.RECOMMEND_NETWORKS";
- field public static final java.lang.String ACTION_SCORER_CHANGED = "android.net.scoring.SCORER_CHANGED";
- field public static final java.lang.String ACTION_SCORE_NETWORKS = "android.net.scoring.SCORE_NETWORKS";
- field public static final java.lang.String EXTRA_NETWORKS_TO_SCORE = "networksToScore";
- field public static final java.lang.String EXTRA_NEW_SCORER = "newScorer";
- field public static final java.lang.String EXTRA_PACKAGE_NAME = "packageName";
+ method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, "android.permission.REQUEST_NETWORK_SCORES"}) public boolean clearScores() throws java.lang.SecurityException;
+ method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, "android.permission.REQUEST_NETWORK_SCORES"}) public void disableScoring() throws java.lang.SecurityException;
+ method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, "android.permission.REQUEST_NETWORK_SCORES"}) public String getActiveScorerPackage();
+ method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, "android.permission.REQUEST_NETWORK_SCORES"}) public boolean setActiveScorer(String) throws java.lang.SecurityException;
+ method @RequiresPermission(android.Manifest.permission.SCORE_NETWORKS) public boolean updateScores(android.net.ScoredNetwork[]) throws java.lang.SecurityException;
+ field public static final String ACTION_CHANGE_ACTIVE = "android.net.scoring.CHANGE_ACTIVE";
+ field public static final String ACTION_CUSTOM_ENABLE = "android.net.scoring.CUSTOM_ENABLE";
+ field public static final String ACTION_RECOMMEND_NETWORKS = "android.net.action.RECOMMEND_NETWORKS";
+ field public static final String ACTION_SCORER_CHANGED = "android.net.scoring.SCORER_CHANGED";
+ field public static final String ACTION_SCORE_NETWORKS = "android.net.scoring.SCORE_NETWORKS";
+ field public static final String EXTRA_NETWORKS_TO_SCORE = "networksToScore";
+ field public static final String EXTRA_NEW_SCORER = "newScorer";
+ field public static final String EXTRA_PACKAGE_NAME = "packageName";
}
public class RssiCurve implements android.os.Parcelable {
@@ -3867,15 +3891,15 @@
public class ScoredNetwork implements android.os.Parcelable {
ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve);
ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve, boolean);
- ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve, boolean, android.os.Bundle);
+ ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve, boolean, @Nullable android.os.Bundle);
method public int calculateBadge(int);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
- field public static final java.lang.String ATTRIBUTES_KEY_BADGING_CURVE = "android.net.attributes.key.BADGING_CURVE";
- field public static final java.lang.String ATTRIBUTES_KEY_HAS_CAPTIVE_PORTAL = "android.net.attributes.key.HAS_CAPTIVE_PORTAL";
- field public static final java.lang.String ATTRIBUTES_KEY_RANKING_SCORE_OFFSET = "android.net.attributes.key.RANKING_SCORE_OFFSET";
+ field public static final String ATTRIBUTES_KEY_BADGING_CURVE = "android.net.attributes.key.BADGING_CURVE";
+ field public static final String ATTRIBUTES_KEY_HAS_CAPTIVE_PORTAL = "android.net.attributes.key.HAS_CAPTIVE_PORTAL";
+ field public static final String ATTRIBUTES_KEY_RANKING_SCORE_OFFSET = "android.net.attributes.key.RANKING_SCORE_OFFSET";
field public static final android.os.Parcelable.Creator<android.net.ScoredNetwork> CREATOR;
- field public final android.os.Bundle attributes;
+ field @Nullable public final android.os.Bundle attributes;
field public final boolean meteredHint;
field public final android.net.NetworkKey networkKey;
field public final android.net.RssiCurve rssiCurve;
@@ -3888,323 +3912,333 @@
}
public class VpnService extends android.app.Service {
- method public static void prepareAndAuthorize(android.content.Context);
+ method @RequiresPermission(android.Manifest.permission.CONTROL_VPN) public static void prepareAndAuthorize(android.content.Context);
}
public class WebAddress {
- ctor public WebAddress(java.lang.String) throws android.net.ParseException;
+ ctor public WebAddress(String) throws android.net.ParseException;
}
public class WifiKey implements android.os.Parcelable {
- ctor public WifiKey(java.lang.String, java.lang.String);
+ ctor public WifiKey(String, String);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.WifiKey> CREATOR;
- field public final java.lang.String bssid;
- field public final java.lang.String ssid;
+ field public final String bssid;
+ field public final String ssid;
}
}
package android.net.wifi {
- public abstract class DppStatusCallback {
- ctor public DppStatusCallback();
+ public abstract class EasyConnectStatusCallback {
+ ctor public EasyConnectStatusCallback();
method public abstract void onConfiguratorSuccess(int);
method public abstract void onEnrolleeSuccess(int);
method public abstract void onFailure(int);
method public abstract void onProgress(int);
- field public static final int DPP_EVENT_FAILURE = -7; // 0xfffffff9
- field public static final int DPP_EVENT_FAILURE_AUTHENTICATION = -2; // 0xfffffffe
- field public static final int DPP_EVENT_FAILURE_BUSY = -5; // 0xfffffffb
- field public static final int DPP_EVENT_FAILURE_CONFIGURATION = -4; // 0xfffffffc
- field public static final int DPP_EVENT_FAILURE_INVALID_NETWORK = -9; // 0xfffffff7
- field public static final int DPP_EVENT_FAILURE_INVALID_URI = -1; // 0xffffffff
- field public static final int DPP_EVENT_FAILURE_NOT_COMPATIBLE = -3; // 0xfffffffd
- field public static final int DPP_EVENT_FAILURE_NOT_SUPPORTED = -8; // 0xfffffff8
- field public static final int DPP_EVENT_FAILURE_TIMEOUT = -6; // 0xfffffffa
- field public static final int DPP_EVENT_PROGRESS_AUTHENTICATION_SUCCESS = 0; // 0x0
- field public static final int DPP_EVENT_PROGRESS_RESPONSE_PENDING = 1; // 0x1
- field public static final int DPP_EVENT_SUCCESS_CONFIGURATION_SENT = 0; // 0x0
+ field public static final int EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION = -2; // 0xfffffffe
+ field public static final int EASY_CONNECT_EVENT_FAILURE_BUSY = -5; // 0xfffffffb
+ field public static final int EASY_CONNECT_EVENT_FAILURE_CONFIGURATION = -4; // 0xfffffffc
+ field public static final int EASY_CONNECT_EVENT_FAILURE_GENERIC = -7; // 0xfffffff9
+ field public static final int EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK = -9; // 0xfffffff7
+ field public static final int EASY_CONNECT_EVENT_FAILURE_INVALID_URI = -1; // 0xffffffff
+ field public static final int EASY_CONNECT_EVENT_FAILURE_NOT_COMPATIBLE = -3; // 0xfffffffd
+ field public static final int EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED = -8; // 0xfffffff8
+ field public static final int EASY_CONNECT_EVENT_FAILURE_TIMEOUT = -6; // 0xfffffffa
+ field public static final int EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS = 0; // 0x0
+ field public static final int EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING = 1; // 0x1
+ field public static final int EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT = 0; // 0x0
}
- public deprecated class RttManager {
- method public void disableResponder(android.net.wifi.RttManager.ResponderCallback);
- method public void enableResponder(android.net.wifi.RttManager.ResponderCallback);
- method public deprecated android.net.wifi.RttManager.Capabilities getCapabilities();
- method public android.net.wifi.RttManager.RttCapabilities getRttCapabilities();
- method public void startRanging(android.net.wifi.RttManager.RttParams[], android.net.wifi.RttManager.RttListener);
- method public void stopRanging(android.net.wifi.RttManager.RttListener);
- field public static final int BASE = 160256; // 0x27200
- field public static final int CMD_OP_ABORTED = 160260; // 0x27204
- field public static final int CMD_OP_DISABLE_RESPONDER = 160262; // 0x27206
- field public static final int CMD_OP_ENABLE_RESPONDER = 160261; // 0x27205
- field public static final int CMD_OP_ENALBE_RESPONDER_FAILED = 160264; // 0x27208
- field public static final int CMD_OP_ENALBE_RESPONDER_SUCCEEDED = 160263; // 0x27207
- field public static final int CMD_OP_FAILED = 160258; // 0x27202
- field public static final int CMD_OP_START_RANGING = 160256; // 0x27200
- field public static final int CMD_OP_STOP_RANGING = 160257; // 0x27201
- field public static final int CMD_OP_SUCCEEDED = 160259; // 0x27203
- field public static final java.lang.String DESCRIPTION_KEY = "android.net.wifi.RttManager.Description";
- field public static final int PREAMBLE_HT = 2; // 0x2
- field public static final int PREAMBLE_LEGACY = 1; // 0x1
- field public static final int PREAMBLE_VHT = 4; // 0x4
- field public static final int REASON_INITIATOR_NOT_ALLOWED_WHEN_RESPONDER_ON = -6; // 0xfffffffa
- field public static final int REASON_INVALID_LISTENER = -3; // 0xfffffffd
- field public static final int REASON_INVALID_REQUEST = -4; // 0xfffffffc
- field public static final int REASON_NOT_AVAILABLE = -2; // 0xfffffffe
- field public static final int REASON_PERMISSION_DENIED = -5; // 0xfffffffb
- field public static final int REASON_UNSPECIFIED = -1; // 0xffffffff
- field public static final int RTT_BW_10_SUPPORT = 2; // 0x2
- field public static final int RTT_BW_160_SUPPORT = 32; // 0x20
- field public static final int RTT_BW_20_SUPPORT = 4; // 0x4
- field public static final int RTT_BW_40_SUPPORT = 8; // 0x8
- field public static final int RTT_BW_5_SUPPORT = 1; // 0x1
- field public static final int RTT_BW_80_SUPPORT = 16; // 0x10
- field public static final deprecated int RTT_CHANNEL_WIDTH_10 = 6; // 0x6
- field public static final deprecated int RTT_CHANNEL_WIDTH_160 = 3; // 0x3
- field public static final deprecated int RTT_CHANNEL_WIDTH_20 = 0; // 0x0
- field public static final deprecated int RTT_CHANNEL_WIDTH_40 = 1; // 0x1
- field public static final deprecated int RTT_CHANNEL_WIDTH_5 = 5; // 0x5
- field public static final deprecated int RTT_CHANNEL_WIDTH_80 = 2; // 0x2
- field public static final deprecated int RTT_CHANNEL_WIDTH_80P80 = 4; // 0x4
- field public static final deprecated int RTT_CHANNEL_WIDTH_UNSPECIFIED = -1; // 0xffffffff
- field public static final int RTT_PEER_NAN = 5; // 0x5
- field public static final int RTT_PEER_P2P_CLIENT = 4; // 0x4
- field public static final int RTT_PEER_P2P_GO = 3; // 0x3
- field public static final int RTT_PEER_TYPE_AP = 1; // 0x1
- field public static final int RTT_PEER_TYPE_STA = 2; // 0x2
- field public static final deprecated int RTT_PEER_TYPE_UNSPECIFIED = 0; // 0x0
- field public static final int RTT_STATUS_ABORTED = 8; // 0x8
- field public static final int RTT_STATUS_FAILURE = 1; // 0x1
- field public static final int RTT_STATUS_FAIL_AP_ON_DIFF_CHANNEL = 6; // 0x6
- field public static final int RTT_STATUS_FAIL_BUSY_TRY_LATER = 12; // 0xc
- field public static final int RTT_STATUS_FAIL_FTM_PARAM_OVERRIDE = 15; // 0xf
- field public static final int RTT_STATUS_FAIL_INVALID_TS = 9; // 0x9
- field public static final int RTT_STATUS_FAIL_NOT_SCHEDULED_YET = 4; // 0x4
- field public static final int RTT_STATUS_FAIL_NO_CAPABILITY = 7; // 0x7
- field public static final int RTT_STATUS_FAIL_NO_RSP = 2; // 0x2
- field public static final int RTT_STATUS_FAIL_PROTOCOL = 10; // 0xa
- field public static final int RTT_STATUS_FAIL_REJECTED = 3; // 0x3
- field public static final int RTT_STATUS_FAIL_SCHEDULE = 11; // 0xb
- field public static final int RTT_STATUS_FAIL_TM_TIMEOUT = 5; // 0x5
- field public static final int RTT_STATUS_INVALID_REQ = 13; // 0xd
- field public static final int RTT_STATUS_NO_WIFI = 14; // 0xe
- field public static final int RTT_STATUS_SUCCESS = 0; // 0x0
- field public static final deprecated int RTT_TYPE_11_MC = 4; // 0x4
- field public static final deprecated int RTT_TYPE_11_V = 2; // 0x2
- field public static final int RTT_TYPE_ONE_SIDED = 1; // 0x1
- field public static final int RTT_TYPE_TWO_SIDED = 2; // 0x2
- field public static final deprecated int RTT_TYPE_UNSPECIFIED = 0; // 0x0
+ @Deprecated public class RttManager {
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void disableResponder(android.net.wifi.RttManager.ResponderCallback);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void enableResponder(android.net.wifi.RttManager.ResponderCallback);
+ method @Deprecated public android.net.wifi.RttManager.Capabilities getCapabilities();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public android.net.wifi.RttManager.RttCapabilities getRttCapabilities();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startRanging(android.net.wifi.RttManager.RttParams[], android.net.wifi.RttManager.RttListener);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void stopRanging(android.net.wifi.RttManager.RttListener);
+ field @Deprecated public static final int BASE = 160256; // 0x27200
+ field @Deprecated public static final int CMD_OP_ABORTED = 160260; // 0x27204
+ field @Deprecated public static final int CMD_OP_DISABLE_RESPONDER = 160262; // 0x27206
+ field @Deprecated public static final int CMD_OP_ENABLE_RESPONDER = 160261; // 0x27205
+ field @Deprecated public static final int CMD_OP_ENALBE_RESPONDER_FAILED = 160264; // 0x27208
+ field @Deprecated public static final int CMD_OP_ENALBE_RESPONDER_SUCCEEDED = 160263; // 0x27207
+ field @Deprecated public static final int CMD_OP_FAILED = 160258; // 0x27202
+ field @Deprecated public static final int CMD_OP_START_RANGING = 160256; // 0x27200
+ field @Deprecated public static final int CMD_OP_STOP_RANGING = 160257; // 0x27201
+ field @Deprecated public static final int CMD_OP_SUCCEEDED = 160259; // 0x27203
+ field @Deprecated public static final String DESCRIPTION_KEY = "android.net.wifi.RttManager.Description";
+ field @Deprecated public static final int PREAMBLE_HT = 2; // 0x2
+ field @Deprecated public static final int PREAMBLE_LEGACY = 1; // 0x1
+ field @Deprecated public static final int PREAMBLE_VHT = 4; // 0x4
+ field @Deprecated public static final int REASON_INITIATOR_NOT_ALLOWED_WHEN_RESPONDER_ON = -6; // 0xfffffffa
+ field @Deprecated public static final int REASON_INVALID_LISTENER = -3; // 0xfffffffd
+ field @Deprecated public static final int REASON_INVALID_REQUEST = -4; // 0xfffffffc
+ field @Deprecated public static final int REASON_NOT_AVAILABLE = -2; // 0xfffffffe
+ field @Deprecated public static final int REASON_PERMISSION_DENIED = -5; // 0xfffffffb
+ field @Deprecated public static final int REASON_UNSPECIFIED = -1; // 0xffffffff
+ field @Deprecated public static final int RTT_BW_10_SUPPORT = 2; // 0x2
+ field @Deprecated public static final int RTT_BW_160_SUPPORT = 32; // 0x20
+ field @Deprecated public static final int RTT_BW_20_SUPPORT = 4; // 0x4
+ field @Deprecated public static final int RTT_BW_40_SUPPORT = 8; // 0x8
+ field @Deprecated public static final int RTT_BW_5_SUPPORT = 1; // 0x1
+ field @Deprecated public static final int RTT_BW_80_SUPPORT = 16; // 0x10
+ field @Deprecated public static final int RTT_CHANNEL_WIDTH_10 = 6; // 0x6
+ field @Deprecated public static final int RTT_CHANNEL_WIDTH_160 = 3; // 0x3
+ field @Deprecated public static final int RTT_CHANNEL_WIDTH_20 = 0; // 0x0
+ field @Deprecated public static final int RTT_CHANNEL_WIDTH_40 = 1; // 0x1
+ field @Deprecated public static final int RTT_CHANNEL_WIDTH_5 = 5; // 0x5
+ field @Deprecated public static final int RTT_CHANNEL_WIDTH_80 = 2; // 0x2
+ field @Deprecated public static final int RTT_CHANNEL_WIDTH_80P80 = 4; // 0x4
+ field @Deprecated public static final int RTT_CHANNEL_WIDTH_UNSPECIFIED = -1; // 0xffffffff
+ field @Deprecated public static final int RTT_PEER_NAN = 5; // 0x5
+ field @Deprecated public static final int RTT_PEER_P2P_CLIENT = 4; // 0x4
+ field @Deprecated public static final int RTT_PEER_P2P_GO = 3; // 0x3
+ field @Deprecated public static final int RTT_PEER_TYPE_AP = 1; // 0x1
+ field @Deprecated public static final int RTT_PEER_TYPE_STA = 2; // 0x2
+ field @Deprecated public static final int RTT_PEER_TYPE_UNSPECIFIED = 0; // 0x0
+ field @Deprecated public static final int RTT_STATUS_ABORTED = 8; // 0x8
+ field @Deprecated public static final int RTT_STATUS_FAILURE = 1; // 0x1
+ field @Deprecated public static final int RTT_STATUS_FAIL_AP_ON_DIFF_CHANNEL = 6; // 0x6
+ field @Deprecated public static final int RTT_STATUS_FAIL_BUSY_TRY_LATER = 12; // 0xc
+ field @Deprecated public static final int RTT_STATUS_FAIL_FTM_PARAM_OVERRIDE = 15; // 0xf
+ field @Deprecated public static final int RTT_STATUS_FAIL_INVALID_TS = 9; // 0x9
+ field @Deprecated public static final int RTT_STATUS_FAIL_NOT_SCHEDULED_YET = 4; // 0x4
+ field @Deprecated public static final int RTT_STATUS_FAIL_NO_CAPABILITY = 7; // 0x7
+ field @Deprecated public static final int RTT_STATUS_FAIL_NO_RSP = 2; // 0x2
+ field @Deprecated public static final int RTT_STATUS_FAIL_PROTOCOL = 10; // 0xa
+ field @Deprecated public static final int RTT_STATUS_FAIL_REJECTED = 3; // 0x3
+ field @Deprecated public static final int RTT_STATUS_FAIL_SCHEDULE = 11; // 0xb
+ field @Deprecated public static final int RTT_STATUS_FAIL_TM_TIMEOUT = 5; // 0x5
+ field @Deprecated public static final int RTT_STATUS_INVALID_REQ = 13; // 0xd
+ field @Deprecated public static final int RTT_STATUS_NO_WIFI = 14; // 0xe
+ field @Deprecated public static final int RTT_STATUS_SUCCESS = 0; // 0x0
+ field @Deprecated public static final int RTT_TYPE_11_MC = 4; // 0x4
+ field @Deprecated public static final int RTT_TYPE_11_V = 2; // 0x2
+ field @Deprecated public static final int RTT_TYPE_ONE_SIDED = 1; // 0x1
+ field @Deprecated public static final int RTT_TYPE_TWO_SIDED = 2; // 0x2
+ field @Deprecated public static final int RTT_TYPE_UNSPECIFIED = 0; // 0x0
}
- public deprecated class RttManager.Capabilities {
- ctor public RttManager.Capabilities();
- field public int supportedPeerType;
- field public int supportedType;
+ @Deprecated public class RttManager.Capabilities {
+ ctor @Deprecated public RttManager.Capabilities();
+ field @Deprecated public int supportedPeerType;
+ field @Deprecated public int supportedType;
}
- public static deprecated class RttManager.ParcelableRttParams implements android.os.Parcelable {
- field public android.net.wifi.RttManager.RttParams[] mParams;
+ @Deprecated public static class RttManager.ParcelableRttParams implements android.os.Parcelable {
+ field @Deprecated @NonNull public android.net.wifi.RttManager.RttParams[] mParams;
}
- public static deprecated class RttManager.ParcelableRttResults implements android.os.Parcelable {
- ctor public RttManager.ParcelableRttResults(android.net.wifi.RttManager.RttResult[]);
- field public android.net.wifi.RttManager.RttResult[] mResults;
+ @Deprecated public static class RttManager.ParcelableRttResults implements android.os.Parcelable {
+ ctor @Deprecated public RttManager.ParcelableRttResults(android.net.wifi.RttManager.RttResult[]);
+ field @Deprecated public android.net.wifi.RttManager.RttResult[] mResults;
}
- public static abstract deprecated class RttManager.ResponderCallback {
- ctor public RttManager.ResponderCallback();
- method public abstract void onResponderEnableFailure(int);
- method public abstract void onResponderEnabled(android.net.wifi.RttManager.ResponderConfig);
+ @Deprecated public abstract static class RttManager.ResponderCallback {
+ ctor @Deprecated public RttManager.ResponderCallback();
+ method @Deprecated public abstract void onResponderEnableFailure(int);
+ method @Deprecated public abstract void onResponderEnabled(android.net.wifi.RttManager.ResponderConfig);
}
- public static deprecated class RttManager.ResponderConfig implements android.os.Parcelable {
- ctor public RttManager.ResponderConfig();
- method public int describeContents();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.net.wifi.RttManager.ResponderConfig> CREATOR;
- field public int centerFreq0;
- field public int centerFreq1;
- field public int channelWidth;
- field public int frequency;
- field public java.lang.String macAddress;
- field public int preamble;
+ @Deprecated public static class RttManager.ResponderConfig implements android.os.Parcelable {
+ ctor @Deprecated public RttManager.ResponderConfig();
+ method @Deprecated public int describeContents();
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.net.wifi.RttManager.ResponderConfig> CREATOR;
+ field @Deprecated public int centerFreq0;
+ field @Deprecated public int centerFreq1;
+ field @Deprecated public int channelWidth;
+ field @Deprecated public int frequency;
+ field @Deprecated public String macAddress;
+ field @Deprecated public int preamble;
}
- public static deprecated class RttManager.RttCapabilities implements android.os.Parcelable {
- ctor public RttManager.RttCapabilities();
- field public int bwSupported;
- field public boolean lciSupported;
- field public boolean lcrSupported;
- field public int mcVersion;
- field public boolean oneSidedRttSupported;
- field public int preambleSupported;
- field public boolean responderSupported;
- field public boolean secureRttSupported;
- field public deprecated boolean supportedPeerType;
- field public deprecated boolean supportedType;
- field public boolean twoSided11McRttSupported;
+ @Deprecated public static class RttManager.RttCapabilities implements android.os.Parcelable {
+ ctor @Deprecated public RttManager.RttCapabilities();
+ field @Deprecated public int bwSupported;
+ field @Deprecated public boolean lciSupported;
+ field @Deprecated public boolean lcrSupported;
+ field @Deprecated public int mcVersion;
+ field @Deprecated public boolean oneSidedRttSupported;
+ field @Deprecated public int preambleSupported;
+ field @Deprecated public boolean responderSupported;
+ field @Deprecated public boolean secureRttSupported;
+ field @Deprecated public boolean supportedPeerType;
+ field @Deprecated public boolean supportedType;
+ field @Deprecated public boolean twoSided11McRttSupported;
}
- public static abstract deprecated interface RttManager.RttListener {
- method public abstract void onAborted();
- method public abstract void onFailure(int, java.lang.String);
- method public abstract void onSuccess(android.net.wifi.RttManager.RttResult[]);
+ @Deprecated public static interface RttManager.RttListener {
+ method @Deprecated public void onAborted();
+ method @Deprecated public void onFailure(int, String);
+ method @Deprecated public void onSuccess(android.net.wifi.RttManager.RttResult[]);
}
- public static deprecated class RttManager.RttParams {
- ctor public RttManager.RttParams();
- field public boolean LCIRequest;
- field public boolean LCRRequest;
- field public int bandwidth;
- field public java.lang.String bssid;
- field public int burstTimeout;
- field public int centerFreq0;
- field public int centerFreq1;
- field public int channelWidth;
- field public int deviceType;
- field public int frequency;
- field public int interval;
- field public int numRetriesPerFTMR;
- field public int numRetriesPerMeasurementFrame;
- field public int numSamplesPerBurst;
- field public deprecated int num_retries;
- field public deprecated int num_samples;
- field public int numberBurst;
- field public int preamble;
- field public int requestType;
- field public boolean secure;
+ @Deprecated public static class RttManager.RttParams {
+ ctor @Deprecated public RttManager.RttParams();
+ field @Deprecated public boolean LCIRequest;
+ field @Deprecated public boolean LCRRequest;
+ field @Deprecated public int bandwidth;
+ field @Deprecated public String bssid;
+ field @Deprecated public int burstTimeout;
+ field @Deprecated public int centerFreq0;
+ field @Deprecated public int centerFreq1;
+ field @Deprecated public int channelWidth;
+ field @Deprecated public int deviceType;
+ field @Deprecated public int frequency;
+ field @Deprecated public int interval;
+ field @Deprecated public int numRetriesPerFTMR;
+ field @Deprecated public int numRetriesPerMeasurementFrame;
+ field @Deprecated public int numSamplesPerBurst;
+ field @Deprecated public int num_retries;
+ field @Deprecated public int num_samples;
+ field @Deprecated public int numberBurst;
+ field @Deprecated public int preamble;
+ field @Deprecated public int requestType;
+ field @Deprecated public boolean secure;
}
- public static deprecated class RttManager.RttResult {
- ctor public RttManager.RttResult();
- field public android.net.wifi.RttManager.WifiInformationElement LCI;
- field public android.net.wifi.RttManager.WifiInformationElement LCR;
- field public java.lang.String bssid;
- field public int burstDuration;
- field public int burstNumber;
- field public int distance;
- field public int distanceSpread;
- field public int distanceStandardDeviation;
- field public deprecated int distance_cm;
- field public deprecated int distance_sd_cm;
- field public deprecated int distance_spread_cm;
- field public int frameNumberPerBurstPeer;
- field public int measurementFrameNumber;
- field public int measurementType;
- field public int negotiatedBurstNum;
- field public deprecated int requestType;
- field public int retryAfterDuration;
- field public int rssi;
- field public int rssiSpread;
- field public deprecated int rssi_spread;
- field public long rtt;
- field public long rttSpread;
- field public long rttStandardDeviation;
- field public deprecated long rtt_ns;
- field public deprecated long rtt_sd_ns;
- field public deprecated long rtt_spread_ns;
- field public int rxRate;
- field public boolean secure;
- field public int status;
- field public int successMeasurementFrameNumber;
- field public long ts;
- field public int txRate;
- field public deprecated int tx_rate;
+ @Deprecated public static class RttManager.RttResult {
+ ctor @Deprecated public RttManager.RttResult();
+ field @Deprecated public android.net.wifi.RttManager.WifiInformationElement LCI;
+ field @Deprecated public android.net.wifi.RttManager.WifiInformationElement LCR;
+ field @Deprecated public String bssid;
+ field @Deprecated public int burstDuration;
+ field @Deprecated public int burstNumber;
+ field @Deprecated public int distance;
+ field @Deprecated public int distanceSpread;
+ field @Deprecated public int distanceStandardDeviation;
+ field @Deprecated public int distance_cm;
+ field @Deprecated public int distance_sd_cm;
+ field @Deprecated public int distance_spread_cm;
+ field @Deprecated public int frameNumberPerBurstPeer;
+ field @Deprecated public int measurementFrameNumber;
+ field @Deprecated public int measurementType;
+ field @Deprecated public int negotiatedBurstNum;
+ field @Deprecated public int requestType;
+ field @Deprecated public int retryAfterDuration;
+ field @Deprecated public int rssi;
+ field @Deprecated public int rssiSpread;
+ field @Deprecated public int rssi_spread;
+ field @Deprecated public long rtt;
+ field @Deprecated public long rttSpread;
+ field @Deprecated public long rttStandardDeviation;
+ field @Deprecated public long rtt_ns;
+ field @Deprecated public long rtt_sd_ns;
+ field @Deprecated public long rtt_spread_ns;
+ field @Deprecated public int rxRate;
+ field @Deprecated public boolean secure;
+ field @Deprecated public int status;
+ field @Deprecated public int successMeasurementFrameNumber;
+ field @Deprecated public long ts;
+ field @Deprecated public int txRate;
+ field @Deprecated public int tx_rate;
}
- public static deprecated class RttManager.WifiInformationElement {
- ctor public RttManager.WifiInformationElement();
- field public byte[] data;
- field public byte id;
+ @Deprecated public static class RttManager.WifiInformationElement {
+ ctor @Deprecated public RttManager.WifiInformationElement();
+ field @Deprecated public byte[] data;
+ field @Deprecated public byte id;
}
- public deprecated class WifiConfiguration implements android.os.Parcelable {
- method public boolean hasNoInternetAccess();
- method public boolean isEphemeral();
- method public boolean isNoInternetAccessExpected();
- field public java.lang.String creatorName;
- field public int creatorUid;
- field public java.lang.String lastUpdateName;
- field public int lastUpdateUid;
- field public boolean meteredHint;
- field public int numAssociation;
- field public int numScorerOverride;
- field public int numScorerOverrideAndSwitchedNetwork;
- field public boolean useExternalScores;
+ @Deprecated public class WifiConfiguration implements android.os.Parcelable {
+ method @Deprecated public boolean hasNoInternetAccess();
+ method @Deprecated public boolean isEphemeral();
+ method @Deprecated public boolean isNoInternetAccessExpected();
+ field @Deprecated public String creatorName;
+ field @Deprecated public int creatorUid;
+ field @Deprecated public String lastUpdateName;
+ field @Deprecated public int lastUpdateUid;
+ field @Deprecated public boolean meteredHint;
+ field @Deprecated public int numAssociation;
+ field @Deprecated public int numScorerOverride;
+ field @Deprecated public int numScorerOverrideAndSwitchedNetwork;
+ field @Deprecated public boolean useExternalScores;
}
- public static class WifiConfiguration.KeyMgmt {
- field public static final int WPA2_PSK = 4; // 0x4
+ @Deprecated public static class WifiConfiguration.KeyMgmt {
+ field @Deprecated public static final int WPA2_PSK = 4; // 0x4
+ }
+
+ public class WifiInfo implements android.os.Parcelable {
+ method public boolean isOsuAp();
}
public class WifiManager {
- method public void connect(android.net.wifi.WifiConfiguration, android.net.wifi.WifiManager.ActionListener);
- method public void connect(int, android.net.wifi.WifiManager.ActionListener);
- method public void disable(int, android.net.wifi.WifiManager.ActionListener);
- method public void disableEphemeralNetwork(java.lang.String);
- method public void forget(int, android.net.wifi.WifiManager.ActionListener);
- method public java.util.List<android.net.wifi.WifiConfiguration> getPrivilegedConfiguredNetworks();
- method public android.net.wifi.WifiConfiguration getWifiApConfiguration();
- method public int getWifiApState();
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void connect(android.net.wifi.WifiConfiguration, android.net.wifi.WifiManager.ActionListener);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void connect(int, android.net.wifi.WifiManager.ActionListener);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void disable(int, android.net.wifi.WifiManager.ActionListener);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void disableEphemeralNetwork(String);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void forget(int, android.net.wifi.WifiManager.ActionListener);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.List<android.util.Pair<android.net.wifi.WifiConfiguration,java.util.Map<java.lang.Integer,java.util.List<android.net.wifi.ScanResult>>>> getAllMatchingWifiConfigs(@NonNull java.util.List<android.net.wifi.ScanResult>);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,java.util.List<android.net.wifi.ScanResult>> getMatchingOsuProviders(java.util.List<android.net.wifi.ScanResult>);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,android.net.wifi.hotspot2.PasspointConfiguration> getMatchingPasspointConfigsForOsuProviders(@NonNull java.util.Set<android.net.wifi.hotspot2.OsuProvider>);
+ method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public java.util.List<android.net.wifi.WifiConfiguration> getPrivilegedConfiguredNetworks();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.WifiConfiguration getWifiApConfiguration();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getWifiApState();
method public boolean isDeviceToDeviceRttSupported();
method public boolean isPortableHotspotSupported();
- method public boolean isWifiApEnabled();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public boolean isWifiApEnabled();
method public boolean isWifiScannerSupported();
- method public void registerNetworkRequestMatchCallback(android.net.wifi.WifiManager.NetworkRequestMatchCallback, android.os.Handler);
- method public void save(android.net.wifi.WifiConfiguration, android.net.wifi.WifiManager.ActionListener);
- method public void setDeviceMobilityState(int);
- method public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration);
- method public void startDppAsConfiguratorInitiator(java.lang.String, int, int, android.os.Handler, android.net.wifi.DppStatusCallback);
- method public void startDppAsEnrolleeInitiator(java.lang.String, android.os.Handler, android.net.wifi.DppStatusCallback);
- method public boolean startScan(android.os.WorkSource);
- method public void stopDppSession();
- method public void unregisterNetworkRequestMatchCallback(android.net.wifi.WifiManager.NetworkRequestMatchCallback);
+ method @RequiresPermission("android.permission.NETWORK_SETTINGS") public void registerNetworkRequestMatchCallback(@NonNull android.net.wifi.WifiManager.NetworkRequestMatchCallback, @Nullable android.os.Handler);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void save(android.net.wifi.WifiConfiguration, android.net.wifi.WifiManager.ActionListener);
+ method @RequiresPermission("android.permission.WIFI_SET_DEVICE_MOBILITY_STATE") public void setDeviceMobilityState(int);
+ method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsConfiguratorInitiator(@NonNull String, int, int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsEnrolleeInitiator(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
+ method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public boolean startScan(android.os.WorkSource);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startSubscriptionProvisioning(android.net.wifi.hotspot2.OsuProvider, android.net.wifi.hotspot2.ProvisioningCallback, @Nullable android.os.Handler);
+ method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void stopEasyConnectSession();
+ method @RequiresPermission("android.permission.NETWORK_SETTINGS") public void unregisterNetworkRequestMatchCallback(@NonNull android.net.wifi.WifiManager.NetworkRequestMatchCallback);
field public static final int CHANGE_REASON_ADDED = 0; // 0x0
field public static final int CHANGE_REASON_CONFIG_CHANGE = 2; // 0x2
field public static final int CHANGE_REASON_REMOVED = 1; // 0x1
- field public static final java.lang.String CONFIGURED_NETWORKS_CHANGED_ACTION = "android.net.wifi.CONFIGURED_NETWORKS_CHANGE";
+ field public static final String CONFIGURED_NETWORKS_CHANGED_ACTION = "android.net.wifi.CONFIGURED_NETWORKS_CHANGE";
field public static final int DEVICE_MOBILITY_STATE_HIGH_MVMT = 1; // 0x1
field public static final int DEVICE_MOBILITY_STATE_LOW_MVMT = 2; // 0x2
field public static final int DEVICE_MOBILITY_STATE_STATIONARY = 3; // 0x3
field public static final int DEVICE_MOBILITY_STATE_UNKNOWN = 0; // 0x0
- field public static final int DPP_NETWORK_ROLE_AP = 1; // 0x1
- field public static final int DPP_NETWORK_ROLE_STA = 0; // 0x0
- field public static final java.lang.String EXTRA_CHANGE_REASON = "changeReason";
- field public static final java.lang.String EXTRA_MULTIPLE_NETWORKS_CHANGED = "multipleChanges";
- field public static final java.lang.String EXTRA_PREVIOUS_WIFI_AP_STATE = "previous_wifi_state";
- field public static final java.lang.String EXTRA_WIFI_AP_STATE = "wifi_state";
- field public static final java.lang.String EXTRA_WIFI_CONFIGURATION = "wifiConfiguration";
- field public static final java.lang.String EXTRA_WIFI_CREDENTIAL_EVENT_TYPE = "et";
- field public static final java.lang.String EXTRA_WIFI_CREDENTIAL_SSID = "ssid";
- field public static final java.lang.String WIFI_AP_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_AP_STATE_CHANGED";
+ field public static final int EASY_CONNECT_NETWORK_ROLE_AP = 1; // 0x1
+ field public static final int EASY_CONNECT_NETWORK_ROLE_STA = 0; // 0x0
+ field public static final String EXTRA_CHANGE_REASON = "changeReason";
+ field public static final String EXTRA_MULTIPLE_NETWORKS_CHANGED = "multipleChanges";
+ field public static final String EXTRA_PREVIOUS_WIFI_AP_STATE = "previous_wifi_state";
+ field public static final String EXTRA_WIFI_AP_STATE = "wifi_state";
+ field public static final String EXTRA_WIFI_CONFIGURATION = "wifiConfiguration";
+ field public static final String EXTRA_WIFI_CREDENTIAL_EVENT_TYPE = "et";
+ field public static final String EXTRA_WIFI_CREDENTIAL_SSID = "ssid";
+ field public static final int PASSPOINT_HOME_NETWORK = 0; // 0x0
+ field public static final int PASSPOINT_ROAMING_NETWORK = 1; // 0x1
+ field public static final String WIFI_AP_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_AP_STATE_CHANGED";
field public static final int WIFI_AP_STATE_DISABLED = 11; // 0xb
field public static final int WIFI_AP_STATE_DISABLING = 10; // 0xa
field public static final int WIFI_AP_STATE_ENABLED = 13; // 0xd
field public static final int WIFI_AP_STATE_ENABLING = 12; // 0xc
field public static final int WIFI_AP_STATE_FAILED = 14; // 0xe
- field public static final java.lang.String WIFI_CREDENTIAL_CHANGED_ACTION = "android.net.wifi.WIFI_CREDENTIAL_CHANGED";
+ field public static final String WIFI_CREDENTIAL_CHANGED_ACTION = "android.net.wifi.WIFI_CREDENTIAL_CHANGED";
field public static final int WIFI_CREDENTIAL_FORGOT = 1; // 0x1
field public static final int WIFI_CREDENTIAL_SAVED = 0; // 0x0
}
- public static abstract interface WifiManager.ActionListener {
- method public abstract void onFailure(int);
- method public abstract void onSuccess();
+ public static interface WifiManager.ActionListener {
+ method public void onFailure(int);
+ method public void onSuccess();
}
- public static abstract interface WifiManager.NetworkRequestMatchCallback {
- method public abstract void onAbort();
- method public abstract void onMatch(java.util.List<android.net.wifi.ScanResult>);
- method public abstract void onUserSelectionCallbackRegistration(android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback);
- method public abstract void onUserSelectionConnectFailure(android.net.wifi.WifiConfiguration);
- method public abstract void onUserSelectionConnectSuccess(android.net.wifi.WifiConfiguration);
+ public static interface WifiManager.NetworkRequestMatchCallback {
+ method public void onAbort();
+ method public void onMatch(@NonNull java.util.List<android.net.wifi.ScanResult>);
+ method public void onUserSelectionCallbackRegistration(@NonNull android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback);
+ method public void onUserSelectionConnectFailure(@NonNull android.net.wifi.WifiConfiguration);
+ method public void onUserSelectionConnectSuccess(@NonNull android.net.wifi.WifiConfiguration);
}
- public static abstract interface WifiManager.NetworkRequestUserSelectionCallback {
- method public abstract void reject();
- method public abstract void select(android.net.wifi.WifiConfiguration);
+ public static interface WifiManager.NetworkRequestUserSelectionCallback {
+ method public void reject();
+ method public void select(@NonNull android.net.wifi.WifiConfiguration);
}
public class WifiNetworkConnectionStatistics implements android.os.Parcelable {
@@ -4219,19 +4253,19 @@
}
public class WifiScanner {
- method public deprecated void configureWifiChange(int, int, int, int, int, android.net.wifi.WifiScanner.BssidInfo[]);
- method public deprecated void configureWifiChange(android.net.wifi.WifiScanner.WifiChangeSettings);
- method public boolean getScanResults();
- method public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
- method public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener, android.os.WorkSource);
- method public void startScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
- method public void startScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener, android.os.WorkSource);
- method public deprecated void startTrackingBssids(android.net.wifi.WifiScanner.BssidInfo[], int, android.net.wifi.WifiScanner.BssidListener);
- method public deprecated void startTrackingWifiChange(android.net.wifi.WifiScanner.WifiChangeListener);
- method public void stopBackgroundScan(android.net.wifi.WifiScanner.ScanListener);
- method public void stopScan(android.net.wifi.WifiScanner.ScanListener);
- method public deprecated void stopTrackingBssids(android.net.wifi.WifiScanner.BssidListener);
- method public deprecated void stopTrackingWifiChange(android.net.wifi.WifiScanner.WifiChangeListener);
+ method @Deprecated public void configureWifiChange(int, int, int, int, int, android.net.wifi.WifiScanner.BssidInfo[]);
+ method @Deprecated public void configureWifiChange(android.net.wifi.WifiScanner.WifiChangeSettings);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean getScanResults();
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener, android.os.WorkSource);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener, android.os.WorkSource);
+ method @Deprecated public void startTrackingBssids(android.net.wifi.WifiScanner.BssidInfo[], int, android.net.wifi.WifiScanner.BssidListener);
+ method @Deprecated public void startTrackingWifiChange(android.net.wifi.WifiScanner.WifiChangeListener);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void stopBackgroundScan(android.net.wifi.WifiScanner.ScanListener);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void stopScan(android.net.wifi.WifiScanner.ScanListener);
+ method @Deprecated public void stopTrackingBssids(android.net.wifi.WifiScanner.BssidListener);
+ method @Deprecated public void stopTrackingWifiChange(android.net.wifi.WifiScanner.WifiChangeListener);
field public static final int MAX_SCAN_PERIOD_MS = 1024000; // 0xfa000
field public static final int MIN_SCAN_PERIOD_MS = 1000; // 0x3e8
field public static final int REASON_DUPLICATE_REQEUST = -5; // 0xfffffffb
@@ -4240,7 +4274,7 @@
field public static final int REASON_NOT_AUTHORIZED = -4; // 0xfffffffc
field public static final int REASON_SUCCEEDED = 0; // 0x0
field public static final int REASON_UNSPECIFIED = -1; // 0xffffffff
- field public static final deprecated int REPORT_EVENT_AFTER_BUFFER_FULL = 0; // 0x0
+ field @Deprecated public static final int REPORT_EVENT_AFTER_BUFFER_FULL = 0; // 0x0
field public static final int REPORT_EVENT_AFTER_EACH_SCAN = 1; // 0x1
field public static final int REPORT_EVENT_FULL_SCAN_RESULT = 2; // 0x2
field public static final int REPORT_EVENT_NO_BATCH = 4; // 0x4
@@ -4253,22 +4287,22 @@
field public static final int WIFI_BAND_UNSPECIFIED = 0; // 0x0
}
- public static abstract interface WifiScanner.ActionListener {
- method public abstract void onFailure(int, java.lang.String);
- method public abstract void onSuccess();
+ public static interface WifiScanner.ActionListener {
+ method public void onFailure(int, String);
+ method public void onSuccess();
}
- public static deprecated class WifiScanner.BssidInfo {
- ctor public WifiScanner.BssidInfo();
- field public java.lang.String bssid;
- field public int frequencyHint;
- field public int high;
- field public int low;
+ @Deprecated public static class WifiScanner.BssidInfo {
+ ctor @Deprecated public WifiScanner.BssidInfo();
+ field @Deprecated public String bssid;
+ field @Deprecated public int frequencyHint;
+ field @Deprecated public int high;
+ field @Deprecated public int low;
}
- public static abstract deprecated interface WifiScanner.BssidListener implements android.net.wifi.WifiScanner.ActionListener {
- method public abstract void onFound(android.net.wifi.ScanResult[]);
- method public abstract void onLost(android.net.wifi.ScanResult[]);
+ @Deprecated public static interface WifiScanner.BssidListener extends android.net.wifi.WifiScanner.ActionListener {
+ method @Deprecated public void onFound(android.net.wifi.ScanResult[]);
+ method @Deprecated public void onLost(android.net.wifi.ScanResult[]);
}
public static class WifiScanner.ChannelSpec {
@@ -4276,10 +4310,10 @@
field public int frequency;
}
- public static deprecated class WifiScanner.HotlistSettings implements android.os.Parcelable {
- ctor public WifiScanner.HotlistSettings();
- field public int apLostThreshold;
- field public android.net.wifi.WifiScanner.BssidInfo[] bssidInfos;
+ @Deprecated public static class WifiScanner.HotlistSettings implements android.os.Parcelable {
+ ctor @Deprecated public WifiScanner.HotlistSettings();
+ field @Deprecated public int apLostThreshold;
+ field @Deprecated public android.net.wifi.WifiScanner.BssidInfo[] bssidInfos;
}
public static class WifiScanner.ParcelableScanData implements android.os.Parcelable {
@@ -4302,17 +4336,17 @@
method public android.net.wifi.ScanResult[] getResults();
}
- public static abstract interface WifiScanner.ScanListener implements android.net.wifi.WifiScanner.ActionListener {
- method public abstract void onFullResult(android.net.wifi.ScanResult);
- method public abstract void onPeriodChanged(int);
- method public abstract void onResults(android.net.wifi.WifiScanner.ScanData[]);
+ public static interface WifiScanner.ScanListener extends android.net.wifi.WifiScanner.ActionListener {
+ method public void onFullResult(android.net.wifi.ScanResult);
+ method public void onPeriodChanged(int);
+ method public void onResults(android.net.wifi.WifiScanner.ScanData[]);
}
public static class WifiScanner.ScanSettings implements android.os.Parcelable {
ctor public WifiScanner.ScanSettings();
field public int band;
field public android.net.wifi.WifiScanner.ChannelSpec[] channels;
- field public boolean ignoreLocationSettings;
+ field @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean ignoreLocationSettings;
field public int maxPeriodInMs;
field public int maxScansToCache;
field public int numBssidsPerScan;
@@ -4321,19 +4355,19 @@
field public int stepCount;
}
- public static abstract deprecated interface WifiScanner.WifiChangeListener implements android.net.wifi.WifiScanner.ActionListener {
- method public abstract void onChanging(android.net.wifi.ScanResult[]);
- method public abstract void onQuiescence(android.net.wifi.ScanResult[]);
+ @Deprecated public static interface WifiScanner.WifiChangeListener extends android.net.wifi.WifiScanner.ActionListener {
+ method @Deprecated public void onChanging(android.net.wifi.ScanResult[]);
+ method @Deprecated public void onQuiescence(android.net.wifi.ScanResult[]);
}
- public static deprecated class WifiScanner.WifiChangeSettings implements android.os.Parcelable {
- ctor public WifiScanner.WifiChangeSettings();
- field public android.net.wifi.WifiScanner.BssidInfo[] bssidInfos;
- field public int lostApSampleSize;
- field public int minApsBreachingThreshold;
- field public int periodInMs;
- field public int rssiSampleSize;
- field public int unchangedSampleSize;
+ @Deprecated public static class WifiScanner.WifiChangeSettings implements android.os.Parcelable {
+ ctor @Deprecated public WifiScanner.WifiChangeSettings();
+ field @Deprecated public android.net.wifi.WifiScanner.BssidInfo[] bssidInfos;
+ field @Deprecated public int lostApSampleSize;
+ field @Deprecated public int minApsBreachingThreshold;
+ field @Deprecated public int periodInMs;
+ field @Deprecated public int rssiSampleSize;
+ field @Deprecated public int unchangedSampleSize;
}
}
@@ -4341,15 +4375,68 @@
package android.net.wifi.aware {
public class DiscoverySession implements java.lang.AutoCloseable {
- method public deprecated android.net.NetworkSpecifier createNetworkSpecifierPmk(android.net.wifi.aware.PeerHandle, byte[]);
+ method @Deprecated public android.net.NetworkSpecifier createNetworkSpecifierPmk(@NonNull android.net.wifi.aware.PeerHandle, @NonNull byte[]);
}
public static class WifiAwareManager.NetworkSpecifierBuilder {
- method public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setPmk(byte[]);
+ method @NonNull public android.net.wifi.aware.WifiAwareManager.NetworkSpecifierBuilder setPmk(@NonNull byte[]);
}
public class WifiAwareSession implements java.lang.AutoCloseable {
- method public android.net.NetworkSpecifier createNetworkSpecifierPmk(int, byte[], byte[]);
+ method public android.net.NetworkSpecifier createNetworkSpecifierPmk(int, @NonNull byte[], @NonNull byte[]);
+ }
+
+}
+
+package android.net.wifi.hotspot2 {
+
+ public final class OsuProvider implements android.os.Parcelable {
+ method public int describeContents();
+ method public String getFriendlyName();
+ method public android.net.Uri getServerUri();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.OsuProvider> CREATOR;
+ }
+
+ public abstract class ProvisioningCallback {
+ ctor public ProvisioningCallback();
+ method public abstract void onProvisioningComplete();
+ method public abstract void onProvisioningFailure(int);
+ method public abstract void onProvisioningStatus(int);
+ field public static final int OSU_FAILURE_ADD_PASSPOINT_CONFIGURATION = 22; // 0x16
+ field public static final int OSU_FAILURE_AP_CONNECTION = 1; // 0x1
+ field public static final int OSU_FAILURE_INVALID_SERVER_URL = 8; // 0x8
+ field public static final int OSU_FAILURE_NO_AAA_SERVER_TRUST_ROOT_NODE = 17; // 0x11
+ field public static final int OSU_FAILURE_NO_AAA_TRUST_ROOT_CERTIFICATE = 21; // 0x15
+ field public static final int OSU_FAILURE_NO_OSU_ACTIVITY_FOUND = 14; // 0xe
+ field public static final int OSU_FAILURE_NO_POLICY_SERVER_TRUST_ROOT_NODE = 19; // 0x13
+ field public static final int OSU_FAILURE_NO_PPS_MO = 16; // 0x10
+ field public static final int OSU_FAILURE_NO_REMEDIATION_SERVER_TRUST_ROOT_NODE = 18; // 0x12
+ field public static final int OSU_FAILURE_OSU_PROVIDER_NOT_FOUND = 23; // 0x17
+ field public static final int OSU_FAILURE_PROVISIONING_ABORTED = 6; // 0x6
+ field public static final int OSU_FAILURE_PROVISIONING_NOT_AVAILABLE = 7; // 0x7
+ field public static final int OSU_FAILURE_RETRIEVE_TRUST_ROOT_CERTIFICATES = 20; // 0x14
+ field public static final int OSU_FAILURE_SERVER_CONNECTION = 3; // 0x3
+ field public static final int OSU_FAILURE_SERVER_URL_INVALID = 2; // 0x2
+ field public static final int OSU_FAILURE_SERVER_VALIDATION = 4; // 0x4
+ field public static final int OSU_FAILURE_SERVICE_PROVIDER_VERIFICATION = 5; // 0x5
+ field public static final int OSU_FAILURE_SOAP_MESSAGE_EXCHANGE = 11; // 0xb
+ field public static final int OSU_FAILURE_START_REDIRECT_LISTENER = 12; // 0xc
+ field public static final int OSU_FAILURE_TIMED_OUT_REDIRECT_LISTENER = 13; // 0xd
+ field public static final int OSU_FAILURE_UNEXPECTED_COMMAND_TYPE = 9; // 0x9
+ field public static final int OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_STATUS = 15; // 0xf
+ field public static final int OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_TYPE = 10; // 0xa
+ field public static final int OSU_STATUS_AP_CONNECTED = 2; // 0x2
+ field public static final int OSU_STATUS_AP_CONNECTING = 1; // 0x1
+ field public static final int OSU_STATUS_INIT_SOAP_EXCHANGE = 6; // 0x6
+ field public static final int OSU_STATUS_REDIRECT_RESPONSE_RECEIVED = 8; // 0x8
+ field public static final int OSU_STATUS_RETRIEVING_TRUST_ROOT_CERTS = 11; // 0xb
+ field public static final int OSU_STATUS_SECOND_SOAP_EXCHANGE = 9; // 0x9
+ field public static final int OSU_STATUS_SERVER_CONNECTED = 5; // 0x5
+ field public static final int OSU_STATUS_SERVER_CONNECTING = 3; // 0x3
+ field public static final int OSU_STATUS_SERVER_VALIDATED = 4; // 0x4
+ field public static final int OSU_STATUS_THIRD_SOAP_EXCHANGE = 10; // 0xa
+ field public static final int OSU_STATUS_WAITING_FOR_REDIRECT_RESPONSE = 7; // 0x7
}
}
@@ -4357,17 +4444,17 @@
package android.net.wifi.rtt {
public static final class RangingRequest.Builder {
- method public android.net.wifi.rtt.RangingRequest.Builder addResponder(android.net.wifi.rtt.ResponderConfig);
+ method public android.net.wifi.rtt.RangingRequest.Builder addResponder(@NonNull android.net.wifi.rtt.ResponderConfig);
}
public final class RangingResult implements android.os.Parcelable {
- method public byte[] getLci();
- method public byte[] getLcr();
+ method @NonNull public byte[] getLci();
+ method @NonNull public byte[] getLcr();
}
public final class ResponderConfig implements android.os.Parcelable {
- ctor public ResponderConfig(android.net.MacAddress, int, boolean, int, int, int, int, int);
- ctor public ResponderConfig(android.net.wifi.aware.PeerHandle, int, boolean, int, int, int, int, int);
+ ctor public ResponderConfig(@NonNull android.net.MacAddress, int, boolean, int, int, int, int, int);
+ ctor public ResponderConfig(@NonNull android.net.wifi.aware.PeerHandle, int, boolean, int, int, int, int, int);
method public int describeContents();
method public static android.net.wifi.rtt.ResponderConfig fromScanResult(android.net.wifi.ScanResult);
method public static android.net.wifi.rtt.ResponderConfig fromWifiAwarePeerHandleWithDefaults(android.net.wifi.aware.PeerHandle);
@@ -4399,8 +4486,8 @@
}
public class WifiRttManager {
- method public void cancelRanging(android.os.WorkSource);
- method public void startRanging(android.os.WorkSource, android.net.wifi.rtt.RangingRequest, java.util.concurrent.Executor, android.net.wifi.rtt.RangingResultCallback);
+ method @RequiresPermission(allOf={android.Manifest.permission.LOCATION_HARDWARE}) public void cancelRanging(@Nullable android.os.WorkSource);
+ method @RequiresPermission(allOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.ACCESS_WIFI_STATE}) public void startRanging(@Nullable android.os.WorkSource, @NonNull android.net.wifi.rtt.RangingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.rtt.RangingResultCallback);
}
}
@@ -4408,19 +4495,19 @@
package android.nfc {
public final class NfcAdapter {
- method public boolean addNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler, java.lang.String[]);
- method public boolean disable();
- method public boolean disable(boolean);
- method public boolean disableNdefPush();
- method public boolean enable();
- method public boolean enableNdefPush();
- method public boolean removeNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean addNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler, String[]);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disable();
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disable(boolean);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disableNdefPush();
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enable();
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableNdefPush();
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean removeNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler);
method public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, int);
field public static final int FLAG_NDEF_PUSH_NO_CONFIRM = 1; // 0x1
}
- public static abstract interface NfcAdapter.NfcUnlockHandler {
- method public abstract boolean onUnlockAttempted(android.nfc.Tag);
+ public static interface NfcAdapter.NfcUnlockHandler {
+ method public boolean onUnlockAttempted(android.nfc.Tag);
}
}
@@ -4428,8 +4515,8 @@
package android.os {
public class BatteryManager {
- field public static final java.lang.String EXTRA_EVENTS = "android.os.extra.EVENTS";
- field public static final java.lang.String EXTRA_EVENT_TIMESTAMP = "android.os.extra.EVENT_TIMESTAMP";
+ field public static final String EXTRA_EVENTS = "android.os.extra.EVENTS";
+ field public static final String EXTRA_EVENT_TIMESTAMP = "android.os.extra.EVENT_TIMESTAMP";
}
public class Binder implements android.os.IBinder {
@@ -4437,25 +4524,29 @@
method public static final int getCallingWorkSourceUid();
method public static final void restoreCallingWorkSource(long);
method public static final long setCallingWorkSourceUid(int);
- method public static void setProxyTransactListener(android.os.Binder.ProxyTransactListener);
+ method public static void setProxyTransactListener(@Nullable android.os.Binder.ProxyTransactListener);
}
- public static abstract interface Binder.ProxyTransactListener {
- method public abstract void onTransactEnded(java.lang.Object);
- method public abstract java.lang.Object onTransactStarted(android.os.IBinder, int);
+ public static interface Binder.ProxyTransactListener {
+ method public void onTransactEnded(@Nullable Object);
+ method public Object onTransactStarted(android.os.IBinder, int);
+ }
+
+ public static class Build.VERSION {
+ field public static final String PREVIEW_SDK_FINGERPRINT;
}
public final class ConfigUpdate {
- field public static final java.lang.String ACTION_UPDATE_CARRIER_ID_DB = "android.os.action.UPDATE_CARRIER_ID_DB";
- field public static final java.lang.String ACTION_UPDATE_CARRIER_PROVISIONING_URLS = "android.intent.action.UPDATE_CARRIER_PROVISIONING_URLS";
- field public static final java.lang.String ACTION_UPDATE_CONVERSATION_ACTIONS = "android.intent.action.UPDATE_CONVERSATION_ACTIONS";
- field public static final java.lang.String ACTION_UPDATE_CT_LOGS = "android.intent.action.UPDATE_CT_LOGS";
- field public static final java.lang.String ACTION_UPDATE_INTENT_FIREWALL = "android.intent.action.UPDATE_INTENT_FIREWALL";
- field public static final java.lang.String ACTION_UPDATE_LANG_ID = "android.intent.action.UPDATE_LANG_ID";
- field public static final java.lang.String ACTION_UPDATE_NETWORK_WATCHLIST = "android.intent.action.UPDATE_NETWORK_WATCHLIST";
- field public static final java.lang.String ACTION_UPDATE_PINS = "android.intent.action.UPDATE_PINS";
- field public static final java.lang.String ACTION_UPDATE_SMART_SELECTION = "android.intent.action.UPDATE_SMART_SELECTION";
- field public static final java.lang.String ACTION_UPDATE_SMS_SHORT_CODES = "android.intent.action.UPDATE_SMS_SHORT_CODES";
+ field public static final String ACTION_UPDATE_CARRIER_ID_DB = "android.os.action.UPDATE_CARRIER_ID_DB";
+ field public static final String ACTION_UPDATE_CARRIER_PROVISIONING_URLS = "android.intent.action.UPDATE_CARRIER_PROVISIONING_URLS";
+ field public static final String ACTION_UPDATE_CONVERSATION_ACTIONS = "android.intent.action.UPDATE_CONVERSATION_ACTIONS";
+ field public static final String ACTION_UPDATE_CT_LOGS = "android.intent.action.UPDATE_CT_LOGS";
+ field public static final String ACTION_UPDATE_INTENT_FIREWALL = "android.intent.action.UPDATE_INTENT_FIREWALL";
+ field public static final String ACTION_UPDATE_LANG_ID = "android.intent.action.UPDATE_LANG_ID";
+ field public static final String ACTION_UPDATE_NETWORK_WATCHLIST = "android.intent.action.UPDATE_NETWORK_WATCHLIST";
+ field public static final String ACTION_UPDATE_PINS = "android.intent.action.UPDATE_PINS";
+ field public static final String ACTION_UPDATE_SMART_SELECTION = "android.intent.action.UPDATE_SMART_SELECTION";
+ field public static final String ACTION_UPDATE_SMS_SHORT_CODES = "android.intent.action.UPDATE_SMS_SHORT_CODES";
}
public class Environment {
@@ -4467,21 +4558,21 @@
}
public class HidlSupport {
- method public static boolean deepEquals(java.lang.Object, java.lang.Object);
- method public static int deepHashCode(java.lang.Object);
+ method public static boolean deepEquals(Object, Object);
+ method public static int deepHashCode(Object);
method public static int getPidIfSharable();
- method public static boolean interfacesEqual(android.os.IHwInterface, java.lang.Object);
+ method public static boolean interfacesEqual(android.os.IHwInterface, Object);
}
public abstract class HwBinder implements android.os.IHwBinder {
ctor public HwBinder();
method public static final void configureRpcThreadpool(long, boolean);
method public static void enableInstrumentation();
- method public static final android.os.IHwBinder getService(java.lang.String, java.lang.String) throws java.util.NoSuchElementException, android.os.RemoteException;
- method public static final android.os.IHwBinder getService(java.lang.String, java.lang.String, boolean) throws java.util.NoSuchElementException, android.os.RemoteException;
+ method public static final android.os.IHwBinder getService(String, String) throws java.util.NoSuchElementException, android.os.RemoteException;
+ method public static final android.os.IHwBinder getService(String, String, boolean) throws java.util.NoSuchElementException, android.os.RemoteException;
method public static final void joinRpcThreadpool();
method public abstract void onTransact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
- method public final void registerService(java.lang.String) throws android.os.RemoteException;
+ method public final void registerService(String) throws android.os.RemoteException;
method public final void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
}
@@ -4501,7 +4592,7 @@
method public final int getInt32(long);
method public final long getInt64(long);
method public final byte getInt8(long);
- method public final java.lang.String getString(long);
+ method public final String getString(long);
method public final long handle();
method public final void putBlob(long, android.os.HwBlob);
method public final void putBool(long, boolean);
@@ -4519,19 +4610,19 @@
method public final void putInt8(long, byte);
method public final void putInt8Array(long, byte[]);
method public final void putNativeHandle(long, android.os.NativeHandle);
- method public final void putString(long, java.lang.String);
- method public static java.lang.Boolean[] wrapArray(boolean[]);
- method public static java.lang.Long[] wrapArray(long[]);
- method public static java.lang.Byte[] wrapArray(byte[]);
- method public static java.lang.Short[] wrapArray(short[]);
- method public static java.lang.Integer[] wrapArray(int[]);
- method public static java.lang.Float[] wrapArray(float[]);
- method public static java.lang.Double[] wrapArray(double[]);
+ method public final void putString(long, String);
+ method public static Boolean[] wrapArray(@NonNull boolean[]);
+ method public static Long[] wrapArray(@NonNull long[]);
+ method public static Byte[] wrapArray(@NonNull byte[]);
+ method public static Short[] wrapArray(@NonNull short[]);
+ method public static Integer[] wrapArray(@NonNull int[]);
+ method public static Float[] wrapArray(@NonNull float[]);
+ method public static Double[] wrapArray(@NonNull double[]);
}
public class HwParcel {
ctor public HwParcel();
- method public final void enforceInterface(java.lang.String);
+ method public final void enforceInterface(String);
method public final boolean readBool();
method public final java.util.ArrayList<java.lang.Boolean> readBoolVector();
method public final android.os.HwBlob readBuffer(long);
@@ -4551,7 +4642,7 @@
method public final java.util.ArrayList<java.lang.Byte> readInt8Vector();
method public final android.os.NativeHandle readNativeHandle();
method public final java.util.ArrayList<android.os.NativeHandle> readNativeHandleVector();
- method public final java.lang.String readString();
+ method public final String readString();
method public final java.util.ArrayList<java.lang.String> readStringVector();
method public final android.os.IHwBinder readStrongBinder();
method public final void release();
@@ -4573,36 +4664,36 @@
method public final void writeInt64Vector(java.util.ArrayList<java.lang.Long>);
method public final void writeInt8(byte);
method public final void writeInt8Vector(java.util.ArrayList<java.lang.Byte>);
- method public final void writeInterfaceToken(java.lang.String);
+ method public final void writeInterfaceToken(String);
method public final void writeNativeHandle(android.os.NativeHandle);
method public final void writeNativeHandleVector(java.util.ArrayList<android.os.NativeHandle>);
method public final void writeStatus(int);
- method public final void writeString(java.lang.String);
+ method public final void writeString(String);
method public final void writeStringVector(java.util.ArrayList<java.lang.String>);
method public final void writeStrongBinder(android.os.IHwBinder);
field public static final int STATUS_SUCCESS = 0; // 0x0
}
- public static abstract class HwParcel.Status implements java.lang.annotation.Annotation {
+ @IntDef(prefix={"STATUS_"}, value={android.os.HwParcel.STATUS_SUCCESS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface HwParcel.Status {
}
- public abstract interface IHwBinder {
- method public abstract boolean linkToDeath(android.os.IHwBinder.DeathRecipient, long);
- method public abstract android.os.IHwInterface queryLocalInterface(java.lang.String);
- method public abstract void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
- method public abstract boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient);
+ public interface IHwBinder {
+ method public boolean linkToDeath(android.os.IHwBinder.DeathRecipient, long);
+ method public android.os.IHwInterface queryLocalInterface(String);
+ method public void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
+ method public boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient);
}
- public static abstract interface IHwBinder.DeathRecipient {
- method public abstract void serviceDied(long);
+ public static interface IHwBinder.DeathRecipient {
+ method public void serviceDied(long);
}
- public abstract interface IHwInterface {
- method public abstract android.os.IHwBinder asBinder();
+ public interface IHwInterface {
+ method public android.os.IHwBinder asBinder();
}
public class IncidentManager {
- method public void reportIncident(android.os.IncidentReportArgs);
+ method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void reportIncident(android.os.IncidentReportArgs);
}
public final class IncidentReportArgs implements android.os.Parcelable {
@@ -4623,8 +4714,8 @@
public final class NativeHandle implements java.io.Closeable {
ctor public NativeHandle();
- ctor public NativeHandle(java.io.FileDescriptor, boolean);
- ctor public NativeHandle(java.io.FileDescriptor[], int[], boolean);
+ ctor public NativeHandle(@NonNull java.io.FileDescriptor, boolean);
+ ctor public NativeHandle(@NonNull java.io.FileDescriptor[], @NonNull int[], boolean);
method public void close() throws java.io.IOException;
method public android.os.NativeHandle dup() throws java.io.IOException;
method public java.io.FileDescriptor getFileDescriptor();
@@ -4634,11 +4725,11 @@
}
public final class PowerManager {
- method public void dream(long);
- method public int getPowerSaveMode();
- method public boolean setDynamicPowerSavings(boolean, int);
- method public boolean setPowerSaveMode(boolean);
- method public void userActivity(long, int, int);
+ method @RequiresPermission(allOf={android.Manifest.permission.READ_DREAM_STATE, android.Manifest.permission.WRITE_DREAM_STATE}) public void dream(long);
+ method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public int getPowerSaveMode();
+ method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public boolean setDynamicPowerSavings(boolean, int);
+ method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setPowerSaveMode(boolean);
+ method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.USER_ACTIVITY}) public void userActivity(long, int, int);
field public static final int POWER_SAVER_MODE_DYNAMIC = 1; // 0x1
field public static final int POWER_SAVER_MODE_PERCENTAGE = 0; // 0x0
field public static final int USER_ACTIVITY_EVENT_ACCESSIBILITY = 3; // 0x3
@@ -4650,26 +4741,26 @@
}
public class RecoverySystem {
- method public static void cancelScheduledUpdate(android.content.Context) throws java.io.IOException;
- method public static void installPackage(android.content.Context, java.io.File, boolean) throws java.io.IOException;
- method public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener, android.os.Handler) throws java.io.IOException;
- method public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener) throws java.io.IOException;
- method public static void rebootWipeAb(android.content.Context, java.io.File, java.lang.String) throws java.io.IOException;
- method public static void scheduleUpdateOnBoot(android.content.Context, java.io.File) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void cancelScheduledUpdate(android.content.Context) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void installPackage(android.content.Context, java.io.File, boolean) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener, android.os.Handler) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener) throws java.io.IOException;
+ method @RequiresPermission(allOf={android.Manifest.permission.RECOVERY, android.Manifest.permission.REBOOT}) public static void rebootWipeAb(android.content.Context, java.io.File, String) throws java.io.IOException;
+ method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void scheduleUpdateOnBoot(android.content.Context, java.io.File) throws java.io.IOException;
method public static boolean verifyPackageCompatibility(java.io.File) throws java.io.IOException;
}
public final class RemoteCallback implements android.os.Parcelable {
ctor public RemoteCallback(android.os.RemoteCallback.OnResultListener);
- ctor public RemoteCallback(android.os.RemoteCallback.OnResultListener, android.os.Handler);
+ ctor public RemoteCallback(@NonNull android.os.RemoteCallback.OnResultListener, @Nullable android.os.Handler);
method public int describeContents();
- method public void sendResult(android.os.Bundle);
+ method public void sendResult(@Nullable android.os.Bundle);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.RemoteCallback> CREATOR;
}
- public static abstract interface RemoteCallback.OnResultListener {
- method public abstract void onResult(android.os.Bundle);
+ public static interface RemoteCallback.OnResultListener {
+ method public void onResult(android.os.Bundle);
}
public final class StatsDimensionsValue implements android.os.Parcelable {
@@ -4679,7 +4770,7 @@
method public float getFloatValue();
method public int getIntValue();
method public long getLongValue();
- method public java.lang.String getStringValue();
+ method public String getStringValue();
method public java.util.List<android.os.StatsDimensionsValue> getTupleValueList();
method public int getValueType();
method public boolean isValueType(int);
@@ -4694,21 +4785,21 @@
}
public class SystemProperties {
- method public static java.lang.String get(java.lang.String);
- method public static java.lang.String get(java.lang.String, java.lang.String);
- method public static boolean getBoolean(java.lang.String, boolean);
- method public static int getInt(java.lang.String, int);
- method public static long getLong(java.lang.String, long);
+ method @NonNull public static String get(@NonNull String);
+ method @NonNull public static String get(@NonNull String, @Nullable String);
+ method public static boolean getBoolean(@NonNull String, boolean);
+ method public static int getInt(@NonNull String, int);
+ method public static long getLong(@NonNull String, long);
}
public class SystemUpdateManager {
- method public android.os.Bundle retrieveSystemUpdateInfo();
- method public void updateSystemUpdateInfo(android.os.PersistableBundle);
- field public static final java.lang.String KEY_IS_SECURITY_UPDATE = "is_security_update";
- field public static final java.lang.String KEY_STATUS = "status";
- field public static final java.lang.String KEY_TARGET_BUILD_FINGERPRINT = "target_build_fingerprint";
- field public static final java.lang.String KEY_TARGET_SECURITY_PATCH_LEVEL = "target_security_patch_level";
- field public static final java.lang.String KEY_TITLE = "title";
+ method @RequiresPermission(anyOf={android.Manifest.permission.READ_SYSTEM_UPDATE_INFO, android.Manifest.permission.RECOVERY}) public android.os.Bundle retrieveSystemUpdateInfo();
+ method @RequiresPermission(android.Manifest.permission.RECOVERY) public void updateSystemUpdateInfo(android.os.PersistableBundle);
+ field public static final String KEY_IS_SECURITY_UPDATE = "is_security_update";
+ field public static final String KEY_STATUS = "status";
+ field public static final String KEY_TARGET_BUILD_FINGERPRINT = "target_build_fingerprint";
+ field public static final String KEY_TARGET_SECURITY_PATCH_LEVEL = "target_security_patch_level";
+ field public static final String KEY_TITLE = "title";
field public static final int STATUS_IDLE = 1; // 0x1
field public static final int STATUS_IN_PROGRESS = 3; // 0x3
field public static final int STATUS_UNKNOWN = 0; // 0x0
@@ -4719,7 +4810,7 @@
public class UpdateEngine {
ctor public UpdateEngine();
- method public void applyPayload(java.lang.String, long, long, java.lang.String[]);
+ method public void applyPayload(String, long, long, String[]);
method public boolean bind(android.os.UpdateEngineCallback, android.os.Handler);
method public boolean bind(android.os.UpdateEngineCallback);
method public void cancel();
@@ -4727,7 +4818,7 @@
method public void resume();
method public void suspend();
method public boolean unbind();
- method public boolean verifyPayloadMetadata(java.lang.String);
+ method public boolean verifyPayloadMetadata(String);
}
public static final class UpdateEngine.ErrorCodeConstants {
@@ -4769,7 +4860,7 @@
public final class UserHandle implements android.os.Parcelable {
method public int getIdentifier();
- method public deprecated boolean isOwner();
+ method @Deprecated public boolean isOwner();
method public boolean isSystem();
method public static int myUserId();
method public static android.os.UserHandle of(int);
@@ -4779,26 +4870,26 @@
}
public class UserManager {
- method public boolean canSwitchUsers();
- method public void clearSeedAccountData();
- method public android.os.UserHandle getProfileParent(android.os.UserHandle);
- method public java.lang.String getSeedAccountName();
- method public android.os.PersistableBundle getSeedAccountOptions();
- method public java.lang.String getSeedAccountType();
- method public long[] getSerialNumbersOfUsers(boolean);
- method public deprecated int getUserRestrictionSource(java.lang.String, android.os.UserHandle);
- method public java.util.List<android.os.UserManager.EnforcingUser> getUserRestrictionSources(java.lang.String, android.os.UserHandle);
+ method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean canSwitchUsers();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void clearSeedAccountData();
+ method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getProfileParent(@NonNull android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountName();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.PersistableBundle getSeedAccountOptions();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountType();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public long[] getSerialNumbersOfUsers(boolean);
+ method @Deprecated @android.os.UserManager.UserRestrictionSource @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserRestrictionSource(String, android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserManager.EnforcingUser> getUserRestrictionSources(String, android.os.UserHandle);
method public boolean hasRestrictedProfiles();
- method public boolean isAdminUser();
- method public boolean isGuestUser();
- method public boolean isManagedProfile();
- method public boolean isManagedProfile(int);
- method public boolean isPrimaryUser();
- method public boolean isRestrictedProfile();
- method public boolean removeUser(android.os.UserHandle);
- field public static final java.lang.String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED";
- field public static final deprecated java.lang.String DISALLOW_OEM_UNLOCK = "no_oem_unlock";
- field public static final java.lang.String DISALLOW_RUN_IN_BACKGROUND = "no_run_in_background";
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isAdminUser();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isGuestUser();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isManagedProfile();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isManagedProfile(int);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isPrimaryUser();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isRestrictedProfile();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean removeUser(android.os.UserHandle);
+ field public static final String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED";
+ field @Deprecated public static final String DISALLOW_OEM_UNLOCK = "no_oem_unlock";
+ field public static final String DISALLOW_RUN_IN_BACKGROUND = "no_run_in_background";
field public static final int RESTRICTION_NOT_SET = 0; // 0x0
field public static final int RESTRICTION_SOURCE_DEVICE_OWNER = 2; // 0x2
field public static final int RESTRICTION_SOURCE_PROFILE_OWNER = 4; // 0x4
@@ -4808,12 +4899,12 @@
public static final class UserManager.EnforcingUser implements android.os.Parcelable {
method public int describeContents();
method public android.os.UserHandle getUserHandle();
- method public int getUserRestrictionSource();
+ method @android.os.UserManager.UserRestrictionSource public int getUserRestrictionSource();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.UserManager.EnforcingUser> CREATOR;
}
- public static abstract class UserManager.UserRestrictionSource implements java.lang.annotation.Annotation {
+ @IntDef(flag=true, prefix={"RESTRICTION_"}, value={android.os.UserManager.RESTRICTION_NOT_SET, android.os.UserManager.RESTRICTION_SOURCE_SYSTEM, android.os.UserManager.RESTRICTION_SOURCE_DEVICE_OWNER, android.os.UserManager.RESTRICTION_SOURCE_PROFILE_OWNER}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface UserManager.UserRestrictionSource {
}
public class WorkSource implements android.os.Parcelable {
@@ -4822,9 +4913,9 @@
public static final class WorkSource.WorkChain implements android.os.Parcelable {
ctor public WorkSource.WorkChain();
- method public android.os.WorkSource.WorkChain addNode(int, java.lang.String);
+ method public android.os.WorkSource.WorkChain addNode(int, @Nullable String);
method public int describeContents();
- method public java.lang.String getAttributionTag();
+ method public String getAttributionTag();
method public int getAttributionUid();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.WorkSource.WorkChain> CREATOR;
@@ -4835,11 +4926,11 @@
package android.os.storage {
public class StorageManager {
- method public void allocateBytes(java.util.UUID, long, int) throws java.io.IOException;
- method public void allocateBytes(java.io.FileDescriptor, long, int) throws java.io.IOException;
- method public long getAllocatableBytes(java.util.UUID, int) throws java.io.IOException;
+ method @WorkerThread public void allocateBytes(@NonNull java.util.UUID, long, @RequiresPermission int) throws java.io.IOException;
+ method @WorkerThread public void allocateBytes(java.io.FileDescriptor, long, @RequiresPermission int) throws java.io.IOException;
+ method @WorkerThread public long getAllocatableBytes(@NonNull java.util.UUID, @RequiresPermission int) throws java.io.IOException;
method public static boolean hasIsolatedStorage();
- field public static final int FLAG_ALLOCATE_AGGRESSIVE = 1; // 0x1
+ field @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public static final int FLAG_ALLOCATE_AGGRESSIVE = 1; // 0x1
}
}
@@ -4847,41 +4938,43 @@
package android.permission {
public final class PermissionControllerManager {
- method public void revokeRuntimePermissions(java.util.Map<java.lang.String, java.util.List<java.lang.String>>, boolean, int, java.util.concurrent.Executor, android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback);
+ method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback);
field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2
field public static final int REASON_MALWARE = 1; // 0x1
}
- public static abstract class PermissionControllerManager.OnRevokeRuntimePermissionsCallback {
+ public abstract static class PermissionControllerManager.OnRevokeRuntimePermissionsCallback {
ctor public PermissionControllerManager.OnRevokeRuntimePermissionsCallback();
- method public abstract void onRevokeRuntimePermissions(java.util.Map<java.lang.String, java.util.List<java.lang.String>>);
+ method public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
}
public abstract class PermissionControllerService extends android.app.Service {
ctor public PermissionControllerService();
method public final void attachBaseContext(android.content.Context);
method public final android.os.IBinder onBind(android.content.Intent);
- method public abstract int onCountPermissionApps(java.util.List<java.lang.String>, boolean, boolean);
- method public abstract java.util.List<android.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(java.lang.String);
- method public abstract void onRevokeRuntimePermission(java.lang.String, java.lang.String);
- method public abstract java.util.Map<java.lang.String, java.util.List<java.lang.String>> onRevokeRuntimePermissions(java.util.Map<java.lang.String, java.util.List<java.lang.String>>, boolean, int, java.lang.String);
- field public static final java.lang.String SERVICE_INTERFACE = "android.permission.PermissionControllerService";
+ method public abstract int onCountPermissionApps(@NonNull java.util.List<java.lang.String>, boolean, boolean);
+ method @NonNull public abstract java.util.List<android.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(@NonNull String);
+ method public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream);
+ method @NonNull public abstract java.util.List<android.permission.RuntimePermissionUsageInfo> onPermissionUsageResult(boolean, long);
+ method public abstract void onRevokeRuntimePermission(@NonNull String, @NonNull String);
+ method @NonNull public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull String);
+ field public static final String SERVICE_INTERFACE = "android.permission.PermissionControllerService";
}
public final class PermissionManager {
- method public java.util.List<android.permission.PermissionManager.SplitPermissionInfo> getSplitPermissions();
+ method @NonNull public java.util.List<android.permission.PermissionManager.SplitPermissionInfo> getSplitPermissions();
}
public static final class PermissionManager.SplitPermissionInfo {
- method public java.util.List<java.lang.String> getNewPermissions();
- method public java.lang.String getSplitPermission();
+ method @NonNull public java.util.List<java.lang.String> getNewPermissions();
+ method @NonNull public String getSplitPermission();
method public int getTargetSdk();
}
public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
- ctor public RuntimePermissionPresentationInfo(java.lang.CharSequence, boolean, boolean);
+ ctor public RuntimePermissionPresentationInfo(CharSequence, boolean, boolean);
method public int describeContents();
- method public java.lang.CharSequence getLabel();
+ method @NonNull public CharSequence getLabel();
method public boolean isGranted();
method public boolean isStandard();
method public void writeToParcel(android.os.Parcel, int);
@@ -4889,33 +4982,34 @@
}
public final class RuntimePermissionUsageInfo implements android.os.Parcelable {
- ctor public RuntimePermissionUsageInfo(java.lang.CharSequence, int);
+ ctor public RuntimePermissionUsageInfo(@NonNull CharSequence, int);
method public int describeContents();
- method public java.lang.CharSequence getName();
method public int getAppAccessCount();
+ method @NonNull public CharSequence getName();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.permission.RuntimePermissionUsageInfo> CREATOR;
}
+
}
package android.permissionpresenterservice {
- public abstract deprecated class RuntimePermissionPresenterService extends android.app.Service {
- ctor public RuntimePermissionPresenterService();
- method public final void attachBaseContext(android.content.Context);
- method public final android.os.IBinder onBind(android.content.Intent);
- method public abstract java.util.List<android.content.pm.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(java.lang.String);
- method public abstract void onRevokeRuntimePermission(java.lang.String, java.lang.String);
- field public static final java.lang.String SERVICE_INTERFACE = "android.permissionpresenterservice.RuntimePermissionPresenterService";
+ @Deprecated public abstract class RuntimePermissionPresenterService extends android.app.Service {
+ ctor @Deprecated public RuntimePermissionPresenterService();
+ method @Deprecated public final void attachBaseContext(android.content.Context);
+ method @Deprecated public final android.os.IBinder onBind(android.content.Intent);
+ method @Deprecated public abstract java.util.List<android.content.pm.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(@NonNull String);
+ method @Deprecated public abstract void onRevokeRuntimePermission(@NonNull String, @NonNull String);
+ field @Deprecated public static final String SERVICE_INTERFACE = "android.permissionpresenterservice.RuntimePermissionPresenterService";
}
}
package android.preference {
- public deprecated class PreferenceManager {
- method public boolean isStorageCredentialProtected();
- method public void setStorageCredentialProtected();
+ @Deprecated public class PreferenceManager {
+ method @Deprecated public boolean isStorageCredentialProtected();
+ method @Deprecated public void setStorageCredentialProtected();
}
}
@@ -4923,21 +5017,21 @@
package android.print {
public final class PrintManager {
- method public void addPrintServiceRecommendationsChangeListener(android.print.PrintManager.PrintServiceRecommendationsChangeListener, android.os.Handler);
- method public void addPrintServicesChangeListener(android.print.PrintManager.PrintServicesChangeListener, android.os.Handler);
- method public java.util.List<android.printservice.recommendation.RecommendationInfo> getPrintServiceRecommendations();
- method public java.util.List<android.printservice.PrintServiceInfo> getPrintServices(int);
- method public void removePrintServiceRecommendationsChangeListener(android.print.PrintManager.PrintServiceRecommendationsChangeListener);
- method public void removePrintServicesChangeListener(android.print.PrintManager.PrintServicesChangeListener);
+ method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void addPrintServiceRecommendationsChangeListener(@NonNull android.print.PrintManager.PrintServiceRecommendationsChangeListener, @Nullable android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void addPrintServicesChangeListener(@NonNull android.print.PrintManager.PrintServicesChangeListener, @Nullable android.os.Handler);
+ method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public java.util.List<android.printservice.recommendation.RecommendationInfo> getPrintServiceRecommendations();
+ method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public java.util.List<android.printservice.PrintServiceInfo> getPrintServices(int);
+ method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void removePrintServiceRecommendationsChangeListener(@NonNull android.print.PrintManager.PrintServiceRecommendationsChangeListener);
+ method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void removePrintServicesChangeListener(@NonNull android.print.PrintManager.PrintServicesChangeListener);
field public static final int ENABLED_SERVICES = 1; // 0x1
}
- public static abstract interface PrintManager.PrintServiceRecommendationsChangeListener {
- method public abstract void onPrintServiceRecommendationsChanged();
+ public static interface PrintManager.PrintServiceRecommendationsChangeListener {
+ method public void onPrintServiceRecommendationsChanged();
}
- public static abstract interface PrintManager.PrintServicesChangeListener {
- method public abstract void onPrintServicesChanged();
+ public static interface PrintManager.PrintServicesChangeListener {
+ method public void onPrintServicesChanged();
}
}
@@ -4946,7 +5040,7 @@
public final class PrintServiceInfo implements android.os.Parcelable {
method public int describeContents();
- method public android.content.ComponentName getComponentName();
+ method @NonNull public android.content.ComponentName getComponentName();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.printservice.PrintServiceInfo> CREATOR;
}
@@ -4956,13 +5050,13 @@
package android.printservice.recommendation {
public final class RecommendationInfo implements android.os.Parcelable {
- ctor public RecommendationInfo(java.lang.CharSequence, java.lang.CharSequence, java.util.List<java.net.InetAddress>, boolean);
- ctor public deprecated RecommendationInfo(java.lang.CharSequence, java.lang.CharSequence, int, boolean);
+ ctor public RecommendationInfo(@NonNull CharSequence, @NonNull CharSequence, @NonNull java.util.List<java.net.InetAddress>, boolean);
+ ctor @Deprecated public RecommendationInfo(@NonNull CharSequence, @NonNull CharSequence, @IntRange(from=0) int, boolean);
method public int describeContents();
- method public java.util.List<java.net.InetAddress> getDiscoveredPrinters();
- method public java.lang.CharSequence getName();
+ method @NonNull public java.util.List<java.net.InetAddress> getDiscoveredPrinters();
+ method public CharSequence getName();
method public int getNumDiscoveredPrinters();
- method public java.lang.CharSequence getPackageName();
+ method public CharSequence getPackageName();
method public boolean recommendsMultiVendorService();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.printservice.recommendation.RecommendationInfo> CREATOR;
@@ -4973,8 +5067,8 @@
method public final android.os.IBinder onBind(android.content.Intent);
method public abstract void onConnected();
method public abstract void onDisconnected();
- method public final void updateRecommendations(java.util.List<android.printservice.recommendation.RecommendationInfo>);
- field public static final java.lang.String SERVICE_INTERFACE = "android.printservice.recommendation.RecommendationService";
+ method public final void updateRecommendations(@Nullable java.util.List<android.printservice.recommendation.RecommendationInfo>);
+ field public static final String SERVICE_INTERFACE = "android.printservice.recommendation.RecommendationService";
}
}
@@ -4982,54 +5076,57 @@
package android.provider {
public static final class ContactsContract.MetadataSync implements android.provider.BaseColumns android.provider.ContactsContract.MetadataSyncColumns {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String METADATA_AUTHORITY = "com.android.contacts.metadata";
+ field public static final String METADATA_AUTHORITY = "com.android.contacts.metadata";
field public static final android.net.Uri METADATA_AUTHORITY_URI;
}
- protected static abstract interface ContactsContract.MetadataSyncColumns {
- field public static final java.lang.String ACCOUNT_NAME = "account_name";
- field public static final java.lang.String ACCOUNT_TYPE = "account_type";
- field public static final java.lang.String DATA = "data";
- field public static final java.lang.String DATA_SET = "data_set";
- field public static final java.lang.String DELETED = "deleted";
- field public static final java.lang.String RAW_CONTACT_BACKUP_ID = "raw_contact_backup_id";
+ protected static interface ContactsContract.MetadataSyncColumns {
+ field public static final String ACCOUNT_NAME = "account_name";
+ field public static final String ACCOUNT_TYPE = "account_type";
+ field public static final String DATA = "data";
+ field public static final String DATA_SET = "data_set";
+ field public static final String DELETED = "deleted";
+ field public static final String RAW_CONTACT_BACKUP_ID = "raw_contact_backup_id";
}
public static final class ContactsContract.MetadataSyncState implements android.provider.BaseColumns android.provider.ContactsContract.MetadataSyncStateColumns {
- field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata_sync_state";
- field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata_sync_state";
+ field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata_sync_state";
+ field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata_sync_state";
field public static final android.net.Uri CONTENT_URI;
}
- protected static abstract interface ContactsContract.MetadataSyncStateColumns {
- field public static final java.lang.String ACCOUNT_NAME = "account_name";
- field public static final java.lang.String ACCOUNT_TYPE = "account_type";
- field public static final java.lang.String DATA_SET = "data_set";
- field public static final java.lang.String STATE = "state";
+ protected static interface ContactsContract.MetadataSyncStateColumns {
+ field public static final String ACCOUNT_NAME = "account_name";
+ field public static final String ACCOUNT_TYPE = "account_type";
+ field public static final String DATA_SET = "data_set";
+ field public static final String STATE = "state";
}
public final class DeviceConfig {
- method public static void addOnPropertyChangedListener(java.lang.String, java.util.concurrent.Executor, android.provider.DeviceConfig.OnPropertyChangedListener);
- method public static java.lang.String getProperty(java.lang.String, java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static void addOnPropertyChangedListener(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.provider.DeviceConfig.OnPropertyChangedListener);
+ method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getProperty(String, String);
method public static void removeOnPropertyChangedListener(android.provider.DeviceConfig.OnPropertyChangedListener);
- method public static void resetToDefaults(int, java.lang.String);
- method public static boolean setProperty(java.lang.String, java.lang.String, java.lang.String, boolean);
- field public static final java.lang.String NAMESPACE_INPUT_NATIVE_BOOT = "input_native_boot";
+ method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void resetToDefaults(int, @Nullable String);
+ method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperty(String, String, String, boolean);
+ field public static final String NAMESPACE_AUTOFILL = "autofill";
+ field public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
+ field public static final String NAMESPACE_GAME_DRIVER = "game_driver";
+ field public static final String NAMESPACE_INPUT_NATIVE_BOOT = "input_native_boot";
}
- public static abstract interface DeviceConfig.OnPropertyChangedListener {
- method public abstract void onPropertyChanged(java.lang.String, java.lang.String, java.lang.String);
+ public static interface DeviceConfig.OnPropertyChangedListener {
+ method public void onPropertyChanged(String, String, String);
}
public final class DocumentsContract {
method public static boolean isManageMode(android.net.Uri);
method public static android.net.Uri setManageMode(android.net.Uri);
- field public static final java.lang.String ACTION_DOCUMENT_ROOT_SETTINGS = "android.provider.action.DOCUMENT_ROOT_SETTINGS";
- field public static final java.lang.String ACTION_MANAGE_DOCUMENT = "android.provider.action.MANAGE_DOCUMENT";
- field public static final java.lang.String EXTRA_SHOW_ADVANCED = "android.provider.extra.SHOW_ADVANCED";
+ field public static final String ACTION_DOCUMENT_ROOT_SETTINGS = "android.provider.action.DOCUMENT_ROOT_SETTINGS";
+ field public static final String ACTION_MANAGE_DOCUMENT = "android.provider.action.MANAGE_DOCUMENT";
+ field public static final String EXTRA_SHOW_ADVANCED = "android.provider.extra.SHOW_ADVANCED";
}
public static final class DocumentsContract.Root {
@@ -5042,22 +5139,22 @@
public abstract class SearchIndexableData {
ctor public SearchIndexableData();
ctor public SearchIndexableData(android.content.Context);
- field public java.lang.String className;
+ field public String className;
field public android.content.Context context;
field public boolean enabled;
field public int iconResId;
- field public java.lang.String intentAction;
- field public java.lang.String intentTargetClass;
- field public java.lang.String intentTargetPackage;
- field public java.lang.String key;
+ field public String intentAction;
+ field public String intentTargetClass;
+ field public String intentTargetPackage;
+ field public String key;
field public java.util.Locale locale;
- field public java.lang.String packageName;
+ field public String packageName;
field public int rank;
field public int userId;
}
public class SearchIndexableResource extends android.provider.SearchIndexableData {
- ctor public SearchIndexableResource(int, int, java.lang.String, int);
+ ctor public SearchIndexableResource(int, int, String, int);
ctor public SearchIndexableResource(android.content.Context);
field public int xmlResId;
}
@@ -5086,150 +5183,150 @@
field public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE = 5; // 0x5
field public static final int COLUMN_INDEX_XML_RES_RANK = 0; // 0x0
field public static final int COLUMN_INDEX_XML_RES_RESID = 1; // 0x1
- field public static final java.lang.String INDEXABLES_RAW = "indexables_raw";
- field public static final java.lang.String[] INDEXABLES_RAW_COLUMNS;
- field public static final java.lang.String INDEXABLES_RAW_PATH = "settings/indexables_raw";
- field public static final java.lang.String INDEXABLES_XML_RES = "indexables_xml_res";
- field public static final java.lang.String[] INDEXABLES_XML_RES_COLUMNS;
- field public static final java.lang.String INDEXABLES_XML_RES_PATH = "settings/indexables_xml_res";
- field public static final java.lang.String NON_INDEXABLES_KEYS = "non_indexables_key";
- field public static final java.lang.String[] NON_INDEXABLES_KEYS_COLUMNS;
- field public static final java.lang.String NON_INDEXABLES_KEYS_PATH = "settings/non_indexables_key";
- field public static final java.lang.String PROVIDER_INTERFACE = "android.content.action.SEARCH_INDEXABLES_PROVIDER";
+ field public static final String INDEXABLES_RAW = "indexables_raw";
+ field public static final String[] INDEXABLES_RAW_COLUMNS;
+ field public static final String INDEXABLES_RAW_PATH = "settings/indexables_raw";
+ field public static final String INDEXABLES_XML_RES = "indexables_xml_res";
+ field public static final String[] INDEXABLES_XML_RES_COLUMNS;
+ field public static final String INDEXABLES_XML_RES_PATH = "settings/indexables_xml_res";
+ field public static final String NON_INDEXABLES_KEYS = "non_indexables_key";
+ field public static final String[] NON_INDEXABLES_KEYS_COLUMNS;
+ field public static final String NON_INDEXABLES_KEYS_PATH = "settings/non_indexables_key";
+ field public static final String PROVIDER_INTERFACE = "android.content.action.SEARCH_INDEXABLES_PROVIDER";
}
public static class SearchIndexablesContract.BaseColumns {
- field public static final java.lang.String COLUMN_CLASS_NAME = "className";
- field public static final java.lang.String COLUMN_ICON_RESID = "iconResId";
- field public static final java.lang.String COLUMN_INTENT_ACTION = "intentAction";
- field public static final java.lang.String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass";
- field public static final java.lang.String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage";
- field public static final java.lang.String COLUMN_RANK = "rank";
+ field public static final String COLUMN_CLASS_NAME = "className";
+ field public static final String COLUMN_ICON_RESID = "iconResId";
+ field public static final String COLUMN_INTENT_ACTION = "intentAction";
+ field public static final String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass";
+ field public static final String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage";
+ field public static final String COLUMN_RANK = "rank";
}
public static final class SearchIndexablesContract.NonIndexableKey extends android.provider.SearchIndexablesContract.BaseColumns {
- field public static final java.lang.String COLUMN_KEY_VALUE = "key";
- field public static final java.lang.String MIME_TYPE = "vnd.android.cursor.dir/non_indexables_key";
+ field public static final String COLUMN_KEY_VALUE = "key";
+ field public static final String MIME_TYPE = "vnd.android.cursor.dir/non_indexables_key";
}
public static final class SearchIndexablesContract.RawData extends android.provider.SearchIndexablesContract.BaseColumns {
- field public static final java.lang.String COLUMN_ENTRIES = "entries";
- field public static final java.lang.String COLUMN_KEY = "key";
- field public static final java.lang.String COLUMN_KEYWORDS = "keywords";
- field public static final java.lang.String COLUMN_SCREEN_TITLE = "screenTitle";
- field public static final java.lang.String COLUMN_SUMMARY_OFF = "summaryOff";
- field public static final java.lang.String COLUMN_SUMMARY_ON = "summaryOn";
- field public static final java.lang.String COLUMN_TITLE = "title";
- field public static final java.lang.String COLUMN_USER_ID = "user_id";
- field public static final java.lang.String MIME_TYPE = "vnd.android.cursor.dir/indexables_raw";
+ field public static final String COLUMN_ENTRIES = "entries";
+ field public static final String COLUMN_KEY = "key";
+ field public static final String COLUMN_KEYWORDS = "keywords";
+ field public static final String COLUMN_SCREEN_TITLE = "screenTitle";
+ field public static final String COLUMN_SUMMARY_OFF = "summaryOff";
+ field public static final String COLUMN_SUMMARY_ON = "summaryOn";
+ field public static final String COLUMN_TITLE = "title";
+ field public static final String COLUMN_USER_ID = "user_id";
+ field public static final String MIME_TYPE = "vnd.android.cursor.dir/indexables_raw";
}
public static final class SearchIndexablesContract.XmlResource extends android.provider.SearchIndexablesContract.BaseColumns {
- field public static final java.lang.String COLUMN_XML_RESID = "xmlResId";
- field public static final java.lang.String MIME_TYPE = "vnd.android.cursor.dir/indexables_xml_res";
+ field public static final String COLUMN_XML_RESID = "xmlResId";
+ field public static final String MIME_TYPE = "vnd.android.cursor.dir/indexables_xml_res";
}
public abstract class SearchIndexablesProvider extends android.content.ContentProvider {
ctor public SearchIndexablesProvider();
- method public final int delete(android.net.Uri, java.lang.String, java.lang.String[]);
- method public java.lang.String getType(android.net.Uri);
+ method public final int delete(android.net.Uri, String, String[]);
+ method public String getType(android.net.Uri);
method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public abstract android.database.Cursor queryNonIndexableKeys(java.lang.String[]);
- method public abstract android.database.Cursor queryRawData(java.lang.String[]);
- method public abstract android.database.Cursor queryXmlResources(java.lang.String[]);
- method public final int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
+ method public abstract android.database.Cursor queryNonIndexableKeys(String[]);
+ method public abstract android.database.Cursor queryRawData(String[]);
+ method public abstract android.database.Cursor queryXmlResources(String[]);
+ method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
}
public final class Settings {
- field public static final java.lang.String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
- field public static final java.lang.String ACTION_LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS = "android.settings.LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS";
- field public static final java.lang.String ACTION_SHOW_ADMIN_SUPPORT_DETAILS = "android.settings.SHOW_ADMIN_SUPPORT_DETAILS";
+ field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
+ field public static final String ACTION_LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS = "android.settings.LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS";
+ field public static final String ACTION_SHOW_ADMIN_SUPPORT_DETAILS = "android.settings.SHOW_ADMIN_SUPPORT_DETAILS";
}
public static final class Settings.Global extends android.provider.Settings.NameValueTable {
- method public static boolean putString(android.content.ContentResolver, java.lang.String, java.lang.String, java.lang.String, boolean);
- method public static void resetToDefaults(android.content.ContentResolver, java.lang.String);
- field public static final java.lang.String APP_STANDBY_ENABLED = "app_standby_enabled";
- field public static final java.lang.String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages";
- field public static final java.lang.String CARRIER_APP_NAMES = "carrier_app_names";
- field public static final java.lang.String CARRIER_APP_WHITELIST = "carrier_app_whitelist";
- field public static final java.lang.String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus";
- field public static final java.lang.String DEVICE_DEMO_MODE = "device_demo_mode";
- field public static final java.lang.String DEVICE_PROVISIONING_MOBILE_DATA_ENABLED = "device_provisioning_mobile_data";
- field public static final java.lang.String EUICC_PROVISIONED = "euicc_provisioned";
- field public static final java.lang.String INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT = "install_carrier_app_notification_persistent";
- field public static final java.lang.String INSTALL_CARRIER_APP_NOTIFICATION_SLEEP_MILLIS = "install_carrier_app_notification_sleep_millis";
- field public static final java.lang.String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update";
- field public static final java.lang.String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt";
- field public static final java.lang.String SMS_ACCESS_RESTRICTION_ENABLED = "sms_access_restriction_enabled";
- field public static final java.lang.String THEATER_MODE_ON = "theater_mode_on";
- field public static final java.lang.String WEBVIEW_MULTIPROCESS = "webview_multiprocess";
- field public static final java.lang.String WIFI_BADGING_THRESHOLDS = "wifi_badging_thresholds";
- field public static final java.lang.String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled";
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, @Nullable String, boolean);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
+ field public static final String APP_STANDBY_ENABLED = "app_standby_enabled";
+ field public static final String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages";
+ field public static final String CARRIER_APP_NAMES = "carrier_app_names";
+ field public static final String CARRIER_APP_WHITELIST = "carrier_app_whitelist";
+ field public static final String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus";
+ field public static final String DEVICE_DEMO_MODE = "device_demo_mode";
+ field public static final String DEVICE_PROVISIONING_MOBILE_DATA_ENABLED = "device_provisioning_mobile_data";
+ field public static final String EUICC_PROVISIONED = "euicc_provisioned";
+ field public static final String INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT = "install_carrier_app_notification_persistent";
+ field public static final String INSTALL_CARRIER_APP_NOTIFICATION_SLEEP_MILLIS = "install_carrier_app_notification_sleep_millis";
+ field public static final String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update";
+ field public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt";
+ field public static final String SMS_ACCESS_RESTRICTION_ENABLED = "sms_access_restriction_enabled";
+ field public static final String THEATER_MODE_ON = "theater_mode_on";
+ field public static final String WEBVIEW_MULTIPROCESS = "webview_multiprocess";
+ field public static final String WIFI_BADGING_THRESHOLDS = "wifi_badging_thresholds";
+ field public static final String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled";
}
public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
- method public static boolean putString(android.content.ContentResolver, java.lang.String, java.lang.String, java.lang.String, boolean);
- method public static void resetToDefaults(android.content.ContentResolver, java.lang.String);
- field public static final java.lang.String ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED = "accessibility_display_magnification_navbar_enabled";
- field public static final java.lang.String ASSIST_GESTURE_SETUP_COMPLETE = "assist_gesture_setup_complete";
- field public static final java.lang.String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
- field public static final java.lang.String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count";
- field public static final java.lang.String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE = "autofill_user_data_max_field_classification_size";
- field public static final java.lang.String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE = "autofill_user_data_max_user_data_size";
- field public static final java.lang.String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH = "autofill_user_data_max_value_length";
- field public static final java.lang.String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length";
- field public static final java.lang.String COMPLETED_CATEGORY_PREFIX = "suggested.completed_category.";
- field public static final java.lang.String DOZE_ALWAYS_ON = "doze_always_on";
- field public static final java.lang.String HUSH_GESTURE_USED = "hush_gesture_used";
- field public static final java.lang.String INSTANT_APPS_ENABLED = "instant_apps_enabled";
- field public static final java.lang.String LAST_SETUP_SHOWN = "last_setup_shown";
- field public static final java.lang.String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
- field public static final java.lang.String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
- field public static final java.lang.String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications";
- field public static final java.lang.String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications";
- field public static final java.lang.String MANUAL_RINGER_TOGGLE_COUNT = "manual_ringer_toggle_count";
- field public static final java.lang.String USER_SETUP_COMPLETE = "user_setup_complete";
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, @Nullable String, boolean);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
+ field public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED = "accessibility_display_magnification_navbar_enabled";
+ field public static final String ASSIST_GESTURE_SETUP_COMPLETE = "assist_gesture_setup_complete";
+ field public static final String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
+ field public static final String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count";
+ field public static final String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE = "autofill_user_data_max_field_classification_size";
+ field public static final String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE = "autofill_user_data_max_user_data_size";
+ field public static final String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH = "autofill_user_data_max_value_length";
+ field public static final String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length";
+ field public static final String COMPLETED_CATEGORY_PREFIX = "suggested.completed_category.";
+ field public static final String DOZE_ALWAYS_ON = "doze_always_on";
+ field public static final String HUSH_GESTURE_USED = "hush_gesture_used";
+ field public static final String INSTANT_APPS_ENABLED = "instant_apps_enabled";
+ field public static final String LAST_SETUP_SHOWN = "last_setup_shown";
+ field public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
+ field public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
+ field public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications";
+ field public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications";
+ field public static final String MANUAL_RINGER_TOGGLE_COUNT = "manual_ringer_toggle_count";
+ field public static final String USER_SETUP_COMPLETE = "user_setup_complete";
field public static final int USER_SETUP_PERSONALIZATION_COMPLETE = 10; // 0xa
field public static final int USER_SETUP_PERSONALIZATION_NOT_STARTED = 0; // 0x0
field public static final int USER_SETUP_PERSONALIZATION_PAUSED = 2; // 0x2
field public static final int USER_SETUP_PERSONALIZATION_STARTED = 1; // 0x1
- field public static final java.lang.String USER_SETUP_PERSONALIZATION_STATE = "user_setup_personalization_state";
- field public static final java.lang.String VOLUME_HUSH_GESTURE = "volume_hush_gesture";
+ field public static final String USER_SETUP_PERSONALIZATION_STATE = "user_setup_personalization_state";
+ field public static final String VOLUME_HUSH_GESTURE = "volume_hush_gesture";
}
public static final class Telephony.Carriers implements android.provider.BaseColumns {
- field public static final java.lang.String APN_SET_ID = "apn_set_id";
+ field public static final String APN_SET_ID = "apn_set_id";
field public static final int CARRIER_EDITED = 4; // 0x4
- field public static final java.lang.String EDITED_STATUS = "edited";
- field public static final java.lang.String MAX_CONNECTIONS = "max_conns";
- field public static final java.lang.String MODEM_PERSIST = "modem_cognitive";
- field public static final java.lang.String MTU = "mtu";
+ field public static final String EDITED_STATUS = "edited";
+ field public static final String MAX_CONNECTIONS = "max_conns";
+ field public static final String MODEM_PERSIST = "modem_cognitive";
+ field public static final String MTU = "mtu";
field public static final int NO_APN_SET_ID = 0; // 0x0
- field public static final java.lang.String TIME_LIMIT_FOR_MAX_CONNECTIONS = "max_conns_time";
+ field public static final String TIME_LIMIT_FOR_MAX_CONNECTIONS = "max_conns_time";
field public static final int UNEDITED = 0; // 0x0
field public static final int USER_DELETED = 2; // 0x2
- field public static final java.lang.String USER_EDITABLE = "user_editable";
+ field public static final String USER_EDITABLE = "user_editable";
field public static final int USER_EDITED = 1; // 0x1
- field public static final java.lang.String USER_VISIBLE = "user_visible";
- field public static final java.lang.String WAIT_TIME_RETRY = "wait_time";
+ field public static final String USER_VISIBLE = "user_visible";
+ field public static final String WAIT_TIME_RETRY = "wait_time";
}
public final class TimeZoneRulesDataContract {
- field public static final java.lang.String AUTHORITY = "com.android.timezone";
+ field public static final String AUTHORITY = "com.android.timezone";
}
public static final class TimeZoneRulesDataContract.Operation {
- field public static final java.lang.String COLUMN_DISTRO_MAJOR_VERSION = "distro_major_version";
- field public static final java.lang.String COLUMN_DISTRO_MINOR_VERSION = "distro_minor_version";
- field public static final java.lang.String COLUMN_REVISION = "revision";
- field public static final java.lang.String COLUMN_RULES_VERSION = "rules_version";
- field public static final java.lang.String COLUMN_TYPE = "type";
+ field public static final String COLUMN_DISTRO_MAJOR_VERSION = "distro_major_version";
+ field public static final String COLUMN_DISTRO_MINOR_VERSION = "distro_minor_version";
+ field public static final String COLUMN_REVISION = "revision";
+ field public static final String COLUMN_RULES_VERSION = "rules_version";
+ field public static final String COLUMN_TYPE = "type";
field public static final android.net.Uri CONTENT_URI;
- field public static final java.lang.String TYPE_INSTALL = "INSTALL";
- field public static final java.lang.String TYPE_NO_OP = "NOOP";
- field public static final java.lang.String TYPE_UNINSTALL = "UNINSTALL";
+ field public static final String TYPE_INSTALL = "INSTALL";
+ field public static final String TYPE_NO_OP = "NOOP";
+ field public static final String TYPE_UNINSTALL = "UNINSTALL";
}
}
@@ -5238,12 +5335,12 @@
public abstract class RoleControllerService extends android.app.Service {
ctor public RoleControllerService();
- method public abstract void onAddRoleHolder(java.lang.String, java.lang.String, android.app.role.RoleManagerCallback);
- method public final android.os.IBinder onBind(android.content.Intent);
- method public abstract void onClearRoleHolders(java.lang.String, android.app.role.RoleManagerCallback);
- method public abstract void onGrantDefaultRoles(android.app.role.RoleManagerCallback);
- method public abstract void onRemoveRoleHolder(java.lang.String, java.lang.String, android.app.role.RoleManagerCallback);
- field public static final java.lang.String SERVICE_INTERFACE = "android.rolecontrollerservice.RoleControllerService";
+ method public abstract void onAddRoleHolder(@NonNull String, @NonNull String, @NonNull android.app.role.RoleManagerCallback);
+ method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
+ method public abstract void onClearRoleHolders(@NonNull String, @NonNull android.app.role.RoleManagerCallback);
+ method public abstract void onGrantDefaultRoles(@NonNull android.app.role.RoleManagerCallback);
+ method public abstract void onRemoveRoleHolder(@NonNull String, @NonNull String, @NonNull android.app.role.RoleManagerCallback);
+ field public static final String SERVICE_INTERFACE = "android.rolecontrollerservice.RoleControllerService";
}
}
@@ -5251,15 +5348,15 @@
package android.security.keystore {
public abstract class AttestationUtils {
- method public static java.security.cert.X509Certificate[] attestDeviceIds(android.content.Context, int[], byte[]) throws android.security.keystore.DeviceIdAttestationException;
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @NonNull public static java.security.cert.X509Certificate[] attestDeviceIds(android.content.Context, @NonNull int[], @NonNull byte[]) throws android.security.keystore.DeviceIdAttestationException;
field public static final int ID_TYPE_IMEI = 2; // 0x2
field public static final int ID_TYPE_MEID = 3; // 0x3
field public static final int ID_TYPE_SERIAL = 1; // 0x1
}
public class DeviceIdAttestationException extends java.lang.Exception {
- ctor public DeviceIdAttestationException(java.lang.String);
- ctor public DeviceIdAttestationException(java.lang.String, java.lang.Throwable);
+ ctor public DeviceIdAttestationException(String);
+ ctor public DeviceIdAttestationException(String, Throwable);
}
}
@@ -5267,20 +5364,20 @@
package android.security.keystore.recovery {
public class DecryptionFailedException extends java.security.GeneralSecurityException {
- ctor public DecryptionFailedException(java.lang.String);
+ ctor public DecryptionFailedException(String);
}
public class InternalRecoveryServiceException extends java.security.GeneralSecurityException {
- ctor public InternalRecoveryServiceException(java.lang.String);
- ctor public InternalRecoveryServiceException(java.lang.String, java.lang.Throwable);
+ ctor public InternalRecoveryServiceException(String);
+ ctor public InternalRecoveryServiceException(String, Throwable);
}
public final class KeyChainProtectionParams implements android.os.Parcelable {
method public void clearSecret();
method public int describeContents();
- method public android.security.keystore.recovery.KeyDerivationParams getKeyDerivationParams();
+ method @NonNull public android.security.keystore.recovery.KeyDerivationParams getKeyDerivationParams();
method public int getLockScreenUiFormat();
- method public byte[] getSecret();
+ method @NonNull public byte[] getSecret();
method public int getUserSecretType();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyChainProtectionParams> CREATOR;
@@ -5292,34 +5389,34 @@
public static class KeyChainProtectionParams.Builder {
ctor public KeyChainProtectionParams.Builder();
- method public android.security.keystore.recovery.KeyChainProtectionParams build();
- method public android.security.keystore.recovery.KeyChainProtectionParams.Builder setKeyDerivationParams(android.security.keystore.recovery.KeyDerivationParams);
+ method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams build();
+ method public android.security.keystore.recovery.KeyChainProtectionParams.Builder setKeyDerivationParams(@NonNull android.security.keystore.recovery.KeyDerivationParams);
method public android.security.keystore.recovery.KeyChainProtectionParams.Builder setLockScreenUiFormat(int);
- method public android.security.keystore.recovery.KeyChainProtectionParams.Builder setSecret(byte[]);
+ method public android.security.keystore.recovery.KeyChainProtectionParams.Builder setSecret(@NonNull byte[]);
method public android.security.keystore.recovery.KeyChainProtectionParams.Builder setUserSecretType(int);
}
public final class KeyChainSnapshot implements android.os.Parcelable {
method public int describeContents();
method public long getCounterId();
- method public byte[] getEncryptedRecoveryKeyBlob();
- method public java.util.List<android.security.keystore.recovery.KeyChainProtectionParams> getKeyChainProtectionParams();
+ method @NonNull public byte[] getEncryptedRecoveryKeyBlob();
+ method @NonNull public java.util.List<android.security.keystore.recovery.KeyChainProtectionParams> getKeyChainProtectionParams();
method public int getMaxAttempts();
- method public byte[] getServerParams();
+ method @NonNull public byte[] getServerParams();
method public int getSnapshotVersion();
- method public java.security.cert.CertPath getTrustedHardwareCertPath();
- method public java.util.List<android.security.keystore.recovery.WrappedApplicationKey> getWrappedApplicationKeys();
+ method @NonNull public java.security.cert.CertPath getTrustedHardwareCertPath();
+ method @NonNull public java.util.List<android.security.keystore.recovery.WrappedApplicationKey> getWrappedApplicationKeys();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyChainSnapshot> CREATOR;
}
public final class KeyDerivationParams implements android.os.Parcelable {
- method public static android.security.keystore.recovery.KeyDerivationParams createScryptParams(byte[], int);
- method public static android.security.keystore.recovery.KeyDerivationParams createSha256Params(byte[]);
+ method @NonNull public static android.security.keystore.recovery.KeyDerivationParams createScryptParams(@NonNull byte[], int);
+ method @NonNull public static android.security.keystore.recovery.KeyDerivationParams createSha256Params(@NonNull byte[]);
method public int describeContents();
method public int getAlgorithm();
method public int getMemoryDifficulty();
- method public byte[] getSalt();
+ method @NonNull public byte[] getSalt();
method public void writeToParcel(android.os.Parcel, int);
field public static final int ALGORITHM_SCRYPT = 2; // 0x2
field public static final int ALGORITHM_SHA256 = 1; // 0x1
@@ -5327,55 +5424,59 @@
}
public class LockScreenRequiredException extends java.security.GeneralSecurityException {
- ctor public LockScreenRequiredException(java.lang.String);
+ ctor public LockScreenRequiredException(String);
}
public class RecoveryController {
- method public android.security.keystore.recovery.RecoverySession createRecoverySession();
- method public java.security.Key generateKey(java.lang.String) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
- method public java.util.List<java.lang.String> getAliases() throws android.security.keystore.recovery.InternalRecoveryServiceException;
- method public static android.security.keystore.recovery.RecoveryController getInstance(android.content.Context);
- method public java.security.Key getKey(java.lang.String) throws android.security.keystore.recovery.InternalRecoveryServiceException, java.security.UnrecoverableKeyException;
- method public android.security.keystore.recovery.KeyChainSnapshot getKeyChainSnapshot() throws android.security.keystore.recovery.InternalRecoveryServiceException;
- method public int[] getRecoverySecretTypes() throws android.security.keystore.recovery.InternalRecoveryServiceException;
- method public int getRecoveryStatus(java.lang.String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
- method public java.util.Map<java.lang.String, java.security.cert.X509Certificate> getRootCertificates();
- method public java.security.Key importKey(java.lang.String, byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
- method public void initRecoveryService(java.lang.String, byte[], byte[]) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
- method public static boolean isRecoverableKeyStoreEnabled(android.content.Context);
- method public void removeKey(java.lang.String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
- method public void setRecoverySecretTypes(int[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
- method public void setRecoveryStatus(java.lang.String, int) throws android.security.keystore.recovery.InternalRecoveryServiceException;
- method public void setServerParams(byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
- method public void setSnapshotCreatedPendingIntent(android.app.PendingIntent) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @NonNull public android.security.keystore.recovery.RecoverySession createRecoverySession();
+ method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key generateKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @NonNull public java.security.Key generateKey(@NonNull String, @Nullable byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @NonNull public java.util.List<java.lang.String> getAliases() throws android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @NonNull public static android.security.keystore.recovery.RecoveryController getInstance(@NonNull android.content.Context);
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @Nullable public java.security.Key getKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException, java.security.UnrecoverableKeyException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @Nullable public android.security.keystore.recovery.KeyChainSnapshot getKeyChainSnapshot() throws android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public int[] getRecoverySecretTypes() throws android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public int getRecoveryStatus(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @NonNull public java.util.Map<java.lang.String,java.security.cert.X509Certificate> getRootCertificates();
+ method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key importKey(@NonNull String, @NonNull byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @NonNull public java.security.Key importKey(@NonNull String, @NonNull byte[], @Nullable byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void initRecoveryService(@NonNull String, @NonNull byte[], @NonNull byte[]) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public static boolean isRecoverableKeyStoreEnabled(@NonNull android.content.Context);
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void removeKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setRecoverySecretTypes(@NonNull int[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setRecoveryStatus(@NonNull String, int) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setServerParams(@NonNull byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setSnapshotCreatedPendingIntent(@Nullable android.app.PendingIntent) throws android.security.keystore.recovery.InternalRecoveryServiceException;
field public static final int RECOVERY_STATUS_PERMANENT_FAILURE = 3; // 0x3
field public static final int RECOVERY_STATUS_SYNCED = 0; // 0x0
field public static final int RECOVERY_STATUS_SYNC_IN_PROGRESS = 1; // 0x1
}
public class RecoverySession implements java.lang.AutoCloseable {
- method public void close();
- method public java.util.Map<java.lang.String, java.security.Key> recoverKeyChainSnapshot(byte[], java.util.List<android.security.keystore.recovery.WrappedApplicationKey>) throws android.security.keystore.recovery.DecryptionFailedException, android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.SessionExpiredException;
- method public byte[] start(java.lang.String, java.security.cert.CertPath, byte[], byte[], java.util.List<android.security.keystore.recovery.KeyChainProtectionParams>) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void close();
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @NonNull public java.util.Map<java.lang.String,java.security.Key> recoverKeyChainSnapshot(@NonNull byte[], @NonNull java.util.List<android.security.keystore.recovery.WrappedApplicationKey>) throws android.security.keystore.recovery.DecryptionFailedException, android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.SessionExpiredException;
+ method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) @NonNull public byte[] start(@NonNull String, @NonNull java.security.cert.CertPath, @NonNull byte[], @NonNull byte[], @NonNull java.util.List<android.security.keystore.recovery.KeyChainProtectionParams>) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
}
public class SessionExpiredException extends java.security.GeneralSecurityException {
- ctor public SessionExpiredException(java.lang.String);
+ ctor public SessionExpiredException(String);
}
public final class WrappedApplicationKey implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getAlias();
- method public byte[] getEncryptedKeyMaterial();
+ method @NonNull public String getAlias();
+ method @NonNull public byte[] getEncryptedKeyMaterial();
+ method @Nullable public byte[] getMetadata();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.security.keystore.recovery.WrappedApplicationKey> CREATOR;
}
public static class WrappedApplicationKey.Builder {
ctor public WrappedApplicationKey.Builder();
- method public android.security.keystore.recovery.WrappedApplicationKey build();
- method public android.security.keystore.recovery.WrappedApplicationKey.Builder setAlias(java.lang.String);
- method public android.security.keystore.recovery.WrappedApplicationKey.Builder setEncryptedKeyMaterial(byte[]);
+ method @NonNull public android.security.keystore.recovery.WrappedApplicationKey build();
+ method public android.security.keystore.recovery.WrappedApplicationKey.Builder setAlias(@NonNull String);
+ method public android.security.keystore.recovery.WrappedApplicationKey.Builder setEncryptedKeyMaterial(@NonNull byte[]);
+ method public android.security.keystore.recovery.WrappedApplicationKey.Builder setMetadata(@Nullable byte[]);
}
}
@@ -5384,16 +5485,38 @@
public abstract class AppPredictionService extends android.app.Service {
ctor public AppPredictionService();
- method public abstract void onAppTargetEvent(android.app.prediction.AppPredictionSessionId, android.app.prediction.AppTargetEvent);
+ method @MainThread public abstract void onAppTargetEvent(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull android.app.prediction.AppTargetEvent);
method public final android.os.IBinder onBind(android.content.Intent);
- method public void onCreatePredictionSession(android.app.prediction.AppPredictionContext, android.app.prediction.AppPredictionSessionId);
- method public void onDestroyPredictionSession(android.app.prediction.AppPredictionSessionId);
- method public abstract void onLocationShown(android.app.prediction.AppPredictionSessionId, java.lang.String, java.util.List<android.app.prediction.AppTargetId>);
- method public abstract void onRequestPredictionUpdate(android.app.prediction.AppPredictionSessionId);
- method public abstract void onSortAppTargets(android.app.prediction.AppPredictionSessionId, java.util.List<android.app.prediction.AppTarget>, android.os.CancellationSignal, java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
- method public void onStartPredictionUpdates();
- method public void onStopPredictionUpdates();
- method public final void updatePredictions(android.app.prediction.AppPredictionSessionId, java.util.List<android.app.prediction.AppTarget>);
+ method public void onCreatePredictionSession(@NonNull android.app.prediction.AppPredictionContext, @NonNull android.app.prediction.AppPredictionSessionId);
+ method @MainThread public void onDestroyPredictionSession(@NonNull android.app.prediction.AppPredictionSessionId);
+ method @MainThread public abstract void onLocationShown(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
+ method @MainThread public abstract void onRequestPredictionUpdate(@NonNull android.app.prediction.AppPredictionSessionId);
+ method @MainThread public abstract void onSortAppTargets(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
+ method @MainThread public void onStartPredictionUpdates();
+ method @MainThread public void onStopPredictionUpdates();
+ method public final void updatePredictions(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>);
+ }
+
+}
+
+package android.service.attention {
+
+ public abstract class AttentionService extends android.app.Service {
+ ctor public AttentionService();
+ method public final android.os.IBinder onBind(android.content.Intent);
+ method public abstract void onCancelAttentionCheck(int);
+ method public abstract void onCheckAttention(int, @NonNull android.service.attention.AttentionService.AttentionCallback);
+ field public static final int ATTENTION_FAILURE_PREEMPTED = 2; // 0x2
+ field public static final int ATTENTION_FAILURE_TIMED_OUT = 3; // 0x3
+ field public static final int ATTENTION_FAILURE_UNKNOWN = 4; // 0x4
+ field public static final int ATTENTION_SUCCESS_ABSENT = 0; // 0x0
+ field public static final int ATTENTION_SUCCESS_PRESENT = 1; // 0x1
+ field public static final String SERVICE_INTERFACE = "android.service.attention.AttentionService";
+ }
+
+ public static final class AttentionService.AttentionCallback {
+ method public void onFailure(int, int);
+ method public void onSuccess(int, int, long);
}
}
@@ -5402,13 +5525,13 @@
public abstract class AutofillFieldClassificationService extends android.app.Service {
method public android.os.IBinder onBind(android.content.Intent);
- method public float[][] onCalculateScores(java.util.List<android.view.autofill.AutofillValue>, java.util.List<java.lang.String>, java.util.List<java.lang.String>, java.lang.String, android.os.Bundle, java.util.Map, java.util.Map);
- method public deprecated float[][] onGetScores(java.lang.String, android.os.Bundle, java.util.List<android.view.autofill.AutofillValue>, java.util.List<java.lang.String>);
- field public static final java.lang.String REQUIRED_ALGORITHM_EDIT_DISTANCE = "EDIT_DISTANCE";
- field public static final java.lang.String REQUIRED_ALGORITHM_EXACT_MATCH = "EXACT_MATCH";
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.AutofillFieldClassificationService";
- field public static final java.lang.String SERVICE_META_DATA_KEY_AVAILABLE_ALGORITHMS = "android.autofill.field_classification.available_algorithms";
- field public static final java.lang.String SERVICE_META_DATA_KEY_DEFAULT_ALGORITHM = "android.autofill.field_classification.default_algorithm";
+ method @Nullable public float[][] onCalculateScores(@NonNull java.util.List<android.view.autofill.AutofillValue>, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<java.lang.String>, @Nullable String, @Nullable android.os.Bundle, @Nullable java.util.Map, @Nullable java.util.Map);
+ method @Deprecated @Nullable public float[][] onGetScores(@Nullable String, @Nullable android.os.Bundle, @NonNull java.util.List<android.view.autofill.AutofillValue>, @NonNull java.util.List<java.lang.String>);
+ field public static final String REQUIRED_ALGORITHM_EDIT_DISTANCE = "EDIT_DISTANCE";
+ field public static final String REQUIRED_ALGORITHM_EXACT_MATCH = "EXACT_MATCH";
+ field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillFieldClassificationService";
+ field public static final String SERVICE_META_DATA_KEY_AVAILABLE_ALGORITHMS = "android.autofill.field_classification.available_algorithms";
+ field public static final String SERVICE_META_DATA_KEY_DEFAULT_ALGORITHM = "android.autofill.field_classification.default_algorithm";
}
}
@@ -5417,25 +5540,25 @@
public abstract class AugmentedAutofillService extends android.app.Service {
ctor public AugmentedAutofillService();
- method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method protected void dump(java.io.PrintWriter, java.lang.String[]);
- method public void onFillRequest(android.service.autofill.augmented.FillRequest, android.os.CancellationSignal, android.service.autofill.augmented.FillController, android.service.autofill.augmented.FillCallback);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.augmented.AugmentedAutofillService";
+ method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method protected void dump(@NonNull java.io.PrintWriter, @NonNull String[]);
+ method public void onFillRequest(@NonNull android.service.autofill.augmented.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.augmented.FillController, @NonNull android.service.autofill.augmented.FillCallback);
+ field public static final String SERVICE_INTERFACE = "android.service.autofill.augmented.AugmentedAutofillService";
}
public final class FillCallback {
- method public void onSuccess(android.service.autofill.augmented.FillResponse);
+ method public void onSuccess(@Nullable android.service.autofill.augmented.FillResponse);
}
public final class FillController {
- method public void autofill(java.util.List<android.util.Pair<android.view.autofill.AutofillId, android.view.autofill.AutofillValue>>);
+ method public void autofill(@NonNull java.util.List<android.util.Pair<android.view.autofill.AutofillId,android.view.autofill.AutofillValue>>);
}
public final class FillRequest {
- method public android.content.ComponentName getActivityComponent();
- method public android.view.autofill.AutofillId getFocusedId();
- method public android.view.autofill.AutofillValue getFocusedValue();
- method public android.service.autofill.augmented.PresentationParams getPresentationParams();
+ method @NonNull public android.content.ComponentName getActivityComponent();
+ method @NonNull public android.view.autofill.AutofillId getFocusedId();
+ method @NonNull public android.view.autofill.AutofillValue getFocusedValue();
+ method @Nullable public android.service.autofill.augmented.PresentationParams getPresentationParams();
method public int getTaskId();
}
@@ -5448,21 +5571,21 @@
public static final class FillResponse.Builder {
ctor public FillResponse.Builder();
method public android.service.autofill.augmented.FillResponse build();
- method public android.service.autofill.augmented.FillResponse.Builder setFillWindow(android.service.autofill.augmented.FillWindow);
- method public android.service.autofill.augmented.FillResponse.Builder setIgnoredIds(java.util.List<android.view.autofill.AutofillId>);
+ method public android.service.autofill.augmented.FillResponse.Builder setFillWindow(@NonNull android.service.autofill.augmented.FillWindow);
+ method public android.service.autofill.augmented.FillResponse.Builder setIgnoredIds(@NonNull java.util.List<android.view.autofill.AutofillId>);
}
public final class FillWindow implements java.lang.AutoCloseable {
ctor public FillWindow();
method public void destroy();
- method public boolean update(android.service.autofill.augmented.PresentationParams.Area, android.view.View, long);
+ method public boolean update(@NonNull android.service.autofill.augmented.PresentationParams.Area, @NonNull android.view.View, long);
field public static final long FLAG_METADATA_ADDRESS = 1L; // 0x1L
}
public abstract class PresentationParams {
method public int getFlags();
- method public android.service.autofill.augmented.PresentationParams.Area getFullArea();
- method public android.service.autofill.augmented.PresentationParams.Area getSuggestionArea();
+ method @Nullable public android.service.autofill.augmented.PresentationParams.Area getFullArea();
+ method @Nullable public android.service.autofill.augmented.PresentationParams.Area getSuggestionArea();
field public static final int FLAG_HINT_GRAVITY_BOTTOM = 2; // 0x2
field public static final int FLAG_HINT_GRAVITY_LEFT = 4; // 0x4
field public static final int FLAG_HINT_GRAVITY_RIGHT = 8; // 0x8
@@ -5471,9 +5594,9 @@
field public static final int FLAG_HOST_SYSTEM = 32; // 0x20
}
- public static abstract class PresentationParams.Area {
- method public android.graphics.Rect getBounds();
- method public android.service.autofill.augmented.PresentationParams.Area getSubArea(android.graphics.Rect);
+ public abstract static class PresentationParams.Area {
+ method @NonNull public android.graphics.Rect getBounds();
+ method @Nullable public android.service.autofill.augmented.PresentationParams.Area getSubArea(@NonNull android.graphics.Rect);
}
}
@@ -5483,36 +5606,36 @@
public abstract class ApnService extends android.app.Service {
ctor public ApnService();
method public android.os.IBinder onBind(android.content.Intent);
- method public abstract java.util.List<android.content.ContentValues> onRestoreApns(int);
+ method @WorkerThread public abstract java.util.List<android.content.ContentValues> onRestoreApns(int);
}
}
package android.service.contentcapture {
- public final deprecated class ContentCaptureEventsRequest implements android.os.Parcelable {
- method public int describeContents();
- method public java.util.List<android.view.contentcapture.ContentCaptureEvent> getEvents();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.service.contentcapture.ContentCaptureEventsRequest> CREATOR;
+ @Deprecated public final class ContentCaptureEventsRequest implements android.os.Parcelable {
+ method @Deprecated public int describeContents();
+ method @Deprecated @NonNull public java.util.List<android.view.contentcapture.ContentCaptureEvent> getEvents();
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.service.contentcapture.ContentCaptureEventsRequest> CREATOR;
}
public abstract class ContentCaptureService extends android.app.Service {
ctor public ContentCaptureService();
- method public final java.util.Set<android.content.ComponentName> getContentCaptureDisabledActivities();
- method public final java.util.Set<java.lang.String> getContentCaptureDisabledPackages();
- method public void onActivitySnapshot(android.view.contentcapture.ContentCaptureSessionId, android.service.contentcapture.SnapshotData);
+ method @NonNull public final java.util.Set<android.content.ComponentName> getContentCaptureDisabledActivities();
+ method @NonNull public final java.util.Set<java.lang.String> getContentCaptureDisabledPackages();
+ method public void onActivitySnapshot(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.service.contentcapture.SnapshotData);
method public void onConnected();
- method public void onContentCaptureEvent(android.view.contentcapture.ContentCaptureSessionId, android.view.contentcapture.ContentCaptureEvent);
- method public deprecated void onContentCaptureEventsRequest(android.view.contentcapture.ContentCaptureSessionId, android.service.contentcapture.ContentCaptureEventsRequest);
- method public void onCreateContentCaptureSession(android.view.contentcapture.ContentCaptureContext, android.view.contentcapture.ContentCaptureSessionId);
- method public void onDestroyContentCaptureSession(android.view.contentcapture.ContentCaptureSessionId);
+ method public void onContentCaptureEvent(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.view.contentcapture.ContentCaptureEvent);
+ method @Deprecated public void onContentCaptureEventsRequest(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.service.contentcapture.ContentCaptureEventsRequest);
+ method public void onCreateContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext, @NonNull android.view.contentcapture.ContentCaptureSessionId);
+ method public void onDestroyContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureSessionId);
method public void onDisconnected();
- method public void onUserDataRemovalRequest(android.view.contentcapture.UserDataRemovalRequest);
- method public final void setActivityContentCaptureEnabled(android.content.ComponentName, boolean);
- method public final void setContentCaptureWhitelist(java.util.List<java.lang.String>, java.util.List<android.content.ComponentName>);
- method public final void setPackageContentCaptureEnabled(java.lang.String, boolean);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.contentcapture.ContentCaptureService";
+ method public void onUserDataRemovalRequest(@NonNull android.view.contentcapture.UserDataRemovalRequest);
+ method public final void setActivityContentCaptureEnabled(@NonNull android.content.ComponentName, boolean);
+ method public final void setContentCaptureWhitelist(@Nullable java.util.List<java.lang.String>, @Nullable java.util.List<android.content.ComponentName>);
+ method public final void setPackageContentCaptureEnabled(@NonNull String, boolean);
+ field public static final String SERVICE_INTERFACE = "android.service.contentcapture.ContentCaptureService";
}
public final class SnapshotData implements android.os.Parcelable {
@@ -5520,7 +5643,7 @@
method public android.app.assist.AssistContent getAssistContent();
method public android.os.Bundle getAssistData();
method public android.app.assist.AssistStructure getAssistStructure();
- method public void writeToParcel(android.os.Parcel, int);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.contentcapture.SnapshotData> CREATOR;
}
@@ -5530,11 +5653,11 @@
public abstract class ContentSuggestionsService extends android.app.Service {
ctor public ContentSuggestionsService();
- method public abstract void classifyContentSelections(android.app.contentsuggestions.ClassificationsRequest, android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
- method public abstract void notifyInteraction(java.lang.String, android.os.Bundle);
- method public abstract void processContextImage(int, android.graphics.Bitmap, android.os.Bundle);
- method public abstract void suggestContentSelections(android.app.contentsuggestions.SelectionsRequest, android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.contentsuggestions.ContentSuggestionsService";
+ method public abstract void classifyContentSelections(@NonNull android.app.contentsuggestions.ClassificationsRequest, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
+ method public abstract void notifyInteraction(@NonNull String, @NonNull android.os.Bundle);
+ method public abstract void processContextImage(int, @Nullable android.graphics.Bitmap, @NonNull android.os.Bundle);
+ method public abstract void suggestContentSelections(@NonNull android.app.contentsuggestions.SelectionsRequest, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
+ field public static final String SERVICE_INTERFACE = "android.service.contentsuggestions.ContentSuggestionsService";
}
}
@@ -5554,15 +5677,15 @@
public final class EuiccProfileInfo implements android.os.Parcelable {
method public int describeContents();
method public android.service.carrier.CarrierIdentifier getCarrierIdentifier();
- method public java.lang.String getIccid();
- method public java.lang.String getNickname();
- method public int getPolicyRules();
- method public int getProfileClass();
- method public java.lang.String getProfileName();
- method public java.lang.String getServiceProviderName();
- method public int getState();
- method public java.util.List<android.telephony.UiccAccessRule> getUiccAccessRules();
- method public boolean hasPolicyRule(int);
+ method public String getIccid();
+ method @Nullable public String getNickname();
+ method @android.service.euicc.EuiccProfileInfo.PolicyRule public int getPolicyRules();
+ method @android.service.euicc.EuiccProfileInfo.ProfileClass public int getProfileClass();
+ method public String getProfileName();
+ method public String getServiceProviderName();
+ method @android.service.euicc.EuiccProfileInfo.ProfileState public int getState();
+ method @Nullable public java.util.List<android.telephony.UiccAccessRule> getUiccAccessRules();
+ method public boolean hasPolicyRule(@android.service.euicc.EuiccProfileInfo.PolicyRule int);
method public boolean hasPolicyRules();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.euicc.EuiccProfileInfo> CREATOR;
@@ -5577,98 +5700,99 @@
}
public static final class EuiccProfileInfo.Builder {
- ctor public EuiccProfileInfo.Builder(java.lang.String);
+ ctor public EuiccProfileInfo.Builder(String);
ctor public EuiccProfileInfo.Builder(android.service.euicc.EuiccProfileInfo);
method public android.service.euicc.EuiccProfileInfo build();
method public android.service.euicc.EuiccProfileInfo.Builder setCarrierIdentifier(android.service.carrier.CarrierIdentifier);
- method public android.service.euicc.EuiccProfileInfo.Builder setIccid(java.lang.String);
- method public android.service.euicc.EuiccProfileInfo.Builder setNickname(java.lang.String);
- method public android.service.euicc.EuiccProfileInfo.Builder setPolicyRules(int);
- method public android.service.euicc.EuiccProfileInfo.Builder setProfileClass(int);
- method public android.service.euicc.EuiccProfileInfo.Builder setProfileName(java.lang.String);
- method public android.service.euicc.EuiccProfileInfo.Builder setServiceProviderName(java.lang.String);
- method public android.service.euicc.EuiccProfileInfo.Builder setState(int);
- method public android.service.euicc.EuiccProfileInfo.Builder setUiccAccessRule(java.util.List<android.telephony.UiccAccessRule>);
+ method public android.service.euicc.EuiccProfileInfo.Builder setIccid(String);
+ method public android.service.euicc.EuiccProfileInfo.Builder setNickname(String);
+ method public android.service.euicc.EuiccProfileInfo.Builder setPolicyRules(@android.service.euicc.EuiccProfileInfo.PolicyRule int);
+ method public android.service.euicc.EuiccProfileInfo.Builder setProfileClass(@android.service.euicc.EuiccProfileInfo.ProfileClass int);
+ method public android.service.euicc.EuiccProfileInfo.Builder setProfileName(String);
+ method public android.service.euicc.EuiccProfileInfo.Builder setServiceProviderName(String);
+ method public android.service.euicc.EuiccProfileInfo.Builder setState(@android.service.euicc.EuiccProfileInfo.ProfileState int);
+ method public android.service.euicc.EuiccProfileInfo.Builder setUiccAccessRule(@Nullable java.util.List<android.telephony.UiccAccessRule>);
}
- public static abstract class EuiccProfileInfo.PolicyRule implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @IntDef(flag=true, prefix={"POLICY_RULE_"}, value={android.service.euicc.EuiccProfileInfo.POLICY_RULE_DO_NOT_DISABLE, android.service.euicc.EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE, android.service.euicc.EuiccProfileInfo.POLICY_RULE_DELETE_AFTER_DISABLING}) public static @interface EuiccProfileInfo.PolicyRule {
}
- public static abstract class EuiccProfileInfo.ProfileClass implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @IntDef(prefix={"PROFILE_CLASS_"}, value={android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_TESTING, android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_PROVISIONING, android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_OPERATIONAL, 0xffffffff}) public static @interface EuiccProfileInfo.ProfileClass {
}
- public static abstract class EuiccProfileInfo.ProfileState implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @IntDef(prefix={"PROFILE_STATE_"}, value={android.service.euicc.EuiccProfileInfo.PROFILE_STATE_DISABLED, android.service.euicc.EuiccProfileInfo.PROFILE_STATE_ENABLED, 0xffffffff}) public static @interface EuiccProfileInfo.ProfileState {
}
public abstract class EuiccService extends android.app.Service {
ctor public EuiccService();
- method public android.os.IBinder onBind(android.content.Intent);
- method public abstract int onDeleteSubscription(int, java.lang.String);
- method public abstract android.service.euicc.DownloadSubscriptionResult onDownloadSubscription(int, android.telephony.euicc.DownloadableSubscription, boolean, boolean, android.os.Bundle);
- method public deprecated int onDownloadSubscription(int, android.telephony.euicc.DownloadableSubscription, boolean, boolean);
+ method @CallSuper public android.os.IBinder onBind(android.content.Intent);
+ method public abstract int onDeleteSubscription(int, String);
+ method public abstract android.service.euicc.DownloadSubscriptionResult onDownloadSubscription(int, @NonNull android.telephony.euicc.DownloadableSubscription, boolean, boolean, @Nullable android.os.Bundle);
+ method @Deprecated public int onDownloadSubscription(int, @NonNull android.telephony.euicc.DownloadableSubscription, boolean, boolean);
method public abstract int onEraseSubscriptions(int);
method public abstract android.service.euicc.GetDefaultDownloadableSubscriptionListResult onGetDefaultDownloadableSubscriptionList(int, boolean);
method public abstract android.service.euicc.GetDownloadableSubscriptionMetadataResult onGetDownloadableSubscriptionMetadata(int, android.telephony.euicc.DownloadableSubscription, boolean);
- method public abstract java.lang.String onGetEid(int);
- method public abstract android.telephony.euicc.EuiccInfo onGetEuiccInfo(int);
- method public abstract android.service.euicc.GetEuiccProfileInfoListResult onGetEuiccProfileInfoList(int);
- method public abstract int onGetOtaStatus(int);
+ method public abstract String onGetEid(int);
+ method @NonNull public abstract android.telephony.euicc.EuiccInfo onGetEuiccInfo(int);
+ method @NonNull public abstract android.service.euicc.GetEuiccProfileInfoListResult onGetEuiccProfileInfoList(int);
+ method @android.telephony.euicc.EuiccManager.OtaStatus public abstract int onGetOtaStatus(int);
method public abstract int onRetainSubscriptionsForFactoryReset(int);
method public abstract void onStartOtaIfNecessary(int, android.service.euicc.EuiccService.OtaStatusChangedCallback);
- method public abstract int onSwitchToSubscription(int, java.lang.String, boolean);
- method public abstract int onUpdateSubscriptionNickname(int, java.lang.String, java.lang.String);
- field public static final java.lang.String ACTION_BIND_CARRIER_PROVISIONING_SERVICE = "android.service.euicc.action.BIND_CARRIER_PROVISIONING_SERVICE";
- field public static final java.lang.String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
- field public static final java.lang.String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
- field public static final deprecated java.lang.String ACTION_RESOLVE_CONFIRMATION_CODE = "android.service.euicc.action.RESOLVE_CONFIRMATION_CODE";
- field public static final java.lang.String ACTION_RESOLVE_DEACTIVATE_SIM = "android.service.euicc.action.RESOLVE_DEACTIVATE_SIM";
- field public static final java.lang.String ACTION_RESOLVE_NO_PRIVILEGES = "android.service.euicc.action.RESOLVE_NO_PRIVILEGES";
- field public static final java.lang.String ACTION_RESOLVE_RESOLVABLE_ERRORS = "android.service.euicc.action.RESOLVE_RESOLVABLE_ERRORS";
- field public static final java.lang.String CATEGORY_EUICC_UI = "android.service.euicc.category.EUICC_UI";
- field public static final java.lang.String EUICC_SERVICE_INTERFACE = "android.service.euicc.EuiccService";
- field public static final java.lang.String EXTRA_RESOLUTION_ALLOW_POLICY_RULES = "android.service.euicc.extra.RESOLUTION_ALLOW_POLICY_RULES";
- field public static final java.lang.String EXTRA_RESOLUTION_CALLING_PACKAGE = "android.service.euicc.extra.RESOLUTION_CALLING_PACKAGE";
- field public static final java.lang.String EXTRA_RESOLUTION_CONFIRMATION_CODE = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE";
- field public static final java.lang.String EXTRA_RESOLUTION_CONFIRMATION_CODE_RETRIED = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE_RETRIED";
- field public static final java.lang.String EXTRA_RESOLUTION_CONSENT = "android.service.euicc.extra.RESOLUTION_CONSENT";
- field public static final java.lang.String EXTRA_RESOLVABLE_ERRORS = "android.service.euicc.extra.RESOLVABLE_ERRORS";
+ method public abstract int onSwitchToSubscription(int, @Nullable String, boolean);
+ method public abstract int onUpdateSubscriptionNickname(int, String, String);
+ field public static final String ACTION_BIND_CARRIER_PROVISIONING_SERVICE = "android.service.euicc.action.BIND_CARRIER_PROVISIONING_SERVICE";
+ field public static final String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
+ field public static final String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
+ field @Deprecated public static final String ACTION_RESOLVE_CONFIRMATION_CODE = "android.service.euicc.action.RESOLVE_CONFIRMATION_CODE";
+ field public static final String ACTION_RESOLVE_DEACTIVATE_SIM = "android.service.euicc.action.RESOLVE_DEACTIVATE_SIM";
+ field public static final String ACTION_RESOLVE_NO_PRIVILEGES = "android.service.euicc.action.RESOLVE_NO_PRIVILEGES";
+ field public static final String ACTION_RESOLVE_RESOLVABLE_ERRORS = "android.service.euicc.action.RESOLVE_RESOLVABLE_ERRORS";
+ field public static final String CATEGORY_EUICC_UI = "android.service.euicc.category.EUICC_UI";
+ field public static final String EUICC_SERVICE_INTERFACE = "android.service.euicc.EuiccService";
+ field public static final String EXTRA_RESOLUTION_ALLOW_POLICY_RULES = "android.service.euicc.extra.RESOLUTION_ALLOW_POLICY_RULES";
+ field public static final String EXTRA_RESOLUTION_CALLING_PACKAGE = "android.service.euicc.extra.RESOLUTION_CALLING_PACKAGE";
+ field public static final String EXTRA_RESOLUTION_CARD_ID = "android.service.euicc.extra.RESOLUTION_CARD_ID";
+ field public static final String EXTRA_RESOLUTION_CONFIRMATION_CODE = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE";
+ field public static final String EXTRA_RESOLUTION_CONFIRMATION_CODE_RETRIED = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE_RETRIED";
+ field public static final String EXTRA_RESOLUTION_CONSENT = "android.service.euicc.extra.RESOLUTION_CONSENT";
+ field public static final String EXTRA_RESOLVABLE_ERRORS = "android.service.euicc.extra.RESOLVABLE_ERRORS";
field public static final int RESOLVABLE_ERROR_CONFIRMATION_CODE = 1; // 0x1
field public static final int RESOLVABLE_ERROR_POLICY_RULES = 2; // 0x2
field public static final int RESULT_FIRST_USER = 1; // 0x1
field public static final int RESULT_MUST_DEACTIVATE_SIM = -1; // 0xffffffff
- field public static final deprecated int RESULT_NEED_CONFIRMATION_CODE = -2; // 0xfffffffe
+ field @Deprecated public static final int RESULT_NEED_CONFIRMATION_CODE = -2; // 0xfffffffe
field public static final int RESULT_OK = 0; // 0x0
field public static final int RESULT_RESOLVABLE_ERRORS = -2; // 0xfffffffe
}
- public static abstract class EuiccService.OtaStatusChangedCallback {
+ public abstract static class EuiccService.OtaStatusChangedCallback {
ctor public EuiccService.OtaStatusChangedCallback();
method public abstract void onOtaStatusChanged(int);
}
public final class GetDefaultDownloadableSubscriptionListResult implements android.os.Parcelable {
- ctor public GetDefaultDownloadableSubscriptionListResult(int, android.telephony.euicc.DownloadableSubscription[]);
+ ctor public GetDefaultDownloadableSubscriptionListResult(int, @Nullable android.telephony.euicc.DownloadableSubscription[]);
method public int describeContents();
- method public java.util.List<android.telephony.euicc.DownloadableSubscription> getDownloadableSubscriptions();
+ method @Nullable public java.util.List<android.telephony.euicc.DownloadableSubscription> getDownloadableSubscriptions();
method public int getResult();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.euicc.GetDefaultDownloadableSubscriptionListResult> CREATOR;
}
public final class GetDownloadableSubscriptionMetadataResult implements android.os.Parcelable {
- ctor public GetDownloadableSubscriptionMetadataResult(int, android.telephony.euicc.DownloadableSubscription);
+ ctor public GetDownloadableSubscriptionMetadataResult(int, @Nullable android.telephony.euicc.DownloadableSubscription);
method public int describeContents();
- method public android.telephony.euicc.DownloadableSubscription getDownloadableSubscription();
+ method @Nullable public android.telephony.euicc.DownloadableSubscription getDownloadableSubscription();
method public int getResult();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.euicc.GetDownloadableSubscriptionMetadataResult> CREATOR;
}
public final class GetEuiccProfileInfoListResult implements android.os.Parcelable {
- ctor public GetEuiccProfileInfoListResult(int, android.service.euicc.EuiccProfileInfo[], boolean);
+ ctor public GetEuiccProfileInfoListResult(int, @Nullable android.service.euicc.EuiccProfileInfo[], boolean);
method public int describeContents();
method public boolean getIsRemovable();
- method public java.util.List<android.service.euicc.EuiccProfileInfo> getProfiles();
+ method @Nullable public java.util.List<android.service.euicc.EuiccProfileInfo> getProfiles();
method public int getResult();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.euicc.GetEuiccProfileInfoListResult> CREATOR;
@@ -5679,40 +5803,40 @@
package android.service.notification {
public final class Adjustment implements android.os.Parcelable {
- ctor public Adjustment(java.lang.String, java.lang.String, android.os.Bundle, java.lang.CharSequence, int);
+ ctor public Adjustment(String, String, android.os.Bundle, CharSequence, int);
ctor protected Adjustment(android.os.Parcel);
method public int describeContents();
- method public java.lang.CharSequence getExplanation();
- method public java.lang.String getKey();
- method public java.lang.String getPackage();
+ method public CharSequence getExplanation();
+ method public String getKey();
+ method public String getPackage();
method public android.os.Bundle getSignals();
method public int getUser();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.notification.Adjustment> CREATOR;
- field public static final java.lang.String KEY_IMPORTANCE = "key_importance";
- field public static final java.lang.String KEY_PEOPLE = "key_people";
- field public static final java.lang.String KEY_SMART_ACTIONS = "key_smart_actions";
- field public static final java.lang.String KEY_SMART_REPLIES = "key_smart_replies";
- field public static final java.lang.String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
- field public static final java.lang.String KEY_USER_SENTIMENT = "key_user_sentiment";
+ field public static final String KEY_IMPORTANCE = "key_importance";
+ field public static final String KEY_PEOPLE = "key_people";
+ field public static final String KEY_SMART_ACTIONS = "key_smart_actions";
+ field public static final String KEY_SMART_REPLIES = "key_smart_replies";
+ field public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
+ field public static final String KEY_USER_SENTIMENT = "key_user_sentiment";
}
public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService {
ctor public NotificationAssistantService();
method public final void adjustNotification(android.service.notification.Adjustment);
method public final void adjustNotifications(java.util.List<android.service.notification.Adjustment>);
- method public void onActionInvoked(java.lang.String, android.app.Notification.Action, int);
+ method public void onActionInvoked(@NonNull String, @NonNull android.app.Notification.Action, int);
method public final android.os.IBinder onBind(android.content.Intent);
- method public void onNotificationDirectReplied(java.lang.String);
+ method public void onNotificationDirectReplied(@NonNull String);
method public android.service.notification.Adjustment onNotificationEnqueued(android.service.notification.StatusBarNotification);
method public android.service.notification.Adjustment onNotificationEnqueued(android.service.notification.StatusBarNotification, android.app.NotificationChannel);
- method public void onNotificationExpansionChanged(java.lang.String, boolean, boolean);
+ method public void onNotificationExpansionChanged(@NonNull String, boolean, boolean);
method public void onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap, android.service.notification.NotificationStats, int);
- method public abstract void onNotificationSnoozedUntilContext(android.service.notification.StatusBarNotification, java.lang.String);
+ method public abstract void onNotificationSnoozedUntilContext(android.service.notification.StatusBarNotification, String);
method public void onNotificationsSeen(java.util.List<java.lang.String>);
- method public void onSuggestedReplySent(java.lang.String, java.lang.CharSequence, int);
- method public final void unsnoozeNotification(java.lang.String);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService";
+ method public void onSuggestedReplySent(@NonNull String, @NonNull CharSequence, int);
+ method public final void unsnoozeNotification(String);
+ field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService";
field public static final int SOURCE_FROM_APP = 0; // 0x0
field public static final int SOURCE_FROM_ASSISTANT = 1; // 0x1
}
@@ -5750,12 +5874,12 @@
}
public final class SnoozeCriterion implements android.os.Parcelable {
- ctor public SnoozeCriterion(java.lang.String, java.lang.CharSequence, java.lang.CharSequence);
+ ctor public SnoozeCriterion(String, CharSequence, CharSequence);
ctor protected SnoozeCriterion(android.os.Parcel);
method public int describeContents();
- method public java.lang.CharSequence getConfirmation();
- method public java.lang.CharSequence getExplanation();
- method public java.lang.String getId();
+ method public CharSequence getConfirmation();
+ method public CharSequence getExplanation();
+ method public String getId();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.notification.SnoozeCriterion> CREATOR;
}
@@ -5765,11 +5889,11 @@
package android.service.oemlock {
public class OemLockManager {
- method public java.lang.String getLockName();
- method public boolean isOemUnlockAllowedByCarrier();
- method public boolean isOemUnlockAllowedByUser();
- method public void setOemUnlockAllowedByCarrier(boolean, byte[]);
- method public void setOemUnlockAllowedByUser(boolean);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) @Nullable public String getLockName();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public boolean isOemUnlockAllowedByCarrier();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USER_OEM_UNLOCK_STATE) public boolean isOemUnlockAllowedByUser();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public void setOemUnlockAllowedByCarrier(boolean, @Nullable byte[]);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USER_OEM_UNLOCK_STATE) public void setOemUnlockAllowedByUser(boolean);
}
}
@@ -5777,20 +5901,20 @@
package android.service.persistentdata {
public class PersistentDataBlockManager {
- method public int getDataBlockSize();
- method public int getFlashLockState();
+ method @RequiresPermission("android.permission.ACCESS_PDB_STATE") public int getDataBlockSize();
+ method @RequiresPermission(anyOf={android.Manifest.permission.READ_OEM_UNLOCK_STATE, "android.permission.OEM_UNLOCK_STATE"}) @android.service.persistentdata.PersistentDataBlockManager.FlashLockState public int getFlashLockState();
method public long getMaximumDataBlockSize();
- method public deprecated boolean getOemUnlockEnabled();
+ method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_OEM_UNLOCK_STATE, "android.permission.OEM_UNLOCK_STATE"}) public boolean getOemUnlockEnabled();
method public byte[] read();
- method public deprecated void setOemUnlockEnabled(boolean);
- method public void wipe();
+ method @Deprecated @RequiresPermission("android.permission.OEM_UNLOCK_STATE") public void setOemUnlockEnabled(boolean);
+ method @RequiresPermission("android.permission.OEM_UNLOCK_STATE") public void wipe();
method public int write(byte[]);
field public static final int FLASH_LOCK_LOCKED = 1; // 0x1
field public static final int FLASH_LOCK_UNKNOWN = -1; // 0xffffffff
field public static final int FLASH_LOCK_UNLOCKED = 0; // 0x0
}
- public static abstract class PersistentDataBlockManager.FlashLockState implements java.lang.annotation.Annotation {
+ @IntDef(prefix={"FLASH_LOCK_"}, value={android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_UNKNOWN, android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_LOCKED, android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_UNLOCKED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PersistentDataBlockManager.FlashLockState {
}
}
@@ -5798,7 +5922,7 @@
package android.service.quicksettings {
public class TileService extends android.app.Service {
- method public final void setStatusIcon(android.graphics.drawable.Icon, java.lang.String);
+ method public final void setStatusIcon(android.graphics.drawable.Icon, String);
}
}
@@ -5810,9 +5934,9 @@
method public android.os.IBinder onBind(android.content.Intent);
method public void onPredictSharingProbabilities(java.util.List<android.service.resolver.ResolverTarget>);
method public void onTrainRankingModel(java.util.List<android.service.resolver.ResolverTarget>, int);
- field public static final java.lang.String BIND_PERMISSION = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
- field public static final java.lang.String HOLD_PERMISSION = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.resolver.ResolverRankerService";
+ field public static final String BIND_PERMISSION = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
+ field public static final String HOLD_PERMISSION = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
+ field public static final String SERVICE_INTERFACE = "android.service.resolver.ResolverRankerService";
}
public final class ResolverTarget implements android.os.Parcelable {
@@ -5840,23 +5964,23 @@
method public int describeContents();
method public int getFlags();
method public android.graphics.drawable.Icon getIcon();
- method public java.lang.String getId();
+ method public String getId();
method public android.app.PendingIntent getPendingIntent();
- method public java.lang.CharSequence getSummary();
- method public java.lang.CharSequence getTitle();
+ method public CharSequence getSummary();
+ method public CharSequence getTitle();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.settings.suggestions.Suggestion> CREATOR;
field public static final int FLAG_HAS_BUTTON = 1; // 0x1
}
public static class Suggestion.Builder {
- ctor public Suggestion.Builder(java.lang.String);
+ ctor public Suggestion.Builder(String);
method public android.service.settings.suggestions.Suggestion build();
method public android.service.settings.suggestions.Suggestion.Builder setFlags(int);
method public android.service.settings.suggestions.Suggestion.Builder setIcon(android.graphics.drawable.Icon);
method public android.service.settings.suggestions.Suggestion.Builder setPendingIntent(android.app.PendingIntent);
- method public android.service.settings.suggestions.Suggestion.Builder setSummary(java.lang.CharSequence);
- method public android.service.settings.suggestions.Suggestion.Builder setTitle(java.lang.CharSequence);
+ method public android.service.settings.suggestions.Suggestion.Builder setSummary(CharSequence);
+ method public android.service.settings.suggestions.Suggestion.Builder setTitle(CharSequence);
}
public abstract class SuggestionService extends android.app.Service {
@@ -5873,8 +5997,8 @@
public abstract class FinancialSmsService extends android.app.Service {
method public android.os.IBinder onBind(android.content.Intent);
- method public abstract android.database.CursorWindow onGetSmsMessages(android.os.Bundle);
- field public static final java.lang.String ACTION_FINANCIAL_SERVICE_INTENT = "android.service.sms.action.FINANCIAL_SERVICE_INTENT";
+ method @Nullable public abstract android.database.CursorWindow onGetSmsMessages(@NonNull android.os.Bundle);
+ field public static final String ACTION_FINANCIAL_SERVICE_INTENT = "android.service.sms.action.FINANCIAL_SERVICE_INTENT";
}
}
@@ -5884,22 +6008,22 @@
public abstract class TextClassifierService extends android.app.Service {
ctor public TextClassifierService();
method public final android.view.textclassifier.TextClassifier getLocalTextClassifier();
- method public final android.os.IBinder onBind(android.content.Intent);
- method public abstract void onClassifyText(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.TextClassification.Request, android.os.CancellationSignal, android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextClassification>);
- method public void onCreateTextClassificationSession(android.view.textclassifier.TextClassificationContext, android.view.textclassifier.TextClassificationSessionId);
- method public void onDestroyTextClassificationSession(android.view.textclassifier.TextClassificationSessionId);
- method public void onDetectLanguage(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.TextLanguage.Request, android.os.CancellationSignal, android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLanguage>);
- method public abstract void onGenerateLinks(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.TextLinks.Request, android.os.CancellationSignal, android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLinks>);
- method public deprecated void onSelectionEvent(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.SelectionEvent);
- method public void onSuggestConversationActions(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.ConversationActions.Request, android.os.CancellationSignal, android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.ConversationActions>);
- method public abstract void onSuggestSelection(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.TextSelection.Request, android.os.CancellationSignal, android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextSelection>);
- method public void onTextClassifierEvent(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.TextClassifierEvent);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.textclassifier.TextClassifierService";
+ method @Nullable public final android.os.IBinder onBind(android.content.Intent);
+ method public abstract void onClassifyText(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassification.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextClassification>);
+ method public void onCreateTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext, @NonNull android.view.textclassifier.TextClassificationSessionId);
+ method public void onDestroyTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationSessionId);
+ method public void onDetectLanguage(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLanguage.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLanguage>);
+ method public abstract void onGenerateLinks(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLinks.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLinks>);
+ method @Deprecated public void onSelectionEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.SelectionEvent);
+ method public void onSuggestConversationActions(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.ConversationActions.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.ConversationActions>);
+ method public abstract void onSuggestSelection(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextSelection.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextSelection>);
+ method public void onTextClassifierEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassifierEvent);
+ field public static final String SERVICE_INTERFACE = "android.service.textclassifier.TextClassifierService";
}
- public static abstract interface TextClassifierService.Callback<T> {
- method public abstract void onFailure(java.lang.CharSequence);
- method public abstract void onSuccess(T);
+ public static interface TextClassifierService.Callback<T> {
+ method public void onFailure(CharSequence);
+ method public void onSuccess(T);
}
}
@@ -5909,8 +6033,8 @@
public class TrustAgentService extends android.app.Service {
ctor public TrustAgentService();
method public final void addEscrowToken(byte[], android.os.UserHandle);
- method public final deprecated void grantTrust(java.lang.CharSequence, long, boolean);
- method public final void grantTrust(java.lang.CharSequence, long, int);
+ method @Deprecated public final void grantTrust(CharSequence, long, boolean);
+ method public final void grantTrust(CharSequence, long, int);
method public final void isEscrowTokenActive(long, android.os.UserHandle);
method public final android.os.IBinder onBind(android.content.Intent);
method public boolean onConfigure(java.util.List<android.os.PersistableBundle>);
@@ -5925,14 +6049,14 @@
method public final void removeEscrowToken(long, android.os.UserHandle);
method public final void revokeTrust();
method public final void setManagingTrust(boolean);
- method public final void showKeyguardErrorMessage(java.lang.CharSequence);
+ method public final void showKeyguardErrorMessage(@NonNull CharSequence);
method public final void unlockUserWithToken(long, byte[], android.os.UserHandle);
field public static final int FLAG_GRANT_TRUST_DISMISS_KEYGUARD = 2; // 0x2
field public static final int FLAG_GRANT_TRUST_INITIATED_BY_USER = 1; // 0x1
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.trust.TrustAgentService";
+ field public static final String SERVICE_INTERFACE = "android.service.trust.TrustAgentService";
field public static final int TOKEN_STATE_ACTIVE = 1; // 0x1
field public static final int TOKEN_STATE_INACTIVE = 0; // 0x0
- field public static final java.lang.String TRUST_AGENT_META_DATA = "android.service.trust.trustagent";
+ field public static final String TRUST_AGENT_META_DATA = "android.service.trust.trustagent";
}
}
@@ -5948,55 +6072,55 @@
package android.telecom {
- public deprecated class AudioState implements android.os.Parcelable {
- ctor public AudioState(boolean, int, int);
- ctor public AudioState(android.telecom.AudioState);
- ctor public AudioState(android.telecom.CallAudioState);
- method public static java.lang.String audioRouteToString(int);
- method public int describeContents();
- method public int getRoute();
- method public int getSupportedRouteMask();
- method public boolean isMuted();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.telecom.AudioState> CREATOR;
- field public static final int ROUTE_BLUETOOTH = 2; // 0x2
- field public static final int ROUTE_EARPIECE = 1; // 0x1
- field public static final int ROUTE_SPEAKER = 8; // 0x8
- field public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
- field public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
+ @Deprecated public class AudioState implements android.os.Parcelable {
+ ctor @Deprecated public AudioState(boolean, int, int);
+ ctor @Deprecated public AudioState(android.telecom.AudioState);
+ ctor @Deprecated public AudioState(android.telecom.CallAudioState);
+ method @Deprecated public static String audioRouteToString(int);
+ method @Deprecated public int describeContents();
+ method @Deprecated public int getRoute();
+ method @Deprecated public int getSupportedRouteMask();
+ method @Deprecated public boolean isMuted();
+ method @Deprecated public void writeToParcel(android.os.Parcel, int);
+ field @Deprecated public static final android.os.Parcelable.Creator<android.telecom.AudioState> CREATOR;
+ field @Deprecated public static final int ROUTE_BLUETOOTH = 2; // 0x2
+ field @Deprecated public static final int ROUTE_EARPIECE = 1; // 0x1
+ field @Deprecated public static final int ROUTE_SPEAKER = 8; // 0x8
+ field @Deprecated public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
+ field @Deprecated public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
}
public final class Call {
- method public deprecated void addListener(android.telecom.Call.Listener);
- method public deprecated void removeListener(android.telecom.Call.Listener);
- field public static final deprecated int STATE_PRE_DIAL_WAIT = 8; // 0x8
+ method @Deprecated public void addListener(android.telecom.Call.Listener);
+ method @Deprecated public void removeListener(android.telecom.Call.Listener);
+ field @Deprecated public static final int STATE_PRE_DIAL_WAIT = 8; // 0x8
}
- public static abstract deprecated class Call.Listener extends android.telecom.Call.Callback {
- ctor public Call.Listener();
+ @Deprecated public abstract static class Call.Listener extends android.telecom.Call.Callback {
+ ctor @Deprecated public Call.Listener();
}
public abstract class Conference extends android.telecom.Conferenceable {
- method public final deprecated android.telecom.AudioState getAudioState();
- method public final deprecated long getConnectTimeMillis();
+ method @Deprecated public final android.telecom.AudioState getAudioState();
+ method @Deprecated public final long getConnectTimeMillis();
method public android.telecom.Connection getPrimaryConnection();
- method public deprecated void onAudioStateChanged(android.telecom.AudioState);
- method public final deprecated void setConnectTimeMillis(long);
+ method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
+ method @Deprecated public final void setConnectTimeMillis(long);
}
public abstract class Connection extends android.telecom.Conferenceable {
- method public final deprecated android.telecom.AudioState getAudioState();
- method public deprecated void onAudioStateChanged(android.telecom.AudioState);
+ method @Deprecated public final android.telecom.AudioState getAudioState();
+ method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
}
public abstract class InCallService extends android.app.Service {
- method public deprecated android.telecom.Phone getPhone();
- method public deprecated void onPhoneCreated(android.telecom.Phone);
- method public deprecated void onPhoneDestroyed(android.telecom.Phone);
+ method @Deprecated public android.telecom.Phone getPhone();
+ method @Deprecated public void onPhoneCreated(android.telecom.Phone);
+ method @Deprecated public void onPhoneDestroyed(android.telecom.Phone);
}
public class ParcelableCallAnalytics implements android.os.Parcelable {
- ctor public ParcelableCallAnalytics(long, long, int, boolean, boolean, int, int, boolean, java.lang.String, boolean, java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent>, java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming>);
+ ctor public ParcelableCallAnalytics(long, long, int, boolean, boolean, int, int, boolean, String, boolean, java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent>, java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming>);
ctor public ParcelableCallAnalytics(android.os.Parcel);
method public java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> analyticsEvents();
method public int describeContents();
@@ -6004,7 +6128,7 @@
method public int getCallTechnologies();
method public int getCallTerminationCode();
method public int getCallType();
- method public java.lang.String getConnectionService();
+ method public String getConnectionService();
method public java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming> getEventTimings();
method public long getStartTimeMillis();
method public boolean isAdditionalCall();
@@ -6093,27 +6217,27 @@
field public static final int UNHOLD_TIMING = 4; // 0x4
}
- public final deprecated class Phone {
- method public void addListener(android.telecom.Phone.Listener);
- method public boolean canAddCall();
- method public deprecated android.telecom.AudioState getAudioState();
- method public android.telecom.CallAudioState getCallAudioState();
- method public java.util.List<android.telecom.Call> getCalls();
- method public void removeListener(android.telecom.Phone.Listener);
- method public void requestBluetoothAudio(java.lang.String);
- method public void setAudioRoute(int);
- method public void setMuted(boolean);
+ @Deprecated public final class Phone {
+ method @Deprecated public void addListener(android.telecom.Phone.Listener);
+ method @Deprecated public boolean canAddCall();
+ method @Deprecated public android.telecom.AudioState getAudioState();
+ method @Deprecated public android.telecom.CallAudioState getCallAudioState();
+ method @Deprecated public java.util.List<android.telecom.Call> getCalls();
+ method @Deprecated public void removeListener(android.telecom.Phone.Listener);
+ method @Deprecated public void requestBluetoothAudio(String);
+ method @Deprecated public void setAudioRoute(int);
+ method @Deprecated public void setMuted(boolean);
}
- public static abstract class Phone.Listener {
- ctor public Phone.Listener();
- method public deprecated void onAudioStateChanged(android.telecom.Phone, android.telecom.AudioState);
- method public void onBringToForeground(android.telecom.Phone, boolean);
- method public void onCallAdded(android.telecom.Phone, android.telecom.Call);
- method public void onCallAudioStateChanged(android.telecom.Phone, android.telecom.CallAudioState);
- method public void onCallRemoved(android.telecom.Phone, android.telecom.Call);
- method public void onCanAddCallChanged(android.telecom.Phone, boolean);
- method public void onSilenceRinger(android.telecom.Phone);
+ @Deprecated public abstract static class Phone.Listener {
+ ctor @Deprecated public Phone.Listener();
+ method @Deprecated public void onAudioStateChanged(android.telecom.Phone, android.telecom.AudioState);
+ method @Deprecated public void onBringToForeground(android.telecom.Phone, boolean);
+ method @Deprecated public void onCallAdded(android.telecom.Phone, android.telecom.Call);
+ method @Deprecated public void onCallAudioStateChanged(android.telecom.Phone, android.telecom.CallAudioState);
+ method @Deprecated public void onCallRemoved(android.telecom.Phone, android.telecom.Call);
+ method @Deprecated public void onCanAddCallChanged(android.telecom.Phone, boolean);
+ method @Deprecated public void onSilenceRinger(android.telecom.Phone);
}
public final class PhoneAccount implements android.os.Parcelable {
@@ -6126,25 +6250,25 @@
public class PhoneAccountSuggestionService extends android.app.Service {
ctor public PhoneAccountSuggestionService();
- method public void onAccountSuggestionRequest(java.lang.String);
+ method public void onAccountSuggestionRequest(@NonNull String);
method public android.os.IBinder onBind(android.content.Intent);
- method public final void suggestPhoneAccounts(java.lang.String, java.util.List<android.telecom.PhoneAccountSuggestion>);
- field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.PhoneAccountSuggestionService";
+ method public final void suggestPhoneAccounts(@NonNull String, @NonNull java.util.List<android.telecom.PhoneAccountSuggestion>);
+ field public static final String SERVICE_INTERFACE = "android.telecom.PhoneAccountSuggestionService";
}
public final class RemoteConference {
- method public deprecated void setAudioState(android.telecom.AudioState);
+ method @Deprecated public void setAudioState(android.telecom.AudioState);
}
public final class RemoteConnection {
- method public deprecated void setAudioState(android.telecom.AudioState);
+ method @Deprecated public void setAudioState(android.telecom.AudioState);
}
public final class StatusHints implements android.os.Parcelable {
- ctor public deprecated StatusHints(android.content.ComponentName, java.lang.CharSequence, int, android.os.Bundle);
- method public deprecated android.graphics.drawable.Drawable getIcon(android.content.Context);
- method public deprecated int getIconResId();
- method public deprecated android.content.ComponentName getPackageName();
+ ctor @Deprecated public StatusHints(android.content.ComponentName, CharSequence, int, android.os.Bundle);
+ method @Deprecated public android.graphics.drawable.Drawable getIcon(android.content.Context);
+ method @Deprecated public int getIconResId();
+ method @Deprecated public android.content.ComponentName getPackageName();
}
public final class TelecomAnalytics implements android.os.Parcelable {
@@ -6159,7 +6283,7 @@
public static final class TelecomAnalytics.SessionTiming implements android.os.Parcelable {
ctor public TelecomAnalytics.SessionTiming(int, long);
method public int describeContents();
- method public java.lang.Integer getKey();
+ method public Integer getKey();
method public long getTime();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics.SessionTiming> CREATOR;
@@ -6184,25 +6308,25 @@
public class TelecomManager {
method public void addNewUnknownCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
- method public deprecated void clearAccounts();
+ method @Deprecated public void clearAccounts();
method public void clearPhoneAccounts();
- method public android.telecom.TelecomAnalytics dumpAnalytics();
- method public void enablePhoneAccount(android.telecom.PhoneAccountHandle, boolean);
+ method @RequiresPermission(android.Manifest.permission.DUMP) public android.telecom.TelecomAnalytics dumpAnalytics();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void enablePhoneAccount(android.telecom.PhoneAccountHandle, boolean);
method public java.util.List<android.telecom.PhoneAccountHandle> getAllPhoneAccountHandles();
method public java.util.List<android.telecom.PhoneAccount> getAllPhoneAccounts();
method public int getAllPhoneAccountsCount();
method public int getCallState();
method public android.telecom.PhoneAccountHandle getConnectionManager();
- method public int getCurrentTtyMode();
- method public deprecated android.content.ComponentName getDefaultPhoneApp();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCurrentTtyMode();
+ method @Deprecated public android.content.ComponentName getDefaultPhoneApp();
method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsForPackage();
- method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsSupportingScheme(java.lang.String);
- method public boolean isInEmergencyCall();
- method public boolean isRinging();
- method public deprecated boolean setDefaultDialer(java.lang.String);
- field public static final java.lang.String EXTRA_CALL_BACK_INTENT = "android.telecom.extra.CALL_BACK_INTENT";
- field public static final java.lang.String EXTRA_CLEAR_MISSED_CALLS_INTENT = "android.telecom.extra.CLEAR_MISSED_CALLS_INTENT";
- field public static final java.lang.String EXTRA_CONNECTION_SERVICE = "android.telecom.extra.CONNECTION_SERVICE";
+ method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsSupportingScheme(String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall();
+ method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
+ method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.WRITE_SECURE_SETTINGS}) public boolean setDefaultDialer(String);
+ field public static final String EXTRA_CALL_BACK_INTENT = "android.telecom.extra.CALL_BACK_INTENT";
+ field public static final String EXTRA_CLEAR_MISSED_CALLS_INTENT = "android.telecom.extra.CLEAR_MISSED_CALLS_INTENT";
+ field public static final String EXTRA_CONNECTION_SERVICE = "android.telecom.extra.CONNECTION_SERVICE";
field public static final int TTY_MODE_FULL = 1; // 0x1
field public static final int TTY_MODE_HCO = 2; // 0x2
field public static final int TTY_MODE_OFF = 0; // 0x0
@@ -6253,10 +6377,34 @@
}
public class CarrierConfigManager {
- method public static android.os.PersistableBundle getDefaultConfig();
- method public void overrideConfig(int, android.os.PersistableBundle);
- method public void updateConfigForPhoneId(int, java.lang.String);
- field public static final java.lang.String KEY_CARRIER_SETUP_APP_STRING = "carrier_setup_app_string";
+ method @NonNull public static android.os.PersistableBundle getDefaultConfig();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void overrideConfig(int, @Nullable android.os.PersistableBundle);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void updateConfigForPhoneId(int, String);
+ field public static final String KEY_CARRIER_SETUP_APP_STRING = "carrier_setup_app_string";
+ }
+
+ public final class CarrierRestrictionRules implements android.os.Parcelable {
+ method public int describeContents();
+ method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers();
+ method public int getDefaultCarrierRestriction();
+ method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getExcludedCarriers();
+ method public int getMultiSimPolicy();
+ method public boolean isAllCarriersAllowed();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final int CARRIER_RESTRICTION_DEFAULT_ALLOWED = 1; // 0x1
+ field public static final int CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED = 0; // 0x0
+ field public static final android.os.Parcelable.Creator<android.telephony.CarrierRestrictionRules> CREATOR;
+ field public static final int MULTISIM_POLICY_NONE = 0; // 0x0
+ field public static final int MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT = 1; // 0x1
+ }
+
+ public static class CarrierRestrictionRules.Builder {
+ method public android.telephony.CarrierRestrictionRules build();
+ method public android.telephony.CarrierRestrictionRules.Builder setAllCarriersAllowed();
+ method public android.telephony.CarrierRestrictionRules.Builder setAllowedCarriers(java.util.List<android.service.carrier.CarrierIdentifier>);
+ method public android.telephony.CarrierRestrictionRules.Builder setDefaultCarrierRestriction(int);
+ method public android.telephony.CarrierRestrictionRules.Builder setExcludedCarriers(java.util.List<android.service.carrier.CarrierIdentifier>);
+ method public android.telephony.CarrierRestrictionRules.Builder setMultiSimPolicy(int);
}
public final class DataFailCause {
@@ -6430,19 +6578,19 @@
}
public class MbmsDownloadSession implements java.lang.AutoCloseable {
- field public static final java.lang.String MBMS_DOWNLOAD_SERVICE_ACTION = "android.telephony.action.EmbmsDownload";
+ field public static final String MBMS_DOWNLOAD_SERVICE_ACTION = "android.telephony.action.EmbmsDownload";
}
public class MbmsGroupCallSession implements java.lang.AutoCloseable {
- field public static final java.lang.String MBMS_GROUP_CALL_SERVICE_ACTION = "android.telephony.action.EmbmsGroupCall";
+ field public static final String MBMS_GROUP_CALL_SERVICE_ACTION = "android.telephony.action.EmbmsGroupCall";
}
public class MbmsStreamingSession implements java.lang.AutoCloseable {
- field public static final java.lang.String MBMS_STREAMING_SERVICE_ACTION = "android.telephony.action.EmbmsStreaming";
+ field public static final String MBMS_STREAMING_SERVICE_ACTION = "android.telephony.action.EmbmsStreaming";
}
public class NetworkRegistrationState implements android.os.Parcelable {
- ctor public NetworkRegistrationState(int, int, int, int, int, boolean, int[], android.telephony.CellIdentity);
+ ctor public NetworkRegistrationState(int, int, int, int, int, boolean, int[], @Nullable android.telephony.CellIdentity);
ctor protected NetworkRegistrationState(android.os.Parcel);
method public int describeContents();
method public int getAccessNetworkTechnology();
@@ -6475,7 +6623,7 @@
public abstract class NetworkService extends android.app.Service {
ctor public NetworkService();
method protected abstract android.telephony.NetworkService.NetworkServiceProvider createNetworkServiceProvider(int);
- field public static final java.lang.String NETWORK_SERVICE_INTERFACE = "android.telephony.NetworkService";
+ field public static final String NETWORK_SERVICE_INTERFACE = "android.telephony.NetworkService";
}
public abstract class NetworkService.NetworkServiceProvider implements java.lang.AutoCloseable {
@@ -6496,8 +6644,8 @@
field public static final int RESULT_SUCCESS = 0; // 0x0
}
- public abstract interface NumberVerificationCallback {
- method public default void onCallReceived(java.lang.String);
+ public interface NumberVerificationCallback {
+ method public default void onCallReceived(@NonNull String);
method public default void onVerificationFailed(int);
field public static final int REASON_CONCURRENT_REQUESTS = 4; // 0x4
field public static final int REASON_IN_ECBM = 5; // 0x5
@@ -6509,9 +6657,9 @@
}
public final class PhoneNumberRange implements android.os.Parcelable {
- ctor public PhoneNumberRange(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ ctor public PhoneNumberRange(@NonNull String, @NonNull String, @NonNull String, @NonNull String);
method public int describeContents();
- method public boolean matches(java.lang.String);
+ method public boolean matches(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.PhoneNumberRange> CREATOR;
}
@@ -6529,7 +6677,7 @@
field public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
field public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
field public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 8388608; // 0x800000
- field public static final int LISTEN_SRVCC_STATE_CHANGED = 16384; // 0x4000
+ field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_SRVCC_STATE_CHANGED = 16384; // 0x4000
field public static final int LISTEN_VOICE_ACTIVATION_STATE = 131072; // 0x20000
}
@@ -6554,7 +6702,7 @@
public final class PreciseDataConnectionState implements android.os.Parcelable {
method public int describeContents();
- method public java.lang.String getDataConnectionApn();
+ method public String getDataConnectionApn();
method public int getDataConnectionApnTypeBitMask();
method public int getDataConnectionFailCause();
method public int getDataConnectionState();
@@ -6662,8 +6810,8 @@
public class ServiceState implements android.os.Parcelable {
method public android.telephony.NetworkRegistrationState getNetworkRegistrationState(int, int);
method public java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStates();
- method public deprecated java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStates(int);
- method public deprecated android.telephony.NetworkRegistrationState getNetworkRegistrationStates(int, int);
+ method @Deprecated public java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStates(int);
+ method @Deprecated public android.telephony.NetworkRegistrationState getNetworkRegistrationStates(int, int);
method public java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStatesForDomain(int);
method public java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStatesForTransportType(int);
field public static final int ROAMING_TYPE_DOMESTIC = 2; // 0x2
@@ -6673,7 +6821,7 @@
}
public final class SmsManager {
- method public void sendMultipartTextMessageWithoutPersisting(java.lang.String, java.lang.String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void sendMultipartTextMessageWithoutPersisting(String, String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>);
field public static final int RESULT_CANCELLED = 23; // 0x17
field public static final int RESULT_ENCODING_ERROR = 18; // 0x12
field public static final int RESULT_ERROR_FDN_CHECK_FAILURE = 6; // 0x6
@@ -6695,7 +6843,7 @@
}
public class SubscriptionInfo implements android.os.Parcelable {
- method public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
+ method @Nullable public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
method public int getCardId();
method public int getProfileClass();
}
@@ -6704,8 +6852,8 @@
method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList();
method public void requestEmbeddedSubscriptionInfoListRefresh();
method public void requestEmbeddedSubscriptionInfoListRefresh(int);
- method public void setDefaultDataSubId(int);
- method public void setDefaultSmsSubId(int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultSmsSubId(int);
field public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI;
field public static final int PROFILE_CLASS_DEFAULT = -1; // 0xffffffff
field public static final int PROFILE_CLASS_OPERATIONAL = 2; // 0x2
@@ -6720,9 +6868,9 @@
}
public static class SubscriptionPlan.Builder {
- method public static deprecated android.telephony.SubscriptionPlan.Builder createRecurringDaily(java.time.ZonedDateTime);
- method public static deprecated android.telephony.SubscriptionPlan.Builder createRecurringMonthly(java.time.ZonedDateTime);
- method public static deprecated android.telephony.SubscriptionPlan.Builder createRecurringWeekly(java.time.ZonedDateTime);
+ method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringDaily(java.time.ZonedDateTime);
+ method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringMonthly(java.time.ZonedDateTime);
+ method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringWeekly(java.time.ZonedDateTime);
}
public final class TelephonyHistogram implements android.os.Parcelable {
@@ -6746,85 +6894,88 @@
}
public class TelephonyManager {
- method public deprecated void call(java.lang.String, java.lang.String);
- method public int checkCarrierPrivilegesForPackage(java.lang.String);
- method public int checkCarrierPrivilegesForPackageAnyPhone(java.lang.String);
- method public void dial(java.lang.String);
- method public boolean disableDataConnectivity();
- method public boolean enableDataConnectivity();
- method public void enableVideoCalling(boolean);
- method public java.lang.String getAidForAppType(int);
- method public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers(int);
- method public int getCardIdForDefaultEuicc();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void call(String, String);
+ method public int checkCarrierPrivilegesForPackage(String);
+ method public int checkCarrierPrivilegesForPackageAnyPhone(String);
+ method public void dial(String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean disableDataConnectivity();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableDataConnectivity();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableModemForSlot(int, boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void enableVideoCalling(boolean);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getAidForAppType(int);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers(int);
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getCardIdForDefaultEuicc();
method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent);
method public java.util.List<java.lang.String> getCarrierPackageNamesForIntentAndPhone(android.content.Intent, int);
- method public java.lang.String getCdmaMdn();
- method public java.lang.String getCdmaMdn(int);
- method public java.lang.String getCdmaMin();
- method public java.lang.String getCdmaMin(int);
- method public java.lang.String getCdmaPrlVersion();
+ method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.CarrierRestrictionRules getCarrierRestrictionRules();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn(int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin(int);
+ method public String getCdmaPrlVersion();
method public int getCurrentPhoneType();
method public int getCurrentPhoneType(int);
- method public int getDataActivationState();
- method public deprecated boolean getDataEnabled();
- method public deprecated boolean getDataEnabled(int);
- method public boolean getEmergencyCallbackMode();
- method public java.lang.String getIsimDomain();
- method public java.lang.String getIsimIst();
- method public int getPreferredNetworkTypeBitmap();
- method public int getRadioPowerState();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getDataActivationState();
+ method @Deprecated public boolean getDataEnabled();
+ method @Deprecated public boolean getDataEnabled(int);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getPreferredNetworkTypeBitmap();
+ method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState();
method public int getSimApplicationState();
method public int getSimCardState();
- method public int getSupportedRadioAccessFamily();
- method public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();
- method public android.telephony.UiccCardInfo[] getUiccCardsInfo();
- method public android.telephony.UiccSlotInfo[] getUiccSlotsInfo();
- method public android.os.Bundle getVisualVoicemailSettings();
- method public int getVoiceActivationState();
- method public boolean handlePinMmi(java.lang.String);
- method public boolean handlePinMmiForSubscriber(int, java.lang.String);
- method public boolean isCurrentPotentialEmergencyNumber(java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSupportedRadioAccessFamily();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.UiccCardInfo[] getUiccCardsInfo();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.UiccSlotInfo[] getUiccSlotsInfo();
+ method @Nullable public android.os.Bundle getVisualVoicemailSettings();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoiceActivationState();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmi(String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmiForSubscriber(int, String);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCurrentPotentialEmergencyNumber(@NonNull String);
method public boolean isDataConnectivityPossible();
- method public deprecated boolean isIdle();
- method public deprecated boolean isOffhook();
- method public deprecated boolean isRadioOn();
- method public deprecated boolean isRinging();
- method public boolean isVideoCallingEnabled();
- method public deprecated boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle);
+ method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle();
+ method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook();
+ method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRadioOn();
+ method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
+ method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isVideoCallingEnabled();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle);
method public boolean needsOtaServiceProvisioning();
- method public boolean rebootRadio();
- method public void requestCellInfoUpdate(android.os.WorkSource, java.util.concurrent.Executor, android.telephony.TelephonyManager.CellInfoCallback);
- method public void requestNumberVerification(android.telephony.PhoneNumberRange, long, java.util.concurrent.Executor, android.telephony.NumberVerificationCallback);
- method public boolean resetRadioConfig();
- method public int setAllowedCarriers(int, java.util.List<android.service.carrier.CarrierIdentifier>);
- method public void setCarrierDataEnabled(boolean);
- method public void setDataActivationState(int);
- method public deprecated void setDataEnabled(int, boolean);
- method public void setDataRoamingEnabled(boolean);
- method public boolean setPreferredNetworkTypeBitmap(int);
- method public boolean setRadio(boolean);
- method public boolean setRadioPower(boolean);
- method public void setSimPowerState(int);
- method public void setSimPowerStateForSlot(int, int);
- method public deprecated void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean);
- method public void setVoiceActivationState(int);
- method public boolean supplyPin(java.lang.String);
- method public int[] supplyPinReportResult(java.lang.String);
- method public boolean supplyPuk(java.lang.String, java.lang.String);
- method public int[] supplyPukReportResult(java.lang.String, java.lang.String);
- method public boolean switchSlots(int[]);
- method public void toggleRadioOnOff();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean rebootRadio();
+ method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.MODIFY_PHONE_STATE}) public void requestCellInfoUpdate(@NonNull android.os.WorkSource, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void requestNumberVerification(@NonNull android.telephony.PhoneNumberRange, long, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.NumberVerificationCallback);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean resetRadioConfig();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setAllowedCarriers(int, java.util.List<android.service.carrier.CarrierIdentifier>);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setCarrierRestrictionRules(@NonNull android.telephony.CarrierRestrictionRules);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataActivationState(int);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int, boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataRoamingEnabled(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setPreferredNetworkTypeBitmap(int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadio(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadioPower(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerState(int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerStateForSlot(int, int);
+ method @Deprecated public void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoiceActivationState(int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPin(String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPuk(String, String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(String, String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean switchSlots(int[]);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void toggleRadioOnOff();
method public void updateServiceLocation();
- field public static final java.lang.String ACTION_SIM_APPLICATION_STATE_CHANGED = "android.telephony.action.SIM_APPLICATION_STATE_CHANGED";
- field public static final java.lang.String ACTION_SIM_CARD_STATE_CHANGED = "android.telephony.action.SIM_CARD_STATE_CHANGED";
- field public static final java.lang.String ACTION_SIM_SLOT_STATUS_CHANGED = "android.telephony.action.SIM_SLOT_STATUS_CHANGED";
+ field public static final String ACTION_SIM_APPLICATION_STATE_CHANGED = "android.telephony.action.SIM_APPLICATION_STATE_CHANGED";
+ field public static final String ACTION_SIM_CARD_STATE_CHANGED = "android.telephony.action.SIM_CARD_STATE_CHANGED";
+ field public static final String ACTION_SIM_SLOT_STATUS_CHANGED = "android.telephony.action.SIM_SLOT_STATUS_CHANGED";
field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe
field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0
field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
- field public static final java.lang.String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE";
- field public static final java.lang.String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
- field public static final java.lang.String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
+ field public static final String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE";
+ field public static final String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
+ field public static final String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
field public static final int INVALID_CARD_ID = -1; // 0xffffffff
field public static final long MAX_NUMBER_VERIFICATION_TIMEOUT_MILLIS = 60000L; // 0xea60L
field public static final int NETWORK_TYPE_BITMASK_1xRTT = 128; // 0x80
@@ -6849,6 +7000,9 @@
field public static final int RADIO_POWER_OFF = 0; // 0x0
field public static final int RADIO_POWER_ON = 1; // 0x1
field public static final int RADIO_POWER_UNAVAILABLE = 2; // 0x2
+ field public static final int SET_CARRIER_RESTRICTION_ERROR = 2; // 0x2
+ field public static final int SET_CARRIER_RESTRICTION_NOT_SUPPORTED = 1; // 0x1
+ field public static final int SET_CARRIER_RESTRICTION_SUCCESS = 0; // 0x0
field public static final int SIM_ACTIVATION_STATE_ACTIVATED = 2; // 0x2
field public static final int SIM_ACTIVATION_STATE_ACTIVATING = 1; // 0x1
field public static final int SIM_ACTIVATION_STATE_DEACTIVATED = 3; // 0x3
@@ -6864,22 +7018,22 @@
}
public final class UiccAccessRule implements android.os.Parcelable {
- ctor public UiccAccessRule(byte[], java.lang.String, long);
+ ctor public UiccAccessRule(byte[], @Nullable String, long);
method public int describeContents();
method public int getCarrierPrivilegeStatus(android.content.pm.PackageInfo);
- method public int getCarrierPrivilegeStatus(android.content.pm.Signature, java.lang.String);
- method public java.lang.String getCertificateHexString();
- method public java.lang.String getPackageName();
+ method public int getCarrierPrivilegeStatus(android.content.pm.Signature, String);
+ method public String getCertificateHexString();
+ method @Nullable public String getPackageName();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.UiccAccessRule> CREATOR;
}
public class UiccCardInfo implements android.os.Parcelable {
- ctor public UiccCardInfo(boolean, int, java.lang.String, java.lang.String, int);
+ ctor public UiccCardInfo(boolean, int, String, String, int);
method public int describeContents();
method public int getCardId();
- method public java.lang.String getEid();
- method public java.lang.String getIccId();
+ method public String getEid();
+ method public String getIccId();
method public int getSlotIndex();
method public boolean isEuicc();
method public void writeToParcel(android.os.Parcel, int);
@@ -6887,9 +7041,9 @@
}
public class UiccSlotInfo implements android.os.Parcelable {
- ctor public UiccSlotInfo(boolean, boolean, java.lang.String, int, int, boolean);
+ ctor public UiccSlotInfo(boolean, boolean, String, int, int, boolean);
method public int describeContents();
- method public java.lang.String getCardId();
+ method public String getCardId();
method public int getCardStateInfo();
method public boolean getIsActive();
method public boolean getIsEuicc();
@@ -6904,7 +7058,7 @@
}
public abstract class VisualVoicemailService extends android.app.Service {
- method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, java.lang.String, short, java.lang.String, android.app.PendingIntent);
+ method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, String, short, String, android.app.PendingIntent);
method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings);
}
@@ -6913,38 +7067,38 @@
package android.telephony.data {
public final class DataCallResponse implements android.os.Parcelable {
- ctor public DataCallResponse(int, int, int, int, java.lang.String, java.lang.String, java.util.List<android.net.LinkAddress>, java.util.List<java.net.InetAddress>, java.util.List<java.net.InetAddress>, java.util.List<java.lang.String>, int);
+ ctor public DataCallResponse(int, int, int, int, @Nullable String, @Nullable String, @Nullable java.util.List<android.net.LinkAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.lang.String>, int);
ctor public DataCallResponse(android.os.Parcel);
method public int describeContents();
method public int getActive();
- method public java.util.List<android.net.LinkAddress> getAddresses();
+ method @NonNull public java.util.List<android.net.LinkAddress> getAddresses();
method public int getCallId();
- method public java.util.List<java.net.InetAddress> getDnses();
- method public java.util.List<java.net.InetAddress> getGateways();
- method public java.lang.String getIfname();
+ method @NonNull public java.util.List<java.net.InetAddress> getDnses();
+ method @NonNull public java.util.List<java.net.InetAddress> getGateways();
+ method @NonNull public String getIfname();
method public int getMtu();
- method public java.util.List<java.lang.String> getPcscfs();
+ method @NonNull public java.util.List<java.lang.String> getPcscfs();
method public int getStatus();
method public int getSuggestedRetryTime();
- method public java.lang.String getType();
+ method @NonNull public String getType();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
}
public final class DataProfile implements android.os.Parcelable {
- method public java.lang.String getApn();
+ method public String getApn();
method public int getAuthType();
method public int getBearerBitmap();
method public int getMaxConns();
method public int getMaxConnsTime();
method public int getMtu();
- method public java.lang.String getPassword();
+ method public String getPassword();
method public int getProfileId();
- method public java.lang.String getProtocol();
- method public java.lang.String getRoamingProtocol();
+ method public String getProtocol();
+ method public String getRoamingProtocol();
method public int getSupportedApnTypesBitmap();
method public int getType();
- method public java.lang.String getUserName();
+ method public String getUserName();
method public int getWaitTime();
method public boolean isEnabled();
method public boolean isPersistent();
@@ -6957,7 +7111,7 @@
public abstract class DataService extends android.app.Service {
ctor public DataService();
method public abstract android.telephony.data.DataService.DataServiceProvider createDataServiceProvider(int);
- field public static final java.lang.String DATA_SERVICE_INTERFACE = "android.telephony.data.DataService";
+ field public static final String DATA_SERVICE_INTERFACE = "android.telephony.data.DataService";
field public static final int REQUEST_REASON_HANDOVER = 3; // 0x3
field public static final int REQUEST_REASON_NORMAL = 1; // 0x1
field public static final int REQUEST_REASON_SHUTDOWN = 2; // 0x2
@@ -6966,13 +7120,13 @@
public abstract class DataService.DataServiceProvider implements java.lang.AutoCloseable {
ctor public DataService.DataServiceProvider(int);
method public abstract void close();
- method public void deactivateDataCall(int, int, android.telephony.data.DataServiceCallback);
- method public void getDataCallList(android.telephony.data.DataServiceCallback);
+ method public void deactivateDataCall(int, int, @Nullable android.telephony.data.DataServiceCallback);
+ method public void getDataCallList(@NonNull android.telephony.data.DataServiceCallback);
method public final int getSlotId();
method public final void notifyDataCallListChanged(java.util.List<android.telephony.data.DataCallResponse>);
- method public void setDataProfile(java.util.List<android.telephony.data.DataProfile>, boolean, android.telephony.data.DataServiceCallback);
- method public void setInitialAttachApn(android.telephony.data.DataProfile, boolean, android.telephony.data.DataServiceCallback);
- method public void setupDataCall(int, android.telephony.data.DataProfile, boolean, boolean, int, android.net.LinkProperties, android.telephony.data.DataServiceCallback);
+ method public void setDataProfile(java.util.List<android.telephony.data.DataProfile>, boolean, @Nullable android.telephony.data.DataServiceCallback);
+ method public void setInitialAttachApn(android.telephony.data.DataProfile, boolean, @Nullable android.telephony.data.DataServiceCallback);
+ method public void setupDataCall(int, android.telephony.data.DataProfile, boolean, boolean, int, @Nullable android.net.LinkProperties, @Nullable android.telephony.data.DataServiceCallback);
}
public class DataServiceCallback {
@@ -6992,7 +7146,7 @@
public abstract class QualifiedNetworksService extends android.app.Service {
ctor public QualifiedNetworksService();
method public abstract android.telephony.data.QualifiedNetworksService.NetworkAvailabilityUpdater createNetworkAvailabilityUpdater(int);
- field public static final java.lang.String QUALIFIED_NETWORKS_SERVICE_INTERFACE = "android.telephony.data.QualifiedNetworksService";
+ field public static final String QUALIFIED_NETWORKS_SERVICE_INTERFACE = "android.telephony.data.QualifiedNetworksService";
}
public abstract class QualifiedNetworksService.NetworkAvailabilityUpdater implements java.lang.AutoCloseable {
@@ -7008,7 +7162,7 @@
public final class DownloadableSubscription implements android.os.Parcelable {
method public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
- method public java.lang.String getCarrierName();
+ method @Nullable public String getCarrierName();
}
public static final class DownloadableSubscription.Builder {
@@ -7016,34 +7170,34 @@
ctor public DownloadableSubscription.Builder(android.telephony.euicc.DownloadableSubscription);
method public android.telephony.euicc.DownloadableSubscription build();
method public android.telephony.euicc.DownloadableSubscription.Builder setAccessRules(java.util.List<android.telephony.UiccAccessRule>);
- method public android.telephony.euicc.DownloadableSubscription.Builder setCarrierName(java.lang.String);
- method public android.telephony.euicc.DownloadableSubscription.Builder setConfirmationCode(java.lang.String);
- method public android.telephony.euicc.DownloadableSubscription.Builder setEncodedActivationCode(java.lang.String);
+ method public android.telephony.euicc.DownloadableSubscription.Builder setCarrierName(String);
+ method public android.telephony.euicc.DownloadableSubscription.Builder setConfirmationCode(String);
+ method public android.telephony.euicc.DownloadableSubscription.Builder setEncodedActivationCode(String);
}
public class EuiccCardManager {
- method public void authenticateServer(java.lang.String, java.lang.String, byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
- method public void cancelSession(java.lang.String, byte[], int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
- method public void deleteProfile(java.lang.String, java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
- method public void disableProfile(java.lang.String, java.lang.String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
- method public void listNotifications(java.lang.String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
- method public void loadBoundProfilePackage(java.lang.String, byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
- method public void prepareDownload(java.lang.String, byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
- method public void removeNotificationFromList(java.lang.String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
- method public void requestAllProfiles(java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo[]>);
- method public void requestDefaultSmdpAddress(java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
- method public void requestEuiccChallenge(java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
- method public void requestEuiccInfo1(java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
- method public void requestEuiccInfo2(java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
- method public void requestProfile(java.lang.String, java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
- method public void requestRulesAuthTable(java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccRulesAuthTable>);
- method public void requestSmdsAddress(java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
- method public void resetMemory(java.lang.String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
- method public void retrieveNotification(java.lang.String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification>);
- method public void retrieveNotificationList(java.lang.String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
- method public void setDefaultSmdpAddress(java.lang.String, java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
- method public void setNickname(java.lang.String, java.lang.String, java.lang.String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
- method public void switchToProfile(java.lang.String, java.lang.String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
+ method public void authenticateServer(String, String, byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+ method public void cancelSession(String, byte[], @android.telephony.euicc.EuiccCardManager.CancelReason int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+ method public void deleteProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+ method public void disableProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+ method public void listNotifications(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
+ method public void loadBoundProfilePackage(String, byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+ method public void prepareDownload(String, @Nullable byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+ method public void removeNotificationFromList(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+ method public void requestAllProfiles(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo[]>);
+ method public void requestDefaultSmdpAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
+ method public void requestEuiccChallenge(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+ method public void requestEuiccInfo1(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+ method public void requestEuiccInfo2(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+ method public void requestProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
+ method public void requestRulesAuthTable(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccRulesAuthTable>);
+ method public void requestSmdsAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
+ method public void resetMemory(String, @android.telephony.euicc.EuiccCardManager.ResetOption int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+ method public void retrieveNotification(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification>);
+ method public void retrieveNotificationList(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
+ method public void setDefaultSmdpAddress(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+ method public void setNickname(String, String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+ method public void switchToProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
field public static final int CANCEL_REASON_END_USER_REJECTED = 0; // 0x0
field public static final int CANCEL_REASON_POSTPONED = 1; // 0x1
field public static final int CANCEL_REASON_PPR_NOT_ALLOWED = 3; // 0x3
@@ -7057,25 +7211,25 @@
field public static final int RESULT_UNKNOWN_ERROR = -1; // 0xffffffff
}
- public static abstract class EuiccCardManager.CancelReason implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @IntDef(prefix={"CANCEL_REASON_"}, value={android.telephony.euicc.EuiccCardManager.CANCEL_REASON_END_USER_REJECTED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_POSTPONED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_TIMEOUT, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_PPR_NOT_ALLOWED}) public static @interface EuiccCardManager.CancelReason {
}
- public static abstract class EuiccCardManager.ResetOption implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @IntDef(flag=true, prefix={"RESET_OPTION_"}, value={android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_OPERATIONAL_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_FIELD_LOADED_TEST_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_RESET_DEFAULT_SMDP_ADDRESS}) public static @interface EuiccCardManager.ResetOption {
}
- public static abstract interface EuiccCardManager.ResultCallback<T> {
- method public abstract void onComplete(int, T);
+ public static interface EuiccCardManager.ResultCallback<T> {
+ method public void onComplete(int, T);
}
public class EuiccManager {
- method public void continueOperation(android.content.Intent, android.os.Bundle);
- method public void eraseSubscriptions(android.app.PendingIntent);
- method public void getDefaultDownloadableSubscriptionList(android.app.PendingIntent);
- method public void getDownloadableSubscriptionMetadata(android.telephony.euicc.DownloadableSubscription, android.app.PendingIntent);
- method public int getOtaStatus();
- field public static final java.lang.String ACTION_OTA_STATUS_CHANGED = "android.telephony.euicc.action.OTA_STATUS_CHANGED";
- field public static final java.lang.String ACTION_PROFILE_SELECTION = "android.telephony.euicc.action.PROFILE_SELECTION";
- field public static final java.lang.String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
+ method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void continueOperation(android.content.Intent, android.os.Bundle);
+ method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(android.app.PendingIntent);
+ method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDefaultDownloadableSubscriptionList(android.app.PendingIntent);
+ method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDownloadableSubscriptionMetadata(android.telephony.euicc.DownloadableSubscription, android.app.PendingIntent);
+ method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public int getOtaStatus();
+ field @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public static final String ACTION_OTA_STATUS_CHANGED = "android.telephony.euicc.action.OTA_STATUS_CHANGED";
+ field public static final String ACTION_PROFILE_SELECTION = "android.telephony.euicc.action.PROFILE_SELECTION";
+ field public static final String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
field public static final int EUICC_ACTIVATION_TYPE_BACKUP = 2; // 0x2
field public static final int EUICC_ACTIVATION_TYPE_DEFAULT = 1; // 0x1
field public static final int EUICC_ACTIVATION_TYPE_TRANSFER = 3; // 0x3
@@ -7084,23 +7238,23 @@
field public static final int EUICC_OTA_NOT_NEEDED = 4; // 0x4
field public static final int EUICC_OTA_STATUS_UNAVAILABLE = 5; // 0x5
field public static final int EUICC_OTA_SUCCEEDED = 3; // 0x3
- field public static final java.lang.String EXTRA_ACTIVATION_TYPE = "android.telephony.euicc.extra.ACTIVATION_TYPE";
- field public static final java.lang.String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS";
- field public static final java.lang.String EXTRA_FORCE_PROVISION = "android.telephony.euicc.extra.FORCE_PROVISION";
+ field public static final String EXTRA_ACTIVATION_TYPE = "android.telephony.euicc.extra.ACTIVATION_TYPE";
+ field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS";
+ field public static final String EXTRA_FORCE_PROVISION = "android.telephony.euicc.extra.FORCE_PROVISION";
}
- public static abstract class EuiccManager.OtaStatus implements java.lang.annotation.Annotation {
+ @IntDef(prefix={"EUICC_OTA_"}, value={android.telephony.euicc.EuiccManager.EUICC_OTA_IN_PROGRESS, android.telephony.euicc.EuiccManager.EUICC_OTA_FAILED, android.telephony.euicc.EuiccManager.EUICC_OTA_SUCCEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_NOT_NEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_STATUS_UNAVAILABLE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccManager.OtaStatus {
}
public final class EuiccNotification implements android.os.Parcelable {
- ctor public EuiccNotification(int, java.lang.String, int, byte[]);
+ ctor public EuiccNotification(int, String, @android.telephony.euicc.EuiccNotification.Event int, @Nullable byte[]);
method public int describeContents();
- method public byte[] getData();
- method public int getEvent();
+ method @Nullable public byte[] getData();
+ method @android.telephony.euicc.EuiccNotification.Event public int getEvent();
method public int getSeq();
- method public java.lang.String getTargetAddr();
+ method public String getTargetAddr();
method public void writeToParcel(android.os.Parcel, int);
- field public static final int ALL_EVENTS = 15; // 0xf
+ field @android.telephony.euicc.EuiccNotification.Event public static final int ALL_EVENTS = 15; // 0xf
field public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccNotification> CREATOR;
field public static final int EVENT_DELETE = 8; // 0x8
field public static final int EVENT_DISABLE = 4; // 0x4
@@ -7108,13 +7262,13 @@
field public static final int EVENT_INSTALL = 1; // 0x1
}
- public static abstract class EuiccNotification.Event implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @IntDef(flag=true, prefix={"EVENT_"}, value={android.telephony.euicc.EuiccNotification.EVENT_INSTALL, android.telephony.euicc.EuiccNotification.EVENT_ENABLE, android.telephony.euicc.EuiccNotification.EVENT_DISABLE, android.telephony.euicc.EuiccNotification.EVENT_DELETE}) public static @interface EuiccNotification.Event {
}
public final class EuiccRulesAuthTable implements android.os.Parcelable {
method public int describeContents();
- method public int findIndex(int, android.service.carrier.CarrierIdentifier);
- method public boolean hasPolicyRuleFlag(int, int);
+ method public int findIndex(@android.service.euicc.EuiccProfileInfo.PolicyRule int, android.service.carrier.CarrierIdentifier);
+ method public boolean hasPolicyRuleFlag(int, @android.telephony.euicc.EuiccRulesAuthTable.PolicyRuleFlag int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccRulesAuthTable> CREATOR;
field public static final int POLICY_RULE_FLAG_CONSENT_REQUIRED = 1; // 0x1
@@ -7126,7 +7280,7 @@
method public android.telephony.euicc.EuiccRulesAuthTable build();
}
- public static abstract class EuiccRulesAuthTable.PolicyRuleFlag implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @IntDef(flag=true, prefix={"POLICY_RULE_FLAG_"}, value={android.telephony.euicc.EuiccRulesAuthTable.POLICY_RULE_FLAG_CONSENT_REQUIRED}) public static @interface EuiccRulesAuthTable.PolicyRuleFlag {
}
}
@@ -7134,10 +7288,10 @@
package android.telephony.ims {
public final class ImsCallForwardInfo implements android.os.Parcelable {
- ctor public ImsCallForwardInfo(int, int, int, int, java.lang.String, int);
+ ctor public ImsCallForwardInfo(int, int, int, int, @NonNull String, int);
method public int describeContents();
method public int getCondition();
- method public java.lang.String getNumber();
+ method public String getNumber();
method public int getServiceClass();
method public int getStatus();
method public int getTimeSeconds();
@@ -7162,12 +7316,12 @@
ctor public ImsCallProfile(int, int);
ctor public ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile);
method public int describeContents();
- method public java.lang.String getCallExtra(java.lang.String);
- method public java.lang.String getCallExtra(java.lang.String, java.lang.String);
- method public boolean getCallExtraBoolean(java.lang.String);
- method public boolean getCallExtraBoolean(java.lang.String, boolean);
- method public int getCallExtraInt(java.lang.String);
- method public int getCallExtraInt(java.lang.String, int);
+ method public String getCallExtra(String);
+ method public String getCallExtra(String, String);
+ method public boolean getCallExtraBoolean(String);
+ method public boolean getCallExtraBoolean(String, boolean);
+ method public int getCallExtraInt(String);
+ method public int getCallExtraInt(String, int);
method public android.os.Bundle getCallExtras();
method public int getCallType();
method public static int getCallTypeFromVideoState(int);
@@ -7179,14 +7333,16 @@
method public int getServiceType();
method public static int getVideoStateFromCallType(int);
method public static int getVideoStateFromImsCallProfile(android.telephony.ims.ImsCallProfile);
+ method public boolean isEmergencyCallTesting();
method public boolean isVideoCall();
method public boolean isVideoPaused();
method public static int presentationToOir(int);
- method public void setCallExtra(java.lang.String, java.lang.String);
- method public void setCallExtraBoolean(java.lang.String, boolean);
- method public void setCallExtraInt(java.lang.String, int);
+ method public void setCallExtra(String, String);
+ method public void setCallExtraBoolean(String, boolean);
+ method public void setCallExtraInt(String, int);
method public void setCallRestrictCause(int);
method public void setEmergencyCallRouting(int);
+ method public void setEmergencyCallTesting(boolean);
method public void setEmergencyServiceCategories(int);
method public void setEmergencyUrns(java.util.List<java.lang.String>);
method public void updateCallExtras(android.telephony.ims.ImsCallProfile);
@@ -7211,21 +7367,21 @@
field public static final int DIALSTRING_NORMAL = 0; // 0x0
field public static final int DIALSTRING_SS_CONF = 1; // 0x1
field public static final int DIALSTRING_USSD = 2; // 0x2
- field public static final java.lang.String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
- field public static final java.lang.String EXTRA_ADDITIONAL_SIP_INVITE_FIELDS = "android.telephony.ims.extra.ADDITIONAL_SIP_INVITE_FIELDS";
- field public static final java.lang.String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
- field public static final java.lang.String EXTRA_CHILD_NUMBER = "ChildNum";
- field public static final java.lang.String EXTRA_CNA = "cna";
- field public static final java.lang.String EXTRA_CNAP = "cnap";
- field public static final java.lang.String EXTRA_CODEC = "Codec";
- field public static final java.lang.String EXTRA_DIALSTRING = "dialstring";
- field public static final java.lang.String EXTRA_DISPLAY_TEXT = "DisplayText";
- field public static final java.lang.String EXTRA_EMERGENCY_CALL = "e_call";
- field public static final java.lang.String EXTRA_IS_CALL_PULL = "CallPull";
- field public static final java.lang.String EXTRA_OI = "oi";
- field public static final java.lang.String EXTRA_OIR = "oir";
- field public static final java.lang.String EXTRA_REMOTE_URI = "remote_uri";
- field public static final java.lang.String EXTRA_USSD = "ussd";
+ field public static final String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
+ field public static final String EXTRA_ADDITIONAL_SIP_INVITE_FIELDS = "android.telephony.ims.extra.ADDITIONAL_SIP_INVITE_FIELDS";
+ field public static final String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
+ field public static final String EXTRA_CHILD_NUMBER = "ChildNum";
+ field public static final String EXTRA_CNA = "cna";
+ field public static final String EXTRA_CNAP = "cnap";
+ field public static final String EXTRA_CODEC = "Codec";
+ field public static final String EXTRA_DIALSTRING = "dialstring";
+ field public static final String EXTRA_DISPLAY_TEXT = "DisplayText";
+ field public static final String EXTRA_EMERGENCY_CALL = "e_call";
+ field public static final String EXTRA_IS_CALL_PULL = "CallPull";
+ field public static final String EXTRA_OI = "oi";
+ field public static final String EXTRA_OIR = "oir";
+ field public static final String EXTRA_REMOTE_URI = "remote_uri";
+ field public static final String EXTRA_USSD = "ussd";
field public static final int OIR_DEFAULT = 0; // 0x0
field public static final int OIR_PRESENTATION_NOT_RESTRICTED = 2; // 0x2
field public static final int OIR_PRESENTATION_PAYPHONE = 4; // 0x4
@@ -7237,6 +7393,7 @@
}
public class ImsCallSessionListener {
+ method public void callQualityChanged(android.telephony.CallQuality);
method public void callSessionConferenceExtendFailed(android.telephony.ims.ImsReasonInfo);
method public void callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
method public void callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
@@ -7251,7 +7408,6 @@
method public void callSessionInviteParticipantsRequestDelivered();
method public void callSessionInviteParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
method public void callSessionMayHandover(int, int);
- method public void callSessionRttAudioIndicatorChanged(android.telephony.ims.ImsStreamMediaProfile);
method public void callSessionMergeComplete(android.telephony.ims.stub.ImsCallSessionImplBase);
method public void callSessionMergeFailed(android.telephony.ims.ImsReasonInfo);
method public void callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
@@ -7262,7 +7418,8 @@
method public void callSessionResumeFailed(android.telephony.ims.ImsReasonInfo);
method public void callSessionResumeReceived(android.telephony.ims.ImsCallProfile);
method public void callSessionResumed(android.telephony.ims.ImsCallProfile);
- method public void callSessionRttMessageReceived(java.lang.String);
+ method public void callSessionRttAudioIndicatorChanged(android.telephony.ims.ImsStreamMediaProfile);
+ method public void callSessionRttMessageReceived(String);
method public void callSessionRttModifyRequestReceived(android.telephony.ims.ImsCallProfile);
method public void callSessionRttModifyResponseReceived(int);
method public void callSessionSuppServiceReceived(android.telephony.ims.ImsSuppServiceNotification);
@@ -7271,36 +7428,36 @@
method public void callSessionUpdateFailed(android.telephony.ims.ImsReasonInfo);
method public void callSessionUpdateReceived(android.telephony.ims.ImsCallProfile);
method public void callSessionUpdated(android.telephony.ims.ImsCallProfile);
- method public void callSessionUssdMessageReceived(int, java.lang.String);
+ method public void callSessionUssdMessageReceived(int, String);
}
public final class ImsConferenceState implements android.os.Parcelable {
method public int describeContents();
- method public static int getConnectionStateForStatus(java.lang.String);
+ method public static int getConnectionStateForStatus(String);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.ims.ImsConferenceState> CREATOR;
- field public static final java.lang.String DISPLAY_TEXT = "display-text";
- field public static final java.lang.String ENDPOINT = "endpoint";
- field public static final java.lang.String SIP_STATUS_CODE = "sipstatuscode";
- field public static final java.lang.String STATUS = "status";
- field public static final java.lang.String STATUS_ALERTING = "alerting";
- field public static final java.lang.String STATUS_CONNECTED = "connected";
- field public static final java.lang.String STATUS_CONNECT_FAIL = "connect-fail";
- field public static final java.lang.String STATUS_DIALING_IN = "dialing-in";
- field public static final java.lang.String STATUS_DIALING_OUT = "dialing-out";
- field public static final java.lang.String STATUS_DISCONNECTED = "disconnected";
- field public static final java.lang.String STATUS_DISCONNECTING = "disconnecting";
- field public static final java.lang.String STATUS_MUTED_VIA_FOCUS = "muted-via-focus";
- field public static final java.lang.String STATUS_ON_HOLD = "on-hold";
- field public static final java.lang.String STATUS_PENDING = "pending";
- field public static final java.lang.String STATUS_SEND_ONLY = "sendonly";
- field public static final java.lang.String STATUS_SEND_RECV = "sendrecv";
- field public static final java.lang.String USER = "user";
- field public final java.util.HashMap<java.lang.String, android.os.Bundle> mParticipants;
+ field public static final String DISPLAY_TEXT = "display-text";
+ field public static final String ENDPOINT = "endpoint";
+ field public static final String SIP_STATUS_CODE = "sipstatuscode";
+ field public static final String STATUS = "status";
+ field public static final String STATUS_ALERTING = "alerting";
+ field public static final String STATUS_CONNECTED = "connected";
+ field public static final String STATUS_CONNECT_FAIL = "connect-fail";
+ field public static final String STATUS_DIALING_IN = "dialing-in";
+ field public static final String STATUS_DIALING_OUT = "dialing-out";
+ field public static final String STATUS_DISCONNECTED = "disconnected";
+ field public static final String STATUS_DISCONNECTING = "disconnecting";
+ field public static final String STATUS_MUTED_VIA_FOCUS = "muted-via-focus";
+ field public static final String STATUS_ON_HOLD = "on-hold";
+ field public static final String STATUS_PENDING = "pending";
+ field public static final String STATUS_SEND_ONLY = "sendonly";
+ field public static final String STATUS_SEND_RECV = "sendrecv";
+ field public static final String USER = "user";
+ field public final java.util.HashMap<java.lang.String,android.os.Bundle> mParticipants;
}
public final class ImsExternalCallState implements android.os.Parcelable {
- ctor public ImsExternalCallState(java.lang.String, android.net.Uri, android.net.Uri, boolean, int, int, boolean);
+ ctor public ImsExternalCallState(String, android.net.Uri, android.net.Uri, boolean, int, int, boolean);
method public int describeContents();
method public android.net.Uri getAddress();
method public int getCallId();
@@ -7317,26 +7474,26 @@
public class ImsMmTelManager {
method public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(android.content.Context, int);
- method public int getVoWiFiModeSetting();
- method public int getVoWiFiRoamingModeSetting();
- method public boolean isAdvancedCallingSettingEnabled();
- method public boolean isAvailable(int, int);
- method public boolean isCapable(int, int);
- method public boolean isVoWiFiRoamingSettingEnabled();
- method public boolean isVoWiFiSettingEnabled();
- method public boolean isVtSettingEnabled();
- method public void registerImsRegistrationCallback(java.util.concurrent.Executor, android.telephony.ims.ImsMmTelManager.RegistrationCallback);
- method public void registerMmTelCapabilityCallback(java.util.concurrent.Executor, android.telephony.ims.ImsMmTelManager.CapabilityCallback);
- method public void setAdvancedCallingSetting(boolean);
- method public void setRttCapabilitySetting(boolean);
- method public void setVoWiFiModeSetting(int);
- method public void setVoWiFiNonPersistent(boolean, int);
- method public void setVoWiFiRoamingModeSetting(int);
- method public void setVoWiFiRoamingSetting(boolean);
- method public void setVoWiFiSetting(boolean);
- method public void setVtSetting(boolean);
- method public void unregisterImsRegistrationCallback(android.telephony.ims.ImsMmTelManager.RegistrationCallback);
- method public void unregisterMmTelCapabilityCallback(android.telephony.ims.ImsMmTelManager.CapabilityCallback);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiModeSetting();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiRoamingModeSetting();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAdvancedCallingSettingEnabled();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAvailable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isVoWiFiRoamingSettingEnabled();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isVoWiFiSettingEnabled();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isVtSettingEnabled();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerMmTelCapabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSetting(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiNonPersistent(boolean, int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingModeSetting(int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingSetting(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSetting(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSetting(boolean);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterMmTelCapabilityCallback(@NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback);
field public static final int WIFI_MODE_CELLULAR_PREFERRED = 1; // 0x1
field public static final int WIFI_MODE_WIFI_ONLY = 0; // 0x0
field public static final int WIFI_MODE_WIFI_PREFERRED = 2; // 0x2
@@ -7356,11 +7513,11 @@
}
public final class ImsReasonInfo implements android.os.Parcelable {
- ctor public ImsReasonInfo(int, int, java.lang.String);
+ ctor public ImsReasonInfo(int, int, String);
method public int describeContents();
method public int getCode();
method public int getExtraCode();
- method public java.lang.String getExtraMessage();
+ method public String getExtraMessage();
method public void writeToParcel(android.os.Parcel, int);
field public static final int CODE_ACCESS_CLASS_BLOCKED = 1512; // 0x5e8
field public static final int CODE_ANSWERED_ELSEWHERE = 1014; // 0x3f6
@@ -7536,7 +7693,7 @@
field public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3; // 0x3
field public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1; // 0x1
field public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; // 0x2
- field public static final java.lang.String EXTRA_MSG_SERVICE_NOT_AUTHORIZED = "Forbidden. Not Authorized for Service";
+ field public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED = "Forbidden. Not Authorized for Service";
}
public class ImsService extends android.app.Service {
@@ -7560,7 +7717,7 @@
method public int getResult();
method public int getServiceClass();
method public int getServiceType();
- method public android.telephony.ims.ImsSsInfo[] getSuppServiceInfo();
+ method @NonNull public android.telephony.ims.ImsSsInfo[] getSuppServiceInfo();
method public int getTeleserviceType();
method public boolean isTypeBarring();
method public boolean isTypeCf();
@@ -7622,18 +7779,18 @@
public static class ImsSsData.Builder {
ctor public ImsSsData.Builder(int, int, int, int, int);
- method public android.telephony.ims.ImsSsData build();
- method public android.telephony.ims.ImsSsData.Builder setCallForwardingInfo(android.telephony.ims.ImsCallForwardInfo[]);
- method public android.telephony.ims.ImsSsData.Builder setSuppServiceInfo(android.telephony.ims.ImsSsInfo[]);
+ method @NonNull public android.telephony.ims.ImsSsData build();
+ method @NonNull public android.telephony.ims.ImsSsData.Builder setCallForwardingInfo(@NonNull android.telephony.ims.ImsCallForwardInfo[]);
+ method @NonNull public android.telephony.ims.ImsSsData.Builder setSuppServiceInfo(@NonNull android.telephony.ims.ImsSsInfo[]);
}
public final class ImsSsInfo implements android.os.Parcelable {
- ctor public deprecated ImsSsInfo(int, java.lang.String);
+ ctor @Deprecated public ImsSsInfo(int, @Nullable String);
method public int describeContents();
method public int getClirInterrogationStatus();
method public int getClirOutgoingState();
- method public deprecated java.lang.String getIcbNum();
- method public java.lang.String getIncomingCommunicationBarringNumber();
+ method @Deprecated public String getIcbNum();
+ method public String getIncomingCommunicationBarringNumber();
method public int getProvisionStatus();
method public int getStatus();
method public void writeToParcel(android.os.Parcel, int);
@@ -7656,11 +7813,11 @@
public static class ImsSsInfo.Builder {
ctor public ImsSsInfo.Builder(int);
- method public android.telephony.ims.ImsSsInfo build();
- method public android.telephony.ims.ImsSsInfo.Builder setClirInterrogationStatus(int);
- method public android.telephony.ims.ImsSsInfo.Builder setClirOutgoingState(int);
- method public android.telephony.ims.ImsSsInfo.Builder setIncomingCommunicationBarringNumber(java.lang.String);
- method public android.telephony.ims.ImsSsInfo.Builder setProvisionStatus(int);
+ method @NonNull public android.telephony.ims.ImsSsInfo build();
+ method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirInterrogationStatus(int);
+ method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirOutgoingState(int);
+ method @NonNull public android.telephony.ims.ImsSsInfo.Builder setIncomingCommunicationBarringNumber(@NonNull String);
+ method @NonNull public android.telephony.ims.ImsSsInfo.Builder setProvisionStatus(int);
}
public final class ImsStreamMediaProfile implements android.os.Parcelable {
@@ -7715,15 +7872,15 @@
}
public final class ImsSuppServiceNotification implements android.os.Parcelable {
- ctor public ImsSuppServiceNotification(int, int, int, int, java.lang.String, java.lang.String[]);
+ ctor public ImsSuppServiceNotification(int, int, int, int, String, String[]);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSuppServiceNotification> CREATOR;
field public final int code;
- field public final java.lang.String[] history;
+ field public final String[] history;
field public final int index;
field public final int notificationType;
- field public final java.lang.String number;
+ field public final String number;
field public final int type;
}
@@ -7749,8 +7906,8 @@
method public abstract void onRequestCameraCapabilities();
method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
- method public abstract void onSetCamera(java.lang.String);
- method public void onSetCamera(java.lang.String, int);
+ method public abstract void onSetCamera(String);
+ method public void onSetCamera(String, int);
method public abstract void onSetDeviceOrientation(int);
method public abstract void onSetDisplaySurface(android.view.Surface);
method public abstract void onSetPauseImage(android.net.Uri);
@@ -7762,18 +7919,18 @@
public class ProvisioningManager {
method public static android.telephony.ims.ProvisioningManager createForSubscriptionId(android.content.Context, int);
- method public int getProvisioningIntValue(int);
- method public java.lang.String getProvisioningStringValue(int);
- method public void registerProvisioningChangedCallback(java.util.concurrent.Executor, android.telephony.ims.ProvisioningManager.Callback);
- method public int setProvisioningIntValue(int, int);
- method public int setProvisioningStringValue(int, java.lang.String);
- method public void unregisterProvisioningChangedCallback(android.telephony.ims.ProvisioningManager.Callback);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getProvisioningIntValue(int);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getProvisioningStringValue(int);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerProvisioningChangedCallback(java.util.concurrent.Executor, @NonNull android.telephony.ims.ProvisioningManager.Callback);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setProvisioningIntValue(int, int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setProvisioningStringValue(int, String);
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterProvisioningChangedCallback(@NonNull android.telephony.ims.ProvisioningManager.Callback);
}
public static class ProvisioningManager.Callback {
ctor public ProvisioningManager.Callback();
method public void onProvisioningIntChanged(int, int);
- method public void onProvisioningStringChanged(int, java.lang.String);
+ method public void onProvisioningStringChanged(int, String);
}
}
@@ -7781,8 +7938,8 @@
package android.telephony.ims.feature {
public final class CapabilityChangeRequest implements android.os.Parcelable {
- method public void addCapabilitiesToDisableForTech(int, int);
- method public void addCapabilitiesToEnableForTech(int, int);
+ method public void addCapabilitiesToDisableForTech(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
+ method public void addCapabilitiesToEnableForTech(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
method public int describeContents();
method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToDisable();
method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToEnable();
@@ -7791,8 +7948,8 @@
}
public static class CapabilityChangeRequest.CapabilityPair {
- ctor public CapabilityChangeRequest.CapabilityPair(int, int);
- method public int getCapability();
+ ctor public CapabilityChangeRequest.CapabilityPair(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
+ method @android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability public int getCapability();
method public int getRadioTech();
}
@@ -7822,44 +7979,44 @@
public class MmTelFeature extends android.telephony.ims.feature.ImsFeature {
ctor public MmTelFeature();
- method public void changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
- method public android.telephony.ims.ImsCallProfile createCallProfile(int, int);
- method public android.telephony.ims.stub.ImsCallSessionImplBase createCallSession(android.telephony.ims.ImsCallProfile);
- method public android.telephony.ims.stub.ImsEcbmImplBase getEcbm();
- method public android.telephony.ims.stub.ImsMultiEndpointImplBase getMultiEndpoint();
- method public android.telephony.ims.stub.ImsSmsImplBase getSmsImplementation();
- method public android.telephony.ims.stub.ImsUtImplBase getUt();
- method public final void notifyCapabilitiesStatusChanged(android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
- method public final void notifyIncomingCall(android.telephony.ims.stub.ImsCallSessionImplBase, android.os.Bundle);
- method public final void notifyRejectedCall(android.telephony.ims.ImsCallProfile, android.telephony.ims.ImsReasonInfo);
+ method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
+ method @Nullable public android.telephony.ims.ImsCallProfile createCallProfile(int, int);
+ method @Nullable public android.telephony.ims.stub.ImsCallSessionImplBase createCallSession(@NonNull android.telephony.ims.ImsCallProfile);
+ method @NonNull public android.telephony.ims.stub.ImsEcbmImplBase getEcbm();
+ method @NonNull public android.telephony.ims.stub.ImsMultiEndpointImplBase getMultiEndpoint();
+ method @NonNull public android.telephony.ims.stub.ImsSmsImplBase getSmsImplementation();
+ method @NonNull public android.telephony.ims.stub.ImsUtImplBase getUt();
+ method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
+ method public final void notifyIncomingCall(@NonNull android.telephony.ims.stub.ImsCallSessionImplBase, @NonNull android.os.Bundle);
+ method public final void notifyRejectedCall(@NonNull android.telephony.ims.ImsCallProfile, @NonNull android.telephony.ims.ImsReasonInfo);
method public final void notifyVoiceMessageCountUpdate(int);
method public void onFeatureReady();
method public void onFeatureRemoved();
- method public boolean queryCapabilityConfiguration(int, int);
+ method public boolean queryCapabilityConfiguration(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
method public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus();
- method public void setUiTtyMode(int, android.os.Message);
- method public int shouldProcessCall(java.lang.String[]);
+ method public void setUiTtyMode(int, @Nullable android.os.Message);
+ method @android.telephony.ims.feature.MmTelFeature.ProcessCallResult public int shouldProcessCall(@NonNull String[]);
field public static final int PROCESS_CALL_CSFB = 1; // 0x1
field public static final int PROCESS_CALL_IMS = 0; // 0x0
}
public static class MmTelFeature.MmTelCapabilities extends android.telephony.ims.feature.ImsFeature.Capabilities {
ctor public MmTelFeature.MmTelCapabilities();
- ctor public deprecated MmTelFeature.MmTelCapabilities(android.telephony.ims.feature.ImsFeature.Capabilities);
+ ctor @Deprecated public MmTelFeature.MmTelCapabilities(android.telephony.ims.feature.ImsFeature.Capabilities);
ctor public MmTelFeature.MmTelCapabilities(int);
- method public final void addCapabilities(int);
- method public final boolean isCapable(int);
- method public final void removeCapabilities(int);
+ method public final void addCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int);
+ method public final boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int);
+ method public final void removeCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int);
field public static final int CAPABILITY_TYPE_SMS = 8; // 0x8
field public static final int CAPABILITY_TYPE_UT = 4; // 0x4
field public static final int CAPABILITY_TYPE_VIDEO = 2; // 0x2
field public static final int CAPABILITY_TYPE_VOICE = 1; // 0x1
}
- public static abstract class MmTelFeature.MmTelCapabilities.MmTelCapability implements java.lang.annotation.Annotation {
+ @IntDef(flag=true, value={android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_SMS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MmTelFeature.MmTelCapabilities.MmTelCapability {
}
- public static abstract class MmTelFeature.ProcessCallResult implements java.lang.annotation.Annotation {
+ @IntDef(flag=true, value={android.telephony.ims.feature.MmTelFeature.PROCESS_CALL_IMS, android.telephony.ims.feature.MmTelFeature.PROCESS_CALL_CSFB}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MmTelFeature.ProcessCallResult {
}
public class RcsFeature extends android.telephony.ims.feature.ImsFeature {
@@ -7877,32 +8034,32 @@
ctor public ImsCallSessionImplBase();
method public void accept(int, android.telephony.ims.ImsStreamMediaProfile);
method public void close();
- method public void deflect(java.lang.String);
- method public void extendToConference(java.lang.String[]);
- method public java.lang.String getCallId();
+ method public void deflect(String);
+ method public void extendToConference(String[]);
+ method public String getCallId();
method public android.telephony.ims.ImsCallProfile getCallProfile();
method public android.telephony.ims.ImsVideoCallProvider getImsVideoCallProvider();
method public android.telephony.ims.ImsCallProfile getLocalCallProfile();
- method public java.lang.String getProperty(java.lang.String);
+ method public String getProperty(String);
method public android.telephony.ims.ImsCallProfile getRemoteCallProfile();
method public int getState();
method public void hold(android.telephony.ims.ImsStreamMediaProfile);
- method public void inviteParticipants(java.lang.String[]);
+ method public void inviteParticipants(String[]);
method public boolean isInCall();
method public boolean isMultiparty();
method public void merge();
method public void reject(int);
- method public void removeParticipants(java.lang.String[]);
+ method public void removeParticipants(String[]);
method public void resume(android.telephony.ims.ImsStreamMediaProfile);
method public void sendDtmf(char, android.os.Message);
- method public void sendRttMessage(java.lang.String);
+ method public void sendRttMessage(String);
method public void sendRttModifyRequest(android.telephony.ims.ImsCallProfile);
method public void sendRttModifyResponse(boolean);
- method public void sendUssd(java.lang.String);
+ method public void sendUssd(String);
method public void setListener(android.telephony.ims.ImsCallSessionListener);
method public void setMute(boolean);
- method public void start(java.lang.String, android.telephony.ims.ImsCallProfile);
- method public void startConference(java.lang.String[], android.telephony.ims.ImsCallProfile);
+ method public void start(String, android.telephony.ims.ImsCallProfile);
+ method public void startConference(String[], android.telephony.ims.ImsCallProfile);
method public void startDtmf(char);
method public void stopDtmf();
method public void terminate(int);
@@ -7912,7 +8069,7 @@
}
public static class ImsCallSessionImplBase.State {
- method public static java.lang.String toString(int);
+ method public static String toString(int);
field public static final int ESTABLISHED = 4; // 0x4
field public static final int ESTABLISHING = 3; // 0x3
field public static final int IDLE = 0; // 0x0
@@ -7928,11 +8085,11 @@
public class ImsConfigImplBase {
ctor public ImsConfigImplBase();
method public int getConfigInt(int);
- method public java.lang.String getConfigString(int);
+ method public String getConfigString(int);
method public final void notifyProvisionedValueChanged(int, int);
- method public final void notifyProvisionedValueChanged(int, java.lang.String);
+ method public final void notifyProvisionedValueChanged(int, String);
method public int setConfig(int, int);
- method public int setConfig(int, java.lang.String);
+ method public int setConfig(int, String);
field public static final int CONFIG_RESULT_FAILED = 1; // 0x1
field public static final int CONFIG_RESULT_SUCCESS = 0; // 0x0
field public static final int CONFIG_RESULT_UNKNOWN = -1; // 0xffffffff
@@ -7986,12 +8143,12 @@
ctor public ImsSmsImplBase();
method public void acknowledgeSms(int, int, int);
method public void acknowledgeSmsReport(int, int, int);
- method public java.lang.String getSmsFormat();
+ method public String getSmsFormat();
method public void onReady();
method public final void onSendSmsResult(int, int, int, int) throws java.lang.RuntimeException;
- method public final void onSmsReceived(int, java.lang.String, byte[]) throws java.lang.RuntimeException;
- method public final void onSmsStatusReportReceived(int, int, java.lang.String, byte[]) throws java.lang.RuntimeException;
- method public void sendSms(int, int, java.lang.String, java.lang.String, boolean, byte[]);
+ method public final void onSmsReceived(int, String, byte[]) throws java.lang.RuntimeException;
+ method public final void onSmsStatusReportReceived(int, int, String, byte[]) throws java.lang.RuntimeException;
+ method public void sendSms(int, int, String, String, boolean, byte[]);
field public static final int DELIVER_STATUS_ERROR_GENERIC = 2; // 0x2
field public static final int DELIVER_STATUS_ERROR_NO_MEMORY = 3; // 0x3
field public static final int DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED = 4; // 0x4
@@ -8009,7 +8166,7 @@
method public void close();
method public int queryCallBarring(int);
method public int queryCallBarringForServiceClass(int, int);
- method public int queryCallForward(int, java.lang.String);
+ method public int queryCallForward(int, String);
method public int queryCallWaiting();
method public int queryClip();
method public int queryClir();
@@ -8017,9 +8174,9 @@
method public int queryColr();
method public void setListener(android.telephony.ims.ImsUtListener);
method public int transact(android.os.Bundle);
- method public int updateCallBarring(int, int, java.lang.String[]);
- method public int updateCallBarringForServiceClass(int, int, java.lang.String[], int);
- method public int updateCallForward(int, int, java.lang.String, int, int);
+ method public int updateCallBarring(int, int, String[]);
+ method public int updateCallBarringForServiceClass(int, int, String[], int);
+ method public int updateCallForward(int, int, String, int, int);
method public int updateCallWaiting(boolean, int);
method public int updateClip(boolean);
method public int updateClir(int);
@@ -8032,15 +8189,15 @@
package android.telephony.mbms {
public static class DownloadRequest.Builder {
- method public android.telephony.mbms.DownloadRequest.Builder setServiceId(java.lang.String);
+ method public android.telephony.mbms.DownloadRequest.Builder setServiceId(String);
}
public final class FileInfo implements android.os.Parcelable {
- ctor public FileInfo(android.net.Uri, java.lang.String);
+ ctor public FileInfo(android.net.Uri, String);
}
public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
- ctor public FileServiceInfo(java.util.Map<java.util.Locale, java.lang.String>, java.lang.String, java.util.List<java.util.Locale>, java.lang.String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>);
+ ctor public FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>);
}
public class MbmsDownloadReceiver extends android.content.BroadcastReceiver {
@@ -8054,7 +8211,7 @@
}
public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
- ctor public StreamingServiceInfo(java.util.Map<java.util.Locale, java.lang.String>, java.lang.String, java.util.List<java.util.Locale>, java.lang.String, java.util.Date, java.util.Date);
+ ctor public StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date);
}
public final class UriPathPair implements android.os.Parcelable {
@@ -8073,18 +8230,22 @@
ctor public MbmsDownloadServiceBase();
method public int addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
method public int addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
+ method public android.os.IBinder asBinder();
method public int cancelDownload(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
method public void dispose(int) throws android.os.RemoteException;
method public int download(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
+ method public static String getDefaultTransactionName(int);
+ method public String getTransactionName(int);
method public int initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback) throws android.os.RemoteException;
- method public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(int) throws android.os.RemoteException;
+ method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(int) throws android.os.RemoteException;
method public void onAppCallbackDied(int, int);
+ method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
method public int removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
method public int removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
method public int requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) throws android.os.RemoteException;
method public int requestUpdateFileServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
method public int resetDownloadKnowledge(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
- method public int setTempFileRootDirectory(int, java.lang.String) throws android.os.RemoteException;
+ method public int setTempFileRootDirectory(int, String) throws android.os.RemoteException;
}
public class MbmsGroupCallServiceBase extends android.app.Service {
@@ -8100,30 +8261,34 @@
public class MbmsStreamingServiceBase extends android.os.Binder {
ctor public MbmsStreamingServiceBase();
+ method public android.os.IBinder asBinder();
method public void dispose(int) throws android.os.RemoteException;
- method public android.net.Uri getPlaybackUri(int, java.lang.String) throws android.os.RemoteException;
+ method public static String getDefaultTransactionName(int);
+ method @Nullable public android.net.Uri getPlaybackUri(int, String) throws android.os.RemoteException;
+ method public String getTransactionName(int);
method public int initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) throws android.os.RemoteException;
method public void onAppCallbackDied(int, int);
+ method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
method public int requestUpdateStreamingServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
- method public int startStreaming(int, java.lang.String, android.telephony.mbms.StreamingServiceCallback) throws android.os.RemoteException;
- method public void stopStreaming(int, java.lang.String) throws android.os.RemoteException;
+ method public int startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) throws android.os.RemoteException;
+ method public void stopStreaming(int, String) throws android.os.RemoteException;
}
public class VendorUtils {
ctor public VendorUtils();
- method public static android.content.ComponentName getAppReceiverFromPackageName(android.content.Context, java.lang.String);
- field public static final java.lang.String ACTION_CLEANUP = "android.telephony.mbms.action.CLEANUP";
- field public static final java.lang.String ACTION_DOWNLOAD_RESULT_INTERNAL = "android.telephony.mbms.action.DOWNLOAD_RESULT_INTERNAL";
- field public static final java.lang.String ACTION_FILE_DESCRIPTOR_REQUEST = "android.telephony.mbms.action.FILE_DESCRIPTOR_REQUEST";
- field public static final java.lang.String EXTRA_FD_COUNT = "android.telephony.mbms.extra.FD_COUNT";
- field public static final java.lang.String EXTRA_FINAL_URI = "android.telephony.mbms.extra.FINAL_URI";
- field public static final java.lang.String EXTRA_FREE_URI_LIST = "android.telephony.mbms.extra.FREE_URI_LIST";
- field public static final java.lang.String EXTRA_PAUSED_LIST = "android.telephony.mbms.extra.PAUSED_LIST";
- field public static final java.lang.String EXTRA_PAUSED_URI_LIST = "android.telephony.mbms.extra.PAUSED_URI_LIST";
- field public static final java.lang.String EXTRA_SERVICE_ID = "android.telephony.mbms.extra.SERVICE_ID";
- field public static final java.lang.String EXTRA_TEMP_FILES_IN_USE = "android.telephony.mbms.extra.TEMP_FILES_IN_USE";
- field public static final java.lang.String EXTRA_TEMP_FILE_ROOT = "android.telephony.mbms.extra.TEMP_FILE_ROOT";
- field public static final java.lang.String EXTRA_TEMP_LIST = "android.telephony.mbms.extra.TEMP_LIST";
+ method public static android.content.ComponentName getAppReceiverFromPackageName(android.content.Context, String);
+ field public static final String ACTION_CLEANUP = "android.telephony.mbms.action.CLEANUP";
+ field public static final String ACTION_DOWNLOAD_RESULT_INTERNAL = "android.telephony.mbms.action.DOWNLOAD_RESULT_INTERNAL";
+ field public static final String ACTION_FILE_DESCRIPTOR_REQUEST = "android.telephony.mbms.action.FILE_DESCRIPTOR_REQUEST";
+ field public static final String EXTRA_FD_COUNT = "android.telephony.mbms.extra.FD_COUNT";
+ field public static final String EXTRA_FINAL_URI = "android.telephony.mbms.extra.FINAL_URI";
+ field public static final String EXTRA_FREE_URI_LIST = "android.telephony.mbms.extra.FREE_URI_LIST";
+ field public static final String EXTRA_PAUSED_LIST = "android.telephony.mbms.extra.PAUSED_LIST";
+ field public static final String EXTRA_PAUSED_URI_LIST = "android.telephony.mbms.extra.PAUSED_URI_LIST";
+ field public static final String EXTRA_SERVICE_ID = "android.telephony.mbms.extra.SERVICE_ID";
+ field public static final String EXTRA_TEMP_FILES_IN_USE = "android.telephony.mbms.extra.TEMP_FILES_IN_USE";
+ field public static final String EXTRA_TEMP_FILE_ROOT = "android.telephony.mbms.extra.TEMP_FILE_ROOT";
+ field public static final String EXTRA_TEMP_LIST = "android.telephony.mbms.extra.TEMP_LIST";
}
}
@@ -8143,20 +8308,20 @@
package android.view {
public abstract class Window {
- method public void addSystemFlags(int);
+ method public void addSystemFlags(@android.view.WindowManager.LayoutParams.SystemFlags int);
}
- public abstract interface WindowManager implements android.view.ViewManager {
- method public abstract android.graphics.Region getCurrentImeTouchRegion();
+ public interface WindowManager extends android.view.ViewManager {
+ method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public android.graphics.Region getCurrentImeTouchRegion();
}
public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
method public final long getUserActivityTimeout();
method public final void setUserActivityTimeout(long);
- field public static final int SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS = 524288; // 0x80000
+ field @RequiresPermission(android.Manifest.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS) public static final int SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS = 524288; // 0x80000
}
- public static abstract class WindowManager.LayoutParams.SystemFlags implements java.lang.annotation.Annotation {
+ @IntDef(flag=true, prefix={"SYSTEM_FLAG_"}, value={android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowManager.LayoutParams.SystemFlags {
}
}
@@ -8165,7 +8330,7 @@
public final class AccessibilityManager {
method public int getAccessibilityWindowId(android.os.IBinder);
- method public void performAccessibilityShortcut();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void performAccessibilityShortcut();
}
}
@@ -8173,13 +8338,13 @@
package android.view.contentcapture {
public final class ContentCaptureContext implements android.os.Parcelable {
- method public android.content.ComponentName getActivityComponent();
+ method @Nullable public android.content.ComponentName getActivityComponent();
method public int getDisplayId();
- method public android.os.Bundle getExtras();
+ method @Nullable public android.os.Bundle getExtras();
method public int getFlags();
- method public android.view.contentcapture.ContentCaptureSessionId getParentSessionId();
+ method @Nullable public android.view.contentcapture.ContentCaptureSessionId getParentSessionId();
method public int getTaskId();
- method public android.net.Uri getUri();
+ method @Nullable public android.net.Uri getUri();
field public static final int FLAG_DISABLED_BY_APP = 1; // 0x1
field public static final int FLAG_DISABLED_BY_FLAG_SECURE = 2; // 0x2
}
@@ -8187,11 +8352,11 @@
public final class ContentCaptureEvent implements android.os.Parcelable {
method public int describeContents();
method public long getEventTime();
- method public int getFlags();
- method public android.view.autofill.AutofillId getId();
- method public java.lang.CharSequence getText();
+ method @Nullable public android.view.autofill.AutofillId getId();
+ method @Nullable public java.util.List<android.view.autofill.AutofillId> getIds();
+ method @Nullable public CharSequence getText();
method public int getType();
- method public android.view.contentcapture.ViewNode getViewNode();
+ method @Nullable public android.view.contentcapture.ViewNode getViewNode();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureEvent> CREATOR;
field public static final int TYPE_VIEW_APPEARED = 1; // 0x1
@@ -8200,18 +8365,18 @@
}
public final class UserDataRemovalRequest implements android.os.Parcelable {
- method public java.lang.String getPackageName();
- method public java.util.List<android.view.contentcapture.UserDataRemovalRequest.UriRequest> getUriRequests();
+ method @NonNull public String getPackageName();
+ method @NonNull public java.util.List<android.view.contentcapture.UserDataRemovalRequest.UriRequest> getUriRequests();
method public boolean isForEverything();
}
public final class UserDataRemovalRequest.UriRequest {
- method public android.net.Uri getUri();
- method public boolean isRecursive();
+ method @NonNull public android.net.Uri getUri();
+ method @NonNull public boolean isRecursive();
}
public final class ViewNode extends android.app.assist.AssistStructure.ViewNode {
- method public android.view.autofill.AutofillId getParentAutofillId();
+ method @Nullable public android.view.autofill.AutofillId getParentAutofillId();
}
}
@@ -8220,8 +8385,8 @@
public abstract class CookieManager {
method protected abstract boolean allowFileSchemeCookiesImpl();
- method public abstract java.lang.String getCookie(java.lang.String, boolean);
- method public synchronized java.lang.String getCookie(android.net.WebAddress);
+ method public abstract String getCookie(String, boolean);
+ method public String getCookie(android.net.WebAddress);
method public abstract boolean hasCookies(boolean);
method protected abstract void setAcceptFileSchemeCookiesImpl(boolean);
}
@@ -8229,7 +8394,7 @@
public class FindActionModeCallback implements android.view.ActionMode.Callback android.text.TextWatcher android.view.View.OnClickListener android.webkit.WebView.FindListener {
ctor public FindActionModeCallback(android.content.Context);
method public void afterTextChanged(android.text.Editable);
- method public void beforeTextChanged(java.lang.CharSequence, int, int, int);
+ method public void beforeTextChanged(CharSequence, int, int, int);
method public void findAll();
method public void finish();
method public int getActionModeGlobalBottom();
@@ -8239,9 +8404,9 @@
method public void onDestroyActionMode(android.view.ActionMode);
method public void onFindResultReceived(int, int, boolean);
method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
- method public void onTextChanged(java.lang.CharSequence, int, int, int);
- method public void setText(java.lang.String);
- method public void setWebView(android.webkit.WebView);
+ method public void onTextChanged(CharSequence, int, int, int);
+ method public void setText(String);
+ method public void setWebView(@NonNull android.webkit.WebView);
method public void showSoftInput();
method public void updateMatchCount(int, int, boolean);
}
@@ -8263,7 +8428,7 @@
}
public class JsDialogHelper {
- ctor public JsDialogHelper(android.webkit.JsPromptResult, int, java.lang.String, java.lang.String, java.lang.String);
+ ctor public JsDialogHelper(android.webkit.JsPromptResult, int, String, String, String);
ctor public JsDialogHelper(android.webkit.JsPromptResult, android.os.Message);
method public boolean invokeCallback(android.webkit.WebChromeClient, android.webkit.WebView);
method public void showDialog(android.content.Context);
@@ -8275,7 +8440,7 @@
public class JsPromptResult extends android.webkit.JsResult {
ctor public JsPromptResult(android.webkit.JsResult.ResultReceiver);
- method public java.lang.String getStringResult();
+ method public String getStringResult();
}
public class JsResult {
@@ -8283,28 +8448,28 @@
method public final boolean getResult();
}
- public static abstract interface JsResult.ResultReceiver {
- method public abstract void onJsResultComplete(android.webkit.JsResult);
+ public static interface JsResult.ResultReceiver {
+ method public void onJsResultComplete(android.webkit.JsResult);
}
public class SslErrorHandler extends android.os.Handler {
ctor public SslErrorHandler();
}
- public abstract deprecated class TokenBindingService {
- ctor public TokenBindingService();
+ @Deprecated public abstract class TokenBindingService {
+ ctor @Deprecated public TokenBindingService();
}
public class WebChromeClient {
- method public deprecated void openFileChooser(android.webkit.ValueCallback<android.net.Uri>, java.lang.String, java.lang.String);
+ method @Deprecated public void openFileChooser(android.webkit.ValueCallback<android.net.Uri>, String, String);
}
public abstract class WebHistoryItem implements java.lang.Cloneable {
- method public abstract deprecated int getId();
+ method @Deprecated public abstract int getId();
}
- public abstract deprecated class WebIconDatabase {
- method public abstract void bulkRequestIconForPageUrl(android.content.ContentResolver, java.lang.String, android.webkit.WebIconDatabase.IconListener);
+ @Deprecated public abstract class WebIconDatabase {
+ method @Deprecated public abstract void bulkRequestIconForPageUrl(android.content.ContentResolver, String, android.webkit.WebIconDatabase.IconListener);
}
public abstract class WebMessagePort {
@@ -8316,21 +8481,21 @@
}
public class WebResourceResponse {
- ctor public WebResourceResponse(boolean, java.lang.String, java.lang.String, int, java.lang.String, java.util.Map<java.lang.String, java.lang.String>, java.io.InputStream);
+ ctor public WebResourceResponse(boolean, String, String, int, String, java.util.Map<java.lang.String,java.lang.String>, java.io.InputStream);
}
public abstract class WebSettings {
method public abstract boolean getAcceptThirdPartyCookies();
- method public abstract deprecated boolean getNavDump();
- method public abstract deprecated boolean getPluginsEnabled();
- method public abstract deprecated boolean getUseWebViewBackgroundForOverscrollBackground();
- method public abstract deprecated int getUserAgent();
+ method @Deprecated public abstract boolean getNavDump();
+ method @Deprecated public abstract boolean getPluginsEnabled();
+ method @Deprecated public abstract boolean getUseWebViewBackgroundForOverscrollBackground();
+ method @Deprecated public abstract int getUserAgent();
method public abstract boolean getVideoOverlayForEmbeddedEncryptedVideoEnabled();
method public abstract void setAcceptThirdPartyCookies(boolean);
- method public abstract deprecated void setNavDump(boolean);
- method public abstract deprecated void setPluginsEnabled(boolean);
- method public abstract deprecated void setUseWebViewBackgroundForOverscrollBackground(boolean);
- method public abstract deprecated void setUserAgent(int);
+ method @Deprecated public abstract void setNavDump(boolean);
+ method @Deprecated public abstract void setPluginsEnabled(boolean);
+ method @Deprecated public abstract void setUseWebViewBackgroundForOverscrollBackground(boolean);
+ method @Deprecated public abstract void setUserAgent(int);
method public abstract void setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean);
}
@@ -8339,7 +8504,7 @@
}
public static class WebStorage.Origin {
- ctor protected WebStorage.Origin(java.lang.String, long, long);
+ ctor protected WebStorage.Origin(String, long, long);
}
public class WebView extends android.widget.AbsoluteLayout implements android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewTreeObserver.OnGlobalFocusChangeListener {
@@ -8348,7 +8513,7 @@
public static class WebView.HitTestResult {
ctor public WebView.HitTestResult();
- method public void setExtra(java.lang.String);
+ method public void setExtra(String);
method public void setType(int);
}
@@ -8382,28 +8547,28 @@
public final class WebViewDelegate {
method public void addWebViewAssetPath(android.content.Context);
method public void callDrawGlFunction(android.graphics.Canvas, long);
- method public void callDrawGlFunction(android.graphics.Canvas, long, java.lang.Runnable);
+ method public void callDrawGlFunction(@NonNull android.graphics.Canvas, long, @Nullable Runnable);
method public boolean canInvokeDrawGlFunctor(android.view.View);
method public void detachDrawGlFunctor(android.view.View, long);
- method public void drawWebViewFunctor(android.graphics.Canvas, int);
+ method public void drawWebViewFunctor(@NonNull android.graphics.Canvas, int);
method public android.app.Application getApplication();
- method public java.lang.String getDataDirectorySuffix();
- method public java.lang.String getErrorString(android.content.Context, int);
- method public int getPackageId(android.content.res.Resources, java.lang.String);
+ method public String getDataDirectorySuffix();
+ method public String getErrorString(android.content.Context, int);
+ method public int getPackageId(android.content.res.Resources, String);
method public void invokeDrawGlFunctor(android.view.View, long, boolean);
method public boolean isMultiProcessEnabled();
method public boolean isTraceTagEnabled();
method public void setOnTraceEnabledChangeListener(android.webkit.WebViewDelegate.OnTraceEnabledChangeListener);
}
- public static abstract interface WebViewDelegate.OnTraceEnabledChangeListener {
- method public abstract void onTraceEnabledChange(boolean);
+ public static interface WebViewDelegate.OnTraceEnabledChangeListener {
+ method public void onTraceEnabledChange(boolean);
}
public final class WebViewFactory {
ctor public WebViewFactory();
method public static android.content.pm.PackageInfo getLoadedPackageInfo();
- method public static int loadWebViewNativeLibraryFromPackage(java.lang.String, java.lang.ClassLoader);
+ method public static int loadWebViewNativeLibraryFromPackage(String, ClassLoader);
method public static void prepareWebViewInZygote();
field public static final int LIBLOAD_ADDRESS_SPACE_NOT_RESERVED = 2; // 0x2
field public static final int LIBLOAD_FAILED_JNI_CALL = 7; // 0x7
@@ -8417,214 +8582,217 @@
field public static final int LIBLOAD_WRONG_PACKAGE_NAME = 1; // 0x1
}
- public abstract interface WebViewFactoryProvider {
- method public abstract android.webkit.WebViewProvider createWebView(android.webkit.WebView, android.webkit.WebView.PrivateAccess);
- method public abstract android.webkit.CookieManager getCookieManager();
- method public abstract android.webkit.GeolocationPermissions getGeolocationPermissions();
- method public abstract android.webkit.ServiceWorkerController getServiceWorkerController();
- method public abstract android.webkit.WebViewFactoryProvider.Statics getStatics();
- method public abstract deprecated android.webkit.TokenBindingService getTokenBindingService();
- method public abstract android.webkit.TracingController getTracingController();
- method public abstract android.webkit.WebIconDatabase getWebIconDatabase();
- method public abstract android.webkit.WebStorage getWebStorage();
- method public abstract java.lang.ClassLoader getWebViewClassLoader();
- method public abstract android.webkit.WebViewDatabase getWebViewDatabase(android.content.Context);
+ public interface WebViewFactoryProvider {
+ method public android.webkit.WebViewProvider createWebView(android.webkit.WebView, android.webkit.WebView.PrivateAccess);
+ method public android.webkit.CookieManager getCookieManager();
+ method public android.webkit.GeolocationPermissions getGeolocationPermissions();
+ method public android.webkit.ServiceWorkerController getServiceWorkerController();
+ method public android.webkit.WebViewFactoryProvider.Statics getStatics();
+ method @Deprecated public android.webkit.TokenBindingService getTokenBindingService();
+ method public android.webkit.TracingController getTracingController();
+ method public android.webkit.WebIconDatabase getWebIconDatabase();
+ method public android.webkit.WebStorage getWebStorage();
+ method public ClassLoader getWebViewClassLoader();
+ method public android.webkit.WebViewDatabase getWebViewDatabase(android.content.Context);
}
- public static abstract interface WebViewFactoryProvider.Statics {
- method public abstract void clearClientCertPreferences(java.lang.Runnable);
- method public abstract void enableSlowWholeDocumentDraw();
- method public abstract java.lang.String findAddress(java.lang.String);
- method public abstract void freeMemoryForTests();
- method public abstract java.lang.String getDefaultUserAgent(android.content.Context);
- method public abstract android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
- method public abstract void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback<java.lang.Boolean>);
- method public abstract android.net.Uri[] parseFileChooserResult(int, android.content.Intent);
- method public abstract void setSafeBrowsingWhitelist(java.util.List<java.lang.String>, android.webkit.ValueCallback<java.lang.Boolean>);
- method public abstract void setWebContentsDebuggingEnabled(boolean);
+ public static interface WebViewFactoryProvider.Statics {
+ method public void clearClientCertPreferences(Runnable);
+ method public void enableSlowWholeDocumentDraw();
+ method public String findAddress(String);
+ method public void freeMemoryForTests();
+ method public String getDefaultUserAgent(android.content.Context);
+ method @NonNull public android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
+ method public void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback<java.lang.Boolean>);
+ method public android.net.Uri[] parseFileChooserResult(int, android.content.Intent);
+ method public void setSafeBrowsingWhitelist(java.util.List<java.lang.String>, android.webkit.ValueCallback<java.lang.Boolean>);
+ method public void setWebContentsDebuggingEnabled(boolean);
}
- public abstract interface WebViewProvider {
- method public abstract void addJavascriptInterface(java.lang.Object, java.lang.String);
- method public abstract boolean canGoBack();
- method public abstract boolean canGoBackOrForward(int);
- method public abstract boolean canGoForward();
- method public abstract boolean canZoomIn();
- method public abstract boolean canZoomOut();
- method public abstract android.graphics.Picture capturePicture();
- method public abstract void clearCache(boolean);
- method public abstract void clearFormData();
- method public abstract void clearHistory();
- method public abstract void clearMatches();
- method public abstract void clearSslPreferences();
- method public abstract void clearView();
- method public abstract android.webkit.WebBackForwardList copyBackForwardList();
- method public abstract android.print.PrintDocumentAdapter createPrintDocumentAdapter(java.lang.String);
- method public abstract android.webkit.WebMessagePort[] createWebMessageChannel();
- method public abstract void destroy();
- method public abstract void documentHasImages(android.os.Message);
- method public abstract void dumpViewHierarchyWithProperties(java.io.BufferedWriter, int);
- method public abstract void evaluateJavaScript(java.lang.String, android.webkit.ValueCallback<java.lang.String>);
- method public abstract int findAll(java.lang.String);
- method public abstract void findAllAsync(java.lang.String);
- method public abstract android.view.View findHierarchyView(java.lang.String, int);
- method public abstract void findNext(boolean);
- method public abstract void flingScroll(int, int);
- method public abstract void freeMemory();
- method public abstract android.net.http.SslCertificate getCertificate();
- method public abstract int getContentHeight();
- method public abstract int getContentWidth();
- method public abstract android.graphics.Bitmap getFavicon();
- method public abstract android.webkit.WebView.HitTestResult getHitTestResult();
- method public abstract java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String);
- method public abstract java.lang.String getOriginalUrl();
- method public abstract int getProgress();
- method public abstract boolean getRendererPriorityWaivedWhenNotVisible();
- method public abstract int getRendererRequestedPriority();
- method public abstract float getScale();
- method public abstract android.webkit.WebViewProvider.ScrollDelegate getScrollDelegate();
- method public abstract android.webkit.WebSettings getSettings();
- method public default android.view.textclassifier.TextClassifier getTextClassifier();
- method public abstract java.lang.String getTitle();
- method public abstract java.lang.String getTouchIconUrl();
- method public abstract java.lang.String getUrl();
- method public abstract android.webkit.WebViewProvider.ViewDelegate getViewDelegate();
- method public abstract int getVisibleTitleHeight();
- method public abstract android.webkit.WebChromeClient getWebChromeClient();
- method public abstract android.webkit.WebViewClient getWebViewClient();
- method public abstract android.view.View getZoomControls();
- method public abstract void goBack();
- method public abstract void goBackOrForward(int);
- method public abstract void goForward();
- method public abstract void init(java.util.Map<java.lang.String, java.lang.Object>, boolean);
- method public abstract void insertVisualStateCallback(long, android.webkit.WebView.VisualStateCallback);
- method public abstract void invokeZoomPicker();
- method public abstract boolean isPaused();
- method public abstract boolean isPrivateBrowsingEnabled();
- method public abstract void loadData(java.lang.String, java.lang.String, java.lang.String);
- method public abstract void loadDataWithBaseURL(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public abstract void loadUrl(java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
- method public abstract void loadUrl(java.lang.String);
- method public abstract void notifyFindDialogDismissed();
- method public abstract void onPause();
- method public abstract void onResume();
- method public abstract boolean overlayHorizontalScrollbar();
- method public abstract boolean overlayVerticalScrollbar();
- method public abstract boolean pageDown(boolean);
- method public abstract boolean pageUp(boolean);
- method public abstract void pauseTimers();
- method public abstract void postMessageToMainFrame(android.webkit.WebMessage, android.net.Uri);
- method public abstract void postUrl(java.lang.String, byte[]);
- method public abstract void reload();
- method public abstract void removeJavascriptInterface(java.lang.String);
- method public abstract void requestFocusNodeHref(android.os.Message);
- method public abstract void requestImageRef(android.os.Message);
- method public abstract boolean restorePicture(android.os.Bundle, java.io.File);
- method public abstract android.webkit.WebBackForwardList restoreState(android.os.Bundle);
- method public abstract void resumeTimers();
- method public abstract void savePassword(java.lang.String, java.lang.String, java.lang.String);
- method public abstract boolean savePicture(android.os.Bundle, java.io.File);
- method public abstract android.webkit.WebBackForwardList saveState(android.os.Bundle);
- method public abstract void saveWebArchive(java.lang.String);
- method public abstract void saveWebArchive(java.lang.String, boolean, android.webkit.ValueCallback<java.lang.String>);
- method public abstract void setCertificate(android.net.http.SslCertificate);
- method public abstract void setDownloadListener(android.webkit.DownloadListener);
- method public abstract void setFindListener(android.webkit.WebView.FindListener);
- method public abstract void setHorizontalScrollbarOverlay(boolean);
- method public abstract void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public abstract void setInitialScale(int);
- method public abstract void setMapTrackballToArrowKeys(boolean);
- method public abstract void setNetworkAvailable(boolean);
- method public abstract void setPictureListener(android.webkit.WebView.PictureListener);
- method public abstract void setRendererPriorityPolicy(int, boolean);
- method public default void setTextClassifier(android.view.textclassifier.TextClassifier);
- method public abstract void setVerticalScrollbarOverlay(boolean);
- method public abstract void setWebChromeClient(android.webkit.WebChromeClient);
- method public abstract void setWebViewClient(android.webkit.WebViewClient);
- method public abstract boolean showFindDialog(java.lang.String, boolean);
- method public abstract void stopLoading();
- method public abstract boolean zoomBy(float);
- method public abstract boolean zoomIn();
- method public abstract boolean zoomOut();
+ public interface WebViewProvider {
+ method public void addJavascriptInterface(Object, String);
+ method public boolean canGoBack();
+ method public boolean canGoBackOrForward(int);
+ method public boolean canGoForward();
+ method public boolean canZoomIn();
+ method public boolean canZoomOut();
+ method public android.graphics.Picture capturePicture();
+ method public void clearCache(boolean);
+ method public void clearFormData();
+ method public void clearHistory();
+ method public void clearMatches();
+ method public void clearSslPreferences();
+ method public void clearView();
+ method public android.webkit.WebBackForwardList copyBackForwardList();
+ method public android.print.PrintDocumentAdapter createPrintDocumentAdapter(String);
+ method public android.webkit.WebMessagePort[] createWebMessageChannel();
+ method public void destroy();
+ method public void documentHasImages(android.os.Message);
+ method public void dumpViewHierarchyWithProperties(java.io.BufferedWriter, int);
+ method public void evaluateJavaScript(String, android.webkit.ValueCallback<java.lang.String>);
+ method public int findAll(String);
+ method public void findAllAsync(String);
+ method public android.view.View findHierarchyView(String, int);
+ method public void findNext(boolean);
+ method public void flingScroll(int, int);
+ method public void freeMemory();
+ method public android.net.http.SslCertificate getCertificate();
+ method public int getContentHeight();
+ method public int getContentWidth();
+ method public android.graphics.Bitmap getFavicon();
+ method public android.webkit.WebView.HitTestResult getHitTestResult();
+ method public String[] getHttpAuthUsernamePassword(String, String);
+ method public String getOriginalUrl();
+ method public int getProgress();
+ method public boolean getRendererPriorityWaivedWhenNotVisible();
+ method public int getRendererRequestedPriority();
+ method public float getScale();
+ method public android.webkit.WebViewProvider.ScrollDelegate getScrollDelegate();
+ method public android.webkit.WebSettings getSettings();
+ method @NonNull public default android.view.textclassifier.TextClassifier getTextClassifier();
+ method public String getTitle();
+ method public String getTouchIconUrl();
+ method public String getUrl();
+ method public android.webkit.WebViewProvider.ViewDelegate getViewDelegate();
+ method public int getVisibleTitleHeight();
+ method public android.webkit.WebChromeClient getWebChromeClient();
+ method public android.webkit.WebViewClient getWebViewClient();
+ method public android.webkit.WebViewRenderer getWebViewRenderer();
+ method public android.webkit.WebViewRendererClient getWebViewRendererClient();
+ method public android.view.View getZoomControls();
+ method public void goBack();
+ method public void goBackOrForward(int);
+ method public void goForward();
+ method public void init(java.util.Map<java.lang.String,java.lang.Object>, boolean);
+ method public void insertVisualStateCallback(long, android.webkit.WebView.VisualStateCallback);
+ method public void invokeZoomPicker();
+ method public boolean isPaused();
+ method public boolean isPrivateBrowsingEnabled();
+ method public void loadData(String, String, String);
+ method public void loadDataWithBaseURL(String, String, String, String, String);
+ method public void loadUrl(String, java.util.Map<java.lang.String,java.lang.String>);
+ method public void loadUrl(String);
+ method public void notifyFindDialogDismissed();
+ method public void onPause();
+ method public void onResume();
+ method public boolean overlayHorizontalScrollbar();
+ method public boolean overlayVerticalScrollbar();
+ method public boolean pageDown(boolean);
+ method public boolean pageUp(boolean);
+ method public void pauseTimers();
+ method public void postMessageToMainFrame(android.webkit.WebMessage, android.net.Uri);
+ method public void postUrl(String, byte[]);
+ method public void reload();
+ method public void removeJavascriptInterface(String);
+ method public void requestFocusNodeHref(android.os.Message);
+ method public void requestImageRef(android.os.Message);
+ method public boolean restorePicture(android.os.Bundle, java.io.File);
+ method public android.webkit.WebBackForwardList restoreState(android.os.Bundle);
+ method public void resumeTimers();
+ method public void savePassword(String, String, String);
+ method public boolean savePicture(android.os.Bundle, java.io.File);
+ method public android.webkit.WebBackForwardList saveState(android.os.Bundle);
+ method public void saveWebArchive(String);
+ method public void saveWebArchive(String, boolean, android.webkit.ValueCallback<java.lang.String>);
+ method public void setCertificate(android.net.http.SslCertificate);
+ method public void setDownloadListener(android.webkit.DownloadListener);
+ method public void setFindListener(android.webkit.WebView.FindListener);
+ method public void setHorizontalScrollbarOverlay(boolean);
+ method public void setHttpAuthUsernamePassword(String, String, String, String);
+ method public void setInitialScale(int);
+ method public void setMapTrackballToArrowKeys(boolean);
+ method public void setNetworkAvailable(boolean);
+ method public void setPictureListener(android.webkit.WebView.PictureListener);
+ method public void setRendererPriorityPolicy(int, boolean);
+ method public default void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
+ method public void setVerticalScrollbarOverlay(boolean);
+ method public void setWebChromeClient(android.webkit.WebChromeClient);
+ method public void setWebViewClient(android.webkit.WebViewClient);
+ method public void setWebViewRendererClient(@Nullable java.util.concurrent.Executor, @Nullable android.webkit.WebViewRendererClient);
+ method public boolean showFindDialog(String, boolean);
+ method public void stopLoading();
+ method public boolean zoomBy(float);
+ method public boolean zoomIn();
+ method public boolean zoomOut();
}
- public static abstract interface WebViewProvider.ScrollDelegate {
- method public abstract int computeHorizontalScrollOffset();
- method public abstract int computeHorizontalScrollRange();
- method public abstract void computeScroll();
- method public abstract int computeVerticalScrollExtent();
- method public abstract int computeVerticalScrollOffset();
- method public abstract int computeVerticalScrollRange();
+ public static interface WebViewProvider.ScrollDelegate {
+ method public int computeHorizontalScrollOffset();
+ method public int computeHorizontalScrollRange();
+ method public void computeScroll();
+ method public int computeVerticalScrollExtent();
+ method public int computeVerticalScrollOffset();
+ method public int computeVerticalScrollRange();
}
- public static abstract interface WebViewProvider.ViewDelegate {
+ public static interface WebViewProvider.ViewDelegate {
method public default void autofill(android.util.SparseArray<android.view.autofill.AutofillValue>);
- method public abstract boolean dispatchKeyEvent(android.view.KeyEvent);
- method public abstract android.view.View findFocus(android.view.View);
- method public abstract android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
- method public abstract android.os.Handler getHandler(android.os.Handler);
+ method public boolean dispatchKeyEvent(android.view.KeyEvent);
+ method public android.view.View findFocus(android.view.View);
+ method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
+ method public android.os.Handler getHandler(android.os.Handler);
method public default boolean isVisibleToUserForAutofill(int);
- method public abstract void onActivityResult(int, int, android.content.Intent);
- method public abstract void onAttachedToWindow();
+ method public void onActivityResult(int, int, android.content.Intent);
+ method public void onAttachedToWindow();
method public default boolean onCheckIsTextEditor();
- method public abstract void onConfigurationChanged(android.content.res.Configuration);
- method public abstract android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
- method public abstract void onDetachedFromWindow();
- method public abstract boolean onDragEvent(android.view.DragEvent);
- method public abstract void onDraw(android.graphics.Canvas);
- method public abstract void onDrawVerticalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
- method public abstract void onFinishTemporaryDetach();
- method public abstract void onFocusChanged(boolean, int, android.graphics.Rect);
- method public abstract boolean onGenericMotionEvent(android.view.MotionEvent);
- method public abstract boolean onHoverEvent(android.view.MotionEvent);
- method public abstract void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public abstract void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
- method public abstract boolean onKeyDown(int, android.view.KeyEvent);
- method public abstract boolean onKeyMultiple(int, int, android.view.KeyEvent);
- method public abstract boolean onKeyUp(int, android.view.KeyEvent);
- method public abstract void onMeasure(int, int);
+ method public void onConfigurationChanged(android.content.res.Configuration);
+ method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
+ method public void onDetachedFromWindow();
+ method public boolean onDragEvent(android.view.DragEvent);
+ method public void onDraw(android.graphics.Canvas);
+ method public void onDrawVerticalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
+ method public void onFinishTemporaryDetach();
+ method public void onFocusChanged(boolean, int, android.graphics.Rect);
+ method public boolean onGenericMotionEvent(android.view.MotionEvent);
+ method public boolean onHoverEvent(android.view.MotionEvent);
+ method public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+ method public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
+ method public boolean onKeyDown(int, android.view.KeyEvent);
+ method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
+ method public boolean onKeyUp(int, android.view.KeyEvent);
+ method public void onMeasure(int, int);
method public default void onMovedToDisplay(int, android.content.res.Configuration);
- method public abstract void onOverScrolled(int, int, boolean, boolean);
+ method public void onOverScrolled(int, int, boolean, boolean);
method public default void onProvideAutofillVirtualStructure(android.view.ViewStructure, int);
method public default void onProvideContentCaptureStructure(android.view.ViewStructure, int);
- method public abstract void onProvideVirtualStructure(android.view.ViewStructure);
- method public abstract void onScrollChanged(int, int, int, int);
- method public abstract void onSizeChanged(int, int, int, int);
- method public abstract void onStartTemporaryDetach();
- method public abstract boolean onTouchEvent(android.view.MotionEvent);
- method public abstract boolean onTrackballEvent(android.view.MotionEvent);
- method public abstract void onVisibilityChanged(android.view.View, int);
- method public abstract void onWindowFocusChanged(boolean);
- method public abstract void onWindowVisibilityChanged(int);
- method public abstract boolean performAccessibilityAction(int, android.os.Bundle);
- method public abstract boolean performLongClick();
- method public abstract void preDispatchDraw(android.graphics.Canvas);
- method public abstract boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
- method public abstract boolean requestFocus(int, android.graphics.Rect);
- method public abstract void setBackgroundColor(int);
- method public abstract boolean setFrame(int, int, int, int);
- method public abstract void setLayerType(int, android.graphics.Paint);
- method public abstract void setLayoutParams(android.view.ViewGroup.LayoutParams);
- method public abstract void setOverScrollMode(int);
- method public abstract void setScrollBarStyle(int);
- method public abstract boolean shouldDelayChildPressedState();
+ method public void onProvideVirtualStructure(android.view.ViewStructure);
+ method public void onScrollChanged(int, int, int, int);
+ method public void onSizeChanged(int, int, int, int);
+ method public void onStartTemporaryDetach();
+ method public boolean onTouchEvent(android.view.MotionEvent);
+ method public boolean onTrackballEvent(android.view.MotionEvent);
+ method public void onVisibilityChanged(android.view.View, int);
+ method public void onWindowFocusChanged(boolean);
+ method public void onWindowVisibilityChanged(int);
+ method public boolean performAccessibilityAction(int, android.os.Bundle);
+ method public boolean performLongClick();
+ method public void preDispatchDraw(android.graphics.Canvas);
+ method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
+ method public boolean requestFocus(int, android.graphics.Rect);
+ method public void setBackgroundColor(int);
+ method public boolean setFrame(int, int, int, int);
+ method public void setLayerType(int, android.graphics.Paint);
+ method public void setLayoutParams(android.view.ViewGroup.LayoutParams);
+ method public void setOverScrollMode(int);
+ method public void setScrollBarStyle(int);
+ method public boolean shouldDelayChildPressedState();
}
public final class WebViewProviderInfo implements android.os.Parcelable {
- ctor public WebViewProviderInfo(java.lang.String, java.lang.String, boolean, boolean, java.lang.String[]);
+ ctor public WebViewProviderInfo(String, String, boolean, boolean, String[]);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.webkit.WebViewProviderInfo> CREATOR;
field public final boolean availableByDefault;
- field public final java.lang.String description;
+ field public final String description;
field public final boolean isFallback;
- field public final java.lang.String packageName;
+ field public final String packageName;
field public final android.content.pm.Signature[] signatures;
}
public final class WebViewUpdateService {
method public static android.webkit.WebViewProviderInfo[] getAllWebViewPackages();
- method public static java.lang.String getCurrentWebViewPackageName();
+ method public static String getCurrentWebViewPackageName();
method public static android.webkit.WebViewProviderInfo[] getValidWebViewPackages();
}
diff --git a/api/system-removed.txt b/api/system-removed.txt
index 4beb699..22a3fb3 100644
--- a/api/system-removed.txt
+++ b/api/system-removed.txt
@@ -1,11 +1,20 @@
+// Signature format: 2.0
+package android {
+
+ public static final class Manifest.permission {
+ field public static final String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS";
+ }
+
+}
+
package android.app {
public class Notification implements android.os.Parcelable {
- method public static java.lang.Class<? extends android.app.Notification.Style> getNotificationStyleClass(java.lang.String);
+ method public static Class<? extends android.app.Notification.Style> getNotificationStyleClass(String);
}
public static final class Notification.TvExtender implements android.app.Notification.Extender {
- method public deprecated java.lang.String getChannel();
+ method @Deprecated public String getChannel();
}
}
@@ -13,8 +22,8 @@
package android.app.admin {
public class DevicePolicyManager {
- method public deprecated java.lang.String getDeviceInitializerApp();
- method public deprecated android.content.ComponentName getDeviceInitializerComponent();
+ method @Deprecated @Nullable public String getDeviceInitializerApp();
+ method @Deprecated @Nullable public android.content.ComponentName getDeviceInitializerComponent();
}
}
@@ -22,31 +31,31 @@
package android.content {
public class Intent implements java.lang.Cloneable android.os.Parcelable {
- field public static final deprecated java.lang.String ACTION_DEVICE_INITIALIZATION_WIZARD = "android.intent.action.DEVICE_INITIALIZATION_WIZARD";
- field public static final deprecated java.lang.String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR";
- field public static final deprecated java.lang.String ACTION_SERVICE_STATE = "android.intent.action.SERVICE_STATE";
- field public static final deprecated java.lang.String EXTRA_CDMA_DEFAULT_ROAMING_INDICATOR = "cdmaDefaultRoamingIndicator";
- field public static final deprecated java.lang.String EXTRA_CDMA_ROAMING_INDICATOR = "cdmaRoamingIndicator";
- field public static final deprecated java.lang.String EXTRA_CSS_INDICATOR = "cssIndicator";
- field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_ALPHA_LONG = "data-operator-alpha-long";
- field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_ALPHA_SHORT = "data-operator-alpha-short";
- field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_NUMERIC = "data-operator-numeric";
- field public static final deprecated java.lang.String EXTRA_DATA_RADIO_TECH = "dataRadioTechnology";
- field public static final deprecated java.lang.String EXTRA_DATA_REG_STATE = "dataRegState";
- field public static final deprecated java.lang.String EXTRA_DATA_ROAMING_TYPE = "dataRoamingType";
- field public static final deprecated java.lang.String EXTRA_EMERGENCY_ONLY = "emergencyOnly";
- field public static final deprecated java.lang.String EXTRA_IS_DATA_ROAMING_FROM_REGISTRATION = "isDataRoamingFromRegistration";
- field public static final deprecated java.lang.String EXTRA_IS_USING_CARRIER_AGGREGATION = "isUsingCarrierAggregation";
- field public static final deprecated java.lang.String EXTRA_LTE_EARFCN_RSRP_BOOST = "LteEarfcnRsrpBoost";
- field public static final deprecated java.lang.String EXTRA_MANUAL = "manual";
- field public static final deprecated java.lang.String EXTRA_NETWORK_ID = "networkId";
- field public static final deprecated java.lang.String EXTRA_OPERATOR_ALPHA_LONG = "operator-alpha-long";
- field public static final deprecated java.lang.String EXTRA_OPERATOR_ALPHA_SHORT = "operator-alpha-short";
- field public static final deprecated java.lang.String EXTRA_OPERATOR_NUMERIC = "operator-numeric";
- field public static final deprecated java.lang.String EXTRA_SYSTEM_ID = "systemId";
- field public static final deprecated java.lang.String EXTRA_VOICE_RADIO_TECH = "radioTechnology";
- field public static final deprecated java.lang.String EXTRA_VOICE_REG_STATE = "voiceRegState";
- field public static final deprecated java.lang.String EXTRA_VOICE_ROAMING_TYPE = "voiceRoamingType";
+ field @Deprecated public static final String ACTION_DEVICE_INITIALIZATION_WIZARD = "android.intent.action.DEVICE_INITIALIZATION_WIZARD";
+ field @Deprecated public static final String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR";
+ field @Deprecated public static final String ACTION_SERVICE_STATE = "android.intent.action.SERVICE_STATE";
+ field @Deprecated public static final String EXTRA_CDMA_DEFAULT_ROAMING_INDICATOR = "cdmaDefaultRoamingIndicator";
+ field @Deprecated public static final String EXTRA_CDMA_ROAMING_INDICATOR = "cdmaRoamingIndicator";
+ field @Deprecated public static final String EXTRA_CSS_INDICATOR = "cssIndicator";
+ field @Deprecated public static final String EXTRA_DATA_OPERATOR_ALPHA_LONG = "data-operator-alpha-long";
+ field @Deprecated public static final String EXTRA_DATA_OPERATOR_ALPHA_SHORT = "data-operator-alpha-short";
+ field @Deprecated public static final String EXTRA_DATA_OPERATOR_NUMERIC = "data-operator-numeric";
+ field @Deprecated public static final String EXTRA_DATA_RADIO_TECH = "dataRadioTechnology";
+ field @Deprecated public static final String EXTRA_DATA_REG_STATE = "dataRegState";
+ field @Deprecated public static final String EXTRA_DATA_ROAMING_TYPE = "dataRoamingType";
+ field @Deprecated public static final String EXTRA_EMERGENCY_ONLY = "emergencyOnly";
+ field @Deprecated public static final String EXTRA_IS_DATA_ROAMING_FROM_REGISTRATION = "isDataRoamingFromRegistration";
+ field @Deprecated public static final String EXTRA_IS_USING_CARRIER_AGGREGATION = "isUsingCarrierAggregation";
+ field @Deprecated public static final String EXTRA_LTE_EARFCN_RSRP_BOOST = "LteEarfcnRsrpBoost";
+ field @Deprecated public static final String EXTRA_MANUAL = "manual";
+ field @Deprecated public static final String EXTRA_NETWORK_ID = "networkId";
+ field @Deprecated public static final String EXTRA_OPERATOR_ALPHA_LONG = "operator-alpha-long";
+ field @Deprecated public static final String EXTRA_OPERATOR_ALPHA_SHORT = "operator-alpha-short";
+ field @Deprecated public static final String EXTRA_OPERATOR_NUMERIC = "operator-numeric";
+ field @Deprecated public static final String EXTRA_SYSTEM_ID = "systemId";
+ field @Deprecated public static final String EXTRA_VOICE_RADIO_TECH = "radioTechnology";
+ field @Deprecated public static final String EXTRA_VOICE_REG_STATE = "voiceRegState";
+ field @Deprecated public static final String EXTRA_VOICE_ROAMING_TYPE = "voiceRoamingType";
}
}
@@ -54,7 +63,7 @@
package android.media.tv {
public final class TvInputManager {
- method public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, android.media.tv.TvInputManager.HardwareCallback, android.media.tv.TvInputInfo);
+ method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, android.media.tv.TvInputManager.HardwareCallback, android.media.tv.TvInputInfo);
}
public static final class TvInputManager.Hardware {
@@ -65,7 +74,7 @@
package android.net.wifi {
- public deprecated class BatchedScanResult implements android.os.Parcelable {
+ @Deprecated public class BatchedScanResult implements android.os.Parcelable {
ctor public BatchedScanResult();
ctor public BatchedScanResult(android.net.wifi.BatchedScanResult);
field public final java.util.List<android.net.wifi.ScanResult> scanResults;
@@ -85,8 +94,8 @@
}
public final class PowerManager {
- method public deprecated boolean isScreenBrightnessBoosted();
- field public static final deprecated java.lang.String ACTION_SCREEN_BRIGHTNESS_BOOST_CHANGED = "android.os.action.SCREEN_BRIGHTNESS_BOOST_CHANGED";
+ method @Deprecated public boolean isScreenBrightnessBoosted();
+ field @Deprecated public static final String ACTION_SCREEN_BRIGHTNESS_BOOST_CHANGED = "android.os.action.SCREEN_BRIGHTNESS_BOOST_CHANGED";
}
}
@@ -95,10 +104,10 @@
public abstract class NotificationListenerService extends android.app.Service {
method public android.service.notification.StatusBarNotification[] getActiveNotifications(int);
- method public android.service.notification.StatusBarNotification[] getActiveNotifications(java.lang.String[], int);
+ method public android.service.notification.StatusBarNotification[] getActiveNotifications(String[], int);
method public void registerAsSystemService(android.content.Context, android.content.ComponentName, int) throws android.os.RemoteException;
method public final void setOnNotificationPostedTrim(int);
- method public final void snoozeNotification(java.lang.String, java.lang.String);
+ method public final void snoozeNotification(String, String);
method public void unregisterAsSystemService() throws android.os.RemoteException;
field public static final int TRIM_FULL = 0; // 0x0
field public static final int TRIM_LIGHT = 1; // 0x1
@@ -114,9 +123,9 @@
package android.telephony {
public class TelephonyManager {
- method public deprecated void answerRingingCall();
- method public deprecated boolean endCall();
- method public deprecated void silenceRinger();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void answerRingingCall();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public boolean endCall();
+ method @Deprecated public void silenceRinger();
}
}
diff --git a/api/test-current.txt b/api/test-current.txt
index 6d40e69..fb25d13 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -1,16 +1,17 @@
+// Signature format: 2.0
package android {
public static final class Manifest.permission {
- field public static final java.lang.String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
- field public static final java.lang.String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
- field public static final java.lang.String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
- field public static final java.lang.String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
- field public static final java.lang.String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
- field public static final java.lang.String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
- field public static final java.lang.String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
- field public static final java.lang.String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
- field public static final java.lang.String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
- field public static final java.lang.String WRITE_OBB = "android.permission.WRITE_OBB";
+ field public static final String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
+ field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
+ field public static final String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
+ field public static final String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
+ field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
+ field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
+ field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
+ field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
+ field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
+ field public static final String WRITE_OBB = "android.permission.WRITE_OBB";
}
}
@@ -32,18 +33,18 @@
}
public class ActivityManager {
- method public void addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int);
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int);
method public void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
- method public void forceStopPackage(java.lang.String);
- method public int getPackageImportance(java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void forceStopPackage(String);
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getPackageImportance(String);
method public long getTotalRam();
- method public int getUidImportance(int);
- method public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
- method public void scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int);
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidImportance(int);
+ method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
+ method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public void scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int);
}
- public static abstract interface ActivityManager.OnUidImportanceListener {
- method public abstract void onUidImportance(int, int);
+ public static interface ActivityManager.OnUidImportanceListener {
+ method public void onUidImportance(int, int);
}
public static class ActivityManager.RunningAppProcessInfo implements android.os.Parcelable {
@@ -51,7 +52,7 @@
}
public static class ActivityManager.TaskDescription implements android.os.Parcelable {
- method public java.lang.String getIconFilename();
+ method public String getIconFilename();
method public int getIconResource();
}
@@ -63,21 +64,21 @@
}
public class ActivityTaskManager {
- method public void clearLaunchParamsForPackages(java.util.List<java.lang.String>);
- method public java.lang.String listAllStacks();
- method public void moveTaskToStack(int, int, boolean);
- method public boolean moveTopActivityToPinnedStack(int, android.graphics.Rect);
- method public void removeStacksInWindowingModes(int[]) throws java.lang.SecurityException;
- method public void removeStacksWithActivityTypes(int[]) throws java.lang.SecurityException;
- method public void resizeDockedStack(android.graphics.Rect, android.graphics.Rect);
- method public void resizeStack(int, android.graphics.Rect) throws java.lang.SecurityException;
- method public void resizeStack(int, android.graphics.Rect, boolean);
- method public void resizeTask(int, android.graphics.Rect);
- method public void setDisplayToSingleTaskInstance(int);
- method public void setTaskWindowingMode(int, int, boolean) throws java.lang.SecurityException;
- method public void setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean) throws java.lang.SecurityException;
- method public void startSystemLockTaskMode(int);
- method public void stopSystemLockTaskMode();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void clearLaunchParamsForPackages(java.util.List<java.lang.String>);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public String listAllStacks();
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void moveTaskToStack(int, int, boolean);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean moveTopActivityToPinnedStack(int, android.graphics.Rect);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void removeStacksInWindowingModes(int[]) throws java.lang.SecurityException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void removeStacksWithActivityTypes(int[]) throws java.lang.SecurityException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizeDockedStack(android.graphics.Rect, android.graphics.Rect);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizeStack(int, android.graphics.Rect) throws java.lang.SecurityException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizeStack(int, android.graphics.Rect, boolean);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizeTask(int, android.graphics.Rect);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setDisplayToSingleTaskInstance(int);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setTaskWindowingMode(int, int, boolean) throws java.lang.SecurityException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean) throws java.lang.SecurityException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void startSystemLockTaskMode(int);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void stopSystemLockTaskMode();
method public static boolean supportsMultiWindow(android.content.Context);
method public static boolean supportsSplitScreenMultiWindow(android.content.Context);
field public static final int INVALID_STACK_ID = -1; // 0xffffffff
@@ -90,69 +91,69 @@
}
public class AppOpsManager {
- method public void addHistoricalOps(android.app.AppOpsManager.HistoricalOps);
- method public void clearHistory();
- method public void getHistoricalOps(int, java.lang.String, java.lang.String[], long, long, java.util.concurrent.Executor, java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
- method public void getHistoricalOpsFromDiskRaw(int, java.lang.String, java.lang.String[], long, long, java.util.concurrent.Executor, java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
+ method @RequiresPermission("android.permission.MANAGE_APPOPS") public void addHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOps);
+ method @RequiresPermission("android.permission.MANAGE_APPOPS") public void clearHistory();
+ method @RequiresPermission("android.permission.GET_APP_OPS_STATS") public void getHistoricalOps(int, @Nullable String, @Nullable String[], long, long, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
+ method @RequiresPermission("android.permission.GET_APP_OPS_STATS") public void getHistoricalOpsFromDiskRaw(int, @Nullable String, @Nullable String[], long, long, @Nullable java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
method public static int getNumOps();
- method public static java.lang.String[] getOpStrs();
- method public boolean isOperationActive(int, int, java.lang.String);
- method public void offsetHistory(long);
- method public static java.lang.String opToPermission(int);
- method public static int permissionToOpCode(java.lang.String);
- method public void resetHistoryParameters();
- method public void setHistoryParameters(int, long, int);
- method public void setMode(int, int, java.lang.String, int);
- method public void setUidMode(java.lang.String, int, int);
- method public void startWatchingActive(int[], android.app.AppOpsManager.OnOpActiveChangedListener);
- method public void stopWatchingActive(android.app.AppOpsManager.OnOpActiveChangedListener);
- method public static int strOpToOp(java.lang.String);
+ method public static String[] getOpStrs();
+ method public boolean isOperationActive(int, int, String);
+ method @RequiresPermission("android.permission.MANAGE_APPOPS") public void offsetHistory(long);
+ method public static String opToPermission(int);
+ method public static int permissionToOpCode(String);
+ method @RequiresPermission("android.permission.MANAGE_APPOPS") public void resetHistoryParameters();
+ method @RequiresPermission("android.permission.MANAGE_APPOPS") public void setHistoryParameters(int, long, int);
+ method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(int, int, String, int);
+ method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setUidMode(String, int, int);
+ method public void startWatchingActive(@NonNull int[], @NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
+ method public void stopWatchingActive(@NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
+ method public static int strOpToOp(String);
field public static final int HISTORICAL_MODE_DISABLED = 0; // 0x0
field public static final int HISTORICAL_MODE_ENABLED_ACTIVE = 1; // 0x1
field public static final int HISTORICAL_MODE_ENABLED_PASSIVE = 2; // 0x2
- field public static final java.lang.String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
- field public static final java.lang.String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
- field public static final java.lang.String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
- field public static final java.lang.String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot";
- field public static final java.lang.String OPSTR_ASSIST_STRUCTURE = "android:assist_structure";
- field public static final java.lang.String OPSTR_AUDIO_ACCESSIBILITY_VOLUME = "android:audio_accessibility_volume";
- field public static final java.lang.String OPSTR_AUDIO_ALARM_VOLUME = "android:audio_alarm_volume";
- field public static final java.lang.String OPSTR_AUDIO_BLUETOOTH_VOLUME = "android:audio_bluetooth_volume";
- field public static final java.lang.String OPSTR_AUDIO_MASTER_VOLUME = "android:audio_master_volume";
- field public static final java.lang.String OPSTR_AUDIO_MEDIA_VOLUME = "android:audio_media_volume";
- field public static final java.lang.String OPSTR_AUDIO_NOTIFICATION_VOLUME = "android:audio_notification_volume";
- field public static final java.lang.String OPSTR_AUDIO_RING_VOLUME = "android:audio_ring_volume";
- field public static final java.lang.String OPSTR_AUDIO_VOICE_VOLUME = "android:audio_voice_volume";
- field public static final java.lang.String OPSTR_BIND_ACCESSIBILITY_SERVICE = "android:bind_accessibility_service";
- field public static final java.lang.String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
- field public static final java.lang.String OPSTR_GET_ACCOUNTS = "android:get_accounts";
- field public static final java.lang.String OPSTR_GPS = "android:gps";
- field public static final java.lang.String OPSTR_INSTANT_APP_START_FOREGROUND = "android:instant_app_start_foreground";
- field public static final java.lang.String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
- field public static final java.lang.String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
- field public static final java.lang.String OPSTR_NEIGHBORING_CELLS = "android:neighboring_cells";
- field public static final java.lang.String OPSTR_PLAY_AUDIO = "android:play_audio";
- field public static final java.lang.String OPSTR_POST_NOTIFICATION = "android:post_notification";
- field public static final java.lang.String OPSTR_PROJECT_MEDIA = "android:project_media";
- field public static final java.lang.String OPSTR_READ_CLIPBOARD = "android:read_clipboard";
- field public static final java.lang.String OPSTR_READ_ICC_SMS = "android:read_icc_sms";
- field public static final java.lang.String OPSTR_RECEIVE_EMERGENCY_BROADCAST = "android:receive_emergency_broadcast";
- field public static final java.lang.String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages";
- field public static final java.lang.String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages";
- field public static final java.lang.String OPSTR_RUN_ANY_IN_BACKGROUND = "android:run_any_in_background";
- field public static final java.lang.String OPSTR_RUN_IN_BACKGROUND = "android:run_in_background";
- field public static final java.lang.String OPSTR_START_FOREGROUND = "android:start_foreground";
- field public static final java.lang.String OPSTR_TAKE_AUDIO_FOCUS = "android:take_audio_focus";
- field public static final java.lang.String OPSTR_TAKE_MEDIA_BUTTONS = "android:take_media_buttons";
- field public static final java.lang.String OPSTR_TOAST_WINDOW = "android:toast_window";
- field public static final java.lang.String OPSTR_TURN_SCREEN_ON = "android:turn_screen_on";
- field public static final java.lang.String OPSTR_VIBRATE = "android:vibrate";
- field public static final java.lang.String OPSTR_WAKE_LOCK = "android:wake_lock";
- field public static final java.lang.String OPSTR_WIFI_SCAN = "android:wifi_scan";
- field public static final java.lang.String OPSTR_WRITE_CLIPBOARD = "android:write_clipboard";
- field public static final java.lang.String OPSTR_WRITE_ICC_SMS = "android:write_icc_sms";
- field public static final java.lang.String OPSTR_WRITE_SMS = "android:write_sms";
- field public static final java.lang.String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
+ field public static final String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
+ field public static final String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
+ field public static final String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
+ field public static final String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot";
+ field public static final String OPSTR_ASSIST_STRUCTURE = "android:assist_structure";
+ field public static final String OPSTR_AUDIO_ACCESSIBILITY_VOLUME = "android:audio_accessibility_volume";
+ field public static final String OPSTR_AUDIO_ALARM_VOLUME = "android:audio_alarm_volume";
+ field public static final String OPSTR_AUDIO_BLUETOOTH_VOLUME = "android:audio_bluetooth_volume";
+ field public static final String OPSTR_AUDIO_MASTER_VOLUME = "android:audio_master_volume";
+ field public static final String OPSTR_AUDIO_MEDIA_VOLUME = "android:audio_media_volume";
+ field public static final String OPSTR_AUDIO_NOTIFICATION_VOLUME = "android:audio_notification_volume";
+ field public static final String OPSTR_AUDIO_RING_VOLUME = "android:audio_ring_volume";
+ field public static final String OPSTR_AUDIO_VOICE_VOLUME = "android:audio_voice_volume";
+ field public static final String OPSTR_BIND_ACCESSIBILITY_SERVICE = "android:bind_accessibility_service";
+ field public static final String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
+ field public static final String OPSTR_GET_ACCOUNTS = "android:get_accounts";
+ field public static final String OPSTR_GPS = "android:gps";
+ field public static final String OPSTR_INSTANT_APP_START_FOREGROUND = "android:instant_app_start_foreground";
+ field public static final String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
+ field public static final String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
+ field public static final String OPSTR_NEIGHBORING_CELLS = "android:neighboring_cells";
+ field public static final String OPSTR_PLAY_AUDIO = "android:play_audio";
+ field public static final String OPSTR_POST_NOTIFICATION = "android:post_notification";
+ field public static final String OPSTR_PROJECT_MEDIA = "android:project_media";
+ field public static final String OPSTR_READ_CLIPBOARD = "android:read_clipboard";
+ field public static final String OPSTR_READ_ICC_SMS = "android:read_icc_sms";
+ field public static final String OPSTR_RECEIVE_EMERGENCY_BROADCAST = "android:receive_emergency_broadcast";
+ field public static final String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages";
+ field public static final String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages";
+ field public static final String OPSTR_RUN_ANY_IN_BACKGROUND = "android:run_any_in_background";
+ field public static final String OPSTR_RUN_IN_BACKGROUND = "android:run_in_background";
+ field public static final String OPSTR_START_FOREGROUND = "android:start_foreground";
+ field public static final String OPSTR_TAKE_AUDIO_FOCUS = "android:take_audio_focus";
+ field public static final String OPSTR_TAKE_MEDIA_BUTTONS = "android:take_media_buttons";
+ field public static final String OPSTR_TOAST_WINDOW = "android:toast_window";
+ field public static final String OPSTR_TURN_SCREEN_ON = "android:turn_screen_on";
+ field public static final String OPSTR_VIBRATE = "android:vibrate";
+ field public static final String OPSTR_WAKE_LOCK = "android:wake_lock";
+ field public static final String OPSTR_WIFI_SCAN = "android:wifi_scan";
+ field public static final String OPSTR_WRITE_CLIPBOARD = "android:write_clipboard";
+ field public static final String OPSTR_WRITE_ICC_SMS = "android:write_icc_sms";
+ field public static final String OPSTR_WRITE_SMS = "android:write_sms";
+ field public static final String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
field public static final int OP_COARSE_LOCATION = 0; // 0x0
field public static final int OP_RECORD_AUDIO = 27; // 0x1b
field public static final int OP_SYSTEM_ALERT_WINDOW = 24; // 0x18
@@ -174,7 +175,7 @@
method public long getForegroundAccessCount();
method public long getForegroundAccessDuration();
method public long getForegroundRejectCount();
- method public java.lang.String getOpName();
+ method @NonNull public String getOpName();
method public long getRejectCount(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOp> CREATOR;
@@ -186,11 +187,11 @@
method public long getBeginTimeMillis();
method public long getEndTimeMillis();
method public int getUidCount();
- method public android.app.AppOpsManager.HistoricalUidOps getUidOps(int);
- method public android.app.AppOpsManager.HistoricalUidOps getUidOpsAt(int);
- method public void increaseAccessCount(int, int, java.lang.String, int, long);
- method public void increaseAccessDuration(int, int, java.lang.String, int, long);
- method public void increaseRejectCount(int, int, java.lang.String, int, long);
+ method @Nullable public android.app.AppOpsManager.HistoricalUidOps getUidOps(int);
+ method @NonNull public android.app.AppOpsManager.HistoricalUidOps getUidOpsAt(int);
+ method public void increaseAccessCount(int, int, @NonNull String, int, long);
+ method public void increaseAccessDuration(int, int, @NonNull String, int, long);
+ method public void increaseRejectCount(int, int, @NonNull String, int, long);
method public void offsetBeginAndEndTime(long);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOps> CREATOR;
@@ -198,26 +199,26 @@
public static final class AppOpsManager.HistoricalPackageOps implements android.os.Parcelable {
method public int describeContents();
- method public android.app.AppOpsManager.HistoricalOp getOp(java.lang.String);
- method public android.app.AppOpsManager.HistoricalOp getOpAt(int);
+ method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
+ method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(int);
method public int getOpCount();
- method public java.lang.String getPackageName();
- method public void writeToParcel(android.os.Parcel, int);
+ method @NonNull public String getPackageName();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalPackageOps> CREATOR;
}
public static final class AppOpsManager.HistoricalUidOps implements android.os.Parcelable {
method public int describeContents();
method public int getPackageCount();
- method public android.app.AppOpsManager.HistoricalPackageOps getPackageOps(java.lang.String);
- method public android.app.AppOpsManager.HistoricalPackageOps getPackageOpsAt(int);
+ method @Nullable public android.app.AppOpsManager.HistoricalPackageOps getPackageOps(@NonNull String);
+ method @NonNull public android.app.AppOpsManager.HistoricalPackageOps getPackageOpsAt(int);
method public int getUid();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalUidOps> CREATOR;
}
- public static abstract interface AppOpsManager.OnOpActiveChangedListener {
- method public abstract void onOpActiveChanged(int, int, java.lang.String, boolean);
+ public static interface AppOpsManager.OnOpActiveChangedListener {
+ method public void onOpActiveChanged(int, int, String, boolean);
}
public final class NotificationChannel implements android.os.Parcelable {
@@ -247,9 +248,9 @@
public final class UiAutomation {
method public void destroy();
- method public android.os.ParcelFileDescriptor[] executeShellCommandRw(java.lang.String);
- method public deprecated boolean grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
- method public deprecated boolean revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
+ method public android.os.ParcelFileDescriptor[] executeShellCommandRw(String);
+ method @Deprecated public boolean grantRuntimePermission(String, String, android.os.UserHandle);
+ method @Deprecated public boolean revokeRuntimePermission(String, String, android.os.UserHandle);
}
public class UiModeManager {
@@ -257,7 +258,7 @@
method public boolean isUiModeLocked();
}
- public class WindowConfiguration implements java.lang.Comparable android.os.Parcelable {
+ public class WindowConfiguration implements java.lang.Comparable<android.app.WindowConfiguration> android.os.Parcelable {
ctor public WindowConfiguration();
method public int compareTo(android.app.WindowConfiguration);
method public int describeContents();
@@ -293,17 +294,17 @@
package android.app.admin {
public class DevicePolicyManager {
- method public java.lang.CharSequence getDeviceOwnerOrganizationName();
+ method @Nullable public CharSequence getDeviceOwnerOrganizationName();
method public long getLastBugReportRequestTime();
method public long getLastNetworkLogRetrievalTime();
method public long getLastSecurityLogRetrievalTime();
- method public java.util.List<java.lang.String> getOwnerInstalledCaCerts(android.os.UserHandle);
+ method public java.util.List<java.lang.String> getOwnerInstalledCaCerts(@NonNull android.os.UserHandle);
method public boolean isCurrentInputMethodSetByOwner();
method public boolean isDeviceManaged();
- field public static final java.lang.String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
- field public static final java.lang.String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
- field public static final java.lang.String ACTION_DATA_SHARING_RESTRICTION_APPLIED = "android.app.action.DATA_SHARING_RESTRICTION_APPLIED";
- field public static final java.lang.String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION";
+ field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
+ field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
+ field public static final String ACTION_DATA_SHARING_RESTRICTION_APPLIED = "android.app.action.DATA_SHARING_RESTRICTION_APPLIED";
+ field public static final String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION";
}
public static final class SecurityLog.SecurityEvent implements android.os.Parcelable {
@@ -315,10 +316,10 @@
package android.app.backup {
public class BackupManager {
- method public android.content.Intent getConfigurationIntent(java.lang.String);
- method public android.content.Intent getDataManagementIntent(java.lang.String);
- method public java.lang.String getDataManagementLabel(java.lang.String);
- method public java.lang.String getDestinationString(java.lang.String);
+ method @RequiresPermission("android.permission.BACKUP") public android.content.Intent getConfigurationIntent(String);
+ method @RequiresPermission("android.permission.BACKUP") public android.content.Intent getDataManagementIntent(String);
+ method @RequiresPermission("android.permission.BACKUP") public String getDataManagementLabel(String);
+ method @RequiresPermission("android.permission.BACKUP") public String getDestinationString(String);
}
}
@@ -326,16 +327,16 @@
package android.app.role {
public final class RoleManager {
- method public void addRoleHolderAsUser(java.lang.String, java.lang.String, android.os.UserHandle, java.util.concurrent.Executor, android.app.role.RoleManagerCallback);
- method public void clearRoleHoldersAsUser(java.lang.String, android.os.UserHandle, java.util.concurrent.Executor, android.app.role.RoleManagerCallback);
- method public java.util.List<java.lang.String> getRoleHolders(java.lang.String);
- method public java.util.List<java.lang.String> getRoleHoldersAsUser(java.lang.String, android.os.UserHandle);
- method public void removeRoleHolderAsUser(java.lang.String, java.lang.String, android.os.UserHandle, java.util.concurrent.Executor, android.app.role.RoleManagerCallback);
+ method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void addRoleHolderAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull android.app.role.RoleManagerCallback);
+ method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void clearRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull android.app.role.RoleManagerCallback);
+ method @NonNull @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public java.util.List<java.lang.String> getRoleHolders(@NonNull String);
+ method @NonNull @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public java.util.List<java.lang.String> getRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle);
+ method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void removeRoleHolderAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull android.app.role.RoleManagerCallback);
}
- public abstract interface RoleManagerCallback {
- method public abstract void onFailure();
- method public abstract void onSuccess();
+ public interface RoleManagerCallback {
+ method public void onFailure();
+ method public void onSuccess();
}
}
@@ -347,8 +348,8 @@
}
public class StorageStatsManager {
- method public boolean isQuotaSupported(java.util.UUID);
- method public boolean isReservedSupported(java.util.UUID);
+ method public boolean isQuotaSupported(@NonNull java.util.UUID);
+ method public boolean isReservedSupported(@NonNull java.util.UUID);
}
}
@@ -364,15 +365,15 @@
package android.content {
public class ContentProviderClient implements java.lang.AutoCloseable android.content.ContentInterface {
- method public void setDetectNotResponding(long);
+ method @RequiresPermission(android.Manifest.permission.REMOVE_TASKS) public void setDetectNotResponding(long);
}
public abstract class ContentResolver implements android.content.ContentInterface {
- method public static java.lang.String[] getSyncAdapterPackagesForAuthorityAsUser(java.lang.String, int);
+ method public static String[] getSyncAdapterPackagesForAuthorityAsUser(String, int);
}
public abstract class Context {
- method public android.content.Context createPackageContextAsUser(java.lang.String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public android.content.Context createPackageContextAsUser(String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.os.UserHandle getUser();
method public int getUserId();
method public void setAutofillCompatibilityEnabled(boolean);
@@ -400,31 +401,33 @@
public abstract class PackageManager {
method public abstract boolean arePermissionsIndividuallyControlled();
- method public abstract java.lang.String getDefaultBrowserPackageNameAsUser(int);
- method public abstract int getInstallReason(java.lang.String, android.os.UserHandle);
+ method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS_FULL") public abstract String getDefaultBrowserPackageNameAsUser(int);
+ method public abstract int getInstallReason(String, @NonNull android.os.UserHandle);
method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int);
- method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
- method public abstract java.lang.String[] getNamesForUids(int[]);
- method public abstract java.lang.String getPermissionControllerPackageName();
- method public abstract java.lang.String getServicesSystemSharedLibraryPackageName();
- method public abstract java.lang.String getSharedSystemSharedLibraryPackageName();
- method public java.lang.String getWellbeingPackageName();
- method public abstract void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
- method public abstract void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
- field public static final java.lang.String FEATURE_ADOPTABLE_STORAGE = "android.software.adoptable_storage";
- field public static final java.lang.String FEATURE_FILE_BASED_ENCRYPTION = "android.software.file_based_encryption";
+ method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS_FULL") public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
+ method @Nullable public abstract String[] getNamesForUids(int[]);
+ method public abstract String getPermissionControllerPackageName();
+ method @NonNull public abstract String getServicesSystemSharedLibraryPackageName();
+ method @NonNull public abstract String getSharedSystemSharedLibraryPackageName();
+ method public String getWellbeingPackageName();
+ method @RequiresPermission("android.permission.GRANT_RUNTIME_PERMISSIONS") public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
+ method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
+ field public static final String FEATURE_ADOPTABLE_STORAGE = "android.software.adoptable_storage";
+ field public static final String FEATURE_FILE_BASED_ENCRYPTION = "android.software.file_based_encryption";
field public static final int MATCH_FACTORY_ONLY = 2097152; // 0x200000
field public static final int MATCH_KNOWN_PACKAGES = 4202496; // 0x402000
- field public static final java.lang.String SYSTEM_SHARED_LIBRARY_SERVICES = "android.ext.services";
- field public static final java.lang.String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared";
+ field public static final String SYSTEM_SHARED_LIBRARY_SERVICES = "android.ext.services";
+ field public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared";
}
public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+ field public static final int PROTECTION_FLAG_CONFIGURATOR = 524288; // 0x80000
field public static final int PROTECTION_FLAG_DOCUMENTER = 262144; // 0x40000
+ field public static final int PROTECTION_FLAG_OEM = 16384; // 0x4000
field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000
field public static final int PROTECTION_FLAG_VENDOR_PRIVILEGED = 32768; // 0x8000
field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000
- field public java.lang.String backgroundPermission;
+ field public String backgroundPermission;
}
public final class ShortcutInfo implements android.os.Parcelable {
@@ -439,7 +442,7 @@
package android.content.res {
- public final class Configuration implements java.lang.Comparable android.os.Parcelable {
+ public final class Configuration implements java.lang.Comparable<android.content.res.Configuration> android.os.Parcelable {
field public int assetsSeq;
field public final android.app.WindowConfiguration windowConfiguration;
}
@@ -453,14 +456,14 @@
}
public final class SQLiteDebug {
- method public static void dump(android.util.Printer, java.lang.String[]);
+ method public static void dump(android.util.Printer, String[]);
method public static android.database.sqlite.SQLiteDebug.PagerStats getDatabaseInfo();
}
public static class SQLiteDebug.DbStats {
- ctor public SQLiteDebug.DbStats(java.lang.String, long, long, int, int, int, int);
- field public java.lang.String cache;
- field public java.lang.String dbName;
+ ctor public SQLiteDebug.DbStats(String, long, long, int, int, int, int);
+ field public String cache;
+ field public String dbName;
field public long dbSize;
field public int lookaside;
field public long pageSize;
@@ -475,23 +478,23 @@
}
public final class SQLiteDirectCursorDriver implements android.database.sqlite.SQLiteCursorDriver {
- ctor public SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, java.lang.String, java.lang.String, android.os.CancellationSignal);
+ ctor public SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal);
method public void cursorClosed();
method public void cursorDeactivated();
method public void cursorRequeried(android.database.Cursor);
- method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, java.lang.String[]);
- method public void setBindArguments(java.lang.String[]);
+ method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]);
+ method public void setBindArguments(String[]);
}
public final class SQLiteGlobal {
- method public static java.lang.String getDefaultJournalMode();
+ method public static String getDefaultJournalMode();
method public static int getDefaultPageSize();
- method public static java.lang.String getDefaultSyncMode();
+ method public static String getDefaultSyncMode();
method public static int getIdleConnectionTimeout();
method public static int getJournalSizeLimit();
method public static int getWALAutoCheckpoint();
method public static int getWALConnectionPoolSize();
- method public static java.lang.String getWALSyncMode();
+ method public static String getWALSyncMode();
method public static boolean isCompatibilityWalSupported();
method public static int releaseMemory();
}
@@ -500,8 +503,19 @@
package android.graphics {
+ public final class Bitmap implements android.os.Parcelable {
+ method public void eraseColor(@ColorLong long);
+ }
+
public final class ImageDecoder implements java.lang.AutoCloseable {
- method public static android.graphics.ImageDecoder.Source createSource(android.content.res.Resources, java.io.InputStream, int);
+ method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(android.content.res.Resources, java.io.InputStream, int);
+ }
+
+ public class Paint {
+ method @ColorLong public long getColorLong();
+ method @ColorLong public long getShadowLayerColorLong();
+ method public void setColor(@ColorLong long);
+ method public void setShadowLayer(float, float, float, @ColorLong long);
}
}
@@ -522,7 +536,7 @@
}
public class ShapeDrawable extends android.graphics.drawable.Drawable {
- method public void setXfermode(android.graphics.Xfermode);
+ method public void setXfermode(@Nullable android.graphics.Xfermode);
}
}
@@ -530,7 +544,7 @@
package android.hardware.camera2 {
public abstract class CameraDevice implements java.lang.AutoCloseable {
- method public abstract void createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+ method public abstract void createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
field public static final int SESSION_OPERATION_MODE_CONSTRAINED_HIGH_SPEED = 1; // 0x1
field public static final int SESSION_OPERATION_MODE_NORMAL = 0; // 0x0
field public static final int SESSION_OPERATION_MODE_VENDOR_START = 32768; // 0x8000
@@ -562,31 +576,45 @@
field public final long[] luxTimestamps;
field public final float[] luxValues;
field public final boolean nightMode;
- field public final java.lang.String packageName;
+ field public final String packageName;
field public final float powerBrightnessFactor;
field public final long timeStamp;
}
public final class BrightnessConfiguration implements android.os.Parcelable {
method public int describeContents();
- method public android.util.Pair<float[], float[]> getCurve();
+ method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByCategory(int);
+ method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByPackageName(String);
+ method public android.util.Pair<float[],float[]> getCurve();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessConfiguration> CREATOR;
}
public static class BrightnessConfiguration.Builder {
ctor public BrightnessConfiguration.Builder(float[], float[]);
+ method public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByCategory(int, android.hardware.display.BrightnessCorrection);
+ method public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByPackageName(String, android.hardware.display.BrightnessCorrection);
method public android.hardware.display.BrightnessConfiguration build();
- method public android.hardware.display.BrightnessConfiguration.Builder setDescription(java.lang.String);
+ method public int getMaxCorrectionsByCategory();
+ method public int getMaxCorrectionsByPackageName();
+ method public android.hardware.display.BrightnessConfiguration.Builder setDescription(@Nullable String);
+ }
+
+ public final class BrightnessCorrection implements android.os.Parcelable {
+ method public float apply(float);
+ method @NonNull public static android.hardware.display.BrightnessCorrection createScaleAndTranslateLog(float, float);
+ method public int describeContents();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessCorrection> CREATOR;
}
public final class DisplayManager {
- method public java.util.List<android.hardware.display.AmbientBrightnessDayStats> getAmbientBrightnessStats();
- method public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
- method public java.util.List<android.hardware.display.BrightnessChangeEvent> getBrightnessEvents();
- method public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
+ method @RequiresPermission("android.permission.ACCESS_AMBIENT_LIGHT_STATS") public java.util.List<android.hardware.display.AmbientBrightnessDayStats> getAmbientBrightnessStats();
+ method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
+ method @RequiresPermission(android.Manifest.permission.BRIGHTNESS_SLIDER_USAGE) public java.util.List<android.hardware.display.BrightnessChangeEvent> getBrightnessEvents();
+ method @Nullable @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
method public android.graphics.Point getStableDisplaySize();
- method public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
+ method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
}
}
@@ -619,21 +647,23 @@
ctor public GnssMeasurement();
method public void reset();
method public void resetAutomaticGainControlLevel();
- method public deprecated void resetCarrierCycles();
+ method @Deprecated public void resetCarrierCycles();
method public void resetCarrierFrequencyHz();
- method public deprecated void resetCarrierPhase();
- method public deprecated void resetCarrierPhaseUncertainty();
+ method @Deprecated public void resetCarrierPhase();
+ method @Deprecated public void resetCarrierPhaseUncertainty();
+ method public void resetCodeType();
method public void resetSnrInDb();
method public void set(android.location.GnssMeasurement);
method public void setAccumulatedDeltaRangeMeters(double);
method public void setAccumulatedDeltaRangeState(int);
method public void setAccumulatedDeltaRangeUncertaintyMeters(double);
method public void setAutomaticGainControlLevelInDb(double);
- method public deprecated void setCarrierCycles(long);
+ method @Deprecated public void setCarrierCycles(long);
method public void setCarrierFrequencyHz(float);
- method public deprecated void setCarrierPhase(double);
- method public deprecated void setCarrierPhaseUncertainty(double);
+ method @Deprecated public void setCarrierPhase(double);
+ method @Deprecated public void setCarrierPhaseUncertainty(double);
method public void setCn0DbHz(double);
+ method public void setCodeType(int);
method public void setConstellationType(int);
method public void setMultipathIndicator(int);
method public void setPseudorangeRateMetersPerSecond(double);
@@ -668,7 +698,7 @@
}
public class LocationManager {
- method public java.lang.String[] getBackgroundThrottlingWhitelist();
+ method public String[] getBackgroundThrottlingWhitelist();
}
}
@@ -676,7 +706,7 @@
package android.media {
public final class AudioFocusRequest {
- method public android.media.AudioManager.OnAudioFocusChangeListener getOnAudioFocusChangeListener();
+ method @Nullable public android.media.AudioManager.OnAudioFocusChangeListener getOnAudioFocusChangeListener();
}
public final class AudioFormat implements android.os.Parcelable {
@@ -687,8 +717,8 @@
}
public final class AudioRecordingConfiguration implements android.os.Parcelable {
- ctor public AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, java.lang.String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]);
- ctor public AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, java.lang.String);
+ ctor public AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]);
+ ctor public AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String);
}
public final class BufferingParams implements android.os.Parcelable {
@@ -713,7 +743,7 @@
}
public static final class VolumeShaper.Configuration.Builder {
- method public android.media.VolumeShaper.Configuration.Builder setOptionFlags(int);
+ method @NonNull public android.media.VolumeShaper.Configuration.Builder setOptionFlags(int);
}
}
@@ -742,8 +772,8 @@
field public static final java.util.UUID EFFECT_TYPE_NULL;
}
- public static abstract interface AudioEffect.OnParameterChangeListener {
- method public abstract void onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]);
+ public static interface AudioEffect.OnParameterChangeListener {
+ method public void onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]);
}
}
@@ -771,7 +801,7 @@
package android.os {
public class Build {
- method public static boolean is64BitAbi(java.lang.String);
+ method public static boolean is64BitAbi(String);
}
public static class Build.VERSION {
@@ -780,8 +810,8 @@
}
public class DeviceIdleManager {
- method public java.lang.String[] getSystemPowerWhitelist();
- method public java.lang.String[] getSystemPowerWhitelistExceptIdle();
+ method @NonNull public String[] getSystemPowerWhitelist();
+ method @NonNull public String[] getSystemPowerWhitelistExceptIdle();
}
public class Environment {
@@ -790,8 +820,136 @@
method public static java.io.File getStorageDirectory();
}
+ public abstract class HwBinder implements android.os.IHwBinder {
+ ctor public HwBinder();
+ method public static final void configureRpcThreadpool(long, boolean);
+ method public static void enableInstrumentation();
+ method public static final android.os.IHwBinder getService(String, String) throws java.util.NoSuchElementException, android.os.RemoteException;
+ method public static final android.os.IHwBinder getService(String, String, boolean) throws java.util.NoSuchElementException, android.os.RemoteException;
+ method public static final void joinRpcThreadpool();
+ method public abstract void onTransact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
+ method public final void registerService(String) throws android.os.RemoteException;
+ method public final void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
+ }
+
+ public class HwBlob {
+ ctor public HwBlob(int);
+ method public final void copyToBoolArray(long, boolean[], int);
+ method public final void copyToDoubleArray(long, double[], int);
+ method public final void copyToFloatArray(long, float[], int);
+ method public final void copyToInt16Array(long, short[], int);
+ method public final void copyToInt32Array(long, int[], int);
+ method public final void copyToInt64Array(long, long[], int);
+ method public final void copyToInt8Array(long, byte[], int);
+ method public final boolean getBool(long);
+ method public final double getDouble(long);
+ method public final float getFloat(long);
+ method public final short getInt16(long);
+ method public final int getInt32(long);
+ method public final long getInt64(long);
+ method public final byte getInt8(long);
+ method public final String getString(long);
+ method public final long handle();
+ method public final void putBlob(long, android.os.HwBlob);
+ method public final void putBool(long, boolean);
+ method public final void putBoolArray(long, boolean[]);
+ method public final void putDouble(long, double);
+ method public final void putDoubleArray(long, double[]);
+ method public final void putFloat(long, float);
+ method public final void putFloatArray(long, float[]);
+ method public final void putInt16(long, short);
+ method public final void putInt16Array(long, short[]);
+ method public final void putInt32(long, int);
+ method public final void putInt32Array(long, int[]);
+ method public final void putInt64(long, long);
+ method public final void putInt64Array(long, long[]);
+ method public final void putInt8(long, byte);
+ method public final void putInt8Array(long, byte[]);
+ method public final void putNativeHandle(long, android.os.NativeHandle);
+ method public final void putString(long, String);
+ method public static Boolean[] wrapArray(@NonNull boolean[]);
+ method public static Long[] wrapArray(@NonNull long[]);
+ method public static Byte[] wrapArray(@NonNull byte[]);
+ method public static Short[] wrapArray(@NonNull short[]);
+ method public static Integer[] wrapArray(@NonNull int[]);
+ method public static Float[] wrapArray(@NonNull float[]);
+ method public static Double[] wrapArray(@NonNull double[]);
+ }
+
+ public class HwParcel {
+ ctor public HwParcel();
+ method public final void enforceInterface(String);
+ method public final boolean readBool();
+ method public final java.util.ArrayList<java.lang.Boolean> readBoolVector();
+ method public final android.os.HwBlob readBuffer(long);
+ method public final double readDouble();
+ method public final java.util.ArrayList<java.lang.Double> readDoubleVector();
+ method public final android.os.HwBlob readEmbeddedBuffer(long, long, long, boolean);
+ method public final android.os.NativeHandle readEmbeddedNativeHandle(long, long);
+ method public final float readFloat();
+ method public final java.util.ArrayList<java.lang.Float> readFloatVector();
+ method public final short readInt16();
+ method public final java.util.ArrayList<java.lang.Short> readInt16Vector();
+ method public final int readInt32();
+ method public final java.util.ArrayList<java.lang.Integer> readInt32Vector();
+ method public final long readInt64();
+ method public final java.util.ArrayList<java.lang.Long> readInt64Vector();
+ method public final byte readInt8();
+ method public final java.util.ArrayList<java.lang.Byte> readInt8Vector();
+ method public final android.os.NativeHandle readNativeHandle();
+ method public final java.util.ArrayList<android.os.NativeHandle> readNativeHandleVector();
+ method public final String readString();
+ method public final java.util.ArrayList<java.lang.String> readStringVector();
+ method public final android.os.IHwBinder readStrongBinder();
+ method public final void release();
+ method public final void releaseTemporaryStorage();
+ method public final void send();
+ method public final void verifySuccess();
+ method public final void writeBool(boolean);
+ method public final void writeBoolVector(java.util.ArrayList<java.lang.Boolean>);
+ method public final void writeBuffer(android.os.HwBlob);
+ method public final void writeDouble(double);
+ method public final void writeDoubleVector(java.util.ArrayList<java.lang.Double>);
+ method public final void writeFloat(float);
+ method public final void writeFloatVector(java.util.ArrayList<java.lang.Float>);
+ method public final void writeInt16(short);
+ method public final void writeInt16Vector(java.util.ArrayList<java.lang.Short>);
+ method public final void writeInt32(int);
+ method public final void writeInt32Vector(java.util.ArrayList<java.lang.Integer>);
+ method public final void writeInt64(long);
+ method public final void writeInt64Vector(java.util.ArrayList<java.lang.Long>);
+ method public final void writeInt8(byte);
+ method public final void writeInt8Vector(java.util.ArrayList<java.lang.Byte>);
+ method public final void writeInterfaceToken(String);
+ method public final void writeNativeHandle(android.os.NativeHandle);
+ method public final void writeNativeHandleVector(java.util.ArrayList<android.os.NativeHandle>);
+ method public final void writeStatus(int);
+ method public final void writeString(String);
+ method public final void writeStringVector(java.util.ArrayList<java.lang.String>);
+ method public final void writeStrongBinder(android.os.IHwBinder);
+ field public static final int STATUS_SUCCESS = 0; // 0x0
+ }
+
+ @IntDef(prefix={"STATUS_"}, value={android.os.HwParcel.STATUS_SUCCESS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface HwParcel.Status {
+ }
+
+ public interface IHwBinder {
+ method public boolean linkToDeath(android.os.IHwBinder.DeathRecipient, long);
+ method public android.os.IHwInterface queryLocalInterface(String);
+ method public void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
+ method public boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient);
+ }
+
+ public static interface IHwBinder.DeathRecipient {
+ method public void serviceDied(long);
+ }
+
+ public interface IHwInterface {
+ method public android.os.IHwBinder asBinder();
+ }
+
public class IncidentManager {
- method public void reportIncident(android.os.IncidentReportArgs);
+ method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void reportIncident(android.os.IncidentReportArgs);
}
public final class IncidentReportArgs implements android.os.Parcelable {
@@ -815,29 +973,46 @@
method public void removeSyncBarrier(int);
}
+ public final class NativeHandle implements java.io.Closeable {
+ ctor public NativeHandle();
+ ctor public NativeHandle(@NonNull java.io.FileDescriptor, boolean);
+ ctor public NativeHandle(@NonNull java.io.FileDescriptor[], @NonNull int[], boolean);
+ method public void close() throws java.io.IOException;
+ method public android.os.NativeHandle dup() throws java.io.IOException;
+ method public java.io.FileDescriptor getFileDescriptor();
+ method public java.io.FileDescriptor[] getFileDescriptors();
+ method public int[] getInts();
+ method public boolean hasSingleFileDescriptor();
+ }
+
public final class PowerManager {
- method public int getPowerSaveMode();
- method public boolean setDynamicPowerSavings(boolean, int);
- method public boolean setPowerSaveMode(boolean);
+ method @RequiresPermission("android.permission.POWER_SAVER") public int getPowerSaveMode();
+ method @RequiresPermission("android.permission.POWER_SAVER") public boolean setDynamicPowerSavings(boolean, int);
+ method @RequiresPermission(anyOf={"android.permission.DEVICE_POWER", "android.permission.POWER_SAVER"}) public boolean setPowerSaveMode(boolean);
field public static final int POWER_SAVER_MODE_DYNAMIC = 1; // 0x1
field public static final int POWER_SAVER_MODE_PERCENTAGE = 0; // 0x0
}
public class Process {
method public static final int getThreadScheduler(int) throws java.lang.IllegalArgumentException;
+ field public static final int FIRST_APP_ZYGOTE_ISOLATED_UID = 90000; // 0x15f90
+ field public static final int FIRST_ISOLATED_UID = 99000; // 0x182b8
+ field public static final int LAST_APP_ZYGOTE_ISOLATED_UID = 98999; // 0x182b7
+ field public static final int LAST_ISOLATED_UID = 99999; // 0x1869f
+ field public static final int NUM_UIDS_PER_APP_ZYGOTE = 100; // 0x64
}
public final class RemoteCallback implements android.os.Parcelable {
ctor public RemoteCallback(android.os.RemoteCallback.OnResultListener);
- ctor public RemoteCallback(android.os.RemoteCallback.OnResultListener, android.os.Handler);
+ ctor public RemoteCallback(@NonNull android.os.RemoteCallback.OnResultListener, @Nullable android.os.Handler);
method public int describeContents();
- method public void sendResult(android.os.Bundle);
+ method public void sendResult(@Nullable android.os.Bundle);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.RemoteCallback> CREATOR;
}
- public static abstract interface RemoteCallback.OnResultListener {
- method public abstract void onResult(android.os.Bundle);
+ public static interface RemoteCallback.OnResultListener {
+ method public void onResult(android.os.Bundle);
}
public final class StrictMode {
@@ -853,28 +1028,28 @@
ctor public StrictMode.ViolationInfo(android.os.Parcel);
ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean);
method public int describeContents();
- method public void dump(android.util.Printer, java.lang.String);
- method public java.lang.String getStackTrace();
- method public java.lang.Class<? extends android.os.strictmode.Violation> getViolationClass();
- method public java.lang.String getViolationDetails();
+ method public void dump(android.util.Printer, String);
+ method public String getStackTrace();
+ method public Class<? extends android.os.strictmode.Violation> getViolationClass();
+ method public String getViolationDetails();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.os.StrictMode.ViolationInfo> CREATOR;
- field public java.lang.String broadcastIntentAction;
+ field public String broadcastIntentAction;
field public int durationMillis;
field public int numAnimationsRunning;
field public long numInstances;
- field public java.lang.String[] tags;
+ field public String[] tags;
field public int violationNumThisLoop;
field public long violationUptimeMillis;
}
- public static abstract interface StrictMode.ViolationLogger {
- method public abstract void log(android.os.StrictMode.ViolationInfo);
+ public static interface StrictMode.ViolationLogger {
+ method public void log(android.os.StrictMode.ViolationInfo);
}
public class SystemProperties {
- method public static java.lang.String get(java.lang.String);
- method public static java.lang.String get(java.lang.String, java.lang.String);
+ method @NonNull public static String get(@NonNull String);
+ method @NonNull public static String get(@NonNull String, @Nullable String);
}
public final class UserHandle implements android.os.Parcelable {
@@ -888,13 +1063,13 @@
public class UserManager {
method public static boolean isSplitSystemUser();
- field public static final java.lang.String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED";
+ field public static final String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED";
}
public abstract class VibrationEffect implements android.os.Parcelable {
method public static android.os.VibrationEffect get(int);
method public static android.os.VibrationEffect get(int, boolean);
- method public static android.os.VibrationEffect get(android.net.Uri, android.content.Context);
+ method @Nullable public static android.os.VibrationEffect get(android.net.Uri, android.content.Context);
method public abstract long getDuration();
method protected static int scale(int, float, int);
field public static final int EFFECT_CLICK = 0; // 0x0
@@ -946,14 +1121,32 @@
field public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Waveform> CREATOR;
}
+ public class VintfObject {
+ method public static String[] getHalNamesAndVersions();
+ method public static String getSepolicyVersion();
+ method public static Long getTargetFrameworkCompatibilityMatrixVersion();
+ method public static java.util.Map<java.lang.String,java.lang.String[]> getVndkSnapshots();
+ method public static String[] report();
+ }
+
+ public class VintfRuntimeInfo {
+ method public static String getCpuInfo();
+ method public static String getHardwareId();
+ method public static String getKernelVersion();
+ method public static String getNodeName();
+ method public static String getOsName();
+ method public static String getOsRelease();
+ method public static String getOsVersion();
+ }
+
public class WorkSource implements android.os.Parcelable {
ctor public WorkSource(int);
method public boolean add(int);
- method public boolean add(int, java.lang.String);
- method public deprecated android.os.WorkSource addReturningNewbs(android.os.WorkSource);
+ method public boolean add(int, String);
+ method @Deprecated public android.os.WorkSource addReturningNewbs(android.os.WorkSource);
method public int get(int);
- method public java.lang.String getName(int);
- method public deprecated android.os.WorkSource[] setReturningDiffs(android.os.WorkSource);
+ method public String getName(int);
+ method @Deprecated public android.os.WorkSource[] setReturningDiffs(android.os.WorkSource);
method public int size();
}
@@ -977,12 +1170,13 @@
field public static final int UNKNOWN_KEY = 0; // 0x0
}
- public static abstract class HealthKeys.Constant implements java.lang.annotation.Annotation {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD}) public static @interface HealthKeys.Constant {
+ method public abstract int type();
}
public static class HealthKeys.Constants {
- ctor public HealthKeys.Constants(java.lang.Class);
- method public java.lang.String getDataType();
+ ctor public HealthKeys.Constants(Class);
+ method public String getDataType();
method public int getIndex(int, int);
method public int[] getKeys(int);
method public int getSize(int);
@@ -1004,10 +1198,10 @@
public class HealthStatsWriter {
ctor public HealthStatsWriter(android.os.health.HealthKeys.Constants);
method public void addMeasurement(int, long);
- method public void addMeasurements(int, java.lang.String, long);
- method public void addStats(int, java.lang.String, android.os.health.HealthStatsWriter);
+ method public void addMeasurements(int, String, long);
+ method public void addStats(int, String, android.os.health.HealthStatsWriter);
method public void addTimer(int, int, long);
- method public void addTimers(int, java.lang.String, android.os.health.TimerStat);
+ method public void addTimers(int, String, android.os.health.TimerStat);
method public void flattenToParcel(android.os.Parcel);
}
@@ -1020,7 +1214,7 @@
}
public final class StorageVolume implements android.os.Parcelable {
- method public java.lang.String getPath();
+ method public String getPath();
}
}
@@ -1035,14 +1229,14 @@
package android.permission {
public final class PermissionControllerManager {
- method public void revokeRuntimePermissions(java.util.Map<java.lang.String, java.util.List<java.lang.String>>, boolean, int, java.util.concurrent.Executor, android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback);
+ method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback);
field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2
field public static final int REASON_MALWARE = 1; // 0x1
}
- public static abstract class PermissionControllerManager.OnRevokeRuntimePermissionsCallback {
+ public abstract static class PermissionControllerManager.OnRevokeRuntimePermissionsCallback {
ctor public PermissionControllerManager.OnRevokeRuntimePermissionsCallback();
- method public abstract void onRevokeRuntimePermissions(java.util.Map<java.lang.String, java.util.List<java.lang.String>>);
+ method public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
}
}
@@ -1051,11 +1245,11 @@
public final class PrintJobInfo implements android.os.Parcelable {
method public float getProgress();
- method public java.lang.CharSequence getStatus(android.content.pm.PackageManager);
+ method @Nullable public CharSequence getStatus(@NonNull android.content.pm.PackageManager);
}
public final class PrinterInfo implements android.os.Parcelable {
- method public android.graphics.drawable.Drawable loadIcon(android.content.Context);
+ method @Nullable public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context);
}
}
@@ -1071,50 +1265,50 @@
}
public final class MediaStore {
- method public static void deleteContributedMedia(android.content.Context, java.lang.String, android.os.UserHandle) throws java.io.IOException;
- method public static long getContributedMediaSize(android.content.Context, java.lang.String, android.os.UserHandle) throws java.io.IOException;
+ method @RequiresPermission("android.permission.CLEAR_APP_USER_DATA") public static void deleteContributedMedia(android.content.Context, String, android.os.UserHandle) throws java.io.IOException;
+ method @RequiresPermission("android.permission.CLEAR_APP_USER_DATA") public static long getContributedMediaSize(android.content.Context, String, android.os.UserHandle) throws java.io.IOException;
}
public final class Settings {
- field public static final java.lang.String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
+ field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
}
public static final class Settings.Global extends android.provider.Settings.NameValueTable {
- field public static final java.lang.String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages";
- field public static final java.lang.String AUTOFILL_SMART_SUGGESTION_EMULATION_FLAGS = "autofill_smart_suggestion_emulation_flags";
- field public static final java.lang.String AUTOMATIC_POWER_SAVER_MODE = "automatic_power_saver_mode";
- field public static final java.lang.String DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD = "dynamic_power_savings_disable_threshold";
- field public static final java.lang.String DYNAMIC_POWER_SAVINGS_ENABLED = "dynamic_power_savings_enabled";
- field public static final java.lang.String HIDDEN_API_BLACKLIST_EXEMPTIONS = "hidden_api_blacklist_exemptions";
- field public static final java.lang.String LOCATION_GLOBAL_KILL_SWITCH = "location_global_kill_switch";
- field public static final java.lang.String LOW_POWER_MODE = "low_power";
- field public static final java.lang.String LOW_POWER_MODE_STICKY = "low_power_sticky";
- field public static final java.lang.String SMS_ACCESS_RESTRICTION_ENABLED = "sms_access_restriction_enabled";
- field public static final java.lang.String USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package";
+ field public static final String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages";
+ field public static final String AUTOFILL_SMART_SUGGESTION_EMULATION_FLAGS = "autofill_smart_suggestion_emulation_flags";
+ field public static final String AUTOMATIC_POWER_SAVER_MODE = "automatic_power_saver_mode";
+ field public static final String DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD = "dynamic_power_savings_disable_threshold";
+ field public static final String DYNAMIC_POWER_SAVINGS_ENABLED = "dynamic_power_savings_enabled";
+ field public static final String HIDDEN_API_BLACKLIST_EXEMPTIONS = "hidden_api_blacklist_exemptions";
+ field public static final String LOCATION_GLOBAL_KILL_SWITCH = "location_global_kill_switch";
+ field public static final String LOW_POWER_MODE = "low_power";
+ field public static final String LOW_POWER_MODE_STICKY = "low_power_sticky";
+ field public static final String SMS_ACCESS_RESTRICTION_ENABLED = "sms_access_restriction_enabled";
+ field public static final String USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package";
}
public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
- method public static void resetToDefaults(android.content.ContentResolver, java.lang.String);
- field public static final java.lang.String ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED = "accessibility_display_magnification_enabled";
- field public static final java.lang.String ACCESSIBILITY_SHORTCUT_TARGET_SERVICE = "accessibility_shortcut_target_service";
- field public static final java.lang.String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
- field public static final java.lang.String AUTOFILL_SERVICE = "autofill_service";
- field public static final java.lang.String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count";
- field public static final java.lang.String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE = "autofill_user_data_max_field_classification_size";
- field public static final java.lang.String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE = "autofill_user_data_max_user_data_size";
- field public static final java.lang.String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH = "autofill_user_data_max_value_length";
- field public static final java.lang.String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length";
- field public static final java.lang.String DISABLED_PRINT_SERVICES = "disabled_print_services";
- field public static final deprecated java.lang.String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages";
- field public static final java.lang.String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
- field public static final java.lang.String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
- field public static final java.lang.String SYNC_PARENT_SOUNDS = "sync_parent_sounds";
- field public static final java.lang.String USER_SETUP_COMPLETE = "user_setup_complete";
- field public static final java.lang.String VOICE_INTERACTION_SERVICE = "voice_interaction_service";
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
+ field public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED = "accessibility_display_magnification_enabled";
+ field public static final String ACCESSIBILITY_SHORTCUT_TARGET_SERVICE = "accessibility_shortcut_target_service";
+ field public static final String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
+ field public static final String AUTOFILL_SERVICE = "autofill_service";
+ field public static final String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count";
+ field public static final String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE = "autofill_user_data_max_field_classification_size";
+ field public static final String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE = "autofill_user_data_max_user_data_size";
+ field public static final String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH = "autofill_user_data_max_value_length";
+ field public static final String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length";
+ field public static final String DISABLED_PRINT_SERVICES = "disabled_print_services";
+ field @Deprecated public static final String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages";
+ field public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
+ field public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
+ field @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final String SYNC_PARENT_SOUNDS = "sync_parent_sounds";
+ field public static final String USER_SETUP_COMPLETE = "user_setup_complete";
+ field public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service";
}
public static final class Telephony.Sms.Intents {
- field public static final java.lang.String SMS_CARRIER_PROVISION_ACTION = "android.provider.Telephony.SMS_CARRIER_PROVISION";
+ field public static final String SMS_CARRIER_PROVISION_ACTION = "android.provider.Telephony.SMS_CARRIER_PROVISION";
}
}
@@ -1122,7 +1316,7 @@
package android.security {
public class KeyStoreException extends java.lang.Exception {
- ctor public KeyStoreException(int, java.lang.String);
+ ctor public KeyStoreException(int, String);
method public int getErrorCode();
}
@@ -1131,19 +1325,19 @@
package android.security.keystore {
public abstract class AttestationUtils {
- method public static java.security.cert.X509Certificate[] attestDeviceIds(android.content.Context, int[], byte[]) throws android.security.keystore.DeviceIdAttestationException;
+ method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") @NonNull public static java.security.cert.X509Certificate[] attestDeviceIds(android.content.Context, @NonNull int[], @NonNull byte[]) throws android.security.keystore.DeviceIdAttestationException;
field public static final int ID_TYPE_IMEI = 2; // 0x2
field public static final int ID_TYPE_MEID = 3; // 0x3
field public static final int ID_TYPE_SERIAL = 1; // 0x1
}
public class DeviceIdAttestationException extends java.lang.Exception {
- ctor public DeviceIdAttestationException(java.lang.String);
- ctor public DeviceIdAttestationException(java.lang.String, java.lang.Throwable);
+ ctor public DeviceIdAttestationException(String);
+ ctor public DeviceIdAttestationException(String, Throwable);
}
public static final class KeyGenParameterSpec.Builder {
- method public android.security.keystore.KeyGenParameterSpec.Builder setUniqueIdIncluded(boolean);
+ method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUniqueIdIncluded(boolean);
}
public final class KeyProtection implements java.security.KeyStore.ProtectionParameter {
@@ -1160,41 +1354,41 @@
public abstract class AutofillFieldClassificationService extends android.app.Service {
method public android.os.IBinder onBind(android.content.Intent);
- field public static final java.lang.String REQUIRED_ALGORITHM_EDIT_DISTANCE = "EDIT_DISTANCE";
- field public static final java.lang.String REQUIRED_ALGORITHM_EXACT_MATCH = "EXACT_MATCH";
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.AutofillFieldClassificationService";
- field public static final java.lang.String SERVICE_META_DATA_KEY_AVAILABLE_ALGORITHMS = "android.autofill.field_classification.available_algorithms";
- field public static final java.lang.String SERVICE_META_DATA_KEY_DEFAULT_ALGORITHM = "android.autofill.field_classification.default_algorithm";
+ field public static final String REQUIRED_ALGORITHM_EDIT_DISTANCE = "EDIT_DISTANCE";
+ field public static final String REQUIRED_ALGORITHM_EXACT_MATCH = "EXACT_MATCH";
+ field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillFieldClassificationService";
+ field public static final String SERVICE_META_DATA_KEY_AVAILABLE_ALGORITHMS = "android.autofill.field_classification.available_algorithms";
+ field public static final String SERVICE_META_DATA_KEY_DEFAULT_ALGORITHM = "android.autofill.field_classification.default_algorithm";
}
public final class CharSequenceTransformation extends android.service.autofill.InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
- method public void apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int) throws java.lang.Exception;
+ method public void apply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, int) throws java.lang.Exception;
}
public final class CompositeUserData implements android.os.Parcelable {
- ctor public CompositeUserData(android.service.autofill.UserData, android.service.autofill.UserData);
+ ctor public CompositeUserData(@Nullable android.service.autofill.UserData, @NonNull android.service.autofill.UserData);
method public int describeContents();
- method public java.lang.String[] getCategoryIds();
+ method public String[] getCategoryIds();
method public android.os.Bundle getDefaultFieldClassificationArgs();
- method public java.lang.String getFieldClassificationAlgorithm();
- method public java.lang.String getFieldClassificationAlgorithmForCategory(java.lang.String);
- method public android.util.ArrayMap<java.lang.String, java.lang.String> getFieldClassificationAlgorithms();
- method public android.util.ArrayMap<java.lang.String, android.os.Bundle> getFieldClassificationArgs();
- method public java.lang.String[] getValues();
+ method @Nullable public String getFieldClassificationAlgorithm();
+ method @Nullable public String getFieldClassificationAlgorithmForCategory(@NonNull String);
+ method public android.util.ArrayMap<java.lang.String,java.lang.String> getFieldClassificationAlgorithms();
+ method public android.util.ArrayMap<java.lang.String,android.os.Bundle> getFieldClassificationArgs();
+ method public String[] getValues();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.autofill.CompositeUserData> CREATOR;
}
public final class CustomDescription implements android.os.Parcelable {
- method public android.util.SparseArray<android.service.autofill.InternalOnClickAction> getActions();
+ method @Nullable public android.util.SparseArray<android.service.autofill.InternalOnClickAction> getActions();
}
public final class DateTransformation extends android.service.autofill.InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
- method public void apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int) throws java.lang.Exception;
+ method public void apply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, int) throws java.lang.Exception;
}
public final class DateValueSanitizer extends android.service.autofill.InternalSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
- method public android.view.autofill.AutofillValue sanitize(android.view.autofill.AutofillValue);
+ method @Nullable public android.view.autofill.AutofillValue sanitize(@NonNull android.view.autofill.AutofillValue);
}
public final class FillResponse implements android.os.Parcelable {
@@ -1202,52 +1396,52 @@
}
public final class ImageTransformation extends android.service.autofill.InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
- method public void apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int) throws java.lang.Exception;
+ method public void apply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, int) throws java.lang.Exception;
}
public abstract class InternalOnClickAction implements android.service.autofill.OnClickAction android.os.Parcelable {
ctor public InternalOnClickAction();
- method public abstract void onClick(android.view.ViewGroup);
+ method public abstract void onClick(@NonNull android.view.ViewGroup);
}
public abstract class InternalSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
ctor public InternalSanitizer();
- method public abstract android.view.autofill.AutofillValue sanitize(android.view.autofill.AutofillValue);
+ method @Nullable public abstract android.view.autofill.AutofillValue sanitize(@NonNull android.view.autofill.AutofillValue);
}
public abstract class InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
ctor public InternalTransformation();
- method public static boolean batchApply(android.service.autofill.ValueFinder, android.widget.RemoteViews, java.util.ArrayList<android.util.Pair<java.lang.Integer, android.service.autofill.InternalTransformation>>);
+ method public static boolean batchApply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, @NonNull java.util.ArrayList<android.util.Pair<java.lang.Integer,android.service.autofill.InternalTransformation>>);
}
public abstract class InternalValidator implements android.os.Parcelable android.service.autofill.Validator {
ctor public InternalValidator();
- method public abstract boolean isValid(android.service.autofill.ValueFinder);
+ method public abstract boolean isValid(@NonNull android.service.autofill.ValueFinder);
}
public final class LuhnChecksumValidator extends android.service.autofill.InternalValidator implements android.os.Parcelable android.service.autofill.Validator {
- method public boolean isValid(android.service.autofill.ValueFinder);
+ method public boolean isValid(@NonNull android.service.autofill.ValueFinder);
}
public final class RegexValidator extends android.service.autofill.InternalValidator implements android.os.Parcelable android.service.autofill.Validator {
- method public boolean isValid(android.service.autofill.ValueFinder);
+ method public boolean isValid(@NonNull android.service.autofill.ValueFinder);
}
public final class TextValueSanitizer extends android.service.autofill.InternalSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
- method public android.view.autofill.AutofillValue sanitize(android.view.autofill.AutofillValue);
+ method @Nullable public android.view.autofill.AutofillValue sanitize(@NonNull android.view.autofill.AutofillValue);
}
public final class UserData implements android.os.Parcelable {
- method public android.util.ArrayMap<java.lang.String, java.lang.String> getFieldClassificationAlgorithms();
+ method public android.util.ArrayMap<java.lang.String,java.lang.String> getFieldClassificationAlgorithms();
}
- public abstract interface ValueFinder {
- method public default java.lang.String findByAutofillId(android.view.autofill.AutofillId);
- method public abstract android.view.autofill.AutofillValue findRawValueByAutofillId(android.view.autofill.AutofillId);
+ public interface ValueFinder {
+ method @Nullable public default String findByAutofillId(@NonNull android.view.autofill.AutofillId);
+ method @Nullable public android.view.autofill.AutofillValue findRawValueByAutofillId(@NonNull android.view.autofill.AutofillId);
}
public final class VisibilitySetterAction extends android.service.autofill.InternalOnClickAction implements android.service.autofill.OnClickAction android.os.Parcelable {
- method public void onClick(android.view.ViewGroup);
+ method public void onClick(@NonNull android.view.ViewGroup);
}
}
@@ -1256,25 +1450,25 @@
public abstract class AugmentedAutofillService extends android.app.Service {
ctor public AugmentedAutofillService();
- method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method protected void dump(java.io.PrintWriter, java.lang.String[]);
- method public void onFillRequest(android.service.autofill.augmented.FillRequest, android.os.CancellationSignal, android.service.autofill.augmented.FillController, android.service.autofill.augmented.FillCallback);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.augmented.AugmentedAutofillService";
+ method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method protected void dump(@NonNull java.io.PrintWriter, @NonNull String[]);
+ method public void onFillRequest(@NonNull android.service.autofill.augmented.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.augmented.FillController, @NonNull android.service.autofill.augmented.FillCallback);
+ field public static final String SERVICE_INTERFACE = "android.service.autofill.augmented.AugmentedAutofillService";
}
public final class FillCallback {
- method public void onSuccess(android.service.autofill.augmented.FillResponse);
+ method public void onSuccess(@Nullable android.service.autofill.augmented.FillResponse);
}
public final class FillController {
- method public void autofill(java.util.List<android.util.Pair<android.view.autofill.AutofillId, android.view.autofill.AutofillValue>>);
+ method public void autofill(@NonNull java.util.List<android.util.Pair<android.view.autofill.AutofillId,android.view.autofill.AutofillValue>>);
}
public final class FillRequest {
- method public android.content.ComponentName getActivityComponent();
- method public android.view.autofill.AutofillId getFocusedId();
- method public android.view.autofill.AutofillValue getFocusedValue();
- method public android.service.autofill.augmented.PresentationParams getPresentationParams();
+ method @NonNull public android.content.ComponentName getActivityComponent();
+ method @NonNull public android.view.autofill.AutofillId getFocusedId();
+ method @NonNull public android.view.autofill.AutofillValue getFocusedValue();
+ method @Nullable public android.service.autofill.augmented.PresentationParams getPresentationParams();
method public int getTaskId();
}
@@ -1287,21 +1481,21 @@
public static final class FillResponse.Builder {
ctor public FillResponse.Builder();
method public android.service.autofill.augmented.FillResponse build();
- method public android.service.autofill.augmented.FillResponse.Builder setFillWindow(android.service.autofill.augmented.FillWindow);
- method public android.service.autofill.augmented.FillResponse.Builder setIgnoredIds(java.util.List<android.view.autofill.AutofillId>);
+ method public android.service.autofill.augmented.FillResponse.Builder setFillWindow(@NonNull android.service.autofill.augmented.FillWindow);
+ method public android.service.autofill.augmented.FillResponse.Builder setIgnoredIds(@NonNull java.util.List<android.view.autofill.AutofillId>);
}
public final class FillWindow implements java.lang.AutoCloseable {
ctor public FillWindow();
method public void destroy();
- method public boolean update(android.service.autofill.augmented.PresentationParams.Area, android.view.View, long);
+ method public boolean update(@NonNull android.service.autofill.augmented.PresentationParams.Area, @NonNull android.view.View, long);
field public static final long FLAG_METADATA_ADDRESS = 1L; // 0x1L
}
public abstract class PresentationParams {
method public int getFlags();
- method public android.service.autofill.augmented.PresentationParams.Area getFullArea();
- method public android.service.autofill.augmented.PresentationParams.Area getSuggestionArea();
+ method @Nullable public android.service.autofill.augmented.PresentationParams.Area getFullArea();
+ method @Nullable public android.service.autofill.augmented.PresentationParams.Area getSuggestionArea();
field public static final int FLAG_HINT_GRAVITY_BOTTOM = 2; // 0x2
field public static final int FLAG_HINT_GRAVITY_LEFT = 4; // 0x4
field public static final int FLAG_HINT_GRAVITY_RIGHT = 8; // 0x8
@@ -1310,9 +1504,9 @@
field public static final int FLAG_HOST_SYSTEM = 32; // 0x20
}
- public static abstract class PresentationParams.Area {
- method public android.graphics.Rect getBounds();
- method public android.service.autofill.augmented.PresentationParams.Area getSubArea(android.graphics.Rect);
+ public abstract static class PresentationParams.Area {
+ method @NonNull public android.graphics.Rect getBounds();
+ method @Nullable public android.service.autofill.augmented.PresentationParams.Area getSubArea(@NonNull android.graphics.Rect);
}
}
@@ -1320,43 +1514,43 @@
package android.service.notification {
public final class Adjustment implements android.os.Parcelable {
- ctor public Adjustment(java.lang.String, java.lang.String, android.os.Bundle, java.lang.CharSequence, int);
+ ctor public Adjustment(String, String, android.os.Bundle, CharSequence, int);
ctor protected Adjustment(android.os.Parcel);
method public int describeContents();
- method public java.lang.CharSequence getExplanation();
- method public java.lang.String getKey();
- method public java.lang.String getPackage();
+ method public CharSequence getExplanation();
+ method public String getKey();
+ method public String getPackage();
method public android.os.Bundle getSignals();
method public int getUser();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.notification.Adjustment> CREATOR;
- field public static final java.lang.String KEY_IMPORTANCE = "key_importance";
- field public static final java.lang.String KEY_PEOPLE = "key_people";
- field public static final java.lang.String KEY_SMART_ACTIONS = "key_smart_actions";
- field public static final java.lang.String KEY_SMART_REPLIES = "key_smart_replies";
- field public static final java.lang.String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
- field public static final java.lang.String KEY_USER_SENTIMENT = "key_user_sentiment";
+ field public static final String KEY_IMPORTANCE = "key_importance";
+ field public static final String KEY_PEOPLE = "key_people";
+ field public static final String KEY_SMART_ACTIONS = "key_smart_actions";
+ field public static final String KEY_SMART_REPLIES = "key_smart_replies";
+ field public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
+ field public static final String KEY_USER_SENTIMENT = "key_user_sentiment";
}
- public abstract deprecated class ConditionProviderService extends android.app.Service {
- method public boolean isBound();
+ @Deprecated public abstract class ConditionProviderService extends android.app.Service {
+ method @Deprecated public boolean isBound();
}
public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService {
ctor public NotificationAssistantService();
method public final void adjustNotification(android.service.notification.Adjustment);
method public final void adjustNotifications(java.util.List<android.service.notification.Adjustment>);
- method public void onActionInvoked(java.lang.String, android.app.Notification.Action, int);
+ method public void onActionInvoked(@NonNull String, @NonNull android.app.Notification.Action, int);
method public final android.os.IBinder onBind(android.content.Intent);
- method public void onNotificationDirectReplied(java.lang.String);
+ method public void onNotificationDirectReplied(@NonNull String);
method public android.service.notification.Adjustment onNotificationEnqueued(android.service.notification.StatusBarNotification);
method public android.service.notification.Adjustment onNotificationEnqueued(android.service.notification.StatusBarNotification, android.app.NotificationChannel);
- method public void onNotificationExpansionChanged(java.lang.String, boolean, boolean);
- method public abstract void onNotificationSnoozedUntilContext(android.service.notification.StatusBarNotification, java.lang.String);
+ method public void onNotificationExpansionChanged(@NonNull String, boolean, boolean);
+ method public abstract void onNotificationSnoozedUntilContext(android.service.notification.StatusBarNotification, String);
method public void onNotificationsSeen(java.util.List<java.lang.String>);
- method public void onSuggestedReplySent(java.lang.String, java.lang.CharSequence, int);
- method public final void unsnoozeNotification(java.lang.String);
- field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService";
+ method public void onSuggestedReplySent(@NonNull String, @NonNull CharSequence, int);
+ method public final void unsnoozeNotification(String);
+ field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService";
field public static final int SOURCE_FROM_APP = 0; // 0x0
field public static final int SOURCE_FROM_ASSISTANT = 1; // 0x1
}
@@ -1398,12 +1592,12 @@
}
public final class SnoozeCriterion implements android.os.Parcelable {
- ctor public SnoozeCriterion(java.lang.String, java.lang.CharSequence, java.lang.CharSequence);
+ ctor public SnoozeCriterion(String, CharSequence, CharSequence);
ctor protected SnoozeCriterion(android.os.Parcel);
method public int describeContents();
- method public java.lang.CharSequence getConfirmation();
- method public java.lang.CharSequence getExplanation();
- method public java.lang.String getId();
+ method public CharSequence getConfirmation();
+ method public CharSequence getExplanation();
+ method public String getId();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.notification.SnoozeCriterion> CREATOR;
}
@@ -1421,7 +1615,7 @@
package android.telecom {
public final class CallAudioState implements android.os.Parcelable {
- ctor public CallAudioState(boolean, int, int, android.bluetooth.BluetoothDevice, java.util.Collection<android.bluetooth.BluetoothDevice>);
+ ctor public CallAudioState(boolean, int, int, @Nullable android.bluetooth.BluetoothDevice, @NonNull java.util.Collection<android.bluetooth.BluetoothDevice>);
}
public final class PhoneAccountSuggestion implements android.os.Parcelable {
@@ -1430,10 +1624,10 @@
public class PhoneAccountSuggestionService extends android.app.Service {
ctor public PhoneAccountSuggestionService();
- method public void onAccountSuggestionRequest(java.lang.String);
+ method public void onAccountSuggestionRequest(@NonNull String);
method public android.os.IBinder onBind(android.content.Intent);
- method public final void suggestPhoneAccounts(java.lang.String, java.util.List<android.telecom.PhoneAccountSuggestion>);
- field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.PhoneAccountSuggestionService";
+ method public final void suggestPhoneAccounts(@NonNull String, @NonNull java.util.List<android.telecom.PhoneAccountSuggestion>);
+ field public static final String SERVICE_INTERFACE = "android.telecom.PhoneAccountSuggestionService";
}
}
@@ -1441,19 +1635,19 @@
package android.telephony {
public class CarrierConfigManager {
- method public void overrideConfig(int, android.os.PersistableBundle);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void overrideConfig(int, @Nullable android.os.PersistableBundle);
}
public class MbmsDownloadSession implements java.lang.AutoCloseable {
- field public static final java.lang.String MBMS_DOWNLOAD_SERVICE_OVERRIDE_METADATA = "mbms-download-service-override";
+ field public static final String MBMS_DOWNLOAD_SERVICE_OVERRIDE_METADATA = "mbms-download-service-override";
}
public class MbmsGroupCallSession implements java.lang.AutoCloseable {
- field public static final java.lang.String MBMS_GROUP_CALL_SERVICE_OVERRIDE_METADATA = "mbms-group-call-service-override";
+ field public static final String MBMS_GROUP_CALL_SERVICE_OVERRIDE_METADATA = "mbms-group-call-service-override";
}
public class MbmsStreamingSession implements java.lang.AutoCloseable {
- field public static final java.lang.String MBMS_STREAMING_SERVICE_OVERRIDE_METADATA = "mbms-streaming-service-override";
+ field public static final String MBMS_STREAMING_SERVICE_OVERRIDE_METADATA = "mbms-streaming-service-override";
}
public class ServiceState implements android.os.Parcelable {
@@ -1467,8 +1661,8 @@
public class TelephonyManager {
method public int getCarrierIdListVersion();
method public boolean isRttSupported();
- method public void refreshUiccProfile();
- method public void setCarrierTestOverride(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile();
+ method public void setCarrierTestOverride(String, String, String, String, String, String, String);
field public static final int UNKNOWN_CARRIER_ID_LIST_VERSION = -1; // 0xffffffff
}
@@ -1477,19 +1671,19 @@
package android.telephony.mbms {
public static class DownloadRequest.Builder {
- method public android.telephony.mbms.DownloadRequest.Builder setServiceId(java.lang.String);
+ method public android.telephony.mbms.DownloadRequest.Builder setServiceId(String);
}
public final class FileInfo implements android.os.Parcelable {
- ctor public FileInfo(android.net.Uri, java.lang.String);
+ ctor public FileInfo(android.net.Uri, String);
}
public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
- ctor public FileServiceInfo(java.util.Map<java.util.Locale, java.lang.String>, java.lang.String, java.util.List<java.util.Locale>, java.lang.String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>);
+ ctor public FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>);
}
public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
- ctor public StreamingServiceInfo(java.util.Map<java.util.Locale, java.lang.String>, java.lang.String, java.util.List<java.util.Locale>, java.lang.String, java.util.Date, java.util.Date);
+ ctor public StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date);
}
public final class UriPathPair implements android.os.Parcelable {
@@ -1508,18 +1702,22 @@
ctor public MbmsDownloadServiceBase();
method public int addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
method public int addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
+ method public android.os.IBinder asBinder();
method public int cancelDownload(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
method public void dispose(int) throws android.os.RemoteException;
method public int download(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
+ method public static String getDefaultTransactionName(int);
+ method public String getTransactionName(int);
method public int initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback) throws android.os.RemoteException;
- method public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(int) throws android.os.RemoteException;
+ method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(int) throws android.os.RemoteException;
method public void onAppCallbackDied(int, int);
+ method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
method public int removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
method public int removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
method public int requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) throws android.os.RemoteException;
method public int requestUpdateFileServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
method public int resetDownloadKnowledge(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
- method public int setTempFileRootDirectory(int, java.lang.String) throws android.os.RemoteException;
+ method public int setTempFileRootDirectory(int, String) throws android.os.RemoteException;
}
public class MbmsGroupCallServiceBase extends android.app.Service {
@@ -1535,30 +1733,34 @@
public class MbmsStreamingServiceBase extends android.os.Binder {
ctor public MbmsStreamingServiceBase();
+ method public android.os.IBinder asBinder();
method public void dispose(int) throws android.os.RemoteException;
- method public android.net.Uri getPlaybackUri(int, java.lang.String) throws android.os.RemoteException;
+ method public static String getDefaultTransactionName(int);
+ method @Nullable public android.net.Uri getPlaybackUri(int, String) throws android.os.RemoteException;
+ method public String getTransactionName(int);
method public int initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) throws android.os.RemoteException;
method public void onAppCallbackDied(int, int);
+ method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
method public int requestUpdateStreamingServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
- method public int startStreaming(int, java.lang.String, android.telephony.mbms.StreamingServiceCallback) throws android.os.RemoteException;
- method public void stopStreaming(int, java.lang.String) throws android.os.RemoteException;
+ method public int startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) throws android.os.RemoteException;
+ method public void stopStreaming(int, String) throws android.os.RemoteException;
}
public class VendorUtils {
ctor public VendorUtils();
- method public static android.content.ComponentName getAppReceiverFromPackageName(android.content.Context, java.lang.String);
- field public static final java.lang.String ACTION_CLEANUP = "android.telephony.mbms.action.CLEANUP";
- field public static final java.lang.String ACTION_DOWNLOAD_RESULT_INTERNAL = "android.telephony.mbms.action.DOWNLOAD_RESULT_INTERNAL";
- field public static final java.lang.String ACTION_FILE_DESCRIPTOR_REQUEST = "android.telephony.mbms.action.FILE_DESCRIPTOR_REQUEST";
- field public static final java.lang.String EXTRA_FD_COUNT = "android.telephony.mbms.extra.FD_COUNT";
- field public static final java.lang.String EXTRA_FINAL_URI = "android.telephony.mbms.extra.FINAL_URI";
- field public static final java.lang.String EXTRA_FREE_URI_LIST = "android.telephony.mbms.extra.FREE_URI_LIST";
- field public static final java.lang.String EXTRA_PAUSED_LIST = "android.telephony.mbms.extra.PAUSED_LIST";
- field public static final java.lang.String EXTRA_PAUSED_URI_LIST = "android.telephony.mbms.extra.PAUSED_URI_LIST";
- field public static final java.lang.String EXTRA_SERVICE_ID = "android.telephony.mbms.extra.SERVICE_ID";
- field public static final java.lang.String EXTRA_TEMP_FILES_IN_USE = "android.telephony.mbms.extra.TEMP_FILES_IN_USE";
- field public static final java.lang.String EXTRA_TEMP_FILE_ROOT = "android.telephony.mbms.extra.TEMP_FILE_ROOT";
- field public static final java.lang.String EXTRA_TEMP_LIST = "android.telephony.mbms.extra.TEMP_LIST";
+ method public static android.content.ComponentName getAppReceiverFromPackageName(android.content.Context, String);
+ field public static final String ACTION_CLEANUP = "android.telephony.mbms.action.CLEANUP";
+ field public static final String ACTION_DOWNLOAD_RESULT_INTERNAL = "android.telephony.mbms.action.DOWNLOAD_RESULT_INTERNAL";
+ field public static final String ACTION_FILE_DESCRIPTOR_REQUEST = "android.telephony.mbms.action.FILE_DESCRIPTOR_REQUEST";
+ field public static final String EXTRA_FD_COUNT = "android.telephony.mbms.extra.FD_COUNT";
+ field public static final String EXTRA_FINAL_URI = "android.telephony.mbms.extra.FINAL_URI";
+ field public static final String EXTRA_FREE_URI_LIST = "android.telephony.mbms.extra.FREE_URI_LIST";
+ field public static final String EXTRA_PAUSED_LIST = "android.telephony.mbms.extra.PAUSED_LIST";
+ field public static final String EXTRA_PAUSED_URI_LIST = "android.telephony.mbms.extra.PAUSED_URI_LIST";
+ field public static final String EXTRA_SERVICE_ID = "android.telephony.mbms.extra.SERVICE_ID";
+ field public static final String EXTRA_TEMP_FILES_IN_USE = "android.telephony.mbms.extra.TEMP_FILES_IN_USE";
+ field public static final String EXTRA_TEMP_FILE_ROOT = "android.telephony.mbms.extra.TEMP_FILE_ROOT";
+ field public static final String EXTRA_TEMP_LIST = "android.telephony.mbms.extra.TEMP_LIST";
}
}
@@ -1568,8 +1770,8 @@
public static final class Selection.MemoryTextWatcher implements android.text.TextWatcher {
ctor public Selection.MemoryTextWatcher();
method public void afterTextChanged(android.text.Editable);
- method public void beforeTextChanged(java.lang.CharSequence, int, int, int);
- method public void onTextChanged(java.lang.CharSequence, int, int, int);
+ method public void beforeTextChanged(CharSequence, int, int, int);
+ method public void onTextChanged(CharSequence, int, int, int);
}
}
@@ -1584,7 +1786,7 @@
package android.util {
- public final class ArraySet<E> implements java.util.Collection java.util.Set {
+ public final class ArraySet<E> implements java.util.Collection<E> java.util.Set<E> {
method public E valueAtUnchecked(int);
}
@@ -1595,12 +1797,12 @@
public final class EncodedBuffer {
ctor public EncodedBuffer();
ctor public EncodedBuffer(int);
- method public void dumpBuffers(java.lang.String);
- method public static void dumpByteString(java.lang.String, java.lang.String, byte[]);
+ method public void dumpBuffers(String);
+ method public static void dumpByteString(String, String, byte[]);
method public void editRawFixed32(int, int);
method public byte[] getBytes(int);
method public int getChunkCount();
- method public java.lang.String getDebugString();
+ method public String getDebugString();
method public int getRawFixed32At(int);
method public static int getRawVarint32Size(int);
method public static int getRawVarint64Size(long);
@@ -1636,7 +1838,7 @@
ctor public ProtoInputStream(byte[]);
method public int decodeZigZag32(int);
method public long decodeZigZag64(long);
- method public java.lang.String dumpDebugData();
+ method public String dumpDebugData();
method public void end(long);
method public int getFieldNumber();
method public int getOffset();
@@ -1649,7 +1851,7 @@
method public float readFloat(long) throws java.io.IOException;
method public int readInt(long) throws java.io.IOException;
method public long readLong(long) throws java.io.IOException;
- method public java.lang.String readString(long) throws java.io.IOException;
+ method public String readString(long) throws java.io.IOException;
method public void skip() throws java.io.IOException;
method public long start(long) throws java.io.IOException;
field public static final int NO_MORE_FIELDS = -1; // 0xffffffff
@@ -1661,93 +1863,93 @@
ctor public ProtoOutputStream(java.io.OutputStream);
ctor public ProtoOutputStream(java.io.FileDescriptor);
method public static int checkFieldId(long, long);
- method public void dump(java.lang.String);
+ method public void dump(String);
method public void end(long);
- method public deprecated void endObject(long);
- method public deprecated void endRepeatedObject(long);
+ method @Deprecated public void endObject(long);
+ method @Deprecated public void endRepeatedObject(long);
method public void flush();
method public byte[] getBytes();
method public static long makeFieldId(int, long);
method public long start(long);
- method public deprecated long startObject(long);
- method public deprecated long startRepeatedObject(long);
+ method @Deprecated public long startObject(long);
+ method @Deprecated public long startRepeatedObject(long);
method public void write(long, double);
method public void write(long, float);
method public void write(long, int);
method public void write(long, long);
method public void write(long, boolean);
- method public void write(long, java.lang.String);
+ method public void write(long, String);
method public void write(long, byte[]);
- method public deprecated void writeBool(long, boolean);
- method public deprecated void writeBytes(long, byte[]);
- method public deprecated void writeDouble(long, double);
- method public deprecated void writeEnum(long, int);
- method public deprecated void writeFixed32(long, int);
- method public deprecated void writeFixed64(long, long);
- method public deprecated void writeFloat(long, float);
- method public deprecated void writeInt32(long, int);
- method public deprecated void writeInt64(long, long);
- method public deprecated void writeObject(long, byte[]);
- method public deprecated void writePackedBool(long, boolean[]);
- method public deprecated void writePackedDouble(long, double[]);
- method public deprecated void writePackedEnum(long, int[]);
- method public deprecated void writePackedFixed32(long, int[]);
- method public deprecated void writePackedFixed64(long, long[]);
- method public deprecated void writePackedFloat(long, float[]);
- method public deprecated void writePackedInt32(long, int[]);
- method public deprecated void writePackedInt64(long, long[]);
- method public deprecated void writePackedSFixed32(long, int[]);
- method public deprecated void writePackedSFixed64(long, long[]);
- method public deprecated void writePackedSInt32(long, int[]);
- method public deprecated void writePackedSInt64(long, long[]);
- method public deprecated void writePackedUInt32(long, int[]);
- method public deprecated void writePackedUInt64(long, long[]);
- method public deprecated void writeRepeatedBool(long, boolean);
- method public deprecated void writeRepeatedBytes(long, byte[]);
- method public deprecated void writeRepeatedDouble(long, double);
- method public deprecated void writeRepeatedEnum(long, int);
- method public deprecated void writeRepeatedFixed32(long, int);
- method public deprecated void writeRepeatedFixed64(long, long);
- method public deprecated void writeRepeatedFloat(long, float);
- method public deprecated void writeRepeatedInt32(long, int);
- method public deprecated void writeRepeatedInt64(long, long);
- method public deprecated void writeRepeatedObject(long, byte[]);
- method public deprecated void writeRepeatedSFixed32(long, int);
- method public deprecated void writeRepeatedSFixed64(long, long);
- method public deprecated void writeRepeatedSInt32(long, int);
- method public deprecated void writeRepeatedSInt64(long, long);
- method public deprecated void writeRepeatedString(long, java.lang.String);
- method public deprecated void writeRepeatedUInt32(long, int);
- method public deprecated void writeRepeatedUInt64(long, long);
- method public deprecated void writeSFixed32(long, int);
- method public deprecated void writeSFixed64(long, long);
- method public deprecated void writeSInt32(long, int);
- method public deprecated void writeSInt64(long, long);
- method public deprecated void writeString(long, java.lang.String);
+ method @Deprecated public void writeBool(long, boolean);
+ method @Deprecated public void writeBytes(long, byte[]);
+ method @Deprecated public void writeDouble(long, double);
+ method @Deprecated public void writeEnum(long, int);
+ method @Deprecated public void writeFixed32(long, int);
+ method @Deprecated public void writeFixed64(long, long);
+ method @Deprecated public void writeFloat(long, float);
+ method @Deprecated public void writeInt32(long, int);
+ method @Deprecated public void writeInt64(long, long);
+ method @Deprecated public void writeObject(long, byte[]);
+ method @Deprecated public void writePackedBool(long, boolean[]);
+ method @Deprecated public void writePackedDouble(long, double[]);
+ method @Deprecated public void writePackedEnum(long, int[]);
+ method @Deprecated public void writePackedFixed32(long, int[]);
+ method @Deprecated public void writePackedFixed64(long, long[]);
+ method @Deprecated public void writePackedFloat(long, float[]);
+ method @Deprecated public void writePackedInt32(long, int[]);
+ method @Deprecated public void writePackedInt64(long, long[]);
+ method @Deprecated public void writePackedSFixed32(long, int[]);
+ method @Deprecated public void writePackedSFixed64(long, long[]);
+ method @Deprecated public void writePackedSInt32(long, int[]);
+ method @Deprecated public void writePackedSInt64(long, long[]);
+ method @Deprecated public void writePackedUInt32(long, int[]);
+ method @Deprecated public void writePackedUInt64(long, long[]);
+ method @Deprecated public void writeRepeatedBool(long, boolean);
+ method @Deprecated public void writeRepeatedBytes(long, byte[]);
+ method @Deprecated public void writeRepeatedDouble(long, double);
+ method @Deprecated public void writeRepeatedEnum(long, int);
+ method @Deprecated public void writeRepeatedFixed32(long, int);
+ method @Deprecated public void writeRepeatedFixed64(long, long);
+ method @Deprecated public void writeRepeatedFloat(long, float);
+ method @Deprecated public void writeRepeatedInt32(long, int);
+ method @Deprecated public void writeRepeatedInt64(long, long);
+ method @Deprecated public void writeRepeatedObject(long, byte[]);
+ method @Deprecated public void writeRepeatedSFixed32(long, int);
+ method @Deprecated public void writeRepeatedSFixed64(long, long);
+ method @Deprecated public void writeRepeatedSInt32(long, int);
+ method @Deprecated public void writeRepeatedSInt64(long, long);
+ method @Deprecated public void writeRepeatedString(long, String);
+ method @Deprecated public void writeRepeatedUInt32(long, int);
+ method @Deprecated public void writeRepeatedUInt64(long, long);
+ method @Deprecated public void writeSFixed32(long, int);
+ method @Deprecated public void writeSFixed64(long, long);
+ method @Deprecated public void writeSInt32(long, int);
+ method @Deprecated public void writeSInt64(long, long);
+ method @Deprecated public void writeString(long, String);
method public void writeTag(int, int);
- method public deprecated void writeUInt32(long, int);
- method public deprecated void writeUInt64(long, long);
+ method @Deprecated public void writeUInt32(long, int);
+ method @Deprecated public void writeUInt64(long, long);
}
public class ProtoParseException extends java.lang.RuntimeException {
- ctor public ProtoParseException(java.lang.String);
+ ctor public ProtoParseException(String);
}
public abstract class ProtoStream {
ctor public ProtoStream();
method public static int convertObjectIdToOrdinal(int);
method public static int getDepthFromToken(long);
- method public static java.lang.String getFieldCountString(long);
- method public static java.lang.String getFieldIdString(long);
- method public static java.lang.String getFieldTypeString(long);
+ method public static String getFieldCountString(long);
+ method public static String getFieldIdString(long);
+ method public static String getFieldTypeString(long);
method public static int getObjectIdFromToken(long);
method public static int getOffsetFromToken(long);
method public static boolean getRepeatedFromToken(long);
method public static int getTagSizeFromToken(long);
- method public static java.lang.String getWireTypeString(int);
+ method public static String getWireTypeString(int);
method public static long makeFieldId(int, long);
method public static long makeToken(int, boolean, int, int, int);
- method public static java.lang.String token2String(long);
+ method public static String token2String(long);
field public static final long FIELD_COUNT_MASK = 16492674416640L; // 0xf0000000000L
field public static final long FIELD_COUNT_PACKED = 5497558138880L; // 0x50000000000L
field public static final long FIELD_COUNT_REPEATED = 2199023255552L; // 0x20000000000L
@@ -1767,7 +1969,7 @@
field public static final long FIELD_TYPE_INT64 = 12884901888L; // 0x300000000L
field public static final long FIELD_TYPE_MASK = 1095216660480L; // 0xff00000000L
field public static final long FIELD_TYPE_MESSAGE = 47244640256L; // 0xb00000000L
- field protected static final java.lang.String[] FIELD_TYPE_NAMES;
+ field protected static final String[] FIELD_TYPE_NAMES;
field public static final long FIELD_TYPE_SFIXED32 = 64424509440L; // 0xf00000000L
field public static final long FIELD_TYPE_SFIXED64 = 68719476736L; // 0x1000000000L
field public static final int FIELD_TYPE_SHIFT = 32; // 0x20
@@ -1787,7 +1989,7 @@
}
public class WireTypeMismatchException extends android.util.proto.ProtoParseException {
- ctor public WireTypeMismatchException(java.lang.String);
+ ctor public WireTypeMismatchException(String);
}
}
@@ -1800,9 +2002,9 @@
public final class Choreographer {
method public static long getFrameDelay();
- method public void postCallback(int, java.lang.Runnable, java.lang.Object);
- method public void postCallbackDelayed(int, java.lang.Runnable, java.lang.Object, long);
- method public void removeCallbacks(int, java.lang.Runnable, java.lang.Object);
+ method public void postCallback(int, Runnable, Object);
+ method public void postCallbackDelayed(int, Runnable, Object, long);
+ method public void removeCallbacks(int, Runnable, Object);
method public static void setFrameDelay(long);
field public static final int CALLBACK_ANIMATION = 1; // 0x1
}
@@ -1812,19 +2014,19 @@
}
public final class InputDevice implements android.os.Parcelable {
- method public void disable();
- method public void enable();
+ method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void disable();
+ method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void enable();
}
public class KeyEvent extends android.view.InputEvent implements android.os.Parcelable {
- method public static java.lang.String actionToString(int);
+ method public static String actionToString(int);
method public final void setDisplayId(int);
field public static final int LAST_KEYCODE = 288; // 0x120
}
public final class KeyboardShortcutGroup implements android.os.Parcelable {
- ctor public KeyboardShortcutGroup(java.lang.CharSequence, java.util.List<android.view.KeyboardShortcutInfo>, boolean);
- ctor public KeyboardShortcutGroup(java.lang.CharSequence, boolean);
+ ctor public KeyboardShortcutGroup(@Nullable CharSequence, @NonNull java.util.List<android.view.KeyboardShortcutInfo>, boolean);
+ ctor public KeyboardShortcutGroup(@Nullable CharSequence, boolean);
method public boolean isSystemGroup();
}
@@ -1834,7 +2036,7 @@
method public void setDisplayId(int);
}
- public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
+ @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
method public android.view.View getTooltipView();
method public static boolean isDefaultFocusHighlightEnabled();
method public boolean isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
@@ -1859,7 +2061,7 @@
method public static int getLongPressTooltipHideTimeout();
}
- public abstract interface WindowManager implements android.view.ViewManager {
+ public interface WindowManager extends android.view.ViewManager {
method public default void setShouldShowIme(int, boolean);
method public default void setShouldShowSystemDecors(int, boolean);
method public default void setShouldShowWithInsecureKeyguard(int, boolean);
@@ -1868,8 +2070,8 @@
public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
field public static final int ACCESSIBILITY_TITLE_CHANGED = 33554432; // 0x2000000
field public static final int PRIVATE_FLAG_NO_MOVE_ANIMATION = 64; // 0x40
- field public java.lang.CharSequence accessibilityTitle;
- field public int privateFlags;
+ field public CharSequence accessibilityTitle;
+ field @android.view.ViewDebug.ExportedProperty(flagMapping={@android.view.ViewDebug.FlagToString(mask=0x1, equals=0x1, name="FAKE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x2, equals=0x2, name="FORCE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x4, equals=0x4, name="WANTS_OFFSET_NOTIFICATIONS"), @android.view.ViewDebug.FlagToString(mask=0x10, equals=0x10, name="SHOW_FOR_ALL_USERS"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, equals=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, name="NO_MOVE_ANIMATION"), @android.view.ViewDebug.FlagToString(mask=0x80, equals=0x80, name="COMPATIBLE_WINDOW"), @android.view.ViewDebug.FlagToString(mask=0x100, equals=0x100, name="SYSTEM_ERROR"), @android.view.ViewDebug.FlagToString(mask=0x200, equals=0x200, name="INHERIT_TRANSLUCENT_DECOR"), @android.view.ViewDebug.FlagToString(mask=0x400, equals=0x400, name="KEYGUARD"), @android.view.ViewDebug.FlagToString(mask=0x800, equals=0x800, name="DISABLE_WALLPAPER_TOUCH_EVENTS"), @android.view.ViewDebug.FlagToString(mask=0x1000, equals=0x1000, name="FORCE_STATUS_BAR_VISIBLE_TRANSPARENT"), @android.view.ViewDebug.FlagToString(mask=0x2000, equals=0x2000, name="PRESERVE_GEOMETRY"), @android.view.ViewDebug.FlagToString(mask=0x4000, equals=0x4000, name="FORCE_DECOR_VIEW_VISIBILITY"), @android.view.ViewDebug.FlagToString(mask=0x8000, equals=0x8000, name="WILL_NOT_REPLACE_ON_RELAUNCH"), @android.view.ViewDebug.FlagToString(mask=0x10000, equals=0x10000, name="LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME"), @android.view.ViewDebug.FlagToString(mask=0x20000, equals=0x20000, name="FORCE_DRAW_STATUS_BAR_BACKGROUND"), @android.view.ViewDebug.FlagToString(mask=0x40000, equals=0x40000, name="SUSTAINED_PERFORMANCE_MODE"), @android.view.ViewDebug.FlagToString(mask=0x80000, equals=0x80000, name="HIDE_NON_SYSTEM_OVERLAY_WINDOWS"), @android.view.ViewDebug.FlagToString(mask=0x100000, equals=0x100000, name="IS_ROUNDED_CORNERS_OVERLAY"), @android.view.ViewDebug.FlagToString(mask=0x400000, equals=0x400000, name="IS_SCREEN_DECOR"), @android.view.ViewDebug.FlagToString(mask=0x800000, equals=0x800000, name="STATUS_FORCE_SHOW_NAVIGATION")}) public int privateFlags;
}
}
@@ -1877,14 +2079,14 @@
package android.view.accessibility {
public final class AccessibilityManager {
- method public void addAccessibilityServicesStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener, android.os.Handler);
- method public java.lang.String getAccessibilityShortcutService();
- method public void performAccessibilityShortcut();
- method public void removeAccessibilityServicesStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener);
+ method public void addAccessibilityServicesStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener, @Nullable android.os.Handler);
+ method @Nullable @RequiresPermission("android.permission.MANAGE_ACCESSIBILITY") public String getAccessibilityShortcutService();
+ method @RequiresPermission("android.permission.MANAGE_ACCESSIBILITY") public void performAccessibilityShortcut();
+ method public void removeAccessibilityServicesStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener);
}
- public static abstract interface AccessibilityManager.AccessibilityServicesStateChangeListener {
- method public abstract void onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager);
+ public static interface AccessibilityManager.AccessibilityServicesStateChangeListener {
+ method public void onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager);
}
public class AccessibilityNodeInfo implements android.os.Parcelable {
@@ -1893,7 +2095,7 @@
}
public static final class AccessibilityNodeInfo.TouchDelegateInfo implements android.os.Parcelable {
- method public long getAccessibilityIdForRegion(android.graphics.Region);
+ method public long getAccessibilityIdForRegion(@NonNull android.graphics.Region);
}
public final class AccessibilityWindowInfo implements android.os.Parcelable {
@@ -1915,7 +2117,7 @@
public final class AutofillId implements android.os.Parcelable {
ctor public AutofillId(int);
- ctor public AutofillId(android.view.autofill.AutofillId, int);
+ ctor public AutofillId(@NonNull android.view.autofill.AutofillId, int);
}
public final class AutofillManager {
@@ -1932,9 +2134,46 @@
}
+package android.view.inspector {
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public @interface InspectableNodeName {
+ method public abstract String value();
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public @interface InspectableProperty {
+ method public abstract int attributeId() default android.content.res.Resources.ID_NULL;
+ method public abstract android.view.inspector.InspectableProperty.EnumMap[] enumMapping() default {};
+ method public abstract android.view.inspector.InspectableProperty.FlagMap[] flagMapping() default {};
+ method public abstract boolean hasAttributeId() default true;
+ method public abstract String name() default "";
+ method public abstract android.view.inspector.InspectableProperty.ValueType valueType() default android.view.inspector.InspectableProperty.ValueType.INFERRED;
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface InspectableProperty.EnumMap {
+ method public abstract String name();
+ method public abstract int value();
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface InspectableProperty.FlagMap {
+ method public abstract int mask() default 0;
+ method public abstract String name();
+ method public abstract int target();
+ }
+
+ public enum InspectableProperty.ValueType {
+ enum_constant public static final android.view.inspector.InspectableProperty.ValueType COLOR;
+ enum_constant public static final android.view.inspector.InspectableProperty.ValueType GRAVITY;
+ enum_constant public static final android.view.inspector.InspectableProperty.ValueType INFERRED;
+ enum_constant public static final android.view.inspector.InspectableProperty.ValueType INT_ENUM;
+ enum_constant public static final android.view.inspector.InspectableProperty.ValueType INT_FLAG;
+ enum_constant public static final android.view.inspector.InspectableProperty.ValueType NONE;
+ }
+
+}
+
package android.widget {
- public abstract class AbsListView extends android.widget.AdapterView implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
+ public abstract class AbsListView extends android.widget.AdapterView<android.widget.ListAdapter> implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
method public final boolean shouldDrawSelector();
}
@@ -1948,19 +2187,19 @@
field public static final int MODE_SPINNER = 1; // 0x1
}
- public final class Magnifier {
- method public android.graphics.Bitmap getContent();
+ @UiThread public final class Magnifier {
+ method @Nullable public android.graphics.Bitmap getContent();
method public static android.graphics.PointF getMagnifierDefaultSize();
- method public android.graphics.Bitmap getOriginalContent();
+ method @Nullable public android.graphics.Bitmap getOriginalContent();
method public void setOnOperationCompleteCallback(android.widget.Magnifier.Callback);
}
- public static abstract interface Magnifier.Callback {
- method public abstract void onOperationComplete();
+ public static interface Magnifier.Callback {
+ method public void onOperationComplete();
}
public class NumberPicker extends android.widget.LinearLayout {
- method public java.lang.CharSequence getDisplayedValueForCurrentSelection();
+ method public CharSequence getDisplayedValueForCurrentSelection();
}
public class PopupMenu {
@@ -1971,7 +2210,7 @@
method public boolean isPopupShowing();
}
- public class TextClock extends android.widget.TextView {
+ @android.widget.RemoteViews.RemoteView public class TextClock extends android.widget.TextView {
method public void disableClockTick();
}
@@ -1986,7 +2225,7 @@
}
public class Toolbar extends android.view.ViewGroup {
- method public android.view.View getNavigationView();
+ method @Nullable public android.view.View getNavigationView();
}
}
diff --git a/api/test-removed.txt b/api/test-removed.txt
index e69de29..d802177 100644
--- a/api/test-removed.txt
+++ b/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/cmds/idmap2/Android.bp b/cmds/idmap2/Android.bp
index abe18ba..803f83c 100644
--- a/cmds/idmap2/Android.bp
+++ b/cmds/idmap2/Android.bp
@@ -20,6 +20,7 @@
"misc-*",
"modernize-*",
"readability-*",
+ "-modernize-avoid-c-arrays",
],
tidy_flags: [
"-system-headers",
@@ -38,6 +39,7 @@
"libidmap2/CommandLineOptions.cpp",
"libidmap2/FileUtils.cpp",
"libidmap2/Idmap.cpp",
+ "libidmap2/Policies.cpp",
"libidmap2/PrettyPrintVisitor.cpp",
"libidmap2/RawPrintVisitor.cpp",
"libidmap2/ResourceUtils.cpp",
@@ -87,6 +89,7 @@
"tests/Idmap2BinaryTests.cpp",
"tests/IdmapTests.cpp",
"tests/Main.cpp",
+ "tests/PoliciesTests.cpp",
"tests/PrettyPrintVisitorTests.cpp",
"tests/RawPrintVisitorTests.cpp",
"tests/ResourceUtilsTests.cpp",
diff --git a/cmds/idmap2/idmap2/Create.cpp b/cmds/idmap2/idmap2/Create.cpp
index b075673..c455ac0 100644
--- a/cmds/idmap2/idmap2/Create.cpp
+++ b/cmds/idmap2/idmap2/Create.cpp
@@ -27,17 +27,25 @@
#include "idmap2/CommandLineOptions.h"
#include "idmap2/FileUtils.h"
#include "idmap2/Idmap.h"
+#include "idmap2/Policies.h"
+#include "idmap2/Result.h"
using android::ApkAssets;
using android::idmap2::BinaryStreamVisitor;
using android::idmap2::CommandLineOptions;
using android::idmap2::Idmap;
+using android::idmap2::PoliciesToBitmask;
+using android::idmap2::PolicyBitmask;
+using android::idmap2::PolicyFlags;
+using android::idmap2::Result;
using android::idmap2::utils::kIdmapFilePermissionMask;
bool Create(const std::vector<std::string>& args, std::ostream& out_error) {
std::string target_apk_path;
std::string overlay_apk_path;
std::string idmap_path;
+ std::vector<std::string> policies;
+ bool ignore_overlayable;
const CommandLineOptions opts =
CommandLineOptions("idmap2 create")
@@ -47,12 +55,28 @@
.MandatoryOption("--overlay-apk-path",
"input: path to apk which contains the new resource values",
&overlay_apk_path)
- .MandatoryOption("--idmap-path", "output: path to where to write idmap file",
- &idmap_path);
+ .MandatoryOption("--idmap-path", "output: path to where to write idmap file", &idmap_path)
+ .OptionalOption("--policy",
+ "input: an overlayable policy this overlay fulfills "
+ "(if none or supplied, the overlay policy will default to \"public\")",
+ &policies)
+ .OptionalFlag("--ignore-overlayable", "disables overlayable and policy checks",
+ &ignore_overlayable);
if (!opts.Parse(args, out_error)) {
return false;
}
+ PolicyBitmask fulfilled_policies = 0;
+ if (auto result = PoliciesToBitmask(policies, out_error)) {
+ fulfilled_policies |= *result;
+ } else {
+ return false;
+ }
+
+ if (fulfilled_policies == 0) {
+ fulfilled_policies |= PolicyFlags::POLICY_PUBLIC;
+ }
+
const std::unique_ptr<const ApkAssets> target_apk = ApkAssets::Load(target_apk_path);
if (!target_apk) {
out_error << "error: failed to load apk " << target_apk_path << std::endl;
@@ -66,7 +90,8 @@
}
const std::unique_ptr<const Idmap> idmap =
- Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk, out_error);
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ fulfilled_policies, !ignore_overlayable, out_error);
if (!idmap) {
return false;
}
diff --git a/cmds/idmap2/idmap2/Scan.cpp b/cmds/idmap2/idmap2/Scan.cpp
index 4f88127..b1ed42a 100644
--- a/cmds/idmap2/idmap2/Scan.cpp
+++ b/cmds/idmap2/idmap2/Scan.cpp
@@ -21,11 +21,15 @@
#include <set>
#include <sstream>
#include <string>
+#include <utility>
#include <vector>
+#include "android-base/properties.h"
+
#include "idmap2/CommandLineOptions.h"
#include "idmap2/FileUtils.h"
#include "idmap2/Idmap.h"
+#include "idmap2/ResourceUtils.h"
#include "idmap2/Xml.h"
#include "idmap2/ZipFile.h"
@@ -33,10 +37,13 @@
using android::idmap2::CommandLineOptions;
using android::idmap2::Idmap;
-using android::idmap2::MemoryChunk;
-using android::idmap2::Xml;
-using android::idmap2::ZipFile;
+using android::idmap2::PoliciesToBitmask;
+using android::idmap2::PolicyBitmask;
+using android::idmap2::PolicyFlags;
+using android::idmap2::Result;
+using android::idmap2::utils::ExtractOverlayManifestInfo;
using android::idmap2::utils::FindFiles;
+using android::idmap2::utils::OverlayManifestInfo;
namespace {
@@ -45,11 +52,19 @@
return priority < rhs.priority || (priority == rhs.priority && apk_path < rhs.apk_path);
}
- std::string apk_path; // NOLINT(misc-non-private-member-variables-in-classes)
- std::string idmap_path; // NOLINT(misc-non-private-member-variables-in-classes)
- int priority; // NOLINT(misc-non-private-member-variables-in-classes)
+ std::string apk_path; // NOLINT(misc-non-private-member-variables-in-classes)
+ std::string idmap_path; // NOLINT(misc-non-private-member-variables-in-classes)
+ int priority; // NOLINT(misc-non-private-member-variables-in-classes)
+ std::vector<std::string> policies; // NOLINT(misc-non-private-member-variables-in-classes)
+ bool ignore_overlayable; // NOLINT(misc-non-private-member-variables-in-classes)
};
+bool VendorIsQOrLater() {
+ // STOPSHIP(b/119390857): Check api version once Q sdk version is finalized
+ std::string version = android::base::GetProperty("ro.vndk.version", "Q");
+ return version == "Q" || version == "q";
+}
+
std::unique_ptr<std::vector<std::string>> FindApkFiles(const std::vector<std::string>& dirs,
bool recursive, std::ostream& out_error) {
const auto predicate = [](unsigned char type, const std::string& path) -> bool {
@@ -70,6 +85,22 @@
return std::make_unique<std::vector<std::string>>(paths.cbegin(), paths.cend());
}
+PolicyBitmask PolicyForPath(const std::string& apk_path) {
+ static const std::vector<std::pair<std::string, PolicyBitmask>> values = {
+ {"/product/", PolicyFlags::POLICY_PRODUCT_PARTITION},
+ {"/system/", PolicyFlags::POLICY_SYSTEM_PARTITION},
+ {"/vendor/", PolicyFlags::POLICY_VENDOR_PARTITION},
+ };
+
+ for (auto const& pair : values) {
+ if (apk_path.compare(0, pair.first.size(), pair.first) == 0) {
+ return pair.second | PolicyFlags::POLICY_PUBLIC;
+ }
+ }
+
+ return PolicyFlags::POLICY_PUBLIC;
+}
+
} // namespace
bool Scan(const std::vector<std::string>& args, std::ostream& out_error) {
@@ -77,6 +108,7 @@
std::string target_package_name;
std::string target_apk_path;
std::string output_directory;
+ std::vector<std::string> override_policies;
bool recursive = false;
const CommandLineOptions opts =
@@ -89,7 +121,12 @@
.MandatoryOption("--target-apk-path", "path to target apk", &target_apk_path)
.MandatoryOption("--output-directory",
"directory in which to write artifacts (idmap files and overlays.list)",
- &output_directory);
+ &output_directory)
+ .OptionalOption(
+ "--override-policy",
+ "input: an overlayable policy this overlay fulfills "
+ "(if none or supplied, the overlays will not have their policies overriden",
+ &override_policies);
if (!opts.Parse(args, out_error)) {
return false;
}
@@ -101,72 +138,84 @@
std::vector<InputOverlay> interesting_apks;
for (const std::string& path : *apk_paths) {
- std::unique_ptr<const ZipFile> zip = ZipFile::Open(path);
- if (!zip) {
- out_error << "error: failed to open " << path << " as a zip file" << std::endl;
+ Result<OverlayManifestInfo> overlay_info =
+ ExtractOverlayManifestInfo(path, out_error,
+ /* assert_overlay */ false);
+ if (!overlay_info) {
return false;
}
- std::unique_ptr<const MemoryChunk> entry = zip->Uncompress("AndroidManifest.xml");
- if (!entry) {
- out_error << "error: failed to uncompress AndroidManifest.xml from " << path << std::endl;
- return false;
- }
-
- std::unique_ptr<const Xml> xml = Xml::Create(entry->buf, entry->size);
- if (!xml) {
- out_error << "error: failed to parse AndroidManifest.xml from " << path << std::endl;
+ if (!overlay_info->is_static) {
continue;
}
- const auto tag = xml->FindTag("overlay");
- if (!tag) {
+ if (overlay_info->target_package.empty() ||
+ overlay_info->target_package != target_package_name) {
continue;
}
- auto iter = tag->find("isStatic");
- if (iter == tag->end() || std::stoul(iter->second) == 0U) {
+ if (overlay_info->priority < 0) {
continue;
}
- iter = tag->find("targetPackage");
- if (iter == tag->end() || iter->second != target_package_name) {
- continue;
+ PolicyBitmask fulfilled_policies;
+ if (!override_policies.empty()) {
+ if (Result<PolicyBitmask> result = PoliciesToBitmask(override_policies, out_error)) {
+ fulfilled_policies = *result;
+ } else {
+ return false;
+ }
+ } else {
+ fulfilled_policies = PolicyForPath(path);
}
- iter = tag->find("priority");
- if (iter == tag->end()) {
- continue;
+ bool ignore_overlayable = false;
+ if ((fulfilled_policies & PolicyFlags::POLICY_VENDOR_PARTITION) != 0 && !VendorIsQOrLater()) {
+ // If the overlay is on a pre-Q vendor partition, do not enforce overlayable
+ // restrictions on this overlay because the pre-Q platform has no understanding of
+ // overlayable.
+ ignore_overlayable = true;
}
- const int priority = std::stoi(iter->second);
- if (priority < 0) {
- continue;
- }
+ std::string idmap_path = Idmap::CanonicalIdmapPathFor(output_directory, path);
// Sort the static overlays in ascending priority order
- std::string idmap_path = Idmap::CanonicalIdmapPathFor(output_directory, path);
- InputOverlay input{path, idmap_path, priority};
+ InputOverlay input{path, idmap_path, overlay_info->priority, override_policies,
+ ignore_overlayable};
interesting_apks.insert(
std::lower_bound(interesting_apks.begin(), interesting_apks.end(), input), input);
}
std::stringstream stream;
for (const auto& overlay : interesting_apks) {
+ // Create the idmap for the overlay if it currently does not exist or if it is not up to date.
std::stringstream dev_null;
- if (!Verify(std::vector<std::string>({"--idmap-path", overlay.idmap_path}), dev_null) &&
- !Create(std::vector<std::string>({
- "--target-apk-path",
- target_apk_path,
- "--overlay-apk-path",
- overlay.apk_path,
- "--idmap-path",
- overlay.idmap_path,
- }),
- out_error)) {
- return false;
+
+ std::vector<std::string> verify_args = {"--idmap-path", overlay.idmap_path};
+ for (const std::string& policy : overlay.policies) {
+ verify_args.emplace_back("--policy");
+ verify_args.emplace_back(policy);
}
- stream << overlay.idmap_path << std::endl;
+
+ if (!Verify(std::vector<std::string>(verify_args), dev_null)) {
+ std::vector<std::string> create_args = {"--target-apk-path", target_apk_path,
+ "--overlay-apk-path", overlay.apk_path,
+ "--idmap-path", overlay.idmap_path};
+ if (overlay.ignore_overlayable) {
+ create_args.emplace_back("--ignore-overlayable");
+ }
+
+ for (const std::string& policy : overlay.policies) {
+ verify_args.emplace_back("--policy");
+ verify_args.emplace_back(policy);
+ }
+
+ if (!Create(create_args, out_error)) {
+ return false;
+ }
+ }
+
+ stream << overlay.idmap_path << std::endl;
}
std::cout << stream.str();
diff --git a/cmds/idmap2/idmap2d/Idmap2Service.cpp b/cmds/idmap2/idmap2d/Idmap2Service.cpp
index d2e46e1..a3c7527 100644
--- a/cmds/idmap2/idmap2d/Idmap2Service.cpp
+++ b/cmds/idmap2/idmap2d/Idmap2Service.cpp
@@ -26,12 +26,15 @@
#include <string>
#include "android-base/macros.h"
+#include "android-base/stringprintf.h"
#include "utils/String8.h"
#include "utils/Trace.h"
#include "idmap2/BinaryStreamVisitor.h"
#include "idmap2/FileUtils.h"
#include "idmap2/Idmap.h"
+#include "idmap2/Policies.h"
+#include "idmap2/Result.h"
#include "idmap2d/Idmap2Service.h"
@@ -39,6 +42,8 @@
using android::idmap2::BinaryStreamVisitor;
using android::idmap2::Idmap;
using android::idmap2::IdmapHeader;
+using android::idmap2::PolicyBitmask;
+using android::idmap2::Result;
using android::idmap2::utils::kIdmapFilePermissionMask;
namespace {
@@ -54,6 +59,10 @@
return Status::fromExceptionCode(Status::EX_NONE, msg.c_str());
}
+PolicyBitmask ConvertAidlArgToPolicyBitmask(int32_t arg) {
+ return static_cast<PolicyBitmask>(arg);
+}
+
} // namespace
namespace android::os {
@@ -78,6 +87,8 @@
}
Status Idmap2Service::verifyIdmap(const std::string& overlay_apk_path,
+ int32_t fulfilled_policies ATTRIBUTE_UNUSED,
+ bool enforce_overlayable ATTRIBUTE_UNUSED,
int32_t user_id ATTRIBUTE_UNUSED, bool* _aidl_return) {
assert(_aidl_return);
const std::string idmap_path = Idmap::CanonicalIdmapPathFor(kIdmapCacheDir, overlay_apk_path);
@@ -86,11 +97,15 @@
fin.close();
std::stringstream dev_null;
*_aidl_return = header && header->IsUpToDate(dev_null);
+
+ // TODO(b/119328308): Check that the set of fulfilled policies of the overlay has not changed
+
return ok();
}
Status Idmap2Service::createIdmap(const std::string& target_apk_path,
- const std::string& overlay_apk_path, int32_t user_id,
+ const std::string& overlay_apk_path, int32_t fulfilled_policies,
+ bool enforce_overlayable, int32_t user_id,
std::unique_ptr<std::string>* _aidl_return) {
assert(_aidl_return);
std::stringstream trace;
@@ -101,6 +116,8 @@
_aidl_return->reset(nullptr);
+ const PolicyBitmask policy_bitmask = ConvertAidlArgToPolicyBitmask(fulfilled_policies);
+
const std::unique_ptr<const ApkAssets> target_apk = ApkAssets::Load(target_apk_path);
if (!target_apk) {
return error("failed to load apk " + target_apk_path);
@@ -113,7 +130,8 @@
std::stringstream err;
const std::unique_ptr<const Idmap> idmap =
- Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk, err);
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ policy_bitmask, enforce_overlayable, err);
if (!idmap) {
return error(err.str());
}
diff --git a/cmds/idmap2/idmap2d/Idmap2Service.h b/cmds/idmap2/idmap2d/Idmap2Service.h
index e0bc22e..1aab059 100644
--- a/cmds/idmap2/idmap2d/Idmap2Service.h
+++ b/cmds/idmap2/idmap2d/Idmap2Service.h
@@ -39,11 +39,12 @@
binder::Status removeIdmap(const std::string& overlay_apk_path, int32_t user_id,
bool* _aidl_return);
- binder::Status verifyIdmap(const std::string& overlay_apk_path, int32_t user_id,
- bool* _aidl_return);
+ binder::Status verifyIdmap(const std::string& overlay_apk_path, int32_t fulfilled_policies,
+ bool enforce_overlayable, int32_t user_id, bool* _aidl_return);
binder::Status createIdmap(const std::string& target_apk_path,
- const std::string& overlay_apk_path, int32_t user_id,
+ const std::string& overlay_apk_path, int32_t fulfilled_policies,
+ bool enforce_overlayable, int32_t user_id,
std::unique_ptr<std::string>* _aidl_return);
};
diff --git a/cmds/idmap2/idmap2d/aidl/android/os/IIdmap2.aidl b/cmds/idmap2/idmap2d/aidl/android/os/IIdmap2.aidl
index d475417..ea7274f 100644
--- a/cmds/idmap2/idmap2d/aidl/android/os/IIdmap2.aidl
+++ b/cmds/idmap2/idmap2d/aidl/android/os/IIdmap2.aidl
@@ -20,9 +20,18 @@
* @hide
*/
interface IIdmap2 {
+ const int POLICY_PUBLIC = 0x00000001;
+ const int POLICY_SYSTEM_PARTITION = 0x00000002;
+ const int POLICY_VENDOR_PARTITION = 0x00000004;
+ const int POLICY_PRODUCT_PARTITION = 0x00000008;
+
@utf8InCpp String getIdmapPath(@utf8InCpp String overlayApkPath, int userId);
boolean removeIdmap(@utf8InCpp String overlayApkPath, int userId);
- boolean verifyIdmap(@utf8InCpp String overlayApkPath, int userId);
+ boolean verifyIdmap(@utf8InCpp String overlayApkPath, int fulfilledPolicies,
+ boolean enforceOverlayable, int userId);
@nullable @utf8InCpp String createIdmap(@utf8InCpp String targetApkPath,
- @utf8InCpp String overlayApkPath, int userId);
+ @utf8InCpp String overlayApkPath,
+ int fulfilledPolicies,
+ boolean enforceOverlayable,
+ int userId);
}
diff --git a/cmds/idmap2/include/idmap2/CommandLineOptions.h b/cmds/idmap2/include/idmap2/CommandLineOptions.h
index b93e716..6db6bf9 100644
--- a/cmds/idmap2/include/idmap2/CommandLineOptions.h
+++ b/cmds/idmap2/include/idmap2/CommandLineOptions.h
@@ -44,6 +44,8 @@
std::vector<std::string>* value);
CommandLineOptions& OptionalOption(const std::string& name, const std::string& description,
std::string* value);
+ CommandLineOptions& OptionalOption(const std::string& name, const std::string& description,
+ std::vector<std::string>* value);
bool Parse(const std::vector<std::string>& argv, std::ostream& outError) const;
void Usage(std::ostream& out) const;
@@ -56,6 +58,7 @@
COUNT_OPTIONAL,
COUNT_EXACTLY_ONCE,
COUNT_ONCE_OR_MORE,
+ COUNT_OPTIONAL_ONCE_OR_MORE,
} count;
bool argument;
};
diff --git a/cmds/idmap2/include/idmap2/Idmap.h b/cmds/idmap2/include/idmap2/Idmap.h
index b989e4c..1666dc8 100644
--- a/cmds/idmap2/include/idmap2/Idmap.h
+++ b/cmds/idmap2/include/idmap2/Idmap.h
@@ -57,6 +57,8 @@
#include "androidfw/ResourceTypes.h"
#include "androidfw/StringPiece.h"
+#include "idmap2/Policies.h"
+
namespace android::idmap2 {
class Idmap;
@@ -233,11 +235,10 @@
// file is used; change this in the next version of idmap to use a named
// package instead; also update FromApkAssets to take additional parameters:
// the target and overlay package names
- static std::unique_ptr<const Idmap> FromApkAssets(const std::string& target_apk_path,
- const ApkAssets& target_apk_assets,
- const std::string& overlay_apk_path,
- const ApkAssets& overlay_apk_assets,
- std::ostream& out_error);
+ static std::unique_ptr<const Idmap> FromApkAssets(
+ const std::string& target_apk_path, const ApkAssets& target_apk_assets,
+ const std::string& overlay_apk_path, const ApkAssets& overlay_apk_assets,
+ const PolicyBitmask& fulfilled_policies, bool enforce_overlayable, std::ostream& out_error);
inline const std::unique_ptr<const IdmapHeader>& GetHeader() const {
return header_;
diff --git a/cmds/idmap2/include/idmap2/Policies.h b/cmds/idmap2/include/idmap2/Policies.h
new file mode 100644
index 0000000..eecee25
--- /dev/null
+++ b/cmds/idmap2/include/idmap2/Policies.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+#include <ostream>
+#include <string>
+#include <vector>
+
+#include "androidfw/ResourceTypes.h"
+#include "androidfw/StringPiece.h"
+
+#include "Result.h"
+
+#ifndef IDMAP2_INCLUDE_IDMAP2_POLICIES_H_
+#define IDMAP2_INCLUDE_IDMAP2_POLICIES_H_
+
+namespace android::idmap2 {
+
+using PolicyFlags = ResTable_overlayable_policy_header::PolicyFlags;
+using PolicyBitmask = uint32_t;
+
+// Parses a the string representation of a set of policies into a bitmask. The format of the string
+// is the same as for the <policy> element.
+Result<PolicyBitmask> PoliciesToBitmask(const std::vector<std::string>& policies,
+ std::ostream& err);
+
+} // namespace android::idmap2
+
+#endif // IDMAP2_INCLUDE_IDMAP2_POLICIES_H_
diff --git a/cmds/idmap2/include/idmap2/ResourceUtils.h b/cmds/idmap2/include/idmap2/ResourceUtils.h
index 323796b..22827ac 100644
--- a/cmds/idmap2/include/idmap2/ResourceUtils.h
+++ b/cmds/idmap2/include/idmap2/ResourceUtils.h
@@ -17,6 +17,8 @@
#ifndef IDMAP2_INCLUDE_IDMAP2_RESOURCEUTILS_H_
#define IDMAP2_INCLUDE_IDMAP2_RESOURCEUTILS_H_
+#include <optional>
+#include <ostream>
#include <string>
#include "android-base/macros.h"
@@ -24,9 +26,21 @@
#include "idmap2/Idmap.h"
#include "idmap2/Result.h"
+#include "idmap2/ZipFile.h"
namespace android::idmap2::utils {
+struct OverlayManifestInfo {
+ std::string target_package; // NOLINT(misc-non-private-member-variables-in-classes)
+ std::string target_name; // NOLINT(misc-non-private-member-variables-in-classes)
+ bool is_static; // NOLINT(misc-non-private-member-variables-in-classes)
+ int priority = -1; // NOLINT(misc-non-private-member-variables-in-classes)
+};
+
+Result<OverlayManifestInfo> ExtractOverlayManifestInfo(const std::string& path,
+ std::ostream& out_error,
+ bool assert_overlay = true);
+
Result<std::string> WARN_UNUSED ResToTypeEntryName(const AssetManager2& am, ResourceId resid);
} // namespace android::idmap2::utils
diff --git a/cmds/idmap2/libidmap2/CommandLineOptions.cpp b/cmds/idmap2/libidmap2/CommandLineOptions.cpp
index cabc8f3..a49a607 100644
--- a/cmds/idmap2/libidmap2/CommandLineOptions.cpp
+++ b/cmds/idmap2/libidmap2/CommandLineOptions.cpp
@@ -68,9 +68,18 @@
return *this;
}
+CommandLineOptions& CommandLineOptions::OptionalOption(const std::string& name,
+ const std::string& description,
+ std::vector<std::string>* value) {
+ assert(value != nullptr);
+ auto func = [value](const std::string& arg) -> void { value->push_back(arg); };
+ options_.push_back(Option{name, description, func, Option::COUNT_OPTIONAL_ONCE_OR_MORE, true});
+ return *this;
+}
+
bool CommandLineOptions::Parse(const std::vector<std::string>& argv, std::ostream& outError) const {
const auto pivot = std::partition(options_.begin(), options_.end(), [](const Option& opt) {
- return opt.count != Option::COUNT_OPTIONAL;
+ return opt.count != Option::COUNT_OPTIONAL && opt.count != Option::COUNT_OPTIONAL_ONCE_OR_MORE;
});
std::set<std::string> mandatory_opts;
std::transform(options_.begin(), pivot, std::inserter(mandatory_opts, mandatory_opts.end()),
@@ -122,7 +131,8 @@
size_t maxLength = 0;
out << "usage: " << name_;
for (const Option& opt : options_) {
- const bool mandatory = opt.count != Option::COUNT_OPTIONAL;
+ const bool mandatory =
+ opt.count != Option::COUNT_OPTIONAL && opt.count != Option::COUNT_OPTIONAL_ONCE_OR_MORE;
out << " ";
if (!mandatory) {
out << "[";
@@ -134,9 +144,15 @@
out << opt.name;
maxLength = std::max(maxLength, opt.name.size());
}
+
+ if (opt.count == Option::COUNT_OPTIONAL_ONCE_OR_MORE) {
+ out << " [..]";
+ }
+
if (!mandatory) {
out << "]";
}
+
if (opt.count == Option::COUNT_ONCE_OR_MORE) {
out << " [" << opt.name << " arg [..]]";
}
@@ -150,7 +166,8 @@
out << opt.name;
}
out << " " << opt.description;
- if (opt.count == Option::COUNT_ONCE_OR_MORE) {
+ if (opt.count == Option::COUNT_ONCE_OR_MORE ||
+ opt.count == Option::COUNT_OPTIONAL_ONCE_OR_MORE) {
out << " (can be provided multiple times)";
}
out << std::endl;
diff --git a/cmds/idmap2/libidmap2/Idmap.cpp b/cmds/idmap2/libidmap2/Idmap.cpp
index 37d6af8..5d449e9 100644
--- a/cmds/idmap2/libidmap2/Idmap.cpp
+++ b/cmds/idmap2/libidmap2/Idmap.cpp
@@ -274,11 +274,30 @@
return std::move(idmap);
}
-std::unique_ptr<const Idmap> Idmap::FromApkAssets(const std::string& target_apk_path,
- const ApkAssets& target_apk_assets,
- const std::string& overlay_apk_path,
- const ApkAssets& overlay_apk_assets,
- std::ostream& out_error) {
+bool CheckOverlayable(const LoadedPackage& target_package,
+ const utils::OverlayManifestInfo& overlay_info,
+ const PolicyBitmask& fulfilled_polices, const ResourceId& resid) {
+ const OverlayableInfo* overlayable_info = target_package.GetOverlayableInfo(resid);
+ if (overlayable_info == nullptr) {
+ // If the resource does not have an overlayable definition, allow the resource to be overlaid.
+ // Once overlayable enforcement is turned on, this check will return false.
+ return true;
+ }
+
+ if (!overlay_info.target_name.empty() && overlay_info.target_name != overlayable_info->name) {
+ // If the overlay supplies a target overlayable name, the resource must belong to the
+ // overlayable defined with the specified name to be overlaid.
+ return false;
+ }
+
+ // Enforce policy restrictions if the resource is declared as overlayable.
+ return (overlayable_info->policy_flags & fulfilled_polices) != 0;
+}
+
+std::unique_ptr<const Idmap> Idmap::FromApkAssets(
+ const std::string& target_apk_path, const ApkAssets& target_apk_assets,
+ const std::string& overlay_apk_path, const ApkAssets& overlay_apk_assets,
+ const PolicyBitmask& fulfilled_policies, bool enforce_overlayable, std::ostream& out_error) {
AssetManager2 target_asset_manager;
if (!target_asset_manager.SetApkAssets({&target_apk_assets}, true, false)) {
out_error << "error: failed to create target asset manager" << std::endl;
@@ -327,6 +346,12 @@
return nullptr;
}
+ Result<utils::OverlayManifestInfo> overlay_info =
+ utils::ExtractOverlayManifestInfo(overlay_apk_path, out_error);
+ if (!overlay_info) {
+ return nullptr;
+ }
+
std::unique_ptr<IdmapHeader> header(new IdmapHeader());
header->magic_ = kIdmapMagic;
header->version_ = kIdmapCurrentVersion;
@@ -380,6 +405,14 @@
if (target_resid == 0) {
continue;
}
+
+ if (enforce_overlayable &&
+ !CheckOverlayable(*target_pkg, *overlay_info, fulfilled_policies, target_resid)) {
+ LOG(WARNING) << "overlay \"" << overlay_apk_path << "\" is not allowed to overlay resource \""
+ << full_name << "\"" << std::endl;
+ continue;
+ }
+
matching_resources.Add(target_resid, overlay_resid);
}
diff --git a/cmds/idmap2/libidmap2/Policies.cpp b/cmds/idmap2/libidmap2/Policies.cpp
new file mode 100644
index 0000000..0f87ef0
--- /dev/null
+++ b/cmds/idmap2/libidmap2/Policies.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+#include <iterator>
+#include <map>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include "androidfw/ResourceTypes.h"
+
+#include "idmap2/Idmap.h"
+#include "idmap2/Policies.h"
+#include "idmap2/Result.h"
+
+namespace android::idmap2 {
+
+namespace {
+
+const std::map<android::StringPiece, PolicyFlags> kStringToFlag = {
+ {"public", PolicyFlags::POLICY_PUBLIC},
+ {"product", PolicyFlags::POLICY_PRODUCT_PARTITION},
+ {"system", PolicyFlags::POLICY_SYSTEM_PARTITION},
+ {"vendor", PolicyFlags::POLICY_VENDOR_PARTITION},
+};
+} // namespace
+
+Result<PolicyBitmask> PoliciesToBitmask(const std::vector<std::string>& policies,
+ std::ostream& err) {
+ PolicyBitmask bitmask = 0;
+ for (const std::string& policy : policies) {
+ const auto iter = kStringToFlag.find(policy);
+ if (iter != kStringToFlag.end()) {
+ bitmask |= iter->second;
+ } else {
+ err << "error: unknown policy \"" << policy << "\"";
+ return kResultError;
+ }
+ }
+
+ return Result<PolicyBitmask>(bitmask);
+}
+
+} // namespace android::idmap2
diff --git a/cmds/idmap2/libidmap2/ResourceUtils.cpp b/cmds/idmap2/libidmap2/ResourceUtils.cpp
index 04e0ec7..7a984f3 100644
--- a/cmds/idmap2/libidmap2/ResourceUtils.cpp
+++ b/cmds/idmap2/libidmap2/ResourceUtils.cpp
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+#include <memory>
#include <string>
#include "androidfw/StringPiece.h"
@@ -21,8 +22,13 @@
#include "idmap2/ResourceUtils.h"
#include "idmap2/Result.h"
+#include "idmap2/Xml.h"
+#include "idmap2/ZipFile.h"
using android::StringPiece16;
+using android::idmap2::Result;
+using android::idmap2::Xml;
+using android::idmap2::ZipFile;
using android::util::Utf16ToUtf8;
namespace android::idmap2::utils {
@@ -47,4 +53,63 @@
return {out};
}
+Result<OverlayManifestInfo> ExtractOverlayManifestInfo(const std::string& path,
+ std::ostream& out_error,
+ bool assert_overlay) {
+ std::unique_ptr<const ZipFile> zip = ZipFile::Open(path);
+ if (!zip) {
+ out_error << "error: failed to open " << path << " as a zip file" << std::endl;
+ return kResultError;
+ }
+
+ std::unique_ptr<const MemoryChunk> entry = zip->Uncompress("AndroidManifest.xml");
+ if (!entry) {
+ out_error << "error: failed to uncompress AndroidManifest.xml from " << path << std::endl;
+ return kResultError;
+ }
+
+ std::unique_ptr<const Xml> xml = Xml::Create(entry->buf, entry->size);
+ if (!xml) {
+ out_error << "error: failed to parse AndroidManifest.xml from " << path << std::endl;
+ return kResultError;
+ }
+
+ OverlayManifestInfo info{};
+ const auto tag = xml->FindTag("overlay");
+ if (!tag) {
+ if (assert_overlay) {
+ out_error << "error: <overlay> missing from AndroidManifest.xml of " << path << std::endl;
+ return kResultError;
+ }
+ return info;
+ }
+
+ auto iter = tag->find("targetPackage");
+ if (iter == tag->end()) {
+ if (assert_overlay) {
+ out_error << "error: android:targetPackage missing from <overlay> of " << path << std::endl;
+ return kResultError;
+ }
+ } else {
+ info.target_package = iter->second;
+ }
+
+ iter = tag->find("targetName");
+ if (iter != tag->end()) {
+ info.target_name = iter->second;
+ }
+
+ iter = tag->find("isStatic");
+ if (iter != tag->end()) {
+ info.is_static = std::stoul(iter->second) != 0U;
+ }
+
+ iter = tag->find("priority");
+ if (iter != tag->end()) {
+ info.priority = std::stoi(iter->second);
+ }
+
+ return info;
+}
+
} // namespace android::idmap2::utils
diff --git a/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp b/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp
index 2698ac0..0e0e25f 100644
--- a/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp
+++ b/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp
@@ -78,7 +78,8 @@
std::stringstream error;
std::unique_ptr<const Idmap> idmap =
- Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk, error);
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ PolicyFlags::POLICY_PUBLIC, /* enforce_overlayable */ true, error);
ASSERT_THAT(idmap, NotNull());
std::stringstream stream;
@@ -101,25 +102,55 @@
header = loaded_idmap->GetEntryMapForType(0x02);
ASSERT_THAT(header, NotNull());
- success = LoadedIdmap::Lookup(header, 0x0002, &entry);
+ success = LoadedIdmap::Lookup(header, 0x0000, &entry); // string/a
ASSERT_FALSE(success);
- success = LoadedIdmap::Lookup(header, 0x0003, &entry);
+ success = LoadedIdmap::Lookup(header, 0x0001, &entry); // string/b
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x0002, &entry); // string/c
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x0003, &entry); // string/other
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x0004, &entry); // string/not_overlayable
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x0005, &entry); // string/policy_product
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x0006, &entry); // string/policy_public
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x0007, &entry); // string/policy_system
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x0008, &entry); // string/policy_system_vendor
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x0009, &entry); // string/str1
ASSERT_TRUE(success);
ASSERT_EQ(entry, 0x0000);
- success = LoadedIdmap::Lookup(header, 0x0004, &entry);
+ success = LoadedIdmap::Lookup(header, 0x000a, &entry); // string/str2
ASSERT_FALSE(success);
- success = LoadedIdmap::Lookup(header, 0x0005, &entry);
+ success = LoadedIdmap::Lookup(header, 0x000b, &entry); // string/str3
ASSERT_TRUE(success);
ASSERT_EQ(entry, 0x0001);
- success = LoadedIdmap::Lookup(header, 0x0006, &entry);
+ success = LoadedIdmap::Lookup(header, 0x000c, &entry); // string/str4
ASSERT_TRUE(success);
ASSERT_EQ(entry, 0x0002);
- success = LoadedIdmap::Lookup(header, 0x0007, &entry);
+ success = LoadedIdmap::Lookup(header, 0x000d, &entry); // string/x
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x000e, &entry); // string/y
+ ASSERT_FALSE(success);
+
+ success = LoadedIdmap::Lookup(header, 0x000f, &entry); // string/z
ASSERT_FALSE(success);
}
diff --git a/cmds/idmap2/tests/CommandLineOptionsTests.cpp b/cmds/idmap2/tests/CommandLineOptionsTests.cpp
index c27d27a..39f18d3 100644
--- a/cmds/idmap2/tests/CommandLineOptionsTests.cpp
+++ b/cmds/idmap2/tests/CommandLineOptionsTests.cpp
@@ -121,6 +121,56 @@
ASSERT_FALSE(success);
}
+TEST(CommandLineOptionsTests, OptionalOptionList) {
+ std::vector<std::string> foo;
+ std::vector<std::string> bar;
+ CommandLineOptions opts = CommandLineOptions("test")
+ .OptionalOption("--foo", "", &foo)
+ .OptionalOption("--bar", "", &bar);
+ std::ostream fakeStdErr(nullptr);
+ bool success = opts.Parse({"--foo", "FOO", "--bar", "BAR"}, fakeStdErr);
+ ASSERT_TRUE(success);
+ ASSERT_EQ(foo.size(), 1U);
+ ASSERT_EQ(foo[0], "FOO");
+ ASSERT_EQ(bar.size(), 1U);
+ ASSERT_EQ(bar[0], "BAR");
+
+ foo.clear();
+ bar.clear();
+ success = opts.Parse({"--foo", "BAZ"}, fakeStdErr);
+ ASSERT_TRUE(success);
+ ASSERT_EQ(foo.size(), 1U);
+ ASSERT_EQ(foo[0], "BAZ");
+ ASSERT_EQ(bar.size(), 0U);
+
+ foo.clear();
+ bar.clear();
+ success =
+ opts.Parse({"--foo", "BAZ", "--foo", "BIZ", "--bar", "FIZ", "--bar", "FUZZ"}, fakeStdErr);
+ ASSERT_TRUE(success);
+ ASSERT_EQ(foo.size(), 2U);
+ ASSERT_EQ(foo[0], "BAZ");
+ ASSERT_EQ(foo[1], "BIZ");
+ ASSERT_EQ(bar.size(), 2U);
+ ASSERT_EQ(bar[0], "FIZ");
+ ASSERT_EQ(bar[1], "FUZZ");
+
+ foo.clear();
+ bar.clear();
+ success = opts.Parse({"--foo"}, fakeStdErr);
+ ASSERT_FALSE(success);
+
+ foo.clear();
+ bar.clear();
+ success = opts.Parse({"--foo", "--bar", "BAR"}, fakeStdErr);
+ ASSERT_FALSE(success);
+
+ foo.clear();
+ bar.clear();
+ success = opts.Parse({"--foo", "FOO", "--bar"}, fakeStdErr);
+ ASSERT_FALSE(success);
+}
+
TEST(CommandLineOptionsTests, CornerCases) {
std::string foo;
std::string bar;
@@ -172,6 +222,7 @@
bool arg5 = false;
bool arg6 = false;
std::vector<std::string> arg7;
+ std::vector<std::string> arg8;
CommandLineOptions opts = CommandLineOptions("test")
.MandatoryOption("--aa", "description-aa", &arg1)
.OptionalFlag("--bb", "description-bb", &arg5)
@@ -179,12 +230,13 @@
.OptionalOption("--dd", "description-dd", &arg3)
.MandatoryOption("--ee", "description-ee", &arg4)
.OptionalFlag("--ff", "description-ff", &arg6)
- .MandatoryOption("--gg", "description-gg", &arg7);
+ .MandatoryOption("--gg", "description-gg", &arg7)
+ .OptionalOption("--hh", "description-hh", &arg8);
std::stringstream stream;
opts.Usage(stream);
const std::string s = stream.str();
ASSERT_NE(s.find("usage: test --aa arg [--bb] [--cc arg] [--dd arg] --ee arg [--ff] --gg arg "
- "[--gg arg [..]]"),
+ "[--gg arg [..]] [--hh arg [..]]"),
std::string::npos);
ASSERT_NE(s.find("--aa arg description-aa"), std::string::npos);
ASSERT_NE(s.find("--ff description-ff"), std::string::npos);
diff --git a/cmds/idmap2/tests/FileUtilsTests.cpp b/cmds/idmap2/tests/FileUtilsTests.cpp
index 4bf832a..d9d9a7f 100644
--- a/cmds/idmap2/tests/FileUtilsTests.cpp
+++ b/cmds/idmap2/tests/FileUtilsTests.cpp
@@ -37,10 +37,10 @@
[](unsigned char type ATTRIBUTE_UNUSED,
const std::string& path ATTRIBUTE_UNUSED) -> bool { return true; });
ASSERT_THAT(v, NotNull());
- ASSERT_EQ(v->size(), 4U);
- ASSERT_EQ(
- std::set<std::string>(v->begin(), v->end()),
- std::set<std::string>({root + "/.", root + "/..", root + "/overlay", root + "/target"}));
+ ASSERT_EQ(v->size(), 6U);
+ ASSERT_EQ(std::set<std::string>(v->begin(), v->end()),
+ std::set<std::string>({root + "/.", root + "/..", root + "/overlay", root + "/target",
+ root + "/system-overlay", root + "/system-overlay-invalid"}));
}
TEST(FileUtilsTests, FindFilesFindApkFilesRecursive) {
@@ -49,11 +49,13 @@
return type == DT_REG && path.size() > 4 && path.compare(path.size() - 4, 4, ".apk") == 0;
});
ASSERT_THAT(v, NotNull());
- ASSERT_EQ(v->size(), 4U);
+ ASSERT_EQ(v->size(), 6U);
ASSERT_EQ(std::set<std::string>(v->begin(), v->end()),
std::set<std::string>({root + "/target/target.apk", root + "/overlay/overlay.apk",
root + "/overlay/overlay-static-1.apk",
- root + "/overlay/overlay-static-2.apk"}));
+ root + "/overlay/overlay-static-2.apk",
+ root + "/system-overlay/system-overlay.apk",
+ root + "/system-overlay-invalid/system-overlay-invalid.apk"}));
}
TEST(FileUtilsTests, ReadFile) {
diff --git a/cmds/idmap2/tests/Idmap2BinaryTests.cpp b/cmds/idmap2/tests/Idmap2BinaryTests.cpp
index 22f48e9..4334fa6 100644
--- a/cmds/idmap2/tests/Idmap2BinaryTests.cpp
+++ b/cmds/idmap2/tests/Idmap2BinaryTests.cpp
@@ -38,6 +38,7 @@
#include "gtest/gtest.h"
#include "androidfw/PosixUtils.h"
+
#include "idmap2/FileUtils.h"
#include "idmap2/Idmap.h"
@@ -114,8 +115,9 @@
ASSERT_THAT(result, NotNull());
ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr;
ASSERT_NE(result->stdout.find("0x7f010000 -> 0x7f010000 integer/int1"), std::string::npos);
- ASSERT_NE(result->stdout.find("0x7f020003 -> 0x7f020000 string/str1"), std::string::npos);
- ASSERT_NE(result->stdout.find("0x7f020005 -> 0x7f020001 string/str3"), std::string::npos);
+ ASSERT_NE(result->stdout.find("0x7f020009 -> 0x7f020000 string/str1"), std::string::npos);
+ ASSERT_NE(result->stdout.find("0x7f02000b -> 0x7f020001 string/str3"), std::string::npos);
+ ASSERT_NE(result->stdout.find("0x7f02000c -> 0x7f020002 string/str4"), std::string::npos);
ASSERT_EQ(result->stdout.find("00000210: 007f target package id"), std::string::npos);
// clang-format off
@@ -157,7 +159,8 @@
"--recursive",
"--target-package-name", "test.target",
"--target-apk-path", GetTargetApkPath(),
- "--output-directory", GetTempDirPath()});
+ "--output-directory", GetTempDirPath(),
+ "--override-policy", "public"});
// clang-format on
ASSERT_THAT(result, NotNull());
ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr;
@@ -190,7 +193,8 @@
"--input-directory", GetTestDataPath() + "/overlay",
"--target-package-name", "test.target",
"--target-apk-path", GetTargetApkPath(),
- "--output-directory", GetTempDirPath()});
+ "--output-directory", GetTempDirPath(),
+ "--override-policy", "public"});
// clang-format on
ASSERT_THAT(result, NotNull());
ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr;
@@ -207,7 +211,8 @@
"--recursive",
"--target-package-name", "test.target",
"--target-apk-path", GetTargetApkPath(),
- "--output-directory", GetTempDirPath()});
+ "--output-directory", GetTempDirPath(),
+ "--override-policy", "public"});
// clang-format on
ASSERT_THAT(result, NotNull());
ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr;
@@ -222,7 +227,8 @@
"--input-directory", GetTempDirPath(),
"--target-package-name", "test.target",
"--target-apk-path", GetTargetApkPath(),
- "--output-directory", GetTempDirPath()});
+ "--output-directory", GetTempDirPath(),
+ "--override-policy", "public"});
// clang-format on
ASSERT_THAT(result, NotNull());
ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr;
@@ -245,7 +251,7 @@
"lookup",
"--idmap-path", GetIdmapPath(),
"--config", "",
- "--resid", "0x7f020003"}); // string/str1
+ "--resid", "0x7f020009"}); // string/str1
// clang-format on
ASSERT_THAT(result, NotNull());
ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr;
@@ -310,6 +316,18 @@
// clang-format on
ASSERT_THAT(result, NotNull());
ASSERT_NE(result->status, EXIT_SUCCESS);
+
+ // unknown policy
+ // clang-format off
+ result = ExecuteBinary({"idmap2",
+ "create",
+ "--target-apk-path", GetTargetApkPath(),
+ "--overlay-apk-path", GetOverlayApkPath(),
+ "--idmap-path", GetIdmapPath(),
+ "--policy", "this-does-not-exist"});
+ // clang-format on
+ ASSERT_THAT(result, NotNull());
+ ASSERT_NE(result->status, EXIT_SUCCESS);
}
} // namespace android::idmap2
diff --git a/cmds/idmap2/tests/IdmapTests.cpp b/cmds/idmap2/tests/IdmapTests.cpp
index 963f22e..df28918 100644
--- a/cmds/idmap2/tests/IdmapTests.cpp
+++ b/cmds/idmap2/tests/IdmapTests.cpp
@@ -184,13 +184,14 @@
std::stringstream error;
std::unique_ptr<const Idmap> idmap =
- Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk, error);
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ PolicyFlags::POLICY_PUBLIC, /* enforce_overlayable */ true, error);
ASSERT_THAT(idmap, NotNull());
ASSERT_THAT(idmap->GetHeader(), NotNull());
ASSERT_EQ(idmap->GetHeader()->GetMagic(), 0x504d4449U);
ASSERT_EQ(idmap->GetHeader()->GetVersion(), 0x01U);
- ASSERT_EQ(idmap->GetHeader()->GetTargetCrc(), 0xf5ad1d1d);
+ ASSERT_EQ(idmap->GetHeader()->GetTargetCrc(), 0xab7cf70d);
ASSERT_EQ(idmap->GetHeader()->GetOverlayCrc(), 0xd470336b);
ASSERT_EQ(idmap->GetHeader()->GetTargetPath().to_string(), target_apk_path);
ASSERT_EQ(idmap->GetHeader()->GetOverlayPath(), overlay_apk_path);
@@ -216,13 +217,129 @@
ASSERT_EQ(types[1]->GetTargetTypeId(), 0x02U);
ASSERT_EQ(types[1]->GetOverlayTypeId(), 0x02U);
ASSERT_EQ(types[1]->GetEntryCount(), 4U);
- ASSERT_EQ(types[1]->GetEntryOffset(), 3U);
+ ASSERT_EQ(types[1]->GetEntryOffset(), 9U);
ASSERT_EQ(types[1]->GetEntry(0), 0x0000U);
ASSERT_EQ(types[1]->GetEntry(1), kNoEntry);
ASSERT_EQ(types[1]->GetEntry(2), 0x0001U);
ASSERT_EQ(types[1]->GetEntry(3), 0x0002U);
}
+TEST(IdmapTests, CreateIdmapFromApkAssetsPolicySystemPublic) {
+ const std::string target_apk_path(GetTestDataPath() + "/target/target.apk");
+ std::unique_ptr<const ApkAssets> target_apk = ApkAssets::Load(target_apk_path);
+ ASSERT_THAT(target_apk, NotNull());
+
+ const std::string overlay_apk_path(GetTestDataPath() + "/system-overlay/system-overlay.apk");
+ std::unique_ptr<const ApkAssets> overlay_apk = ApkAssets::Load(overlay_apk_path);
+ ASSERT_THAT(overlay_apk, NotNull());
+
+ std::stringstream error;
+ std::unique_ptr<const Idmap> idmap =
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ PolicyFlags::POLICY_SYSTEM_PARTITION | PolicyFlags::POLICY_PUBLIC,
+ /* enforce_overlayable */ true, error);
+ ASSERT_THAT(idmap, NotNull());
+
+ const std::vector<std::unique_ptr<const IdmapData>>& dataBlocks = idmap->GetData();
+ ASSERT_EQ(dataBlocks.size(), 1U);
+
+ const std::unique_ptr<const IdmapData>& data = dataBlocks[0];
+
+ ASSERT_EQ(data->GetHeader()->GetTargetPackageId(), 0x7fU);
+ ASSERT_EQ(data->GetHeader()->GetTypeCount(), 1U);
+
+ const std::vector<std::unique_ptr<const IdmapData::TypeEntry>>& types = data->GetTypeEntries();
+ ASSERT_EQ(types.size(), 1U);
+
+ ASSERT_EQ(types[0]->GetTargetTypeId(), 0x02U);
+ ASSERT_EQ(types[0]->GetOverlayTypeId(), 0x01U);
+ ASSERT_EQ(types[0]->GetEntryCount(), 3U);
+ ASSERT_EQ(types[0]->GetEntryOffset(), 6U);
+ ASSERT_EQ(types[0]->GetEntry(0), 0x0000U); // string/policy_public
+ ASSERT_EQ(types[0]->GetEntry(1), 0x0001U); // string/policy_system
+ ASSERT_EQ(types[0]->GetEntry(2), 0x0002U); // string/policy_system_vendor
+}
+
+TEST(IdmapTests, CreateIdmapFromApkAssetsPolicySystemPublicInvalid) {
+ const std::string target_apk_path(GetTestDataPath() + "/target/target.apk");
+ std::unique_ptr<const ApkAssets> target_apk = ApkAssets::Load(target_apk_path);
+ ASSERT_THAT(target_apk, NotNull());
+
+ const std::string overlay_apk_path(GetTestDataPath() +
+ "/system-overlay-invalid/system-overlay-invalid.apk");
+ std::unique_ptr<const ApkAssets> overlay_apk = ApkAssets::Load(overlay_apk_path);
+ ASSERT_THAT(overlay_apk, NotNull());
+
+ std::stringstream error;
+ std::unique_ptr<const Idmap> idmap =
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ PolicyFlags::POLICY_SYSTEM_PARTITION | PolicyFlags::POLICY_PUBLIC,
+ /* enforce_overlayable */ true, error);
+ ASSERT_THAT(idmap, NotNull());
+
+ const std::vector<std::unique_ptr<const IdmapData>>& dataBlocks = idmap->GetData();
+ ASSERT_EQ(dataBlocks.size(), 1U);
+
+ const std::unique_ptr<const IdmapData>& data = dataBlocks[0];
+
+ ASSERT_EQ(data->GetHeader()->GetTargetPackageId(), 0x7fU);
+ ASSERT_EQ(data->GetHeader()->GetTypeCount(), 1U);
+
+ const std::vector<std::unique_ptr<const IdmapData::TypeEntry>>& types = data->GetTypeEntries();
+ ASSERT_EQ(types.size(), 1U);
+
+ ASSERT_EQ(types[0]->GetTargetTypeId(), 0x02U);
+ ASSERT_EQ(types[0]->GetOverlayTypeId(), 0x01U);
+ ASSERT_EQ(types[0]->GetEntryCount(), 6U);
+ ASSERT_EQ(types[0]->GetEntryOffset(), 3U);
+ ASSERT_EQ(types[0]->GetEntry(0), 0x0000U); // string/not_overlayable
+ ASSERT_EQ(types[0]->GetEntry(1), kNoEntry); // string/other
+ ASSERT_EQ(types[0]->GetEntry(2), kNoEntry); // string/policy_product
+ ASSERT_EQ(types[0]->GetEntry(3), 0x0003U); // string/policy_public
+ ASSERT_EQ(types[0]->GetEntry(4), 0x0004U); // string/policy_system
+ ASSERT_EQ(types[0]->GetEntry(5), 0x0005U); // string/policy_system_vendor
+}
+
+TEST(IdmapTests, CreateIdmapFromApkAssetsPolicySystemPublicInvalidIgnoreOverlayable) {
+ const std::string target_apk_path(GetTestDataPath() + "/target/target.apk");
+ std::unique_ptr<const ApkAssets> target_apk = ApkAssets::Load(target_apk_path);
+ ASSERT_THAT(target_apk, NotNull());
+
+ const std::string overlay_apk_path(GetTestDataPath() +
+ "/system-overlay-invalid/system-overlay-invalid.apk");
+ std::unique_ptr<const ApkAssets> overlay_apk = ApkAssets::Load(overlay_apk_path);
+ ASSERT_THAT(overlay_apk, NotNull());
+
+ std::stringstream error;
+ std::unique_ptr<const Idmap> idmap =
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ PolicyFlags::POLICY_SYSTEM_PARTITION | PolicyFlags::POLICY_PUBLIC,
+ /* enforce_overlayable */ false, error);
+ ASSERT_THAT(idmap, NotNull());
+
+ const std::vector<std::unique_ptr<const IdmapData>>& dataBlocks = idmap->GetData();
+ ASSERT_EQ(dataBlocks.size(), 1U);
+
+ const std::unique_ptr<const IdmapData>& data = dataBlocks[0];
+
+ ASSERT_EQ(data->GetHeader()->GetTargetPackageId(), 0x7fU);
+ ASSERT_EQ(data->GetHeader()->GetTypeCount(), 1U);
+
+ const std::vector<std::unique_ptr<const IdmapData::TypeEntry>>& types = data->GetTypeEntries();
+ ASSERT_EQ(types.size(), 1U);
+
+ ASSERT_EQ(types[0]->GetTargetTypeId(), 0x02U);
+ ASSERT_EQ(types[0]->GetOverlayTypeId(), 0x01U);
+ ASSERT_EQ(types[0]->GetEntryCount(), 6U);
+ ASSERT_EQ(types[0]->GetEntryOffset(), 3U);
+ ASSERT_EQ(types[0]->GetEntry(0), 0x0000U); // string/not_overlayable
+ ASSERT_EQ(types[0]->GetEntry(1), 0x0001U); // string/other
+ ASSERT_EQ(types[0]->GetEntry(2), 0x0002U); // string/policy_product
+ ASSERT_EQ(types[0]->GetEntry(3), 0x0003U); // string/policy_public
+ ASSERT_EQ(types[0]->GetEntry(4), 0x0004U); // string/policy_system
+ ASSERT_EQ(types[0]->GetEntry(5), 0x0005U); // string/policy_system_vendor
+}
+
TEST(IdmapTests, FailToCreateIdmapFromApkAssetsIfPathTooLong) {
std::string target_apk_path(GetTestDataPath());
for (int i = 0; i < 32; i++) {
@@ -239,7 +356,8 @@
std::stringstream error;
std::unique_ptr<const Idmap> idmap =
- Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk, error);
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ PolicyFlags::POLICY_PUBLIC, /* enforce_overlayable */ true, error);
ASSERT_THAT(idmap, IsNull());
}
@@ -255,8 +373,9 @@
ASSERT_THAT(overlay_apk, NotNull());
std::stringstream error;
- std::unique_ptr<const Idmap> idmap =
- Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk, error);
+ std::unique_ptr<const Idmap> idmap = Idmap::FromApkAssets(
+ target_apk_path, *target_apk, overlay_apk_path, *overlay_apk, PolicyFlags::POLICY_PUBLIC,
+ /* enforce_overlayable */ true, error);
ASSERT_THAT(idmap, NotNull());
std::stringstream stream;
diff --git a/cmds/idmap2/tests/PoliciesTests.cpp b/cmds/idmap2/tests/PoliciesTests.cpp
new file mode 100644
index 0000000..ab567ad
--- /dev/null
+++ b/cmds/idmap2/tests/PoliciesTests.cpp
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+#include <string>
+
+#include "gtest/gtest.h"
+
+#include "TestHelpers.h"
+#include "idmap2/Policies.h"
+
+using android::idmap2::PolicyBitmask;
+using android::idmap2::PolicyFlags;
+
+namespace android::idmap2 {
+
+TEST(PoliciesTests, PoliciesToBitmasks) {
+ const Result<PolicyBitmask> bitmask1 = PoliciesToBitmask({"system"}, std::cerr);
+ ASSERT_NE(bitmask1, kResultError);
+ ASSERT_EQ(bitmask1, PolicyFlags::POLICY_SYSTEM_PARTITION);
+
+ const Result<PolicyBitmask> bitmask2 = PoliciesToBitmask({"system", "vendor"}, std::cerr);
+ ASSERT_NE(bitmask2, kResultError);
+ ASSERT_EQ(bitmask2, PolicyFlags::POLICY_SYSTEM_PARTITION | PolicyFlags::POLICY_VENDOR_PARTITION);
+
+ const Result<PolicyBitmask> bitmask3 = PoliciesToBitmask({"vendor", "system"}, std::cerr);
+ ASSERT_NE(bitmask3, kResultError);
+ ASSERT_EQ(bitmask3, PolicyFlags::POLICY_SYSTEM_PARTITION | PolicyFlags::POLICY_VENDOR_PARTITION);
+
+ const Result<PolicyBitmask> bitmask4 =
+ PoliciesToBitmask({"public", "product", "system", "vendor"}, std::cerr);
+ ASSERT_NE(bitmask4, kResultError);
+ ASSERT_EQ(bitmask4, PolicyFlags::POLICY_PUBLIC | PolicyFlags::POLICY_PRODUCT_PARTITION |
+ PolicyFlags::POLICY_SYSTEM_PARTITION |
+ PolicyFlags::POLICY_VENDOR_PARTITION);
+
+ const Result<PolicyBitmask> bitmask5 =
+ PoliciesToBitmask({"system", "system", "system"}, std::cerr);
+ ASSERT_NE(bitmask5, kResultError);
+ ASSERT_EQ(bitmask5, PolicyFlags::POLICY_SYSTEM_PARTITION);
+
+ const Result<PolicyBitmask> bitmask6 = PoliciesToBitmask({""}, std::cerr);
+ ASSERT_EQ(bitmask6, kResultError);
+
+ const Result<PolicyBitmask> bitmask7 = PoliciesToBitmask({"foo"}, std::cerr);
+ ASSERT_EQ(bitmask7, kResultError);
+
+ const Result<PolicyBitmask> bitmask8 = PoliciesToBitmask({"system", "foo"}, std::cerr);
+ ASSERT_EQ(bitmask8, kResultError);
+
+ const Result<PolicyBitmask> bitmask9 = PoliciesToBitmask({"system", ""}, std::cerr);
+ ASSERT_EQ(bitmask9, kResultError);
+
+ const Result<PolicyBitmask> bitmask10 = PoliciesToBitmask({"system "}, std::cerr);
+ ASSERT_EQ(bitmask10, kResultError);
+}
+
+} // namespace android::idmap2
diff --git a/cmds/idmap2/tests/PrettyPrintVisitorTests.cpp b/cmds/idmap2/tests/PrettyPrintVisitorTests.cpp
index 7736bc0..eaa47cd 100644
--- a/cmds/idmap2/tests/PrettyPrintVisitorTests.cpp
+++ b/cmds/idmap2/tests/PrettyPrintVisitorTests.cpp
@@ -25,6 +25,7 @@
#include "androidfw/Idmap.h"
#include "idmap2/Idmap.h"
+#include "idmap2/Policies.h"
#include "idmap2/PrettyPrintVisitor.h"
#include "TestHelpers.h"
@@ -32,6 +33,7 @@
using ::testing::NotNull;
using android::ApkAssets;
+using android::idmap2::PolicyBitmask;
namespace android::idmap2 {
@@ -46,7 +48,8 @@
std::stringstream error;
std::unique_ptr<const Idmap> idmap =
- Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk, error);
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ PolicyFlags::POLICY_PUBLIC, /* enforce_overlayable */ true, error);
ASSERT_THAT(idmap, NotNull());
std::stringstream stream;
diff --git a/cmds/idmap2/tests/RawPrintVisitorTests.cpp b/cmds/idmap2/tests/RawPrintVisitorTests.cpp
index 0318cd2..b1ca125 100644
--- a/cmds/idmap2/tests/RawPrintVisitorTests.cpp
+++ b/cmds/idmap2/tests/RawPrintVisitorTests.cpp
@@ -42,7 +42,8 @@
std::stringstream error;
std::unique_ptr<const Idmap> idmap =
- Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk, error);
+ Idmap::FromApkAssets(target_apk_path, *target_apk, overlay_apk_path, *overlay_apk,
+ PolicyFlags::POLICY_PUBLIC, /* enforce_overlayable */ true, error);
ASSERT_THAT(idmap, NotNull());
std::stringstream stream;
@@ -51,7 +52,7 @@
ASSERT_NE(stream.str().find("00000000: 504d4449 magic\n"), std::string::npos);
ASSERT_NE(stream.str().find("00000004: 00000001 version\n"), std::string::npos);
- ASSERT_NE(stream.str().find("00000008: f5ad1d1d target crc\n"), std::string::npos);
+ ASSERT_NE(stream.str().find("00000008: ab7cf70d target crc\n"), std::string::npos);
ASSERT_NE(stream.str().find("0000000c: d470336b overlay crc\n"), std::string::npos);
ASSERT_NE(stream.str().find("0000021c: 00000000 0x7f010000 -> 0x7f010000 integer/int1\n"),
std::string::npos);
diff --git a/cmds/idmap2/tests/data/system-overlay-invalid/AndroidManifest.xml b/cmds/idmap2/tests/data/system-overlay-invalid/AndroidManifest.xml
new file mode 100644
index 0000000..ae687d3
--- /dev/null
+++ b/cmds/idmap2/tests/data/system-overlay-invalid/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="test.overlay.system.invalid">
+ <overlay
+ android:targetPackage="test.target"
+ android:targetName="TestResources"/>
+</manifest>
diff --git a/cmds/idmap2/tests/data/system-overlay-invalid/build b/cmds/idmap2/tests/data/system-overlay-invalid/build
new file mode 100644
index 0000000..920e1f8
--- /dev/null
+++ b/cmds/idmap2/tests/data/system-overlay-invalid/build
@@ -0,0 +1,26 @@
+# Copyright (C) 2019 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.
+
+FRAMEWORK_RES_APK=${ANDROID_BUILD_TOP}/prebuilts/sdk/current/public/android.jar
+
+aapt2 compile --dir res -o compiled.flata
+
+aapt2 link \
+ --no-resource-removal \
+ -I "$FRAMEWORK_RES_APK" \
+ --manifest AndroidManifest.xml \
+ -o system-overlay-invalid.apk \
+ compiled.flata
+
+rm compiled.flata
diff --git a/cmds/idmap2/tests/data/system-overlay-invalid/res/values/values.xml b/cmds/idmap2/tests/data/system-overlay-invalid/res/values/values.xml
new file mode 100644
index 0000000..af1bea1
--- /dev/null
+++ b/cmds/idmap2/tests/data/system-overlay-invalid/res/values/values.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+<resources>
+ <!-- This overlay will fulfill the policies "public|system". This allows it overlay the
+ following resources. -->
+ <string name="policy_system">policy_system</string>
+ <string name="policy_system_vendor">policy_system_vendor</string>
+ <string name="policy_public">policy_public</string>
+
+ <!-- Requests to overlay a resource that belongs to a policy the overlay does not fulfill. -->
+ <string name="policy_product">policy_product</string>
+
+ <!-- Requests to overlay a resource that is not declared as overlayable. -->
+ <string name="not_overlayable">not_overlayable</string>
+
+ <!-- Requests to overlay a resource that is defined in an overlayable with a name other than
+ the targetName in the manifest. -->
+ <string name="other">other</string>
+</resources>
diff --git a/cmds/idmap2/tests/data/system-overlay-invalid/system-overlay-invalid.apk b/cmds/idmap2/tests/data/system-overlay-invalid/system-overlay-invalid.apk
new file mode 100644
index 0000000..710ed90
--- /dev/null
+++ b/cmds/idmap2/tests/data/system-overlay-invalid/system-overlay-invalid.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/system-overlay/AndroidManifest.xml b/cmds/idmap2/tests/data/system-overlay/AndroidManifest.xml
new file mode 100644
index 0000000..8af9064
--- /dev/null
+++ b/cmds/idmap2/tests/data/system-overlay/AndroidManifest.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="test.overlay.system">
+ <overlay
+ android:targetPackage="test.target" />
+</manifest>
diff --git a/cmds/idmap2/tests/data/system-overlay/build b/cmds/idmap2/tests/data/system-overlay/build
new file mode 100644
index 0000000..be0d239
--- /dev/null
+++ b/cmds/idmap2/tests/data/system-overlay/build
@@ -0,0 +1,26 @@
+# Copyright (C) 2019 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.
+
+FRAMEWORK_RES_APK=${ANDROID_BUILD_TOP}/prebuilts/sdk/current/public/android.jar
+
+aapt2 compile --dir res -o compiled.flata
+
+aapt2 link \
+ --no-resource-removal \
+ -I "$FRAMEWORK_RES_APK" \
+ --manifest AndroidManifest.xml \
+ -o system-overlay.apk \
+ compiled.flata
+
+rm compiled.flata
diff --git a/cmds/idmap2/tests/data/system-overlay/res/values/values.xml b/cmds/idmap2/tests/data/system-overlay/res/values/values.xml
new file mode 100644
index 0000000..6aaa0b0
--- /dev/null
+++ b/cmds/idmap2/tests/data/system-overlay/res/values/values.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+<resources>
+ <!-- This overlay will fulfill the policies "public|system". This allows it overlay the
+ following resources. -->
+ <string name="policy_system">policy_system</string>
+ <string name="policy_system_vendor">policy_system_vendor</string>
+ <string name="policy_public">policy_public</string>
+</resources>
diff --git a/cmds/idmap2/tests/data/system-overlay/system-overlay.apk b/cmds/idmap2/tests/data/system-overlay/system-overlay.apk
new file mode 100644
index 0000000..90f30eb
--- /dev/null
+++ b/cmds/idmap2/tests/data/system-overlay/system-overlay.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/target/res/values/overlayable.xml b/cmds/idmap2/tests/data/target/res/values/overlayable.xml
new file mode 100644
index 0000000..02d2563
--- /dev/null
+++ b/cmds/idmap2/tests/data/target/res/values/overlayable.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+<resources>
+<overlayable name="TestResources">
+ <!-- Publicly overlayable resources -->
+ <item type="string" name="a" />
+ <item type="string" name="b" />
+ <item type="string" name="c" />
+ <item type="string" name="str1" />
+ <item type="string" name="str2" />
+ <item type="string" name="str3" />
+ <item type="string" name="str4" />
+ <item type="string" name="x" />
+ <item type="string" name="y" />
+ <item type="string" name="z" />
+ <item type="integer" name="int1" />
+
+ <!-- Resources with partition restrictins -->
+ <policy type="system">
+ <item type="string" name="policy_system" />
+ </policy>
+
+ <policy type="system|vendor">
+ <item type="string" name="policy_system_vendor" />
+ </policy>
+
+ <policy type="product">
+ <item type="string" name="policy_product" />
+ </policy>
+
+ <policy type="public">
+ <item type="string" name="policy_public" />
+ </policy>
+</overlayable>
+
+<overlayable name="OtherResources">
+ <item type="string" name="other" />
+</overlayable>
+</resources>
\ No newline at end of file
diff --git a/cmds/idmap2/tests/data/target/res/values/values.xml b/cmds/idmap2/tests/data/target/res/values/values.xml
index 56bf0d6..0d337f3 100644
--- a/cmds/idmap2/tests/data/target/res/values/values.xml
+++ b/cmds/idmap2/tests/data/target/res/values/values.xml
@@ -25,4 +25,14 @@
<string name="y">y</string>
<string name="z">z</string>
<integer name="int1">1</integer>
+
+ <!-- This resources is not marked as overlayable -->
+ <string name="not_overlayable">not_overlayable</string>
+
+ <string name="policy_system">policy_system</string>
+ <string name="policy_system_vendor">policy_system_vendor</string>
+ <string name="policy_product">policy_product</string>
+ <string name="policy_public">policy_public</string>
+
+ <item type="string" name="other" />
</resources>
diff --git a/cmds/idmap2/tests/data/target/target.apk b/cmds/idmap2/tests/data/target/target.apk
index 18ecc27..ecbe875 100644
--- a/cmds/idmap2/tests/data/target/target.apk
+++ b/cmds/idmap2/tests/data/target/target.apk
Binary files differ
diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp
index 8fa2980..3d74f8b 100644
--- a/cmds/screencap/screencap.cpp
+++ b/cmds/screencap/screencap.cpp
@@ -81,8 +81,7 @@
case ui::Dataspace::V0_SRGB:
return SkColorSpace::MakeSRGB();
case ui::Dataspace::DISPLAY_P3:
- return SkColorSpace::MakeRGB(
- SkColorSpace::kSRGB_RenderTargetGamma, SkColorSpace::kDCIP3_D65_Gamut);
+ return SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3);
default:
return nullptr;
}
diff --git a/cmds/statsd/src/anomaly/subscriber_util.cpp b/cmds/statsd/src/anomaly/subscriber_util.cpp
index 9d37cdb..ad5eae3 100644
--- a/cmds/statsd/src/anomaly/subscriber_util.cpp
+++ b/cmds/statsd/src/anomaly/subscriber_util.cpp
@@ -57,7 +57,7 @@
break;
case Subscription::SubscriberInformationCase::kPerfettoDetails:
if (!CollectPerfettoTraceAndUploadToDropbox(subscription.perfetto_details(),
- rule_id, configKey)) {
+ subscription.id(), rule_id, configKey)) {
ALOGW("Failed to generate perfetto traces.");
}
break;
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 6267ac2..ef3eac0 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -25,6 +25,8 @@
import "frameworks/base/core/proto/android/app/settings_enums.proto";
import "frameworks/base/core/proto/android/app/job/enums.proto";
import "frameworks/base/core/proto/android/bluetooth/enums.proto";
+import "frameworks/base/core/proto/android/bluetooth/hci/enums.proto";
+import "frameworks/base/core/proto/android/bluetooth/hfp/enums.proto";
import "frameworks/base/core/proto/android/net/networkcapabilities.proto";
import "frameworks/base/core/proto/android/os/enums.proto";
import "frameworks/base/core/proto/android/server/connectivity/data_stall_event.proto";
@@ -181,6 +183,16 @@
DocsUISearchTypeReported docs_ui_search_type_reported = 120;
DataStallEvent data_stall_event = 121;
RescuePartyResetReported rescue_party_reset_reported = 122;
+ SignedConfigReported signed_config_reported = 123;
+ GnssNiEventReported gnss_ni_event_reported = 124;
+ BluetoothLinkLayerConnectionEvent bluetooth_link_layer_connection_event = 125;
+ BluetoothAclConnectionStateChanged bluetooth_acl_connection_state_changed = 126;
+ BluetoothScoConnectionStateChanged bluetooth_sco_connection_state_changed = 127;
+ AppDowngraded app_downgraded = 128;
+ AppOptimizedAfterDowngraded app_optimized_after_downgraded = 129;
+ LowStorageStateChanged low_storage_state_changed = 130;
+ GnssNfwNotificationReported gnss_nfw_notification_reported = 131;
+ GnssConfigurationReported gnss_configuration_reported = 132;
}
// Pulled events will start at field 10000.
@@ -1296,10 +1308,12 @@
}
/**
- * Logs when a Bluetooth device connects and disconnects.
+ * Logs when profiles on a Bluetooth device connects and disconnects.
*
* Logged from:
- * packages/apps/Bluetooth/src/com/android/bluetooth/btservice/AdapterProperties.java
+ * packages/apps/Bluetooth/src/com/android/bluetooth/btservice/RemoteDevices.java
+ *
+ * Next Tag: 5
*/
message BluetoothConnectionStateChanged {
// The state of the connection.
@@ -1308,13 +1322,152 @@
// An identifier that can be used to match connect and disconnect events.
// Currently is last two bytes of a hash of a device level ID and
// the mac address of the bluetooth device that is connected.
- optional int32 obfuscated_id = 2;
+ // Deprecated: use obfuscated_id instead, this one is always 0 for Q+
+ optional int32 OBSOLETE_obfuscated_id = 2 [deprecated = true];
// The profile that is connected. Eg. GATT, A2DP, HEADSET.
// From android.bluetooth.BluetoothAdapter.java
+ // Default: 0 when not used
optional int32 bt_profile = 3;
+ // An identifier that can be used to match events for this device.
+ // Currently, this is a salted hash of the MAC address of this Bluetooth device.
+ // Salt: Randomly generated 256 bit value
+ // Hash algorithm: HMAC-SHA256
+ // Size: 32 byte
+ // Default: null or empty if the device identifier is not known
+ optional bytes obfuscated_id = 4 [(android.os.statsd.log_mode) = MODE_BYTES];
}
/**
+ * Logs when a Bluetooth device connects and disconnects over ACL
+ *
+ * Logged from:
+ * packages/apps/Bluetooth/src/com/android/bluetooth/btservice/AdapterProperties.java
+ *
+ * Next Tag: 3
+ */
+message BluetoothAclConnectionStateChanged {
+ // An identifier that can be used to match events for this device.
+ // Currently, this is a salted hash of the MAC address of this Bluetooth device.
+ // Salt: Randomly generated 256 bit value
+ // Hash algorithm: HMAC-SHA256
+ // Size: 32 byte
+ // Default: null or empty if the device identifier is not known
+ optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
+ // The state of the connection.
+ // Eg: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED.
+ optional android.bluetooth.ConnectionStateEnum state = 2;
+}
+
+/**
+ * Logs when a Bluetooth device connects and disconnects over SCO
+ *
+ * Logged from:
+ * packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
+ * packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetClientStateMachine.java
+ *
+ * Next Tag: 4
+ */
+message BluetoothScoConnectionStateChanged {
+ // An identifier that can be used to match events for this device.
+ // Currently, this is a salted hash of the MAC address of this Bluetooth device.
+ // Salt: Randomly generated 256 bit value
+ // Hash algorithm: HMAC-SHA256
+ // Size: 32 byte
+ // Default: null or empty if the device identifier is not known
+ optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
+ // The state of the connection.
+ // Eg: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED.
+ optional android.bluetooth.ConnectionStateEnum state = 2;
+ // Codec used for this SCO connection
+ // Default: UNKNOWN
+ optional android.bluetooth.hfp.ScoCodec codec = 3;
+}
+
+// Logs when there is an event affecting Bluetooth device's link layer connection.
+// - This event is triggered when there is a related HCI command or event
+// - Users of this metrics can deduce Bluetooth device's connection state from these events
+// - HCI commands are logged before the command is sent, after receiving command status, and after
+// receiving command complete
+// - HCI events are logged when they arrive
+//
+// Low level log from system/bt
+//
+// Bluetooth classic commands:
+// - CMD_CREATE_CONNECTION
+// - CMD_DISCONNECT
+// - CMD_CREATE_CONNECTION_CANCEL
+// - CMD_ACCEPT_CONNECTION_REQUEST
+// - CMD_REJECT_CONNECTION_REQUEST
+// - CMD_SETUP_ESCO_CONNECTION
+// - CMD_ACCEPT_ESCO_CONNECTION
+// - CMD_REJECT_ESCO_CONNECTION
+// - CMD_ENH_SETUP_ESCO_CONNECTION
+// - CMD_ENH_ACCEPT_ESCO_CONNECTION
+//
+// Bluetooth low energy commands:
+// - CMD_BLE_CREATE_LL_CONN [Only logged on error or when initiator filter policy is 0x00]
+// - CMD_BLE_CREATE_CONN_CANCEL [Only logged when there is an error]
+// - CMD_BLE_EXTENDED_CREATE_CONNECTION [Only logged on error or when initiator filter policy is 0x00]
+// - CMD_BLE_CLEAR_WHITE_LIST
+// - CMD_BLE_ADD_WHITE_LIST
+// - CMD_BLE_REMOVE_WHITE_LIST
+//
+// Bluetooth classic events:
+// - EVT_CONNECTION_COMP
+// - EVT_CONNECTION_REQUEST
+// - EVT_DISCONNECTION_COMP
+// - EVT_ESCO_CONNECTION_COMP
+// - EVT_ESCO_CONNECTION_CHANGED
+//
+// Bluetooth low energy meta events:
+// - BLE_EVT_CONN_COMPLETE_EVT
+// - BLE_EVT_ENHANCED_CONN_COMPLETE_EVT
+//
+// Next tag: 10
+message BluetoothLinkLayerConnectionEvent {
+ // An identifier that can be used to match events for this device.
+ // Currently, this is a salted hash of the MAC address of this Bluetooth device.
+ // Salt: Randomly generated 256 bit value
+ // Hash algorithm: HMAC-SHA256
+ // Size: 32 byte
+ // Default: null or empty if the device identifier is not known
+ optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
+ // Connection handle of this connection if available
+ // Range: 0x0000 - 0x0EFF (12 bits)
+ // Default: 0xFFFF if the handle is unknown
+ optional int32 connection_handle = 2;
+ // Direction of the link
+ // Default: DIRECTION_UNKNOWN
+ optional android.bluetooth.DirectionEnum direction = 3;
+ // Type of this link
+ // Default: LINK_TYPE_UNKNOWN
+ optional android.bluetooth.LinkTypeEnum type = 4;
+
+ // Reason metadata for this link layer connection event, rules for interpretation:
+ // 1. If hci_cmd is set and valid, hci_event can be either EVT_COMMAND_STATUS or
+ // EVT_COMMAND_COMPLETE, ignore hci_ble_event in this case
+ // 2. If hci_event is set to EVT_BLE_META, look at hci_ble_event; otherwise, if hci_event is
+ // set and valid, ignore hci_ble_event
+
+ // HCI command associated with this event
+ // Default: CMD_UNKNOWN
+ optional android.bluetooth.hci.CommandEnum hci_cmd = 5;
+ // HCI event associated with this event
+ // Default: EVT_UNKNOWN
+ optional android.bluetooth.hci.EventEnum hci_event = 6;
+ // HCI BLE meta event associated with this event
+ // Default: BLE_EVT_UNKNOWN
+ optional android.bluetooth.hci.BleMetaEventEnum hci_ble_event = 7;
+ // HCI command status code if this is triggerred by hci_cmd
+ // Default: STATUS_UNKNOWN
+ optional android.bluetooth.hci.StatusEnum cmd_status = 8;
+ // HCI reason code associated with this event
+ // Default: STATUS_UNKNOWN
+ optional android.bluetooth.hci.StatusEnum reason_code = 9;
+}
+
+
+/**
* Logs when something is plugged into or removed from the USB-C connector.
*
* Logged from:
@@ -1639,6 +1792,47 @@
}
/**
+ * Logs when a volume entered low Storage state.
+ * Logged from:
+ * frameworks/base/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
+ */
+message LowStorageStateChanged {
+ // Volume that ran out of storage.
+ optional string volume_description = 1;
+
+ enum State {
+ UNKNOWN = 0;
+ OFF = 1;
+ ON = 2;
+ }
+ optional State state = 2;
+}
+
+/**
+ * Logs when an app is downgraded.
+ * Logged from:
+ * frameworks/base/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+ */
+message AppDowngraded {
+ optional string package_name = 1;
+ // Size of the package (all data) before being downgraded.
+ optional int64 size_in_bytes_before = 2;
+ // Size of the package (all data) after being downgraded.
+ optional int64 size_in_bytes_after = 3;
+
+ optional bool aggressive = 4;
+}
+
+/**
+ * Logs when an app is optimized after being downgraded.
+ * Logged from:
+ * frameworks/base/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+ */
+message AppOptimizedAfterDowngraded {
+ optional string package_name = 1;
+}
+
+/**
* Logs when an app crashes.
* Logged from:
* frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -3183,7 +3377,8 @@
optional int32 process_uid = 1;
// Process name.
optional string process_name = 2;
-
+ // Package name.
+ optional string package_name = 7;
// Total count of the times this association appeared.
optional int32 total_count = 3;
@@ -3262,6 +3457,9 @@
}
repeated Status status = 7;
+ // Number of pages available of various types and sizes, representation fragmentation.
+ repeated ProcessStatsAvailablePagesProto available_pages = 10;
+
// Stats for each process.
repeated ProcessStatsProto process_stats = 8;
@@ -3269,6 +3467,21 @@
repeated ProcessStatsPackageProto package_stats = 9;
}
+message ProcessStatsAvailablePagesProto {
+ // Node these pages are in (as per /proc/pagetypeinfo)
+ optional int32 node = 1;
+
+ // Zone these pages are in (as per /proc/pagetypeinfo)
+ optional string zone = 2;
+
+ // Label for the type of these pages (as per /proc/pagetypeinfo)
+ optional string label = 3;
+
+ // Distribution of number of pages available by order size. First entry in array is
+ // order 0, second is order 1, etc. Each order increase is a doubling of page size.
+ repeated int32 pages_per_order = 4;
+}
+
/**
* Pulled from ProcessStatsService.java
*/
@@ -3859,3 +4072,194 @@
// The rescue level of this reset. A value of 0 indicates missing or unknown level information.
optional int32 rescue_level = 1;
}
+
+/**
+ * Logs when signed config is received from an APK, and if that config was applied successfully.
+ * Logged from:
+ * frameworks/base/services/core/java/com/android/server/signedconfig/SignedConfigService.java
+ */
+message SignedConfigReported {
+ enum Type {
+ UNKNOWN_TYPE = 0;
+ GLOBAL_SETTINGS = 1;
+ }
+ optional Type type = 1;
+
+ // The final status of the signed config received.
+ enum Status {
+ UNKNOWN_STATUS = 0;
+ APPLIED = 1;
+ BASE64_FAILURE_CONFIG = 2;
+ BASE64_FAILURE_SIGNATURE = 3;
+ SECURITY_EXCEPTION = 4;
+ INVALID_CONFIG = 5;
+ OLD_CONFIG = 6;
+ SIGNATURE_CHECK_FAILED = 7;
+ NOT_APPLICABLE = 8;
+ SIGNATURE_CHECK_FAILED_PROD_KEY_ABSENT = 9;
+ }
+ optional Status status = 2;
+
+ // The version of the signed config processed.
+ optional int32 version = 3;
+
+ // The package name that the config was extracted from.
+ optional string from_package = 4;
+
+ enum Key {
+ NO_KEY = 0;
+ DEBUG = 1;
+ PRODUCTION = 2;
+ }
+ // Which key was used to verify the config.
+ optional Key verified_with = 5;
+}
+
+/*
+ * Logs GNSS Network-Initiated (NI) location events.
+ *
+ * Logged from:
+ * frameworks/base/services/core/java/com/android/server/location/GnssLocationProvider.java
+ */
+message GnssNiEventReported {
+ // The type of GnssNiEvent.
+ enum EventType {
+ UNKNOWN = 0;
+ NI_REQUEST = 1;
+ NI_RESPONSE = 2;
+ }
+ optional EventType event_type = 1;
+
+ // An ID generated by HAL to associate NI notifications and UI responses.
+ optional int32 notification_id = 2;
+
+ // A type which distinguishes different categories of NI request, such as VOICE, UMTS_SUPL etc.
+ optional android.server.location.GnssNiType ni_type = 3;
+
+ // NI requires notification.
+ optional bool need_notify = 4;
+
+ // NI requires verification.
+ optional bool need_verify = 5;
+
+ // NI requires privacy override, no notification/minimal trace.
+ optional bool privacy_override = 6;
+
+ // Timeout period to wait for user response. Set to 0 for no timeout limit. Specified in
+ // seconds.
+ optional int32 timeout = 7;
+
+ // Default response when timeout.
+ optional android.server.location.GnssUserResponseType default_response = 8;
+
+ // String representing the requester of the network inititated location request.
+ optional string requestor_id = 9;
+
+ // Notification message text string representing the service(for eg. SUPL-service) who sent the
+ // network initiated location request.
+ optional string text = 10;
+
+ // requestorId decoding scheme.
+ optional android.server.location.GnssNiEncodingType requestor_id_encoding = 11;
+
+ // Notification message text decoding scheme.
+ optional android.server.location.GnssNiEncodingType text_encoding = 12;
+
+ // True if SUPL ES is enabled.
+ optional bool is_supl_es_enabled = 13;
+
+ // True if GNSS location is enabled.
+ optional bool is_location_enabled = 14;
+
+ // GNSS NI responses which define the response in NI structures.
+ optional android.server.location.GnssUserResponseType user_response = 15;
+}
+
+/**
+ * Logs GNSS non-framework (NFW) location notification.
+ *
+ * Logged from:
+ * frameworks/base/services/core/java/com/android/server/location/GnssLocationProvider.java
+ */
+message GnssNfwNotificationReported {
+ // Package name of the Android proxy application representing the non-framework entity that
+ // requested location. Set to empty string if unknown.
+ optional string proxy_app_package_name = 1;
+
+ // Protocol stack that initiated the non-framework location request.
+ optional android.server.location.NfwProtocolStack protocol_stack = 2;
+
+ // Name of the protocol stack if protocol_stack field is set to OTHER_PROTOCOL_STACK. Otherwise,
+ // set to empty string. This field is opaque to the framework and used for logging purposes.
+ optional string other_protocol_stack_name = 3;
+
+ // Source initiating/receiving the location information.
+ optional android.server.location.NfwRequestor requestor = 4;
+
+ // Identity of the endpoint receiving the location information. For example, carrier name, OEM
+ // name, SUPL SLP/E-SLP FQDN, chipset vendor name, etc. This field is opaque to the framework
+ // and used for logging purposes.
+ optional string requestor_id = 5;
+
+ // Indicates whether location information was provided for this request.
+ optional android.server.location.NfwResponseType response_type = 6;
+
+ // True if the device is in user initiated emergency session.
+ optional bool in_emergency_mode = 7;
+
+ // True if cached location is provided.
+ optional bool is_cached_location = 8;
+
+ // True if proxy app permission mismatch between framework and GNSS HAL.
+ optional bool is_permission_mismatched = 9;
+}
+
+/**
+ * Logs GNSS configuration as defined in IGnssConfiguration.hal.
+ *
+ * Logged from:
+ * frameworks/base/services/core/java/com/android/server/location/GnssConfiguration.java
+ */
+message GnssConfigurationReported {
+ // SUPL host name.
+ optional string supl_host = 1;
+
+ // SUPL port number.
+ optional int32 supl_port = 2;
+
+ // C2K host name.
+ optional string c2k_host = 3;
+
+ // C2K port number.
+ optional int32 c2k_port = 4;
+
+ // The SUPL version requested by Carrier.
+ optional int32 supl_ver = 5;
+
+ // The SUPL mode.
+ optional android.server.location.SuplMode supl_mode = 6;
+
+ // True if NI emergency SUPL restrictions is enabled.
+ optional bool supl_es = 7;
+
+ // LTE Positioning Profile settings
+ optional android.server.location.LppProfile lpp_profile = 8;
+
+ // Positioning protocol on A-Glonass system.
+ optional android.server.location.GlonassPosProtocol a_glonass_pos_protocol_select = 9;
+
+ // True if emergency PDN is used. Otherwise, regular PDN is used.
+ optional bool use_emergency_pdn_for_emergency_supl= 10;
+
+ // Configurations of how GPS functionalities should be locked when user turns off GPS On setting.
+ optional android.server.location.GpsLock gps_lock = 11;
+
+ // Number of seconds to extend the emergency session duration post emergency call.
+ optional int32 es_extension_sec = 12;
+
+ // The full list of package names of proxy Android applications representing the non-framework
+ // location access entities (on/off the device) for which the framework user has granted
+ // non-framework location access permission. The package names are concatenated in one string
+ // with spaces as separators.
+ optional string enabled_proxy_app_package_name_list = 13;
+}
diff --git a/cmds/statsd/src/external/Perfetto.cpp b/cmds/statsd/src/external/Perfetto.cpp
index 42cc543..0c4c330 100644
--- a/cmds/statsd/src/external/Perfetto.cpp
+++ b/cmds/statsd/src/external/Perfetto.cpp
@@ -39,6 +39,7 @@
namespace statsd {
bool CollectPerfettoTraceAndUploadToDropbox(const PerfettoDetails& config,
+ int64_t subscription_id,
int64_t alert_id,
const ConfigKey& configKey) {
VLOG("Starting trace collection through perfetto");
@@ -48,9 +49,11 @@
return false;
}
- char alertId[20];
- char configId[20];
- char configUid[20];
+ char subscriptionId[25];
+ char alertId[25];
+ char configId[25];
+ char configUid[25];
+ snprintf(subscriptionId, sizeof(subscriptionId), "%" PRId64, subscription_id);
snprintf(alertId, sizeof(alertId), "%" PRId64, alert_id);
snprintf(configId, sizeof(configId), "%" PRId64, configKey.GetId());
snprintf(configUid, sizeof(configUid), "%d", configKey.GetUid());
@@ -94,7 +97,7 @@
execl("/system/bin/perfetto", "perfetto", "--background", "--config", "-", "--dropbox",
kDropboxTag, "--alert-id", alertId, "--config-id", configId, "--config-uid",
- configUid, nullptr);
+ configUid, "--subscription-id", subscriptionId, nullptr);
// execl() doesn't return in case of success, if we get here something
// failed.
diff --git a/cmds/statsd/src/external/Perfetto.h b/cmds/statsd/src/external/Perfetto.h
index 1e7f728..ab2c195 100644
--- a/cmds/statsd/src/external/Perfetto.h
+++ b/cmds/statsd/src/external/Perfetto.h
@@ -32,6 +32,7 @@
// This method returns immediately after passing the config and does NOT wait
// for the full duration of the trace.
bool CollectPerfettoTraceAndUploadToDropbox(const PerfettoDetails& config,
+ int64_t subscription_id,
int64_t alert_id,
const ConfigKey& configKey);
diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
index 67a1a47..c2878f0 100644
--- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
@@ -93,7 +93,8 @@
StatsdStats::kAtomDimensionKeySizeLimitMap.end()
? StatsdStats::kAtomDimensionKeySizeLimitMap.at(pullTagId).second
: StatsdStats::kDimensionKeySizeHardLimit),
- mGaugeAtomsPerDimensionLimit(metric.max_num_gauge_atoms_per_bucket()) {
+ mGaugeAtomsPerDimensionLimit(metric.max_num_gauge_atoms_per_bucket()),
+ mSplitBucketForAppUpgrade(metric.split_bucket_for_app_upgrade()) {
mCurrentSlicedBucket = std::make_shared<DimToGaugeAtomsMap>();
mCurrentSlicedBucketForAnomaly = std::make_shared<DimToValMap>();
int64_t bucketSizeMills = 0;
diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.h b/cmds/statsd/src/metrics/GaugeMetricProducer.h
index a1a5061..df08779 100644
--- a/cmds/statsd/src/metrics/GaugeMetricProducer.h
+++ b/cmds/statsd/src/metrics/GaugeMetricProducer.h
@@ -74,6 +74,9 @@
const int64_t version) override {
std::lock_guard<std::mutex> lock(mMutex);
+ if (!mSplitBucketForAppUpgrade) {
+ return;
+ }
if (eventTimeNs > getCurrentBucketEndTimeNs()) {
// Flush full buckets on the normal path up to the latest bucket boundary.
flushIfNeededLocked(eventTimeNs);
@@ -176,11 +179,14 @@
const size_t mGaugeAtomsPerDimensionLimit;
+ const bool mSplitBucketForAppUpgrade;
+
FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsWithCondition);
FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsWithSlicedCondition);
FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsNoCondition);
FRIEND_TEST(GaugeMetricProducerTest, TestPushedEventsWithUpgrade);
FRIEND_TEST(GaugeMetricProducerTest, TestPulledWithUpgrade);
+ FRIEND_TEST(GaugeMetricProducerTest, TestPulledWithAppUpgradeDisabled);
FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsAnomalyDetection);
FRIEND_TEST(GaugeMetricProducerTest, TestFirstBucket);
FRIEND_TEST(GaugeMetricProducerTest, TestPullOnTrigger);
diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.cpp b/cmds/statsd/src/metrics/ValueMetricProducer.cpp
index 9a8e3bd..4122d84 100644
--- a/cmds/statsd/src/metrics/ValueMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/ValueMetricProducer.cpp
@@ -105,7 +105,8 @@
mUseZeroDefaultBase(metric.use_zero_default_base()),
mHasGlobalBase(false),
mMaxPullDelayNs(metric.max_pull_delay_sec() > 0 ? metric.max_pull_delay_sec() * NS_PER_SEC
- : StatsdStats::kPullMaxDelayNs) {
+ : StatsdStats::kPullMaxDelayNs),
+ mSplitBucketForAppUpgrade(metric.split_bucket_for_app_upgrade()) {
int64_t bucketSizeMills = 0;
if (metric.has_bucket()) {
bucketSizeMills = TimeUnitToBucketSizeInMillisGuardrailed(key.GetUid(), metric.bucket());
diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.h b/cmds/statsd/src/metrics/ValueMetricProducer.h
index 4865aee..69eb0af 100644
--- a/cmds/statsd/src/metrics/ValueMetricProducer.h
+++ b/cmds/statsd/src/metrics/ValueMetricProducer.h
@@ -57,6 +57,9 @@
void notifyAppUpgrade(const int64_t& eventTimeNs, const string& apk, const int uid,
const int64_t version) override {
std::lock_guard<std::mutex> lock(mMutex);
+ if (!mSplitBucketForAppUpgrade) {
+ return;
+ }
if (mIsPulled && mCondition) {
pullAndMatchEventsLocked(eventTimeNs - 1);
}
@@ -185,6 +188,8 @@
const int64_t mMaxPullDelayNs;
+ const bool mSplitBucketForAppUpgrade;
+
FRIEND_TEST(ValueMetricProducerTest, TestPulledEventsNoCondition);
FRIEND_TEST(ValueMetricProducerTest, TestPulledEventsWithFiltering);
FRIEND_TEST(ValueMetricProducerTest, TestPulledEventsTakeAbsoluteValueOnReset);
@@ -193,6 +198,7 @@
FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithUpgrade);
FRIEND_TEST(ValueMetricProducerTest, TestPulledValueWithUpgrade);
FRIEND_TEST(ValueMetricProducerTest, TestPulledValueWithUpgradeWhileConditionFalse);
+ FRIEND_TEST(ValueMetricProducerTest, TestPulledWithAppUpgradeDisabled);
FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithoutCondition);
FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithCondition);
FRIEND_TEST(ValueMetricProducerTest, TestAnomalyDetection);
diff --git a/cmds/statsd/src/statsd_config.proto b/cmds/statsd/src/statsd_config.proto
index 381ac32..9d3a669 100644
--- a/cmds/statsd/src/statsd_config.proto
+++ b/cmds/statsd/src/statsd_config.proto
@@ -244,6 +244,8 @@
optional int64 max_num_gauge_atoms_per_bucket = 11 [default = 10];
optional int32 max_pull_delay_sec = 13 [default = 10];
+
+ optional bool split_bucket_for_app_upgrade = 14 [default = true];
}
message ValueMetric {
@@ -290,6 +292,8 @@
optional bool skip_zero_diff_output = 14 [default = true];
optional int32 max_pull_delay_sec = 16 [default = 10];
+
+ optional bool split_bucket_for_app_upgrade = 17 [default = true];
}
message Alert {
diff --git a/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp b/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp
index 2799107..0ffbb54 100644
--- a/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp
+++ b/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp
@@ -276,8 +276,9 @@
UidMap uidMap;
SimpleAtomMatcher atomMatcher;
atomMatcher.set_atom_id(tagId);
- sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({
- new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)});
+ sp<EventMatcherWizard> eventMatcherWizard =
+ new EventMatcherWizard({new SimpleLogMatchingTracker(
+ atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)});
sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>();
EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return());
@@ -295,9 +296,8 @@
}));
GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard,
- logEventMatcherIndex, eventMatcherWizard,
- tagId, -1, tagId, bucketStartTimeNs, bucketStartTimeNs,
- pullerManager);
+ logEventMatcherIndex, eventMatcherWizard, tagId, -1, tagId,
+ bucketStartTimeNs, bucketStartTimeNs, pullerManager);
vector<shared_ptr<LogEvent>> allData;
shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 1);
@@ -337,6 +337,58 @@
->mValue.int_value);
}
+TEST(GaugeMetricProducerTest, TestPulledWithAppUpgradeDisabled) {
+ GaugeMetric metric;
+ metric.set_id(metricId);
+ metric.set_bucket(ONE_MINUTE);
+ metric.set_max_pull_delay_sec(INT_MAX);
+ metric.set_split_bucket_for_app_upgrade(false);
+ auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields();
+ gaugeFieldMatcher->set_field(tagId);
+ gaugeFieldMatcher->add_child()->set_field(2);
+
+ sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>();
+
+ UidMap uidMap;
+ SimpleAtomMatcher atomMatcher;
+ atomMatcher.set_atom_id(tagId);
+ sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({
+ new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)});
+
+ sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>();
+ EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return());
+ EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return());
+ EXPECT_CALL(*pullerManager, Pull(tagId, _)).WillOnce(Return(false));
+
+ GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard,
+ logEventMatcherIndex, eventMatcherWizard,
+ tagId, -1, tagId, bucketStartTimeNs, bucketStartTimeNs,
+ pullerManager);
+
+ vector<shared_ptr<LogEvent>> allData;
+ shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 1);
+ event->write("some value");
+ event->write(1);
+ event->init();
+ allData.push_back(event);
+ gaugeProducer.onDataPulled(allData);
+ EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size());
+ EXPECT_EQ(1, gaugeProducer.mCurrentSlicedBucket->begin()
+ ->second.front()
+ .mFields->begin()
+ ->mValue.int_value);
+
+ gaugeProducer.notifyAppUpgrade(eventUpgradeTimeNs, "ANY.APP", 1, 1);
+ EXPECT_EQ(0UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size());
+ EXPECT_EQ(0L, gaugeProducer.mCurrentBucketNum);
+ EXPECT_EQ(bucketStartTimeNs, gaugeProducer.mCurrentBucketStartTimeNs);
+ EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size());
+ EXPECT_EQ(1, gaugeProducer.mCurrentSlicedBucket->begin()
+ ->second.front()
+ .mFields->begin()
+ ->mValue.int_value);
+}
+
TEST(GaugeMetricProducerTest, TestPulledEventsWithCondition) {
GaugeMetric metric;
metric.set_id(metricId);
diff --git a/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp b/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp
index 67570fc..9cfe343 100644
--- a/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp
+++ b/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp
@@ -641,7 +641,8 @@
valueProducer.notifyAppUpgrade(bucket2StartTimeNs + 150, "ANY.APP", 1, 1);
EXPECT_EQ(1UL, valueProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size());
EXPECT_EQ(bucket2StartTimeNs + 150, valueProducer.mCurrentBucketStartTimeNs);
- EXPECT_EQ(20L, valueProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY][0].values[0].long_value);
+ EXPECT_EQ(20L,
+ valueProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY][0].values[0].long_value);
allData.clear();
event = make_shared<LogEvent>(tagId, bucket3StartTimeNs + 1);
@@ -652,7 +653,48 @@
valueProducer.onDataPulled(allData);
EXPECT_EQ(1UL, valueProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size());
EXPECT_EQ(bucket2StartTimeNs + 150, valueProducer.mCurrentBucketStartTimeNs);
- EXPECT_EQ(20L, valueProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY][0].values[0].long_value);
+ EXPECT_EQ(20L,
+ valueProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY][0].values[0].long_value);
+}
+
+TEST(ValueMetricProducerTest, TestPulledWithAppUpgradeDisabled) {
+ ValueMetric metric;
+ metric.set_id(metricId);
+ metric.set_bucket(ONE_MINUTE);
+ metric.mutable_value_field()->set_field(tagId);
+ metric.mutable_value_field()->add_child()->set_field(2);
+ metric.set_max_pull_delay_sec(INT_MAX);
+ metric.set_split_bucket_for_app_upgrade(false);
+
+ UidMap uidMap;
+ SimpleAtomMatcher atomMatcher;
+ atomMatcher.set_atom_id(tagId);
+ sp<EventMatcherWizard> eventMatcherWizard =
+ new EventMatcherWizard({new SimpleLogMatchingTracker(
+ atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)});
+ sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>();
+ sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>();
+ EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return());
+ EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return());
+ EXPECT_CALL(*pullerManager, Pull(tagId, _)).WillOnce(Return(true));
+ ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex,
+ eventMatcherWizard, tagId, bucketStartTimeNs,
+ bucketStartTimeNs, pullerManager);
+
+ vector<shared_ptr<LogEvent>> allData;
+ allData.clear();
+ shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucket2StartTimeNs + 1);
+ event->write(tagId);
+ event->write(100);
+ event->init();
+ allData.push_back(event);
+
+ valueProducer.onDataPulled(allData);
+ EXPECT_EQ(1UL, valueProducer.mCurrentSlicedBucket.size());
+
+ valueProducer.notifyAppUpgrade(bucket2StartTimeNs + 150, "ANY.APP", 1, 1);
+ EXPECT_EQ(0UL, valueProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size());
+ EXPECT_EQ(bucketStartTimeNs, valueProducer.mCurrentBucketStartTimeNs);
}
TEST(ValueMetricProducerTest, TestPulledValueWithUpgradeWhileConditionFalse) {
diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt
index c2e441b..3ec0db4 100644
--- a/config/boot-image-profile.txt
+++ b/config/boot-image-profile.txt
@@ -2768,11 +2768,6 @@
HPLandroid/hardware/location/GeofenceHardwareService$1;->registerForMonitorStateChangeCallback(ILandroid/hardware/location/IGeofenceHardwareMonitorCallback;)Z
HPLandroid/hardware/location/GeofenceHardwareService$1;->removeGeofence(II)Z
HPLandroid/hardware/location/GeofenceHardwareService;->checkPermission(III)V
-HPLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;->onAvailabilityChanged(ZLandroid/hardware/location/IActivityRecognitionHardware;)V
-HPLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub;-><init>()V
-HPLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardwareClient;
-HPLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/hardware/location/IActivityRecognitionHardwareClient;->onAvailabilityChanged(ZLandroid/hardware/location/IActivityRecognitionHardware;)V
HPLandroid/hardware/location/IContextHubCallback$Stub;->asBinder()Landroid/os/IBinder;
HPLandroid/hardware/location/IContextHubCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HPLandroid/hardware/location/IContextHubService$Stub$Proxy;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I
@@ -21782,7 +21777,6 @@
HSPLandroid/hardware/input/TouchCalibration$1;-><init>()V
HSPLandroid/hardware/input/TouchCalibration;-><init>()V
HSPLandroid/hardware/input/TouchCalibration;->getAffineTransform()[F
-HSPLandroid/hardware/location/ActivityRecognitionHardware;->isSupported()Z
HSPLandroid/hardware/location/ContextHubInfo$1;-><init>()V
HSPLandroid/hardware/location/ContextHubInfo;-><init>(Landroid/hardware/contexthub/V1_0/ContextHub;)V
HSPLandroid/hardware/location/ContextHubMessage$1;-><init>()V
@@ -21802,13 +21796,6 @@
HSPLandroid/hardware/location/GeofenceHardwareService;-><init>()V
HSPLandroid/hardware/location/GeofenceHardwareService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
HSPLandroid/hardware/location/GeofenceHardwareService;->onCreate()V
-HSPLandroid/hardware/location/IActivityRecognitionHardware;->disableActivityEvent(Ljava/lang/String;I)Z
-HSPLandroid/hardware/location/IActivityRecognitionHardware;->enableActivityEvent(Ljava/lang/String;IJ)Z
-HSPLandroid/hardware/location/IActivityRecognitionHardware;->flush()Z
-HSPLandroid/hardware/location/IActivityRecognitionHardware;->getSupportedActivities()[Ljava/lang/String;
-HSPLandroid/hardware/location/IActivityRecognitionHardware;->isActivitySupported(Ljava/lang/String;)Z
-HSPLandroid/hardware/location/IActivityRecognitionHardware;->registerSink(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z
-HSPLandroid/hardware/location/IActivityRecognitionHardware;->unregisterSink(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z
HSPLandroid/hardware/location/IContextHubCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
HSPLandroid/hardware/location/IContextHubCallback$Stub$Proxy;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V
HSPLandroid/hardware/location/IContextHubCallback;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V
@@ -55650,7 +55637,6 @@
Landroid/hardware/input/KeyboardLayout$1;
Landroid/hardware/input/TouchCalibration$1;
Landroid/hardware/input/TouchCalibration;
-Landroid/hardware/location/ActivityRecognitionHardware;
Landroid/hardware/location/ContextHubInfo$1;
Landroid/hardware/location/ContextHubInfo;
Landroid/hardware/location/ContextHubManager;
@@ -55666,11 +55652,6 @@
Landroid/hardware/location/GeofenceHardwareRequestParcelable$1;
Landroid/hardware/location/GeofenceHardwareService$1;
Landroid/hardware/location/GeofenceHardwareService;
-Landroid/hardware/location/IActivityRecognitionHardware$Stub;
-Landroid/hardware/location/IActivityRecognitionHardware;
-Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;
-Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;
-Landroid/hardware/location/IActivityRecognitionHardwareClient;
Landroid/hardware/location/IContextHubCallback$Stub$Proxy;
Landroid/hardware/location/IContextHubCallback;
Landroid/hardware/location/IContextHubClient$Stub;
diff --git a/config/hiddenapi-greylist.txt b/config/hiddenapi-greylist.txt
index 4d3c5d1..13f8dd9 100644
--- a/config/hiddenapi-greylist.txt
+++ b/config/hiddenapi-greylist.txt
@@ -462,8 +462,6 @@
Landroid/hardware/input/IInputManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/input/IInputManager;
Landroid/hardware/input/IInputManager$Stub;->TRANSACTION_injectInputEvent:I
Landroid/hardware/input/IInputManager;->injectInputEvent(Landroid/view/InputEvent;I)Z
-Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;-><init>()V
-Landroid/hardware/location/IActivityRecognitionHardwareClient;->onAvailabilityChanged(ZLandroid/hardware/location/IActivityRecognitionHardware;)V
Landroid/hardware/location/IContextHubService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubService;
Landroid/hardware/usb/IUsbManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/usb/IUsbManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/usb/IUsbManager;
@@ -1108,18 +1106,6 @@
Landroid/os/UserManager;->mService:Landroid/os/IUserManager;
Landroid/os/UserManager;->removeUser(I)Z
Landroid/os/Vibrator;-><init>()V
-Landroid/os/VintfObject;->getHalNamesAndVersions()[Ljava/lang/String;
-Landroid/os/VintfObject;->getSepolicyVersion()Ljava/lang/String;
-Landroid/os/VintfObject;->getTargetFrameworkCompatibilityMatrixVersion()Ljava/lang/Long;
-Landroid/os/VintfObject;->getVndkSnapshots()Ljava/util/Map;
-Landroid/os/VintfObject;->report()[Ljava/lang/String;
-Landroid/os/VintfRuntimeInfo;->getCpuInfo()Ljava/lang/String;
-Landroid/os/VintfRuntimeInfo;->getHardwareId()Ljava/lang/String;
-Landroid/os/VintfRuntimeInfo;->getKernelVersion()Ljava/lang/String;
-Landroid/os/VintfRuntimeInfo;->getNodeName()Ljava/lang/String;
-Landroid/os/VintfRuntimeInfo;->getOsName()Ljava/lang/String;
-Landroid/os/VintfRuntimeInfo;->getOsRelease()Ljava/lang/String;
-Landroid/os/VintfRuntimeInfo;->getOsVersion()Ljava/lang/String;
Landroid/os/WorkSource;-><init>(Landroid/os/Parcel;)V
Landroid/os/WorkSource;->mNames:[Ljava/lang/String;
Landroid/os/WorkSource;->mNum:I
@@ -1492,7 +1478,6 @@
Landroid/test/AndroidTestCase;->getTestContext()Landroid/content/Context;
Landroid/test/AndroidTestCase;->setTestContext(Landroid/content/Context;)V
Landroid/test/InstrumentationTestCase;->runMethod(Ljava/lang/reflect/Method;I)V
-Landroid/test/RepetitiveTest;->numIterations()I
Landroid/util/Singleton;-><init>()V
Landroid/util/XmlPullAttributes;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
Landroid/util/XmlPullAttributes;->mParser:Lorg/xmlpull/v1/XmlPullParser;
@@ -1825,22 +1810,10 @@
Lcom/android/internal/os/RuntimeInit;->initialized:Z
Lcom/android/internal/os/RuntimeInit;->main([Ljava/lang/String;)V
Lcom/android/internal/os/RuntimeInit;->mApplicationObject:Landroid/os/IBinder;
-Lcom/android/internal/os/ZygoteConnection$Arguments;-><init>([Ljava/lang/String;)V
-Lcom/android/internal/os/ZygoteConnection$Arguments;->effectiveCapabilities:J
-Lcom/android/internal/os/ZygoteConnection$Arguments;->gid:I
-Lcom/android/internal/os/ZygoteConnection$Arguments;->gids:[I
-Lcom/android/internal/os/ZygoteConnection$Arguments;->permittedCapabilities:J
-Lcom/android/internal/os/ZygoteConnection$Arguments;->remainingArgs:[Ljava/lang/String;
-Lcom/android/internal/os/ZygoteConnection$Arguments;->rlimits:Ljava/util/ArrayList;
-Lcom/android/internal/os/ZygoteConnection$Arguments;->uid:I
-Lcom/android/internal/os/ZygoteConnection;->applyUidSecurityPolicy(Lcom/android/internal/os/ZygoteConnection$Arguments;Landroid/net/Credentials;)V
Lcom/android/internal/os/ZygoteConnection;->closeSocket()V
-Lcom/android/internal/os/ZygoteConnection;->getFileDesciptor()Ljava/io/FileDescriptor;
-Lcom/android/internal/os/ZygoteConnection;->intArray2d:[[I
Lcom/android/internal/os/ZygoteConnection;->mSocket:Landroid/net/LocalSocket;
Lcom/android/internal/os/ZygoteConnection;->mSocketOutStream:Ljava/io/DataOutputStream;
Lcom/android/internal/os/ZygoteConnection;->peer:Landroid/net/Credentials;
-Lcom/android/internal/os/ZygoteConnection;->readArgumentList()[Ljava/lang/String;
Lcom/android/internal/os/ZygoteInit;->main([Ljava/lang/String;)V
Lcom/android/internal/os/ZygoteInit;->mResources:Landroid/content/res/Resources;
Lcom/android/internal/os/ZygoteSecurityException;-><init>(Ljava/lang/String;)V
diff --git a/config/preloaded-classes b/config/preloaded-classes
index c8a2a9c..cd798ad 100644
--- a/config/preloaded-classes
+++ b/config/preloaded-classes
@@ -1405,10 +1405,7 @@
android.hardware.input.InputManager$InputDeviceListener
android.hardware.input.InputManager$InputDeviceListenerDelegate
android.hardware.input.InputManager$InputDevicesChangedListener
-android.hardware.location.ActivityRecognitionHardware
android.hardware.location.ContextHubManager
-android.hardware.location.IActivityRecognitionHardware
-android.hardware.location.IActivityRecognitionHardware$Stub
android.hardware.radio.RadioManager
android.hardware.soundtrigger.SoundTrigger
android.hardware.soundtrigger.SoundTrigger$ConfidenceLevel
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 98c5a0fb..836627e 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -17,6 +17,7 @@
package android.app;
import static android.Manifest.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS;
+import static android.os.Process.myUid;
import static java.lang.Character.MIN_VALUE;
@@ -123,6 +124,7 @@
import android.view.autofill.IAutofillWindowPresenter;
import android.view.contentcapture.ContentCaptureContext;
import android.view.contentcapture.ContentCaptureManager;
+import android.view.contentcapture.ContentCaptureSession;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.Toolbar;
@@ -1025,7 +1027,7 @@
*/
@Nullable private ContentCaptureManager getContentCaptureManager() {
// ContextCapture disabled for system apps
- if (getApplicationInfo().isSystemApp()) return null;
+ if (!UserHandle.isApp(myUid())) return null;
if (mContentCaptureManager == null) {
mContentCaptureManager = getSystemService(ContentCaptureManager.class);
}
@@ -1033,13 +1035,15 @@
}
/** @hide */ private static final int CONTENT_CAPTURE_START = 1;
- /** @hide */ private static final int CONTENT_CAPTURE_FLUSH = 2;
- /** @hide */ private static final int CONTENT_CAPTURE_STOP = 3;
+ /** @hide */ private static final int CONTENT_CAPTURE_PAUSE = 2;
+ /** @hide */ private static final int CONTENT_CAPTURE_RESUME = 3;
+ /** @hide */ private static final int CONTENT_CAPTURE_STOP = 4;
/** @hide */
@IntDef(prefix = { "CONTENT_CAPTURE_" }, value = {
CONTENT_CAPTURE_START,
- CONTENT_CAPTURE_FLUSH,
+ CONTENT_CAPTURE_PAUSE,
+ CONTENT_CAPTURE_RESUME,
CONTENT_CAPTURE_STOP
})
@Retention(RetentionPolicy.SOURCE)
@@ -1048,9 +1052,8 @@
private void notifyContentCaptureManagerIfNeeded(@ContentCaptureNotificationType int type) {
final ContentCaptureManager cm = getContentCaptureManager();
- if (cm == null) {
- return;
- }
+ if (cm == null) return;
+
switch (type) {
case CONTENT_CAPTURE_START:
//TODO(b/111276913): decide whether the InteractionSessionId should be
@@ -1062,8 +1065,11 @@
}
cm.onActivityStarted(mToken, getComponentName(), flags);
break;
- case CONTENT_CAPTURE_FLUSH:
- cm.flush();
+ case CONTENT_CAPTURE_PAUSE:
+ cm.flush(ContentCaptureSession.FLUSH_REASON_ACTIVITY_PAUSED);
+ break;
+ case CONTENT_CAPTURE_RESUME:
+ cm.flush(ContentCaptureSession.FLUSH_REASON_ACTIVITY_RESUMED);
break;
case CONTENT_CAPTURE_STOP:
cm.onActivityStopped();
@@ -1755,7 +1761,7 @@
}
}
mCalled = true;
- notifyContentCaptureManagerIfNeeded(CONTENT_CAPTURE_FLUSH);
+ notifyContentCaptureManagerIfNeeded(CONTENT_CAPTURE_RESUME);
}
/**
@@ -2149,7 +2155,7 @@
}
}
mCalled = true;
- notifyContentCaptureManagerIfNeeded(CONTENT_CAPTURE_FLUSH);
+ notifyContentCaptureManagerIfNeeded(CONTENT_CAPTURE_PAUSE);
}
/**
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index d423260..e0b8d78 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -3705,11 +3705,16 @@
* Returns whether switching to provided user was successful.
*
* @param user the user to switch to.
+ *
+ * @throws IllegalArgumentException if the user is null.
* @hide
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.MANAGE_USERS)
- public boolean switchUser(UserHandle user) {
+ public boolean switchUser(@NonNull UserHandle user) {
+ if (user == null) {
+ throw new IllegalArgumentException("UserHandle cannot be null.");
+ }
return switchUser(user.getIdentifier());
}
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index c90e404..5cac048 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -317,4 +317,13 @@
/** Returns true if the given uid is the app in the foreground. */
public abstract boolean isAppForeground(int uid);
+
+ /** Remove pending backup for the given userId. */
+ public abstract void clearPendingBackup(int userId);
+
+ /**
+ * When power button is very long pressed, call this interface to do some pre-shutdown work
+ * like persisting database etc.
+ */
+ public abstract void prepareForPossibleShutdown();
}
diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java
index 57132a7..ab8f234 100644
--- a/core/java/android/app/ActivityView.java
+++ b/core/java/android/app/ActivityView.java
@@ -16,6 +16,10 @@
package android.app;
+import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL;
+import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY;
+import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC;
+
import android.annotation.NonNull;
import android.annotation.UnsupportedAppUsage;
import android.app.ActivityManager.StackInfo;
@@ -32,7 +36,6 @@
import android.view.IWindowManager;
import android.view.InputDevice;
import android.view.MotionEvent;
-import android.view.Surface;
import android.view.SurfaceControl;
import android.view.SurfaceHolder;
import android.view.SurfaceSession;
@@ -82,7 +85,6 @@
private boolean mOpened; // Protected by mGuard.
private final SurfaceControl.Transaction mTmpTransaction = new SurfaceControl.Transaction();
- private Surface mTmpSurface = new Surface();
/** The ActivityView is only allowed to contain one task. */
private final boolean mSingleTaskInstance;
@@ -319,20 +321,20 @@
private class SurfaceCallback implements SurfaceHolder.Callback {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
- mTmpSurface = new Surface();
if (mVirtualDisplay == null) {
initVirtualDisplay(new SurfaceSession());
if (mVirtualDisplay != null && mActivityViewCallback != null) {
mActivityViewCallback.onActivityViewReady(ActivityView.this);
}
} else {
- // TODO (b/119209373): DisplayManager determines if a VirtualDisplay is on by
- // whether it has a surface. Setting a fake surface here so DisplayManager will
- // consider this display on.
- mVirtualDisplay.setSurface(mTmpSurface);
mTmpTransaction.reparent(mRootSurfaceControl,
mSurfaceView.getSurfaceControl().getHandle()).apply();
}
+
+ if (mVirtualDisplay != null) {
+ mVirtualDisplay.setDisplayState(true);
+ }
+
updateLocation();
}
@@ -346,10 +348,8 @@
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
- mTmpSurface.release();
- mTmpSurface = null;
if (mVirtualDisplay != null) {
- mVirtualDisplay.setSurface(null);
+ mVirtualDisplay.setDisplayState(false);
}
cleanTapExcludeRegion();
}
@@ -370,15 +370,11 @@
final int height = mSurfaceView.getHeight();
final DisplayManager displayManager = mContext.getSystemService(DisplayManager.class);
- // TODO (b/119209373): DisplayManager determines if a VirtualDisplay is on by
- // whether it has a surface. Setting a fake surface here so DisplayManager will consider
- // this display on.
mVirtualDisplay = displayManager.createVirtualDisplay(
- DISPLAY_NAME + "@" + System.identityHashCode(this),
- width, height, getBaseDisplayDensity(), mTmpSurface,
- DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC
- | DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY
- | DisplayManager.VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL);
+ DISPLAY_NAME + "@" + System.identityHashCode(this), width, height,
+ getBaseDisplayDensity(), null,
+ VIRTUAL_DISPLAY_FLAG_PUBLIC | VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY
+ | VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL);
if (mVirtualDisplay == null) {
Log.e(TAG, "Failed to initialize ActivityView");
return;
@@ -443,11 +439,6 @@
displayReleased = false;
}
- if (mTmpSurface != null) {
- mTmpSurface.release();
- mTmpSurface = null;
- }
-
if (displayReleased && mActivityViewCallback != null) {
mActivityViewCallback.onActivityViewDestroyed(this);
}
diff --git a/core/java/android/app/AlertDialog.java b/core/java/android/app/AlertDialog.java
index cf40e06..bfc216a 100644
--- a/core/java/android/app/AlertDialog.java
+++ b/core/java/android/app/AlertDialog.java
@@ -25,6 +25,7 @@
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.ResourceId;
+import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -465,7 +466,7 @@
* @param context the parent context
*/
public Builder(Context context) {
- this(context, resolveDialogTheme(context, ResourceId.ID_NULL));
+ this(context, resolveDialogTheme(context, Resources.ID_NULL));
}
/**
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index 4bd935c..088c245 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -31,7 +31,7 @@
import android.content.DialogInterface;
import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
-import android.content.res.ResourceId;
+import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
@@ -183,7 +183,7 @@
Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) {
if (createContextThemeWrapper) {
- if (themeResId == ResourceId.ID_NULL) {
+ if (themeResId == Resources.ID_NULL) {
final TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(R.attr.dialogTheme, outValue, true);
themeResId = outValue.resourceId;
diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl
index 347973e..fb65da1 100644
--- a/core/java/android/app/IActivityManager.aidl
+++ b/core/java/android/app/IActivityManager.aidl
@@ -317,7 +317,6 @@
*/
void requestWifiBugReport(in String shareTitle, in String shareDescription);
- void clearPendingBackup();
Intent getIntentForIntentSender(in IIntentSender sender);
// This is not public because you need to be very careful in how you
// manage your activity to make sure it is always the uid you expect.
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 163be8e..199c133 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -65,9 +65,9 @@
boolean areNotificationsEnabled(String pkg);
int getPackageImportance(String pkg);
- void setAppOverlaysAllowed(String pkg, int uid, boolean allowed);
- boolean areAppOverlaysAllowed(String pkg);
- boolean areAppOverlaysAllowedForPackage(String pkg, int uid);
+ void setBubblesAllowed(String pkg, int uid, boolean allowed);
+ boolean areBubblesAllowed(String pkg);
+ boolean areBubblesAllowedForPackage(String pkg, int uid);
void createNotificationChannelGroups(String pkg, in ParceledListSlice channelGroupList);
void createNotificationChannels(String pkg, in ParceledListSlice channelsList);
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index b657a91..b8d748d 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -384,9 +384,7 @@
STANDARD_LAYOUTS.add(R.layout.notification_template_material_messaging);
STANDARD_LAYOUTS.add(R.layout.notification_template_material_media);
STANDARD_LAYOUTS.add(R.layout.notification_template_material_big_media);
- STANDARD_LAYOUTS.add(R.layout.notification_template_ambient_header);
STANDARD_LAYOUTS.add(R.layout.notification_template_header);
- STANDARD_LAYOUTS.add(R.layout.notification_template_material_ambient);
}
/**
@@ -1276,7 +1274,7 @@
private String mShortcutId;
private CharSequence mSettingsText;
- private PendingIntent mAppOverlayIntent;
+ private BubbleMetadata mBubbleMetadata;
/** @hide */
@IntDef(prefix = { "GROUP_ALERT_" }, value = {
@@ -2278,7 +2276,7 @@
mGroupAlertBehavior = parcel.readInt();
if (parcel.readInt() != 0) {
- mAppOverlayIntent = PendingIntent.CREATOR.createFromParcel(parcel);
+ mBubbleMetadata = BubbleMetadata.CREATOR.createFromParcel(parcel);
}
mAllowSystemGeneratedContextualActions = parcel.readBoolean();
@@ -2396,7 +2394,7 @@
that.mBadgeIcon = this.mBadgeIcon;
that.mSettingsText = this.mSettingsText;
that.mGroupAlertBehavior = this.mGroupAlertBehavior;
- that.mAppOverlayIntent = this.mAppOverlayIntent;
+ that.mBubbleMetadata = this.mBubbleMetadata;
that.mAllowSystemGeneratedContextualActions = this.mAllowSystemGeneratedContextualActions;
if (!heavy) {
@@ -2719,9 +2717,9 @@
parcel.writeInt(mGroupAlertBehavior);
- if (mAppOverlayIntent != null) {
+ if (mBubbleMetadata != null) {
parcel.writeInt(1);
- mAppOverlayIntent.writeToParcel(parcel, 0);
+ mBubbleMetadata.writeToParcel(parcel, 0);
} else {
parcel.writeInt(0);
}
@@ -3141,11 +3139,11 @@
}
/**
- * Returns the intent that will be used to display app content in a floating window over the
- * existing foreground activity.
+ * Returns the bubble metadata that will be used to display app content in a floating window
+ * over the existing foreground activity.
*/
- public PendingIntent getAppOverlayIntent() {
- return mAppOverlayIntent;
+ public BubbleMetadata getBubbleMetadata() {
+ return mBubbleMetadata;
}
/**
@@ -3508,19 +3506,18 @@
}
/**
- * Sets the intent that will be used to display app content in a floating window
- * over the existing foreground activity.
+ * Sets the {@link BubbleMetadata} that will be used to display app content in a floating
+ * window over the existing foreground activity.
*
- * <p>This intent will be ignored unless this notification is posted to a channel that
- * allows {@link NotificationChannel#canOverlayApps() app overlays}.</p>
+ * <p>This data will be ignored unless the notification is posted to a channel that
+ * allows {@link NotificationChannel#canBubble() bubbles}.</p>
*
- * <p>Notifications with a valid and allowed app overlay intent will be displayed as
- * floating windows outside of the notification shade on unlocked devices. When a user
- * interacts with one of these windows, this app overlay intent will be invoked and
- * displayed.</p>
+ * <b>Notifications with a valid and allowed bubble metadata will display in collapsed state
+ * outside of the notification shade on unlocked devices. When a user interacts with the
+ * collapsed state, the bubble intent will be invoked and displayed.</b>
*/
- public Builder setAppOverlayIntent(PendingIntent intent) {
- mN.mAppOverlayIntent = intent;
+ public Builder setBubbleMetadata(BubbleMetadata data) {
+ mN.mBubbleMetadata = data;
return this;
}
@@ -4571,9 +4568,7 @@
if (p.title != null) {
contentView.setViewVisibility(R.id.title, View.VISIBLE);
contentView.setTextViewText(R.id.title, processTextSpans(p.title));
- if (!p.ambient) {
- setTextViewColorPrimary(contentView, R.id.title, p);
- }
+ setTextViewColorPrimary(contentView, R.id.title, p);
contentView.setViewLayoutWidth(R.id.title, showProgress
? ViewGroup.LayoutParams.WRAP_CONTENT
: ViewGroup.LayoutParams.MATCH_PARENT);
@@ -4582,9 +4577,7 @@
int textId = showProgress ? com.android.internal.R.id.text_line_1
: com.android.internal.R.id.text;
contentView.setTextViewText(textId, processTextSpans(p.text));
- if (!p.ambient) {
- setTextViewColorSecondary(contentView, textId, p);
- }
+ setTextViewColorSecondary(contentView, textId, p);
contentView.setViewVisibility(textId, View.VISIBLE);
}
@@ -4843,7 +4836,7 @@
if (mN.mLargeIcon == null && mN.largeIcon != null) {
mN.mLargeIcon = Icon.createWithBitmap(mN.largeIcon);
}
- boolean showLargeIcon = mN.mLargeIcon != null && !p.hideLargeIcon && !p.ambient;
+ boolean showLargeIcon = mN.mLargeIcon != null && !p.hideLargeIcon;
if (showLargeIcon) {
contentView.setViewVisibility(R.id.right_icon, View.VISIBLE);
contentView.setImageViewIcon(R.id.right_icon, mN.mLargeIcon);
@@ -4857,7 +4850,7 @@
* @return if the reply icon is visible
*/
private boolean bindReplyIcon(RemoteViews contentView, StandardTemplateParams p) {
- boolean actionVisible = !p.hideReplyIcon && !p.ambient;
+ boolean actionVisible = !p.hideReplyIcon;
Action action = null;
if (actionVisible) {
action = findReplyAction();
@@ -4897,21 +4890,18 @@
private void bindNotificationHeader(RemoteViews contentView, StandardTemplateParams p) {
bindSmallIcon(contentView, p);
bindHeaderAppName(contentView, p);
- if (!p.ambient) {
- // Ambient view does not have these
- bindHeaderText(contentView, p);
- bindHeaderTextSecondary(contentView, p);
- bindHeaderChronometerAndTime(contentView, p);
- bindProfileBadge(contentView, p);
- bindAlertedIcon(contentView, p);
- }
+ bindHeaderText(contentView, p);
+ bindHeaderTextSecondary(contentView, p);
+ bindHeaderChronometerAndTime(contentView, p);
+ bindProfileBadge(contentView, p);
+ bindAlertedIcon(contentView, p);
bindActivePermissions(contentView, p);
bindExpandButton(contentView, p);
mN.mUsesStandardHeader = true;
}
private void bindActivePermissions(RemoteViews contentView, StandardTemplateParams p) {
- int color = p.ambient ? resolveAmbientColor(p) : getNeutralColor(p);
+ int color = getNeutralColor(p);
contentView.setDrawableTint(R.id.camera, false, color, PorterDuff.Mode.SRC_ATOP);
contentView.setDrawableTint(R.id.mic, false, color, PorterDuff.Mode.SRC_ATOP);
contentView.setDrawableTint(R.id.overlay, false, color, PorterDuff.Mode.SRC_ATOP);
@@ -5022,13 +5012,12 @@
if (isColorized(p)) {
setTextViewColorPrimary(contentView, R.id.app_name_text, p);
} else {
- contentView.setTextColor(R.id.app_name_text,
- p.ambient ? resolveAmbientColor(p) : getSecondaryTextColor(p));
+ contentView.setTextColor(R.id.app_name_text, getSecondaryTextColor(p));
}
}
private boolean isColorized(StandardTemplateParams p) {
- return p.allowColorization && !p.ambient && mN.isColorized();
+ return p.allowColorization && mN.isColorized();
}
private void bindSmallIcon(RemoteViews contentView, StandardTemplateParams p) {
@@ -5098,7 +5087,7 @@
List<Notification.Action> nonContextualActions = filterOutContextualActions(mActions);
int N = nonContextualActions.size();
- boolean emphazisedMode = mN.fullScreenIntent != null && !p.ambient;
+ boolean emphazisedMode = mN.fullScreenIntent != null;
big.setBoolean(R.id.actions, "setEmphasizedMode", emphazisedMode);
if (N > 0) {
big.setViewVisibility(R.id.actions_container, View.VISIBLE);
@@ -5123,7 +5112,7 @@
}
CharSequence[] replyText = mN.extras.getCharSequenceArray(EXTRA_REMOTE_INPUT_HISTORY);
- if (!p.ambient && validRemoteInput && replyText != null
+ if (validRemoteInput && replyText != null
&& replyText.length > 0 && !TextUtils.isEmpty(replyText[0])
&& p.maxRemoteInputHistory > 0) {
boolean showSpinner = mN.extras.getBoolean(EXTRA_SHOW_REMOTE_INPUT_SPINNER);
@@ -5240,11 +5229,10 @@
* Construct a RemoteViews for the final notification header only. This will not be
* colorized.
*
- * @param ambient if true, generate the header for the ambient display layout.
* @hide
*/
- public RemoteViews makeNotificationHeader(boolean ambient) {
- return makeNotificationHeader(mParams.reset().ambient(ambient).fillTextsFrom(this));
+ public RemoteViews makeNotificationHeader() {
+ return makeNotificationHeader(mParams.reset().fillTextsFrom(this));
}
/**
@@ -5257,8 +5245,7 @@
// Headers on their own are never colorized
p.disallowColorization();
RemoteViews header = new BuilderRemoteViews(mContext.getApplicationInfo(),
- p.ambient ? R.layout.notification_template_ambient_header
- : R.layout.notification_template_header);
+ R.layout.notification_template_header);
resetNotificationHeader(header);
bindNotificationHeader(header, p);
return header;
@@ -5270,11 +5257,7 @@
* @hide
*/
public RemoteViews makeAmbientNotification() {
- RemoteViews ambient = applyStandardTemplateWithActions(
- R.layout.notification_template_material_ambient,
- mParams.reset().ambient(true).fillTextsFrom(this).hasProgress(false),
- null /* result */);
- return ambient;
+ return createHeadsUpContentView(false /* increasedHeight */);
}
private void hideLine1Text(RemoteViews result) {
@@ -5378,14 +5361,8 @@
}
mN.extras = publicExtras;
RemoteViews view;
- if (ambient) {
- publicExtras.putCharSequence(EXTRA_TITLE,
- mContext.getString(com.android.internal.R.string.notification_hidden_text));
- view = makeAmbientNotification();
- } else{
- view = makeNotificationHeader(false /* ambient */);
- view.setBoolean(R.id.notification_header, "setExpandOnlyOnButton", true);
- }
+ view = makeNotificationHeader();
+ view.setBoolean(R.id.notification_header, "setExpandOnlyOnButton", true);
mN.extras = savedBundle;
mN.mLargeIcon = largeIcon;
mN.largeIcon = largeIconLegacy;
@@ -5405,7 +5382,6 @@
public RemoteViews makeLowPriorityContentView(boolean useRegularSubtext) {
StandardTemplateParams p = mParams.reset()
.forceDefaultColor()
- .ambient(false)
.fillTextsFrom(this);
if (!useRegularSubtext || TextUtils.isEmpty(mParams.summaryText)) {
p.summaryText(createSummaryText());
@@ -5496,8 +5472,7 @@
if (isColorized(p)) {
setTextViewColorPrimary(button, R.id.action0, p);
} else if (getRawColor(p) != COLOR_DEFAULT && mTintActionButtons) {
- button.setTextColor(R.id.action0,
- p.ambient ? resolveAmbientColor(p) : resolveContrastColor(p));
+ button.setTextColor(R.id.action0, resolveContrastColor(p));
}
}
button.setIntTag(R.id.action0, R.id.notification_action_index_tag,
@@ -5590,13 +5565,8 @@
}
private CharSequence processLegacyText(CharSequence charSequence) {
- return processLegacyText(charSequence, false /* ambient */);
- }
-
- private CharSequence processLegacyText(CharSequence charSequence, boolean ambient) {
boolean isAlreadyLightText = isLegacy() || textColorsNeedInversion();
- boolean wantLightText = ambient;
- if (isAlreadyLightText != wantLightText) {
+ if (isAlreadyLightText) {
return getColorUtil().invertCharSequenceColors(charSequence);
} else {
return charSequence;
@@ -5610,9 +5580,7 @@
StandardTemplateParams p) {
boolean colorable = !isLegacy() || getColorUtil().isGrayscaleIcon(mContext, smallIcon);
int color;
- if (p.ambient) {
- color = resolveAmbientColor(p);
- } else if (isColorized(p)) {
+ if (isColorized(p)) {
color = getPrimaryTextColor(p);
} else {
color = resolveContrastColor(p);
@@ -5699,17 +5667,6 @@
return mNeutralColor;
}
- int resolveAmbientColor(StandardTemplateParams p) {
- int rawColor = getRawColor(p);
- if (mCachedAmbientColorIsFor == rawColor && mCachedAmbientColorIsFor != COLOR_INVALID) {
- return mCachedAmbientColor;
- }
- final int contrasted = ContrastColorUtil.resolveAmbientColor(mContext, rawColor);
-
- mCachedAmbientColorIsFor = rawColor;
- return mCachedAmbientColor = contrasted;
- }
-
/**
* Apply the unstyled operations and return a new {@link Notification} object.
* @hide
@@ -8422,6 +8379,186 @@
}
}
+ /**
+ * Encapsulates the information needed to display a notification as a bubble.
+ *
+ * <p>A bubble is used to display app content in a floating window over the existing
+ * foreground activity. A bubble has a collapsed state represented by an icon,
+ * {@link BubbleMetadata.Builder#setIcon(Icon)} and an expanded state which is populated
+ * via {@link BubbleMetadata.Builder#setIntent(PendingIntent)}.</p>
+ *
+ * <b>Notifications with a valid and allowed bubble will display in collapsed state
+ * outside of the notification shade on unlocked devices. When a user interacts with the
+ * collapsed bubble, the bubble intent will be invoked and displayed.</b>
+ *
+ * @see Notification.Builder#setBubbleMetadata(BubbleMetadata)
+ */
+ public static final class BubbleMetadata implements Parcelable {
+
+ private PendingIntent mPendingIntent;
+ private CharSequence mTitle;
+ private Icon mIcon;
+ private int mDesiredHeight;
+
+ private BubbleMetadata(PendingIntent intent, CharSequence title, Icon icon, int height) {
+ mPendingIntent = intent;
+ mTitle = title;
+ mIcon = icon;
+ mDesiredHeight = height;
+ }
+
+ private BubbleMetadata(Parcel in) {
+ mPendingIntent = PendingIntent.CREATOR.createFromParcel(in);
+ mTitle = in.readCharSequence();
+ mIcon = Icon.CREATOR.createFromParcel(in);
+ mDesiredHeight = in.readInt();
+ }
+
+ /**
+ * @return the pending intent used to populate the floating window for this bubble.
+ */
+ public PendingIntent getIntent() {
+ return mPendingIntent;
+ }
+
+ /**
+ * @return the title that will appear along with the app content defined by
+ * {@link #getIntent()} for this bubble.
+ */
+ public CharSequence getTitle() {
+ return mTitle;
+ }
+
+ /**
+ * @return the icon that will be displayed for this bubble when it is collapsed.
+ */
+ public Icon getIcon() {
+ return mIcon;
+ }
+
+ /**
+ * @return the ideal height for the floating window that app content defined by
+ * {@link #getIntent()} for this bubble.
+ */
+ public int getDesiredHeight() {
+ return mDesiredHeight;
+ }
+
+ public static final Parcelable.Creator<BubbleMetadata> CREATOR =
+ new Parcelable.Creator<BubbleMetadata>() {
+
+ @Override
+ public BubbleMetadata createFromParcel(Parcel source) {
+ return new BubbleMetadata(source);
+ }
+
+ @Override
+ public BubbleMetadata[] newArray(int size) {
+ return new BubbleMetadata[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ mPendingIntent.writeToParcel(out, 0);
+ out.writeCharSequence(mTitle);
+ mIcon.writeToParcel(out, 0);
+ out.writeInt(mDesiredHeight);
+ }
+
+ /**
+ * Builder to construct a {@link BubbleMetadata} object.
+ */
+ public static class Builder {
+
+ private PendingIntent mPendingIntent;
+ private CharSequence mTitle;
+ private Icon mIcon;
+ private int mDesiredHeight;
+
+ /**
+ * Constructs a new builder object.
+ */
+ public Builder() {
+ }
+
+ /**
+ * Sets the intent that will be used when the bubble is expanded. This will display the
+ * app content in a floating window over the existing foreground activity.
+ */
+ public BubbleMetadata.Builder setIntent(PendingIntent intent) {
+ if (intent == null) {
+ throw new IllegalArgumentException("Bubble requires non-null pending intent");
+ }
+ mPendingIntent = intent;
+ return this;
+ }
+
+ /**
+ * Sets the title that will appear along with the app content for this bubble.
+ *
+ * <p>A title is required and should expect to fit on a single line and make sense when
+ * shown with the content defined by {@link #setIntent(PendingIntent)}.</p>
+ */
+ public BubbleMetadata.Builder setTitle(CharSequence title) {
+ if (TextUtils.isEmpty(title)) {
+ throw new IllegalArgumentException("Bubbles require non-null or empty title");
+ }
+ mTitle = title;
+ return this;
+ }
+
+ /**
+ * Sets the icon that will represent the bubble when it is collapsed.
+ *
+ * <p>An icon is required and should be representative of the content within the bubble.
+ * If your app produces multiple bubbles, the image should be unique for each of them.
+ * </p>
+ */
+ public BubbleMetadata.Builder setIcon(Icon icon) {
+ if (icon == null) {
+ throw new IllegalArgumentException("Bubbles require non-null icon");
+ }
+ mIcon = icon;
+ return this;
+ }
+
+ /**
+ * Sets the desired height for the app content defined by
+ * {@link #setIntent(PendingIntent)}, this height may not be respected if there is not
+ * enough space on the screen or if the provided height is too small to be useful.
+ */
+ public BubbleMetadata.Builder setDesiredHeight(int height) {
+ mDesiredHeight = Math.max(height, 0);
+ return this;
+ }
+
+ /**
+ * Creates the {@link BubbleMetadata} defined by this builder.
+ * <p>Will throw {@link IllegalStateException} if required fields have not been set
+ * on this builder.</p>
+ */
+ public BubbleMetadata build() {
+ if (mPendingIntent == null) {
+ throw new IllegalStateException("Must supply pending intent to bubble");
+ }
+ if (TextUtils.isEmpty(mTitle)) {
+ throw new IllegalStateException("Must supply a title for the bubble");
+ }
+ if (mIcon == null) {
+ throw new IllegalStateException("Must supply an icon for the bubble");
+ }
+ return new BubbleMetadata(mPendingIntent, mTitle, mIcon, mDesiredHeight);
+ }
+ }
+ }
+
+
// When adding a new Style subclass here, don't forget to update
// Builder.getNotificationStyleClass.
@@ -9965,7 +10102,6 @@
private static class StandardTemplateParams {
boolean hasProgress = true;
- boolean ambient = false;
CharSequence title;
CharSequence text;
CharSequence headerTextSecondary;
@@ -9978,7 +10114,6 @@
final StandardTemplateParams reset() {
hasProgress = true;
- ambient = false;
title = null;
text = null;
summaryText = null;
@@ -10034,22 +10169,15 @@
return this;
}
- final StandardTemplateParams ambient(boolean ambient) {
- Preconditions.checkState(title == null && text == null, "must set ambient before text");
- this.ambient = ambient;
- return this;
- }
-
final StandardTemplateParams fillTextsFrom(Builder b) {
Bundle extras = b.mN.extras;
- this.title = b.processLegacyText(extras.getCharSequence(EXTRA_TITLE), ambient);
+ this.title = b.processLegacyText(extras.getCharSequence(EXTRA_TITLE));
- // Big text notifications should contain their content when viewed in ambient mode.
CharSequence text = extras.getCharSequence(EXTRA_BIG_TEXT);
- if (!ambient || TextUtils.isEmpty(text)) {
+ if (TextUtils.isEmpty(text)) {
text = extras.getCharSequence(EXTRA_TEXT);
}
- this.text = b.processLegacyText(text, ambient);
+ this.text = b.processLegacyText(text);
this.summaryText = extras.getCharSequence(EXTRA_SUB_TEXT);
return this;
}
diff --git a/core/java/android/app/NotificationChannel.java b/core/java/android/app/NotificationChannel.java
index 950e9aa..e95d62f 100644
--- a/core/java/android/app/NotificationChannel.java
+++ b/core/java/android/app/NotificationChannel.java
@@ -85,7 +85,7 @@
private static final String ATT_FG_SERVICE_SHOWN = "fgservice";
private static final String ATT_GROUP = "group";
private static final String ATT_BLOCKABLE_SYSTEM = "blockable_system";
- private static final String ATT_ALLOW_APP_OVERLAY = "app_overlay";
+ private static final String ATT_ALLOW_BUBBLE = "allow_bubble";
private static final String DELIMITER = ",";
/**
@@ -121,7 +121,7 @@
/**
* @hide
*/
- public static final int USER_LOCKED_ALLOW_APP_OVERLAY = 0x00000100;
+ public static final int USER_LOCKED_ALLOW_BUBBLE = 0x00000100;
/**
* @hide
@@ -134,7 +134,7 @@
USER_LOCKED_VIBRATION,
USER_LOCKED_SOUND,
USER_LOCKED_SHOW_BADGE,
- USER_LOCKED_ALLOW_APP_OVERLAY
+ USER_LOCKED_ALLOW_BUBBLE
};
private static final int DEFAULT_LIGHT_COLOR = 0;
@@ -144,7 +144,7 @@
NotificationManager.IMPORTANCE_UNSPECIFIED;
private static final boolean DEFAULT_DELETED = false;
private static final boolean DEFAULT_SHOW_BADGE = true;
- private static final boolean DEFAULT_ALLOW_APP_OVERLAY = true;
+ private static final boolean DEFAULT_ALLOW_BUBBLE = true;
@UnsupportedAppUsage
private final String mId;
@@ -168,7 +168,7 @@
private AudioAttributes mAudioAttributes = Notification.AUDIO_ATTRIBUTES_DEFAULT;
// If this is a blockable system notification channel.
private boolean mBlockableSystem = false;
- private boolean mAllowAppOverlay = DEFAULT_ALLOW_APP_OVERLAY;
+ private boolean mAllowBubbles = DEFAULT_ALLOW_BUBBLE;
private boolean mImportanceLockedByOEM;
/**
@@ -231,7 +231,7 @@
mAudioAttributes = in.readInt() > 0 ? AudioAttributes.CREATOR.createFromParcel(in) : null;
mLightColor = in.readInt();
mBlockableSystem = in.readBoolean();
- mAllowAppOverlay = in.readBoolean();
+ mAllowBubbles = in.readBoolean();
mImportanceLockedByOEM = in.readBoolean();
}
@@ -285,7 +285,7 @@
}
dest.writeInt(mLightColor);
dest.writeBoolean(mBlockableSystem);
- dest.writeBoolean(mAllowAppOverlay);
+ dest.writeBoolean(mAllowBubbles);
dest.writeBoolean(mImportanceLockedByOEM);
}
@@ -480,7 +480,7 @@
/**
* Sets whether notifications posted to this channel can appear outside of the notification
- * shade, floating over other apps' content.
+ * shade, floating over other apps' content as a bubble.
*
* <p>This value will be ignored for channels that aren't allowed to pop on screen (that is,
* channels whose {@link #getImportance() importance} is <
@@ -488,10 +488,10 @@
*
* <p>Only modifiable before the channel is submitted to
* * {@link NotificationManager#createNotificationChannel(NotificationChannel)}.</p>
- * @see Notification#getAppOverlayIntent()
+ * @see Notification#getBubbleMetadata()
*/
- public void setAllowAppOverlay(boolean allowAppOverlay) {
- mAllowAppOverlay = allowAppOverlay;
+ public void setAllowBubbles(boolean allowBubbles) {
+ mAllowBubbles = allowBubbles;
}
/**
@@ -610,16 +610,16 @@
* Returns whether notifications posted to this channel can display outside of the notification
* shade, in a floating window on top of other apps.
*/
- public boolean canOverlayApps() {
- return isAppOverlayAllowed() && getImportance() >= IMPORTANCE_HIGH;
+ public boolean canBubble() {
+ return isBubbleAllowed() && getImportance() >= IMPORTANCE_HIGH;
}
/**
- * Like {@link #canOverlayApps()}, but only checks the permission, not the importance.
+ * Like {@link #canBubble()}, but only checks the permission, not the importance.
* @hide
*/
- public boolean isAppOverlayAllowed() {
- return mAllowAppOverlay;
+ public boolean isBubbleAllowed() {
+ return mAllowBubbles;
}
/**
@@ -719,7 +719,7 @@
lockFields(safeInt(parser, ATT_USER_LOCKED, 0));
setFgServiceShown(safeBool(parser, ATT_FG_SERVICE_SHOWN, false));
setBlockableSystem(safeBool(parser, ATT_BLOCKABLE_SYSTEM, false));
- setAllowAppOverlay(safeBool(parser, ATT_ALLOW_APP_OVERLAY, DEFAULT_ALLOW_APP_OVERLAY));
+ setAllowBubbles(safeBool(parser, ATT_ALLOW_BUBBLE, DEFAULT_ALLOW_BUBBLE));
}
@Nullable
@@ -838,8 +838,8 @@
if (isBlockableSystem()) {
out.attribute(null, ATT_BLOCKABLE_SYSTEM, Boolean.toString(isBlockableSystem()));
}
- if (canOverlayApps() != DEFAULT_ALLOW_APP_OVERLAY) {
- out.attribute(null, ATT_ALLOW_APP_OVERLAY, Boolean.toString(canOverlayApps()));
+ if (canBubble() != DEFAULT_ALLOW_BUBBLE) {
+ out.attribute(null, ATT_ALLOW_BUBBLE, Boolean.toString(canBubble()));
}
out.endTag(null, TAG_CHANNEL);
@@ -883,7 +883,7 @@
record.put(ATT_DELETED, Boolean.toString(isDeleted()));
record.put(ATT_GROUP, getGroup());
record.put(ATT_BLOCKABLE_SYSTEM, isBlockableSystem());
- record.put(ATT_ALLOW_APP_OVERLAY, canOverlayApps());
+ record.put(ATT_ALLOW_BUBBLE, canBubble());
return record;
}
@@ -983,7 +983,7 @@
&& mShowBadge == that.mShowBadge
&& isDeleted() == that.isDeleted()
&& isBlockableSystem() == that.isBlockableSystem()
- && mAllowAppOverlay == that.mAllowAppOverlay
+ && mAllowBubbles == that.mAllowBubbles
&& Objects.equals(getId(), that.getId())
&& Objects.equals(getName(), that.getName())
&& Objects.equals(mDesc, that.mDesc)
@@ -1000,7 +1000,7 @@
getLockscreenVisibility(), getSound(), mLights, getLightColor(),
getUserLockedFields(),
isFgServiceShown(), mVibrationEnabled, mShowBadge, isDeleted(), getGroup(),
- getAudioAttributes(), isBlockableSystem(), mAllowAppOverlay,
+ getAudioAttributes(), isBlockableSystem(), mAllowBubbles,
mImportanceLockedByOEM);
result = 31 * result + Arrays.hashCode(mVibration);
return result;
@@ -1028,7 +1028,7 @@
+ ", mGroup='" + mGroup + '\''
+ ", mAudioAttributes=" + mAudioAttributes
+ ", mBlockableSystem=" + mBlockableSystem
- + ", mAllowAppOverlay=" + mAllowAppOverlay
+ + ", mAllowBubbles=" + mAllowBubbles
+ ", mImportanceLockedByOEM=" + mImportanceLockedByOEM
+ '}';
pw.println(prefix + output);
@@ -1055,7 +1055,7 @@
+ ", mGroup='" + mGroup + '\''
+ ", mAudioAttributes=" + mAudioAttributes
+ ", mBlockableSystem=" + mBlockableSystem
- + ", mAllowAppOverlay=" + mAllowAppOverlay
+ + ", mAllowBubbles=" + mAllowBubbles
+ ", mImportanceLockedByOEM=" + mImportanceLockedByOEM
+ '}';
}
@@ -1090,7 +1090,7 @@
mAudioAttributes.writeToProto(proto, NotificationChannelProto.AUDIO_ATTRIBUTES);
}
proto.write(NotificationChannelProto.IS_BLOCKABLE_SYSTEM, mBlockableSystem);
- proto.write(NotificationChannelProto.ALLOW_APP_OVERLAY, mAllowAppOverlay);
+ proto.write(NotificationChannelProto.ALLOW_APP_OVERLAY, mAllowBubbles);
proto.end(token);
}
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index aad3253..43614fe 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -1080,14 +1080,14 @@
* notification shade, floating over other apps' content.
*
* <p>This value will be ignored for notifications that are posted to channels that do not
- * allow app overlays ({@link NotificationChannel#canOverlayApps()}.
+ * allow bubbles ({@link NotificationChannel#canBubble()}.
*
- * @see Notification#getAppOverlayIntent()
+ * @see Notification#getBubbleMetadata()
*/
- public boolean areAppOverlaysAllowed() {
+ public boolean areBubblesAllowed() {
INotificationManager service = getService();
try {
- return service.areAppOverlaysAllowed(mContext.getPackageName());
+ return service.areBubblesAllowed(mContext.getPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index 3adafd72..2dc225a 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -439,10 +439,11 @@
}});
registerService(Context.TEXT_SERVICES_MANAGER_SERVICE, TextServicesManager.class,
- new StaticServiceFetcher<TextServicesManager>() {
+ new CachedServiceFetcher<TextServicesManager>() {
@Override
- public TextServicesManager createService() {
- return TextServicesManager.getInstance();
+ public TextServicesManager createService(ContextImpl ctx)
+ throws ServiceNotFoundException {
+ return TextServicesManager.createInstance(ctx);
}});
registerService(Context.KEYGUARD_SERVICE, KeyguardManager.class,
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 9247486..6d7c547 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -2168,6 +2168,74 @@
public @interface SetPrivateDnsModeResultConstants {}
/**
+ * Activity action: Starts the administrator to get the mode for the provisioning.
+ * This intent may contain the following extras:
+ * <ul>
+ * <li>{@link #EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE}</li>
+ * <li>{@link #EXTRA_PROVISIONING_IMEI}</li>
+ * <li>{@link #EXTRA_PROVISIONING_SERIAL_NUMBER}</li>
+ * </ul>
+ *
+ * <p>The target activity should return one of the following values in
+ * {@link #EXTRA_PROVISIONING_MODE} as result:
+ * <ul>
+ * <li>{@link #PROVISIONING_MODE_FULLY_MANAGED_DEVICE}</li>
+ * <li>{@link #PROVISIONING_MODE_MANAGED_PROFILE}</li>
+ * <li>{@link #PROVISIONING_MODE_MANAGED_PROFILE_ON_FULLY_MANAGED_DEVICE}</li>
+ * </ul>
+ *
+ * <p>The target activity may also return the account that needs to be migrated from primary
+ * user to managed profile in case of a profile owner provisioning in
+ * {@link #EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE} as result.
+ */
+ public static final String ACTION_GET_PROVISIONING_MODE =
+ "android.app.action.GET_PROVISIONING_MODE";
+
+ /**
+ * A string extra holding the IMEI (International Mobile Equipment Identity) of the device.
+ */
+ public static final String EXTRA_PROVISIONING_IMEI = "android.app.extra.PROVISIONING_IMEI";
+
+ /**
+ * A string extra holding the serial number of the device.
+ */
+ public static final String EXTRA_PROVISIONING_SERIAL_NUMBER =
+ "android.app.extra.PROVISIONING_SERIAL_NUMBER";
+
+ /**
+ * An intent extra holding the provisioning mode returned by the administrator.
+ * The value for this extra should be one of the following:
+ * <ul>
+ * <li>{@link #PROVISIONING_MODE_FULLY_MANAGED_DEVICE}</li>
+ * <li>{@link #PROVISIONING_MODE_MANAGED_PROFILE}</li>
+ * <li>{@link #PROVISIONING_MODE_MANAGED_PROFILE_ON_FULLY_MANAGED_DEVICE}</li>
+ * </ul>
+ */
+ public static final String EXTRA_PROVISIONING_MODE =
+ "android.app.extra.PROVISIONING_MODE";
+
+ /**
+ * The provisioning mode for fully managed device.
+ */
+ public static final int PROVISIONING_MODE_FULLY_MANAGED_DEVICE = 1;
+
+ /**
+ * The provisioning mode for managed profile.
+ */
+ public static final int PROVISIONING_MODE_MANAGED_PROFILE = 2;
+
+ /**
+ * The provisioning mode for managed profile on a fully managed device.
+ */
+ public static final int PROVISIONING_MODE_MANAGED_PROFILE_ON_FULLY_MANAGED_DEVICE = 3;
+
+ /**
+ * Activity action: Starts the administrator to show policy compliance for the provisioning.
+ */
+ public static final String ACTION_ADMIN_POLICY_COMPLIANCE =
+ "android.app.action.ADMIN_POLICY_COMPLIANCE";
+
+ /**
* Return true if the given administrator component is currently active (enabled) in the system.
*
* @param admin The administrator component to check for.
diff --git a/core/java/android/app/usage/EventList.java b/core/java/android/app/usage/EventList.java
index a79ad2f..aaae57e5 100644
--- a/core/java/android/app/usage/EventList.java
+++ b/core/java/android/app/usage/EventList.java
@@ -103,21 +103,4 @@
}
return result;
}
-
- /**
- * Remove events of certain type on or after a timestamp.
- * @param type The type of event to remove.
- * @param timeStamp the timeStamp on or after which to remove the event.
- */
- public void removeOnOrAfter(int type, long timeStamp) {
- for (int i = mEvents.size() - 1; i >= 0; i--) {
- UsageEvents.Event event = mEvents.get(i);
- if (event.mTimeStamp < timeStamp) {
- break;
- }
- if (event.mEventType == type) {
- mEvents.remove(i);
- }
- }
- }
}
diff --git a/core/java/android/app/usage/UsageEvents.java b/core/java/android/app/usage/UsageEvents.java
index d7a5328..2c5fe04 100644
--- a/core/java/android/app/usage/UsageEvents.java
+++ b/core/java/android/app/usage/UsageEvents.java
@@ -245,10 +245,18 @@
public static final int FLUSH_TO_DISK = 25;
/**
+ * An event type denoting that the device underwent a shutdown process.
+ * A DEVICE_SHUTDOWN event should be treated as if all started activities and foreground
+ * services are now stopped and no explicit {@link #ACTIVITY_STOPPED} and
+ * {@link #FOREGROUND_SERVICE_STOP} events will be generated for them.
+ */
+ public static final int DEVICE_SHUTDOWN = 26;
+
+ /**
* Keep in sync with the greatest event type value.
* @hide
*/
- public static final int MAX_EVENT_TYPE = 25;
+ public static final int MAX_EVENT_TYPE = 26;
/** @hide */
public static final int FLAG_IS_PACKAGE_INSTANT_APP = 1 << 0;
diff --git a/core/java/android/app/usage/UsageStats.java b/core/java/android/app/usage/UsageStats.java
index 308180b..94a2a3e 100644
--- a/core/java/android/app/usage/UsageStats.java
+++ b/core/java/android/app/usage/UsageStats.java
@@ -21,6 +21,7 @@
import static android.app.usage.UsageEvents.Event.ACTIVITY_RESUMED;
import static android.app.usage.UsageEvents.Event.ACTIVITY_STOPPED;
import static android.app.usage.UsageEvents.Event.CONTINUING_FOREGROUND_SERVICE;
+import static android.app.usage.UsageEvents.Event.DEVICE_SHUTDOWN;
import static android.app.usage.UsageEvents.Event.END_OF_DAY;
import static android.app.usage.UsageEvents.Event.FLUSH_TO_DISK;
import static android.app.usage.UsageEvents.Event.FOREGROUND_SERVICE_START;
@@ -119,12 +120,9 @@
public int mLastEvent;
/**
- * If an activity is visible(onStart(), onPause() states) or in foreground (onResume() state),
- * it has one entry in this map. When an activity becomes invisible (onStop() or onDestroy()),
- * it is removed from this map.
* Key is instanceId of the activity (ActivityRecode appToken hashCode)..
- * Value is this activity's last event, one of ACTIVITY_RESUMED or
- * ACTIVITY_PAUSED.
+ * Value is this activity's last event, one of ACTIVITY_RESUMED, ACTIVITY_PAUSED or
+ * ACTIVITY_STOPPED.
* {@hide}
*/
public SparseIntArray mActivities = new SparseIntArray();
@@ -560,6 +558,7 @@
mLastTimeForegroundServiceUsed = timeStamp;
mForegroundServices.put(className, eventType);
break;
+ case DEVICE_SHUTDOWN:
case FLUSH_TO_DISK:
// update usage of all active activities/services.
if (hasForegroundActivity()) {
diff --git a/core/java/android/app/usage/UsageStatsManagerInternal.java b/core/java/android/app/usage/UsageStatsManagerInternal.java
index 2edad35..cc3ab00 100644
--- a/core/java/android/app/usage/UsageStatsManagerInternal.java
+++ b/core/java/android/app/usage/UsageStatsManagerInternal.java
@@ -98,6 +98,12 @@
public abstract void prepareShutdown();
/**
+ * When the device power button is long pressed for 3.5 seconds, prepareForPossibleShutdown()
+ * is called.
+ */
+ public abstract void prepareForPossibleShutdown();
+
+ /**
* Returns true if the app has not been used for a certain amount of time. How much time?
* Could be hours, could be days, who knows?
*
diff --git a/core/java/android/attention/AttentionManagerInternal.java b/core/java/android/attention/AttentionManagerInternal.java
new file mode 100644
index 0000000..6b7f10e
--- /dev/null
+++ b/core/java/android/attention/AttentionManagerInternal.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2019 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 android.attention;
+
+/**
+ * Attention manager local system server interface.
+ *
+ * @hide Only for use within the system server.
+ */
+public abstract class AttentionManagerInternal {
+ /**
+ * Returns {@code true} if attention service is supported on this device.
+ */
+ public abstract boolean isAttentionServiceSupported();
+
+ /**
+ * Checks whether user attention is at the screen and calls in the provided callback.
+ *
+ * @param requestCode a code associated with the attention check request; this code would be
+ * used to call back in {@link AttentionCallbackInternal#onSuccess} and
+ * {@link AttentionCallbackInternal#onFailure}
+ * @param timeoutMillis a budget for the attention check; if it takes longer - {@link
+ * AttentionCallbackInternal#onFailure} would be called with the {@link
+ * android.service.attention.AttentionService#ATTENTION_FAILURE_TIMED_OUT}
+ * code
+ * @param callback a callback for when the attention check has completed
+ * @return {@code true} if the attention check should succeed; {@false} otherwise.
+ */
+ public abstract boolean checkAttention(int requestCode,
+ long timeoutMillis, AttentionCallbackInternal callback);
+
+ /**
+ * Cancels the specified attention check in case it's no longer needed.
+ *
+ * @param requestCode a code provided during {@link #checkAttention}
+ */
+ public abstract void cancelAttentionCheck(int requestCode);
+
+ /** Internal interface for attention callback. */
+ public abstract static class AttentionCallbackInternal {
+ /**
+ * Provides the result of the attention check, if the check was successful.
+ *
+ * @param requestCode a code provided in {@link #checkAttention}
+ * @param result an int with the result of the check
+ * @param timestamp a {@code SystemClock.uptimeMillis()} timestamp associated with the
+ * attention check
+ */
+ public abstract void onSuccess(int requestCode, int result, long timestamp);
+
+ /**
+ * Provides the explanation for why the attention check had failed.
+ *
+ * @param requestCode a code provided in {@link #checkAttention}
+ * @param error an int with the reason for failure
+ */
+ public abstract void onFailure(int requestCode, int error);
+ }
+}
diff --git a/core/java/android/bluetooth/BluetoothCodecConfig.java b/core/java/android/bluetooth/BluetoothCodecConfig.java
index 79c0a3a..c9d0ef2 100644
--- a/core/java/android/bluetooth/BluetoothCodecConfig.java
+++ b/core/java/android/bluetooth/BluetoothCodecConfig.java
@@ -114,6 +114,19 @@
mCodecSpecific4 = codecSpecific4;
}
+ @UnsupportedAppUsage
+ public BluetoothCodecConfig(int codecType) {
+ mCodecType = codecType;
+ mCodecPriority = BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT;
+ mSampleRate = BluetoothCodecConfig.SAMPLE_RATE_NONE;
+ mBitsPerSample = BluetoothCodecConfig.BITS_PER_SAMPLE_NONE;
+ mChannelMode = BluetoothCodecConfig.CHANNEL_MODE_NONE;
+ mCodecSpecific1 = 0;
+ mCodecSpecific2 = 0;
+ mCodecSpecific3 = 0;
+ mCodecSpecific4 = 0;
+ }
+
@Override
public boolean equals(Object o) {
if (o instanceof BluetoothCodecConfig) {
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index d27cce5..8497656 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -33,6 +33,7 @@
import android.content.pm.ComponentInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.pm.ShortcutInfo;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Rect;
@@ -1954,6 +1955,17 @@
public static final String EXTRA_LAUNCHER_EXTRAS = "android.intent.extra.LAUNCHER_EXTRAS";
/**
+ * Intent extra: ID of the shortcut used to send the share intent.
+ *
+ * @see ShortcutInfo#getId()
+ *
+ * <p>
+ * Type: String
+ * </p>
+ */
+ public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+
+ /**
* Activity action: Launch UI to manage which apps have a given permission.
* <p>
* Input: {@link #EXTRA_PERMISSION_NAME} specifies the permission group
diff --git a/core/java/android/content/pm/CrossProfileApps.java b/core/java/android/content/pm/CrossProfileApps.java
index 740fd7f..b7366f1 100644
--- a/core/java/android/content/pm/CrossProfileApps.java
+++ b/core/java/android/content/pm/CrossProfileApps.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.Context;
import android.content.res.Resources;
@@ -76,9 +77,23 @@
}
/**
- * Starts the specified activity of the caller package in the specified profile if the caller
- * has {@link android.Manifest.permission#INTERACT_ACROSS_PROFILES} permission and
- * both the caller and target user profiles are in the same user group.
+ * @deprecated use {@link #startActivity(ComponentName, UserHandle)} instead.
+ *
+ * @removed
+ * @hide
+ */
+ @Deprecated
+ @UnsupportedAppUsage
+ public void startAnyActivity(@NonNull ComponentName component, @NonNull UserHandle targetUser) {
+ startActivity(component, targetUser);
+ }
+
+ /**
+ * Starts the specified activity of the caller package in the specified profile. Unlike
+ * {@link #startMainActivity}, this can start any activity of the caller package, not just
+ * the main activity.
+ * The caller must have the {@link android.Manifest.permission#INTERACT_ACROSS_PROFILES}
+ * permission and both the caller and target user profiles must be in the same profile group.
*
* @param component The ComponentName of the activity to launch. It must be exported.
* @param targetUser The UserHandle of the profile, must be one of the users returned by
@@ -88,7 +103,7 @@
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_PROFILES)
- public void startAnyActivity(@NonNull ComponentName component, @NonNull UserHandle targetUser) {
+ public void startActivity(@NonNull ComponentName component, @NonNull UserHandle targetUser) {
try {
mService.startActivityAsUser(mContext.getIApplicationThread(),
mContext.getPackageName(), component, targetUser.getIdentifier(), false);
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index d5c3b26..4b130b2 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -540,6 +540,11 @@
String targetCompilerFilter, boolean force);
/**
+ * Ask the package manager to compile layouts in the given package.
+ */
+ boolean compileLayouts(String packageName);
+
+ /**
* Ask the package manager to dump profiles associated with a package.
*/
void dumpProfiles(String packageName);
diff --git a/core/java/android/content/pm/IShortcutService.aidl b/core/java/android/content/pm/IShortcutService.aidl
index 03124be..c702b16 100644
--- a/core/java/android/content/pm/IShortcutService.aidl
+++ b/core/java/android/content/pm/IShortcutService.aidl
@@ -16,6 +16,7 @@
package android.content.pm;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.IntentSender;
import android.content.pm.ParceledListSlice;
import android.content.pm.ShortcutInfo;
@@ -72,4 +73,7 @@
void applyRestore(in byte[] payload, int user);
boolean isRequestPinItemSupported(int user, int requestType);
+
+ // System API used by framework's ShareSheet (ChooserActivity)
+ ParceledListSlice getShareTargets(String packageName, in IntentFilter filter, int userId);
}
\ No newline at end of file
diff --git a/core/java/android/content/pm/PackageInfo.java b/core/java/android/content/pm/PackageInfo.java
index b8d7889..6d22277 100644
--- a/core/java/android/content/pm/PackageInfo.java
+++ b/core/java/android/content/pm/PackageInfo.java
@@ -18,14 +18,10 @@
import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
-import android.apex.ApexInfo;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* Overall information about the contents of a package. This corresponds
* to all of the information collected from AndroidManifest.xml.
@@ -374,6 +370,14 @@
public String overlayTarget;
/**
+ * What overlayable set of elements package, if any, this package will overlay.
+ *
+ * Overlayable name defined within the target package, or null.
+ * @hide
+ */
+ public String overlayTargetName;
+
+ /**
* The overlay category, if any, of this package
*
* @hide
@@ -573,15 +577,6 @@
}
}
- /**
- * @hide
- */
- public PackageInfo(ApexInfo apexInfo) {
- packageName = apexInfo.packageName;
- setLongVersionCode(apexInfo.versionCode);
- isApex = true;
- }
-
private void propagateApplicationInfo(ApplicationInfo appInfo, ComponentInfo[] components) {
if (components != null) {
for (ComponentInfo ci : components) {
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 636a70f..b845673 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -5555,26 +5555,24 @@
}
/**
- * @deprecated This function no longer does anything; it was an old
- * approach to managing preferred activities, which has been superseded
- * by (and conflicts with) the modern activity-based preferences.
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
public abstract void addPackageToPreferred(String packageName);
/**
- * @deprecated This function no longer does anything; it was an old
- * approach to managing preferred activities, which has been superseded
- * by (and conflicts with) the modern activity-based preferences.
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
public abstract void removePackageFromPreferred(String packageName);
/**
- * @deprecated This function no longer does anything; it was an old
- * approach to managing preferred activities, which has been superseded
- * by (and conflicts with) the modern activity-based preferences.
- *
* Retrieve the list of all currently configured preferred packages. The
* first package on the list is the most preferred, the last is the least
* preferred.
@@ -5582,15 +5580,16 @@
* @param flags Additional option flags to modify the data returned.
* @return A List of PackageInfo objects, one for each preferred
* application, in order of preference.
+ *
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
public abstract List<PackageInfo> getPreferredPackages(@PackageInfoFlags int flags);
/**
- * @deprecated This is a protected API that should not have been available
- * to third party applications. It is the platform's responsibility for
- * assigning preferred activities and this cannot be directly modified.
- *
* Add a new preferred activity mapping to the system. This will be used
* to automatically select the given activity component when
* {@link Context#startActivity(Intent) Context.startActivity()} finds
@@ -5604,20 +5603,26 @@
* this preference was made.
* @param activity The component name of the activity that is to be
* preferred.
+ *
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
public abstract void addPreferredActivity(IntentFilter filter, int match,
ComponentName[] set, ComponentName activity);
/**
- * @deprecated This is a protected API that should not have been available
- * to third party applications. It is the platform's responsibility for
- * assigning preferred activities and this cannot be directly modified.
- *
* Same as {@link #addPreferredActivity(IntentFilter, int,
ComponentName[], ComponentName)}, but with a specific userId to apply the preference
to.
* @hide
+ *
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
@UnsupportedAppUsage
@@ -5627,10 +5632,6 @@
}
/**
- * @deprecated This is a protected API that should not have been available
- * to third party applications. It is the platform's responsibility for
- * assigning preferred activities and this cannot be directly modified.
- *
* Replaces an existing preferred activity mapping to the system, and if that were not present
* adds a new preferred activity. This will be used
* to automatically select the given activity component when
@@ -5645,7 +5646,13 @@
* this preference was made.
* @param activity The component name of the activity that is to be
* preferred.
+ *
* @hide
+ *
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
@UnsupportedAppUsage
@@ -5653,10 +5660,6 @@
ComponentName[] set, ComponentName activity);
/**
- * @deprecated This is a protected API that should not have been available
- * to third party applications. It is the platform's responsibility for
- * assigning preferred activities and this cannot be directly modified.
- *
* Replaces an existing preferred activity mapping to the system, and if that were not present
* adds a new preferred activity. This will be used to automatically select the given activity
* component when {@link Context#startActivity(Intent) Context.startActivity()} finds multiple
@@ -5671,6 +5674,11 @@
* @param activity The component name of the activity that is to be preferred.
*
* @hide
+ *
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
@SystemApi
@@ -5681,6 +5689,11 @@
/**
* @hide
+ *
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
@UnsupportedAppUsage
@@ -5690,10 +5703,6 @@
}
/**
- * @deprecated This function no longer does anything; it was an old
- * approach to managing preferred activities, which has been superseded
- * by (and conflicts with) the modern activity-based preferences.
- *
* Remove all preferred activity mappings, previously added with
* {@link #addPreferredActivity}, from the
* system whose activities are implemented in the given package name.
@@ -5701,15 +5710,16 @@
*
* @param packageName The name of the package whose preferred activity
* mappings are to be removed.
+ *
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
public abstract void clearPackagePreferredActivities(String packageName);
/**
- * @deprecated This function no longer does anything; it was an old
- * approach to managing preferred activities, which has been superseded
- * by (and conflicts with) the modern activity-based preferences.
- *
* Retrieve all preferred activities, previously added with
* {@link #addPreferredActivity}, that are
* currently registered with the system.
@@ -5725,6 +5735,11 @@
* @return Returns the total number of registered preferred activities
* (the number of distinct IntentFilter records, not the number of unique
* activity components) that were found.
+ *
+ * @deprecated This function no longer does anything. It is the platform's
+ * responsibility to assign preferred activities and this cannot be modified
+ * directly. To determine the activities resolved by the platform, use
+ * {@link #resolveActivity} or {@link #queryIntentActivities}.
*/
@Deprecated
public abstract int getPreferredActivities(@NonNull List<IntentFilter> outFilters,
diff --git a/core/java/android/content/pm/PackageManagerInternal.java b/core/java/android/content/pm/PackageManagerInternal.java
index 83563d0..c7320b0 100644
--- a/core/java/android/content/pm/PackageManagerInternal.java
+++ b/core/java/android/content/pm/PackageManagerInternal.java
@@ -55,6 +55,7 @@
public static final int PACKAGE_PERMISSION_CONTROLLER = 6;
public static final int PACKAGE_WELLBEING = 7;
public static final int PACKAGE_DOCUMENTER = 8;
+ public static final int PACKAGE_CONFIGURATOR = 9;
@IntDef(value = {
PACKAGE_SYSTEM,
PACKAGE_SETUP_WIZARD,
@@ -65,6 +66,7 @@
PACKAGE_PERMISSION_CONTROLLER,
PACKAGE_WELLBEING,
PACKAGE_DOCUMENTER,
+ PACKAGE_CONFIGURATOR,
})
@Retention(RetentionPolicy.SOURCE)
public @interface KnownPackage {}
@@ -137,6 +139,12 @@
public abstract void setLocationPackagesProvider(PackagesProvider provider);
/**
+ * Set the location extra packages provider.
+ * @param provider The packages provider.
+ */
+ public abstract void setLocationExtraPackagesProvider(PackagesProvider provider);
+
+ /**
* Sets the voice interaction packages provider.
* @param provider The packages provider.
*/
@@ -814,4 +822,9 @@
* PACKAGE_ROLLBACK_AGENT permission.
*/
public abstract void setEnableRollbackCode(int token, int enableRollbackCode);
+
+ /**
+ * Ask the package manager to compile layouts in the given package.
+ */
+ public abstract boolean compileLayouts(String packageName);
}
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 0fc50c6..a185c8a 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -689,6 +689,7 @@
pi.restrictedAccountType = p.mRestrictedAccountType;
pi.requiredAccountType = p.mRequiredAccountType;
pi.overlayTarget = p.mOverlayTarget;
+ pi.overlayTargetName = p.mOverlayTargetName;
pi.overlayCategory = p.mOverlayCategory;
pi.overlayPriority = p.mOverlayPriority;
pi.mOverlayIsStatic = p.mOverlayIsStatic;
@@ -2122,6 +2123,8 @@
com.android.internal.R.styleable.AndroidManifestResourceOverlay);
pkg.mOverlayTarget = sa.getString(
com.android.internal.R.styleable.AndroidManifestResourceOverlay_targetPackage);
+ pkg.mOverlayTargetName = sa.getString(
+ com.android.internal.R.styleable.AndroidManifestResourceOverlay_targetName);
pkg.mOverlayCategory = sa.getString(
com.android.internal.R.styleable.AndroidManifestResourceOverlay_category);
pkg.mOverlayPriority = sa.getInt(
@@ -2656,6 +2659,23 @@
}
/**
+ * Matches a given {@code targetCode} against a set of release codeNames. Target codes can
+ * either be of the form {@code [codename]}" (e.g {@code "Q"}) or of the form
+ * {@code [codename].[fingerprint]} (e.g {@code "Q.cafebc561"}).
+ */
+ private static boolean matchTargetCode(@NonNull String[] codeNames,
+ @NonNull String targetCode) {
+ final String targetCodeName;
+ final int targetCodeIdx = targetCode.indexOf('.');
+ if (targetCodeIdx == -1) {
+ targetCodeName = targetCode;
+ } else {
+ targetCodeName = targetCode.substring(0, targetCodeIdx);
+ }
+ return ArrayUtils.contains(codeNames, targetCodeName);
+ }
+
+ /**
* Computes the targetSdkVersion to use at runtime. If the package is not
* compatible with this platform, populates {@code outError[0]} with an
* error message.
@@ -2698,7 +2718,7 @@
// If it's a pre-release SDK and the codename matches this platform, it
// definitely targets this SDK.
- if (ArrayUtils.contains(platformSdkCodenames, targetCode) || forceCurrentDev) {
+ if (matchTargetCode(platformSdkCodenames, targetCode) || forceCurrentDev) {
return Build.VERSION_CODES.CUR_DEVELOPMENT;
}
@@ -2831,7 +2851,7 @@
// If it's a pre-release SDK and the codename matches this platform, we
// definitely meet the minimum SDK requirement.
- if (ArrayUtils.contains(platformSdkCodenames, minCode)) {
+ if (matchTargetCode(platformSdkCodenames, minCode)) {
return Build.VERSION_CODES.CUR_DEVELOPMENT;
}
@@ -3760,9 +3780,11 @@
ai.flags |= ApplicationInfo.FLAG_MULTIARCH;
}
+ final boolean extractNativeLibsDefault =
+ owner.applicationInfo.targetSdkVersion < Build.VERSION_CODES.Q;
if (sa.getBoolean(
com.android.internal.R.styleable.AndroidManifestApplication_extractNativeLibs,
- true)) {
+ extractNativeLibsDefault)) {
ai.flags |= ApplicationInfo.FLAG_EXTRACT_NATIVE_LIBS;
}
@@ -6711,6 +6733,7 @@
public String mRequiredAccountType;
public String mOverlayTarget;
+ public String mOverlayTargetName;
public String mOverlayCategory;
public int mOverlayPriority;
public boolean mOverlayIsStatic;
@@ -7234,6 +7257,7 @@
mRestrictedAccountType = dest.readString();
mRequiredAccountType = dest.readString();
mOverlayTarget = dest.readString();
+ mOverlayTargetName = dest.readString();
mOverlayCategory = dest.readString();
mOverlayPriority = dest.readInt();
mOverlayIsStatic = (dest.readInt() == 1);
@@ -7361,6 +7385,7 @@
dest.writeString(mRestrictedAccountType);
dest.writeString(mRequiredAccountType);
dest.writeString(mOverlayTarget);
+ dest.writeString(mOverlayTargetName);
dest.writeString(mOverlayCategory);
dest.writeInt(mOverlayPriority);
dest.writeInt(mOverlayIsStatic ? 1 : 0);
@@ -8465,4 +8490,42 @@
this.error = error;
}
}
+
+ public static PackageInfo generatePackageInfoFromApex(File apexFile, boolean collectCerts)
+ throws PackageParserException {
+ PackageInfo pi = new PackageInfo();
+ // TODO(b/123052859): We should avoid these repeated calls to parseApkLite each time
+ // we want to generate information for APEX modules.
+ PackageParser.ApkLite apk = PackageParser.parseApkLite(apexFile,
+ collectCerts ? PackageParser.PARSE_COLLECT_CERTIFICATES : 0);
+
+ pi.packageName = apk.packageName;
+ pi.setLongVersionCode(apk.getLongVersionCode());
+
+ if (collectCerts) {
+ if (apk.signingDetails.hasPastSigningCertificates()) {
+ // Package has included signing certificate rotation information. Return
+ // the oldest cert so that programmatic checks keep working even if unaware
+ // of key rotation.
+ pi.signatures = new Signature[1];
+ pi.signatures[0] = apk.signingDetails.pastSigningCertificates[0];
+ } else if (apk.signingDetails.hasSignatures()) {
+ // otherwise keep old behavior
+ int numberOfSigs = apk.signingDetails.signatures.length;
+ pi.signatures = new Signature[numberOfSigs];
+ System.arraycopy(apk.signingDetails.signatures, 0, pi.signatures, 0,
+ numberOfSigs);
+ }
+
+ if (apk.signingDetails != SigningDetails.UNKNOWN) {
+ // only return a valid SigningInfo if there is signing information to report
+ pi.signingInfo = new SigningInfo(apk.signingDetails);
+ } else {
+ pi.signingInfo = null;
+ }
+ }
+
+ pi.isApex = true;
+ return pi;
+ }
}
diff --git a/core/java/android/content/pm/PermissionGroupInfo.java b/core/java/android/content/pm/PermissionGroupInfo.java
index 8cf66d8..f21612a 100644
--- a/core/java/android/content/pm/PermissionGroupInfo.java
+++ b/core/java/android/content/pm/PermissionGroupInfo.java
@@ -49,7 +49,7 @@
* only access while in the foreground.
*
* From the "requestDetail" attribute or, if not set, {@link
- * android.content.res.ResourceId#ID_NULL}.
+ * android.content.res.Resources#ID_NULL}.
*
* @hide
*/
@@ -61,7 +61,7 @@
* access. Also used when requesting both foreground and background access.
*
* From the "backgroundRequest" attribute or, if not set, {@link
- * android.content.res.ResourceId#ID_NULL}.
+ * android.content.res.Resources#ID_NULL}.
*
* @hide
*/
@@ -73,7 +73,7 @@
* background access.
*
* From the "backgroundRequestDetail" attribute or, if not set, {@link
- * android.content.res.ResourceId#ID_NULL}.
+ * android.content.res.Resources#ID_NULL}.
*
* @hide
*/
diff --git a/core/java/android/content/pm/PermissionInfo.java b/core/java/android/content/pm/PermissionInfo.java
index bb8c92d..5d2cf0a 100644
--- a/core/java/android/content/pm/PermissionInfo.java
+++ b/core/java/android/content/pm/PermissionInfo.java
@@ -158,6 +158,7 @@
* @hide
*/
@SystemApi
+ @TestApi
public static final int PROTECTION_FLAG_OEM = 0x4000;
/**
@@ -202,6 +203,16 @@
@TestApi
public static final int PROTECTION_FLAG_DOCUMENTER = 0x40000;
+ /**
+ * Additional flag for {@link #protectionLevel}, corresponding to the
+ * {@code configurator} value of {@link android.R.attr#protectionLevel}.
+ *
+ * @hide
+ */
+ @SystemApi
+ @TestApi
+ public static final int PROTECTION_FLAG_CONFIGURATOR = 0x80000;
+
/** @hide */
@IntDef(flag = true, prefix = { "PROTECTION_FLAG_" }, value = {
@@ -221,6 +232,7 @@
PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER,
PROTECTION_FLAG_WELLBEING,
PROTECTION_FLAG_DOCUMENTER,
+ PROTECTION_FLAG_CONFIGURATOR,
})
@Retention(RetentionPolicy.SOURCE)
public @interface ProtectionFlags {}
@@ -416,6 +428,9 @@
if ((level & PermissionInfo.PROTECTION_FLAG_DOCUMENTER) != 0) {
protLevel += "|documenter";
}
+ if ((level & PROTECTION_FLAG_CONFIGURATOR) != 0) {
+ protLevel += "|configurator";
+ }
return protLevel;
}
diff --git a/core/java/android/content/pm/ResolveInfo.java b/core/java/android/content/pm/ResolveInfo.java
index 701c5db..894de94 100644
--- a/core/java/android/content/pm/ResolveInfo.java
+++ b/core/java/android/content/pm/ResolveInfo.java
@@ -16,6 +16,7 @@
package android.content.pm;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.IntentFilter;
@@ -175,9 +176,12 @@
public boolean system;
/**
- * @hide Does the associated IntentFilter comes from a Browser ?
+ * Will be set to {@code true} if the {@link IntentFilter} responsible for intent
+ * resolution is classified as a "browser".
+ *
+ * @hide
*/
- @UnsupportedAppUsage
+ @SystemApi
public boolean handleAllWebDataURI;
/** {@hide} */
diff --git a/core/java/android/content/pm/ShortcutInfo.java b/core/java/android/content/pm/ShortcutInfo.java
index ec2e2fd..fe68b8a 100644
--- a/core/java/android/content/pm/ShortcutInfo.java
+++ b/core/java/android/content/pm/ShortcutInfo.java
@@ -21,6 +21,7 @@
import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.annotation.UserIdInt;
+import android.app.Person;
import android.app.TaskStackBuilder;
import android.content.ComponentName;
import android.content.Context;
@@ -111,6 +112,9 @@
public static final int FLAG_SHADOW = 1 << 12;
/** @hide */
+ public static final int FLAG_LONG_LIVED = 1 << 13;
+
+ /** @hide */
@IntDef(flag = true, prefix = { "FLAG_" }, value = {
FLAG_DYNAMIC,
FLAG_PINNED,
@@ -124,6 +128,8 @@
FLAG_ADAPTIVE_BITMAP,
FLAG_RETURNED_BY_SERVICE,
FLAG_ICON_FILE_PENDING_SAVE,
+ FLAG_SHADOW,
+ FLAG_LONG_LIVED,
})
@Retention(RetentionPolicy.SOURCE)
public @interface ShortcutFlags {}
@@ -344,6 +350,9 @@
@Nullable
private PersistableBundle[] mIntentPersistableExtrases;
+ @Nullable
+ private Person[] mPersons;
+
private int mRank;
/**
@@ -399,6 +408,10 @@
mCategories = cloneCategories(b.mCategories);
mIntents = cloneIntents(b.mIntents);
fixUpIntentExtras();
+ mPersons = clonePersons(b.mPersons);
+ if (b.mIsLongLived) {
+ setLongLived();
+ }
mRank = b.mRank;
mExtras = b.mExtras;
updateTimestamp();
@@ -465,6 +478,20 @@
return ret;
}
+ private static Person[] clonePersons(Person[] persons) {
+ if (persons == null) {
+ return null;
+ }
+ final Person[] ret = new Person[persons.length];
+ for (int i = 0; i < ret.length; i++) {
+ if (persons[i] != null) {
+ // Don't need to keep the icon, remove it to save space
+ ret[i] = persons[i].toBuilder().setIcon(null).build();
+ }
+ }
+ return ret;
+ }
+
/**
* Throws if any of the mandatory fields is not set.
*
@@ -511,6 +538,7 @@
mDisabledMessage = source.mDisabledMessage;
mDisabledMessageResId = source.mDisabledMessageResId;
mCategories = cloneCategories(source.mCategories);
+ mPersons = clonePersons(source.mPersons);
if ((cloneFlags & CLONE_REMOVE_INTENT) == 0) {
mIntents = cloneIntents(source.mIntents);
mIntentPersistableExtrases =
@@ -833,6 +861,9 @@
if (source.mCategories != null) {
mCategories = cloneCategories(source.mCategories);
}
+ if (source.mPersons != null) {
+ mPersons = clonePersons(source.mPersons);
+ }
if (source.mIntents != null) {
mIntents = cloneIntents(source.mIntents);
mIntentPersistableExtrases =
@@ -901,6 +932,10 @@
private Intent[] mIntents;
+ private Person[] mPersons;
+
+ private boolean mIsLongLived;
+
private int mRank = RANK_NOT_SET;
private PersistableBundle mExtras;
@@ -1165,6 +1200,53 @@
}
/**
+ * Add a person that is relevant to this shortcut. Alternatively,
+ * {@link #setPersons(Person[])} can be used to add multiple persons to a shortcut.
+ *
+ * <p> This is an optional field, but the addition of person may cause this shortcut to
+ * appear more prominently in the user interface (e.g. ShareSheet).
+ *
+ * <p> A person should usually contain a uri in order to benefit from the ranking boost.
+ * However, even if no uri is provided, it's beneficial to provide people in the shortcut,
+ * such that listeners and voice only devices can announce and handle them properly.
+ *
+ * @see Person
+ * @see #setPersons(Person[])
+ */
+ @NonNull
+ public Builder setPerson(@NonNull Person person) {
+ return setPersons(new Person[]{person});
+ }
+
+ /**
+ * Sets multiple persons instead of a single person.
+ *
+ * @see Person
+ * @see #setPerson(Person)
+ */
+ @NonNull
+ public Builder setPersons(@NonNull Person[] persons) {
+ Preconditions.checkNotNull(persons, "persons cannot be null");
+ Preconditions.checkNotNull(persons.length, "persons cannot be empty");
+ for (Person person : persons) {
+ Preconditions.checkNotNull(person, "persons cannot contain null");
+ }
+ mPersons = clonePersons(persons);
+ return this;
+ }
+
+ /**
+ * Sets if a shortcut would be valid even if it has been unpublished/invisible by the app
+ * (as a dynamic or pinned shortcut). If it is long lived, it can be cached by various
+ * system services even after it has been unpublished as a dynamic shortcut.
+ */
+ @NonNull
+ public Builder setLongLived() {
+ mIsLongLived = true;
+ return this;
+ }
+
+ /**
* "Rank" of a shortcut, which is a non-negative value that's used by the launcher app
* to sort shortcuts.
*
@@ -1395,6 +1477,16 @@
}
/**
+ * Return the Persons set with {@link Builder#setPersons(Person[])}.
+ *
+ * @hide
+ */
+ @Nullable
+ public Person[] getPersons() {
+ return clonePersons(mPersons);
+ }
+
+ /**
* The extras in the intents. We convert extras into {@link PersistableBundle} so we can
* persist them.
* @hide
@@ -1525,6 +1617,16 @@
addFlags(FLAG_RETURNED_BY_SERVICE);
}
+ /** @hide */
+ public boolean isLongLived() {
+ return hasFlags(FLAG_LONG_LIVED);
+ }
+
+ /** @hide */
+ public void setLongLived() {
+ addFlags(FLAG_LONG_LIVED);
+ }
+
/** Return whether a shortcut is dynamic. */
public boolean isDynamic() {
return hasFlags(FLAG_DYNAMIC);
@@ -1893,6 +1995,8 @@
mCategories.add(source.readString().intern());
}
}
+
+ mPersons = source.readParcelableArray(cl, Person.class);
}
@Override
@@ -1940,6 +2044,8 @@
} else {
dest.writeInt(0);
}
+
+ dest.writeParcelableArray(mPersons, flags);
}
public static final Creator<ShortcutInfo> CREATOR =
@@ -2040,6 +2146,9 @@
if (isReturnedByServer()) {
sb.append("Rets");
}
+ if (isLongLived()) {
+ sb.append("Liv");
+ }
sb.append("]");
addIndentOrComma(sb, indent);
@@ -2094,6 +2203,11 @@
addIndentOrComma(sb, indent);
+ sb.append("persons=");
+ sb.append(mPersons);
+
+ addIndentOrComma(sb, indent);
+
sb.append("icon=");
sb.append(mIcon);
diff --git a/core/java/android/content/pm/ShortcutManager.java b/core/java/android/content/pm/ShortcutManager.java
index 2d59003..4f7acd9 100644
--- a/core/java/android/content/pm/ShortcutManager.java
+++ b/core/java/android/content/pm/ShortcutManager.java
@@ -17,17 +17,22 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.annotation.UserIdInt;
import android.app.usage.UsageStatsManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.IntentSender;
import android.graphics.drawable.AdaptiveIconDrawable;
import android.os.Build;
import android.os.Build.VERSION_CODES;
+import android.os.Parcel;
+import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -549,4 +554,85 @@
protected int injectMyUserId() {
return mContext.getUserId();
}
+
+ /**
+ * Used by framework's ShareSheet (ChooserActivity.java) to retrieve all of the direct share
+ * targets that match the given IntentFilter.
+ *
+ * @param filter IntentFilter that will be used to retrieve the matching {@link ShortcutInfo}s.
+ * @return List of {@link ShareShortcutInfo}s that match the given IntentFilter.
+ * @hide
+ */
+ @NonNull
+ @SystemApi
+ public List<ShareShortcutInfo> getShareTargets(@NonNull IntentFilter filter) {
+ try {
+ return mService.getShareTargets(mContext.getPackageName(), filter,
+ injectMyUserId()).getList();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Represents the result of a query return by {@link #getShareTargets(IntentFilter)}.
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final class ShareShortcutInfo implements Parcelable {
+ private final ShortcutInfo mShortcutInfo;
+ private final ComponentName mTargetComponent;
+
+ /**
+ * @hide
+ */
+ public ShareShortcutInfo(@NonNull ShortcutInfo shortcutInfo,
+ @NonNull ComponentName targetComponent) {
+ if (shortcutInfo == null) {
+ throw new NullPointerException("shortcut info is null");
+ }
+ if (targetComponent == null) {
+ throw new NullPointerException("target component is null");
+ }
+
+ mShortcutInfo = shortcutInfo;
+ mTargetComponent = targetComponent;
+ }
+
+ private ShareShortcutInfo(Parcel in) {
+ mShortcutInfo = in.readParcelable(ShortcutInfo.class.getClassLoader());
+ mTargetComponent = in.readParcelable(ComponentName.class.getClassLoader());
+ }
+
+ public ShortcutInfo getShortcutInfo() {
+ return mShortcutInfo;
+ }
+
+ public ComponentName getTargetComponent() {
+ return mTargetComponent;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeParcelable(mShortcutInfo, flags);
+ dest.writeParcelable(mTargetComponent, flags);
+ }
+
+ public static final Parcelable.Creator<ShareShortcutInfo> CREATOR =
+ new Parcelable.Creator<ShareShortcutInfo>() {
+ public ShareShortcutInfo createFromParcel(Parcel in) {
+ return new ShareShortcutInfo(in);
+ }
+
+ public ShareShortcutInfo[] newArray(int size) {
+ return new ShareShortcutInfo[size];
+ }
+ };
+ }
}
diff --git a/core/java/android/content/pm/SuspendDialogInfo.java b/core/java/android/content/pm/SuspendDialogInfo.java
index c798c99..53b52f5 100644
--- a/core/java/android/content/pm/SuspendDialogInfo.java
+++ b/core/java/android/content/pm/SuspendDialogInfo.java
@@ -16,7 +16,7 @@
package android.content.pm;
-import static android.content.res.ResourceId.ID_NULL;
+import static android.content.res.Resources.ID_NULL;
import android.annotation.DrawableRes;
import android.annotation.NonNull;
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index f1a4db2..9e0a9ba 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -732,6 +732,38 @@
}
}
+ /**
+ * Enable resource resolution logging to track the steps taken to resolve the last resource
+ * entry retrieved. Stores the configuration and package names for each step.
+ *
+ * Default disabled.
+ *
+ * @param enabled Boolean indicating whether to enable or disable logging.
+ *
+ * @hide
+ */
+ public void setResourceResolutionLoggingEnabled(boolean enabled) {
+ synchronized (this) {
+ ensureValidLocked();
+ nativeSetResourceResolutionLoggingEnabled(mObject, enabled);
+ }
+ }
+
+ /**
+ * Retrieve the last resource resolution path logged.
+ *
+ * @return Formatted string containing last resource ID/name and steps taken to resolve final
+ * entry, including configuration and package names.
+ *
+ * @hide
+ */
+ public @Nullable String getLastResourceResolution() {
+ synchronized (this) {
+ ensureValidLocked();
+ return nativeGetLastResourceResolution(mObject);
+ }
+ }
+
CharSequence getPooledStringForCookie(int cookie, int id) {
// Cookies map to ApkAssets starting at 1.
return getApkAssets()[cookie - 1].getStringFromPool(id);
@@ -1383,6 +1415,8 @@
private static native @Nullable String nativeGetResourceEntryName(long ptr, @AnyRes int resid);
private static native @Nullable String[] nativeGetLocales(long ptr, boolean excludeSystem);
private static native @Nullable Configuration[] nativeGetSizeConfigurations(long ptr);
+ private static native void nativeSetResourceResolutionLoggingEnabled(long ptr, boolean enabled);
+ private static native @Nullable String nativeGetLastResourceResolution(long ptr);
// Style attribute retrieval native methods.
private static native void nativeApplyStyle(long ptr, long themePtr, @AttrRes int defStyleAttr,
diff --git a/core/java/android/content/res/ResourceId.java b/core/java/android/content/res/ResourceId.java
index adb9cf1..3c7b5fc 100644
--- a/core/java/android/content/res/ResourceId.java
+++ b/core/java/android/content/res/ResourceId.java
@@ -22,12 +22,6 @@
* @hide
*/
public final class ResourceId {
-
- /**
- * The {@code null} resource ID.
- */
- public static final @AnyRes int ID_NULL = 0;
-
/**
* Checks whether the integer {@code id} is a valid resource ID, as generated by AAPT.
* <p>Note that a negative integer is not necessarily an invalid resource ID, and custom
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index 365ceac..baf64ad 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -98,6 +98,12 @@
* href="{@docRoot}guide/topics/resources/index.html">Application Resources</a>.</p>
*/
public class Resources {
+ /**
+ * The {@code null} resource ID. This denotes an invalid resource ID that is returned by the
+ * system when a resource is not found or the value is set to {@code @null} in XML.
+ */
+ public static final @AnyRes int ID_NULL = 0;
+
static final String TAG = "Resources";
private static final Object sSync = new Object();
@@ -168,7 +174,7 @@
/** @hide */
public static int selectSystemTheme(int curTheme, int targetSdkVersion, int orig, int holo,
int dark, int deviceDefault) {
- if (curTheme != ResourceId.ID_NULL) {
+ if (curTheme != ID_NULL) {
return curTheme;
}
if (targetSdkVersion < Build.VERSION_CODES.HONEYCOMB) {
@@ -2010,22 +2016,36 @@
public String getResourceTypeName(@AnyRes int resid) throws NotFoundException {
return mResourcesImpl.getResourceTypeName(resid);
}
-
+
/**
* Return the entry name for a given resource identifier.
- *
+ *
* @param resid The resource identifier whose entry name is to be
* retrieved.
- *
+ *
* @return A string holding the entry name of the resource.
- *
+ *
* @throws NotFoundException Throws NotFoundException if the given ID does not exist.
- *
+ *
* @see #getResourceName
*/
public String getResourceEntryName(@AnyRes int resid) throws NotFoundException {
return mResourcesImpl.getResourceEntryName(resid);
}
+
+ /**
+ * Return formatted log of the last retrieved resource's resolution path.
+ *
+ * @return A string holding a formatted log of the steps taken to resolve the last resource.
+ *
+ * @throws NotFoundException Throws NotFoundException if there hasn't been a resource
+ * resolved yet.
+ *
+ * @hide
+ */
+ public String getLastResourceResolution() throws NotFoundException {
+ return mResourcesImpl.getLastResourceResolution();
+ }
/**
* Parse a series of {@link android.R.styleable#Extra <extra>} tags from
diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java
index 2ad4f62..d8564d5 100644
--- a/core/java/android/content/res/ResourcesImpl.java
+++ b/core/java/android/content/res/ResourcesImpl.java
@@ -299,6 +299,13 @@
}
@NonNull
+ String getLastResourceResolution() throws NotFoundException {
+ String str = mAssets.getLastResourceResolution();
+ if (str != null) return str;
+ throw new NotFoundException("Associated AssetManager hasn't resolved a resource");
+ }
+
+ @NonNull
CharSequence getQuantityText(@PluralsRes int id, int quantity) throws NotFoundException {
PluralRules rule = getPluralRule();
CharSequence res = mAssets.getResourceBagText(id,
@@ -848,13 +855,9 @@
try {
if (file.endsWith(".xml")) {
if (file.startsWith("res/color/")) {
- ColorStateList csl = loadColorStateList(wrapper, value, id, null);
- dr = (csl != null ? new ColorStateListDrawable(csl) : null);
+ dr = loadColorOrXmlDrawable(wrapper, value, id, density, file);
} else {
- final XmlResourceParser rp = loadXmlResourceParser(
- file, id, value.assetCookie, "drawable");
- dr = Drawable.createFromXmlForDensity(wrapper, rp, density, null);
- rp.close();
+ dr = loadXmlDrawable(wrapper, value, id, density, file);
}
} else {
final InputStream is = mAssets.openNonAsset(
@@ -908,6 +911,33 @@
return dr;
}
+ private Drawable loadColorOrXmlDrawable(@NonNull Resources wrapper, @NonNull TypedValue value,
+ int id, int density, String file) {
+ try {
+ ColorStateList csl = loadColorStateList(wrapper, value, id, null);
+ return new ColorStateListDrawable(csl);
+ } catch (NotFoundException originalException) {
+ // If we fail to load as color, try as normal XML drawable
+ try {
+ return loadXmlDrawable(wrapper, value, id, density, file);
+ } catch (Exception ignored) {
+ // If fallback also fails, throw the original exception
+ throw originalException;
+ }
+ }
+ }
+
+ private Drawable loadXmlDrawable(@NonNull Resources wrapper, @NonNull TypedValue value,
+ int id, int density, String file)
+ throws IOException, XmlPullParserException {
+ try (
+ XmlResourceParser rp =
+ loadXmlResourceParser(file, id, value.assetCookie, "drawable")
+ ) {
+ return Drawable.createFromXmlForDensity(wrapper, rp, density, null);
+ }
+ }
+
/**
* Loads a font from XML or resources stream.
*/
diff --git a/core/java/android/content/res/TypedArray.java b/core/java/android/content/res/TypedArray.java
index 508626b..d53834c 100644
--- a/core/java/android/content/res/TypedArray.java
+++ b/core/java/android/content/res/TypedArray.java
@@ -19,6 +19,7 @@
import android.annotation.AnyRes;
import android.annotation.ColorInt;
import android.annotation.Nullable;
+import android.annotation.StyleRes;
import android.annotation.StyleableRes;
import android.annotation.UnsupportedAppUsage;
import android.content.pm.ActivityInfo;
@@ -63,13 +64,15 @@
}
// STYLE_ prefixed constants are offsets within the typed data array.
- static final int STYLE_NUM_ENTRIES = 6;
+ // Keep this in sync with libs/androidfw/include/androidfw/AttributeResolution.h
+ static final int STYLE_NUM_ENTRIES = 7;
static final int STYLE_TYPE = 0;
static final int STYLE_DATA = 1;
static final int STYLE_ASSET_COOKIE = 2;
static final int STYLE_RESOURCE_ID = 3;
static final int STYLE_CHANGING_CONFIGURATIONS = 4;
static final int STYLE_DENSITY = 5;
+ static final int SYTLE_SOURCE_STYLE_RESOURCE_ID = 6;
@UnsupportedAppUsage
private final Resources mResources;
@@ -1098,6 +1101,31 @@
}
/**
+ * Returns the resource ID of the style against which the specified attribute was resolved,
+ * otherwise returns defValue.
+ *
+ * @param index Index of attribute whose source style to retrieve.
+ * @param defValue Value to return if the attribute is not defined or
+ * not a resource.
+ *
+ * @return Attribute source style resource ID or defValue if it was not resolved in any style.
+ * @throws RuntimeException if the TypedArray has already been recycled.
+ */
+ @StyleRes
+ public int getSourceStyleResourceId(@StyleableRes int index, @StyleRes int defValue) {
+ if (mRecycled) {
+ throw new RuntimeException("Cannot make calls to a recycled instance!");
+ }
+
+ index *= STYLE_NUM_ENTRIES;
+ final int resid = mData[index + SYTLE_SOURCE_STYLE_RESOURCE_ID];
+ if (resid != 0) {
+ return resid;
+ }
+ return defValue;
+ }
+
+ /**
* Determines whether there is an attribute at <var>index</var>.
* <p>
* <strong>Note:</strong> If the attribute was set to {@code @empty} or
@@ -1309,6 +1337,7 @@
data[index + STYLE_CHANGING_CONFIGURATIONS]);
outValue.density = data[index + STYLE_DENSITY];
outValue.string = (type == TypedValue.TYPE_STRING) ? loadStringValueAt(index) : null;
+ outValue.sourceStyleResourceId = data[index + SYTLE_SOURCE_STYLE_RESOURCE_ID];
return true;
}
diff --git a/core/java/android/hardware/biometrics/BiometricManager.java b/core/java/android/hardware/biometrics/BiometricManager.java
index eb3414d2..8aac1bf 100644
--- a/core/java/android/hardware/biometrics/BiometricManager.java
+++ b/core/java/android/hardware/biometrics/BiometricManager.java
@@ -42,13 +42,13 @@
/**
* The hardware is unavailable. Try again later.
*/
- public static final int BIOMETRIC_ERROR_UNAVAILABLE =
+ public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE =
BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE;
/**
* The user does not have any biometrics enrolled.
*/
- public static final int BIOMETRIC_ERROR_NO_BIOMETRICS =
+ public static final int BIOMETRIC_ERROR_NONE_ENROLLED =
BiometricConstants.BIOMETRIC_ERROR_NO_BIOMETRICS;
/**
@@ -58,8 +58,8 @@
BiometricConstants.BIOMETRIC_ERROR_HW_NOT_PRESENT;
@IntDef({BIOMETRIC_SUCCESS,
- BIOMETRIC_ERROR_UNAVAILABLE,
- BIOMETRIC_ERROR_NO_BIOMETRICS,
+ BIOMETRIC_ERROR_HW_UNAVAILABLE,
+ BIOMETRIC_ERROR_NONE_ENROLLED,
BIOMETRIC_ERROR_NO_HARDWARE})
@interface BiometricError {}
@@ -95,8 +95,8 @@
* Determine if biometrics can be used. In other words, determine if {@link BiometricPrompt}
* can be expected to be shown (hardware available, templates enrolled, user-enabled).
*
- * @return Returns {@link #BIOMETRIC_ERROR_NO_BIOMETRICS} if the user does not have any
- * enrolled, or {@link #BIOMETRIC_ERROR_UNAVAILABLE} if none are currently
+ * @return Returns {@link #BIOMETRIC_ERROR_NONE_ENROLLED} if the user does not have any
+ * enrolled, or {@link #BIOMETRIC_ERROR_HW_UNAVAILABLE} if none are currently
* supported/enabled. Returns {@link #BIOMETRIC_SUCCESS} if a biometric can currently be
* used (enrolled and available).
*/
@@ -113,7 +113,7 @@
return BIOMETRIC_ERROR_NO_HARDWARE;
} else {
Slog.w(TAG, "hasEnrolledBiometrics(): Service not connected");
- return BIOMETRIC_ERROR_UNAVAILABLE;
+ return BIOMETRIC_ERROR_HW_UNAVAILABLE;
}
}
}
diff --git a/core/java/android/hardware/biometrics/BiometricPrompt.java b/core/java/android/hardware/biometrics/BiometricPrompt.java
index f652f85..c69b68e4 100644
--- a/core/java/android/hardware/biometrics/BiometricPrompt.java
+++ b/core/java/android/hardware/biometrics/BiometricPrompt.java
@@ -235,7 +235,6 @@
* requiring confirmation.
*
* @param requireConfirmation
- * @hide
*/
public Builder setRequireConfirmation(boolean requireConfirmation) {
mBundle.putBoolean(KEY_REQUIRE_CONFIRMATION, requireConfirmation);
diff --git a/core/java/android/hardware/display/BrightnessConfiguration.java b/core/java/android/hardware/display/BrightnessConfiguration.java
index be054297..8c74ddc 100644
--- a/core/java/android/hardware/display/BrightnessConfiguration.java
+++ b/core/java/android/hardware/display/BrightnessConfiguration.java
@@ -91,9 +91,7 @@
*
* @return The matching brightness correction, or null.
*
- * @hide
*/
- @SystemApi
@Nullable
public BrightnessCorrection getCorrectionByPackageName(String packageName) {
return mCorrectionsByPackageName.get(packageName);
@@ -106,10 +104,7 @@
* The app category.
*
* @return The matching brightness correction, or null.
- *
- * @hide
*/
- @SystemApi
@Nullable
public BrightnessCorrection getCorrectionByCategory(int category) {
return mCorrectionsByCategory.get(category);
@@ -416,9 +411,7 @@
*
* @return The maximum number of corrections by package name allowed.
*
- * @hide
*/
- @SystemApi
public int getMaxCorrectionsByPackageName() {
return MAX_CORRECTIONS_BY_PACKAGE_NAME;
}
@@ -428,9 +421,7 @@
*
* @return The maximum number of corrections by category allowed.
*
- * @hide
*/
- @SystemApi
public int getMaxCorrectionsByCategory() {
return MAX_CORRECTIONS_BY_CATEGORY;
}
@@ -451,9 +442,7 @@
* Maximum number of corrections by package name exceeded (see
* {@link #getMaxCorrectionsByPackageName}).
*
- * @hide
*/
- @SystemApi
public Builder addCorrectionByPackageName(String packageName,
BrightnessCorrection correction) {
if (mCorrectionsByPackageName.size() >= getMaxCorrectionsByPackageName()) {
@@ -479,9 +468,7 @@
* Maximum number of corrections by category exceeded (see
* {@link #getMaxCorrectionsByCategory}).
*
- * @hide
*/
- @SystemApi
public Builder addCorrectionByCategory(@ApplicationInfo.Category int category,
BrightnessCorrection correction) {
if (mCorrectionsByCategory.size() >= getMaxCorrectionsByCategory()) {
@@ -504,8 +491,6 @@
/**
* Builds the {@link BrightnessConfiguration}.
- *
- * A brightness curve <b>must</b> be set before calling this.
*/
public BrightnessConfiguration build() {
if (mCurveLux == null || mCurveNits == null) {
diff --git a/core/java/android/hardware/display/BrightnessCorrection.java b/core/java/android/hardware/display/BrightnessCorrection.java
index c4e0e3b..6a073ff 100644
--- a/core/java/android/hardware/display/BrightnessCorrection.java
+++ b/core/java/android/hardware/display/BrightnessCorrection.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.MathUtils;
@@ -41,6 +42,7 @@
* @hide
*/
@SystemApi
+@TestApi
public final class BrightnessCorrection implements Parcelable {
private static final int SCALE_AND_TRANSLATE_LOG = 1;
@@ -98,6 +100,24 @@
return mImplementation.toString();
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == this) {
+ return true;
+ }
+ if (!(o instanceof BrightnessCorrection)) {
+ return false;
+ }
+ BrightnessCorrection other = (BrightnessCorrection) o;
+ return other.mImplementation.equals(mImplementation);
+ }
+
+ @Override
+ public int hashCode() {
+ return mImplementation.hashCode();
+ }
+
public static final Creator<BrightnessCorrection> CREATOR =
new Creator<BrightnessCorrection>() {
public BrightnessCorrection createFromParcel(Parcel in) {
@@ -215,6 +235,26 @@
}
@Override
+ public boolean equals(Object o) {
+ if (o == this) {
+ return true;
+ }
+ if (!(o instanceof ScaleAndTranslateLog)) {
+ return false;
+ }
+ ScaleAndTranslateLog other = (ScaleAndTranslateLog) o;
+ return other.mScale == mScale && other.mTranslate == mTranslate;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = 1;
+ result = result * 31 + Float.hashCode(mScale);
+ result = result * 31 + Float.hashCode(mTranslate);
+ return result;
+ }
+
+ @Override
public void writeToParcel(Parcel dest) {
dest.writeInt(SCALE_AND_TRANSLATE_LOG);
dest.writeFloat(mScale);
diff --git a/core/java/android/hardware/display/ColorDisplayManager.java b/core/java/android/hardware/display/ColorDisplayManager.java
index 0cf2d18..70a9f08 100644
--- a/core/java/android/hardware/display/ColorDisplayManager.java
+++ b/core/java/android/hardware/display/ColorDisplayManager.java
@@ -17,6 +17,8 @@
package android.hardware.display;
import android.Manifest;
+import android.annotation.IntRange;
+import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
@@ -61,16 +63,30 @@
*
* @param saturationLevel 0-100 (inclusive), where 100 is full saturation
* @return whether the saturation level change was applied successfully
- *
* @hide
*/
@SystemApi
@RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
- public boolean setSaturationLevel(int saturationLevel) {
+ public boolean setSaturationLevel(@IntRange(from = 0, to = 100) int saturationLevel) {
return mManager.setSaturationLevel(saturationLevel);
}
/**
+ * Set the level of color saturation to apply to a specific app.
+ *
+ * @param packageName the package name of the app whose windows should be desaturated
+ * @param saturationLevel 0-100 (inclusive), where 100 is full saturation
+ * @return whether the saturation level change was applied successfully
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
+ public boolean setAppSaturationLevel(@NonNull String packageName,
+ @IntRange(from = 0, to = 100) int saturationLevel) {
+ return mManager.setAppSaturationLevel(packageName, saturationLevel);
+ }
+
+ /**
* Returns {@code true} if Night Display is supported by the device.
*
* @hide
@@ -88,6 +104,16 @@
return context.getResources().getBoolean(R.bool.config_displayWhiteBalanceAvailable);
}
+ /**
+ * Check if the color transforms are color accelerated. Some transforms are experimental only
+ * on non-accelerated platforms due to the performance implications.
+ *
+ * @hide
+ */
+ public static boolean isColorTransformAccelerated(Context context) {
+ return context.getResources().getBoolean(R.bool.config_setColorTransformAccelerated);
+ }
+
private static class ColorDisplayManagerInternal {
private static ColorDisplayManagerInternal sInstance;
@@ -128,5 +154,13 @@
throw e.rethrowFromSystemServer();
}
}
+
+ boolean setAppSaturationLevel(String packageName, int saturationLevel) {
+ try {
+ return mCdm.setAppSaturationLevel(packageName, saturationLevel);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
}
}
diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java
index cda8498..7e45441 100644
--- a/core/java/android/hardware/display/DisplayManagerGlobal.java
+++ b/core/java/android/hardware/display/DisplayManagerGlobal.java
@@ -436,6 +436,7 @@
public void setVirtualDisplaySurface(IVirtualDisplayCallback token, Surface surface) {
try {
mDm.setVirtualDisplaySurface(token, surface);
+ setVirtualDisplayState(token, surface != null);
} catch (RemoteException ex) {
throw ex.rethrowFromSystemServer();
}
@@ -458,6 +459,14 @@
}
}
+ void setVirtualDisplayState(IVirtualDisplayCallback token, boolean isOn) {
+ try {
+ mDm.setVirtualDisplayState(token, isOn);
+ } catch (RemoteException ex) {
+ throw ex.rethrowFromSystemServer();
+ }
+ }
+
/**
* Gets the stable device display size, in pixels.
*/
diff --git a/core/java/android/hardware/display/IColorDisplayManager.aidl b/core/java/android/hardware/display/IColorDisplayManager.aidl
index 81b82c6..644f510 100644
--- a/core/java/android/hardware/display/IColorDisplayManager.aidl
+++ b/core/java/android/hardware/display/IColorDisplayManager.aidl
@@ -21,4 +21,5 @@
boolean isDeviceColorManaged();
boolean setSaturationLevel(int saturationLevel);
+ boolean setAppSaturationLevel(String packageName, int saturationLevel);
}
\ No newline at end of file
diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl
index 2d81cdf..aae8afb 100644
--- a/core/java/android/hardware/display/IDisplayManager.aidl
+++ b/core/java/android/hardware/display/IDisplayManager.aidl
@@ -82,6 +82,9 @@
// No permissions required but must be same Uid as the creator.
void releaseVirtualDisplay(in IVirtualDisplayCallback token);
+ // No permissions required but must be same Uid as the creator.
+ void setVirtualDisplayState(in IVirtualDisplayCallback token, boolean isOn);
+
// Get a stable metric for the device's display size. No permissions required.
Point getStableDisplaySize();
diff --git a/core/java/android/hardware/display/VirtualDisplay.java b/core/java/android/hardware/display/VirtualDisplay.java
index d354666..bf62c95 100644
--- a/core/java/android/hardware/display/VirtualDisplay.java
+++ b/core/java/android/hardware/display/VirtualDisplay.java
@@ -104,6 +104,18 @@
}
}
+ /**
+ * Sets the on/off state for a virtual display.
+ *
+ * @param isOn Whether the display should be on or off.
+ * @hide
+ */
+ public void setDisplayState(boolean isOn) {
+ if (mToken != null) {
+ mGlobal.setVirtualDisplayState(mToken, isOn);
+ }
+ }
+
@Override
public String toString() {
return "VirtualDisplay{display=" + mDisplay + ", token=" + mToken
diff --git a/core/java/android/hardware/hdmi/HdmiAudioSystemClient.java b/core/java/android/hardware/hdmi/HdmiAudioSystemClient.java
index d382eb9..bdd5ab6 100644
--- a/core/java/android/hardware/hdmi/HdmiAudioSystemClient.java
+++ b/core/java/android/hardware/hdmi/HdmiAudioSystemClient.java
@@ -15,10 +15,12 @@
*/
package android.hardware.hdmi;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
+import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting.Visibility;
@@ -56,6 +58,21 @@
mHandler = handler == null ? new Handler(Looper.getMainLooper()) : handler;
}
+ /**
+ * Callback interface used to get the set System Audio Mode result.
+ *
+ * @hide
+ */
+ // TODO(b/110094868): unhide and add @SystemApi for Q
+ public interface SetSystemAudioModeCallback {
+ /**
+ * Called when the input was changed.
+ *
+ * @param result the result of the set System Audio Mode
+ */
+ void onComplete(int result);
+ }
+
/** @hide */
// TODO(b/110094868): unhide and add @SystemApi for Q
@Override
@@ -117,4 +134,34 @@
mPendingReportAudioStatus = true;
}
}
+
+ /**
+ * Set System Audio Mode on/off with audio system device.
+ *
+ * @param state true to set System Audio Mode on. False to set off.
+ * @param callback callback offer the setting result.
+ *
+ * @hide
+ */
+ // TODO(b/110094868): unhide and add @SystemApi for Q
+ public void setSystemAudioMode(boolean state, @NonNull SetSystemAudioModeCallback callback) {
+ // TODO(amyjojo): implement this when needed.
+ }
+
+ /**
+ * When device is switching to an audio only source, this method is called to broadcast
+ * a setSystemAudioMode on message to the HDMI CEC system without querying Active Source or
+ * TV supporting System Audio Control or not. This is to get volume control passthrough
+ * from STB even if TV does not support it.
+ *
+ * @hide
+ */
+ // TODO(b/110094868): unhide and add @SystemApi for Q
+ public void setSystemAudioModeOnForAudioOnlySource() {
+ try {
+ mService.setSystemAudioModeOnForAudioOnlySource();
+ } catch (RemoteException e) {
+ Log.d(TAG, "Failed to set System Audio Mode on for Audio Only source");
+ }
+ }
}
diff --git a/core/java/android/hardware/hdmi/HdmiControlManager.java b/core/java/android/hardware/hdmi/HdmiControlManager.java
index f5d288e..a98b31a 100644
--- a/core/java/android/hardware/hdmi/HdmiControlManager.java
+++ b/core/java/android/hardware/hdmi/HdmiControlManager.java
@@ -33,6 +33,8 @@
import android.util.ArrayMap;
import android.util.Log;
+import java.util.List;
+
/**
* The {@link HdmiControlManager} class is used to send HDMI control messages
* to attached CEC devices.
@@ -53,6 +55,10 @@
@Nullable private final IHdmiControlService mService;
+ private static final int INVALID_PHYSICAL_ADDRESS = 0xFFFF;
+
+ private int mPhysicalAddress = INVALID_PHYSICAL_ADDRESS;
+
/**
* Broadcast Action: Display OSD message.
* <p>Send when the service has a message to display on screen for events
@@ -404,6 +410,72 @@
}
/**
+ * Get a snapshot of the real-time status of the remote devices.
+ *
+ * @return a list of {@link HdmiDeviceInfo} of the devices connected to the current device.
+ *
+ * TODO(b/110094868): unhide for Q
+ * @hide
+ */
+ public List<HdmiDeviceInfo> getConnectedDevicesList() {
+ try {
+ return mService.getDeviceList();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Power off the target device.
+ *
+ * @param deviceInfo HdmiDeviceInfo of the device to be powered off
+ *
+ * TODO(b/110094868): unhide for Q
+ * @hide
+ */
+ public void powerOffRemoteDevice(HdmiDeviceInfo deviceInfo) {
+ try {
+ mService.powerOffRemoteDevice(
+ deviceInfo.getLogicalAddress(), deviceInfo.getDevicePowerStatus());
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Power on the target device.
+ *
+ * @param deviceInfo HdmiDeviceInfo of the device to be powered on
+ *
+ * TODO(b/110094868): unhide for Q
+ * @hide
+ */
+ public void powerOnRemoteDevice(HdmiDeviceInfo deviceInfo) {
+ try {
+ mService.powerOnRemoteDevice(
+ deviceInfo.getLogicalAddress(), deviceInfo.getDevicePowerStatus());
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Ask the target device to be the new Active Source.
+ *
+ * @param deviceInfo HdmiDeviceInfo of the target device
+ *
+ * TODO(b/110094868): unhide for Q
+ * @hide
+ */
+ public void askRemoteDeviceToBecomeActiveSource(HdmiDeviceInfo deviceInfo) {
+ try {
+ mService.askRemoteDeviceToBecomeActiveSource(deviceInfo.getPhysicalAddress());
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Controls standby mode of the system. It will also try to turn on/off the connected devices if
* necessary.
*
@@ -432,6 +504,46 @@
}
/**
+ * Get the physical address of the device.
+ *
+ * @hide
+ */
+ public int getPhysicalAddress() {
+ if (mPhysicalAddress != INVALID_PHYSICAL_ADDRESS) {
+ return mPhysicalAddress;
+ }
+ try {
+ mPhysicalAddress = mService.getPhysicalAddress();
+ return mPhysicalAddress;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Check if the target device is connected to the current device. The
+ * API also returns true if the current device is the target.
+ *
+ * @param targetDevice {@link HdmiDeviceInfo} of the target device.
+ * @return true if {@code device} is directly or indirectly connected to the
+ *
+ * TODO(b/110094868): unhide for Q
+ * @hide
+ */
+ public boolean isTargetDeviceConnected(HdmiDeviceInfo targetDevice) {
+ mPhysicalAddress = getPhysicalAddress();
+ if (mPhysicalAddress == INVALID_PHYSICAL_ADDRESS) {
+ return false;
+ }
+ int targetPhysicalAddress = targetDevice.getPhysicalAddress();
+ if (targetPhysicalAddress == INVALID_PHYSICAL_ADDRESS) {
+ return false;
+ }
+ return HdmiUtils.getLocalPortFromPhysicalAddress(targetPhysicalAddress, mPhysicalAddress)
+ != HdmiUtils.TARGET_NOT_UNDER_LOCAL_DEVICE;
+ }
+
+ /**
* Listener used to get hotplug event from HDMI port.
*/
public interface HotplugEventListener {
diff --git a/core/java/android/hardware/hdmi/HdmiUtils.java b/core/java/android/hardware/hdmi/HdmiUtils.java
new file mode 100644
index 0000000..3081738
--- /dev/null
+++ b/core/java/android/hardware/hdmi/HdmiUtils.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2014 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 android.hardware.hdmi;
+
+/**
+ * Various utilities to handle HDMI CEC messages.
+ *
+ * TODO(b/110094868): unhide for Q
+ * @hide
+ */
+public class HdmiUtils {
+
+ /**
+ * Return value of {@link #getLocalPortFromPhysicalAddress(int, int)}
+ */
+ static final int TARGET_NOT_UNDER_LOCAL_DEVICE = -1;
+ static final int TARGET_SAME_PHYSICAL_ADDRESS = 0;
+
+ private HdmiUtils() { /* cannot be instantiated */ }
+
+ /**
+ * Method to parse target physical address to the port number on the current device.
+ *
+ * <p>This check assumes target address is valid.
+ *
+ * @param targetPhysicalAddress is the physical address of the target device
+ * @param myPhysicalAddress is the physical address of the current device
+ * @return
+ * If the target device is under the current device, return the port number of current device
+ * that the target device is connected to. This also applies to the devices that are indirectly
+ * connected to the current device.
+ *
+ * <p>If the target device has the same physical address as the current device, return
+ * {@link #TARGET_SAME_PHYSICAL_ADDRESS}.
+ *
+ * <p>If the target device is not under the current device, return
+ * {@link #TARGET_NOT_UNDER_LOCAL_DEVICE}.
+ */
+ public static int getLocalPortFromPhysicalAddress(
+ int targetPhysicalAddress, int myPhysicalAddress) {
+ if (myPhysicalAddress == targetPhysicalAddress) {
+ return TARGET_SAME_PHYSICAL_ADDRESS;
+ }
+
+ int mask = 0xF000;
+ int finalMask = 0xF000;
+ int maskedAddress = myPhysicalAddress;
+
+ while (maskedAddress != 0) {
+ maskedAddress = myPhysicalAddress & mask;
+ finalMask |= mask;
+ mask >>= 4;
+ }
+
+ int portAddress = targetPhysicalAddress & finalMask;
+ if ((portAddress & (finalMask << 4)) != myPhysicalAddress) {
+ return TARGET_NOT_UNDER_LOCAL_DEVICE;
+ }
+
+ mask <<= 4;
+ int port = portAddress & mask;
+ while ((port >> 4) != 0) {
+ port >>= 4;
+ }
+ return port;
+ }
+}
diff --git a/core/java/android/hardware/hdmi/IHdmiControlService.aidl b/core/java/android/hardware/hdmi/IHdmiControlService.aidl
index 2b8d00b..1cd9920 100644
--- a/core/java/android/hardware/hdmi/IHdmiControlService.aidl
+++ b/core/java/android/hardware/hdmi/IHdmiControlService.aidl
@@ -50,6 +50,7 @@
List<HdmiPortInfo> getPortInfo();
boolean canChangeSystemAudioMode();
boolean getSystemAudioMode();
+ int getPhysicalAddress();
void setSystemAudioMode(boolean enabled, IHdmiControlCallback callback);
void addSystemAudioModeChangeListener(IHdmiSystemAudioModeChangeListener listener);
void removeSystemAudioModeChangeListener(IHdmiSystemAudioModeChangeListener listener);
@@ -60,6 +61,9 @@
void setInputChangeListener(IHdmiInputChangeListener listener);
List<HdmiDeviceInfo> getInputDevices();
List<HdmiDeviceInfo> getDeviceList();
+ void powerOffRemoteDevice(int logicalAddress, int powerStatus);
+ void powerOnRemoteDevice(int logicalAddress, int powerStatus);
+ void askRemoteDeviceToBecomeActiveSource(int physicalAddress);
void sendVendorCommand(int deviceType, int targetAddress, in byte[] params,
boolean hasVendorId);
void addVendorCommandListener(IHdmiVendorCommandListener listener, int deviceType);
@@ -73,4 +77,5 @@
void addHdmiMhlVendorCommandListener(IHdmiMhlVendorCommandListener listener);
void setStandbyMode(boolean isStandbyModeOn);
void reportAudioStatus(int deviceType, int volume, int maxVolume, boolean isMute);
+ void setSystemAudioModeOnForAudioOnlySource();
}
diff --git a/core/java/android/hardware/location/ActivityChangedEvent.java b/core/java/android/hardware/location/ActivityChangedEvent.java
deleted file mode 100644
index 16cfe6e..0000000
--- a/core/java/android/hardware/location/ActivityChangedEvent.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2014 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 android.hardware.location;
-
-import android.annotation.NonNull;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.security.InvalidParameterException;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * A class representing an event for Activity changes.
- *
- * @hide
- */
-public class ActivityChangedEvent implements Parcelable {
- private final List<ActivityRecognitionEvent> mActivityRecognitionEvents;
-
- public ActivityChangedEvent(ActivityRecognitionEvent[] activityRecognitionEvents) {
- if (activityRecognitionEvents == null) {
- throw new InvalidParameterException(
- "Parameter 'activityRecognitionEvents' must not be null.");
- }
-
- mActivityRecognitionEvents = Arrays.asList(activityRecognitionEvents);
- }
-
- @NonNull
- public Iterable<ActivityRecognitionEvent> getActivityRecognitionEvents() {
- return mActivityRecognitionEvents;
- }
-
- public static final Creator<ActivityChangedEvent> CREATOR =
- new Creator<ActivityChangedEvent>() {
- @Override
- public ActivityChangedEvent createFromParcel(Parcel source) {
- int activityRecognitionEventsLength = source.readInt();
- ActivityRecognitionEvent[] activityRecognitionEvents =
- new ActivityRecognitionEvent[activityRecognitionEventsLength];
- source.readTypedArray(activityRecognitionEvents, ActivityRecognitionEvent.CREATOR);
-
- return new ActivityChangedEvent(activityRecognitionEvents);
- }
-
- @Override
- public ActivityChangedEvent[] newArray(int size) {
- return new ActivityChangedEvent[size];
- }
- };
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel parcel, int flags) {
- ActivityRecognitionEvent[] activityRecognitionEventArray =
- mActivityRecognitionEvents.toArray(new ActivityRecognitionEvent[0]);
- parcel.writeInt(activityRecognitionEventArray.length);
- parcel.writeTypedArray(activityRecognitionEventArray, flags);
- }
-
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder("[ ActivityChangedEvent:");
-
- for (ActivityRecognitionEvent event : mActivityRecognitionEvents) {
- builder.append("\n ");
- builder.append(event.toString());
- }
- builder.append("\n]");
-
- return builder.toString();
- }
-}
diff --git a/core/java/android/hardware/location/ActivityRecognitionEvent.java b/core/java/android/hardware/location/ActivityRecognitionEvent.java
deleted file mode 100644
index 190030a..0000000
--- a/core/java/android/hardware/location/ActivityRecognitionEvent.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2014 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 android.hardware.location;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * A class that represents an Activity Recognition Event.
- *
- * @hide
- */
-public class ActivityRecognitionEvent implements Parcelable {
- private final String mActivity;
- private final int mEventType;
- private final long mTimestampNs;
-
- public ActivityRecognitionEvent(String activity, int eventType, long timestampNs) {
- mActivity = activity;
- mEventType = eventType;
- mTimestampNs = timestampNs;
- }
-
- public String getActivity() {
- return mActivity;
- }
-
- public int getEventType() {
- return mEventType;
- }
-
- public long getTimestampNs() {
- return mTimestampNs;
- }
-
- public static final Creator<ActivityRecognitionEvent> CREATOR =
- new Creator<ActivityRecognitionEvent>() {
- @Override
- public ActivityRecognitionEvent createFromParcel(Parcel source) {
- String activity = source.readString();
- int eventType = source.readInt();
- long timestampNs = source.readLong();
-
- return new ActivityRecognitionEvent(activity, eventType, timestampNs);
- }
-
- @Override
- public ActivityRecognitionEvent[] newArray(int size) {
- return new ActivityRecognitionEvent[size];
- }
- };
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel parcel, int flags) {
- parcel.writeString(mActivity);
- parcel.writeInt(mEventType);
- parcel.writeLong(mTimestampNs);
- }
-
- @Override
- public String toString() {
- return String.format(
- "Activity='%s', EventType=%s, TimestampNs=%s",
- mActivity,
- mEventType,
- mTimestampNs);
- }
-}
diff --git a/core/java/android/hardware/location/ActivityRecognitionHardware.java b/core/java/android/hardware/location/ActivityRecognitionHardware.java
deleted file mode 100644
index 8acd1ff..0000000
--- a/core/java/android/hardware/location/ActivityRecognitionHardware.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Copyright (C) 2014 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 android.hardware.location;
-
-import android.Manifest;
-import android.content.Context;
-import android.os.RemoteCallbackList;
-import android.os.RemoteException;
-import android.text.TextUtils;
-import android.util.Log;
-
-/**
- * A class that implements an {@link IActivityRecognitionHardware} backed up by the Activity
- * Recognition HAL.
- *
- * @hide
- */
-public class ActivityRecognitionHardware extends IActivityRecognitionHardware.Stub {
- private static final String TAG = "ActivityRecognitionHW";
- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
-
- private static final String HARDWARE_PERMISSION = Manifest.permission.LOCATION_HARDWARE;
- private static final String ENFORCE_HW_PERMISSION_MESSAGE = "Permission '"
- + HARDWARE_PERMISSION + "' not granted to access ActivityRecognitionHardware";
-
- private static final int INVALID_ACTIVITY_TYPE = -1;
- private static final int NATIVE_SUCCESS_RESULT = 0;
- private static final int EVENT_TYPE_DISABLED = 0;
- private static final int EVENT_TYPE_ENABLED = 1;
-
- /**
- * Contains the number of supported Event Types.
- *
- * NOTE: increment this counter every time a new EVENT_TYPE_ is added to
- * com.android.location.provider.ActivityRecognitionProvider
- */
- private static final int EVENT_TYPE_COUNT = 3;
-
- private static ActivityRecognitionHardware sSingletonInstance;
- private static final Object sSingletonInstanceLock = new Object();
-
- private final Context mContext;
- private final int mSupportedActivitiesCount;
- private final String[] mSupportedActivities;
- private final int[][] mSupportedActivitiesEnabledEvents;
- private final SinkList mSinks = new SinkList();
-
- private static class Event {
- public int activity;
- public int type;
- public long timestamp;
- }
-
- private ActivityRecognitionHardware(Context context) {
- nativeInitialize();
-
- mContext = context;
- mSupportedActivities = fetchSupportedActivities();
- mSupportedActivitiesCount = mSupportedActivities.length;
- mSupportedActivitiesEnabledEvents = new int[mSupportedActivitiesCount][EVENT_TYPE_COUNT];
- }
-
- public static ActivityRecognitionHardware getInstance(Context context) {
- synchronized (sSingletonInstanceLock) {
- if (sSingletonInstance == null) {
- sSingletonInstance = new ActivityRecognitionHardware(context);
- }
-
- return sSingletonInstance;
- }
- }
-
- public static boolean isSupported() {
- return nativeIsSupported();
- }
-
- @Override
- public String[] getSupportedActivities() {
- checkPermissions();
- return mSupportedActivities;
- }
-
- @Override
- public boolean isActivitySupported(String activity) {
- checkPermissions();
- int activityType = getActivityType(activity);
- return activityType != INVALID_ACTIVITY_TYPE;
- }
-
- @Override
- public boolean registerSink(IActivityRecognitionHardwareSink sink) {
- checkPermissions();
- return mSinks.register(sink);
- }
-
- @Override
- public boolean unregisterSink(IActivityRecognitionHardwareSink sink) {
- checkPermissions();
- return mSinks.unregister(sink);
- }
-
- @Override
- public boolean enableActivityEvent(String activity, int eventType, long reportLatencyNs) {
- checkPermissions();
-
- int activityType = getActivityType(activity);
- if (activityType == INVALID_ACTIVITY_TYPE) {
- return false;
- }
-
- int result = nativeEnableActivityEvent(activityType, eventType, reportLatencyNs);
- if (result == NATIVE_SUCCESS_RESULT) {
- mSupportedActivitiesEnabledEvents[activityType][eventType] = EVENT_TYPE_ENABLED;
- return true;
- }
- return false;
- }
-
- @Override
- public boolean disableActivityEvent(String activity, int eventType) {
- checkPermissions();
-
- int activityType = getActivityType(activity);
- if (activityType == INVALID_ACTIVITY_TYPE) {
- return false;
- }
-
- int result = nativeDisableActivityEvent(activityType, eventType);
- if (result == NATIVE_SUCCESS_RESULT) {
- mSupportedActivitiesEnabledEvents[activityType][eventType] = EVENT_TYPE_DISABLED;
- return true;
- }
- return false;
- }
-
- @Override
- public boolean flush() {
- checkPermissions();
- int result = nativeFlush();
- return result == NATIVE_SUCCESS_RESULT;
- }
-
- /**
- * Called by the Activity-Recognition HAL.
- */
- private void onActivityChanged(Event[] events) {
- if (events == null || events.length == 0) {
- if (DEBUG) Log.d(TAG, "No events to broadcast for onActivityChanged.");
- return;
- }
-
- int eventsLength = events.length;
- ActivityRecognitionEvent activityRecognitionEventArray[] =
- new ActivityRecognitionEvent[eventsLength];
- for (int i = 0; i < eventsLength; ++i) {
- Event event = events[i];
- String activityName = getActivityName(event.activity);
- activityRecognitionEventArray[i] =
- new ActivityRecognitionEvent(activityName, event.type, event.timestamp);
- }
- ActivityChangedEvent activityChangedEvent =
- new ActivityChangedEvent(activityRecognitionEventArray);
-
- int size = mSinks.beginBroadcast();
- for (int i = 0; i < size; ++i) {
- IActivityRecognitionHardwareSink sink = mSinks.getBroadcastItem(i);
- try {
- sink.onActivityChanged(activityChangedEvent);
- } catch (RemoteException e) {
- Log.e(TAG, "Error delivering activity changed event.", e);
- }
- }
- mSinks.finishBroadcast();
- }
-
- private String getActivityName(int activityType) {
- if (activityType < 0 || activityType >= mSupportedActivities.length) {
- String message = String.format(
- "Invalid ActivityType: %d, SupportedActivities: %d",
- activityType,
- mSupportedActivities.length);
- Log.e(TAG, message);
- return null;
- }
-
- return mSupportedActivities[activityType];
- }
-
- private int getActivityType(String activity) {
- if (TextUtils.isEmpty(activity)) {
- return INVALID_ACTIVITY_TYPE;
- }
-
- int supportedActivitiesLength = mSupportedActivities.length;
- for (int i = 0; i < supportedActivitiesLength; ++i) {
- if (activity.equals(mSupportedActivities[i])) {
- return i;
- }
- }
-
- return INVALID_ACTIVITY_TYPE;
- }
-
- private void checkPermissions() {
- mContext.enforceCallingPermission(HARDWARE_PERMISSION, ENFORCE_HW_PERMISSION_MESSAGE);
- }
-
- private String[] fetchSupportedActivities() {
- String[] supportedActivities = nativeGetSupportedActivities();
- if (supportedActivities != null) {
- return supportedActivities;
- }
-
- return new String[0];
- }
-
- private class SinkList extends RemoteCallbackList<IActivityRecognitionHardwareSink> {
- @Override
- public void onCallbackDied(IActivityRecognitionHardwareSink callback) {
- int callbackCount = mSinks.getRegisteredCallbackCount();
- if (DEBUG) Log.d(TAG, "RegisteredCallbackCount: " + callbackCount);
- if (callbackCount != 0) {
- return;
- }
- // currently there is only one client for this, so if all its sinks have died, we clean
- // up after them, this ensures that the AR HAL is not out of sink
- for (int activity = 0; activity < mSupportedActivitiesCount; ++activity) {
- for (int event = 0; event < EVENT_TYPE_COUNT; ++event) {
- disableActivityEventIfEnabled(activity, event);
- }
- }
- }
-
- private void disableActivityEventIfEnabled(int activityType, int eventType) {
- if (mSupportedActivitiesEnabledEvents[activityType][eventType] != EVENT_TYPE_ENABLED) {
- return;
- }
-
- int result = nativeDisableActivityEvent(activityType, eventType);
- mSupportedActivitiesEnabledEvents[activityType][eventType] = EVENT_TYPE_DISABLED;
- String message = String.format(
- "DisableActivityEvent: activityType=%d, eventType=%d, result=%d",
- activityType,
- eventType,
- result);
- Log.e(TAG, message);
- }
- }
-
- // native bindings
- static { nativeClassInit(); }
-
- private static native void nativeClassInit();
- private static native boolean nativeIsSupported();
-
- private native void nativeInitialize();
- private native void nativeRelease();
- private native String[] nativeGetSupportedActivities();
- private native int nativeEnableActivityEvent(
- int activityType,
- int eventType,
- long reportLatenceNs);
- private native int nativeDisableActivityEvent(int activityType, int eventType);
- private native int nativeFlush();
-}
diff --git a/core/java/android/hardware/location/IActivityRecognitionHardware.aidl b/core/java/android/hardware/location/IActivityRecognitionHardware.aidl
deleted file mode 100644
index bc6b183..0000000
--- a/core/java/android/hardware/location/IActivityRecognitionHardware.aidl
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2014, 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/license/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 android.hardware.location;
-
-import android.hardware.location.IActivityRecognitionHardwareSink;
-
-/**
- * Activity Recognition Hardware provider interface.
- * This interface can be used to implement hardware based activity recognition.
- *
- * @hide
- */
-interface IActivityRecognitionHardware {
- /**
- * Gets an array of supported activities by hardware.
- */
- String[] getSupportedActivities();
-
- /**
- * Returns true if the given activity is supported, false otherwise.
- */
- boolean isActivitySupported(in String activityType);
-
- /**
- * Registers a sink with Hardware Activity-Recognition.
- */
- boolean registerSink(in IActivityRecognitionHardwareSink sink);
-
- /**
- * Unregisters a sink with Hardware Activity-Recognition.
- */
- boolean unregisterSink(in IActivityRecognitionHardwareSink sink);
-
- /**
- * Enables tracking of a given activity/event type, if the activity is supported.
- */
- boolean enableActivityEvent(in String activityType, int eventType, long reportLatencyNs);
-
- /**
- * Disables tracking of a given activity/eventy type.
- */
- boolean disableActivityEvent(in String activityType, int eventType);
-
- /**
- * Requests hardware for all the activity events detected up to the given point in time.
- */
- boolean flush();
-}
\ No newline at end of file
diff --git a/core/java/android/hardware/location/IActivityRecognitionHardwareClient.aidl b/core/java/android/hardware/location/IActivityRecognitionHardwareClient.aidl
deleted file mode 100644
index 3fe645c..0000000
--- a/core/java/android/hardware/location/IActivityRecognitionHardwareClient.aidl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2015, 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/license/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 android.hardware.location;
-
-import android.hardware.location.IActivityRecognitionHardware;
-
-/**
- * Activity Recognition Hardware client interface.
- * This interface can be used to receive interfaces to implementations of
- * {@link IActivityRecognitionHardware}.
- *
- * @hide
- */
-oneway interface IActivityRecognitionHardwareClient {
- /**
- * Hardware Activity-Recognition availability event.
- *
- * @param isSupported whether the platform has hardware support for the feature
- * @param instance the available instance to provide access to the feature
- */
- void onAvailabilityChanged(in boolean isSupported, in IActivityRecognitionHardware instance);
-}
diff --git a/core/java/android/hardware/location/IActivityRecognitionHardwareSink.aidl b/core/java/android/hardware/location/IActivityRecognitionHardwareSink.aidl
deleted file mode 100644
index 21c8e87..0000000
--- a/core/java/android/hardware/location/IActivityRecognitionHardwareSink.aidl
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2014, 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/license/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 android.hardware.location;
-
-import android.hardware.location.ActivityChangedEvent;
-
-/**
- * Activity Recognition Hardware provider Sink interface.
- * This interface can be used to implement sinks to receive activity notifications.
- *
- * @hide
- */
-interface IActivityRecognitionHardwareSink {
- /**
- * Activity changed event.
- */
- void onActivityChanged(in ActivityChangedEvent event);
-}
\ No newline at end of file
diff --git a/core/java/android/hardware/location/IActivityRecognitionHardwareWatcher.aidl b/core/java/android/hardware/location/IActivityRecognitionHardwareWatcher.aidl
deleted file mode 100644
index 12e3117..0000000
--- a/core/java/android/hardware/location/IActivityRecognitionHardwareWatcher.aidl
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2014, 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/license/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 android.hardware.location;
-
-import android.hardware.location.IActivityRecognitionHardware;
-
-/**
- * Activity Recognition Hardware watcher. This interface can be used to receive interfaces to
- * implementations of {@link IActivityRecognitionHardware}.
- *
- * @deprecated use {@link IActivityRecognitionHardwareClient} instead.
-
- * @hide
- */
-interface IActivityRecognitionHardwareWatcher {
- /**
- * Hardware Activity-Recognition availability event.
- */
- void onInstanceChanged(in IActivityRecognitionHardware instance);
-}
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 7d40227..d3509d5 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -2856,7 +2856,7 @@
if (mNotifyUserActionSent) {
return;
}
- mPrivOps.notifyUserActionAsync();
+ mPrivOps.notifyUserAction();
mNotifyUserActionSent = true;
}
}
diff --git a/core/java/android/hardware/location/ActivityChangedEvent.aidl b/core/java/android/net/IpPrefixParcelable.aidl
similarity index 66%
copy from core/java/android/hardware/location/ActivityChangedEvent.aidl
copy to core/java/android/net/IpPrefixParcelable.aidl
index 21f2445..93a8d41 100644
--- a/core/java/android/hardware/location/ActivityChangedEvent.aidl
+++ b/core/java/android/net/IpPrefixParcelable.aidl
@@ -1,19 +1,22 @@
/*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2019 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
+ * 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
- */
+ * limitations under the License.
+*/
-package android.hardware.location;
+package android.net;
-parcelable ActivityChangedEvent;
\ No newline at end of file
+parcelable IpPrefixParcelable {
+ String address;
+ int prefixLength;
+}
\ No newline at end of file
diff --git a/core/java/android/hardware/location/ActivityChangedEvent.aidl b/core/java/android/net/LinkAddressParcelable.aidl
similarity index 63%
copy from core/java/android/hardware/location/ActivityChangedEvent.aidl
copy to core/java/android/net/LinkAddressParcelable.aidl
index 21f2445..af8e79b 100644
--- a/core/java/android/hardware/location/ActivityChangedEvent.aidl
+++ b/core/java/android/net/LinkAddressParcelable.aidl
@@ -1,19 +1,24 @@
/*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2019 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
+ * 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
- */
+ * limitations under the License.
+*/
-package android.hardware.location;
+package android.net;
-parcelable ActivityChangedEvent;
\ No newline at end of file
+parcelable LinkAddressParcelable {
+ String address;
+ int prefixLength;
+ int flags;
+ int scope;
+}
\ No newline at end of file
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java
index 4a466f3..c2963fd 100644
--- a/core/java/android/net/LinkProperties.java
+++ b/core/java/android/net/LinkProperties.java
@@ -66,6 +66,7 @@
private int mMtu;
// in the format "rmem_min,rmem_def,rmem_max,wmem_min,wmem_def,wmem_max"
private String mTcpBufferSizes;
+ private IpPrefix mNat64Prefix;
private static final int MIN_MTU = 68;
private static final int MIN_MTU_V6 = 1280;
@@ -190,6 +191,7 @@
}
setMtu(source.mMtu);
mTcpBufferSizes = source.mTcpBufferSizes;
+ mNat64Prefix = source.mNat64Prefix;
}
}
@@ -760,6 +762,32 @@
}
/**
+ * Returns the NAT64 prefix in use on this link, if any.
+ *
+ * @return the NAT64 prefix.
+ * @hide
+ */
+ public @Nullable IpPrefix getNat64Prefix() {
+ return mNat64Prefix;
+ }
+
+ /**
+ * Sets the NAT64 prefix in use on this link.
+ *
+ * Currently, only 96-bit prefixes (i.e., where the 32-bit IPv4 address is at the end of the
+ * 128-bit IPv6 address) are supported.
+ *
+ * @param prefix the NAT64 prefix.
+ * @hide
+ */
+ public void setNat64Prefix(IpPrefix prefix) {
+ if (prefix != null && prefix.getPrefixLength() != 96) {
+ throw new IllegalArgumentException("Only 96-bit prefixes are supported: " + prefix);
+ }
+ mNat64Prefix = prefix; // IpPrefix objects are immutable.
+ }
+
+ /**
* Adds a stacked link.
*
* If there is already a stacked link with the same interface name as link,
@@ -831,6 +859,7 @@
mStackedLinks.clear();
mMtu = 0;
mTcpBufferSizes = null;
+ mNat64Prefix = null;
}
/**
@@ -908,6 +937,11 @@
resultJoiner.add(mHttpProxy.toString());
}
+ if (mNat64Prefix != null) {
+ resultJoiner.add("Nat64Prefix:");
+ resultJoiner.add(mNat64Prefix.toString());
+ }
+
final Collection<LinkProperties> stackedLinksValues = mStackedLinks.values();
if (!stackedLinksValues.isEmpty()) {
final StringJoiner stackedLinksJoiner = new StringJoiner(",", "Stacked: [", "]");
@@ -1295,6 +1329,17 @@
}
/**
+ * Compares this {@code LinkProperties} NAT64 prefix against the target.
+ *
+ * @param target LinkProperties to compare.
+ * @return {@code true} if both are identical, {@code false} otherwise.
+ * @hide
+ */
+ public boolean isIdenticalNat64Prefix(LinkProperties target) {
+ return Objects.equals(mNat64Prefix, target.mNat64Prefix);
+ }
+
+ /**
* Compares this {@code LinkProperties} instance against the target
* LinkProperties in {@code obj}. Two LinkPropertieses are equal if
* all their fields are equal in values.
@@ -1330,7 +1375,8 @@
&& isIdenticalHttpProxy(target)
&& isIdenticalStackedLinks(target)
&& isIdenticalMtu(target)
- && isIdenticalTcpBufferSizes(target);
+ && isIdenticalTcpBufferSizes(target)
+ && isIdenticalNat64Prefix(target);
}
/**
@@ -1443,7 +1489,8 @@
+ ((null == mTcpBufferSizes) ? 0 : mTcpBufferSizes.hashCode())
+ (mUsePrivateDns ? 57 : 0)
+ mPcscfs.size() * 67
- + ((null == mPrivateDnsServerName) ? 0 : mPrivateDnsServerName.hashCode());
+ + ((null == mPrivateDnsServerName) ? 0 : mPrivateDnsServerName.hashCode())
+ + Objects.hash(mNat64Prefix);
}
/**
@@ -1484,6 +1531,8 @@
} else {
dest.writeByte((byte)0);
}
+ dest.writeParcelable(mNat64Prefix, 0);
+
ArrayList<LinkProperties> stackedLinks = new ArrayList<>(mStackedLinks.values());
dest.writeList(stackedLinks);
}
@@ -1535,6 +1584,7 @@
if (in.readByte() == 1) {
netProp.setHttpProxy(in.readParcelable(null));
}
+ netProp.setNat64Prefix(in.readParcelable(null));
ArrayList<LinkProperties> stackedLinks = new ArrayList<LinkProperties>();
in.readList(stackedLinks, LinkProperties.class.getClassLoader());
for (LinkProperties stackedLink: stackedLinks) {
diff --git a/core/java/android/net/LinkPropertiesParcelable.aidl b/core/java/android/net/LinkPropertiesParcelable.aidl
new file mode 100644
index 0000000..b153dc7
--- /dev/null
+++ b/core/java/android/net/LinkPropertiesParcelable.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2019 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 android.net;
+
+import android.net.IpPrefixParcelable;
+import android.net.LinkAddressParcelable;
+import android.net.ProxyInfoParcelable;
+import android.net.RouteInfoParcelable;
+
+parcelable LinkPropertiesParcelable {
+ String ifaceName;
+ LinkAddressParcelable[] linkAddresses;
+ String[] dnses;
+ String[] pcscfs;
+ String[] validatedPrivateDnses;
+ boolean usePrivateDns;
+ String privateDnsServerName;
+ String domains;
+ RouteInfoParcelable[] routes;
+ ProxyInfoParcelable httpProxy;
+ int mtu;
+ String tcpBufferSizes;
+ IpPrefixParcelable nat64Prefix;
+ LinkPropertiesParcelable[] stackedLinks;
+}
\ No newline at end of file
diff --git a/core/java/android/net/NetworkSpecifier.java b/core/java/android/net/NetworkSpecifier.java
index be2f955..fcfb720 100644
--- a/core/java/android/net/NetworkSpecifier.java
+++ b/core/java/android/net/NetworkSpecifier.java
@@ -17,7 +17,7 @@
package android.net;
/**
- * Describes specific properties of a network for use in a {@link NetworkRequest}.
+ * Describes specific properties of a requested network for use in a {@link NetworkRequest}.
*
* Applications cannot instantiate this class by themselves, but can obtain instances of
* subclasses of this class via other APIs.
@@ -49,4 +49,29 @@
public void assertValidFromUid(int requestorUid) {
// empty
}
+
+ /**
+ * Optional method which can be overridden by concrete implementations of NetworkSpecifier to
+ * perform any redaction of information from the NetworkSpecifier, e.g. if it contains
+ * sensitive information. The default implementation simply returns the object itself - i.e.
+ * no information is redacted. A concrete implementation may return a modified (copy) of the
+ * NetworkSpecifier, or even return a null to fully remove all information.
+ * <p>
+ * This method is relevant to NetworkSpecifier objects used by agents - those are shared with
+ * apps by default. Some agents may store sensitive matching information in the specifier,
+ * e.g. a Wi-Fi SSID (which should not be shared since it may leak location). Those classes
+ * can redact to a null. Other agents use the Network Specifier to share public information
+ * with apps - those should not be redacted.
+ * <p>
+ * The default implementation redacts no information.
+ *
+ * @return A NetworkSpecifier object to be passed along to the requesting app.
+ *
+ * @hide
+ */
+ public NetworkSpecifier redact() {
+ // TODO (b/122160111): convert default to null once all platform NetworkSpecifiers
+ // implement this method.
+ return this;
+ }
}
diff --git a/core/java/android/hardware/location/ActivityChangedEvent.aidl b/core/java/android/net/ProxyInfoParcelable.aidl
similarity index 62%
copy from core/java/android/hardware/location/ActivityChangedEvent.aidl
copy to core/java/android/net/ProxyInfoParcelable.aidl
index 21f2445..59fd846 100644
--- a/core/java/android/hardware/location/ActivityChangedEvent.aidl
+++ b/core/java/android/net/ProxyInfoParcelable.aidl
@@ -1,19 +1,24 @@
/*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2019 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
+ * 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
- */
+ * limitations under the License.
+*/
-package android.hardware.location;
+package android.net;
-parcelable ActivityChangedEvent;
\ No newline at end of file
+parcelable ProxyInfoParcelable {
+ String host;
+ int port;
+ String[] exclusionList;
+ String pacFileUrl;
+}
diff --git a/core/java/android/net/RouteInfoParcelable.aidl b/core/java/android/net/RouteInfoParcelable.aidl
new file mode 100644
index 0000000..15bcdcf
--- /dev/null
+++ b/core/java/android/net/RouteInfoParcelable.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2019 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 android.net;
+
+import android.net.IpPrefixParcelable;
+
+parcelable RouteInfoParcelable {
+ IpPrefixParcelable destination;
+ String gatewayAddr;
+ String ifaceName;
+ int type;
+}
diff --git a/core/java/android/net/ipmemorystore/NetworkAttributes.java b/core/java/android/net/ipmemorystore/NetworkAttributes.java
index d7e5b27..b932d21 100644
--- a/core/java/android/net/ipmemorystore/NetworkAttributes.java
+++ b/core/java/android/net/ipmemorystore/NetworkAttributes.java
@@ -28,6 +28,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import java.util.StringJoiner;
/**
* A POD object to represent attributes of a single L2 network entry.
@@ -207,4 +208,52 @@
public int hashCode() {
return Objects.hash(assignedV4Address, groupHint, dnsAddresses, mtu);
}
+
+ /** Pretty print */
+ @Override
+ public String toString() {
+ final StringJoiner resultJoiner = new StringJoiner(" ", "{", "}");
+ final ArrayList<String> nullFields = new ArrayList<>();
+
+ if (null != assignedV4Address) {
+ resultJoiner.add("assignedV4Addr :");
+ resultJoiner.add(assignedV4Address.toString());
+ } else {
+ nullFields.add("assignedV4Addr");
+ }
+
+ if (null != groupHint) {
+ resultJoiner.add("groupHint :");
+ resultJoiner.add(groupHint);
+ } else {
+ nullFields.add("groupHint");
+ }
+
+ if (null != dnsAddresses) {
+ resultJoiner.add("dnsAddr : [");
+ for (final InetAddress addr : dnsAddresses) {
+ resultJoiner.add(addr.getHostAddress());
+ }
+ resultJoiner.add("]");
+ } else {
+ nullFields.add("dnsAddr");
+ }
+
+ if (null != mtu) {
+ resultJoiner.add("mtu :");
+ resultJoiner.add(mtu.toString());
+ } else {
+ nullFields.add("mtu");
+ }
+
+ if (!nullFields.isEmpty()) {
+ resultJoiner.add("; Null fields : [");
+ for (final String field : nullFields) {
+ resultJoiner.add(field);
+ }
+ resultJoiner.add("]");
+ }
+
+ return resultJoiner.toString();
+ }
}
diff --git a/core/java/android/net/ipmemorystore/SameL3NetworkResponse.java b/core/java/android/net/ipmemorystore/SameL3NetworkResponse.java
index 0cb37e9..d040dcc 100644
--- a/core/java/android/net/ipmemorystore/SameL3NetworkResponse.java
+++ b/core/java/android/net/ipmemorystore/SameL3NetworkResponse.java
@@ -128,4 +128,19 @@
public int hashCode() {
return Objects.hash(l2Key1, l2Key2, confidence);
}
+
+ @Override
+ /** Pretty print */
+ public String toString() {
+ switch (getNetworkSameness()) {
+ case NETWORK_SAME:
+ return "\"" + l2Key1 + "\" same L3 network as \"" + l2Key2 + "\"";
+ case NETWORK_DIFFERENT:
+ return "\"" + l2Key1 + "\" different L3 network from \"" + l2Key2 + "\"";
+ case NETWORK_NEVER_CONNECTED:
+ return "\"" + l2Key1 + "\" can't be tested against \"" + l2Key2 + "\"";
+ default:
+ return "Buggy sameness value ? \"" + l2Key1 + "\", \"" + l2Key2 + "\"";
+ }
+ }
}
diff --git a/core/java/android/net/ipmemorystore/Status.java b/core/java/android/net/ipmemorystore/Status.java
index 5b016ec..95e5042 100644
--- a/core/java/android/net/ipmemorystore/Status.java
+++ b/core/java/android/net/ipmemorystore/Status.java
@@ -26,6 +26,8 @@
public class Status {
public static final int SUCCESS = 0;
+ public static final int ERROR_DATABASE_CANNOT_BE_OPENED = -1;
+
public final int resultCode;
public Status(final int resultCode) {
@@ -47,4 +49,14 @@
public boolean isSuccess() {
return SUCCESS == resultCode;
}
+
+ /** Pretty print */
+ @Override
+ public String toString() {
+ switch (resultCode) {
+ case SUCCESS: return "SUCCESS";
+ case ERROR_DATABASE_CANNOT_BE_OPENED: return "DATABASE CANNOT BE OPENED";
+ default: return "Unknown value ?!";
+ }
+ }
}
diff --git a/core/java/android/net/ipmemorystore/Utils.java b/core/java/android/net/ipmemorystore/Utils.java
new file mode 100644
index 0000000..73d8c83
--- /dev/null
+++ b/core/java/android/net/ipmemorystore/Utils.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2018 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 android.net.ipmemorystore;
+
+import android.annotation.NonNull;
+
+/** {@hide} */
+public class Utils {
+ /** Pretty print */
+ public static String blobToString(final Blob blob) {
+ final StringBuilder sb = new StringBuilder("Blob : [");
+ if (blob.data.length <= 24) {
+ appendByteArray(sb, blob.data, 0, blob.data.length);
+ } else {
+ appendByteArray(sb, blob.data, 0, 16);
+ sb.append("...");
+ appendByteArray(sb, blob.data, blob.data.length - 8, blob.data.length);
+ }
+ sb.append("]");
+ return sb.toString();
+ }
+
+ // Adds the hex representation of the array between the specified indices (inclusive, exclusive)
+ private static void appendByteArray(@NonNull final StringBuilder sb, @NonNull final byte[] ar,
+ final int from, final int to) {
+ for (int i = from; i < to; ++i) {
+ sb.append(String.format("%02X", ar[i]));
+ }
+ }
+}
diff --git a/core/java/android/os/AppZygote.java b/core/java/android/os/AppZygote.java
index 40cbaf7..950f381 100644
--- a/core/java/android/os/AppZygote.java
+++ b/core/java/android/os/AppZygote.java
@@ -34,8 +34,15 @@
public class AppZygote {
private static final String LOG_TAG = "AppZygote";
+ // UID of the Zygote itself
private final int mZygoteUid;
+ // First UID/GID of the range the AppZygote can setuid()/setgid() to
+ private final int mZygoteUidGidMin;
+
+ // Last UID/GID of the range the AppZygote can setuid()/setgid() to
+ private final int mZygoteUidGidMax;
+
private final Object mLock = new Object();
/**
@@ -47,9 +54,11 @@
private final ApplicationInfo mAppInfo;
- public AppZygote(ApplicationInfo appInfo, int zygoteUid) {
+ public AppZygote(ApplicationInfo appInfo, int zygoteUid, int uidGidMin, int uidGidMax) {
mAppInfo = appInfo;
mZygoteUid = zygoteUid;
+ mZygoteUidGidMin = uidGidMin;
+ mZygoteUidGidMax = uidGidMax;
}
/**
@@ -104,7 +113,9 @@
"app_zygote", // seInfo
abi, // abi
abi, // acceptedAbiList
- null); // instructionSet
+ null, // instructionSet
+ mZygoteUidGidMin,
+ mZygoteUidGidMax);
ZygoteProcess.waitForConnectionToZygote(mZygote.getPrimarySocketAddress());
// preload application code in the zygote
diff --git a/core/java/android/os/BugreportManager.java b/core/java/android/os/BugreportManager.java
index 1343d24..c5a51f1 100644
--- a/core/java/android/os/BugreportManager.java
+++ b/core/java/android/os/BugreportManager.java
@@ -66,10 +66,14 @@
@interface BugreportErrorCode {}
/** The input options were invalid */
- int BUGREPORT_ERROR_INVALID_INPUT = 1;
+ int BUGREPORT_ERROR_INVALID_INPUT = IDumpstateListener.BUGREPORT_ERROR_INVALID_INPUT;
/** A runtime error occured */
- int BUGREPORT_ERROR_RUNTIME = 2;
+ int BUGREPORT_ERROR_RUNTIME = IDumpstateListener.BUGREPORT_ERROR_RUNTIME_ERROR;
+
+ /** User denied consent to share the bugreport */
+ int BUGREPORT_ERROR_USER_DENIED_CONSENT =
+ IDumpstateListener.BUGREPORT_ERROR_USER_DENIED_CONSENT;
/**
* Called when taking bugreport resulted in an error.
@@ -108,14 +112,15 @@
DumpstateListener dsListener = new DumpstateListener(listener);
try {
- mBinder.startBugreport(bugreportFd, screenshotFd, params.getMode(), dsListener);
+ // Note: mBinder can get callingUid from the binder transaction.
+ mBinder.startBugreport(-1 /* callingUid */,
+ mContext.getOpPackageName(), bugreportFd, screenshotFd,
+ params.getMode(), dsListener);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
-
- // TODO(b/111441001) Connect up with BugreportListener methods.
private final class DumpstateListener extends IDumpstateListener.Stub
implements DeathRecipient {
private final BugreportListener mListener;
@@ -130,19 +135,36 @@
}
@Override
+ public void onProgress(int progress) throws RemoteException {
+ mListener.onProgress(progress);
+ }
+
+ @Override
+ public void onError(int errorCode) throws RemoteException {
+ mListener.onError(errorCode);
+ }
+
+ @Override
+ public void onFinished(long durationMs, String title, String description)
+ throws RemoteException {
+ mListener.onFinished(durationMs, title, description);
+ }
+
+ // Old methods; should go away
+ @Override
public void onProgressUpdated(int progress) throws RemoteException {
- // TODO(b/111441001): implement
+ // TODO(b/111441001): remove from interface
}
@Override
public void onMaxProgressUpdated(int maxProgress) throws RemoteException {
- // TODO(b/111441001): implement
+ // TODO(b/111441001): remove from interface
}
@Override
public void onSectionComplete(String title, int status, int size, int durationMs)
throws RemoteException {
- // TODO(b/111441001): implement
+ // TODO(b/111441001): remove from interface
}
}
}
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 9fea873..2d61a4e 100755
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -289,6 +289,26 @@
"ro.build.version.preview_sdk", 0);
/**
+ * The SDK fingerprint for a given prerelease SDK. This value will always be
+ * {@code REL} on production platform builds/devices.
+ *
+ * <p>When this value is not {@code REL}, it contains a string fingerprint of the API
+ * surface exposed by the preview SDK. Preview platforms with different API surfaces
+ * will have different {@code PREVIEW_SDK_FINGERPRINT}.
+ *
+ * <p>This attribute is intended for use by installers for finer grained targeting of
+ * packages. Applications targeting preview APIs should not use this field and should
+ * instead use {@code PREVIEW_SDK_INT} or use reflection or other runtime checks to
+ * detect the presence of an API or guard themselves against unexpected runtime
+ * behavior.
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final String PREVIEW_SDK_FINGERPRINT = SystemProperties.get(
+ "ro.build.version.preview_sdk_fingerprint", "REL");
+
+ /**
* The current development codename, or the string "REL" if this is
* a release build.
*/
diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java
index e84a518..ca39051 100644
--- a/core/java/android/os/FileUtils.java
+++ b/core/java/android/os/FileUtils.java
@@ -846,7 +846,16 @@
return contains(dir.getAbsolutePath(), file.getAbsolutePath());
}
- /** {@hide} */
+ /**
+ * Test if a file lives under the given directory, either as a direct child
+ * or a distant grandchild.
+ * <p>
+ * Both files <em>must</em> have been resolved using
+ * {@link File#getCanonicalFile()} to avoid symlink or path traversal
+ * attacks.
+ *
+ * @hide
+ */
public static boolean contains(String dirPath, String filePath) {
if (dirPath.equals(filePath)) {
return true;
diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java
index b0b8f49..f51ba9a 100644
--- a/core/java/android/os/GraphicsEnvironment.java
+++ b/core/java/android/os/GraphicsEnvironment.java
@@ -306,9 +306,18 @@
String packageName,
String paths,
String devOptIn) {
- // Check for temporary rules if debuggable or root
- if (!isDebuggable(context) && !(getCanLoadSystemLibraries() == 1)) {
- Log.v(TAG, "Skipping loading temporary rules file");
+ /**
+ * We only want to load a temp rules file for:
+ * - apps that are marked 'debuggable' in their manifest
+ * - devices that are running a userdebug build (ro.debuggable) or can inject libraries for
+ * debugging (PR_SET_DUMPABLE).
+ */
+ boolean appIsDebuggable = isDebuggable(context);
+ boolean deviceIsDebuggable = getCanLoadSystemLibraries() == 1;
+ if (!(appIsDebuggable || deviceIsDebuggable)) {
+ Log.v(TAG, "Skipping loading temporary rules file: "
+ + "appIsDebuggable = " + appIsDebuggable + ", "
+ + "adbRootEnabled = " + deviceIsDebuggable);
return false;
}
@@ -480,21 +489,36 @@
return;
}
- if (getGlobalSettingsString(coreSettings, Settings.Global.GUP_DEV_OPT_OUT_APPS)
- .contains(ai.packageName)) {
+ // GUP_DEV_ALL_APPS
+ // 0: Default (Invalid values fallback to default as well)
+ // 1: All apps use Game Update Package
+ // 2: All apps use system graphics driver
+ int gupDevAllApps = coreSettings.getInt(Settings.Global.GUP_DEV_ALL_APPS, 0);
+ if (gupDevAllApps == 2) {
if (DEBUG) {
- Log.w(TAG, ai.packageName + " opts out from GUP.");
+ Log.w(TAG, "GUP is turned off on this device");
}
return;
}
- if (!getGlobalSettingsString(coreSettings, Settings.Global.GUP_DEV_OPT_IN_APPS)
- .contains(ai.packageName)
- && !onWhitelist(context, driverPackageName, ai.packageName)) {
- if (DEBUG) {
- Log.w(TAG, ai.packageName + " is not on the whitelist.");
+ if (gupDevAllApps != 1) {
+ // GUP_DEV_OPT_OUT_APPS has higher priority than GUP_DEV_OPT_IN_APPS
+ if (getGlobalSettingsString(coreSettings, Settings.Global.GUP_DEV_OPT_OUT_APPS)
+ .contains(ai.packageName)) {
+ if (DEBUG) {
+ Log.w(TAG, ai.packageName + " opts out from GUP.");
+ }
+ return;
}
- return;
+
+ if (!getGlobalSettingsString(coreSettings, Settings.Global.GUP_DEV_OPT_IN_APPS)
+ .contains(ai.packageName)
+ && !onWhitelist(context, driverPackageName, ai.packageName)) {
+ if (DEBUG) {
+ Log.w(TAG, ai.packageName + " is not on the whitelist.");
+ }
+ return;
+ }
}
ApplicationInfo driverInfo;
diff --git a/core/java/android/os/HwBinder.java b/core/java/android/os/HwBinder.java
index 3de3494..9e3e83e 100644
--- a/core/java/android/os/HwBinder.java
+++ b/core/java/android/os/HwBinder.java
@@ -17,6 +17,7 @@
package android.os;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import libcore.util.NativeAllocationRegistry;
@@ -24,6 +25,7 @@
/** @hide */
@SystemApi
+@TestApi
public abstract class HwBinder implements IHwBinder {
private static final String TAG = "HwBinder";
diff --git a/core/java/android/os/HwBlob.java b/core/java/android/os/HwBlob.java
index 6a5bb1c..0ec63b5 100644
--- a/core/java/android/os/HwBlob.java
+++ b/core/java/android/os/HwBlob.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import libcore.util.NativeAllocationRegistry;
@@ -28,6 +29,7 @@
* @hide
*/
@SystemApi
+@TestApi
public class HwBlob {
private static final String TAG = "HwBlob";
diff --git a/core/java/android/os/HwParcel.java b/core/java/android/os/HwParcel.java
index 7a51db2..7919a00 100644
--- a/core/java/android/os/HwParcel.java
+++ b/core/java/android/os/HwParcel.java
@@ -18,6 +18,7 @@
import android.annotation.IntDef;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import libcore.util.NativeAllocationRegistry;
@@ -28,6 +29,7 @@
/** @hide */
@SystemApi
+@TestApi
public class HwParcel {
private static final String TAG = "HwParcel";
diff --git a/core/java/android/os/IHwBinder.java b/core/java/android/os/IHwBinder.java
index 249eb3a..46fa6ef 100644
--- a/core/java/android/os/IHwBinder.java
+++ b/core/java/android/os/IHwBinder.java
@@ -17,9 +17,11 @@
package android.os;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
/** @hide */
@SystemApi
+@TestApi
public interface IHwBinder {
/**
* Process a hwbinder transaction.
diff --git a/core/java/android/os/IHwInterface.java b/core/java/android/os/IHwInterface.java
index f9edd5b..0a5a715 100644
--- a/core/java/android/os/IHwInterface.java
+++ b/core/java/android/os/IHwInterface.java
@@ -17,8 +17,11 @@
package android.os;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
+
/** @hide */
@SystemApi
+@TestApi
public interface IHwInterface {
/**
* @return the binder object that corresponds to this interface.
diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index fdd7488..8ced722 100644
--- a/core/java/android/os/INetworkManagementService.aidl
+++ b/core/java/android/os/INetworkManagementService.aidl
@@ -356,16 +356,6 @@
void removeVpnUidRanges(int netId, in UidRange[] ranges);
/**
- * Start the clatd (464xlat) service on the given interface.
- */
- void startClatd(String interfaceName);
-
- /**
- * Stop the clatd (464xlat) service on the given interface.
- */
- void stopClatd(String interfaceName);
-
- /**
* Start listening for mobile activity state changes.
*/
void registerNetworkActivityListener(INetworkActivityListener listener);
diff --git a/core/java/android/os/NativeHandle.java b/core/java/android/os/NativeHandle.java
index f7ffc37..f13bf5f 100644
--- a/core/java/android/os/NativeHandle.java
+++ b/core/java/android/os/NativeHandle.java
@@ -20,6 +20,7 @@
import android.annotation.NonNull;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.system.ErrnoException;
import android.system.Os;
@@ -32,6 +33,7 @@
* @hide
*/
@SystemApi
+@TestApi
public final class NativeHandle implements Closeable {
// whether this object owns mFds
private boolean mOwn = false;
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index ee56e3d..760fef7 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -208,30 +208,35 @@
* First uid used for fully isolated sandboxed processes spawned from an app zygote
* @hide
*/
+ @TestApi
public static final int FIRST_APP_ZYGOTE_ISOLATED_UID = 90000;
/**
* Number of UIDs we allocate per application zygote
* @hide
*/
+ @TestApi
public static final int NUM_UIDS_PER_APP_ZYGOTE = 100;
/**
* Last uid used for fully isolated sandboxed processes spawned from an app zygote
* @hide
*/
+ @TestApi
public static final int LAST_APP_ZYGOTE_ISOLATED_UID = 98999;
/**
* First uid used for fully isolated sandboxed processes (with no permissions of their own)
* @hide
*/
+ @TestApi
public static final int FIRST_ISOLATED_UID = 99000;
/**
* Last uid used for fully isolated sandboxed processes (with no permissions of their own)
* @hide
*/
+ @TestApi
public static final int LAST_ISOLATED_UID = 99999;
/**
diff --git a/core/java/android/os/VintfObject.java b/core/java/android/os/VintfObject.java
index fb22194..23c54f4 100644
--- a/core/java/android/os/VintfObject.java
+++ b/core/java/android/os/VintfObject.java
@@ -16,23 +16,27 @@
package android.os;
-import java.util.Map;
+import android.annotation.TestApi;
+import java.util.Map;
/**
* Java API for libvintf.
+ *
* @hide
*/
+@TestApi
public class VintfObject {
- /// ---------- OTA
-
/**
* Slurps all device information (both manifests and both matrices)
* and report them.
* If any error in getting one of the manifests, it is not included in
* the list.
+ *
+ * @hide
*/
+ @TestApi
public static native String[] report();
/**
@@ -44,6 +48,8 @@
* @return = 0 if success (compatible)
* > 0 if incompatible
* < 0 if any error (mount partition fails, illformed XML, etc.)
+ *
+ * @hide
*/
public static native int verify(String[] packageInfo);
@@ -55,22 +61,28 @@
* @return = 0 if success (compatible)
* > 0 if incompatible
* < 0 if any error (mount partition fails, illformed XML, etc.)
+ *
+ * @hide
*/
public static native int verifyWithoutAvb();
- /// ---------- CTS Device Info
-
/**
* @return a list of HAL names and versions that is supported by this
* device as stated in device and framework manifests. For example,
* ["android.hidl.manager@1.0", "android.hardware.camera.device@1.0",
* "android.hardware.camera.device@3.2"]. There are no duplicates.
+ *
+ * @hide
*/
+ @TestApi
public static native String[] getHalNamesAndVersions();
/**
* @return the BOARD_SEPOLICY_VERS build flag available in device manifest.
+ *
+ * @hide
*/
+ @TestApi
public static native String getSepolicyVersion();
/**
@@ -78,13 +90,22 @@
* specified in framework manifest. For example,
* [("27", ["libjpeg.so", "libbase.so"]),
* ("28", ["libjpeg.so", "libbase.so"])]
+ *
+ * @hide
*/
+ @TestApi
public static native Map<String, String[]> getVndkSnapshots();
/**
- * @return target FCM version, a number specified in the device manifest
- * indicating the FCM version that the device manifest implements. Null if
- * device manifest doesn't specify this number (for legacy devices).
+ * @return Target Framework Compatibility Matrix (FCM) version, a number
+ * specified in the device manifest indicating the FCM version that the
+ * device manifest implements. Null if device manifest doesn't specify this
+ * number (for legacy devices).
+ *
+ * @hide
*/
+ @TestApi
public static native Long getTargetFrameworkCompatibilityMatrixVersion();
+
+ private VintfObject() {}
}
diff --git a/core/java/android/os/VintfRuntimeInfo.java b/core/java/android/os/VintfRuntimeInfo.java
index 29698b9..f17039b 100644
--- a/core/java/android/os/VintfRuntimeInfo.java
+++ b/core/java/android/os/VintfRuntimeInfo.java
@@ -16,55 +16,84 @@
package android.os;
+import android.annotation.TestApi;
+
/**
* Java API for ::android::vintf::RuntimeInfo. Methods return null / 0 on any error.
*
* @hide
*/
+@TestApi
public class VintfRuntimeInfo {
private VintfRuntimeInfo() {}
/**
* @return /sys/fs/selinux/policyvers, via security_policyvers() native call
+ *
+ * @hide
*/
public static native long getKernelSepolicyVersion();
/**
* @return content of /proc/cpuinfo
+ *
+ * @hide
*/
+ @TestApi
public static native String getCpuInfo();
/**
* @return os name extracted from uname() native call
+ *
+ * @hide
*/
+ @TestApi
public static native String getOsName();
/**
* @return node name extracted from uname() native call
+ *
+ * @hide
*/
+ @TestApi
public static native String getNodeName();
/**
* @return os release extracted from uname() native call
+ *
+ * @hide
*/
+ @TestApi
public static native String getOsRelease();
/**
* @return os version extracted from uname() native call
+ *
+ * @hide
*/
+ @TestApi
public static native String getOsVersion();
/**
* @return hardware id extracted from uname() native call
+ *
+ * @hide
*/
+ @TestApi
public static native String getHardwareId();
/**
* @return kernel version extracted from uname() native call. Format is
* {@code x.y.z}.
+ *
+ * @hide
*/
+ @TestApi
public static native String getKernelVersion();
/**
* @return libavb version in OS. Format is {@code x.y}.
+ *
+ * @hide
*/
public static native String getBootAvbVersion();
/**
* @return libavb version in bootloader. Format is {@code x.y}.
+ *
+ * @hide
*/
public static native String getBootVbmetaAvbVersion();
-
}
diff --git a/core/java/android/os/ZygoteProcess.java b/core/java/android/os/ZygoteProcess.java
index 251c5ee..ec77821 100644
--- a/core/java/android/os/ZygoteProcess.java
+++ b/core/java/android/os/ZygoteProcess.java
@@ -402,6 +402,8 @@
argsForZygote.add("--mount-external-full");
} else if (mountExternal == Zygote.MOUNT_EXTERNAL_INSTALLER) {
argsForZygote.add("--mount-external-installer");
+ } else if (mountExternal == Zygote.MOUNT_EXTERNAL_LEGACY) {
+ argsForZygote.add("--mount-external-legacy");
}
argsForZygote.add("--target-sdk-version=" + targetSdkVersion);
@@ -809,6 +811,8 @@
* may be different from <code>abi</code> in case the children
* spawned from this Zygote only communicate using ABI-safe methods.
* @param instructionSet null-ok the instruction set to use.
+ * @param uidRangeStart The first UID in the range the child zygote may setuid()/setgid() to
+ * @param uidRangeEnd The last UID in the range the child zygote may setuid()/setgid() to
*/
public ChildZygoteProcess startChildZygote(final String processClass,
final String niceName,
@@ -817,13 +821,17 @@
String seInfo,
String abi,
String acceptedAbiList,
- String instructionSet) {
+ String instructionSet,
+ int uidRangeStart,
+ int uidRangeEnd) {
// Create an unguessable address in the global abstract namespace.
final LocalSocketAddress serverAddress = new LocalSocketAddress(
processClass + "/" + UUID.randomUUID().toString());
final String[] extraArgs = {Zygote.CHILD_ZYGOTE_SOCKET_NAME_ARG + serverAddress.getName(),
- Zygote.CHILD_ZYGOTE_ABI_LIST_ARG + acceptedAbiList};
+ Zygote.CHILD_ZYGOTE_ABI_LIST_ARG + acceptedAbiList,
+ Zygote.CHILD_ZYGOTE_UID_RANGE_START + uidRangeStart,
+ Zygote.CHILD_ZYGOTE_UID_RANGE_END + uidRangeEnd};
Process.ProcessStartResult result;
try {
diff --git a/core/java/android/permission/IPermissionController.aidl b/core/java/android/permission/IPermissionController.aidl
index 7a7bd83..249b622 100644
--- a/core/java/android/permission/IPermissionController.aidl
+++ b/core/java/android/permission/IPermissionController.aidl
@@ -18,6 +18,8 @@
import android.os.RemoteCallback;
import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+import android.os.UserHandle;
/**
* Interface for system apps to communication with the permission controller.
@@ -27,6 +29,7 @@
oneway interface IPermissionController {
void revokeRuntimePermissions(in Bundle request, boolean doDryRun, int reason,
String callerPackageName, in RemoteCallback callback);
+ void getRuntimePermissionBackup(in UserHandle user, in ParcelFileDescriptor pipe);
void getAppPermissions(String packageName, in RemoteCallback callback);
void revokeRuntimePermission(String packageName, String permissionName);
void countPermissionApps(in List<String> permissionNames, boolean countOnlyGranted,
diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java
index 0865b62..bfcca7c 100644
--- a/core/java/android/permission/PermissionControllerManager.java
+++ b/core/java/android/permission/PermissionControllerManager.java
@@ -36,10 +36,12 @@
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.os.AsyncTask;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
import android.os.RemoteCallback;
import android.os.RemoteException;
import android.os.UserHandle;
@@ -51,6 +53,11 @@
import com.android.internal.infra.AbstractRemoteService;
import com.android.internal.util.Preconditions;
+import libcore.io.IoUtils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -58,6 +65,7 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executor;
+import java.util.function.Consumer;
/**
* Interface for communicating with the permission controller.
@@ -118,6 +126,20 @@
}
/**
+ * Callback for delivering the result of {@link #getRuntimePermissionBackup}.
+ *
+ * @hide
+ */
+ public interface OnGetRuntimePermissionBackupCallback {
+ /**
+ * The result for {@link #getRuntimePermissionBackup}.
+ *
+ * @param backup The backup file
+ */
+ void onGetRuntimePermissionsBackup(@NonNull byte[] backup);
+ }
+
+ /**
* Callback for delivering the result of {@link #getAppPermissions}.
*
* @hide
@@ -219,6 +241,26 @@
}
/**
+ * Create a backup of the runtime permissions.
+ *
+ * @param user The user to be backed up
+ * @param executor Executor on which to invoke the callback
+ * @param callback Callback to receive the result
+ *
+ * @hide
+ */
+ @RequiresPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS)
+ public void getRuntimePermissionBackup(@NonNull UserHandle user,
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull OnGetRuntimePermissionBackupCallback callback) {
+ checkNotNull(executor);
+ checkNotNull(callback);
+
+ sRemoteService.scheduleRequest(new PendingGetRuntimePermissionBackup(sRemoteService,
+ user, executor, callback));
+ }
+
+ /**
* Gets the runtime permissions for an app.
*
* @param packageName The package for which to query.
@@ -355,6 +397,89 @@
}
/**
+ * Task to read a large amount of data from a remote service.
+ */
+ private static class FileReaderTask<Callback extends Consumer<byte[]>>
+ extends AsyncTask<Void, Void, byte[]> {
+ private ParcelFileDescriptor mLocalPipe;
+ private ParcelFileDescriptor mRemotePipe;
+
+ private final @NonNull Callback mCallback;
+
+ FileReaderTask(@NonNull Callback callback) {
+ mCallback = callback;
+ }
+
+ @Override
+ protected void onPreExecute() {
+ ParcelFileDescriptor[] pipe;
+ try {
+ pipe = ParcelFileDescriptor.createPipe();
+ } catch (IOException e) {
+ Log.e(TAG, "Could not create pipe needed to get runtime permission backup", e);
+ return;
+ }
+
+ mLocalPipe = pipe[0];
+ mRemotePipe = pipe[1];
+ }
+
+ /**
+ * Get the file descriptor the remote service should write the data to.
+ *
+ * <p>Needs to be closed <u>locally</u> before the FileReader can finish.
+ *
+ * @return The file the data should be written to
+ */
+ ParcelFileDescriptor getRemotePipe() {
+ return mRemotePipe;
+ }
+
+ @Override
+ protected byte[] doInBackground(Void... ignored) {
+ ByteArrayOutputStream combinedBuffer = new ByteArrayOutputStream();
+
+ try (InputStream in = new ParcelFileDescriptor.AutoCloseInputStream(mLocalPipe)) {
+ byte[] buffer = new byte[16 * 1024];
+
+ while (!isCancelled()) {
+ int numRead = in.read(buffer);
+ if (numRead == -1) {
+ break;
+ }
+
+ combinedBuffer.write(buffer, 0, numRead);
+ }
+ } catch (IOException | NullPointerException e) {
+ Log.e(TAG, "Error reading runtime permission backup", e);
+ combinedBuffer.reset();
+ }
+
+ return combinedBuffer.toByteArray();
+ }
+
+ /**
+ * Interrupt the reading of the data.
+ *
+ * <p>Needs to be called when canceling this task as it might be hung.
+ */
+ void interruptRead() {
+ IoUtils.closeQuietly(mLocalPipe);
+ }
+
+ @Override
+ protected void onCancelled() {
+ onPostExecute(new byte[]{});
+ }
+
+ @Override
+ protected void onPostExecute(byte[] backup) {
+ IoUtils.closeQuietly(mLocalPipe);
+ mCallback.accept(backup);
+ }
+ }
+
+ /**
* Request for {@link #revokeRuntimePermissions}
*/
private static final class PendingRevokeRuntimePermissionRequest extends
@@ -441,6 +566,68 @@
}
/**
+ * Request for {@link #getRuntimePermissionBackup}
+ */
+ private static final class PendingGetRuntimePermissionBackup extends
+ AbstractRemoteService.PendingRequest<RemoteService, IPermissionController>
+ implements Consumer<byte[]> {
+ private final @NonNull FileReaderTask<PendingGetRuntimePermissionBackup> mBackupReader;
+ private final @NonNull Executor mExecutor;
+ private final @NonNull OnGetRuntimePermissionBackupCallback mCallback;
+ private final @NonNull UserHandle mUser;
+
+ private PendingGetRuntimePermissionBackup(@NonNull RemoteService service,
+ @NonNull UserHandle user, @NonNull @CallbackExecutor Executor executor,
+ @NonNull OnGetRuntimePermissionBackupCallback callback) {
+ super(service);
+
+ mUser = user;
+ mExecutor = executor;
+ mCallback = callback;
+
+ mBackupReader = new FileReaderTask<>(this);
+ }
+
+ @Override
+ protected void onTimeout(RemoteService remoteService) {
+ mBackupReader.cancel(true);
+ mBackupReader.interruptRead();
+ }
+
+ @Override
+ public void run() {
+ mBackupReader.execute();
+
+ ParcelFileDescriptor remotePipe = mBackupReader.getRemotePipe();
+ try {
+ getService().getServiceInterface().getRuntimePermissionBackup(mUser, remotePipe);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error getting runtime permission backup", e);
+ } finally {
+ // Remote pipe end is duped by binder call. Local copy is not needed anymore
+ IoUtils.closeQuietly(remotePipe);
+ }
+ }
+
+ /**
+ * Called when the {@link #mBackupReader} finished reading the file.
+ *
+ * @param backup The data read
+ */
+ @Override
+ public void accept(byte[] backup) {
+ long token = Binder.clearCallingIdentity();
+ try {
+ mExecutor.execute(() -> mCallback.onGetRuntimePermissionsBackup(backup));
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+
+ finish();
+ }
+ }
+
+ /**
* Request for {@link #getAppPermissions}
*/
private static final class PendingGetAppPermissionRequest extends
diff --git a/core/java/android/permission/PermissionControllerService.java b/core/java/android/permission/PermissionControllerService.java
index 75d61e6..10e8c8d 100644
--- a/core/java/android/permission/PermissionControllerService.java
+++ b/core/java/android/permission/PermissionControllerService.java
@@ -33,11 +33,16 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
import android.os.RemoteCallback;
+import android.os.UserHandle;
import android.util.ArrayMap;
+import android.util.Log;
import com.android.internal.util.Preconditions;
+import java.io.IOException;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -51,6 +56,7 @@
*/
@SystemApi
public abstract class PermissionControllerService extends Service {
+ private static final String LOG_TAG = PermissionControllerService.class.getSimpleName();
/**
* The {@link Intent} action that must be declared as handled by a service
@@ -83,6 +89,15 @@
@PermissionControllerManager.Reason int reason, @NonNull String callerPackageName);
/**
+ * Create a backup of the runtime permissions.
+ *
+ * @param user The user to back up
+ * @param out The stream to write the backup to
+ */
+ public abstract void onGetRuntimePermissionsBackup(@NonNull UserHandle user,
+ @NonNull OutputStream out);
+
+ /**
* Gets the runtime permissions for an app.
*
* @param packageName The package for which to query.
@@ -163,6 +178,18 @@
}
@Override
+ public void getRuntimePermissionBackup(UserHandle user, ParcelFileDescriptor pipe) {
+ checkNotNull(user);
+ checkNotNull(pipe);
+
+ enforceCallingPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS, null);
+
+ mHandler.sendMessage(obtainMessage(
+ PermissionControllerService::getRuntimePermissionsBackup,
+ PermissionControllerService.this, user, pipe));
+ }
+
+ @Override
public void getAppPermissions(String packageName, RemoteCallback callback) {
checkNotNull(packageName, "packageName");
checkNotNull(callback, "callback");
@@ -237,6 +264,15 @@
callback.sendResult(result);
}
+ private void getRuntimePermissionsBackup(@NonNull UserHandle user,
+ @NonNull ParcelFileDescriptor outFile) {
+ try (OutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream(outFile)) {
+ onGetRuntimePermissionsBackup(user, out);
+ } catch (IOException e) {
+ Log.e(LOG_TAG, "Could not open pipe to write backup tp", e);
+ }
+ }
+
private void getAppPermissions(@NonNull String packageName, @NonNull RemoteCallback callback) {
List<RuntimePermissionPresentationInfo> permissions = onGetAppPermissions(packageName);
if (permissions != null && !permissions.isEmpty()) {
diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java
index c795895..9015703 100644
--- a/core/java/android/provider/DeviceConfig.java
+++ b/core/java/android/provider/DeviceConfig.java
@@ -16,9 +16,13 @@
package android.provider;
+import static android.Manifest.permission.READ_DEVICE_CONFIG;
+import static android.Manifest.permission.WRITE_DEVICE_CONFIG;
+
import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.app.ActivityThread;
import android.content.ContentResolver;
@@ -49,6 +53,31 @@
public static final Uri CONTENT_URI = Uri.parse("content://" + Settings.AUTHORITY + "/config");
/**
+ * Namespace for all Game Driver features.
+ * @hide
+ */
+ @SystemApi
+ public static final String NAMESPACE_GAME_DRIVER = "game_driver";
+
+ /**
+ * Namespace for autofill feature that provides suggestions across all apps when
+ * the user interacts with input fields.
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final String NAMESPACE_AUTOFILL = "autofill";
+
+ /**
+ * Namespace for content capture feature used by on-device machine intelligence
+ * to provide suggestions in a privacy-safe manner.
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
+
+ /**
* Namespace for all input-related features that are used at the native level.
* These features are applied at reboot.
*
@@ -78,6 +107,7 @@
* @hide
*/
@SystemApi
+ @RequiresPermission(READ_DEVICE_CONFIG)
public static String getProperty(String namespace, String name) {
ContentResolver contentResolver = ActivityThread.currentApplication().getContentResolver();
String compositeName = createCompositeName(namespace, name);
@@ -105,6 +135,7 @@
* @hide
*/
@SystemApi
+ @RequiresPermission(WRITE_DEVICE_CONFIG)
public static boolean setProperty(
String namespace, String name, String value, boolean makeDefault) {
ContentResolver contentResolver = ActivityThread.currentApplication().getContentResolver();
@@ -125,6 +156,7 @@
* @hide
*/
@SystemApi
+ @RequiresPermission(WRITE_DEVICE_CONFIG)
public static void resetToDefaults(@ResetMode int resetMode, @Nullable String namespace) {
ContentResolver contentResolver = ActivityThread.currentApplication().getContentResolver();
Settings.Config.resetToDefaults(contentResolver, resetMode, namespace);
@@ -146,10 +178,12 @@
* @hide
*/
@SystemApi
+ @RequiresPermission(READ_DEVICE_CONFIG)
public static void addOnPropertyChangedListener(
@NonNull String namespace,
@NonNull @CallbackExecutor Executor executor,
@NonNull OnPropertyChangedListener onPropertyChangedListener) {
+ // TODO enforce READ_DEVICE_CONFIG permission
synchronized (sLock) {
Pair<String, Executor> oldNamespace = sListeners.get(onPropertyChangedListener);
if (oldNamespace == null) {
diff --git a/core/java/android/provider/FontsContract.java b/core/java/android/provider/FontsContract.java
index 8e37559..e931826 100644
--- a/core/java/android/provider/FontsContract.java
+++ b/core/java/android/provider/FontsContract.java
@@ -34,6 +34,7 @@
import android.graphics.fonts.FontStyle;
import android.graphics.fonts.FontVariationAxis;
import android.net.Uri;
+import android.os.Build.VERSION_CODES;
import android.os.CancellationSignal;
import android.os.Handler;
import android.os.HandlerThread;
@@ -651,7 +652,16 @@
if (familyBuilder == null) {
familyBuilder = new FontFamily.Builder(font);
} else {
- familyBuilder.addFont(font);
+ try {
+ familyBuilder.addFont(font);
+ } catch (IllegalArgumentException e) {
+ if (context.getApplicationInfo().targetSdkVersion <= VERSION_CODES.P) {
+ // Surpress the IllegalArgumentException for keeping the backward
+ // compatibility.
+ continue;
+ }
+ throw e;
+ }
}
} catch (IOException e) {
continue;
diff --git a/core/java/android/provider/MediaStore.java b/core/java/android/provider/MediaStore.java
index cdbc979..3a49986 100644
--- a/core/java/android/provider/MediaStore.java
+++ b/core/java/android/provider/MediaStore.java
@@ -46,6 +46,7 @@
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Environment;
+import android.os.FileUtils;
import android.os.OperationCanceledException;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
@@ -86,8 +87,10 @@
/** A content:// style uri to the authority for the media provider */
public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
- private static final String VOLUME_INTERNAL = "internal";
- private static final String VOLUME_EXTERNAL = "external";
+ /** {@hide} */
+ public static final String VOLUME_INTERNAL = "internal";
+ /** {@hide} */
+ public static final String VOLUME_EXTERNAL = "external";
/**
* The method name used by the media scanner and mtp to tell the media provider to
@@ -1027,7 +1030,7 @@
/** @hide */
public static final Uri getContentUriForPath(String path) {
- return getContentUri(getVolumeNameForPath(path));
+ return getContentUri(getVolumeName(new File(path)));
}
/**
@@ -1197,7 +1200,7 @@
/** @hide */
public static Uri getContentUriForPath(@NonNull String path) {
- return getContentUri(getVolumeNameForPath(path));
+ return getContentUri(getVolumeName(new File(path)));
}
/** @hide */
@@ -1211,16 +1214,20 @@
}
}
- private static String getVolumeNameForPath(@NonNull String path) {
- final StorageManager sm = AppGlobals.getInitialApplication()
- .getSystemService(StorageManager.class);
- final StorageVolume sv = sm.getStorageVolume(new File(path));
- if (sv != null) {
- if (sv.isPrimary()) {
- return VOLUME_EXTERNAL;
- } else {
- return sv.getUuid();
+ /** {@hide} */
+ public static @NonNull String getVolumeName(@NonNull File path) {
+ if (FileUtils.contains(Environment.getStorageDirectory(), path)) {
+ final StorageManager sm = AppGlobals.getInitialApplication()
+ .getSystemService(StorageManager.class);
+ final StorageVolume sv = sm.getStorageVolume(path);
+ if (sv != null) {
+ if (sv.isPrimary()) {
+ return VOLUME_EXTERNAL;
+ } else {
+ return checkArgumentVolumeName(sv.getUuid());
+ }
}
+ throw new IllegalStateException("Unknown volume at " + path);
} else {
return VOLUME_INTERNAL;
}
@@ -1991,7 +1998,7 @@
* access this path.
*/
public static @Nullable Uri getContentUriForPath(@NonNull String path) {
- return getContentUri(getVolumeNameForPath(path));
+ return getContentUri(getVolumeName(new File(path)));
}
/**
@@ -2908,7 +2915,7 @@
final Set<String> volumeNames = new ArraySet<>();
volumeNames.add(VOLUME_INTERNAL);
for (VolumeInfo vi : sm.getVolumes()) {
- if (vi.isMountedReadable()) {
+ if (vi.isVisibleForUser(UserHandle.myUserId()) && vi.isMountedReadable()) {
if (vi.isPrimary()) {
volumeNames.add(VOLUME_EXTERNAL);
} else {
@@ -2927,14 +2934,41 @@
if (uri.getAuthority().equals(AUTHORITY) && segments != null && segments.size() > 0) {
return segments.get(0);
} else {
- throw new IllegalArgumentException("Not a media Uri: " + uri);
+ throw new IllegalArgumentException("Missing volume name: " + uri);
}
}
/** {@hide} */
+ public static @NonNull String checkArgumentVolumeName(@NonNull String volumeName) {
+ if (TextUtils.isEmpty(volumeName)) {
+ throw new IllegalArgumentException();
+ }
+
+ if (VOLUME_INTERNAL.equals(volumeName)) {
+ return volumeName;
+ } else if (VOLUME_EXTERNAL.equals(volumeName)) {
+ return volumeName;
+ }
+
+ // When not one of the well-known values above, it must be a hex UUID
+ for (int i = 0; i < volumeName.length(); i++) {
+ final char c = volumeName.charAt(i);
+ if (('a' <= c && c <= 'f') || ('A' <= c && c <= 'F')
+ || ('0' <= c && c <= '9') || (c == '-')) {
+ continue;
+ } else {
+ throw new IllegalArgumentException("Invalid volume name: " + volumeName);
+ }
+ }
+ return volumeName;
+ }
+
+ /** {@hide} */
public static @NonNull File getVolumePath(@NonNull String volumeName)
throws FileNotFoundException {
- Objects.requireNonNull(volumeName);
+ if (TextUtils.isEmpty(volumeName)) {
+ throw new IllegalArgumentException();
+ }
if (VOLUME_INTERNAL.equals(volumeName)) {
return Environment.getDataDirectory();
@@ -2947,7 +2981,9 @@
for (VolumeInfo vi : sm.getVolumes()) {
if (Objects.equals(vi.getFsUuid(), volumeName)) {
final File path = vi.getPathForUser(UserHandle.myUserId());
- if (path == null) {
+ if (path != null) {
+ return path;
+ } else {
throw new FileNotFoundException("Failed to find path for " + vi);
}
}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index ef117ea..d5de13c 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -6026,6 +6026,12 @@
ANY_STRING_VALIDATOR;
/**
+ * Indicates which clock face to show on lock screen and AOD while docked.
+ * @hide
+ */
+ private static final String DOCKED_CLOCK_FACE = "docked_clock_face";
+
+ /**
* Set by the system to track if the user needs to see the call to action for
* the lockscreen notification policy.
* @hide
@@ -7391,6 +7397,14 @@
private static final Validator DOZE_DOUBLE_TAP_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR;
/**
+ * Whether the device should respond to the SLPI tap gesture.
+ * @hide
+ */
+ public static final String DOZE_TAP_SCREEN_GESTURE = "doze_tap_gesture";
+
+ private static final Validator DOZE_TAP_SCREEN_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR;
+
+ /**
* Gesture that wakes up the lock screen.
* @hide
*/
@@ -7407,6 +7421,22 @@
private static final Validator DOZE_WAKE_SCREEN_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR;
/**
+ * Gesture that skips media.
+ * @hide
+ */
+ public static final String SKIP_GESTURE = "skip_gesture";
+
+ private static final Validator SKIP_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR;
+
+ /**
+ * Gesture that silences sound (alarms, notification, calls).
+ * @hide
+ */
+ public static final String SILENCE_GESTURE = "silence_gesture";
+
+ private static final Validator SILENCE_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR;
+
+ /**
* The current night mode that has been selected by the user. Owned
* and controlled by UiModeManagerService. Constants are as per
* UiModeManager.
@@ -7708,6 +7738,23 @@
public static final String TV_INPUT_CUSTOM_LABELS = "tv_input_custom_labels";
/**
+ * Whether TV app uses non-system inputs.
+ *
+ * <p>
+ * The value is boolean (1 or 0), where 1 means non-system TV inputs are allowed,
+ * and 0 means non-system TV inputs are not allowed.
+ *
+ * <p>
+ * Devices such as sound bars may have changed the system property allow_third_party_inputs
+ * to false so the TV Application only uses HDMI and other built in inputs. This setting
+ * allows user to override the default and have the TV Application use third party TV inputs
+ * available on play store.
+ *
+ * @hide
+ */
+ public static final String TV_APP_USES_NON_SYSTEM_INPUTS = "tv_app_uses_non_system_inputs";
+
+ /**
* Whether automatic routing of system audio to USB audio peripheral is disabled.
* The value is boolean (1 or 0), where 1 means automatic routing is disabled,
* and 0 means automatic routing is enabled.
@@ -8445,6 +8492,7 @@
DOZE_ALWAYS_ON,
DOZE_PICK_UP_GESTURE,
DOZE_DOUBLE_TAP_GESTURE,
+ DOZE_TAP_SCREEN_GESTURE,
DOZE_WAKE_LOCK_SCREEN_GESTURE,
DOZE_WAKE_SCREEN_GESTURE,
NFC_PAYMENT_DEFAULT_COMPONENT,
@@ -8483,6 +8531,8 @@
NOTIFICATION_NEW_INTERRUPTION_MODEL,
TRUST_AGENTS_EXTEND_UNLOCK,
LOCK_SCREEN_WHEN_TRUST_LOST,
+ SKIP_GESTURE,
+ SILENCE_GESTURE,
};
/**
@@ -8599,6 +8649,7 @@
VALIDATORS.put(DOZE_ALWAYS_ON, DOZE_ALWAYS_ON_VALIDATOR);
VALIDATORS.put(DOZE_PICK_UP_GESTURE, DOZE_PICK_UP_GESTURE_VALIDATOR);
VALIDATORS.put(DOZE_DOUBLE_TAP_GESTURE, DOZE_DOUBLE_TAP_GESTURE_VALIDATOR);
+ VALIDATORS.put(DOZE_TAP_SCREEN_GESTURE, DOZE_TAP_SCREEN_GESTURE_VALIDATOR);
VALIDATORS.put(DOZE_WAKE_LOCK_SCREEN_GESTURE, DOZE_WAKE_LOCK_SCREEN_GESTURE_VALIDATOR);
VALIDATORS.put(DOZE_WAKE_SCREEN_GESTURE, DOZE_WAKE_SCREEN_GESTURE_VALIDATOR);
VALIDATORS.put(NFC_PAYMENT_DEFAULT_COMPONENT, NFC_PAYMENT_DEFAULT_COMPONENT_VALIDATOR);
@@ -8650,6 +8701,8 @@
VALIDATORS.put(TRUST_AGENTS_EXTEND_UNLOCK, TRUST_AGENTS_EXTEND_UNLOCK_VALIDATOR);
VALIDATORS.put(LOCK_SCREEN_CUSTOM_CLOCK_FACE, LOCK_SCREEN_CUSTOM_CLOCK_FACE_VALIDATOR);
VALIDATORS.put(LOCK_SCREEN_WHEN_TRUST_LOST, LOCK_SCREEN_WHEN_TRUST_LOST_VALIDATOR);
+ VALIDATORS.put(SKIP_GESTURE, SKIP_GESTURE_VALIDATOR);
+ VALIDATORS.put(SILENCE_GESTURE, SILENCE_GESTURE_VALIDATOR);
}
/**
@@ -8681,10 +8734,10 @@
CLONE_TO_MANAGED_PROFILE.add(LOCATION_CHANGER);
CLONE_TO_MANAGED_PROFILE.add(LOCATION_MODE);
CLONE_TO_MANAGED_PROFILE.add(LOCATION_PROVIDERS_ALLOWED);
- CLONE_TO_MANAGED_PROFILE.add(SELECTED_INPUT_METHOD_SUBTYPE);
if (!InputMethodSystemProperty.PER_PROFILE_IME_ENABLED) {
CLONE_TO_MANAGED_PROFILE.add(DEFAULT_INPUT_METHOD);
CLONE_TO_MANAGED_PROFILE.add(ENABLED_INPUT_METHODS);
+ CLONE_TO_MANAGED_PROFILE.add(SELECTED_INPUT_METHOD_SUBTYPE);
CLONE_TO_MANAGED_PROFILE.add(SELECTED_SPELL_CHECKER);
CLONE_TO_MANAGED_PROFILE.add(SELECTED_SPELL_CHECKER_SUBTYPE);
}
@@ -9361,6 +9414,15 @@
"hdmi_system_audio_control_enabled";
/**
+ * Whether HDMI Routing Control feature is enabled. If enabled, the switch device will
+ * route to the correct input source on receiving Routing Control related messages. If
+ * disabled, you can only switch the input via controls on this device.
+ * @hide
+ */
+ public static final String HDMI_CEC_SWITCH_ENABLED =
+ "hdmi_cec_switch_enabled";
+
+ /**
* Whether TV will automatically turn on upon reception of the CEC command
* <Text View On> or <Image View On>. (0 = false, 1 = true)
*
@@ -10896,6 +10958,21 @@
public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type";
/**
+ * Whether to try cellular data recovery when a bad network is reported.
+ *
+ * @hide
+ */
+ public static final String DATA_STALL_RECOVERY_ON_BAD_NETWORK =
+ "data_stall_recovery_on_bad_network";
+
+ /**
+ * Minumim duration in millisecodns between cellular data recovery attempts
+ *
+ * @hide
+ */
+ public static final String MIN_DURATION_BETWEEN_RECOVERY_STEPS_IN_MS =
+ "min_duration_between_recovery_steps";
+ /**
* Whether network service discovery is enabled.
*
* @hide
@@ -11062,6 +11139,31 @@
/** {@hide} */
public static final String
BLUETOOTH_HEARING_AID_PRIORITY_PREFIX = "bluetooth_hearing_aid_priority_";
+ /**
+ * Enable/disable radio bug detection
+ *
+ * {@hide}
+ */
+ public static final String
+ ENABLE_RADIO_BUG_DETECTION = "enable_radio_bug_detection";
+
+ /**
+ * Count threshold of RIL wakelock timeout for radio bug detection
+ *
+ * {@hide}
+ */
+ public static final String
+ RADIO_BUG_WAKELOCK_TIMEOUT_COUNT_THRESHOLD =
+ "radio_bug_wakelock_timeout_count_threshold";
+
+ /**
+ * Count threshold of RIL system error for radio bug detection
+ *
+ * {@hide}
+ */
+ public static final String
+ RADIO_BUG_SYSTEM_ERROR_COUNT_THRESHOLD =
+ "radio_bug_system_error_count_threshold";
/**
* Activity manager specific settings.
@@ -11552,6 +11654,7 @@
* battery_level_collection_delay_ms (long)
* max_history_files (int)
* max_history_buffer_kb (int)
+ * battery_charged_delay_ms (int)
* </pre>
*
* <p>
@@ -11937,22 +12040,33 @@
"angle_gl_driver_selection_values";
/**
- * List of Apps selected to use Game Update Packages.
+ * Game Update Package global preference for all Apps.
+ * 0 = Default
+ * 1 = All Apps use Game Update Package
+ * 2 = All Apps use system graphics driver
+ * @hide
+ */
+ public static final String GUP_DEV_ALL_APPS = "gup_dev_all_apps";
+
+ /**
+ * List of Apps selected to use Game Update Package.
+ * i.e. <pkg1>,<pkg2>,...,<pkgN>
* @hide
*/
public static final String GUP_DEV_OPT_IN_APPS = "gup_dev_opt_in_apps";
/**
- * List of Apps selected not to use Game Update Packages.
+ * List of Apps selected not to use Game Update Package.
+ * i.e. <pkg1>,<pkg2>,...,<pkgN>
* @hide
*/
public static final String GUP_DEV_OPT_OUT_APPS = "gup_dev_opt_out_apps";
/**
- * Apps on the black list that are forbidden to useGame Update Package.
+ * Apps on the blacklist that are forbidden to use Game Update Package.
* @hide
*/
- public static final String GUP_BLACK_LIST = "gup_black_list";
+ public static final String GUP_BLACKLIST = "gup_blacklist";
/**
* Ordered GPU debug layer list for Vulkan
@@ -14033,7 +14147,7 @@
*
* @hide
*/
- // TODO(b/117663715): require a new read permission
+ @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
static String getString(ContentResolver resolver, String name) {
return sNameValueCache.getStringForUser(resolver, name, resolver.getUserId());
}
@@ -14056,8 +14170,7 @@
*
* @hide
*/
- // TODO(b/117663715): require a new write permission restricted to a single source
- @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
+ @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG)
static boolean putString(@NonNull ContentResolver resolver, @NonNull String name,
@Nullable String value, boolean makeDefault) {
return sNameValueCache.putStringForUser(resolver, name, value, null, makeDefault,
@@ -14079,7 +14192,7 @@
* @hide
*/
// TODO(b/117663715): require a new write permission restricted to a single source
- @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
+ @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG)
static void resetToDefaults(@NonNull ContentResolver resolver, @ResetMode int resetMode,
@Nullable String prefix) {
try {
diff --git a/core/java/android/security/keystore/recovery/RecoveryController.java b/core/java/android/security/keystore/recovery/RecoveryController.java
index 31a5962..c43a666 100644
--- a/core/java/android/security/keystore/recovery/RecoveryController.java
+++ b/core/java/android/security/keystore/recovery/RecoveryController.java
@@ -533,7 +533,10 @@
* service.
* @throws LockScreenRequiredException if the user does not have a lock screen set. A lock
* screen is required to generate recoverable keys.
+ *
+ * @deprecated Use the method {@link #generateKey(String, byte[])} instead.
*/
+ @Deprecated
@RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE)
public @NonNull Key generateKey(@NonNull String alias) throws InternalRecoveryServiceException,
LockScreenRequiredException {
@@ -556,6 +559,47 @@
}
/**
+ * Generates a recoverable key with the given {@code alias} and {@code metadata}.
+ *
+ * <p>The metadata should contain any data that needs to be cryptographically bound to the
+ * generated key, but does not need to be encrypted by the key. For example, the metadata can
+ * be a byte string describing the algorithms and non-secret parameters to be used with the
+ * key. The supplied metadata can later be obtained via
+ * {@link WrappedApplicationKey#getMetadata()}.
+ *
+ * <p>During the key recovery process, the same metadata has to be supplied via
+ * {@link WrappedApplicationKey.Builder#setMetadata(byte[])}; otherwise, the recovery process
+ * will fail due to the checking of the cryptographic binding. This can help prevent
+ * potential attacks that try to swap key materials on the backup server and trick the
+ * application to use keys with different algorithms or parameters.
+ *
+ * @throws InternalRecoveryServiceException if an unexpected error occurred in the recovery
+ * service.
+ * @throws LockScreenRequiredException if the user does not have a lock screen set. A lock
+ * screen is required to generate recoverable keys.
+ */
+ @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE)
+ public @NonNull Key generateKey(@NonNull String alias, @Nullable byte[] metadata)
+ throws InternalRecoveryServiceException, LockScreenRequiredException {
+ try {
+ String grantAlias = mBinder.generateKeyWithMetadata(alias, metadata);
+ if (grantAlias == null) {
+ throw new InternalRecoveryServiceException("null grant alias");
+ }
+ return getKeyFromGrant(grantAlias);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ } catch (UnrecoverableKeyException e) {
+ throw new InternalRecoveryServiceException("Failed to get key from keystore", e);
+ } catch (ServiceSpecificException e) {
+ if (e.errorCode == ERROR_INSECURE_USER) {
+ throw new LockScreenRequiredException(e.getMessage());
+ }
+ throw wrapUnexpectedServiceSpecificException(e);
+ }
+ }
+
+ /**
* Imports a 256-bit recoverable AES key with the given {@code alias} and the raw bytes {@code
* keyBytes}.
*
@@ -564,7 +608,9 @@
* @throws LockScreenRequiredException if the user does not have a lock screen set. A lock
* screen is required to generate recoverable keys.
*
+ * @deprecated Use the method {@link #importKey(String, byte[], byte[])} instead.
*/
+ @Deprecated
@RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE)
public @NonNull Key importKey(@NonNull String alias, @NonNull byte[] keyBytes)
throws InternalRecoveryServiceException, LockScreenRequiredException {
@@ -587,6 +633,49 @@
}
/**
+ * Imports a recoverable 256-bit AES key with the given {@code alias}, the raw bytes {@code
+ * keyBytes}, and the {@code metadata}.
+ *
+ * <p>The metadata should contain any data that needs to be cryptographically bound to the
+ * imported key, but does not need to be encrypted by the key. For example, the metadata can
+ * be a byte string describing the algorithms and non-secret parameters to be used with the
+ * key. The supplied metadata can later be obtained via
+ * {@link WrappedApplicationKey#getMetadata()}.
+ *
+ * <p>During the key recovery process, the same metadata has to be supplied via
+ * {@link WrappedApplicationKey.Builder#setMetadata(byte[])}; otherwise, the recovery process
+ * will fail due to the checking of the cryptographic binding. This can help prevent
+ * potential attacks that try to swap key materials on the backup server and trick the
+ * application to use keys with different algorithms or parameters.
+ *
+ * @throws InternalRecoveryServiceException if an unexpected error occurred in the recovery
+ * service.
+ * @throws LockScreenRequiredException if the user does not have a lock screen set. A lock
+ * screen is required to generate recoverable keys.
+ */
+ @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE)
+ public @NonNull Key importKey(@NonNull String alias, @NonNull byte[] keyBytes,
+ @Nullable byte[] metadata)
+ throws InternalRecoveryServiceException, LockScreenRequiredException {
+ try {
+ String grantAlias = mBinder.importKeyWithMetadata(alias, keyBytes, metadata);
+ if (grantAlias == null) {
+ throw new InternalRecoveryServiceException("Null grant alias");
+ }
+ return getKeyFromGrant(grantAlias);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ } catch (UnrecoverableKeyException e) {
+ throw new InternalRecoveryServiceException("Failed to get key from keystore", e);
+ } catch (ServiceSpecificException e) {
+ if (e.errorCode == ERROR_INSECURE_USER) {
+ throw new LockScreenRequiredException(e.getMessage());
+ }
+ throw wrapUnexpectedServiceSpecificException(e);
+ }
+ }
+
+ /**
* Gets a key called {@code alias} from the recoverable key store.
*
* @param alias The key alias.
diff --git a/core/java/android/security/keystore/recovery/WrappedApplicationKey.java b/core/java/android/security/keystore/recovery/WrappedApplicationKey.java
index ae4448f..dbfd655 100644
--- a/core/java/android/security/keystore/recovery/WrappedApplicationKey.java
+++ b/core/java/android/security/keystore/recovery/WrappedApplicationKey.java
@@ -17,6 +17,7 @@
package android.security.keystore.recovery;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -41,6 +42,8 @@
private String mAlias;
// The only supported format is AES-256 symmetric key.
private byte[] mEncryptedKeyMaterial;
+ // The optional metadata that's authenticated (but unencrypted) with the key material.
+ private byte[] mMetadata;
// IMPORTANT! PLEASE READ!
// -----------------------
@@ -80,13 +83,23 @@
* @param encryptedKeyMaterial The key material
* @return This builder
*/
-
public Builder setEncryptedKeyMaterial(@NonNull byte[] encryptedKeyMaterial) {
mInstance.mEncryptedKeyMaterial = encryptedKeyMaterial;
return this;
}
/**
+ * Sets the metadata that is authenticated (but unecrypted) with the key material.
+ *
+ * @param metadata The metadata
+ * @return This builder
+ */
+ public Builder setMetadata(@Nullable byte[] metadata) {
+ mInstance.mMetadata = metadata;
+ return this;
+ }
+
+ /**
* Creates a new {@link WrappedApplicationKey} instance.
*
* @return new instance
@@ -102,9 +115,10 @@
private WrappedApplicationKey() { }
/**
- * Deprecated - consider using Builder.
+ * @deprecated Use the builder instead.
* @hide
*/
+ @Deprecated
public WrappedApplicationKey(@NonNull String alias, @NonNull byte[] encryptedKeyMaterial) {
mAlias = Preconditions.checkNotNull(alias);
mEncryptedKeyMaterial = Preconditions.checkNotNull(encryptedKeyMaterial);
@@ -124,6 +138,11 @@
return mEncryptedKeyMaterial;
}
+ /** The metadata with the key. */
+ public @Nullable byte[] getMetadata() {
+ return mMetadata;
+ }
+
public static final Parcelable.Creator<WrappedApplicationKey> CREATOR =
new Parcelable.Creator<WrappedApplicationKey>() {
public WrappedApplicationKey createFromParcel(Parcel in) {
@@ -139,6 +158,7 @@
public void writeToParcel(Parcel out, int flags) {
out.writeString(mAlias);
out.writeByteArray(mEncryptedKeyMaterial);
+ out.writeByteArray(mMetadata);
}
/**
@@ -147,6 +167,10 @@
protected WrappedApplicationKey(Parcel in) {
mAlias = in.readString();
mEncryptedKeyMaterial = in.createByteArray();
+ // Check if there is still data to be read.
+ if (in.dataAvail() > 0) {
+ mMetadata = in.createByteArray();
+ }
}
@Override
diff --git a/core/java/android/service/attention/AttentionService.java b/core/java/android/service/attention/AttentionService.java
new file mode 100644
index 0000000..f6e448dc
--- /dev/null
+++ b/core/java/android/service/attention/AttentionService.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2019 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 android.service.attention;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.android.internal.util.Preconditions;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+
+/**
+ * Abstract base class for Attention service.
+ *
+ * <p> An attention service provides attention estimation related features to the system.
+ * The system's default AttentionService implementation is configured in
+ * {@code config_AttentionComponent}. If this config has no value, a stub is returned.
+ *
+ * See: {@link AttentionManagerService}.
+ *
+ * <pre>
+ * {@literal
+ * <service android:name=".YourAttentionService"
+ * android:permission="android.permission.BIND_ATTENTION_SERVICE">
+ * </service>}
+ * </pre>
+ *
+ * @hide
+ */
+@SystemApi
+public abstract class AttentionService extends Service {
+ /**
+ * The {@link Intent} that must be declared as handled by the service. To be supported, the
+ * service must also require the {@link android.Manifest.permission#BIND_ATTENTION_SERVICE}
+ * permission so that other applications can not abuse it.
+ */
+ public static final String SERVICE_INTERFACE =
+ "android.service.attention.AttentionService";
+
+ /** Attention is absent. */
+ public static final int ATTENTION_SUCCESS_ABSENT = 0;
+
+ /** Attention is present. */
+ public static final int ATTENTION_SUCCESS_PRESENT = 1;
+
+ /** Preempted by other camera user. */
+ public static final int ATTENTION_FAILURE_PREEMPTED = 2;
+
+ /** Preempted by other camera user. */
+ public static final int ATTENTION_FAILURE_TIMED_OUT = 3;
+
+ /** Unknown reasons for failing to determine the attention. */
+ public static final int ATTENTION_FAILURE_UNKNOWN = 4;
+
+ /**
+ * Result codes for when attention check was successful.
+ *
+ * @hide
+ */
+ @IntDef(prefix = {"ATTENTION_SUCCESS_"}, value = {ATTENTION_SUCCESS_ABSENT,
+ ATTENTION_SUCCESS_PRESENT})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface AttentionSuccessCodes {
+ }
+
+ /**
+ * Result codes explaining why attention check was not successful.
+ *
+ * @hide
+ */
+ @IntDef(prefix = {"ATTENTION_FAILURE_"}, value = {ATTENTION_FAILURE_PREEMPTED,
+ ATTENTION_FAILURE_TIMED_OUT, ATTENTION_FAILURE_UNKNOWN})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface AttentionFailureCodes {
+ }
+
+ private final IAttentionService.Stub mBinder = new IAttentionService.Stub() {
+
+ /** {@inheritDoc} */
+ @Override
+ public void checkAttention(int requestCode, IAttentionCallback callback) {
+ Preconditions.checkNotNull(callback);
+ AttentionService.this.onCheckAttention(requestCode, new AttentionCallback(callback));
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void cancelAttentionCheck(int requestCode) {
+ AttentionService.this.onCancelAttentionCheck(requestCode);
+ }
+ };
+
+ @Override
+ public final IBinder onBind(Intent intent) {
+ if (SERVICE_INTERFACE.equals(intent.getAction())) {
+ return mBinder;
+ }
+ return null;
+ }
+
+ /**
+ * Checks the user attention and calls into the provided callback.
+ *
+ * @param requestCode an identifier that could be used to cancel the request
+ * @param callback the callback to return the result to
+ */
+ public abstract void onCheckAttention(int requestCode, @NonNull AttentionCallback callback);
+
+ /** Cancels the attention check for a given request code. */
+ public abstract void onCancelAttentionCheck(int requestCode);
+
+
+ /** Callbacks for AttentionService results. */
+ public static final class AttentionCallback {
+ private final IAttentionCallback mCallback;
+
+ private AttentionCallback(IAttentionCallback callback) {
+ mCallback = callback;
+ }
+
+ /** Returns the result. */
+ public void onSuccess(int requestCode, @AttentionSuccessCodes int result, long timestamp) {
+ try {
+ mCallback.onSuccess(requestCode, result, timestamp);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /** Signals a failure. */
+ public void onFailure(int requestCode, @AttentionFailureCodes int error) {
+ try {
+ mCallback.onFailure(requestCode, error);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+ }
+}
diff --git a/core/java/android/hardware/location/ActivityChangedEvent.aidl b/core/java/android/service/attention/IAttentionCallback.aidl
similarity index 60%
copy from core/java/android/hardware/location/ActivityChangedEvent.aidl
copy to core/java/android/service/attention/IAttentionCallback.aidl
index 21f2445..0e8a1e7 100644
--- a/core/java/android/hardware/location/ActivityChangedEvent.aidl
+++ b/core/java/android/service/attention/IAttentionCallback.aidl
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
+ /*
+ * Copyright (C) 2019 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.
@@ -11,9 +11,17 @@
* 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
+ * limitations under the License.
*/
-package android.hardware.location;
+package android.service.attention;
-parcelable ActivityChangedEvent;
\ No newline at end of file
+/**
+ * Callback for onCheckAttention request.
+ *
+ * @hide
+ */
+oneway interface IAttentionCallback {
+ void onSuccess(int requestCode, int result, long timestamp);
+ void onFailure(int requestCode, int error);
+}
diff --git a/core/java/android/service/attention/IAttentionService.aidl b/core/java/android/service/attention/IAttentionService.aidl
new file mode 100644
index 0000000..c3b6f48
--- /dev/null
+++ b/core/java/android/service/attention/IAttentionService.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2019 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 android.service.attention;
+
+import android.service.attention.IAttentionCallback;
+
+/**
+ * Interface for a concrete implementation to provide to the AttentionManagerService.
+ *
+ * @hide
+ */
+oneway interface IAttentionService {
+ void checkAttention(int requestCode, IAttentionCallback callback);
+ void cancelAttentionCheck(int requestCode);
+}
\ No newline at end of file
diff --git a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
index 0116961..aaba85b 100644
--- a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
+++ b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
@@ -42,6 +42,7 @@
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillValue;
import android.view.autofill.IAugmentedAutofillManagerClient;
+import android.view.autofill.IAutofillWindowPresenter;
import com.android.internal.annotations.GuardedBy;
@@ -95,10 +96,10 @@
}
@Override
- public void onDestroyFillWindowRequest(int sessionId) {
+ public void onDestroyAllFillWindowsRequest() {
mHandler.sendMessage(
- obtainMessage(AugmentedAutofillService::handleOnDestroyFillWindowRequest,
- AugmentedAutofillService.this, sessionId));
+ obtainMessage(AugmentedAutofillService::handleOnDestroyAllFillWindowsRequest,
+ AugmentedAutofillService.this));
}
};
@@ -185,18 +186,21 @@
new FillCallback(proxy));
}
- private void handleOnDestroyFillWindowRequest(@NonNull int sessionId) {
- AutofillProxy proxy = null;
+ private void handleOnDestroyAllFillWindowsRequest() {
if (mAutofillProxies != null) {
- proxy = mAutofillProxies.get(sessionId);
+ final int size = mAutofillProxies.size();
+ for (int i = 0; i < size; i++) {
+ final int sessionId = mAutofillProxies.keyAt(i);
+ final AutofillProxy proxy = mAutofillProxies.valueAt(i);
+ if (proxy == null) {
+ // TODO(b/111330312): this might be fine, in which case we should logv it
+ Log.w(TAG, "No proxy for session " + sessionId);
+ return;
+ }
+ proxy.destroy();
+ }
+ mAutofillProxies.clear();
}
- if (proxy == null) {
- // TODO(b/111330312): this might be fine, in which case we should logv it
- Log.w(TAG, "No proxy for session " + sessionId);
- return;
- }
- proxy.destroy();
- mAutofillProxies.remove(sessionId);
}
private void handleOnUnbind() {
@@ -350,6 +354,16 @@
}
}
+ public void requestShowFillUi(int width, int height, Rect anchorBounds,
+ IAutofillWindowPresenter presenter) throws RemoteException {
+ mClient.requestShowFillUi(mSessionId, mFocusedId, width, height, anchorBounds,
+ presenter);
+ }
+
+ public void requestHideFillUi() throws RemoteException {
+ mClient.requestHideFillUi(mSessionId, mFocusedId);
+ }
+
private void update(@NonNull AutofillId focusedId, @NonNull AutofillValue focusedValue) {
synchronized (mLock) {
// TODO(b/111330312): should we close the popupwindow if the focused id changed?
diff --git a/core/java/android/service/autofill/augmented/FillWindow.java b/core/java/android/service/autofill/augmented/FillWindow.java
index 33b88e42..51b0f01 100644
--- a/core/java/android/service/autofill/augmented/FillWindow.java
+++ b/core/java/android/service/autofill/augmented/FillWindow.java
@@ -16,22 +16,25 @@
package android.service.autofill.augmented;
import static android.service.autofill.augmented.AugmentedAutofillService.DEBUG;
+import static android.service.autofill.augmented.AugmentedAutofillService.VERBOSE;
+
+import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
import android.annotation.LongDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.annotation.TestApi;
-import android.app.Dialog;
import android.graphics.Rect;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.RemoteException;
import android.service.autofill.augmented.AugmentedAutofillService.AutofillProxy;
import android.service.autofill.augmented.PresentationParams.Area;
import android.util.Log;
-import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
-import android.view.ViewGroup;
-import android.view.Window;
import android.view.WindowManager;
+import android.view.autofill.IAutofillWindowPresenter;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.Preconditions;
@@ -71,7 +74,7 @@
/** Indicates the data being shown is a physical address */
public static final long FLAG_METADATA_ADDRESS = 0x1;
- // TODO(b/111330312): add moar flags
+ // TODO(b/111330312): add more flags
/** @hide */
@LongDef(prefix = { "FLAG" }, value = {
@@ -83,8 +86,17 @@
private final Object mLock = new Object();
private final CloseGuard mCloseGuard = CloseGuard.get();
+ private final @NonNull Handler mUiThreadHandler = new Handler(Looper.getMainLooper());
+ private final @NonNull FillWindowPresenter mFillWindowPresenter = new FillWindowPresenter();
+
@GuardedBy("mLock")
- private Dialog mDialog;
+ private WindowManager mWm;
+ @GuardedBy("mLock")
+ private View mFillView;
+ @GuardedBy("mLock")
+ private boolean mShowing;
+ @GuardedBy("mLock")
+ private Rect mBounds;
@GuardedBy("mLock")
private boolean mDestroyed;
@@ -140,51 +152,28 @@
// window instead of destroying. In fact, it might be better to allocate a full window
// initially, which is transparent (and let touches get through) everywhere but in the
// rect boundaries.
- destroy();
// TODO(b/111330312): make sure all touch events are handled, window is always closed,
// etc.
- mDialog = new Dialog(rootView.getContext()) {
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
- FillWindow.this.destroy();
+ mWm = rootView.getContext().getSystemService(WindowManager.class);
+ mFillView = rootView;
+ // Listen to the touch outside to destroy the window when typing is detected.
+ mFillView.setOnTouchListener(
+ (view, motionEvent) -> {
+ if (motionEvent.getAction() == MotionEvent.ACTION_OUTSIDE) {
+ if (VERBOSE) Log.v(TAG, "Outside touch detected, hiding the window");
+ hide();
+ }
+ return false;
}
- return false;
- }
- };
- mCloseGuard.open("destroy");
- final Window window = mDialog.getWindow();
- window.setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
- // Makes sure touch outside the dialog is received by the window behind the dialog.
- window.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
- // Makes sure the touch outside the dialog is received by the dialog to dismiss it.
- window.addFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
- // Makes sure keyboard shows up.
- window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
-
- final int height = rect.bottom - rect.top;
- final int width = rect.right - rect.left;
- final WindowManager.LayoutParams windowParams = window.getAttributes();
- windowParams.gravity = Gravity.TOP | Gravity.LEFT;
- windowParams.y = rect.top + height;
- windowParams.height = height;
- windowParams.x = rect.left;
- windowParams.width = width;
-
- window.setAttributes(windowParams);
- window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
- window.setBackgroundDrawableResource(android.R.color.transparent);
-
- mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- final ViewGroup.LayoutParams diagParams = new ViewGroup.LayoutParams(width, height);
- mDialog.setContentView(rootView, diagParams);
-
+ );
+ mShowing = false;
+ mBounds = new Rect(area.getBounds());
if (DEBUG) {
Log.d(TAG, "Created FillWindow: params= " + smartSuggestion + " view=" + rootView);
}
-
+ mDestroyed = false;
mProxy.setFillWindow(this);
return true;
}
@@ -194,36 +183,87 @@
void show() {
// TODO(b/111330312): check if updated first / throw exception
if (DEBUG) Log.d(TAG, "show()");
-
synchronized (mLock) {
checkNotDestroyedLocked();
- if (mDialog == null) {
+ if (mWm == null || mFillView == null) {
throw new IllegalStateException("update() not called yet, or already destroyed()");
}
-
- mDialog.show();
if (mProxy != null) {
+ try {
+ mProxy.requestShowFillUi(mBounds.right - mBounds.left,
+ mBounds.bottom - mBounds.top,
+ /*anchorBounds=*/ null, mFillWindowPresenter);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Error requesting to show fill window", e);
+ }
mProxy.report(AutofillProxy.REPORT_EVENT_UI_SHOWN);
}
}
}
/**
+ * Hides the window.
+ *
+ * <p>The window is not destroyed and can be shown again
+ */
+ private void hide() {
+ if (DEBUG) Log.d(TAG, "hide()");
+ synchronized (mLock) {
+ checkNotDestroyedLocked();
+ if (mWm == null || mFillView == null) {
+ throw new IllegalStateException("update() not called yet, or already destroyed()");
+ }
+ if (mProxy != null && mShowing) {
+ try {
+ mProxy.requestHideFillUi();
+ } catch (RemoteException e) {
+ Log.w(TAG, "Error requesting to hide fill window", e);
+ }
+ }
+ }
+ }
+
+ private void handleShow(WindowManager.LayoutParams p) {
+ if (DEBUG) Log.d(TAG, "handleShow()");
+ synchronized (mLock) {
+ if (mWm != null && mFillView != null) {
+ p.flags |= WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
+ if (!mShowing) {
+ mWm.addView(mFillView, p);
+ mShowing = true;
+ } else {
+ mWm.updateViewLayout(mFillView, p);
+ }
+ }
+ }
+ }
+
+ private void handleHide() {
+ if (DEBUG) Log.d(TAG, "handleHide()");
+ synchronized (mLock) {
+ if (mWm != null && mFillView != null && mShowing) {
+ mWm.removeView(mFillView);
+ mShowing = false;
+ }
+ }
+ }
+
+ /**
* Destroys the window.
*
* <p>Once destroyed, this window cannot be used anymore
*/
public void destroy() {
- if (DEBUG) Log.d(TAG, "destroy(): mDestroyed=" + mDestroyed + " mDialog=" + mDialog);
-
- synchronized (this) {
- if (mDestroyed || mDialog == null) return;
-
- mDialog.dismiss();
- mDialog = null;
- if (mProxy != null) {
- mProxy.report(AutofillProxy.REPORT_EVENT_UI_DESTROYED);
- }
+ if (DEBUG) {
+ Log.d(TAG,
+ "destroy(): mDestroyed=" + mDestroyed + " mShowing=" + mShowing + " mFillView="
+ + mFillView);
+ }
+ synchronized (mLock) {
+ if (mDestroyed) return;
+ hide();
+ mProxy.report(AutofillProxy.REPORT_EVENT_UI_DESTROYED);
+ mDestroyed = true;
mCloseGuard.close();
}
}
@@ -250,11 +290,15 @@
public void dump(@NonNull String prefix, @NonNull PrintWriter pw) {
synchronized (this) {
pw.print(prefix); pw.print("destroyed: "); pw.println(mDestroyed);
- if (mDialog != null) {
- pw.print(prefix); pw.print("dialog: ");
- pw.println(mDialog.isShowing() ? "shown" : "hidden");
- pw.print(prefix); pw.print("window: ");
- pw.println(mDialog.getWindow().getAttributes());
+ if (mFillView != null) {
+ pw.print(prefix); pw.print("fill window: ");
+ pw.println(mShowing ? "shown" : "hidden");
+ pw.print(prefix); pw.print("fill view: ");
+ pw.println(mFillView);
+ pw.print(prefix); pw.print("mBounds: ");
+ pw.println(mBounds);
+ pw.print(prefix); pw.print("mWm: ");
+ pw.println(mWm);
}
}
}
@@ -264,4 +308,19 @@
public void close() throws Exception {
destroy();
}
+
+ private final class FillWindowPresenter extends IAutofillWindowPresenter.Stub {
+ @Override
+ public void show(WindowManager.LayoutParams p, Rect transitionEpicenter,
+ boolean fitsSystemWindows, int layoutDirection) {
+ if (DEBUG) Log.d(TAG, "FillWindowPresenter.show()");
+ mUiThreadHandler.sendMessage(obtainMessage(FillWindow::handleShow, FillWindow.this, p));
+ }
+
+ @Override
+ public void hide(Rect transitionEpicenter) {
+ if (DEBUG) Log.d(TAG, "FillWindowPresenter.hide()");
+ mUiThreadHandler.sendMessage(obtainMessage(FillWindow::handleHide, FillWindow.this));
+ }
+ }
}
diff --git a/core/java/android/service/autofill/augmented/IAugmentedAutofillService.aidl b/core/java/android/service/autofill/augmented/IAugmentedAutofillService.aidl
index b3ac2da1..fb6912a 100644
--- a/core/java/android/service/autofill/augmented/IAugmentedAutofillService.aidl
+++ b/core/java/android/service/autofill/augmented/IAugmentedAutofillService.aidl
@@ -36,5 +36,5 @@
in ComponentName activityComponent, in AutofillId focusedId,
in AutofillValue focusedValue, long requestTime, in IFillCallback callback);
- void onDestroyFillWindowRequest(int sessionId);
+ void onDestroyAllFillWindowsRequest();
}
diff --git a/core/java/android/service/contentcapture/ContentCaptureService.java b/core/java/android/service/contentcapture/ContentCaptureService.java
index e5e028d..302e1a6 100644
--- a/core/java/android/service/contentcapture/ContentCaptureService.java
+++ b/core/java/android/service/contentcapture/ContentCaptureService.java
@@ -48,6 +48,7 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -77,6 +78,7 @@
"android.service.contentcapture.ContentCaptureService";
private Handler mHandler;
+ private IContentCaptureServiceCallback mCallback;
/**
* Binder that receives calls from the system server.
@@ -84,9 +86,15 @@
private final IContentCaptureService mServerInterface = new IContentCaptureService.Stub() {
@Override
- public void onConnectedStateChanged(boolean state) {
- mHandler.sendMessage(obtainMessage(ContentCaptureService::handleOnConnectedStateChanged,
- ContentCaptureService.this, state));
+ public void onConnected(IBinder callback) {
+ mHandler.sendMessage(obtainMessage(ContentCaptureService::handleOnConnected,
+ ContentCaptureService.this, callback));
+ }
+
+ @Override
+ public void onDisconnected() {
+ mHandler.sendMessage(obtainMessage(ContentCaptureService::handleOnDisconnected,
+ ContentCaptureService.this));
}
@Override
@@ -166,7 +174,16 @@
*/
public final void setContentCaptureWhitelist(@Nullable List<String> packages,
@Nullable List<ComponentName> activities) {
- //TODO(b/122595322): implement
+ final IContentCaptureServiceCallback callback = mCallback;
+ if (callback == null) {
+ Log.w(TAG, "setContentCaptureWhitelist(): no server callback");
+ return;
+ }
+ try {
+ callback.setContentCaptureWhitelist(packages, activities);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
}
/**
@@ -177,7 +194,16 @@
*/
public final void setActivityContentCaptureEnabled(@NonNull ComponentName activity,
boolean enabled) {
- //TODO(b/122595322): implement
+ final IContentCaptureServiceCallback callback = mCallback;
+ if (callback == null) {
+ Log.w(TAG, "setActivityContentCaptureEnabled(): no server callback");
+ return;
+ }
+ try {
+ callback.setActivityContentCaptureEnabled(activity, enabled);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
}
/**
@@ -188,7 +214,16 @@
*/
public final void setPackageContentCaptureEnabled(@NonNull String packageName,
boolean enabled) {
- //TODO(b/122595322): implement
+ final IContentCaptureServiceCallback callback = mCallback;
+ if (callback == null) {
+ Log.w(TAG, "setPackageContentCaptureEnabled(): no server callback");
+ return;
+ }
+ try {
+ callback.setPackageContentCaptureEnabled(packageName, enabled);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
}
/**
@@ -197,7 +232,12 @@
*/
@NonNull
public final Set<ComponentName> getContentCaptureDisabledActivities() {
- //TODO(b/122595322): implement
+ final IContentCaptureServiceCallback callback = mCallback;
+ if (callback == null) {
+ Log.w(TAG, "getContentCaptureDisabledActivities(): no server callback");
+ return Collections.emptySet();
+ }
+ //TODO(b/122595322): implement (using SyncResultReceiver)
return null;
}
@@ -207,7 +247,12 @@
*/
@NonNull
public final Set<String> getContentCaptureDisabledPackages() {
- //TODO(b/122595322): implement
+ final IContentCaptureServiceCallback callback = mCallback;
+ if (callback == null) {
+ Log.w(TAG, "getContentCaptureDisabledPackages(): no server callback");
+ return Collections.emptySet();
+ }
+ //TODO(b/122595322): implement (using SyncResultReceiver)
return null;
}
@@ -307,12 +352,14 @@
}
}
- private void handleOnConnectedStateChanged(boolean state) {
- if (state) {
- onConnected();
- } else {
- onDisconnected();
- }
+ private void handleOnConnected(@NonNull IBinder callback) {
+ mCallback = IContentCaptureServiceCallback.Stub.asInterface(callback);
+ onConnected();
+ }
+
+ private void handleOnDisconnected() {
+ onDisconnected();
+ mCallback = null;
}
//TODO(b/111276913): consider caching the InteractionSessionId for the lifetime of the session,
@@ -323,15 +370,21 @@
mSessionUids.put(sessionId, uid);
onCreateContentCaptureSession(context, new ContentCaptureSessionId(sessionId));
- final int flags = context.getFlags();
- if ((flags & ContentCaptureContext.FLAG_DISABLED_BY_FLAG_SECURE) != 0) {
- setClientState(clientReceiver, ContentCaptureSession.STATE_DISABLED_BY_FLAG_SECURE,
- mClientInterface.asBinder());
- return;
+ final int clientFlags = context.getFlags();
+ int stateFlags = 0;
+ if ((clientFlags & ContentCaptureContext.FLAG_DISABLED_BY_FLAG_SECURE) != 0) {
+ stateFlags |= ContentCaptureSession.STATE_FLAG_SECURE;
}
+ if ((clientFlags & ContentCaptureContext.FLAG_DISABLED_BY_APP) != 0) {
+ stateFlags |= ContentCaptureSession.STATE_BY_APP;
+ }
+ if (stateFlags == 0) {
+ stateFlags = ContentCaptureSession.STATE_ACTIVE;
+ } else {
+ stateFlags |= ContentCaptureSession.STATE_DISABLED;
- setClientState(clientReceiver, ContentCaptureSession.STATE_ACTIVE,
- mClientInterface.asBinder());
+ }
+ setClientState(clientReceiver, stateFlags, mClientInterface.asBinder());
}
private void handleSendEvents(int uid,
diff --git a/core/java/android/service/contentcapture/IContentCaptureService.aidl b/core/java/android/service/contentcapture/IContentCaptureService.aidl
index 1b4cccf..a8dd213 100644
--- a/core/java/android/service/contentcapture/IContentCaptureService.aidl
+++ b/core/java/android/service/contentcapture/IContentCaptureService.aidl
@@ -16,6 +16,7 @@
package android.service.contentcapture;
+import android.os.IBinder;
import android.service.contentcapture.SnapshotData;
import android.view.contentcapture.ContentCaptureContext;
@@ -29,7 +30,8 @@
* @hide
*/
oneway interface IContentCaptureService {
- void onConnectedStateChanged(boolean state);
+ void onConnected(IBinder callback);
+ void onDisconnected();
void onSessionStarted(in ContentCaptureContext context, String sessionId, int uid,
in IResultReceiver clientReceiver);
void onSessionFinished(String sessionId);
diff --git a/core/java/android/service/contentcapture/IContentCaptureServiceCallback.aidl b/core/java/android/service/contentcapture/IContentCaptureServiceCallback.aidl
new file mode 100644
index 0000000..e84bd6f
--- /dev/null
+++ b/core/java/android/service/contentcapture/IContentCaptureServiceCallback.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 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 android.service.contentcapture;
+
+import android.content.ComponentName;
+import com.android.internal.os.IResultReceiver;
+
+import java.util.List;
+
+/**
+ * Interface from the Content Capture service to the system.
+ *
+ * @hide
+ */
+oneway interface IContentCaptureServiceCallback {
+ void setContentCaptureWhitelist(in List<String> packages, in List<ComponentName> activities);
+ void setActivityContentCaptureEnabled(in ComponentName activity, boolean enabled);
+ void setPackageContentCaptureEnabled(in String packageName, boolean enabled);
+ void getContentCaptureDisabledActivities(in IResultReceiver receiver);
+ void getContentCaptureDisabledPackages(in IResultReceiver receiver);
+}
diff --git a/core/java/android/service/euicc/EuiccService.java b/core/java/android/service/euicc/EuiccService.java
index 4be1f9c..4dc10cd 100644
--- a/core/java/android/service/euicc/EuiccService.java
+++ b/core/java/android/service/euicc/EuiccService.java
@@ -184,6 +184,12 @@
public static final String EXTRA_RESOLUTION_CONFIRMATION_CODE_RETRIED =
"android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE_RETRIED";
+ /**
+ * Intent extra set for resolution requests containing an int indicating the current card Id.
+ */
+ public static final String EXTRA_RESOLUTION_CARD_ID =
+ "android.service.euicc.extra.RESOLUTION_CARD_ID";
+
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = { "RESULT_" }, value = {
diff --git a/core/java/android/service/voice/VoiceInteractionSession.java b/core/java/android/service/voice/VoiceInteractionSession.java
index 163e3d5..6f27447 100644
--- a/core/java/android/service/voice/VoiceInteractionSession.java
+++ b/core/java/android/service/voice/VoiceInteractionSession.java
@@ -121,6 +121,12 @@
*/
public static final int SHOW_SOURCE_NOTIFICATION = 1 << 6;
+ /**
+ * Flag for use with {@link #onShow}: indicates that the voice interaction service was invoked
+ * from an Android automotive system Ui.
+ */
+ public static final int SHOW_SOURCE_AUTOMOTIVE_SYSTEM_UI = 1 << 7;
+
final Context mContext;
final HandlerCaller mHandlerCaller;
diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java
index 85b6b88..44353b1 100644
--- a/core/java/android/text/TextUtils.java
+++ b/core/java/android/text/TextUtils.java
@@ -33,8 +33,7 @@
import android.icu.util.ULocale;
import android.os.Parcel;
import android.os.Parcelable;
-import android.os.SystemProperties;
-import android.provider.Settings;
+import android.sysprop.DisplayProperties;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.AccessibilityClickableSpan;
import android.text.style.AccessibilityURLSpan;
@@ -2059,7 +2058,7 @@
return ((locale != null && !locale.equals(Locale.ROOT)
&& ULocale.forLocale(locale).isRightToLeft())
// If forcing into RTL layout mode, return RTL as default
- || SystemProperties.getBoolean(Settings.Global.DEVELOPMENT_FORCE_RTL, false))
+ || DisplayProperties.debug_force_rtl().orElse(false))
? View.LAYOUT_DIRECTION_RTL
: View.LAYOUT_DIRECTION_LTR;
}
diff --git a/core/java/android/text/util/Linkify.java b/core/java/android/text/util/Linkify.java
index eef7ea2..50e7ec3 100644
--- a/core/java/android/text/util/Linkify.java
+++ b/core/java/android/text/util/Linkify.java
@@ -37,7 +37,6 @@
import com.android.i18n.phonenumbers.PhoneNumberMatch;
import com.android.i18n.phonenumbers.PhoneNumberUtil;
import com.android.i18n.phonenumbers.PhoneNumberUtil.Leniency;
-import com.android.internal.annotations.GuardedBy;
import libcore.util.EmptyArray;
@@ -49,6 +48,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.Locale;
+import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -69,7 +69,6 @@
*
* @see MatchFilter
* @see TransformFilter
- * @see UrlSpanFactory
*/
public class Linkify {
@@ -228,44 +227,6 @@
}
/**
- * Factory class to create {@link URLSpan}s. While adding spans to a {@link Spannable},
- * {@link Linkify} will call {@link UrlSpanFactory#create(String)} function to create a
- * {@link URLSpan}.
- *
- * @see #addLinks(Spannable, int, UrlSpanFactory)
- * @see #addLinks(Spannable, Pattern, String, String[], MatchFilter, TransformFilter,
- * UrlSpanFactory)
- */
- public static class UrlSpanFactory {
- private static final Object sInstanceLock = new Object();
-
- @GuardedBy("sInstanceLock")
- private static volatile UrlSpanFactory sInstance = null;
-
- private static synchronized UrlSpanFactory getInstance() {
- if (sInstance == null) {
- synchronized (sInstanceLock) {
- if (sInstance == null) {
- sInstance = new UrlSpanFactory();
- }
- }
- }
- return sInstance;
- }
-
- /**
- * Factory function that will called by {@link Linkify} in order to create a
- * {@link URLSpan}.
- *
- * @param url URL found
- * @return a URLSpan instance
- */
- public URLSpan create(final String url) {
- return new URLSpan(url);
- }
- }
-
- /**
* Scans the text of the provided Spannable and turns all occurrences
* of the link types indicated in the mask into clickable links.
* If the mask is nonzero, it also removes any existing URLSpans
@@ -277,7 +238,7 @@
*
* @return True if at least one link is found and applied.
*
- * @see #addLinks(Spannable, int, UrlSpanFactory)
+ * @see #addLinks(Spannable, int, Function)
*/
public static final boolean addLinks(@NonNull Spannable text, @LinkifyMask int mask) {
return addLinks(text, mask, null, null);
@@ -292,11 +253,11 @@
*
* @param text Spannable whose text is to be marked-up with links
* @param mask mask to define which kinds of links will be searched
- * @param urlSpanFactory factory class used to create {@link URLSpan}s
+ * @param urlSpanFactory function used to create {@link URLSpan}s
* @return True if at least one link is found and applied.
*/
public static final boolean addLinks(@NonNull Spannable text, @LinkifyMask int mask,
- @Nullable UrlSpanFactory urlSpanFactory) {
+ @Nullable Function<String, URLSpan> urlSpanFactory) {
return addLinks(text, mask, null, urlSpanFactory);
}
@@ -309,11 +270,11 @@
* @param text Spannable whose text is to be marked-up with links
* @param mask mask to define which kinds of links will be searched
* @param context Context to be used while identifying phone numbers
- * @param urlSpanFactory factory class used to create {@link URLSpan}s
+ * @param urlSpanFactory function used to create {@link URLSpan}s
* @return true if at least one link is found and applied.
*/
private static boolean addLinks(@NonNull Spannable text, @LinkifyMask int mask,
- @Nullable Context context, @Nullable UrlSpanFactory urlSpanFactory) {
+ @Nullable Context context, @Nullable Function<String, URLSpan> urlSpanFactory) {
if (text != null && containsUnsupportedCharacters(text.toString())) {
android.util.EventLog.writeEvent(0x534e4554, "116321860", -1, "");
return false;
@@ -398,7 +359,7 @@
*
* @return True if at least one link is found and applied.
*
- * @see #addLinks(Spannable, int, UrlSpanFactory)
+ * @see #addLinks(Spannable, int, Function)
*/
public static final boolean addLinks(@NonNull TextView text, @LinkifyMask int mask) {
if (mask == 0) {
@@ -512,8 +473,7 @@
* @param pattern Regex pattern to be used for finding links
* @param scheme URL scheme string (eg <code>http://</code>) to be
* prepended to the links that do not start with this scheme.
- * @see #addLinks(Spannable, Pattern, String, String[], MatchFilter, TransformFilter,
- * UrlSpanFactory)
+ * @see #addLinks(Spannable, Pattern, String, String[], MatchFilter, TransformFilter, Function)
*/
public static final boolean addLinks(@NonNull Spannable text, @NonNull Pattern pattern,
@Nullable String scheme) {
@@ -534,8 +494,7 @@
* @param transformFilter Filter to allow the client code to update the link found.
*
* @return True if at least one link is found and applied.
- * @see #addLinks(Spannable, Pattern, String, String[], MatchFilter, TransformFilter,
- * UrlSpanFactory)
+ * @see #addLinks(Spannable, Pattern, String, String[], MatchFilter, TransformFilter, Function)
*/
public static final boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern,
@Nullable String scheme, @Nullable MatchFilter matchFilter,
@@ -560,8 +519,7 @@
*
* @return True if at least one link is found and applied.
*
- * @see #addLinks(Spannable, Pattern, String, String[], MatchFilter, TransformFilter,
- * UrlSpanFactory)
+ * @see #addLinks(Spannable, Pattern, String, String[], MatchFilter, TransformFilter, Function)
*/
public static final boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern,
@Nullable String defaultScheme, @Nullable String[] schemes,
@@ -584,14 +542,14 @@
* @param matchFilter the filter that is used to allow the client code additional control
* over which pattern matches are to be converted into links.
* @param transformFilter filter to allow the client code to update the link found.
- * @param urlSpanFactory factory class used to create {@link URLSpan}s
+ * @param urlSpanFactory function used to create {@link URLSpan}s
*
* @return True if at least one link is found and applied.
*/
public static final boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern,
@Nullable String defaultScheme, @Nullable String[] schemes,
@Nullable MatchFilter matchFilter, @Nullable TransformFilter transformFilter,
- @Nullable UrlSpanFactory urlSpanFactory) {
+ @Nullable Function<String, URLSpan> urlSpanFactory) {
if (spannable != null && containsUnsupportedCharacters(spannable.toString())) {
android.util.EventLog.writeEvent(0x534e4554, "116321860", -1, "");
return false;
@@ -634,11 +592,11 @@
}
private static void applyLink(String url, int start, int end, Spannable text,
- @Nullable UrlSpanFactory urlSpanFactory) {
+ @Nullable Function<String, URLSpan> urlSpanFactory) {
if (urlSpanFactory == null) {
- urlSpanFactory = UrlSpanFactory.getInstance();
+ urlSpanFactory = DEFAULT_SPAN_FACTORY;
}
- final URLSpan span = urlSpanFactory.create(url);
+ final URLSpan span = urlSpanFactory.apply(url);
text.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
@@ -805,6 +763,13 @@
i++;
}
}
+
+ /**
+ * Default factory function to create {@link URLSpan}s. While adding spans to a
+ * {@link Spannable}, {@link Linkify} will call this function to create a {@link URLSpan}.
+ */
+ private static final Function<String, URLSpan> DEFAULT_SPAN_FACTORY =
+ (String string) -> new URLSpan(string);
}
class LinkSpec {
diff --git a/core/java/android/util/Half.java b/core/java/android/util/Half.java
index 5718d99..70d049a 100644
--- a/core/java/android/util/Half.java
+++ b/core/java/android/util/Half.java
@@ -162,6 +162,7 @@
private static final int FP32_EXPONENT_MASK = 0xff;
private static final int FP32_SIGNIFICAND_MASK = 0x7fffff;
private static final int FP32_EXPONENT_BIAS = 127;
+ private static final int FP32_QNAN_MASK = 0x400000;
private static final int FP32_DENORMAL_MAGIC = 126 << 23;
private static final float FP32_DENORMAL_FLOAT = Float.intBitsToFloat(FP32_DENORMAL_MAGIC);
@@ -903,6 +904,9 @@
outM = m << 13;
if (e == 0x1f) { // Infinite or NaN
outE = 0xff;
+ if (outM != 0) { // SNaNs are quieted
+ outM |= FP32_QNAN_MASK;
+ }
} else {
outE = e - FP16_EXPONENT_BIAS + FP32_EXPONENT_BIAS;
}
diff --git a/core/java/android/util/TimeUtils.java b/core/java/android/util/TimeUtils.java
index 91bc3eb..e4c8eeb 100644
--- a/core/java/android/util/TimeUtils.java
+++ b/core/java/android/util/TimeUtils.java
@@ -43,6 +43,9 @@
/** {@hide} */
private static SimpleDateFormat sLoggingFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ /** @hide */
+ public static final SimpleDateFormat sDumpDateFormat =
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
/**
* Tries to return a time zone that would have had the specified offset
* and DST value at the specified moment in the specified country.
@@ -360,4 +363,28 @@
return sLoggingFormat.format(new Date(millis));
}
}
-}
+
+ /**
+ * Dump a currentTimeMillis style timestamp for dumpsys.
+ *
+ * @hide
+ */
+ public static void dumpTime(PrintWriter pw, long time) {
+ pw.print(sDumpDateFormat.format(new Date(time)));
+ }
+
+ /**
+ * Dump a currentTimeMillis style timestamp for dumpsys, with the delta time from now.
+ *
+ * @hide
+ */
+ public static void dumpTimeWithDelta(PrintWriter pw, long time, long now) {
+ pw.print(sDumpDateFormat.format(new Date(time)));
+ if (time == now) {
+ pw.print(" (now)");
+ } else {
+ pw.print(" (");
+ TimeUtils.formatDuration(time, now, pw);
+ pw.print(")");
+ }
+ }}
diff --git a/core/java/android/util/TypedValue.java b/core/java/android/util/TypedValue.java
index ea4464d..99106be 100644
--- a/core/java/android/util/TypedValue.java
+++ b/core/java/android/util/TypedValue.java
@@ -216,6 +216,12 @@
* */
public int density;
+ /**
+ * If the Value came from a style resource, this holds the corresponding style resource id
+ * against which the attribute was resolved.
+ */
+ public int sourceStyleResourceId;
+
/* ------------------------------------------------------------ */
/** Return the data for this value as a float. Only use for values
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 4ead34e..f58efc9 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -1391,11 +1391,17 @@
*/
public static final int HDR_TYPE_HLG = 3;
+ /**
+ * HDR10+ display.
+ */
+ public static final int HDR_TYPE_HDR10_PLUS = 4;
+
/** @hide */
@IntDef(prefix = { "HDR_TYPE_" }, value = {
HDR_TYPE_DOLBY_VISION,
HDR_TYPE_HDR10,
HDR_TYPE_HLG,
+ HDR_TYPE_HDR10_PLUS,
})
@Retention(RetentionPolicy.SOURCE)
public @interface HdrType {}
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
index 9cced4e..f9a46b1 100644
--- a/core/java/android/view/KeyEvent.java
+++ b/core/java/android/view/KeyEvent.java
@@ -818,7 +818,10 @@
public static final int KEYCODE_THUMBS_UP = 286;
/** Key code constant: Thumbs down key. Apps can use this to let user downvote content. */
public static final int KEYCODE_THUMBS_DOWN = 287;
- /** Key code constant: Consumed by system to switch current viewer profile. */
+ /**
+ * Key code constant: Used to switch current {@link android.accounts.Account} that is
+ * consuming content. May be consumed by system to set account globally.
+ */
public static final int KEYCODE_PROFILE_SWITCH = 288;
/**
diff --git a/core/java/android/view/LayoutInflater.java b/core/java/android/view/LayoutInflater.java
index ffd4156..dc7c343 100644
--- a/core/java/android/view/LayoutInflater.java
+++ b/core/java/android/view/LayoutInflater.java
@@ -22,6 +22,7 @@
import android.annotation.SystemService;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
@@ -29,6 +30,7 @@
import android.os.Build;
import android.os.Handler;
import android.os.Message;
+import android.os.SystemProperties;
import android.os.Trace;
import android.util.AttributeSet;
import android.util.Log;
@@ -38,6 +40,9 @@
import com.android.internal.R;
+import dalvik.system.PathClassLoader;
+import java.io.File;
+import java.lang.reflect.Method;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -72,6 +77,10 @@
private static final String TAG = LayoutInflater.class.getSimpleName();
private static final boolean DEBUG = false;
+ private static final String USE_PRECOMPILED_LAYOUT_SYSTEM_PROPERTY
+ = "view.precompiled_layout_enabled";
+ private static final String COMPILED_VIEW_DEX_FILE_NAME = "/compiled_view.dex";
+
/** Empty stack trace used to avoid log spam in re-throw exceptions. */
private static final StackTraceElement[] EMPTY_STACK_TRACE = new StackTraceElement[0];
@@ -93,6 +102,13 @@
private Factory2 mPrivateFactory;
private Filter mFilter;
+ // Indicates whether we should try to inflate layouts using a precompiled layout instead of
+ // inflating from the XML resource.
+ private boolean mUseCompiledView;
+ // This variable holds the classloader that will be used to look for precompiled layouts. The
+ // The classloader includes the generated compiled_view.dex file.
+ private ClassLoader mPrecompiledClassLoader;
+
@UnsupportedAppUsage
final Object[] mConstructorArgs = new Object[2];
@@ -223,6 +239,7 @@
*/
protected LayoutInflater(Context context) {
mContext = context;
+ initPrecompiledViews();
}
/**
@@ -239,6 +256,7 @@
mFactory2 = original.mFactory2;
mPrivateFactory = original.mPrivateFactory;
setFilter(original.mFilter);
+ initPrecompiledViews();
}
/**
@@ -380,6 +398,41 @@
}
}
+ private void initPrecompiledViews() {
+ // Check if precompiled layouts are enabled by a system property.
+ mUseCompiledView =
+ SystemProperties.getBoolean(USE_PRECOMPILED_LAYOUT_SYSTEM_PROPERTY, false);
+ if (!mUseCompiledView) {
+ return;
+ }
+
+ // Make sure the application allows code generation
+ ApplicationInfo appInfo = mContext.getApplicationInfo();
+ if ((appInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PREFER_CODE_INTEGRITY) != 0
+ || appInfo.isPrivilegedApp()) {
+ mUseCompiledView = false;
+ return;
+ }
+
+ // Try to load the precompiled layout file.
+ try {
+ mPrecompiledClassLoader = mContext.getClassLoader();
+ String dexFile = mContext.getCodeCacheDir() + COMPILED_VIEW_DEX_FILE_NAME;
+ if (new File(dexFile).exists()) {
+ mPrecompiledClassLoader = new PathClassLoader(dexFile, mPrecompiledClassLoader);
+ } else {
+ // If the precompiled layout file doesn't exist, then disable precompiled
+ // layouts.
+ mUseCompiledView = false;
+ }
+ } catch (Throwable e) {
+ if (DEBUG) {
+ Log.e(TAG, "Failed to initialized precompiled views layouts", e);
+ }
+ mUseCompiledView = false;
+ }
+ }
+
/**
* Inflate a new view hierarchy from the specified xml resource. Throws
* {@link InflateException} if there is an error.
@@ -436,10 +489,14 @@
final Resources res = getContext().getResources();
if (DEBUG) {
Log.d(TAG, "INFLATING from resource: \"" + res.getResourceName(resource) + "\" ("
- + Integer.toHexString(resource) + ")");
+ + Integer.toHexString(resource) + ")");
}
- final XmlResourceParser parser = res.getLayout(resource);
+ View view = tryInflatePrecompiled(resource, res, root, attachToRoot);
+ if (view != null) {
+ return view;
+ }
+ XmlResourceParser parser = res.getLayout(resource);
try {
return inflate(parser, root, attachToRoot);
} finally {
@@ -447,6 +504,73 @@
}
}
+ private @Nullable
+ View tryInflatePrecompiled(@LayoutRes int resource, Resources res, @Nullable ViewGroup root,
+ boolean attachToRoot) {
+ if (!mUseCompiledView) {
+ return null;
+ }
+
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW, "inflate (precompiled)");
+
+ // Try to inflate using a precompiled layout.
+ String pkg = res.getResourcePackageName(resource);
+ String layout = res.getResourceEntryName(resource);
+
+ try {
+ Class clazz = mPrecompiledClassLoader.loadClass("" + pkg + ".CompiledView");
+ Method inflater = clazz.getMethod(layout, Context.class, int.class);
+ View view = (View) inflater.invoke(null, mContext, resource);
+
+ if (view != null && root != null) {
+ // We were able to use the precompiled inflater, but now we need to do some work to
+ // attach the view to the root correctly.
+ XmlResourceParser parser = res.getLayout(resource);
+ try {
+ AttributeSet attrs = Xml.asAttributeSet(parser);
+ advanceToRootNode(parser);
+ ViewGroup.LayoutParams params = root.generateLayoutParams(attrs);
+
+ if (attachToRoot) {
+ root.addView(view, params);
+ } else {
+ view.setLayoutParams(params);
+ }
+ } finally {
+ parser.close();
+ }
+ }
+
+ return view;
+ } catch (Throwable e) {
+ if (DEBUG) {
+ Log.e(TAG, "Failed to use precompiled view", e);
+ }
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
+ return null;
+ }
+
+ /**
+ * Advances the given parser to the first START_TAG. Throws InflateException if no start tag is
+ * found.
+ */
+ private void advanceToRootNode(XmlPullParser parser)
+ throws InflateException, IOException, XmlPullParserException {
+ // Look for the root node.
+ int type;
+ while ((type = parser.next()) != XmlPullParser.START_TAG &&
+ type != XmlPullParser.END_DOCUMENT) {
+ // Empty
+ }
+
+ if (type != XmlPullParser.START_TAG) {
+ throw new InflateException(parser.getPositionDescription()
+ + ": No start tag found!");
+ }
+ }
+
/**
* Inflate a new view hierarchy from the specified XML node. Throws
* {@link InflateException} if there is an error.
@@ -480,18 +604,7 @@
View result = root;
try {
- // Look for the root node.
- int type;
- while ((type = parser.next()) != XmlPullParser.START_TAG &&
- type != XmlPullParser.END_DOCUMENT) {
- // Empty
- }
-
- if (type != XmlPullParser.START_TAG) {
- throw new InflateException(parser.getPositionDescription()
- + ": No start tag found!");
- }
-
+ advanceToRootNode(parser);
final String name = parser.getName();
if (DEBUG) {
@@ -994,82 +1107,85 @@
+ "reference. The layout ID " + value + " is not valid.");
}
- final XmlResourceParser childParser = context.getResources().getLayout(layout);
+ final View precompiled = tryInflatePrecompiled(layout, context.getResources(),
+ (ViewGroup) parent, /*attachToRoot=*/true);
+ if (precompiled == null) {
+ final XmlResourceParser childParser = context.getResources().getLayout(layout);
- try {
- final AttributeSet childAttrs = Xml.asAttributeSet(childParser);
+ try {
+ final AttributeSet childAttrs = Xml.asAttributeSet(childParser);
- while ((type = childParser.next()) != XmlPullParser.START_TAG &&
- type != XmlPullParser.END_DOCUMENT) {
- // Empty.
+ while ((type = childParser.next()) != XmlPullParser.START_TAG &&
+ type != XmlPullParser.END_DOCUMENT) {
+ // Empty.
+ }
+
+ if (type != XmlPullParser.START_TAG) {
+ throw new InflateException(childParser.getPositionDescription() +
+ ": No start tag found!");
+ }
+
+ final String childName = childParser.getName();
+
+ if (TAG_MERGE.equals(childName)) {
+ // The <merge> tag doesn't support android:theme, so
+ // nothing special to do here.
+ rInflate(childParser, parent, context, childAttrs, false);
+ } else {
+ final View view = createViewFromTag(parent, childName,
+ context, childAttrs, hasThemeOverride);
+ final ViewGroup group = (ViewGroup) parent;
+
+ final TypedArray a = context.obtainStyledAttributes(
+ attrs, R.styleable.Include);
+ final int id = a.getResourceId(R.styleable.Include_id, View.NO_ID);
+ final int visibility = a.getInt(R.styleable.Include_visibility, -1);
+ a.recycle();
+
+ // We try to load the layout params set in the <include /> tag.
+ // If the parent can't generate layout params (ex. missing width
+ // or height for the framework ViewGroups, though this is not
+ // necessarily true of all ViewGroups) then we expect it to throw
+ // a runtime exception.
+ // We catch this exception and set localParams accordingly: true
+ // means we successfully loaded layout params from the <include>
+ // tag, false means we need to rely on the included layout params.
+ ViewGroup.LayoutParams params = null;
+ try {
+ params = group.generateLayoutParams(attrs);
+ } catch (RuntimeException e) {
+ // Ignore, just fail over to child attrs.
+ }
+ if (params == null) {
+ params = group.generateLayoutParams(childAttrs);
+ }
+ view.setLayoutParams(params);
+
+ // Inflate all children.
+ rInflateChildren(childParser, view, childAttrs, true);
+
+ if (id != View.NO_ID) {
+ view.setId(id);
+ }
+
+ switch (visibility) {
+ case 0:
+ view.setVisibility(View.VISIBLE);
+ break;
+ case 1:
+ view.setVisibility(View.INVISIBLE);
+ break;
+ case 2:
+ view.setVisibility(View.GONE);
+ break;
+ }
+
+ group.addView(view);
+ }
+ } finally {
+ childParser.close();
}
-
- if (type != XmlPullParser.START_TAG) {
- throw new InflateException(childParser.getPositionDescription() +
- ": No start tag found!");
- }
-
- final String childName = childParser.getName();
-
- if (TAG_MERGE.equals(childName)) {
- // The <merge> tag doesn't support android:theme, so
- // nothing special to do here.
- rInflate(childParser, parent, context, childAttrs, false);
- } else {
- final View view = createViewFromTag(parent, childName,
- context, childAttrs, hasThemeOverride);
- final ViewGroup group = (ViewGroup) parent;
-
- final TypedArray a = context.obtainStyledAttributes(
- attrs, R.styleable.Include);
- final int id = a.getResourceId(R.styleable.Include_id, View.NO_ID);
- final int visibility = a.getInt(R.styleable.Include_visibility, -1);
- a.recycle();
-
- // We try to load the layout params set in the <include /> tag.
- // If the parent can't generate layout params (ex. missing width
- // or height for the framework ViewGroups, though this is not
- // necessarily true of all ViewGroups) then we expect it to throw
- // a runtime exception.
- // We catch this exception and set localParams accordingly: true
- // means we successfully loaded layout params from the <include>
- // tag, false means we need to rely on the included layout params.
- ViewGroup.LayoutParams params = null;
- try {
- params = group.generateLayoutParams(attrs);
- } catch (RuntimeException e) {
- // Ignore, just fail over to child attrs.
- }
- if (params == null) {
- params = group.generateLayoutParams(childAttrs);
- }
- view.setLayoutParams(params);
-
- // Inflate all children.
- rInflateChildren(childParser, view, childAttrs, true);
-
- if (id != View.NO_ID) {
- view.setId(id);
- }
-
- switch (visibility) {
- case 0:
- view.setVisibility(View.VISIBLE);
- break;
- case 1:
- view.setVisibility(View.INVISIBLE);
- break;
- case 2:
- view.setVisibility(View.GONE);
- break;
- }
-
- group.addView(view);
- }
- } finally {
- childParser.close();
}
-
LayoutInflater.consumeChildElements(parser);
}
diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java
index cf11fd0..c3d13bd 100644
--- a/core/java/android/view/PointerIcon.java
+++ b/core/java/android/view/PointerIcon.java
@@ -31,6 +31,7 @@
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
+import android.hardware.display.DisplayManager;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
@@ -144,7 +145,8 @@
public static final int TYPE_DEFAULT = TYPE_ARROW;
private static final PointerIcon gNullIcon = new PointerIcon(TYPE_NULL);
- private static final SparseArray<PointerIcon> gSystemIcons = new SparseArray<PointerIcon>();
+ private static final SparseArray<SparseArray<PointerIcon>> gSystemIconsByDisplay =
+ new SparseArray<SparseArray<PointerIcon>>();
private static boolean sUseLargeIcons = false;
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
@@ -163,6 +165,12 @@
@UnsupportedAppUsage
private int mDurationPerFrame;
+ /**
+ * Listener for displays lifecycle.
+ * @hide
+ */
+ private static DisplayManager.DisplayListener sDisplayListener;
+
private PointerIcon(int type) {
mType = type;
}
@@ -211,7 +219,19 @@
return gNullIcon;
}
- PointerIcon icon = gSystemIcons.get(type);
+ if (sDisplayListener == null) {
+ registerDisplayListener(context);
+ }
+
+ final int displayId = context.getDisplayId();
+ SparseArray<PointerIcon> systemIcons = gSystemIconsByDisplay.get(displayId);
+ if (systemIcons == null) {
+ systemIcons = new SparseArray<>();
+ gSystemIconsByDisplay.put(displayId, systemIcons);
+ }
+
+ PointerIcon icon = systemIcons.get(type);
+ // Reload if not in the same display.
if (icon != null) {
return icon;
}
@@ -240,7 +260,7 @@
} else {
icon.loadResource(context, context.getResources(), resourceId);
}
- gSystemIcons.append(type, icon);
+ systemIcons.append(type, icon);
return icon;
}
@@ -250,7 +270,7 @@
*/
public static void setUseLargeIcons(boolean use) {
sUseLargeIcons = use;
- gSystemIcons.clear();
+ gSystemIconsByDisplay.clear();
}
/**
@@ -576,4 +596,30 @@
return 0;
}
}
+
+ /**
+ * Manage system icon cache handled by display lifecycle.
+ * @param context The context.
+ */
+ private static void registerDisplayListener(@NonNull Context context) {
+ sDisplayListener = new DisplayManager.DisplayListener() {
+ @Override
+ public void onDisplayAdded(int displayId) {
+ }
+
+ @Override
+ public void onDisplayRemoved(int displayId) {
+ gSystemIconsByDisplay.remove(displayId);
+ }
+
+ @Override
+ public void onDisplayChanged(int displayId) {
+ gSystemIconsByDisplay.remove(displayId);
+ }
+ };
+
+ DisplayManager displayManager = context.getSystemService(DisplayManager.class);
+ displayManager.registerDisplayListener(sDisplayListener, null /* handler */);
+ }
+
}
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index ff5120d..5e98236 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -30,6 +30,7 @@
import android.annotation.Size;
import android.annotation.UnsupportedAppUsage;
import android.graphics.Bitmap;
+import android.graphics.ColorSpace;
import android.graphics.GraphicBuffer;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
@@ -141,6 +142,7 @@
private static native int nativeGetActiveConfig(IBinder displayToken);
private static native boolean nativeSetActiveConfig(IBinder displayToken, int id);
private static native int[] nativeGetDisplayColorModes(IBinder displayToken);
+ private static native int[] nativeGetCompositionDataspaces();
private static native int nativeGetActiveColorMode(IBinder displayToken);
private static native boolean nativeSetActiveColorMode(IBinder displayToken,
int colorMode);
@@ -167,6 +169,7 @@
InputWindowHandle handle);
private static native void nativeTransferTouchFocus(long transactionObj, IBinder fromToken,
IBinder toToken);
+ private static native boolean nativeGetProtectedContentSupport();
private final CloseGuard mCloseGuard = CloseGuard.get();
private String mName;
@@ -374,6 +377,13 @@
*/
public static final int WINDOW_TYPE_DONT_SCREENSHOT = 441731;
+ /**
+ * internal representation of how to interpret pixel value, used only to convert to ColorSpace.
+ */
+ private static final int INTERNAL_DATASPACE_SRGB = 142671872;
+ private static final int INTERNAL_DATASPACE_DISPLAY_P3 = 143261696;
+ private static final int INTERNAL_DATASPACE_SCRGB = 411107328;
+
private void assignNativeObject(long nativeObject) {
if (mNativeObject != 0) {
release();
@@ -1516,6 +1526,35 @@
}
/**
+ * Returns an array of color spaces with 2 elements. The first color space is the
+ * default color space and second one is wide color gamut color space.
+ * @hide
+ */
+ public static ColorSpace[] getCompositionColorSpaces() {
+ int[] dataspaces = nativeGetCompositionDataspaces();
+ ColorSpace srgb = ColorSpace.get(ColorSpace.Named.SRGB);
+ ColorSpace[] colorSpaces = { srgb, srgb };
+ if (dataspaces.length == 2) {
+ for (int i = 0; i < 2; ++i) {
+ switch(dataspaces[i]) {
+ case INTERNAL_DATASPACE_DISPLAY_P3:
+ colorSpaces[i] = ColorSpace.get(ColorSpace.Named.DISPLAY_P3);
+ break;
+ case INTERNAL_DATASPACE_SCRGB:
+ colorSpaces[i] = ColorSpace.get(ColorSpace.Named.EXTENDED_SRGB);
+ break;
+ case INTERNAL_DATASPACE_SRGB:
+ // Other dataspace is not recognized, use SRGB color space instead,
+ // the default value of the array is already SRGB, thus do nothing.
+ default:
+ break;
+ }
+ }
+ }
+ return colorSpaces;
+ }
+
+ /**
* @hide
*/
@UnsupportedAppUsage
@@ -1730,6 +1769,14 @@
}
/**
+ * Returns whether protected content is supported in GPU composition.
+ * @hide
+ */
+ public static boolean getProtectedContentSupport() {
+ return nativeGetProtectedContentSupport();
+ }
+
+ /**
* @hide
*/
public static class Transaction implements Closeable {
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index abefd55..a1aa06e 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -76,8 +76,8 @@
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.SystemClock;
-import android.os.SystemProperties;
import android.os.Trace;
+import android.sysprop.DisplayProperties;
import android.text.InputType;
import android.text.TextUtils;
import android.util.AttributeSet;
@@ -812,14 +812,6 @@
private static final String CONTENT_CAPTURE_LOG_TAG = "View.ContentCapture";
/**
- * When set to true, apps will draw debugging information about their layouts.
- *
- * @hide
- */
- @UnsupportedAppUsage
- public static final String DEBUG_LAYOUT_PROPERTY = "debug.layout";
-
- /**
* When set to true, this view will save its attribute data.
*
* @hide
@@ -8227,6 +8219,10 @@
* <li>{@link ViewStructure#newHtmlInfoBuilder(String)}
* <li>{@link ViewStructure#setHtmlInfo(android.view.ViewStructure.HtmlInfo)}
* <li>{@link ViewStructure#setDataIsSensitive(boolean)}
+ * <li>{@link ViewStructure#setAlpha(float)}
+ * <li>{@link ViewStructure#setElevation(float)}
+ * <li>{@link ViewStructure#setTransformation(Matrix)}
+ *
* </ul>
*/
public void onProvideContentCaptureStructure(@NonNull ViewStructure structure, int flags) {
@@ -8291,8 +8287,7 @@
structure.setDimens(ignoredParentLeft + mLeft, ignoredParentTop + mTop, mScrollX, mScrollY,
mRight - mLeft, mBottom - mTop);
- if (viewFor == VIEW_STRUCTURE_FOR_ASSIST
- || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
+ if (viewFor == VIEW_STRUCTURE_FOR_ASSIST) {
if (!hasIdentityMatrix()) {
structure.setTransformation(getMatrix());
}
@@ -9036,11 +9031,12 @@
if (session == null) return;
if (appeared) {
- if (!isLaidOut() || !isVisibleToUser()
+ if (!isLaidOut() || getVisibility() != VISIBLE
|| (mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0) {
if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.VERBOSE)) {
Log.v(CONTENT_CAPTURE_LOG_TAG, "Ignoring 'appeared' on " + this + ": laid="
- + isLaidOut() + ", visible=" + isVisibleToUser()
+ + isLaidOut() + ", visibleToUser=" + isVisibleToUser()
+ + ", visible=" + (getVisibility() == VISIBLE)
+ ": alreadyNotifiedAppeared="
+ ((mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0));
}
@@ -27833,7 +27829,7 @@
/**
* Show where the margins, bounds and layout bounds are for each view.
*/
- boolean mDebugLayout = SystemProperties.getBoolean(DEBUG_LAYOUT_PROPERTY, false);
+ boolean mDebugLayout = DisplayProperties.debug_layout().orElse(false);
/**
* Point used to compute visible regions.
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 8e4dc67..27d4ea4 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -75,6 +75,7 @@
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
+import android.sysprop.DisplayProperties;
import android.util.AndroidRuntimeException;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -7071,7 +7072,7 @@
}
// Layout debugging
- boolean layout = SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false);
+ boolean layout = DisplayProperties.debug_layout().orElse(false);
if (layout != mAttachInfo.mDebugLayout) {
mAttachInfo.mDebugLayout = layout;
if (!mHandler.hasMessages(MSG_INVALIDATE_WORLD)) {
diff --git a/core/java/android/view/animation/Animation.java b/core/java/android/view/animation/Animation.java
index c630177..dfd9a2e 100644
--- a/core/java/android/view/animation/Animation.java
+++ b/core/java/android/view/animation/Animation.java
@@ -187,6 +187,7 @@
/**
* An animation listener to be notified when the animation starts, ends or repeats.
*/
+ @UnsupportedAppUsage
private AnimationListener mListener;
/**
diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java
index 93941d0..888a4c5 100644
--- a/core/java/android/view/autofill/AutofillManager.java
+++ b/core/java/android/view/autofill/AutofillManager.java
@@ -2997,5 +2997,23 @@
afm.post(() -> afm.autofill(sessionId, ids, values));
}
}
+
+ @Override
+ public void requestShowFillUi(int sessionId, AutofillId id, int width, int height,
+ Rect anchorBounds, IAutofillWindowPresenter presenter) {
+ final AutofillManager afm = mAfm.get();
+ if (afm != null) {
+ afm.post(() -> afm.requestShowFillUi(sessionId, id, width, height, anchorBounds,
+ presenter));
+ }
+ }
+
+ @Override
+ public void requestHideFillUi(int sessionId, AutofillId id) {
+ final AutofillManager afm = mAfm.get();
+ if (afm != null) {
+ afm.post(() -> afm.requestHideFillUi(id, false));
+ }
+ }
}
}
diff --git a/core/java/android/view/autofill/IAugmentedAutofillManagerClient.aidl b/core/java/android/view/autofill/IAugmentedAutofillManagerClient.aidl
index 67cd0bf..140507c 100644
--- a/core/java/android/view/autofill/IAugmentedAutofillManagerClient.aidl
+++ b/core/java/android/view/autofill/IAugmentedAutofillManagerClient.aidl
@@ -21,6 +21,7 @@
import android.graphics.Rect;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillValue;
+import android.view.autofill.IAutofillWindowPresenter;
/**
* Object running in the application process and responsible to provide the functionalities
@@ -29,6 +30,24 @@
* @hide
*/
interface IAugmentedAutofillManagerClient {
- Rect getViewCoordinates(in AutofillId id);
- void autofill(int sessionId, in List<AutofillId> ids, in List<AutofillValue> values);
+ /**
+ * Gets the coordinates of the input field view.
+ */
+ Rect getViewCoordinates(in AutofillId id);
+
+ /**
+ * Autofills the activity with the contents of the values.
+ */
+ void autofill(int sessionId, in List<AutofillId> ids, in List<AutofillValue> values);
+
+ /**
+ * Requests showing the fill UI.
+ */
+ void requestShowFillUi(int sessionId, in AutofillId id, int width, int height,
+ in Rect anchorBounds, in IAutofillWindowPresenter presenter);
+
+ /**
+ * Requests hiding the fill UI.
+ */
+ void requestHideFillUi(int sessionId, in AutofillId id);
}
diff --git a/core/java/android/view/contentcapture/ChildContentCaptureSession.java b/core/java/android/view/contentcapture/ChildContentCaptureSession.java
index 04e725e..63c21f3 100644
--- a/core/java/android/view/contentcapture/ChildContentCaptureSession.java
+++ b/core/java/android/view/contentcapture/ChildContentCaptureSession.java
@@ -68,8 +68,8 @@
}
@Override
- void flush() {
- mParent.flush();
+ void flush(@FlushReason int reason) {
+ mParent.flush(reason);
}
@Override
@@ -88,10 +88,10 @@
}
@Override
- void internalNotifyViewTextChanged(@NonNull AutofillId id, @Nullable CharSequence text,
- int flags) {
- getMainCaptureSession().notifyViewTextChanged(mId, id, text, flags);
+ void internalNotifyViewTextChanged(@NonNull AutofillId id, @Nullable CharSequence text) {
+ getMainCaptureSession().notifyViewTextChanged(mId, id, text);
}
+
@Override
boolean isContentCaptureEnabled() {
return getMainCaptureSession().isContentCaptureEnabled();
diff --git a/core/java/android/view/contentcapture/ContentCaptureEvent.java b/core/java/android/view/contentcapture/ContentCaptureEvent.java
index 0d06430..43963c3 100644
--- a/core/java/android/view/contentcapture/ContentCaptureEvent.java
+++ b/core/java/android/view/contentcapture/ContentCaptureEvent.java
@@ -21,6 +21,7 @@
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
+import android.util.Log;
import android.view.autofill.AutofillId;
import com.android.internal.util.Preconditions;
@@ -28,11 +29,15 @@
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.List;
/** @hide */
@SystemApi
public final class ContentCaptureEvent implements Parcelable {
+ private static final String TAG = ContentCaptureEvent.class.getSimpleName();
+
/** @hide */
public static final int TYPE_SESSION_FINISHED = -2;
/** @hide */
@@ -46,9 +51,11 @@
public static final int TYPE_VIEW_APPEARED = 1;
/**
- * Called when a node has been removed from the screen and is not visible to the user anymore.
+ * Called when one or more nodes have been removed from the screen and is not visible to the
+ * user anymore.
*
- * <p>The id of the node is available through {@link #getId()}.
+ * <p>To get the id(s), first call {@link #getIds()} - if it returns {@code null}, then call
+ * {@link #getId()}.
*/
public static final int TYPE_VIEW_DISAPPEARED = 2;
@@ -74,29 +81,23 @@
private final @NonNull String mSessionId;
private final int mType;
private final long mEventTime;
- private final int mFlags;
private @Nullable AutofillId mId;
+ private @Nullable ArrayList<AutofillId> mIds;
private @Nullable ViewNode mNode;
private @Nullable CharSequence mText;
private @Nullable String mParentSessionId;
private @Nullable ContentCaptureContext mClientContext;
/** @hide */
- public ContentCaptureEvent(@NonNull String sessionId, int type, long eventTime, int flags) {
+ public ContentCaptureEvent(@NonNull String sessionId, int type, long eventTime) {
mSessionId = sessionId;
mType = type;
mEventTime = eventTime;
- mFlags = flags;
- }
-
- /** @hide */
- public ContentCaptureEvent(@NonNull String sessionId, int type, int flags) {
- this(sessionId, type, System.currentTimeMillis(), flags);
}
/** @hide */
public ContentCaptureEvent(@NonNull String sessionId, int type) {
- this(sessionId, type, /* flags= */ 0);
+ this(sessionId, type, System.currentTimeMillis());
}
/** @hide */
@@ -105,6 +106,27 @@
return this;
}
+ private void setAutofillIds(@NonNull ArrayList<AutofillId> ids) {
+ mIds = Preconditions.checkNotNull(ids);
+ }
+
+ /**
+ * Adds an autofill id to the this event, merging the single id into a list if necessary.
+ * @hide */
+ public ContentCaptureEvent addAutofillId(@NonNull AutofillId id) {
+ if (mIds == null) {
+ mIds = new ArrayList<>();
+ if (mId == null) {
+ Log.w(TAG, "addAutofillId(" + id + ") called without an initial id");
+ } else {
+ mIds.add(mId);
+ mId = null;
+ }
+ }
+ mIds.add(id);
+ return this;
+ }
+
/**
* Used by {@link #TYPE_SESSION_STARTED} and {@link #TYPE_SESSION_FINISHED}.
*
@@ -183,16 +205,6 @@
}
/**
- * Gets optional flags associated with the event.
- *
- * @return either {@code 0} or
- * {@link android.view.contentcapture.ContentCaptureSession#FLAG_USER_INPUT}.
- */
- public int getFlags() {
- return mFlags;
- }
-
- /**
* Gets the whole metadata of the node associated with the event.
*
* <p>Only set on {@link #TYPE_VIEW_APPEARED} events.
@@ -205,7 +217,9 @@
/**
* Gets the {@link AutofillId} of the node associated with the event.
*
- * <p>Only set on {@link #TYPE_VIEW_DISAPPEARED} and {@link #TYPE_VIEW_TEXT_CHANGED} events.
+ * <p>Only set on {@link #TYPE_VIEW_DISAPPEARED} (when the event contains just one node - if
+ * it contains more than one, this method returns {@code null} and the actual ids should be
+ * retrived by {@link #getIds()}) and {@link #TYPE_VIEW_TEXT_CHANGED} events.
*/
@Nullable
public AutofillId getId() {
@@ -213,6 +227,17 @@
}
/**
+ * Gets the {@link AutofillId AutofillIds} of the nodes associated with the event.
+ *
+ * <p>Only set on {@link #TYPE_VIEW_DISAPPEARED}, when the event contains more than one node
+ * (if it contains just one node, it's returned by {@link #getId()} instead.
+ */
+ @Nullable
+ public List<AutofillId> getIds() {
+ return mIds;
+ }
+
+ /**
* Gets the current text of the node associated with the event.
*
* <p>Only set on {@link #TYPE_VIEW_TEXT_CHANGED} events.
@@ -226,12 +251,12 @@
public void dump(@NonNull PrintWriter pw) {
pw.print("type="); pw.print(getTypeAsString(mType));
pw.print(", time="); pw.print(mEventTime);
- if (mFlags > 0) {
- pw.print(", flags="); pw.print(mFlags);
- }
if (mId != null) {
pw.print(", id="); pw.print(mId);
}
+ if (mIds != null) {
+ pw.print(", ids="); pw.print(mIds);
+ }
if (mNode != null) {
pw.print(", mNode.id="); pw.print(mNode.getAutofillId());
}
@@ -255,12 +280,12 @@
if (mType == TYPE_SESSION_STARTED && mParentSessionId != null) {
string.append(", parent=").append(mParentSessionId);
}
- if (mFlags > 0) {
- string.append(", flags=").append(mFlags);
- }
if (mId != null) {
string.append(", id=").append(mId);
}
+ if (mIds != null) {
+ string.append(", ids=").append(mIds);
+ }
if (mNode != null) {
final String className = mNode.getClassName();
if (mNode != null) {
@@ -281,8 +306,8 @@
parcel.writeString(mSessionId);
parcel.writeInt(mType);
parcel.writeLong(mEventTime);
- parcel.writeInt(mFlags);
parcel.writeParcelable(mId, flags);
+ parcel.writeTypedList(mIds);
ViewNode.writeToParcel(parcel, mNode, flags);
parcel.writeCharSequence(mText);
if (mType == TYPE_SESSION_STARTED || mType == TYPE_SESSION_FINISHED) {
@@ -301,13 +326,15 @@
final String sessionId = parcel.readString();
final int type = parcel.readInt();
final long eventTime = parcel.readLong();
- final int flags = parcel.readInt();
- final ContentCaptureEvent event =
- new ContentCaptureEvent(sessionId, type, eventTime, flags);
+ final ContentCaptureEvent event = new ContentCaptureEvent(sessionId, type, eventTime);
final AutofillId id = parcel.readParcelable(null);
if (id != null) {
event.setAutofillId(id);
}
+ final ArrayList<AutofillId> ids = parcel.createTypedArrayList(AutofillId.CREATOR);
+ if (ids != null) {
+ event.setAutofillIds(ids);
+ }
final ViewNode node = ViewNode.readFromParcel(parcel);
if (node != null) {
event.setViewNode(node);
diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java
index ff45efd..413f1a5 100644
--- a/core/java/android/view/contentcapture/ContentCaptureManager.java
+++ b/core/java/android/view/contentcapture/ContentCaptureManager.java
@@ -24,17 +24,18 @@
import android.content.ComponentName;
import android.content.Context;
import android.os.Handler;
-import android.os.HandlerThread;
import android.os.IBinder;
+import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;
+import android.view.contentcapture.ContentCaptureSession.FlushReason;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.os.IResultReceiver;
import com.android.internal.util.Preconditions;
import com.android.internal.util.SyncResultReceiver;
import java.io.PrintWriter;
-import java.util.concurrent.atomic.AtomicBoolean;
/*
* NOTE: all methods in this class should return right away, or do the real work in a handler
@@ -51,8 +52,6 @@
private static final String TAG = ContentCaptureManager.class.getSimpleName();
- private static final String BG_THREAD_NAME = "intel_svc_streamer_thread";
-
/**
* Timeout for calls to system_server.
*/
@@ -62,8 +61,10 @@
static final boolean VERBOSE = false;
static final boolean DEBUG = true; // STOPSHIP if not set to false
- @NonNull
- private final AtomicBoolean mDisabled = new AtomicBoolean();
+ private final Object mLock = new Object();
+
+ @GuardedBy("mLock")
+ private boolean mDisabled;
@NonNull
private final Context mContext;
@@ -71,35 +72,29 @@
@Nullable
private final IContentCaptureManager mService;
+ // Flags used for starting session.
+ @GuardedBy("mLock")
+ private int mFlags;
+
// TODO(b/119220549): use UI Thread directly (as calls are one-way) or a shared thread / handler
// held at the Application level
@NonNull
private final Handler mHandler;
+ @GuardedBy("mLock")
private MainContentCaptureSession mMainSession;
/** @hide */
public ContentCaptureManager(@NonNull Context context,
@Nullable IContentCaptureManager service) {
mContext = Preconditions.checkNotNull(context, "context cannot be null");
- if (VERBOSE) {
- Log.v(TAG, "Constructor for " + context.getPackageName());
- }
- mService = service;
- // TODO(b/119220549): use an existing bg thread instead...
- final HandlerThread bgThread = new HandlerThread(BG_THREAD_NAME);
- bgThread.start();
- mHandler = Handler.createAsync(bgThread.getLooper());
- }
+ if (VERBOSE) Log.v(TAG, "Constructor for " + context.getPackageName());
- @NonNull
- private static Handler newHandler() {
- // TODO(b/119220549): use an existing bg thread instead...
- // TODO(b/119220549): use UI Thread directly (as calls are one-way) or an existing bgThread
- // or a shared thread / handler held at the Application level
- final HandlerThread bgThread = new HandlerThread(BG_THREAD_NAME);
- bgThread.start();
- return Handler.createAsync(bgThread.getLooper());
+ mService = service;
+ // TODO(b/119220549): we might not even need a handler, as the IPCs are oneway. But if we
+ // do, then we should optimize it to run the tests after the Choreographer finishes the most
+ // important steps of the frame.
+ mHandler = Handler.createAsync(Looper.getMainLooper());
}
/**
@@ -114,20 +109,25 @@
@NonNull
@UiThread
public MainContentCaptureSession getMainContentCaptureSession() {
- if (mMainSession == null) {
- mMainSession = new MainContentCaptureSession(mContext, mHandler, mService,
- mDisabled);
- if (VERBOSE) {
- Log.v(TAG, "getDefaultContentCaptureSession(): created " + mMainSession);
+ synchronized (mLock) {
+ if (mMainSession == null) {
+ mMainSession = new MainContentCaptureSession(mContext, mHandler, mService,
+ mDisabled);
+ if (VERBOSE) {
+ Log.v(TAG, "getDefaultContentCaptureSession(): created " + mMainSession);
+ }
}
+ return mMainSession;
}
- return mMainSession;
}
/** @hide */
public void onActivityStarted(@NonNull IBinder applicationToken,
@NonNull ComponentName activityComponent, int flags) {
- getMainContentCaptureSession().start(applicationToken, activityComponent, flags);
+ synchronized (mLock) {
+ mFlags |= flags;
+ getMainContentCaptureSession().start(applicationToken, activityComponent, mFlags);
+ }
}
/** @hide */
@@ -142,8 +142,8 @@
*
* @hide
*/
- public void flush() {
- getMainContentCaptureSession().flush();
+ public void flush(@FlushReason int reason) {
+ getMainContentCaptureSession().flush(reason);
}
/**
@@ -173,7 +173,9 @@
* Checks whether content capture is enabled for this activity.
*/
public boolean isContentCaptureEnabled() {
- return mService != null && !mDisabled.get();
+ synchronized (mLock) {
+ return mService != null && !mDisabled;
+ }
}
/**
@@ -183,7 +185,9 @@
* it on {@link android.app.Activity#onCreate(android.os.Bundle, android.os.PersistableBundle)}.
*/
public void setContentCaptureEnabled(boolean enabled) {
- //TODO(b/111276913): implement (need to finish / disable all sessions)
+ synchronized (mLock) {
+ mFlags |= enabled ? 0 : ContentCaptureContext.FLAG_DISABLED_BY_APP;
+ }
}
/**
@@ -198,20 +202,22 @@
/** @hide */
public void dump(String prefix, PrintWriter pw) {
- pw.print(prefix); pw.println("ContentCaptureManager");
-
- pw.print(prefix); pw.print("Disabled: "); pw.println(mDisabled.get());
- pw.print(prefix); pw.print("Context: "); pw.println(mContext);
- pw.print(prefix); pw.print("User: "); pw.println(mContext.getUserId());
- if (mService != null) {
- pw.print(prefix); pw.print("Service: "); pw.println(mService);
- }
- if (mMainSession != null) {
- final String prefix2 = prefix + " ";
- pw.print(prefix); pw.println("Main session:");
- mMainSession.dump(prefix2, pw);
- } else {
- pw.print(prefix); pw.println("No sessions");
+ synchronized (mLock) {
+ pw.print(prefix); pw.println("ContentCaptureManager");
+ pw.print(prefix); pw.print("Disabled: "); pw.println(mDisabled);
+ pw.print(prefix); pw.print("Context: "); pw.println(mContext);
+ pw.print(prefix); pw.print("User: "); pw.println(mContext.getUserId());
+ if (mService != null) {
+ pw.print(prefix); pw.print("Service: "); pw.println(mService);
+ }
+ pw.print(prefix); pw.print("Flags: "); pw.println(mFlags);
+ if (mMainSession != null) {
+ final String prefix2 = prefix + " ";
+ pw.print(prefix); pw.println("Main session:");
+ mMainSession.dump(prefix2, pw);
+ } else {
+ pw.print(prefix); pw.println("No sessions");
+ }
}
}
diff --git a/core/java/android/view/contentcapture/ContentCaptureSession.java b/core/java/android/view/contentcapture/ContentCaptureSession.java
index d9a8416..b620ab1 100644
--- a/core/java/android/view/contentcapture/ContentCaptureSession.java
+++ b/core/java/android/view/contentcapture/ContentCaptureSession.java
@@ -19,8 +19,10 @@
import static android.view.contentcapture.ContentCaptureManager.VERBOSE;
import android.annotation.CallSuper;
+import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.util.DebugUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewStructure;
@@ -29,11 +31,14 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.ArrayUtils;
import com.android.internal.util.Preconditions;
import dalvik.system.CloseGuard;
import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.UUID;
@@ -46,55 +51,104 @@
private static final String TAG = ContentCaptureSession.class.getSimpleName();
/**
- * Used on {@link #notifyViewTextChanged(AutofillId, CharSequence, int)} to indicate that the
- * text change was caused by user input (for example, through IME).
- */
- public static final int FLAG_USER_INPUT = 0x1;
-
- /**
* Initial state, when there is no session.
*
* @hide
*/
- public static final int STATE_UNKNOWN = 0;
+ // NOTE: not prefixed by STATE_ so it's not printed on getStateAsString()
+ public static final int UNKNWON_STATE = 0x0;
/**
* Service's startSession() was called, but server didn't confirm it was created yet.
*
* @hide
*/
- public static final int STATE_WAITING_FOR_SERVER = 1;
+ public static final int STATE_WAITING_FOR_SERVER = 0x1;
/**
* Session is active.
*
* @hide
*/
- public static final int STATE_ACTIVE = 2;
+ public static final int STATE_ACTIVE = 0x2;
/**
* Session is disabled because there is no service for this user.
*
* @hide
*/
- public static final int STATE_DISABLED_NO_SERVICE = 3;
+ public static final int STATE_DISABLED = 0x4;
/**
* Session is disabled because its id already existed on server.
*
* @hide
*/
- public static final int STATE_DISABLED_DUPLICATED_ID = 4;
+ public static final int STATE_DUPLICATED_ID = 0x8;
+
+ /**
+ * Session is disabled because service is not set for user.
+ *
+ * @hide
+ */
+ public static final int STATE_NO_SERVICE = 0x10;
/**
* Session is disabled by FLAG_SECURE
*
* @hide
*/
- public static final int STATE_DISABLED_BY_FLAG_SECURE = 5;
+ public static final int STATE_FLAG_SECURE = 0x20;
+
+ /**
+ * Session is disabled manually by the specific app.
+ *
+ * @hide
+ */
+ public static final int STATE_BY_APP = 0x40;
+
+ /**
+ * Session is disabled because session start was never replied.
+ *
+ * @hide
+ */
+ public static final int STATE_NO_RESPONSE = 0x80;
+
+ /**
+ * Session is disabled because an internal error.
+ *
+ * @hide
+ */
+ public static final int STATE_INTERNAL_ERROR = 0x100;
private static final int INITIAL_CHILDREN_CAPACITY = 5;
+ /** @hide */
+ public static final int FLUSH_REASON_FULL = 1;
+ /** @hide */
+ public static final int FLUSH_REASON_ACTIVITY_PAUSED = 2;
+ /** @hide */
+ public static final int FLUSH_REASON_ACTIVITY_RESUMED = 3;
+ /** @hide */
+ public static final int FLUSH_REASON_SESSION_STARTED = 4;
+ /** @hide */
+ public static final int FLUSH_REASON_SESSION_FINISHED = 5;
+ /** @hide */
+ public static final int FLUSH_REASON_IDLE_TIMEOUT = 6;
+
+ /** @hide */
+ @IntDef(prefix = { "FLUSH_REASON_" }, value = {
+ FLUSH_REASON_FULL,
+ FLUSH_REASON_ACTIVITY_PAUSED,
+ FLUSH_REASON_ACTIVITY_RESUMED,
+ FLUSH_REASON_SESSION_STARTED,
+ FLUSH_REASON_SESSION_FINISHED,
+ FLUSH_REASON_IDLE_TIMEOUT
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ @interface FlushReason{}
+
+
private final CloseGuard mCloseGuard = CloseGuard.get();
private final Object mLock = new Object();
@@ -110,7 +164,7 @@
@Nullable
protected final String mId;
- private int mState = STATE_UNKNOWN;
+ private int mState = UNKNWON_STATE;
// Lazily created on demand.
private ContentCaptureSessionId mContentCaptureSessionId;
@@ -182,7 +236,7 @@
/**
* Flushes the buffered events to the service.
*/
- abstract void flush();
+ abstract void flush(@FlushReason int reason);
/**
* Destroys this session, flushing out all pending notifications to the service.
@@ -220,7 +274,7 @@
}
try {
- flush();
+ flush(FLUSH_REASON_SESSION_FINISHED);
} finally {
onDestroy();
}
@@ -286,12 +340,36 @@
abstract void internalNotifyViewDisappeared(@NonNull AutofillId id);
/**
+ * Notifies the Content Capture Service that many nodes has been removed from a virtual view
+ * structure.
+ *
+ * <p>Should only be called by views that handle their own virtual view hierarchy.
+ *
+ * @param hostId id of the view hosting the virtual hierarchy.
+ * @param virtualIds ids of the virtual children.
+ *
+ * @throws IllegalArgumentException if the {@code hostId} is an autofill id for a virtual view.
+ * @throws IllegalArgumentException if {@code virtualIds} is empty
+ */
+ public final void notifyViewsDisappeared(@NonNull AutofillId hostId,
+ @NonNull int[] virtualIds) {
+ Preconditions.checkArgument(!hostId.isVirtual(), "parent cannot be virtual");
+ Preconditions.checkArgument(!ArrayUtils.isEmpty(virtualIds), "virtual ids cannot be empty");
+ if (!isContentCaptureEnabled()) return;
+
+ // TODO(b/123036895): use a internalNotifyViewsDisappeared that optimizes how the event is
+ // parcelized
+ for (int id : virtualIds) {
+ internalNotifyViewDisappeared(new AutofillId(hostId, id, getIdAsInt()));
+ }
+ }
+
+ /**
* Notifies the Intelligence Service that the value of a text node has been changed.
*
* @param id of the node.
* @param text new text.
- * @param flags either {@code 0} or {@link #FLAG_USER_INPUT} when the value was explicitly
- * changed by the user (for example, through the keyboard).
+ * @param flags currently ignored.
*/
public final void notifyViewTextChanged(@NonNull AutofillId id, @Nullable CharSequence text,
int flags) {
@@ -299,11 +377,11 @@
if (!isContentCaptureEnabled()) return;
- internalNotifyViewTextChanged(id, text, flags);
+ internalNotifyViewTextChanged(id, text);
}
- abstract void internalNotifyViewTextChanged(@NonNull AutofillId id, @Nullable CharSequence text,
- int flags);
+ abstract void internalNotifyViewTextChanged(@NonNull AutofillId id,
+ @Nullable CharSequence text);
/**
* Creates a {@link ViewStructure} for a "standard" view.
@@ -377,26 +455,31 @@
return mId;
}
- /**
- * @hide
- */
+ /** @hide */
@NonNull
protected static String getStateAsString(int state) {
- switch (state) {
- case STATE_UNKNOWN:
- return "UNKNOWN";
- case STATE_WAITING_FOR_SERVER:
- return "WAITING_FOR_SERVER";
- case STATE_ACTIVE:
- return "ACTIVE";
- case STATE_DISABLED_NO_SERVICE:
- return "DISABLED_NO_SERVICE";
- case STATE_DISABLED_DUPLICATED_ID:
- return "DISABLED_DUPLICATED_ID";
- case STATE_DISABLED_BY_FLAG_SECURE:
- return "DISABLED_FLAG_SECURE";
+ return state + " (" + (state == UNKNWON_STATE ? "UNKNOWN"
+ : DebugUtils.flagsToString(ContentCaptureSession.class, "STATE_", state)) + ")";
+ }
+
+ /** @hide */
+ @NonNull
+ static String getflushReasonAsString(@FlushReason int reason) {
+ switch (reason) {
+ case FLUSH_REASON_FULL:
+ return "FULL";
+ case FLUSH_REASON_ACTIVITY_PAUSED:
+ return "PAUSED";
+ case FLUSH_REASON_ACTIVITY_RESUMED:
+ return "RESUMED";
+ case FLUSH_REASON_SESSION_STARTED:
+ return "STARTED";
+ case FLUSH_REASON_SESSION_FINISHED:
+ return "FINISHED";
+ case FLUSH_REASON_IDLE_TIMEOUT:
+ return "IDLE";
default:
- return "INVALID:" + state;
+ return "UNKOWN-" + reason;
}
}
}
diff --git a/core/java/android/view/contentcapture/MainContentCaptureSession.java b/core/java/android/view/contentcapture/MainContentCaptureSession.java
index a29aaf0..103d7e6 100644
--- a/core/java/android/view/contentcapture/MainContentCaptureSession.java
+++ b/core/java/android/view/contentcapture/MainContentCaptureSession.java
@@ -35,7 +35,7 @@
import android.os.IBinder;
import android.os.IBinder.DeathRecipient;
import android.os.RemoteException;
-import android.os.SystemClock;
+import android.util.LocalLog;
import android.util.Log;
import android.util.TimeUtils;
import android.view.autofill.AutofillId;
@@ -88,6 +88,7 @@
*/
public static final String EXTRA_BINDER = "binder";
+ // TODO(b/111276913): make sure disabled state is in sync with manager's disabled
@NonNull
private final AtomicBoolean mDisabled;
@@ -113,7 +114,7 @@
@Nullable
private DeathRecipient mDirectServiceVulture;
- private int mState = STATE_UNKNOWN;
+ private int mState = UNKNWON_STATE;
@Nullable
private IBinder mApplicationToken;
@@ -130,14 +131,17 @@
// Used just for debugging purposes (on dump)
private long mNextFlush;
+ // TODO(b/121044064): use settings to set size
+ private final LocalLog mFlushHistory = new LocalLog(10);
+
/** @hide */
protected MainContentCaptureSession(@NonNull Context context, @NonNull Handler handler,
@Nullable IContentCaptureManager systemServerInterface,
- @NonNull AtomicBoolean disabled) {
+ @NonNull boolean disabled) {
mContext = context;
mHandler = handler;
mSystemServerInterface = systemServerInterface;
- mDisabled = disabled;
+ mDisabled = new AtomicBoolean(disabled);
}
@Override
@@ -171,8 +175,9 @@
}
@Override
- void flush() {
- mHandler.sendMessage(obtainMessage(MainContentCaptureSession::handleForceFlush, this));
+ void flush(@FlushReason int reason) {
+ mHandler.sendMessage(
+ obtainMessage(MainContentCaptureSession::handleForceFlush, this, reason));
}
@Override
@@ -184,10 +189,13 @@
private void handleStartSession(@NonNull IBinder token, @NonNull ComponentName componentName,
int flags) {
- if (mState != STATE_UNKNOWN) {
- // TODO(b/111276913): revisit this scenario
- Log.w(TAG, "ignoring handleStartSession(" + token + ") while on state "
- + getStateAsString(mState));
+ if (handleHasStarted()) {
+ // TODO(b/122959591): make sure this is expected (and when), or use Log.w
+ if (DEBUG) {
+ Log.d(TAG, "ignoring handleStartSession(" + token + "/"
+ + ComponentName.flattenToShortString(componentName) + " while on state "
+ + getStateAsString(mState));
+ }
return;
}
mState = STATE_WAITING_FOR_SERVER;
@@ -196,7 +204,7 @@
if (VERBOSE) {
Log.v(TAG, "handleStartSession(): token=" + token + ", act="
- + getActivityDebugName() + ", id=" + mId);
+ + getDebugState() + ", id=" + mId);
}
try {
@@ -211,7 +219,7 @@
binder = resultData.getBinder(EXTRA_BINDER);
if (binder == null) {
Log.wtf(TAG, "No " + EXTRA_BINDER + " extra result");
- handleResetState();
+ handleResetSession(STATE_DISABLED | STATE_INTERNAL_ERROR);
return;
}
}
@@ -233,7 +241,6 @@
* @param binder handle to {@code IContentCaptureDirectManager}
*/
private void handleSessionStarted(int resultCode, @Nullable IBinder binder) {
- mState = resultCode;
if (binder != null) {
mDirectServiceInterface = IContentCaptureDirectManager.Stub.asInterface(binder);
mDirectServiceVulture = () -> {
@@ -247,31 +254,42 @@
}
}
- // TODO(b/111276913): change the resultCode to use flags so there's just one flag for
- // disabled stuff
- if (resultCode == STATE_DISABLED_NO_SERVICE || resultCode == STATE_DISABLED_DUPLICATED_ID
- || resultCode == STATE_DISABLED_BY_FLAG_SECURE) {
- mDisabled.set(true);
- handleResetSession(/* resetState= */ false);
+ if ((resultCode & STATE_DISABLED) != 0) {
+ handleResetSession(resultCode);
} else {
+ mState = resultCode;
mDisabled.set(false);
}
if (VERBOSE) {
- Log.v(TAG, "handleSessionStarted() result: code=" + resultCode + ", id=" + mId
+ Log.v(TAG, "handleSessionStarted() result: id=" + mId + " resultCode=" + resultCode
+ ", state=" + getStateAsString(mState) + ", disabled=" + mDisabled.get()
+ ", binder=" + binder + ", events=" + (mEvents == null ? 0 : mEvents.size()));
}
}
private void handleSendEvent(@NonNull ContentCaptureEvent event, boolean forceFlush) {
+ final int eventType = event.getType();
+ if (!handleHasStarted() && eventType != ContentCaptureEvent.TYPE_SESSION_STARTED) {
+ // TODO(b/120494182): comment when this could happen (dialogs?)
+ Log.v(TAG, "handleSendEvent(" + getDebugState() + ", "
+ + ContentCaptureEvent.getTypeAsString(eventType)
+ + "): session not started yet");
+ return;
+ }
+ if (VERBOSE) Log.v(TAG, "handleSendEvent(" + getDebugState() + "): " + event);
if (mEvents == null) {
if (VERBOSE) {
- Log.v(TAG, "Creating buffer for " + MAX_BUFFER_SIZE + " events");
+ Log.v(TAG, "handleSendEvent(" + getDebugState() + ", "
+ + ContentCaptureEvent.getTypeAsString(eventType)
+ + "): creating buffer for " + MAX_BUFFER_SIZE + " events");
}
mEvents = new ArrayList<>(MAX_BUFFER_SIZE);
}
- if (!mEvents.isEmpty() && event.getType() == TYPE_VIEW_TEXT_CHANGED) {
+ // Some type of events can be merged together
+ boolean addEvent = true;
+
+ if (!mEvents.isEmpty() && eventType == TYPE_VIEW_TEXT_CHANGED) {
final ContentCaptureEvent lastEvent = mEvents.get(mEvents.size() - 1);
// TODO(b/121045053): check if flags match
@@ -282,10 +300,24 @@
+ event.getText());
}
lastEvent.setText(event.getText());
- } else {
- mEvents.add(event);
+ addEvent = false;
}
- } else {
+ }
+
+ if (!mEvents.isEmpty() && eventType == TYPE_VIEW_DISAPPEARED) {
+ final ContentCaptureEvent lastEvent = mEvents.get(mEvents.size() - 1);
+ if (lastEvent.getType() == TYPE_VIEW_DISAPPEARED
+ && event.getSessionId().equals(lastEvent.getSessionId())) {
+ if (VERBOSE) {
+ Log.v(TAG, "Buffering TYPE_VIEW_DISAPPEARED events for session "
+ + lastEvent.getSessionId());
+ }
+ lastEvent.addAutofillId(event.getId());
+ addEvent = false;
+ }
+ }
+
+ if (addEvent) {
mEvents.add(event);
}
@@ -294,76 +326,104 @@
final boolean bufferEvent = numberEvents < MAX_BUFFER_SIZE;
if (bufferEvent && !forceFlush) {
- handleScheduleFlush(/* checkExisting= */ true);
+ handleScheduleFlush(FLUSH_REASON_IDLE_TIMEOUT, /* checkExisting= */ true);
return;
}
if (mState != STATE_ACTIVE && numberEvents >= MAX_BUFFER_SIZE) {
// Callback from startSession hasn't been called yet - typically happens on system
// apps that are started before the system service
- // TODO(b/111276913): try to ignore session while system is not ready / boot
+ // TODO(b/122959591): try to ignore session while system is not ready / boot
// not complete instead. Similarly, the manager service should return right away
// when the user does not have a service set
if (DEBUG) {
- Log.d(TAG, "Closing session for " + getActivityDebugName()
- + " after " + numberEvents + " delayed events and state "
- + getStateAsString(mState));
+ Log.d(TAG, "Closing session for " + getDebugState()
+ + " after " + numberEvents + " delayed events");
}
- handleResetState();
+ handleResetSession(STATE_DISABLED | STATE_NO_RESPONSE);
// TODO(b/111276913): blacklist activity / use special flag to indicate that
// when it's launched again
return;
}
+ final int flushReason;
+ switch (eventType) {
+ case ContentCaptureEvent.TYPE_SESSION_STARTED:
+ flushReason = FLUSH_REASON_SESSION_STARTED;
+ break;
+ case ContentCaptureEvent.TYPE_SESSION_FINISHED:
+ flushReason = FLUSH_REASON_SESSION_FINISHED;
+ break;
+ default:
+ flushReason = FLUSH_REASON_FULL;
+ }
- handleForceFlush();
+ handleForceFlush(flushReason);
}
- private void handleScheduleFlush(boolean checkExisting) {
+ private boolean handleHasStarted() {
+ return mState != UNKNWON_STATE;
+ }
+
+ private void handleScheduleFlush(@FlushReason int reason, boolean checkExisting) {
+ if (!handleHasStarted()) {
+ Log.v(TAG, "handleScheduleFlush(" + getDebugState() + "): session not started yet");
+ return;
+ }
if (checkExisting && mHandler.hasMessages(MSG_FLUSH)) {
// "Renew" the flush message by removing the previous one
mHandler.removeMessages(MSG_FLUSH);
}
- mNextFlush = SystemClock.elapsedRealtime() + FLUSHING_FREQUENCY_MS;
+ mNextFlush = System.currentTimeMillis() + FLUSHING_FREQUENCY_MS;
if (VERBOSE) {
- Log.v(TAG, "Scheduled to flush in " + FLUSHING_FREQUENCY_MS + "ms: " + mNextFlush);
+ Log.v(TAG, "handleScheduleFlush(" + getDebugState()
+ + ", reason=" + getflushReasonAsString(reason) + "): scheduled to flush in "
+ + FLUSHING_FREQUENCY_MS + "ms: " + TimeUtils.logTimeOfDay(mNextFlush));
}
mHandler.sendMessageDelayed(
- obtainMessage(MainContentCaptureSession::handleFlushIfNeeded, this)
+ obtainMessage(MainContentCaptureSession::handleFlushIfNeeded, this, reason)
.setWhat(MSG_FLUSH), FLUSHING_FREQUENCY_MS);
}
- private void handleFlushIfNeeded() {
+ private void handleFlushIfNeeded(@FlushReason int reason) {
if (mEvents.isEmpty()) {
if (VERBOSE) Log.v(TAG, "Nothing to flush");
return;
}
- handleForceFlush();
+ handleForceFlush(reason);
}
- private void handleForceFlush() {
+ private void handleForceFlush(@FlushReason int reason) {
if (mEvents == null) return;
if (mDirectServiceInterface == null) {
if (VERBOSE) {
- Log.v(TAG, "handleForceFlush(): hold your horses, client not ready: " + mEvents);
+ Log.v(TAG, "handleForceFlush(" + getDebugState()
+ + ", reason=" + getflushReasonAsString(reason)
+ + "): hold your horses, client not ready: " + mEvents);
}
if (!mHandler.hasMessages(MSG_FLUSH)) {
- handleScheduleFlush(/* checkExisting= */ false);
+ handleScheduleFlush(reason, /* checkExisting= */ false);
}
return;
}
final int numberEvents = mEvents.size();
+ final String reasonString = getflushReasonAsString(reason);
+ if (DEBUG) {
+ Log.d(TAG, "Flushing " + numberEvents + " event(s) for " + getDebugState()
+ + ". Reason: " + reasonString);
+ }
+ // Logs reason, size, max size, idle timeout
+ final String logRecord = "r=" + reasonString + " s=" + numberEvents
+ + " m=" + MAX_BUFFER_SIZE + " i=" + FLUSHING_FREQUENCY_MS;
try {
- if (DEBUG) {
- Log.d(TAG, "Flushing " + numberEvents + " event(s) for " + getActivityDebugName());
- }
+ mFlushHistory.log(logRecord);
mHandler.removeMessages(MSG_FLUSH);
final ParceledListSlice<ContentCaptureEvent> events = handleClearEvents();
mDirectServiceInterface.sendEvents(events);
} catch (RemoteException e) {
- Log.w(TAG, "Error sending " + numberEvents + " for " + getActivityDebugName()
+ Log.w(TAG, "Error sending " + numberEvents + " for " + getDebugState()
+ ": " + e);
}
}
@@ -386,7 +446,7 @@
if (DEBUG) {
Log.d(TAG, "Destroying session (ctx=" + mContext + ", id=" + mId + ") with "
+ (mEvents == null ? 0 : mEvents.size()) + " event(s) for "
- + getActivityDebugName());
+ + getDebugState());
}
try {
@@ -395,21 +455,19 @@
mSystemServerInterface.finishSession(mContext.getUserId(), mId);
} catch (RemoteException e) {
Log.e(TAG, "Error destroying system-service session " + mId + " for "
- + getActivityDebugName() + ": " + e);
+ + getDebugState() + ": " + e);
}
}
- private void handleResetState() {
- handleResetSession(/* resetState= */ true);
- }
-
// TODO(b/122454205): once we support multiple sessions, we might need to move some of these
// clearings out.
- private void handleResetSession(boolean resetState) {
- if (resetState) {
- mState = STATE_UNKNOWN;
+ private void handleResetSession(int newState) {
+ if (VERBOSE) {
+ Log.v(TAG, "handleResetSession(" + getActivityName() + "): from "
+ + getStateAsString(mState) + " to " + getStateAsString(newState));
}
-
+ mState = newState;
+ mDisabled.set((newState & STATE_DISABLED) != 0);
// TODO(b/122454205): must reset children (which currently is owned by superclass)
mApplicationToken = null;
mComponentName = null;
@@ -432,9 +490,8 @@
}
@Override
- void internalNotifyViewTextChanged(@NonNull AutofillId id, @Nullable CharSequence text,
- int flags) {
- notifyViewTextChanged(mId, id, text, flags);
+ void internalNotifyViewTextChanged(@NonNull AutofillId id, @Nullable CharSequence text) {
+ notifyViewTextChanged(mId, id, text);
}
@Override
@@ -475,15 +532,14 @@
}
void notifyViewTextChanged(@NonNull String sessionId, @NonNull AutofillId id,
- @Nullable CharSequence text, int flags) {
+ @Nullable CharSequence text) {
mHandler.sendMessage(obtainMessage(MainContentCaptureSession::handleSendEvent, this,
- new ContentCaptureEvent(sessionId, TYPE_VIEW_TEXT_CHANGED, flags).setAutofillId(id)
+ new ContentCaptureEvent(sessionId, TYPE_VIEW_TEXT_CHANGED).setAutofillId(id)
.setText(text), /* forceFlush= */ false));
}
@Override
void dump(@NonNull String prefix, @NonNull PrintWriter pw) {
- pw.print(prefix); pw.print("id: "); pw.println(mId);
pw.print(prefix); pw.print("mContext: "); pw.println(mContext);
pw.print(prefix); pw.print("user: "); pw.println(mContext.getUserId());
if (mSystemServerInterface != null) {
@@ -496,8 +552,7 @@
}
pw.print(prefix); pw.print("mDisabled: "); pw.println(mDisabled.get());
pw.print(prefix); pw.print("isEnabled(): "); pw.println(isContentCaptureEnabled());
- pw.print(prefix); pw.print("state: "); pw.print(mState); pw.print(" (");
- pw.print(getStateAsString(mState)); pw.println(")");
+ pw.print(prefix); pw.print("state: "); pw.println(getStateAsString(mState));
if (mApplicationToken != null) {
pw.print(prefix); pw.print("app token: "); pw.println(mApplicationToken);
}
@@ -519,16 +574,25 @@
}
pw.print(prefix); pw.print("flush frequency: "); pw.println(FLUSHING_FREQUENCY_MS);
pw.print(prefix); pw.print("next flush: ");
- TimeUtils.formatDuration(mNextFlush - SystemClock.elapsedRealtime(), pw); pw.println();
+ TimeUtils.formatDuration(mNextFlush - System.currentTimeMillis(), pw);
+ pw.print(" ("); pw.print(TimeUtils.logTimeOfDay(mNextFlush)); pw.println(")");
}
+ pw.print(prefix); pw.println("flush history:");
+ mFlushHistory.reverseDump(/* fd= */ null, pw, /* args= */ null); pw.println();
+
super.dump(prefix, pw);
}
/**
* Gets a string that can be used to identify the activity on logging statements.
*/
- private String getActivityDebugName() {
- return mComponentName == null ? mContext.getPackageName()
- : mComponentName.flattenToShortString();
+ private String getActivityName() {
+ return mComponentName == null
+ ? "pkg:" + mContext.getPackageName()
+ : "act:" + mComponentName.flattenToShortString();
+ }
+
+ private String getDebugState() {
+ return getActivityName() + " (state=" + getStateAsString(mState) + ")";
}
}
diff --git a/core/java/android/view/contentcapture/ViewNode.java b/core/java/android/view/contentcapture/ViewNode.java
index ddfecb0..cbc946b 100644
--- a/core/java/android/view/contentcapture/ViewNode.java
+++ b/core/java/android/view/contentcapture/ViewNode.java
@@ -45,7 +45,6 @@
public final class ViewNode extends AssistStructure.ViewNode {
private static final String TAG = ViewNode.class.getSimpleName();
- private static final boolean VERBOSE = false;
private static final long FLAGS_HAS_TEXT = 1L << 0;
private static final long FLAGS_HAS_COMPLEX_TEXT = 1L << 1;
@@ -69,21 +68,18 @@
private static final long FLAGS_SELECTED = 1L << 20;
private static final long FLAGS_ACTIVATED = 1L << 21;
private static final long FLAGS_OPAQUE = 1L << 22;
- private static final long FLAGS_HAS_MATRIX = 1L << 23;
- private static final long FLAGS_HAS_ELEVATION = 1L << 24;
- private static final long FLAGS_HAS_ALPHA = 1L << 25;
- private static final long FLAGS_HAS_CONTENT_DESCRIPTION = 1L << 26;
- private static final long FLAGS_HAS_EXTRAS = 1L << 27;
- private static final long FLAGS_HAS_LOCALE_LIST = 1L << 28;
- private static final long FLAGS_HAS_INPUT_TYPE = 1L << 29;
- private static final long FLAGS_HAS_MIN_TEXT_EMS = 1L << 30;
- private static final long FLAGS_HAS_MAX_TEXT_EMS = 1L << 31;
- private static final long FLAGS_HAS_MAX_TEXT_LENGTH = 1L << 32;
- private static final long FLAGS_HAS_TEXT_ID_ENTRY = 1L << 33;
- private static final long FLAGS_HAS_AUTOFILL_TYPE = 1L << 34;
- private static final long FLAGS_HAS_AUTOFILL_VALUE = 1L << 35;
- private static final long FLAGS_HAS_AUTOFILL_HINTS = 1L << 36;
- private static final long FLAGS_HAS_AUTOFILL_OPTIONS = 1L << 37;
+ private static final long FLAGS_HAS_CONTENT_DESCRIPTION = 1L << 23;
+ private static final long FLAGS_HAS_EXTRAS = 1L << 24;
+ private static final long FLAGS_HAS_LOCALE_LIST = 1L << 25;
+ private static final long FLAGS_HAS_INPUT_TYPE = 1L << 26;
+ private static final long FLAGS_HAS_MIN_TEXT_EMS = 1L << 27;
+ private static final long FLAGS_HAS_MAX_TEXT_EMS = 1L << 28;
+ private static final long FLAGS_HAS_MAX_TEXT_LENGTH = 1L << 29;
+ private static final long FLAGS_HAS_TEXT_ID_ENTRY = 1L << 30;
+ private static final long FLAGS_HAS_AUTOFILL_TYPE = 1L << 31;
+ private static final long FLAGS_HAS_AUTOFILL_VALUE = 1L << 32;
+ private static final long FLAGS_HAS_AUTOFILL_HINTS = 1L << 33;
+ private static final long FLAGS_HAS_AUTOFILL_OPTIONS = 1L << 34;
/** Flags used to optimize what's written to the parcel */
private long mFlags;
@@ -103,9 +99,6 @@
private int mScrollY;
private int mWidth;
private int mHeight;
- private Matrix mMatrix;
- private float mElevation;
- private float mAlpha = 1.0f;
private CharSequence mContentDescription;
private Bundle mExtras;
private LocaleList mLocaleList;
@@ -165,18 +158,6 @@
mScrollX = parcel.readInt();
mScrollY = parcel.readInt();
}
- if ((nodeFlags & FLAGS_HAS_MATRIX) != 0) {
- mMatrix = new Matrix();
- final float[] tmpMatrix = new float[9];
- parcel.readFloatArray(tmpMatrix);
- mMatrix.setValues(tmpMatrix);
- }
- if ((nodeFlags & FLAGS_HAS_ELEVATION) != 0) {
- mElevation = parcel.readFloat();
- }
- if ((nodeFlags & FLAGS_HAS_ALPHA) != 0) {
- mAlpha = parcel.readFloat();
- }
if ((nodeFlags & FLAGS_HAS_CONTENT_DESCRIPTION) != 0) {
mContentDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
}
@@ -355,21 +336,6 @@
}
@Override
- public Matrix getTransformation() {
- return mMatrix;
- }
-
- @Override
- public float getElevation() {
- return mElevation;
- }
-
- @Override
- public float getAlpha() {
- return mAlpha;
- }
-
- @Override
public CharSequence getContentDescription() {
return mContentDescription;
}
@@ -509,15 +475,6 @@
if (mScrollX != 0 || mScrollY != 0) {
nodeFlags |= FLAGS_HAS_SCROLL;
}
- if (mMatrix != null) {
- nodeFlags |= FLAGS_HAS_MATRIX;
- }
- if (mElevation != 0) {
- nodeFlags |= FLAGS_HAS_ELEVATION;
- }
- if (mAlpha != 1.0f) {
- nodeFlags |= FLAGS_HAS_ALPHA;
- }
if (mContentDescription != null) {
nodeFlags |= FLAGS_HAS_CONTENT_DESCRIPTION;
}
@@ -591,18 +548,6 @@
parcel.writeInt(mScrollX);
parcel.writeInt(mScrollY);
}
- if ((nodeFlags & FLAGS_HAS_MATRIX) != 0) {
- //TODO(b/122484602): use a singleton tmpMatrix (if logic is not moved to superclass)
- final float[] tmpMatrix = new float[9];
- mMatrix.getValues(tmpMatrix);
- parcel.writeFloatArray(tmpMatrix);
- }
- if ((nodeFlags & FLAGS_HAS_ELEVATION) != 0) {
- parcel.writeFloat(mElevation);
- }
- if ((nodeFlags & FLAGS_HAS_ALPHA) != 0) {
- parcel.writeFloat(mAlpha);
- }
if ((nodeFlags & FLAGS_HAS_CONTENT_DESCRIPTION) != 0) {
TextUtils.writeToParcel(mContentDescription, parcel, 0);
}
@@ -702,21 +647,17 @@
@Override
public void setTransformation(Matrix matrix) {
- if (matrix == null) {
- mNode.mMatrix = null;
- } else {
- mNode.mMatrix = new Matrix(matrix);
- }
+ Log.w(TAG, "setTransformation() is not supported");
}
@Override
public void setElevation(float elevation) {
- mNode.mElevation = elevation;
+ Log.w(TAG, "setElevation() is not supported");
}
@Override
public void setAlpha(float alpha) {
- mNode.mAlpha = alpha;
+ Log.w(TAG, "setAlpha() is not supported");
}
@Override
diff --git a/core/java/android/view/inputmethod/EditorInfo.java b/core/java/android/view/inputmethod/EditorInfo.java
index 28d9fcf..f99afe6 100644
--- a/core/java/android/view/inputmethod/EditorInfo.java
+++ b/core/java/android/view/inputmethod/EditorInfo.java
@@ -16,11 +16,15 @@
package android.view.inputmethod;
+import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
+
import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
import android.os.Bundle;
import android.os.LocaleList;
import android.os.Parcel;
import android.os.Parcelable;
+import android.os.UserHandle;
import android.text.InputType;
import android.text.TextUtils;
import android.util.Printer;
@@ -472,6 +476,26 @@
public String[] contentMimeTypes = null;
/**
+ * If not {@code null}, this editor needs to talk to IMEs that run for the specified user, no
+ * matter what user ID the calling process has.
+ *
+ * <p>Note: This field is silently ignored when:</p>
+ * <ul>
+ * <li>{@link android.view.inputmethod.InputMethodSystemProperty#PER_PROFILE_IME_ENABLED} is
+ * {@code false}.</li>
+ * <li>{@link android.view.inputmethod.InputMethodSystemProperty#MULTI_CLIENT_IME_ENABLED}
+ * is {@code true}.</li>
+ * </ul>
+ *
+ * <p>Note also that pseudo handles such as {@link UserHandle#ALL} are not supported.</p>
+ *
+ * @hide
+ */
+ @RequiresPermission(INTERACT_ACROSS_USERS_FULL)
+ @Nullable
+ public UserHandle targetInputMethodUser = null;
+
+ /**
* Ensure that the data in this EditorInfo is compatible with an application
* that was developed against the given target API version. This can
* impact the following input types:
@@ -527,6 +551,9 @@
pw.println(prefix + "extras=" + extras);
pw.println(prefix + "hintLocales=" + hintLocales);
pw.println(prefix + "contentMimeTypes=" + Arrays.toString(contentMimeTypes));
+ if (targetInputMethodUser != null) {
+ pw.println(prefix + "targetInputMethodUserId=" + targetInputMethodUser.getIdentifier());
+ }
}
/**
@@ -556,6 +583,7 @@
LocaleList.getEmptyLocaleList().writeToParcel(dest, flags);
}
dest.writeStringArray(contentMimeTypes);
+ UserHandle.writeToParcel(targetInputMethodUser, dest);
}
/**
@@ -582,6 +610,7 @@
LocaleList hintLocales = LocaleList.CREATOR.createFromParcel(source);
res.hintLocales = hintLocales.isEmpty() ? null : hintLocales;
res.contentMimeTypes = source.readStringArray();
+ res.targetInputMethodUser = UserHandle.readFromParcel(source);
return res;
}
diff --git a/core/java/android/view/inspector/InspectableNodeName.java b/core/java/android/view/inspector/InspectableNodeName.java
index ea94ad4..7b9a507 100644
--- a/core/java/android/view/inspector/InspectableNodeName.java
+++ b/core/java/android/view/inspector/InspectableNodeName.java
@@ -19,6 +19,8 @@
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
+import android.annotation.TestApi;
+
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@@ -39,6 +41,7 @@
*/
@Target({TYPE})
@Retention(SOURCE)
+@TestApi
public @interface InspectableNodeName {
/**
* The display name for nodes of this type.
diff --git a/core/java/android/view/inspector/InspectableProperty.java b/core/java/android/view/inspector/InspectableProperty.java
index 5b957156..355ff1d 100644
--- a/core/java/android/view/inspector/InspectableProperty.java
+++ b/core/java/android/view/inspector/InspectableProperty.java
@@ -20,7 +20,8 @@
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
-import android.content.res.ResourceId;
+import android.annotation.TestApi;
+import android.content.res.Resources;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@@ -40,6 +41,7 @@
*/
@Target({METHOD})
@Retention(SOURCE)
+@TestApi
public @interface InspectableProperty {
/**
* The name of the property.
@@ -57,16 +59,16 @@
* If left as {ID_NULL}, and {@link #hasAttributeId()} is true, the attribute ID will be
* inferred from {@link #name()}.
*
- * @return The attribute ID of the property or {@link ResourceId#ID_NULL}
+ * @return The attribute ID of the property or {@link Resources#ID_NULL}
*/
- int attributeId() default ResourceId.ID_NULL;
+ int attributeId() default Resources.ID_NULL;
/**
* If this property has an attribute ID.
*
* Set to false if the annotated property does not have an attribute ID, that is, it is not
* inflated from an XML attribute. This will prevent the automatic inference of the attribute
- * ID if {@link #attributeId()} is set to {@link ResourceId#ID_NULL}.
+ * ID if {@link #attributeId()} is set to {@link Resources#ID_NULL}.
*
* @return Whether to infer an attribute ID if not supplied
*/
@@ -86,7 +88,6 @@
*
* @return An array of {@link EnumMap}, empty if not applicable
* @see android.annotation.IntDef
- * @see IntEnumMapping
*/
EnumMap[] enumMapping() default {};
@@ -105,11 +106,11 @@
/**
* One entry in an enumeration packed into a primitive {int}.
*
- * @see IntEnumMapping
* @hide
*/
@Target({TYPE})
@Retention(SOURCE)
+ @TestApi
@interface EnumMap {
/**
* The string name of this enumeration value.
@@ -134,6 +135,7 @@
*/
@Target({TYPE})
@Retention(SOURCE)
+ @TestApi
@interface FlagMap {
/**
* The string name of this flag.
@@ -168,15 +170,22 @@
*
* @hide
*/
+ @TestApi
enum ValueType {
/**
* No special handling, property is considered to be a numeric value.
+ *
+ * @hide
*/
+ @TestApi
NONE,
/**
* The default the annotation processor infers the value type from context.
+ *
+ * @hide
*/
+ @TestApi
INFERRED,
/**
@@ -185,7 +194,9 @@
* This is inferred if {@link #enumMapping()} is specified.
*
* @see EnumMap
+ * @hide
*/
+ @TestApi
INT_ENUM,
/**
@@ -194,7 +205,9 @@
* This is inferred if {@link #flagMapping()} is specified.
*
* @see FlagMap
+ * @hide
*/
+ @TestApi
INT_FLAG,
/**
@@ -204,7 +217,9 @@
* {@link android.annotation.ColorLong} on the getter method.
*
* @see android.graphics.Color
+ * @hide
*/
+ @TestApi
COLOR,
/**
@@ -213,7 +228,9 @@
* This type is not inferred, and is non-trivial to represent using {@link FlagMap}.
*
* @see android.view.Gravity
+ * @hide
*/
+ @TestApi
GRAVITY
}
}
diff --git a/core/java/android/view/inspector/IntEnumMapping.java b/core/java/android/view/inspector/IntEnumMapping.java
deleted file mode 100644
index 69f6dce..0000000
--- a/core/java/android/view/inspector/IntEnumMapping.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2018 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 android.view.inspector;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-
-import java.util.ArrayList;
-
-/**
- * Maps the values of an {int} property to string names for properties that encode enumerations.
- *
- * An {@link InspectionCompanion} may provide an instance of this class to a {@link PropertyMapper}
- * for enumerations packed into primitive {int} properties.
- *
- * This class is immutable, and must be constructed by a {@link Builder}.
- *
- * @see PropertyMapper#mapIntEnum(String, int, IntEnumMapping)
- */
-public final class IntEnumMapping {
- private final Value[] mValues;
-
- /**
- * Map from a property value to a string name.
- *
- * @param value The value of a property
- * @return The name of the enumeration value, null if the value is not mapped
- */
- @Nullable
- public String nameOf(int value) {
- for (Value valueTuple : mValues) {
- if (valueTuple.mValue == value) {
- return valueTuple.mName;
- }
- }
-
- return null;
- }
-
- /**
- * Create a new instance from a builder.
- *
- * This constructor is private, use {@link Builder#build()} instead.
- *
- * @param builder A builder to create from
- */
- private IntEnumMapping(Builder builder) {
- mValues = builder.mValues.toArray(new Value[builder.mValues.size()]);
- }
-
- /**
- * A builder for {@link IntEnumMapping}
- */
- public static final class Builder {
- private final ArrayList<Value> mValues;
-
- public Builder() {
- mValues = new ArrayList<>();
- }
-
- /**
- * Add a new entry to this mapping.
- *
- * @param name Name of the enumeration value
- * @param value Int value of the enumeration value
- * @return This builder
- */
- @NonNull
- public Builder addValue(@NonNull String name, int value) {
- mValues.add(new Value(name, value));
- return this;
- }
-
- /**
- * Clear the builder, allowing for recycling.
- */
- public void clear() {
- mValues.clear();
- }
-
- /**
- * Build a new {@link IntEnumMapping} from this builder
- *
- * @return A new mapping
- */
- @NonNull
- public IntEnumMapping build() {
- return new IntEnumMapping(this);
- }
- }
-
- /**
- * Inner class that holds the name and value of an enumeration value.
- */
- private static final class Value {
- @NonNull private final String mName;
- private final int mValue;
-
- private Value(@NonNull String name, int value) {
- mName = name;
- mValue = value;
- }
- }
-}
diff --git a/core/java/android/view/inspector/IntFlagMapping.java b/core/java/android/view/inspector/IntFlagMapping.java
index dcb87e1..8f7dfd5 100644
--- a/core/java/android/view/inspector/IntFlagMapping.java
+++ b/core/java/android/view/inspector/IntFlagMapping.java
@@ -19,14 +19,20 @@
import android.annotation.NonNull;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
/**
- * Maps the values of an {int} property to arrays of string for properties that encode flags.
+ * Maps the values of an {@code int} property to arrays of string for properties that encode flags.
*
* An {@link InspectionCompanion} may provide an instance of this class to a {@link PropertyMapper}
- * for flag values packed into primitive {int} properties.
+ * for flag values packed into primitive {@code int} properties.
*
- * Each flag has a
+ * Each flag has a mask and a target value, for non-exclusive flags, the target can also be used as
+ * the mask. A given integer value is compared against each flag to find what flags are active for
+ * it by bitwise anding it with the mask and comparing the result against the target, that is,
+ * {@code (value & mask) == target}.
*
* This class is immutable, and must be constructed by a {@link Builder}.
*
@@ -42,8 +48,8 @@
* @return The names of the enabled flags
*/
@NonNull
- public String[] namesOf(int value) {
- ArrayList<String> enabledFlagNames = new ArrayList<>(mFlags.length);
+ public Set<String> get(int value) {
+ final Set<String> enabledFlagNames = new HashSet<>(mFlags.length);
for (Flag flag : mFlags) {
if (flag.isEnabledFor(value)) {
@@ -51,7 +57,7 @@
}
}
- return enabledFlagNames.toArray(new String[enabledFlagNames.size()]);
+ return Collections.unmodifiableSet(enabledFlagNames);
}
/**
@@ -81,7 +87,7 @@
* The target value will be used as a mask, to handle the common case where flag values
* are not mutually exclusive. The flag will be considered enabled for a property value if
* the result of bitwise anding the target and the value equals the target, that is:
- * {(value & target) == target}.
+ * {@code (value & target) == target}.
*
* @param name The name of the flag
* @param target The value to compare against
@@ -97,7 +103,7 @@
* Add a new flag with a mask.
*
* The flag will be considered enabled for a property value if the result of bitwise anding
- * the value and the mask equals the target, that is: {(value & mask) == target}.
+ * the value and the mask equals the target, that is: {@code (value & mask) == target}.
*
* @param name The name of the flag
* @param target The value to compare against
@@ -111,13 +117,6 @@
}
/**
- * Clear the builder, allowing for recycling.
- */
- public void clear() {
- mFlags.clear();
- }
-
- /**
* Build a new {@link IntFlagMapping} from this builder.
*
* @return A new mapping
@@ -143,7 +142,7 @@
}
/**
- * Compare the supplied property value against the mask and taget.
+ * Compare the supplied property value against the mask and target.
*
* @param value The value to check
* @return True if this flag is enabled
diff --git a/core/java/android/view/inspector/PropertyMapper.java b/core/java/android/view/inspector/PropertyMapper.java
index 5fb291b..e20582b 100644
--- a/core/java/android/view/inspector/PropertyMapper.java
+++ b/core/java/android/view/inspector/PropertyMapper.java
@@ -18,6 +18,7 @@
import android.annotation.AttrRes;
import android.annotation.NonNull;
+import android.util.SparseArray;
/**
* An interface for mapping the string names of inspectable properties to integer identifiers.
@@ -154,7 +155,7 @@
int mapIntEnum(
@NonNull String name,
@AttrRes int attributeId,
- @NonNull IntEnumMapping mapping);
+ @NonNull SparseArray<String> mapping);
/**
* Map a string name to an integer ID for a flag set packed into an int property.
diff --git a/core/java/android/view/inspector/PropertyReader.java b/core/java/android/view/inspector/PropertyReader.java
index fd83e8d..a8b7ecc 100644
--- a/core/java/android/view/inspector/PropertyReader.java
+++ b/core/java/android/view/inspector/PropertyReader.java
@@ -25,7 +25,13 @@
/**
* An interface for reading the properties of an inspectable object.
*
- * Used as the parameter for {@link InspectionCompanion#readProperties(Object, PropertyReader)}.
+ * {@code PropertyReader} is defined as an interface that will be called by
+ * {@link InspectionCompanion#readProperties(Object, PropertyReader)}. This approach allows a
+ * client inspector to read the values of primitive properties without the overhead of
+ * instantiating a class to hold the property values for each inspection pass. If an inspectable
+ * remains unchanged between reading passes, it should be possible for a {@code PropertyReader} to
+ * avoid new allocations for subsequent reading passes.
+ *
* It has separate methods for all primitive types to avoid autoboxing overhead if a concrete
* implementation is able to work with primitives. Implementations should be prepared to accept
* {null} as the value of {@link PropertyReader#readObject(int, Object)}.
@@ -38,7 +44,7 @@
*
* @param id Identifier of the property from a {@link PropertyMapper}
* @param value Value of the property
- * @throws PropertyTypeMismatchException If the property ID is not mapped as a {boolean}
+ * @throws PropertyTypeMismatchException If the property ID is not mapped as a {@code boolean}
*/
void readBoolean(int id, boolean value);
@@ -47,7 +53,7 @@
*
* @param id Identifier of the property from a {@link PropertyMapper}
* @param value Value of the property
- * @throws PropertyTypeMismatchException If the property ID is not mapped as a {byte}
+ * @throws PropertyTypeMismatchException If the property ID is not mapped as a {@code byte}
*/
void readByte(int id, byte value);
@@ -56,7 +62,7 @@
*
* @param id Identifier of the property from a {@link PropertyMapper}
* @param value Value of the property
- * @throws PropertyTypeMismatchException If the property ID is not mapped as a {char}
+ * @throws PropertyTypeMismatchException If the property ID is not mapped as a {@code char}
*/
void readChar(int id, char value);
@@ -65,7 +71,7 @@
*
* @param id Identifier of the property from a {@link PropertyMapper}
* @param value Value of the property
- * @throws PropertyTypeMismatchException If the property ID is not mapped as a {double}
+ * @throws PropertyTypeMismatchException If the property ID is not mapped as a {@code double}
*/
void readDouble(int id, double value);
@@ -74,7 +80,7 @@
*
* @param id Identifier of the property from a {@link PropertyMapper}
* @param value Value of the property
- * @throws PropertyTypeMismatchException If the property ID is not mapped as a {float}
+ * @throws PropertyTypeMismatchException If the property ID is not mapped as a {@code float}
*/
void readFloat(int id, float value);
@@ -83,7 +89,7 @@
*
* @param id Identifier of the property from a {@link PropertyMapper}
* @param value Value of the property
- * @throws PropertyTypeMismatchException If the property ID is not mapped as an {int}
+ * @throws PropertyTypeMismatchException If the property ID is not mapped as an {@code int}
*/
void readInt(int id, int value);
@@ -92,7 +98,7 @@
*
* @param id Identifier of the property from a {@link PropertyMapper}
* @param value Value of the property
- * @throws PropertyTypeMismatchException If the property ID is not mapped as a {long}
+ * @throws PropertyTypeMismatchException If the property ID is not mapped as a {@code long}
*/
void readLong(int id, long value);
@@ -101,7 +107,7 @@
*
* @param id Identifier of the property from a {@link PropertyMapper}
* @param value Value of the property
- * @throws PropertyTypeMismatchException If the property ID is not mapped as a {short}
+ * @throws PropertyTypeMismatchException If the property ID is not mapped as a {@code short}
*/
void readShort(int id, short value);
diff --git a/core/java/android/view/textclassifier/ConversationAction.java b/core/java/android/view/textclassifier/ConversationAction.java
new file mode 100644
index 0000000..1a6e5d8
--- /dev/null
+++ b/core/java/android/view/textclassifier/ConversationAction.java
@@ -0,0 +1,266 @@
+/*
+ * Copyright (C) 2018 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 android.view.textclassifier;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+import android.annotation.FloatRange;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.StringDef;
+import android.app.RemoteAction;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.internal.util.Preconditions;
+
+import java.lang.annotation.Retention;
+
+/** Represents the action suggested by a {@link TextClassifier} on a given conversation. */
+public final class ConversationAction implements Parcelable {
+
+ /** @hide */
+ @Retention(SOURCE)
+ @StringDef(
+ value = {
+ TYPE_VIEW_CALENDAR,
+ TYPE_VIEW_MAP,
+ TYPE_TRACK_FLIGHT,
+ TYPE_OPEN_URL,
+ TYPE_SEND_SMS,
+ TYPE_CALL_PHONE,
+ TYPE_SEND_EMAIL,
+ TYPE_TEXT_REPLY,
+ TYPE_CREATE_REMINDER,
+ TYPE_SHARE_LOCATION
+ },
+ prefix = "TYPE_")
+ public @interface ActionType {}
+
+ /**
+ * Indicates an action to view a calendar at a specified time.
+ */
+ public static final String TYPE_VIEW_CALENDAR = "view_calendar";
+ /**
+ * Indicates an action to view the map at a specified location.
+ */
+ public static final String TYPE_VIEW_MAP = "view_map";
+ /**
+ * Indicates an action to track a flight.
+ */
+ public static final String TYPE_TRACK_FLIGHT = "track_flight";
+ /**
+ * Indicates an action to open an URL.
+ */
+ public static final String TYPE_OPEN_URL = "open_url";
+ /**
+ * Indicates an action to send a SMS.
+ */
+ public static final String TYPE_SEND_SMS = "send_sms";
+ /**
+ * Indicates an action to call a phone number.
+ */
+ public static final String TYPE_CALL_PHONE = "call_phone";
+ /**
+ * Indicates an action to send an email.
+ */
+ public static final String TYPE_SEND_EMAIL = "send_email";
+ /**
+ * Indicates an action to reply with a text message.
+ */
+ public static final String TYPE_TEXT_REPLY = "text_reply";
+ /**
+ * Indicates an action to create a reminder.
+ */
+ public static final String TYPE_CREATE_REMINDER = "create_reminder";
+ /**
+ * Indicates an action to reply with a location.
+ */
+ public static final String TYPE_SHARE_LOCATION = "share_location";
+
+ public static final Creator<ConversationAction> CREATOR =
+ new Creator<ConversationAction>() {
+ @Override
+ public ConversationAction createFromParcel(Parcel in) {
+ return new ConversationAction(in);
+ }
+
+ @Override
+ public ConversationAction[] newArray(int size) {
+ return new ConversationAction[size];
+ }
+ };
+
+ @NonNull
+ @ActionType
+ private final String mType;
+ @NonNull
+ private final CharSequence mTextReply;
+ @Nullable
+ private final RemoteAction mAction;
+
+ @FloatRange(from = 0, to = 1)
+ private final float mScore;
+
+ @NonNull
+ private final Bundle mExtras;
+
+ private ConversationAction(
+ @NonNull String type,
+ @Nullable RemoteAction action,
+ @Nullable CharSequence textReply,
+ float score,
+ @NonNull Bundle extras) {
+ mType = Preconditions.checkNotNull(type);
+ mAction = action;
+ mTextReply = textReply;
+ mScore = score;
+ mExtras = Preconditions.checkNotNull(extras);
+ }
+
+ private ConversationAction(Parcel in) {
+ mType = in.readString();
+ mAction = in.readParcelable(null);
+ mTextReply = in.readCharSequence();
+ mScore = in.readFloat();
+ mExtras = in.readBundle();
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int flags) {
+ parcel.writeString(mType);
+ parcel.writeParcelable(mAction, flags);
+ parcel.writeCharSequence(mTextReply);
+ parcel.writeFloat(mScore);
+ parcel.writeBundle(mExtras);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /** Returns the type of this action, for example, {@link #TYPE_VIEW_CALENDAR}. */
+ @NonNull
+ @ActionType
+ public String getType() {
+ return mType;
+ }
+
+ /**
+ * Returns a RemoteAction object, which contains the icon, label and a PendingIntent, for
+ * the specified action type.
+ */
+ @Nullable
+ public RemoteAction getAction() {
+ return mAction;
+ }
+
+ /**
+ * Returns the confidence score for the specified action. The value ranges from 0 (low
+ * confidence) to 1 (high confidence).
+ */
+ @FloatRange(from = 0, to = 1)
+ public float getConfidenceScore() {
+ return mScore;
+ }
+
+ /**
+ * Returns the text reply that could be sent as a reply to the given conversation.
+ * <p>
+ * This is only available when the type of the action is {@link #TYPE_TEXT_REPLY}.
+ */
+ @Nullable
+ public CharSequence getTextReply() {
+ return mTextReply;
+ }
+
+ /**
+ * Returns the extended data related to this conversation action.
+ *
+ * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
+ * prefer to hold a reference to the returned bundle rather than frequently calling this
+ * method.
+ */
+ @NonNull
+ public Bundle getExtras() {
+ return mExtras.deepCopy();
+ }
+
+ /** Builder class to construct {@link ConversationAction}. */
+ public static final class Builder {
+ @Nullable
+ @ActionType
+ private String mType;
+ @Nullable
+ private RemoteAction mAction;
+ @Nullable
+ private CharSequence mTextReply;
+ private float mScore;
+ @Nullable
+ private Bundle mExtras;
+
+ public Builder(@NonNull @ActionType String actionType) {
+ mType = Preconditions.checkNotNull(actionType);
+ }
+
+ /**
+ * Sets an action that may be performed on the given conversation.
+ */
+ @NonNull
+ public Builder setAction(@Nullable RemoteAction action) {
+ mAction = action;
+ return this;
+ }
+
+ /**
+ * Sets a text reply that may be performed on the given conversation.
+ */
+ @NonNull
+ public Builder setTextReply(@Nullable CharSequence textReply) {
+ mTextReply = textReply;
+ return this;
+ }
+
+ /** Sets the confident score. */
+ @NonNull
+ public Builder setConfidenceScore(@FloatRange(from = 0, to = 1) float score) {
+ mScore = score;
+ return this;
+ }
+
+ /**
+ * Sets the extended data for the conversation action object.
+ */
+ @NonNull
+ public Builder setExtras(@Nullable Bundle extras) {
+ mExtras = extras;
+ return this;
+ }
+
+ /** Builds the {@link ConversationAction} object. */
+ @NonNull
+ public ConversationAction build() {
+ return new ConversationAction(
+ mType,
+ mAction,
+ mTextReply,
+ mScore,
+ mExtras == null ? Bundle.EMPTY : mExtras.deepCopy());
+ }
+ }
+}
diff --git a/core/java/android/view/textclassifier/ConversationActions.java b/core/java/android/view/textclassifier/ConversationActions.java
index 3f690f7..f7c1a26 100644
--- a/core/java/android/view/textclassifier/ConversationActions.java
+++ b/core/java/android/view/textclassifier/ConversationActions.java
@@ -17,18 +17,15 @@
import static java.lang.annotation.RetentionPolicy.SOURCE;
-import android.annotation.FloatRange;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StringDef;
import android.app.Person;
-import android.app.RemoteAction;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.SpannedString;
-import android.util.ArraySet;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.Preconditions;
@@ -37,10 +34,8 @@
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
/**
* Represents a list of actions suggested by a {@link TextClassifier} on a given conversation.
@@ -62,83 +57,6 @@
}
};
- /** @hide */
- @Retention(SOURCE)
- @StringDef(
- value = {
- TYPE_VIEW_CALENDAR,
- TYPE_VIEW_MAP,
- TYPE_TRACK_FLIGHT,
- TYPE_OPEN_URL,
- TYPE_SEND_SMS,
- TYPE_CALL_PHONE,
- TYPE_SEND_EMAIL,
- TYPE_TEXT_REPLY,
- TYPE_CREATE_REMINDER,
- TYPE_SHARE_LOCATION
- },
- prefix = "TYPE_")
- public @interface ActionType {}
-
- /**
- * Indicates an action to view a calendar at a specified time.
- */
- public static final String TYPE_VIEW_CALENDAR = "view_calendar";
- /**
- * Indicates an action to view the map at a specified location.
- */
- public static final String TYPE_VIEW_MAP = "view_map";
- /**
- * Indicates an action to track a flight.
- */
- public static final String TYPE_TRACK_FLIGHT = "track_flight";
- /**
- * Indicates an action to open an URL.
- */
- public static final String TYPE_OPEN_URL = "open_url";
- /**
- * Indicates an action to send a SMS.
- */
- public static final String TYPE_SEND_SMS = "send_sms";
- /**
- * Indicates an action to call a phone number.
- */
- public static final String TYPE_CALL_PHONE = "call_phone";
- /**
- * Indicates an action to send an email.
- */
- public static final String TYPE_SEND_EMAIL = "send_email";
- /**
- * Indicates an action to reply with a text message.
- */
- public static final String TYPE_TEXT_REPLY = "text_reply";
- /**
- * Indicates an action to create a reminder.
- */
- public static final String TYPE_CREATE_REMINDER = "create_reminder";
- /**
- * Indicates an action to reply with a location.
- */
- public static final String TYPE_SHARE_LOCATION = "share_location";
-
- /** @hide */
- @Retention(SOURCE)
- @StringDef(
- value = {
- HINT_FOR_NOTIFICATION,
- HINT_FOR_IN_APP,
- },
- prefix = "HINT_")
- public @interface Hint {}
- /**
- * To indicate the generated actions will be used within the app.
- */
- public static final String HINT_FOR_IN_APP = "in_app";
- /**
- * To indicate the generated actions will be used for notification.
- */
- public static final String HINT_FOR_NOTIFICATION = "notification";
-
private final List<ConversationAction> mConversationActions;
private final String mId;
@@ -184,182 +102,6 @@
return mId;
}
- /** Represents the action suggested by a {@link TextClassifier} on a given conversation. */
- public static final class ConversationAction implements Parcelable {
-
- public static final Creator<ConversationAction> CREATOR =
- new Creator<ConversationAction>() {
- @Override
- public ConversationAction createFromParcel(Parcel in) {
- return new ConversationAction(in);
- }
-
- @Override
- public ConversationAction[] newArray(int size) {
- return new ConversationAction[size];
- }
- };
-
- @NonNull
- @ActionType
- private final String mType;
- @NonNull
- private final CharSequence mTextReply;
- @Nullable
- private final RemoteAction mAction;
-
- @FloatRange(from = 0, to = 1)
- private final float mScore;
-
- @NonNull
- private final Bundle mExtras;
-
- private ConversationAction(
- @NonNull String type,
- @Nullable RemoteAction action,
- @Nullable CharSequence textReply,
- float score,
- @NonNull Bundle extras) {
- mType = Preconditions.checkNotNull(type);
- mAction = action;
- mTextReply = textReply;
- mScore = score;
- mExtras = Preconditions.checkNotNull(extras);
- }
-
- private ConversationAction(Parcel in) {
- mType = in.readString();
- mAction = in.readParcelable(null);
- mTextReply = in.readCharSequence();
- mScore = in.readFloat();
- mExtras = in.readBundle();
- }
-
- @Override
- public void writeToParcel(Parcel parcel, int flags) {
- parcel.writeString(mType);
- parcel.writeParcelable(mAction, flags);
- parcel.writeCharSequence(mTextReply);
- parcel.writeFloat(mScore);
- parcel.writeBundle(mExtras);
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @NonNull
- @ActionType
- /** Returns the type of this action, for example, {@link #TYPE_VIEW_CALENDAR}. */
- public String getType() {
- return mType;
- }
-
- @Nullable
- /**
- * Returns a RemoteAction object, which contains the icon, label and a PendingIntent, for
- * the specified action type.
- */
- public RemoteAction getAction() {
- return mAction;
- }
-
- /**
- * Returns the confidence score for the specified action. The value ranges from 0 (low
- * confidence) to 1 (high confidence).
- */
- @FloatRange(from = 0, to = 1)
- public float getConfidenceScore() {
- return mScore;
- }
-
- /**
- * Returns the text reply that could be sent as a reply to the given conversation.
- * <p>
- * This is only available when the type of the action is {@link #TYPE_TEXT_REPLY}.
- */
- @Nullable
- public CharSequence getTextReply() {
- return mTextReply;
- }
-
- /**
- * Returns the extended data related to this conversation action.
- *
- * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
- * prefer to hold a reference to the returned bundle rather than frequently calling this
- * method.
- */
- @NonNull
- public Bundle getExtras() {
- return mExtras.deepCopy();
- }
-
- /** Builder class to construct {@link ConversationAction}. */
- public static final class Builder {
- @Nullable
- @ActionType
- private String mType;
- @Nullable
- private RemoteAction mAction;
- @Nullable
- private CharSequence mTextReply;
- private float mScore;
- @Nullable
- private Bundle mExtras;
-
- public Builder(@NonNull @ActionType String actionType) {
- mType = Preconditions.checkNotNull(actionType);
- }
-
- /**
- * Sets an action that may be performed on the given conversation.
- */
- @NonNull
- public Builder setAction(@Nullable RemoteAction action) {
- mAction = action;
- return this;
- }
-
- /**
- * Sets a text reply that may be performed on the given conversation.
- */
- @NonNull
- public Builder setTextReply(@Nullable CharSequence textReply) {
- mTextReply = textReply;
- return this;
- }
-
- /** Sets the confident score. */
- @NonNull
- public Builder setConfidenceScore(@FloatRange(from = 0, to = 1) float score) {
- mScore = score;
- return this;
- }
-
- /**
- * Sets the extended data for the conversation action object.
- */
- @NonNull
- public Builder setExtras(@Nullable Bundle extras) {
- mExtras = extras;
- return this;
- }
-
- /** Builds the {@link ConversationAction} object. */
- @NonNull
- public ConversationAction build() {
- return new ConversationAction(
- mType,
- mAction,
- mTextReply,
- mScore,
- mExtras == null ? Bundle.EMPTY : mExtras.deepCopy());
- }
- }
- }
-
/** Represents a message in the conversation. */
public static final class Message implements Parcelable {
/**
@@ -538,156 +280,36 @@
}
}
- /** Configuration object for specifying what action types to identify. */
- public static final class TypeConfig implements Parcelable {
- @NonNull
- @ActionType
- private final Set<String> mExcludedTypes;
- @NonNull
- @ActionType
- private final Set<String> mIncludedTypes;
- private final boolean mIncludeTypesFromTextClassifier;
-
- private TypeConfig(
- @NonNull Set<String> includedTypes,
- @NonNull Set<String> excludedTypes,
- boolean includeTypesFromTextClassifier) {
- mIncludedTypes = Preconditions.checkNotNull(includedTypes);
- mExcludedTypes = Preconditions.checkNotNull(excludedTypes);
- mIncludeTypesFromTextClassifier = includeTypesFromTextClassifier;
- }
-
- private TypeConfig(Parcel in) {
- mIncludedTypes = new ArraySet<>(in.createStringArrayList());
- mExcludedTypes = new ArraySet<>(in.createStringArrayList());
- mIncludeTypesFromTextClassifier = in.readByte() != 0;
- }
-
- @Override
- public void writeToParcel(Parcel parcel, int flags) {
- parcel.writeStringList(new ArrayList<>(mIncludedTypes));
- parcel.writeStringList(new ArrayList<>(mExcludedTypes));
- parcel.writeByte((byte) (mIncludeTypesFromTextClassifier ? 1 : 0));
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- public static final Creator<TypeConfig> CREATOR =
- new Creator<TypeConfig>() {
- @Override
- public TypeConfig createFromParcel(Parcel in) {
- return new TypeConfig(in);
- }
-
- @Override
- public TypeConfig[] newArray(int size) {
- return new TypeConfig[size];
- }
- };
-
- /**
- * Returns a final list of types that the text classifier should look for.
- *
- * <p>NOTE: This method is intended for use by a text classifier.
- *
- * @param defaultTypes types the text classifier thinks should be included before factoring
- * in the included/excluded types given by the client.
- */
- @NonNull
- public Collection<String> resolveTypes(@Nullable Collection<String> defaultTypes) {
- Set<String> types = new ArraySet<>();
- if (mIncludeTypesFromTextClassifier && defaultTypes != null) {
- types.addAll(defaultTypes);
- }
- types.addAll(mIncludedTypes);
- types.removeAll(mExcludedTypes);
- return Collections.unmodifiableCollection(types);
- }
-
- /**
- * Return whether the client allows the text classifier to include its own list of default
- * types. If this function returns {@code true}, the text classifier can consider specifying
- * a default list of entity types in {@link #resolveTypes(Collection)}.
- *
- * <p>NOTE: This method is intended for use by a text classifier.
- *
- * @see #resolveTypes(Collection)
- */
- public boolean shouldIncludeTypesFromTextClassifier() {
- return mIncludeTypesFromTextClassifier;
- }
-
- /** Builder class to construct the {@link TypeConfig} object. */
- public static final class Builder {
- @Nullable
- private Collection<String> mExcludedTypes;
- @Nullable
- private Collection<String> mIncludedTypes;
- private boolean mIncludeTypesFromTextClassifier = true;
-
- /**
- * Sets a collection of types that are explicitly included, for example, {@link
- * #TYPE_VIEW_CALENDAR}.
- */
- @NonNull
- public Builder setIncludedTypes(
- @Nullable @ActionType Collection<String> includedTypes) {
- mIncludedTypes = includedTypes;
- return this;
- }
-
- /**
- * Sets a collection of types that are explicitly excluded, for example, {@link
- * #TYPE_VIEW_CALENDAR}.
- */
- @NonNull
- public Builder setExcludedTypes(
- @Nullable @ActionType Collection<String> excludedTypes) {
- mExcludedTypes = excludedTypes;
- return this;
- }
-
- /**
- * Specifies whether or not to include the types suggested by the text classifier. By
- * default, it is included.
- */
- @NonNull
- public Builder includeTypesFromTextClassifier(boolean includeTypesFromTextClassifier) {
- mIncludeTypesFromTextClassifier = includeTypesFromTextClassifier;
- return this;
- }
-
- /**
- * Combines all of the options that have been set and returns a new {@link TypeConfig}
- * object.
- */
- @NonNull
- public TypeConfig build() {
- return new TypeConfig(
- mIncludedTypes == null
- ? Collections.emptySet()
- : new ArraySet<>(mIncludedTypes),
- mExcludedTypes == null
- ? Collections.emptySet()
- : new ArraySet<>(mExcludedTypes),
- mIncludeTypesFromTextClassifier);
- }
- }
- }
-
/**
* A request object for generating conversation action suggestions.
*
* @see TextClassifier#suggestConversationActions(Request)
*/
public static final class Request implements Parcelable {
+
+ /** @hide */
+ @Retention(SOURCE)
+ @StringDef(
+ value = {
+ HINT_FOR_NOTIFICATION,
+ HINT_FOR_IN_APP,
+ },
+ prefix = "HINT_")
+ public @interface Hint {}
+
+ /**
+ * To indicate the generated actions will be used within the app.
+ */
+ public static final String HINT_FOR_IN_APP = "in_app";
+ /**
+ * To indicate the generated actions will be used for notification.
+ */
+ public static final String HINT_FOR_NOTIFICATION = "notification";
+
@NonNull
private final List<Message> mConversation;
@NonNull
- private final TypeConfig mTypeConfig;
+ private final TextClassifier.EntityConfig mTypeConfig;
private final int mMaxSuggestions;
@NonNull
@Hint
@@ -699,7 +321,7 @@
private Request(
@NonNull List<Message> conversation,
- @NonNull TypeConfig typeConfig,
+ @NonNull TextClassifier.EntityConfig typeConfig,
int maxSuggestions,
String conversationId,
@Nullable @Hint List<String> hints) {
@@ -713,7 +335,7 @@
private static Request readFromParcel(Parcel in) {
List<Message> conversation = new ArrayList<>();
in.readParcelableList(conversation, null);
- TypeConfig typeConfig = in.readParcelable(null);
+ TextClassifier.EntityConfig typeConfig = in.readParcelable(null);
int maxSuggestions = in.readInt();
String conversationId = in.readString();
List<String> hints = new ArrayList<>();
@@ -760,7 +382,7 @@
/** Returns the type config. */
@NonNull
- public TypeConfig getTypeConfig() {
+ public TextClassifier.EntityConfig getTypeConfig() {
return mTypeConfig;
}
@@ -820,7 +442,7 @@
@NonNull
private List<Message> mConversation;
@Nullable
- private TypeConfig mTypeConfig;
+ private TextClassifier.EntityConfig mTypeConfig;
private int mMaxSuggestions;
@Nullable
private String mConversationId;
@@ -849,7 +471,7 @@
/** Sets the type config. */
@NonNull
- public Builder setTypeConfig(@Nullable TypeConfig typeConfig) {
+ public Builder setTypeConfig(@Nullable TextClassifier.EntityConfig typeConfig) {
mTypeConfig = typeConfig;
return this;
}
@@ -879,7 +501,9 @@
public Request build() {
return new Request(
Collections.unmodifiableList(mConversation),
- mTypeConfig == null ? new TypeConfig.Builder().build() : mTypeConfig,
+ mTypeConfig == null
+ ? new TextClassifier.EntityConfig.Builder().build()
+ : mTypeConfig,
mMaxSuggestions,
mConversationId,
mHints == null
diff --git a/core/java/android/view/textclassifier/TextClassificationConstants.java b/core/java/android/view/textclassifier/TextClassificationConstants.java
index 50801a2..ce680ec 100644
--- a/core/java/android/view/textclassifier/TextClassificationConstants.java
+++ b/core/java/android/view/textclassifier/TextClassificationConstants.java
@@ -117,15 +117,15 @@
.add(TextClassifier.TYPE_FLIGHT_NUMBER).toString();
private static final String CONVERSATION_ACTIONS_TYPES_DEFAULT_VALUES =
new StringJoiner(ENTITY_LIST_DELIMITER)
- .add(ConversationActions.TYPE_TEXT_REPLY)
- .add(ConversationActions.TYPE_CREATE_REMINDER)
- .add(ConversationActions.TYPE_CALL_PHONE)
- .add(ConversationActions.TYPE_OPEN_URL)
- .add(ConversationActions.TYPE_SEND_EMAIL)
- .add(ConversationActions.TYPE_SEND_SMS)
- .add(ConversationActions.TYPE_TRACK_FLIGHT)
- .add(ConversationActions.TYPE_VIEW_CALENDAR)
- .add(ConversationActions.TYPE_VIEW_MAP)
+ .add(ConversationAction.TYPE_TEXT_REPLY)
+ .add(ConversationAction.TYPE_CREATE_REMINDER)
+ .add(ConversationAction.TYPE_CALL_PHONE)
+ .add(ConversationAction.TYPE_OPEN_URL)
+ .add(ConversationAction.TYPE_SEND_EMAIL)
+ .add(ConversationAction.TYPE_SEND_SMS)
+ .add(ConversationAction.TYPE_TRACK_FLIGHT)
+ .add(ConversationAction.TYPE_VIEW_CALENDAR)
+ .add(ConversationAction.TYPE_VIEW_MAP)
.toString();
private final boolean mSystemTextClassifierEnabled;
diff --git a/core/java/android/view/textclassifier/TextClassifier.java b/core/java/android/view/textclassifier/TextClassifier.java
index 8709e09..5a56136 100644
--- a/core/java/android/view/textclassifier/TextClassifier.java
+++ b/core/java/android/view/textclassifier/TextClassifier.java
@@ -32,7 +32,6 @@
import android.text.util.Linkify;
import android.text.util.Linkify.LinkifyMask;
import android.util.ArrayMap;
-import android.util.ArraySet;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
@@ -43,6 +42,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -324,7 +324,7 @@
}
/**
- * Detects the language of the specified text.
+ * Detects the language of the text in the given request.
*
* <p><strong>NOTE: </strong>Call on a worker thread.
*
@@ -403,42 +403,59 @@
default void dump(@NonNull IndentingPrintWriter printWriter) {}
/**
- * Configuration object for specifying what entities to identify.
+ * Configuration object for specifying what entity types to identify.
*
* Configs are initially based on a predefined preset, and can be modified from there.
*/
final class EntityConfig implements Parcelable {
- private final Collection<String> mHints;
- private final Collection<String> mExcludedEntityTypes;
- private final Collection<String> mIncludedEntityTypes;
- private final boolean mUseHints;
+ private final List<String> mIncludedTypes;
+ private final List<String> mExcludedTypes;
+ private final List<String> mHints;
+ private final boolean mIncludeTypesFromTextClassifier;
- private EntityConfig(boolean useHints, Collection<String> hints,
- Collection<String> includedEntityTypes, Collection<String> excludedEntityTypes) {
- mHints = hints == null
- ? Collections.EMPTY_LIST
- : Collections.unmodifiableCollection(new ArraySet<>(hints));
- mExcludedEntityTypes = excludedEntityTypes == null
- ? Collections.EMPTY_LIST : new ArraySet<>(excludedEntityTypes);
- mIncludedEntityTypes = includedEntityTypes == null
- ? Collections.EMPTY_LIST : new ArraySet<>(includedEntityTypes);
- mUseHints = useHints;
+ private EntityConfig(
+ List<String> includedEntityTypes,
+ List<String> excludedEntityTypes,
+ List<String> hints,
+ boolean includeTypesFromTextClassifier) {
+ mIncludedTypes = Preconditions.checkNotNull(includedEntityTypes);
+ mExcludedTypes = Preconditions.checkNotNull(excludedEntityTypes);
+ mHints = Preconditions.checkNotNull(hints);
+ mIncludeTypesFromTextClassifier = includeTypesFromTextClassifier;
+ }
+
+ private EntityConfig(Parcel in) {
+ mIncludedTypes = new ArrayList<>();
+ in.readStringList(mIncludedTypes);
+ mExcludedTypes = new ArrayList<>();
+ in.readStringList(mExcludedTypes);
+ List<String> tmpHints = new ArrayList<>();
+ in.readStringList(tmpHints);
+ mHints = Collections.unmodifiableList(tmpHints);
+ mIncludeTypesFromTextClassifier = in.readByte() != 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int flags) {
+ parcel.writeStringList(mIncludedTypes);
+ parcel.writeStringList(mExcludedTypes);
+ parcel.writeStringList(mHints);
+ parcel.writeByte((byte) (mIncludeTypesFromTextClassifier ? 1 : 0));
}
/**
* Creates an EntityConfig.
*
* @param hints Hints for the TextClassifier to determine what types of entities to find.
+ *
+ * @deprecated Use {@link Builder} instead.
*/
+ @Deprecated
public static EntityConfig createWithHints(@Nullable Collection<String> hints) {
- return new EntityConfig(/* useHints */ true, hints,
- /* includedEntityTypes */null, /* excludedEntityTypes */ null);
- }
-
- // TODO: Remove once apps can build against the latest sdk.
- /** @hide */
- public static EntityConfig create(@Nullable Collection<String> hints) {
- return createWithHints(hints);
+ return new EntityConfig.Builder()
+ .includeTypesFromTextClassifier(true)
+ .setHints(hints)
+ .build();
}
/**
@@ -450,12 +467,19 @@
*
*
* Note that if an entity has been excluded, the exclusion will take precedence.
+ *
+ * @deprecated Use {@link Builder} instead.
*/
+ @Deprecated
public static EntityConfig create(@Nullable Collection<String> hints,
@Nullable Collection<String> includedEntityTypes,
@Nullable Collection<String> excludedEntityTypes) {
- return new EntityConfig(/* useHints */ true, hints,
- includedEntityTypes, excludedEntityTypes);
+ return new EntityConfig.Builder()
+ .setIncludedTypes(includedEntityTypes)
+ .setExcludedTypes(excludedEntityTypes)
+ .setHints(hints)
+ .includeTypesFromTextClassifier(true)
+ .build();
}
/**
@@ -463,34 +487,33 @@
*
* @param entityTypes Complete set of entities, e.g. {@link #TYPE_URL} to find.
*
+ * @deprecated Use {@link Builder} instead.
*/
+ @Deprecated
public static EntityConfig createWithExplicitEntityList(
@Nullable Collection<String> entityTypes) {
- return new EntityConfig(/* useHints */ false, /* hints */ null,
- /* includedEntityTypes */ entityTypes, /* excludedEntityTypes */ null);
- }
-
- // TODO: Remove once apps can build against the latest sdk.
- /** @hide */
- public static EntityConfig createWithEntityList(@Nullable Collection<String> entityTypes) {
- return createWithExplicitEntityList(entityTypes);
+ return new EntityConfig.Builder()
+ .setIncludedTypes(entityTypes)
+ .includeTypesFromTextClassifier(false)
+ .build();
}
/**
- * Returns a list of the final set of entities to find.
+ * Returns a final list of entity types to find.
*
- * @param entities Entities we think should be found before factoring in includes/excludes
+ * @param entityTypes Entity types we think should be found before factoring in
+ * includes/excludes
*
* This method is intended for use by TextClassifier implementations.
*/
public Collection<String> resolveEntityListModifications(
- @NonNull Collection<String> entities) {
- final Set<String> finalSet = new HashSet();
- if (mUseHints) {
- finalSet.addAll(entities);
+ @NonNull Collection<String> entityTypes) {
+ final Set<String> finalSet = new HashSet<>();
+ if (mIncludeTypesFromTextClassifier) {
+ finalSet.addAll(entityTypes);
}
- finalSet.addAll(mIncludedEntityTypes);
- finalSet.removeAll(mExcludedEntityTypes);
+ finalSet.addAll(mIncludedTypes);
+ finalSet.removeAll(mExcludedTypes);
return finalSet;
}
@@ -503,17 +526,22 @@
return mHints;
}
- @Override
- public int describeContents() {
- return 0;
+ /**
+ * Return whether the client allows the text classifier to include its own list of
+ * default types. If this function returns {@code true}, a default list of types suggested
+ * from a text classifier will be taking into account.
+ *
+ * <p>NOTE: This method is intended for use by a text classifier.
+ *
+ * @see #resolveEntityListModifications(Collection)
+ */
+ public boolean shouldIncludeTypesFromTextClassifier() {
+ return mIncludeTypesFromTextClassifier;
}
@Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeStringList(new ArrayList<>(mHints));
- dest.writeStringList(new ArrayList<>(mExcludedEntityTypes));
- dest.writeStringList(new ArrayList<>(mIncludedEntityTypes));
- dest.writeInt(mUseHints ? 1 : 0);
+ public int describeContents() {
+ return 0;
}
public static final Parcelable.Creator<EntityConfig> CREATOR =
@@ -529,11 +557,75 @@
}
};
- private EntityConfig(Parcel in) {
- mHints = new ArraySet<>(in.createStringArrayList());
- mExcludedEntityTypes = new ArraySet<>(in.createStringArrayList());
- mIncludedEntityTypes = new ArraySet<>(in.createStringArrayList());
- mUseHints = in.readInt() == 1;
+
+
+ /** Builder class to construct the {@link EntityConfig} object. */
+ public static final class Builder {
+ @Nullable
+ private Collection<String> mIncludedTypes;
+ @Nullable
+ private Collection<String> mExcludedTypes;
+ @Nullable
+ private Collection<String> mHints;
+ private boolean mIncludeTypesFromTextClassifier = true;
+
+ /**
+ * Sets a collection of types that are explicitly included.
+ */
+ @NonNull
+ public Builder setIncludedTypes(@Nullable Collection<String> includedTypes) {
+ mIncludedTypes = includedTypes;
+ return this;
+ }
+
+ /**
+ * Sets a collection of types that are explicitly excluded.
+ */
+ @NonNull
+ public Builder setExcludedTypes(@Nullable Collection<String> excludedTypes) {
+ mExcludedTypes = excludedTypes;
+ return this;
+ }
+
+ /**
+ * Specifies whether or not to include the types suggested by the text classifier. By
+ * default, it is included.
+ */
+ @NonNull
+ public Builder includeTypesFromTextClassifier(boolean includeTypesFromTextClassifier) {
+ mIncludeTypesFromTextClassifier = includeTypesFromTextClassifier;
+ return this;
+ }
+
+
+ /**
+ * Sets the hints for the TextClassifier to determine what types of entities to find.
+ * These hints will only be used if {@link #includeTypesFromTextClassifier} is
+ * set to be true.
+ */
+ public Builder setHints(Collection<String> hints) {
+ mHints = hints;
+ return this;
+ }
+
+ /**
+ * Combines all of the options that have been set and returns a new {@link EntityConfig}
+ * object.
+ */
+ @NonNull
+ public EntityConfig build() {
+ return new EntityConfig(
+ mIncludedTypes == null
+ ? Collections.emptyList()
+ : new ArrayList<>(mIncludedTypes),
+ mExcludedTypes == null
+ ? Collections.emptyList()
+ : new ArrayList<>(mExcludedTypes),
+ mHints == null
+ ? Collections.emptyList()
+ : Collections.unmodifiableList(new ArrayList<>(mHints)),
+ mIncludeTypesFromTextClassifier);
+ }
}
}
diff --git a/core/java/android/view/textclassifier/TextClassifierImpl.java b/core/java/android/view/textclassifier/TextClassifierImpl.java
index d5b9eb1..9ab963e 100644
--- a/core/java/android/view/textclassifier/TextClassifierImpl.java
+++ b/core/java/android/view/textclassifier/TextClassifierImpl.java
@@ -393,7 +393,7 @@
actionsImpl.suggestActions(nativeConversation, null);
Collection<String> expectedTypes = resolveActionTypesFromRequest(request);
- List<ConversationActions.ConversationAction> conversationActions = new ArrayList<>();
+ List<ConversationAction> conversationActions = new ArrayList<>();
int maxSuggestions = nativeSuggestions.length;
if (request.getMaxSuggestions() > 0) {
maxSuggestions = Math.min(request.getMaxSuggestions(), nativeSuggestions.length);
@@ -405,7 +405,7 @@
continue;
}
conversationActions.add(
- new ConversationActions.ConversationAction.Builder(actionType)
+ new ConversationAction.Builder(actionType)
.setTextReply(nativeSuggestion.getResponseText())
.setConfidenceScore(nativeSuggestion.getScore())
.build());
@@ -445,10 +445,10 @@
private Collection<String> resolveActionTypesFromRequest(ConversationActions.Request request) {
List<String> defaultActionTypes =
- request.getHints().contains(ConversationActions.HINT_FOR_NOTIFICATION)
+ request.getHints().contains(ConversationActions.Request.HINT_FOR_NOTIFICATION)
? mSettings.getNotificationConversationActionTypes()
: mSettings.getInAppConversationActionTypes();
- return request.getTypeConfig().resolveTypes(defaultActionTypes);
+ return request.getTypeConfig().resolveEntityListModifications(defaultActionTypes);
}
private AnnotatorModel getAnnotatorImpl(LocaleList localeList)
diff --git a/core/java/android/view/textservice/SpellCheckerSession.java b/core/java/android/view/textservice/SpellCheckerSession.java
index 9733701..f553ca5 100644
--- a/core/java/android/view/textservice/SpellCheckerSession.java
+++ b/core/java/android/view/textservice/SpellCheckerSession.java
@@ -27,7 +27,6 @@
import com.android.internal.textservice.ISpellCheckerSession;
import com.android.internal.textservice.ISpellCheckerSessionListener;
-import com.android.internal.textservice.ITextServicesManager;
import com.android.internal.textservice.ITextServicesSessionListener;
import dalvik.system.CloseGuard;
@@ -96,7 +95,7 @@
private static final int MSG_ON_GET_SUGGESTION_MULTIPLE_FOR_SENTENCE = 2;
private final InternalListener mInternalListener;
- private final ITextServicesManager mTextServicesManager;
+ private final TextServicesManager mTextServicesManager;
private final SpellCheckerInfo mSpellCheckerInfo;
@UnsupportedAppUsage
private final SpellCheckerSessionListener mSpellCheckerSessionListener;
@@ -124,7 +123,7 @@
* @hide
*/
public SpellCheckerSession(
- SpellCheckerInfo info, ITextServicesManager tsm, SpellCheckerSessionListener listener) {
+ SpellCheckerInfo info, TextServicesManager tsm, SpellCheckerSessionListener listener) {
if (info == null || listener == null || tsm == null) {
throw new NullPointerException();
}
@@ -166,12 +165,8 @@
*/
public void close() {
mGuard.close();
- try {
- mSpellCheckerSessionListenerImpl.close();
- mTextServicesManager.finishSpellCheckerService(mSpellCheckerSessionListenerImpl);
- } catch (RemoteException e) {
- // do nothing
- }
+ mSpellCheckerSessionListenerImpl.close();
+ mTextServicesManager.finishSpellCheckerService(mSpellCheckerSessionListenerImpl);
}
/**
diff --git a/core/java/android/view/textservice/TextServicesManager.java b/core/java/android/view/textservice/TextServicesManager.java
index 5dc8b19..9ff64d9 100644
--- a/core/java/android/view/textservice/TextServicesManager.java
+++ b/core/java/android/view/textservice/TextServicesManager.java
@@ -16,16 +16,20 @@
package android.view.textservice;
+import android.annotation.NonNull;
import android.annotation.SystemService;
import android.annotation.UnsupportedAppUsage;
+import android.annotation.UserIdInt;
import android.content.Context;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager.ServiceNotFoundException;
+import android.os.UserHandle;
import android.util.Log;
import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
+import com.android.internal.textservice.ISpellCheckerSessionListener;
import com.android.internal.textservice.ITextServicesManager;
import java.util.Locale;
@@ -67,17 +71,41 @@
private static final String TAG = TextServicesManager.class.getSimpleName();
private static final boolean DBG = false;
+ /**
+ * @deprecated Do not use. Just kept because of {@link UnsupportedAppUsage} in
+ * {@link #getInstance()}.
+ */
+ @Deprecated
private static TextServicesManager sInstance;
private final ITextServicesManager mService;
- private TextServicesManager() throws ServiceNotFoundException {
+ @UserIdInt
+ private final int mUserId;
+
+ private TextServicesManager(@UserIdInt int userId) throws ServiceNotFoundException {
mService = ITextServicesManager.Stub.asInterface(
ServiceManager.getServiceOrThrow(Context.TEXT_SERVICES_MANAGER_SERVICE));
+ mUserId = userId;
}
/**
- * Retrieve the global TextServicesManager instance, creating it if it doesn't already exist.
+ * The factory method of {@link TextServicesManager}.
+ *
+ * @param context {@link Context} from which {@link TextServicesManager} should be instantiated.
+ * @return {@link TextServicesManager} that is associated with {@link Context#getUserId()}.
+ * @throws ServiceNotFoundException When {@link TextServicesManager} is not available.
+ * @hide
+ */
+ @NonNull
+ public static TextServicesManager createInstance(@NonNull Context context)
+ throws ServiceNotFoundException {
+ return new TextServicesManager(context.getUserId());
+ }
+
+ /**
+ * @deprecated Do not use. Just kept because of {@link UnsupportedAppUsage} in
+ * {@link #getInstance()}.
* @hide
*/
@UnsupportedAppUsage
@@ -85,7 +113,7 @@
synchronized (TextServicesManager.class) {
if (sInstance == null) {
try {
- sInstance = new TextServicesManager();
+ sInstance = new TextServicesManager(UserHandle.myUserId());
} catch (ServiceNotFoundException e) {
throw new IllegalStateException(e);
}
@@ -136,7 +164,7 @@
final SpellCheckerInfo sci;
try {
- sci = mService.getCurrentSpellChecker(null);
+ sci = mService.getCurrentSpellChecker(mUserId, null);
} catch (RemoteException e) {
return null;
}
@@ -174,9 +202,9 @@
if (subtypeInUse == null) {
return null;
}
- final SpellCheckerSession session = new SpellCheckerSession(sci, mService, listener);
+ final SpellCheckerSession session = new SpellCheckerSession(sci, this, listener);
try {
- mService.getSpellCheckerService(sci.getId(), subtypeInUse.getLocale(),
+ mService.getSpellCheckerService(mUserId, sci.getId(), subtypeInUse.getLocale(),
session.getTextServicesSessionListener(),
session.getSpellCheckerSessionListener(), bundle);
} catch (RemoteException e) {
@@ -191,7 +219,7 @@
@UnsupportedAppUsage
public SpellCheckerInfo[] getEnabledSpellCheckers() {
try {
- final SpellCheckerInfo[] retval = mService.getEnabledSpellCheckers();
+ final SpellCheckerInfo[] retval = mService.getEnabledSpellCheckers(mUserId);
if (DBG) {
Log.d(TAG, "getEnabledSpellCheckers: " + (retval != null ? retval.length : "null"));
}
@@ -208,7 +236,7 @@
public SpellCheckerInfo getCurrentSpellChecker() {
try {
// Passing null as a locale for ICS
- return mService.getCurrentSpellChecker(null);
+ return mService.getCurrentSpellChecker(mUserId, null);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -221,7 +249,7 @@
public SpellCheckerSubtype getCurrentSpellCheckerSubtype(
boolean allowImplicitlySelectedSubtype) {
try {
- return mService.getCurrentSpellCheckerSubtype(allowImplicitlySelectedSubtype);
+ return mService.getCurrentSpellCheckerSubtype(mUserId, allowImplicitlySelectedSubtype);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -233,7 +261,15 @@
@UnsupportedAppUsage
public boolean isSpellCheckerEnabled() {
try {
- return mService.isSpellCheckerEnabled();
+ return mService.isSpellCheckerEnabled(mUserId);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ void finishSpellCheckerService(ISpellCheckerSessionListener listener) {
+ try {
+ mService.finishSpellCheckerService(mUserId, listener);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index bad2dbf..6039350 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -16,6 +16,7 @@
package android.webkit;
+import android.annotation.CallbackExecutor;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -69,6 +70,7 @@
import java.lang.annotation.RetentionPolicy;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.Executor;
/**
* A View that displays web pages.
@@ -1688,6 +1690,84 @@
return mProvider.getWebViewClient();
}
+
+ /**
+ * Gets the WebView renderer associated with this WebView.
+ *
+ * <p>In {@link android.os.Build.VERSION_CODES#O} and above, WebView may
+ * run in "multiprocess" mode. In multiprocess mode, rendering of web
+ * content is performed by a sandboxed renderer process separate to the
+ * application process. This renderer process may be shared with other
+ * WebViews in the application, but is not shared with other application
+ * processes.
+ *
+ * <p>If WebView is running in multiprocess mode, this method returns a
+ * handle to the renderer process associated with the WebView, which can
+ * be used to control the renderer process.
+ *
+ * @return the {@link WebViewRenderer} renderer handle associated
+ * with this {@link WebView}, or {@code null} if
+ * WebView is not runing in multiprocess mode.
+ */
+ @Nullable
+ public WebViewRenderer getWebViewRenderer() {
+ checkThread();
+ return mProvider.getWebViewRenderer();
+ }
+
+ /**
+ * Sets the renderer client object associated with this WebView.
+ *
+ * <p>The renderer client encapsulates callbacks relevant to WebView renderer
+ * state. See {@link WebViewRendererClient} for details.
+ *
+ * <p>Although many WebView instances may share a single underlying
+ * renderer, and renderers may live either in the application
+ * process, or in a sandboxed process that is isolated from the
+ * application process, instances of {@link WebViewRendererClient}
+ * are set per-WebView. Callbacks represent renderer events from
+ * the perspective of this WebView, and may or may not be correlated
+ * with renderer events affecting other WebViews.
+ *
+ * @param executor the Executor on which {@link WebViewRendererClient} callbacks will execute.
+ * @param webViewRendererClient the {@link WebViewRendererClient} object.
+ */
+ public void setWebViewRendererClient(
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull WebViewRendererClient webViewRendererClient) {
+ checkThread();
+ mProvider.setWebViewRendererClient(executor, webViewRendererClient);
+ }
+
+ /**
+ * Sets the renderer client object associated with this WebView.
+ *
+ * See {@link #setWebViewRendererClient(Executor,WebViewRendererClient)} for details.
+ *
+ * <p> {@link WebViewRendererClient} callbacks will run on the thread that this WebView was
+ * initialized on.
+ *
+ * @param webViewRendererClient the {@link WebViewRendererClient} object.
+ */
+ public void setWebViewRendererClient(
+ @Nullable WebViewRendererClient webViewRendererClient) {
+ checkThread();
+ mProvider.setWebViewRendererClient(null, webViewRendererClient);
+ }
+
+ /**
+ * Gets the renderer client object associated with this WebView.
+ *
+ * @return the {@link WebViewRendererClient} object associated with this WebView, if one has
+ * been set via {@link #setWebViewRendererClient(WebViewRendererClient)} or {@code null}
+ * otherwise.
+ */
+ @Nullable
+ public WebViewRendererClient getWebViewRendererClient() {
+ checkThread();
+ return mProvider.getWebViewRendererClient();
+ }
+
/**
* Registers the interface to be used when content can not be handled by
* the rendering engine, and should be downloaded instead. This will replace
diff --git a/core/java/android/webkit/WebViewClient.java b/core/java/android/webkit/WebViewClient.java
index 300bb6f..090640e 100644
--- a/core/java/android/webkit/WebViewClient.java
+++ b/core/java/android/webkit/WebViewClient.java
@@ -379,11 +379,16 @@
/**
* Notify the host application that an SSL error occurred while loading a
- * resource. The host application must call either handler.cancel() or
- * handler.proceed(). Note that the decision may be retained for use in
+ * resource. The host application must call either {@link SslErrorHandler#cancel} or
+ * {@link SslErrorHandler#proceed}. Note that the decision may be retained for use in
* response to future SSL errors. The default behavior is to cancel the
* load.
* <p>
+ * This API is only called for recoverable SSL certificate errors. In the case of
+ * non-recoverable errors (such as when the server fails the client), WebView will call {@link
+ * #onReceivedError(WebView, WebResourceRequest, WebResourceError)} with {@link
+ * #ERROR_FAILED_SSL_HANDSHAKE}.
+ * <p>
* Applications are advised not to prompt the user about SSL errors, as
* the user is unlikely to be able to make an informed security decision
* and WebView does not provide any UI for showing the details of the
@@ -391,10 +396,10 @@
* <p>
* Application overrides of this method may display custom error pages or
* silently log issues, but it is strongly recommended to always call
- * handler.cancel() and never allow proceeding past errors.
+ * {@link SslErrorHandler#cancel} and never allow proceeding past errors.
*
* @param view The WebView that is initiating the callback.
- * @param handler An SslErrorHandler object that will handle the user's
+ * @param handler An {@link SslErrorHandler} that will handle the user's
* response.
* @param error The SSL error object.
*/
diff --git a/core/java/android/webkit/WebViewProvider.java b/core/java/android/webkit/WebViewProvider.java
index 95e7a986..baf5826 100644
--- a/core/java/android/webkit/WebViewProvider.java
+++ b/core/java/android/webkit/WebViewProvider.java
@@ -54,6 +54,7 @@
import java.io.BufferedWriter;
import java.io.File;
import java.util.Map;
+import java.util.concurrent.Executor;
/**
* WebView backend provider interface: this interface is the abstract backend to a WebView
@@ -237,6 +238,14 @@
public WebViewClient getWebViewClient();
+ public WebViewRenderer getWebViewRenderer();
+
+ public void setWebViewRendererClient(
+ @Nullable Executor executor,
+ @Nullable WebViewRendererClient client);
+
+ public WebViewRendererClient getWebViewRendererClient();
+
public void setDownloadListener(DownloadListener listener);
public void setWebChromeClient(WebChromeClient client);
diff --git a/core/java/android/webkit/WebViewRenderer.java b/core/java/android/webkit/WebViewRenderer.java
new file mode 100644
index 0000000..5328254
--- /dev/null
+++ b/core/java/android/webkit/WebViewRenderer.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2019 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 android.webkit;
+
+/**
+ * WebViewRenderer provides an opaque handle to a {@link WebView} renderer.
+ */
+public abstract class WebViewRenderer {
+ /**
+ * Cause this renderer to terminate.
+ *
+ * <p>Calling this on a not yet started, or an already terminated renderer will have no effect.
+ *
+ * <p>Terminating a renderer process may have an effect on multiple {@link WebView} instances.
+ *
+ * <p>Renderer termination must be handled by properly overriding
+ * {@link WebViewClient#onRenderProcessGone} for every WebView that shares this
+ * renderer. If termination is not handled by all associated WebViews, then the application
+ * process will also be terminated.
+ *
+ * @return {@code true} if it was possible to terminate this renderer, {@code false} otherwise.
+ */
+ public abstract boolean terminate();
+
+ /**
+ * This class cannot be created by applications.
+ * @hide
+ */
+ public WebViewRenderer() {
+ }
+}
diff --git a/core/java/android/webkit/WebViewRendererClient.java b/core/java/android/webkit/WebViewRendererClient.java
new file mode 100644
index 0000000..2fadf54
--- /dev/null
+++ b/core/java/android/webkit/WebViewRendererClient.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2019 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 android.webkit;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+
+/**
+ * Used to receive callbacks on {@link WebView} renderer events.
+ *
+ * WebViewRendererClient instances may be set or retrieved via {@link
+ * WebView#setWebViewRendererClient(WebViewRendererClient)} and {@link
+ * WebView#getWebViewRendererClient()}.
+ *
+ * Instances may be attached to multiple WebViews, and thus a single renderer event may cause
+ * a callback to be called multiple times with different WebView parameters.
+ */
+public abstract class WebViewRendererClient {
+ /**
+ * Called when the renderer currently associated with {@code view} becomes unresponsive as a
+ * result of a long running blocking task such as the execution of JavaScript.
+ *
+ * <p>If a WebView fails to process an input event, or successfully navigate to a new URL within
+ * a reasonable time frame, the renderer is considered to be unresponsive, and this callback
+ * will be called.
+ *
+ * <p>This callback will continue to be called at regular intervals as long as the renderer
+ * remains unresponsive. If the renderer becomes responsive again, {@link
+ * WebViewRendererClient#onRendererResponsive} will be called once, and this method will not
+ * subsequently be called unless another period of unresponsiveness is detected.
+ *
+ * <p>No action is taken by WebView as a result of this method call. Applications may
+ * choose to terminate the associated renderer via the object that is passed to this callback,
+ * if in multiprocess mode, however this must be accompanied by correctly handling
+ * {@link WebViewClient#onRenderProcessGone} for this WebView, and all other WebViews associated
+ * with the same renderer. Failure to do so will result in application termination.
+ *
+ * @param view The {@link WebView} for which unresponsiveness was detected.
+ * @param renderer The {@link WebViewRenderer} that has become unresponsive,
+ * or {@code null} if WebView is running in single process mode.
+ */
+ public abstract void onRendererUnresponsive(
+ @NonNull WebView view, @Nullable WebViewRenderer renderer);
+
+ /**
+ * Called once when an unresponsive renderer currently associated with {@code view} becomes
+ * responsive.
+ *
+ * <p>After a WebView renderer becomes unresponsive, which is notified to the application by
+ * {@link WebViewRendererClient#onRendererUnresponsive}, it is possible for the blocking
+ * renderer task to complete, returning the renderer to a responsive state. In that case,
+ * this method is called once to indicate responsiveness.
+ *
+ * <p>No action is taken by WebView as a result of this method call.
+ *
+ * @param view The {@link WebView} for which responsiveness was detected.
+ *
+ * @param renderer The {@link WebViewRenderer} that has become responsive, or {@code null} if
+ * WebView is running in single process mode.
+ */
+ public abstract void onRendererResponsive(
+ @NonNull WebView view, @Nullable WebViewRenderer renderer);
+}
diff --git a/core/java/android/webkit/WebViewZygote.java b/core/java/android/webkit/WebViewZygote.java
index 9f7aa6a..29b3b3c 100644
--- a/core/java/android/webkit/WebViewZygote.java
+++ b/core/java/android/webkit/WebViewZygote.java
@@ -160,7 +160,9 @@
"webview_zygote", // seInfo
sPackage.applicationInfo.primaryCpuAbi, // abi
TextUtils.join(",", Build.SUPPORTED_ABIS),
- null); // instructionSet
+ null, // instructionSet
+ Process.FIRST_ISOLATED_UID,
+ Process.LAST_ISOLATED_UID);
// All the work below is usually done by LoadedApk, but the zygote can't talk to
// PackageManager or construct a LoadedApk since it's single-threaded pre-fork, so
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 3c32bb2..55364ec 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -2394,6 +2394,17 @@
}
}
+ /**
+ * Called when {@link TextView#mTextOperationUser} has changed.
+ *
+ * <p>Any user-specific resources need to be refreshed here.</p>
+ */
+ final void onTextOperationUserChanged() {
+ if (mSpellChecker != null) {
+ mSpellChecker.resetSession();
+ }
+ }
+
protected void stopTextActionMode() {
if (mTextActionMode != null) {
// This will hide the mSelectionModifierCursorController
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java
index fc1172e..d4aad75 100644
--- a/core/java/android/widget/SpellChecker.java
+++ b/core/java/android/widget/SpellChecker.java
@@ -16,7 +16,7 @@
package android.widget;
-import android.content.Context;
+import android.annotation.Nullable;
import android.text.Editable;
import android.text.Selection;
import android.text.Spanned;
@@ -93,6 +93,7 @@
// concurrently due to the asynchronous nature of onGetSuggestions.
private WordIterator mWordIterator;
+ @Nullable
private TextServicesManager mTextServicesManager;
private Runnable mSpellRunnable;
@@ -114,12 +115,12 @@
mCookie = hashCode();
}
- private void resetSession() {
+ void resetSession() {
closeSession();
- mTextServicesManager = (TextServicesManager) mTextView.getContext().
- getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE);
+ mTextServicesManager = mTextView.getTextServicesManagerForUser();
if (mCurrentLocale == null
+ || mTextServicesManager == null
|| mTextView.length() == 0
|| !mTextServicesManager.isSpellCheckerEnabled()
|| mTextServicesManager.getCurrentSpellCheckerSubtype(true) == null) {
@@ -226,7 +227,8 @@
start = 0;
end = mTextView.getText().length();
} else {
- final boolean spellCheckerActivated = mTextServicesManager.isSpellCheckerEnabled();
+ final boolean spellCheckerActivated =
+ mTextServicesManager != null && mTextServicesManager.isSpellCheckerEnabled();
if (isSessionActive != spellCheckerActivated) {
// Spell checker has been turned of or off since last spellCheck
resetSession();
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 0d16998..1085e5d 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -16,6 +16,7 @@
package android.widget;
+import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
import static android.view.accessibility.AccessibilityNodeInfo.EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH;
import static android.view.accessibility.AccessibilityNodeInfo.EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX;
import static android.view.accessibility.AccessibilityNodeInfo.EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY;
@@ -31,6 +32,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Px;
+import android.annotation.RequiresPermission;
import android.annotation.Size;
import android.annotation.StringRes;
import android.annotation.StyleRes;
@@ -45,10 +47,10 @@
import android.content.Context;
import android.content.Intent;
import android.content.UndoManager;
+import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
-import android.content.res.ResourceId;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
@@ -74,7 +76,9 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.os.ParcelableParcel;
+import android.os.Process;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.provider.Settings;
import android.text.BoringLayout;
import android.text.DynamicLayout;
@@ -195,6 +199,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Locale;
+import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
@@ -786,6 +791,19 @@
private InputFilter[] mFilters = NO_FILTERS;
+ /**
+ * {@link UserHandle} that represents the logical owner of the text. {@code null} when it is
+ * the same as {@link Process#myUserHandle()}.
+ *
+ * <p>Most of applications should not worry about this. Some privileged apps that host UI for
+ * other apps may need to set this so that the system can use right user's resources and
+ * services such as input methods and spell checkers.</p>
+ *
+ * @see #setTextOperationUser(UserHandle)
+ */
+ @Nullable
+ private UserHandle mTextOperationUser;
+
private volatile Locale mCurrentSpellCheckerLocaleCache;
// It is possible to have a selection even when mEditor is null (programmatically set, like when
@@ -889,7 +907,7 @@
// sanitize autofill requests.
private boolean mTextSetFromXmlOrResourceId = false;
// Resource id used to set the text.
- private @StringRes int mTextId = ResourceId.ID_NULL;
+ private @StringRes int mTextId = Resources.ID_NULL;
//
// End of autofill-related attributes
@@ -1180,7 +1198,7 @@
case com.android.internal.R.styleable.TextView_text:
textIsSetFromXml = true;
- mTextId = a.getResourceId(attr, ResourceId.ID_NULL);
+ mTextId = a.getResourceId(attr, Resources.ID_NULL);
text = a.getText(attr);
break;
@@ -8325,6 +8343,7 @@
outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_ENTER_ACTION;
}
outAttrs.hintText = mHint;
+ outAttrs.targetInputMethodUser = mTextOperationUser;
if (mText instanceof Editable) {
InputConnection ic = new EditableInputConnection(this);
outAttrs.initialSelStart = getSelectionStart();
@@ -10902,6 +10921,55 @@
}
/**
+ * Associate {@link UserHandle} who is considered to be the logical owner of the text shown in
+ * this {@link TextView}.
+ *
+ * <p>Most of applications should not worry about this. Some privileged apps that host UI for
+ * other apps may need to set this so that the system can user right user's resources and
+ * services such as input methods and spell checkers.</p>
+ *
+ * @param user {@link UserHandle} who is considered to be the owner of the text shown in this
+ * {@link TextView}. {@code null} to reset {@link #mTextOperationUser}.
+ * @hide
+ */
+ @RequiresPermission(INTERACT_ACROSS_USERS_FULL)
+ public final void setTextOperationUser(@Nullable UserHandle user) {
+ if (Objects.equals(mTextOperationUser, user)) {
+ return;
+ }
+ if (user != null && !Process.myUserHandle().equals(user)) {
+ // Just for preventing people from accidentally using this hidden API without
+ // the required permission. The same permission is also checked in the system server.
+ if (getContext().checkSelfPermission(INTERACT_ACROSS_USERS_FULL)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("INTERACT_ACROSS_USERS_FULL is required."
+ + " userId=" + user.getIdentifier()
+ + " callingUserId" + UserHandle.myUserId());
+ }
+ }
+ mTextOperationUser = user;
+ // Invalidate some resources
+ mCurrentSpellCheckerLocaleCache = null;
+ if (mEditor != null) {
+ mEditor.onTextOperationUserChanged();
+ }
+ }
+
+ @Nullable
+ final TextServicesManager getTextServicesManagerForUser() {
+ if (mTextOperationUser == null) {
+ return getContext().getSystemService(TextServicesManager.class);
+ }
+ try {
+ return getContext().createPackageContextAsUser(
+ "android", 0 /* flags */, mTextOperationUser)
+ .getSystemService(TextServicesManager.class);
+ } catch (PackageManager.NameNotFoundException e) {
+ return null;
+ }
+ }
+
+ /**
* This is a temporary method. Future versions may support multi-locale text.
* Caveat: This method may not return the latest text services locale, but this should be
* acceptable and it's more important to make this method asynchronous.
@@ -10973,8 +11041,10 @@
@UnsupportedAppUsage
private void updateTextServicesLocaleLocked() {
- final TextServicesManager textServicesManager = (TextServicesManager)
- mContext.getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE);
+ final TextServicesManager textServicesManager = getTextServicesManagerForUser();
+ if (textServicesManager == null) {
+ return;
+ }
final SpellCheckerSubtype subtype = textServicesManager.getCurrentSpellCheckerSubtype(true);
final Locale locale;
if (subtype != null) {
@@ -11031,7 +11101,7 @@
if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
structure.setDataIsSensitive(!mTextSetFromXmlOrResourceId);
}
- if (mTextId != ResourceId.ID_NULL) {
+ if (mTextId != Resources.ID_NULL) {
try {
structure.setTextIdEntry(getResources().getResourceEntryName(mTextId));
} catch (Resources.NotFoundException e) {
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 4523d3b..b4d8322 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -21,19 +21,24 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.IntentSender;
import android.content.IntentSender.SendIntentException;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.pm.LabeledIntent;
+import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
+import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
import android.database.DataSetObserver;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
@@ -75,6 +80,7 @@
import java.io.File;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -92,6 +98,15 @@
private static final boolean DEBUG = false;
+ /**
+ * If set to true, use ShortcutManager to retrieve the matching direct share targets, instead of
+ * binding to every ChooserTargetService implementation.
+ */
+ // TODO(b/121287573): Replace with a system flag (setprop?)
+ private static final boolean USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS = false;
+ // TODO(b/121287224): Re-evaluate this limit
+ private static final int SHARE_TARGET_QUERY_PACKAGE_LIMIT = 20;
+
private static final int QUERY_TARGET_SERVICE_LIMIT = 5;
private static final int WATCHDOG_TIMEOUT_MILLIS = 2000;
@@ -120,6 +135,7 @@
private static final int CHOOSER_TARGET_SERVICE_RESULT = 1;
private static final int CHOOSER_TARGET_SERVICE_WATCHDOG_TIMEOUT = 2;
+ private static final int SHORTCUT_MANAGER_SHARE_TARGET_RESULT = 3;
private final Handler mChooserHandler = new Handler() {
@Override
@@ -158,6 +174,18 @@
mChooserListAdapter.setShowServiceTargets(true);
break;
+ case SHORTCUT_MANAGER_SHARE_TARGET_RESULT:
+ if (DEBUG) Log.d(TAG, "SHORTCUT_MANAGER_SHARE_TARGET_RESULT");
+ if (isDestroyed()) break;
+ final ServiceResultInfo resultInfo = (ServiceResultInfo) msg.obj;
+ if (resultInfo.resultTargets != null) {
+ mChooserListAdapter.addServiceResults(resultInfo.originalTarget,
+ resultInfo.resultTargets);
+ }
+ sendVoiceChoicesIfNeeded();
+ mChooserListAdapter.setShowServiceTargets(true);
+ break;
+
default:
super.handleMessage(msg);
}
@@ -552,6 +580,94 @@
}
}
+ private IntentFilter getTargetIntentFilter() {
+ try {
+ final Intent intent = getTargetIntent();
+ String dataString = intent.getDataString();
+ if (TextUtils.isEmpty(dataString)) {
+ dataString = intent.getType();
+ }
+ return new IntentFilter(intent.getAction(), dataString);
+ } catch (Exception e) {
+ Log.e(TAG, "failed to get target intent filter " + e);
+ return null;
+ }
+ }
+
+ private void queryDirectShareTargets(ChooserListAdapter adapter) {
+ final IntentFilter filter = getTargetIntentFilter();
+ if (filter == null) {
+ return;
+ }
+
+ // Need to keep the original DisplayResolveInfos to be able to reconstruct ServiceResultInfo
+ // and use the old code path. This Ugliness should go away when Sharesheet is refactored.
+ final List<DisplayResolveInfo> driList = new ArrayList<>();
+ int targetsToQuery = 0;
+ for (int i = 0, n = adapter.getDisplayResolveInfoCount(); i < n; i++) {
+ final DisplayResolveInfo dri = adapter.getDisplayResolveInfo(i);
+ if (adapter.getScore(dri) == 0) {
+ // A score of 0 means the app hasn't been used in some time;
+ // don't query it as it's not likely to be relevant.
+ continue;
+ }
+ driList.add(dri);
+ targetsToQuery++;
+ // TODO(b/121287224): Do we need this here? (similar to queryTargetServices)
+ if (targetsToQuery >= SHARE_TARGET_QUERY_PACKAGE_LIMIT) {
+ if (DEBUG) {
+ Log.d(TAG, "queryTargets hit query target limit "
+ + SHARE_TARGET_QUERY_PACKAGE_LIMIT);
+ }
+ break;
+ }
+ }
+
+ AsyncTask.execute(() -> {
+ ShortcutManager sm = (ShortcutManager) getSystemService(Context.SHORTCUT_SERVICE);
+ List<ShortcutManager.ShareShortcutInfo> resultList = sm.getShareTargets(filter);
+
+ // Match ShareShortcutInfos with DisplayResolveInfos to be able to use the old code path
+ // for direct share targets. After ShareSheet is refactored we should use the
+ // ShareShortcutInfos directly.
+ for (int i = 0; i < driList.size(); i++) {
+ List<ChooserTarget> chooserTargets = new ArrayList<>();
+ for (int j = 0; j < resultList.size(); j++) {
+ if (driList.get(i).getResolvedComponentName().equals(
+ resultList.get(j).getTargetComponent())) {
+ chooserTargets.add(convertToChooserTarget(resultList.get(j)));
+ }
+ }
+ if (chooserTargets.isEmpty()) {
+ continue;
+ }
+
+ final Message msg = Message.obtain();
+ msg.what = SHORTCUT_MANAGER_SHARE_TARGET_RESULT;
+ msg.obj = new ServiceResultInfo(driList.get(i), chooserTargets, null);
+ mChooserHandler.sendMessage(msg);
+ }
+ });
+ }
+
+ private ChooserTarget convertToChooserTarget(ShortcutManager.ShareShortcutInfo shareShortcut) {
+ ShortcutInfo shortcutInfo = shareShortcut.getShortcutInfo();
+ Bundle extras = new Bundle();
+ extras.putString(Intent.EXTRA_SHORTCUT_ID, shortcutInfo.getId());
+ return new ChooserTarget(
+ // The name of this target.
+ shortcutInfo.getShortLabel(),
+ // Don't load the icon until it is selected to be shown
+ null,
+ // The ranking score for this target (0.0-1.0); the system will omit items with low
+ // scores when there are too many Direct Share items.
+ 0.5f,
+ // The name of the component to be launched if this target is chosen.
+ shareShortcut.getTargetComponent().clone(),
+ // The extra values here will be merged into the Intent when this target is chosen.
+ extras);
+ }
+
private String convertServiceName(String packageName, String serviceName) {
if (TextUtils.isEmpty(serviceName)) {
return null;
@@ -765,9 +881,8 @@
}
}
}
- final Icon icon = chooserTarget.getIcon();
- // TODO do this in the background
- mDisplayIcon = icon != null ? icon.loadDrawable(ChooserActivity.this) : null;
+ // TODO(b/121287224): do this in the background thread, and only for selected targets
+ mDisplayIcon = getChooserTargetIconDrawable(chooserTarget);
if (sourceInfo != null) {
mBackupResolveInfo = null;
@@ -791,6 +906,39 @@
mModifiedScore = other.mModifiedScore;
}
+ /**
+ * Since ShortcutInfos are returned by ShortcutManager, we can cache the shortcuts and skip
+ * the call to LauncherApps#getShortcuts(ShortcutQuery).
+ */
+ // TODO(121287224): Refactor code to apply the suggestion above
+ private Drawable getChooserTargetIconDrawable(ChooserTarget target) {
+ final Icon icon = target.getIcon();
+ if (icon != null) {
+ return icon.loadDrawable(ChooserActivity.this);
+ }
+ if (!USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS) {
+ return null;
+ }
+
+ Bundle extras = target.getIntentExtras();
+ if (extras == null || !extras.containsKey(Intent.EXTRA_SHORTCUT_ID)) {
+ return null;
+ }
+ CharSequence shortcutId = extras.getCharSequence(Intent.EXTRA_SHORTCUT_ID);
+ LauncherApps launcherApps = (LauncherApps) getSystemService(
+ Context.LAUNCHER_APPS_SERVICE);
+ final LauncherApps.ShortcutQuery q = new LauncherApps.ShortcutQuery();
+ q.setPackage(target.getComponentName().getPackageName());
+ q.setShortcutIds(Arrays.asList(shortcutId.toString()));
+ q.setQueryFlags(LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC);
+ final List<ShortcutInfo> shortcuts = launcherApps.getShortcuts(q, getUser());
+ if (shortcuts != null && shortcuts.size() > 0) {
+ return launcherApps.getShortcutIconDrawable(shortcuts.get(0), 0);
+ }
+
+ return null;
+ }
+
public float getModifiedScore() {
return mModifiedScore;
}
@@ -1030,8 +1178,15 @@
mTargetsNeedPruning = true;
}
}
- if (DEBUG) Log.d(TAG, "List built querying services");
- queryTargetServices(this);
+ if (USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS) {
+ if (DEBUG) {
+ Log.d(TAG, "querying direct share targets from ShortcutManager");
+ }
+ queryDirectShareTargets(this);
+ } else {
+ if (DEBUG) Log.d(TAG, "List built querying services");
+ queryTargetServices(this);
+ }
}
@Override
diff --git a/core/java/com/android/internal/app/SuspendedAppActivity.java b/core/java/com/android/internal/app/SuspendedAppActivity.java
index 498de53..70935d4 100644
--- a/core/java/com/android/internal/app/SuspendedAppActivity.java
+++ b/core/java/com/android/internal/app/SuspendedAppActivity.java
@@ -16,7 +16,7 @@
package com.android.internal.app;
-import static android.content.res.ResourceId.ID_NULL;
+import static android.content.res.Resources.ID_NULL;
import android.Manifest;
import android.app.AlertDialog;
diff --git a/core/java/com/android/internal/app/procstats/ProcessStats.java b/core/java/com/android/internal/app/procstats/ProcessStats.java
index 9b9b771..8e88c51 100644
--- a/core/java/com/android/internal/app/procstats/ProcessStats.java
+++ b/core/java/com/android/internal/app/procstats/ProcessStats.java
@@ -23,6 +23,7 @@
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.service.procstats.ProcessStatsAvailablePagesProto;
import android.service.procstats.ProcessStatsPackageProto;
import android.service.procstats.ProcessStatsSectionProto;
import android.text.format.DateFormat;
@@ -178,7 +179,7 @@
{"proc", "pkg-proc", "pkg-svc", "pkg-asc", "pkg-all", "all"};
// Current version of the parcel format.
- private static final int PARCEL_VERSION = 35;
+ private static final int PARCEL_VERSION = 36;
// In-memory Parcel magic number, used to detect attempts to unmarshall bad data
private static final int MAGIC = 0x50535454;
@@ -237,10 +238,11 @@
ArrayList<String> mIndexToCommonString;
private static final Pattern sPageTypeRegex = Pattern.compile(
- "^Node\\s+(\\d+),.*. type\\s+(\\w+)\\s+([\\s\\d]+?)\\s*$");
- private final ArrayList<Integer> mPageTypeZones = new ArrayList<Integer>();
- private final ArrayList<String> mPageTypeLabels = new ArrayList<String>();
- private final ArrayList<int[]> mPageTypeSizes = new ArrayList<int[]>();
+ "^Node\\s+(\\d+),.* zone\\s+(\\w+),.* type\\s+(\\w+)\\s+([\\s\\d]+?)\\s*$");
+ private final ArrayList<Integer> mPageTypeNodes = new ArrayList<>();
+ private final ArrayList<String> mPageTypeZones = new ArrayList<>();
+ private final ArrayList<String> mPageTypeLabels = new ArrayList<>();
+ private final ArrayList<int[]> mPageTypeSizes = new ArrayList<>();
public ProcessStats(boolean running) {
mRunning = running;
@@ -621,6 +623,7 @@
try {
reader = new BufferedReader(new FileReader("/proc/pagetypeinfo"));
final Matcher matcher = sPageTypeRegex.matcher("");
+ mPageTypeNodes.clear();
mPageTypeZones.clear();
mPageTypeLabels.clear();
mPageTypeSizes.clear();
@@ -631,16 +634,18 @@
}
matcher.reset(line);
if (matcher.matches()) {
- final Integer zone = Integer.valueOf(matcher.group(1), 10);
- if (zone == null) {
+ final Integer node = Integer.valueOf(matcher.group(1), 10);
+ if (node == null) {
continue;
}
- mPageTypeZones.add(zone);
- mPageTypeLabels.add(matcher.group(2));
- mPageTypeSizes.add(splitAndParseNumbers(matcher.group(3)));
+ mPageTypeNodes.add(node);
+ mPageTypeZones.add(matcher.group(2));
+ mPageTypeLabels.add(matcher.group(3));
+ mPageTypeSizes.add(splitAndParseNumbers(matcher.group(4)));
}
}
} catch (IOException ex) {
+ mPageTypeNodes.clear();
mPageTypeZones.clear();
mPageTypeLabels.clear();
mPageTypeSizes.clear();
@@ -935,7 +940,8 @@
final int NPAGETYPES = mPageTypeLabels.size();
out.writeInt(NPAGETYPES);
for (int i=0; i<NPAGETYPES; i++) {
- out.writeInt(mPageTypeZones.get(i));
+ out.writeInt(mPageTypeNodes.get(i));
+ out.writeString(mPageTypeZones.get(i));
out.writeString(mPageTypeLabels.get(i));
out.writeIntArray(mPageTypeSizes.get(i));
}
@@ -1244,6 +1250,8 @@
// Fragmentation info
final int NPAGETYPES = in.readInt();
+ mPageTypeNodes.clear();
+ mPageTypeNodes.ensureCapacity(NPAGETYPES);
mPageTypeZones.clear();
mPageTypeZones.ensureCapacity(NPAGETYPES);
mPageTypeLabels.clear();
@@ -1251,7 +1259,8 @@
mPageTypeSizes.clear();
mPageTypeSizes.ensureCapacity(NPAGETYPES);
for (int i=0; i<NPAGETYPES; i++) {
- mPageTypeZones.add(in.readInt());
+ mPageTypeNodes.add(in.readInt());
+ mPageTypeZones.add(in.readString());
mPageTypeLabels.add(in.readString());
mPageTypeSizes.add(in.createIntArray());
}
@@ -1764,7 +1773,8 @@
pw.println("Available pages by page size:");
final int NPAGETYPES = mPageTypeLabels.size();
for (int i=0; i<NPAGETYPES; i++) {
- pw.format("Zone %3d %14s ", mPageTypeZones.get(i), mPageTypeLabels.get(i));
+ pw.format("Node %3d Zone %7s %14s ", mPageTypeNodes.get(i), mPageTypeZones.get(i),
+ mPageTypeLabels.get(i));
final int[] sizes = mPageTypeSizes.get(i);
final int N = sizes == null ? 0 : sizes.length;
for (int j=0; j<N; j++) {
@@ -2095,6 +2105,9 @@
pw.print(",");
pw.print(mPageTypeZones.get(i));
pw.print(",");
+ // Wasn't included in original output.
+ //pw.print(mPageTypeNodes.get(i));
+ //pw.print(",");
final int[] sizes = mPageTypeSizes.get(i);
final int N = sizes == null ? 0 : sizes.length;
for (int j=0; j<N; j++) {
@@ -2135,6 +2148,20 @@
proto.write(ProcessStatsSectionProto.STATUS, ProcessStatsSectionProto.STATUS_PARTIAL);
}
+ final int NPAGETYPES = mPageTypeLabels.size();
+ for (int i = 0; i < NPAGETYPES; i++) {
+ final long token = proto.start(ProcessStatsSectionProto.AVAILABLE_PAGES);
+ proto.write(ProcessStatsAvailablePagesProto.NODE, mPageTypeNodes.get(i));
+ proto.write(ProcessStatsAvailablePagesProto.ZONE, mPageTypeZones.get(i));
+ proto.write(ProcessStatsAvailablePagesProto.LABEL, mPageTypeLabels.get(i));
+ final int[] sizes = mPageTypeSizes.get(i);
+ final int N = sizes == null ? 0 : sizes.length;
+ for (int j = 0; j < N; j++) {
+ proto.write(ProcessStatsAvailablePagesProto.PAGES_PER_ORDER, sizes[j]);
+ }
+ proto.end(token);
+ }
+
final ArrayMap<String, SparseArray<ProcessState>> procMap = mProcesses.getMap();
if ((section & REPORT_PROC_STATS) != 0) {
for (int ip = 0; ip < procMap.size(); ip++) {
diff --git a/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java b/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java
index 2995a8f..7a00a51 100644
--- a/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java
+++ b/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java
@@ -58,6 +58,15 @@
return mContext.getResources().getBoolean(R.bool.config_dozePulsePickup);
}
+ public boolean tapGestureEnabled(int user) {
+ return boolSettingDefaultOn(Settings.Secure.DOZE_TAP_SCREEN_GESTURE, user)
+ && tapSensorAvailable();
+ }
+
+ public boolean tapSensorAvailable() {
+ return !TextUtils.isEmpty(tapSensorType());
+ }
+
public boolean doubleTapGestureEnabled(int user) {
return boolSettingDefaultOn(Settings.Secure.DOZE_DOUBLE_TAP_GESTURE, user)
&& doubleTapSensorAvailable();
@@ -86,6 +95,10 @@
return mContext.getResources().getString(R.string.config_dozeDoubleTapSensorType);
}
+ public String tapSensorType() {
+ return mContext.getResources().getString(R.string.config_dozeTapSensorType);
+ }
+
public String longPressSensorType() {
return mContext.getResources().getString(R.string.config_dozeLongPressSensorType);
}
diff --git a/core/java/com/android/internal/infra/AbstractRemoteService.java b/core/java/com/android/internal/infra/AbstractRemoteService.java
index 5945958..72c67d7 100644
--- a/core/java/com/android/internal/infra/AbstractRemoteService.java
+++ b/core/java/com/android/internal/infra/AbstractRemoteService.java
@@ -139,6 +139,14 @@
return mDestroyed;
}
+ /**
+ * Gets the name of the service.
+ */
+ @NonNull
+ public final ComponentName getComponentName() {
+ return mComponentName;
+ }
+
private void handleOnConnectedStateChangedInternal(boolean connected) {
if (connected) {
handlePendingRequests();
diff --git a/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl b/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl
index 2671781..d0272e0 100644
--- a/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl
+++ b/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl
@@ -38,6 +38,5 @@
boolean switchToPreviousInputMethod();
boolean switchToNextInputMethod(boolean onlyCurrentIme);
boolean shouldOfferSwitchingToNextInputMethod();
-
- oneway void notifyUserActionAsync();
+ void notifyUserAction();
}
diff --git a/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java b/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java
index cdb986a..7600dc9 100644
--- a/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java
+++ b/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java
@@ -332,16 +332,16 @@
}
/**
- * Calls {@link IInputMethodPrivilegedOperations#notifyUserActionAsync()}
+ * Calls {@link IInputMethodPrivilegedOperations#notifyUserAction()}
*/
@AnyThread
- public void notifyUserActionAsync() {
+ public void notifyUserAction() {
final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull();
if (ops == null) {
return;
}
try {
- ops.notifyUserActionAsync();
+ ops.notifyUserAction();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index cc8da5c..17cc6af 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -30,6 +30,7 @@
import android.database.ContentObserver;
import android.hardware.usb.UsbManager;
import android.net.ConnectivityManager;
+import android.net.INetworkStatsService;
import android.net.NetworkStats;
import android.net.Uri;
import android.net.wifi.WifiActivityEnergyInfo;
@@ -86,7 +87,6 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.location.gnssmetrics.GnssMetrics;
-import com.android.internal.net.NetworkStatsFactory;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FastPrintWriter;
import com.android.internal.util.FastXmlSerializer;
@@ -337,6 +337,25 @@
private final PlatformIdleStateCallback mPlatformIdleStateCallback;
+ private final Runnable mDeferSetCharging = new Runnable() {
+ @Override
+ public void run() {
+ synchronized (BatteryStatsImpl.this) {
+ if (mOnBattery) {
+ // if the device gets unplugged in the time between this runnable being
+ // executed and the lock being taken, we don't want to set charging state
+ return;
+ }
+ boolean changed = setChargingLocked(true);
+ if (changed) {
+ final long uptime = mClocks.uptimeMillis();
+ final long elapsedRealtime = mClocks.elapsedRealtime();
+ addHistoryRecordLocked(elapsedRealtime, uptime);
+ }
+ }
+ }
+ };
+
/**
* This handler is running on {@link BackgroundThread}.
*/
@@ -11012,7 +11031,6 @@
}
}
- private final NetworkStatsFactory mNetworkStatsFactory = new NetworkStatsFactory();
private final Pools.Pool<NetworkStats> mNetworkStatsPool = new Pools.SynchronizedPool<>(6);
private final Object mWifiNetworkLock = new Object();
@@ -11034,11 +11052,16 @@
private NetworkStats readNetworkStatsLocked(String[] ifaces) {
try {
if (!ArrayUtils.isEmpty(ifaces)) {
- return mNetworkStatsFactory.readNetworkStatsDetail(NetworkStats.UID_ALL, ifaces,
- NetworkStats.TAG_NONE, mNetworkStatsPool.acquire());
+ INetworkStatsService statsService = INetworkStatsService.Stub.asInterface(
+ ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
+ if (statsService != null) {
+ return statsService.getDetailedUidStats(ifaces);
+ } else {
+ Slog.e(TAG, "Failed to get networkStatsService ");
+ }
}
- } catch (IOException e) {
- Slog.e(TAG, "failed to read network stats for ifaces: " + Arrays.toString(ifaces));
+ } catch (RemoteException e) {
+ Slog.e(TAG, "failed to read network stats for ifaces: " + Arrays.toString(ifaces) + e);
}
return null;
}
@@ -12336,6 +12359,14 @@
}
boolean setChargingLocked(boolean charging) {
+ // if the device is no longer charging, remove the callback
+ // if the device is now charging, it means that this is either called
+ // 1. directly when level >= 90
+ // 2. or from within the runnable that we deferred
+ // For 1. if we have an existing callback, remove it, since we will immediatelly send a
+ // ACTION_CHARGING
+ // For 2. we remove existing callback so we don't send multiple ACTION_CHARGING
+ mHandler.removeCallbacks(mDeferSetCharging);
if (mCharging != charging) {
mCharging = charging;
if (charging) {
@@ -12674,12 +12705,23 @@
// charging even if it happens to go down a level.
changed |= setChargingLocked(true);
mLastChargeStepLevel = level;
- } if (!mCharging) {
+ }
+ if (!mCharging) {
if (mLastChargeStepLevel < level) {
- // We have not reporting that we are charging, but the level has now
- // gone up, so consider the state to be charging.
- changed |= setChargingLocked(true);
+ // We have not reported that we are charging, but the level has gone up,
+ // but we would like to not have tons of activity from charging-constraint
+ // jobs, so instead of reporting ACTION_CHARGING immediately, we defer it.
mLastChargeStepLevel = level;
+ if (!mHandler.hasCallbacks(mDeferSetCharging)) {
+ mHandler.postDelayed(
+ mDeferSetCharging,
+ mConstants.BATTERY_CHARGED_DELAY_MS);
+ }
+ } else if (mLastChargeStepLevel > level) {
+ // if we had deferred a runnable due to charge level increasing, but then
+ // later the charge level drops (could be due to thermal issues), we don't
+ // want to trigger the deferred runnable, so remove it here
+ mHandler.removeCallbacks(mDeferSetCharging);
}
} else {
if (mLastChargeStepLevel > level) {
@@ -13296,6 +13338,8 @@
= "battery_level_collection_delay_ms";
public static final String KEY_MAX_HISTORY_FILES = "max_history_files";
public static final String KEY_MAX_HISTORY_BUFFER_KB = "max_history_buffer_kb";
+ public static final String KEY_BATTERY_CHARGED_DELAY_MS =
+ "battery_charged_delay_ms";
private static final boolean DEFAULT_TRACK_CPU_TIMES_BY_PROC_STATE = false;
private static final boolean DEFAULT_TRACK_CPU_ACTIVE_CLUSTER_TIME = true;
@@ -13308,6 +13352,7 @@
private static final int DEFAULT_MAX_HISTORY_BUFFER_KB = 128; /*Kilo Bytes*/
private static final int DEFAULT_MAX_HISTORY_FILES_LOW_RAM_DEVICE = 64;
private static final int DEFAULT_MAX_HISTORY_BUFFER_LOW_RAM_DEVICE_KB = 64; /*Kilo Bytes*/
+ private static final int DEFAULT_BATTERY_CHARGED_DELAY_MS = 900000; /* 15 min */
public boolean TRACK_CPU_TIMES_BY_PROC_STATE = DEFAULT_TRACK_CPU_TIMES_BY_PROC_STATE;
public boolean TRACK_CPU_ACTIVE_CLUSTER_TIME = DEFAULT_TRACK_CPU_ACTIVE_CLUSTER_TIME;
@@ -13320,6 +13365,7 @@
= DEFAULT_BATTERY_LEVEL_COLLECTION_DELAY_MS;
public int MAX_HISTORY_FILES;
public int MAX_HISTORY_BUFFER; /*Bytes*/
+ public int BATTERY_CHARGED_DELAY_MS = DEFAULT_BATTERY_CHARGED_DELAY_MS;
private ContentResolver mResolver;
private final KeyValueListParser mParser = new KeyValueListParser(',');
@@ -13388,6 +13434,9 @@
DEFAULT_MAX_HISTORY_BUFFER_LOW_RAM_DEVICE_KB
: DEFAULT_MAX_HISTORY_BUFFER_KB)
* 1024;
+ BATTERY_CHARGED_DELAY_MS = mParser.getInt(
+ KEY_BATTERY_CHARGED_DELAY_MS,
+ DEFAULT_BATTERY_CHARGED_DELAY_MS);
}
}
@@ -13445,6 +13494,8 @@
pw.println(MAX_HISTORY_FILES);
pw.print(KEY_MAX_HISTORY_BUFFER_KB); pw.print("=");
pw.println(MAX_HISTORY_BUFFER/1024);
+ pw.print(KEY_BATTERY_CHARGED_DELAY_MS); pw.print("=");
+ pw.println(BATTERY_CHARGED_DELAY_MS);
}
}
diff --git a/core/java/com/android/internal/os/ChildZygoteInit.java b/core/java/com/android/internal/os/ChildZygoteInit.java
index f90cd02..a052a3b 100644
--- a/core/java/com/android/internal/os/ChildZygoteInit.java
+++ b/core/java/com/android/internal/os/ChildZygoteInit.java
@@ -15,6 +15,7 @@
*/
package com.android.internal.os;
+import android.os.Process;
import android.system.ErrnoException;
import android.system.Os;
import android.system.OsConstants;
@@ -49,6 +50,22 @@
return null;
}
+ static int parseIntFromArg(String[] argv, String desiredArg) {
+ int value = -1;
+ for (String arg : argv) {
+ if (arg.startsWith(desiredArg)) {
+ String valueStr = arg.substring(arg.indexOf('=') + 1);
+ try {
+ value = Integer.parseInt(valueStr);
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("Invalid int argument: "
+ + valueStr, e);
+ }
+ }
+ }
+ return value;
+ }
+
/**
* Starts a ZygoteServer and listens for requests
*
@@ -72,6 +89,27 @@
throw new RuntimeException("Failed to set PR_SET_NO_NEW_PRIVS", ex);
}
+ int uidGidMin = parseIntFromArg(args, Zygote.CHILD_ZYGOTE_UID_RANGE_START);
+ int uidGidMax = parseIntFromArg(args, Zygote.CHILD_ZYGOTE_UID_RANGE_END);
+ if (uidGidMin == -1 || uidGidMax == -1) {
+ throw new RuntimeException("Couldn't parse UID range start/end");
+ }
+ if (uidGidMin > uidGidMax) {
+ throw new RuntimeException("Passed in UID range is invalid, min > max.");
+ }
+
+ // Verify the UIDs are in the isolated UID range, as that's the only thing that we should
+ // be forking right now
+ if (!Process.isIsolated(uidGidMin) || !Process.isIsolated(uidGidMax)) {
+ throw new RuntimeException("Passed in UID range does not map to isolated processes.");
+ }
+
+ /**
+ * Install a seccomp filter that ensure this Zygote can only setuid()/setgid()
+ * to the passed in range.
+ */
+ Zygote.nativeInstallSeccompUidGidFilter(uidGidMin, uidGidMax);
+
final Runnable caller;
try {
server.registerServerSocketAtAbstractName(socketName);
diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java
index d720c68..705bae4 100644
--- a/core/java/com/android/internal/os/Zygote.java
+++ b/core/java/com/android/internal/os/Zygote.java
@@ -82,6 +82,11 @@
/** Read-write external storage should be mounted. */
public static final int MOUNT_EXTERNAL_WRITE = IVold.REMOUNT_MODE_WRITE;
/**
+ * Mount mode for apps that are already installed on the device before the isolated_storage
+ * feature is enabled.
+ */
+ public static final int MOUNT_EXTERNAL_LEGACY = IVold.REMOUNT_MODE_LEGACY;
+ /**
* Mount mode for package installers which should give them access to
* all obb dirs in addition to their package sandboxes
*/
@@ -104,6 +109,20 @@
*/
public static final String CHILD_ZYGOTE_ABI_LIST_ARG = "--abi-list=";
+ /**
+ * An extraArg passed when a zygote process is forking a child-zygote, specifying the
+ * start of the UID range the children of the Zygote may setuid()/setgid() to. This
+ * will be enforced with a seccomp filter.
+ */
+ public static final String CHILD_ZYGOTE_UID_RANGE_START = "--uid-range-start=";
+
+ /**
+ * An extraArg passed when a zygote process is forking a child-zygote, specifying the
+ * end of the UID range the children of the Zygote may setuid()/setgid() to. This
+ * will be enforced with a seccomp filter.
+ */
+ public static final String CHILD_ZYGOTE_UID_RANGE_END = "--uid-range-end=";
+
private Zygote() {}
/** Called for some security initialization before any fork. */
@@ -222,6 +241,13 @@
native protected static void nativeAllowFileAcrossFork(String path);
/**
+ * Installs a seccomp filter that limits setresuid()/setresgid() to the passed-in range
+ * @param uidGidMin The smallest allowed uid/gid
+ * @param uidGidMax The largest allowed uid/gid
+ */
+ native protected static void nativeInstallSeccompUidGidFilter(int uidGidMin, int uidGidMax);
+
+ /**
* Zygote unmount storage space on initializing.
* This method is called once.
*/
diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java
index 5990d72..ced798c 100644
--- a/core/java/com/android/internal/os/ZygoteConnection.java
+++ b/core/java/com/android/internal/os/ZygoteConnection.java
@@ -688,8 +688,10 @@
mountExternal = Zygote.MOUNT_EXTERNAL_WRITE;
} else if (arg.equals("--mount-external-full")) {
mountExternal = Zygote.MOUNT_EXTERNAL_FULL;
- } else if (arg.equals("--mount-external-installer")) {
+ } else if (arg.equals("--mount-external-installer")) {
mountExternal = Zygote.MOUNT_EXTERNAL_INSTALLER;
+ } else if (arg.equals("--mount-external-legacy")) {
+ mountExternal = Zygote.MOUNT_EXTERNAL_LEGACY;
} else if (arg.equals("--query-abi-list")) {
abiListQuery = true;
} else if (arg.equals("--get-pid")) {
diff --git a/core/java/com/android/internal/textservice/ITextServicesManager.aidl b/core/java/com/android/internal/textservice/ITextServicesManager.aidl
index 20f2aa0..8022949 100644
--- a/core/java/com/android/internal/textservice/ITextServicesManager.aidl
+++ b/core/java/com/android/internal/textservice/ITextServicesManager.aidl
@@ -29,12 +29,13 @@
* @hide
*/
interface ITextServicesManager {
- SpellCheckerInfo getCurrentSpellChecker(String locale);
- SpellCheckerSubtype getCurrentSpellCheckerSubtype(boolean allowImplicitlySelectedSubtype);
- oneway void getSpellCheckerService(String sciId, in String locale,
+ SpellCheckerInfo getCurrentSpellChecker(int userId, String locale);
+ SpellCheckerSubtype getCurrentSpellCheckerSubtype(int userId,
+ boolean allowImplicitlySelectedSubtype);
+ oneway void getSpellCheckerService(int userId, String sciId, in String locale,
in ITextServicesSessionListener tsListener,
in ISpellCheckerSessionListener scListener, in Bundle bundle);
- oneway void finishSpellCheckerService(in ISpellCheckerSessionListener listener);
- boolean isSpellCheckerEnabled();
- SpellCheckerInfo[] getEnabledSpellCheckers();
+ oneway void finishSpellCheckerService(int userId, in ISpellCheckerSessionListener listener);
+ boolean isSpellCheckerEnabled(int userId);
+ SpellCheckerInfo[] getEnabledSpellCheckers(int userId);
}
diff --git a/core/java/com/android/internal/view/InputBindResult.java b/core/java/com/android/internal/view/InputBindResult.java
index 901cfe3..9fe49b4 100644
--- a/core/java/com/android/internal/view/InputBindResult.java
+++ b/core/java/com/android/internal/view/InputBindResult.java
@@ -127,8 +127,10 @@
*/
int ERROR_IME_NOT_CONNECTED = 8;
/**
- * Indicates that the caller is not the foreground user (or does not have
- * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} permission).
+ * Indicates that the caller is not the foreground user, does not have
+ * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} permission, or the user
+ * specified in {@link android.view.inputmethod.EditorInfo#targetInputMethodUser} is not
+ * running.
*/
int ERROR_INVALID_USER = 9;
/**
diff --git a/core/java/com/android/internal/widget/ILockSettings.aidl b/core/java/com/android/internal/widget/ILockSettings.aidl
index 591f15f..9a77802 100644
--- a/core/java/com/android/internal/widget/ILockSettings.aidl
+++ b/core/java/com/android/internal/widget/ILockSettings.aidl
@@ -62,7 +62,9 @@
in byte[] recoveryServiceCertFile, in byte[] recoveryServiceSigFile);
KeyChainSnapshot getKeyChainSnapshot();
String generateKey(String alias);
+ String generateKeyWithMetadata(String alias, in byte[] metadata);
String importKey(String alias, in byte[] keyBytes);
+ String importKeyWithMetadata(String alias, in byte[] keyBytes, in byte[] metadata);
String getKey(String alias);
void removeKey(String alias);
void setSnapshotCreatedPendingIntent(in PendingIntent intent);
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index 088e13f..5be70ef 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -185,7 +185,6 @@
"android_hardware_UsbDevice.cpp",
"android_hardware_UsbDeviceConnection.cpp",
"android_hardware_UsbRequest.cpp",
- "android_hardware_location_ActivityRecognitionHardware.cpp",
"android_util_FileObserver.cpp",
"android/opengl/poly_clip.cpp", // TODO: .arm
"android/opengl/util.cpp",
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 1092222..a586dc1 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -101,7 +101,6 @@
extern int register_android_hardware_UsbDevice(JNIEnv *env);
extern int register_android_hardware_UsbDeviceConnection(JNIEnv *env);
extern int register_android_hardware_UsbRequest(JNIEnv *env);
-extern int register_android_hardware_location_ActivityRecognitionHardware(JNIEnv* env);
extern int register_android_media_AudioEffectDescriptor(JNIEnv *env);
extern int register_android_media_AudioRecord(JNIEnv *env);
@@ -1457,7 +1456,6 @@
REG_JNI(register_android_hardware_UsbDevice),
REG_JNI(register_android_hardware_UsbDeviceConnection),
REG_JNI(register_android_hardware_UsbRequest),
- REG_JNI(register_android_hardware_location_ActivityRecognitionHardware),
REG_JNI(register_android_media_AudioEffectDescriptor),
REG_JNI(register_android_media_AudioSystem),
REG_JNI(register_android_media_AudioRecord),
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp
index eb7338a..876bd4f 100755
--- a/core/jni/android/graphics/Bitmap.cpp
+++ b/core/jni/android/graphics/Bitmap.cpp
@@ -8,7 +8,6 @@
#include "SkImageInfo.h"
#include "SkColor.h"
#include "SkColorSpace.h"
-#include "SkMatrix44.h"
#include "GraphicsJNI.h"
#include "SkStream.h"
@@ -356,8 +355,8 @@
if (xyzD50 == nullptr || transferParameters == nullptr) {
colorSpace = SkColorSpace::MakeSRGB();
} else {
- SkColorSpaceTransferFn p = GraphicsJNI::getNativeTransferParameters(env, transferParameters);
- SkMatrix44 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50);
+ skcms_TransferFunction p = GraphicsJNI::getNativeTransferParameters(env, transferParameters);
+ skcms_Matrix3x3 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50);
colorSpace = SkColorSpace::MakeRGB(p, xyzMatrix);
}
@@ -549,8 +548,7 @@
if (skbitmap.colorType() == kRGBA_F16_SkColorType) {
// Convert to P3 before encoding. This matches SkAndroidCodec::computeOutputColorSpace
// for wide gamuts.
- auto cs = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
- SkColorSpace::kDCIP3_D65_Gamut);
+ auto cs = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3);
auto info = skbitmap.info().makeColorType(kRGBA_8888_SkColorType)
.makeColorSpace(std::move(cs));
SkBitmap p3;
@@ -568,11 +566,34 @@
return SkEncodeImage(strm.get(), skbitmap, fm, quality) ? JNI_TRUE : JNI_FALSE;
}
+static inline void bitmapErase(SkBitmap bitmap, const SkColor4f& color,
+ const sk_sp<SkColorSpace>& colorSpace) {
+ SkPaint p;
+ p.setColor4f(color, colorSpace.get());
+ p.setBlendMode(SkBlendMode::kSrc);
+ SkCanvas canvas(bitmap);
+ canvas.drawPaint(p);
+}
+
static void Bitmap_erase(JNIEnv* env, jobject, jlong bitmapHandle, jint color) {
LocalScopedBitmap bitmap(bitmapHandle);
SkBitmap skBitmap;
bitmap->getSkBitmap(&skBitmap);
- skBitmap.eraseColor(color);
+ bitmapErase(skBitmap, SkColor4f::FromColor(color), SkColorSpace::MakeSRGB());
+}
+
+static void Bitmap_eraseLong(JNIEnv* env, jobject, jlong bitmapHandle, jobject jColorSpace,
+ jfloat r, jfloat g, jfloat b, jfloat a) {
+ sk_sp<SkColorSpace> cs = GraphicsJNI::getNativeColorSpace(env, jColorSpace);
+ if (GraphicsJNI::hasException(env)) {
+ return;
+ }
+
+ LocalScopedBitmap bitmap(bitmapHandle);
+ SkBitmap skBitmap;
+ bitmap->getSkBitmap(&skBitmap);
+ SkColor4f color = SkColor4f{r, g, b, a};
+ bitmapErase(skBitmap, color, cs);
}
static jint Bitmap_rowBytes(JNIEnv* env, jobject, jlong bitmapHandle) {
@@ -717,7 +738,7 @@
#endif
// Dup the file descriptor so we can keep a reference to it after the Parcel
// is disposed.
- int dupFd = dup(blob.fd());
+ int dupFd = fcntl(blob.fd(), F_DUPFD_CLOEXEC, 0);
if (dupFd < 0) {
ALOGE("Error allocating dup fd. Error:%d", errno);
blob.release();
@@ -910,32 +931,32 @@
SkColorSpace* colorSpace = bitmapHolder->info().colorSpace();
if (colorSpace == nullptr) return JNI_FALSE;
- SkMatrix44 xyzMatrix(SkMatrix44::kUninitialized_Constructor);
+ skcms_Matrix3x3 xyzMatrix;
if (!colorSpace->toXYZD50(&xyzMatrix)) return JNI_FALSE;
jfloat* xyz = env->GetFloatArrayElements(xyzArray, NULL);
- xyz[0] = xyzMatrix.getFloat(0, 0);
- xyz[1] = xyzMatrix.getFloat(1, 0);
- xyz[2] = xyzMatrix.getFloat(2, 0);
- xyz[3] = xyzMatrix.getFloat(0, 1);
- xyz[4] = xyzMatrix.getFloat(1, 1);
- xyz[5] = xyzMatrix.getFloat(2, 1);
- xyz[6] = xyzMatrix.getFloat(0, 2);
- xyz[7] = xyzMatrix.getFloat(1, 2);
- xyz[8] = xyzMatrix.getFloat(2, 2);
+ xyz[0] = xyzMatrix.vals[0][0];
+ xyz[1] = xyzMatrix.vals[1][0];
+ xyz[2] = xyzMatrix.vals[2][0];
+ xyz[3] = xyzMatrix.vals[0][1];
+ xyz[4] = xyzMatrix.vals[1][1];
+ xyz[5] = xyzMatrix.vals[2][1];
+ xyz[6] = xyzMatrix.vals[0][2];
+ xyz[7] = xyzMatrix.vals[1][2];
+ xyz[8] = xyzMatrix.vals[2][2];
env->ReleaseFloatArrayElements(xyzArray, xyz, 0);
- SkColorSpaceTransferFn transferParams;
+ skcms_TransferFunction transferParams;
if (!colorSpace->isNumericalTransferFn(&transferParams)) return JNI_FALSE;
jfloat* params = env->GetFloatArrayElements(paramsArray, NULL);
- params[0] = transferParams.fA;
- params[1] = transferParams.fB;
- params[2] = transferParams.fC;
- params[3] = transferParams.fD;
- params[4] = transferParams.fE;
- params[5] = transferParams.fF;
- params[6] = transferParams.fG;
+ params[0] = transferParams.a;
+ params[1] = transferParams.b;
+ params[2] = transferParams.c;
+ params[3] = transferParams.d;
+ params[4] = transferParams.e;
+ params[5] = transferParams.f;
+ params[6] = transferParams.g;
env->ReleaseFloatArrayElements(paramsArray, params, 0);
return JNI_TRUE;
@@ -1121,8 +1142,8 @@
static jobject Bitmap_wrapHardwareBufferBitmap(JNIEnv* env, jobject, jobject hardwareBuffer,
jfloatArray xyzD50, jobject transferParameters) {
- SkColorSpaceTransferFn p = GraphicsJNI::getNativeTransferParameters(env, transferParameters);
- SkMatrix44 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50);
+ skcms_TransferFunction p = GraphicsJNI::getNativeTransferParameters(env, transferParameters);
+ skcms_Matrix3x3 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50);
sk_sp<SkColorSpace> colorSpace = SkColorSpace::MakeRGB(p, xyzMatrix);
AHardwareBuffer* hwBuf = android_hardware_HardwareBuffer_getNativeHardwareBuffer(env,
hardwareBuffer);
@@ -1183,6 +1204,7 @@
{ "nativeCompress", "(JIILjava/io/OutputStream;[B)Z",
(void*)Bitmap_compress },
{ "nativeErase", "(JI)V", (void*)Bitmap_erase },
+ { "nativeErase", "(JLandroid/graphics/ColorSpace;FFFF)V", (void*)Bitmap_eraseLong },
{ "nativeRowBytes", "(J)I", (void*)Bitmap_rowBytes },
{ "nativeConfig", "(J)I", (void*)Bitmap_config },
{ "nativeHasAlpha", "(J)Z", (void*)Bitmap_hasAlpha },
diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp
index 67d0c8a..9e74b88 100644
--- a/core/jni/android/graphics/Graphics.cpp
+++ b/core/jni/android/graphics/Graphics.cpp
@@ -424,30 +424,30 @@
///////////////////////////////////////////////////////////////////////////////
-SkColorSpaceTransferFn GraphicsJNI::getNativeTransferParameters(JNIEnv* env, jobject transferParams) {
- SkColorSpaceTransferFn p;
- p.fA = (float) env->GetDoubleField(transferParams, gTransferParams_aFieldID);
- p.fB = (float) env->GetDoubleField(transferParams, gTransferParams_bFieldID);
- p.fC = (float) env->GetDoubleField(transferParams, gTransferParams_cFieldID);
- p.fD = (float) env->GetDoubleField(transferParams, gTransferParams_dFieldID);
- p.fE = (float) env->GetDoubleField(transferParams, gTransferParams_eFieldID);
- p.fF = (float) env->GetDoubleField(transferParams, gTransferParams_fFieldID);
- p.fG = (float) env->GetDoubleField(transferParams, gTransferParams_gFieldID);
+skcms_TransferFunction GraphicsJNI::getNativeTransferParameters(JNIEnv* env, jobject transferParams) {
+ skcms_TransferFunction p;
+ p.a = (float) env->GetDoubleField(transferParams, gTransferParams_aFieldID);
+ p.b = (float) env->GetDoubleField(transferParams, gTransferParams_bFieldID);
+ p.c = (float) env->GetDoubleField(transferParams, gTransferParams_cFieldID);
+ p.d = (float) env->GetDoubleField(transferParams, gTransferParams_dFieldID);
+ p.e = (float) env->GetDoubleField(transferParams, gTransferParams_eFieldID);
+ p.f = (float) env->GetDoubleField(transferParams, gTransferParams_fFieldID);
+ p.g = (float) env->GetDoubleField(transferParams, gTransferParams_gFieldID);
return p;
}
-SkMatrix44 GraphicsJNI::getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50) {
- SkMatrix44 xyzMatrix(SkMatrix44::kIdentity_Constructor);
+skcms_Matrix3x3 GraphicsJNI::getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50) {
+ skcms_Matrix3x3 xyzMatrix;
jfloat* array = env->GetFloatArrayElements(xyzD50, NULL);
- xyzMatrix.setFloat(0, 0, array[0]);
- xyzMatrix.setFloat(1, 0, array[1]);
- xyzMatrix.setFloat(2, 0, array[2]);
- xyzMatrix.setFloat(0, 1, array[3]);
- xyzMatrix.setFloat(1, 1, array[4]);
- xyzMatrix.setFloat(2, 1, array[5]);
- xyzMatrix.setFloat(0, 2, array[6]);
- xyzMatrix.setFloat(1, 2, array[7]);
- xyzMatrix.setFloat(2, 2, array[8]);
+ xyzMatrix.vals[0][0] = array[0];
+ xyzMatrix.vals[1][0] = array[1];
+ xyzMatrix.vals[2][0] = array[2];
+ xyzMatrix.vals[0][1] = array[3];
+ xyzMatrix.vals[1][1] = array[4];
+ xyzMatrix.vals[2][1] = array[5];
+ xyzMatrix.vals[0][2] = array[6];
+ xyzMatrix.vals[1][2] = array[7];
+ xyzMatrix.vals[2][2] = array[8];
env->ReleaseFloatArrayElements(xyzD50, array, 0);
return xyzMatrix;
}
@@ -456,12 +456,14 @@
if (colorSpace == nullptr) return nullptr;
if (!env->IsInstanceOf(colorSpace, gColorSpaceRGB_class)) {
doThrowIAE(env, "The color space must be an RGB color space");
+ return nullptr;
}
jobject transferParams = env->CallObjectMethod(colorSpace,
gColorSpaceRGB_getTransferParametersMethodID);
if (transferParams == nullptr) {
doThrowIAE(env, "The color space must use an ICC parametric transfer function");
+ return nullptr;
}
jfloatArray illuminantD50 = (jfloatArray) env->GetStaticObjectField(gColorSpace_class,
@@ -472,8 +474,8 @@
jfloatArray xyzD50 = (jfloatArray) env->CallObjectMethod(colorSpaceD50,
gColorSpaceRGB_getTransformMethodID);
- SkMatrix44 xyzMatrix = getNativeXYZMatrix(env, xyzD50);
- SkColorSpaceTransferFn transferFunction = getNativeTransferParameters(env, transferParams);
+ skcms_Matrix3x3 xyzMatrix = getNativeXYZMatrix(env, xyzD50);
+ skcms_TransferFunction transferFunction = getNativeTransferParameters(env, transferParams);
return SkColorSpace::MakeRGB(transferFunction, xyzMatrix);
}
@@ -499,30 +501,30 @@
} else if (decodeColorSpace.get() != nullptr) {
// Try to match against known RGB color spaces using the CIE XYZ D50
// conversion matrix and numerical transfer function parameters
- SkMatrix44 xyzMatrix(SkMatrix44::kUninitialized_Constructor);
+ skcms_Matrix3x3 xyzMatrix;
LOG_ALWAYS_FATAL_IF(!decodeColorSpace->toXYZD50(&xyzMatrix));
- SkColorSpaceTransferFn transferParams;
+ skcms_TransferFunction transferParams;
// We can only handle numerical transfer functions at the moment
LOG_ALWAYS_FATAL_IF(!decodeColorSpace->isNumericalTransferFn(&transferParams));
jobject params = env->NewObject(gTransferParameters_class,
gTransferParameters_constructorMethodID,
- transferParams.fA, transferParams.fB, transferParams.fC,
- transferParams.fD, transferParams.fE, transferParams.fF,
- transferParams.fG);
+ transferParams.a, transferParams.b, transferParams.c,
+ transferParams.d, transferParams.e, transferParams.f,
+ transferParams.g);
jfloatArray xyzArray = env->NewFloatArray(9);
jfloat xyz[9] = {
- xyzMatrix.getFloat(0, 0),
- xyzMatrix.getFloat(1, 0),
- xyzMatrix.getFloat(2, 0),
- xyzMatrix.getFloat(0, 1),
- xyzMatrix.getFloat(1, 1),
- xyzMatrix.getFloat(2, 1),
- xyzMatrix.getFloat(0, 2),
- xyzMatrix.getFloat(1, 2),
- xyzMatrix.getFloat(2, 2)
+ xyzMatrix.vals[0][0],
+ xyzMatrix.vals[1][0],
+ xyzMatrix.vals[2][0],
+ xyzMatrix.vals[0][1],
+ xyzMatrix.vals[1][1],
+ xyzMatrix.vals[2][1],
+ xyzMatrix.vals[0][2],
+ xyzMatrix.vals[1][2],
+ xyzMatrix.vals[2][2]
};
env->SetFloatArrayRegion(xyzArray, 0, 9, xyz);
diff --git a/core/jni/android/graphics/GraphicsJNI.h b/core/jni/android/graphics/GraphicsJNI.h
index b0bd683..699d153 100644
--- a/core/jni/android/graphics/GraphicsJNI.h
+++ b/core/jni/android/graphics/GraphicsJNI.h
@@ -10,7 +10,6 @@
#include "SkPoint.h"
#include "SkRect.h"
#include "SkColorSpace.h"
-#include "SkMatrix44.h"
#include <jni.h>
#include <hwui/Canvas.h>
#include <hwui/Bitmap.h>
@@ -101,8 +100,8 @@
int srcStride, int x, int y, int width, int height,
SkBitmap* dstBitmap);
- static SkColorSpaceTransferFn getNativeTransferParameters(JNIEnv* env, jobject transferParams);
- static SkMatrix44 getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50);
+ static skcms_TransferFunction getNativeTransferParameters(JNIEnv* env, jobject transferParams);
+ static skcms_Matrix3x3 getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50);
static sk_sp<SkColorSpace> getNativeColorSpace(JNIEnv* env, jobject colorSpace);
static jobject getColorSpace(JNIEnv* env, sk_sp<SkColorSpace>& decodeColorSpace,
diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp
index e97c9bc..e2e3042 100644
--- a/core/jni/android/graphics/Paint.cpp
+++ b/core/jni/android/graphics/Paint.cpp
@@ -557,6 +557,41 @@
return result;
}
+ // FIXME: Make this CriticalNative when we no longer need to use JNIEnv. b/122514935 will allow
+ // passing the SkColorSpace directly from JNI.
+ static void setColor(JNIEnv* env, jobject clazz, jlong paintHandle, jobject jColorSpace,
+ jfloat r, jfloat g, jfloat b, jfloat a) {
+ sk_sp<SkColorSpace> cs = GraphicsJNI::getNativeColorSpace(env, jColorSpace);
+ if (GraphicsJNI::hasException(env)) {
+ return;
+ }
+
+ SkColor4f color = SkColor4f{r, g, b, a};
+ reinterpret_cast<Paint*>(paintHandle)->setColor4f(color, cs.get());
+ }
+
+ // FIXME: Make this CriticalNative when we no longer need to use JNIEnv. b/122514935 will allow
+ // passing the SkColorSpace directly from JNI.
+ static void setShadowLayer(JNIEnv* env, jobject clazz, jlong paintHandle, jfloat radius,
+ jfloat dx, jfloat dy, jobject jColorSpace,
+ jfloat r, jfloat g, jfloat b, jfloat a) {
+ sk_sp<SkColorSpace> cs = GraphicsJNI::getNativeColorSpace(env, jColorSpace);
+ if (GraphicsJNI::hasException(env)) {
+ return;
+ }
+
+ SkColor4f color = SkColor4f{r, g, b, a};
+
+ Paint* paint = reinterpret_cast<Paint*>(paintHandle);
+ if (radius <= 0) {
+ paint->setLooper(nullptr);
+ }
+ else {
+ SkScalar sigma = android::uirenderer::Blur::convertRadiusToSigma(radius);
+ paint->setLooper(SkBlurDrawLooper::Make(color, cs.get(), sigma, dx, dy));
+ }
+ }
+
// ------------------ @FastNative ---------------------------
static jint setTextLocales(JNIEnv* env, jobject clazz, jlong objHandle, jstring locales) {
@@ -752,22 +787,6 @@
obj->setStyle(style);
}
- static jint getColor(jlong paintHandle) {
- int color;
- color = reinterpret_cast<Paint*>(paintHandle)->getColor();
- return static_cast<jint>(color);
- }
-
- static jint getAlpha(jlong paintHandle) {
- int alpha;
- alpha = reinterpret_cast<Paint*>(paintHandle)->getAlpha();
- return static_cast<jint>(alpha);
- }
-
- static void setColor(jlong paintHandle, jint color) {
- reinterpret_cast<Paint*>(paintHandle)->setColor(color);
- }
-
static void setAlpha(jlong paintHandle, jint a) {
reinterpret_cast<Paint*>(paintHandle)->setAlpha(a);
}
@@ -1015,18 +1034,6 @@
return SkScalarToFloat(Paint::kStdStrikeThru_Thickness * textSize);
}
- static void setShadowLayer(jlong paintHandle, jfloat radius,
- jfloat dx, jfloat dy, jint color) {
- Paint* paint = reinterpret_cast<Paint*>(paintHandle);
- if (radius <= 0) {
- paint->setLooper(nullptr);
- }
- else {
- SkScalar sigma = android::uirenderer::Blur::convertRadiusToSigma(radius);
- paint->setLooper(SkBlurDrawLooper::Make((SkColor)color, sigma, dx, dy));
- }
- }
-
static jboolean hasShadowLayer(jlong paintHandle) {
Paint* paint = reinterpret_cast<Paint*>(paintHandle);
return paint->getLooper() && paint->getLooper()->asABlurShadow(nullptr);
@@ -1075,6 +1082,9 @@
{"nGetRunAdvance", "(J[CIIIIZI)F", (void*) PaintGlue::getRunAdvance___CIIIIZI_F},
{"nGetOffsetForAdvance", "(J[CIIIIZF)I",
(void*) PaintGlue::getOffsetForAdvance___CIIIIZF_I},
+ {"nSetColor","(JLandroid/graphics/ColorSpace;FFFF)V", (void*) PaintGlue::setColor},
+ {"nSetShadowLayer", "(JFFFLandroid/graphics/ColorSpace;FFFF)V",
+ (void*)PaintGlue::setShadowLayer},
// --------------- @FastNative ----------------------
@@ -1104,9 +1114,6 @@
{"nSetDither","(JZ)V", (void*) PaintGlue::setDither},
{"nGetStyle","(J)I", (void*) PaintGlue::getStyle},
{"nSetStyle","(JI)V", (void*) PaintGlue::setStyle},
- {"nGetColor","(J)I", (void*) PaintGlue::getColor},
- {"nSetColor","(JI)V", (void*) PaintGlue::setColor},
- {"nGetAlpha","(J)I", (void*) PaintGlue::getAlpha},
{"nSetAlpha","(JI)V", (void*) PaintGlue::setAlpha},
{"nGetStrokeWidth","(J)F", (void*) PaintGlue::getStrokeWidth},
{"nSetStrokeWidth","(JF)V", (void*) PaintGlue::setStrokeWidth},
@@ -1147,7 +1154,6 @@
{"nGetUnderlineThickness","(J)F", (void*) PaintGlue::getUnderlineThickness},
{"nGetStrikeThruPosition","(J)F", (void*) PaintGlue::getStrikeThruPosition},
{"nGetStrikeThruThickness","(J)F", (void*) PaintGlue::getStrikeThruThickness},
- {"nSetShadowLayer", "(JFFFI)V", (void*)PaintGlue::setShadowLayer},
{"nHasShadowLayer", "(J)Z", (void*)PaintGlue::hasShadowLayer},
{"nEqualsForTextMeasurement", "(JJ)Z", (void*)PaintGlue::equalsForTextMeasurement},
};
diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp
index 49a24a3..21369f9 100644
--- a/core/jni/android_app_NativeActivity.cpp
+++ b/core/jni/android_app_NativeActivity.cpp
@@ -281,15 +281,19 @@
std::unique_ptr<NativeCode> code;
bool needs_native_bridge = false;
+ char* nativeloader_error_msg = nullptr;
void* handle = OpenNativeLibrary(env,
sdkVersion,
pathStr.c_str(),
classLoader,
+ nullptr,
libraryPath,
&needs_native_bridge,
- &g_error_msg);
+ &nativeloader_error_msg);
if (handle == nullptr) {
+ g_error_msg = nativeloader_error_msg;
+ NativeLoaderFreeErrorMessage(nativeloader_error_msg);
ALOGW("NativeActivity LoadNativeLibrary(\"%s\") failed: %s",
pathStr.c_str(),
g_error_msg.c_str());
diff --git a/core/jni/android_hardware_location_ActivityRecognitionHardware.cpp b/core/jni/android_hardware_location_ActivityRecognitionHardware.cpp
deleted file mode 100644
index 1c9ab94..0000000
--- a/core/jni/android_hardware_location_ActivityRecognitionHardware.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2014, 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.
- */
-
-#define LOG_TAG "ActivityRecognitionHardware"
-
-#include <jni.h>
-#include <nativehelper/JNIHelp.h>
-
-#include <android_runtime/AndroidRuntime.h>
-#include <android_runtime/Log.h>
-
-// #include <hardware/activity_recognition.h>
-// The activity recognition HAL is being deprecated. This means -
-// i) Android framework code shall not depend on activity recognition
-// being provided through the activity_recognition.h interface.
-// ii) activity recognition HAL will not be binderized as the other HALs.
-//
-
-/**
- * Initializes the ActivityRecognitionHardware class from the native side.
- */
-static void class_init(JNIEnv* /*env*/, jclass /*clazz*/) {
- ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op",
- __FUNCTION__);
-}
-
-/**
- * Initializes and connect the callbacks handlers in the HAL.
- */
-static void initialize(JNIEnv* /*env*/, jobject /*obj*/) {
- ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op",
- __FUNCTION__);
-}
-
-/**
- * De-initializes the ActivityRecognitionHardware from the native side.
- */
-static void release(JNIEnv* /*env*/, jobject /*obj*/) {
- ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op",
- __FUNCTION__);
-}
-
-/**
- * Returns true if ActivityRecognition HAL is supported, false otherwise.
- */
-static jboolean is_supported(JNIEnv* /*env*/, jclass /*clazz*/) {
- ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op",
- __FUNCTION__);
- return JNI_FALSE;
-}
-
-/**
- * Gets an array representing the supported activities.
- */
-static jobjectArray get_supported_activities(JNIEnv* /*env*/, jobject /*obj*/) {
- ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op",
- __FUNCTION__);
- return NULL;
-}
-
-/**
- * Enables a given activity event to be actively monitored.
- */
-static int enable_activity_event(
- JNIEnv* /*env*/,
- jobject /*obj*/,
- jint /*activity_handle*/,
- jint /*event_type*/,
- jlong /*report_latency_ns*/) {
- ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op",
- __FUNCTION__);
- return android::NO_INIT;
-}
-
-/**
- * Disables a given activity event from being actively monitored.
- */
-static int disable_activity_event(
- JNIEnv* /*env*/,
- jobject /*obj*/,
- jint /*activity_handle*/,
- jint /*event_type*/) {
- ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op",
- __FUNCTION__);
- return android::NO_INIT;
-}
-
-/**
- * Request flush for al batch buffers.
- */
-static int flush(JNIEnv* /*env*/, jobject /*obj*/) {
- ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op",
- __FUNCTION__);
- return android::NO_INIT;
-}
-
-
-static const JNINativeMethod sMethods[] = {
- // {"name", "signature", (void*) functionPointer },
- { "nativeClassInit", "()V", (void*) class_init },
- { "nativeInitialize", "()V", (void*) initialize },
- { "nativeRelease", "()V", (void*) release },
- { "nativeIsSupported", "()Z", (void*) is_supported },
- { "nativeGetSupportedActivities", "()[Ljava/lang/String;", (void*) get_supported_activities },
- { "nativeEnableActivityEvent", "(IIJ)I", (void*) enable_activity_event },
- { "nativeDisableActivityEvent", "(II)I", (void*) disable_activity_event },
- { "nativeFlush", "()I", (void*) flush },
-};
-
-/**
- * Registration method invoked in JNI load.
- */
-int register_android_hardware_location_ActivityRecognitionHardware(JNIEnv* env) {
- return jniRegisterNativeMethods(
- env,
- "android/hardware/location/ActivityRecognitionHardware",
- sMethods,
- NELEM(sMethods));
-}
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index 12a8343b4..67c3064 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -841,6 +841,43 @@
return jStatus;
}
+static int android_media_AudioRecord_set_microphone_direction(JNIEnv *env, jobject thiz,
+ jint direction) {
+ sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz);
+ if (lpRecorder == NULL) {
+ jniThrowException(env, "java/lang/IllegalStateException",
+ "Unable to retrieve AudioRecord pointer for setMicrophoneDirection()");
+ return (jint)AUDIO_JAVA_ERROR;
+ }
+
+ jint jStatus = AUDIO_JAVA_SUCCESS;
+ status_t status =
+ lpRecorder->setMicrophoneDirection(static_cast<audio_microphone_direction_t>(direction));
+ if (status != NO_ERROR) {
+ jStatus = nativeToJavaStatus(status);
+ }
+
+ return jStatus;
+}
+
+static int android_media_AudioRecord_set_microphone_field_dimension(JNIEnv *env, jobject thiz,
+ jfloat zoom) {
+ sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz);
+ if (lpRecorder == NULL) {
+ jniThrowException(env, "java/lang/IllegalStateException",
+ "Unable to retrieve AudioRecord pointer for setMicrophoneFieldDimension()");
+ return (jint)AUDIO_JAVA_ERROR;
+ }
+
+ jint jStatus = AUDIO_JAVA_SUCCESS;
+ status_t status = lpRecorder->setMicrophoneFieldDimension(zoom);
+ if (status != NO_ERROR) {
+ jStatus = nativeToJavaStatus(status);
+ }
+
+ return jStatus;
+}
+
// ----------------------------------------------------------------------------
static jint android_media_AudioRecord_get_port_id(JNIEnv *env, jobject thiz) {
sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz);
@@ -896,6 +933,10 @@
{"native_get_active_microphones", "(Ljava/util/ArrayList;)I",
(void *)android_media_AudioRecord_get_active_microphones},
{"native_getPortId", "()I", (void *)android_media_AudioRecord_get_port_id},
+ {"native_set_microphone_direction", "(I)I",
+ (void *)android_media_AudioRecord_set_microphone_direction},
+ {"native_set_microphone_field_dimension", "(F)I",
+ (void *)android_media_AudioRecord_set_microphone_field_dimension},
};
// field names found in android/media/AudioRecord.java
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 80560f8..9e32206 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -487,7 +487,8 @@
}
static jint
-android_media_AudioSystem_setDeviceConnectionState(JNIEnv *env, jobject thiz, jint device, jint state, jstring device_address, jstring device_name)
+android_media_AudioSystem_setDeviceConnectionState(JNIEnv *env, jobject thiz, jint device, jint state, jstring device_address, jstring device_name,
+ jint codec __unused)
{
const char *c_address = env->GetStringUTFChars(device_address, NULL);
const char *c_name = env->GetStringUTFChars(device_name, NULL);
@@ -510,7 +511,8 @@
}
static jint
-android_media_AudioSystem_handleDeviceConfigChange(JNIEnv *env, jobject thiz, jint device, jstring device_address, jstring device_name)
+android_media_AudioSystem_handleDeviceConfigChange(JNIEnv *env, jobject thiz, jint device, jstring device_address, jstring device_name,
+ jint codec __unused)
{
const char *c_address = env->GetStringUTFChars(device_address, NULL);
const char *c_name = env->GetStringUTFChars(device_name, NULL);
@@ -2004,7 +2006,7 @@
std::vector<media::MicrophoneInfo> microphones;
status_t status = AudioSystem::getMicrophones(µphones);
if (status != NO_ERROR) {
- ALOGE_IF(status != NO_ERROR, "AudioSystem::getMicrophones error %d", status);
+ ALOGE("AudioSystem::getMicrophones error %d", status);
jStatus = nativeToJavaStatus(status);
return jStatus;
}
@@ -2026,6 +2028,36 @@
}
static jint
+android_media_AudioSystem_getHwOffloadEncodingFormatsSupportedForA2DP(
+ JNIEnv *env, jobject thiz, jobject jEncodingFormatList)
+{
+ ALOGV("%s", __FUNCTION__);
+ jint jStatus = AUDIO_JAVA_SUCCESS;
+ if (!env->IsInstanceOf(jEncodingFormatList, gArrayListClass)) {
+ ALOGE("%s: jEncodingFormatList not an ArrayList", __FUNCTION__);
+ return (jint)AUDIO_JAVA_BAD_VALUE;
+ }
+ std::vector<audio_format_t> encodingFormats;
+ //FIXME: enable when native implementaiton is merged
+ //status_t status = AudioSystem::getHwOffloadEncodingFormatsSupportedForA2DP(
+ // &encodingFormats);
+ status_t status = NO_ERROR;
+ if (status != NO_ERROR) {
+ ALOGE("%s: error %d", __FUNCTION__, status);
+ jStatus = nativeToJavaStatus(status);
+ return jStatus;
+ }
+
+ for (size_t i = 0; i < encodingFormats.size(); i++) {
+ ScopedLocalRef<jobject> jEncodingFormat(
+ env, env->NewObject(gIntegerClass, gIntegerCstor, encodingFormats[i]));
+ env->CallBooleanMethod(jEncodingFormatList, gArrayListMethods.add,
+ jEncodingFormat.get());
+ }
+ return jStatus;
+}
+
+static jint
android_media_AudioSystem_getSurroundFormats(JNIEnv *env, jobject thiz,
jobject jSurroundFormats, jboolean reported)
{
@@ -2142,9 +2174,9 @@
{"isSourceActive", "(I)Z", (void *)android_media_AudioSystem_isSourceActive},
{"newAudioSessionId", "()I", (void *)android_media_AudioSystem_newAudioSessionId},
{"newAudioPlayerId", "()I", (void *)android_media_AudioSystem_newAudioPlayerId},
- {"setDeviceConnectionState", "(IILjava/lang/String;Ljava/lang/String;)I", (void *)android_media_AudioSystem_setDeviceConnectionState},
+ {"setDeviceConnectionState", "(IILjava/lang/String;Ljava/lang/String;I)I", (void *)android_media_AudioSystem_setDeviceConnectionState},
{"getDeviceConnectionState", "(ILjava/lang/String;)I", (void *)android_media_AudioSystem_getDeviceConnectionState},
- {"handleDeviceConfigChange", "(ILjava/lang/String;Ljava/lang/String;)I", (void *)android_media_AudioSystem_handleDeviceConfigChange},
+ {"handleDeviceConfigChange", "(ILjava/lang/String;Ljava/lang/String;I)I", (void *)android_media_AudioSystem_handleDeviceConfigChange},
{"setPhoneState", "(I)I", (void *)android_media_AudioSystem_setPhoneState},
{"setForceUse", "(II)I", (void *)android_media_AudioSystem_setForceUse},
{"getForceUse", "(I)I", (void *)android_media_AudioSystem_getForceUse},
@@ -2197,6 +2229,8 @@
{"setAssistantUid", "(I)I", (void *)android_media_AudioSystem_setAssistantUid},
{"setA11yServicesUids", "([I)I", (void *)android_media_AudioSystem_setA11yServicesUids},
{"isHapticPlaybackSupported", "()Z", (void *)android_media_AudioSystem_isHapticPlaybackSupported},
+ {"getHwOffloadEncodingFormatsSupportedForA2DP", "(Ljava/util/ArrayList;)I",
+ (void*)android_media_AudioSystem_getHwOffloadEncodingFormatsSupportedForA2DP},
};
static const JNINativeMethod gEventHandlerMethods[] = {
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index 7b564ae..4101c04 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -44,6 +44,8 @@
#include "androidfw/MutexGuard.h"
#include "androidfw/PosixUtils.h"
#include "androidfw/ResourceTypes.h"
+#include "androidfw/ResourceUtils.h"
+
#include "core_jni_helpers.h"
#include "jni.h"
#include "nativehelper/JNIHelp.h"
@@ -975,34 +977,7 @@
return nullptr;
}
- std::string result;
- if (name.package != nullptr) {
- result.append(name.package, name.package_len);
- }
-
- if (name.type != nullptr || name.type16 != nullptr) {
- if (!result.empty()) {
- result += ":";
- }
-
- if (name.type != nullptr) {
- result.append(name.type, name.type_len);
- } else {
- result += util::Utf16ToUtf8(StringPiece16(name.type16, name.type_len));
- }
- }
-
- if (name.entry != nullptr || name.entry16 != nullptr) {
- if (!result.empty()) {
- result += "/";
- }
-
- if (name.entry != nullptr) {
- result.append(name.entry, name.entry_len);
- } else {
- result += util::Utf16ToUtf8(StringPiece16(name.entry16, name.entry_len));
- }
- }
+ std::string result = ToFormattedResourceString(&name);
return env->NewStringUTF(result.c_str());
}
@@ -1049,6 +1024,26 @@
return nullptr;
}
+static void NativeSetResourceResolutionLoggingEnabled(JNIEnv* /*env*/,
+ jclass /*clazz*/,
+ jlong ptr,
+ jboolean enabled) {
+ ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr));
+ assetmanager->SetResourceResolutionLoggingEnabled(enabled);
+}
+
+static jstring NativeGetLastResourceResolution(JNIEnv* env,
+ jclass /*clazz*/,
+ jlong ptr) {
+ ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr));
+ std::string resolution = assetmanager->GetLastResourceResolution();
+ if (resolution.empty()) {
+ return nullptr;
+ } else {
+ return env->NewStringUTF(resolution.c_str());
+ }
+}
+
static jobjectArray NativeGetLocales(JNIEnv* env, jclass /*class*/, jlong ptr,
jboolean exclude_system) {
ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr));
@@ -1452,6 +1447,10 @@
{"nativeGetResourcePackageName", "(JI)Ljava/lang/String;", (void*)NativeGetResourcePackageName},
{"nativeGetResourceTypeName", "(JI)Ljava/lang/String;", (void*)NativeGetResourceTypeName},
{"nativeGetResourceEntryName", "(JI)Ljava/lang/String;", (void*)NativeGetResourceEntryName},
+ {"nativeSetResourceResolutionLoggingEnabled", "(JZ)V",
+ (void*) NativeSetResourceResolutionLoggingEnabled},
+ {"nativeGetLastResourceResolution", "(J)Ljava/lang/String;",
+ (void*) NativeGetLastResourceResolution},
{"nativeGetLocales", "(JZ)[Ljava/lang/String;", (void*)NativeGetLocales},
{"nativeGetSizeConfigurations", "(J)[Landroid/content/res/Configuration;",
(void*)NativeGetSizeConfigurations},
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp
index 798825f..26a474c 100644
--- a/core/jni/android_util_Process.cpp
+++ b/core/jni/android_util_Process.cpp
@@ -22,12 +22,12 @@
#include <utils/Log.h>
#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
-#include <cutils/sched_policy.h>
#include <utils/String8.h>
#include <utils/Vector.h>
#include <meminfo/procmeminfo.h>
#include <meminfo/sysmeminfo.h>
#include <processgroup/processgroup.h>
+#include <processgroup/sched_policy.h>
#include <string>
#include <vector>
diff --git a/core/jni/android_view_InputEventSender.cpp b/core/jni/android_view_InputEventSender.cpp
index 10da892..aa10a2f 100644
--- a/core/jni/android_view_InputEventSender.cpp
+++ b/core/jni/android_view_InputEventSender.cpp
@@ -138,6 +138,7 @@
event->getDeviceId(), event->getSource(), event->getDisplayId(),
event->getAction(), event->getActionButton(), event->getFlags(),
event->getEdgeFlags(), event->getMetaState(), event->getButtonState(),
+ event->getClassification(),
event->getXOffset(), event->getYOffset(),
event->getXPrecision(), event->getYPrecision(),
event->getDownTime(), event->getHistoricalEventTime(i),
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 9ce6df1..897427f 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -642,6 +642,27 @@
return static_cast<jint>(SurfaceComposerClient::getActiveColorMode(token));
}
+static jintArray nativeGetCompositionDataspaces(JNIEnv* env, jclass) {
+ ui::Dataspace defaultDataspace, wcgDataspace;
+ ui::PixelFormat defaultPixelFormat, wcgPixelFormat;
+ if (SurfaceComposerClient::getCompositionPreference(&defaultDataspace,
+ &defaultPixelFormat,
+ &wcgDataspace,
+ &wcgPixelFormat) != NO_ERROR) {
+ return nullptr;
+ }
+ jintArray array = env->NewIntArray(2);
+ if (array == nullptr) {
+ jniThrowException(env, "java/lang/OutOfMemoryError", nullptr);
+ return nullptr;
+ }
+ jint* arrayValues = env->GetIntArrayElements(array, 0);
+ arrayValues[0] = static_cast<jint>(defaultDataspace);
+ arrayValues[1] = static_cast<jint>(wcgDataspace);
+ env->ReleaseIntArrayElements(array, arrayValues, 0);
+ return array;
+}
+
static jboolean nativeSetActiveColorMode(JNIEnv* env, jclass,
jobject tokenObj, jint colorMode) {
sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
@@ -660,6 +681,10 @@
if (t.duration() > 100ms) ALOGD("Excessive delay in setPowerMode()");
}
+static jboolean nativeGetProtectedContentSupport(JNIEnv* env, jclass) {
+ return static_cast<jboolean>(SurfaceComposerClient::getProtectedContentSupport());
+}
+
static jboolean nativeClearContentFrameStats(JNIEnv* env, jclass clazz, jlong nativeObject) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->clearLayerFrameStats();
@@ -1016,6 +1041,8 @@
(void*)nativeGetActiveColorMode},
{"nativeSetActiveColorMode", "(Landroid/os/IBinder;I)Z",
(void*)nativeSetActiveColorMode},
+ {"nativeGetCompositionDataspaces", "()[I",
+ (void*)nativeGetCompositionDataspaces},
{"nativeGetHdrCapabilities", "(Landroid/os/IBinder;)Landroid/view/Display$HdrCapabilities;",
(void*)nativeGetHdrCapabilities },
{"nativeClearContentFrameStats", "(J)Z",
@@ -1028,6 +1055,8 @@
(void*)nativeGetAnimationFrameStats },
{"nativeSetDisplayPowerMode", "(Landroid/os/IBinder;I)V",
(void*)nativeSetDisplayPowerMode },
+ {"nativeGetProtectedContentSupport", "()Z",
+ (void*)nativeGetProtectedContentSupport },
{"nativeDeferTransactionUntil", "(JJLandroid/os/IBinder;J)V",
(void*)nativeDeferTransactionUntil },
{"nativeDeferTransactionUntilSurface", "(JJJJ)V",
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index a8e1427..e81b627 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -14,6 +14,15 @@
* limitations under the License.
*/
+/*
+ * Disable optimization of this file if we are compiling with the address
+ * sanitizer. This is a mitigation for b/122921367 and can be removed once the
+ * bug is fixed.
+ */
+#if __has_feature(address_sanitizer)
+#pragma clang optimize off
+#endif
+
#define LOG_TAG "Zygote"
// sys/mount.h has to come before linux/fs.h due to redefinition of MS_RDONLY, MS_BIND, etc
@@ -53,13 +62,13 @@
#include <android-base/stringprintf.h>
#include <cutils/fs.h>
#include <cutils/multiuser.h>
-#include <cutils/sched_policy.h>
#include <private/android_filesystem_config.h>
#include <utils/String8.h>
#include <selinux/android.h>
#include <seccomp_policy.h>
#include <stats_event_list.h>
#include <processgroup/processgroup.h>
+#include <processgroup/sched_policy.h>
#include "core_jni_helpers.h"
#include <nativehelper/JNIHelp.h>
@@ -86,6 +95,7 @@
static pid_t gSystemServerPid = 0;
static const char kIsolatedStorage[] = "persist.sys.isolated_storage";
+static const char kIsolatedStorageSnapshot[] = "sys.isolated_storage_snapshot";
static const char kZygoteClassName[] = "com/android/internal/os/Zygote";
static jclass gZygoteClass;
static jmethodID gCallPostForkSystemServerHooks;
@@ -99,8 +109,9 @@
MOUNT_EXTERNAL_DEFAULT = 1,
MOUNT_EXTERNAL_READ = 2,
MOUNT_EXTERNAL_WRITE = 3,
- MOUNT_EXTERNAL_INSTALLER = 4,
- MOUNT_EXTERNAL_FULL = 5,
+ MOUNT_EXTERNAL_LEGACY = 4,
+ MOUNT_EXTERNAL_INSTALLER = 5,
+ MOUNT_EXTERNAL_FULL = 6,
};
// Must match values in com.android.internal.os.Zygote.
@@ -303,7 +314,7 @@
mallopt(M_DECAY_TIME, 1);
}
-static void SetUpSeccompFilter(uid_t uid) {
+static void SetUpSeccompFilter(uid_t uid, bool is_child_zygote) {
if (!g_is_security_enforced) {
ALOGI("seccomp disabled by setenforce 0");
return;
@@ -311,7 +322,14 @@
// Apply system or app filter based on uid.
if (uid >= AID_APP_START) {
- set_app_seccomp_filter();
+ if (is_child_zygote) {
+ // set_app_zygote_seccomp_filter();
+ // TODO(b/111434506) install the filter; for now, install the app filter
+ // which is more restrictive.
+ set_app_seccomp_filter();
+ } else {
+ set_app_seccomp_filter();
+ }
} else {
set_system_seccomp_filter();
}
@@ -530,9 +548,10 @@
return true;
}
- if (GetBoolProperty(kIsolatedStorage, false)) {
- if (mount_mode == MOUNT_EXTERNAL_FULL) {
- storageSource = "/mnt/runtime/write";
+ if (GetBoolProperty(kIsolatedStorageSnapshot, GetBoolProperty(kIsolatedStorage, false))) {
+ if (mount_mode == MOUNT_EXTERNAL_FULL || mount_mode == MOUNT_EXTERNAL_LEGACY) {
+ storageSource = (mount_mode == MOUNT_EXTERNAL_FULL)
+ ? "/mnt/runtime/full" : "/mnt/runtime/write";
if (TEMP_FAILURE_RETRY(mount(storageSource.string(), "/storage",
NULL, MS_BIND | MS_REC | MS_SLAVE, NULL)) == -1) {
*error_msg = CREATE_ERROR("Failed to mount %s to /storage: %s",
@@ -996,7 +1015,7 @@
// alternative is to call prctl(PR_SET_NO_NEW_PRIVS, 1) afterward, but that
// breaks SELinux domain transition (see b/71859146). As the result,
// privileged syscalls used below still need to be accessible in app process.
- SetUpSeccompFilter(uid);
+ SetUpSeccompFilter(uid, is_child_zygote);
if (setresuid(uid, uid, uid) == -1) {
fail_fn(CREATE_ERROR("setresuid(%d) failed: %s", uid, strerror(errno)));
@@ -1295,6 +1314,23 @@
UnmountTree("/storage");
}
+static void com_android_internal_os_Zygote_nativeInstallSeccompUidGidFilter(
+ JNIEnv* env, jclass, jint uidGidMin, jint uidGidMax) {
+ if (!g_is_security_enforced) {
+ ALOGI("seccomp disabled by setenforce 0");
+ return;
+ }
+
+ // TODO(b/111434506) install the filter
+
+ /*
+ bool installed = install_setuidgid_seccomp_filter(uidGidMin, uidGidMax);
+ if (!installed) {
+ RuntimeAbort(env, __LINE__, "Could not install setuid/setgid seccomp filter.");
+ }
+ */
+}
+
static const JNINativeMethod gMethods[] = {
{ "nativeSecurityInit", "()V",
(void *) com_android_internal_os_Zygote_nativeSecurityInit },
@@ -1308,7 +1344,9 @@
{ "nativeUnmountStorageOnInit", "()V",
(void *) com_android_internal_os_Zygote_nativeUnmountStorageOnInit },
{ "nativePreApplicationInit", "()V",
- (void *) com_android_internal_os_Zygote_nativePreApplicationInit }
+ (void *) com_android_internal_os_Zygote_nativePreApplicationInit },
+ { "nativeInstallSeccompUidGidFilter", "(II)V",
+ (void *) com_android_internal_os_Zygote_nativeInstallSeccompUidGidFilter }
};
int register_com_android_internal_os_Zygote(JNIEnv* env) {
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
index bd87dcc..41e00b9 100644
--- a/core/jni/fd_utils.cpp
+++ b/core/jni/fd_utils.cpp
@@ -33,6 +33,7 @@
// Static whitelist of open paths that the zygote is allowed to keep open.
static const char* kPathWhitelist[] = {
+ "/apex/com.android.conscrypt/javalib/conscrypt.jar",
"/dev/null",
"/dev/socket/zygote",
"/dev/socket/zygote_secondary",
diff --git a/core/proto/Android.bp b/core/proto/Android.bp
new file mode 100644
index 0000000..80cc2d4
--- /dev/null
+++ b/core/proto/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 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.
+
+// C++ library for Bluetooth platform wide protobuf definitions
+cc_library_static {
+ name: "libbt-platform-protos-lite",
+ host_supported: true,
+ proto: {
+ export_proto_headers: true,
+ type: "lite",
+ },
+ srcs: [
+ "android/bluetooth/enums.proto",
+ "android/bluetooth/hci/enums.proto",
+ ],
+}
diff --git a/core/proto/android/app/settings_enums.proto b/core/proto/android/app/settings_enums.proto
index 2f2f623..f68c760 100644
--- a/core/proto/android/app/settings_enums.proto
+++ b/core/proto/android/app/settings_enums.proto
@@ -27,9 +27,569 @@
PAGE_VISIBLE = 1;
PAGE_HIDE = 2;
+ // ACTION: Settings > Wi-Fi > [Long press network] > Connect to network
+ // SUBTYPE: true if connecting to a saved network, false if not
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_WIFI_CONNECT = 135;
+
+ // ACTION: Settings > Wi-Fi > [Long press network] > Forget network
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_WIFI_FORGET = 137;
+
+ // ACTION: Settings > Wi-Fi > Toggle off
+ // SUBTYPE: true if connected to network before toggle, false if not
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_WIFI_OFF = 138;
+
+ // ACTION: Settings > Wi-Fi > Toggle on
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_WIFI_ON = 139;
+
+ // ACTION: Settings > Bluetooth > Overflow > Rename this device
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_BLUETOOTH_RENAME = 161;
+
+ // ACTION: Settings > Bluetooth > Overflow > Show received files
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_BLUETOOTH_FILES = 162;
+
+ // ACTION: DND Settings > Priority only allows > Reminder toggle
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_ZEN_ALLOW_REMINDERS = 167;
+
+ // ACTION: DND Settings > Priority only allows > Event toggle
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_ZEN_ALLOW_EVENTS = 168;
+
+ // ACTION: DND Settings > Priority only allows > Messages
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_ZEN_ALLOW_MESSAGES = 169;
+
+ // ACTION: DND Settings > Priority only allows > Calls
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_ZEN_ALLOW_CALLS = 170;
+
+ // ACTION: DND Settings > Priority only allows > Repeat callers toggle
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_ZEN_ALLOW_REPEAT_CALLS = 171;
+
+ // ACTION: DND Settings > Automatic rules > [Rule] > Delete rule > Delete
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_ZEN_DELETE_RULE_OK = 175;
+
+ // ACTION: Settings > More > Airplane mode toggle
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_AIRPLANE_TOGGLE = 177;
+
+ // ACTION: Settings > Data usage > Cellular data toggle
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_CELL_DATA_TOGGLE = 178;
+
+ // ACTION: Settings > Display > When device is rotated
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_ROTATION_LOCK = 203;
+
+ // OPEN: Settings > Search > Perform search
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_SEARCH_RESULTS = 226;
+
+ // ACTION: Settings > Security > Nexus Imprint > [Fingerprint] > Delete
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_FINGERPRINT_DELETE = 253;
+
+ // ACTION: Settings > Security > Nexus Imprint > [Fingerprint] > Rename
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_FINGERPRINT_RENAME = 254;
+
+ // ACTION: Settings -> Developer Options -> Take bug report -> Interactive report
+ // CATEGORY: SETTINGS
+ // OS: N
+ // Interactive bug report initiated from Settings.
+ ACTION_BUGREPORT_FROM_SETTINGS_INTERACTIVE = 294;
+
+ // ACTION: Settings -> Developer Options -> Take bug report -> Full report
+ // CATEGORY: SETTINGS
+ // OS: N
+ // Interactive bug report initiated from Settings.
+ ACTION_BUGREPORT_FROM_SETTINGS_FULL = 295;
+
+ // click on collapsed conditional or clicks expand button
+ ACTION_SETTINGS_CONDITION_EXPAND = 373;
+
+ // click main area of expanded conditional
+ ACTION_SETTINGS_CONDITION_CLICK = 375;
+
+ // click a direct button on expanded conditional
+ ACTION_SETTINGS_CONDITION_BUTTON = 376;
+
+ // Action: user enable / disabled data saver using Settings
+ // OPEN: Settings -> Data Usage -> Data saver -> On/off toggle
+ // VALUE: 1 for enabled, 0 for disabled
+ // CATEGORY: SETTINGS
+ // OS: N
+ ACTION_DATA_SAVER_MODE = 394;
+
+ // User whitelisted an app for Data Saver mode; action pass package name of app
+ // Action: user enable / disabled data saver using Settings
+ // OPEN: Settings -> Data Usage -> Data saver -> Unrestricted data access > APP toggle turned on
+ // or
+ // Settings -> Apps -> APP -> Data usage -> Unrestricted data usage toggle turned on
+ // VALUE: package name of APP
+ // CATEGORY: SETTINGS
+ // OS: N
+ ACTION_DATA_SAVER_WHITELIST = 395;
+
+ // User blacklisted an app for Data Saver mode; action pass package name of app
+ // OPEN: Settings -> Apps -> APP -> Data usage -> Background data toggle turned off
+ // VALUE: package name of APP
+ // CATEGORY: SETTINGS
+ // OS: N
+ ACTION_DATA_SAVER_BLACKLIST = 396;
+
+ // ACTION: Settings -> Storage -> Manage storage -> Click Storage Manager
+ // SUBTYPE: false is off, true is on
+ ACTION_TOGGLE_STORAGE_MANAGER = 489;
+
+ // OPEN: Settings > Display -> Ambient Display
+ // CATEGORY: SETTINGS
+ ACTION_AMBIENT_DISPLAY = 495;
+
+ // ACTION: Allow Battery optimization for an app
+ APP_SPECIAL_PERMISSION_BATTERY_ALLOW = 764;
+
+ // ACTION: Deny Battery optimization for an app
+ APP_SPECIAL_PERMISSION_BATTERY_DENY = 765;
+
+ // ACTION: Enable Device Admin app
+ APP_SPECIAL_PERMISSION_ADMIN_ALLOW = 766;
+
+ // ACTION: Disable Device Admin app
+ APP_SPECIAL_PERMISSION_ADMIN_DENY = 767;
+
+ // ACTION: Allow "Do Not Disturb access" for an app
+ APP_SPECIAL_PERMISSION_DND_ALLOW = 768;
+
+ // ACTION: Deny "Do Not Disturb access" for an app
+ APP_SPECIAL_PERMISSION_DND_DENY = 769;
+
+ // ACTION: Allow "Draw over other apps" for an app
+ APP_SPECIAL_PERMISSION_APPDRAW_ALLOW = 770;
+
+ // ACTION: Deny "Display over other apps" for an app
+ APP_SPECIAL_PERMISSION_APPDRAW_DENY = 771;
+
+ // ACTION: Allow "VR helper services" for an app
+ APP_SPECIAL_PERMISSION_VRHELPER_ALLOW = 772;
+
+ // ACTION: Deny "VR helper services" for an app
+ APP_SPECIAL_PERMISSION_VRHELPER_DENY = 773;
+
+ // ACTION: Allow "Modify system settings" for an app
+ APP_SPECIAL_PERMISSION_SETTINGS_CHANGE_ALLOW = 774;
+
+ // ACTION: Deny "Modify system settings" for an app
+ APP_SPECIAL_PERMISSION_SETTINGS_CHANGE_DENY = 775;
+
+ // ACTION: Allow "Notification access" for an app
+ APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW = 776;
+
+ // ACTION: Deny "Notification access" for an app
+ APP_SPECIAL_PERMISSION_NOTIVIEW_DENY = 777;
+
+ // ACTION: "Premium SMS access" for an app - "ask user" option
+ APP_SPECIAL_PERMISSION_PREMIUM_SMS_ASK = 778;
+
+ // ACTION: "Premium SMS access" for an app - "never allow" option
+ APP_SPECIAL_PERMISSION_PREMIUM_SMS_DENY = 779;
+
+ // ACTION: "Premium SMS access" for an app - "always allow" option
+ APP_SPECIAL_PERMISSION_PREMIUM_SMS_ALWAYS_ALLOW = 780;
+
+ // ACTION: Allow "Unrestricted data access" for an app
+ APP_SPECIAL_PERMISSION_UNL_DATA_ALLOW = 781;
+
+ // ACTION: Deny "Unrestricted data access" for an app
+ APP_SPECIAL_PERMISSION_UNL_DATA_DENY = 782;
+
+ // ACTION: Allow "Usage access" for an app
+ APP_SPECIAL_PERMISSION_USAGE_VIEW_ALLOW = 783;
+
+ // ACTION: Deny "Usage access" for an app
+ APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY = 784;
+
+ // ACTION: "Force stop" action on an app
+ ACTION_APP_FORCE_STOP = 807;
+
+ // ACTION: Allow "Enable picture-in-picture" for an app
+ APP_PICTURE_IN_PICTURE_ALLOW = 813;
+
+ // ACTION: Create a Settings shortcut item.
+ ACTION_SETTINGS_CREATE_SHORTCUT = 829;
+
+ // ACTION: Settings advanced button is expanded
+ ACTION_SETTINGS_ADVANCED_BUTTON_EXPAND = 834;
+
+ // ACTION: Deny "Enable picture-in-picture" for an app
+ APP_PICTURE_IN_PICTURE_DENY = 814;
+
+ // ACTION: Settings -> Display -> Theme
+ ACTION_THEME = 816;
+
+ // ACTION: Settings > About device > Build number
+ ACTION_SETTINGS_BUILD_NUMBER_PREF = 847;
+
+ // ACTION: Settings > Battery > Menu > Optimization
+ ACTION_SETTINGS_MENU_BATTERY_OPTIMIZATION = 851;
+
+ // ACTION: Settings > Battery > Menu > Apps Toggle
+ ACTION_SETTINGS_MENU_BATTERY_APPS_TOGGLE = 852;
+
// ACTION: Settings > Any preference is changed
ACTION_SETTINGS_PREFERENCE_CHANGE = 853;
+ // ACTION: Settings > Connected devices > Bluetooth -> Available devices
+ ACTION_SETTINGS_BLUETOOTH_PAIR = 866;
+
+ // ACTION: Settings > Connected devices > Bluetooth -> Paired devices
+ ACTION_SETTINGS_BLUETOOTH_CONNECT = 867;
+
+ // ACTION: Settings > Connected devices > Bluetooth -> Connected device
+ ACTION_SETTINGS_BLUETOOTH_DISCONNECT = 868;
+
+ // ACTION: Settings > Connected devices > Bluetooth -> Error dialog
+ ACTION_SETTINGS_BLUETOOTH_CONNECT_ERROR = 869;
+
+ // ACTION: Settings > Connected devices > Bluetooth master switch Toggle
+ ACTION_SETTINGS_MASTER_SWITCH_BLUETOOTH_TOGGLE = 870;
+
+ // ACTION: Settings > App detail > Uninstall
+ ACTION_SETTINGS_UNINSTALL_APP = 872;
+
+ // ACTION: Settings > App detail > Uninstall Device admin app
+ ACTION_SETTINGS_UNINSTALL_DEVICE_ADMIN = 873;
+
+ // ACTION: Settings > App detail > Disable app
+ ACTION_SETTINGS_DISABLE_APP = 874;
+
+ // ACTION: Settings > App detail > Enable app
+ ACTION_SETTINGS_ENABLE_APP = 875;
+
+ // ACTION: Settings > App detail > Clear data
+ ACTION_SETTINGS_CLEAR_APP_DATA = 876;
+
+ // ACTION: Settings > App detail > Clear cache
+ ACTION_SETTINGS_CLEAR_APP_CACHE = 877;
+
+ // ACTION: Logs pressing the "Clear app" button in the app info settings page for an instant
+ // app.
+ // VALUE: The package name of the app
+ ACTION_SETTINGS_CLEAR_INSTANT_APP = 923;
+
+ // OPEN: Assist Gesture training intro in Settings
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ SETTINGS_ASSIST_GESTURE_TRAINING_INTRO = 991;
+
+ // OPEN: Assist Gesture training enrolling in Settings
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ SETTINGS_ASSIST_GESTURE_TRAINING_ENROLLING = 992;
+
+ // OPEN: Assist Gesture training finished in Settings
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ SETTINGS_ASSIST_GESTURE_TRAINING_FINISHED = 993;
+
+ // ACTION: Update default app from Settings
+ ACTION_SETTINGS_UPDATE_DEFAULT_APP = 1000;
+
+ // ACTION: Settings > Wi-Fi > [Long press network] > Sign in to network
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ ACTION_WIFI_SIGNIN = 1008;
+
+ // ACTION: Settings > Notification Settings > Open application notification
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ ACTION_OPEN_APP_NOTIFICATION_SETTING = 1016;
+
+ // ACTION: Settings > App Info > Open app settings
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ ACTION_OPEN_APP_SETTING = 1017;
+
+ // ACTION: Collect PSD Signals
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ ACTION_PSD_LOADER = 1019;
+
+ // OPEN: Settings > Trampoline Intent > Settings page
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ TRAMPOLINE_SETTINGS_EVENT = 1033;
+
+ // ACTION: Logged when user tries to pair a Bluetooth device without name from Settings app
+ // CATEGORY: SETTINGS
+ // OS: O MR
+ ACTION_SETTINGS_BLUETOOTH_PAIR_DEVICES_WITHOUT_NAMES = 1096;
+
+ // ACTION: Settings > Network & Internet > Mobile network > Network
+ // CATEGORY: SETTINGS
+ ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK = 1210;
+
+ // ACTION: DND Settings > Priority only allows > Alarms toggle
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ZEN_ALLOW_ALARMS = 1226;
+
+ // ACTION: DND Settings > Priority only allows > Media toggle
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ZEN_ALLOW_MEDIA = 1227;
+
+ // ACTION: A private dns mode been selected by user
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_PRIVATE_DNS_MODE = 1249;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Select rule ("Event") > Rule name > OK
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ZEN_MODE_RULE_NAME_CHANGE_OK = 1267;
+
+ // OPEN: Settings > Sound > Do Not Disturb > TURN ON NOW/TURN OFF NOW
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ZEN_TOGGLE_DND_BUTTON = 1268;
+
+ // ACTION: DND Settings > What to block > full screen intents
+ // SUBTYPE: false is allowed, true is blocked
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACTION_ZEN_BLOCK_FULL_SCREEN_INTENTS = 1332;
+
+ // ACTION: DND Settings > What to block
+ // SUBTYPE: false is allowed, true is blocked
+ // OS: P
+ ACTION_ZEN_BLOCK_LIGHT = 1333;
+
+ // ACTION: DND Settings > What to block
+ // SUBTYPE: false is allowed, true is blocked
+ // OS: P
+ ACTION_ZEN_BLOCK_PEEK = 1334;
+
+ // ACTION: DND Settings > What to block
+ // SUBTYPE: false is allowed, true is blocked
+ // OS: P
+ ACTION_ZEN_BLOCK_STATUS = 1335;
+
+ // ACTION: DND Settings > What to block
+ // SUBTYPE: false is allowed, true is blocked
+ // OS: P
+ ACTION_ZEN_BLOCK_BADGE = 1336;
+
+ // ACTION: DND Settings > What to block
+ // SUBTYPE: false is allowed, true is blocked
+ // OS: P
+ ACTION_ZEN_BLOCK_AMBIENT = 1337;
+
+ // ACTION: DND Settings > What to block
+ // SUBTYPE: false is allowed, true is blocked
+ // OS: P
+ ACTION_ZEN_BLOCK_NOTIFICATION_LIST = 1338;
+
+ // ACTION: DND Settings > Priority only allows > System toggle
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ZEN_ALLOW_SYSTEM = 1340;
+
+ // ACTION: Settings > Battery settings > Battery tip > App restriction tip
+ // OS: P
+ ACTION_APP_RESTRICTION_TIP = 1347;
+
+ // ACTION: Settings > Battery settings > Battery tip > High usage tip
+ // OS: P
+ ACTION_HIGH_USAGE_TIP = 1348;
+
+ // ACTION: Settings > Battery settings > Battery tip > Summary tip
+ // OS: P
+ ACTION_SUMMARY_TIP = 1349;
+
+ // ACTION: Settings > Battery settings > Battery tip > Smart battery tip
+ // OS: P
+ ACTION_SMART_BATTERY_TIP = 1350;
+
+ // ACTION: Settings > Battery settings > Battery tip > Early warning tip
+ // OS: P
+ ACTION_EARLY_WARNING_TIP = 1351;
+
+ // ACTION: Settings > Battery settings > Battery tip > Low battery tip
+ // OS: P
+ ACTION_LOW_BATTERY_TIP = 1352;
+
+ // ACTION: Settings > Battery settings > Battery tip > App restriction list shown
+ // OS: P
+ ACTION_APP_RESTRICTION_TIP_LIST = 1353;
+
+ // ACTION: Settings > Battery settings > Battery tip > High usage list shown
+ // OS: P
+ ACTION_HIGH_USAGE_TIP_LIST = 1354;
+
+ // ACTION: Settings > Battery settings > Battery tip > Open app restriction page
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_TIP_OPEN_APP_RESTRICTION_PAGE = 1361;
+
+ // ACTION: Settings > Battery settings > Battery tip > Restrict app
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_TIP_RESTRICT_APP = 1362;
+
+ // ACTION: Settings > Battery settings > Battery tip > Unrestrict app
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_TIP_UNRESTRICT_APP = 1363;
+
+ // ACTION: Settings > Battery settings > Battery tip > Open smart battery page
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_TIP_OPEN_SMART_BATTERY = 1364;
+
+ // ACTION: Settings > Battery settings > Battery tip > Turn on battery saver
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_TIP_TURN_ON_BATTERY_SAVER = 1365;
+
+ // ACTION: Settings > Anomaly receiver > Anomaly received
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ANOMALY_TRIGGERED = 1367;
+
+ // ACTION: A Settings Slice is requested
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_SETTINGS_SLICE_REQUESTED = 1371;
+
+ // ACTION: A Settings Slice is updated with new value
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_SETTINGS_SLICE_CHANGED = 1372;
+
+ // OPEN: DND onboarding activity > Ok button
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ZEN_ONBOARDING_OK = 1378;
+
+ // OPEN: DND onboarding activity > Settings link
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ZEN_ONBOARDING_SETTINGS = 1379;
+
+ // ACTION: Settings > Anomaly receiver > Anomaly ignored, don't show up in battery settings
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ANOMALY_IGNORED = 1387;
+
+ // ACTION: Settings > Battery settings > Battery tip > Open battery saver page
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_TIP_OPEN_BATTERY_SAVER_PAGE = 1388;
+
+ // ACTION: DND Settings > What to block
+ // OS: P
+ ACTION_ZEN_SOUND_ONLY = 1396;
+
+ // ACTION: DND Settings > Notifications
+ // OS: P
+ ACTION_ZEN_SOUND_AND_VIS_EFFECTS = 1397;
+
+ // ACTION: DND Settings > Notifications
+ // OS: P
+ ACTION_ZEN_SHOW_CUSTOM = 1398;
+
+ // ACTION: DND Settings > Notifications
+ // OS: P
+ ACTION_ZEN_CUSTOM = 1399;
+
+ // OPEN: DND onboarding activity > don't update button
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_ZEN_ONBOARDING_KEEP_CURRENT_SETTINGS = 1406;
+
+ // ACTION: Storage initialization wizard initialization choice of external/portable
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_STORAGE_INIT_EXTERNAL = 1407;
+
+ // ACTION: Storage initialization wizard initialization choice of internal/adoptable
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_STORAGE_INIT_INTERNAL = 1408;
+
+ // ACTION: Storage initialization wizard benchmark fast choice of continue
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_STORAGE_BENCHMARK_FAST_CONTINUE = 1409;
+
+ // ACTION: Storage initialization wizard benchmark slow choice of continue
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_STORAGE_BENCHMARK_SLOW_CONTINUE = 1410;
+
+ // ACTION: Storage initialization wizard benchmark slow choice of abort
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_STORAGE_BENCHMARK_SLOW_ABORT = 1411;
+
+ // ACTION: Storage initialization wizard migration choice of now
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_STORAGE_MIGRATE_NOW = 1412;
+
+ // ACTION: Storage initialization wizard migration choice of later
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACTION_STORAGE_MIGRATE_LATER = 1413;
+
+ // OPEN: Settings > Sound > Switch a2dp devices dialog
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_SWITCH_A2DP_DEVICES = 1415;
+
+
+ // OPEN: Settings > Sound > Switch hfp devices dialog
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_SWITCH_HFP_DEVICES = 1416;
+
// ACTION: Tap & Pay -> Default Application Setting -> Use Forground
ACTION_NFC_PAYMENT_FOREGROUND_SETTING = 1622;
@@ -44,15 +604,1454 @@
// Unknown page. Should not be used in production code.
PAGE_UNKNOWN = 0;
+ // OPEN: Settings > Accessibility
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACCESSIBILITY = 2;
+
+ // OPEN: Settings > Accessibility > Captions
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACCESSIBILITY_CAPTION_PROPERTIES = 3;
+
+ // OPEN: Settings > Accessibility > [Service]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACCESSIBILITY_SERVICE = 4;
+
+ // OPEN: Settings > Accessibility > Color correction
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACCESSIBILITY_TOGGLE_DALTONIZER = 5;
+
+ // OPEN: Settings > Accessibility > Accessibility shortcut
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACCESSIBILITY_TOGGLE_GLOBAL_GESTURE = 6;
+
+ // OPEN: Settings > Accessibility > Magnification gestures (Renamed in O)
+ // OPEN: Settings > Accessibility > Magnification > Magnify with triple-tap
+ // OPEN: Settings > Accessibility > Magnification > Magnify with button
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION = 7;
+
+ // OPEN: Settings > Accounts
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACCOUNT = 8;
+
+ // OPEN: Settings > Accounts > [Single Account Sync Settings]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACCOUNTS_ACCOUNT_SYNC = 9;
+
+ // OPEN: Settings > Accounts > Add an account
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ACCOUNTS_CHOOSE_ACCOUNT_ACTIVITY = 10;
+
+ // OPEN: Settings > Cellular network settings > APNs
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APN = 12;
+
+ // OPEN: Settings > More > Cellular network settings > APNs > [Edit APN]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APN_EDITOR = 13;
+
+ // OPEN: Settings > Apps > Configure apps > App links > [App]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_APP_LAUNCH = 17;
+
+ // OPEN: Settings > Internal storage > Apps storage > [App]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_APP_STORAGE = 19;
+
+ // OPEN: Settings > Apps > [App info]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_INSTALLED_APP_DETAILS = 20;
+
+ // OPEN: Settings > Memory > App usage > [App Memory usage]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_PROCESS_STATS_DETAIL = 21;
+
+ // OPEN: Settings > Memory > App usage
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_PROCESS_STATS_UI = 23;
+
+ // OPEN: Choose Bluetooth device (ex: when sharing)
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ BLUETOOTH_DEVICE_PICKER = 25;
+
+ // OPEN: Settings > Security > Choose screen lock
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ CHOOSE_LOCK_GENERIC = 27;
+
+ // OPEN: Settings > Security > Choose screen lock > Choose your password
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ CHOOSE_LOCK_PASSWORD = 28;
+
+ // OPEN: Settings > Security > Choose screen lock > Choose your pattern
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ CHOOSE_LOCK_PATTERN = 29;
+
+ // OPEN: Settings > Security > Choose screen lock > Confirm your password
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ CONFIRM_LOCK_PASSWORD = 30;
+
+ // OPEN: Settings > Security > Choose screen lock > Confirm your pattern
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ CONFIRM_LOCK_PATTERN = 31;
+
+ // OPEN: Settings > Security > Encrypt phone
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ CRYPT_KEEPER = 32;
+
+ // OPEN: Settings > Security > Encrypt phone > Confirm
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ CRYPT_KEEPER_CONFIRM = 33;
+
+ // OPEN: Settings (Root page)
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ DASHBOARD_SUMMARY = 35;
+
+ // OPEN: Settings > Data usage
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ DATA_USAGE_SUMMARY = 37;
+
+ // OPEN: Settings > Date & time
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ DATE_TIME = 38;
+
+ // OPEN: Settings > Developer options
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ DEVELOPMENT = 39;
+
+ // OPEN: Settings > About phone
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ DEVICEINFO = 40;
+
+ // OPEN: Settings > Internal storage
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ DEVICEINFO_STORAGE = 42;
+
+ // OPEN: Settings > Display
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ DISPLAY = 46;
+
+ // OPEN: Settings > Display > Daydream
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ DREAM = 47;
+
+ // OPEN: Settings > Security > Screen lock > Secure start-up
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ENCRYPTION = 48;
+
+ // OPEN: Settings > Security > Nexus Imprint
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT = 49;
+
+ // OPEN: Settings > Battery > History details
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FUELGAUGE_BATTERY_HISTORY_DETAIL = 51;
+
+ // OPEN: Settings > Battery > Battery saver
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FUELGAUGE_BATTERY_SAVER = 52;
+
+ // OPEN: Settings > Battery > [App Use details]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FUELGAUGE_POWER_USAGE_DETAIL = 53;
+
+ // OPEN: Settings > Security > SIM card lock settings
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ICC_LOCK = 56;
+
+ // OPEN: Settings > Language & input > Physical keyboard
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ INPUTMETHOD_KEYBOARD = 58;
+
+ // OPEN: Settings > Language & input > Spell checker
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ INPUTMETHOD_SPELL_CHECKERS = 59;
+
+ // OBSOLETE
+ INPUTMETHOD_SUBTYPE_ENABLER = 60;
+
+ // OPEN: Settings > Language & input > Personal dictionary
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ INPUTMETHOD_USER_DICTIONARY = 61;
+
+ // OPEN: Settings > Language & input > Add word
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ INPUTMETHOD_USER_DICTIONARY_ADD_WORD = 62;
+
+ // OPEN: Settings > Location
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ LOCATION = 63;
+
+ // OPEN: Settings > Apps
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ MANAGE_APPLICATIONS = 65;
+
+ // OPEN: Settings > Backup & reset > Factory data reset
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ MASTER_CLEAR = 66;
+
+ // OPEN: Settings > Backup & reset > Factory data reset > Confirm
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ MASTER_CLEAR_CONFIRM = 67;
+
+ // OPEN: Settings > More > Android Beam
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NFC_BEAM = 69;
+
+ // OPEN: Settings > Tap & pay
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NFC_PAYMENT = 70;
+
+ // OPEN: Settings > Sound & notification > App notifications > [App]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NOTIFICATION_APP_NOTIFICATION = 72;
+
+ // OBSOLETE
+ NOTIFICATION_REDACTION = 74;
+
+ // OPEN: Settings Widget > Notification log
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NOTIFICATION_STATION = 75;
+
+ // OPEN: Settings > Sound & notification > Do not disturb
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NOTIFICATION_ZEN_MODE = 76;
+
+
+ // OPEN: Print job notification > Print job settings
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ PRINT_JOB_SETTINGS = 78;
+
+ // OPEN: Settings > Printing > [Print Service]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ PRINT_SERVICE_SETTINGS = 79;
+
+ // OPEN: Settings > Printing
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ PRINT_SETTINGS = 80;
+
+ // OPEN: Settings > Backup & reset
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ PRIVACY = 81;
+
+ //OBSOLETE
+ PROXY_SELECTOR = 82;
+
+ // OPEN: Settings > Backup & reset > Network settings reset
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ RESET_NETWORK = 83;
+
+ // OPEN: Settings > Backup & reset > Network settings reset > Confirm
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ RESET_NETWORK_CONFIRM = 84;
+
+ // OPEN: Settings > Developer Options > Running Services
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ RUNNING_SERVICE_DETAILS = 85;
+
+ // OPEN: Settings > Security > Screen pinning
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ SCREEN_PINNING = 86;
+
+ // OPEN: Settings > Security
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ SECURITY = 87;
+
+ // OPEN: Settings > SIM cards
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ SIM = 88;
+
+ // OBSOLETE
+ TESTING = 89;
+
+ // OPEN: Settings > More > Tethering & portable hotspot
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ TETHER = 90;
+
+ // OPEN: Settings > Security > Trust agents
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ TRUST_AGENT = 91;
+
+ // OPEN: Settings > Security > Trusted credentials
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ TRUSTED_CREDENTIALS = 92;
+
+ // OPEN: Settings > Language & input > TTS output > [Engine] > Settings
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ TTS_ENGINE_SETTINGS = 93;
+
+ // OPEN: Settings > Language & input > Text-to-speech output
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ TTS_TEXT_TO_SPEECH = 94;
+
+ // OPEN: Settings > Security > Apps with usage access
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ USAGE_ACCESS = 95;
+
+ // OPEN: Settings > Users
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ USER = 96;
+
+ // OPEN: Settings > Users > [Restricted profile app & content access]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ USERS_APP_RESTRICTIONS = 97;
+
+ // OPEN: Settings > Users > [User settings]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ USER_DETAILS = 98;
+
+ // OPEN: Settings > More > VPN
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ VPN = 100;
+
+ // OPEN: Settings > Display > Choose wallpaper from
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ WALLPAPER_TYPE = 101;
+
+ // OPEN: Settings > Display > Cast
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ WFD_WIFI_DISPLAY = 102;
+
+ // OPEN: Settings > Wi-Fi
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ WIFI = 103;
+
+ // OPEN: Settings > More > Wi-Fi Calling
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ WIFI_CALLING = 105;
+
+ // OPEN: Settings > Wi-Fi > Saved networks
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ WIFI_SAVED_ACCESS_POINTS = 106;
+
+ // OPEN: Settings > Wi-Fi > Advanced Wi-Fi > Wi-Fi Direct
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ WIFI_P2P = 109;
+
+ // OPEN: Settings > Apps > Configure apps > App permissions
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_ADVANCED = 130;
+
+ // OPEN: Settings > Location > Scanning
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ LOCATION_SCANNING = 131;
+
+ // OPEN: Settings > Sound & notification > App notifications
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ MANAGE_APPLICATIONS_NOTIFICATIONS = 133;
+
+ // OPEN: Settings > Sound & notification > DND > Priority only allows
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NOTIFICATION_ZEN_MODE_PRIORITY = 141;
+
+ // OPEN: Settings > Sound & notification > DND > Automatic rules
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NOTIFICATION_ZEN_MODE_AUTOMATION = 142;
+
+ // OPEN: Settings > Sound & notification > DND > [Time based rule]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NOTIFICATION_ZEN_MODE_SCHEDULE_RULE = 144;
+
+ // OPEN: Settings > Apps > Configure apps > App links
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ MANAGE_DOMAIN_URLS = 143;
+
+ // OPEN: Settings > Sound & notification > DND > [Event rule]
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NOTIFICATION_ZEN_MODE_EVENT_RULE = 146;
+
+ // OPEN: Settings > Sound & notification > Notification access
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NOTIFICATION_ACCESS = 179;
+
+ // OPEN: Settings > Sound & notification > Do Not Disturb access
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ NOTIFICATION_ZEN_MODE_ACCESS = 180;
+
+ // OPEN: Settings > Internal storage > Apps storage
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_STORAGE_APPS = 182;
+
+ // OPEN: Settings > Security > Usage access
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_USAGE_ACCESS_DETAIL = 183;
+
+ // OPEN: Settings > Battery > Battery optimization
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_HIGH_POWER_APPS = 184;
+
+ // OPEN: Settings > Apps > Configure > Default apps > Assist & voice input
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ APPLICATIONS_MANAGE_ASSIST = 201;
+
+ // OPEN: Settings > Memory
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ PROCESS_STATS_SUMMARY = 202;
+
+ // OPEN: Settings > Apps > Configure Apps > Display over other apps
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ SYSTEM_ALERT_WINDOW_APPS = 221;
+
+ // OPEN: Settings > About phone > Legal information
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ ABOUT_LEGAL_SETTINGS = 225;
+
+
+ // OPEN: Settings > Developer options > Inactive apps
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FUELGAUGE_INACTIVE_APPS = 238;
+
+ // OPEN: Settings > Security > Nexus Imprint > Add Fingerprint
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT_ENROLLING = 240;
+ // OPEN: Fingerprint Enroll > Find Sensor
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT_FIND_SENSOR = 241;
+
+ // OPEN: Fingerprint Enroll > Fingerprint Enrolled!
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT_ENROLL_FINISH = 242;
+
+ // OPEN: Fingerprint Enroll introduction
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT_ENROLL_INTRO = 243;
+
+ // OPEN: Fingerprint Enroll > Let's Start!
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT_ENROLL_SIDECAR = 245;
+
+ // OPEN: Fingerprint Enroll SUW > Let's Start!
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT_ENROLLING_SETUP = 246;
+
+ // OPEN: Fingerprint Enroll SUW > Find Sensor
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT_FIND_SENSOR_SETUP = 247;
+
+ // OPEN: Fingerprint Enroll SUW > Fingerprint Enrolled!
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT_ENROLL_FINISH_SETUP = 248;
+
+ // OPEN: Fingerprint Enroll SUW introduction
+ // CATEGORY: SETTINGS
+ // OS: 6.0
+ FINGERPRINT_ENROLL_INTRO_SETUP = 249;
+
+ // OPEN: Settings > Developer Options > Background Check
+ // CATEGORY: SETTINGS
+ // OS: N
+ BACKGROUND_CHECK_SUMMARY = 258;
+
+ // OPEN: Settings > Notifications > [App] > Channel Notifications
+ // CATEGORY: SETTINGS
+ // OS: N
+ NOTIFICATION_TOPIC_NOTIFICATION = 265;
+
+ // OPEN: Settings > Security > User credentials
+ // CATEGORY: Settings
+ // OS: N
+ USER_CREDENTIALS = 285;
+
+ // Logs that the user has edited the enabled VR listeners.
+ // CATEGORY: SETTINGS
+ // OS: N
+ VR_MANAGE_LISTENERS = 334;
+
+ // Settings -> Accessibility -> Click after pointer stops moving
+ // CATEGORY: SETTINGS
+ // OS: N
+ ACCESSIBILITY_TOGGLE_AUTOCLICK = 335;
+
+ // Settings -> Sound
+ // CATEGORY: SETTINGS
+ // OS: N
+ SOUND = 336;
+
+ // Settings -> Notifications -> Gear
+ // CATEGORY: SETTINGS
+ // OS: N
+ CONFIGURE_NOTIFICATION = 337;
+
+ // Settings -> Wi-Fi -> Gear
+ // CATEGORY: SETTINGS
+ // OS: N
+ CONFIGURE_WIFI = 338;
+
+ // Settings -> Display -> Display size
+ // OS: N
+ DISPLAY_SCREEN_ZOOM = 339;
+
+ // Settings -> Display -> Font size
+ // CATEGORY: SETTINGS
+ // OS: N
+ ACCESSIBILITY_FONT_SIZE = 340;
+
+ // Settings -> Data usage -> Cellular/Wi-Fi data usage
+ // CATEGORY: SETTINGS
+ // OS: N
+ DATA_USAGE_LIST = 341;
+
+ // Settings -> Data usage -> Billing cycle or DATA_USAGE_LIST -> Gear
+ // CATEGORY: SETTINGS
+ // OS: N
+ BILLING_CYCLE = 342;
+
+ // DATA_USAGE_LIST -> Any item or App info -> Data usage
+ // CATEGORY: SETTINGS
+ // OS: N
+ APP_DATA_USAGE = 343;
+
+ // Settings -> Language & input -> Language
+ // CATEGORY: SETTINGS
+ // OS: N
+ USER_LOCALE_LIST = 344;
+
+ // Settings -> Language & input -> Virtual keyboard
+ // CATEGORY: SETTINGS
+ // OS: N
+ VIRTUAL_KEYBOARDS = 345;
+
+ // Settings -> Language & input -> Physical keyboard
+ // CATEGORY: SETTINGS
+ // OS: N
+ PHYSICAL_KEYBOARDS = 346;
+
+ // Settings -> Language & input -> Virtual keyboard -> Add a virtual keyboard
+ // CATEGORY: SETTINGS
+ // OS: N
+ ENABLE_VIRTUAL_KEYBOARDS = 347;
+
+ // Settings -> Data usage -> Data Saver
+ // CATEGORY: SETTINGS
+ // OS: N
+ DATA_SAVER_SUMMARY = 348;
+
+ // Settings -> Data usage -> Data Saver -> Unrestricted data access
+ // CATEGORY: SETTINGS
+ // OS: N
+ DATA_USAGE_UNRESTRICTED_ACCESS = 349;
+
+ // Settings -> Apps -> Gear -> Special access
+ SPECIAL_ACCESS = 351;
+
+ // OPEN: SUW Welcome Screen -> Vision Settings
+ // CATEGORY: SETTINGS
+ // OS: N
+ SUW_ACCESSIBILITY = 367;
+
+ // OPEN: SUW Welcome Screen -> Vision Settings -> Magnification gestures (Renamed in O)
+ // OPEN: SUW Welcome Screen -> Vision Settings -> Magnification -> Magnify with triple-tap
+ // OPEN: SUW Welcome Screen -> Vision Settings -> Magnification -> Magnify with button
+ // ACTION: New magnification gesture configuration is chosen
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: N
+ SUW_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION = 368;
+
+ // OPEN: SUW Welcome Screen -> Vision Settings -> Font size
+ // ACTION: New font size is chosen
+ // SUBTYPE: 0 is small, 1 is default, 2 is large, 3 is largest
+ // CATEGORY: SETTINGS
+ // OS: N
+ SUW_ACCESSIBILITY_FONT_SIZE = 369;
+
+ // OPEN: SUW Welcome Screen -> Vision Settings -> Display size
+ // ACTION: New display size is chosen
+ // SUBTYPE: 0 is small, 1 is default, 2 is large, 3 is larger, 4 is largest
+ // CATEGORY: SETTINGS
+ // OS: N
+ SUW_ACCESSIBILITY_DISPLAY_SIZE = 370;
+
+ // OPEN: SUW Welcome Screen -> Vision Settings -> TalkBack
+ // ACTION: New screen reader configuration is chosen
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: N
+ SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER = 371;
+
+ // Airplane mode on
+ SETTINGS_CONDITION_AIRPLANE_MODE = 377;
+ // AKA Data saver on
+ SETTINGS_CONDITION_BACKGROUND_DATA = 378;
+ // Battery saver on
+ SETTINGS_CONDITION_BATTERY_SAVER = 379;
+ // Cellular data off
+ SETTINGS_CONDITION_CELLULAR_DATA = 380;
+ // Do not disturb on
+ SETTINGS_CONDITION_DND = 381;
+ // Hotspot on
+ SETTINGS_CONDITION_HOTSPOT = 382;
+ // Work profile off
+ SETTINGS_CONDITION_WORK_MODE = 383;
+
+ // Settings > Apps > Gear > Special Access > Premium SMS access
+ PREMIUM_SMS_ACCESS = 388;
+
+ // OPEN: Settings > Accounts > Work profile settings
+ // CATEGORY: SETTINGS
+ ACCOUNTS_WORK_PROFILE_SETTINGS = 401;
+
+ // Settings -> Dev options -> Convert to file encryption
+ CONVERT_FBE = 402;
+
+ // Settings -> Dev options -> Convert to file encryption -> WIPE AND CONVERT...
+ CONVERT_FBE_CONFIRM = 403;
+
+ // Settings -> Dev options -> Running services
+ RUNNING_SERVICES = 404;
+
+ // The dialog shown by 3P intent to change current webview implementation.
+ WEBVIEW_IMPLEMENTATION = 405;
+
+ // OPEN: Settings > Internal storage > Storage manager
+ // CATEGORY: SETTINGS
+ STORAGE_MANAGER_SETTINGS = 458;
+
+ // OPEN: Settings -> Gestures
+ // CATEGORY: SETTINGS
+ SETTINGS_GESTURES = 459;
+
+ // OPEN: Settings > Display > Night Light
+ // CATEGORY: SETTINGS
+ NIGHT_DISPLAY_SETTINGS = 488;
+
+ // Night Light on
+ SETTINGS_CONDITION_NIGHT_DISPLAY = 492;
+
+ // OPEN: Settings > Language & input > Personal dictionary (single locale)
+ USER_DICTIONARY_SETTINGS = 514;
+
+ // OPEN: Settings > Date & time > Select time zone
+ ZONE_PICKER = 515;
+
+ // OPEN: Settings > Security > Device administrators
+ DEVICE_ADMIN_SETTINGS = 516;
+
+ // OPEN: Settings > Security > Factory Reset Protection dialog
+ DIALOG_FRP = 528;
+
+ // OPEN: Settings > Custom list preference with confirmation message
+ DIALOG_CUSTOM_LIST_CONFIRMATION = 529;
+
+ // OPEN: Settings > APN Editor > Error dialog
+ DIALOG_APN_EDITOR_ERROR = 530;
+
+ // OPEN: Settings > Users > Edit owner info dialog
+ DIALOG_OWNER_INFO_SETTINGS = 531;
+
+ // OPEN: Settings > Security > Use one lock dialog
+ DIALOG_UNIFICATION_CONFIRMATION = 532;
+
+ // OPEN: Settings > Security > User Credential
+ DIALOG_USER_CREDENTIAL = 533;
+
+ // OPEN: Settings > Accounts > Remove account
+ DIALOG_REMOVE_USER = 534;
+
+ // OPEN: Settings > Accounts > Confirm auto sync dialog
+ DIALOG_CONFIRM_AUTO_SYNC_CHANGE = 535;
+
+ // OPEN: Settings > Apps > Dialog for running service details
+ DIALOG_RUNNIGN_SERVICE = 536;
+
+ // OPEN: Settings > Bluetooth > Rename this device
+ DIALOG_BLUETOOTH_RENAME = 538;
+
+ // OPEN: Settings > Battery optimization > details for app
+ DIALOG_HIGH_POWER_DETAILS = 540;
+
+ // OPEN: Settings > Keyboard > Show keyboard layout dialog
+ DIALOG_KEYBOARD_LAYOUT = 541;
+
+ // OPEN: Settings > WIFI Scan permission dialog
+ DIALOG_WIFI_SCAN_MODE = 543;
+
+ // OPEN: Settings > Wireless > VPN > Config dialog
+ DIALOG_LEGACY_VPN_CONFIG = 545;
+
+ // OPEN: Settings > Wireless > VPN > Config dialog for app
+ DIALOG_VPN_APP_CONFIG = 546;
+
+ // OPEN: Settings > Wireless > VPN > Cannot connect dialog
+ DIALOG_VPN_CANNOT_CONNECT = 547;
+
+ // OPEN: Settings > Wireless > VPN > Replace existing VPN dialog
+ DIALOG_VPN_REPLACE_EXISTING = 548;
+
+ // OPEN: Settings > Billing cycle > Edit billing cycle dates dialog
+ DIALOG_BILLING_CYCLE = 549;
+
+ // OPEN: Settings > Billing cycle > Edit data limit/warning dialog
+ DIALOG_BILLING_BYTE_LIMIT = 550;
+
+ // OPEN: Settings > Billing cycle > turn on data limit dialog
+ DIALOG_BILLING_CONFIRM_LIMIT = 551;
+
+ // OPEN: Settings > Service > Turn off notification access dialog
+ DIALOG_DISABLE_NOTIFICATION_ACCESS = 552;
+
+ // OPEN: Settings > Sound > Use personal sound for work profile dialog
+ DIALOG_UNIFY_SOUND_SETTINGS = 553;
+
+ // OPEN: Settings > Zen mode > Dialog warning about the zen access privileges being granted.
+ DIALOG_ZEN_ACCESS_GRANT = 554;
+
+ // OPEN: Settings > Zen mode > Dialog warning about the zen access privileges being revoked.
+ DIALOG_ZEN_ACCESS_REVOKE = 555;
+
+ // OPEN: Settings > Zen mode > Dialog that picks time for zen mode.
+ DIALOG_ZEN_TIMEPICKER = 556;
+
+ // OPEN: Settings > Apps > Dialog that informs user to allow service access for app.
+ DIALOG_SERVICE_ACCESS_WARNING = 557;
+
+ // OPEN: Settings > Apps > Dialog for app actions (such as force stop/clear data)
+ DIALOG_APP_INFO_ACTION = 558;
+
+ // OPEN: Settings > Storage > Dialog for forgetting a storage device
+ DIALOG_VOLUME_FORGET = 559;
+
+ // OPEN: Settings > Storage > Dialog for initializing a volume
+ DIALOG_VOLUME_INIT = 561;
+
+ // OPEN: Settings > Storage > Dialog for unmounting a volume
+ DIALOG_VOLUME_UNMOUNT = 562;
+
+ // OPEN: Settings > Storage > Dialog for renaming a volume
+ DIALOG_VOLUME_RENAME = 563;
+
+ // OPEN: Settings > Storage > Dialog for clear cache
+ DIALOG_STORAGE_CLEAR_CACHE = 564;
+
+ // OPEN: Settings > Storage > Dialog for system info
+ DIALOG_STORAGE_SYSTEM_INFO = 565;
+
+ // OPEN: Settings > Storage > Dialog for other info
+ DIALOG_STORAGE_OTHER_INFO = 566;
+
+ // OPEN: Settings > Storage > Dialog for user info
+ DIALOG_STORAGE_USER_INFO = 567;
+ // OPEN: Settings > Add fingerprint > Dialog when user touches fingerprint icon.
+ DIALOG_FINGERPRINT_ICON_TOUCH = 568;
+
+ // OPEN: Settings > Add fingerprint > Error dialog
+ DIALOG_FINGERPINT_ERROR = 569;
+
+ // OPEN: Settings > Fingerprint > Rename or delete dialog
+ DIALOG_FINGERPINT_EDIT = 570;
+
+ // OPEN: Settings > Fingerprint > Dialog for deleting last fingerprint
+ DIALOG_FINGERPINT_DELETE_LAST = 571;
+
+ // OPEN: SUW > Fingerprint > Dialog to confirm skip fingerprint setup entirely.
+ DIALOG_FINGERPRINT_SKIP_SETUP = 573;
+
+ // OPEN: Settings > Proxy Selector error dialog
+ DIALOG_PROXY_SELECTOR_ERROR = 574;
+
+ // OPEN: Settings > Wifi > P2P Settings > Disconnect dialog
+ DIALOG_WIFI_P2P_DISCONNECT = 575;
+
+ // OPEN: Settings > Wifi > P2P Settings > Cancel connection dialog
+ DIALOG_WIFI_P2P_CANCEL_CONNECT = 576;
+
+ // OPEN: Settings > Wifi > P2P Settings > Rename dialog
+ DIALOG_WIFI_P2P_RENAME = 577;
+
+ // OPEN: Settings > Wifi > P2P Settings > Forget group dialog
+ DIALOG_WIFI_P2P_DELETE_GROUP = 578;
+
+ // OPEN: Settings > APN > Restore default dialog
+ DIALOG_APN_RESTORE_DEFAULT = 579;
+
+ // OPEN: Settings > Encryption interstitial accessibility warning dialog
+ DIALOG_ENCRYPTION_INTERSTITIAL_ACCESSIBILITY = 581;
+
+ // OPEN: Settings > Acessibility > Enable accessiblity service dialog
+ DIALOG_ACCESSIBILITY_SERVICE_ENABLE = 583;
+
+ // OPEN: Settings > Acessibility > Disable accessiblity service dialog
+ DIALOG_ACCESSIBILITY_SERVICE_DISABLE = 584;
+
+ // OPEN: Settings > Account > Remove account dialog
+ DIALOG_ACCOUNT_SYNC_REMOVE = 585;
+
+ // OPEN: Settings > Account > Remove account failed dialog
+ DIALOG_ACCOUNT_SYNC_FAILED_REMOVAL = 586;
+
+ // OPEN: Settings > Account > Cannot do onetime sync dialog
+ DIALOG_ACCOUNT_SYNC_CANNOT_ONETIME_SYNC = 587;
+
+ // OPEN: Settings > Display > Night light > Set start time dialog
+ DIALOG_NIGHT_DISPLAY_SET_START_TIME = 588;
+
+ // OPEN: Settings > Display > Night light > Set end time dialog
+ DIALOG_NIGHT_DISPLAY_SET_END_TIME = 589;
+
+
+
+ // OPEN: Settings > User > Edit info dialog
+ DIALOG_USER_EDIT = 590;
+
+ // OPEN: Settings > User > Confirm remove dialog
+ DIALOG_USER_REMOVE = 591;
+
+ // OPEN: Settings > User > Enable calling dialog
+ DIALOG_USER_ENABLE_CALLING = 592;
+
+ // OPEN: Settings > User > Enable calling and sms dialog
+ DIALOG_USER_ENABLE_CALLING_AND_SMS = 593;
+
+ // OPEN: Settings > User > Cannot manage device message dialog
+ DIALOG_USER_CANNOT_MANAGE = 594;
+
+ // OPEN: Settings > User > Add user dialog
+ DIALOG_USER_ADD = 595;
+
+ // OPEN: Settings > User > Setup user dialog
+ DIALOG_USER_SETUP = 596;
+
+ // OPEN: Settings > User > Setup profile dialog
+ DIALOG_USER_SETUP_PROFILE = 597;
+
+ // OPEN: Settings > User > Choose user type dialog
+ DIALOG_USER_CHOOSE_TYPE = 598;
+
+ // OPEN: Settings > User > Need lockscreen dialog
+ DIALOG_USER_NEED_LOCKSCREEN = 599;
+
+ // OPEN: Settings > User > Confirm exit guest mode dialog
+ DIALOG_USER_CONFIRM_EXIT_GUEST = 600;
+
+ // OPEN: Settings > User > Edit user profile dialog
+ DIALOG_USER_EDIT_PROFILE = 601;
+
+
+ // OPEN: Settings > Wifi > Saved AP > Edit dialog
+ DIALOG_WIFI_SAVED_AP_EDIT = 602;
+
+ // OPEN: Settings > Wifi > Edit AP dialog
+ DIALOG_WIFI_AP_EDIT = 603;
+
+ // OPEN: Settings > Wifi > Write config to NFC dialog
+ DIALOG_WIFI_WRITE_NFC = 606;
+
+ // OPEN: Settings > Date > Date picker dialog
+ DIALOG_DATE_PICKER = 607;
+
+ // OPEN: Settings > Date > Time picker dialog
+ DIALOG_TIME_PICKER = 608;
+
+ // OPEN: Settings > Wireless > Manage wireless plan dialog
+ DIALOG_MANAGE_MOBILE_PLAN = 609;
+
+ // OPEN Settings > Bluetooth > Attempt to connect to device that shows dialog
+ BLUETOOTH_DIALOG_FRAGMENT = 613;
+
+ // OPEN: Settings > Security
+ // CATEGORY: SETTINGS
+ // OS: O
+ ENTERPRISE_PRIVACY_SETTINGS = 628;
+
+ // OPEN: Settings > System
+ SETTINGS_SYSTEM_CATEGORY = 744;
+
+ // OPEN: Settings > Storage
+ SETTINGS_STORAGE_CATEGORY = 745;
+
+ // OPEN: Settings > Network & Internet
+ SETTINGS_NETWORK_CATEGORY = 746;
+
+ // OPEN: Settings > Connected Device
+ SETTINGS_CONNECTED_DEVICE_CATEGORY = 747;
+
+ // OPEN: Settings > App & Notification
+ SETTINGS_APP_NOTIF_CATEGORY = 748;
+
+ // OPEN: Settings > System > Language & Region
+ SETTINGS_LANGUAGE_CATEGORY = 750;
+
+ // OPEN: Settings > System > Input & Gesture > Swipe to notification gesture
+ SETTINGS_GESTURE_SWIPE_TO_NOTIFICATION = 751;
+
+ // OPEN: Settings > System > Input & Gesture > Double tap power button gesture
+ SETTINGS_GESTURE_DOUBLE_TAP_POWER = 752;
+
+ // OPEN: Settings > System > Input & Gesture > Pick up gesture
+ SETTINGS_GESTURE_PICKUP = 753;
+
+ // OPEN: Settings > System > Input & Gesture > Double tap screen gesture
+ SETTINGS_GESTURE_DOUBLE_TAP_SCREEN = 754;
+
+ // OPEN: Settings > System > Input & Gesture > Double twist gesture
+ SETTINGS_GESTURE_DOUBLE_TWIST = 755;
+
+ // OPEN: Settings > Apps > Default Apps > Default browser
+ DEFAULT_BROWSER_PICKER = 785;
+ // OPEN: Settings > Apps > Default Apps > Default emergency app
+ DEFAULT_EMERGENCY_APP_PICKER = 786;
+
+ // OPEN: Settings > Apps > Default Apps > Default home
+ DEFAULT_HOME_PICKER = 787;
+
+ // OPEN: Settings > Apps > Default Apps > Default phone
+ DEFAULT_PHONE_PICKER = 788;
+
+ // OPEN: Settings > Apps > Default Apps > Default sms
+ DEFAULT_SMS_PICKER = 789;
+
+ // OPEN: Settings > Apps > Default Apps > Warning dialog to confirm selection
+ DEFAULT_APP_PICKER_CONFIRMATION_DIALOG = 791;
+
+ // OPEN: Settings > Apps > Default Apps > Default autofill app
+ DEFAULT_AUTOFILL_PICKER = 792;
+
+ // OPEN: Settings > Apps > Gear > Special Access > Install other apps
+ // CATEGORY: SETTINGS
+ // OS: 8.0
+ MANAGE_EXTERNAL_SOURCES = 808;
+
+ // Logs that the user has edited the picture-in-picture settings.
+ // CATEGORY: SETTINGS
+ SETTINGS_MANAGE_PICTURE_IN_PICTURE = 812;
+
+ // OPEN: SUW Welcome Screen -> Vision Settings -> Select to Speak
+ // ACTION: Select to Speak configuration is chosen
+ // SUBTYPE: 0 is off, 1 is on
+ // CATEGORY: SETTINGS
+ // OS: N
+ SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK = 817;
+
+ // OPEN: Settings > System > Backup
+ // CATEGORY: SETTINGS
+ // OS: O
+ BACKUP_SETTINGS = 818;
+
+ // OPEN: Settings > Storage > Games
+ // CATEGORY: SETTINGS
+ // OS: O
+ APPLICATIONS_STORAGE_GAMES = 838;
+
+ // OPEN: Settings > Storage > Audio and Music
+ // CATEGORY: SETTINGS
+ // OS: O
+ APPLICATIONS_STORAGE_MUSIC = 839;
+
+ // ACTION: Settings > Storage > Free Up Space to launch Deletion Helper
+ // CATEGORY: SETTINGS
+ // OS: O
+ STORAGE_FREE_UP_SPACE_NOW = 840;
+
+ // ACTION: Settings > Storage > Files to open the File Manager
+ // CATEGORY: SETTINGS
+ // OS: O
+ STORAGE_FILES = 841;
+
+ // OPEN: Settings > Apps > Default Apps > Assist > Default assist
+ DEFAULT_ASSIST_PICKER = 843;
+
+ // OPEN: Settings > Apps > Default Apps > Assist > Default voice input
+ DEFAULT_VOICE_INPUT_PICKER = 844;
+
+ // OPEN: Settings > Storage > [Profile]
+ SETTINGS_STORAGE_PROFILE = 845;
+
+ // OPEN: Settings > Security & screen lock -> Encryption & crendentials
+ // CATEGORY: SETTINGS
+ // OS: O
+ ENCRYPTION_AND_CREDENTIAL = 846;
+
+ // OPEN: Settings > Wi-Fi > Network Details (click on Access Point)
+ // CATEGORY: SETTINGS
+ // OS: O
+ WIFI_NETWORK_DETAILS = 849;
+
+ // OPEN: Settings > Wi-Fi > Wifi Preferences -> Advanced -> Network Scorer
+ // CATEGORY: SETTINGS
+ // OS: O
+ SETTINGS_NETWORK_SCORER = 861;
+
+ // OPEN: Settings > About device > Model > Hardware info dialog
+ DIALOG_SETTINGS_HARDWARE_INFO = 862;
+
+ // OPEN: Settings > Security & screen lock -> Lock screen preferences
+ // CATEGORY: SETTINGS
+ SETTINGS_LOCK_SCREEN_PREFERENCES = 882;
+
+
+ // OPEN: Settings -> Display -> When in VR Mode
+ VR_DISPLAY_PREFERENCE = 921;
+
+ // OPEN: Settings > Accessibility > Magnification
+ // CATEGORY: SETTINGS
+ // OS: O
+ ACCESSIBILITY_SCREEN_MAGNIFICATION_SETTINGS = 922;
+
+ // OPEN: Settings -> System -> Reset options
+ RESET_DASHBOARD = 924;
+
+ // OPEN: Settings > Security > Nexus Imprint > [Fingerprint] > Delete
+ // CATEGORY: SETTINGS
+ // OS: O
+ FINGERPRINT_REMOVE_SIDECAR = 934;
+
+ // OPEN: Settings > Storage > Movies & TV
+ // CATEGORY: SETTINGS
+ // OS: O
+ APPLICATIONS_STORAGE_MOVIES = 935;
+
+ // OPEN: Settings > Security > Managed Device Info > Apps installed
+ // CATEGORY: SETTINGS
+ // OS: O
+ ENTERPRISE_PRIVACY_INSTALLED_APPS = 938;
+
+ // OPEN: Settings > Security > Managed Device Info > nnn permissions
+ // CATEGORY: SETTINGS
+ // OS: O
+ ENTERPRISE_PRIVACY_PERMISSIONS = 939;
+
+
+ // OPEN: Settings > Security > Managed Device Info > Default apps
+ // CATEGORY: SETTINGS
+ // OS: O
+ ENTERPRISE_PRIVACY_DEFAULT_APPS = 940;
+
+ // OPEN: Choose screen lock dialog in Settings
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ SETTINGS_CHOOSE_LOCK_DIALOG = 990;
+
+ // OPEN: Settings > System > Languages & input > Assist gesture
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ SETTINGS_ASSIST_GESTURE = 996;
+
// OPEN: Settings > Connected Devices > Bluetooth > (click on details link for a paired device)
BLUETOOTH_DEVICE_DETAILS = 1009;
+ // OPEN: Settings > credential pages - prompt for key guard configuration confirmation
+ CONFIGURE_KEYGUARD_DIALOG = 1010;
+
+ // OPEN: Settings > Network > Tether > Wi-Fi hotspot
+ WIFI_TETHER_SETTINGS = 1014;
+
+ // OPEN: Settings->Connected Devices->Bluetooth->(click on details link for a paired device)
+ // -> Edit name button.
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ DIALOG_BLUETOOTH_PAIRED_DEVICE_RENAME = 1015;
+
// OPEN: Settings > Connected devices > Bluetooth > Pair new device
+ // CATEGORY: SETTINGS
+ // OS: O DR
BLUETOOTH_PAIRING = 1018;
+ // OPEN: Settings->Connected Devices->Bluetooth->(click on details link for a paired device)
+ // -> Forget button.
+ // CATEGORY: SETTINGS
+ // OS: O DR
+ DIALOG_BLUETOOTH_PAIRED_DEVICE_FORGET = 1031;
+
+ // OPEN: Settings > Storage > Photos & Videos
+ // CATEGORY: SETTINGS
+ // OS: O MR
+ APPLICATIONS_STORAGE_PHOTOS = 1092;
+
+ // OPEN: Settings > Display > Colors
+ // CATEGORY: SETTINGS
+ // OS: O MR
+ COLOR_MODE_SETTINGS = 1143;
+
+ // OPEN: Settings > Developer Options > Experiment dashboard
+ // CATEGORY: SETTINGS
+ SETTINGS_FEATURE_FLAGS_DASHBOARD = 1217;
+
+ // OPEN: Settings > Notifications > [App] > Topic Notifications
+ // CATEGORY: SETTINGS
+ // OS: P
+ NOTIFICATION_CHANNEL_GROUP = 1218;
+
+ // OPEN: Settings > Developer options > Enable > Info dialog
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_ENABLE_DEVELOPMENT_OPTIONS = 1219;
+
+ // OPEN: Settings > Developer options > OEM unlocking > Info dialog
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_ENABLE_OEM_UNLOCKING = 1220;
+
+ // OPEN: Settings > Developer options > USB debugging > Info dialog
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_ENABLE_ADB = 1222;
+
+ // OPEN: Settings > Security > Nexus Imprint > [Fingerprint]
+ // CATEGORY: SETTINGS
+ // OS: P
+ FINGERPRINT_AUTHENTICATE_SIDECAR = 1221;
+
+ // OPEN: Settings > Developer options > Revoke USB debugging authorizations > Info dialog
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_CLEAR_ADB_KEYS = 1223;
+
+ // Open: Settings > Developer options > Quick setting tile config
+ // CATEGORY: SETTINGS
+ // OS: P
+ DEVELOPMENT_QS_TILE_CONFIG = 1224;
+
+ // OPEN: Settings > Developer options > Store logger data persistently on device > Info dialog
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_LOG_PERSIST = 1225;
+
+ // OPEN: Settings > Network & Internet > Mobile network > Wi-Fi calling
+ // CATEGORY: SETTINGS
+ // OS: P
+ WIFI_CALLING_FOR_SUB = 1230;
+
+ // Open: Settings > Dev options > Oem unlock > lock it > warning dialog.
+ // OS: P
+ DIALOG_OEM_LOCK_INFO = 1238;
+
+ // Open: Settings > System > About phone > IMEI
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_IMEI_INFO = 1240;
+
+ // OPEN: Settings > System > About Phone > Sim status
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_SIM_STATUS = 1246;
+
+ // OPEN: Settings > System > About Phone > Android Version
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_FIRMWARE_VERSION = 1247;
+
+ // OPEN: Settings > Battery(version 2)
+ // CATEGORY: SETTINGS
+ // OS: P
+ FUELGAUGE_POWER_USAGE_SUMMARY_V2 = 1263;
+
+ // OPEN: Settings > Connected devices > Connection preferences
+ // CATEGORY: SETTINGS
+ // OS: P
+ CONNECTION_DEVICE_ADVANCED = 1264;
+
+ // OPEN: Settings > Security > Screen lock gear icon
+ // CATEGORY: SETTINGS
+ // OS: P
+ SCREEN_LOCK_SETTINGS = 1265;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Delete rule (trash can icon)
+ // CATEGORY: SETTINGS
+ // OS: P
+ NOTIFICATION_ZEN_MODE_DELETE_RULE_DIALOG = 1266;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Add rule > Event/Time
+ // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Select rule ("Event") > Rule name
+ // CATEGORY: SETTINGS
+ // OS: P
+ NOTIFICATION_ZEN_MODE_RULE_NAME_DIALOG = 1269;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Add rule
+ // CATEGORY: SETTINGS
+ // OS: P
+ NOTIFICATION_ZEN_MODE_RULE_SELECTION_DIALOG = 1270;
+
+ // OPEN: Settings > Battery > Smart Battery
+ // CATEGORY: SETTINGS
+ // OS: P
+ FUELGAUGE_SMART_BATTERY = 1281;
+
+ // OPEN: Settings > Battery > Smart Battery > Restricted apps
+ // CATEGORY: SETTINGS
+ // OS: P
+ FUELGAUGE_RESTRICTED_APP_DETAILS = 1285;
+
+ // OPEN: Settings > Sound & notification > Do Not Disturb > Turn on now
+ // CATEGORY: SETTINGS
+ // OS: P
+ NOTIFICATION_ZEN_MODE_ENABLE_DIALOG = 1286;
+
+ // OPEN: Settings->Connected Devices->USB->(click on details link)
+ // CATEGORY: SETTINGS
+ // OS: P
+ USB_DEVICE_DETAILS = 1291;
+
+ // OPEN: Settings > Accessibility > Vibration
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACCESSIBILITY_VIBRATION = 1292;
+
+ // OPEN: Settings > Accessibility > Vibration > Notification vibration
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACCESSIBILITY_VIBRATION_NOTIFICATION = 1293;
+
+ // OPEN: Settings > Accessibility > Vibration > Touch vibration
+ // CATEGORY: SETTINGS
+ // OS: P
+ ACCESSIBILITY_VIBRATION_TOUCH = 1294;
+
+ // OPEN: Settings->Developer Options->Default USB
+ // CATEGORY: SETTINGS
+ // OS: P
+ USB_DEFAULT = 1312;
+
+ // OPEN: Settings > Battery > Battery tip > Battery tip Dialog
+ // CATEGORY: SETTINGS
+ // OS: P
+ FUELGAUGE_BATTERY_TIP_DIALOG = 1323;
+
+ // OPEN: DND Settings > What to block
+ // OS: P
+ ZEN_WHAT_TO_BLOCK = 1339;
+
+ // OPEN: Settings > Sounds > Do Not Disturb > Duration
+ // CATEGORY: SETTINGS
+ // OS: P
+ NOTIFICATION_ZEN_MODE_DURATION_DIALOG = 1341;
+
+ // OPEN: Settings > Date & time > Select time zone -> Region
+ // CATEGORY: SETTINGS
+ // OS: P
+ SETTINGS_ZONE_PICKER_REGION = 1355;
+
+ // OPEN: Settings > Date & time > Select time zone -> Time Zone
+ // CATEGORY: SETTINGS
+ // OS: P
+ SETTINGS_ZONE_PICKER_TIME_ZONE = 1356;
+ // OPEN: Settings > Date & time > Select time zone -> Select UTC Offset
+ // CATEGORY: SETTINGS
+ // OS: P
+ SETTINGS_ZONE_PICKER_FIXED_OFFSET = 1357;
+
+ // OPEN: Settings > Gestures > Prevent Ringing
+ // OS: P
+ SETTINGS_PREVENT_RINGING = 1360;
+
+ // Settings > Condition > Device muted
+ // CATEGORY: SETTINGS
+ // OS: P
+ SETTINGS_CONDITION_DEVICE_MUTED = 1368;
+
+ // Settings > Condition > Device vibrate
+ // CATEGORY: SETTINGS
+ // OS: P
+ SETTINGS_CONDITION_DEVICE_VIBRATE = 1369;
+
+ // OPEN: Settings > Connected devices > previously connected devices
+ // CATEGORY: SETTINGS
+ // OS: P
+ PREVIOUSLY_CONNECTED_DEVICES = 1370;
+
+ // OPEN: Settings > Network & Internet > Wi-Fi > Wi-Fi Preferences > Turn on Wi-Fi automatically
+ // note: Wifi Scanning must be off for this dialog to show
+ // CATEGORY: SETTINGS
+ // OS: P
+ WIFI_SCANNING_NEEDED_DIALOG = 1373;
+
+ // OPEN: Settings > System > Gestures > Swipe up gesture
+ // CATEGORY: SETTINGS
+ // OS: P
+ SETTINGS_GESTURE_SWIPE_UP = 1374;
+
+ // OPEN: Settings > Storage > Dialog to format a storage volume
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_VOLUME_FORMAT = 1375;
+
+ // OPEN: DND onboarding activity
+ // CATEGORY: SETTINGS
+ // OS: P
+ SETTINGS_ZEN_ONBOARDING = 1380;
+
+ // OPEN: Settings > Display > Auto brightness
+ // CATEGORY: SETTINGS
+ // OS: P
+ SETTINGS_AUTO_BRIGHTNESS = 1381;
+
+ // OPEN: Settings > Connected Devices > Bluetooth
+ // CATEGORY: SETTINGS
+ // OS: P
+ BLUETOOTH_FRAGMENT = 1390;
+
+ // Screen: DND Settings > Notifications
+ // OS: P
+ SETTINGS_ZEN_NOTIFICATIONS = 1400;
+
+ // An event category for slices.
+ // OPEN: Slice became visible.
+ // CLOSE: Slice became invisible.
+ // ACTION: Slice was tapped.
+ SLICE = 1401;
+
+ // OPEN: Settings -> Developer Options -> Disable Bluetooth A2DP hardware
+ // offload
+ // CATEGORY: SETTINGS
+ // OS: P
+ DIALOG_BLUETOOTH_DISABLE_A2DP_HW_OFFLOAD = 1441;
+
// OPEN: Settings homepage
SETTINGS_HOMEPAGE = 1502;
+ // OPEN: Settings > Create shortcut(widget)
+ // CATEGORY: SETTINGS
+ // OS: Q
+ SETTINGS_CREATE_SHORTCUT = 1503;
+
+ // OPEN: Face Enroll introduction
+ // CATEGORY: SETTINGS
+ // OS: Q
+ FACE_ENROLL_INTRO = 1506;
+
+ // OPEN: Face Enroll introduction
+ // CATEGORY: SETTINGS
+ // OS: Q
+ FACE_ENROLL_ENROLLING = 1507;
+
+ // OPEN: Face Enroll introduction
+ // CATEGORY: SETTINGS
+ // OS: Q
+ FACE_ENROLL_FINISHED = 1508;
+
+ // OPEN: Face Enroll sidecar
+ // CATEGORY: SETTINGS
+ // OS: Q
+ FACE_ENROLL_SIDECAR = 1509;
+
+ // OPEN: Settings > Add face > Error dialog
+ // OS: Q
+ DIALOG_FACE_ERROR = 1510;
+
+ // OPEN: Settings > Security > Face
+ // CATEGORY: SETTINGS
+ // OS: Q
+ FACE = 1511;
+
+ // OPEN: Settings > Acessibility > HearingAid pairing instructions dialog
+ // CATEGORY: SETTINGS
+ // OS: Q
+ DIALOG_ACCESSIBILITY_HEARINGAID = 1512;
+
+ // OPEN: Settings > Add face
+ // OS: Q
+ FACE_ENROLL_PREVIEW = 1554;
+
+ // OPEN: Settings > Network & Internet > Wi-Fi > Add network
+ // CATEGORY: SETTINGS
+ // OS: Q
+ SETTINGS_WIFI_ADD_NETWORK = 1556;
+
+ // OPEN: Settings > System > Input & Gesture > Reach up gesture
+ // OS: Q
+ SETTINGS_GESTURE_WAKE_LOCK_SCREEN = 1557;
+
// OPEN: Settings > System > Input & Gesture > Wake screen
SETTINGS_GESTURE_WAKE_SCREEN = 1570;
@@ -80,6 +2079,19 @@
// OPEN: Settings > Privacy
TOP_LEVEL_PRIVACY = 1587;
+ // OPEN: Settings > Sound & notification > Do Not Disturb > See all exceptions >
+ // Allow apps to override
+ // CATEGORY: SETTINGS
+ // OS: Q
+ NOTIFICATION_ZEN_MODE_OVERRIDING_APPS = 1588;
+
+
+ // OPEN: Settings > Sound & notification > Do Not Disturb > See all exceptions >
+ // Allow apps to override > Choose app
+ // CATEGORY: SETTINGS
+ // OS: Q
+ NOTIFICATION_ZEN_MODE_OVERRIDING_APP = 1589;
+
// OPEN: Settings > Developer options > Disable > Info dialog
DIALOG_DISABLE_DEVELOPMENT_OPTIONS = 1591;
@@ -91,4 +2103,80 @@
// OPEN: Settings > Apps & Notifications -> Special app access -> Financial Apps Sms Access
SETTINGS_FINANCIAL_APPS_SMS_ACCESS = 1597;
+
+
+
+ // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
+ // > Do Not Disturb behavior
+ // CATEGORY: SETTINGS
+ // OS: Q
+ ZEN_CUSTOM_RULE_SETTINGS = 1604;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
+ // > Do Not Disturb behavior > Custom
+ // CATEGORY: SETTINGS
+ // OS: Q
+ ZEN_CUSTOM_RULE_SOUND_SETTINGS = 1605;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
+ // > Do Not Disturb behavior > Use default Do Not Disturb behavior
+ // CATEGORY: SETTINGS
+ // OS: Q
+ ZEN_CUSTOM_RULE_DEFAULT_SETTINGS = 1606;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
+ // > Do Not Disturb behavior > Use default Do Not Disturb behavior
+ // > Notification restriction
+ // CATEGORY: SETTINGS
+ // OS: Q
+ ZEN_CUSTOM_RULE_NOTIFICATION_RESTRICTIONS = 1608;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
+ // > Do Not Disturb behavior > Use default Do Not Disturb behavior
+ // > Notification restriction > Custom
+ // CATEGORY: SETTINGS
+ // OS: Q
+ ZEN_CUSTOM_RULE_VIS_EFFECTS = 1609;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
+ // > Do Not Disturb behavior > Use default Do Not Disturb behavior
+ // > Notification restriction > Custom > Allow messages
+ // CATEGORY: SETTINGS
+ // OS: Q
+ ZEN_CUSTOM_RULE_MESSAGES = 1610;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
+ // > Do Not Disturb behavior > Use default Do Not Disturb behavior
+ // > Notification restriction > Custom > Allow calls
+ // CATEGORY: SETTINGS
+ // OS: Q
+ ZEN_CUSTOM_RULE_CALLS = 1611;
+
+ // OPEN: Settings > Sound > Do Not Disturb > Click footer link if custom settings applied
+ // CATEGORY: SETTINGS
+ // OS: Q
+ ZEN_CUSTOM_SETTINGS_DIALOG = 1612;
+
+ // OPEN: Settings > Developer Options > Game Update Packages
+ // CATEGORY: SETTINGS
+ // OS: Q
+ SETTINGS_GUP_DASHBOARD = 1613;
+
+ // OPEN: Settings > Accessibility > Vibration > Ring vibration
+ // CATEGORY: SETTINGS
+ // OS: Q
+ ACCESSIBILITY_VIBRATION_RING = 1620;
+
+ // OPEN: Settings > System > Input & Gesture > Skip songs
+ SETTINGS_GESTURE_SKIP = 1624;
+
+ // OPEN: Settings > System > Input & Gesture > Silence alerts
+ SETTINGS_GESTURE_SILENCE = 1625;
+
+ // OPEN: Settings > System > Input & Gesture > Tap to check
+ SETTINGS_GESTURE_TAP_SCREEN = 1626;
+
+ // OPEN: Settings > Network & internet > Click Mobile network to land on a page with a list of
+ // SIM/eSIM subscriptions.
+ MOBILE_NETWORK_LIST = 1627;
}
diff --git a/core/proto/android/bluetooth/enums.proto b/core/proto/android/bluetooth/enums.proto
index d0c9226..76c240e 100644
--- a/core/proto/android/bluetooth/enums.proto
+++ b/core/proto/android/bluetooth/enums.proto
@@ -41,3 +41,18 @@
ENABLE_DISABLE_REASON_USER_SWITCH = 8;
ENABLE_DISABLE_REASON_RESTORE_USER_SETTING = 9;
}
+
+enum DirectionEnum {
+ DIRECTION_UNKNOWN = 0;
+ DIRECTION_OUTGOING = 1;
+ DIRECTION_INCOMING = 2;
+}
+
+// First item is the default value, other values follow Bluetooth spec definition
+enum LinkTypeEnum {
+ // Link type is at most 1 byte (0xFF), thus 0xFFF must not be a valid value
+ LINK_TYPE_UNKNOWN = 0xFFF;
+ LINK_TYPE_SCO = 0x00;
+ LINK_TYPE_ACL = 0x01;
+ LINK_TYPE_ESCO = 0x02;
+}
diff --git a/core/proto/android/bluetooth/hci/enums.proto b/core/proto/android/bluetooth/hci/enums.proto
new file mode 100644
index 0000000..e1d96bb
--- /dev/null
+++ b/core/proto/android/bluetooth/hci/enums.proto
@@ -0,0 +1,519 @@
+/*
+ * Copyright 2018 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.
+ */
+
+syntax = "proto2";
+package android.bluetooth.hci;
+
+option java_outer_classname = "BluetoothHciProtoEnums";
+option java_multiple_files = true;
+
+// HCI command opcodes (OCF+OGF) from Bluetooth 5.0 specification Vol 2, Part E, Section 7
+// Original definition: system/bt/stack/include/hcidefs.h
+enum CommandEnum {
+ // Opcode is at most 2 bytes (0xFFFF), thus 0xFFFFF must not be a valid value
+ CMD_UNKNOWN = 0xFFFFF;
+ // Link control commands 0x0400
+ CMD_INQUIRY = 0x0401;
+ CMD_INQUIRY_CANCEL = 0x0402;
+ CMD_PERIODIC_INQUIRY_MODE = 0x0403;
+ CMD_EXIT_PERIODIC_INQUIRY_MODE = 0x0404;
+ CMD_CREATE_CONNECTION = 0x0405;
+ CMD_DISCONNECT = 0x0406;
+ CMD_ADD_SCO_CONNECTION = 0x0407; // Deprecated since Bluetooth 1.2
+ CMD_CREATE_CONNECTION_CANCEL = 0x0408;
+ CMD_ACCEPT_CONNECTION_REQUEST = 0x0409;
+ CMD_REJECT_CONNECTION_REQUEST = 0x040A;
+ CMD_LINK_KEY_REQUEST_REPLY = 0x040B;
+ CMD_LINK_KEY_REQUEST_NEG_REPLY = 0x040C;
+ CMD_PIN_CODE_REQUEST_REPLY = 0x040D;
+ CMD_PIN_CODE_REQUEST_NEG_REPLY = 0x040E;
+ CMD_CHANGE_CONN_PACKET_TYPE = 0x040F;
+ CMD_AUTHENTICATION_REQUESTED = 0x0411;
+ CMD_SET_CONN_ENCRYPTION = 0x0413;
+ CMD_CHANGE_CONN_LINK_KEY = 0x0415;
+ CMD_MASTER_LINK_KEY = 0x0417;
+ CMD_RMT_NAME_REQUEST = 0x0419;
+ CMD_RMT_NAME_REQUEST_CANCEL = 0x041A;
+ CMD_READ_RMT_FEATURES = 0x041B;
+ CMD_READ_RMT_EXT_FEATURES = 0x041C;
+ CMD_READ_RMT_VERSION_INFO = 0x041D;
+ CMD_READ_RMT_CLOCK_OFFSET = 0x041F;
+ CMD_READ_LMP_HANDLE = 0x0420;
+ CMD_SETUP_ESCO_CONNECTION = 0x0428;
+ CMD_ACCEPT_ESCO_CONNECTION = 0x0429;
+ CMD_REJECT_ESCO_CONNECTION = 0x042A;
+ CMD_IO_CAPABILITY_REQUEST_REPLY = 0x042B;
+ CMD_USER_CONF_REQUEST_REPLY = 0x042C;
+ CMD_USER_CONF_VALUE_NEG_REPLY = 0x042D;
+ CMD_USER_PASSKEY_REQ_REPLY = 0x042E;
+ CMD_USER_PASSKEY_REQ_NEG_REPLY = 0x042F;
+ CMD_REM_OOB_DATA_REQ_REPLY = 0x0430;
+ CMD_REM_OOB_DATA_REQ_NEG_REPLY = 0x0433;
+ CMD_IO_CAP_REQ_NEG_REPLY = 0x0434;
+ // BEGIN: AMP commands (not used in system/bt)
+ CMD_CREATE_PHYSICAL_LINK = 0x0435;
+ CMD_ACCEPT_PHYSICAL_LINK = 0x0436;
+ CMD_DISCONNECT_PHYSICAL_LINK = 0x0437;
+ CMD_CREATE_LOGICAL_LINK = 0x0438;
+ CMD_ACCEPT_LOGICAL_LINK = 0x0439;
+ CMD_DISCONNECT_LOGICAL_LINK = 0x043A;
+ CMD_LOGICAL_LINK_CANCEL = 0x043B;
+ CMD_FLOW_SPEC_MODIFY = 0x043C;
+ // END: AMP commands
+ CMD_ENH_SETUP_ESCO_CONNECTION = 0x043D;
+ CMD_ENH_ACCEPT_ESCO_CONNECTION = 0x043E;
+ CMD_TRUNCATED_PAGE = 0x043F;
+ CMD_TRUNCATED_PAGE_CANCEL = 0x0440;
+ CMD_SET_CLB = 0x0441;
+ CMD_RECEIVE_CLB = 0x0442;
+ CMD_START_SYNC_TRAIN = 0x0443;
+ CMD_RECEIVE_SYNC_TRAIN = 0x0444;
+ CMD_REM_OOB_EXTENDED_DATA_REQ_REPLY = 0x0445; // Not currently used in system/bt
+ // Link policy commands 0x0800
+ CMD_HOLD_MODE = 0x0801;
+ CMD_SNIFF_MODE = 0x0803;
+ CMD_EXIT_SNIFF_MODE = 0x0804;
+ CMD_PARK_MODE = 0x0805;
+ CMD_EXIT_PARK_MODE = 0x0806;
+ CMD_QOS_SETUP = 0x0807;
+ CMD_ROLE_DISCOVERY = 0x0809;
+ CMD_SWITCH_ROLE = 0x080B;
+ CMD_READ_POLICY_SETTINGS = 0x080C;
+ CMD_WRITE_POLICY_SETTINGS = 0x080D;
+ CMD_READ_DEF_POLICY_SETTINGS = 0x080E;
+ CMD_WRITE_DEF_POLICY_SETTINGS = 0x080F;
+ CMD_FLOW_SPECIFICATION = 0x0810;
+ CMD_SNIFF_SUB_RATE = 0x0811;
+ // Host controller baseband commands 0x0C00
+ CMD_SET_EVENT_MASK = 0x0C01;
+ CMD_RESET = 0x0C03;
+ CMD_SET_EVENT_FILTER = 0x0C05;
+ CMD_FLUSH = 0x0C08;
+ CMD_READ_PIN_TYPE = 0x0C09;
+ CMD_WRITE_PIN_TYPE = 0x0C0A;
+ CMD_CREATE_NEW_UNIT_KEY = 0x0C0B;
+ CMD_GET_MWS_TRANS_LAYER_CFG = 0x0C0C; // Deprecated (not used in spec)
+ CMD_READ_STORED_LINK_KEY = 0x0C0D;
+ CMD_WRITE_STORED_LINK_KEY = 0x0C11;
+ CMD_DELETE_STORED_LINK_KEY = 0x0C12;
+ CMD_CHANGE_LOCAL_NAME = 0x0C13;
+ CMD_READ_LOCAL_NAME = 0x0C14;
+ CMD_READ_CONN_ACCEPT_TOUT = 0x0C15;
+ CMD_WRITE_CONN_ACCEPT_TOUT = 0x0C16;
+ CMD_READ_PAGE_TOUT = 0x0C17;
+ CMD_WRITE_PAGE_TOUT = 0x0C18;
+ CMD_READ_SCAN_ENABLE = 0x0C19;
+ CMD_WRITE_SCAN_ENABLE = 0x0C1A;
+ CMD_READ_PAGESCAN_CFG = 0x0C1B;
+ CMD_WRITE_PAGESCAN_CFG = 0x0C1C;
+ CMD_READ_INQUIRYSCAN_CFG = 0x0C1D;
+ CMD_WRITE_INQUIRYSCAN_CFG = 0x0C1E;
+ CMD_READ_AUTHENTICATION_ENABLE = 0x0C1F;
+ CMD_WRITE_AUTHENTICATION_ENABLE = 0x0C20;
+ CMD_READ_ENCRYPTION_MODE = 0x0C21; // Deprecated
+ CMD_WRITE_ENCRYPTION_MODE = 0x0C22; // Deprecated
+ CMD_READ_CLASS_OF_DEVICE = 0x0C23;
+ CMD_WRITE_CLASS_OF_DEVICE = 0x0C24;
+ CMD_READ_VOICE_SETTINGS = 0x0C25;
+ CMD_WRITE_VOICE_SETTINGS = 0x0C26;
+ CMD_READ_AUTOMATIC_FLUSH_TIMEOUT = 0x0C27;
+ CMD_WRITE_AUTOMATIC_FLUSH_TIMEOUT = 0x0C28;
+ CMD_READ_NUM_BCAST_REXMITS = 0x0C29;
+ CMD_WRITE_NUM_BCAST_REXMITS = 0x0C2A;
+ CMD_READ_HOLD_MODE_ACTIVITY = 0x0C2B;
+ CMD_WRITE_HOLD_MODE_ACTIVITY = 0x0C2C;
+ CMD_READ_TRANSMIT_POWER_LEVEL = 0x0C2D;
+ CMD_READ_SCO_FLOW_CTRL_ENABLE = 0x0C2E;
+ CMD_WRITE_SCO_FLOW_CTRL_ENABLE = 0x0C2F;
+ CMD_SET_HC_TO_HOST_FLOW_CTRL = 0x0C31;
+ CMD_HOST_BUFFER_SIZE = 0x0C33;
+ CMD_HOST_NUM_PACKETS_DONE = 0x0C35;
+ CMD_READ_LINK_SUPER_TOUT = 0x0C36;
+ CMD_WRITE_LINK_SUPER_TOUT = 0x0C37;
+ CMD_READ_NUM_SUPPORTED_IAC = 0x0C38;
+ CMD_READ_CURRENT_IAC_LAP = 0x0C39;
+ CMD_WRITE_CURRENT_IAC_LAP = 0x0C3A;
+ CMD_READ_PAGESCAN_PERIOD_MODE = 0x0C3B; // Deprecated
+ CMD_WRITE_PAGESCAN_PERIOD_MODE = 0x0C3C; // Deprecated
+ CMD_READ_PAGESCAN_MODE = 0x0C3D; // Deprecated
+ CMD_WRITE_PAGESCAN_MODE = 0x0C3E; // Deprecated
+ CMD_SET_AFH_CHANNELS = 0x0C3F;
+ CMD_READ_INQSCAN_TYPE = 0x0C42;
+ CMD_WRITE_INQSCAN_TYPE = 0x0C43;
+ CMD_READ_INQUIRY_MODE = 0x0C44;
+ CMD_WRITE_INQUIRY_MODE = 0x0C45;
+ CMD_READ_PAGESCAN_TYPE = 0x0C46;
+ CMD_WRITE_PAGESCAN_TYPE = 0x0C47;
+ CMD_READ_AFH_ASSESSMENT_MODE = 0x0C48;
+ CMD_WRITE_AFH_ASSESSMENT_MODE = 0x0C49;
+ CMD_READ_EXT_INQ_RESPONSE = 0x0C51;
+ CMD_WRITE_EXT_INQ_RESPONSE = 0x0C52;
+ CMD_REFRESH_ENCRYPTION_KEY = 0x0C53;
+ CMD_READ_SIMPLE_PAIRING_MODE = 0x0C55;
+ CMD_WRITE_SIMPLE_PAIRING_MODE = 0x0C56;
+ CMD_READ_LOCAL_OOB_DATA = 0x0C57;
+ CMD_READ_INQ_TX_POWER_LEVEL = 0x0C58;
+ CMD_WRITE_INQ_TX_POWER_LEVEL = 0x0C59;
+ CMD_READ_ERRONEOUS_DATA_RPT = 0x0C5A;
+ CMD_WRITE_ERRONEOUS_DATA_RPT = 0x0C5B;
+ CMD_ENHANCED_FLUSH = 0x0C5F;
+ CMD_SEND_KEYPRESS_NOTIF = 0x0C60;
+ CMD_READ_LOGICAL_LINK_ACCEPT_TIMEOUT = 0x0C61;
+ CMD_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT = 0x0C62;
+ CMD_SET_EVENT_MASK_PAGE_2 = 0x0C63;
+ CMD_READ_LOCATION_DATA = 0x0C64;
+ CMD_WRITE_LOCATION_DATA = 0x0C65;
+ CMD_READ_FLOW_CONTROL_MODE = 0x0C66;
+ CMD_WRITE_FLOW_CONTROL_MODE = 0x0C67;
+ CMD_READ_ENHANCED_TX_PWR_LEVEL = 0x0C68; // Not currently used in system/bt
+ CMD_READ_BE_FLUSH_TOUT = 0x0C69;
+ CMD_WRITE_BE_FLUSH_TOUT = 0x0C6A;
+ CMD_SHORT_RANGE_MODE = 0x0C6B;
+ CMD_READ_BLE_HOST_SUPPORT = 0x0C6C;
+ CMD_WRITE_BLE_HOST_SUPPORT = 0x0C6D;
+ CMD_SET_MWS_CHANNEL_PARAMETERS = 0x0C6E;
+ CMD_SET_EXTERNAL_FRAME_CONFIGURATION = 0x0C6F;
+ CMD_SET_MWS_SIGNALING = 0x0C70;
+ CMD_SET_MWS_TRANSPORT_LAYER = 0x0C71;
+ CMD_SET_MWS_SCAN_FREQUENCY_TABLE = 0x0C72;
+ CMD_SET_MWS_PATTERN_CONFIGURATION = 0x0C73;
+ CMD_SET_RESERVED_LT_ADDR = 0x0C74;
+ CMD_DELETE_RESERVED_LT_ADDR = 0x0C75;
+ CMD_WRITE_CLB_DATA = 0x0C76;
+ CMD_READ_SYNC_TRAIN_PARAM = 0x0C77;
+ CMD_WRITE_SYNC_TRAIN_PARAM = 0x0C78;
+ CMD_READ_SECURE_CONNS_SUPPORT = 0x0C79;
+ CMD_WRITE_SECURE_CONNS_SUPPORT = 0x0C7A;
+ CMD_READ_AUTHED_PAYLOAD_TIMEOUT = 0x0C7B; // Not currently used in system/bt
+ CMD_WRITE_AUTHED_PAYLOAD_TIMEOUT = 0x0C7C; // Not currently used in system/bt
+ CMD_READ_LOCAL_OOB_EXTENDED_DATA = 0x0C7D; // Not currently used in system/bt
+ CMD_READ_EXTENDED_PAGE_TIMEOUT = 0x0C7E; // Not currently used in system/bt
+ CMD_WRITE_EXTENDED_PAGE_TIMEOUT = 0x0C7F; // Not currently used in system/bt
+ CMD_READ_EXTENDED_INQUIRY_LENGTH = 0x0C80; // Not currently used in system/bt
+ CMD_WRITE_EXTENDED_INQUIRY_LENGTH = 0x0C81; // Not currently used in system/bt
+ // Informational parameter commands 0x1000
+ CMD_READ_LOCAL_VERSION_INFO = 0x1001;
+ CMD_READ_LOCAL_SUPPORTED_CMDS = 0x1002;
+ CMD_READ_LOCAL_FEATURES = 0x1003;
+ CMD_READ_LOCAL_EXT_FEATURES = 0x1004;
+ CMD_READ_BUFFER_SIZE = 0x1005;
+ CMD_READ_COUNTRY_CODE = 0x1007; // Deprecated
+ CMD_READ_BD_ADDR = 0x1009;
+ CMD_READ_DATA_BLOCK_SIZE = 0x100A;
+ CMD_READ_LOCAL_SUPPORTED_CODECS = 0x100B;
+ // Status parameter commands 0x1400
+ CMD_READ_FAILED_CONTACT_COUNTER = 0x1401;
+ CMD_RESET_FAILED_CONTACT_COUNTER = 0x1402;
+ CMD_GET_LINK_QUALITY = 0x1403;
+ CMD_READ_RSSI = 0x1405;
+ CMD_READ_AFH_CH_MAP = 0x1406;
+ CMD_READ_CLOCK = 0x1407;
+ CMD_READ_ENCR_KEY_SIZE = 0x1408;
+ CMD_READ_LOCAL_AMP_INFO = 0x1409;
+ CMD_READ_LOCAL_AMP_ASSOC = 0x140A;
+ CMD_WRITE_REMOTE_AMP_ASSOC = 0x140B;
+ CMD_GET_MWS_TRANSPORT_CFG = 0x140C; // Not currently used in system/bt
+ CMD_SET_TRIGGERED_CLK_CAPTURE = 0x140D; // Not currently used in system/bt
+ // Testing commands 0x1800
+ CMD_READ_LOOPBACK_MODE = 0x1801;
+ CMD_WRITE_LOOPBACK_MODE = 0x1802;
+ CMD_ENABLE_DEV_UNDER_TEST_MODE = 0x1803;
+ CMD_WRITE_SIMP_PAIR_DEBUG_MODE = 0x1804;
+ CMD_ENABLE_AMP_RCVR_REPORTS = 0x1807;
+ CMD_AMP_TEST_END = 0x1808;
+ CMD_AMP_TEST = 0x1809;
+ CMD_WRITE_SECURE_CONN_TEST_MODE = 0x180A; // Not currently used in system/bt
+ // BLE commands 0x2000
+ CMD_BLE_SET_EVENT_MASK = 0x2001;
+ CMD_BLE_READ_BUFFER_SIZE = 0x2002;
+ CMD_BLE_READ_LOCAL_SPT_FEAT = 0x2003;
+ CMD_BLE_WRITE_LOCAL_SPT_FEAT = 0x2004;
+ CMD_BLE_WRITE_RANDOM_ADDR = 0x2005;
+ CMD_BLE_WRITE_ADV_PARAMS = 0x2006;
+ CMD_BLE_READ_ADV_CHNL_TX_POWER = 0x2007;
+ CMD_BLE_WRITE_ADV_DATA = 0x2008;
+ CMD_BLE_WRITE_SCAN_RSP_DATA = 0x2009;
+ CMD_BLE_WRITE_ADV_ENABLE = 0x200A;
+ CMD_BLE_WRITE_SCAN_PARAMS = 0x200B;
+ CMD_BLE_WRITE_SCAN_ENABLE = 0x200C;
+ CMD_BLE_CREATE_LL_CONN = 0x200D;
+ CMD_BLE_CREATE_CONN_CANCEL = 0x200E;
+ CMD_BLE_READ_WHITE_LIST_SIZE = 0x200F;
+ CMD_BLE_CLEAR_WHITE_LIST = 0x2010;
+ CMD_BLE_ADD_WHITE_LIST = 0x2011;
+ CMD_BLE_REMOVE_WHITE_LIST = 0x2012;
+ CMD_BLE_UPD_LL_CONN_PARAMS = 0x2013;
+ CMD_BLE_SET_HOST_CHNL_CLASS = 0x2014;
+ CMD_BLE_READ_CHNL_MAP = 0x2015;
+ CMD_BLE_READ_REMOTE_FEAT = 0x2016;
+ CMD_BLE_ENCRYPT = 0x2017;
+ CMD_BLE_RAND = 0x2018;
+ CMD_BLE_START_ENC = 0x2019;
+ CMD_BLE_LTK_REQ_REPLY = 0x201A;
+ CMD_BLE_LTK_REQ_NEG_REPLY = 0x201B;
+ CMD_BLE_READ_SUPPORTED_STATES = 0x201C;
+ CMD_BLE_RECEIVER_TEST = 0x201D;
+ CMD_BLE_TRANSMITTER_TEST = 0x201E;
+ CMD_BLE_TEST_END = 0x201F;
+ CMD_BLE_RC_PARAM_REQ_REPLY = 0x2020;
+ CMD_BLE_RC_PARAM_REQ_NEG_REPLY = 0x2021;
+ CMD_BLE_SET_DATA_LENGTH = 0x2022;
+ CMD_BLE_READ_DEFAULT_DATA_LENGTH = 0x2023;
+ CMD_BLE_WRITE_DEFAULT_DATA_LENGTH = 0x2024;
+ CMD_BLE_GENERATE_DHKEY = 0x2026; // Not currently used in system/bt
+ CMD_BLE_ADD_DEV_RESOLVING_LIST = 0x2027;
+ CMD_BLE_RM_DEV_RESOLVING_LIST = 0x2028;
+ CMD_BLE_CLEAR_RESOLVING_LIST = 0x2029;
+ CMD_BLE_READ_RESOLVING_LIST_SIZE = 0x202A;
+ CMD_BLE_READ_RESOLVABLE_ADDR_PEER = 0x202B;
+ CMD_BLE_READ_RESOLVABLE_ADDR_LOCAL = 0x202C;
+ CMD_BLE_SET_ADDR_RESOLUTION_ENABLE = 0x202D;
+ CMD_BLE_SET_RAND_PRIV_ADDR_TIMOUT = 0x202E;
+ CMD_BLE_READ_MAXIMUM_DATA_LENGTH = 0x202F;
+ CMD_BLE_READ_PHY = 0x2030;
+ CMD_BLE_SET_DEFAULT_PHY = 0x2031;
+ CMD_BLE_SET_PHY = 0x2032;
+ CMD_BLE_ENH_RECEIVER_TEST = 0x2033;
+ CMD_BLE_ENH_TRANSMITTER_TEST = 0x2034;
+ CMD_BLE_SET_EXT_ADVERTISING_RANDOM_ADDRESS = 0x2035;
+ CMD_BLE_SET_EXT_ADVERTISING_PARAM = 0x2036;
+ CMD_BLE_SET_EXT_ADVERTISING_DATA = 0x2037;
+ CMD_BLE_SET_EXT_ADVERTISING_SCAN_RESP = 0x2038;
+ CMD_BLE_SET_EXT_ADVERTISING_ENABLE = 0x2039;
+ CMD_BLE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH = 0x203A;
+ CMD_BLE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS = 0x203B;
+ CMD_BLE_REMOVE_ADVERTISING_SET = 0x203C;
+ CMD_BLE_CLEAR_ADVERTISING_SETS = 0x203D;
+ CMD_BLE_SET_PERIODIC_ADVERTISING_PARAM = 0x203E;
+ CMD_BLE_SET_PERIODIC_ADVERTISING_DATA = 0x203F;
+ CMD_BLE_SET_PERIODIC_ADVERTISING_ENABLE = 0x2040;
+ CMD_BLE_SET_EXTENDED_SCAN_PARAMETERS = 0x2041;
+ CMD_BLE_SET_EXTENDED_SCAN_ENABLE = 0x2042;
+ CMD_BLE_EXTENDED_CREATE_CONNECTION = 0x2043;
+ CMD_BLE_PERIODIC_ADVERTISING_CREATE_SYNC = 0x2044;
+ CMD_BLE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL = 0x2045;
+ CMD_BLE_PERIODIC_ADVERTISING_TERMINATE_SYNC = 0x2046;
+ CMD_BLE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST = 0x2047;
+ CMD_BLE_RM_DEVICE_FROM_PERIODIC_ADVERTISING_LIST = 0x2048;
+ CMD_BLE_CLEAR_PERIODIC_ADVERTISING_LIST = 0x2049;
+ CMD_BLE_READ_PERIODIC_ADVERTISING_LIST_SIZE = 0x204A;
+ CMD_BLE_READ_TRANSMIT_POWER = 0x204B;
+ CMD_BLE_READ_RF_COMPENS_POWER = 0x204C;
+ CMD_BLE_WRITE_RF_COMPENS_POWER = 0x204D;
+ CMD_BLE_SET_PRIVACY_MODE = 0x204E;
+ // Vendor specific commands 0xFC00 and above
+ // Android vendor specific commands defined in
+ // https://source.android.com/devices/bluetooth/hci_requirements#vendor-specific-capabilities
+ CMD_BLE_VENDOR_CAP = 0xFD53;
+ CMD_BLE_MULTI_ADV = 0xFD54;
+ CMD_BLE_BATCH_SCAN = 0xFD56;
+ CMD_BLE_ADV_FILTER = 0xFD57;
+ CMD_BLE_TRACK_ADV = 0xFD58;
+ CMD_BLE_ENERGY_INFO = 0xFD59;
+ CMD_BLE_EXTENDED_SCAN_PARAMS = 0xFD5A;
+ CMD_CONTROLLER_DEBUG_INFO = 0xFD5B;
+ CMD_CONTROLLER_A2DP_OPCODE = 0xFD5D;
+ CMD_BRCM_SET_ACL_PRIORITY = 0xFC57;
+ // Other vendor specific commands below here
+}
+
+// HCI event codes from the Bluetooth 5.0 specification Vol 2, Part 7, Section 7
+// Original definition: system/bt/stack/include/hcidefs.h
+enum EventEnum {
+ // Event is at most 1 byte (0xFF), thus 0xFFF must not be a valid value
+ EVT_UNKNOWN = 0xFFF;
+ EVT_INQUIRY_COMP = 0x01;
+ EVT_INQUIRY_RESULT = 0x02;
+ EVT_CONNECTION_COMP = 0x03;
+ EVT_CONNECTION_REQUEST = 0x04;
+ EVT_DISCONNECTION_COMP = 0x05;
+ EVT_AUTHENTICATION_COMP = 0x06;
+ EVT_RMT_NAME_REQUEST_COMP = 0x07;
+ EVT_ENCRYPTION_CHANGE = 0x08;
+ EVT_CHANGE_CONN_LINK_KEY = 0x09;
+ EVT_MASTER_LINK_KEY_COMP = 0x0A;
+ EVT_READ_RMT_FEATURES_COMP = 0x0B;
+ EVT_READ_RMT_VERSION_COMP = 0x0C;
+ EVT_QOS_SETUP_COMP = 0x0D;
+ EVT_COMMAND_COMPLETE = 0x0E;
+ EVT_COMMAND_STATUS = 0x0F;
+ EVT_HARDWARE_ERROR = 0x10;
+ EVT_FLUSH_OCCURED = 0x11;
+ EVT_ROLE_CHANGE = 0x12;
+ EVT_NUM_COMPL_DATA_PKTS = 0x13;
+ EVT_MODE_CHANGE = 0x14;
+ EVT_RETURN_LINK_KEYS = 0x15;
+ EVT_PIN_CODE_REQUEST = 0x16;
+ EVT_LINK_KEY_REQUEST = 0x17;
+ EVT_LINK_KEY_NOTIFICATION = 0x18;
+ EVT_LOOPBACK_COMMAND = 0x19;
+ EVT_DATA_BUF_OVERFLOW = 0x1A;
+ EVT_MAX_SLOTS_CHANGED = 0x1B;
+ EVT_READ_CLOCK_OFF_COMP = 0x1C;
+ EVT_CONN_PKT_TYPE_CHANGE = 0x1D;
+ EVT_QOS_VIOLATION = 0x1E;
+ EVT_PAGE_SCAN_MODE_CHANGE = 0x1F; // Deprecated
+ EVT_PAGE_SCAN_REP_MODE_CHNG = 0x20;
+ EVT_FLOW_SPECIFICATION_COMP = 0x21;
+ EVT_INQUIRY_RSSI_RESULT = 0x22;
+ EVT_READ_RMT_EXT_FEATURES_COMP = 0x23;
+ EVT_ESCO_CONNECTION_COMP = 0x2C;
+ EVT_ESCO_CONNECTION_CHANGED = 0x2D;
+ EVT_SNIFF_SUB_RATE = 0x2E;
+ EVT_EXTENDED_INQUIRY_RESULT = 0x2F;
+ EVT_ENCRYPTION_KEY_REFRESH_COMP = 0x30;
+ EVT_IO_CAPABILITY_REQUEST = 0x31;
+ EVT_IO_CAPABILITY_RESPONSE = 0x32;
+ EVT_USER_CONFIRMATION_REQUEST = 0x33;
+ EVT_USER_PASSKEY_REQUEST = 0x34;
+ EVT_REMOTE_OOB_DATA_REQUEST = 0x35;
+ EVT_SIMPLE_PAIRING_COMPLETE = 0x36;
+ EVT_LINK_SUPER_TOUT_CHANGED = 0x38;
+ EVT_ENHANCED_FLUSH_COMPLETE = 0x39;
+ EVT_USER_PASSKEY_NOTIFY = 0x3B;
+ EVT_KEYPRESS_NOTIFY = 0x3C;
+ EVT_RMT_HOST_SUP_FEAT_NOTIFY = 0x3D;
+ EVT_BLE_META = 0x3E;
+ EVT_PHYSICAL_LINK_COMP = 0x40;
+ EVT_CHANNEL_SELECTED = 0x41;
+ EVT_DISC_PHYSICAL_LINK_COMP = 0x42;
+ EVT_PHY_LINK_LOSS_EARLY_WARNING = 0x43;
+ EVT_PHY_LINK_RECOVERY = 0x44;
+ EVT_LOGICAL_LINK_COMP = 0x45;
+ EVT_DISC_LOGICAL_LINK_COMP = 0x46;
+ EVT_FLOW_SPEC_MODIFY_COMP = 0x47;
+ EVT_NUM_COMPL_DATA_BLOCKS = 0x48;
+ EVT_AMP_TEST_START = 0x49; // Not currently used in system/bt
+ EVT_AMP_TEST_END = 0x4A; // Not currently used in system/bt
+ EVT_AMP_RECEIVER_RPT = 0x4B; // Not currently used in system/bt
+ EVT_SHORT_RANGE_MODE_COMPLETE = 0x4C;
+ EVT_AMP_STATUS_CHANGE = 0x4D;
+ EVT_SET_TRIGGERED_CLOCK_CAPTURE = 0x4E;
+ EVT_SYNC_TRAIN_CMPL = 0x4F; // Not currently used in system/bt
+ EVT_SYNC_TRAIN_RCVD = 0x50; // Not currently used in system/bt
+ EVT_CONNLESS_SLAVE_BROADCAST_RCVD = 0x51; // Not currently used in system/bt
+ EVT_CONNLESS_SLAVE_BROADCAST_TIMEOUT = 0x52; // Not currently used in system/bt
+ EVT_TRUNCATED_PAGE_CMPL = 0x53; // Not currently used in system/bt
+ EVT_SLAVE_PAGE_RES_TIMEOUT = 0x54; // Not currently used in system/bt
+ EVT_CONNLESS_SLAVE_BROADCAST_CHNL_MAP_CHANGE = 0x55; // Not currently used in system/bt
+ EVT_INQUIRY_RES_NOTIFICATION = 0x56; // Not currently used in system/bt
+ EVT_AUTHED_PAYLOAD_TIMEOUT = 0x57; // Not currently used in system/bt
+ EVT_SAM_STATUS_CHANGE = 0x58; // Not currently used in system/bt
+}
+
+// Bluetooth low energy related meta event codes
+// from the Bluetooth 5.0 specification Vol 2, Part E, Section 7.7.65
+// Original definition: system/bt/stack/include/hcidefs.h
+enum BleMetaEventEnum {
+ // BLE meta event code is at most 1 byte (0xFF), thus 0xFFF must not be a valid value
+ BLE_EVT_UNKNOWN = 0xFFF;
+ BLE_EVT_CONN_COMPLETE_EVT = 0x01;
+ BLE_EVT_ADV_PKT_RPT_EVT = 0x02;
+ BLE_EVT_LL_CONN_PARAM_UPD_EVT = 0x03;
+ BLE_EVT_READ_REMOTE_FEAT_CMPL_EVT = 0x04;
+ BLE_EVT_LTK_REQ_EVT = 0x05;
+ BLE_EVT_RC_PARAM_REQ_EVT = 0x06;
+ BLE_EVT_DATA_LENGTH_CHANGE_EVT = 0x07;
+ BLE_EVT_READ_LOCAL_P256_PUB_KEY = 0x08; // Not currently used in system/bt
+ BLE_EVT_GEN_DHKEY_CMPL = 0x09; // Not currently used in system/bt
+ BLE_EVT_ENHANCED_CONN_COMPLETE_EVT = 0x0a;
+ BLE_EVT_DIRECT_ADV_EVT = 0x0b;
+ BLE_EVT_PHY_UPDATE_COMPLETE_EVT = 0x0c;
+ BLE_EVT_EXTENDED_ADVERTISING_REPORT_EVT = 0x0D;
+ BLE_EVT_PERIODIC_ADV_SYNC_EST_EVT = 0x0E;
+ BLE_EVT_PERIODIC_ADV_REPORT_EVT = 0x0F;
+ BLE_EVT_PERIODIC_ADV_SYNC_LOST_EVT = 0x10;
+ BLE_EVT_SCAN_TIMEOUT_EVT = 0x11;
+ BLE_EVT_ADVERTISING_SET_TERMINATED_EVT = 0x12;
+ BLE_EVT_SCAN_REQ_RX_EVT = 0x13;
+ BLE_EVT_CHNL_SELECTION_ALGORITHM = 0x14; // Not currently used in system/bt
+}
+
+// HCI status code from the Bluetooth 5.0 specification Vol 2, Part D.
+// Original definition: system/bt/stack/include/hcidefs.h
+enum StatusEnum {
+ // Status is at most 1 byte (0xFF), thus 0xFFF must not be a valid value
+ STATUS_UNKNOWN = 0xFFF;
+ STATUS_SUCCESS = 0x00;
+ STATUS_ILLEGAL_COMMAND = 0x01;
+ STATUS_NO_CONNECTION = 0x02;
+ STATUS_HW_FAILURE = 0x03;
+ STATUS_PAGE_TIMEOUT = 0x04;
+ STATUS_AUTH_FAILURE = 0x05;
+ STATUS_KEY_MISSING = 0x06;
+ STATUS_MEMORY_FULL = 0x07;
+ STATUS_CONNECTION_TOUT = 0x08;
+ STATUS_MAX_NUM_OF_CONNECTIONS = 0x09;
+ STATUS_MAX_NUM_OF_SCOS = 0x0A;
+ STATUS_CONNECTION_EXISTS = 0x0B;
+ STATUS_COMMAND_DISALLOWED = 0x0C;
+ STATUS_HOST_REJECT_RESOURCES = 0x0D;
+ STATUS_HOST_REJECT_SECURITY = 0x0E;
+ STATUS_HOST_REJECT_DEVICE = 0x0F;
+ STATUS_HOST_TIMEOUT = 0x10;
+ STATUS_UNSUPPORTED_VALUE = 0x11;
+ STATUS_ILLEGAL_PARAMETER_FMT = 0x12;
+ STATUS_PEER_USER = 0x13;
+ STATUS_PEER_LOW_RESOURCES = 0x14;
+ STATUS_PEER_POWER_OFF = 0x15;
+ STATUS_CONN_CAUSE_LOCAL_HOST = 0x16;
+ STATUS_REPEATED_ATTEMPTS = 0x17;
+ STATUS_PAIRING_NOT_ALLOWED = 0x18;
+ STATUS_UNKNOWN_LMP_PDU = 0x19;
+ STATUS_UNSUPPORTED_REM_FEATURE = 0x1A;
+ STATUS_SCO_OFFSET_REJECTED = 0x1B;
+ STATUS_SCO_INTERVAL_REJECTED = 0x1C;
+ STATUS_SCO_AIR_MODE = 0x1D;
+ STATUS_INVALID_LMP_PARAM = 0x1E;
+ STATUS_UNSPECIFIED = 0x1F;
+ STATUS_UNSUPPORTED_LMP_FEATURE = 0x20;
+ STATUS_ROLE_CHANGE_NOT_ALLOWED = 0x21;
+ STATUS_LMP_RESPONSE_TIMEOUT = 0x22;
+ STATUS_LMP_STATUS_TRANS_COLLISION = 0x23;
+ STATUS_LMP_PDU_NOT_ALLOWED = 0x24;
+ STATUS_ENCRY_MODE_NOT_ACCEPTABLE = 0x25;
+ STATUS_UNIT_KEY_USED = 0x26;
+ STATUS_QOS_NOT_SUPPORTED = 0x27;
+ STATUS_INSTANT_PASSED = 0x28;
+ STATUS_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED = 0x29;
+ STATUS_DIFF_TRANSACTION_COLLISION = 0x2A;
+ STATUS_UNDEFINED_0x2B = 0x2B; // Not used
+ STATUS_QOS_UNACCEPTABLE_PARAM = 0x2C;
+ STATUS_QOS_REJECTED = 0x2D;
+ STATUS_CHAN_CLASSIF_NOT_SUPPORTED = 0x2E;
+ STATUS_INSUFFCIENT_SECURITY = 0x2F;
+ STATUS_PARAM_OUT_OF_RANGE = 0x30;
+ STATUS_UNDEFINED_0x31 = 0x31; // Not used
+ STATUS_ROLE_SWITCH_PENDING = 0x32;
+ STATUS_UNDEFINED_0x33 = 0x33;
+ STATUS_RESERVED_SLOT_VIOLATION = 0x34;
+ STATUS_ROLE_SWITCH_FAILED = 0x35;
+ STATUS_INQ_RSP_DATA_TOO_LARGE = 0x36;
+ STATUS_SIMPLE_PAIRING_NOT_SUPPORTED = 0x37;
+ STATUS_HOST_BUSY_PAIRING = 0x38;
+ STATUS_REJ_NO_SUITABLE_CHANNEL = 0x39;
+ STATUS_CONTROLLER_BUSY = 0x3A;
+ STATUS_UNACCEPT_CONN_INTERVAL = 0x3B;
+ STATUS_ADVERTISING_TIMEOUT = 0x3C;
+ STATUS_CONN_TOUT_DUE_TO_MIC_FAILURE = 0x3D;
+ STATUS_CONN_FAILED_ESTABLISHMENT = 0x3E;
+ STATUS_MAC_CONNECTION_FAILED = 0x3F;
+ STATUS_LT_ADDR_ALREADY_IN_USE = 0x40;
+ STATUS_LT_ADDR_NOT_ALLOCATED = 0x41;
+ STATUS_CLB_NOT_ENABLED = 0x42;
+ STATUS_CLB_DATA_TOO_BIG = 0x43;
+ STATUS_OPERATION_CANCELED_BY_HOST = 0x44; // Not currently used in system/bt
+}
diff --git a/core/proto/android/bluetooth/hfp/enums.proto b/core/proto/android/bluetooth/hfp/enums.proto
new file mode 100644
index 0000000..d286e4b
--- /dev/null
+++ b/core/proto/android/bluetooth/hfp/enums.proto
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2018 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.
+ */
+
+syntax = "proto2";
+package android.bluetooth.hfp;
+
+option java_outer_classname = "BluetoothHfpProtoEnums";
+option java_multiple_files = true;
+
+enum ScoCodec {
+ SCO_CODEC_UNKNOWN = 0;
+ SCO_CODEC_CVSD = 1;
+ // Default codec behind Wide Band Speech
+ SCO_CODEC_MSBC = 2;
+}
\ No newline at end of file
diff --git a/core/proto/android/providers/settings/global.proto b/core/proto/android/providers/settings/global.proto
index cc5aa20..4158577 100644
--- a/core/proto/android/providers/settings/global.proto
+++ b/core/proto/android/providers/settings/global.proto
@@ -436,12 +436,19 @@
// Ordered GPU debug layer list for GLES
// i.e. <layer1>:<layer2>:...:<layerN>
optional SettingProto debug_layers_gles = 7;
- // GUP - List of Apps selected to use Game Update Packages
- optional SettingProto gup_dev_opt_in_apps = 8;
- // GUP - List of Apps selected not to use Game Update Packages
- optional SettingProto gup_dev_opt_out_apps = 9;
- // GUP - List of Apps that are forbidden to use Game Update Packages
- optional SettingProto gup_black_list = 10;
+ // GUP - Game Update Package global preference for all Apps
+ // 0 = Default
+ // 1 = All Apps use Game Update Package
+ // 2 = All Apps use system graphics driver
+ optional SettingProto gup_dev_all_apps = 8;
+ // GUP - List of Apps selected to use Game Update Package
+ // i.e. <pkg1>,<pkg2>,...,<pkgN>
+ optional SettingProto gup_dev_opt_in_apps = 9;
+ // GUP - List of Apps selected not to use Game Update Package
+ // i.e. <pkg1>,<pkg2>,...,<pkgN>
+ optional SettingProto gup_dev_opt_out_apps = 10;
+ // GUP - List of Apps that are forbidden to use Game Update Package
+ optional SettingProto gup_blacklist = 11;
}
optional Gpu gpu = 59;
diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto
index 0e052fe..4bfd4d2 100644
--- a/core/proto/android/providers/settings/secure.proto
+++ b/core/proto/android/providers/settings/secure.proto
@@ -182,6 +182,7 @@
optional SettingProto pulse_on_pick_up = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto pulse_on_long_press = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto pulse_on_double_tap = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto pulse_on_tap = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
}
optional Doze doze = 21;
@@ -525,7 +526,10 @@
}
optional Zen zen = 71;
+ optional SettingProto skip_gesture_enabled = 74 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto silence_gesture_enabled = 75 [ (android.privacy).dest = DEST_AUTOMATIC ];
+
// Please insert fields in alphabetical order and group them into messages
// if possible (to avoid reaching the method limit).
- // Next tag = 74;
+ // Next tag = 76;
}
diff --git a/core/proto/android/server/jobscheduler.proto b/core/proto/android/server/jobscheduler.proto
index 0ec8c1a..7f3ea7a 100644
--- a/core/proto/android/server/jobscheduler.proto
+++ b/core/proto/android/server/jobscheduler.proto
@@ -403,18 +403,23 @@
optional bool is_charging = 1;
optional bool is_in_parole = 2;
+ // List of UIDs currently in the foreground.
+ repeated int32 foreground_uids = 3;
+
message TrackedJob {
option (.android.msg_privacy).dest = DEST_AUTOMATIC;
optional JobStatusShortInfoProto info = 1;
optional int32 source_uid = 2;
optional JobStatusDumpProto.Bucket effective_standby_bucket = 3;
- optional bool has_quota = 4;
+ // If the job started while the app was in the TOP state.
+ optional bool is_top_started_job = 4;
+ optional bool has_quota = 5;
// The amount of time that this job has remaining in its quota. This
// can be negative if the job is out of quota.
- optional int64 remaining_quota_ms = 5;
+ optional int64 remaining_quota_ms = 6;
}
- repeated TrackedJob tracked_jobs = 3;
+ repeated TrackedJob tracked_jobs = 4;
message Package {
option (.android.msg_privacy).dest = DEST_AUTOMATIC;
@@ -456,7 +461,7 @@
repeated TimingSession saved_sessions = 3;
}
- repeated PackageStats package_stats = 4;
+ repeated PackageStats package_stats = 5;
}
message StorageController {
option (.android.msg_privacy).dest = DEST_AUTOMATIC;
diff --git a/core/proto/android/server/location/enums.proto b/core/proto/android/server/location/enums.proto
index b6dc589..943ff18 100644
--- a/core/proto/android/server/location/enums.proto
+++ b/core/proto/android/server/location/enums.proto
@@ -28,3 +28,105 @@
GPS_SIGNAL_QUALITY_POOR = 0;
GPS_SIGNAL_QUALITY_GOOD = 1;
}
+
+// A type which distinguishes different categories of NI request, such as VOICE, UMTS_SUPL etc.
+enum GnssNiType {
+ VOICE = 1;
+ UMTS_SUPL = 2;
+ UMTS_CTRL_PLANE = 3;
+ EMERGENCY_SUPL = 4;
+};
+
+// GNSS NI responses, used to define the response in NI structures.
+enum GnssUserResponseType {
+ RESPONSE_ACCEPT = 1;
+ RESPONSE_DENY = 2;
+ RESPONSE_NORESP = 3;
+};
+
+// GNSS NI data encoding scheme.
+enum GnssNiEncodingType {
+ ENC_NONE = 0;
+ ENC_SUPL_GSM_DEFAULT = 1;
+ ENC_SUPL_UTF8 = 2;
+ ENC_SUPL_UCS2 = 3;
+ ENC_UNKNOWN = -1;
+};
+
+// Protocol stack that initiated the non-framework location request.
+enum NfwProtocolStack {
+ // Cellular control plane requests.
+ CTRL_PLANE = 0;
+ // All types of SUPL requests.
+ SUPL = 1;
+ // All types of requests from IMS.
+ IMS = 10;
+ // All types of requests from SIM.
+ SIM = 11;
+ // Requests from other protocol stacks.
+ OTHER_PROTOCOL_STACK = 100;
+};
+
+// Source initiating/receiving the location information.
+enum NfwRequestor {
+ // Wireless service provider.
+ CARRIER = 0;
+ // Device manufacturer.
+ OEM = 10;
+ // Modem chipset vendor.
+ MODEM_CHIPSET_VENDOR = 11;
+ // GNSS chipset vendor.
+ GNSS_CHIPSET_VENDOR = 12;
+ // Other chipset vendor.
+ OTHER_CHIPSET_VENDOR = 13;
+ // Automobile client.
+ AUTOMOBILE_CLIENT = 20;
+ // Other sources.
+ OTHER_REQUESTOR = 100;
+};
+
+// Indicates whether location information was provided for this request.
+enum NfwResponseType {
+ // Request rejected because framework has not given permission for this use case.
+ REJECTED = 0;
+ // Request accepted but could not provide location because of a failure.
+ ACCEPTED_NO_LOCATION_PROVIDED = 1;
+ // Request accepted and location provided.
+ ACCEPTED_LOCATION_PROVIDED = 2;
+};
+
+// The SUPL mode.
+enum SuplMode {
+ // Mobile Station Based.
+ MSB = 0x01;
+ // Mobile Station Assisted.
+ MSA = 0x02;
+};
+
+// Enum that hold the bit masks for various LTE Positioning Profile settings (LPP_PROFILE
+// configuration parameter). If none of the bits in the enum are set, the default setting is
+// Radio Resource Location Protocol(RRLP).
+enum LppProfile {
+ // Enable LTE Positioning Protocol user plane.
+ USER_PLANE = 0x01;
+ // Enable LTE Positioning Protocol Control plane.
+ CONTROL_PLANE = 0x02;
+};
+
+// Positioning protocol on A-Glonass system.
+enum GlonassPosProtocol {
+ // Radio Resource Control(RRC) control-plane.
+ RRC_CPLANE = 0x01;
+ // Radio Resource Location user-plane.
+ RRLP_CPLANE = 0x02;
+ // LTE Positioning Protocol User plane.
+ LPP_UPLANE = 0x04;
+};
+
+// Configurations of how GPS functionalities should be locked when user turns off GPS On setting.
+enum GpsLock {
+ // Lock Mobile Originated GPS functionalitues.
+ MO = 0x01;
+ // Lock Network Initiated GPS functionalities.
+ NI = 0x02;
+};
diff --git a/core/proto/android/service/procstats.proto b/core/proto/android/service/procstats.proto
index 71ebcc1..da801ff 100644
--- a/core/proto/android/service/procstats.proto
+++ b/core/proto/android/service/procstats.proto
@@ -43,7 +43,7 @@
* Data model from /frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
* This proto is defined based on the writeToParcel method.
*
- * Next Tag: 10
+ * Next Tag: 11
*/
message ProcessStatsSectionProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
@@ -76,6 +76,9 @@
}
repeated Status status = 7;
+ // Number of pages available of various types and sizes, representation fragmentation.
+ repeated ProcessStatsAvailablePagesProto available_pages = 10;
+
// Stats for each process.
repeated ProcessStatsProto process_stats = 8;
@@ -83,6 +86,24 @@
repeated ProcessStatsPackageProto package_stats = 9;
}
+// Next Tag: 5
+message ProcessStatsAvailablePagesProto {
+ option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+ // Node these pages are in (as per /proc/pagetypeinfo)
+ optional int32 node = 1;
+
+ // Zone these pages are in (as per /proc/pagetypeinfo)
+ optional string zone = 2;
+
+ // Label for the type of these pages (as per /proc/pagetypeinfo)
+ optional string label = 3;
+
+ // Distribution of number of pages available by order size. First entry in array is
+ // order 0, second is order 1, etc. Each order increase is a doubling of page size.
+ repeated int32 pages_per_order = 4;
+}
+
// Next Tag: 10
message ProcessStatsStateProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 506d7f2..ea0c8e2 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1186,6 +1186,7 @@
<!-- Used for permissions that are associated with activity recognition.
TODO(zezeozue). STOPSHIP: Add icon -->
<permission-group android:name="android.permission-group.ACTIVITY_RECOGNITION"
+ android:icon="@drawable/perm_group_activity_recognition"
android:label="@string/permgrouplab_activityRecognition"
android:description="@string/permgroupdesc_activityRecognition"
android:request="@string/permgrouprequest_activityRecognition"
@@ -2209,8 +2210,9 @@
<permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
android:protectionLevel="signature|installer" />
- <!-- @SystemApi Allows an application to start an activity within its managed profile from
- the personal profile.
+ <!-- @SystemApi Allows an application to start its own activities, but on a different profile
+ associated with the user. For example, an application running on the main profile of a user
+ can start an activity on a managed profile of that user.
This permission is not available to third party applications.
@hide -->
<permission android:name="android.permission.INTERACT_ACROSS_PROFILES"
@@ -2269,6 +2271,11 @@
<permission android:name="android.permission.START_ANY_ACTIVITY"
android:protectionLevel="signature" />
+ <!-- Allows an application to start activities from background
+ @hide -->
+ <permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"
+ android:protectionLevel="signature|privileged|vendorPrivileged|oem" />
+
<!-- @SystemApi Must be required by activities that handle the intent action
{@link Intent#ACTION_SEND_SHOW_SUSPENDED_APP_DETAILS}. This is for use by apps that
hold {@link Manifest.permission#SUSPEND_APPS} to interact with the system.
@@ -2527,6 +2534,16 @@
<permission android:name="android.permission.WRITE_GSERVICES"
android:protectionLevel="signature|privileged" />
+ <!-- @SystemApi @hide Allows an application to modify config settings.
+ <p>Not for use by third-party applications. -->
+ <permission android:name="android.permission.WRITE_DEVICE_CONFIG"
+ android:protectionLevel="signature|configurator"/>
+
+ <!-- @SystemApi @hide Allows an application to read config settings.
+ <p>Not for use by third-party applications. -->
+ <permission android:name="android.permission.READ_DEVICE_CONFIG"
+ android:protectionLevel="signature|preinstalled" />
+
<!-- @SystemApi @TestApi Allows an application to call
{@link android.app.ActivityManager#forceStopPackage}.
@hide -->
@@ -3040,6 +3057,15 @@
<permission android:name="android.permission.BIND_TEXT_SERVICE"
android:protectionLevel="signature" />
+ <!-- @SystemApi Must be required by a AttentionService
+ to ensure that only the system can bind to it.
+ <p>Protection level: signature
+ @hide
+ -->
+ <permission android:name="android.permission.BIND_ATTENTION_SERVICE"
+ android:protectionLevel="signature" />
+ <uses-permission android:name="android.permission.BIND_ATTENTION_SERVICE" />
+
<!-- Must be required by a {@link android.net.VpnService},
to ensure that only the system can bind to it.
<p>Protection level: signature
@@ -3191,9 +3217,10 @@
<!-- @SystemApi Required to add or remove another application as a device admin.
<p>Not for use by third-party applications.
- @hide -->
+ @hide
+ @removed -->
<permission android:name="android.permission.MANAGE_DEVICE_ADMINS"
- android:protectionLevel="signature|privileged" />
+ android:protectionLevel="signature" />
<!-- @SystemApi Allows an app to reset the device password.
<p>Not for use by third-party applications.
@@ -3515,19 +3542,25 @@
<permission android:name="android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS"
android:protectionLevel="signature|privileged" />
+ <!-- @SystemApi Allows an application to provide remote displays.
+ <p>Not for use by third-party applications.</p>
+ @hide -->
+ <permission android:name="android.permission.REMOTE_DISPLAY_PROVIDER"
+ android:protectionLevel="signature|privileged" />
+
<!-- Allows an application to capture video output.
<p>Not for use by third-party applications.</p>
@hide
@removed -->
<permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT"
- android:protectionLevel="signature|privileged" />
+ android:protectionLevel="signature" />
<!-- Allows an application to capture secure video output.
<p>Not for use by third-party applications.</p>
@hide
@removed -->
<permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT"
- android:protectionLevel="signature|privileged" />
+ android:protectionLevel="signature" />
<!-- Allows an application to know what content is playing and control its playback.
<p>Not for use by third-party applications due to privacy of media consumption</p> -->
@@ -4732,6 +4765,11 @@
android:permission="android.permission.BIND_JOB_SERVICE" >
</service>
+ <service android:name="com.android.server.ZramWriteback"
+ android:exported="false"
+ android:permission="android.permission.BIND_JOB_SERVICE" >
+ </service>
+
<service android:name="com.android.server.backup.FullBackupJob"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE" >
diff --git a/core/res/res/drawable/perm_group_activity_recognition.xml b/core/res/res/drawable/perm_group_activity_recognition.xml
new file mode 100644
index 0000000..0ade6c6
--- /dev/null
+++ b/core/res/res/drawable/perm_group_activity_recognition.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#000000"
+ android:pathData="M13.49 5.48c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm-3.6 13.9l1-4.4 2.1
+2v6h2v-7.5l-2.1-2 .6-3c1.3 1.5 3.3 2.5 5.5 2.5v-2c-1.9
+0-3.5-1-4.3-2.4l-1-1.6c-.4-.6-1-1-1.7-1-.3 0-.5 .1 -.8 .1 l-5.2
+2.2v4.7h2v-3.4l1.8-.7-1.6 8.1-4.9-1-.4 2 7 1.4z" />
+</vector>
diff --git a/core/res/res/drawable/perm_group_sensors.xml b/core/res/res/drawable/perm_group_sensors.xml
index ce36c13..e4663d7 100644
--- a/core/res/res/drawable/perm_group_sensors.xml
+++ b/core/res/res/drawable/perm_group_sensors.xml
@@ -19,11 +19,11 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
-
- <path
- android:fillColor="#000000"
- android:pathData="M13.49 5.48c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm-3.6 13.9l1-4.4 2.1
-2v6h2v-7.5l-2.1-2 .6-3c1.3 1.5 3.3 2.5 5.5 2.5v-2c-1.9
-0-3.5-1-4.3-2.4l-1-1.6c-.4-.6-1-1-1.7-1-.3 0-.5 .1 -.8 .1 l-5.2
-2.2v4.7h2v-3.4l1.8-.7-1.6 8.1-4.9-1-.4 2 7 1.4z" />
-</vector>
\ No newline at end of file
+ <path
+ android:fillColor="#000000"
+ android:pathData="M16.5,3c-1.74,0 -3.41,0.81 -4.5,2.09C10.91,3.81 9.24,3 7.5,3C4.42,3 2,5.42 2,
+ 8.5c0,3.78 3.4,6.86 8.55,11.54L12,21.35l1.45,-1.32C18.6,15.36 22,12.28 22,8.5C22,
+ 5.42 19.58,3 16.5,3zM12.1,18.55l-0.1,0.1l-0.1,-0.1C7.14,14.24 4,11.39 4,8.5C4,6.5 5.5,
+ 5 7.5,5c1.54,0 3.04,0.99 3.57,2.36h1.87C13.46,5.99 14.96,5 16.5,5c2,0 3.5,1.5 3.5,3.5C20,
+ 11.39 16.86,14.24 12.1,18.55z"/>
+</vector>
diff --git a/core/res/res/layout/notification_template_ambient_header.xml b/core/res/res/layout/notification_template_ambient_header.xml
deleted file mode 100644
index be5d9b4..0000000
--- a/core/res/res/layout/notification_template_ambient_header.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2017 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.
- -->
-
-<!-- hack to work around <include /> not being supported at the top level -->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:paddingStart="@dimen/notification_extra_margin_ambient"
- android:paddingEnd="@dimen/notification_extra_margin_ambient"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
- <include
- layout="@layout/notification_template_header"
- android:theme="@style/Theme.DeviceDefault.Notification.Ambient"/>
-</FrameLayout>
diff --git a/core/res/res/layout/notification_template_material_ambient.xml b/core/res/res/layout/notification_template_material_ambient.xml
deleted file mode 100644
index 2c6064e..0000000
--- a/core/res/res/layout/notification_template_material_ambient.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2017 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.
- -->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/status_bar_latest_event_content"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:tag="ambient"
- android:paddingStart="@dimen/notification_extra_margin_ambient"
- android:paddingEnd="@dimen/notification_extra_margin_ambient"
- >
- <include layout="@layout/notification_template_ambient_header"
- android:theme="@style/Theme.DeviceDefault.Notification.Ambient" />
-
- <LinearLayout
- android:id="@+id/notification_action_list_margin_target"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="top"
- android:layout_marginTop="@dimen/notification_content_margin_top"
- android:layout_marginBottom="@dimen/notification_action_list_height"
- android:paddingTop="4dp"
- android:paddingBottom="6dp"
- android:clipToPadding="false"
- android:orientation="vertical">
-
- <LinearLayout
- android:id="@+id/notification_main_column"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="top"
- android:layout_weight="1"
- android:paddingStart="@dimen/notification_content_margin_start"
- android:paddingEnd="@dimen/notification_content_margin_end"
- android:clipToPadding="false"
- android:minHeight="@dimen/notification_min_content_height"
- android:orientation="vertical"
- >
- <TextView android:id="@+id/title"
- android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="top|center_horizontal"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- android:textSize="@dimen/notification_ambient_title_text_size"
- android:textColor="#ffffffff"
- />
- <TextView android:id="@+id/text"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:textAppearance="@style/TextAppearance.DeviceDefault.Notification"
- android:singleLine="false"
- android:layout_weight="1"
- android:gravity="top|center_horizontal"
- android:visibility="gone"
- android:textSize="@dimen/notification_ambient_text_size"
- android:textColor="#eeffffff"
- android:layout_marginTop="4dp"
- android:ellipsize="end"
- android:maxLines="3"
- />
- </LinearLayout>
- <FrameLayout android:id="@+id/actions_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom">
- <com.android.internal.widget.NotificationActionListLayout
- android:id="@+id/actions"
- android:layout_width="match_parent"
- android:layout_height="@dimen/notification_action_list_height"
- android:paddingEnd="4dp"
- android:orientation="horizontal"
- android:gravity="center"
- android:visibility="gone"
- />
- </FrameLayout>
- </LinearLayout>
-</FrameLayout>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index c4616c5..770a82e 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Laat die program toe om liggings in jou mediaversameling te lees."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Die program <xliff:g id="APP">%s</xliff:g> wil staaf."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometriese hardeware is nie beskikbaar nie"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Stawing is gekanselleer"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nie herken nie"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Stawing is gekanselleer"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Gedeeltelike vingerafdruk is bespeur. Probeer asseblief weer."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Kon nie vingerafdruk verwerk nie. Probeer asseblief weer."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Vingerafdruksensor is vuil. Maak dit skoon en probeer weer."</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 25c23b2..8ec7cd03 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"መተግበሪያው አካባቢዎችን ከሚዲያ ስብስብዎ እንዲያነብብ ያስችለዋል።"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"መተግበሪያ <xliff:g id="APP">%s</xliff:g> ማረጋገጥ ይፈልጋል"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ባዮሜትራዊ ሃርድዌር አይገኝም"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"ማረጋገጥ ተሰርዟል"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"አልታወቀም"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"ማረጋገጥ ተሰርዟል"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ከፊል የጣት አሻራ ተገኝቷል። እባክዎ እንደገና ይሞክሩ።"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ጣት አሻራን መስራት አልተቻለም። እባክዎ እንደገና ይሞክሩ።"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"የጣት አሻራ ዳሳሽ ቆሽሿል። እባክዎ ያጽዱት እና እንደገና ይሞክሩ።"</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ካሜራ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ማይክሮፎን"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"በማያዎ ላይ በሌሎች መተግበሪያዎች ላይ በማሳየት ላይ"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"የዕለት ተዕለት ሁነታ መረጃ ማሳወቂያዎች"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"ባትሪ ከተለመደው ኃይል መሙላት በፊት ሊያልቅ ይችላል"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"የባትሪ ቆጣቢ የባትሪ ዕድሜን ለማራዘም ገብሯል።"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"በመጫን ላይ"</string>
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 25902bb..8d7b801 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -545,11 +545,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"للسماح للتطبيق بقراءة المواقع من مجموعة الوسائط التابعة لك."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"يتطلَّب التطبيق <xliff:g id="APP">%s</xliff:g> المصادقة."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"معدّات المقاييس الحيوية غير متاحة."</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"تم إلغاء المصادقة."</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"لم يتم التعرف عليها."</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"تم إلغاء المصادقة."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"تم اكتشاف بصمة الإصبع بشكل جزئي؛ يرجى إعادة المحاولة."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"تعذرت معالجة بصمة الإصبع. يُرجى إعادة المحاولة."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"جهاز استشعار بصمات الأصابع متسخ، يرجى تنظيفه وإعادة المحاولة."</string>
@@ -1542,7 +1540,7 @@
<string name="vpn_lockdown_config" msgid="8151951501116759194">"تغيير إعدادات الشبكة أو الشبكة الافتراضية الخاصة (VPN)"</string>
<string name="upload_file" msgid="2897957172366730416">"اختيار ملف"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"لم يتم اختيار أي ملف"</string>
- <string name="reset" msgid="2448168080964209908">"إعادة تعيين"</string>
+ <string name="reset" msgid="2448168080964209908">"إعادة الضبط"</string>
<string name="submit" msgid="1602335572089911941">"إرسال"</string>
<string name="car_mode_disable_notification_title" msgid="5704265646471239078">"تطبيق القيادة قيد التشغيل"</string>
<string name="car_mode_disable_notification_message" msgid="7647248420931129377">"انقر للخروج من تطبيق القيادة."</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 12d9677..74a4584 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"এপক আপোনাৰ মিডিয়া সংগ্ৰহৰ অৱস্থান পঢ়িবলৈ দিয়ে।"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> এপে বিশ্বাসযোগ্যতাৰ প্ৰমাণ কৰিব বিচাৰে।"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"বায়োমেট্ৰিক হাৰ্ডৱেৰ উপলব্ধ নহয়"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"বিশ্বাসযোগ্যতাৰ প্ৰমাণীকৰণ বাতিল কৰা হৈছে"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"চিনাক্ত কৰিব পৰা নাই"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"বিশ্বাসযোগ্যতাৰ প্ৰমাণীকৰণ বাতিল কৰা হৈছে"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ফিংগাৰপ্ৰিণ্ট আংশিকভাৱে চিনাক্ত কৰা হৈছে। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক৷"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ফিগাৰপ্ৰিণ্টৰ প্ৰক্ৰিয়া সম্পাদন কৰিবপৰা নগ\'ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক৷"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ফিংগাৰপ্ৰিণ্ট ছেন্সৰটো লেতেৰা হৈ আছে। অনুগ্ৰহ কৰি পৰিষ্কাৰ কৰি আকৌ চেষ্টা কৰক।"</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"কেমেৰা"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"মাইক্ৰ\'ফ\'ন"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"স্ক্ৰীণত অইন এপৰ ওপৰত দেখুৱাওক"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"ৰুটিন ম’ডৰ তথ্য জাননী"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"চ্চাৰ্জ কৰাৰ সচৰাচৰ সময়ৰ আগতেই বেটাৰি শেষ হ’ব পাৰে"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"বেটাৰিৰ খৰচ কমাবলৈ বেটাৰি সঞ্চয়কাৰী অন কৰা হৈছে"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"ল’ড হৈ আছে"</string>
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 1bcce98..c941704 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Tətbiqin media kolleksiyanızdan məkanları oxumasına icazə verin."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> doğrulamaq istəyir."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrik proqram əlçatan deyil"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Doğrulama ləğv edildi"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Tanınmır"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Doğrulama ləğv edildi"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Barmaq qismən müəyyən olundu. Lütfən, yenidən cəhd edin."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Barmaq izi tanınmadı. Lütfən, yenidən cəhd edin."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Barmaq izi sensoru çirklidir. Lütfən, təmizləyin və yenidən cəhd edin."</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 57ee03d..7de4e9e 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -536,11 +536,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Dozvoljava aplikaciji da čita lokacije iz medijske kolekcije."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikacija <xliff:g id="APP">%s</xliff:g> želi da potvrdi vaš identitet."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrijski hardver nije dostupan"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Potvrda identiteta je otkazana"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nije prepoznato"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Potvrda identiteta je otkazana"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Otkriven je delimični otisak prsta. Probajte ponovo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nije uspela obrada otiska prsta. Probajte ponovo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor za otiske prstiju je prljav. Očistite ga i pokušajte ponovo."</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 77de542..4f98eaa 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -539,11 +539,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Праграма зможа паказваць месцазнаходжанне ў калекцыі мультымедыя."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Праграма \"<xliff:g id="APP">%s</xliff:g>\" патрабуе аўтэнтыфікацыі."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Біяметрычнае абсталяванне недаступнае"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Аўтэнтыфікацыя скасавана"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Не распазнана"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Аўтэнтыфікацыя скасавана"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Выяўлена частка адбіткаў пальцаў. Паспрабуйце яшчэ раз."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Не атрымалася апрацаваць адбітак пальца. Паспрабуйце яшчэ раз."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Датчык адбіткаў пальцаў брудны. Ачысціце яго і паспрабуйце яшчэ раз."</string>
@@ -2049,11 +2047,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Мікрафон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"паказваецца паверх іншых праграм на экране"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Апавяшчэнне з інфармацыяй пра ўсталяваны рэжым"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Акумулятар можа разрадзіцца хутчэй, чым прыйдзе час звычайнай зарадкі"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Каб павялічыць тэрмін работы акумулятара, уключаны рэжым эканоміі зараду"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Загрузка"</string>
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index a360eae..704dc52 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Разрешава на приложението да чете местоположенията от мултимедийната ви колекция."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Приложението <xliff:g id="APP">%s</xliff:g> изисква удостоверяване."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Биометричният хардуер не е налице"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Удостоверяването бе анулирано"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Не е разпознато"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Удостоверяването бе анулирано"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Открит е частичен отпечатък. Моля, опитайте отново."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Отпечатъкът не можа да се обработи. Моля, опитайте отново."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Сензорът за отпечатъци е мръсен. Моля, почистете го и опитайте отново."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"се показва върху други приложения на екрана"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Известие с информация за режима на поредица"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Батерията може да се изтощи преди обичайното зареждане"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Режимът за запазване на батерията е активиран с цел удължаване на живота на батерията"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Зарежда се"</string>
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index ea53d19..b6ab1e6 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"আপনার মিডিয়া সংগ্রহ থেকে লোকেশন দেখতে অ্যাপকে অনুমতি দিন।"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> অ্যাপ্লিকেশন যাচাই করতে চাইছে।"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"বায়োমেট্রিক হার্ডওয়্যার পাওয়া যাবে না"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"যাচাইকরণ বাতিল হয়েছে"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"স্বীকৃত নয়"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"যাচাইকরণ বাতিল হয়েছে"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"আঙ্গুলের ছাপ আংশিক শনাক্ত করা হয়েছে৷ অনুগ্রহ করে আবার চেষ্টা করুন৷"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"আঙ্গুলের ছাপ প্রক্রিয়া করা যায়নি৷ অনুগ্রহ করে আবার চেষ্টা করুন৷"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"আঙ্গুলের ছাপ নেওয়ার সেন্সরটি অপরিস্কার৷ অনুগ্রহ করে পরিষ্কার করে আবার চেষ্টা করুন৷"</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ক্যামেরা"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"মাইক্রোফোন"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"স্ক্রিনে অন্যান্য অ্যাপের উপরে দেখানো হচ্ছে"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"রুটিন মোডের তথ্য সংক্রান্ত বিজ্ঞপ্তি"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"সাধারণত যখন চার্জ দেন, তার আগে চার্জ শেষ হয়ে যেতে পারে"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"ডিভাইস বেশিক্ষণ চালু রাখতে ব্যাটারি সেভার চালু করা হয়েছে"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"লোড হচ্ছে"</string>
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index a3d2ac3..ab0df69 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -155,9 +155,9 @@
<string name="httpErrorOk" msgid="1191919378083472204">"Uredu"</string>
<string name="httpError" msgid="7956392511146698522">"Došlo je do greške na mreži."</string>
<string name="httpErrorLookup" msgid="4711687456111963163">"Pronalaženje URL-a nije uspjelo."</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"Shema za provjeru vjerodostojnosti stranice nije podržana."</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"Došlo je do greške prilikom provjere vjerodostojnosti."</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"Došlo je do greške prilikom provjere vjerodostojnosti preko proksi servera."</string>
+ <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"Shema za autentifikaciju stranice nije podržana."</string>
+ <string name="httpErrorAuth" msgid="1435065629438044534">"Došlo je do greške prilikom autentifikacije."</string>
+ <string name="httpErrorProxyAuth" msgid="1788207010559081331">"Došlo je do greške prilikom autentifikacije preko proksi servera."</string>
<string name="httpErrorConnect" msgid="8714273236364640549">"Povezivanje sa serverom nije uspjelo."</string>
<string name="httpErrorIO" msgid="2340558197489302188">"Veza sa serverom nije uspostavljena. Pokušajte ponovo kasnije."</string>
<string name="httpErrorTimeout" msgid="4743403703762883954">"Vrijeme za uspostavljanje veze sa serverom je isteklo."</string>
@@ -519,7 +519,7 @@
<string name="permlab_manageFingerprint" msgid="5640858826254575638">"upravljanje hardverom za otiske prstiju"</string>
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Omogućava aplikaciji da koristi metode za dodavanje i brisanje šablona otisaka prstiju za upotrebu."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"korištenje hardvera za otiske prstiju"</string>
- <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Omogućava aplikaciji da za provjeru vjerodostojnosti koristi hardver za otiske prstiju"</string>
+ <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Omogućava aplikaciji da za autentifikaciju koristi hardver za otiske prstiju"</string>
<string name="permlab_audioRead" msgid="6617225220728465565">"čitanje muzičke kolekcije"</string>
<string name="permdesc_audioRead" msgid="5034032570243484805">"Omogućava aplikaciji da čita vašu muzičku kolekciju."</string>
<string name="permlab_audioWrite" msgid="2661772059799779292">"izmjena muzičke kolekcije"</string>
@@ -536,11 +536,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Omogućava aplikaciji da čita lokacije iz vaše kolekcije medija."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikacija <xliff:g id="APP">%s</xliff:g> traži autentifikaciju."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrijski hardver nije dostupan"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentifikacija je otkazana"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nije prepoznato"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentifikacija je otkazana"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Otkriven je djelomičan otisak prsta. Pokušajte ponovo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nije uspjela obrada otiska prsta. Pokušajte ponovo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor za otisak prsta je prljav. Očistite ga i pokušajte ponovo."</string>
@@ -1645,7 +1643,7 @@
<string name="kg_invalid_puk" msgid="3638289409676051243">"Ponovo unesite ispravan PUK kôd. Ponovljeni pokušaji će trajno onemogućiti SIM."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-ovi se ne poklapaju"</string>
<string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Previše pokušaja otključavanja pomoću uzorka"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Da otključate, prijavite se sa svojim Google računom."</string>
+ <string name="kg_login_instructions" msgid="1100551261265506448">"Da otključate, prijavite se pomoću svog Google računa."</string>
<string name="kg_login_username_hint" msgid="5718534272070920364">"Korisničko ime (adresa e-pošte)"</string>
<string name="kg_login_password_hint" msgid="9057289103827298549">"Lozinka"</string>
<string name="kg_login_submit_button" msgid="5355904582674054702">"Prijava"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 1b1335d..e53f85e 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permet que l\'aplicació llegeixi les ubicacions de les teves col·leccions multimèdia."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"L\'aplicació <xliff:g id="APP">%s</xliff:g> vol que t\'autentiquis."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Maquinari biomètric no disponible"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"S\'ha cancel·lat l\'autenticació"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"No s\'ha reconegut"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"S\'ha cancel·lat l\'autenticació"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"S\'ha detectat una empremta digital parcial. Torna-ho a provar."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"No s\'ha pogut processar l\'empremta digital. Torna-ho a provar."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"El sensor d\'empremtes digitals està brut. Neteja\'l i torna-ho a provar."</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 6a65be3..55719e5 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -539,11 +539,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Umožňuje aplikaci číst místa z vaší sbírky médií."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikace <xliff:g id="APP">%s</xliff:g> potřebuje provést ověření."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrický hardware není k dispozici"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Ověření bylo zrušeno"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nerozpoznáno"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Ověření bylo zrušeno"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Byla zjištěna jen část otisku prstu. Zkuste to znovu."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Zpracování otisku prstu se nezdařilo. Zkuste to znovu."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor otisků prstů je znečištěn. Vyčistěte jej a zkuste to znovu."</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index ae50f32..a5ddc78 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Tillader, at appen kan læse placeringer fra din mediesamling."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g>-appen kræver din godkendelse."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrisk hardware er ikke tilgængelig"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Godkendelsen blev annulleret"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Ikke genkendt"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Godkendelsen blev annulleret"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Der blev registreret et delvist fingeraftryk. Prøv igen."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Fingeraftrykket kunne ikke behandles. Prøv igen."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sensoren til registrering af fingeraftryk er beskidt. Tør den af, og prøv igen."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 895eaa1..205b373 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Ermöglicht der App, Standorte aus deiner Mediensammlung abzurufen."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> möchte, dass du dich authentifizierst."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrische Hardware nicht verfügbar"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Authentifizierung abgebrochen"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nicht erkannt"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Authentifizierung abgebrochen"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Fingerabdruck teilweise erkannt. Bitte versuche es noch einmal."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Fingerabdruck konnte nicht verarbeitet werden. Bitte versuche es noch einmal."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerabdrucksensor ist verschmutzt. Reinige ihn und versuche es noch einmal."</string>
@@ -679,7 +677,7 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Anforderung, dass gespeicherte App-Daten verschlüsselt werden"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Kameras deaktivieren"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Nutzung sämtlicher Gerätekameras unterbinden"</string>
- <string name="policylab_disableKeyguardFeatures" msgid="8552277871075367771">"Einige Funktionen der Displaysperre deaktivieren"</string>
+ <string name="policylab_disableKeyguardFeatures" msgid="8552277871075367771">"Displaysperre teilweise deaktivieren"</string>
<string name="policydesc_disableKeyguardFeatures" msgid="2044755691354158439">"Verwendung einiger Funktionen der Displaysperre verhindern"</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Privat"</item>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 441435b..e4e7a76 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Επιτρέπει στην εφαρμογή να διαβάσει τοποθεσίες από τη συλλογή πολυμέσων σας."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Η εφαρμογή <xliff:g id="APP">%s</xliff:g> επιθυμεί έλεγχο ταυτότητας."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Δεν υπάρχει διαθέσιμος βιομετρικός εξοπλισμός"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Ο έλεγχος ταυτότητας ακυρώθηκε"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Δεν αναγνωρίστηκε"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Ο έλεγχος ταυτότητας ακυρώθηκε"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Εντοπίστηκε μερικό μοναδικό χαρακτηριστικό. Δοκιμάστε ξανά."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Δεν ήταν δυνατή η επεξεργασία του μοναδικού χαρακτηριστικού. Δοκιμάστε ξανά."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Ο αισθητήρας μοναδικού χαρακτηριστικού δεν είναι καθαρός. Καθαρίστε τον και δοκιμάστε ξανά."</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 8b49cf1..7dd3da2 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Application <xliff:g id="APP">%s</xliff:g> wants to authenticate."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometric hardware unavailable"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Authentication cancelled"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Not recognised"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Authentication cancelled"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"displaying over other apps on your screen"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Routine Mode info notification"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Battery may run out before usual charge"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Battery Saver activated to extend battery life"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Loading"</string>
</resources>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 888bc26..21f6f1f 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Application <xliff:g id="APP">%s</xliff:g> wants to authenticate."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometric hardware unavailable"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Authentication cancelled"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Not recognised"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Authentication cancelled"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"displaying over other apps on your screen"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Routine Mode info notification"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Battery may run out before usual charge"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Battery Saver activated to extend battery life"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Loading"</string>
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 8b49cf1..7dd3da2 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Application <xliff:g id="APP">%s</xliff:g> wants to authenticate."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometric hardware unavailable"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Authentication cancelled"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Not recognised"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Authentication cancelled"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"displaying over other apps on your screen"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Routine Mode info notification"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Battery may run out before usual charge"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Battery Saver activated to extend battery life"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Loading"</string>
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 8b49cf1..7dd3da2 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Application <xliff:g id="APP">%s</xliff:g> wants to authenticate."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometric hardware unavailable"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Authentication cancelled"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Not recognised"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Authentication cancelled"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"displaying over other apps on your screen"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Routine Mode info notification"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Battery may run out before usual charge"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Battery Saver activated to extend battery life"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Loading"</string>
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index e821fca..dc0a132 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que la app lea las ubicaciones de tu colección de contenido multimedia."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"La aplicación de <xliff:g id="APP">%s</xliff:g> quiere autenticarte"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"No hay hardware biométrico disponible"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Se canceló la autenticación"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"No se reconoció"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Se canceló la autenticación"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"La huella digital se detectó parcialmente. Vuelve a intentarlo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"No se pudo procesar la huella digital. Vuelve a intentarlo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"El sensor de huellas digitales está sucio. Limpia el sensor y vuelve a intentarlo."</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 3f93565..c819bb6 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que la aplicación lea las ubicaciones de tu colección de contenido multimedia."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> solicita tu autenticación."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Hardware biométrico no disponible"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autenticación cancelada"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"No se reconoce"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autenticación cancelada"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Se ha detectado una huella digital parcial. Vuelve a intentarlo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"No se ha podido procesar la huella digital. Vuelve a intentarlo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"El sensor de huellas digitales está sucio. Límpialo y vuelve a intentarlo."</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 466ead0..f1c4106 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Võimaldab rakendusel lugeda teie meediakogus olevaid asukohti."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Rakendus <xliff:g id="APP">%s</xliff:g> soovib autentimist."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biomeetriline riistvara ei ole saadaval"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentimine tühistati"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Ei tuvastatud"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentimine tühistati"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Tuvastati osaline sõrmejälg. Proovige uuesti."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Sõrmejälge ei õnnestunud töödelda. Proovige uuesti."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sõrmejäljeandur on must. Puhastage see ja proovige uuesti."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kaamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"teie ekraanil muude rakenduste peal kuvamine"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Rutiinirežiimi teabe märguanne"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Aku võib enne tavapärast laadimist tühjaks saada"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Akusäästja aktiveeriti aku tööea pikendamiseks"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Laadimine"</string>
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index c478bab..c361164 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Multimedia-edukien bildumako kokapena irakurtzea baimentzen die aplikazioei."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> aplikazioak autentifikatu egin nahi du."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Hardware biometrikoa ez dago erabilgarri"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Utzi da autentifikazioa"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Ez da ezagutu"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Utzi egin da autentifikazioa"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Hatz-marka digitala ez da osorik hauteman. Saiatu berriro."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Ezin izan da prozesatu hatz-marka. Saiatu berriro."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Hatz-marka digitalen sentsorea zikina dago. Garbi ezazu, eta saiatu berriro."</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index c38f1d2..5bf81fa 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"به برنامه اجازه میدهد مکانها را از مجموعه رسانهتان بخواند."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"برنامه <xliff:g id="APP">%s</xliff:g> میخواهد احراز هویت کند."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"سختافزار زیستسنجی دردسترس نیست"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"احراز هویت لغو شد"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"شناسایی نشد"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"احراز هویت لغو شد"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"بخشی از اثر انگشت شناسایی شد. لطفاً دوباره امتحان کنید."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"اثرانگشت پردازش نشد. لطفاً دوباره امتحان کنید."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"حسگر اثر انگشت کثیف است. لطفاً آن را تمیز کنید و دوباره امتحان نمایید."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"دوربین"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"میکروفون"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"نمایش روی برنامههای دیگر در صفحهنمایش"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"اعلان اطلاعات حالت روال معمول"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"ممکن است شارژ باتری قبل از شارژ معمول تمام شود"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"جهت افزایش عمر باتری، بهینهسازی باتری فعال شد"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"درحال بارگیری"</string>
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index ac6d8dc..9e2fde5 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Antaa sovelluksen lukea mediakokoelmasi sijainteja."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> pyytää todentamista"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrinen laitteisto ei käytettävissä"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Todennus peruutettu"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Ei tunnistettu"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Todennus peruutettu"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Sormenjälki havaittiin vain osittain. Yritä uudelleen."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Sormenjäljen käsittely epäonnistui. Yritä uudelleen."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sormenjälkitunnistin on likainen. Puhdista tunnistin ja yritä uudelleen."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofoni"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"näkyy näytöllä muiden sovellusten päällä"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Ohjelmatilan tietoilmoitus"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Akku saattaa loppua ennen normaalia latausaikaa"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Virransäästö otettu käyttöön akunkeston pidentämiseksi"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Ladataan"</string>
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 8383078..3b841d5 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Autorise l\'application à lire les positions indiquées dans votre collection multimédia."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> vous demande de vous authentifier."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Matériel biométrique indisponible"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Authentification annulée"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Données biométriques non reconnues"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Authentification annulée"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Empreinte digitale partielle détectée. Veuillez essayer de nouveau."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Impossible de traiter les empreintes digitales. Veuillez essayer de nouveau."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Le capteur d\'empreintes digitales est sale. Veuillez le nettoyer et essayer de nouveau."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Appareil photo"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"superpose du contenu par-dessus d\'autres applications à l\'écran"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Notification d\'information du mode Routine"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"La pile pourrait s\'épuiser avant la charge habituelle"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Le mode Économiseur de pile est activé afin de prolonger l\'autonomie"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Chargement en cours…"</string>
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 3e87d88..28df3bf 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Autorise l\'application à consulter des positions issues de votre bibliothèque multimédia."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"L\'application <xliff:g id="APP">%s</xliff:g> veut vous authentifier."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Matériel biométrique indisponible"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Authentification annulée"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Non reconnu"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Authentification annulée"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Empreinte numérique partiellement détectée. Veuillez réessayer."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Impossible de reconnaître l\'empreinte numérique. Veuillez réessayer."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Le lecteur d\'empreintes numériques est sale. Veuillez le nettoyer, puis réessayer."</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 1e78401..339f0f4f 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que a aplicación lea as localizacións da túa colección multimedia."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"A aplicación <xliff:g id="APP">%s</xliff:g> quere que te autentiques."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"O hardware biométrico non está dispoñible"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Cancelouse a autenticación"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Non se recoñeceu"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Cancelouse a autenticación"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Detectouse unha impresión dixital parcial. Téntao de novo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Non se puido procesar a impresión dixital. Téntao de novo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impresión dixital está sucio. Límpao e téntao de novo."</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Cámara"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Micrófono"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"mostrando outras aplicacións na pantalla"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Notificación da información do modo de rutina"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"A batería pode esgotarse antes do habitual"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Para ampliar a duración da batería activouse a función Aforro de batería"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Cargando"</string>
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 958183d..2124759 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"એપને તમારા મીડિયા સંગ્રહમાંથી સ્થાનો વાંચવાની મંજૂરી આપે છે."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> ઍપ પ્રમાણીકરણ કરવા માગે છે."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"બાયોમેટ્રિક હાર્ડવેર ઉપલબ્ધ નથી"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"પ્રમાણીકરણ રદ કર્યું"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"ઓળખાયેલ નથી"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"પ્રમાણીકરણ રદ કર્યું"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"આંશિક ફિંગરપ્રિન્ટ મળી. કૃપા કરીને ફરી પ્રયાસ કરો."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ફિંગરપ્રિન્ટ પ્રક્રિયા કરી શકાઈ નથી. કૃપા કરીને ફરી પ્રયાસ કરો."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ફિંગરપ્રિન્ટ સેન્સર ગંદું છે. કૃપા કરીને સાફ કરો અને ફરી પ્રયાસ કરો."</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"કૅમેરા"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"માઇક્રોફોન"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"આ તમારી સ્ક્રીન પર અન્ય ઍપની ઉપર દેખાશે"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"રૂટિન મોડની માહિતીનું નોટિફિકેશન"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"સામાન્ય રીતે ચાર્જ કરવાના સમય પહેલાં બૅટરી સમાપ્ત થઈ શકે છે"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"બૅટરી આવરદા વધારવા માટે બૅટરી સેવર ચાલુ કર્યું"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"લોડિંગ"</string>
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 6a247af..db89c3e 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"इससे ऐप्लिकेशन को आपके मीडिया संग्रह से जगह की जानकारी एक्सेस करने की अनुमति दी जाती है."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"ऐप्लिकेशन <xliff:g id="APP">%s</xliff:g> पुष्टि करना चाहता है."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"बायोमेट्रिक हार्डवेयर उपलब्ध नहीं है"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"प्रमाणीकरण रद्द किया गया"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"पहचान नहीं हो पाई"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"प्रमाणीकरण रद्द किया गया"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"आंशिक फ़िंगरप्रिंट की पहचान की गई. कृपया पुनः प्रयास करें."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"फ़िंगरप्रिंट संसाधित नहीं हो सका. कृपया पुन: प्रयास करें."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"फ़िंगरप्रिंट सेंसर गंदा है. कृपया साफ़ करें और फिर कोशिश करें."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"कैमरा"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"माइक्रोफ़ोन"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"आपकी स्क्रीन पर, इस्तेमाल हो रहे दूसरे ऐप्लिकेशन के ऊपर दिखाया जा रहा है"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"रूटीन मोड जानकारी की सूचना"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"बैटरी आम तौर पर जितने समय चलती है, उससे पहले खत्म हो सकती है"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"बैटरी लाइफ़ बढ़ाने के लिए \'बैटरी सेवर\' चालू हो गया है"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"प्राेफ़ाइल लोड हो रही है"</string>
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 92fdbba..4cd699b 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -536,11 +536,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Omogućuje aplikaciji čitanje lokacija iz vaše medijske zbirke."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikacija <xliff:g id="APP">%s</xliff:g> traži autentifikaciju."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrijski hardver nije dostupan"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentifikacija otkazana"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nije prepoznato"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentifikacija otkazana"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Otkriven je djelomični otisak prsta. Pokušajte ponovo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Obrada otiska prsta nije uspjela. Pokušajte ponovo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor otiska prsta nije čist. Očistite ga i pokušajte ponovo."</string>
@@ -2014,11 +2012,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotoaparat"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"prikazuje se preko drugih aplikacija na zaslonu"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Obavještavanje o informacijama u Rutinskom načinu rada"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Baterija se može isprazniti prije uobičajenog vremena punjenja"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Štednja baterije aktivirana je kako bi se produljilo trajanje baterije"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Učitavanje"</string>
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index c04d4fe..3d2ed09 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Engedélyezi az alkalmazásnak a helyek médiagyűjteményből való olvasását."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"A(z) <xliff:g id="APP">%s</xliff:g> alkalmazás hitelesítést kér."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrikus hardver nem áll rendelkezésre"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Hitelesítés megszakítva"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nem ismerhető fel"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Hitelesítés megszakítva"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"A rendszer az ujjlenyomatnak csak egy részletét érzékelte. Próbálkozzon újra."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nem sikerült feldolgozni az ujjlenyomatot. Próbálkozzon újra."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Az ujjlenyomat-olvasó koszos. Tisztítsa meg, majd próbálkozzon újra."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"megjelenítés a képernyőn lévő egyéb alkalmazások előtt"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Információs értesítés a rutinmódról"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Előfordulhat, hogy az akkumulátor lemerül a szokásos töltési időszak előtt"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Akkumulátorkímélő mód aktiválva az akkumulátor üzemidejének növelése érdekében"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Betöltés"</string>
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 84280ac..e873140 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Թույլ է տալիս հավելվածին ճանաչել տեղադրության մասին տվյալները ձեր մեդիա բովանդակության հավաքածուից:"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> հավելվածը նույնականացում է հարցում"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Կենսաչափական սարքը հասանելի չէ"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Նույնականացումը չեղարկվեց"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Չհաջողվեց ճանաչել"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Նույնականացումը չեղարկվեց"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Մատնահետքը հայտնաբերվել է մասամբ: Փորձեք նորից:"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Չհաջողվեց մշակել մատնահետքը: Նորից փորձեք:"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Մատնահետքերի սենսորն աղտոտված է: Մաքրեք այն և փորձեք նորից:"</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Տեսախցիկ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Խոսափող"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ցուցադրվում է մյուս հավելվածների վերևում"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Ծանուցում լիցքավորման մասին"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Մարտկոցի լիցքը կարող է սովորականից շուտ սպառվել"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Մարտկոցի կյանքը երկարացնելու համար ակտիվացվել է մարտկոցի տնտեսման ռեժիմը"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Բեռնում"</string>
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 905d3f2..299305f 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Mengizinkan aplikasi untuk membaca lokasi dari koleksi media Anda."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikasi <xliff:g id="APP">%s</xliff:g> meminta autentikasi."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Hardware biometrik tidak tersedia"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentikasi dibatalkan"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Tidak dikenali"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentikasi dibatalkan"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Sebagian sidik jari terdeteksi. Coba lagi."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Tidak dapat memproses sidik jari. Coba lagi."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sensor sidik jari kotor. Bersihkan dan coba lagi."</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 432fc7e..94030bb 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Leyfir forritinu að lesa staðsetningar úr efnissafninu þínu."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> forritið vill staðfestingu."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Lífkennavélbúnaður ekki tiltækur"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Hætt við auðkenningu"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Þekktist ekki"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Hætt við auðkenningu"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Hluti fingrafars greindist. Reyndu aftur."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Ekki var hægt að vinna úr fingrafarinu. Reyndu aftur."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingrafaraskynjarinn er óhreinn. Hreinsaðu hann og reyndu aftur."</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index d76049d..3be8acb 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Consente all\'app di leggere le posizioni dalla tua raccolta multimediale."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"L\'app <xliff:g id="APP">%s</xliff:g> richiede l\'autenticazione."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Hardware biometrico non disponibile"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autenticazione annullata"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Non riconosciuto"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autenticazione annullata"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Rilevata impronta digitale parziale. Riprova."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Impossibile elaborare l\'impronta digitale. Riprova."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Il sensore di impronte digitali è sporco. Puliscilo e riprova."</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index df9631ee..d3cdd09 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -539,11 +539,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"מאפשרת לאפליקציה לקרוא מיקומים מאוסף המדיה שלך."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"האפליקציה <xliff:g id="APP">%s</xliff:g> רוצה לבצע אימות."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"חומרה ביומטרית לא זמינה"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"האימות בוטל"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"לא זוהתה"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"האימות בוטל"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"זוהתה טביעת אצבע חלקית. נסה שוב."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"לא ניתן היה לעבד את טביעת האצבע. נסה שוב."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"החיישן של טביעות האצבעות מלוכלך. נקה אותו ונסה שוב."</string>
@@ -2049,11 +2047,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"מצלמה"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"מיקרופון"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"תצוגה מעל אפליקציות אחרות במסך"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"התראת מידע לגבי מצב שגרתי"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"הסוללה עלולה להתרוקן לפני המועד הרגיל של הטעינה"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"תכונת החיסכון בסוללה הופעלה כדי להאריך את חיי הסוללה"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"בטעינה"</string>
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 991ef13..583ed78 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"メディア コレクションの位置情報の読み取りをアプリに許可します。"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"アプリ <xliff:g id="APP">%s</xliff:g> が認証を求めています。"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"生体認証ハードウェアが利用できません"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"認証をキャンセルしました"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"認識されませんでした"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"認証をキャンセルしました"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"指紋を一部しか検出できませんでした。もう一度お試しください。"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"指紋を処理できませんでした。もう一度お試しください。"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指紋認証センサーに汚れがあります。汚れを落としてもう一度お試しください。"</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"カメラ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"マイク"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"画面の他のアプリの上に重ねて表示"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"ルーティン モード情報の通知"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"通常の充電を行う前に電池が切れる可能性があります"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"電池を長持ちさせるため、バッテリー セーバーが有効になりました"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"読み込んでいます"</string>
</resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index cfce254..2356fd4 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"აპი შეძლებს მდებარეობების გაცნობას თქვენი მედიაკოლექციიდან."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"აპლიკაცია <xliff:g id="APP">%s</xliff:g> ითხოვს ავტორიზაციას."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ბიომეტრიული აპარატურა მიუწვდომელია"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"ავტორიზაცია გაუქმდა"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"არ არის ამოცნობილი"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"ავტორიზაცია გაუქმდა"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"აღმოჩენილია თითის ნაწილობრივი ანაბეჭდი. გთხოვთ, სცადოთ ხელახლა."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"თითის ანაბეჭდი ვერ მუშავდება. გთხოვთ, სცადოთ ხელახლა."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"თითის ანაბეჭდის სენსორი დაბინძურებულია. გთხოვთ, გაასუფთაოთ და სცადოთ ხელახლა."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"კამერა"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"მიკროფონი"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"სხვა აპების გადაფარვით ჩანს თქვენს ეკრანზე"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"რუტინის რეჟიმის საინფორმაციო შეტყობინება"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"ბატარეა შეიძლება დაჯდეს დატენის ჩვეულ დრომდე"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"ბატარეის დამზოგი გააქტიურდა ბატარეის მუშაობის გასახანგრძლივლებლად"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"იტვირთება"</string>
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index fb70fa9..f714ebe 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Қолданбаға медиамазмұн жинағынан геодеректерді оқуға мүмкіндік береді."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> қолданбасына аутентификация қажет."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Биометрикалық жабдық жоқ"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Аутентификациядан бас тартылды."</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Танылмады"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Аутентификациядан бас тартылды."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Саусақ ізі ішінара анықталды. Әрекетті қайталаңыз."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Саусақ ізін өңдеу мүмкін емес. Әрекетті қайталаңыз."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Саусақ ізі сенсоры лас. Тазалап, әрекетті қайталаңыз."</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"экранда басқа қолданбалардың үстінен көрсету"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Режим туралы хабарландыру"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Батарея заряды азаюы мүмкін"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Батарея ұзаққа жетуі үшін, Battery Saver іске қосылды"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Жүктелуде"</string>
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 9cc64ab..aa1adc8 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"អនុញ្ញាតឱ្យកម្មវិធីអានទីតាំងពីបណ្ដុំមេឌៀរបស់អ្នក។"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"កម្មវិធី <xliff:g id="APP">%s</xliff:g> ចង់ធ្វើការផ្ទៀងផ្ទាត់។"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"មិនអាចប្រើឧបករណ៍ស្កេនស្នាមម្រាមដៃបានទេ"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"បានបោះបង់ការផ្ទៀងផ្ទាត់"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"មិនអាចសម្គាល់បានទេ"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"បានបោះបង់ការផ្ទៀងផ្ទាត់"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"បានផ្តិតយកស្នាមម្រាមដៃមិនពេញលក្ខណៈ។ សូមព្យាយាមម្តងទៀត។"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"មិនអាចដំណើរការស្នាមម្រាមដៃបានទេ។ សូមព្យាយាមម្តងទៀត។"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ឧបករណ៍ផ្តិតម្រាមដៃប្រលាក់ហើយ។ សូមសម្អាត ហើយព្យាយាមម្តងទៀត។"</string>
@@ -1981,11 +1979,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"កាមេរ៉ា"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"មីក្រូហ្វូន"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"កំពុងបង្ហាញពីលើកម្មវិធីផ្សេងទៀតនៅលើអេក្រង់របស់អ្នក"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"ការជូនដំណឹងព័ត៌មានរបស់មុខងារទម្លាប់"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"ថ្មអាចនឹងអស់ មុនពេលសាកថ្មធម្មតា"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"បានបើកដំណើរការកម្មវិធីសន្សំថ្ម ដើម្បីបង្កើនកម្រិតថាមពលថ្ម"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"កំពុងផ្ទុក"</string>
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index d6cde26..f33e297 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"ನಿಮ್ಮ ಮೀಡಿಯಾ ಸಂಗ್ರಹಣೆಯಿಂದ ಸ್ಥಳಗಳನ್ನು ಓದಲು ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> ಆ್ಯಪ್ಗೆ ದೃಢೀಕರಣದ ಅಗತ್ಯವಿದೆ."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ಬಯೋಮೆಟ್ರಿಕ್ ಹಾರ್ಡ್ವೇರ್ ಲಭ್ಯವಿಲ್ಲ"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"ಪ್ರಮಾಣೀಕರಣವನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"ಗುರುತಿಸಲಾಗಿಲ್ಲ"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"ಪ್ರಮಾಣೀಕರಣವನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ಭಾಗಶಃ ಬೆರಳಚ್ಚು ಪತ್ತೆಯಾಗಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ಬೆರಳಚ್ಚು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ಬೆರಳಚ್ಚು ಸೆನ್ಸಾರ್ ಕೊಳೆಯಾಗಿದೆ. ದಯವಿಟ್ಟು ಅದನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ಕ್ಯಾಮರಾ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ಮೈಕ್ರೋಫೋನ್"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಮೂಲಕ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"ದೈನಂದಿನ ಸ್ಥಿತಿಯ ಮಾಹಿತಿಯ ಅಧಿಸೂಚನೆ"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"ಚಾರ್ಜ್ಗೆ ಮೊದಲೆ ಬ್ಯಾಟರಿ ಮುಗಿದು ಬಿಡಬಹುದು"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"ಬ್ಯಾಟರಿ ಅವಧಿ ಹೆಚ್ಚಿಸಲು ಬ್ಯಾಟರಿ ಸೇವರ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"ಲೋಡ್ ಆಗುತ್ತಿದೆ"</string>
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 05ab555..0e725a3 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"앱에서 미디어 컬렉션의 위치를 읽도록 허용합니다."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> 애플리케이션에서 인증을 요청합니다"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"생체 인식 하드웨어를 사용할 수 없음"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"인증이 취소되었습니다."</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"인식할 수 없음"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"인증이 취소되었습니다."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"지문이 일부만 인식되었습니다. 다시 시도해 주세요."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"지문을 인식할 수 없습니다. 다시 시도해 주세요."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"지문 센서를 깨끗이 닦고 다시 시도하세요."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"카메라"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"마이크"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"화면에서 다른 앱 위에 표시"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"루틴 모드 정보 알림"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"평소에 충전하는 시간 전에 배터리가 소진될 수 있습니다."</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"배터리 수명을 연장하기 위해 배터리 세이버가 활성화되었습니다."</string>
<string name="car_loading_profile" msgid="3545132581795684027">"로드 중"</string>
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 88f0ef2..3e3ef6a 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Колдонмого медиа жыйнагыңыз сакталган жерлерди окууга мүмкүнчүлүк берет."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> колдонмосунда аутентификациядан өтүңүз."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Биометрикалык аппарат жеткиликсиз"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Аныктыгын текшерүү жокко чыгарылды"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Таанылган жок"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Аныктыгын текшерүү жокко чыгарылды"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Манжа изи жарым-жартылай аныкталды. Кайра аракет кылыңыз."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Манжа изи иштелбей койду. Кайра аракет кылыңыз."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Манжа изинин сенсору кирдеп калган. Тазалап, кайра аракет кылыңыз."</string>
@@ -1981,11 +1979,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"экрандагы башка терезелердин үстүнөн көрсөтүлүүдө"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Режимдин адаттагы билдирмеси"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Батарея кубаттоого чейин отуруп калышы мүмкүн"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Батареянын отуруп калбашы үчүн Батареяны үнөмдөгүч режими иштетилди"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Жүктөлүүдө"</string>
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 7a5ab96..a63cd59 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"ອະນຸຍາດໃຫ້ແອັບອ່ານສະຖານທີ່ຈາກຄໍເລັກຊັນມີເດຍຂອງທ່ານ."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"ແອັບພລິເຄຊັນ <xliff:g id="APP">%s</xliff:g> ຕ້ອງການກວດຮັບຮອງຄວາມຖືກຕ້ອງ."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ຮາດແວຊີວະມິຕິບໍ່ສາມາດໃຊ້ໄດ້"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"ຍົກເລີກການຮັບຮອງຄວາມຖືກຕ້ອງແລ້ວ"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"ບໍ່ຮັບຮູ້"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"ຍົກເລີກການຮັບຮອງຄວາມຖືກຕ້ອງແລ້ວ"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ກວດພົບລາຍນີ້ວມືບາງສ່ວນແລ້ວ. ກະລຸນາລອງໃໝ່ອີກ."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ບໍ່ສາມາດດຳເນີນການລາຍນີ້ວມືໄດ້. ກະລຸນາລອງໃໝ່ອີກ."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ເຊັນເຊີລາຍນີ້ວມືເປື້ອນ. ກະລຸນາທຳຄວາມສະອາດ ແລະລອງໃໝ່ອີກ."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ກ້ອງ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ໄມໂຄຣໂຟນ"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ສະແດງຜົນບັງແອັບອື່ນຢູ່ໜ້າຈໍຂອງທ່ານ"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"ການແຈ້ງເຕືອນຂໍ້ມູນໂໝດກິດຈະວັດປະຈຳວັນ"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"ແບັດເຕີຣີອາດໝົດກ່ອນການສາກຕາມປົກກະຕິ"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"ເປີດຕົວປະຢັດແບັດເຕີຣີເພື່ອຂະຫຍາຍອາຍຸແບັດເຕີຣີ"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"ກຳລັງໂຫລດ"</string>
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 90ed406..0c0887b 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -539,11 +539,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Programai leidžiama skaityti vietoves iš medijos kolekcijos."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Programa „<xliff:g id="APP">%s</xliff:g>“ nori jus autentifikuoti."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrinė aparatinė įranga nepasiekiama"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentifikavimas atšauktas"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Neatpažinta"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentifikavimas atšauktas"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Aptiktas dalinis piršto antspaudas. Bandykite dar kartą."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nepavyko apdoroti piršto antspaudo. Bandykite dar kartą."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Piršto antspaudo jutiklis purvinas. Nuvalykite ir bandykite dar kartą."</string>
@@ -2049,11 +2047,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotoaparatas"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofonas"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"rodo virš kitų programų jūsų ekrane"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Veiksmų sekos režimo informacijos pranešimas"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Akumuliatoriaus energija gali išsekti prieš įprastą įkrovimą"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Akumuliatoriaus tausojimo priemonė suaktyvinta, kad akumuliatorius veiktų ilgiau"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Įkeliama"</string>
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index e58b462..b802fee 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -536,11 +536,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Ļauj lietotnei lasīt atrašanās vietas no jūsu multivides kolekcijas."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Lietotne <xliff:g id="APP">%s</xliff:g> pieprasa autentificēt."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrisko datu aparatūra nav pieejama"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentifikācija ir atcelta"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Dati nav atpazīti"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentifikācija ir atcelta"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Noteikts daļējs pirksta nospiedums. Lūdzu, mēģiniet vēlreiz."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nevarēja apstrādāt pirksta nospiedumu. Lūdzu, mēģiniet vēlreiz."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Pirkstu nospiedumu sensors ir netīrs. Lūdzu, notīriet to un mēģiniet vēlreiz."</string>
@@ -2014,11 +2012,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofons"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"rāda pāri citām lietotnēm jūsu ekrānā"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Informatīvs paziņojums par akumulatoru"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Akumulators var izlādēties pirms parastā uzlādes laika"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Aktivizēts akumulatora jaudas taupīšanas režīms, lai palielinātu akumulatora darbības ilgumu"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Ielāde"</string>
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 8bede29..9c66edc 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Дозволува апликацијата да чита локации од вашата збирка на аудиовизуелни содржини."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Апликацијата <xliff:g id="APP">%s</xliff:g> сака да ве провери."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Биометрискиот хардвер е недостапен"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Проверката е откажана"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Непознат"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Проверката е откажана"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Откриен е делумен отпечаток. Обидете се повторно."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Отпечатокот не можеше да се обработи. Обидете се повторно."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Сензорот за отпечатоци е валкан. Исчистете го и обидете се повторно."</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 190341b..76d2daf 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"നിങ്ങളുടെ മീഡിയ ശേഖരത്തിൽ നിന്നും ലൊക്കേഷനുകൾ റീഡ് ചെയ്യുന്നതിന് ആപ്പിനെ അനുവദിക്കുന്നു."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> ആപ്പിന് നിങ്ങളെ പരിശോധിച്ചുറപ്പിക്കണം."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ബയോമെട്രിക് ഹാർഡ്വെയർ ലഭ്യമല്ല"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"പരിശോധിച്ചുറപ്പിക്കൽ റദ്ദാക്കി"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"തിരിച്ചറിഞ്ഞില്ല"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"പരിശോധിച്ചുറപ്പിക്കൽ റദ്ദാക്കി"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"വിരലടയാളം ഭാഗികമായി തിരിച്ചറിഞ്ഞു. വീണ്ടും ശ്രമിക്കുക."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"വിരലടയാളം പ്രോസസ്സ് ചെയ്യാനായില്ല. വീണ്ടും ശ്രമിക്കുക."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"വിരലടയാള സെൻസറിന് വൃത്തിയില്ല. അത് ശുചിയാക്കി വീണ്ടും ശ്രമിക്കുക."</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ക്യാമറ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"മൈക്രോഫോൺ"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"നിങ്ങളുടെ സ്ക്രീനിലെ മറ്റ് ആപ്പുകൾക്ക് മുകളിൽ പ്രദർശിപ്പിക്കുന്നു"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"ദിനചര്യ മോഡ് വിവരത്തെ കുറിച്ചുള്ള അറിയിപ്പ്"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"സാധാരണയുള്ളതിലും നേരത്തെ ബാറ്ററിയുടെ ചാർജ് തീർന്നേക്കാം"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"ബാറ്ററി ലൈഫ് വര്ദ്ധിപ്പിക്കാൻ, ബാറ്ററി ലാഭിക്കൽ സജീവമാക്കി"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"ലോഡ് ചെയ്യുന്നു"</string>
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index f22974d..1e2746c 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Таны медиа цуглуулгаас байршлыг унших зөвшөөрлийг аппад олгодог."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> апп баталгаажуулахыг хүсэж байна."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Биометрийн техник хангамж боломжгүй байна"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Нотолгоог цуцаллаа"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Таниагүй"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Нотолгоог цуцаллаа"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Хурууны хээг дутуу уншуулсан байна. Дахин оролдоно уу."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Хурууны хээ боловсруулж чадахгүй байна. Дахин оролдоно уу."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Хурууны хээ мэдрэгч бохирдсон байна. Та цэвэрлэсний дараагаар дахин оролдоно уу."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камер"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"таны дэлгэцэд бусад аппын дээр харуулж байна"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Хэвшлийн горимын мэдээллийн мэдэгдэл"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Батарей ихэвчлэн цэнэглэдэг хугацаанаас өмнө дуусаж болзошгүй"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Батарейны ажиллах хугацааг уртасгахын тулд Батарей хэмнэгчийг идэвхжүүллээ"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Ачаалж байна"</string>
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 1792887..240a3bf 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"अॅपला तुमच्या मीडिया संग्रहामध्येील स्थाने वाचण्यासाठी अनुमती देते."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"अॅप्लिकेशन <xliff:g id="APP">%s</xliff:g>ला ऑथेंटिकेट करायचे आहे."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"बायोमेट्रिक हार्डवेअर उपलब्ध नाही"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"ऑथेंटिकेशन रद्द केले"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"ओळखले नाही"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"ऑथेंटिकेशन रद्द केले"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"आंशिक फिंगरप्रिंट आढळली. कृपया पुन्हा प्रयत्न करा."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"फिंगरप्रिंटवर प्रक्रिया करणे शक्य झाले नाही. कृपया पुन्हा प्रयत्न करा."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"फिंगरप्रिंट सेन्सर खराब आहे. कृपया साफ करा आणि पुन्हा प्रयत्न करा."</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"कॅमेरा"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"मायक्रोफोन"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"तुमच्या स्क्रीनवर इतर अॅप्सवर डिस्प्ले करत आहे"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"दिनक्रम मोडची माहिती सूचना"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"चार्जिंगची सामान्य पातळी गाठेपर्यंत कदाचित बॅटरी संपू शकते"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"बॅटरी लाइफ वाढवण्यासाठी बॅटरी सेव्हर सुरू केला आहे"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"लोड होत आहे"</string>
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 1055ca6..c3c863a 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Membenarkan apl membaca lokasi daripada koleksi media anda."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikasi <xliff:g id="APP">%s</xliff:g> mahu membuat pengesahan."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Perkakasan biometrik tidak tersedia"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Pengesahan dibatalkan"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Tidak dikenali"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Pengesahan dibatalkan"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Cap jari separa dikesan. Sila cuba lagi."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Tidak dapat memproses cap jari. Sila cuba lagi."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Penderia cap jari kotor. Sila bersihkan dan cuba lagi."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"dipaparkan di atas apl lain pada skrin anda"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Pemberitahuan maklumat Mod Rutin"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Bateri mungkin habis sebelum pengecasan biasa"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Penjimat Bateri diaktifkan untuk memanjangkan hayat bateri"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Memuatkan"</string>
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 651affc..c036730 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"အက်ပ်အား သင့်မီဒီယာစုစည်းမှုမှ တည်နေရာများကို ဖတ်ခွင့်ပေးသည်။"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"အပလီကေးရှင်း <xliff:g id="APP">%s</xliff:g> က အထောက်အထားစိစစ်လိုသည်။"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ဇီဝအချက်အလက်သုံး ကွန်ပျူတာစက်ပစ္စည်း မရရှိနိုင်ပါ"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"အထောက်အထားစိစစ်ခြင်းကို ပယ်ဖျက်လိုက်သည်"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"မသိပါ"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"အထောက်အထားစိစစ်ခြင်းကို ပယ်ဖျက်လိုက်သည်"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"လက်ဗွေရဦ တစ်ပိုင်းတစ်စ တွေ့ရှိသည်။ ကျေးဇူးပြု၍ ထပ်မံကြိုးစားပါ။"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"လက်ဗွေရာယူခြင်း မဆောင်ရွက်နိုင်ပါ။ ထပ်မံကြိုးစားပါ။"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"လက်ဗွေရာဖတ်ကိရိယာ ညစ်ပေနေသည်။ ကျေးဇူးပြု၍ ရှင်းလင်းကာ ထပ်မံကြိုးစားပါ။"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 1f70767..e479834 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Lar appen lese posisjoner fra mediesamlingen din."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Appen <xliff:g id="APP">%s</xliff:g> vil autentisere."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrisk maskinvare er utilgjengelig"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentiseringen er avbrutt"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Ikke gjenkjent"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentiseringen er avbrutt"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Deler av fingeravtrykket er registrert. Prøv på nytt."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Kunne ikke registrere fingeravtrykket. Prøv på nytt."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingeravtrykksensoren er skitten. Rengjør den og prøv på nytt."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"vises over andre apper på skjermen"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Varsel med informasjon om rutinemodus"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Batteriet kan gå tomt før den vanlige ladingen"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Batterisparing er aktivert for å forlenge batterilevetiden"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Laster inn"</string>
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index d278fbe..b892255 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"यसले अनुप्रयोगलाई तपाईंको मिडिया सङ्ग्रहका स्थानहरू पढ्न दिन्छ।"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"अनुप्रयोग <xliff:g id="APP">%s</xliff:g> ले प्रमाणीकरण गर्न चाहन्छ।"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"बायोमेट्रिक हार्डवेयर उपलब्ध छैन"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"प्रमाणीकरण रद्द गरियो"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"पहिचान भएन"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"प्रमाणीकरण रद्द गरियो"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"आंशिक औठाछाप पत्ता लाग्यो। कृपया फेरि प्रयास गर्नुहोस्।"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"औठाछाप प्रशोधन गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस्।"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"औँठाछाप सेन्सर फोहोर छ। कृपया सफा गरेर फेरि प्रयास गर्नुहोस्।"</string>
@@ -1985,11 +1983,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"क्यामेरा"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"माइक्रोफोन"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"तपाईंको स्क्रिनका अन्य अनुप्रयोगहरूमा प्रदर्शन गरिँदै छ"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"दिनचर्या मोडको जानकारीमूलक सूचना"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"प्रायः चार्ज गर्ने समय हुनुभन्दा पहिले नै ब्याट्री सकिन सक्छ"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"ब्याट्रीको आयु बढाउन ब्याट्री सेभर सक्रिय गरियो"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"लोड गर्दै"</string>
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 752fbc2..c552f00 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Hiermee sta je de app toe locaties van je mediacollectie te bekijken."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"App <xliff:g id="APP">%s</xliff:g> wil een verificatie uitvoeren."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrische hardware niet beschikbaar"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Verificatie geannuleerd"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Niet herkend"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Verificatie geannuleerd"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Gedeeltelijke vingerafdruk gedetecteerd. Probeer het opnieuw."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Kan vingerafdruk niet verwerken. Probeer het opnieuw."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"De vingerafdruksensor moet worden schoongemaakt. Probeer het daarna opnieuw."</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index f2c0f62..57d39ce 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"ଆପଣଙ୍କ ମିଡିଆ ସଂଗ୍ରହ ଠାରୁ ଅବସ୍ଥାନଗୁଡିକୁ ପଢିବାକୁ ଆପ୍ ଅନୁମତି ଦେଇଥାଏ।"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"ଆପ୍ଲିକେସନ୍ <xliff:g id="APP">%s</xliff:g> ପ୍ରମାଣିତକୃତ କରିବାକୁ ଚାହୁଁଛି।"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ବାୟୋମେଟ୍ରିକ୍ ହାର୍ଡୱେର୍ ଉପଲବ୍ଧ ନାହିଁ"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"ପ୍ରାମାଣିକତାକୁ ବାତିଲ୍ କରାଯାଇଛି"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"ଚିହ୍ନଟ ହେଲାନାହିଁ"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"ପ୍ରାମାଣିକତାକୁ ବାତିଲ୍ କରାଯାଇଛି"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ଆଂଶିକ ଚିହ୍ନଟ ହେଲା। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ପ୍ରୋସେସ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ସେନ୍ସର୍ ମଇଳା ହୋଇଯାଇଛି। ଦୟାକରି ସଫା କରନ୍ତୁ ଓ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"କ୍ୟାମେରା"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ମାଇକ୍ରୋଫୋନ୍"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ଆପଣଙ୍କ ସ୍କ୍ରୀନ୍ ଉପରେ ଥିବା ଅନ୍ୟ ଆପ୍ ଉପରେ ଦେଖାଦେବ"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"ନିୟମିତ ମୋଡ୍ ସୂଚନା ବିଜ୍ଞପ୍ତି"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"ସାଧାରଣ ଭାବରେ ଚାର୍ଜ୍ କରିବା ପୂର୍ବରୁ ବ୍ୟାଟେରୀ ସରିଯାଇପାରେ"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"ବ୍ୟାଟେରୀର ସମୟକୁ ବଢ଼ାଇବା ପାଇଁ ବ୍ୟଟେରୀ ସେଭର୍କୁ କାର୍ଯ୍ୟକାରୀ କରାଯାଇଛି"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"ଲୋଡ୍ ହେଉଛି"</string>
</resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 266b226..85afacb 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"ਐਪ ਨੂੰ ਤੁਹਾਡੇ ਮੀਡੀਆ ਸੰਗ੍ਰਹਿ ਦੇ ਟਿਕਾਣਿਆਂ ਨੂੰ ਪੜ੍ਹਨ ਦਿੰਦੀ ਹੈ।"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"ਐਪਲੀਕੇਸ਼ਨ <xliff:g id="APP">%s</xliff:g> ਪ੍ਰਮਾਣੀਕਰਨ ਕਰਨਾ ਚਾਹੁੰਦੀ ਹੈ।"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ਬਾਇਓਮੈਟ੍ਰਿਕ ਹਾਰਡਵੇਅਰ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"ਪ੍ਰਮਾਣੀਕਰਨ ਰੱਦ ਕੀਤਾ ਗਿਆ"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"ਪਛਾਣ ਨਹੀਂ ਹੋਈ"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"ਪ੍ਰਮਾਣੀਕਰਨ ਰੱਦ ਕੀਤਾ ਗਿਆ"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ਅਧੂਰਾ ਫਿੰਗਰਪ੍ਰਿਟ ਮਿਲਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨਹੀਂ ਕਰ ਸਕਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੰਵੇਦਕ ਗੰਦਾ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਇਸਨੂੰ ਸਾਫ਼ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ਕੈਮਰਾ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਹੋਰਾਂ ਐਪਾਂ ਉੱਪਰ ਦਿਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"ਨਿਯਮਬੱਧ ਮੋਡ ਦੀ ਜਾਣਕਾਰੀ ਵਾਲੀ ਸੂਚਨਾ"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"ਬੈਟਰੀ ਚਾਰਜ ਕਰਨ ਦੇ ਮਿੱਥੇ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਸ਼ਾਇਦ ਬੈਟਰੀ ਖਤਮ ਹੋ ਜਾਵੇ"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"ਬੈਟਰੀ ਲਾਈਫ਼ ਵਧਾਉਣ ਲਈ ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index a86d5a6..08d56e4 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -539,11 +539,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Zezwala aplikacji na odczytywanie lokalizacji z kolekcji multimediów."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikacja <xliff:g id="APP">%s</xliff:g> wymaga uwierzytelnienia."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Sprzęt biometryczny niedostępny"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Anulowano uwierzytelnianie"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nie rozpoznano"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Anulowano uwierzytelnianie"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Odcisk palca został odczytany tylko częściowo. Spróbuj ponownie."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nie udało się przetworzyć odcisku palca. Spróbuj ponownie."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Czytnik linii papilarnych jest zabrudzony. Wyczyść go i spróbuj ponownie."</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 44f8478..38368d3 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que o app leia os locais na sua coleção de mídias."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"O app <xliff:g id="APP">%s</xliff:g> está solicitando autenticação."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Hardware biométrico indisponível"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autenticação cancelada"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Não reconhecido"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autenticação cancelada"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Impressão digital parcial detectada. Tente novamente."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Não foi possível processar a impressão digital. Tente novamente."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impressão digital está sujo. Limpe-o e tente novamente."</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index f7ffa1d..67fe5b6 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que a aplicação leia as localizações a partir da sua coleção de multimédia."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"A aplicação <xliff:g id="APP">%s</xliff:g> pretende uma autenticação"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Hardware biométrico indisponível."</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autenticação cancelada"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Não reconhecido."</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autenticação cancelada"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Impressão digital detetada. Tente novamente."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Não foi possível processar a impressão digital. Tente novamente."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impressões digitais está sujo. Limpe-o e tente novamente."</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 44f8478..38368d3 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que o app leia os locais na sua coleção de mídias."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"O app <xliff:g id="APP">%s</xliff:g> está solicitando autenticação."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Hardware biométrico indisponível"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autenticação cancelada"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Não reconhecido"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autenticação cancelada"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Impressão digital parcial detectada. Tente novamente."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Não foi possível processar a impressão digital. Tente novamente."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impressão digital está sujo. Limpe-o e tente novamente."</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index f3303c4..501d7cc 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -536,11 +536,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite aplicației să citească locațiile din colecția dvs. media."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplicația <xliff:g id="APP">%s</xliff:g> dorește să se autentifice."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Hardware biometric indisponibil"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentificarea a fost anulată"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nu este recunoscut"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentificarea a fost anulată"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"S-a detectat parțial amprenta. Încercați din nou."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Amprenta nu a putut fi procesată. Încercați din nou."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzorul pentru amprente este murdar. Curățați-l și încercați din nou."</string>
@@ -2014,11 +2012,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Cameră foto"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microfon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"se afișează peste alte aplicații de pe ecran"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Notificare pentru informații despre modul Rutină"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Bateria se poate descărca înainte de încărcarea obișnuită"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Economisirea bateriei este activată pentru a prelungi durata de funcționare a bateriei"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Se încarcă"</string>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index fde1c5d..8cb2d69 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -539,11 +539,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Приложение получит доступ к геоданным в вашей медиаколлекции."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Приложение \"<xliff:g id="APP">%s</xliff:g>\" запрашивает аутентификацию"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Биометрическое оборудование недоступно"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Аутентификация отменена"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Не распознано"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Аутентификация отменена"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Отсканирована только часть пальца. Повторите попытку."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Не удалось распознать отпечаток. Повторите попытку."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Очистите сканер и повторите попытку."</string>
@@ -2049,11 +2047,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"показ поверх других окон"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Уведомление о батарее"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Батарея может разрядиться"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Чтобы увеличить время работы от батареи, был включен режим энергосбережения."</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Загрузка"</string>
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index baa0387..4163033 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"ඔබගේ මාධ්ය එකතුවෙන් ස්ථාන කියවීමට යෙදුමට ඉඩ දෙයි."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> යෙදුම වෙත සත්යාපනය කිරීමට අවශ්යයි."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ජීවමිතික දෘඪාංග ලබා ගත නොහැකිය"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"සත්යාපනය අවලංගු කළා"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"හඳුනා නොගන්නා ලදී"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"සත්යාපනය අවලංගු කළා"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ඇඟිලි සලකුණ අඩ වශයෙන් අනාවරණය කර ගැනිණි. කරුණාකර නැවත උත්සාහ කරන්න."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ඇඟිලි සලකුණ පිරිසැකසීමට නොහැකි විය. කරුණාකර නැවත උත්සාහ කරන්න."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ඇඟිලි සලකුණු සංවේදකය අපිරිසිදුයි. කරුණාකර පිරිසිදු කර නැවත උත්සාහ කරන්න."</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 2942537..8905d2a 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -539,11 +539,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Umožňuje aplikácii čítať polohy zo zbierky médií."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikácia <xliff:g id="APP">%s</xliff:g> chce overiť totožnosť"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrický hardvér nie je k dispozícii"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Overenie bolo zrušené"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nerozpoznané"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Overenie bolo zrušené"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Podarilo sa rozpoznať iba časť odtlačku prsta. Skúste to znova."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Odtlačok prsta sa nepodarilo spracovať. Skúste to znova."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Snímač odtlačkov je špinavý. Vyčistite ho a skúste to znova."</string>
@@ -2049,11 +2047,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotoaparát"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofón"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"sa zobrazuje cez ďalšie aplikácie na obrazovke"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Upozornenie s informáciami o rutinnom režime"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Batéria sa môže vybiť pred obvyklým nabitím"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Bol aktivovaný šetrič batérie na predĺženie výdrže batérie"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Načítava sa"</string>
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index d3f0872..9c20748 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -539,11 +539,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Aplikaciji omogoča branje lokacij v predstavnostni zbirki."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikacija <xliff:g id="APP">%s</xliff:g> želi preveriti pristnost."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Strojna oprema za biometrične podatke ni na voljo"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Preverjanje pristnosti je preklicano"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Ni prepoznano"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Preverjanje pristnosti je preklicano"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Zaznan delni prstni odtis. Poskusite znova."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Prstnega odtisa ni bilo mogoče obdelati. Poskusite znova."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Tipalo prstnih odtisov je umazano. Očistite ga in poskusite znova."</string>
@@ -2049,11 +2047,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotoaparat"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"prekriva druge aplikacije na zaslonu"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Rutinsko informativno obvestilo o načinu delovanja"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Akumulator se bo morda izpraznil, preden ga običajno priključite na polnjenje"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Vklopilo se je varčevanje z energijo akumulatorja za podaljšanje časa delovanja akumulatorja"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Nalaganje"</string>
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 89afb1a..222b1d2 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Lejon aplikacionin të lexojë vendndodhjet nga koleksioni yt i medias."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Aplikacioni <xliff:g id="APP">%s</xliff:g> dëshiron të vërtetojë."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Nuk ofrohet harduer biometrik"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Vërtetimi u anulua"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Nuk njihet"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Vërtetimi u anulua"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"U zbulua një gjurmë gishti e pjesshme. Provo përsëri."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Gjurma e gishtit nuk mund të përpunohej. Provo përsëri."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sensori i gjurmës së gishtit nuk është i pastër. Pastroje dhe provo përsëri."</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 19f88cf..58fde19 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -536,11 +536,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Дозвољава апликацији да чита локације из медијске колекције."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Апликација <xliff:g id="APP">%s</xliff:g> жели да потврди ваш идентитет."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Биометријски хардвер није доступан"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Потврда идентитета је отказана"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Није препознато"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Потврда идентитета је отказана"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Откривен је делимични отисак прста. Пробајте поново."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Није успела обрада отиска прста. Пробајте поново."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Сензор за отиске прстију је прљав. Очистите га и покушајте поново."</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index fcae364..2412f64 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Tillåter att appen läser av platser i din mediesamling."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Appen <xliff:g id="APP">%s</xliff:g> vill autentisera"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrisk maskinvara är inte tillgänglig"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentiseringen avbröts"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Identifierades inte"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentiseringen avbröts"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Ofullständigt fingeravtryck. Försök igen."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Det gick inte att bearbeta fingeravtrycket. Försök igen."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingeravtryckssensorn är smutsig. Rengör den och försök igen."</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index be7c301..2e2904d 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Inaruhusu programu kusoma maeneo kwenye mkusanyiko wa vipengee vyako."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Programu ya <xliff:g id="APP">%s</xliff:g> inataka kuthibitishwa."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Maunzi ya bayometriki hayapatikani"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Imeghairi uthibitishaji"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Hayatambuliki"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Imeghairi uthibitishaji"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Kitambuzi kimegundua sehemu ya kitambulisho. Tafadhali jaribu tena."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Haikuweza kuchakata kitambulisho. Tafadhali jaribu tena."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Kitambuzi alama ya kidole ni kichafu. Tafadhali kisafishe na ujaribu tena."</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 117f071..b3c2ebf 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"உங்களின் மீடியா தொகுப்பிலிருந்து இடங்களை அறிந்துகொள்ள ஆப்ஸை அனுமதிக்கும்."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g>ஐப் பயன்படுத்த அங்கீகாரத்தை உறுதிசெய்க."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"பயோமெட்ரிக் வன்பொருள் இல்லை"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"அங்கீகரிப்பு ரத்தானது"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"அடையாளங்காணபடவில்லை"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"அங்கீகரிப்பு ரத்தானது"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"கைரேகையை ஓரளவுதான் கண்டறிய முடிந்தது. மீண்டும் முயலவும்."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"கைரேகையைச் செயலாக்க முடியவில்லை. மீண்டும் முயலவும்."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"கைரேகை உணர்வியில் தூசி உள்ளது. சுத்தம் செய்து, முயலவும்."</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 654585d..5d8c0a8 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"మీ మీడియా సేకరణ నుండి స్థానాలను చదవడానికి యాప్ను అనుమతిస్తుంది."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"అప్లికేషన్ <xliff:g id="APP">%s</xliff:g>కు ప్రమాణీకరణ అవసరం."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"బయోమెట్రిక్ హార్డ్వేర్ అందుబాటులో లేదు"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"ప్రమాణీకరణ రద్దు చేయబడింది"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"గుర్తించలేదు"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"ప్రమాణీకరణ రద్దు చేయబడింది"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"పాక్షిక వేలిముద్ర గుర్తించబడింది. దయచేసి మళ్లీ ప్రయత్నించండి."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"వేలిముద్రను ప్రాసెస్ చేయడం సాధ్యపడలేదు. దయచేసి మళ్లీ ప్రయత్నించండి."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"వేలిముద్ర సెన్సార్ మురికిగా ఉంది. దయచేసి శుభ్రపరిచి, మళ్లీ ప్రయత్నించండి."</string>
@@ -1528,7 +1526,7 @@
<string name="action_menu_overflow_description" msgid="2295659037509008453">"మరిన్ని ఎంపికలు"</string>
<string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
<string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="3570990907910199483">"అంతర్గత భాగస్వామ్య నిల్వ"</string>
+ <string name="storage_internal" msgid="3570990907910199483">"షేర్ చేయబడిన అంతర్గత నిల్వ"</string>
<string name="storage_sd_card" msgid="3282948861378286745">"SD కార్డు"</string>
<string name="storage_sd_card_label" msgid="6347111320774379257">"<xliff:g id="MANUFACTURER">%s</xliff:g> SD కార్డ్"</string>
<string name="storage_usb_drive" msgid="6261899683292244209">"USB డ్రైవ్"</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"కెమెరా"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"మైక్రోఫోన్"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"మీ స్క్రీన్పై ఇతర యాప్ల ద్వారా ప్రదర్శించబడుతోంది"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"రొటీన్ మోడ్ సమాచార నోటిఫికేషన్"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"మామూలుగా ఛార్జ్ చేసేలోపు బ్యాటరీ ఖాళీ కావచ్చు"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"బ్యాటరీ జీవితకాలాన్ని పెంచడానికి బ్యాటరీ సేవర్ యాక్టివేట్ చేయబడింది"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"లోడవుతోంది"</string>
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index ca8f529..427793a 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"อนุญาตให้แอปอ่านตำแหน่งจากคอลเล็กชันสื่อของคุณ"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"แอปพลิเคชัน <xliff:g id="APP">%s</xliff:g> ต้องการตรวจสอบสิทธิ์"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"ฮาร์ดแวร์ไบโอเมตริกไม่พร้อมใช้งาน"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"ยกเลิกการตรวจสอบสิทธิ์แล้ว"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"ไม่รู้จัก"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"ยกเลิกการตรวจสอบสิทธิ์แล้ว"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ตรวจพบลายนิ้วมือเพียงบางส่วน โปรดลองอีกครั้ง"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ไม่สามารถประมวลผลลายนิ้วมือได้ โปรดลองอีกครั้ง"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"เซ็นเซอร์ลายนิ้วมือไม่สะอาด โปรดทำความสะอาดและลองอีกครั้ง"</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"กล้อง"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ไมโครโฟน"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"แสดงทับแอปอื่นๆ บนหน้าจอ"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"การแจ้งเตือนข้อมูลโหมดกิจวัตร"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"แบตเตอรี่อาจหมดก่อนการชาร์จปกติ"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"เปิดใช้งานโหมดประหยัดแบตเตอรี่แล้วเพื่อยืดอายุการใช้งานแบตเตอรี่"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"กำลังโหลด"</string>
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 31d906f..cd4818f6 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Pinapayagan ang app na basahin ang mga lokasyon mula sa iyong koleksyon ng media."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Gustong mag-authenticate ng app na <xliff:g id="APP">%s</xliff:g>."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Walang biometric hardware"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Nakansela ang pag-authenticate"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Hindi nakilala"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Nakansela ang pag-authenticate"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Hindi buo ang natukoy na fingerprint. Pakisubukang muli."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Hindi maproseso ang fingerprint. Pakisubukang muli."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Marumi ang sensor ng fingerprint. Pakilinis at subukang muli."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikropono"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ipinapakita sa ibabaw ng ibang app sa iyong screen"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Notification ng impormasyon ng Routine Mode"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Maaaring maubos ang baterya bago ang karaniwang pag-charge"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Na-activate ang Pangtipid sa Baterya para patagalin ang buhay ng baterya"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Naglo-load"</string>
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 75b19a9..92d3ba6 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Uygulamanın medya koleksiyonunuzdaki konumları okumasına izin verir."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> uygulaması kimlik doğrulamak istiyor."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biyometrik donanım kullanılamıyor"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Kimlik doğrulama iptal edildi"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Tanınmadı"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Kimlik doğrulama iptal edildi"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Parmak izinin tümü algılanamadı. Lütfen tekrar deneyin."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Parmak izi işlenemedi. Lütfen tekrar deneyin."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Parmak izi sensörü kirli. Lütfen temizleyin ve tekrar deneyin."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ekranınızdaki diğer uygulamaların üzerinde görüntüleniyor"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Rutin Modu bilgi bildirimi"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Pil normal şarjdan önce bitebilir"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Pilin ömrünü uzatmak için Pil Tasarrufu etkinleştirildi"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Yükleniyor"</string>
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 933d04a..80927ae 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -539,11 +539,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Додаток зможе розпізнавати геодані з вашої колекції медіа-вмісту."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Для додатка <xliff:g id="APP">%s</xliff:g> потрібна автентифікація."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Біометричне апаратне забезпечення недоступне"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Автентифікацію скасовано"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Не розпізнано"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Автентифікацію скасовано"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Відбиток розпізнано частково. Повторіть спробу."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Не вдалось обробити відбиток. Повторіть спробу."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Датчик відбитків забруднився. Очистьте його та повторіть спробу."</string>
@@ -2049,11 +2047,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Мікрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"показ поверх інших додатків на екрані"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Сповіщення про послідовнсть дій"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Акумулятор може розрядитися раніше ніж зазвичай"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Режим економії заряду акумулятора активовано для збільшення часу його роботи"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Завантаження"</string>
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 20f7621..9c99929 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"ایپ کو آپ کی میڈيا کے مجموعے سے مقامات پڑھنے کی اجازت دیتا ہے۔"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"ایپلیکیشن <xliff:g id="APP">%s</xliff:g> تصدیق کرنا چاہتی ہے۔"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"بایومیٹرک ہارڈ ویئر دستیاب نہیں ہے"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"تصدیق کا عمل منسوخ ہو گیا"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"تسلیم شدہ نہیں ہے"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"تصدیق کا عمل منسوخ ہو گیا"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"جزوی فنگر پرنٹ کی شناخت ہوئی۔ براہ کرم دوبارہ کوشش کریں۔"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"فنگر پرنٹ پر کارروائی نہیں کی جا سکی۔ براہ کرم دوبارہ کوشش کریں۔"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"فنگر پرنٹ سینسر گندا ہے۔ براہ کرم صاف کریں اور دوبارہ کوشش کریں۔"</string>
@@ -1980,11 +1978,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"کیمرا"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"مائیکروفون"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"آپ کی اسکرین پر دیگر ایپس پر دکھایا جا رہا ہے"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"روٹین موڈ معلومات کی اطلاع"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"معمول چارج سے پہلے بیٹری ختم ہو سکتی ہے"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"بیٹری لائف کو بڑھانے کے لیے بیٹری سیور کو فعال کر دیا گیا ہے"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"لوڈ ہو رہا ہے"</string>
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 3f20dc1..1b9982a 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Ilovaga multimedia to‘plamingizdan joylashuv axborotini o‘qishga ruxsat beradi."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g> ilovasi qurilma qulfini ochmoqchi."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Biometrik sensor ishlamayapti"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Autentifikatsiya bekor qilindi"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Aniqlanmadi"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Autentifikatsiya bekor qilindi"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Barmoq izi qisman aniqlandi. Qayta urinib ko‘ring."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Barmoq izi aniqlanmadi. Qayta urinib ko‘ring."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Barmoq izi skaneri kirlangan. Uni tozalab, keyin qayta urinib ko‘ring."</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 19c3913..ca283aa 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Cho phép ứng dụng này đọc vị trí từ bộ sưu tập phương tiện của bạn."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Ứng dụng <xliff:g id="APP">%s</xliff:g> muốn xác thực."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"Không có phần cứng sinh trắc học"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Đã hủy xác thực"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Không nhận dạng được"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Đã hủy xác thực"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Đã phát hiện được một phần vân tay. Vui lòng thử lại."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Không thể xử lý vân tay. Vui lòng thử lại."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Cảm biến vân tay bị bẩn. Hãy làm sạch và thử lại."</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Máy ảnh"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Micrô"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"hiển thị qua các ứng dụng khác trên màn hình của bạn"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Thông báo cung cấp thông tin về chế độ sạc thông thường"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Pin có thể hết trước khi sạc bình thường"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Trình tiết kiệm pin được kích hoạt để kéo dài thời lượng pin"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"Đang tải"</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 6720132..c280ea8 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"允许该应用从您的媒体收藏中读取位置信息。"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"<xliff:g id="APP">%s</xliff:g>应用需要进行身份验证。"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"生物识别硬件无法使用"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"身份验证已取消"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"无法识别"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"身份验证已取消"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"仅检测到部分指纹,请重试。"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"无法处理指纹,请重试。"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指纹传感器有脏污。请擦拭干净,然后重试。"</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"相机"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"麦克风"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"显示在屏幕上其他应用的上层"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"日常安排模式信息通知"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"电池电量可能会在您平时的充电时间之前耗尽"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"已启用省电模式以延长电池续航时间"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"正在加载"</string>
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 701e266..c2167b5 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"允許應用程式讀取媒體集的位置。"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"「<xliff:g id="APP">%s</xliff:g>」應用程式需要驗證。"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"無法使用生物識別硬件"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"已取消驗證"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"未能識別"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"已取消驗證"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"只偵測到部分指紋。請再試一次。"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"無法處理指紋。請再試一次。"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指紋感應器不乾淨。請清潔後再試一次。"</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"相機"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"麥克風"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"顯示在畫面上的其他應用程式上層"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"「日常安排模式」資料通知"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"電量可能會在日常充電前耗盡"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"「省電模式」已啟用,以便延長電池壽命"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"正在載入"</string>
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 24a51bd..231a7e9 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"允許應用程式讀取你的媒體收藏的位置資訊。"</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"「<xliff:g id="APP">%s</xliff:g>」應用程式需要驗證使用者身分。"</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"無法使用生物特徵辨識硬體"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"已取消驗證"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"無法辨識"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"已取消驗證"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"僅偵測到部分指紋,請再試一次。"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"無法處理指紋,請再試一次。"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指紋感應器有髒汙。請清潔感應器,然後再試一次。"</string>
@@ -1979,11 +1977,8 @@
<string name="notification_appops_camera_active" msgid="5050283058419699771">"相機"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"麥克風"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"顯示在畫面上的其他應用程式上層"</string>
- <!-- no translation found for dynamic_mode_notification_channel_name (2348803891571320452) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_title (508815255807182035) -->
- <skip />
- <!-- no translation found for dynamic_mode_notification_summary (2541166298550402690) -->
- <skip />
+ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"日常安排模式資訊通知"</string>
+ <string name="dynamic_mode_notification_title" msgid="508815255807182035">"電池電力可能會在你平常的充電時間前耗盡"</string>
+ <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"已啟用節約耗電量模式以延長電池續航力"</string>
<string name="car_loading_profile" msgid="3545132581795684027">"載入中"</string>
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index f819945..0f570b0 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -533,11 +533,9 @@
<string name="permdesc_mediaLocation" msgid="2237023389178865130">"Ivumela uhlelo lokusebenza ukuthi lifunde izindawo kusukela kuqoqo lakho lemidiya."</string>
<string name="biometric_dialog_default_title" msgid="4229778503907743328">"Uhlelo lokusebenza lwe-<xliff:g id="APP">%s</xliff:g> lifuna ukufakazela ubuqiniso."</string>
<string name="biometric_error_hw_unavailable" msgid="645781226537551036">"I-Biometric hardware ayitholakali"</string>
- <!-- no translation found for biometric_error_user_canceled (2260175018114348727) -->
- <skip />
+ <string name="biometric_error_user_canceled" msgid="2260175018114348727">"Ukufakazela ubuqiniso kukhanseliwe"</string>
<string name="biometric_not_recognized" msgid="5770511773560736082">"Akwaziwa"</string>
- <!-- no translation found for biometric_error_canceled (349665227864885880) -->
- <skip />
+ <string name="biometric_error_canceled" msgid="349665227864885880">"Ukufakazela ubuqiniso kukhanseliwe"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Izigxivizo zeminwe ezincane zitholiwe. Sicela uzame futhi."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Ayikwazanga ukucubungula izigxivizo zeminwe. Sicela uzame futhi."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Inzwa yezigxivizo zeminwe ingcolile. Sicela uyihlanze uphinde uzame futhi."</string>
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 18a42bc..8ef264a 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -274,6 +274,9 @@
<!-- Additional flag from base permission type: this permission can be automatically
granted to the document manager -->
<flag name="documenter" value="0x40000" />
+ <!-- Additional flag from base permission type: this permission automatically
+ granted to device configurator -->
+ <flag name="configurator" value="0x80000" />
</attr>
<!-- Flags indicating more context for a permission group. -->
@@ -2794,6 +2797,9 @@
<attr name="requiredSystemPropertyName" format="string" />
<!-- @hide This shouldn't be public. -->
<attr name="requiredSystemPropertyValue" format="string" />
+
+ <!-- The name of the overlayable whose resources will be overlaid. -->
+ <attr name="targetName" />
</declare-styleable>
<!-- Declaration of an {@link android.content.Intent} object in XML. May
diff --git a/core/res/res/values/colors_device_defaults.xml b/core/res/res/values/colors_device_defaults.xml
index ded916f..824b4b5 100644
--- a/core/res/res/values/colors_device_defaults.xml
+++ b/core/res/res/values/colors_device_defaults.xml
@@ -43,6 +43,6 @@
<color name="error_color_device_default_dark">@color/error_color_material_dark</color>
<color name="error_color_device_default_light">@color/error_color_material_light</color>
- <color name="list_divider_color_light">#64000000</color>
+ <color name="list_divider_color_light">#ffdadce0</color>
<color name="list_divider_color_dark">#85ffffff</color>
</resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 1feb59a..5995640 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -618,15 +618,6 @@
<!-- Integer indicating wpa_supplicant scan interval when p2p is connected in milliseconds -->
<integer translatable="false" name="config_wifi_scan_interval_p2p_connected">60000</integer>
- <!-- Integer indicating the framework scan interval in milliseconds. This is used in the scenario
- where the chipset does not support background scanning (config_wifi_background_scan_suport
- is false) to set up a periodic wake up scan so that the device can connect to a new access
- point on the move. A value of 0 means no periodic scans will be used in the framework. -->
- <integer translatable="false" name="config_wifi_framework_scan_interval">300000</integer>
-
- <!-- Integer indicating the framework no networks periodic scan interval in milliseconds. -->
- <integer translatable="false" name="config_wifi_no_network_periodic_scan_interval">300000</integer>
-
<!-- Integer indicating disconnect mode short scan interval in milliseconds -->
<integer translatable="false" name="config_wifi_disconnected_short_scan_interval">15000</integer>
@@ -648,6 +639,9 @@
<!-- Integer indicating RSSI boost given to current network -->
<integer translatable="false" name="config_wifi_framework_current_network_boost">16</integer>
+ <!-- Integer delay in milliseconds before set wlan interface up during watchdog recovery -->
+ <integer translatable="false" name="config_wifi_framework_recovery_timeout_delay">2000</integer>
+
<!-- Integer indicating how to handle beacons with uninitialized RSSI value of 0 -->
<integer translatable="false" name="config_wifi_framework_scan_result_rssi_level_patchup_value">-85</integer>
@@ -692,6 +686,11 @@
<!-- Wifi driver supports Automatic channel selection (ACS) for softap -->
<bool translatable="false" name="config_wifi_softap_acs_supported">false</bool>
+ <!-- Channel list restriction to Automatic channel selection (ACS) for softap. If the device
+ doesn't want to restrict channels this should be empty. Value is a comma separated channel
+ string and/or channel range string like '1-6,11' -->
+ <string translatable="false" name="config_wifi_softap_acs_supported_channel_list"></string>
+
<!-- Wifi driver supports IEEE80211AC for softap -->
<bool translatable="false" name="config_wifi_softap_ieee80211ac_supported">false</bool>
@@ -699,6 +698,9 @@
for automotive builds only (the one that have PackageManager#FEATURE_AUTOMOTIVE) -->
<bool translatable="false" name="config_wifi_local_only_hotspot_5ghz">false</bool>
+ <!-- Indicates that connected MAC randomization is supported on this device -->
+ <bool translatable="false" name="config_wifi_connected_mac_randomization_supported">false</bool>
+
<!-- Flag indicating whether we should enable the automatic brightness.
Software implementation will be used if config_hardware_auto_brightness_available is not set -->
<bool name="config_automatic_brightness_available">false</bool>
@@ -929,9 +931,6 @@
in hardware. -->
<bool name="config_setColorTransformAccelerated">false</bool>
- <!-- Boolean indicating whether display white balance is supported. -->
- <bool name="config_displayWhiteBalanceAvailable">false</bool>
-
<!-- Control whether Night display is available. This should only be enabled on devices
that have a HWC implementation that can apply the matrix passed to setColorTransform
without impacting power, performance, and app compatibility (e.g. protected content). -->
@@ -987,6 +986,44 @@
<!-- B y-intercept --> <item>-0.198650895</item>
</string-array>
+ <!-- Boolean indicating whether display white balance is supported. -->
+ <bool name="config_displayWhiteBalanceAvailable">false</bool>
+
+ <!-- Minimum color temperature, in Kelvin, supported by display white balance. -->
+ <integer name="config_displayWhiteBalanceColorTemperatureMin">4000</integer>
+
+ <!-- Maximum color temperature, in Kelvin, supported by display white balance. -->
+ <integer name="config_displayWhiteBalanceColorTemperatureMax">8000</integer>
+
+ <!-- Default color temperature, in Kelvin, used by display white balance. -->
+ <integer name="config_displayWhiteBalanceColorTemperatureDefault">6500</integer>
+
+ <!-- The display primaries, in CIE1931 XYZ color space, for display
+ white balance to use in its calculations. -->
+ <string-array name="config_displayWhiteBalanceDisplayPrimaries">
+ <!-- Red X --> <item>0.412315</item>
+ <!-- Red Y --> <item>0.212600</item>
+ <!-- Red Z --> <item>0.019327</item>
+ <!-- Green X --> <item>0.357600</item>
+ <!-- Green Y --> <item>0.715200</item>
+ <!-- Green Z --> <item>0.119200</item>
+ <!-- Blue X --> <item>0.180500</item>
+ <!-- Blue Y --> <item>0.072200</item>
+ <!-- Blue Z --> <item>0.950633</item>
+ <!-- White X --> <item>0.950456</item>
+ <!-- White Y --> <item>1.000000</item>
+ <!-- White Z --> <item>1.089058</item>
+ </string-array>
+
+ <!-- The nominal white coordinates, in CIE1931 XYZ color space, for Display White Balance to
+ use in its calculations. AWB will adapt this white point to the target ambient white
+ point. -->
+ <string-array name="config_displayWhiteBalanceDisplayNominalWhite">
+ <!-- Nominal White X --> <item>0.950456</item>
+ <!-- Nominal White Y --> <item>1.000000</item>
+ <!-- Nominal White Z --> <item>1.089058</item>
+ </string-array>
+
<!-- Indicate available ColorDisplayController.COLOR_MODE_xxx. -->
<integer-array name="config_availableColorModes">
@@ -1654,6 +1691,8 @@
config_enableFusedLocationOverlay is false. -->
<string name="config_fusedLocationProviderPackageName" translatable="false">com.android.location.fused</string>
+ <string-array name="config_locationExtraPackageNames" translatable="false"></string-array>
+
<!-- The package name of the default network recommendation app.
A network recommendation provider must:
* Be granted the SCORE_NETWORKS permission.
@@ -1704,19 +1743,6 @@
config_enableGeofenceOverlay is false. -->
<string name="config_geofenceProviderPackageName" translatable="false">@null</string>
- <!-- Whether to enable Hardware Activity-Recognition overlay which allows Hardware
- Activity-Recognition to be replaced by an app at run-time. When disabled, only the
- config_activityRecognitionHardwarePackageName package will be searched for
- its implementation, otherwise packages whose signature matches the
- signatures of config_locationProviderPackageNames will be searched, and
- the service with the highest version number will be picked. Anyone who
- wants to disable the overlay mechanism can set it to false.
- -->
- <bool name="config_enableActivityRecognitionHardwareOverlay" translatable="false">true</bool>
- <!-- Package name providing Hardware Activity-Recognition API support. Used only when
- config_enableActivityRecognitionHardwareOverlay is false. -->
- <string name="config_activityRecognitionHardwarePackageName" translatable="false">@null</string>
-
<!-- Package name(s) containing location provider support.
These packages can contain services implementing location providers,
such as the Geocode Provider, Network Location Provider, and
@@ -1855,6 +1881,8 @@
cell broadcasting sms, and MMS. -->
<bool name="config_sms_capable">true</bool>
+ <!-- TODO: STOPSHIP(b/110557011): Remove this from framework and overlays as we use
+ config_defaultRoleHolders now. -->
<!-- Default SMS Application. This will be the default SMS application when
the phone first boots. The user can then change the default app to one
of their choosing.
@@ -1873,6 +1901,12 @@
the behavior will be as though no app was named as an explicit default. -->
<string name="default_browser" translatable="false"></string>
+ <!-- Default role holders. This will be an array of roles and package names of their default
+ holders, with each item in the format of "ROLE_NAME: PACKAGE_NAME_1, PACKAGE_NAME_2". -->
+ <string-array name="config_defaultRoleHolders" translatable="false">
+ <item>android.app.role.SMS: com.android.messaging</item>
+ </string-array>
+
<!-- Enable/disable default bluetooth profiles:
HSP_AG, ObexObjectPush, Audio, NAP -->
<bool name="config_bluetooth_default_profiles">true</bool>
@@ -2168,6 +2202,9 @@
<!-- Type of the double tap sensor. Empty if double tap is not supported. -->
<string name="config_dozeDoubleTapSensorType" translatable="false"></string>
+ <!-- Type of the tap sensor. Empty if tap is not supported. -->
+ <string name="config_dozeTapSensorType" translatable="false"></string>
+
<!-- Type of the long press sensor. Empty if long press is not supported. -->
<string name="config_dozeLongPressSensorType" translatable="false"></string>
@@ -2765,6 +2802,9 @@
<!-- Flag indicating which package name can access the persistent data partition -->
<string name="config_persistentDataPackageName" translatable="false"></string>
+ <!-- Flag indicating which package name can access DeviceConfig table -->
+ <string name="config_deviceConfiguratorPackageName" translatable="false"></string>
+
<!-- Flag indicating apps will skip sending hold request before merge. In this case
IMS service implementation will do both.i.e.hold followed by merge. -->
<bool name="skipHoldBeforeMerge">true</bool>
@@ -3399,7 +3439,7 @@
See android.view.textclassifier.TextClassificationManager.
-->
<string name="config_defaultTextClassifierPackage" translatable="false"></string>
-
+
<!-- The package name for the default wellbeing app.
This package must be trusted, as it has the permissions to control other applications
on the device.
@@ -3407,6 +3447,12 @@
-->
<string name="config_defaultWellbeingPackage" translatable="false"></string>
+ <!-- The component name for the default system attention service.
+ This service must be trusted, as it can be activated without explicit consent of the user.
+ See android.attention.AttentionManagerService.
+ -->
+ <string name="config_defaultAttentionService" translatable="false"></string>
+
<!-- The package name for the system's content capture service.
This service must be trusted, as it can be activated without explicit consent of the user.
If no service with the specified name exists on the device, content capture will be
@@ -3661,7 +3707,7 @@
<string name="config_inputEventCompatProcessorOverrideClassName" translatable="false"></string>
<!-- Component name for the default module metadata provider on this device -->
- <string name="config_defaultModuleMetadataProvider">com.android.modulemetadata</string>
+ <string name="config_defaultModuleMetadataProvider" translatable="false">com.android.modulemetadata</string>
<!-- This is the default launcher component to use on secondary displays that support system
decorations.
@@ -3673,4 +3719,13 @@
<!-- If device supports corner radius on windows.
This should be turned off on low-end devices to improve animation performance. -->
<bool name="config_supportsRoundedCornersOnWindows">true</bool>
+
+ <!-- If the sensor that skips media is available or not. -->
+ <bool name="config_skipSensorAvailable">false</bool>
+
+ <!-- If the sensor that silences alerts is available or not. -->
+ <bool name="config_silenceSensorAvailable">false</bool>
+
+ <!-- Enable Zram writeback feature to allow unused pages in zram be written to flash. -->
+ <bool name="config_zramWriteback">false</bool>
</resources>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 05a156b..c870683 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -194,9 +194,6 @@
<!-- The margin for text at the end of the image view for media notifications -->
<dimen name="notification_media_image_margin_end">72dp</dimen>
- <!-- The additional margin on the sides of the ambient view. -->
- <dimen name="notification_extra_margin_ambient">16dp</dimen>
-
<!-- The height of the notification action list -->
<dimen name="notification_action_list_height">60dp</dimen>
@@ -233,9 +230,6 @@
<!-- The bottom padding for the notification header -->
<dimen name="notification_header_padding_bottom">16dp</dimen>
- <!-- The margin at the top of the notification header when dozing. -->
- <dimen name="notification_header_margin_top_ambient">3dp</dimen>
-
<!-- The margin at the bottom of the notification header. -->
<dimen name="notification_header_margin_bottom">0dp</dimen>
@@ -400,11 +394,6 @@
<dimen name="notification_title_text_size">14sp</dimen>
<!-- Size of smaller notification text (see TextAppearance.StatusBar.EventContent.Line2, Info, Time) -->
<dimen name="notification_subtext_size">12sp</dimen>
- <!-- Size of notification text (see TextAppearance.StatusBar.EventContent) -->
- <dimen name="notification_ambient_text_size">16sp</dimen>
- <!-- Size of notification text titles (see TextAppearance.StatusBar.EventContent.Title) -->
- <dimen name="notification_ambient_title_text_size">24sp</dimen>
-
<!-- Top padding for notifications in the standard layout. -->
<dimen name="notification_top_pad">10dp</dimen>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index b3b30e9..777886a 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2985,6 +2985,11 @@
<public name="system_notification_accent_color" />
</public-group>
+ <public-group type="array" first-id="0x01070006">
+ <!-- @hide @SystemApi -->
+ <public name="config_defaultRoleHolders" />
+ </public-group>
+
<!-- ===============================================================
DO NOT ADD UN-GROUPED ITEMS HERE
diff --git a/core/res/res/values/styles_device_defaults.xml b/core/res/res/values/styles_device_defaults.xml
index 200ef2f..79afe69 100644
--- a/core/res/res/values/styles_device_defaults.xml
+++ b/core/res/res/values/styles_device_defaults.xml
@@ -271,9 +271,6 @@
<style name="TextAppearance.DeviceDefault.Notification.Info" parent="TextAppearance.Material.Notification.Info">
<item name="fontFamily">@string/config_bodyFontFamily</item>
</style>
- <style name="TextAppearance.DeviceDefault.Notification.Info.Ambient" parent="TextAppearance.Material.Notification.Info.Ambient">
- <item name="fontFamily">@string/config_bodyFontFamily</item>
- </style>
<style name="TextAppearance.DeviceDefault.Widget" parent="TextAppearance.Material.Widget">
<item name="fontFamily">@string/config_bodyFontFamily</item>
</style>
diff --git a/core/res/res/values/styles_material.xml b/core/res/res/values/styles_material.xml
index 5a7199d..63ac0e6 100644
--- a/core/res/res/values/styles_material.xml
+++ b/core/res/res/values/styles_material.xml
@@ -487,10 +487,6 @@
<style name="TextAppearance.Material.Notification.Time" parent="TextAppearance.Material.Notification.Info" />
- <style name="TextAppearance.Material.Notification.Info.Ambient">
- <item name="textSize">@dimen/notification_text_size</item>
- </style>
-
<style name="TextAppearance.Material.Notification.Emphasis">
<item name="textColor">#66000000</item>
</style>
@@ -1308,10 +1304,5 @@
<item name="gravity">top</item>
</style>
- <style name="Notification.Header.Ambient">
- <item name="layout_marginTop">@dimen/notification_header_margin_top_ambient</item>
- <item name="gravity">top|center_horizontal</item>
- </style>
-
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 010accf..53c33a3 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -325,6 +325,7 @@
<java-symbol type="bool" name="config_forceDefaultOrientation" />
<java-symbol type="bool" name="config_wifi_batched_scan_supported" />
<java-symbol type="bool" name="config_wifi_softap_acs_supported" />
+ <java-symbol type="string" name="config_wifi_softap_acs_supported_channel_list" />
<java-symbol type="bool" name="config_wifi_softap_ieee80211ac_supported" />
<java-symbol type="bool" name="config_enableMultiUserUI"/>
<java-symbol type="bool" name="config_enableNewAutoSelectNetworkUI"/>
@@ -421,6 +422,7 @@
<java-symbol type="integer" name="config_wifi_framework_network_switch_tx_packet_threshold" />
<java-symbol type="integer" name="config_wifi_framework_network_switch_rx_packet_threshold" />
<java-symbol type="integer" name="config_wifi_framework_current_network_boost" />
+ <java-symbol type="integer" name="config_wifi_framework_recovery_timeout_delay" />
<java-symbol type="integer" name="config_bluetooth_max_advertisers" />
<java-symbol type="integer" name="config_bluetooth_max_scan_filters" />
<java-symbol type="integer" name="config_bluetooth_max_connected_audio_devices" />
@@ -458,9 +460,7 @@
<java-symbol type="integer" name="config_toastDefaultGravity" />
<java-symbol type="integer" name="config_triplePressOnPowerBehavior" />
<java-symbol type="integer" name="config_shortPressOnSleepBehavior" />
- <java-symbol type="integer" name="config_wifi_framework_scan_interval" />
<java-symbol type="integer" name="config_wifi_supplicant_scan_interval" />
- <java-symbol type="integer" name="config_wifi_no_network_periodic_scan_interval" />
<java-symbol type="integer" name="config_wifi_scan_interval_p2p_connected" />
<java-symbol type="integer" name="config_windowOutsetBottom" />
<java-symbol type="integer" name="db_connection_pool_size" />
@@ -1840,6 +1840,7 @@
<java-symbol type="array" name="radioAttributes" />
<java-symbol type="array" name="config_oemUsbModeOverride" />
<java-symbol type="array" name="config_locationProviderPackageNames" />
+ <java-symbol type="array" name="config_locationExtraPackageNames" />
<java-symbol type="array" name="config_testLocationProviders" />
<java-symbol type="array" name="config_defaultNotificationVibePattern" />
<java-symbol type="array" name="config_notificationFallbackVibePattern" />
@@ -1852,7 +1853,6 @@
<java-symbol type="bool" name="config_enableNightMode" />
<java-symbol type="bool" name="config_tintNotificationActionButtons" />
<java-symbol type="bool" name="config_dozeAfterScreenOffByDefault" />
- <java-symbol type="bool" name="config_enableActivityRecognitionHardwareOverlay" />
<java-symbol type="bool" name="config_enableFusedLocationOverlay" />
<java-symbol type="bool" name="config_enableHardwareFlpOverlay" />
<java-symbol type="bool" name="config_enableGeocoderOverlay" />
@@ -1879,6 +1879,7 @@
<java-symbol type="bool" name="config_wifi_dual_band_support" />
<java-symbol type="bool" name="config_wifi_convert_apband_5ghz_to_any" />
<java-symbol type="bool" name="config_wifi_local_only_hotspot_5ghz" />
+ <java-symbol type="bool" name="config_wifi_connected_mac_randomization_supported" />
<java-symbol type="bool" name="config_wifi_fast_bss_transition_enabled" />
<java-symbol type="bool" name="config_wimaxEnabled" />
<java-symbol type="bool" name="show_ongoing_ime_switcher" />
@@ -2020,7 +2021,6 @@
<java-symbol type="string" name="car_mode_disable_notification_title" />
<java-symbol type="string" name="chooser_wallpaper" />
<java-symbol type="string" name="config_datause_iface" />
- <java-symbol type="string" name="config_activityRecognitionHardwarePackageName" />
<java-symbol type="string" name="config_fusedLocationProviderPackageName" />
<java-symbol type="string" name="config_hardwareFlpPackageName" />
<java-symbol type="string" name="config_geocoderProviderPackageName" />
@@ -2139,6 +2139,7 @@
<java-symbol type="string" name="config_carrierAppInstallDialogComponent" />
<java-symbol type="string" name="config_defaultNetworkScorerPackageName" />
<java-symbol type="string" name="config_persistentDataPackageName" />
+ <java-symbol type="string" name="config_deviceConfiguratorPackageName" />
<java-symbol type="layout" name="resolver_list" />
<java-symbol type="id" name="resolver_list" />
@@ -3001,6 +3002,7 @@
<java-symbol type="array" name="config_emergency_mcc_codes" />
<java-symbol type="string" name="config_dozeDoubleTapSensorType" />
+ <java-symbol type="string" name="config_dozeTapSensorType" />
<java-symbol type="bool" name="config_dozePulsePickup" />
<!-- Used for MimeIconUtils. -->
@@ -3042,6 +3044,13 @@
<java-symbol type="array" name="config_nightDisplayColorTemperatureCoefficientsNative" />
<java-symbol type="array" name="config_availableColorModes" />
+ <java-symbol type="bool" name="config_displayWhiteBalanceAvailable" />
+ <java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureMin" />
+ <java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureMax" />
+ <java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureDefault" />
+ <java-symbol type="array" name="config_displayWhiteBalanceDisplayPrimaries" />
+ <java-symbol type="array" name="config_displayWhiteBalanceDisplayNominalWhite" />
+
<!-- Default first user restrictions -->
<java-symbol type="array" name="config_defaultFirstUserRestrictions" />
@@ -3066,8 +3075,6 @@
<java-symbol type="dimen" name="config_appTransitionAnimationDurationScaleDefault" />
- <java-symbol type="layout" name="notification_template_material_ambient" />
-
<!-- Network Recommendation -->
<java-symbol type="string" name="config_defaultNetworkRecommendationProviderPackage" />
@@ -3227,8 +3234,6 @@
<java-symbol type="string" name="time_picker_text_input_mode_description"/>
<java-symbol type="string" name="time_picker_radial_mode_description"/>
- <java-symbol type="layout" name="notification_template_ambient_header" />
-
<!-- resolver activity -->
<java-symbol type="drawable" name="resolver_icon_placeholder" />
@@ -3277,6 +3282,7 @@
<java-symbol type="string" name="config_defaultAugmentedAutofillService" />
<java-symbol type="string" name="config_defaultAppPredictionService" />
<java-symbol type="string" name="config_defaultContentSuggestionsService" />
+ <java-symbol type="string" name="config_defaultAttentionService" />
<java-symbol type="string" name="notification_channel_foreground_service" />
<java-symbol type="string" name="foreground_service_app_in_background" />
@@ -3529,4 +3535,9 @@
<java-symbol type="string" name="dynamic_mode_notification_title" />
<java-symbol type="string" name="dynamic_mode_notification_summary" />
<java-symbol type="drawable" name="ic_battery" />
+
+ <java-symbol type="bool" name="config_skipSensorAvailable" />
+ <java-symbol type="bool" name="config_silenceSensorAvailable" />
+
+ <java-symbol type="bool" name="config_zramWriteback" />
</resources>
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index d60313a..75a727b 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -1711,8 +1711,4 @@
<item name="notificationHeaderTextAppearance">@style/TextAppearance.DeviceDefault.Notification.Info</item>
</style>
- <style name="Theme.DeviceDefault.Notification.Ambient" parent="@style/Theme.Material.Notification.Ambient">
- <item name="notificationHeaderTextAppearance">@style/TextAppearance.DeviceDefault.Notification.Info.Ambient</item>
- </style>
-
</resources>
diff --git a/core/res/res/values/themes_material.xml b/core/res/res/values/themes_material.xml
index ccaf041..6b7698e 100644
--- a/core/res/res/values/themes_material.xml
+++ b/core/res/res/values/themes_material.xml
@@ -1341,14 +1341,6 @@
<item name="notificationHeaderIconSize">@dimen/notification_header_icon_size</item>
</style>
- <!-- Theme for inflating ambient notification -->
- <style name="Theme.Material.Notification.Ambient">
- <item name="notificationHeaderStyle">@style/Notification.Header.Ambient</item>
- <item name="notificationHeaderTextAppearance">@style/TextAppearance.Material.Notification.Info.Ambient</item>
- <item name="notificationHeaderAppNameVisibility">gone</item>
- <item name="notificationHeaderIconSize">@dimen/notification_header_icon_size_ambient</item>
- </style>
-
<!-- Default theme for Settings and activities launched from Settings. -->
<style name="Theme.Material.Settings" parent="Theme.Material.Light.LightStatusBar">
<item name="homeAsUpIndicator">@drawable/ic_ab_back_material_settings</item>
diff --git a/core/tests/BroadcastRadioTests/Android.mk b/core/tests/BroadcastRadioTests/Android.mk
index 24f0cf0..6b0484e 100644
--- a/core/tests/BroadcastRadioTests/Android.mk
+++ b/core/tests/BroadcastRadioTests/Android.mk
@@ -25,7 +25,7 @@
# LOCAL_SDK_VERSION := current
LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util android-support-test testng
+LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util androidx.test.rules testng
LOCAL_JAVA_LIBRARIES := android.test.base
diff --git a/core/tests/BroadcastRadioTests/AndroidManifest.xml b/core/tests/BroadcastRadioTests/AndroidManifest.xml
index d9b5522..ce12cc9 100644
--- a/core/tests/BroadcastRadioTests/AndroidManifest.xml
+++ b/core/tests/BroadcastRadioTests/AndroidManifest.xml
@@ -24,7 +24,7 @@
</application>
<instrumentation
- android:name="android.support.test.runner.AndroidJUnitRunner"
+ android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="android.hardware.radio.tests"
android:label="Tests for Broadcast Radio APIs" >
</instrumentation>
diff --git a/core/tests/BroadcastRadioTests/src/android/hardware/radio/tests/functional/RadioTunerTest.java b/core/tests/BroadcastRadioTests/src/android/hardware/radio/tests/functional/RadioTunerTest.java
index fdaba08..d2bd1e1 100644
--- a/core/tests/BroadcastRadioTests/src/android/hardware/radio/tests/functional/RadioTunerTest.java
+++ b/core/tests/BroadcastRadioTests/src/android/hardware/radio/tests/functional/RadioTunerTest.java
@@ -15,22 +15,29 @@
*/
package android.hardware.radio.tests.functional;
+import static org.junit.Assert.*;
+import static org.junit.Assume.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.after;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.atMost;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.testng.Assert.assertThrows;
+
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.radio.ProgramSelector;
import android.hardware.radio.RadioManager;
import android.hardware.radio.RadioTuner;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.MediumTest;
import android.util.Log;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
@@ -41,19 +48,10 @@
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
-import static org.junit.Assert.*;
-import static org.junit.Assume.*;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Mockito.after;
-import static org.mockito.Mockito.atLeast;
-import static org.mockito.Mockito.atMost;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.testng.Assert.assertThrows;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* A test for broadcast radio API.
diff --git a/core/tests/coretests/Android.mk b/core/tests/coretests/Android.mk
index 74943c7..0fc3bd2 100644
--- a/core/tests/coretests/Android.mk
+++ b/core/tests/coretests/Android.mk
@@ -36,12 +36,12 @@
frameworks-core-util-lib \
mockwebserver \
guava \
- android-support-test \
+ androidx.test.runner \
+ androidx.test.rules \
mockito-target-minus-junit4 \
espresso-core \
ub-uiautomator \
platform-test-annotations \
- compatibility-device-util \
truth-prebuilt \
print-test-util-lib \
testng # TODO: remove once Android migrates to JUnit 4.12, which provide assertThrows
diff --git a/core/tests/coretests/AndroidManifest.xml b/core/tests/coretests/AndroidManifest.xml
index 46d4a47..86818c6 100644
--- a/core/tests/coretests/AndroidManifest.xml
+++ b/core/tests/coretests/AndroidManifest.xml
@@ -56,6 +56,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INJECT_EVENTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
+ <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
<uses-permission android:name="android.permission.READ_DREAM_STATE" />
<uses-permission android:name="android.permission.WRITE_DREAM_STATE" />
<uses-permission android:name="android.permission.READ_LOGS"/>
@@ -65,6 +66,7 @@
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
+ <uses-permission android:name="android.permission.WRITE_DEVICE_CONFIG" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
@@ -1425,7 +1427,7 @@
</application>
- <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+ <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="com.android.frameworks.coretests"
android:label="Frameworks Core Tests" />
<key-sets>
diff --git a/core/tests/coretests/AndroidTest.xml b/core/tests/coretests/AndroidTest.xml
index 68ef34b..b40aa87 100644
--- a/core/tests/coretests/AndroidTest.xml
+++ b/core/tests/coretests/AndroidTest.xml
@@ -25,6 +25,7 @@
<option name="test-tag" value="FrameworksCoreTests" />
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="com.android.frameworks.coretests" />
+ <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
<option name="hidden-api-checks" value="false"/>
</test>
</configuration>
diff --git a/core/tests/coretests/README b/core/tests/coretests/README
index ea282a0..34beb45 100644
--- a/core/tests/coretests/README
+++ b/core/tests/coretests/README
@@ -30,9 +30,9 @@
adb install -r ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
adb shell am instrument -w \
- com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
+ com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner
-To run a tests within a specific package, add the following argument AFTER -w:
+To run a tests within a specific package, add -e AFTER -w and before the runner class:
-e package android.content.pm
diff --git a/core/tests/coretests/res/color/drawable_in_color_dir_invalid.xml b/core/tests/coretests/res/color/drawable_in_color_dir_invalid.xml
new file mode 100644
index 0000000..8d630b0
--- /dev/null
+++ b/core/tests/coretests/res/color/drawable_in_color_dir_invalid.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+
+<!-- This drawable is purposely in the color directory to test a backwards compatible fallback. -->
+<layer-list
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:id="@android:id/icon" android:drawable="@string/app_name" />
+</layer-list>
\ No newline at end of file
diff --git a/core/tests/coretests/res/color/drawable_in_color_dir_valid.xml b/core/tests/coretests/res/color/drawable_in_color_dir_valid.xml
new file mode 100644
index 0000000..d140475
--- /dev/null
+++ b/core/tests/coretests/res/color/drawable_in_color_dir_valid.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+
+<!-- This drawable is purposely in the color directory to test a backwards compatible fallback. -->
+<layer-list
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:id="@android:id/background" android:drawable="@drawable/test32x24" />
+ <item android:id="@android:id/icon" android:drawable="@drawable/test16x12" />
+</layer-list>
\ No newline at end of file
diff --git a/core/tests/coretests/res/raw/com_android_tzdata.apex b/core/tests/coretests/res/raw/com_android_tzdata.apex
new file mode 100644
index 0000000..72294de
--- /dev/null
+++ b/core/tests/coretests/res/raw/com_android_tzdata.apex
Binary files differ
diff --git a/core/tests/coretests/src/android/animation/AnimatorInflaterTest.java b/core/tests/coretests/src/android/animation/AnimatorInflaterTest.java
index e26bdf5..be1d44c 100644
--- a/core/tests/coretests/src/android/animation/AnimatorInflaterTest.java
+++ b/core/tests/coretests/src/android/animation/AnimatorInflaterTest.java
@@ -13,17 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.animation;
-import android.support.test.filters.LargeTest;
import android.test.ActivityInstrumentationTestCase2;
+import androidx.test.filters.LargeTest;
+
+import com.android.frameworks.coretests.R;
+
import java.util.HashSet;
import java.util.Set;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import com.android.frameworks.coretests.R;
@LargeTest
public class AnimatorInflaterTest extends ActivityInstrumentationTestCase2<BasicAnimatorActivity> {
diff --git a/core/tests/coretests/src/android/animation/AnimatorSetActivity.java b/core/tests/coretests/src/android/animation/AnimatorSetActivity.java
index 501ea48..af265af 100644
--- a/core/tests/coretests/src/android/animation/AnimatorSetActivity.java
+++ b/core/tests/coretests/src/android/animation/AnimatorSetActivity.java
@@ -1,10 +1,26 @@
-package android.animation;
+/*
+ * Copyright (C) 2015 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.
+ */
-import com.android.frameworks.coretests.R;
+package android.animation;
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
public class AnimatorSetActivity extends Activity {
@Override
public void onCreate(Bundle savedBundleInstance) {
diff --git a/core/tests/coretests/src/android/animation/AnimatorSetActivityTest.java b/core/tests/coretests/src/android/animation/AnimatorSetActivityTest.java
index 922bc59..55837ba 100644
--- a/core/tests/coretests/src/android/animation/AnimatorSetActivityTest.java
+++ b/core/tests/coretests/src/android/animation/AnimatorSetActivityTest.java
@@ -1,12 +1,29 @@
+/*
+ * Copyright (C) 2015 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 android.animation;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.View;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.SmallTest;
+
+import com.android.frameworks.coretests.R;
+
import java.util.ArrayList;
public class AnimatorSetActivityTest extends ActivityInstrumentationTestCase2<AnimatorSetActivity> {
diff --git a/core/tests/coretests/src/android/animation/AnimatorSetEventsTest.java b/core/tests/coretests/src/android/animation/AnimatorSetEventsTest.java
index 7eb32ee..4e90d1a 100644
--- a/core/tests/coretests/src/android/animation/AnimatorSetEventsTest.java
+++ b/core/tests/coretests/src/android/animation/AnimatorSetEventsTest.java
@@ -13,12 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.animation;
import android.os.Handler;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
import android.widget.Button;
+
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
import java.util.concurrent.TimeUnit;
diff --git a/core/tests/coretests/src/android/animation/AutoCancelTest.java b/core/tests/coretests/src/android/animation/AutoCancelTest.java
index b1f88db..b3ec92c 100644
--- a/core/tests/coretests/src/android/animation/AutoCancelTest.java
+++ b/core/tests/coretests/src/android/animation/AutoCancelTest.java
@@ -13,11 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.animation;
import android.os.Handler;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
diff --git a/core/tests/coretests/src/android/animation/BasicAnimatorActivity.java b/core/tests/coretests/src/android/animation/BasicAnimatorActivity.java
index 0e1e6ac..2b9866d 100644
--- a/core/tests/coretests/src/android/animation/BasicAnimatorActivity.java
+++ b/core/tests/coretests/src/android/animation/BasicAnimatorActivity.java
@@ -13,14 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.animation;
-import com.android.frameworks.coretests.R;
+package android.animation;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
+import com.android.frameworks.coretests.R;
+
public class BasicAnimatorActivity extends Activity {
public Button mAnimatingButton;
@Override
diff --git a/core/tests/coretests/src/android/animation/EventsTest.java b/core/tests/coretests/src/android/animation/EventsTest.java
index 28cfe3d..ba7413a 100644
--- a/core/tests/coretests/src/android/animation/EventsTest.java
+++ b/core/tests/coretests/src/android/animation/EventsTest.java
@@ -13,13 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.animation;
import android.os.Handler;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
diff --git a/core/tests/coretests/src/android/animation/FutureWaiter.java b/core/tests/coretests/src/android/animation/FutureWaiter.java
index 0c65e20..0c09a4a 100644
--- a/core/tests/coretests/src/android/animation/FutureWaiter.java
+++ b/core/tests/coretests/src/android/animation/FutureWaiter.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.animation;
import com.google.common.util.concurrent.AbstractFuture;
diff --git a/core/tests/coretests/src/android/animation/ObjectAnimatorEventsTest.java b/core/tests/coretests/src/android/animation/ObjectAnimatorEventsTest.java
index 606a939..53f9472 100644
--- a/core/tests/coretests/src/android/animation/ObjectAnimatorEventsTest.java
+++ b/core/tests/coretests/src/android/animation/ObjectAnimatorEventsTest.java
@@ -13,9 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.animation;
import android.widget.Button;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/animation/StateListAnimatorTest.java b/core/tests/coretests/src/android/animation/StateListAnimatorTest.java
index a9961e1..e755b89 100644
--- a/core/tests/coretests/src/android/animation/StateListAnimatorTest.java
+++ b/core/tests/coretests/src/android/animation/StateListAnimatorTest.java
@@ -14,16 +14,16 @@
* limitations under the License.
*/
-
package android.animation;
-import android.support.test.filters.LargeTest;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
import android.util.StateSet;
import android.view.View;
import android.view.ViewGroup;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.LargeTest;
+
import com.android.frameworks.coretests.R;
import java.util.concurrent.atomic.AtomicInteger;
diff --git a/core/tests/coretests/src/android/animation/ValueAnimatorEventsTest.java b/core/tests/coretests/src/android/animation/ValueAnimatorEventsTest.java
index c25d050..f6d71b8 100644
--- a/core/tests/coretests/src/android/animation/ValueAnimatorEventsTest.java
+++ b/core/tests/coretests/src/android/animation/ValueAnimatorEventsTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.animation;
/**
diff --git a/core/tests/coretests/src/android/animation/ValueAnimatorTests.java b/core/tests/coretests/src/android/animation/ValueAnimatorTests.java
index 4facf77..dee0a3e 100644
--- a/core/tests/coretests/src/android/animation/ValueAnimatorTests.java
+++ b/core/tests/coretests/src/android/animation/ValueAnimatorTests.java
@@ -13,8 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.animation;
+import static android.test.MoreAsserts.assertNotEqual;
+
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertNotNull;
@@ -24,23 +27,20 @@
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
-import android.support.test.annotation.UiThreadTest;
-import android.support.test.filters.MediumTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
import android.view.Choreographer;
import android.view.animation.LinearInterpolator;
+import androidx.test.filters.MediumTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
-import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.ArrayList;
-import static android.test.MoreAsserts.assertNotEqual;
-
@RunWith(AndroidJUnit4.class)
@MediumTest
public class ValueAnimatorTests {
diff --git a/core/tests/coretests/src/android/animation/ViewPropertyAnimatorTest.java b/core/tests/coretests/src/android/animation/ViewPropertyAnimatorTest.java
index 30ec182..997af00 100644
--- a/core/tests/coretests/src/android/animation/ViewPropertyAnimatorTest.java
+++ b/core/tests/coretests/src/android/animation/ViewPropertyAnimatorTest.java
@@ -13,15 +13,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.animation;
import android.os.Handler;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.ViewPropertyAnimator;
import android.widget.Button;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+
import com.android.frameworks.coretests.R;
import java.util.concurrent.TimeUnit;
diff --git a/core/tests/coretests/src/android/app/ApplicationErrorReportTest.java b/core/tests/coretests/src/android/app/ApplicationErrorReportTest.java
index 19a390a..8dc5ad6 100644
--- a/core/tests/coretests/src/android/app/ApplicationErrorReportTest.java
+++ b/core/tests/coretests/src/android/app/ApplicationErrorReportTest.java
@@ -16,16 +16,17 @@
package android.app;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import android.app.ApplicationErrorReport.CrashInfo;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import android.app.ApplicationErrorReport.CrashInfo;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
@RunWith(AndroidJUnit4.class)
@SmallTest
public class ApplicationErrorReportTest {
diff --git a/core/tests/coretests/src/android/app/ApplicationPackageManagerTest.java b/core/tests/coretests/src/android/app/ApplicationPackageManagerTest.java
index 063bef7..4b0ed65 100644
--- a/core/tests/coretests/src/android/app/ApplicationPackageManagerTest.java
+++ b/core/tests/coretests/src/android/app/ApplicationPackageManagerTest.java
@@ -16,13 +16,17 @@
package android.app;
+import static android.os.storage.VolumeInfo.STATE_MOUNTED;
+import static android.os.storage.VolumeInfo.STATE_UNMOUNTED;
+
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageInfo;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
import junit.framework.TestCase;
@@ -32,9 +36,6 @@
import java.util.Arrays;
import java.util.List;
-import static android.os.storage.VolumeInfo.STATE_MOUNTED;
-import static android.os.storage.VolumeInfo.STATE_UNMOUNTED;
-
@LargeTest
public class ApplicationPackageManagerTest extends TestCase {
private static final String sInternalVolPath = "/data";
diff --git a/core/tests/coretests/src/android/app/DownloadManagerFunctionalTest.java b/core/tests/coretests/src/android/app/DownloadManagerFunctionalTest.java
index c1d4be0..33e0402 100644
--- a/core/tests/coretests/src/android/app/DownloadManagerFunctionalTest.java
+++ b/core/tests/coretests/src/android/app/DownloadManagerFunctionalTest.java
@@ -22,7 +22,8 @@
import android.net.Uri;
import android.os.Environment;
import android.os.ParcelFileDescriptor;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
import com.google.mockwebserver.MockResponse;
diff --git a/core/tests/coretests/src/android/app/DownloadManagerStressTest.java b/core/tests/coretests/src/android/app/DownloadManagerStressTest.java
index 39d9a8e..adfe76f 100644
--- a/core/tests/coretests/src/android/app/DownloadManagerStressTest.java
+++ b/core/tests/coretests/src/android/app/DownloadManagerStressTest.java
@@ -23,10 +23,11 @@
import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.os.StatFs;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.util.Log;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.Suppress;
+
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
diff --git a/core/tests/coretests/src/android/app/InstrumentationTest.java b/core/tests/coretests/src/android/app/InstrumentationTest.java
index 9b59da4..93b5aec 100644
--- a/core/tests/coretests/src/android/app/InstrumentationTest.java
+++ b/core/tests/coretests/src/android/app/InstrumentationTest.java
@@ -17,9 +17,10 @@
package android.app;
import android.os.Bundle;
-import android.support.test.filters.LargeTest;
import android.test.InstrumentationTestCase;
+import androidx.test.filters.LargeTest;
+
@LargeTest
public class InstrumentationTest extends InstrumentationTestCase {
diff --git a/core/tests/coretests/src/android/app/LoaderLifecycleTest.java b/core/tests/coretests/src/android/app/LoaderLifecycleTest.java
index c83e798..e343383 100644
--- a/core/tests/coretests/src/android/app/LoaderLifecycleTest.java
+++ b/core/tests/coretests/src/android/app/LoaderLifecycleTest.java
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-
package android.app;
import static junit.framework.TestCase.assertNotNull;
@@ -27,11 +26,12 @@
import android.content.Context;
import android.os.Handler;
import android.os.Parcelable;
-import android.support.test.filters.MediumTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
import android.util.ArrayMap;
+import androidx.test.filters.MediumTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/app/NotificationTest.java b/core/tests/coretests/src/android/app/NotificationTest.java
index e89a4d3..c17aa92 100644
--- a/core/tests/coretests/src/android/app/NotificationTest.java
+++ b/core/tests/coretests/src/android/app/NotificationTest.java
@@ -33,11 +33,12 @@
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.widget.RemoteViews;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/app/SearchManagerTest.java b/core/tests/coretests/src/android/app/SearchManagerTest.java
index 08b7f60..14370c8 100644
--- a/core/tests/coretests/src/android/app/SearchManagerTest.java
+++ b/core/tests/coretests/src/android/app/SearchManagerTest.java
@@ -17,17 +17,13 @@
package android.app;
import android.app.activity.LocalActivity;
-
-import android.app.Activity;
-import android.app.ISearchManager;
-import android.app.SearchManager;
-import android.app.SearchableInfo;
import android.content.ComponentName;
import android.content.Context;
import android.os.ServiceManager;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
/**
* To launch this test from the command line:
diff --git a/core/tests/coretests/src/android/app/activity/ActivityManagerTest.java b/core/tests/coretests/src/android/app/activity/ActivityManagerTest.java
index 61d73bc..bbd442d 100644
--- a/core/tests/coretests/src/android/app/activity/ActivityManagerTest.java
+++ b/core/tests/coretests/src/android/app/activity/ActivityManagerTest.java
@@ -21,8 +21,9 @@
import android.content.pm.ConfigurationInfo;
import android.content.res.Configuration;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.filters.Suppress;
import java.util.Iterator;
import java.util.List;
diff --git a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
index 0f83a29..9cb3489 100644
--- a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
+++ b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
@@ -36,13 +36,14 @@
import android.content.Intent;
import android.content.res.Configuration;
import android.os.IBinder;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.MediumTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
import android.util.MergedConfiguration;
import android.view.Display;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.MediumTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/app/activity/BroadcastTest.java b/core/tests/coretests/src/android/app/activity/BroadcastTest.java
index 13e70eb..0f81896 100644
--- a/core/tests/coretests/src/android/app/activity/BroadcastTest.java
+++ b/core/tests/coretests/src/android/app/activity/BroadcastTest.java
@@ -27,11 +27,10 @@
import android.os.IBinder;
import android.os.Parcel;
import android.os.UserHandle;
-import android.support.test.filters.LargeTest;
-import android.test.FlakyTest;
import android.util.Log;
-import java.util.Arrays;
+import androidx.test.filters.FlakyTest;
+import androidx.test.filters.LargeTest;
@LargeTest
public class BroadcastTest extends ActivityTestsBase {
@@ -231,7 +230,7 @@
};
// Mark flaky until http://b/issue?id=1191607 is resolved.
- @FlakyTest(tolerance=2)
+ @FlakyTest
public void testRegistered() throws Exception {
runLaunchpad(LaunchpadActivity.BROADCAST_REGISTERED);
}
@@ -248,12 +247,12 @@
runLaunchpad(LaunchpadActivity.BROADCAST_ABORT);
}
- @FlakyTest(tolerance=2)
+ @FlakyTest
public void testAll() throws Exception {
runLaunchpad(LaunchpadActivity.BROADCAST_ALL);
}
- @FlakyTest(tolerance=2)
+ @FlakyTest
public void testMulti() throws Exception {
runLaunchpad(LaunchpadActivity.BROADCAST_MULTI);
}
@@ -348,7 +347,7 @@
}
// Marking flaky until http://b/issue?id=1191337 is resolved
- @FlakyTest(tolerance=2)
+ @FlakyTest
public void testReceiveSticky() throws Exception {
Intent intent = new Intent(LaunchpadActivity.BROADCAST_STICKY1, null);
intent.putExtra("test", LaunchpadActivity.DATA_1);
@@ -358,7 +357,7 @@
}
// Marking flaky until http://b/issue?id=1191337 is resolved
- @FlakyTest(tolerance=2)
+ @FlakyTest
public void testReceive2Sticky() throws Exception {
Intent intent = new Intent(LaunchpadActivity.BROADCAST_STICKY1, null);
intent.putExtra("test", LaunchpadActivity.DATA_1);
diff --git a/core/tests/coretests/src/android/app/activity/IntentSenderTest.java b/core/tests/coretests/src/android/app/activity/IntentSenderTest.java
index 8c1d79b..19ddb52 100644
--- a/core/tests/coretests/src/android/app/activity/IntentSenderTest.java
+++ b/core/tests/coretests/src/android/app/activity/IntentSenderTest.java
@@ -21,7 +21,8 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
@LargeTest
public class IntentSenderTest extends BroadcastTest {
diff --git a/core/tests/coretests/src/android/app/activity/LaunchTest.java b/core/tests/coretests/src/android/app/activity/LaunchTest.java
index 5b86dce..6846ea7 100644
--- a/core/tests/coretests/src/android/app/activity/LaunchTest.java
+++ b/core/tests/coretests/src/android/app/activity/LaunchTest.java
@@ -17,8 +17,9 @@
package android.app.activity;
import android.content.ComponentName;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.Suppress;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.Suppress;
@Suppress // Flaky.
public class LaunchTest extends ActivityTestsBase {
diff --git a/core/tests/coretests/src/android/app/activity/LifecycleTest.java b/core/tests/coretests/src/android/app/activity/LifecycleTest.java
index ed01fac5..5aa0380 100644
--- a/core/tests/coretests/src/android/app/activity/LifecycleTest.java
+++ b/core/tests/coretests/src/android/app/activity/LifecycleTest.java
@@ -18,8 +18,9 @@
import android.content.ComponentName;
import android.content.Intent;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
public class LifecycleTest extends ActivityTestsBase {
private Intent mTopIntent;
diff --git a/core/tests/coretests/src/android/app/activity/MetaDataTest.java b/core/tests/coretests/src/android/app/activity/MetaDataTest.java
index 5b9c0e9..cf27878 100644
--- a/core/tests/coretests/src/android/app/activity/MetaDataTest.java
+++ b/core/tests/coretests/src/android/app/activity/MetaDataTest.java
@@ -27,8 +27,11 @@
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
+
import com.android.frameworks.coretests.R;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
diff --git a/core/tests/coretests/src/android/app/activity/RemoteSubActivityScreen.java b/core/tests/coretests/src/android/app/activity/RemoteSubActivityScreen.java
index 9f402a5..8184627 100644
--- a/core/tests/coretests/src/android/app/activity/RemoteSubActivityScreen.java
+++ b/core/tests/coretests/src/android/app/activity/RemoteSubActivityScreen.java
@@ -1,19 +1,18 @@
-/* //device/apps/AndroidTests/src/com.android.unit_tests/activity/TestedScreen.java
-**
-** Copyright 2006, 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.
-*/
+/*
+ * Copyright (C) 2006 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 android.app.activity;
@@ -21,7 +20,8 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Process;
-import android.util.Log;
+
+//device/apps/AndroidTests/src/com.android.unit_tests/activity/TestedScreen.java
public class RemoteSubActivityScreen extends SubActivityScreen {
Handler mHandler = new Handler();
diff --git a/core/tests/coretests/src/android/app/activity/ServiceTest.java b/core/tests/coretests/src/android/app/activity/ServiceTest.java
index d3ae415..9d2aebd 100644
--- a/core/tests/coretests/src/android/app/activity/ServiceTest.java
+++ b/core/tests/coretests/src/android/app/activity/ServiceTest.java
@@ -22,13 +22,12 @@
import android.content.ServiceConnection;
import android.os.Binder;
import android.os.Bundle;
-import android.os.RemoteException;
import android.os.IBinder;
import android.os.Parcel;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.util.Log;
+import android.os.RemoteException;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
// These test binders purport to support an interface whose canonical
// interface name is ServiceTest.SERVICE_LOCAL
diff --git a/core/tests/coretests/src/android/app/activity/SetTimeZonePermissionsTest.java b/core/tests/coretests/src/android/app/activity/SetTimeZonePermissionsTest.java
index 41b9547..8e17295 100644
--- a/core/tests/coretests/src/android/app/activity/SetTimeZonePermissionsTest.java
+++ b/core/tests/coretests/src/android/app/activity/SetTimeZonePermissionsTest.java
@@ -19,7 +19,8 @@
import android.app.AlarmManager;
import android.content.Context;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
import java.util.TimeZone;
diff --git a/core/tests/coretests/src/android/app/activity/SubActivityTest.java b/core/tests/coretests/src/android/app/activity/SubActivityTest.java
index 35dde8a..53f89fe 100644
--- a/core/tests/coretests/src/android/app/activity/SubActivityTest.java
+++ b/core/tests/coretests/src/android/app/activity/SubActivityTest.java
@@ -16,9 +16,10 @@
package android.app.activity;
-import android.test.suitebuilder.annotation.Suppress;
import android.content.ComponentName;
+import androidx.test.filters.Suppress;
+
@Suppress
public class SubActivityTest extends ActivityTestsBase {
diff --git a/core/tests/coretests/src/android/app/admin/PasswordMetricsTest.java b/core/tests/coretests/src/android/app/admin/PasswordMetricsTest.java
index 9b5b725..8d42c74 100644
--- a/core/tests/coretests/src/android/app/admin/PasswordMetricsTest.java
+++ b/core/tests/coretests/src/android/app/admin/PasswordMetricsTest.java
@@ -27,8 +27,9 @@
import android.app.admin.PasswordMetrics.PasswordComplexityBucket;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/app/assist/AssistStructureTest.java b/core/tests/coretests/src/android/app/assist/AssistStructureTest.java
index 689e683..1f4e5df 100644
--- a/core/tests/coretests/src/android/app/assist/AssistStructureTest.java
+++ b/core/tests/coretests/src/android/app/assist/AssistStructureTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.app.assist;
import static android.view.View.AUTOFILL_TYPE_TEXT;
@@ -22,13 +23,9 @@
import static com.google.common.truth.Truth.assertThat;
import android.app.assist.AssistStructure.ViewNode;
-import android.content.ComponentName;
import android.content.Context;
import android.os.Parcel;
import android.os.SystemClock;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
import android.text.InputFilter;
import android.util.Log;
import android.view.autofill.AutofillId;
@@ -37,6 +34,10 @@
import android.widget.LinearLayout;
import android.widget.TextView;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/app/assist/EmptyLayoutActivity.java b/core/tests/coretests/src/android/app/assist/EmptyLayoutActivity.java
index f4b6bed..defec43 100644
--- a/core/tests/coretests/src/android/app/assist/EmptyLayoutActivity.java
+++ b/core/tests/coretests/src/android/app/assist/EmptyLayoutActivity.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.app.assist;
import android.app.Activity;
diff --git a/core/tests/coretests/src/android/app/backup/BackupDataTest.java b/core/tests/coretests/src/android/app/backup/BackupDataTest.java
index 5b8e481..18ff54f 100644
--- a/core/tests/coretests/src/android/app/backup/BackupDataTest.java
+++ b/core/tests/coretests/src/android/app/backup/BackupDataTest.java
@@ -16,31 +16,22 @@
package android.app.backup;
-import android.app.backup.BackupDataInput;
-import android.app.backup.BackupDataOutput;
-import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.ParcelFileDescriptor;
-import android.support.test.filters.LargeTest;
import android.test.AndroidTestCase;
-import android.test.InstrumentationTestCase;
import android.util.Base64;
-import android.util.Log;
-import org.json.JSONObject;
+
+import androidx.test.filters.LargeTest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
-import java.io.FileReader;
import java.io.IOException;
-import java.io.InputStream;
import java.io.InputStreamReader;
-import java.lang.Exception;
-import java.nio.ByteBuffer;
@LargeTest
public class BackupDataTest extends AndroidTestCase {
diff --git a/core/tests/coretests/src/android/app/backup/FullBackupTest.java b/core/tests/coretests/src/android/app/backup/FullBackupTest.java
index 5db416b..08edb4e 100644
--- a/core/tests/coretests/src/android/app/backup/FullBackupTest.java
+++ b/core/tests/coretests/src/android/app/backup/FullBackupTest.java
@@ -18,11 +18,12 @@
import android.app.backup.FullBackup.BackupScheme.PathWithRequiredFlags;
import android.content.Context;
-import android.support.test.filters.LargeTest;
import android.test.AndroidTestCase;
import android.util.ArrayMap;
import android.util.ArraySet;
+import androidx.test.filters.LargeTest;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
diff --git a/core/tests/coretests/src/android/app/servertransaction/ClientTransactionTests.java b/core/tests/coretests/src/android/app/servertransaction/ClientTransactionTests.java
index b1f8552..52b2658 100644
--- a/core/tests/coretests/src/android/app/servertransaction/ClientTransactionTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/ClientTransactionTests.java
@@ -23,8 +23,9 @@
import android.app.ClientTransactionHandler;
import android.os.IBinder;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
index fb0f534..ad28d13 100644
--- a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
@@ -35,8 +35,9 @@
import android.os.Bundle;
import android.os.PersistableBundle;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionExecutorTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionExecutorTests.java
index a788a93..f730a24 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TransactionExecutorTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TransactionExecutorTests.java
@@ -45,10 +45,11 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.ArrayMap;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
index 2801f324..8604b0c 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
@@ -50,8 +50,9 @@
import android.os.RemoteCallback;
import android.os.RemoteException;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.app.IVoiceInteractor;
diff --git a/core/tests/coretests/src/android/app/timezone/DistroFormatVersionTest.java b/core/tests/coretests/src/android/app/timezone/DistroFormatVersionTest.java
index e20645c..0efc0ab 100644
--- a/core/tests/coretests/src/android/app/timezone/DistroFormatVersionTest.java
+++ b/core/tests/coretests/src/android/app/timezone/DistroFormatVersionTest.java
@@ -21,7 +21,8 @@
import static org.junit.Assert.assertTrue;
import android.os.Parcel;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/app/timezone/DistroRulesVersionTest.java b/core/tests/coretests/src/android/app/timezone/DistroRulesVersionTest.java
index b69054c..b519bf8 100644
--- a/core/tests/coretests/src/android/app/timezone/DistroRulesVersionTest.java
+++ b/core/tests/coretests/src/android/app/timezone/DistroRulesVersionTest.java
@@ -21,7 +21,8 @@
import static org.junit.Assert.assertTrue;
import android.os.Parcel;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/app/timezone/RulesStateTest.java b/core/tests/coretests/src/android/app/timezone/RulesStateTest.java
index dd46240..bb535b6 100644
--- a/core/tests/coretests/src/android/app/timezone/RulesStateTest.java
+++ b/core/tests/coretests/src/android/app/timezone/RulesStateTest.java
@@ -16,14 +16,13 @@
package android.app.timezone;
-import static junit.framework.Assert.fail;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import android.os.Parcel;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/app/timezone/RulesUpdaterContractTest.java b/core/tests/coretests/src/android/app/timezone/RulesUpdaterContractTest.java
index 4004086..df9ddea 100644
--- a/core/tests/coretests/src/android/app/timezone/RulesUpdaterContractTest.java
+++ b/core/tests/coretests/src/android/app/timezone/RulesUpdaterContractTest.java
@@ -25,7 +25,8 @@
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
diff --git a/core/tests/coretests/src/android/app/usage/EventListTest.java b/core/tests/coretests/src/android/app/usage/EventListTest.java
index 9dc0d43..685fcae 100644
--- a/core/tests/coretests/src/android/app/usage/EventListTest.java
+++ b/core/tests/coretests/src/android/app/usage/EventListTest.java
@@ -20,10 +20,11 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.Log;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/app/usage/UsageStatsTest.java b/core/tests/coretests/src/android/app/usage/UsageStatsTest.java
index 28aaf1e..1633e1a 100644
--- a/core/tests/coretests/src/android/app/usage/UsageStatsTest.java
+++ b/core/tests/coretests/src/android/app/usage/UsageStatsTest.java
@@ -21,6 +21,7 @@
import static android.app.usage.UsageEvents.Event.ACTIVITY_RESUMED;
import static android.app.usage.UsageEvents.Event.ACTIVITY_STOPPED;
import static android.app.usage.UsageEvents.Event.CONTINUING_FOREGROUND_SERVICE;
+import static android.app.usage.UsageEvents.Event.DEVICE_SHUTDOWN;
import static android.app.usage.UsageEvents.Event.END_OF_DAY;
import static android.app.usage.UsageEvents.Event.FLUSH_TO_DISK;
import static android.app.usage.UsageEvents.Event.FOREGROUND_SERVICE_START;
@@ -33,8 +34,9 @@
import android.app.usage.UsageEvents.Event;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
@@ -528,6 +530,11 @@
}
@Test
+ public void testEvent_DEVICE_SHUTDOWN() {
+ testClosingEvent(DEVICE_SHUTDOWN);
+ }
+
+ @Test
public void testEvent_FLUSH_TO_DISK() {
testClosingEvent(FLUSH_TO_DISK);
}
@@ -535,8 +542,9 @@
private void testClosingEvent(int eventType) {
// When these three closing events are received, all open activities/services need to be
// closed and usage stats are updated.
- if (eventType != FLUSH_TO_DISK) {
- fail("Closing eventType must be one of FLUSH_TO_DISK");
+ if (eventType != DEVICE_SHUTDOWN
+ && eventType != FLUSH_TO_DISK) {
+ fail("Closing eventType must be one of DEVICE_SHUTDOWN, FLUSH_TO_DISK");
}
left.mPackageName = "com.test";
diff --git a/core/tests/coretests/src/android/content/AbstractCrossUserContentResolverTest.java b/core/tests/coretests/src/android/content/AbstractCrossUserContentResolverTest.java
index 978ea7a..c307e64 100644
--- a/core/tests/coretests/src/android/content/AbstractCrossUserContentResolverTest.java
+++ b/core/tests/coretests/src/android/content/AbstractCrossUserContentResolverTest.java
@@ -16,7 +16,6 @@
package android.content;
-
import static org.junit.Assert.fail;
import android.app.ActivityManager;
@@ -30,9 +29,10 @@
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/content/AssetTest.java b/core/tests/coretests/src/android/content/AssetTest.java
index b66574c..8e55e8a 100644
--- a/core/tests/coretests/src/android/content/AssetTest.java
+++ b/core/tests/coretests/src/android/content/AssetTest.java
@@ -18,7 +18,8 @@
import android.content.res.AssetManager;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import java.io.IOException;
import java.io.InputStream;
diff --git a/core/tests/coretests/src/android/content/BrickDeniedTest.java b/core/tests/coretests/src/android/content/BrickDeniedTest.java
index 3d246b4..d8c9baa 100644
--- a/core/tests/coretests/src/android/content/BrickDeniedTest.java
+++ b/core/tests/coretests/src/android/content/BrickDeniedTest.java
@@ -17,7 +17,8 @@
package android.content;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
/** Test to make sure brick intents <b>don't</b> work without permission. */
public class BrickDeniedTest extends AndroidTestCase {
diff --git a/core/tests/coretests/src/android/content/BroadcastReceiverTests.java b/core/tests/coretests/src/android/content/BroadcastReceiverTests.java
index 8deccb7..1509ff9 100644
--- a/core/tests/coretests/src/android/content/BroadcastReceiverTests.java
+++ b/core/tests/coretests/src/android/content/BroadcastReceiverTests.java
@@ -18,9 +18,9 @@
import static org.junit.Assert.fail;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/content/ContentProviderOperationTest.java b/core/tests/coretests/src/android/content/ContentProviderOperationTest.java
index aea124b..b142761 100644
--- a/core/tests/coretests/src/android/content/ContentProviderOperationTest.java
+++ b/core/tests/coretests/src/android/content/ContentProviderOperationTest.java
@@ -16,22 +16,23 @@
package android.content;
-import android.content.ContentValues;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.net.Uri;
import android.os.Parcel;
-import android.test.suitebuilder.annotation.SmallTest;
import android.text.TextUtils;
+
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
-import java.util.Set;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
@SmallTest
public class ContentProviderOperationTest extends TestCase {
diff --git a/core/tests/coretests/src/android/content/ContentProviderTest.java b/core/tests/coretests/src/android/content/ContentProviderTest.java
index 2142f27..8895f9b 100644
--- a/core/tests/coretests/src/android/content/ContentProviderTest.java
+++ b/core/tests/coretests/src/android/content/ContentProviderTest.java
@@ -23,7 +23,8 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.ProviderInfo;
import android.net.Uri;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/content/ContentQueryMapTest.java b/core/tests/coretests/src/android/content/ContentQueryMapTest.java
index f47bfdb..7106234 100644
--- a/core/tests/coretests/src/android/content/ContentQueryMapTest.java
+++ b/core/tests/coretests/src/android/content/ContentQueryMapTest.java
@@ -16,16 +16,14 @@
package android.content;
-import android.content.ContentQueryMap;
-import android.content.ContentResolver;
-import android.content.ContentValues;
import android.database.Cursor;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
import java.util.Observable;
import java.util.Observer;
diff --git a/core/tests/coretests/src/android/content/ContentResolverTest.java b/core/tests/coretests/src/android/content/ContentResolverTest.java
index 9940bf7..f14f289 100644
--- a/core/tests/coretests/src/android/content/ContentResolverTest.java
+++ b/core/tests/coretests/src/android/content/ContentResolverTest.java
@@ -31,10 +31,11 @@
import android.net.Uri;
import android.os.MemoryFile;
import android.os.ParcelFileDescriptor;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
import android.util.Size;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/content/ContentValuesTest.java b/core/tests/coretests/src/android/content/ContentValuesTest.java
index 7b39939..0ab79e7 100644
--- a/core/tests/coretests/src/android/content/ContentValuesTest.java
+++ b/core/tests/coretests/src/android/content/ContentValuesTest.java
@@ -17,8 +17,8 @@
package android.content;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
/*
runtest -c android.content.ContentValuesTest frameworks-core
@@ -29,7 +29,7 @@
adb shell pm uninstall -k com.android.frameworks.coretests && \
adb install out/target/product/bullhead/testcases/FrameworksCoreTests/FrameworksCoreTests.apk && \
adb shell am instrument -w -e package android.content \
- com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
+ com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner
*/
public class ContentValuesTest extends AndroidTestCase {
diff --git a/core/tests/coretests/src/android/content/ContextTest.java b/core/tests/coretests/src/android/content/ContextTest.java
index c8a3098..2f442c3 100644
--- a/core/tests/coretests/src/android/content/ContextTest.java
+++ b/core/tests/coretests/src/android/content/ContextTest.java
@@ -19,11 +19,12 @@
import static org.junit.Assert.assertEquals;
import android.app.ActivityThread;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.WindowManager;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/content/ManagedUserContentResolverTest.java b/core/tests/coretests/src/android/content/ManagedUserContentResolverTest.java
index 4362ec3..22b2314 100644
--- a/core/tests/coretests/src/android/content/ManagedUserContentResolverTest.java
+++ b/core/tests/coretests/src/android/content/ManagedUserContentResolverTest.java
@@ -19,7 +19,8 @@
import android.content.pm.UserInfo;
import android.os.RemoteException;
import android.os.UserHandle;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
/**
* To run the tests, use
@@ -32,7 +33,7 @@
* Install: adb install -r \
* ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
* Run: adb shell am instrument -e class android.content.ManagedUserContentResolverTest -w \
- * com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
+ * com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner
*/
@LargeTest
public class ManagedUserContentResolverTest extends AbstractCrossUserContentResolverTest {
diff --git a/core/tests/coretests/src/android/content/MemoryFileProviderTest.java b/core/tests/coretests/src/android/content/MemoryFileProviderTest.java
index bbe7c10..7cd4862 100644
--- a/core/tests/coretests/src/android/content/MemoryFileProviderTest.java
+++ b/core/tests/coretests/src/android/content/MemoryFileProviderTest.java
@@ -18,9 +18,10 @@
import android.net.Uri;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
import java.io.InputStream;
import java.util.Arrays;
diff --git a/core/tests/coretests/src/android/content/RestrictionsManagerTest.java b/core/tests/coretests/src/android/content/RestrictionsManagerTest.java
index 10d74f7..fd5de32 100644
--- a/core/tests/coretests/src/android/content/RestrictionsManagerTest.java
+++ b/core/tests/coretests/src/android/content/RestrictionsManagerTest.java
@@ -13,13 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License
*/
+
package android.content;
import android.os.Bundle;
import android.os.Parcelable;
-import android.support.test.filters.LargeTest;
import android.test.AndroidTestCase;
+import androidx.test.filters.LargeTest;
+
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
diff --git a/core/tests/coretests/src/android/content/SecondaryUserContentResolverTest.java b/core/tests/coretests/src/android/content/SecondaryUserContentResolverTest.java
index f8b13f0..dbe0278 100644
--- a/core/tests/coretests/src/android/content/SecondaryUserContentResolverTest.java
+++ b/core/tests/coretests/src/android/content/SecondaryUserContentResolverTest.java
@@ -18,7 +18,8 @@
import android.content.pm.UserInfo;
import android.os.RemoteException;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
/**
* To run the tests, use
@@ -31,7 +32,7 @@
* Install: adb install -r \
* ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
* Run: adb shell am instrument -e class android.content.SecondaryUserContentResolverTest -w \
- * com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
+ * com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner
*/
@LargeTest
public class SecondaryUserContentResolverTest extends AbstractCrossUserContentResolverTest {
diff --git a/core/tests/coretests/src/android/content/UriMatcherTest.java b/core/tests/coretests/src/android/content/UriMatcherTest.java
index f3b9e76..6cef46b 100644
--- a/core/tests/coretests/src/android/content/UriMatcherTest.java
+++ b/core/tests/coretests/src/android/content/UriMatcherTest.java
@@ -17,14 +17,14 @@
package android.content;
import android.net.Uri;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
import java.lang.reflect.Field;
import java.util.ArrayList;
-
public class UriMatcherTest extends TestCase {
static final int ROOT = 0;
diff --git a/core/tests/coretests/src/android/content/pm/AndroidHidlUpdaterTest.java b/core/tests/coretests/src/android/content/pm/AndroidHidlUpdaterTest.java
index 2acb08d..9b360db 100644
--- a/core/tests/coretests/src/android/content/pm/AndroidHidlUpdaterTest.java
+++ b/core/tests/coretests/src/android/content/pm/AndroidHidlUpdaterTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.pm;
import static android.content.pm.PackageBuilder.builder;
@@ -20,7 +21,8 @@
import static android.content.pm.SharedLibraryNames.ANDROID_HIDL_MANAGER;
import android.os.Build;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/content/pm/AndroidTestBaseUpdaterTest.java b/core/tests/coretests/src/android/content/pm/AndroidTestBaseUpdaterTest.java
index dce22ce..0ed76dc 100644
--- a/core/tests/coretests/src/android/content/pm/AndroidTestBaseUpdaterTest.java
+++ b/core/tests/coretests/src/android/content/pm/AndroidTestBaseUpdaterTest.java
@@ -13,13 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.pm;
import static android.content.pm.PackageBuilder.builder;
import static android.content.pm.SharedLibraryNames.ANDROID_TEST_BASE;
import android.os.Build;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/content/pm/AndroidTestRunnerSplitUpdaterTest.java b/core/tests/coretests/src/android/content/pm/AndroidTestRunnerSplitUpdaterTest.java
index 866de93..7f817d6 100644
--- a/core/tests/coretests/src/android/content/pm/AndroidTestRunnerSplitUpdaterTest.java
+++ b/core/tests/coretests/src/android/content/pm/AndroidTestRunnerSplitUpdaterTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.pm;
import static android.content.pm.PackageBuilder.builder;
@@ -20,7 +21,8 @@
import static android.content.pm.SharedLibraryNames.ANDROID_TEST_RUNNER;
import android.content.pm.PackageBackwardCompatibility.AndroidTestRunnerSplitUpdater;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/content/pm/ComponentTest.java b/core/tests/coretests/src/android/content/pm/ComponentTest.java
index cc75641..f31f0b5 100644
--- a/core/tests/coretests/src/android/content/pm/ComponentTest.java
+++ b/core/tests/coretests/src/android/content/pm/ComponentTest.java
@@ -21,7 +21,14 @@
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
import static android.content.pm.PackageManager.GET_DISABLED_COMPONENTS;
-import android.test.suitebuilder.annotation.Suppress;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.test.AndroidTestCase;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.filters.Suppress;
+
import com.android.frameworks.coretests.enabled_app.DisabledActivity;
import com.android.frameworks.coretests.enabled_app.DisabledProvider;
import com.android.frameworks.coretests.enabled_app.DisabledReceiver;
@@ -31,12 +38,6 @@
import com.android.frameworks.coretests.enabled_app.EnabledReceiver;
import com.android.frameworks.coretests.enabled_app.EnabledService;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
-
import java.util.List;
/**
diff --git a/core/tests/coretests/src/android/content/pm/LimitedLengthInputStreamTest.java b/core/tests/coretests/src/android/content/pm/LimitedLengthInputStreamTest.java
index 1f762fd..1c703ab 100644
--- a/core/tests/coretests/src/android/content/pm/LimitedLengthInputStreamTest.java
+++ b/core/tests/coretests/src/android/content/pm/LimitedLengthInputStreamTest.java
@@ -17,7 +17,8 @@
package android.content.pm;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.MediumTest;
import java.io.ByteArrayInputStream;
import java.io.IOException;
diff --git a/core/tests/coretests/src/android/content/pm/MacAuthenticatedInputStreamTest.java b/core/tests/coretests/src/android/content/pm/MacAuthenticatedInputStreamTest.java
index 659f9ea..1ddd753 100644
--- a/core/tests/coretests/src/android/content/pm/MacAuthenticatedInputStreamTest.java
+++ b/core/tests/coretests/src/android/content/pm/MacAuthenticatedInputStreamTest.java
@@ -16,9 +16,12 @@
package android.content.pm;
-import android.support.test.filters.LargeTest;
import android.test.AndroidTestCase;
+import androidx.test.filters.LargeTest;
+
+import libcore.io.Streams;
+
import java.io.ByteArrayInputStream;
import java.util.Arrays;
@@ -26,8 +29,6 @@
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
-import libcore.io.Streams;
-
@LargeTest
public class MacAuthenticatedInputStreamTest extends AndroidTestCase {
diff --git a/core/tests/coretests/src/android/content/pm/OptionalClassRunner.java b/core/tests/coretests/src/android/content/pm/OptionalClassRunner.java
index 91697c0..05db8ee 100644
--- a/core/tests/coretests/src/android/content/pm/OptionalClassRunner.java
+++ b/core/tests/coretests/src/android/content/pm/OptionalClassRunner.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.pm;
import org.junit.Assume;
diff --git a/core/tests/coretests/src/android/content/pm/OrgApacheHttpLegacyUpdaterTest.java b/core/tests/coretests/src/android/content/pm/OrgApacheHttpLegacyUpdaterTest.java
index dcd2707..834a0bb 100644
--- a/core/tests/coretests/src/android/content/pm/OrgApacheHttpLegacyUpdaterTest.java
+++ b/core/tests/coretests/src/android/content/pm/OrgApacheHttpLegacyUpdaterTest.java
@@ -13,13 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.pm;
import static android.content.pm.PackageBuilder.builder;
import static android.content.pm.SharedLibraryNames.ORG_APACHE_HTTP_LEGACY;
import android.os.Build;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/content/pm/PackageBackwardCompatibilityTest.java b/core/tests/coretests/src/android/content/pm/PackageBackwardCompatibilityTest.java
index c64d520..3d7aab0 100644
--- a/core/tests/coretests/src/android/content/pm/PackageBackwardCompatibilityTest.java
+++ b/core/tests/coretests/src/android/content/pm/PackageBackwardCompatibilityTest.java
@@ -24,7 +24,8 @@
import android.content.pm.PackageBackwardCompatibility.RemoveUnnecessaryAndroidTestBaseLibrary;
import android.os.Build;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import org.junit.Assume;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/content/pm/PackageBuilder.java b/core/tests/coretests/src/android/content/pm/PackageBuilder.java
index 4ceed83..c5db962 100644
--- a/core/tests/coretests/src/android/content/pm/PackageBuilder.java
+++ b/core/tests/coretests/src/android/content/pm/PackageBuilder.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.pm;
import static org.junit.Assert.assertEquals;
diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
index 8ac9451d..0ab5367 100644
--- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
+++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
@@ -54,11 +54,12 @@
import android.system.Os;
import android.system.StructStat;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.util.Log;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.filters.Suppress;
+
import com.android.frameworks.coretests.R;
import com.android.internal.content.PackageHelper;
diff --git a/core/tests/coretests/src/android/content/pm/PackageParserCacheHelperTest.java b/core/tests/coretests/src/android/content/pm/PackageParserCacheHelperTest.java
index 00be822..e852f98 100644
--- a/core/tests/coretests/src/android/content/pm/PackageParserCacheHelperTest.java
+++ b/core/tests/coretests/src/android/content/pm/PackageParserCacheHelperTest.java
@@ -22,8 +22,9 @@
import android.content.pm.PackageParserCacheHelper.WriteHelper;
import android.os.Bundle;
import android.os.Parcel;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/content/pm/PackageParserTest.java b/core/tests/coretests/src/android/content/pm/PackageParserTest.java
index 267267e..c5454a6 100644
--- a/core/tests/coretests/src/android/content/pm/PackageParserTest.java
+++ b/core/tests/coretests/src/android/content/pm/PackageParserTest.java
@@ -29,9 +29,10 @@
import android.os.Bundle;
import android.os.FileUtils;
import android.os.SystemProperties;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.frameworks.coretests.R;
@@ -51,6 +52,12 @@
private static final String PRE_RELEASE = "B";
private static final String NEWER_PRE_RELEASE = "C";
+ // Codenames with a fingerprint attached to them. These may only be present in the apps
+ // declared min SDK and not as platform codenames.
+ private static final String OLDER_PRE_RELEASE_WITH_FINGERPRINT = "A.fingerprint";
+ private static final String PRE_RELEASE_WITH_FINGERPRINT = "B.fingerprint";
+ private static final String NEWER_PRE_RELEASE_WITH_FINGERPRINT = "C.fingerprint";
+
private static final String[] CODENAMES_RELEASED = { /* empty */ };
private static final String[] CODENAMES_PRE_RELEASE = { PRE_RELEASE };
@@ -68,7 +75,7 @@
isPlatformReleased ? CODENAMES_RELEASED : CODENAMES_PRE_RELEASE,
outError);
- assertEquals(result, expectedMinSdk);
+ assertEquals("Error msg: " + outError[0], expectedMinSdk, result);
if (expectedMinSdk == -1) {
assertNotNull(outError[0]);
@@ -98,6 +105,7 @@
// APP: Pre-release API 10
// DEV: Pre-release API 20
verifyComputeMinSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, false, -1);
+ verifyComputeMinSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, false, -1);
// Do allow same pre-release minSdkVersion on pre-release platform,
// but overwrite the specified version with CUR_DEVELOPMENT.
@@ -105,11 +113,15 @@
// DEV: Pre-release API 20
verifyComputeMinSdkVersion(PLATFORM_VERSION, PRE_RELEASE, false,
Build.VERSION_CODES.CUR_DEVELOPMENT);
+ verifyComputeMinSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, false,
+ Build.VERSION_CODES.CUR_DEVELOPMENT);
+
// Don't allow newer pre-release minSdkVersion on pre-release platform.
// APP: Pre-release API 30
// DEV: Pre-release API 20
verifyComputeMinSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, -1);
+ verifyComputeMinSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, -1);
}
@Test
@@ -133,16 +145,20 @@
// APP: Pre-release API 10
// DEV: Released API 20
verifyComputeMinSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, true, -1);
+ verifyComputeMinSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, true, -1);
// Don't allow same pre-release minSdkVersion on released platform.
// APP: Pre-release API 20
// DEV: Released API 20
verifyComputeMinSdkVersion(PLATFORM_VERSION, PRE_RELEASE, true, -1);
+ verifyComputeMinSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, true, -1);
+
// Don't allow newer pre-release minSdkVersion on released platform.
// APP: Pre-release API 30
// DEV: Released API 20
verifyComputeMinSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, true, -1);
+ verifyComputeMinSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, true, -1);
}
private void verifyComputeTargetSdkVersion(int targetSdkVersion, String targetSdkCodename,
@@ -189,6 +205,9 @@
// DEV: Pre-release API 20
verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, false, -1,
false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, false, -1,
+ false /* forceCurrentDev */);
+
// Do allow same pre-release targetSdkVersion on pre-release platform,
// but overwrite the specified version with CUR_DEVELOPMENT.
@@ -196,18 +215,26 @@
// DEV: Pre-release API 20
verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, false,
Build.VERSION_CODES.CUR_DEVELOPMENT, false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, false,
+ Build.VERSION_CODES.CUR_DEVELOPMENT, false /* forceCurrentDev */);
+
// Don't allow newer pre-release targetSdkVersion on pre-release platform.
// APP: Pre-release API 30
// DEV: Pre-release API 20
verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, -1,
false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, -1,
+ false /* forceCurrentDev */);
+
// Force newer pre-release targetSdkVersion to current pre-release platform.
// APP: Pre-release API 30
// DEV: Pre-release API 20
verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false,
Build.VERSION_CODES.CUR_DEVELOPMENT, true /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false,
+ Build.VERSION_CODES.CUR_DEVELOPMENT, true /* forceCurrentDev */);
}
@Test
@@ -235,18 +262,25 @@
// DEV: Released API 20
verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, true, -1,
false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, true, -1,
+ false /* forceCurrentDev */);
// Don't allow same pre-release targetSdkVersion on released platform.
// APP: Pre-release API 20
// DEV: Released API 20
verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, true, -1,
false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, true, -1,
+ false /* forceCurrentDev */);
+
// Don't allow newer pre-release targetSdkVersion on released platform.
// APP: Pre-release API 30
// DEV: Released API 20
verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, true, -1,
false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, true, -1,
+ false /* forceCurrentDev */);
}
/**
@@ -296,6 +330,28 @@
}
/**
+ * Copies a specified {@code resourceId} to a file. Returns a non-null file if the copy
+ * succeeded, or {@code null} otherwise.
+ */
+ File copyRawResourceToFile(String baseName, int resourceId) throws Exception {
+ // Copy the resource to a file.
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ InputStream is = context.getResources().openRawResource(resourceId);
+ File outFile = null;
+ try {
+ outFile = new File(context.getFilesDir(), baseName);
+ assertTrue(FileUtils.copyToFile(is, outFile));
+ return outFile;
+ } catch (Exception e) {
+ if (outFile != null) {
+ outFile.delete();
+ }
+
+ return null;
+ }
+ }
+
+ /**
* Attempts to parse a package.
*
* APKs are put into coretests/apks/packageparser_*.
@@ -306,14 +362,14 @@
Package parsePackage(String apkFileName, int apkResourceId,
Function<Package, Package> converter) throws Exception {
// Copy the resource to a file.
- Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
- File outFile = new File(context.getFilesDir(), apkFileName);
+ File outFile = null;
try {
- InputStream is = context.getResources().openRawResource(apkResourceId);
- assertTrue(FileUtils.copyToFile(is, outFile));
+ outFile = copyRawResourceToFile(apkFileName, apkResourceId);
return converter.apply(new PackageParser().parsePackage(outFile, 0 /* flags */));
} finally {
- outFile.delete();
+ if (outFile != null) {
+ outFile.delete();
+ }
}
}
@@ -464,4 +520,20 @@
"android.permission.READ_CONTACTS"),
secondChild.requestedPermissions);
}
+
+ @Test
+ public void testApexPackageInfoGeneration() throws Exception {
+ File apexFile = copyRawResourceToFile("com.android.tzdata.apex",
+ R.raw.com_android_tzdata);
+ PackageInfo pi = PackageParser.generatePackageInfoFromApex(apexFile, false);
+ assertEquals("com.google.android.tzdata", pi.packageName);
+ assertEquals(1, pi.getLongVersionCode());
+ assertNull(pi.signingInfo);
+
+ pi = PackageParser.generatePackageInfoFromApex(apexFile, true);
+ assertEquals("com.google.android.tzdata", pi.packageName);
+ assertEquals(1, pi.getLongVersionCode());
+ assertNotNull(pi.signingInfo);
+ assertTrue(pi.signingInfo.getApkContentsSigners().length > 0);
+ }
}
diff --git a/core/tests/coretests/src/android/content/pm/PackageSharedLibraryUpdaterTest.java b/core/tests/coretests/src/android/content/pm/PackageSharedLibraryUpdaterTest.java
index d5d3d7a..71a0e5e 100644
--- a/core/tests/coretests/src/android/content/pm/PackageSharedLibraryUpdaterTest.java
+++ b/core/tests/coretests/src/android/content/pm/PackageSharedLibraryUpdaterTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.pm;
import java.util.function.Supplier;
diff --git a/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java b/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java
index 952bb55..8874525 100644
--- a/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java
+++ b/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java
@@ -1,8 +1,25 @@
+/*
+ * Copyright (C) 2014 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 android.content.pm;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/content/pm/RegisteredServicesCacheTest.java b/core/tests/coretests/src/android/content/pm/RegisteredServicesCacheTest.java
index d3d1f22a..365e97d 100644
--- a/core/tests/coretests/src/android/content/pm/RegisteredServicesCacheTest.java
+++ b/core/tests/coretests/src/android/content/pm/RegisteredServicesCacheTest.java
@@ -21,11 +21,12 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.os.UserHandle;
-import android.support.test.filters.LargeTest;
import android.test.AndroidTestCase;
import android.util.AttributeSet;
import android.util.SparseArray;
+import androidx.test.filters.LargeTest;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
diff --git a/core/tests/coretests/src/android/content/pm/RemoveUnnecessaryAndroidTestBaseLibraryTest.java b/core/tests/coretests/src/android/content/pm/RemoveUnnecessaryAndroidTestBaseLibraryTest.java
index 3dba440..216b0c8 100644
--- a/core/tests/coretests/src/android/content/pm/RemoveUnnecessaryAndroidTestBaseLibraryTest.java
+++ b/core/tests/coretests/src/android/content/pm/RemoveUnnecessaryAndroidTestBaseLibraryTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.pm;
import static android.content.pm.PackageBuilder.builder;
@@ -20,7 +21,8 @@
import android.content.pm.PackageBackwardCompatibility.RemoveUnnecessaryAndroidTestBaseLibrary;
import android.os.Build;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/content/pm/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java b/core/tests/coretests/src/android/content/pm/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java
index 15b27d7..fc60980 100644
--- a/core/tests/coretests/src/android/content/pm/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java
+++ b/core/tests/coretests/src/android/content/pm/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.pm;
import static android.content.pm.PackageBuilder.builder;
@@ -20,7 +21,8 @@
import android.content.pm.PackageBackwardCompatibility.RemoveUnnecessaryOrgApacheHttpLegacyLibrary;
import android.os.Build;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/content/pm/SignatureTest.java b/core/tests/coretests/src/android/content/pm/SignatureTest.java
index a3fa1a9..f0b4af6 100644
--- a/core/tests/coretests/src/android/content/pm/SignatureTest.java
+++ b/core/tests/coretests/src/android/content/pm/SignatureTest.java
@@ -16,7 +16,7 @@
package android.content.pm;
-import android.support.test.filters.LargeTest;
+import androidx.test.filters.LargeTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/content/pm/VerificationParamsTest.java b/core/tests/coretests/src/android/content/pm/VerificationParamsTest.java
index 68942cb..f6527da 100644
--- a/core/tests/coretests/src/android/content/pm/VerificationParamsTest.java
+++ b/core/tests/coretests/src/android/content/pm/VerificationParamsTest.java
@@ -16,12 +16,12 @@
package android.content.pm;
-import android.content.pm.VerificationParams;
import android.net.Uri;
import android.os.Parcel;
-import android.support.test.filters.LargeTest;
import android.test.AndroidTestCase;
+import androidx.test.filters.LargeTest;
+
/**
* Tests the android.content.pm.VerificationParams class
*
diff --git a/core/tests/coretests/src/android/content/pm/VerifierDeviceIdentityTest.java b/core/tests/coretests/src/android/content/pm/VerifierDeviceIdentityTest.java
index 88d7a59..e7cd02d 100644
--- a/core/tests/coretests/src/android/content/pm/VerifierDeviceIdentityTest.java
+++ b/core/tests/coretests/src/android/content/pm/VerifierDeviceIdentityTest.java
@@ -17,7 +17,8 @@
package android.content.pm;
import android.os.Parcel;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
import java.util.Random;
diff --git a/core/tests/coretests/src/android/content/pm/dex/DexMetadataHelperTest.java b/core/tests/coretests/src/android/content/pm/dex/DexMetadataHelperTest.java
index e248a77..1ca879c 100644
--- a/core/tests/coretests/src/android/content/pm/dex/DexMetadataHelperTest.java
+++ b/core/tests/coretests/src/android/content/pm/dex/DexMetadataHelperTest.java
@@ -29,12 +29,21 @@
import android.content.pm.PackageParser.PackageLite;
import android.content.pm.PackageParser.PackageParserException;
import android.os.FileUtils;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.frameworks.coretests.R;
+import libcore.testing.io.TestIoUtils;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -45,14 +54,6 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
-import libcore.testing.io.TestIoUtils;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
@SmallTest
@RunWith(AndroidJUnit4.class)
public class DexMetadataHelperTest {
diff --git a/core/tests/coretests/src/android/content/res/ConfigurationBoundResourceCacheTest.java b/core/tests/coretests/src/android/content/res/ConfigurationBoundResourceCacheTest.java
index 47554a6..47b14bb 100644
--- a/core/tests/coretests/src/android/content/res/ConfigurationBoundResourceCacheTest.java
+++ b/core/tests/coretests/src/android/content/res/ConfigurationBoundResourceCacheTest.java
@@ -17,9 +17,10 @@
package android.content.res;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.SmallTest;
import android.util.TypedValue;
+import androidx.test.filters.SmallTest;
+
import com.android.frameworks.coretests.R;
import java.lang.reflect.InvocationTargetException;
diff --git a/core/tests/coretests/src/android/content/res/ConfigurationTest.java b/core/tests/coretests/src/android/content/res/ConfigurationTest.java
index 72b9197..2fc3e36 100644
--- a/core/tests/coretests/src/android/content/res/ConfigurationTest.java
+++ b/core/tests/coretests/src/android/content/res/ConfigurationTest.java
@@ -13,19 +13,18 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package android.content.res;
-import org.junit.runner.RunWith;
-import org.junit.Test;
-import org.junit.runners.JUnit4;
-
-import android.content.res.Configuration;
-import android.support.test.filters.SmallTest;
import android.platform.test.annotations.Presubmit;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
-import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
/**
* Build/install/run: bit FrameworksCoreTests:android.content.res.ConfigurationTest
diff --git a/core/tests/coretests/src/android/content/res/FontResourcesParserTest.java b/core/tests/coretests/src/android/content/res/FontResourcesParserTest.java
index 42ff2e9..7ab9d7f 100644
--- a/core/tests/coretests/src/android/content/res/FontResourcesParserTest.java
+++ b/core/tests/coretests/src/android/content/res/FontResourcesParserTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.content.res;
import static android.content.res.FontResourcesParser.FamilyResourceEntry;
@@ -26,9 +27,10 @@
import static org.junit.Assert.assertNotNull;
import android.app.Instrumentation;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/content/res/ResourcesDrawableTest.java b/core/tests/coretests/src/android/content/res/ResourcesDrawableTest.java
new file mode 100644
index 0000000..c4df88b
--- /dev/null
+++ b/core/tests/coretests/src/android/content/res/ResourcesDrawableTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2019 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 android.content.res;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import android.content.Context;
+import android.graphics.drawable.ColorStateListDrawable;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.frameworks.coretests.R;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class ResourcesDrawableTest {
+
+ @Test
+ public void testLoadColorAsDrawable() {
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ Resources resources = context.getResources();
+ Drawable drawable = resources.getDrawable(R.color.color1);
+ assertTrue(drawable instanceof ColorStateListDrawable);
+ }
+
+ @Test
+ public void testLoadColorAsDrawableFailureThrowsOriginalException() throws Throwable {
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ Resources resources = context.getResources();
+
+ Exception exception = null;
+
+ try {
+ resources.getDrawable(R.color.drawable_in_color_dir_invalid);
+ } catch (Exception e) {
+ exception = e;
+ }
+
+ assertNotNull(
+ "Loading drawable_in_color_dir_invalid should throw an exception",
+ exception
+ );
+
+ assertEquals(
+ "Can't find ColorStateList from drawable resource ID #0x"
+ + Integer.toHexString(R.color.drawable_in_color_dir_invalid),
+ exception.getCause().getCause().getMessage()
+ );
+ }
+
+ @Test
+ public void testLoadNormalDrawableInColorDir() {
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ Resources resources = context.getResources();
+ Drawable drawable = resources.getDrawable(R.color.drawable_in_color_dir_valid);
+ assertTrue(drawable instanceof LayerDrawable);
+ }
+}
diff --git a/core/tests/coretests/src/android/content/res/ResourcesLocaleTest.java b/core/tests/coretests/src/android/content/res/ResourcesLocaleTest.java
index e85666e..aa1a534 100644
--- a/core/tests/coretests/src/android/content/res/ResourcesLocaleTest.java
+++ b/core/tests/coretests/src/android/content/res/ResourcesLocaleTest.java
@@ -13,14 +13,15 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package android.content.res;
import android.os.FileUtils;
import android.os.LocaleList;
-import android.support.test.filters.SmallTest;
import android.test.AndroidTestCase;
import android.util.DisplayMetrics;
-import android.view.Display;
+
+import androidx.test.filters.SmallTest;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java b/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java
index b2ff927..a2dab99 100644
--- a/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java
+++ b/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java
@@ -13,18 +13,20 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package android.content.res;
import android.annotation.NonNull;
import android.app.ResourcesManager;
import android.os.Binder;
import android.os.LocaleList;
-import android.support.test.filters.SmallTest;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Display;
import android.view.DisplayAdjustments;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
public class ResourcesManagerTest extends TestCase {
diff --git a/core/tests/coretests/src/android/database/CursorWindowTest.java b/core/tests/coretests/src/android/database/CursorWindowTest.java
index 075f5b7..123da3e 100644
--- a/core/tests/coretests/src/android/database/CursorWindowTest.java
+++ b/core/tests/coretests/src/android/database/CursorWindowTest.java
@@ -16,14 +16,14 @@
package android.database;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.database.CursorWindow;
import android.test.PerformanceTestCase;
-import java.util.Arrays;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
+import java.util.Arrays;
+
public class CursorWindowTest extends TestCase implements PerformanceTestCase {
public boolean isPerformanceOnly() {
return false;
diff --git a/core/tests/coretests/src/android/database/DatabaseCursorTest.java b/core/tests/coretests/src/android/database/DatabaseCursorTest.java
index 3507223..eb4fd70 100644
--- a/core/tests/coretests/src/android/database/DatabaseCursorTest.java
+++ b/core/tests/coretests/src/android/database/DatabaseCursorTest.java
@@ -18,10 +18,6 @@
import android.content.ContentValues;
import android.content.Context;
-import android.database.Cursor;
-import android.database.CursorIndexOutOfBoundsException;
-import android.database.DataSetObserver;
-import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteCursorDriver;
import android.database.sqlite.SQLiteDatabase;
@@ -29,11 +25,12 @@
import android.os.Looper;
import android.test.AndroidTestCase;
import android.test.PerformanceTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.util.Log;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/core/tests/coretests/src/android/database/DatabaseGeneralTest.java b/core/tests/coretests/src/android/database/DatabaseGeneralTest.java
index 9d75c78..49fb75b 100644
--- a/core/tests/coretests/src/android/database/DatabaseGeneralTest.java
+++ b/core/tests/coretests/src/android/database/DatabaseGeneralTest.java
@@ -25,16 +25,17 @@
import android.database.sqlite.SQLiteDebug;
import android.database.sqlite.SQLiteException;
import android.os.Parcel;
-import android.support.test.InstrumentationRegistry;
import android.support.test.uiautomator.UiDevice;
import android.test.AndroidTestCase;
import android.test.PerformanceTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
import android.util.Log;
import android.util.Pair;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+
import junit.framework.Assert;
import java.io.File;
diff --git a/core/tests/coretests/src/android/database/DatabaseLocaleTest.java b/core/tests/coretests/src/android/database/DatabaseLocaleTest.java
index b3282941..ee7936f 100644
--- a/core/tests/coretests/src/android/database/DatabaseLocaleTest.java
+++ b/core/tests/coretests/src/android/database/DatabaseLocaleTest.java
@@ -17,17 +17,17 @@
package android.database;
import android.database.sqlite.SQLiteDatabase;
-import android.database.Cursor;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.Log;
import android.test.MoreAsserts;
+import android.util.Log;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+
+import junit.framework.TestCase;
import java.util.ArrayList;
import java.util.Locale;
-import junit.framework.TestCase;
-
public class DatabaseLocaleTest extends TestCase {
private SQLiteDatabase mDatabase;
diff --git a/core/tests/coretests/src/android/database/DatabaseLockTest.java b/core/tests/coretests/src/android/database/DatabaseLockTest.java
index 8d3cf5a..e8936c9 100644
--- a/core/tests/coretests/src/android/database/DatabaseLockTest.java
+++ b/core/tests/coretests/src/android/database/DatabaseLockTest.java
@@ -17,11 +17,13 @@
package android.database;
import android.database.sqlite.SQLiteDatabase;
-import android.test.suitebuilder.annotation.Suppress;
+import android.test.AndroidTestCase;
import android.util.Log;
+
+import androidx.test.filters.Suppress;
+
import java.io.File;
import java.util.concurrent.atomic.AtomicInteger;
-import android.test.AndroidTestCase;
/*
* This is a series of unit tests for database locks.
diff --git a/core/tests/coretests/src/android/database/DatabaseStatementTest.java b/core/tests/coretests/src/android/database/DatabaseStatementTest.java
index 895d715..4b34650 100644
--- a/core/tests/coretests/src/android/database/DatabaseStatementTest.java
+++ b/core/tests/coretests/src/android/database/DatabaseStatementTest.java
@@ -17,14 +17,14 @@
package android.database;
import android.content.Context;
-import android.database.Cursor;
import android.database.sqlite.SQLiteConstraintException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDoneException;
import android.database.sqlite.SQLiteStatement;
import android.test.AndroidTestCase;
import android.test.PerformanceTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.MediumTest;
import java.io.File;
diff --git a/core/tests/coretests/src/android/database/DatabaseStressTest.java b/core/tests/coretests/src/android/database/DatabaseStressTest.java
index 30e46e7..bfea1fc 100644
--- a/core/tests/coretests/src/android/database/DatabaseStressTest.java
+++ b/core/tests/coretests/src/android/database/DatabaseStressTest.java
@@ -17,11 +17,11 @@
package android.database;
import android.content.Context;
-import android.database.sqlite.*;
+import android.database.sqlite.SQLiteDatabase;
+import android.test.AndroidTestCase;
import android.util.Log;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.Suppress;
+import androidx.test.filters.Suppress;
import java.io.File;
diff --git a/core/tests/coretests/src/android/database/DatabaseUtilsTest.java b/core/tests/coretests/src/android/database/DatabaseUtilsTest.java
index 7c206d7..be156c8 100644
--- a/core/tests/coretests/src/android/database/DatabaseUtilsTest.java
+++ b/core/tests/coretests/src/android/database/DatabaseUtilsTest.java
@@ -20,7 +20,7 @@
import static org.junit.Assert.assertEquals;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/database/RedactingCursorTest.java b/core/tests/coretests/src/android/database/RedactingCursorTest.java
index 93998f3..e2d2bae 100644
--- a/core/tests/coretests/src/android/database/RedactingCursorTest.java
+++ b/core/tests/coretests/src/android/database/RedactingCursorTest.java
@@ -22,8 +22,9 @@
import android.content.Context;
import android.net.Uri;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/database/SQLiteOpenHelperTest.java b/core/tests/coretests/src/android/database/SQLiteOpenHelperTest.java
index 9ed3f11b..730a3cb 100644
--- a/core/tests/coretests/src/android/database/SQLiteOpenHelperTest.java
+++ b/core/tests/coretests/src/android/database/SQLiteOpenHelperTest.java
@@ -26,11 +26,12 @@
import android.database.sqlite.SQLiteDatabaseConfiguration;
import android.database.sqlite.SQLiteDebug;
import android.database.sqlite.SQLiteOpenHelper;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.Log;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/database/run_newdb_perf_test.sh b/core/tests/coretests/src/android/database/run_newdb_perf_test.sh
index c5b2c97..95f1f83 100755
--- a/core/tests/coretests/src/android/database/run_newdb_perf_test.sh
+++ b/core/tests/coretests/src/android/database/run_newdb_perf_test.sh
@@ -23,7 +23,7 @@
for (( i=0; i<$RUN_N; i++ ))
do
- adb shell am instrument -e class 'android.database.NewDatabasePerformanceTestSuite' -w 'com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner'
+ adb shell am instrument -e class 'android.database.NewDatabasePerformanceTestSuite' -w 'com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner'
done
adb logcat -d > /tmp/testlogcat.txt
diff --git a/core/tests/coretests/src/android/database/sqlite/SQLiteCompatibilityWalFlagsTest.java b/core/tests/coretests/src/android/database/sqlite/SQLiteCompatibilityWalFlagsTest.java
index 551a58e..5dbcb3c 100644
--- a/core/tests/coretests/src/android/database/sqlite/SQLiteCompatibilityWalFlagsTest.java
+++ b/core/tests/coretests/src/android/database/sqlite/SQLiteCompatibilityWalFlagsTest.java
@@ -22,9 +22,10 @@
import android.content.Context;
import android.database.DatabaseUtils;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/database/sqlite/SQLiteConnectionPoolTest.java b/core/tests/coretests/src/android/database/sqlite/SQLiteConnectionPoolTest.java
index ed14a53..f1d27d4 100644
--- a/core/tests/coretests/src/android/database/sqlite/SQLiteConnectionPoolTest.java
+++ b/core/tests/coretests/src/android/database/sqlite/SQLiteConnectionPoolTest.java
@@ -21,11 +21,12 @@
import android.content.Context;
import android.os.HandlerThread;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.Log;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/database/sqlite/SQLiteCursorTest.java b/core/tests/coretests/src/android/database/sqlite/SQLiteCursorTest.java
index c52cf6e..78d3c41 100644
--- a/core/tests/coretests/src/android/database/sqlite/SQLiteCursorTest.java
+++ b/core/tests/coretests/src/android/database/sqlite/SQLiteCursorTest.java
@@ -23,7 +23,8 @@
import android.database.CursorWindow;
import android.platform.test.annotations.Presubmit;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
import java.io.File;
import java.util.Arrays;
diff --git a/core/tests/coretests/src/android/graphics/BitmapFactoryTest.java b/core/tests/coretests/src/android/graphics/BitmapFactoryTest.java
index e9e2a4d..564460e 100644
--- a/core/tests/coretests/src/android/graphics/BitmapFactoryTest.java
+++ b/core/tests/coretests/src/android/graphics/BitmapFactoryTest.java
@@ -17,14 +17,14 @@
package android.graphics;
import android.os.ParcelFileDescriptor;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
import java.io.ByteArrayOutputStream;
import java.io.FileDescriptor;
-
public class BitmapFactoryTest extends TestCase {
// tests that we can decode bitmaps from MemoryFiles
diff --git a/core/tests/coretests/src/android/graphics/BitmapTest.java b/core/tests/coretests/src/android/graphics/BitmapTest.java
index 3666ddd..e79d2ae 100644
--- a/core/tests/coretests/src/android/graphics/BitmapTest.java
+++ b/core/tests/coretests/src/android/graphics/BitmapTest.java
@@ -16,11 +16,10 @@
package android.graphics;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
-
public class BitmapTest extends TestCase {
@SmallTest
diff --git a/core/tests/coretests/src/android/graphics/ColorSpaceRendererTest.java b/core/tests/coretests/src/android/graphics/ColorSpaceRendererTest.java
index 6e38fb6..8e9b38c 100644
--- a/core/tests/coretests/src/android/graphics/ColorSpaceRendererTest.java
+++ b/core/tests/coretests/src/android/graphics/ColorSpaceRendererTest.java
@@ -19,8 +19,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/graphics/ColorStateListTest.java b/core/tests/coretests/src/android/graphics/ColorStateListTest.java
index 374d142..1d34f938 100644
--- a/core/tests/coretests/src/android/graphics/ColorStateListTest.java
+++ b/core/tests/coretests/src/android/graphics/ColorStateListTest.java
@@ -19,7 +19,8 @@
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/graphics/FontFileUtilTest.java b/core/tests/coretests/src/android/graphics/FontFileUtilTest.java
index 76267b2..1771671 100644
--- a/core/tests/coretests/src/android/graphics/FontFileUtilTest.java
+++ b/core/tests/coretests/src/android/graphics/FontFileUtilTest.java
@@ -22,11 +22,12 @@
import android.content.res.AssetManager;
import android.graphics.fonts.FontFileUtil;
import android.graphics.fonts.FontVariationAxis;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
import android.util.Log;
import android.util.Pair;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+
import org.junit.Test;
import java.io.File;
diff --git a/core/tests/coretests/src/android/graphics/GraphicsPerformanceTests.java b/core/tests/coretests/src/android/graphics/GraphicsPerformanceTests.java
index 164c1aa..3cfeb25 100644
--- a/core/tests/coretests/src/android/graphics/GraphicsPerformanceTests.java
+++ b/core/tests/coretests/src/android/graphics/GraphicsPerformanceTests.java
@@ -20,7 +20,8 @@
import android.content.res.Resources;
import android.test.AndroidTestCase;
import android.test.PerformanceTestCase;
-import android.test.suitebuilder.annotation.Suppress;
+
+import androidx.test.filters.Suppress;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/graphics/PaintTest.java b/core/tests/coretests/src/android/graphics/PaintTest.java
index b5ed01f..bf56df1 100644
--- a/core/tests/coretests/src/android/graphics/PaintTest.java
+++ b/core/tests/coretests/src/android/graphics/PaintTest.java
@@ -18,9 +18,9 @@
import static org.junit.Assert.assertNotEquals;
-import android.graphics.Paint;
import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import java.util.Arrays;
import java.util.HashSet;
diff --git a/core/tests/coretests/src/android/graphics/PathOffsetTest.java b/core/tests/coretests/src/android/graphics/PathOffsetTest.java
index 950f873..6cc42f6 100644
--- a/core/tests/coretests/src/android/graphics/PathOffsetTest.java
+++ b/core/tests/coretests/src/android/graphics/PathOffsetTest.java
@@ -16,13 +16,13 @@
package android.graphics;
+import static org.junit.Assert.assertTrue;
import android.graphics.Bitmap.Config;
import android.graphics.Path.Direction;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-import static org.junit.Assert.assertTrue;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/graphics/PathTest.java b/core/tests/coretests/src/android/graphics/PathTest.java
index 78e4959..c6d6d1f 100644
--- a/core/tests/coretests/src/android/graphics/PathTest.java
+++ b/core/tests/coretests/src/android/graphics/PathTest.java
@@ -16,11 +16,10 @@
package android.graphics;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
-
public class PathTest extends TestCase {
@SmallTest
diff --git a/core/tests/coretests/src/android/graphics/RectTest.java b/core/tests/coretests/src/android/graphics/RectTest.java
index d31d7d5..2918f44 100644
--- a/core/tests/coretests/src/android/graphics/RectTest.java
+++ b/core/tests/coretests/src/android/graphics/RectTest.java
@@ -23,8 +23,9 @@
import static org.junit.Assert.assertNull;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/graphics/ThreadBitmapTest.java b/core/tests/coretests/src/android/graphics/ThreadBitmapTest.java
index 909a8d9..e1ca7df 100644
--- a/core/tests/coretests/src/android/graphics/ThreadBitmapTest.java
+++ b/core/tests/coretests/src/android/graphics/ThreadBitmapTest.java
@@ -16,7 +16,7 @@
package android.graphics;
-import android.test.suitebuilder.annotation.LargeTest;
+import androidx.test.filters.LargeTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/graphics/TypefaceSystemFallbackTest.java b/core/tests/coretests/src/android/graphics/TypefaceSystemFallbackTest.java
index 6fdb71f..c66bac6 100644
--- a/core/tests/coretests/src/android/graphics/TypefaceSystemFallbackTest.java
+++ b/core/tests/coretests/src/android/graphics/TypefaceSystemFallbackTest.java
@@ -27,12 +27,13 @@
import android.graphics.fonts.FontCustomizationParser;
import android.graphics.fonts.FontFamily;
import android.graphics.fonts.SystemFonts;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.FontConfig;
import android.util.ArrayMap;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/graphics/TypefaceTest.java b/core/tests/coretests/src/android/graphics/TypefaceTest.java
index b0c7976..2d16f82 100644
--- a/core/tests/coretests/src/android/graphics/TypefaceTest.java
+++ b/core/tests/coretests/src/android/graphics/TypefaceTest.java
@@ -22,13 +22,12 @@
import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.Resources;
-import android.graphics.Paint;
-import android.graphics.Typeface;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/graphics/drawable/AdaptiveIconDrawableTest.java b/core/tests/coretests/src/android/graphics/drawable/AdaptiveIconDrawableTest.java
index 781e343..3dc9987 100644
--- a/core/tests/coretests/src/android/graphics/drawable/AdaptiveIconDrawableTest.java
+++ b/core/tests/coretests/src/android/graphics/drawable/AdaptiveIconDrawableTest.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2017 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 android.graphics.drawable;
import android.content.res.Resources;
@@ -11,11 +27,12 @@
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
-import android.support.test.filters.LargeTest;
import android.test.AndroidTestCase;
import android.util.Log;
import android.util.PathParser;
+import androidx.test.filters.LargeTest;
+
import org.junit.Test;
import java.io.File;
diff --git a/core/tests/coretests/src/android/graphics/drawable/DrawableWrapperTest.java b/core/tests/coretests/src/android/graphics/drawable/DrawableWrapperTest.java
index 655efb5..d0a6ff9 100644
--- a/core/tests/coretests/src/android/graphics/drawable/DrawableWrapperTest.java
+++ b/core/tests/coretests/src/android/graphics/drawable/DrawableWrapperTest.java
@@ -24,8 +24,9 @@
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Xfermode;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/graphics/drawable/IconTest.java b/core/tests/coretests/src/android/graphics/drawable/IconTest.java
index 64fadc0..2bdcc28 100644
--- a/core/tests/coretests/src/android/graphics/drawable/IconTest.java
+++ b/core/tests/coretests/src/android/graphics/drawable/IconTest.java
@@ -25,9 +25,10 @@
import android.os.HandlerThread;
import android.os.Parcel;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
import android.util.Log;
+import androidx.test.filters.SmallTest;
+
import com.android.frameworks.coretests.R;
import java.io.ByteArrayOutputStream;
diff --git a/core/tests/coretests/src/android/hardware/display/AmbientBrightnessDayStatsTest.java b/core/tests/coretests/src/android/hardware/display/AmbientBrightnessDayStatsTest.java
index f90ae34..0a25bd7 100644
--- a/core/tests/coretests/src/android/hardware/display/AmbientBrightnessDayStatsTest.java
+++ b/core/tests/coretests/src/android/hardware/display/AmbientBrightnessDayStatsTest.java
@@ -23,8 +23,9 @@
import static org.junit.Assert.fail;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/hardware/display/BrightnessConfigurationTest.java b/core/tests/coretests/src/android/hardware/display/BrightnessConfigurationTest.java
index dcc51e1..823fca5 100644
--- a/core/tests/coretests/src/android/hardware/display/BrightnessConfigurationTest.java
+++ b/core/tests/coretests/src/android/hardware/display/BrightnessConfigurationTest.java
@@ -22,10 +22,11 @@
import static org.junit.Assert.fail;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.Pair;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java b/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java
index f30b1a2..daf6139 100644
--- a/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java
+++ b/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java
@@ -22,15 +22,12 @@
import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.drawable.ColorDrawable;
-import android.hardware.display.DisplayManager;
-import android.hardware.display.VirtualDisplay;
import android.media.Image;
import android.media.ImageReader;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock;
-import android.support.test.filters.LargeTest;
import android.test.AndroidTestCase;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -40,6 +37,8 @@
import android.view.WindowManager;
import android.widget.ImageView;
+import androidx.test.filters.LargeTest;
+
import java.nio.ByteBuffer;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
diff --git a/core/tests/coretests/src/android/hardware/hdmi/HdmiUtilsTest.java b/core/tests/coretests/src/android/hardware/hdmi/HdmiUtilsTest.java
new file mode 100644
index 0000000..16be0b0
--- /dev/null
+++ b/core/tests/coretests/src/android/hardware/hdmi/HdmiUtilsTest.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2018 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 android.hardware.hdmi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.support.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+@SmallTest
+@RunWith(JUnit4.class)
+/** Tests for {@link HdmiUtils} class. */
+public class HdmiUtilsTest {
+
+ @Test
+ public void pathToPort_isMe() {
+ int targetPhysicalAddress = 0x1000;
+ int myPhysicalAddress = 0x1000;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_SAME_PHYSICAL_ADDRESS);
+ }
+
+ @Test
+ public void pathToPort_isDirectlyBelow() {
+ int targetPhysicalAddress = 0x1100;
+ int myPhysicalAddress = 0x1000;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(1);
+ }
+
+ @Test
+ public void pathToPort_isBelow() {
+ int targetPhysicalAddress = 0x1110;
+ int myPhysicalAddress = 0x1000;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(1);
+ }
+
+ @Test
+ public void pathToPort_neitherMeNorBelow() {
+ int targetPhysicalAddress = 0x3000;
+ int myPhysicalAddress = 0x2000;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_NOT_UNDER_LOCAL_DEVICE);
+
+ targetPhysicalAddress = 0x2200;
+ myPhysicalAddress = 0x3300;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_NOT_UNDER_LOCAL_DEVICE);
+
+ targetPhysicalAddress = 0x2213;
+ myPhysicalAddress = 0x2212;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_NOT_UNDER_LOCAL_DEVICE);
+
+ targetPhysicalAddress = 0x2340;
+ myPhysicalAddress = 0x2310;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_NOT_UNDER_LOCAL_DEVICE);
+ }
+}
diff --git a/core/tests/coretests/src/android/metrics/LogMakerTest.java b/core/tests/coretests/src/android/metrics/LogMakerTest.java
index 3be776d..aabfc28 100644
--- a/core/tests/coretests/src/android/metrics/LogMakerTest.java
+++ b/core/tests/coretests/src/android/metrics/LogMakerTest.java
@@ -13,9 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.metrics;
-import android.support.test.filters.LargeTest;
+import androidx.test.filters.LargeTest;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
diff --git a/core/tests/coretests/src/android/metrics/MetricsReaderTest.java b/core/tests/coretests/src/android/metrics/MetricsReaderTest.java
index 784a12f..96dac64 100644
--- a/core/tests/coretests/src/android/metrics/MetricsReaderTest.java
+++ b/core/tests/coretests/src/android/metrics/MetricsReaderTest.java
@@ -13,10 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.metrics;
import android.metrics.MetricsReader.Event;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
diff --git a/core/tests/coretests/src/android/net/LocalSocketTest.java b/core/tests/coretests/src/android/net/LocalSocketTest.java
index 1286b13..9172237 100644
--- a/core/tests/coretests/src/android/net/LocalSocketTest.java
+++ b/core/tests/coretests/src/android/net/LocalSocketTest.java
@@ -16,12 +16,9 @@
package android.net;
-import android.net.Credentials;
-import android.net.LocalServerSocket;
-import android.net.LocalSocket;
-import android.net.LocalSocketAddress;
import android.test.MoreAsserts;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/net/NetworkKeyTest.java b/core/tests/coretests/src/android/net/NetworkKeyTest.java
index fff23a0..0f1c71d 100644
--- a/core/tests/coretests/src/android/net/NetworkKeyTest.java
+++ b/core/tests/coretests/src/android/net/NetworkKeyTest.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 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 android.net;
import static org.junit.Assert.assertEquals;
@@ -7,7 +23,8 @@
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiSsid;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/net/NetworkPolicyManagerTest.java b/core/tests/coretests/src/android/net/NetworkPolicyManagerTest.java
index c6758ce..29e212f 100644
--- a/core/tests/coretests/src/android/net/NetworkPolicyManagerTest.java
+++ b/core/tests/coretests/src/android/net/NetworkPolicyManagerTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.net;
import static android.net.NetworkPolicyManager.MASK_ALL_NETWORKS;
diff --git a/core/tests/coretests/src/android/net/NetworkRecommendationProviderTest.java b/core/tests/coretests/src/android/net/NetworkRecommendationProviderTest.java
index ff9816a..3e45a79 100644
--- a/core/tests/coretests/src/android/net/NetworkRecommendationProviderTest.java
+++ b/core/tests/coretests/src/android/net/NetworkRecommendationProviderTest.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2016 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 android.net;
import static junit.framework.Assert.assertFalse;
@@ -9,7 +25,8 @@
import android.Manifest.permission;
import android.content.Context;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/net/SSLCertificateSocketFactoryTest.java b/core/tests/coretests/src/android/net/SSLCertificateSocketFactoryTest.java
index 5cbf02a..bc12e72 100644
--- a/core/tests/coretests/src/android/net/SSLCertificateSocketFactoryTest.java
+++ b/core/tests/coretests/src/android/net/SSLCertificateSocketFactoryTest.java
@@ -19,7 +19,7 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/net/SSLSessionCacheTest.java b/core/tests/coretests/src/android/net/SSLSessionCacheTest.java
index 11d066b..eec09e6 100644
--- a/core/tests/coretests/src/android/net/SSLSessionCacheTest.java
+++ b/core/tests/coretests/src/android/net/SSLSessionCacheTest.java
@@ -19,10 +19,10 @@
import com.android.org.conscrypt.ClientSessionContext;
import com.android.org.conscrypt.SSLClientSessionCache;
-import org.mockito.Mockito;
-
import junit.framework.TestCase;
+import org.mockito.Mockito;
+
import java.security.KeyManagementException;
import java.security.SecureRandom;
diff --git a/core/tests/coretests/src/android/net/ScoredNetworkTest.java b/core/tests/coretests/src/android/net/ScoredNetworkTest.java
index 109f32e..d984d86 100644
--- a/core/tests/coretests/src/android/net/ScoredNetworkTest.java
+++ b/core/tests/coretests/src/android/net/ScoredNetworkTest.java
@@ -16,11 +16,17 @@
package android.net;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import android.os.Bundle;
import android.os.Parcel;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/net/SntpClientTest.java b/core/tests/coretests/src/android/net/SntpClientTest.java
index d72738c..87edb6e 100644
--- a/core/tests/coretests/src/android/net/SntpClientTest.java
+++ b/core/tests/coretests/src/android/net/SntpClientTest.java
@@ -20,9 +20,10 @@
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
-import android.support.test.runner.AndroidJUnit4;
import android.util.Log;
+import androidx.test.runner.AndroidJUnit4;
+
import libcore.util.HexEncoding;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/net/UriTest.java b/core/tests/coretests/src/android/net/UriTest.java
index ea0347d..a33de7b 100644
--- a/core/tests/coretests/src/android/net/UriTest.java
+++ b/core/tests/coretests/src/android/net/UriTest.java
@@ -18,7 +18,8 @@
import android.content.ContentUris;
import android.os.Parcel;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/net/WebAddressTest.java b/core/tests/coretests/src/android/net/WebAddressTest.java
index 6fcb97e..70a6253 100644
--- a/core/tests/coretests/src/android/net/WebAddressTest.java
+++ b/core/tests/coretests/src/android/net/WebAddressTest.java
@@ -16,8 +16,8 @@
package android.net;
-import android.net.WebAddress;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
public class WebAddressTest extends TestCase {
diff --git a/core/tests/coretests/src/android/net/http/SslCertificateTest.java b/core/tests/coretests/src/android/net/http/SslCertificateTest.java
index 6a30c6c..1beb1de 100644
--- a/core/tests/coretests/src/android/net/http/SslCertificateTest.java
+++ b/core/tests/coretests/src/android/net/http/SslCertificateTest.java
@@ -17,12 +17,13 @@
package android.net.http;
-import android.net.http.SslCertificate;
-import android.test.suitebuilder.annotation.LargeTest;
+import androidx.test.filters.LargeTest;
+
+import junit.framework.TestCase;
+
import java.io.ByteArrayInputStream;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
-import junit.framework.TestCase;
public class SslCertificateTest extends TestCase {
diff --git a/core/tests/coretests/src/android/os/AidlTest.java b/core/tests/coretests/src/android/os/AidlTest.java
index bf11d56..4c51415 100644
--- a/core/tests/coretests/src/android/os/AidlTest.java
+++ b/core/tests/coretests/src/android/os/AidlTest.java
@@ -16,11 +16,10 @@
package android.os;
-import android.os.IInterface;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
+
import com.google.android.collect.Lists;
+
import junit.framework.TestCase;
import java.util.List;
diff --git a/core/tests/coretests/src/android/os/BinderProxyCountingTest.java b/core/tests/coretests/src/android/os/BinderProxyCountingTest.java
index 6cdb35ab..ce6ad87 100644
--- a/core/tests/coretests/src/android/os/BinderProxyCountingTest.java
+++ b/core/tests/coretests/src/android/os/BinderProxyCountingTest.java
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-
package android.os;
import static org.junit.Assert.assertEquals;
@@ -25,12 +24,13 @@
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.UiDevice;
import android.util.Log;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.frameworks.coretests.aidl.IBpcCallbackObserver;
import com.android.frameworks.coretests.aidl.IBpcTestAppCmdService;
import com.android.frameworks.coretests.aidl.IBpcTestServiceCmdService;
@@ -63,7 +63,7 @@
* Install: adb install -r \
* ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
* Run: adb shell am instrument -e class android.os.BinderProxyCountingTest -w \
- * com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
+ * com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner
*
* or
*
diff --git a/core/tests/coretests/src/android/os/BinderProxyTest.java b/core/tests/coretests/src/android/os/BinderProxyTest.java
index 4c36b5c..aceda2d 100644
--- a/core/tests/coretests/src/android/os/BinderProxyTest.java
+++ b/core/tests/coretests/src/android/os/BinderProxyTest.java
@@ -19,7 +19,8 @@
import android.annotation.Nullable;
import android.content.Context;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.MediumTest;
public class BinderProxyTest extends AndroidTestCase {
private static class CountingListener implements Binder.ProxyTransactListener {
diff --git a/core/tests/coretests/src/android/os/BinderTest.java b/core/tests/coretests/src/android/os/BinderTest.java
index 6c9c3c1..a354195 100644
--- a/core/tests/coretests/src/android/os/BinderTest.java
+++ b/core/tests/coretests/src/android/os/BinderTest.java
@@ -16,7 +16,7 @@
package android.os;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/os/BinderThreadPriorityService.java b/core/tests/coretests/src/android/os/BinderThreadPriorityService.java
index 47a4483..ed42058 100644
--- a/core/tests/coretests/src/android/os/BinderThreadPriorityService.java
+++ b/core/tests/coretests/src/android/os/BinderThreadPriorityService.java
@@ -18,7 +18,6 @@
import android.app.Service;
import android.content.Intent;
-import android.text.TextUtils;
import android.util.Log;
/**
diff --git a/core/tests/coretests/src/android/os/BinderThreadPriorityTest.java b/core/tests/coretests/src/android/os/BinderThreadPriorityTest.java
index 56e977c..48c9df6 100644
--- a/core/tests/coretests/src/android/os/BinderThreadPriorityTest.java
+++ b/core/tests/coretests/src/android/os/BinderThreadPriorityTest.java
@@ -21,7 +21,6 @@
import android.content.Intent;
import android.content.ServiceConnection;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.util.Log;
import java.io.File;
diff --git a/core/tests/coretests/src/android/os/BinderWorkSourceTest.java b/core/tests/coretests/src/android/os/BinderWorkSourceTest.java
index 5664df6..e16a3db 100644
--- a/core/tests/coretests/src/android/os/BinderWorkSourceTest.java
+++ b/core/tests/coretests/src/android/os/BinderWorkSourceTest.java
@@ -24,9 +24,10 @@
import android.content.Intent;
import android.content.ServiceConnection;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/os/BrightnessLimit.java b/core/tests/coretests/src/android/os/BrightnessLimit.java
index fabcf3d..5a3724f 100644
--- a/core/tests/coretests/src/android/os/BrightnessLimit.java
+++ b/core/tests/coretests/src/android/os/BrightnessLimit.java
@@ -18,7 +18,6 @@
import android.app.Activity;
import android.hardware.display.DisplayManager;
-import android.os.Bundle;
import android.provider.Settings;
import android.view.View;
import android.view.View.OnClickListener;
diff --git a/core/tests/coretests/src/android/os/BroadcasterTest.java b/core/tests/coretests/src/android/os/BroadcasterTest.java
index 551ea8d..b4c47af9 100644
--- a/core/tests/coretests/src/android/os/BroadcasterTest.java
+++ b/core/tests/coretests/src/android/os/BroadcasterTest.java
@@ -16,11 +16,8 @@
package android.os;
-import android.os.Broadcaster;
-import android.os.Handler;
-import android.os.Message;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.MediumTest;
+
import junit.framework.TestCase;
public class BroadcasterTest extends TestCase {
diff --git a/core/tests/coretests/src/android/os/BuildTest.java b/core/tests/coretests/src/android/os/BuildTest.java
index 3758627..decc768 100644
--- a/core/tests/coretests/src/android/os/BuildTest.java
+++ b/core/tests/coretests/src/android/os/BuildTest.java
@@ -16,9 +16,8 @@
package android.os;
-import android.os.Build;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.Log;
+import androidx.test.filters.SmallTest;
+
import junit.framework.Assert;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/os/BundleTest.java b/core/tests/coretests/src/android/os/BundleTest.java
index 9fcf96d..e4dc993 100644
--- a/core/tests/coretests/src/android/os/BundleTest.java
+++ b/core/tests/coretests/src/android/os/BundleTest.java
@@ -20,8 +20,8 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/os/EnvironmentTest.java b/core/tests/coretests/src/android/os/EnvironmentTest.java
index 5189df5..d98ceaf 100644
--- a/core/tests/coretests/src/android/os/EnvironmentTest.java
+++ b/core/tests/coretests/src/android/os/EnvironmentTest.java
@@ -25,8 +25,9 @@
import static org.junit.Assert.assertEquals;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/os/FileObserverTest.java b/core/tests/coretests/src/android/os/FileObserverTest.java
index 93e27af..ece7645 100644
--- a/core/tests/coretests/src/android/os/FileObserverTest.java
+++ b/core/tests/coretests/src/android/os/FileObserverTest.java
@@ -16,13 +16,14 @@
package android.os;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import androidx.test.filters.MediumTest;
+
import com.google.android.collect.Lists;
import com.google.android.collect.Maps;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.util.Log;
-
import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
diff --git a/core/tests/coretests/src/android/os/FileUtilsTest.java b/core/tests/coretests/src/android/os/FileUtilsTest.java
index 514ea0c..5bce227c 100644
--- a/core/tests/coretests/src/android/os/FileUtilsTest.java
+++ b/core/tests/coretests/src/android/os/FileUtilsTest.java
@@ -51,8 +51,9 @@
import android.content.Context;
import android.os.FileUtils.MemoryPipe;
import android.provider.DocumentsContract.Document;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
import libcore.io.Streams;
diff --git a/core/tests/coretests/src/android/os/HandlerTester.java b/core/tests/coretests/src/android/os/HandlerTester.java
index a216a0b..fa442f4 100644
--- a/core/tests/coretests/src/android/os/HandlerTester.java
+++ b/core/tests/coretests/src/android/os/HandlerTester.java
@@ -16,10 +16,6 @@
package android.os;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-
public abstract class HandlerTester extends Thread {
public abstract void go();
public abstract void handleMessage(Message msg);
diff --git a/core/tests/coretests/src/android/os/HandlerThreadTest.java b/core/tests/coretests/src/android/os/HandlerThreadTest.java
index 9772aa4..93cfc40 100644
--- a/core/tests/coretests/src/android/os/HandlerThreadTest.java
+++ b/core/tests/coretests/src/android/os/HandlerThreadTest.java
@@ -16,13 +16,9 @@
package android.os;
+import androidx.test.filters.MediumTest;
+
import junit.framework.TestCase;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Message;
-import android.os.Process;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
public class HandlerThreadTest extends TestCase {
private static final int TEST_WHAT = 1;
diff --git a/core/tests/coretests/src/android/os/IdleHandlerTest.java b/core/tests/coretests/src/android/os/IdleHandlerTest.java
index 6c0a862..d8886c9 100644
--- a/core/tests/coretests/src/android/os/IdleHandlerTest.java
+++ b/core/tests/coretests/src/android/os/IdleHandlerTest.java
@@ -16,11 +16,10 @@
package android.os;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
import android.os.MessageQueue.IdleHandler;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.MediumTest;
+
import junit.framework.TestCase;
public class IdleHandlerTest extends TestCase {
diff --git a/core/tests/coretests/src/android/os/LocaleListTest.java b/core/tests/coretests/src/android/os/LocaleListTest.java
index 17ef773..1f00a7a 100644
--- a/core/tests/coretests/src/android/os/LocaleListTest.java
+++ b/core/tests/coretests/src/android/os/LocaleListTest.java
@@ -13,14 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.os;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.util.Locale;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
+import java.util.Locale;
+
public class LocaleListTest extends TestCase {
@SmallTest
public void testConstructor() throws Exception {
diff --git a/core/tests/coretests/src/android/os/MemoryFileTest.java b/core/tests/coretests/src/android/os/MemoryFileTest.java
index 20b298d..05c2995 100644
--- a/core/tests/coretests/src/android/os/MemoryFileTest.java
+++ b/core/tests/coretests/src/android/os/MemoryFileTest.java
@@ -17,8 +17,9 @@
package android.os;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.SmallTest;
import java.io.IOException;
import java.io.InputStream;
diff --git a/core/tests/coretests/src/android/os/MessageQueueTest.java b/core/tests/coretests/src/android/os/MessageQueueTest.java
index 1cd1020..2c5588e 100644
--- a/core/tests/coretests/src/android/os/MessageQueueTest.java
+++ b/core/tests/coretests/src/android/os/MessageQueueTest.java
@@ -16,11 +16,9 @@
package android.os;
-import android.os.Handler;
-import android.os.Message;
-import android.os.SystemClock;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
import junit.framework.TestCase;
@Suppress // Failing.
diff --git a/core/tests/coretests/src/android/os/MessengerService.java b/core/tests/coretests/src/android/os/MessengerService.java
index f15e134..db33471 100644
--- a/core/tests/coretests/src/android/os/MessengerService.java
+++ b/core/tests/coretests/src/android/os/MessengerService.java
@@ -18,11 +18,6 @@
import android.app.Service;
import android.content.Intent;
-import android.os.RemoteException;
-import android.os.IBinder;
-import android.os.Handler;
-import android.os.Message;
-import android.os.Messenger;
public class MessengerService extends Service {
private final Handler mHandler = new Handler() {
diff --git a/core/tests/coretests/src/android/os/MessengerTest.java b/core/tests/coretests/src/android/os/MessengerTest.java
index 473ffe2..9143ff1 100644
--- a/core/tests/coretests/src/android/os/MessengerTest.java
+++ b/core/tests/coretests/src/android/os/MessengerTest.java
@@ -20,13 +20,9 @@
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
-import android.os.RemoteException;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Message;
-import android.os.Messenger;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.MediumTest;
public class MessengerTest extends AndroidTestCase {
private Messenger mServiceMessenger;
diff --git a/core/tests/coretests/src/android/os/OsTests.java b/core/tests/coretests/src/android/os/OsTests.java
index 2b84126..08fb945 100644
--- a/core/tests/coretests/src/android/os/OsTests.java
+++ b/core/tests/coretests/src/android/os/OsTests.java
@@ -16,12 +16,8 @@
package android.os;
-import com.google.android.collect.Lists;
import junit.framework.TestSuite;
-import java.util.Enumeration;
-import java.util.List;
-
public class OsTests {
public static TestSuite suite() {
TestSuite suite = new TestSuite(OsTests.class.getName());
diff --git a/core/tests/coretests/src/android/os/ParcelNullabilityTest.java b/core/tests/coretests/src/android/os/ParcelNullabilityTest.java
index 516dc0a..a6b296d 100644
--- a/core/tests/coretests/src/android/os/ParcelNullabilityTest.java
+++ b/core/tests/coretests/src/android/os/ParcelNullabilityTest.java
@@ -20,10 +20,11 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.SmallTest;
import android.util.ArrayMap;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/os/PatternMatcherTest.java b/core/tests/coretests/src/android/os/PatternMatcherTest.java
index 9645ccc..82350cd 100644
--- a/core/tests/coretests/src/android/os/PatternMatcherTest.java
+++ b/core/tests/coretests/src/android/os/PatternMatcherTest.java
@@ -1,9 +1,27 @@
+/*
+ * Copyright (C) 2016 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 android.os;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
-import org.junit.runner.RunWith;
+
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
diff --git a/core/tests/coretests/src/android/os/PerformanceCollectorTest.java b/core/tests/coretests/src/android/os/PerformanceCollectorTest.java
index 7533c84..38ad90f 100644
--- a/core/tests/coretests/src/android/os/PerformanceCollectorTest.java
+++ b/core/tests/coretests/src/android/os/PerformanceCollectorTest.java
@@ -17,15 +17,16 @@
package android.os;
import android.os.PerformanceCollector.PerformanceResultsWriter;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+
+import junit.framework.TestCase;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Random;
-import junit.framework.TestCase;
-
public class PerformanceCollectorTest extends TestCase {
private PerformanceCollector mPerfCollector;
diff --git a/core/tests/coretests/src/android/os/PowerManagerTest.java b/core/tests/coretests/src/android/os/PowerManagerTest.java
index a828f44..1b587dd 100644
--- a/core/tests/coretests/src/android/os/PowerManagerTest.java
+++ b/core/tests/coretests/src/android/os/PowerManagerTest.java
@@ -21,10 +21,11 @@
import static org.mockito.Mockito.verify;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
import android.support.test.uiautomator.UiDevice;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
import org.junit.After;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/os/PowerManagerVrTest.java b/core/tests/coretests/src/android/os/PowerManagerVrTest.java
index e01e5fa..5d2c65b 100644
--- a/core/tests/coretests/src/android/os/PowerManagerVrTest.java
+++ b/core/tests/coretests/src/android/os/PowerManagerVrTest.java
@@ -19,16 +19,14 @@
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
-import android.os.PowerManager;
-import android.os.RemoteException;
-import android.os.ServiceManager;
import android.provider.Settings;
-import android.service.dreams.IDreamManager;
import android.service.dreams.DreamService;
-import android.support.test.filters.MediumTest;
-import android.support.test.filters.SmallTest;
+import android.service.dreams.IDreamManager;
import android.test.ActivityInstrumentationTestCase2;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+
/**
* Tests dream aspects of PowerManager.
*/
diff --git a/core/tests/coretests/src/android/os/ProcessTest.java b/core/tests/coretests/src/android/os/ProcessTest.java
index 1f5b7c8..b749e71 100644
--- a/core/tests/coretests/src/android/os/ProcessTest.java
+++ b/core/tests/coretests/src/android/os/ProcessTest.java
@@ -17,14 +17,10 @@
package android.os;
-import android.os.Process;
-import android.os.UserHandle;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.MediumTest;
import junit.framework.TestCase;
-
public class ProcessTest extends TestCase {
@MediumTest
diff --git a/core/tests/coretests/src/android/os/RedactingFileDescriptorTest.java b/core/tests/coretests/src/android/os/RedactingFileDescriptorTest.java
index 9e15231..d5163e1 100644
--- a/core/tests/coretests/src/android/os/RedactingFileDescriptorTest.java
+++ b/core/tests/coretests/src/android/os/RedactingFileDescriptorTest.java
@@ -24,10 +24,11 @@
import static org.junit.Assert.assertEquals;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
import android.system.Os;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/os/SetPersistentVrThreadTest.java b/core/tests/coretests/src/android/os/SetPersistentVrThreadTest.java
index 9e44554..8085993 100644
--- a/core/tests/coretests/src/android/os/SetPersistentVrThreadTest.java
+++ b/core/tests/coretests/src/android/os/SetPersistentVrThreadTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.os;
import android.app.ActivityManager;
@@ -20,10 +21,10 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
-import android.os.Process;
import android.provider.Settings;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
/**
* Tests ActivityManager#setPersistentVrThread and ActivityManager#setVrThread's
diff --git a/core/tests/coretests/src/android/os/TestHandlerThread.java b/core/tests/coretests/src/android/os/TestHandlerThread.java
index 7e84af3..8c0330b 100644
--- a/core/tests/coretests/src/android/os/TestHandlerThread.java
+++ b/core/tests/coretests/src/android/os/TestHandlerThread.java
@@ -16,11 +16,6 @@
package android.os;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.os.MessageQueue.IdleHandler;
-
abstract class TestHandlerThread {
private boolean mDone = false;
private boolean mSuccess = false;
diff --git a/core/tests/coretests/src/android/os/TestVrActivity.java b/core/tests/coretests/src/android/os/TestVrActivity.java
index 33ff164..75df7c2 100644
--- a/core/tests/coretests/src/android/os/TestVrActivity.java
+++ b/core/tests/coretests/src/android/os/TestVrActivity.java
@@ -17,7 +17,6 @@
package android.os;
import android.app.Activity;
-import android.os.Bundle;
import android.service.vr.VrListenerService;
import java.util.concurrent.CountDownLatch;
diff --git a/core/tests/coretests/src/android/os/TraceTest.java b/core/tests/coretests/src/android/os/TraceTest.java
index 1541553..5cad549 100644
--- a/core/tests/coretests/src/android/os/TraceTest.java
+++ b/core/tests/coretests/src/android/os/TraceTest.java
@@ -16,13 +16,13 @@
package android.os;
-import android.os.Debug;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.util.Log;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.filters.Suppress;
+
/**
* This class is used to test the native tracing support. Run this test
* while tracing on the emulator and then run traceview to view the trace.
diff --git a/core/tests/coretests/src/android/os/UserHandleTest.java b/core/tests/coretests/src/android/os/UserHandleTest.java
index af559fd..4a1cdbf 100644
--- a/core/tests/coretests/src/android/os/UserHandleTest.java
+++ b/core/tests/coretests/src/android/os/UserHandleTest.java
@@ -25,7 +25,7 @@
import static org.junit.Assert.assertEquals;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/os/VintfObjectTest.java b/core/tests/coretests/src/android/os/VintfObjectTest.java
index 44510c2..af3660a 100644
--- a/core/tests/coretests/src/android/os/VintfObjectTest.java
+++ b/core/tests/coretests/src/android/os/VintfObjectTest.java
@@ -16,7 +16,6 @@
package android.os;
-import junit.framework.Assert;
import junit.framework.TestCase;
public class VintfObjectTest extends TestCase {
diff --git a/core/tests/coretests/src/android/os/storage/StorageManagerIntegrationTest.java b/core/tests/coretests/src/android/os/storage/StorageManagerIntegrationTest.java
index 3ec297c..62f2ac2 100644
--- a/core/tests/coretests/src/android/os/storage/StorageManagerIntegrationTest.java
+++ b/core/tests/coretests/src/android/os/storage/StorageManagerIntegrationTest.java
@@ -19,7 +19,8 @@
import android.os.ParcelFileDescriptor;
import android.os.ProxyFileDescriptorCallback;
import android.system.ErrnoException;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/preference/ListPreferenceTest.java b/core/tests/coretests/src/android/preference/ListPreferenceTest.java
index 72f62f1..51dbb64 100644
--- a/core/tests/coretests/src/android/preference/ListPreferenceTest.java
+++ b/core/tests/coretests/src/android/preference/ListPreferenceTest.java
@@ -16,10 +16,10 @@
package android.preference;
-import android.preference.ListPreference;
-import android.support.test.filters.LargeTest;
import android.test.AndroidTestCase;
+import androidx.test.filters.LargeTest;
+
@LargeTest
public class ListPreferenceTest extends AndroidTestCase {
public void testListPreferenceSummaryFromEntries() {
diff --git a/core/tests/coretests/src/android/preference/PreferenceIconSpaceTest.java b/core/tests/coretests/src/android/preference/PreferenceIconSpaceTest.java
index 654474c..0deb77e 100644
--- a/core/tests/coretests/src/android/preference/PreferenceIconSpaceTest.java
+++ b/core/tests/coretests/src/android/preference/PreferenceIconSpaceTest.java
@@ -16,20 +16,20 @@
package android.preference;
-
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/print/IPrintManagerParametersTest.java b/core/tests/coretests/src/android/print/IPrintManagerParametersTest.java
index 5d12f7e..94d85e6 100644
--- a/core/tests/coretests/src/android/print/IPrintManagerParametersTest.java
+++ b/core/tests/coretests/src/android/print/IPrintManagerParametersTest.java
@@ -41,9 +41,10 @@
import android.print.test.services.PrinterDiscoverySessionCallbacks;
import android.print.test.services.StubbablePrinterDiscoverySession;
import android.printservice.recommendation.IRecommendationsChangeListener;
-import android.support.test.filters.LargeTest;
-import android.support.test.filters.MediumTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/provider/DeviceConfigTest.java b/core/tests/coretests/src/android/provider/DeviceConfigTest.java
index 800b864..17e9654 100644
--- a/core/tests/coretests/src/android/provider/DeviceConfigTest.java
+++ b/core/tests/coretests/src/android/provider/DeviceConfigTest.java
@@ -28,9 +28,10 @@
import android.os.Bundle;
import android.os.SystemClock;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/provider/DocumentsProviderTest.java b/core/tests/coretests/src/android/provider/DocumentsProviderTest.java
index 1465d0a9..02a9adf 100644
--- a/core/tests/coretests/src/android/provider/DocumentsProviderTest.java
+++ b/core/tests/coretests/src/android/provider/DocumentsProviderTest.java
@@ -20,9 +20,10 @@
import android.content.ContentResolver;
import android.net.Uri;
import android.provider.DocumentsContract.Path;
-import android.support.test.filters.SmallTest;
import android.test.ProviderTestCase2;
+import androidx.test.filters.SmallTest;
+
import java.util.Arrays;
/**
diff --git a/core/tests/coretests/src/android/provider/FontsContractE2ETest.java b/core/tests/coretests/src/android/provider/FontsContractE2ETest.java
index 2955869..7e02be8 100644
--- a/core/tests/coretests/src/android/provider/FontsContractE2ETest.java
+++ b/core/tests/coretests/src/android/provider/FontsContractE2ETest.java
@@ -25,25 +25,25 @@
import android.app.Instrumentation;
import android.content.Context;
import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.graphics.Typeface;
import android.os.Handler;
-import android.provider.FontsContract.Columns;
import android.provider.FontsContract.FontFamilyResult;
-import android.provider.FontsContract.FontInfo;
-import android.provider.FontsContract;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-import java.util.ArrayList;
-import java.util.List;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.ArrayList;
+import java.util.List;
+
@SmallTest
@RunWith(AndroidJUnit4.class)
public class FontsContractE2ETest {
diff --git a/core/tests/coretests/src/android/provider/FontsContractTest.java b/core/tests/coretests/src/android/provider/FontsContractTest.java
index d42d79e..c5d6f7f 100644
--- a/core/tests/coretests/src/android/provider/FontsContractTest.java
+++ b/core/tests/coretests/src/android/provider/FontsContractTest.java
@@ -13,31 +13,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.provider;
+import static android.provider.FontsContract.Columns.RESULT_CODE_FONT_NOT_FOUND;
+import static android.provider.FontsContract.Columns.RESULT_CODE_FONT_UNAVAILABLE;
+import static android.provider.FontsContract.Columns.RESULT_CODE_MALFORMED_QUERY;
+import static android.provider.FontsContract.Columns.RESULT_CODE_OK;
+
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static android.provider.FontsContract.Columns.RESULT_CODE_OK;
-import static android.provider.FontsContract.Columns.RESULT_CODE_FONT_NOT_FOUND;
-import static android.provider.FontsContract.Columns.RESULT_CODE_FONT_UNAVAILABLE;
-import static android.provider.FontsContract.Columns.RESULT_CODE_MALFORMED_QUERY;
-
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ProviderInfo;
import android.content.pm.Signature;
import android.database.MatrixCursor;
import android.graphics.fonts.FontVariationAxis;
import android.provider.FontsContract.FontInfo;
-import android.support.test.filters.SmallTest;
import android.test.ProviderTestCase2;
import android.util.Base64;
+import androidx.test.filters.SmallTest;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/core/tests/coretests/src/android/provider/MockFontProvider.java b/core/tests/coretests/src/android/provider/MockFontProvider.java
index ad5b130..e527dec 100644
--- a/core/tests/coretests/src/android/provider/MockFontProvider.java
+++ b/core/tests/coretests/src/android/provider/MockFontProvider.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.provider;
import static android.provider.FontsContract.Columns;
@@ -21,16 +22,13 @@
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
-import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.database.MatrixCursor;
-import android.graphics.fonts.FontVariationAxis;
import android.net.Uri;
-import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
-import android.util.ArraySet;
-import android.util.SparseArray;
+
+import com.android.internal.annotations.GuardedBy;
import java.io.File;
import java.io.FileNotFoundException;
@@ -46,8 +44,6 @@
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
-import com.android.internal.annotations.GuardedBy;
-
public class MockFontProvider extends ContentProvider {
final static String AUTHORITY = "android.provider.fonts.font";
diff --git a/core/tests/coretests/src/android/provider/SearchRecentSuggestionsProviderTest.java b/core/tests/coretests/src/android/provider/SearchRecentSuggestionsProviderTest.java
index 7458de5..f84355f 100644
--- a/core/tests/coretests/src/android/provider/SearchRecentSuggestionsProviderTest.java
+++ b/core/tests/coretests/src/android/provider/SearchRecentSuggestionsProviderTest.java
@@ -21,9 +21,9 @@
import android.database.Cursor;
import android.net.Uri;
import android.test.ProviderTestCase2;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
/**
* ProviderTestCase that performs unit tests of SearchRecentSuggestionsProvider.
diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
index 1ed5ce4..0fb1c7c 100644
--- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
@@ -27,9 +27,9 @@
import static java.lang.reflect.Modifier.isStatic;
import android.platform.test.annotations.Presubmit;
-import android.provider.Settings.Global;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -199,6 +199,7 @@
Settings.Global.DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD,
Settings.Global.DATA_STALL_EVALUATION_TYPE,
Settings.Global.DATA_STALL_MIN_EVALUATE_INTERVAL,
+ Settings.Global.DATA_STALL_RECOVERY_ON_BAD_NETWORK,
Settings.Global.DATA_STALL_VALID_DNS_TIME_THRESHOLD,
Settings.Global.DEBUG_APP,
Settings.Global.DEBUG_VIEW_ATTRIBUTES,
@@ -270,6 +271,7 @@
Settings.Global.GNSS_HAL_LOCATION_REQUEST_DURATION_MILLIS,
Settings.Global.GNSS_SATELLITE_BLACKLIST,
Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS,
+ Settings.Global.HDMI_CEC_SWITCH_ENABLED,
Settings.Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED,
Settings.Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED,
Settings.Global.HDMI_CONTROL_ENABLED,
@@ -311,6 +313,7 @@
Settings.Global.MDC_INITIAL_MAX_RETRY,
Settings.Global.MHL_INPUT_SWITCHING_ENABLED,
Settings.Global.MHL_POWER_CHARGE_ENABLED,
+ Settings.Global.MIN_DURATION_BETWEEN_RECOVERY_STEPS_IN_MS,
Settings.Global.MOBILE_DATA, // Candidate for backup?
Settings.Global.MOBILE_DATA_ALWAYS_ON,
Settings.Global.MODE_RINGER,
@@ -477,9 +480,10 @@
Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_ALL_ANGLE,
Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_PKGS,
Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_VALUES,
+ Settings.Global.GUP_DEV_ALL_APPS,
Settings.Global.GUP_DEV_OPT_IN_APPS,
Settings.Global.GUP_DEV_OPT_OUT_APPS,
- Settings.Global.GUP_BLACK_LIST,
+ Settings.Global.GUP_BLACKLIST,
Settings.Global.GPU_DEBUG_LAYER_APP,
Settings.Global.ENABLE_GNSS_RAW_MEAS_FULL_TRACKING,
Settings.Global.INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT,
@@ -554,8 +558,10 @@
Settings.Global.APPOP_HISTORY_PARAMETERS,
Settings.Global.APPOP_HISTORY_MODE,
Settings.Global.APPOP_HISTORY_INTERVAL_MULTIPLIER,
- Settings.Global.APPOP_HISTORY_BASE_INTERVAL_MILLIS);
-
+ Settings.Global.APPOP_HISTORY_BASE_INTERVAL_MILLIS,
+ Settings.Global.ENABLE_RADIO_BUG_DETECTION,
+ Settings.Global.RADIO_BUG_WAKELOCK_TIMEOUT_COUNT_THRESHOLD,
+ Settings.Global.RADIO_BUG_SYSTEM_ERROR_COUNT_THRESHOLD);
private static final Set<String> BACKUP_BLACKLISTED_SECURE_SETTINGS =
newHashSet(
Settings.Secure.ACCESSIBILITY_SOFT_KEYBOARD_MODE,
@@ -664,6 +670,7 @@
Settings.Secure.SMS_DEFAULT_APPLICATION,
Settings.Secure.SPELL_CHECKER_ENABLED, // Intentionally removed in Q
Settings.Secure.TRUST_AGENTS_INITIALIZED,
+ Settings.Secure.TV_APP_USES_NON_SYSTEM_INPUTS,
Settings.Secure.TV_INPUT_CUSTOM_LABELS,
Settings.Secure.TV_INPUT_HIDDEN_INPUTS,
Settings.Secure.TV_USER_SETUP_COMPLETE,
diff --git a/core/tests/coretests/src/android/provider/SettingsProviderTest.java b/core/tests/coretests/src/android/provider/SettingsProviderTest.java
index cb6f0e6..a5f5f67 100644
--- a/core/tests/coretests/src/android/provider/SettingsProviderTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsProviderTest.java
@@ -34,9 +34,10 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.filters.Suppress;
import java.util.HashMap;
import java.util.List;
diff --git a/core/tests/coretests/src/android/provider/SettingsValidatorsTest.java b/core/tests/coretests/src/android/provider/SettingsValidatorsTest.java
index b0d29bd..08f9de6 100644
--- a/core/tests/coretests/src/android/provider/SettingsValidatorsTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsValidatorsTest.java
@@ -22,8 +22,9 @@
import android.platform.test.annotations.Presubmit;
import android.provider.SettingsValidators.Validator;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/provider/SmsProviderTest.java b/core/tests/coretests/src/android/provider/SmsProviderTest.java
index af4d1a6..67ac8ea 100644
--- a/core/tests/coretests/src/android/provider/SmsProviderTest.java
+++ b/core/tests/coretests/src/android/provider/SmsProviderTest.java
@@ -22,8 +22,9 @@
import android.net.Uri;
import android.provider.Telephony.Sms;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.Suppress;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.Suppress;
import java.util.GregorianCalendar;
diff --git a/core/tests/coretests/src/android/provider/TestFontsProvider.java b/core/tests/coretests/src/android/provider/TestFontsProvider.java
index 46906df..c3457fa 100644
--- a/core/tests/coretests/src/android/provider/TestFontsProvider.java
+++ b/core/tests/coretests/src/android/provider/TestFontsProvider.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.provider;
import static android.os.ParcelFileDescriptor.MODE_READ_ONLY;
@@ -23,7 +24,6 @@
import android.content.ContentValues;
import android.database.Cursor;
import android.database.MatrixCursor;
-import android.graphics.Typeface;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
diff --git a/core/tests/coretests/src/android/security/keystore/recovery/KeyChainProtectionParamsTest.java b/core/tests/coretests/src/android/security/keystore/recovery/KeyChainProtectionParamsTest.java
index 0c9c4c1..ce0bf30 100644
--- a/core/tests/coretests/src/android/security/keystore/recovery/KeyChainProtectionParamsTest.java
+++ b/core/tests/coretests/src/android/security/keystore/recovery/KeyChainProtectionParamsTest.java
@@ -20,8 +20,9 @@
import static org.junit.Assert.assertEquals;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/security/keystore/recovery/KeyChainSnapshotTest.java b/core/tests/coretests/src/android/security/keystore/recovery/KeyChainSnapshotTest.java
index 61ab152..37fe22f 100644
--- a/core/tests/coretests/src/android/security/keystore/recovery/KeyChainSnapshotTest.java
+++ b/core/tests/coretests/src/android/security/keystore/recovery/KeyChainSnapshotTest.java
@@ -20,8 +20,9 @@
import static org.junit.Assert.assertEquals;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.google.common.collect.Lists;
@@ -44,6 +45,7 @@
private static final int USER_SECRET_TYPE = KeyChainProtectionParams.TYPE_LOCKSCREEN;
private static final String KEY_ALIAS = "steph";
private static final byte[] KEY_MATERIAL = new byte[] { 3, 5, 7, 9, 1 };
+ private static final byte[] KEY_METADATA = new byte[] { 5, 3, 11, 13 };
private static final CertPath CERT_PATH = TestData.getThmCertPath();
@Test
@@ -99,6 +101,7 @@
WrappedApplicationKey wrappedApplicationKey = snapshot.getWrappedApplicationKeys().get(0);
assertEquals(KEY_ALIAS, wrappedApplicationKey.getAlias());
assertArrayEquals(KEY_MATERIAL, wrappedApplicationKey.getEncryptedKeyMaterial());
+ assertArrayEquals(KEY_METADATA, wrappedApplicationKey.getMetadata());
}
@Test
@@ -165,6 +168,7 @@
WrappedApplicationKey wrappedApplicationKey = snapshot.getWrappedApplicationKeys().get(0);
assertEquals(KEY_ALIAS, wrappedApplicationKey.getAlias());
assertArrayEquals(KEY_MATERIAL, wrappedApplicationKey.getEncryptedKeyMaterial());
+ assertArrayEquals(KEY_METADATA, wrappedApplicationKey.getMetadata());
}
private static KeyChainSnapshot createKeyChainSnapshot() throws Exception {
@@ -196,6 +200,7 @@
return new WrappedApplicationKey.Builder()
.setAlias(KEY_ALIAS)
.setEncryptedKeyMaterial(KEY_MATERIAL)
+ .setMetadata(KEY_METADATA)
.build();
}
diff --git a/core/tests/coretests/src/android/security/keystore/recovery/KeyDerivationParamsTest.java b/core/tests/coretests/src/android/security/keystore/recovery/KeyDerivationParamsTest.java
index b6af9bb..2b37b52 100644
--- a/core/tests/coretests/src/android/security/keystore/recovery/KeyDerivationParamsTest.java
+++ b/core/tests/coretests/src/android/security/keystore/recovery/KeyDerivationParamsTest.java
@@ -20,8 +20,9 @@
import static org.junit.Assert.assertEquals;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/security/keystore/recovery/RecoveryCertPathTest.java b/core/tests/coretests/src/android/security/keystore/recovery/RecoveryCertPathTest.java
index dd8cd8d..3b8f715 100644
--- a/core/tests/coretests/src/android/security/keystore/recovery/RecoveryCertPathTest.java
+++ b/core/tests/coretests/src/android/security/keystore/recovery/RecoveryCertPathTest.java
@@ -20,8 +20,9 @@
import static org.junit.Assert.fail;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/security/keystore/recovery/TrustedRootCertificatesTest.java b/core/tests/coretests/src/android/security/keystore/recovery/TrustedRootCertificatesTest.java
index a5a3ca9..2b15d73 100644
--- a/core/tests/coretests/src/android/security/keystore/recovery/TrustedRootCertificatesTest.java
+++ b/core/tests/coretests/src/android/security/keystore/recovery/TrustedRootCertificatesTest.java
@@ -20,8 +20,8 @@
import static org.junit.Assert.assertTrue;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/security/keystore/recovery/WrappedApplicationKeyTest.java b/core/tests/coretests/src/android/security/keystore/recovery/WrappedApplicationKeyTest.java
index 15afbdd..aec54e1 100644
--- a/core/tests/coretests/src/android/security/keystore/recovery/WrappedApplicationKeyTest.java
+++ b/core/tests/coretests/src/android/security/keystore/recovery/WrappedApplicationKeyTest.java
@@ -20,8 +20,9 @@
import static org.junit.Assert.assertEquals;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
@@ -34,6 +35,7 @@
private static final String ALIAS = "karlin";
private static final byte[] KEY_MATERIAL = new byte[] { 0, 1, 2, 3, 4 };
+ private static final byte[] METADATA = new byte[] {3, 2, 1, 0};
private Parcel mParcel;
@@ -58,8 +60,18 @@
}
@Test
+ public void build_setsMetadata_nonNull() {
+ assertArrayEquals(METADATA, buildTestKeyWithMetadata(METADATA).getMetadata());
+ }
+
+ @Test
+ public void build_setsMetadata_null() {
+ assertArrayEquals(null, buildTestKeyWithMetadata(null).getMetadata());
+ }
+
+ @Test
public void writeToParcel_writesAliasToParcel() {
- buildTestKey().writeToParcel(mParcel, /*flags=*/ 0);
+ buildTestKeyWithMetadata(/*metadata=*/ null).writeToParcel(mParcel, /*flags=*/ 0);
mParcel.setDataPosition(0);
WrappedApplicationKey readFromParcel =
@@ -69,7 +81,7 @@
@Test
public void writeToParcel_writesKeyMaterial() {
- buildTestKey().writeToParcel(mParcel, /*flags=*/ 0);
+ buildTestKeyWithMetadata(/*metadata=*/ null).writeToParcel(mParcel, /*flags=*/ 0);
mParcel.setDataPosition(0);
WrappedApplicationKey readFromParcel =
@@ -77,10 +89,48 @@
assertArrayEquals(KEY_MATERIAL, readFromParcel.getEncryptedKeyMaterial());
}
+ @Test
+ public void writeToParcel_writesMetadata_nonNull() {
+ buildTestKeyWithMetadata(METADATA).writeToParcel(mParcel, /*flags=*/ 0);
+
+ mParcel.setDataPosition(0);
+ WrappedApplicationKey readFromParcel =
+ WrappedApplicationKey.CREATOR.createFromParcel(mParcel);
+ assertArrayEquals(METADATA, readFromParcel.getMetadata());
+ }
+
+ @Test
+ public void writeToParcel_writesMetadata_null() {
+ buildTestKeyWithMetadata(/*metadata=*/ null).writeToParcel(mParcel, /*flags=*/ 0);
+
+ mParcel.setDataPosition(0);
+ WrappedApplicationKey readFromParcel =
+ WrappedApplicationKey.CREATOR.createFromParcel(mParcel);
+ assertArrayEquals(null, readFromParcel.getMetadata());
+ }
+
+ @Test
+ public void writeToParcel_writesMetadata_absent() {
+ buildTestKey().writeToParcel(mParcel, /*flags=*/ 0);
+
+ mParcel.setDataPosition(0);
+ WrappedApplicationKey readFromParcel =
+ WrappedApplicationKey.CREATOR.createFromParcel(mParcel);
+ assertArrayEquals(null, readFromParcel.getMetadata());
+ }
+
private WrappedApplicationKey buildTestKey() {
return new WrappedApplicationKey.Builder()
.setAlias(ALIAS)
.setEncryptedKeyMaterial(KEY_MATERIAL)
.build();
}
+
+ private WrappedApplicationKey buildTestKeyWithMetadata(byte[] metadata) {
+ return new WrappedApplicationKey.Builder()
+ .setAlias(ALIAS)
+ .setEncryptedKeyMaterial(KEY_MATERIAL)
+ .setMetadata(metadata)
+ .build();
+ }
}
diff --git a/core/tests/coretests/src/android/security/keystore/recovery/X509CertificateParsingUtilsTest.java b/core/tests/coretests/src/android/security/keystore/recovery/X509CertificateParsingUtilsTest.java
index 7f0eb43..17486d5 100644
--- a/core/tests/coretests/src/android/security/keystore/recovery/X509CertificateParsingUtilsTest.java
+++ b/core/tests/coretests/src/android/security/keystore/recovery/X509CertificateParsingUtilsTest.java
@@ -21,8 +21,8 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/service/euicc/EuiccProfileInfoTest.java b/core/tests/coretests/src/android/service/euicc/EuiccProfileInfoTest.java
index e69d1e7..d00d052 100644
--- a/core/tests/coretests/src/android/service/euicc/EuiccProfileInfoTest.java
+++ b/core/tests/coretests/src/android/service/euicc/EuiccProfileInfoTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.service.euicc;
import static org.junit.Assert.assertArrayEquals;
@@ -23,10 +24,11 @@
import android.os.Parcel;
import android.service.carrier.CarrierIdentifier;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.telephony.UiccAccessRule;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/service/notification/StatusBarNotificationTest.java b/core/tests/coretests/src/android/service/notification/StatusBarNotificationTest.java
index 8a3ba8c..4aa1000 100644
--- a/core/tests/coretests/src/android/service/notification/StatusBarNotificationTest.java
+++ b/core/tests/coretests/src/android/service/notification/StatusBarNotificationTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.service.notification;
import static junit.framework.Assert.assertEquals;
@@ -28,9 +29,10 @@
import android.content.pm.PackageManager;
import android.metrics.LogMaker;
import android.os.UserHandle;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
diff --git a/core/tests/coretests/src/android/service/settings/suggestions/MockSuggestionService.java b/core/tests/coretests/src/android/service/settings/suggestions/MockSuggestionService.java
index ab541a1..9c8e868 100644
--- a/core/tests/coretests/src/android/service/settings/suggestions/MockSuggestionService.java
+++ b/core/tests/coretests/src/android/service/settings/suggestions/MockSuggestionService.java
@@ -16,16 +16,12 @@
package android.service.settings.suggestions;
-import android.support.annotation.VisibleForTesting;
-
import java.util.ArrayList;
import java.util.List;
public class MockSuggestionService extends SuggestionService {
- @VisibleForTesting
static boolean sOnSuggestionLaunchedCalled;
- @VisibleForTesting
static boolean sOnSuggestionDismissedCalled;
public static void reset() {
diff --git a/core/tests/coretests/src/android/service/settings/suggestions/SuggestionServiceTest.java b/core/tests/coretests/src/android/service/settings/suggestions/SuggestionServiceTest.java
index dca8c09..64edda5 100644
--- a/core/tests/coretests/src/android/service/settings/suggestions/SuggestionServiceTest.java
+++ b/core/tests/coretests/src/android/service/settings/suggestions/SuggestionServiceTest.java
@@ -21,10 +21,11 @@
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.rule.ServiceTestRule;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.rule.ServiceTestRule;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/service/settings/suggestions/SuggestionTest.java b/core/tests/coretests/src/android/service/settings/suggestions/SuggestionTest.java
index b0ec55d..8c47fcb 100644
--- a/core/tests/coretests/src/android/service/settings/suggestions/SuggestionTest.java
+++ b/core/tests/coretests/src/android/service/settings/suggestions/SuggestionTest.java
@@ -24,9 +24,10 @@
import android.graphics.Bitmap;
import android.graphics.drawable.Icon;
import android.os.Parcel;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/text/AndroidCharacterTest.java b/core/tests/coretests/src/android/text/AndroidCharacterTest.java
index 0c7e730..1c5986a 100644
--- a/core/tests/coretests/src/android/text/AndroidCharacterTest.java
+++ b/core/tests/coretests/src/android/text/AndroidCharacterTest.java
@@ -19,7 +19,8 @@
import static org.junit.Assert.assertArrayEquals;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/text/BidiFormatterTest.java b/core/tests/coretests/src/android/text/BidiFormatterTest.java
index 1b936c7..312fb68 100644
--- a/core/tests/coretests/src/android/text/BidiFormatterTest.java
+++ b/core/tests/coretests/src/android/text/BidiFormatterTest.java
@@ -19,8 +19,9 @@
import static org.junit.Assert.assertEquals;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/DynamicLayoutBlocksTest.java b/core/tests/coretests/src/android/text/DynamicLayoutBlocksTest.java
index c69f4f5..cca1ad3 100644
--- a/core/tests/coretests/src/android/text/DynamicLayoutBlocksTest.java
+++ b/core/tests/coretests/src/android/text/DynamicLayoutBlocksTest.java
@@ -22,8 +22,9 @@
import static org.junit.Assert.assertTrue;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/DynamicLayoutTest.java b/core/tests/coretests/src/android/text/DynamicLayoutTest.java
index ea954f6..699243b 100644
--- a/core/tests/coretests/src/android/text/DynamicLayoutTest.java
+++ b/core/tests/coretests/src/android/text/DynamicLayoutTest.java
@@ -27,11 +27,12 @@
import android.graphics.Canvas;
import android.graphics.Paint;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.style.ReplacementSpan;
import android.util.ArraySet;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/EmojiTest.java b/core/tests/coretests/src/android/text/EmojiTest.java
index 313f1b6..1948994 100644
--- a/core/tests/coretests/src/android/text/EmojiTest.java
+++ b/core/tests/coretests/src/android/text/EmojiTest.java
@@ -21,8 +21,9 @@
import android.icu.lang.UCharacterDirection;
import android.icu.text.Bidi;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/FontFallbackSetup.java b/core/tests/coretests/src/android/text/FontFallbackSetup.java
index 5592aac..cc51ec3 100644
--- a/core/tests/coretests/src/android/text/FontFallbackSetup.java
+++ b/core/tests/coretests/src/android/text/FontFallbackSetup.java
@@ -24,9 +24,10 @@
import android.graphics.fonts.FontCustomizationParser;
import android.graphics.fonts.FontFamily;
import android.graphics.fonts.SystemFonts;
-import android.support.test.InstrumentationRegistry;
import android.util.ArrayMap;
+import androidx.test.InstrumentationRegistry;
+
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
diff --git a/core/tests/coretests/src/android/text/LayoutBidiCursorPathTest.java b/core/tests/coretests/src/android/text/LayoutBidiCursorPathTest.java
index 1208d7c..96e7fb9 100644
--- a/core/tests/coretests/src/android/text/LayoutBidiCursorPathTest.java
+++ b/core/tests/coretests/src/android/text/LayoutBidiCursorPathTest.java
@@ -22,12 +22,13 @@
import android.graphics.Path;
import android.graphics.Typeface;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.method.MetaKeyKeyListener;
import android.view.KeyEvent;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/LayoutTest.java b/core/tests/coretests/src/android/text/LayoutTest.java
index 97937a4..990161a 100644
--- a/core/tests/coretests/src/android/text/LayoutTest.java
+++ b/core/tests/coretests/src/android/text/LayoutTest.java
@@ -31,11 +31,12 @@
import android.graphics.Rect;
import android.graphics.RectF;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.Layout.Alignment;
import android.text.style.StrikethroughSpan;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/MeasuredParagraphTest.java b/core/tests/coretests/src/android/text/MeasuredParagraphTest.java
index a0dca2c..57bb434 100644
--- a/core/tests/coretests/src/android/text/MeasuredParagraphTest.java
+++ b/core/tests/coretests/src/android/text/MeasuredParagraphTest.java
@@ -23,9 +23,10 @@
import android.content.Context;
import android.graphics.Typeface;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/PackedIntVectorTest.java b/core/tests/coretests/src/android/text/PackedIntVectorTest.java
index d9dc6fc..ba15b92 100644
--- a/core/tests/coretests/src/android/text/PackedIntVectorTest.java
+++ b/core/tests/coretests/src/android/text/PackedIntVectorTest.java
@@ -19,8 +19,9 @@
import static org.junit.Assert.assertEquals;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/SpannableStringBuilderTest.java b/core/tests/coretests/src/android/text/SpannableStringBuilderTest.java
index d0f2d46..91b8c6a 100644
--- a/core/tests/coretests/src/android/text/SpannableStringBuilderTest.java
+++ b/core/tests/coretests/src/android/text/SpannableStringBuilderTest.java
@@ -16,18 +16,18 @@
package android.text;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.style.BulletSpan;
import android.text.style.QuoteSpan;
import android.text.style.SubscriptSpan;
import android.text.style.UnderlineSpan;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/SpannableStringNoCopyTest.java b/core/tests/coretests/src/android/text/SpannableStringNoCopyTest.java
index 6c05601..9149f7b 100644
--- a/core/tests/coretests/src/android/text/SpannableStringNoCopyTest.java
+++ b/core/tests/coretests/src/android/text/SpannableStringNoCopyTest.java
@@ -21,11 +21,12 @@
import static org.junit.Assert.assertNotNull;
import android.annotation.NonNull;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.style.QuoteSpan;
import android.text.style.UnderlineSpan;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/SpannableTest.java b/core/tests/coretests/src/android/text/SpannableTest.java
index f368428..d248a1f 100644
--- a/core/tests/coretests/src/android/text/SpannableTest.java
+++ b/core/tests/coretests/src/android/text/SpannableTest.java
@@ -19,10 +19,11 @@
import static org.junit.Assert.assertEquals;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.test.MoreAsserts;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/SpannedStringNoCopyTest.java b/core/tests/coretests/src/android/text/SpannedStringNoCopyTest.java
index 380e315..ca43733 100644
--- a/core/tests/coretests/src/android/text/SpannedStringNoCopyTest.java
+++ b/core/tests/coretests/src/android/text/SpannedStringNoCopyTest.java
@@ -21,11 +21,12 @@
import static org.junit.Assert.assertNotNull;
import android.annotation.NonNull;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.style.QuoteSpan;
import android.text.style.UnderlineSpan;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/SpannedTest.java b/core/tests/coretests/src/android/text/SpannedTest.java
index 5737571..3ab0755 100644
--- a/core/tests/coretests/src/android/text/SpannedTest.java
+++ b/core/tests/coretests/src/android/text/SpannedTest.java
@@ -21,13 +21,14 @@
import android.graphics.Typeface;
import android.os.Parcel;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.style.CharacterStyle;
import android.text.style.StyleSpan;
import android.text.style.TextAppearanceSpan;
import android.text.style.TypefaceSpan;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/StaticLayoutBidiTest.java b/core/tests/coretests/src/android/text/StaticLayoutBidiTest.java
index bf0d427..32370b3e 100644
--- a/core/tests/coretests/src/android/text/StaticLayoutBidiTest.java
+++ b/core/tests/coretests/src/android/text/StaticLayoutBidiTest.java
@@ -19,10 +19,11 @@
import static org.junit.Assert.assertEquals;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.Log;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/StaticLayoutDirectionsTest.java b/core/tests/coretests/src/android/text/StaticLayoutDirectionsTest.java
index 5cf5426..4221ac2 100644
--- a/core/tests/coretests/src/android/text/StaticLayoutDirectionsTest.java
+++ b/core/tests/coretests/src/android/text/StaticLayoutDirectionsTest.java
@@ -19,11 +19,12 @@
import static org.junit.Assert.fail;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.Layout.Directions;
import android.text.StaticLayoutTest.LayoutBuilder;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/StaticLayoutTest.java b/core/tests/coretests/src/android/text/StaticLayoutTest.java
index 2521712..b1c896e 100644
--- a/core/tests/coretests/src/android/text/StaticLayoutTest.java
+++ b/core/tests/coretests/src/android/text/StaticLayoutTest.java
@@ -25,13 +25,14 @@
import android.graphics.Paint.FontMetricsInt;
import android.os.LocaleList;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.Layout.Alignment;
import android.text.method.EditorState;
import android.text.style.LocaleSpan;
import android.util.Log;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/StaticLayoutTextMeasuringTest.java b/core/tests/coretests/src/android/text/StaticLayoutTextMeasuringTest.java
index f6888e3..0d42326 100644
--- a/core/tests/coretests/src/android/text/StaticLayoutTextMeasuringTest.java
+++ b/core/tests/coretests/src/android/text/StaticLayoutTextMeasuringTest.java
@@ -19,10 +19,11 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.Layout.Alignment;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/TextLayoutTest.java b/core/tests/coretests/src/android/text/TextLayoutTest.java
index 24020ce..15fbc9e 100644
--- a/core/tests/coretests/src/android/text/TextLayoutTest.java
+++ b/core/tests/coretests/src/android/text/TextLayoutTest.java
@@ -17,8 +17,9 @@
package android.text;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/text/TextLineTest.java b/core/tests/coretests/src/android/text/TextLineTest.java
index 2fe882c..90ce305 100644
--- a/core/tests/coretests/src/android/text/TextLineTest.java
+++ b/core/tests/coretests/src/android/text/TextLineTest.java
@@ -25,14 +25,15 @@
import android.graphics.Paint;
import android.graphics.Typeface;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.filters.Suppress;
-import android.support.test.runner.AndroidJUnit4;
import android.text.Layout.TabStops;
import android.text.style.ReplacementSpan;
import android.text.style.TabStopSpan;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.filters.Suppress;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/TextUtilsTest.java b/core/tests/coretests/src/android/text/TextUtilsTest.java
index 72290bf..be6ef19 100644
--- a/core/tests/coretests/src/android/text/TextUtilsTest.java
+++ b/core/tests/coretests/src/android/text/TextUtilsTest.java
@@ -26,15 +26,16 @@
import android.os.Parcel;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.LargeTest;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.test.MoreAsserts;
import android.text.style.StyleSpan;
import android.text.util.Rfc822Token;
import android.text.util.Rfc822Tokenizer;
import android.view.View;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.google.android.collect.Lists;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/text/VariationParserTest.java b/core/tests/coretests/src/android/text/VariationParserTest.java
index fbd2412..0afe811 100644
--- a/core/tests/coretests/src/android/text/VariationParserTest.java
+++ b/core/tests/coretests/src/android/text/VariationParserTest.java
@@ -21,8 +21,9 @@
import android.graphics.fonts.FontVariationAxis;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/format/DateFormatTest.java b/core/tests/coretests/src/android/text/format/DateFormatTest.java
index 9000ed0..5a0a84d 100644
--- a/core/tests/coretests/src/android/text/format/DateFormatTest.java
+++ b/core/tests/coretests/src/android/text/format/DateFormatTest.java
@@ -20,8 +20,9 @@
import static org.junit.Assert.assertTrue;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/format/DateUtilsTest.java b/core/tests/coretests/src/android/text/format/DateUtilsTest.java
index 872b71a..381c051 100644
--- a/core/tests/coretests/src/android/text/format/DateUtilsTest.java
+++ b/core/tests/coretests/src/android/text/format/DateUtilsTest.java
@@ -22,8 +22,9 @@
import android.content.res.Resources;
import android.os.LocaleList;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/text/format/FormatterTest.java b/core/tests/coretests/src/android/text/format/FormatterTest.java
index 82e4bff..068d047 100644
--- a/core/tests/coretests/src/android/text/format/FormatterTest.java
+++ b/core/tests/coretests/src/android/text/format/FormatterTest.java
@@ -25,11 +25,12 @@
import android.content.res.Configuration;
import android.content.res.Resources;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.format.Formatter.BytesResult;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/text/format/TimeTest.java b/core/tests/coretests/src/android/text/format/TimeTest.java
index d563f2e..ac00411 100644
--- a/core/tests/coretests/src/android/text/format/TimeTest.java
+++ b/core/tests/coretests/src/android/text/format/TimeTest.java
@@ -21,12 +21,13 @@
import static org.junit.Assert.fail;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.filters.Suppress;
-import android.support.test.runner.AndroidJUnit4;
import android.util.Log;
import android.util.TimeFormatException;
+import androidx.test.filters.SmallTest;
+import androidx.test.filters.Suppress;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/method/BackspaceTest.java b/core/tests/coretests/src/android/text/method/BackspaceTest.java
index df4609f..ddae652 100644
--- a/core/tests/coretests/src/android/text/method/BackspaceTest.java
+++ b/core/tests/coretests/src/android/text/method/BackspaceTest.java
@@ -17,15 +17,16 @@
package android.text.method;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.InputType;
import android.util.KeyUtils;
import android.view.KeyEvent;
import android.widget.EditText;
import android.widget.TextView.BufferType;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/method/EditorState.java b/core/tests/coretests/src/android/text/method/EditorState.java
index 12bb8c8..4eff7a4 100644
--- a/core/tests/coretests/src/android/text/method/EditorState.java
+++ b/core/tests/coretests/src/android/text/method/EditorState.java
@@ -21,8 +21,6 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import android.graphics.Canvas;
-import android.graphics.Paint;
import android.text.Editable;
import android.text.Spannable;
import android.text.SpannableString;
diff --git a/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java b/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java
index 45a5010..45b63e0 100644
--- a/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java
+++ b/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java
@@ -17,15 +17,16 @@
package android.text.method;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.InputType;
import android.util.KeyUtils;
import android.view.KeyEvent;
import android.widget.EditText;
import android.widget.TextView.BufferType;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/method/WordIteratorTest.java b/core/tests/coretests/src/android/text/method/WordIteratorTest.java
index 6845863..cc345f5 100644
--- a/core/tests/coretests/src/android/text/method/WordIteratorTest.java
+++ b/core/tests/coretests/src/android/text/method/WordIteratorTest.java
@@ -22,8 +22,9 @@
import static org.junit.Assert.fail;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/style/UnderlineSpanTest.java b/core/tests/coretests/src/android/text/style/UnderlineSpanTest.java
index 3d7e5ba..a0d2f85 100644
--- a/core/tests/coretests/src/android/text/style/UnderlineSpanTest.java
+++ b/core/tests/coretests/src/android/text/style/UnderlineSpanTest.java
@@ -16,17 +16,17 @@
package android.text.style;
-
import static org.junit.Assert.assertEquals;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.StaticLayout;
import android.text.TextPaint;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/text/util/LinkifyTest.java b/core/tests/coretests/src/android/text/util/LinkifyTest.java
index be3a0be..107ecd7 100644
--- a/core/tests/coretests/src/android/text/util/LinkifyTest.java
+++ b/core/tests/coretests/src/android/text/util/LinkifyTest.java
@@ -23,9 +23,6 @@
import android.content.Context;
import android.content.res.Configuration;
import android.os.LocaleList;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
@@ -33,6 +30,10 @@
import android.util.Patterns;
import android.widget.TextView;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/transition/AutoTransitionTest.java b/core/tests/coretests/src/android/transition/AutoTransitionTest.java
index 834fb7a..deae967 100644
--- a/core/tests/coretests/src/android/transition/AutoTransitionTest.java
+++ b/core/tests/coretests/src/android/transition/AutoTransitionTest.java
@@ -16,16 +16,16 @@
package android.transition;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
@RunWith(AndroidJUnit4.class)
public class AutoTransitionTest {
@Test
diff --git a/core/tests/coretests/src/android/transition/FadeTransitionTest.java b/core/tests/coretests/src/android/transition/FadeTransitionTest.java
index 22365ba..2077d94 100644
--- a/core/tests/coretests/src/android/transition/FadeTransitionTest.java
+++ b/core/tests/coretests/src/android/transition/FadeTransitionTest.java
@@ -22,13 +22,14 @@
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.SmallTest;
import android.transition.Transition.TransitionListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import androidx.test.filters.SmallTest;
+
import com.android.frameworks.coretests.R;
import java.util.concurrent.CountDownLatch;
diff --git a/core/tests/coretests/src/android/transition/SlideTransitionTest.java b/core/tests/coretests/src/android/transition/SlideTransitionTest.java
index 8b9ec74..046e49df 100644
--- a/core/tests/coretests/src/android/transition/SlideTransitionTest.java
+++ b/core/tests/coretests/src/android/transition/SlideTransitionTest.java
@@ -19,18 +19,18 @@
import android.animation.AnimatorSetActivity;
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
+import androidx.test.filters.SmallTest;
+
import com.android.frameworks.coretests.R;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-
public class SlideTransitionTest extends ActivityInstrumentationTestCase2<AnimatorSetActivity> {
Activity mActivity;
diff --git a/core/tests/coretests/src/android/transition/TransitionTest.java b/core/tests/coretests/src/android/transition/TransitionTest.java
index 7e629f9..f59c406 100644
--- a/core/tests/coretests/src/android/transition/TransitionTest.java
+++ b/core/tests/coretests/src/android/transition/TransitionTest.java
@@ -19,7 +19,6 @@
import android.animation.AnimatorSetActivity;
import android.app.Activity;
import android.graphics.Rect;
-import android.support.test.filters.LargeTest;
import android.test.ActivityInstrumentationTestCase2;
import android.transition.Transition.EpicenterCallback;
import android.util.ArrayMap;
@@ -27,6 +26,8 @@
import android.view.animation.AccelerateInterpolator;
import android.widget.TextView;
+import androidx.test.filters.LargeTest;
+
import com.android.frameworks.coretests.R;
import java.lang.reflect.Field;
diff --git a/core/tests/coretests/src/android/util/ArrayMapTest.java b/core/tests/coretests/src/android/util/ArrayMapTest.java
index f0cc7f7..b212cf6 100644
--- a/core/tests/coretests/src/android/util/ArrayMapTest.java
+++ b/core/tests/coretests/src/android/util/ArrayMapTest.java
@@ -14,10 +14,10 @@
package android.util;
-import android.support.test.filters.LargeTest;
-import android.util.ArrayMap;
+import androidx.test.filters.LargeTest;
import junit.framework.TestCase;
+
import org.junit.Test;
import java.util.ConcurrentModificationException;
diff --git a/core/tests/coretests/src/android/util/Base64Test.java b/core/tests/coretests/src/android/util/Base64Test.java
index af608c3..15c51af 100644
--- a/core/tests/coretests/src/android/util/Base64Test.java
+++ b/core/tests/coretests/src/android/util/Base64Test.java
@@ -16,7 +16,7 @@
package android.util;
-import android.support.test.filters.LargeTest;
+import androidx.test.filters.LargeTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/util/DataUnitTest.java b/core/tests/coretests/src/android/util/DataUnitTest.java
index 4eae8b4..ec296b7 100644
--- a/core/tests/coretests/src/android/util/DataUnitTest.java
+++ b/core/tests/coretests/src/android/util/DataUnitTest.java
@@ -16,7 +16,7 @@
package android.util;
-import android.support.test.filters.SmallTest;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/util/DayOfMonthCursorTest.java b/core/tests/coretests/src/android/util/DayOfMonthCursorTest.java
index 4c5ad76..572e9b0 100644
--- a/core/tests/coretests/src/android/util/DayOfMonthCursorTest.java
+++ b/core/tests/coretests/src/android/util/DayOfMonthCursorTest.java
@@ -16,10 +16,11 @@
package android.util;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
import java.util.Calendar;
-import android.test.suitebuilder.annotation.SmallTest;
/**
* Unit tests for {@link DayOfMonthCursor}.
diff --git a/core/tests/coretests/src/android/util/InternalSelectionView.java b/core/tests/coretests/src/android/util/InternalSelectionView.java
index a0fb0f1..4a1baef 100644
--- a/core/tests/coretests/src/android/util/InternalSelectionView.java
+++ b/core/tests/coretests/src/android/util/InternalSelectionView.java
@@ -16,19 +16,16 @@
package android.util;
-import com.android.frameworks.coretests.R;
-
-import android.view.View;
-import android.view.KeyEvent;
import android.content.Context;
import android.content.res.TypedArray;
-import android.graphics.Paint;
import android.graphics.Canvas;
-import android.graphics.Rect;
import android.graphics.Color;
-import android.util.AttributeSet;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.view.KeyEvent;
+import android.view.View;
-
+import com.android.frameworks.coretests.R;
/**
* A view that has a known number of selectable rows, and maintains a notion of which
diff --git a/core/tests/coretests/src/android/util/KeyUtils.java b/core/tests/coretests/src/android/util/KeyUtils.java
index 593f727..612643e 100644
--- a/core/tests/coretests/src/android/util/KeyUtils.java
+++ b/core/tests/coretests/src/android/util/KeyUtils.java
@@ -17,16 +17,10 @@
package android.util;
import android.app.Instrumentation;
-import android.os.SystemClock;
import android.test.ActivityInstrumentationTestCase;
-import android.test.InstrumentationTestCase;
-import android.view.Gravity;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.View;
import android.view.ViewConfiguration;
-import android.view.ViewGroup;
/**
* Reusable methods for generating key events.
diff --git a/core/tests/coretests/src/android/util/KeyValueListParserTest.java b/core/tests/coretests/src/android/util/KeyValueListParserTest.java
index 038f0b7..f65c4c7 100644
--- a/core/tests/coretests/src/android/util/KeyValueListParserTest.java
+++ b/core/tests/coretests/src/android/util/KeyValueListParserTest.java
@@ -19,8 +19,9 @@
import static org.junit.Assert.assertEquals;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/util/ListUtil.java b/core/tests/coretests/src/android/util/ListUtil.java
index 2a7cb96..3748cf8 100644
--- a/core/tests/coretests/src/android/util/ListUtil.java
+++ b/core/tests/coretests/src/android/util/ListUtil.java
@@ -20,13 +20,11 @@
import android.view.KeyEvent;
import android.widget.ListView;
-
/**
* Various useful stuff for instrumentation testing listview.
*/
public class ListUtil {
-
private final ListView mListView;
private final Instrumentation mInstrumentation;
diff --git a/core/tests/coretests/src/android/util/LocalLogTest.java b/core/tests/coretests/src/android/util/LocalLogTest.java
index 5144c85e..6cdcb5e 100644
--- a/core/tests/coretests/src/android/util/LocalLogTest.java
+++ b/core/tests/coretests/src/android/util/LocalLogTest.java
@@ -16,7 +16,7 @@
package android.util;
-import android.support.test.filters.LargeTest;
+import androidx.test.filters.LargeTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/util/LogNullabilityTest.java b/core/tests/coretests/src/android/util/LogNullabilityTest.java
index 3f4776d..370885d 100644
--- a/core/tests/coretests/src/android/util/LogNullabilityTest.java
+++ b/core/tests/coretests/src/android/util/LogNullabilityTest.java
@@ -19,8 +19,8 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/util/LogTest.java b/core/tests/coretests/src/android/util/LogTest.java
index 30c81b0..d783c12 100644
--- a/core/tests/coretests/src/android/util/LogTest.java
+++ b/core/tests/coretests/src/android/util/LogTest.java
@@ -16,13 +16,12 @@
package android.util;
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
import android.os.SystemProperties;
import android.test.PerformanceTestCase;
-import android.test.suitebuilder.annotation.Suppress;
-import android.util.Log;
+
+import androidx.test.filters.Suppress;
+
+import junit.framework.TestCase;
//This is an empty TestCase.
@Suppress
diff --git a/core/tests/coretests/src/android/util/LongSparseLongArrayTest.java b/core/tests/coretests/src/android/util/LongSparseLongArrayTest.java
index 3f03db9..a1d48e6 100644
--- a/core/tests/coretests/src/android/util/LongSparseLongArrayTest.java
+++ b/core/tests/coretests/src/android/util/LongSparseLongArrayTest.java
@@ -16,7 +16,7 @@
package android.util;
-import android.support.test.filters.LargeTest;
+import androidx.test.filters.LargeTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/util/LruCacheTest.java b/core/tests/coretests/src/android/util/LruCacheTest.java
index 5a97158..1928bfd 100644
--- a/core/tests/coretests/src/android/util/LruCacheTest.java
+++ b/core/tests/coretests/src/android/util/LruCacheTest.java
@@ -16,12 +16,13 @@
package android.util;
+import junit.framework.TestCase;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import junit.framework.TestCase;
public final class LruCacheTest extends TestCase {
private int expectedCreateCount;
diff --git a/core/tests/coretests/src/android/util/MonthDisplayHelperTest.java b/core/tests/coretests/src/android/util/MonthDisplayHelperTest.java
index 55da665..30d5f77 100644
--- a/core/tests/coretests/src/android/util/MonthDisplayHelperTest.java
+++ b/core/tests/coretests/src/android/util/MonthDisplayHelperTest.java
@@ -16,12 +16,12 @@
package android.util;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.util.Calendar;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
+import java.util.Calendar;
+
/**
* Unit tests for {@link MonthDisplayHelper}.
*/
diff --git a/core/tests/coretests/src/android/util/OrientationUtil.java b/core/tests/coretests/src/android/util/OrientationUtil.java
index ecdca5d..0361194 100644
--- a/core/tests/coretests/src/android/util/OrientationUtil.java
+++ b/core/tests/coretests/src/android/util/OrientationUtil.java
@@ -19,7 +19,6 @@
import android.app.Activity;
import android.app.Instrumentation;
import android.content.pm.ActivityInfo;
-
import android.test.ActivityInstrumentationTestCase2;
import com.android.internal.util.Preconditions;
diff --git a/core/tests/coretests/src/android/util/PatternsTest.java b/core/tests/coretests/src/android/util/PatternsTest.java
index 360b875..6cea2f3 100644
--- a/core/tests/coretests/src/android/util/PatternsTest.java
+++ b/core/tests/coretests/src/android/util/PatternsTest.java
@@ -13,15 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.util;
-import android.support.test.filters.SmallTest;
+import androidx.test.filters.SmallTest;
+
+import junit.framework.TestCase;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import junit.framework.TestCase;
-
public class PatternsTest extends TestCase {
// Tests for Patterns.TOP_LEVEL_DOMAIN
diff --git a/core/tests/coretests/src/android/util/RecurrenceRuleTest.java b/core/tests/coretests/src/android/util/RecurrenceRuleTest.java
index 39d492d..caa1208 100644
--- a/core/tests/coretests/src/android/util/RecurrenceRuleTest.java
+++ b/core/tests/coretests/src/android/util/RecurrenceRuleTest.java
@@ -16,7 +16,7 @@
package android.util;
-import android.support.test.filters.SmallTest;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/util/SparseLongArrayTest.java b/core/tests/coretests/src/android/util/SparseLongArrayTest.java
index 5a5e893..df2d752 100644
--- a/core/tests/coretests/src/android/util/SparseLongArrayTest.java
+++ b/core/tests/coretests/src/android/util/SparseLongArrayTest.java
@@ -19,9 +19,10 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import android.support.annotation.NonNull;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import android.annotation.NonNull;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/util/StateSetTest.java b/core/tests/coretests/src/android/util/StateSetTest.java
index e481ce0..b5d6270 100644
--- a/core/tests/coretests/src/android/util/StateSetTest.java
+++ b/core/tests/coretests/src/android/util/StateSetTest.java
@@ -16,8 +16,9 @@
package android.util;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
-import android.test.suitebuilder.annotation.SmallTest;
/**
* Tests for {@link StateSet}
diff --git a/core/tests/coretests/src/android/util/TimestampedValueTest.java b/core/tests/coretests/src/android/util/TimestampedValueTest.java
index 03b4abd..6e3ab79 100644
--- a/core/tests/coretests/src/android/util/TimestampedValueTest.java
+++ b/core/tests/coretests/src/android/util/TimestampedValueTest.java
@@ -21,7 +21,8 @@
import static org.junit.Assert.fail;
import android.os.Parcel;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/util/TimingsTraceLogTest.java b/core/tests/coretests/src/android/util/TimingsTraceLogTest.java
index 7bb4ab8..77d0552 100644
--- a/core/tests/coretests/src/android/util/TimingsTraceLogTest.java
+++ b/core/tests/coretests/src/android/util/TimingsTraceLogTest.java
@@ -19,8 +19,9 @@
import static org.junit.Assert.assertTrue;
import android.os.Trace;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -28,7 +29,6 @@
import java.util.ArrayList;
import java.util.List;
-
/**
* Tests for {@link TimingsTraceLog}.
* <p>Usage: bit FrameworksCoreTests:android.util.TimingsTraceLogTest
diff --git a/core/tests/coretests/src/android/util/TouchModeFlexibleAsserts.java b/core/tests/coretests/src/android/util/TouchModeFlexibleAsserts.java
index ca12a15..fc08235 100644
--- a/core/tests/coretests/src/android/util/TouchModeFlexibleAsserts.java
+++ b/core/tests/coretests/src/android/util/TouchModeFlexibleAsserts.java
@@ -16,12 +16,12 @@
package android.util;
-import junit.framework.Assert;
-
import android.test.InstrumentationTestCase;
import android.test.TouchUtils;
import android.view.View;
+import junit.framework.Assert;
+
/**
* When entering touch mode via touch, the tests can be flaky. These asserts
* are more flexible (allowing up to MAX_ATTEMPTS touches to enter touch mode via touch or
diff --git a/core/tests/coretests/src/android/view/BigCache.java b/core/tests/coretests/src/android/view/BigCache.java
index 2182176..6a1bcaa 100644
--- a/core/tests/coretests/src/android/view/BigCache.java
+++ b/core/tests/coretests/src/android/view/BigCache.java
@@ -16,16 +16,12 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
-import android.os.Bundle;
import android.app.Activity;
+import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.ScrollView;
-import android.view.ViewGroup;
-import android.view.View;
-import android.view.Display;
-import android.view.ViewConfiguration;
+
+import com.android.frameworks.coretests.R;
/**
* This activity contains two Views, one as big as the screen, one much larger. The large one
diff --git a/core/tests/coretests/src/android/view/BigCacheTest.java b/core/tests/coretests/src/android/view/BigCacheTest.java
index 8c2c865..ed4b996 100644
--- a/core/tests/coretests/src/android/view/BigCacheTest.java
+++ b/core/tests/coretests/src/android/view/BigCacheTest.java
@@ -16,14 +16,12 @@
package android.view;
-import android.view.BigCache;
-import com.android.frameworks.coretests.R;
-
-import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.View;
-import android.view.ViewConfiguration;
import android.graphics.Bitmap;
+import android.test.ActivityInstrumentationTestCase;
+
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
/**
* Builds the drawing cache of two Views, one smaller than the maximum cache size,
diff --git a/core/tests/coretests/src/android/view/BitmapDrawable.java b/core/tests/coretests/src/android/view/BitmapDrawable.java
index f7bad84..42c176f 100644
--- a/core/tests/coretests/src/android/view/BitmapDrawable.java
+++ b/core/tests/coretests/src/android/view/BitmapDrawable.java
@@ -16,19 +16,10 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.AbsoluteLayout;
-import android.widget.Button;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
+
+import com.android.frameworks.coretests.R;
public class BitmapDrawable extends Activity {
@Override
diff --git a/core/tests/coretests/src/android/view/CreateViewTest.java b/core/tests/coretests/src/android/view/CreateViewTest.java
index 16656f6..520f83f 100644
--- a/core/tests/coretests/src/android/view/CreateViewTest.java
+++ b/core/tests/coretests/src/android/view/CreateViewTest.java
@@ -16,16 +16,17 @@
package android.view;
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
+
import android.content.Context;
import android.test.AndroidTestCase;
import android.test.PerformanceTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.view.View;
-import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
-import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import android.widget.LinearLayout;
import android.widget.TextView;
+import androidx.test.filters.SmallTest;
+
public class CreateViewTest extends AndroidTestCase implements PerformanceTestCase {
public boolean isPerformanceOnly() {
diff --git a/core/tests/coretests/src/android/view/Disabled.java b/core/tests/coretests/src/android/view/Disabled.java
index d3c7470..ce90039 100644
--- a/core/tests/coretests/src/android/view/Disabled.java
+++ b/core/tests/coretests/src/android/view/Disabled.java
@@ -16,13 +16,12 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
-import android.os.Bundle;
-import android.widget.Button;
-import android.view.View;
-import android.view.View.OnClickListener;
import android.app.Activity;
+import android.os.Bundle;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+
+import com.android.frameworks.coretests.R;
/**
* Exercise View's disabled state.
diff --git a/core/tests/coretests/src/android/view/DisabledLongpressTest.java b/core/tests/coretests/src/android/view/DisabledLongpressTest.java
index faa0865..a9fec01 100644
--- a/core/tests/coretests/src/android/view/DisabledLongpressTest.java
+++ b/core/tests/coretests/src/android/view/DisabledLongpressTest.java
@@ -18,11 +18,12 @@
import android.test.ActivityInstrumentationTestCase;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.util.KeyUtils;
import android.view.View.OnLongClickListener;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/view/DisabledTest.java b/core/tests/coretests/src/android/view/DisabledTest.java
index 291a11c..8922e5f 100644
--- a/core/tests/coretests/src/android/view/DisabledTest.java
+++ b/core/tests/coretests/src/android/view/DisabledTest.java
@@ -18,12 +18,11 @@
import android.test.ActivityInstrumentationTestCase;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.KeyEvent;
-import android.view.View;
import android.widget.Button;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/view/DisplayCutoutTest.java b/core/tests/coretests/src/android/view/DisplayCutoutTest.java
index 8e4f2cd..dd50af877 100644
--- a/core/tests/coretests/src/android/view/DisplayCutoutTest.java
+++ b/core/tests/coretests/src/android/view/DisplayCutoutTest.java
@@ -33,17 +33,17 @@
import android.graphics.Rect;
import android.os.Parcel;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.DisplayCutout.ParcelableWrapper;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.Arrays;
import java.util.Collections;
-
@RunWith(AndroidJUnit4.class)
@SmallTest
@Presubmit
diff --git a/core/tests/coretests/src/android/view/DrawableBgMinSize.java b/core/tests/coretests/src/android/view/DrawableBgMinSize.java
index 58bfb8a..ba9ba00 100644
--- a/core/tests/coretests/src/android/view/DrawableBgMinSize.java
+++ b/core/tests/coretests/src/android/view/DrawableBgMinSize.java
@@ -16,12 +16,9 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsoluteLayout;
import android.widget.Button;
@@ -30,6 +27,8 @@
import android.widget.RelativeLayout;
import android.widget.TextView;
+import com.android.frameworks.coretests.R;
+
/**
* Views should obey their background {@link Drawable}'s minimum size
* requirements ({@link Drawable#getMinimumHeight()} and
diff --git a/core/tests/coretests/src/android/view/DrawableBgMinSizeTest.java b/core/tests/coretests/src/android/view/DrawableBgMinSizeTest.java
index e705c87..1735e8c 100644
--- a/core/tests/coretests/src/android/view/DrawableBgMinSizeTest.java
+++ b/core/tests/coretests/src/android/view/DrawableBgMinSizeTest.java
@@ -16,14 +16,9 @@
package android.view;
-import com.android.frameworks.coretests.R;
-import android.view.DrawableBgMinSize;
-import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.MediumTest;
-
import android.graphics.drawable.Drawable;
import android.test.ActivityInstrumentationTestCase;
-import android.view.View;
+import android.test.TouchUtils;
import android.widget.AbsoluteLayout;
import android.widget.Button;
import android.widget.FrameLayout;
@@ -31,6 +26,10 @@
import android.widget.RelativeLayout;
import android.widget.TextView;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
/**
* {@link DrawableBgMinSize} exercises Views to obey their background drawable's
* minimum sizes.
diff --git a/core/tests/coretests/src/android/view/FocusFinderTest.java b/core/tests/coretests/src/android/view/FocusFinderTest.java
index 2732a04..b35c64a 100644
--- a/core/tests/coretests/src/android/view/FocusFinderTest.java
+++ b/core/tests/coretests/src/android/view/FocusFinderTest.java
@@ -18,7 +18,8 @@
import android.graphics.Rect;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
public class FocusFinderTest extends AndroidTestCase {
diff --git a/core/tests/coretests/src/android/view/GlobalFocusChange.java b/core/tests/coretests/src/android/view/GlobalFocusChange.java
index 041c0de..ee92b64 100644
--- a/core/tests/coretests/src/android/view/GlobalFocusChange.java
+++ b/core/tests/coretests/src/android/view/GlobalFocusChange.java
@@ -16,12 +16,10 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
-import android.view.ViewTreeObserver;
-import android.view.View;
+
+import com.android.frameworks.coretests.R;
public class GlobalFocusChange extends Activity implements ViewTreeObserver.OnGlobalFocusChangeListener {
public View mOldFocus;
diff --git a/core/tests/coretests/src/android/view/GlobalFocusChangeTest.java b/core/tests/coretests/src/android/view/GlobalFocusChangeTest.java
index dab7b90..960654a 100644
--- a/core/tests/coretests/src/android/view/GlobalFocusChangeTest.java
+++ b/core/tests/coretests/src/android/view/GlobalFocusChangeTest.java
@@ -17,13 +17,13 @@
package android.view;
import android.test.ActivityInstrumentationTestCase;
-import android.test.FlakyTest;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.Suppress;
-import android.view.View;
-import android.view.KeyEvent;
+
+import androidx.test.filters.FlakyTest;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
import com.android.frameworks.coretests.R;
@Suppress // Flaky
@@ -50,7 +50,7 @@
super.tearDown();
}
- @FlakyTest(tolerance = 4)
+ @FlakyTest
@LargeTest
public void testFocusChange() throws Exception {
sendKeys(KeyEvent.KEYCODE_DPAD_RIGHT);
@@ -62,7 +62,7 @@
assertSame(mRight, mActivity.mNewFocus);
}
- @FlakyTest(tolerance = 4)
+ @FlakyTest
@MediumTest
public void testEnterTouchMode() throws Exception {
assertTrue(mLeft.isFocused());
@@ -73,7 +73,7 @@
assertSame(null, mActivity.mNewFocus);
}
- @FlakyTest(tolerance = 4)
+ @FlakyTest
@MediumTest
public void testLeaveTouchMode() throws Exception {
assertTrue(mLeft.isFocused());
diff --git a/core/tests/coretests/src/android/view/HandlerActionQueueTest.java b/core/tests/coretests/src/android/view/HandlerActionQueueTest.java
index fd8f23a..bedb75b 100644
--- a/core/tests/coretests/src/android/view/HandlerActionQueueTest.java
+++ b/core/tests/coretests/src/android/view/HandlerActionQueueTest.java
@@ -17,7 +17,8 @@
package android.view;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
public class HandlerActionQueueTest extends AndroidTestCase {
diff --git a/core/tests/coretests/src/android/view/Include.java b/core/tests/coretests/src/android/view/Include.java
index e90c484..4b6aefb 100644
--- a/core/tests/coretests/src/android/view/Include.java
+++ b/core/tests/coretests/src/android/view/Include.java
@@ -16,10 +16,10 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
-import android.os.Bundle;
import android.app.Activity;
+import android.os.Bundle;
+
+import com.android.frameworks.coretests.R;
/**
* Exercise <include /> tag in XML files.
diff --git a/core/tests/coretests/src/android/view/IncludeTest.java b/core/tests/coretests/src/android/view/IncludeTest.java
index cdcfa3c..e490559 100644
--- a/core/tests/coretests/src/android/view/IncludeTest.java
+++ b/core/tests/coretests/src/android/view/IncludeTest.java
@@ -16,13 +16,11 @@
package android.view;
-import android.view.Include;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.View;
-import android.view.ViewGroup;
+
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
public class IncludeTest extends ActivityInstrumentationTestCase<Include> {
public IncludeTest() {
diff --git a/core/tests/coretests/src/android/view/InflateTest.java b/core/tests/coretests/src/android/view/InflateTest.java
index cb4f8e2..939d6ea 100644
--- a/core/tests/coretests/src/android/view/InflateTest.java
+++ b/core/tests/coretests/src/android/view/InflateTest.java
@@ -20,13 +20,11 @@
import android.content.res.Resources;
import android.test.AndroidTestCase;
import android.test.PerformanceTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import com.android.frameworks.coretests.R;
-import java.util.Map;
+import androidx.test.filters.SmallTest;
+
+import com.android.frameworks.coretests.R;
public class InflateTest extends AndroidTestCase implements PerformanceTestCase {
private LayoutInflater mInflater;
diff --git a/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java b/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java
index 81ca910..7f00ad9 100644
--- a/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java
+++ b/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java
@@ -18,7 +18,9 @@
import static android.view.InsetsState.TYPE_NAVIGATION_BAR;
import static android.view.InsetsState.TYPE_TOP_BAR;
+
import static junit.framework.Assert.assertEquals;
+
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -27,12 +29,13 @@
import android.graphics.Rect;
import android.graphics.RectF;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.FlakyTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseArray;
import android.view.SurfaceControl.Transaction;
import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams;
+import androidx.test.filters.FlakyTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/InsetsControllerTest.java b/core/tests/coretests/src/android/view/InsetsControllerTest.java
index d3d274a..d447451 100644
--- a/core/tests/coretests/src/android/view/InsetsControllerTest.java
+++ b/core/tests/coretests/src/android/view/InsetsControllerTest.java
@@ -17,18 +17,20 @@
package android.view;
import static android.view.InsetsState.TYPE_TOP_BAR;
+
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNull;
+
import static org.mockito.Mockito.mock;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.FlakyTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.FlakyTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Mockito;
@Presubmit
@FlakyTest(detail = "Promote once confirmed non-flaky")
diff --git a/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java b/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
index 6d0f984..82cd213 100644
--- a/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
+++ b/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
@@ -17,6 +17,7 @@
package android.view;
import static android.view.InsetsState.TYPE_TOP_BAR;
+
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.reset;
@@ -24,10 +25,11 @@
import static org.mockito.Mockito.verifyZeroInteractions;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.FlakyTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.SurfaceControl.Transaction;
+import androidx.test.filters.FlakyTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/InsetsSourceTest.java b/core/tests/coretests/src/android/view/InsetsSourceTest.java
index ed472d2..98ab3e7 100644
--- a/core/tests/coretests/src/android/view/InsetsSourceTest.java
+++ b/core/tests/coretests/src/android/view/InsetsSourceTest.java
@@ -17,13 +17,15 @@
package android.view;
import static android.view.InsetsState.TYPE_NAVIGATION_BAR;
+
import static junit.framework.Assert.assertEquals;
import android.graphics.Insets;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.FlakyTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.FlakyTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/view/InsetsStateTest.java b/core/tests/coretests/src/android/view/InsetsStateTest.java
index 95af525..9857b7a 100644
--- a/core/tests/coretests/src/android/view/InsetsStateTest.java
+++ b/core/tests/coretests/src/android/view/InsetsStateTest.java
@@ -24,20 +24,23 @@
import static android.view.InsetsState.TYPE_SIDE_BAR_2;
import static android.view.InsetsState.TYPE_SIDE_BAR_3;
import static android.view.InsetsState.TYPE_TOP_BAR;
+
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
+
import static org.junit.Assert.assertNotEquals;
import android.graphics.Insets;
import android.graphics.Rect;
import android.os.Parcel;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.FlakyTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseIntArray;
import android.view.WindowInsets.Type;
+import androidx.test.filters.FlakyTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/KeyEventTest.java b/core/tests/coretests/src/android/view/KeyEventTest.java
index b9d95e5..88d3bdb 100644
--- a/core/tests/coretests/src/android/view/KeyEventTest.java
+++ b/core/tests/coretests/src/android/view/KeyEventTest.java
@@ -20,8 +20,8 @@
import static org.junit.Assert.assertEquals;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/ListContextMenu.java b/core/tests/coretests/src/android/view/ListContextMenu.java
index 1b4ece6..e333b96 100644
--- a/core/tests/coretests/src/android/view/ListContextMenu.java
+++ b/core/tests/coretests/src/android/view/ListContextMenu.java
@@ -16,24 +16,17 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
-import android.view.ContextMenu;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.SubMenu;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.LayoutInflater;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.TextView;
+import com.android.frameworks.coretests.R;
+
/**
* Exercises context menus in lists
*/
diff --git a/core/tests/coretests/src/android/view/Longpress.java b/core/tests/coretests/src/android/view/Longpress.java
index e8e6f13..86fa9e5 100644
--- a/core/tests/coretests/src/android/view/Longpress.java
+++ b/core/tests/coretests/src/android/view/Longpress.java
@@ -16,11 +16,11 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
public class Longpress extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/core/tests/coretests/src/android/view/LongpressTest.java b/core/tests/coretests/src/android/view/LongpressTest.java
index d3d7589..4dfecd0 100644
--- a/core/tests/coretests/src/android/view/LongpressTest.java
+++ b/core/tests/coretests/src/android/view/LongpressTest.java
@@ -18,11 +18,12 @@
import android.test.ActivityInstrumentationTestCase;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.util.KeyUtils;
import android.view.View.OnLongClickListener;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/view/MenuTest.java b/core/tests/coretests/src/android/view/MenuTest.java
index 116b38a..794769cc 100644
--- a/core/tests/coretests/src/android/view/MenuTest.java
+++ b/core/tests/coretests/src/android/view/MenuTest.java
@@ -17,7 +17,8 @@
package android.view;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import com.android.frameworks.coretests.R;
import com.android.internal.view.menu.MenuBuilder;
diff --git a/core/tests/coretests/src/android/view/Merge.java b/core/tests/coretests/src/android/view/Merge.java
index bdacd81..8020e4b 100644
--- a/core/tests/coretests/src/android/view/Merge.java
+++ b/core/tests/coretests/src/android/view/Merge.java
@@ -16,13 +16,11 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
-import android.os.Bundle;
import android.app.Activity;
+import android.os.Bundle;
import android.widget.LinearLayout;
-import android.view.ViewGroup;
-import android.view.LayoutInflater;
+
+import com.android.frameworks.coretests.R;
/**
* Exercise <merge /> tag in XML files.
diff --git a/core/tests/coretests/src/android/view/MergeTest.java b/core/tests/coretests/src/android/view/MergeTest.java
index acfee7e..eccc9cb 100644
--- a/core/tests/coretests/src/android/view/MergeTest.java
+++ b/core/tests/coretests/src/android/view/MergeTest.java
@@ -16,11 +16,9 @@
package android.view;
-import android.view.Merge;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.ViewGroup;
+
+import androidx.test.filters.MediumTest;
public class MergeTest extends ActivityInstrumentationTestCase<Merge> {
public MergeTest() {
diff --git a/core/tests/coretests/src/android/view/MotionEventTest.java b/core/tests/coretests/src/android/view/MotionEventTest.java
index 023526f..cadf37e 100644
--- a/core/tests/coretests/src/android/view/MotionEventTest.java
+++ b/core/tests/coretests/src/android/view/MotionEventTest.java
@@ -22,11 +22,12 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.MotionEvent.PointerCoords;
import android.view.MotionEvent.PointerProperties;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/MutateDrawable.java b/core/tests/coretests/src/android/view/MutateDrawable.java
index 39b5789..1ec525d 100644
--- a/core/tests/coretests/src/android/view/MutateDrawable.java
+++ b/core/tests/coretests/src/android/view/MutateDrawable.java
@@ -18,8 +18,9 @@
import android.app.Activity;
import android.os.Bundle;
-import android.widget.LinearLayout;
import android.widget.Button;
+import android.widget.LinearLayout;
+
import com.android.frameworks.coretests.R;
public class MutateDrawable extends Activity {
diff --git a/core/tests/coretests/src/android/view/MutateDrawableTest.java b/core/tests/coretests/src/android/view/MutateDrawableTest.java
index 74e011d..d63ffb1 100644
--- a/core/tests/coretests/src/android/view/MutateDrawableTest.java
+++ b/core/tests/coretests/src/android/view/MutateDrawableTest.java
@@ -17,9 +17,8 @@
package android.view;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.View;
-import android.view.MutateDrawable;
+
+import androidx.test.filters.MediumTest;
public class MutateDrawableTest extends ActivityInstrumentationTestCase2<MutateDrawable> {
private View mFirstButton;
diff --git a/core/tests/coretests/src/android/view/PinchZoomAction.java b/core/tests/coretests/src/android/view/PinchZoomAction.java
index 97fe980..bec9b55 100644
--- a/core/tests/coretests/src/android/view/PinchZoomAction.java
+++ b/core/tests/coretests/src/android/view/PinchZoomAction.java
@@ -30,8 +30,6 @@
import android.support.test.espresso.ViewAction;
import android.support.test.espresso.action.Swiper;
import android.support.test.espresso.util.HumanReadables;
-import android.view.MotionEvent;
-import android.view.View;
import org.hamcrest.Matcher;
diff --git a/core/tests/coretests/src/android/view/PopupWindowVisibility.java b/core/tests/coretests/src/android/view/PopupWindowVisibility.java
index 85ce04f..e6430d3 100644
--- a/core/tests/coretests/src/android/view/PopupWindowVisibility.java
+++ b/core/tests/coretests/src/android/view/PopupWindowVisibility.java
@@ -18,7 +18,6 @@
import android.app.Activity;
import android.os.Bundle;
-import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
diff --git a/core/tests/coretests/src/android/view/PreDrawListener.java b/core/tests/coretests/src/android/view/PreDrawListener.java
index 60bbee4..77bd36c 100644
--- a/core/tests/coretests/src/android/view/PreDrawListener.java
+++ b/core/tests/coretests/src/android/view/PreDrawListener.java
@@ -20,15 +20,12 @@
import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewTreeObserver;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import com.android.frameworks.coretests.R;
-
/**
* Tests views with popupWindows becoming invisible
*/
diff --git a/core/tests/coretests/src/android/view/RenderNodeAnimatorTest.java b/core/tests/coretests/src/android/view/RenderNodeAnimatorTest.java
index b52d98c..786c22b 100644
--- a/core/tests/coretests/src/android/view/RenderNodeAnimatorTest.java
+++ b/core/tests/coretests/src/android/view/RenderNodeAnimatorTest.java
@@ -21,10 +21,11 @@
import android.app.Activity;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.annotation.UiThreadTest;
-import android.support.test.filters.MediumTest;
-import android.support.test.rule.ActivityTestRule;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.rule.ActivityTestRule;
import org.junit.Rule;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/view/RunQueue.java b/core/tests/coretests/src/android/view/RunQueue.java
index 85dd32e..7544433 100644
--- a/core/tests/coretests/src/android/view/RunQueue.java
+++ b/core/tests/coretests/src/android/view/RunQueue.java
@@ -19,8 +19,7 @@
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
-import android.view.View;
-import android.view.ViewTreeObserver;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/view/RunQueueTest.java b/core/tests/coretests/src/android/view/RunQueueTest.java
index d69860b..f42f590 100644
--- a/core/tests/coretests/src/android/view/RunQueueTest.java
+++ b/core/tests/coretests/src/android/view/RunQueueTest.java
@@ -17,7 +17,8 @@
package android.view;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.MediumTest;
public class RunQueueTest extends ActivityInstrumentationTestCase<RunQueue> {
public RunQueueTest() {
diff --git a/core/tests/coretests/src/android/view/ScaleGesture.java b/core/tests/coretests/src/android/view/ScaleGesture.java
index a954a4a..235b224 100644
--- a/core/tests/coretests/src/android/view/ScaleGesture.java
+++ b/core/tests/coretests/src/android/view/ScaleGesture.java
@@ -16,16 +16,11 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.MotionEvent;
-import android.view.ScaleGestureDetector;
import android.view.ScaleGestureDetector.SimpleOnScaleGestureListener;
-import android.widget.TextView;
+
+import com.android.frameworks.coretests.R;
public class ScaleGesture extends Activity {
private ScaleGestureDetector mScaleGestureDetector;
diff --git a/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java b/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java
index fba8eae..19901351 100644
--- a/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java
+++ b/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java
@@ -16,26 +16,22 @@
package android.view;
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+
import android.content.Context;
-import android.support.test.filters.LargeTest;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import android.util.DisplayMetrics;
-import android.view.PinchZoomAction;
-import android.view.ScaleGesture;
-import android.view.WindowManager;
import android.widget.TextView;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+
import com.android.frameworks.coretests.R;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.Espresso.onView;
@LargeTest
public class ScaleGestureDetectorTest extends ActivityInstrumentationTestCase2<ScaleGesture> {
diff --git a/core/tests/coretests/src/android/view/SetTagsTest.java b/core/tests/coretests/src/android/view/SetTagsTest.java
index 373dce6..1699713 100644
--- a/core/tests/coretests/src/android/view/SetTagsTest.java
+++ b/core/tests/coretests/src/android/view/SetTagsTest.java
@@ -16,12 +16,13 @@
package android.view;
-import com.android.frameworks.coretests.R;
-import android.test.suitebuilder.annotation.MediumTest;
-
import android.test.ActivityInstrumentationTestCase2;
import android.widget.Button;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
/**
* Exercises {@link android.view.View}'s tags property.
*/
diff --git a/core/tests/coretests/src/android/view/StubbedView.java b/core/tests/coretests/src/android/view/StubbedView.java
index 612095c..c96b9b7 100644
--- a/core/tests/coretests/src/android/view/StubbedView.java
+++ b/core/tests/coretests/src/android/view/StubbedView.java
@@ -16,11 +16,10 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
-import android.os.Bundle;
import android.app.Activity;
-import android.view.View;
+import android.os.Bundle;
+
+import com.android.frameworks.coretests.R;
/**
* Exercise <ViewStub /> tag in XML files.
diff --git a/core/tests/coretests/src/android/view/VelocityTest.java b/core/tests/coretests/src/android/view/VelocityTest.java
index 7f32208..c116f4d 100644
--- a/core/tests/coretests/src/android/view/VelocityTest.java
+++ b/core/tests/coretests/src/android/view/VelocityTest.java
@@ -16,16 +16,17 @@
package android.view;
-import android.test.suitebuilder.annotation.Suppress;
-import junit.framework.Assert;
-
import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
+import junit.framework.Assert;
+
/**
* Exercises {@link android.view.VelocityTracker} to compute correct velocity.<br>
* To launch this test, use :<br>
diff --git a/core/tests/coretests/src/android/view/ViewAttachTest.java b/core/tests/coretests/src/android/view/ViewAttachTest.java
index aa8f8d8..1a8dd99 100644
--- a/core/tests/coretests/src/android/view/ViewAttachTest.java
+++ b/core/tests/coretests/src/android/view/ViewAttachTest.java
@@ -16,16 +16,13 @@
package android.view;
-import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.PixelFormat;
import android.os.SystemClock;
-import android.support.test.filters.LargeTest;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.LargeTest;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/view/ViewAttachTestActivity.java b/core/tests/coretests/src/android/view/ViewAttachTestActivity.java
index 59e25ae..bcbc813 100644
--- a/core/tests/coretests/src/android/view/ViewAttachTestActivity.java
+++ b/core/tests/coretests/src/android/view/ViewAttachTestActivity.java
@@ -16,11 +16,11 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
public class ViewAttachTestActivity extends Activity {
public static final String TAG = "OnAttachedTest";
@Override
diff --git a/core/tests/coretests/src/android/view/ViewAttachView.java b/core/tests/coretests/src/android/view/ViewAttachView.java
index 5af2d8f..2f3ff8f 100644
--- a/core/tests/coretests/src/android/view/ViewAttachView.java
+++ b/core/tests/coretests/src/android/view/ViewAttachView.java
@@ -22,7 +22,6 @@
import android.os.SystemClock;
import android.util.AttributeSet;
import android.util.Log;
-import android.view.View;
/**
* A View that will throw a RuntimeException if onAttachedToWindow and
diff --git a/core/tests/coretests/src/android/view/ViewCaptureTest.java b/core/tests/coretests/src/android/view/ViewCaptureTest.java
index 4405934..218047c 100644
--- a/core/tests/coretests/src/android/view/ViewCaptureTest.java
+++ b/core/tests/coretests/src/android/view/ViewCaptureTest.java
@@ -21,14 +21,15 @@
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.support.test.filters.SmallTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseIntArray;
import android.view.ViewDebug.CanvasProvider;
import android.view.ViewDebug.HardwareCanvasProvider;
import android.view.ViewDebug.SoftwareCanvasProvider;
+import androidx.test.filters.SmallTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.frameworks.coretests.R;
import org.junit.Assert;
diff --git a/core/tests/coretests/src/android/view/ViewCaptureTestActivity.java b/core/tests/coretests/src/android/view/ViewCaptureTestActivity.java
index 20e3eb5..2f51c24 100644
--- a/core/tests/coretests/src/android/view/ViewCaptureTestActivity.java
+++ b/core/tests/coretests/src/android/view/ViewCaptureTestActivity.java
@@ -19,6 +19,7 @@
import android.annotation.Nullable;
import android.app.Activity;
import android.os.Bundle;
+
import com.android.frameworks.coretests.R;
public class ViewCaptureTestActivity extends Activity {
diff --git a/core/tests/coretests/src/android/view/ViewGroupAttributesTest.java b/core/tests/coretests/src/android/view/ViewGroupAttributesTest.java
index b4ef0e7..c24cd35 100644
--- a/core/tests/coretests/src/android/view/ViewGroupAttributesTest.java
+++ b/core/tests/coretests/src/android/view/ViewGroupAttributesTest.java
@@ -18,7 +18,8 @@
import android.content.Context;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
public class ViewGroupAttributesTest extends AndroidTestCase {
diff --git a/core/tests/coretests/src/android/view/ViewGroupChildren.java b/core/tests/coretests/src/android/view/ViewGroupChildren.java
index f39720b..d5d9879 100644
--- a/core/tests/coretests/src/android/view/ViewGroupChildren.java
+++ b/core/tests/coretests/src/android/view/ViewGroupChildren.java
@@ -16,12 +16,10 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
-import android.os.Bundle;
-import android.widget.Button;
-import android.view.View;
import android.app.Activity;
+import android.os.Bundle;
+
+import com.android.frameworks.coretests.R;
/**
* Exercise ViewGroup's ability to add and remove children.
diff --git a/core/tests/coretests/src/android/view/ViewGroupChildrenTest.java b/core/tests/coretests/src/android/view/ViewGroupChildrenTest.java
index d1665ef..07cb2a1 100644
--- a/core/tests/coretests/src/android/view/ViewGroupChildrenTest.java
+++ b/core/tests/coretests/src/android/view/ViewGroupChildrenTest.java
@@ -16,18 +16,16 @@
package android.view;
-import com.android.frameworks.coretests.R;
-import android.view.ViewGroupChildren;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.ViewAsserts;
-import android.test.UiThreadTest;
-import android.view.View;
-import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
/**
* Exercises {@link android.view.ViewGroup}'s ability to add/remove children.
*/
diff --git a/core/tests/coretests/src/android/view/ViewGroupTransientViewTest.java b/core/tests/coretests/src/android/view/ViewGroupTransientViewTest.java
index 93ad41f0..54524b2 100644
--- a/core/tests/coretests/src/android/view/ViewGroupTransientViewTest.java
+++ b/core/tests/coretests/src/android/view/ViewGroupTransientViewTest.java
@@ -22,12 +22,13 @@
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
-import android.support.test.annotation.UiThreadTest;
-import android.support.test.filters.MediumTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
import android.widget.FrameLayout;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/view/ViewInvalidateTest.java b/core/tests/coretests/src/android/view/ViewInvalidateTest.java
index 115504b..c25a2deb 100644
--- a/core/tests/coretests/src/android/view/ViewInvalidateTest.java
+++ b/core/tests/coretests/src/android/view/ViewInvalidateTest.java
@@ -21,24 +21,30 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.annotation.UiThreadTest;
-import android.support.test.filters.LargeTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
+import android.view.ViewTreeObserver.OnDrawListener;
import android.widget.FrameLayout;
-import com.android.compatibility.common.util.WidgetTestUtils;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.LargeTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
/**
* Test of invalidates, drawing, and the flags that support them
*/
@@ -281,4 +287,42 @@
View.PFLAG_DRAWN);
assertTrue(getViewRoot(mParent).mIsAnimating);
}
+
+ /** Copied from cts/common/device-side/util. */
+ static class WidgetTestUtils {
+ public static void runOnMainAndDrawSync(@NonNull final ActivityTestRule activityTestRule,
+ @NonNull final View view, @Nullable final Runnable runner) throws Throwable {
+ final CountDownLatch latch = new CountDownLatch(1);
+
+ activityTestRule.runOnUiThread(() -> {
+ final OnDrawListener listener = new OnDrawListener() {
+ @Override
+ public void onDraw() {
+ // posting so that the sync happens after the draw that's about to happen
+ view.post(() -> {
+ activityTestRule.getActivity().getWindow().getDecorView()
+ .getViewTreeObserver().removeOnDrawListener(this);
+ latch.countDown();
+ });
+ }
+ };
+
+ activityTestRule.getActivity().getWindow().getDecorView()
+ .getViewTreeObserver().addOnDrawListener(listener);
+
+ if (runner != null) {
+ runner.run();
+ }
+ view.invalidate();
+ });
+
+ try {
+ Assert.assertTrue("Expected draw pass occurred within 5 seconds",
+ latch.await(5, TimeUnit.SECONDS));
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ }
}
diff --git a/core/tests/coretests/src/android/view/ViewRootImplTest.java b/core/tests/coretests/src/android/view/ViewRootImplTest.java
index ca6d6cfe..9a57847 100644
--- a/core/tests/coretests/src/android/view/ViewRootImplTest.java
+++ b/core/tests/coretests/src/android/view/ViewRootImplTest.java
@@ -23,9 +23,10 @@
import android.graphics.Insets;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/view/ViewStubTest.java b/core/tests/coretests/src/android/view/ViewStubTest.java
index ebd52a6..504a4ec 100644
--- a/core/tests/coretests/src/android/view/ViewStubTest.java
+++ b/core/tests/coretests/src/android/view/ViewStubTest.java
@@ -16,14 +16,12 @@
package android.view;
-import android.view.StubbedView;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.UiThreadTest;
-import android.view.View;
-import android.view.ViewStub;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
public class ViewStubTest extends ActivityInstrumentationTestCase<StubbedView> {
public ViewStubTest() {
diff --git a/core/tests/coretests/src/android/view/ViewTransientStateTest.java b/core/tests/coretests/src/android/view/ViewTransientStateTest.java
index 36ea01d..3f73b07 100644
--- a/core/tests/coretests/src/android/view/ViewTransientStateTest.java
+++ b/core/tests/coretests/src/android/view/ViewTransientStateTest.java
@@ -18,13 +18,12 @@
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
import com.android.frameworks.coretests.R;
-import static org.junit.Assert.assertFalse;
-
/**
* Exercise set View's transient state
*/
diff --git a/core/tests/coretests/src/android/view/Visibility.java b/core/tests/coretests/src/android/view/Visibility.java
index 031568c..8e3de4e 100644
--- a/core/tests/coretests/src/android/view/Visibility.java
+++ b/core/tests/coretests/src/android/view/Visibility.java
@@ -16,12 +16,11 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
+import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
-import android.view.View;
-import android.app.Activity;
+
+import com.android.frameworks.coretests.R;
/**
* Exercise View's ability to change their visibility: GONE, INVISIBLE and
diff --git a/core/tests/coretests/src/android/view/VisibilityCallback.java b/core/tests/coretests/src/android/view/VisibilityCallback.java
index f98a0a8..c965973 100644
--- a/core/tests/coretests/src/android/view/VisibilityCallback.java
+++ b/core/tests/coretests/src/android/view/VisibilityCallback.java
@@ -16,16 +16,15 @@
package android.view;
+import android.app.Activity;
import android.content.Context;
+import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
-import android.widget.TextView;
-import com.android.frameworks.coretests.R;
-
-import android.os.Bundle;
import android.widget.Button;
-import android.view.View;
-import android.app.Activity;
+import android.widget.TextView;
+
+import com.android.frameworks.coretests.R;
/**
* Exercise View's ability to change their visibility: GONE, INVISIBLE and
diff --git a/core/tests/coretests/src/android/view/VisibilityCallbackTest.java b/core/tests/coretests/src/android/view/VisibilityCallbackTest.java
index ec956d2..d7c7b4c 100644
--- a/core/tests/coretests/src/android/view/VisibilityCallbackTest.java
+++ b/core/tests/coretests/src/android/view/VisibilityCallbackTest.java
@@ -17,12 +17,12 @@
package android.view;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.View;
-import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/view/VisibilityTest.java b/core/tests/coretests/src/android/view/VisibilityTest.java
index 29c1c8a..83a7702 100644
--- a/core/tests/coretests/src/android/view/VisibilityTest.java
+++ b/core/tests/coretests/src/android/view/VisibilityTest.java
@@ -20,11 +20,12 @@
import static android.view.KeyEvent.KEYCODE_DPAD_LEFT;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.Button;
import android.widget.TextView;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/view/WindowInsetsTest.java b/core/tests/coretests/src/android/view/WindowInsetsTest.java
index 1513a1a..15a96a1 100644
--- a/core/tests/coretests/src/android/view/WindowInsetsTest.java
+++ b/core/tests/coretests/src/android/view/WindowInsetsTest.java
@@ -17,18 +17,18 @@
package android.view;
import static android.view.WindowInsets.Type.ime;
-import static android.view.WindowInsets.Type.indexOf;
import static android.view.WindowInsets.Type.sideBars;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.graphics.Insets;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.WindowInsets.Builder;
-import android.view.WindowInsets.Type;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/ZeroSized.java b/core/tests/coretests/src/android/view/ZeroSized.java
index f2a6b3e..9e2dfcb 100644
--- a/core/tests/coretests/src/android/view/ZeroSized.java
+++ b/core/tests/coretests/src/android/view/ZeroSized.java
@@ -16,10 +16,10 @@
package android.view;
-import com.android.frameworks.coretests.R;
-
-import android.os.Bundle;
import android.app.Activity;
+import android.os.Bundle;
+
+import com.android.frameworks.coretests.R;
/**
* This activity contains Views with various widths and heights. The goal is to exercise the
diff --git a/core/tests/coretests/src/android/view/ZeroSizedTest.java b/core/tests/coretests/src/android/view/ZeroSizedTest.java
index 193fc98..946bf68 100644
--- a/core/tests/coretests/src/android/view/ZeroSizedTest.java
+++ b/core/tests/coretests/src/android/view/ZeroSizedTest.java
@@ -16,13 +16,12 @@
package android.view;
-import android.view.ZeroSized;
-import com.android.frameworks.coretests.R;
-
-import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.View;
import android.graphics.Bitmap;
+import android.test.ActivityInstrumentationTestCase;
+
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
/**
* Builds the drawing cache of Views of various dimension. The assumption is that
diff --git a/core/tests/coretests/src/android/view/accessibility/AccessibilityCacheTest.java b/core/tests/coretests/src/android/view/accessibility/AccessibilityCacheTest.java
index 7f675ff..a88968b 100644
--- a/core/tests/coretests/src/android/view/accessibility/AccessibilityCacheTest.java
+++ b/core/tests/coretests/src/android/view/accessibility/AccessibilityCacheTest.java
@@ -28,10 +28,11 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.View;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/view/accessibility/AccessibilityEventTest.java b/core/tests/coretests/src/android/view/accessibility/AccessibilityEventTest.java
index 3e03414..46c96c9 100644
--- a/core/tests/coretests/src/android/view/accessibility/AccessibilityEventTest.java
+++ b/core/tests/coretests/src/android/view/accessibility/AccessibilityEventTest.java
@@ -21,7 +21,8 @@
import static junit.framework.Assert.assertTrue;
import android.os.Parcel;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/accessibility/AccessibilityInteractionClientTest.java b/core/tests/coretests/src/android/view/accessibility/AccessibilityInteractionClientTest.java
index 318d122..ab24f89 100644
--- a/core/tests/coretests/src/android/view/accessibility/AccessibilityInteractionClientTest.java
+++ b/core/tests/coretests/src/android/view/accessibility/AccessibilityInteractionClientTest.java
@@ -22,10 +22,12 @@
import android.os.Bundle;
import android.os.RemoteException;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
import libcore.util.EmptyArray;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java b/core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java
index 506e544..0ed690c 100644
--- a/core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java
+++ b/core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java
@@ -25,11 +25,12 @@
import static org.junit.Assert.fail;
import android.os.Parcel;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.ArraySet;
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.util.CollectionUtils;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/view/accessibility/RecycleAccessibilityEventTest.java b/core/tests/coretests/src/android/view/accessibility/RecycleAccessibilityEventTest.java
index 4814c61..11f4e3c 100644
--- a/core/tests/coretests/src/android/view/accessibility/RecycleAccessibilityEventTest.java
+++ b/core/tests/coretests/src/android/view/accessibility/RecycleAccessibilityEventTest.java
@@ -14,7 +14,7 @@
package android.view.accessibility;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/view/autofill/AutofillIdTest.java b/core/tests/coretests/src/android/view/autofill/AutofillIdTest.java
index 7619af2..33bc593 100644
--- a/core/tests/coretests/src/android/view/autofill/AutofillIdTest.java
+++ b/core/tests/coretests/src/android/view/autofill/AutofillIdTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.view.autofill;
import static com.google.common.truth.Truth.assertThat;
diff --git a/core/tests/coretests/src/android/view/contentcapture/ContentCaptureSessionTest.java b/core/tests/coretests/src/android/view/contentcapture/ContentCaptureSessionTest.java
index 73cceae..ff97aa1 100644
--- a/core/tests/coretests/src/android/view/contentcapture/ContentCaptureSessionTest.java
+++ b/core/tests/coretests/src/android/view/contentcapture/ContentCaptureSessionTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.view.contentcapture;
import static com.google.common.truth.Truth.assertThat;
@@ -96,6 +97,22 @@
assertThat(structure.getAutofillId()).isEqualTo(childId);
}
+ @Test
+ public void testNotifyViewsDisappeared_invalid() {
+ // Null parent
+ assertThrows(NullPointerException.class,
+ () -> mSession1.notifyViewsDisappeared(null, new int[] {42}));
+ // Null child
+ assertThrows(IllegalArgumentException.class,
+ () -> mSession1.notifyViewsDisappeared(new AutofillId(42), null));
+ // Empty child
+ assertThrows(IllegalArgumentException.class,
+ () -> mSession1.notifyViewsDisappeared(new AutofillId(42), new int[] {}));
+ // Virtual parent
+ assertThrows(IllegalArgumentException.class,
+ () -> mSession1.notifyViewsDisappeared(new AutofillId(42, 108), new int[] {666}));
+ }
+
// Cannot use @Spy because we need to pass the session id on constructor
private class MyContentCaptureSession extends ContentCaptureSession {
@@ -114,7 +131,7 @@
}
@Override
- void flush() {
+ void flush(int reason) {
throw new UnsupportedOperationException("should not have been called");
}
@@ -134,7 +151,7 @@
}
@Override
- void internalNotifyViewTextChanged(AutofillId id, CharSequence text, int flags) {
+ void internalNotifyViewTextChanged(AutofillId id, CharSequence text) {
throw new UnsupportedOperationException("should not have been called");
}
}
diff --git a/core/tests/coretests/src/android/view/contentcapture/ViewNodeTest.java b/core/tests/coretests/src/android/view/contentcapture/ViewNodeTest.java
index bbfe01c..eadde62 100644
--- a/core/tests/coretests/src/android/view/contentcapture/ViewNodeTest.java
+++ b/core/tests/coretests/src/android/view/contentcapture/ViewNodeTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.view.contentcapture;
import static com.google.common.truth.Truth.assertThat;
@@ -24,7 +25,6 @@
import android.os.Bundle;
import android.os.LocaleList;
import android.os.Parcel;
-import android.support.test.InstrumentationRegistry;
import android.view.View;
import android.view.ViewStructure.HtmlInfo;
import android.view.autofill.AutofillId;
@@ -32,6 +32,8 @@
import android.view.contentcapture.ViewNode.ViewStructureImpl;
import android.widget.FrameLayout;
+import androidx.test.InstrumentationRegistry;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -179,6 +181,14 @@
structure.setDataIsSensitive(true);
assertThat(structure.getTempRect()).isNull();
+
+ // Graphic properties
+ structure.setElevation(6.66f);
+ assertThat(node.getElevation()).isWithin(1.0e-10f).of(0f);
+ structure.setAlpha(66.6f);
+ assertThat(node.getAlpha()).isWithin(1.0e-10f).of(1.0f);
+ structure.setTransformation(Matrix.IDENTITY_MATRIX);
+ assertThat(node.getTransformation()).isNull();
}
@Test
@@ -277,11 +287,6 @@
structure.setAutofillOptions(new String[] { "Maybe" });
structure.setAutofillValue(AutofillValue.forText("Malkovich"));
- // Graphic properties
- structure.setElevation(6.66f);
- structure.setAlpha(66.6f);
- structure.setTransformation(Matrix.IDENTITY_MATRIX);
-
// Extra text properties
structure.setMinTextEms(6);
structure.setMaxTextLength(66);
@@ -338,11 +343,6 @@
assertThat(node.getAutofillOptions()).asList().containsExactly("Maybe").inOrder();
assertThat(node.getAutofillValue().getTextValue()).isEqualTo("Malkovich");
- // Graphic properties
- assertThat(node.getElevation()).isWithin(1.0e-10f).of(6.66f);
- assertThat(node.getAlpha()).isWithin(1.0e-10f).of(66.6f);
- assertThat(node.getTransformation()).isEqualTo(Matrix.IDENTITY_MATRIX);
-
// Extra text properties
assertThat(node.getMinTextEms()).isEqualTo(6);
assertThat(node.getMaxTextLength()).isEqualTo(66);
diff --git a/core/tests/coretests/src/android/view/inputmethod/CursorAnchorInfoTest.java b/core/tests/coretests/src/android/view/inputmethod/CursorAnchorInfoTest.java
index 0fd0136..ace6611 100644
--- a/core/tests/coretests/src/android/view/inputmethod/CursorAnchorInfoTest.java
+++ b/core/tests/coretests/src/android/view/inputmethod/CursorAnchorInfoTest.java
@@ -28,11 +28,12 @@
import android.graphics.Matrix;
import android.graphics.RectF;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.TextUtils;
import android.view.inputmethod.CursorAnchorInfo.Builder;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/inputmethod/InputMethodInfoTest.java b/core/tests/coretests/src/android/view/inputmethod/InputMethodInfoTest.java
index 1b00e09..f24e232 100644
--- a/core/tests/coretests/src/android/view/inputmethod/InputMethodInfoTest.java
+++ b/core/tests/coretests/src/android/view/inputmethod/InputMethodInfoTest.java
@@ -26,9 +26,10 @@
import android.content.pm.ServiceInfo;
import android.os.Bundle;
import android.os.Parcel;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java b/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java
index 55e5e36..9f259a8 100644
--- a/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java
+++ b/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java
@@ -20,11 +20,12 @@
import static org.junit.Assert.assertNotNull;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.WindowManager;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeArrayTest.java b/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeArrayTest.java
index 8df1848..e2fb46a 100644
--- a/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeArrayTest.java
+++ b/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeArrayTest.java
@@ -19,10 +19,11 @@
import static org.junit.Assert.assertEquals;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeTest.java b/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeTest.java
index c76359e..1e0e1235 100644
--- a/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeTest.java
+++ b/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeTest.java
@@ -23,10 +23,11 @@
import static org.junit.Assert.assertTrue;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/inputmethod/SparseRectFArrayTest.java b/core/tests/coretests/src/android/view/inputmethod/SparseRectFArrayTest.java
index 8c96b58..453ad72 100644
--- a/core/tests/coretests/src/android/view/inputmethod/SparseRectFArrayTest.java
+++ b/core/tests/coretests/src/android/view/inputmethod/SparseRectFArrayTest.java
@@ -23,10 +23,11 @@
import android.graphics.RectF;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.inputmethod.SparseRectFArray.SparseRectFArrayBuilder;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/menu/ContextMenuTest.java b/core/tests/coretests/src/android/view/menu/ContextMenuTest.java
index 657a7fc..ba85d76 100644
--- a/core/tests/coretests/src/android/view/menu/ContextMenuTest.java
+++ b/core/tests/coretests/src/android/view/menu/ContextMenuTest.java
@@ -18,7 +18,6 @@
import android.content.Context;
import android.graphics.Point;
-import android.support.test.filters.MediumTest;
import android.test.ActivityInstrumentationTestCase;
import android.util.PollingCheck;
import android.view.Display;
@@ -26,6 +25,8 @@
import android.view.WindowManager;
import android.widget.espresso.ContextMenuUtils;
+import androidx.test.filters.MediumTest;
+
@MediumTest
public class ContextMenuTest extends ActivityInstrumentationTestCase<ContextMenuActivity> {
diff --git a/core/tests/coretests/src/android/view/menu/MenuLayout.java b/core/tests/coretests/src/android/view/menu/MenuLayout.java
index 356c948..33ee515 100644
--- a/core/tests/coretests/src/android/view/menu/MenuLayout.java
+++ b/core/tests/coretests/src/android/view/menu/MenuLayout.java
@@ -16,8 +16,6 @@
package android.view.menu;
-import android.view.menu.MenuScenario.Params;
-
import android.os.Bundle;
import android.view.Menu;
import android.widget.Button;
diff --git a/core/tests/coretests/src/android/view/menu/MenuLayoutLandscapeTest.java b/core/tests/coretests/src/android/view/menu/MenuLayoutLandscapeTest.java
index 8ed0d86..ff9f166 100644
--- a/core/tests/coretests/src/android/view/menu/MenuLayoutLandscapeTest.java
+++ b/core/tests/coretests/src/android/view/menu/MenuLayoutLandscapeTest.java
@@ -16,13 +16,10 @@
package android.view.menu;
-import android.util.KeyUtils;
-import com.android.internal.view.menu.IconMenuView;
-import com.android.internal.view.menu.MenuBuilder;
-
-import android.content.pm.ActivityInfo;
-import android.support.test.filters.LargeTest;
import android.test.ActivityInstrumentationTestCase;
+import android.util.KeyUtils;
+
+import androidx.test.filters.LargeTest;
@LargeTest
public class MenuLayoutLandscapeTest extends ActivityInstrumentationTestCase<MenuLayoutLandscape> {
diff --git a/core/tests/coretests/src/android/view/menu/MenuLayoutPortraitTest.java b/core/tests/coretests/src/android/view/menu/MenuLayoutPortraitTest.java
index ccf1264..360be53 100644
--- a/core/tests/coretests/src/android/view/menu/MenuLayoutPortraitTest.java
+++ b/core/tests/coretests/src/android/view/menu/MenuLayoutPortraitTest.java
@@ -16,11 +16,11 @@
package android.view.menu;
-import android.content.pm.ActivityInfo;
-import android.support.test.filters.LargeTest;
import android.test.ActivityInstrumentationTestCase;
import android.util.KeyUtils;
+import androidx.test.filters.LargeTest;
+
@LargeTest
public class MenuLayoutPortraitTest extends ActivityInstrumentationTestCase<MenuLayoutPortrait> {
private static final String LONG_TITLE = "Really really really really really really really really really really long title";
diff --git a/core/tests/coretests/src/android/view/menu/MenuWith1ItemTest.java b/core/tests/coretests/src/android/view/menu/MenuWith1ItemTest.java
index 82ad858..c18e361 100644
--- a/core/tests/coretests/src/android/view/menu/MenuWith1ItemTest.java
+++ b/core/tests/coretests/src/android/view/menu/MenuWith1ItemTest.java
@@ -16,17 +16,12 @@
package android.view.menu;
-import android.view.menu.MenuWith1Item;
-import android.util.KeyUtils;
-import com.android.internal.view.menu.MenuBuilder;
-
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.TouchUtils;
-
import android.test.ActivityInstrumentationTestCase;
+import android.util.KeyUtils;
import android.view.KeyEvent;
-import android.view.View;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
public class MenuWith1ItemTest extends ActivityInstrumentationTestCase<MenuWith1Item> {
private MenuWith1Item mActivity;
diff --git a/core/tests/coretests/src/android/view/textclassifier/ActionsSuggestionsHelperTest.java b/core/tests/coretests/src/android/view/textclassifier/ActionsSuggestionsHelperTest.java
index 4a6c093..780e15a 100644
--- a/core/tests/coretests/src/android/view/textclassifier/ActionsSuggestionsHelperTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/ActionsSuggestionsHelperTest.java
@@ -22,8 +22,9 @@
import static com.google.common.truth.Truth.assertThat;
import android.app.Person;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.google.android.textclassifier.ActionsSuggestionsModel;
diff --git a/core/tests/coretests/src/android/view/textclassifier/FakeContextBuilder.java b/core/tests/coretests/src/android/view/textclassifier/FakeContextBuilder.java
index 0180856..fef6583 100644
--- a/core/tests/coretests/src/android/view/textclassifier/FakeContextBuilder.java
+++ b/core/tests/coretests/src/android/view/textclassifier/FakeContextBuilder.java
@@ -21,6 +21,7 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.Context;
import android.content.ContextWrapper;
@@ -29,9 +30,8 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
-import android.support.test.InstrumentationRegistry;
-import androidx.annotation.Nullable;
+import androidx.test.InstrumentationRegistry;
import com.google.common.base.Preconditions;
diff --git a/core/tests/coretests/src/android/view/textclassifier/IntentFactoryTest.java b/core/tests/coretests/src/android/view/textclassifier/IntentFactoryTest.java
index aaadefb..3fc8e4c 100644
--- a/core/tests/coretests/src/android/view/textclassifier/IntentFactoryTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/IntentFactoryTest.java
@@ -13,14 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.view.textclassifier;
import static com.google.common.truth.Truth.assertThat;
import android.content.Intent;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.google.android.textclassifier.AnnotatorModel;
diff --git a/core/tests/coretests/src/android/view/textclassifier/ModelFileManagerTest.java b/core/tests/coretests/src/android/view/textclassifier/ModelFileManagerTest.java
index 88d162b..74b8e3b 100644
--- a/core/tests/coretests/src/android/view/textclassifier/ModelFileManagerTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/ModelFileManagerTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.view.textclassifier;
import static com.google.common.truth.Truth.assertThat;
@@ -20,9 +21,10 @@
import static org.mockito.Mockito.when;
import android.os.LocaleList;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/view/textclassifier/SelectionEventTest.java b/core/tests/coretests/src/android/view/textclassifier/SelectionEventTest.java
index a3c6179..46e3a4c 100644
--- a/core/tests/coretests/src/android/view/textclassifier/SelectionEventTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/SelectionEventTest.java
@@ -19,8 +19,9 @@
import static org.junit.Assert.assertEquals;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java
index 54007fb..9662182 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java
@@ -20,8 +20,8 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java
index a3f69d9..4fcd51c 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java
@@ -26,9 +26,10 @@
import android.content.Intent;
import android.os.LocaleList;
import android.service.textclassifier.TextClassifierService;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassificationTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassificationTest.java
index aaf7312..99c959e 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassificationTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassificationTest.java
@@ -32,11 +32,12 @@
import android.os.Bundle;
import android.os.LocaleList;
import android.os.Parcel;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.View;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
index 82eaf88..7009fb2 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
@@ -24,11 +24,12 @@
import android.content.Context;
import android.content.Intent;
import android.os.LocaleList;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
import android.text.Spannable;
import android.text.SpannableString;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
@@ -377,10 +378,10 @@
ConversationActions.Message.PERSON_USER_REMOTE)
.setText("Where are you?")
.build();
- ConversationActions.TypeConfig typeConfig =
- new ConversationActions.TypeConfig.Builder().includeTypesFromTextClassifier(false)
+ TextClassifier.EntityConfig typeConfig =
+ new TextClassifier.EntityConfig.Builder().includeTypesFromTextClassifier(false)
.setIncludedTypes(
- Collections.singletonList(ConversationActions.TYPE_TEXT_REPLY))
+ Collections.singletonList(ConversationAction.TYPE_TEXT_REPLY))
.build();
ConversationActions.Request request =
new ConversationActions.Request.Builder(Collections.singletonList(message))
@@ -391,10 +392,10 @@
ConversationActions conversationActions = mClassifier.suggestConversationActions(request);
assertTrue(conversationActions.getConversationActions().size() > 0);
assertTrue(conversationActions.getConversationActions().size() == 1);
- for (ConversationActions.ConversationAction conversationAction :
+ for (ConversationAction conversationAction :
conversationActions.getConversationActions()) {
assertThat(conversationAction,
- isConversationAction(ConversationActions.TYPE_TEXT_REPLY));
+ isConversationAction(ConversationAction.TYPE_TEXT_REPLY));
}
}*/
@@ -406,10 +407,10 @@
ConversationActions.Message.PERSON_USER_REMOTE)
.setText("Where are you?")
.build();
- ConversationActions.TypeConfig typeConfig =
- new ConversationActions.TypeConfig.Builder().includeTypesFromTextClassifier(false)
+ TextClassifier.EntityConfig typeConfig =
+ new TextClassifier.EntityConfig.Builder().includeTypesFromTextClassifier(false)
.setIncludedTypes(
- Collections.singletonList(ConversationActions.TYPE_TEXT_REPLY))
+ Collections.singletonList(ConversationAction.TYPE_TEXT_REPLY))
.build();
ConversationActions.Request request =
new ConversationActions.Request.Builder(Collections.singletonList(message))
@@ -418,10 +419,10 @@
ConversationActions conversationActions = mClassifier.suggestConversationActions(request);
assertTrue(conversationActions.getConversationActions().size() > 1);
- for (ConversationActions.ConversationAction conversationAction :
+ for (ConversationAction conversationAction :
conversationActions.getConversationActions()) {
assertThat(conversationAction,
- isConversationAction(ConversationActions.TYPE_TEXT_REPLY));
+ isConversationAction(ConversationAction.TYPE_TEXT_REPLY));
}
}
@@ -524,20 +525,19 @@
};
}
- private static Matcher<ConversationActions.ConversationAction> isConversationAction(
- String actionType) {
- return new BaseMatcher<ConversationActions.ConversationAction>() {
+ private static Matcher<ConversationAction> isConversationAction(String actionType) {
+ return new BaseMatcher<ConversationAction>() {
@Override
public boolean matches(Object o) {
- if (!(o instanceof ConversationActions.ConversationAction)) {
+ if (!(o instanceof ConversationAction)) {
return false;
}
- ConversationActions.ConversationAction conversationAction =
- (ConversationActions.ConversationAction) o;
+ ConversationAction conversationAction =
+ (ConversationAction) o;
if (!actionType.equals(conversationAction.getType())) {
return false;
}
- if (ConversationActions.TYPE_TEXT_REPLY.equals(actionType)) {
+ if (ConversationAction.TYPE_TEXT_REPLY.equals(actionType)) {
if (conversationAction.getTextReply() == null) {
return false;
}
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextLanguageTest.java b/core/tests/coretests/src/android/view/textclassifier/TextLanguageTest.java
index 1dcaed6..d0d32e3 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextLanguageTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextLanguageTest.java
@@ -21,8 +21,9 @@
import android.icu.util.ULocale;
import android.os.Bundle;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextLinksTest.java b/core/tests/coretests/src/android/view/textclassifier/TextLinksTest.java
index f022d04..b9cc8f4 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextLinksTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextLinksTest.java
@@ -21,10 +21,11 @@
import android.os.Bundle;
import android.os.LocaleList;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.ArrayMap;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextSelectionTest.java b/core/tests/coretests/src/android/view/textclassifier/TextSelectionTest.java
index 2ea49f7..30cc4e8 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextSelectionTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextSelectionTest.java
@@ -21,8 +21,9 @@
import android.os.Bundle;
import android.os.LocaleList;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/view/textclassifier/logging/GenerateLinksLoggerTest.java b/core/tests/coretests/src/android/view/textclassifier/logging/GenerateLinksLoggerTest.java
index 8e4f02c..5e8e582 100644
--- a/core/tests/coretests/src/android/view/textclassifier/logging/GenerateLinksLoggerTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/logging/GenerateLinksLoggerTest.java
@@ -23,13 +23,14 @@
import static org.mockito.Mockito.mock;
import android.metrics.LogMaker;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.ArrayMap;
import android.view.textclassifier.GenerateLinksLogger;
import android.view.textclassifier.TextClassifier;
import android.view.textclassifier.TextLinks;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
diff --git a/core/tests/coretests/src/android/view/textclassifier/logging/TextClassifierEventTronLoggerTest.java b/core/tests/coretests/src/android/view/textclassifier/logging/TextClassifierEventTronLoggerTest.java
index 344f79d..b1b7416 100644
--- a/core/tests/coretests/src/android/view/textclassifier/logging/TextClassifierEventTronLoggerTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/logging/TextClassifierEventTronLoggerTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package android.view.textclassifier.logging;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_TEXT_SELECTION_SMART_SHARE;
@@ -24,13 +25,14 @@
import static com.google.common.truth.Truth.assertThat;
import android.metrics.LogMaker;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.view.textclassifier.ConversationActions;
+import android.view.textclassifier.ConversationAction;
import android.view.textclassifier.TextClassificationContext;
import android.view.textclassifier.TextClassifierEvent;
import android.view.textclassifier.TextClassifierEventTronLogger;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.logging.MetricsLogger;
import org.junit.Before;
@@ -69,7 +71,7 @@
new TextClassifierEvent.Builder(
TextClassifierEvent.CATEGORY_CONVERSATION_ACTIONS,
TextClassifierEvent.TYPE_SMART_ACTION)
- .setEntityType(ConversationActions.TYPE_CALL_PHONE)
+ .setEntityType(ConversationAction.TYPE_CALL_PHONE)
.setEventTime(EVENT_TIME)
.setEventContext(textClassificationContext)
.build();
@@ -84,7 +86,7 @@
assertThat(logMaker.getType()).isEqualTo(
ACTION_TEXT_SELECTION_SMART_SHARE);
assertThat(logMaker.getTaggedData(FIELD_SELECTION_ENTITY_TYPE))
- .isEqualTo(ConversationActions.TYPE_CALL_PHONE);
+ .isEqualTo(ConversationAction.TYPE_CALL_PHONE);
assertThat(logMaker.getTaggedData(FIELD_TEXT_CLASSIFIER_EVENT_TIME))
.isEqualTo(EVENT_TIME);
assertThat(logMaker.getPackageName()).isEqualTo(PACKAGE_NAME);
diff --git a/core/tests/coretests/src/android/view/textservice/SpellCheckerSubtypeTest.java b/core/tests/coretests/src/android/view/textservice/SpellCheckerSubtypeTest.java
index 4a1c414..638d894 100644
--- a/core/tests/coretests/src/android/view/textservice/SpellCheckerSubtypeTest.java
+++ b/core/tests/coretests/src/android/view/textservice/SpellCheckerSubtypeTest.java
@@ -16,15 +16,16 @@
package android.view.textservice;
+import static android.test.MoreAsserts.assertNotEqual;
+
import android.os.Parcel;
import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
import java.util.Arrays;
import java.util.Locale;
-import static android.test.MoreAsserts.assertNotEqual;
-
/**
* TODO: Most of part can be, and probably should be, moved to CTS.
*/
diff --git a/core/tests/coretests/src/android/widget/AppWidgetHostViewTest.java b/core/tests/coretests/src/android/widget/AppWidgetHostViewTest.java
index 4f31c4e..6edc162 100644
--- a/core/tests/coretests/src/android/widget/AppWidgetHostViewTest.java
+++ b/core/tests/coretests/src/android/widget/AppWidgetHostViewTest.java
@@ -24,18 +24,14 @@
import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetManager;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.View;
import android.view.ViewGroup.OnHierarchyChangeListener;
-import com.android.frameworks.coretests.R;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
-import java.util.ArrayList;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Future;
+import com.android.frameworks.coretests.R;
import org.junit.Before;
import org.junit.Rule;
@@ -43,6 +39,11 @@
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
+import java.util.ArrayList;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Future;
+
/**
* Tests for AppWidgetHostView
*/
diff --git a/core/tests/coretests/src/android/widget/AutoCompleteTextViewCallbacks.java b/core/tests/coretests/src/android/widget/AutoCompleteTextViewCallbacks.java
index 8e73b52..01e82a5 100644
--- a/core/tests/coretests/src/android/widget/AutoCompleteTextViewCallbacks.java
+++ b/core/tests/coretests/src/android/widget/AutoCompleteTextViewCallbacks.java
@@ -18,7 +18,8 @@
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.FlakyTest;
+
+import androidx.test.filters.FlakyTest;
// TODO: tests fail intermittently. Add back MediumTest annotation when fixed
public class AutoCompleteTextViewCallbacks
@@ -32,7 +33,7 @@
/** Test that the initial popup of the suggestions does not select anything.
*/
- @FlakyTest(tolerance=3)
+ @FlakyTest
public void testPopupNoSelection() throws Exception {
AutoCompleteTextViewSimple theActivity = getActivity();
AutoCompleteTextView textView = theActivity.getTextView();
@@ -57,7 +58,7 @@
}
/** Test that arrow-down into the popup calls the onSelected callback. */
- @FlakyTest(tolerance=3)
+ @FlakyTest
public void testPopupEnterSelection() throws Exception {
final AutoCompleteTextViewSimple theActivity = getActivity();
AutoCompleteTextView textView = theActivity.getTextView();
@@ -106,7 +107,7 @@
}
/** Test that arrow-up out of the popup calls the onNothingSelected callback */
- @FlakyTest(tolerance=3)
+ @FlakyTest
public void testPopupLeaveSelection() {
final AutoCompleteTextViewSimple theActivity = getActivity();
AutoCompleteTextView textView = theActivity.getTextView();
diff --git a/core/tests/coretests/src/android/widget/AutoCompleteTextViewPopup.java b/core/tests/coretests/src/android/widget/AutoCompleteTextViewPopup.java
index ee0abae..21e4184 100644
--- a/core/tests/coretests/src/android/widget/AutoCompleteTextViewPopup.java
+++ b/core/tests/coretests/src/android/widget/AutoCompleteTextViewPopup.java
@@ -18,8 +18,8 @@
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.FlakyTest;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.FlakyTest;
/**
* A collection of tests on aspects of the AutoCompleteTextView's popup
@@ -41,7 +41,7 @@
}
/** Test that we can move the selection and it responds as expected */
- @FlakyTest(tolerance=3)
+ @FlakyTest
public void testPopupSetListSelection() throws Throwable {
AutoCompleteTextViewSimple theActivity = getActivity();
final AutoCompleteTextView textView = theActivity.getTextView();
@@ -73,7 +73,7 @@
}
/** Test that we can look at the selection as we move around */
- @FlakyTest(tolerance=3)
+ @FlakyTest
public void testPopupGetListSelection() throws Throwable {
AutoCompleteTextViewSimple theActivity = getActivity();
final AutoCompleteTextView textView = theActivity.getTextView();
@@ -100,7 +100,7 @@
}
/** Test that we can clear the selection */
- @FlakyTest(tolerance=3)
+ @FlakyTest
public void testPopupClearListSelection() throws Throwable {
AutoCompleteTextViewSimple theActivity = getActivity();
final AutoCompleteTextView textView = theActivity.getTextView();
@@ -133,7 +133,7 @@
}
/** Make sure we handle an empty adapter properly */
- @FlakyTest(tolerance=3)
+ @FlakyTest
public void testPopupNavigateNoAdapter() throws Throwable {
AutoCompleteTextViewSimple theActivity = getActivity();
final AutoCompleteTextView textView = theActivity.getTextView();
@@ -167,7 +167,7 @@
}
/** Test the show/hide behavior of the drop-down. */
- @FlakyTest(tolerance=3)
+ @FlakyTest
public void testPopupShow() throws Throwable {
AutoCompleteTextViewSimple theActivity = getActivity();
final AutoCompleteTextView textView = theActivity.getTextView();
diff --git a/core/tests/coretests/src/android/widget/AutoCompleteTextViewSimple.java b/core/tests/coretests/src/android/widget/AutoCompleteTextViewSimple.java
index b4e05aa..063bec5 100644
--- a/core/tests/coretests/src/android/widget/AutoCompleteTextViewSimple.java
+++ b/core/tests/coretests/src/android/widget/AutoCompleteTextViewSimple.java
@@ -16,8 +16,6 @@
package android.widget;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
@@ -25,6 +23,8 @@
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
+import com.android.frameworks.coretests.R;
+
public class AutoCompleteTextViewSimple extends Activity
implements OnItemClickListener, OnItemSelectedListener {
diff --git a/core/tests/coretests/src/android/widget/DatePickerActivity.java b/core/tests/coretests/src/android/widget/DatePickerActivity.java
index c3b25a1..9e455b2 100644
--- a/core/tests/coretests/src/android/widget/DatePickerActivity.java
+++ b/core/tests/coretests/src/android/widget/DatePickerActivity.java
@@ -18,6 +18,7 @@
import android.app.Activity;
import android.os.Bundle;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/widget/DatePickerFocusTest.java b/core/tests/coretests/src/android/widget/DatePickerFocusTest.java
index be85450..f067230 100644
--- a/core/tests/coretests/src/android/widget/DatePickerFocusTest.java
+++ b/core/tests/coretests/src/android/widget/DatePickerFocusTest.java
@@ -19,11 +19,12 @@
import android.app.Activity;
import android.app.Instrumentation;
import android.os.SystemClock;
-import android.support.test.filters.LargeTest;
import android.test.ActivityInstrumentationTestCase2;
import android.view.KeyEvent;
import android.view.View;
+import androidx.test.filters.LargeTest;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/widget/DateTimeViewTest.java b/core/tests/coretests/src/android/widget/DateTimeViewTest.java
index 40a6b7a..d0bd4b8 100644
--- a/core/tests/coretests/src/android/widget/DateTimeViewTest.java
+++ b/core/tests/coretests/src/android/widget/DateTimeViewTest.java
@@ -16,10 +16,10 @@
package android.widget;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.annotation.UiThreadTest;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/widget/EditorCursorTest.java b/core/tests/coretests/src/android/widget/EditorCursorTest.java
index 9186827b..e4f55df 100644
--- a/core/tests/coretests/src/android/widget/EditorCursorTest.java
+++ b/core/tests/coretests/src/android/widget/EditorCursorTest.java
@@ -31,10 +31,11 @@
import android.app.Activity;
import android.app.Instrumentation;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.MediumTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.MediumTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/widget/ListViewTest.java b/core/tests/coretests/src/android/widget/ListViewTest.java
index 449b696..254af2a 100644
--- a/core/tests/coretests/src/android/widget/ListViewTest.java
+++ b/core/tests/coretests/src/android/widget/ListViewTest.java
@@ -16,20 +16,19 @@
package android.widget;
-import android.test.suitebuilder.annotation.Suppress;
-import com.google.android.collect.Lists;
-
-import junit.framework.Assert;
-
import android.content.Context;
import android.content.res.Resources;
import android.test.InstrumentationTestCase;
import android.test.mock.MockContext;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
+import com.google.android.collect.Lists;
+
+import junit.framework.Assert;
import java.util.List;
diff --git a/core/tests/coretests/src/android/widget/RadioGroupActivity.java b/core/tests/coretests/src/android/widget/RadioGroupActivity.java
index c87aa3a..dd3b30a 100644
--- a/core/tests/coretests/src/android/widget/RadioGroupActivity.java
+++ b/core/tests/coretests/src/android/widget/RadioGroupActivity.java
@@ -17,11 +17,11 @@
package android.widget;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
public class RadioGroupActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/core/tests/coretests/src/android/widget/RadioGroupPreCheckedTest.java b/core/tests/coretests/src/android/widget/RadioGroupPreCheckedTest.java
index 1ab3628..18c1ea1 100644
--- a/core/tests/coretests/src/android/widget/RadioGroupPreCheckedTest.java
+++ b/core/tests/coretests/src/android/widget/RadioGroupPreCheckedTest.java
@@ -16,12 +16,13 @@
package android.widget;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase2;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
/**
* Exercises {@link android.widget.RadioGroup}'s check feature.
diff --git a/core/tests/coretests/src/android/widget/RemoteViewsAdapterTest.java b/core/tests/coretests/src/android/widget/RemoteViewsAdapterTest.java
index 06b860a..da53f6d 100644
--- a/core/tests/coretests/src/android/widget/RemoteViewsAdapterTest.java
+++ b/core/tests/coretests/src/android/widget/RemoteViewsAdapterTest.java
@@ -38,11 +38,12 @@
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.View;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.frameworks.coretests.R;
import com.android.internal.widget.IRemoteViewsFactory;
diff --git a/core/tests/coretests/src/android/widget/RemoteViewsTest.java b/core/tests/coretests/src/android/widget/RemoteViewsTest.java
index 36792bb..8cb7e1b 100644
--- a/core/tests/coretests/src/android/widget/RemoteViewsTest.java
+++ b/core/tests/coretests/src/android/widget/RemoteViewsTest.java
@@ -32,12 +32,13 @@
import android.os.AsyncTask;
import android.os.Binder;
import android.os.Parcel;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.View;
import android.view.ViewGroup;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.frameworks.coretests.R;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/widget/SelectionActionModeHelperTest.java b/core/tests/coretests/src/android/widget/SelectionActionModeHelperTest.java
index 2add221..74aad9a 100644
--- a/core/tests/coretests/src/android/widget/SelectionActionModeHelperTest.java
+++ b/core/tests/coretests/src/android/widget/SelectionActionModeHelperTest.java
@@ -22,7 +22,8 @@
import android.graphics.PointF;
import android.graphics.RectF;
-import android.support.test.filters.LargeTest;
+
+import androidx.test.filters.LargeTest;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/widget/SimpleCursorAdapterTest.java b/core/tests/coretests/src/android/widget/SimpleCursorAdapterTest.java
index 1731c08..a79b30d 100644
--- a/core/tests/coretests/src/android/widget/SimpleCursorAdapterTest.java
+++ b/core/tests/coretests/src/android/widget/SimpleCursorAdapterTest.java
@@ -16,14 +16,15 @@
package android.widget;
-import android.test.suitebuilder.annotation.Suppress;
-import com.google.android.collect.Lists;
-
import android.content.Context;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.filters.Suppress;
+
+import com.google.android.collect.Lists;
import java.util.ArrayList;
import java.util.Random;
diff --git a/core/tests/coretests/src/android/widget/SuggestionsPopupWindowTest.java b/core/tests/coretests/src/android/widget/SuggestionsPopupWindowTest.java
index eafe427..483270e 100644
--- a/core/tests/coretests/src/android/widget/SuggestionsPopupWindowTest.java
+++ b/core/tests/coretests/src/android/widget/SuggestionsPopupWindowTest.java
@@ -36,13 +36,13 @@
import static android.widget.espresso.SuggestionsPopupwindowUtils.onSuggestionsPopup;
import static android.widget.espresso.TextViewActions.clickOnTextAtIndex;
import static android.widget.espresso.TextViewActions.longPressOnTextAtIndex;
+
import static org.hamcrest.Matchers.is;
+
import android.content.res.TypedArray;
import android.support.test.espresso.NoMatchingViewException;
import android.support.test.espresso.ViewAssertion;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.text.Selection;
import android.text.Spannable;
import android.text.Spanned;
@@ -51,6 +51,8 @@
import android.text.style.TextAppearanceSpan;
import android.view.View;
+import androidx.test.filters.SmallTest;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java b/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java
index ff4a7da..41fa08b 100644
--- a/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java
+++ b/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java
@@ -43,14 +43,15 @@
import static android.widget.espresso.TextViewAssertions.hasSelection;
import android.app.Activity;
-import android.support.test.filters.MediumTest;
-import android.support.test.filters.Suppress;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
import android.view.MotionEvent;
import android.view.textclassifier.TextClassificationManager;
import android.view.textclassifier.TextClassifier;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.frameworks.coretests.R;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/widget/TextViewActivityTest.java b/core/tests/coretests/src/android/widget/TextViewActivityTest.java
index 90758ba..9d93421 100644
--- a/core/tests/coretests/src/android/widget/TextViewActivityTest.java
+++ b/core/tests/coretests/src/android/widget/TextViewActivityTest.java
@@ -27,10 +27,8 @@
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static android.widget.espresso.CustomViewActions.longPressAtRelativeCoordinates;
import static android.widget.espresso.DragHandleUtils.onHandleView;
-import static android.widget.espresso.FloatingToolbarEspressoUtils
- .assertFloatingToolbarContainsItem;
-import static android.widget.espresso.FloatingToolbarEspressoUtils
- .assertFloatingToolbarDoesNotContainItem;
+import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem;
+import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem;
import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsDisplayed;
import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarItemIndex;
import static android.widget.espresso.FloatingToolbarEspressoUtils.clickFloatingToolbarItem;
@@ -62,13 +60,8 @@
import android.app.Instrumentation;
import android.content.ClipData;
import android.content.ClipboardManager;
-import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.action.EspressoKey;
-import android.support.test.filters.MediumTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.UiDevice;
-import android.test.suitebuilder.annotation.Suppress;
import android.text.InputType;
import android.text.Selection;
import android.text.Spannable;
@@ -85,6 +78,12 @@
import android.view.textclassifier.TextLinksParams;
import android.widget.espresso.CustomViewActions.RelativeCoordinatesProvider;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.frameworks.coretests.R;
import org.junit.Before;
diff --git a/core/tests/coretests/src/android/widget/TextViewFallbackLineSpacingTest.java b/core/tests/coretests/src/android/widget/TextViewFallbackLineSpacingTest.java
index e9d1d3e..113db9d 100644
--- a/core/tests/coretests/src/android/widget/TextViewFallbackLineSpacingTest.java
+++ b/core/tests/coretests/src/android/widget/TextViewFallbackLineSpacingTest.java
@@ -21,8 +21,6 @@
import static org.junit.Assert.assertTrue;
import android.app.Activity;
-import android.support.test.filters.MediumTest;
-import android.support.test.rule.ActivityTestRule;
import android.text.DynamicLayout;
import android.text.FontFallbackSetup;
import android.text.Layout;
@@ -31,6 +29,9 @@
import android.view.View;
import android.widget.TextView.BufferType;
+import androidx.test.filters.MediumTest;
+import androidx.test.rule.ActivityTestRule;
+
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/widget/TextViewPerformanceTest.java b/core/tests/coretests/src/android/widget/TextViewPerformanceTest.java
index cf173fb..a769ea4 100644
--- a/core/tests/coretests/src/android/widget/TextViewPerformanceTest.java
+++ b/core/tests/coretests/src/android/widget/TextViewPerformanceTest.java
@@ -20,14 +20,15 @@
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.MediumTest;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.SpannedString;
import android.view.View;
import android.view.ViewGroup;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/android/widget/TextViewTest.java b/core/tests/coretests/src/android/widget/TextViewTest.java
index 1c5610b..585360f 100644
--- a/core/tests/coretests/src/android/widget/TextViewTest.java
+++ b/core/tests/coretests/src/android/widget/TextViewTest.java
@@ -27,11 +27,6 @@
import android.content.Intent;
import android.graphics.Paint;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.annotation.UiThreadTest;
-import android.support.test.filters.MediumTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
import android.text.GetChars;
import android.text.Layout;
import android.text.PrecomputedText;
@@ -40,6 +35,12 @@
import android.view.View;
import android.widget.TextView.BufferType;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
diff --git a/core/tests/coretests/src/android/widget/focus/AdjacentVerticalRectLists.java b/core/tests/coretests/src/android/widget/focus/AdjacentVerticalRectLists.java
index 75da6fe..85a4509 100644
--- a/core/tests/coretests/src/android/widget/focus/AdjacentVerticalRectLists.java
+++ b/core/tests/coretests/src/android/widget/focus/AdjacentVerticalRectLists.java
@@ -16,12 +16,11 @@
package android.widget.focus;
-import android.util.InternalSelectionView;
-
import android.app.Activity;
import android.os.Bundle;
-import android.widget.LinearLayout;
+import android.util.InternalSelectionView;
import android.view.ViewGroup;
+import android.widget.LinearLayout;
/**
* {@link android.view.FocusFinder#findNextFocus(android.view.ViewGroup, android.view.View, int)}
diff --git a/core/tests/coretests/src/android/widget/focus/DescendantFocusability.java b/core/tests/coretests/src/android/widget/focus/DescendantFocusability.java
index f6b0520..fe6d3c8 100644
--- a/core/tests/coretests/src/android/widget/focus/DescendantFocusability.java
+++ b/core/tests/coretests/src/android/widget/focus/DescendantFocusability.java
@@ -16,13 +16,13 @@
package android.widget.focus;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.Button;
+import com.android.frameworks.coretests.R;
+
public class DescendantFocusability extends Activity {
public ViewGroup beforeDescendants;
diff --git a/core/tests/coretests/src/android/widget/focus/DescendantFocusabilityTest.java b/core/tests/coretests/src/android/widget/focus/DescendantFocusabilityTest.java
index 2af42ac..1c570df 100644
--- a/core/tests/coretests/src/android/widget/focus/DescendantFocusabilityTest.java
+++ b/core/tests/coretests/src/android/widget/focus/DescendantFocusabilityTest.java
@@ -16,15 +16,14 @@
package android.widget.focus;
-import android.widget.focus.DescendantFocusability;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.UiThreadTest;
import android.test.TouchUtils;
import android.view.ViewGroup;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
public class DescendantFocusabilityTest extends ActivityInstrumentationTestCase<DescendantFocusability> {
private DescendantFocusability a;
diff --git a/core/tests/coretests/src/android/widget/focus/FocusAfterRemoval.java b/core/tests/coretests/src/android/widget/focus/FocusAfterRemoval.java
index b3d5ec5..0cb80ce 100644
--- a/core/tests/coretests/src/android/widget/focus/FocusAfterRemoval.java
+++ b/core/tests/coretests/src/android/widget/focus/FocusAfterRemoval.java
@@ -16,13 +16,13 @@
package android.widget.focus;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
-import android.widget.LinearLayout;
-import android.widget.Button;
import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+
+import com.android.frameworks.coretests.R;
/**
* Exercises cases where elements of the UI are removed (and
diff --git a/core/tests/coretests/src/android/widget/focus/FocusAfterRemovalTest.java b/core/tests/coretests/src/android/widget/focus/FocusAfterRemovalTest.java
index a1b7bcb..6c46d08 100644
--- a/core/tests/coretests/src/android/widget/focus/FocusAfterRemovalTest.java
+++ b/core/tests/coretests/src/android/widget/focus/FocusAfterRemovalTest.java
@@ -16,15 +16,15 @@
package android.widget.focus;
-import android.widget.focus.FocusAfterRemoval;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.widget.Button;
-import android.widget.LinearLayout;
import android.view.KeyEvent;
import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
/**
* {@link FocusAfterRemoval} is set up to exercise cases where the views that
diff --git a/core/tests/coretests/src/android/widget/focus/FocusChangeWithInterestingRectHintTest.java b/core/tests/coretests/src/android/widget/focus/FocusChangeWithInterestingRectHintTest.java
index 8f8f184..26dc233 100644
--- a/core/tests/coretests/src/android/widget/focus/FocusChangeWithInterestingRectHintTest.java
+++ b/core/tests/coretests/src/android/widget/focus/FocusChangeWithInterestingRectHintTest.java
@@ -16,14 +16,13 @@
package android.widget.focus;
-import android.widget.focus.AdjacentVerticalRectLists;
-import android.util.InternalSelectionView;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
+import android.util.InternalSelectionView;
import android.view.KeyEvent;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
/**
* {@link android.view.FocusFinder#findNextFocus(android.view.ViewGroup, android.view.View, int)}
* and
diff --git a/core/tests/coretests/src/android/widget/focus/GoneParentFocusedChildTest.java b/core/tests/coretests/src/android/widget/focus/GoneParentFocusedChildTest.java
index dcbddef..b7974e3 100644
--- a/core/tests/coretests/src/android/widget/focus/GoneParentFocusedChildTest.java
+++ b/core/tests/coretests/src/android/widget/focus/GoneParentFocusedChildTest.java
@@ -17,10 +17,10 @@
package android.widget.focus;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.view.View;
-import android.widget.focus.GoneParentFocusedChild;
+
+import androidx.test.filters.MediumTest;
/**
* When a parent is GONE, key events shouldn't go to its children, even if they
diff --git a/core/tests/coretests/src/android/widget/focus/HorizontalFocusSearch.java b/core/tests/coretests/src/android/widget/focus/HorizontalFocusSearch.java
index 11cac1e..aab9119 100644
--- a/core/tests/coretests/src/android/widget/focus/HorizontalFocusSearch.java
+++ b/core/tests/coretests/src/android/widget/focus/HorizontalFocusSearch.java
@@ -17,12 +17,12 @@
package android.widget.focus;
import android.app.Activity;
-import android.widget.LinearLayout;
-import android.widget.Button;
-import android.widget.TextView;
+import android.content.Context;
import android.os.Bundle;
import android.view.ViewGroup;
-import android.content.Context;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
public class HorizontalFocusSearch extends Activity {
diff --git a/core/tests/coretests/src/android/widget/focus/HorizontalFocusSearchTest.java b/core/tests/coretests/src/android/widget/focus/HorizontalFocusSearchTest.java
index 43986ee..855a3219 100644
--- a/core/tests/coretests/src/android/widget/focus/HorizontalFocusSearchTest.java
+++ b/core/tests/coretests/src/android/widget/focus/HorizontalFocusSearchTest.java
@@ -16,18 +16,17 @@
package android.widget.focus;
-import android.widget.focus.HorizontalFocusSearch;
-
-import android.support.test.filters.LargeTest;
-import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.Suppress;
-import android.widget.LinearLayout;
-import android.widget.Button;
-import android.view.View;
-
import static android.widget.focus.VerticalFocusSearchTest.FocusSearchAlg;
import static android.widget.focus.VerticalFocusSearchTest.NewFocusSearchAlg;
+import android.test.ActivityInstrumentationTestCase;
+import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.Suppress;
+
/**
* Tests that focus searching works on a horizontal linear layout of buttons of
* various widths and vertical placements.
diff --git a/core/tests/coretests/src/android/widget/focus/LinearLayoutGrid.java b/core/tests/coretests/src/android/widget/focus/LinearLayoutGrid.java
index acd632f..ec234bc 100644
--- a/core/tests/coretests/src/android/widget/focus/LinearLayoutGrid.java
+++ b/core/tests/coretests/src/android/widget/focus/LinearLayoutGrid.java
@@ -21,6 +21,7 @@
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
+
import com.android.frameworks.coretests.R;
public class LinearLayoutGrid extends Activity {
diff --git a/core/tests/coretests/src/android/widget/focus/LinearLayoutGridTest.java b/core/tests/coretests/src/android/widget/focus/LinearLayoutGridTest.java
index 89cb8bb..c81317c 100644
--- a/core/tests/coretests/src/android/widget/focus/LinearLayoutGridTest.java
+++ b/core/tests/coretests/src/android/widget/focus/LinearLayoutGridTest.java
@@ -17,11 +17,11 @@
package android.widget.focus;
import android.test.SingleLaunchActivityTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.FocusFinder;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.focus.LinearLayoutGrid;
+
+import androidx.test.filters.MediumTest;
/**
* Tests focus searching between buttons within a grid that are touching, for example,
diff --git a/core/tests/coretests/src/android/widget/focus/ListOfButtons.java b/core/tests/coretests/src/android/widget/focus/ListOfButtons.java
index 308861d..5663ed2 100644
--- a/core/tests/coretests/src/android/widget/focus/ListOfButtons.java
+++ b/core/tests/coretests/src/android/widget/focus/ListOfButtons.java
@@ -16,8 +16,6 @@
package android.widget.focus;
-import com.android.frameworks.coretests.R;
-
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
@@ -26,6 +24,8 @@
import android.widget.ArrayAdapter;
import android.widget.Button;
+import com.android.frameworks.coretests.R;
+
/**
* A layout with a ListView containing buttons.
*/
diff --git a/core/tests/coretests/src/android/widget/focus/ListOfButtonsTest.java b/core/tests/coretests/src/android/widget/focus/ListOfButtonsTest.java
index bec6f80..4cf4a3a 100644
--- a/core/tests/coretests/src/android/widget/focus/ListOfButtonsTest.java
+++ b/core/tests/coretests/src/android/widget/focus/ListOfButtonsTest.java
@@ -16,17 +16,17 @@
package android.widget.focus;
-import android.test.suitebuilder.annotation.Suppress;
-import android.widget.focus.ListOfButtons;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.widget.ListAdapter;
-import android.widget.Button;
-import android.widget.ListView;
import android.view.KeyEvent;
import android.view.View;
+import android.widget.Button;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
+import com.android.frameworks.coretests.R;
/**
* Tests that focus works as expected when navigating into and out of
diff --git a/core/tests/coretests/src/android/widget/focus/ListOfEditTexts.java b/core/tests/coretests/src/android/widget/focus/ListOfEditTexts.java
index c2e7a26..936c999 100644
--- a/core/tests/coretests/src/android/widget/focus/ListOfEditTexts.java
+++ b/core/tests/coretests/src/android/widget/focus/ListOfEditTexts.java
@@ -21,7 +21,12 @@
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.*;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+
import com.google.android.collect.Lists;
import java.util.List;
diff --git a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
index 53b866c..73e4ea8 100644
--- a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
+++ b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
@@ -19,11 +19,11 @@
import android.app.Activity;
import android.graphics.Point;
import android.os.Bundle;
+import android.util.InternalSelectionView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
-import android.util.InternalSelectionView;
/**
* A list of {@link InternalSelectionView}s paramatarized by the number of items,
diff --git a/core/tests/coretests/src/android/widget/focus/ListWithFooterViewAndNewLabels.java b/core/tests/coretests/src/android/widget/focus/ListWithFooterViewAndNewLabels.java
index b908201..8accf21 100644
--- a/core/tests/coretests/src/android/widget/focus/ListWithFooterViewAndNewLabels.java
+++ b/core/tests/coretests/src/android/widget/focus/ListWithFooterViewAndNewLabels.java
@@ -27,9 +27,10 @@
import android.widget.Button;
import android.widget.TextView;
-import com.google.android.collect.Lists;
import com.android.frameworks.coretests.R;
+import com.google.android.collect.Lists;
+
import java.util.List;
public class ListWithFooterViewAndNewLabels extends ListActivity {
diff --git a/core/tests/coretests/src/android/widget/focus/ListWithFooterViewAndNewLabelsTest.java b/core/tests/coretests/src/android/widget/focus/ListWithFooterViewAndNewLabelsTest.java
index 57dbb78..d0fcde5 100644
--- a/core/tests/coretests/src/android/widget/focus/ListWithFooterViewAndNewLabelsTest.java
+++ b/core/tests/coretests/src/android/widget/focus/ListWithFooterViewAndNewLabelsTest.java
@@ -16,14 +16,13 @@
package android.widget.focus;
-import android.widget.focus.ListWithFooterViewAndNewLabels;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
+import com.android.frameworks.coretests.R;
+
public class ListWithFooterViewAndNewLabelsTest
extends ActivityInstrumentationTestCase<ListWithFooterViewAndNewLabels> {
diff --git a/core/tests/coretests/src/android/widget/focus/ListWithMailMessages.java b/core/tests/coretests/src/android/widget/focus/ListWithMailMessages.java
index 5c891f9..50a8614 100644
--- a/core/tests/coretests/src/android/widget/focus/ListWithMailMessages.java
+++ b/core/tests/coretests/src/android/widget/focus/ListWithMailMessages.java
@@ -16,19 +16,20 @@
package android.widget.focus;
-import com.android.frameworks.coretests.R;
-import com.google.android.collect.Lists;
-
import android.app.ListActivity;
+import android.content.Context;
import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
-import android.content.Context;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.LayoutInflater;
-import android.webkit.WebView;
+
+import com.android.frameworks.coretests.R;
+
+import com.google.android.collect.Lists;
import java.util.List;
diff --git a/core/tests/coretests/src/android/widget/focus/RequestFocus.java b/core/tests/coretests/src/android/widget/focus/RequestFocus.java
index 4daf0b4..5042efd 100644
--- a/core/tests/coretests/src/android/widget/focus/RequestFocus.java
+++ b/core/tests/coretests/src/android/widget/focus/RequestFocus.java
@@ -16,13 +16,13 @@
package android.widget.focus;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
+import com.android.frameworks.coretests.R;
+
/**
* Exercises cases where elements of the UI are requestFocus()ed.
*/
diff --git a/core/tests/coretests/src/android/widget/focus/RequestFocusTest.java b/core/tests/coretests/src/android/widget/focus/RequestFocusTest.java
index cdfa217..bc770c5 100644
--- a/core/tests/coretests/src/android/widget/focus/RequestFocusTest.java
+++ b/core/tests/coretests/src/android/widget/focus/RequestFocusTest.java
@@ -21,16 +21,18 @@
import android.os.Handler;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.util.AndroidRuntimeException;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.ViewTreeObserver.OnGlobalFocusChangeListener;
import android.widget.Button;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
+
import org.mockito.InOrder;
/**
diff --git a/core/tests/coretests/src/android/widget/focus/ScrollingThroughListOfFocusablesTest.java b/core/tests/coretests/src/android/widget/focus/ScrollingThroughListOfFocusablesTest.java
index 06cb75d..e6e76cc 100644
--- a/core/tests/coretests/src/android/widget/focus/ScrollingThroughListOfFocusablesTest.java
+++ b/core/tests/coretests/src/android/widget/focus/ScrollingThroughListOfFocusablesTest.java
@@ -18,12 +18,12 @@
import android.graphics.Rect;
import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.util.InternalSelectionView;
import android.view.KeyEvent;
import android.widget.ListView;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
/**
* TODO: extract base test case that launches {@link ListOfInternalSelectionViews} with
diff --git a/core/tests/coretests/src/android/widget/focus/VerticalFocusSearch.java b/core/tests/coretests/src/android/widget/focus/VerticalFocusSearch.java
index 4a809e0..2ca9f6d 100644
--- a/core/tests/coretests/src/android/widget/focus/VerticalFocusSearch.java
+++ b/core/tests/coretests/src/android/widget/focus/VerticalFocusSearch.java
@@ -17,13 +17,13 @@
package android.widget.focus;
import android.app.Activity;
+import android.content.Context;
import android.os.Bundle;
-import android.widget.LinearLayout;
-import android.widget.Button;
-import android.widget.TextView;
import android.view.Gravity;
import android.view.ViewGroup;
-import android.content.Context;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
/**
* Holds a few buttons of various sizes and horizontal placements in a
diff --git a/core/tests/coretests/src/android/widget/focus/VerticalFocusSearchTest.java b/core/tests/coretests/src/android/widget/focus/VerticalFocusSearchTest.java
index f01422e..319756c 100644
--- a/core/tests/coretests/src/android/widget/focus/VerticalFocusSearchTest.java
+++ b/core/tests/coretests/src/android/widget/focus/VerticalFocusSearchTest.java
@@ -16,17 +16,16 @@
package android.widget.focus;
-import android.widget.focus.VerticalFocusSearch;
-
-import android.support.test.filters.LargeTest;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.FocusFinder;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.Suppress;
+
/**
* Tests that focus searching works on a vertical linear layout of buttons of
* various widths and horizontal placements.
diff --git a/core/tests/coretests/src/android/widget/gridview/GridDelete.java b/core/tests/coretests/src/android/widget/gridview/GridDelete.java
index 57ae8f39..b040f69 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridDelete.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridDelete.java
@@ -16,6 +16,7 @@
package android.widget.gridview;
+import android.util.GridScenario;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
@@ -23,8 +24,6 @@
import android.widget.GridView;
import android.widget.ListAdapter;
-import android.util.GridScenario;
-
import java.util.ArrayList;
/**
diff --git a/core/tests/coretests/src/android/widget/gridview/GridInHorizontalTest.java b/core/tests/coretests/src/android/widget/gridview/GridInHorizontalTest.java
index 21ca655..5247009 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridInHorizontalTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridInHorizontalTest.java
@@ -17,10 +17,9 @@
package android.widget.gridview;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.GridView;
-import android.widget.gridview.GridInHorizontal;
+import androidx.test.filters.MediumTest;
public class GridInHorizontalTest extends ActivityInstrumentationTestCase<GridInHorizontal> {
diff --git a/core/tests/coretests/src/android/widget/gridview/GridInVerticalTest.java b/core/tests/coretests/src/android/widget/gridview/GridInVerticalTest.java
index a674db2..290f70e 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridInVerticalTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridInVerticalTest.java
@@ -17,10 +17,9 @@
package android.widget.gridview;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.GridView;
-import android.widget.gridview.GridInVertical;
+import androidx.test.filters.MediumTest;
public class GridInVerticalTest extends ActivityInstrumentationTestCase<GridInVertical> {
diff --git a/core/tests/coretests/src/android/widget/gridview/GridPaddingTest.java b/core/tests/coretests/src/android/widget/gridview/GridPaddingTest.java
index ecd4b1c..d2ae7cf 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridPaddingTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridPaddingTest.java
@@ -17,9 +17,10 @@
package android.widget.gridview;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.GridView;
+import androidx.test.filters.MediumTest;
+
public class GridPaddingTest extends ActivityInstrumentationTestCase2<GridPadding> {
private GridView mGridView;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridScrollListenerTest.java b/core/tests/coretests/src/android/widget/gridview/GridScrollListenerTest.java
index 53eeb48..466c55f 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridScrollListenerTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridScrollListenerTest.java
@@ -19,12 +19,13 @@
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.AbsListView;
import android.widget.GridView;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
public class GridScrollListenerTest extends ActivityInstrumentationTestCase<GridScrollListener> implements
AbsListView.OnScrollListener {
private GridScrollListener mActivity;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionBaseTest.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionBaseTest.java
index 0e362b6..db4f2dc 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionBaseTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionBaseTest.java
@@ -16,13 +16,13 @@
package android.widget.gridview;
-import android.util.GridScenario;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.ViewAsserts;
+import android.util.GridScenario;
import android.widget.GridView;
+import androidx.test.filters.MediumTest;
+
public class GridSetSelectionBaseTest<T extends GridScenario> extends ActivityInstrumentationTestCase<T> {
private T mActivity;
private GridView mGridView;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionManyTest.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionManyTest.java
index 6739645..17a6044 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionManyTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionManyTest.java
@@ -16,8 +16,6 @@
package android.widget.gridview;
-import android.widget.gridview.GridSetSelectionMany;
-
public class GridSetSelectionManyTest extends GridSetSelectionBaseTest<GridSetSelectionMany> {
public GridSetSelectionManyTest() {
super(GridSetSelectionMany.class);
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomManyTest.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomManyTest.java
index 46922b97..a71f732 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomManyTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomManyTest.java
@@ -16,8 +16,6 @@
package android.widget.gridview;
-import android.widget.gridview.GridSetSelectionStackFromBottomMany;
-
public class GridSetSelectionStackFromBottomManyTest extends GridSetSelectionBaseTest<GridSetSelectionStackFromBottomMany> {
public GridSetSelectionStackFromBottomManyTest() {
super(GridSetSelectionStackFromBottomMany.class);
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomTest.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomTest.java
index 67dd6f1..4e6e8aa 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomTest.java
@@ -16,8 +16,6 @@
package android.widget.gridview;
-import android.widget.gridview.GridSetSelectionStackFromBottom;
-
public class GridSetSelectionStackFromBottomTest extends GridSetSelectionBaseTest<GridSetSelectionStackFromBottom> {
public GridSetSelectionStackFromBottomTest() {
super(GridSetSelectionStackFromBottom.class);
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionTest.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionTest.java
index 2127b3c..68802fe 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionTest.java
@@ -16,8 +16,6 @@
package android.widget.gridview;
-import android.widget.gridview.GridSetSelection;
-
public class GridSetSelectionTest extends GridSetSelectionBaseTest<GridSetSelection> {
public GridSetSelectionTest() {
super(GridSetSelection.class);
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSimple.java b/core/tests/coretests/src/android/widget/gridview/GridSimple.java
index 7c2c696..67bb751 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSimple.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSimple.java
@@ -18,12 +18,11 @@
import android.graphics.drawable.PaintDrawable;
import android.os.Bundle;
+import android.util.GridScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
-import android.util.GridScenario;
-
public class GridSimple extends GridScenario {
@Override
protected void init(Params params) {
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSingleColumnTest.java b/core/tests/coretests/src/android/widget/gridview/GridSingleColumnTest.java
index 3b2504e..0f67522 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSingleColumnTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSingleColumnTest.java
@@ -17,10 +17,9 @@
package android.widget.gridview;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.GridView;
-import android.widget.gridview.GridSingleColumn;
+import androidx.test.filters.MediumTest;
public class GridSingleColumnTest extends ActivityInstrumentationTestCase<GridSingleColumn> {
private GridSingleColumn mActivity;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomManyTest.java b/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomManyTest.java
index 640737e..a369616 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomManyTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomManyTest.java
@@ -16,11 +16,10 @@
package android.widget.gridview;
-import android.widget.gridview.GridStackFromBottomMany;
-
-import android.test.suitebuilder.annotation.MediumTest;
-import android.widget.GridView;
import android.test.ActivityInstrumentationTestCase;
+import android.widget.GridView;
+
+import androidx.test.filters.MediumTest;
public class GridStackFromBottomManyTest extends ActivityInstrumentationTestCase<GridStackFromBottomMany> {
private GridStackFromBottomMany mActivity;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomTest.java b/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomTest.java
index 8fec241..da1b638 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomTest.java
@@ -16,12 +16,11 @@
package android.widget.gridview;
-import android.widget.gridview.GridStackFromBottom;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.GridView;
+import androidx.test.filters.MediumTest;
+
public class GridStackFromBottomTest extends ActivityInstrumentationTestCase<GridStackFromBottom> {
private GridStackFromBottom mActivity;
private GridView mGridView;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridThrasher.java b/core/tests/coretests/src/android/widget/gridview/GridThrasher.java
index ad89bb6..34c19c3 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridThrasher.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridThrasher.java
@@ -16,20 +16,20 @@
package android.widget.gridview;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
+import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.LayoutInflater;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;
+import com.android.frameworks.coretests.R;
+
import java.util.Random;
/**
diff --git a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchSetSelectionTest.java b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchSetSelectionTest.java
index ca789af..ab5fcfa 100644
--- a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchSetSelectionTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchSetSelectionTest.java
@@ -17,14 +17,14 @@
package android.widget.gridview.touch;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
import android.view.View;
import android.widget.GridView;
-
import android.widget.gridview.GridSimple;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
/**
* Tests setting the selection in touch mode
*/
diff --git a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchStackFromBottomManyTest.java b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchStackFromBottomManyTest.java
index 9a8d307..e312873 100644
--- a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchStackFromBottomManyTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchStackFromBottomManyTest.java
@@ -16,14 +16,14 @@
package android.widget.gridview.touch;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
+import android.test.ActivityInstrumentationTestCase;
import android.test.TouchUtils;
+import android.view.View;
+import android.widget.GridView;
import android.widget.gridview.GridStackFromBottomMany;
-import android.widget.GridView;
-import android.view.View;
-import android.test.ActivityInstrumentationTestCase;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
public class GridTouchStackFromBottomManyTest extends ActivityInstrumentationTestCase<GridStackFromBottomMany> {
private GridStackFromBottomMany mActivity;
diff --git a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchStackFromBottomTest.java b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchStackFromBottomTest.java
index d8d4e43..c98c10a 100644
--- a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchStackFromBottomTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchStackFromBottomTest.java
@@ -16,13 +16,13 @@
package android.widget.gridview.touch;
-import android.widget.gridview.GridStackFromBottom;
-import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.MediumTest;
-
import android.test.ActivityInstrumentationTestCase;
-import android.widget.GridView;
+import android.test.TouchUtils;
import android.view.View;
+import android.widget.GridView;
+import android.widget.gridview.GridStackFromBottom;
+
+import androidx.test.filters.MediumTest;
public class GridTouchStackFromBottomTest extends ActivityInstrumentationTestCase<GridStackFromBottom> {
private GridStackFromBottom mActivity;
diff --git a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
index 55a66d9..0d3092c 100644
--- a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
@@ -18,16 +18,16 @@
import android.content.Context;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.GridView;
-
import android.widget.gridview.GridVerticalSpacingStackFromBottom;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
public class GridTouchVerticalSpacingStackFromBottomTest extends ActivityInstrumentationTestCase<GridVerticalSpacingStackFromBottom> {
private GridVerticalSpacingStackFromBottom mActivity;
private GridView mGridView;
diff --git a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingTest.java b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingTest.java
index bae4ee7..e831e62 100644
--- a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingTest.java
@@ -17,16 +17,16 @@
package android.widget.gridview.touch;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.GridView;
-
import android.widget.gridview.GridVerticalSpacing;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
public class GridTouchVerticalSpacingTest extends ActivityInstrumentationTestCase<GridVerticalSpacing> {
private GridVerticalSpacing mActivity;
private GridView mGridView;
diff --git a/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutGravity.java b/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutGravity.java
index 9791e36..d159be8 100644
--- a/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutGravity.java
+++ b/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutGravity.java
@@ -16,11 +16,10 @@
package android.widget.layout.frame;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
-import android.view.View;
+
+import com.android.frameworks.coretests.R;
public class FrameLayoutGravity extends Activity {
@Override
diff --git a/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutGravityTest.java b/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutGravityTest.java
index fe4e932..0cab660 100644
--- a/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutGravityTest.java
+++ b/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutGravityTest.java
@@ -16,12 +16,13 @@
package android.widget.layout.frame;
-import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.ViewAsserts;
import android.app.Activity;
+import android.test.ActivityInstrumentationTestCase;
+import android.test.ViewAsserts;
import android.view.View;
-import android.widget.layout.frame.FrameLayoutGravity;
+
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
public class FrameLayoutGravityTest extends ActivityInstrumentationTestCase<FrameLayoutGravity> {
diff --git a/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutMargin.java b/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutMargin.java
index 81b3ea1..8c54557 100644
--- a/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutMargin.java
+++ b/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutMargin.java
@@ -16,11 +16,10 @@
package android.widget.layout.frame;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
-import android.view.View;
+
+import com.android.frameworks.coretests.R;
public class FrameLayoutMargin extends Activity {
@Override
diff --git a/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutMarginTest.java b/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutMarginTest.java
index c052d65..4973078 100644
--- a/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutMarginTest.java
+++ b/core/tests/coretests/src/android/widget/layout/frame/FrameLayoutMarginTest.java
@@ -16,13 +16,14 @@
package android.widget.layout.frame;
-import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.ViewAsserts;
import android.app.Activity;
+import android.test.ActivityInstrumentationTestCase;
+import android.test.ViewAsserts;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.layout.frame.FrameLayoutMargin;
+
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
public class FrameLayoutMarginTest extends ActivityInstrumentationTestCase<FrameLayoutMargin> {
diff --git a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentCenterGravity.java b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentCenterGravity.java
index 766dd0a..79a34e5 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentCenterGravity.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentCenterGravity.java
@@ -16,11 +16,10 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
-import android.view.View;
+
+import com.android.frameworks.coretests.R;
public class BaselineAlignmentCenterGravity extends Activity {
@Override
diff --git a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentCenterGravityTest.java b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentCenterGravityTest.java
index 079e9d0..60b7c2f 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentCenterGravityTest.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentCenterGravityTest.java
@@ -18,13 +18,13 @@
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.ViewAsserts;
import android.view.View;
import android.widget.Button;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
-import android.widget.layout.linear.BaselineAlignmentCenterGravity;
public class BaselineAlignmentCenterGravityTest extends ActivityInstrumentationTestCase<BaselineAlignmentCenterGravity> {
private Button mButton1;
diff --git a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentSpinnerButton.java b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentSpinnerButton.java
index c3bfe3a..a429b75 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentSpinnerButton.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentSpinnerButton.java
@@ -18,12 +18,12 @@
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.ViewAsserts;
import android.view.View;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
-import android.widget.layout.linear.HorizontalOrientationVerticalAlignment;
public class BaselineAlignmentSpinnerButton extends ActivityInstrumentationTestCase<HorizontalOrientationVerticalAlignment> {
private View mSpinner;
diff --git a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentZeroWidthAndWeight.java b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentZeroWidthAndWeight.java
index 5ed5e71..f33feb0 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentZeroWidthAndWeight.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentZeroWidthAndWeight.java
@@ -16,12 +16,12 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
+import com.android.frameworks.coretests.R;
+
public class BaselineAlignmentZeroWidthAndWeight extends Activity {
@Override
protected void onCreate(Bundle icicle) {
diff --git a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentZeroWidthAndWeightTest.java b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentZeroWidthAndWeightTest.java
index 2dd2bb8..443b0f7 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentZeroWidthAndWeightTest.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/BaselineAlignmentZeroWidthAndWeightTest.java
@@ -16,16 +16,15 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-import android.widget.layout.linear.BaselineAlignmentZeroWidthAndWeight;
-import android.widget.layout.linear.ExceptionTextView;
-
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.Button;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
public class BaselineAlignmentZeroWidthAndWeightTest extends ActivityInstrumentationTestCase<BaselineAlignmentZeroWidthAndWeight> {
private Button mShowButton;
diff --git a/core/tests/coretests/src/android/widget/layout/linear/BaselineButtons.java b/core/tests/coretests/src/android/widget/layout/linear/BaselineButtons.java
index c9ad831..9d91316 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/BaselineButtons.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/BaselineButtons.java
@@ -16,11 +16,10 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
-import android.view.View;
+
+import com.android.frameworks.coretests.R;
public class BaselineButtons extends Activity {
@Override
diff --git a/core/tests/coretests/src/android/widget/layout/linear/BaselineButtonsTest.java b/core/tests/coretests/src/android/widget/layout/linear/BaselineButtonsTest.java
index 6f1fc90..ac3c5d8 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/BaselineButtonsTest.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/BaselineButtonsTest.java
@@ -18,12 +18,12 @@
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
import android.widget.ImageButton;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
-import android.widget.layout.linear.BaselineButtons;
public class BaselineButtonsTest extends ActivityInstrumentationTestCase<BaselineButtons> {
private View mCurrentTime;
diff --git a/core/tests/coretests/src/android/widget/layout/linear/ExceptionTextView.java b/core/tests/coretests/src/android/widget/layout/linear/ExceptionTextView.java
index 6129b5b..c684501 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/ExceptionTextView.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/ExceptionTextView.java
@@ -21,7 +21,6 @@
import android.util.AttributeSet;
import android.widget.EditText;
-
/**
* A special EditText that sets {@link #isFailed()} to true as its internal makeNewLayout() method is called
* with a width lower than 0. This is used to fail the unit test in
diff --git a/core/tests/coretests/src/android/widget/layout/linear/FillInWrap.java b/core/tests/coretests/src/android/widget/layout/linear/FillInWrap.java
index 50aa5b7..c8a5f34 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/FillInWrap.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/FillInWrap.java
@@ -16,12 +16,12 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
+import com.android.frameworks.coretests.R;
+
public class FillInWrap extends Activity {
@Override
protected void onCreate(Bundle icicle) {
diff --git a/core/tests/coretests/src/android/widget/layout/linear/FillInWrapTest.java b/core/tests/coretests/src/android/widget/layout/linear/FillInWrapTest.java
index f161802..0e69efc 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/FillInWrapTest.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/FillInWrapTest.java
@@ -18,9 +18,10 @@
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
public class FillInWrapTest extends ActivityInstrumentationTestCase<FillInWrap> {
diff --git a/core/tests/coretests/src/android/widget/layout/linear/HorizontalOrientationVerticalAlignment.java b/core/tests/coretests/src/android/widget/layout/linear/HorizontalOrientationVerticalAlignment.java
index 9f937a9..255f7b3 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/HorizontalOrientationVerticalAlignment.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/HorizontalOrientationVerticalAlignment.java
@@ -16,11 +16,10 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
-import android.view.View;
+
+import com.android.frameworks.coretests.R;
public class HorizontalOrientationVerticalAlignment extends Activity {
@Override
diff --git a/core/tests/coretests/src/android/widget/layout/linear/LLEditTextThenButton.java b/core/tests/coretests/src/android/widget/layout/linear/LLEditTextThenButton.java
index 83331ca..a0745dd 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/LLEditTextThenButton.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/LLEditTextThenButton.java
@@ -16,14 +16,14 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
+import com.android.frameworks.coretests.R;
+
public class LLEditTextThenButton extends Activity {
private EditText mEditText;
private Button mButton;
diff --git a/core/tests/coretests/src/android/widget/layout/linear/LLOfButtons1.java b/core/tests/coretests/src/android/widget/layout/linear/LLOfButtons1.java
index ab2f060..1153062 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/LLOfButtons1.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/LLOfButtons1.java
@@ -18,10 +18,10 @@
import android.app.Activity;
import android.os.Bundle;
-import android.os.RemoteException;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
+
import com.android.frameworks.coretests.R;
/**
diff --git a/core/tests/coretests/src/android/widget/layout/linear/LLOfButtons2.java b/core/tests/coretests/src/android/widget/layout/linear/LLOfButtons2.java
index 77f564d..0aca699 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/LLOfButtons2.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/LLOfButtons2.java
@@ -22,5 +22,4 @@
*/
public class LLOfButtons2 extends LLOfButtons1 {
-
}
diff --git a/core/tests/coretests/src/android/widget/layout/linear/LinearLayoutEditTexts.java b/core/tests/coretests/src/android/widget/layout/linear/LinearLayoutEditTexts.java
index 90db788..5d37245 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/LinearLayoutEditTexts.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/LinearLayoutEditTexts.java
@@ -16,11 +16,11 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
public class LinearLayoutEditTexts extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/core/tests/coretests/src/android/widget/layout/linear/LinearLayoutEditTextsTest.java b/core/tests/coretests/src/android/widget/layout/linear/LinearLayoutEditTextsTest.java
index d5998b7..966ed6d 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/LinearLayoutEditTextsTest.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/LinearLayoutEditTextsTest.java
@@ -16,13 +16,13 @@
package android.widget.layout.linear;
-import android.widget.layout.linear.LinearLayoutEditTexts;
-import com.android.frameworks.coretests.R;
-
-import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.View;
import android.app.Activity;
+import android.test.ActivityInstrumentationTestCase;
+import android.view.View;
+
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
public class LinearLayoutEditTextsTest extends ActivityInstrumentationTestCase<LinearLayoutEditTexts> {
private View mChild;
diff --git a/core/tests/coretests/src/android/widget/layout/linear/Weight.java b/core/tests/coretests/src/android/widget/layout/linear/Weight.java
index 20edd7c..3722a14f 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/Weight.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/Weight.java
@@ -16,11 +16,11 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
public class Weight extends Activity {
@Override
protected void onCreate(Bundle icicle) {
diff --git a/core/tests/coretests/src/android/widget/layout/linear/WeightSum.java b/core/tests/coretests/src/android/widget/layout/linear/WeightSum.java
index 2e421da..144600b 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/WeightSum.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/WeightSum.java
@@ -16,11 +16,10 @@
package android.widget.layout.linear;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
-import android.view.View;
+
+import com.android.frameworks.coretests.R;
public class WeightSum extends Activity {
@Override
diff --git a/core/tests/coretests/src/android/widget/layout/linear/WeightSumTest.java b/core/tests/coretests/src/android/widget/layout/linear/WeightSumTest.java
index f9a94ce..1d07db2 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/WeightSumTest.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/WeightSumTest.java
@@ -18,11 +18,11 @@
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
-import android.widget.layout.linear.WeightSum;
public class WeightSumTest extends ActivityInstrumentationTestCase<WeightSum> {
private View mChild;
diff --git a/core/tests/coretests/src/android/widget/layout/linear/WeightTest.java b/core/tests/coretests/src/android/widget/layout/linear/WeightTest.java
index 1c42e7c..db52495 100644
--- a/core/tests/coretests/src/android/widget/layout/linear/WeightTest.java
+++ b/core/tests/coretests/src/android/widget/layout/linear/WeightTest.java
@@ -18,13 +18,13 @@
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.ViewAsserts;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.View;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
import com.android.frameworks.coretests.R;
-import android.widget.layout.linear.Weight;
@Suppress // Failing.
public class WeightTest extends ActivityInstrumentationTestCase<Weight> {
diff --git a/core/tests/coretests/src/android/widget/layout/table/AddColumn.java b/core/tests/coretests/src/android/widget/layout/table/AddColumn.java
index 400c32c..b407941 100644
--- a/core/tests/coretests/src/android/widget/layout/table/AddColumn.java
+++ b/core/tests/coretests/src/android/widget/layout/table/AddColumn.java
@@ -16,8 +16,6 @@
package android.widget.layout.table;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
@@ -26,6 +24,8 @@
import android.widget.TableRow;
import android.widget.TextView;
+import com.android.frameworks.coretests.R;
+
/**
* This test adds an extra row with an extra column in the table.
*/
diff --git a/core/tests/coretests/src/android/widget/layout/table/AddColumnTest.java b/core/tests/coretests/src/android/widget/layout/table/AddColumnTest.java
index bfb4d17..08ae030 100644
--- a/core/tests/coretests/src/android/widget/layout/table/AddColumnTest.java
+++ b/core/tests/coretests/src/android/widget/layout/table/AddColumnTest.java
@@ -16,16 +16,16 @@
package android.widget.layout.table;
-import android.widget.layout.table.AddColumn;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.TableLayout;
import android.widget.TableRow;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
/**
* {@link android.widget.layout.table.AddColumn} is
* setup to exercise the case of adding row programmatically in a table.
diff --git a/core/tests/coretests/src/android/widget/layout/table/CellSpan.java b/core/tests/coretests/src/android/widget/layout/table/CellSpan.java
index d91cf56..3102ac1 100644
--- a/core/tests/coretests/src/android/widget/layout/table/CellSpan.java
+++ b/core/tests/coretests/src/android/widget/layout/table/CellSpan.java
@@ -16,11 +16,11 @@
package android.widget.layout.table;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
/**
* Exercise table layout with cells spanning.
*/
diff --git a/core/tests/coretests/src/android/widget/layout/table/CellSpanTest.java b/core/tests/coretests/src/android/widget/layout/table/CellSpanTest.java
index 331ec45..aa8e66c 100644
--- a/core/tests/coretests/src/android/widget/layout/table/CellSpanTest.java
+++ b/core/tests/coretests/src/android/widget/layout/table/CellSpanTest.java
@@ -16,13 +16,13 @@
package android.widget.layout.table;
-import android.widget.layout.table.CellSpan;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
/**
* {@link android.widget.layout.table.CellSpan} is
* setup to exercise tables in which cells use spanning.
diff --git a/core/tests/coretests/src/android/widget/layout/table/FixedWidth.java b/core/tests/coretests/src/android/widget/layout/table/FixedWidth.java
index 435815a..c587f74 100644
--- a/core/tests/coretests/src/android/widget/layout/table/FixedWidth.java
+++ b/core/tests/coretests/src/android/widget/layout/table/FixedWidth.java
@@ -16,11 +16,11 @@
package android.widget.layout.table;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
/**
* Exercise table layout with cells having a fixed width and height.
*/
diff --git a/core/tests/coretests/src/android/widget/layout/table/FixedWidthTest.java b/core/tests/coretests/src/android/widget/layout/table/FixedWidthTest.java
index b20ec84..7d02453 100644
--- a/core/tests/coretests/src/android/widget/layout/table/FixedWidthTest.java
+++ b/core/tests/coretests/src/android/widget/layout/table/FixedWidthTest.java
@@ -16,13 +16,13 @@
package android.widget.layout.table;
-import android.widget.layout.table.FixedWidth;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
/**
* {@link android.widget.layout.table.FixedWidth} is
* setup to exercise tables in which cells use fixed width and height.
diff --git a/core/tests/coretests/src/android/widget/layout/table/HorizontalGravity.java b/core/tests/coretests/src/android/widget/layout/table/HorizontalGravity.java
index 1444f60f..6f5148b 100644
--- a/core/tests/coretests/src/android/widget/layout/table/HorizontalGravity.java
+++ b/core/tests/coretests/src/android/widget/layout/table/HorizontalGravity.java
@@ -16,11 +16,11 @@
package android.widget.layout.table;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
/**
* Exercise table layout with cells using a horizontal gravity.
*/
diff --git a/core/tests/coretests/src/android/widget/layout/table/HorizontalGravityTest.java b/core/tests/coretests/src/android/widget/layout/table/HorizontalGravityTest.java
index 964df82..73e8334 100644
--- a/core/tests/coretests/src/android/widget/layout/table/HorizontalGravityTest.java
+++ b/core/tests/coretests/src/android/widget/layout/table/HorizontalGravityTest.java
@@ -16,14 +16,14 @@
package android.widget.layout.table;
-import android.widget.layout.table.HorizontalGravity;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.ViewAsserts;
import android.view.View;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
/**
* {@link android.widget.layout.table.HorizontalGravity} is
* setup to exercise tables in which cells use horizontal gravity.
diff --git a/core/tests/coretests/src/android/widget/layout/table/VerticalGravity.java b/core/tests/coretests/src/android/widget/layout/table/VerticalGravity.java
index 4fdb378..9055b32 100644
--- a/core/tests/coretests/src/android/widget/layout/table/VerticalGravity.java
+++ b/core/tests/coretests/src/android/widget/layout/table/VerticalGravity.java
@@ -16,11 +16,11 @@
package android.widget.layout.table;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
/**
* Exercise table layout with cells using a vertical gravity.
*/
diff --git a/core/tests/coretests/src/android/widget/layout/table/VerticalGravityTest.java b/core/tests/coretests/src/android/widget/layout/table/VerticalGravityTest.java
index 1d6be3f..f14fa1c 100644
--- a/core/tests/coretests/src/android/widget/layout/table/VerticalGravityTest.java
+++ b/core/tests/coretests/src/android/widget/layout/table/VerticalGravityTest.java
@@ -16,15 +16,15 @@
package android.widget.layout.table;
-import android.widget.layout.table.VerticalGravity;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.test.ViewAsserts;
import android.view.View;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
+import com.android.frameworks.coretests.R;
+
/**
* {@link android.widget.layout.table.VerticalGravity} is
* setup to exercise tables in which cells use vertical gravity.
diff --git a/core/tests/coretests/src/android/widget/layout/table/Weight.java b/core/tests/coretests/src/android/widget/layout/table/Weight.java
index 6d4d51d..5c08247 100644
--- a/core/tests/coretests/src/android/widget/layout/table/Weight.java
+++ b/core/tests/coretests/src/android/widget/layout/table/Weight.java
@@ -16,11 +16,11 @@
package android.widget.layout.table;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import com.android.frameworks.coretests.R;
+
/**
* Exercise table layout with cells having a weight.
*/
diff --git a/core/tests/coretests/src/android/widget/layout/table/WeightTest.java b/core/tests/coretests/src/android/widget/layout/table/WeightTest.java
index b665573..fcf3de2 100644
--- a/core/tests/coretests/src/android/widget/layout/table/WeightTest.java
+++ b/core/tests/coretests/src/android/widget/layout/table/WeightTest.java
@@ -16,13 +16,13 @@
package android.widget.layout.table;
-import android.widget.layout.table.Weight;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
/**
* {@link android.widget.layout.table.Weight} is
* setup to exercise tables in which cells use a weight.
diff --git a/core/tests/coretests/src/android/widget/listview/ListBottomGravity.java b/core/tests/coretests/src/android/widget/listview/ListBottomGravity.java
index a386ebd..cd76d70 100644
--- a/core/tests/coretests/src/android/widget/listview/ListBottomGravity.java
+++ b/core/tests/coretests/src/android/widget/listview/ListBottomGravity.java
@@ -16,8 +16,6 @@
package android.widget.listview;
-import android.view.Gravity;
-
import android.util.ListScenario;
/**
diff --git a/core/tests/coretests/src/android/widget/listview/ListBottomGravityMany.java b/core/tests/coretests/src/android/widget/listview/ListBottomGravityMany.java
index 519816c..e048e3e 100644
--- a/core/tests/coretests/src/android/widget/listview/ListBottomGravityMany.java
+++ b/core/tests/coretests/src/android/widget/listview/ListBottomGravityMany.java
@@ -16,8 +16,6 @@
package android.widget.listview;
-import android.view.Gravity;
-
import android.util.ListScenario;
/**
diff --git a/core/tests/coretests/src/android/widget/listview/ListBottomGravityManyTest.java b/core/tests/coretests/src/android/widget/listview/ListBottomGravityManyTest.java
index e1171eb..bd8dbe4 100644
--- a/core/tests/coretests/src/android/widget/listview/ListBottomGravityManyTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListBottomGravityManyTest.java
@@ -17,10 +17,9 @@
package android.widget.listview;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.ListView;
-import android.widget.listview.ListBottomGravityMany;
+import androidx.test.filters.MediumTest;
public class ListBottomGravityManyTest extends ActivityInstrumentationTestCase<ListBottomGravityMany> {
private ListBottomGravityMany mActivity;
diff --git a/core/tests/coretests/src/android/widget/listview/ListBottomGravityTest.java b/core/tests/coretests/src/android/widget/listview/ListBottomGravityTest.java
index c595f62..8da7358 100644
--- a/core/tests/coretests/src/android/widget/listview/ListBottomGravityTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListBottomGravityTest.java
@@ -17,10 +17,9 @@
package android.widget.listview;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.ListView;
-import android.widget.listview.ListBottomGravity;
+import androidx.test.filters.MediumTest;
public class ListBottomGravityTest extends ActivityInstrumentationTestCase<ListBottomGravity> {
private ListBottomGravity mActivity;
diff --git a/core/tests/coretests/src/android/widget/listview/ListButtonsDiagonalAcrossItems.java b/core/tests/coretests/src/android/widget/listview/ListButtonsDiagonalAcrossItems.java
index bbed73c..8640741 100644
--- a/core/tests/coretests/src/android/widget/listview/ListButtonsDiagonalAcrossItems.java
+++ b/core/tests/coretests/src/android/widget/listview/ListButtonsDiagonalAcrossItems.java
@@ -16,10 +16,10 @@
package android.widget.listview;
-import android.util.ListItemFactory;
import static android.util.ListItemFactory.Slot;
-import android.util.ListScenario;
+import android.util.ListItemFactory;
+import android.util.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
diff --git a/core/tests/coretests/src/android/widget/listview/ListEmptyViewTest.java b/core/tests/coretests/src/android/widget/listview/ListEmptyViewTest.java
index 258d3ef..81d71a9 100644
--- a/core/tests/coretests/src/android/widget/listview/ListEmptyViewTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListEmptyViewTest.java
@@ -19,12 +19,13 @@
import android.app.Instrumentation;
import android.content.Intent;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ListView;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
public class ListEmptyViewTest extends ActivityInstrumentationTestCase<ListWithEmptyView> {
private ListWithEmptyView mActivity;
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/ListFilter.java b/core/tests/coretests/src/android/widget/listview/ListFilter.java
index c2ac90e..1cda717 100644
--- a/core/tests/coretests/src/android/widget/listview/ListFilter.java
+++ b/core/tests/coretests/src/android/widget/listview/ListFilter.java
@@ -25,7 +25,6 @@
import com.android.frameworks.coretests.R;
-
/**
* Tests hiding and showing the list filter by hiding and showing an ancestor of the
* ListView
diff --git a/core/tests/coretests/src/android/widget/listview/ListFocusableTest.java b/core/tests/coretests/src/android/widget/listview/ListFocusableTest.java
index bf18a13..10b4a79 100644
--- a/core/tests/coretests/src/android/widget/listview/ListFocusableTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListFocusableTest.java
@@ -17,10 +17,11 @@
package android.widget.listview;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.widget.ListView;
-import android.widget.ListAdapter;
import android.widget.ArrayAdapter;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+
+import androidx.test.filters.MediumTest;
public class ListFocusableTest extends ActivityInstrumentationTestCase<ListTopGravity> {
private ListTopGravity mActivity;
diff --git a/core/tests/coretests/src/android/widget/listview/ListGetCheckItemIdsTest.java b/core/tests/coretests/src/android/widget/listview/ListGetCheckItemIdsTest.java
index 33d61a0..c691ed7 100644
--- a/core/tests/coretests/src/android/widget/listview/ListGetCheckItemIdsTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListGetCheckItemIdsTest.java
@@ -17,10 +17,11 @@
package android.widget.listview;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.ListView;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+
import java.util.Arrays;
/**
diff --git a/core/tests/coretests/src/android/widget/listview/ListHeterogeneous.java b/core/tests/coretests/src/android/widget/listview/ListHeterogeneous.java
index 1f59c30..74eda3b 100644
--- a/core/tests/coretests/src/android/widget/listview/ListHeterogeneous.java
+++ b/core/tests/coretests/src/android/widget/listview/ListHeterogeneous.java
@@ -16,11 +16,10 @@
package android.widget.listview;
-import android.view.View;
-import android.view.ViewGroup;
-
import android.util.ListItemFactory;
import android.util.ListScenario;
+import android.view.View;
+import android.view.ViewGroup;
/**
* List that has different view types
diff --git a/core/tests/coretests/src/android/widget/listview/ListHeterogeneousTest.java b/core/tests/coretests/src/android/widget/listview/ListHeterogeneousTest.java
index 01b39db..dbd58d7 100644
--- a/core/tests/coretests/src/android/widget/listview/ListHeterogeneousTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListHeterogeneousTest.java
@@ -18,12 +18,11 @@
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.ListView;
-import android.widget.listview.ListHeterogeneous;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
public class ListHeterogeneousTest extends ActivityInstrumentationTestCase<ListHeterogeneous> {
private ListHeterogeneous mActivity;
diff --git a/core/tests/coretests/src/android/widget/listview/ListHorizontalFocusWithinItemWins.java b/core/tests/coretests/src/android/widget/listview/ListHorizontalFocusWithinItemWins.java
index 2ff65de..e98de9c 100644
--- a/core/tests/coretests/src/android/widget/listview/ListHorizontalFocusWithinItemWins.java
+++ b/core/tests/coretests/src/android/widget/listview/ListHorizontalFocusWithinItemWins.java
@@ -16,11 +16,11 @@
package android.widget.listview;
-import android.util.ListItemFactory;
import static android.util.ListItemFactory.Slot;
-import android.util.ListScenario;
import android.content.Context;
+import android.util.ListItemFactory;
+import android.util.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
diff --git a/core/tests/coretests/src/android/widget/listview/ListInHorizontal.java b/core/tests/coretests/src/android/widget/listview/ListInHorizontal.java
index a373a5b..6622c0d 100644
--- a/core/tests/coretests/src/android/widget/listview/ListInHorizontal.java
+++ b/core/tests/coretests/src/android/widget/listview/ListInHorizontal.java
@@ -18,10 +18,7 @@
import android.app.Activity;
import android.os.Bundle;
-import android.os.Handler;
import android.widget.ArrayAdapter;
-import android.widget.GridView;
-import android.widget.TextView;
import android.widget.ListView;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/widget/listview/ListInHorizontalTest.java b/core/tests/coretests/src/android/widget/listview/ListInHorizontalTest.java
index 3643f79..d8508ec 100644
--- a/core/tests/coretests/src/android/widget/listview/ListInHorizontalTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListInHorizontalTest.java
@@ -16,8 +16,6 @@
package android.widget.listview;
-import android.widget.listview.ListInHorizontal;
-
public class ListInHorizontalTest extends ListUnspecifiedMeasure<ListInHorizontal> {
public ListInHorizontalTest() {
super(ListInHorizontal.class);
diff --git a/core/tests/coretests/src/android/widget/listview/ListInVertical.java b/core/tests/coretests/src/android/widget/listview/ListInVertical.java
index 3b4885a..4ecf25d 100644
--- a/core/tests/coretests/src/android/widget/listview/ListInVertical.java
+++ b/core/tests/coretests/src/android/widget/listview/ListInVertical.java
@@ -18,10 +18,7 @@
import android.app.Activity;
import android.os.Bundle;
-import android.os.Handler;
import android.widget.ArrayAdapter;
-import android.widget.GridView;
-import android.widget.TextView;
import android.widget.ListView;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/widget/listview/ListInVerticalTest.java b/core/tests/coretests/src/android/widget/listview/ListInVerticalTest.java
index 8586429..5e385a3 100644
--- a/core/tests/coretests/src/android/widget/listview/ListInVerticalTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListInVerticalTest.java
@@ -16,8 +16,6 @@
package android.widget.listview;
-import android.widget.listview.ListInVertical;
-
public class ListInVerticalTest extends ListUnspecifiedMeasure<ListInVertical> {
public ListInVerticalTest() {
super(ListInVertical.class);
diff --git a/core/tests/coretests/src/android/widget/listview/ListInterleaveFocusables.java b/core/tests/coretests/src/android/widget/listview/ListInterleaveFocusables.java
index d5da28e..0ec7a24 100644
--- a/core/tests/coretests/src/android/widget/listview/ListInterleaveFocusables.java
+++ b/core/tests/coretests/src/android/widget/listview/ListInterleaveFocusables.java
@@ -16,13 +16,14 @@
package android.widget.listview;
+import android.util.ListItemFactory;
+import android.util.ListScenario;
import android.view.View;
- import android.view.ViewGroup;
- import com.google.android.collect.Sets;
- import android.util.ListScenario;
- import android.util.ListItemFactory;
+import android.view.ViewGroup;
- import java.util.Set;
+import com.google.android.collect.Sets;
+
+import java.util.Set;
/**
* List that interleaves focusable items.
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemFocusableAboveUnfocusable.java b/core/tests/coretests/src/android/widget/listview/ListItemFocusableAboveUnfocusable.java
index f7c01b1..3159e53 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemFocusableAboveUnfocusable.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemFocusableAboveUnfocusable.java
@@ -16,12 +16,10 @@
package android.widget.listview;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.TextView;
import android.util.ListItemFactory;
import android.util.ListScenario;
+import android.view.View;
+import android.view.ViewGroup;
/**
* A list where the items may befocusable, but the second item isn't actually focusabe.
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemFocusablesClose.java b/core/tests/coretests/src/android/widget/listview/ListItemFocusablesClose.java
index b529b2e..861e2a91 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemFocusablesClose.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemFocusablesClose.java
@@ -16,8 +16,8 @@
package android.widget.listview;
-import android.util.ListScenario;
import android.util.ListItemFactory;
+import android.util.ListScenario;
import android.view.View;
import android.view.ViewGroup;
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemFocusablesFarApart.java b/core/tests/coretests/src/android/widget/listview/ListItemFocusablesFarApart.java
index 59987ec..e9c9c1d 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemFocusablesFarApart.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemFocusablesFarApart.java
@@ -16,10 +16,10 @@
package android.widget.listview;
-import android.view.View;
-import android.view.ViewGroup;
import android.util.ListItemFactory;
import android.util.ListScenario;
+import android.view.View;
+import android.view.ViewGroup;
/**
* A list where each item is tall with buttons that are farther apart than the screen
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemISVAndButton.java b/core/tests/coretests/src/android/widget/listview/ListItemISVAndButton.java
index ea2c5f2..2a0e013 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemISVAndButton.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemISVAndButton.java
@@ -17,13 +17,13 @@
package android.widget.listview;
import android.content.Context;
+import android.util.InternalSelectionView;
+import android.util.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
-import android.util.InternalSelectionView;
-import android.util.ListScenario;
/**
* Each item is an internal selection view, a button, and some filler
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemRequestRectAboveThinFirstItemTest.java b/core/tests/coretests/src/android/widget/listview/ListItemRequestRectAboveThinFirstItemTest.java
index 73eb0a8..91ff06b 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemRequestRectAboveThinFirstItemTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemRequestRectAboveThinFirstItemTest.java
@@ -18,13 +18,13 @@
import android.graphics.Rect;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.view.View;
import android.view.KeyEvent;
+import android.view.View;
import android.widget.ListView;
-import android.widget.listview.ListOfThinItems;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
public class ListItemRequestRectAboveThinFirstItemTest
extends ActivityInstrumentationTestCase<ListOfThinItems> {
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemsExpandOnSelection.java b/core/tests/coretests/src/android/widget/listview/ListItemsExpandOnSelection.java
index a5fe17a..d80fd90 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemsExpandOnSelection.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemsExpandOnSelection.java
@@ -17,13 +17,12 @@
package android.widget.listview;
import android.content.Context;
+import android.util.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.TextView;
-import android.util.ListScenario;
-
/**
* A list where each item expands by 1.5 when selected.
*/
diff --git a/core/tests/coretests/src/android/widget/listview/ListManagedCursor.java b/core/tests/coretests/src/android/widget/listview/ListManagedCursor.java
index 12b5ef4..54f302c 100644
--- a/core/tests/coretests/src/android/widget/listview/ListManagedCursor.java
+++ b/core/tests/coretests/src/android/widget/listview/ListManagedCursor.java
@@ -20,14 +20,13 @@
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
-import android.provider.Settings;
import android.provider.Contacts.People;
+import android.provider.Settings;
import android.view.View;
import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
-import android.widget.AdapterView.OnItemClickListener;
-
public class ListManagedCursor extends ListActivity implements OnItemClickListener {
diff --git a/core/tests/coretests/src/android/widget/listview/ListManagedCursorTest.java b/core/tests/coretests/src/android/widget/listview/ListManagedCursorTest.java
index bc3776c..8e0b6fe 100644
--- a/core/tests/coretests/src/android/widget/listview/ListManagedCursorTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListManagedCursorTest.java
@@ -18,11 +18,12 @@
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
+import android.test.TouchUtils;
import android.view.KeyEvent;
import android.widget.ListView;
-import android.test.TouchUtils;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
/**
* Tests restoring the scroll position in a list with a managed cursor.
diff --git a/core/tests/coretests/src/android/widget/listview/ListOfTouchables.java b/core/tests/coretests/src/android/widget/listview/ListOfTouchables.java
index 919ef69..70b9081 100644
--- a/core/tests/coretests/src/android/widget/listview/ListOfTouchables.java
+++ b/core/tests/coretests/src/android/widget/listview/ListOfTouchables.java
@@ -16,12 +16,11 @@
package android.widget.listview;
+import android.util.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import android.util.ListScenario;
-
/**
* Each list item has two focusables that are close enough together that
* it shouldn't require panning to move focus.
diff --git a/core/tests/coretests/src/android/widget/listview/ListRecyclerProfiling.java b/core/tests/coretests/src/android/widget/listview/ListRecyclerProfiling.java
index 76814fb..075712e 100644
--- a/core/tests/coretests/src/android/widget/listview/ListRecyclerProfiling.java
+++ b/core/tests/coretests/src/android/widget/listview/ListRecyclerProfiling.java
@@ -18,11 +18,11 @@
import android.app.Activity;
import android.os.Bundle;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-import android.widget.ImageButton;
-import android.view.ViewDebug;
import android.view.View;
+import android.view.ViewDebug;
+import android.widget.ArrayAdapter;
+import android.widget.ImageButton;
+import android.widget.ListView;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/widget/listview/ListRetainsFocusAcrossLayoutsTest.java b/core/tests/coretests/src/android/widget/listview/ListRetainsFocusAcrossLayoutsTest.java
index 896bd19..be14de8 100644
--- a/core/tests/coretests/src/android/widget/listview/ListRetainsFocusAcrossLayoutsTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListRetainsFocusAcrossLayoutsTest.java
@@ -16,12 +16,11 @@
package android.widget.listview;
-import android.widget.listview.ListItemFocusablesClose;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
+import androidx.test.filters.MediumTest;
+
public class ListRetainsFocusAcrossLayoutsTest extends ActivityInstrumentationTestCase<ListItemFocusablesClose> {
public ListRetainsFocusAcrossLayoutsTest() {
diff --git a/core/tests/coretests/src/android/widget/listview/ListScrollListenerTest.java b/core/tests/coretests/src/android/widget/listview/ListScrollListenerTest.java
index 7b29a66..28addd6 100644
--- a/core/tests/coretests/src/android/widget/listview/ListScrollListenerTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListScrollListenerTest.java
@@ -19,12 +19,13 @@
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.AbsListView;
import android.widget.ListView;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
public class ListScrollListenerTest extends ActivityInstrumentationTestCase<ListScrollListener> implements
AbsListView.OnScrollListener {
private ListScrollListener mActivity;
diff --git a/core/tests/coretests/src/android/widget/listview/ListSetSelection.java b/core/tests/coretests/src/android/widget/listview/ListSetSelection.java
index 6c2e264..af8e899 100644
--- a/core/tests/coretests/src/android/widget/listview/ListSetSelection.java
+++ b/core/tests/coretests/src/android/widget/listview/ListSetSelection.java
@@ -16,12 +16,12 @@
package android.widget.listview;
+import android.os.Bundle;
import android.util.ListScenario;
import android.view.KeyEvent;
import android.view.View;
-import android.os.Bundle;
-import android.widget.LinearLayout;
import android.widget.Button;
+import android.widget.LinearLayout;
/**
* List of 1,000 items used to test calls to setSelection() in touch mode.
diff --git a/core/tests/coretests/src/android/widget/listview/ListSetSelectionTest.java b/core/tests/coretests/src/android/widget/listview/ListSetSelectionTest.java
index 4cef164..2caca13 100644
--- a/core/tests/coretests/src/android/widget/listview/ListSetSelectionTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListSetSelectionTest.java
@@ -17,10 +17,11 @@
package android.widget.listview;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.ListView;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.MediumTest;
+
/**
* Basic tests of setting & clearing the selection
*/
diff --git a/core/tests/coretests/src/android/widget/listview/ListSimple.java b/core/tests/coretests/src/android/widget/listview/ListSimple.java
index 6accae1..f53638e 100644
--- a/core/tests/coretests/src/android/widget/listview/ListSimple.java
+++ b/core/tests/coretests/src/android/widget/listview/ListSimple.java
@@ -16,11 +16,10 @@
package android.widget.listview;
+import android.os.Bundle;
import android.util.ListScenario;
-
import android.view.View;
import android.view.ViewGroup;
-import android.os.Bundle;
import android.widget.TextView;
public class ListSimple extends ListScenario {
diff --git a/core/tests/coretests/src/android/widget/listview/ListTakeFocusFromSide.java b/core/tests/coretests/src/android/widget/listview/ListTakeFocusFromSide.java
index 95f09f6..c4e9fe9 100644
--- a/core/tests/coretests/src/android/widget/listview/ListTakeFocusFromSide.java
+++ b/core/tests/coretests/src/android/widget/listview/ListTakeFocusFromSide.java
@@ -16,17 +16,17 @@
package android.widget.listview;
-import com.android.frameworks.coretests.R;
-
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
+import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.LayoutInflater;
import android.widget.BaseAdapter;
import android.widget.TextView;
+import com.android.frameworks.coretests.R;
+
/**
* Exercises moving focus into the list from the side
*/
diff --git a/core/tests/coretests/src/android/widget/listview/ListThrasher.java b/core/tests/coretests/src/android/widget/listview/ListThrasher.java
index 0237a95..d82f68d 100644
--- a/core/tests/coretests/src/android/widget/listview/ListThrasher.java
+++ b/core/tests/coretests/src/android/widget/listview/ListThrasher.java
@@ -16,19 +16,19 @@
package android.widget.listview;
-import com.android.frameworks.coretests.R;
-
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
+import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.LayoutInflater;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.TextView;
+import com.android.frameworks.coretests.R;
+
import java.util.Random;
/**
diff --git a/core/tests/coretests/src/android/widget/listview/ListTopGravity.java b/core/tests/coretests/src/android/widget/listview/ListTopGravity.java
index 986cc57..31339e9 100644
--- a/core/tests/coretests/src/android/widget/listview/ListTopGravity.java
+++ b/core/tests/coretests/src/android/widget/listview/ListTopGravity.java
@@ -16,8 +16,6 @@
package android.widget.listview;
-import android.view.Gravity;
-
import android.util.ListScenario;
/**
diff --git a/core/tests/coretests/src/android/widget/listview/ListUnspecifiedMeasure.java b/core/tests/coretests/src/android/widget/listview/ListUnspecifiedMeasure.java
index 199d069..0fc87ea 100644
--- a/core/tests/coretests/src/android/widget/listview/ListUnspecifiedMeasure.java
+++ b/core/tests/coretests/src/android/widget/listview/ListUnspecifiedMeasure.java
@@ -16,13 +16,14 @@
package android.widget.listview;
-import com.android.frameworks.coretests.R;
-
-import android.test.ActivityInstrumentationTestCase;
import android.app.Activity;
-import android.test.suitebuilder.annotation.MediumTest;
+import android.test.ActivityInstrumentationTestCase;
import android.widget.ListView;
+import androidx.test.filters.MediumTest;
+
+import com.android.frameworks.coretests.R;
+
public class ListUnspecifiedMeasure<T extends Activity> extends ActivityInstrumentationTestCase<T> {
private T mActivity;
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/ListViewHeightTest.java b/core/tests/coretests/src/android/widget/listview/ListViewHeightTest.java
index 5ab2757..63941f1 100644
--- a/core/tests/coretests/src/android/widget/listview/ListViewHeightTest.java
+++ b/core/tests/coretests/src/android/widget/listview/ListViewHeightTest.java
@@ -18,12 +18,12 @@
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.Button;
import android.widget.ListView;
+import androidx.test.filters.MediumTest;
+
import com.android.frameworks.coretests.R;
-import android.widget.listview.ListViewHeight;
public class ListViewHeightTest extends ActivityInstrumentationTestCase<ListViewHeight> {
private ListViewHeight mActivity;
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithDisappearingItemBug.java b/core/tests/coretests/src/android/widget/listview/ListWithDisappearingItemBug.java
index 348ea1b..10ba8b7 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithDisappearingItemBug.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithDisappearingItemBug.java
@@ -16,8 +16,6 @@
package android.widget.listview;
-import com.android.frameworks.coretests.R;
-
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
@@ -32,6 +30,8 @@
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
+import com.android.frameworks.coretests.R;
+
/**
* See 1080989. You need some contacts for this adapter.
*/
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithEmptyView.java b/core/tests/coretests/src/android/widget/listview/ListWithEmptyView.java
index 74dd06c..52273fd 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithEmptyView.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithEmptyView.java
@@ -16,8 +16,6 @@
package android.widget.listview;
-import com.android.frameworks.coretests.R;
-
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
@@ -26,6 +24,8 @@
import android.view.View;
import android.widget.ArrayAdapter;
+import com.android.frameworks.coretests.R;
+
/**
* Tests using an empty view with a list */
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithHeaders.java b/core/tests/coretests/src/android/widget/listview/ListWithHeaders.java
index aea091a..6030582 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithHeaders.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithHeaders.java
@@ -16,9 +16,8 @@
package android.widget.listview;
-import android.util.ListScenario;
-
import android.os.Bundle;
+import android.util.ListScenario;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithOnItemSelectedAction.java b/core/tests/coretests/src/android/widget/listview/ListWithOnItemSelectedAction.java
index 26e1d5d..13e770c 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithOnItemSelectedAction.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithOnItemSelectedAction.java
@@ -16,8 +16,8 @@
package android.widget.listview;
-import android.widget.TextView;
import android.util.ListScenario;
+import android.widget.TextView;
/**
* The header text view echos the value of the selected item by using (indirectly)
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListInterleaveFocusablesTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListInterleaveFocusablesTest.java
index ec8ab7e..22c28c2 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListInterleaveFocusablesTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListInterleaveFocusablesTest.java
@@ -17,13 +17,14 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
import android.util.ListUtil;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ListView;
import android.widget.listview.ListInterleaveFocusables;
+import androidx.test.filters.MediumTest;
+
public class ListInterleaveFocusablesTest extends ActivityInstrumentationTestCase2<ListInterleaveFocusables> {
private ListView mListView;
private ListUtil mListUtil;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusableAboveUnfocusableTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusableAboveUnfocusableTest.java
index 82f48801..c645b7c 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusableAboveUnfocusableTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusableAboveUnfocusableTest.java
@@ -17,11 +17,12 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.widget.ListView;
import android.view.KeyEvent;
+import android.widget.ListView;
import android.widget.listview.ListItemFocusableAboveUnfocusable;
+import androidx.test.filters.MediumTest;
+
public class ListItemFocusableAboveUnfocusableTest extends ActivityInstrumentationTestCase<ListItemFocusableAboveUnfocusable> {
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusablesCloseTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusablesCloseTest.java
index 3b30ebe..c7525b3 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusablesCloseTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusablesCloseTest.java
@@ -17,12 +17,13 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.listview.ListItemFocusablesClose;
+import androidx.test.filters.MediumTest;
+
public class ListItemFocusablesCloseTest extends ActivityInstrumentationTestCase<ListItemFocusablesClose> {
private ListView mListView;
private int mListTop;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusablesFarApartTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusablesFarApartTest.java
index 475930d..4bb2206 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusablesFarApartTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemFocusablesFarApartTest.java
@@ -17,7 +17,6 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
@@ -25,6 +24,8 @@
import android.widget.ListView;
import android.widget.listview.ListItemFocusablesFarApart;
+import androidx.test.filters.MediumTest;
+
public class ListItemFocusablesFarApartTest extends ActivityInstrumentationTestCase<ListItemFocusablesFarApart> {
private ListView mListView;
private int mListTop;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemsExpandOnSelectionTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemsExpandOnSelectionTest.java
index 91a1eba..7605291 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemsExpandOnSelectionTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListItemsExpandOnSelectionTest.java
@@ -17,13 +17,14 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.widget.ListView;
import android.view.KeyEvent;
+import android.widget.ListView;
import android.widget.listview.ListItemsExpandOnSelection;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
public class ListItemsExpandOnSelectionTest extends ActivityInstrumentationTestCase<ListItemsExpandOnSelection> {
private ListView mListView;
private int mListTop;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListLastItemPartiallyVisibleTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListLastItemPartiallyVisibleTest.java
index 5bc121a..fdae483 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListLastItemPartiallyVisibleTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListLastItemPartiallyVisibleTest.java
@@ -17,12 +17,13 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.widget.ListView;
-import android.view.View;
import android.view.KeyEvent;
+import android.view.View;
+import android.widget.ListView;
import android.widget.listview.ListLastItemPartiallyVisible;
+import androidx.test.filters.MediumTest;
+
public class ListLastItemPartiallyVisibleTest extends ActivityInstrumentationTestCase<ListLastItemPartiallyVisible> {
private ListView mListView;
private int mListBottom;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfItemsShorterThanScreenTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfItemsShorterThanScreenTest.java
index bda71d0..d44b130 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfItemsShorterThanScreenTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfItemsShorterThanScreenTest.java
@@ -17,14 +17,15 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.listview.ListOfItemsShorterThanScreen;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
public class ListOfItemsShorterThanScreenTest
extends ActivityInstrumentationTestCase<ListOfItemsShorterThanScreen> {
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfItemsTallerThanScreenTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfItemsTallerThanScreenTest.java
index 2135445..1decdad 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfItemsTallerThanScreenTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfItemsTallerThanScreenTest.java
@@ -17,13 +17,14 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ListView;
import android.widget.listview.ListOfItemsTallerThanScreen;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
public class ListOfItemsTallerThanScreenTest
extends ActivityInstrumentationTestCase2<ListOfItemsTallerThanScreen> {
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfShortShortTallShortShortTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfShortShortTallShortShortTest.java
index ef70b5a..67808f1 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfShortShortTallShortShortTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfShortShortTallShortShortTest.java
@@ -17,13 +17,14 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.util.ListUtil;
import android.view.KeyEvent;
import android.widget.ListView;
import android.widget.listview.ListOfShortShortTallShortShort;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
public class ListOfShortShortTallShortShortTest extends ActivityInstrumentationTestCase2<ListOfShortShortTallShortShort> {
private ListView mListView;
private ListUtil mListUtil;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfShortTallShortTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfShortTallShortTest.java
index c958591..f9aa6dc 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfShortTallShortTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfShortTallShortTest.java
@@ -17,11 +17,12 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.widget.ListView;
import android.view.KeyEvent;
+import android.widget.ListView;
import android.widget.listview.ListOfShortTallShort;
+import androidx.test.filters.MediumTest;
+
public class ListOfShortTallShortTest extends ActivityInstrumentationTestCase<ListOfShortTallShort> {
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfThinItemsTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfThinItemsTest.java
index c191d71..6bd1cb5 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfThinItemsTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListOfThinItemsTest.java
@@ -17,14 +17,15 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ListView;
import android.widget.listview.ListOfThinItems;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
public class ListOfThinItemsTest extends ActivityInstrumentationTestCase<ListOfThinItems> {
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithFirstScreenUnSelectableTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithFirstScreenUnSelectableTest.java
index 9a8e634..60bc115 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithFirstScreenUnSelectableTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithFirstScreenUnSelectableTest.java
@@ -16,12 +16,13 @@
package android.widget.listview.arrowscroll;
-import android.support.test.filters.LargeTest;
import android.test.ActivityInstrumentationTestCase2;
import android.view.KeyEvent;
+import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.listview.ListWithFirstScreenUnSelectable;
-import android.widget.AdapterView;
+
+import androidx.test.filters.LargeTest;
@LargeTest
public class ListWithFirstScreenUnSelectableTest
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithNoFadingEdgeTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithNoFadingEdgeTest.java
index 56ca009..a60054e2 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithNoFadingEdgeTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithNoFadingEdgeTest.java
@@ -17,12 +17,13 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.ListView;
import android.widget.listview.ListWithNoFadingEdge;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
public class ListWithNoFadingEdgeTest extends ActivityInstrumentationTestCase<ListWithNoFadingEdge> {
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithOffScreenNextSelectableTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithOffScreenNextSelectableTest.java
index cf319d1..80e70c6 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithOffScreenNextSelectableTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithOffScreenNextSelectableTest.java
@@ -17,14 +17,15 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.listview.ListWithOffScreenNextSelectable;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
@Suppress // Failing.
public class ListWithOffScreenNextSelectableTest
extends ActivityInstrumentationTestCase<ListWithOffScreenNextSelectable> {
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithOnItemSelectedActionTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithOnItemSelectedActionTest.java
index feea9b2..819b739 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithOnItemSelectedActionTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithOnItemSelectedActionTest.java
@@ -17,12 +17,13 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
+import android.view.KeyEvent;
import android.widget.ListView;
import android.widget.TextView;
-import android.view.KeyEvent;
import android.widget.listview.ListWithOnItemSelectedAction;
+import androidx.test.filters.MediumTest;
+
public class ListWithOnItemSelectedActionTest extends ActivityInstrumentationTestCase<ListWithOnItemSelectedAction> {
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithScreenOfNoSelectablesTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithScreenOfNoSelectablesTest.java
index 211c8c8..9bbdc2a 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithScreenOfNoSelectablesTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithScreenOfNoSelectablesTest.java
@@ -17,13 +17,14 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ListView;
import android.widget.listview.ListWithScreenOfNoSelectables;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
public class ListWithScreenOfNoSelectablesTest extends ActivityInstrumentationTestCase2<ListWithScreenOfNoSelectables> {
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithSeparatorsTest.java b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithSeparatorsTest.java
index 42058f03..21fa51d 100644
--- a/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithSeparatorsTest.java
+++ b/core/tests/coretests/src/android/widget/listview/arrowscroll/ListWithSeparatorsTest.java
@@ -17,11 +17,12 @@
package android.widget.listview.arrowscroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.widget.ListView;
import android.view.KeyEvent;
+import android.widget.ListView;
import android.widget.listview.ListWithSeparators;
+import androidx.test.filters.MediumTest;
+
public class ListWithSeparatorsTest extends ActivityInstrumentationTestCase<ListWithSeparators> {
private ListWithSeparators mActivity;
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/focus/AdjacentListsWithAdjacentISVsInsideTest.java b/core/tests/coretests/src/android/widget/listview/focus/AdjacentListsWithAdjacentISVsInsideTest.java
index 6a7466b..e9baabf 100644
--- a/core/tests/coretests/src/android/widget/listview/focus/AdjacentListsWithAdjacentISVsInsideTest.java
+++ b/core/tests/coretests/src/android/widget/listview/focus/AdjacentListsWithAdjacentISVsInsideTest.java
@@ -16,14 +16,14 @@
package android.widget.listview.focus;
-import android.test.suitebuilder.annotation.Suppress;
-import android.widget.listview.AdjacentListsWithAdjacentISVsInside;
-import android.util.InternalSelectionView;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
+import android.util.InternalSelectionView;
import android.view.KeyEvent;
import android.widget.ListView;
+import android.widget.listview.AdjacentListsWithAdjacentISVsInside;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
public class AdjacentListsWithAdjacentISVsInsideTest extends ActivityInstrumentationTestCase<AdjacentListsWithAdjacentISVsInside> {
diff --git a/core/tests/coretests/src/android/widget/listview/focus/ListButtonsDiagonalAcrossItemsTest.java b/core/tests/coretests/src/android/widget/listview/focus/ListButtonsDiagonalAcrossItemsTest.java
index 5540d65..3fbdacc 100644
--- a/core/tests/coretests/src/android/widget/listview/focus/ListButtonsDiagonalAcrossItemsTest.java
+++ b/core/tests/coretests/src/android/widget/listview/focus/ListButtonsDiagonalAcrossItemsTest.java
@@ -16,15 +16,15 @@
package android.widget.listview.focus;
-import android.widget.listview.ListButtonsDiagonalAcrossItems;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.FocusFinder;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
+import android.widget.listview.ListButtonsDiagonalAcrossItems;
+
+import androidx.test.filters.MediumTest;
/**
* Test that ListView will override default behavior of focus searching to
diff --git a/core/tests/coretests/src/android/widget/listview/focus/ListHorizontalFocusWithinItemWinsTest.java b/core/tests/coretests/src/android/widget/listview/focus/ListHorizontalFocusWithinItemWinsTest.java
index edc60b5..5448952 100644
--- a/core/tests/coretests/src/android/widget/listview/focus/ListHorizontalFocusWithinItemWinsTest.java
+++ b/core/tests/coretests/src/android/widget/listview/focus/ListHorizontalFocusWithinItemWinsTest.java
@@ -17,12 +17,13 @@
package android.widget.listview.focus;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.ListView;
import android.widget.listview.ListHorizontalFocusWithinItemWins;
+import androidx.test.filters.MediumTest;
+
public class ListHorizontalFocusWithinItemWinsTest extends ActivityInstrumentationTestCase<ListHorizontalFocusWithinItemWins> {
private ListView mListView;
diff --git a/core/tests/coretests/src/android/widget/listview/focus/ListWithEditTextHeaderTest.java b/core/tests/coretests/src/android/widget/listview/focus/ListWithEditTextHeaderTest.java
index b449b61..0b17aaf 100644
--- a/core/tests/coretests/src/android/widget/listview/focus/ListWithEditTextHeaderTest.java
+++ b/core/tests/coretests/src/android/widget/listview/focus/ListWithEditTextHeaderTest.java
@@ -17,17 +17,18 @@
package android.widget.listview.focus;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.FlakyTest;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ListView;
import android.widget.listview.ListWithEditTextHeader;
+import androidx.test.filters.FlakyTest;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
public class ListWithEditTextHeaderTest extends ActivityInstrumentationTestCase2<ListWithEditTextHeader> {
private ListView mListView;
@@ -49,7 +50,7 @@
assertTrue("header does not have focus", mListView.getChildAt(0).isFocused());
}
- @FlakyTest(tolerance=2)
+ @FlakyTest
@LargeTest
public void testClickingHeaderKeepsFocus() {
TouchUtils.clickView(this, mListView.getChildAt(0));
diff --git a/core/tests/coretests/src/android/widget/listview/touch/ListGetSelectedViewTest.java b/core/tests/coretests/src/android/widget/listview/touch/ListGetSelectedViewTest.java
index 28f899e..262d0f4 100644
--- a/core/tests/coretests/src/android/widget/listview/touch/ListGetSelectedViewTest.java
+++ b/core/tests/coretests/src/android/widget/listview/touch/ListGetSelectedViewTest.java
@@ -17,14 +17,14 @@
package android.widget.listview.touch;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
-import android.widget.ListView;
import android.view.View;
-
+import android.widget.ListView;
import android.widget.listview.ListGetSelectedView;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
/**
* This test is made to check that getSelectedView() will return
* null in touch mode.
diff --git a/core/tests/coretests/src/android/widget/listview/touch/ListOfTouchablesTest.java b/core/tests/coretests/src/android/widget/listview/touch/ListOfTouchablesTest.java
index ffa9a5e..48e8c5e 100644
--- a/core/tests/coretests/src/android/widget/listview/touch/ListOfTouchablesTest.java
+++ b/core/tests/coretests/src/android/widget/listview/touch/ListOfTouchablesTest.java
@@ -17,15 +17,14 @@
package android.widget.listview.touch;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
+import android.test.TouchUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.ListView;
-
import android.widget.listview.ListOfTouchables;
-import android.test.TouchUtils;
+
+import androidx.test.filters.MediumTest;
/**
* Touch tests for a list where all of the items fit on the screen.
diff --git a/core/tests/coretests/src/android/widget/listview/touch/ListSetSelectionTest.java b/core/tests/coretests/src/android/widget/listview/touch/ListSetSelectionTest.java
index aed513a..716683a 100644
--- a/core/tests/coretests/src/android/widget/listview/touch/ListSetSelectionTest.java
+++ b/core/tests/coretests/src/android/widget/listview/touch/ListSetSelectionTest.java
@@ -17,15 +17,15 @@
package android.widget.listview.touch;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.View;
import android.widget.ListView;
-
import android.widget.listview.ListSimple;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
/**
* Tests setting the selection in touch mode
*/
diff --git a/core/tests/coretests/src/android/widget/listview/touch/ListTouchBottomGravityManyTest.java b/core/tests/coretests/src/android/widget/listview/touch/ListTouchBottomGravityManyTest.java
index 7daf64e..6a1f076 100644
--- a/core/tests/coretests/src/android/widget/listview/touch/ListTouchBottomGravityManyTest.java
+++ b/core/tests/coretests/src/android/widget/listview/touch/ListTouchBottomGravityManyTest.java
@@ -17,16 +17,16 @@
package android.widget.listview.touch;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.ListView;
-
import android.widget.listview.ListBottomGravityMany;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
/**
* Touch tests for a list where all of the items do not fit on the screen, and the list
* stacks from the bottom.
diff --git a/core/tests/coretests/src/android/widget/listview/touch/ListTouchBottomGravityTest.java b/core/tests/coretests/src/android/widget/listview/touch/ListTouchBottomGravityTest.java
index 4086cf0..89498d66 100644
--- a/core/tests/coretests/src/android/widget/listview/touch/ListTouchBottomGravityTest.java
+++ b/core/tests/coretests/src/android/widget/listview/touch/ListTouchBottomGravityTest.java
@@ -17,13 +17,13 @@
package android.widget.listview.touch;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
import android.view.View;
import android.widget.ListView;
-
import android.widget.listview.ListBottomGravity;
+import androidx.test.filters.MediumTest;
+
/**
* Touch tests for a list where all of the items fit on the screen, and the list
* stacks from the bottom.
diff --git a/core/tests/coretests/src/android/widget/listview/touch/ListTouchManyTest.java b/core/tests/coretests/src/android/widget/listview/touch/ListTouchManyTest.java
index 30d56ca..c7f2371 100644
--- a/core/tests/coretests/src/android/widget/listview/touch/ListTouchManyTest.java
+++ b/core/tests/coretests/src/android/widget/listview/touch/ListTouchManyTest.java
@@ -17,16 +17,16 @@
package android.widget.listview.touch;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.ListView;
-
import android.widget.listview.ListTopGravityMany;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
/**
* Touch tests for a list where all of the items do not fit on the screen.
*/
diff --git a/core/tests/coretests/src/android/widget/listview/touch/ListTouchTest.java b/core/tests/coretests/src/android/widget/listview/touch/ListTouchTest.java
index 5b064b3..8a557ab 100644
--- a/core/tests/coretests/src/android/widget/listview/touch/ListTouchTest.java
+++ b/core/tests/coretests/src/android/widget/listview/touch/ListTouchTest.java
@@ -17,13 +17,13 @@
package android.widget.listview.touch;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.TouchUtils;
import android.view.View;
import android.widget.ListView;
-
import android.widget.listview.ListTopGravity;
+import androidx.test.filters.MediumTest;
+
/**
* Touch tests for a list where all of the items fit on the screen.
*/
diff --git a/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionView.java b/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionView.java
index a7f5c05..a30985b 100644
--- a/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionView.java
+++ b/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionView.java
@@ -18,7 +18,6 @@
import android.util.InternalSelectionView;
import android.util.ScrollViewScenario;
-
import android.widget.Button;
/**
diff --git a/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionViewTest.java b/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionViewTest.java
index 8123228..825aa1a 100644
--- a/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionViewTest.java
+++ b/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionViewTest.java
@@ -16,14 +16,13 @@
package android.widget.scroll;
-import android.test.suitebuilder.annotation.Suppress;
-import android.widget.scroll.ButtonAboveTallInternalSelectionView;
-import android.util.InternalSelectionView;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
+import android.util.InternalSelectionView;
import android.view.KeyEvent;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
@Suppress // Failing.
public class ButtonAboveTallInternalSelectionViewTest extends
ActivityInstrumentationTestCase<ButtonAboveTallInternalSelectionView> {
diff --git a/core/tests/coretests/src/android/widget/scroll/ButtonsWithTallTextViewInBetween.java b/core/tests/coretests/src/android/widget/scroll/ButtonsWithTallTextViewInBetween.java
index 3d5f86d..47d36dd 100644
--- a/core/tests/coretests/src/android/widget/scroll/ButtonsWithTallTextViewInBetween.java
+++ b/core/tests/coretests/src/android/widget/scroll/ButtonsWithTallTextViewInBetween.java
@@ -17,7 +17,6 @@
package android.widget.scroll;
import android.util.ScrollViewScenario;
-
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
diff --git a/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisible.java b/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisible.java
index afc275f..dba07a0 100644
--- a/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisible.java
+++ b/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisible.java
@@ -16,15 +16,15 @@
package android.widget.scroll;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
-import android.os.Bundle;
import android.graphics.Rect;
+import android.os.Bundle;
import android.view.View;
import android.widget.ScrollView;
import android.widget.TextView;
+import com.android.frameworks.coretests.R;
+
/**
* A screen with some scenarios that exercise {@link ScrollView}'s implementation
* of {@link android.view.ViewGroup#requestChildRectangleOnScreen}:
diff --git a/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleTest.java b/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleTest.java
index f8abdb2..7c3df91 100644
--- a/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleTest.java
+++ b/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleTest.java
@@ -16,19 +16,19 @@
package android.widget.scroll;
-import android.test.suitebuilder.annotation.Suppress;
-import android.widget.scroll.RequestRectangleVisible;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.test.ViewAsserts;
+import android.view.KeyEvent;
+import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
-import android.view.View;
-import android.view.KeyEvent;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
+
+import com.android.frameworks.coretests.R;
/**
* {@link RequestRectangleVisible} is set up to exercise the cases of moving a
diff --git a/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleWithInternalScroll.java b/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleWithInternalScroll.java
index 731b25a..105686a 100644
--- a/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleWithInternalScroll.java
+++ b/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleWithInternalScroll.java
@@ -16,15 +16,14 @@
package android.widget.scroll;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
-import android.os.Bundle;
-import android.widget.EditText;
-import android.widget.TextView;
-import android.widget.Button;
-import android.view.View;
import android.graphics.Rect;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.android.frameworks.coretests.R;
public class RequestRectangleVisibleWithInternalScroll extends Activity {
diff --git a/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleWithInternalScrollTest.java b/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleWithInternalScrollTest.java
index 5e9b520..1a221ff 100644
--- a/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleWithInternalScrollTest.java
+++ b/core/tests/coretests/src/android/widget/scroll/RequestRectangleVisibleWithInternalScrollTest.java
@@ -16,16 +16,17 @@
package android.widget.scroll;
-import com.android.frameworks.coretests.R;
-
import android.test.ActivityInstrumentationTestCase;
import android.test.ViewAsserts;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
+import androidx.test.filters.Suppress;
+
+import com.android.frameworks.coretests.R;
+
/**
* This is suppressed because {@link TextView#scrollBy} isn't working.
*/
diff --git a/core/tests/coretests/src/android/widget/scroll/ScrollViewButtonsAndLabels.java b/core/tests/coretests/src/android/widget/scroll/ScrollViewButtonsAndLabels.java
index 027ea0f..92a3152 100644
--- a/core/tests/coretests/src/android/widget/scroll/ScrollViewButtonsAndLabels.java
+++ b/core/tests/coretests/src/android/widget/scroll/ScrollViewButtonsAndLabels.java
@@ -16,15 +16,14 @@
package android.widget.scroll;
-import com.android.frameworks.coretests.R;
-
import android.app.Activity;
import android.os.Bundle;
+import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
-import android.widget.Button;
+import com.android.frameworks.coretests.R;
/**
* Basic scroll view example
diff --git a/core/tests/coretests/src/android/widget/scroll/ScrollViewButtonsAndLabelsTest.java b/core/tests/coretests/src/android/widget/scroll/ScrollViewButtonsAndLabelsTest.java
index 3fd17ee..8d71f84 100644
--- a/core/tests/coretests/src/android/widget/scroll/ScrollViewButtonsAndLabelsTest.java
+++ b/core/tests/coretests/src/android/widget/scroll/ScrollViewButtonsAndLabelsTest.java
@@ -17,14 +17,14 @@
package android.widget.scroll;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
public class ScrollViewButtonsAndLabelsTest
extends ActivityInstrumentationTestCase<ScrollViewButtonsAndLabels> {
diff --git a/core/tests/coretests/src/android/widget/scroll/ShortButtons.java b/core/tests/coretests/src/android/widget/scroll/ShortButtons.java
index 3a0f29a..90ede7d 100644
--- a/core/tests/coretests/src/android/widget/scroll/ShortButtons.java
+++ b/core/tests/coretests/src/android/widget/scroll/ShortButtons.java
@@ -17,7 +17,6 @@
package android.widget.scroll;
import android.util.ScrollViewScenario;
-
import android.widget.Button;
import android.widget.LinearLayout;
diff --git a/core/tests/coretests/src/android/widget/scroll/arrowscroll/ButtonsWithTallTextViewInBetweenTest.java b/core/tests/coretests/src/android/widget/scroll/arrowscroll/ButtonsWithTallTextViewInBetweenTest.java
index 56d7ed2..04f5ac8 100644
--- a/core/tests/coretests/src/android/widget/scroll/arrowscroll/ButtonsWithTallTextViewInBetweenTest.java
+++ b/core/tests/coretests/src/android/widget/scroll/arrowscroll/ButtonsWithTallTextViewInBetweenTest.java
@@ -16,16 +16,16 @@
package android.widget.scroll.arrowscroll;
-import android.widget.scroll.ButtonsWithTallTextViewInBetween;
-
import android.graphics.Rect;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
+import android.widget.scroll.ButtonsWithTallTextViewInBetween;
+
+import androidx.test.filters.MediumTest;
public class ButtonsWithTallTextViewInBetweenTest
extends ActivityInstrumentationTestCase<ButtonsWithTallTextViewInBetween> {
diff --git a/core/tests/coretests/src/android/widget/scroll/arrowscroll/MultiPageTextWithPaddingTest.java b/core/tests/coretests/src/android/widget/scroll/arrowscroll/MultiPageTextWithPaddingTest.java
index 6ce4c15..2f45098 100644
--- a/core/tests/coretests/src/android/widget/scroll/arrowscroll/MultiPageTextWithPaddingTest.java
+++ b/core/tests/coretests/src/android/widget/scroll/arrowscroll/MultiPageTextWithPaddingTest.java
@@ -16,14 +16,14 @@
package android.widget.scroll.arrowscroll;
-import android.test.suitebuilder.annotation.Suppress;
-import android.widget.scroll.arrowscroll.MultiPageTextWithPadding;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
-import android.widget.TextView;
import android.widget.ScrollView;
+import android.widget.TextView;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.Suppress;
@Suppress // Flaky
public class MultiPageTextWithPaddingTest extends
diff --git a/core/tests/coretests/src/android/widget/scroll/arrowscroll/ShortButtonsTest.java b/core/tests/coretests/src/android/widget/scroll/arrowscroll/ShortButtonsTest.java
index 267d8ee..a2928cb 100644
--- a/core/tests/coretests/src/android/widget/scroll/arrowscroll/ShortButtonsTest.java
+++ b/core/tests/coretests/src/android/widget/scroll/arrowscroll/ShortButtonsTest.java
@@ -16,15 +16,15 @@
package android.widget.scroll.arrowscroll;
-import android.widget.scroll.ShortButtons;
-
import android.graphics.Rect;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.ScrollView;
+import android.widget.scroll.ShortButtons;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
public class ShortButtonsTest extends ActivityInstrumentationTestCase<ShortButtons> {
diff --git a/core/tests/coretests/src/android/widget/scroll/arrowscroll/TallTextAboveButtonTest.java b/core/tests/coretests/src/android/widget/scroll/arrowscroll/TallTextAboveButtonTest.java
index 5351839..0681081 100644
--- a/core/tests/coretests/src/android/widget/scroll/arrowscroll/TallTextAboveButtonTest.java
+++ b/core/tests/coretests/src/android/widget/scroll/arrowscroll/TallTextAboveButtonTest.java
@@ -16,13 +16,13 @@
package android.widget.scroll.arrowscroll;
-import android.widget.scroll.TallTextAboveButton;
-
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.ScrollView;
import android.widget.TextView;
+import android.widget.scroll.TallTextAboveButton;
+
+import androidx.test.filters.MediumTest;
public class TallTextAboveButtonTest extends ActivityInstrumentationTestCase<TallTextAboveButton> {
private ScrollView mScrollView;
diff --git a/core/tests/coretests/src/android/widget/touchmode/ChangeTouchModeTest.java b/core/tests/coretests/src/android/widget/touchmode/ChangeTouchModeTest.java
index 449c95c..aa20c9b 100644
--- a/core/tests/coretests/src/android/widget/touchmode/ChangeTouchModeTest.java
+++ b/core/tests/coretests/src/android/widget/touchmode/ChangeTouchModeTest.java
@@ -16,16 +16,17 @@
package android.widget.touchmode;
-import android.widget.layout.linear.LLOfButtons1;
-import android.widget.layout.linear.LLOfButtons2;
import static android.util.TouchModeFlexibleAsserts.assertInTouchModeAfterClick;
-import static android.util.TouchModeFlexibleAsserts.assertNotInTouchModeAfterKey;
import static android.util.TouchModeFlexibleAsserts.assertInTouchModeAfterTap;
+import static android.util.TouchModeFlexibleAsserts.assertNotInTouchModeAfterKey;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
+import android.widget.layout.linear.LLOfButtons1;
+import android.widget.layout.linear.LLOfButtons2;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
/**
* Tests that the touch mode changes from various events, and that the state
diff --git a/core/tests/coretests/src/android/widget/touchmode/FocusableInTouchModeClickTest.java b/core/tests/coretests/src/android/widget/touchmode/FocusableInTouchModeClickTest.java
index 691b25a..97c982f 100644
--- a/core/tests/coretests/src/android/widget/touchmode/FocusableInTouchModeClickTest.java
+++ b/core/tests/coretests/src/android/widget/touchmode/FocusableInTouchModeClickTest.java
@@ -16,12 +16,12 @@
package android.widget.touchmode;
-import android.widget.layout.linear.LLOfTwoFocusableInTouchMode;
-
import android.test.ActivityInstrumentationTestCase2;
import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
+import android.widget.layout.linear.LLOfTwoFocusableInTouchMode;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
public class FocusableInTouchModeClickTest extends ActivityInstrumentationTestCase2<LLOfTwoFocusableInTouchMode> {
diff --git a/core/tests/coretests/src/android/widget/touchmode/StartInTouchWithViewInFocusTest.java b/core/tests/coretests/src/android/widget/touchmode/StartInTouchWithViewInFocusTest.java
index 5339188..88aa9ca 100644
--- a/core/tests/coretests/src/android/widget/touchmode/StartInTouchWithViewInFocusTest.java
+++ b/core/tests/coretests/src/android/widget/touchmode/StartInTouchWithViewInFocusTest.java
@@ -16,14 +16,15 @@
package android.widget.touchmode;
-import android.widget.layout.linear.LLEditTextThenButton;
import static android.util.TouchModeFlexibleAsserts.assertNotInTouchModeAfterKey;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.EditText;
+import android.widget.layout.linear.LLEditTextThenButton;
+
+import androidx.test.filters.MediumTest;
public class StartInTouchWithViewInFocusTest extends
ActivityInstrumentationTestCase2<LLEditTextThenButton> {
diff --git a/core/tests/coretests/src/android/widget/touchmode/TouchModeFocusChangeTest.java b/core/tests/coretests/src/android/widget/touchmode/TouchModeFocusChangeTest.java
index 5a6110c..f192f68 100644
--- a/core/tests/coretests/src/android/widget/touchmode/TouchModeFocusChangeTest.java
+++ b/core/tests/coretests/src/android/widget/touchmode/TouchModeFocusChangeTest.java
@@ -21,11 +21,11 @@
import static android.util.TouchModeFlexibleAsserts.assertNotInTouchModeAfterKey;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.layout.linear.LLOfButtons1;
+import androidx.test.filters.MediumTest;
/**
* Make sure focus isn't kept by buttons when entering touch mode.
diff --git a/core/tests/coretests/src/android/widget/touchmode/TouchModeFocusableTest.java b/core/tests/coretests/src/android/widget/touchmode/TouchModeFocusableTest.java
index 3ddeef0..87f33a4c 100644
--- a/core/tests/coretests/src/android/widget/touchmode/TouchModeFocusableTest.java
+++ b/core/tests/coretests/src/android/widget/touchmode/TouchModeFocusableTest.java
@@ -20,12 +20,13 @@
import static android.util.TouchModeFlexibleAsserts.assertInTouchModeAfterTap;
import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
import android.widget.Button;
import android.widget.EditText;
import android.widget.layout.linear.LLEditTextThenButton;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
/**
* Some views, like edit texts, can keep and gain focus even when in touch mode.
*/
diff --git a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java
index a302657..aadfcbc 100644
--- a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java
+++ b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java
@@ -57,7 +57,6 @@
import android.provider.Settings;
import android.speech.tts.TextToSpeech;
import android.speech.tts.Voice;
-import android.support.test.runner.AndroidJUnit4;
import android.test.mock.MockContentResolver;
import android.text.TextUtils;
import android.view.Window;
@@ -66,6 +65,8 @@
import android.view.accessibility.IAccessibilityManager;
import android.widget.Toast;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.R;
import com.android.internal.accessibility.AccessibilityShortcutController.FrameworkObjectProvider;
import com.android.internal.util.test.FakeSettingsProvider;
diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
index 1859378..aaa624e 100644
--- a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
@@ -16,6 +16,30 @@
package com.android.internal.app;
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+
+import static com.android.internal.app.ChooserWrapperActivity.sOverrides;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.usage.UsageStatsManager;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.R;
import com.android.internal.app.ResolverActivity.ResolvedComponentInfo;
@@ -25,32 +49,8 @@
import org.junit.runner.RunWith;
import org.mockito.Mockito;
-import android.app.usage.UsageStats;
-import android.app.usage.UsageStatsManager;
-import android.content.Intent;
-import android.content.pm.ResolveInfo;
-import android.os.UserHandle;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
-
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
-
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static com.android.internal.app.ChooserWrapperActivity.sOverrides;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.when;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.times;
/**
* Chooser activity instrumentation tests
diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
index c446f3c..60529f6 100644
--- a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
+++ b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
@@ -16,14 +16,14 @@
package com.android.internal.app;
+import static org.mockito.Mockito.mock;
+
import android.app.usage.UsageStatsManager;
import android.content.Context;
import android.content.pm.PackageManager;
import java.util.function.Function;
-import static org.mockito.Mockito.mock;
-
public class ChooserWrapperActivity extends ChooserActivity {
/*
* Simple wrapper around chooser activity to be able to initiate it under test
diff --git a/core/tests/coretests/src/com/android/internal/app/IntentForwarderActivityTest.java b/core/tests/coretests/src/com/android/internal/app/IntentForwarderActivityTest.java
index cfb6bdd..9b13af2 100644
--- a/core/tests/coretests/src/com/android/internal/app/IntentForwarderActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/IntentForwarderActivityTest.java
@@ -46,9 +46,10 @@
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Rule;
diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java
index 404c99c..fe2fb85 100644
--- a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java
@@ -16,6 +16,29 @@
package com.android.internal.app;
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.isEnabled;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+
+import static com.android.internal.app.ResolverWrapperActivity.sOverrides;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.when;
+
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.view.View;
+import android.widget.RelativeLayout;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.R;
import com.android.internal.app.ResolverActivity.ResolvedComponentInfo;
import com.android.internal.widget.ResolverDrawerLayout;
@@ -26,37 +49,8 @@
import org.junit.runner.RunWith;
import org.mockito.Mockito;
-import android.app.usage.UsageStats;
-import android.app.usage.UsageStatsManager;
-import android.content.Intent;
-import android.content.pm.ResolveInfo;
-import android.os.UserHandle;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
-import android.view.View;
-import android.widget.RelativeLayout;
-
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
-
-import static android.os.SystemClock.sleep;
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.isEnabled;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static com.android.internal.app.ResolverWrapperActivity.sOverrides;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
/**
* Resolver activity instrumentation tests
diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverDataProvider.java b/core/tests/coretests/src/com/android/internal/app/ResolverDataProvider.java
index c710b9a..850b466 100644
--- a/core/tests/coretests/src/com/android/internal/app/ResolverDataProvider.java
+++ b/core/tests/coretests/src/com/android/internal/app/ResolverDataProvider.java
@@ -23,10 +23,6 @@
import android.content.pm.ResolveInfo;
import android.os.UserHandle;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
/**
* Utility class used by resolver tests to create mock data
*/
diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverListControllerTest.java b/core/tests/coretests/src/com/android/internal/app/ResolverListControllerTest.java
index 284ab60..fcec00e 100644
--- a/core/tests/coretests/src/com/android/internal/app/ResolverListControllerTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/ResolverListControllerTest.java
@@ -25,34 +25,31 @@
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.when;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
-import org.mockito.stubbing.Answer;
-
import android.app.usage.IUsageStatsManager;
import android.app.usage.UsageStats;
import android.app.usage.UsageStatsManager;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ParceledListSlice;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
-import android.content.Intent;
import android.os.RemoteException;
import android.os.UserHandle;
-import android.support.test.runner.AndroidJUnit4;
import android.util.ArrayMap;
-import java.io.File;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverWrapperActivity.java b/core/tests/coretests/src/com/android/internal/app/ResolverWrapperActivity.java
index 163211e..83f6bc2 100644
--- a/core/tests/coretests/src/com/android/internal/app/ResolverWrapperActivity.java
+++ b/core/tests/coretests/src/com/android/internal/app/ResolverWrapperActivity.java
@@ -16,17 +16,12 @@
package com.android.internal.app;
-import android.app.usage.UsageStatsManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.os.RemoteException;
-
-import java.util.function.Function;
-
import static org.mockito.Mockito.mock;
+import android.app.usage.UsageStatsManager;
+import android.content.pm.PackageManager;
+
+import java.util.function.Function;
/*
* Simple wrapper around chooser activity to be able to initiate it under test
diff --git a/core/tests/coretests/src/com/android/internal/app/WindowDecorActionBarTest.java b/core/tests/coretests/src/com/android/internal/app/WindowDecorActionBarTest.java
index 472958a..87ad124 100644
--- a/core/tests/coretests/src/com/android/internal/app/WindowDecorActionBarTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/WindowDecorActionBarTest.java
@@ -17,12 +17,13 @@
package com.android.internal.app;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.SmallTest;
+
/**
* Tests for {@link WindowDecorActionBar}.
*/
diff --git a/core/tests/coretests/src/com/android/internal/app/procstats/SparseMappingTableTest.java b/core/tests/coretests/src/com/android/internal/app/procstats/SparseMappingTableTest.java
index 115af5e..f7fea3b 100644
--- a/core/tests/coretests/src/com/android/internal/app/procstats/SparseMappingTableTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/procstats/SparseMappingTableTest.java
@@ -16,20 +16,14 @@
package com.android.internal.app.procstats;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-
-import android.os.BatteryStats;
import android.os.Parcel;
-import android.test.suitebuilder.annotation.SmallTest;
import android.util.Log;
+import androidx.test.filters.SmallTest;
+
import junit.framework.Assert;
import junit.framework.TestCase;
-import org.mockito.Mockito;
-
/**
* Provides test cases for SparseMappingTable.
*/
diff --git a/core/tests/coretests/src/com/android/internal/inputmethod/InputMethodDebugTest.java b/core/tests/coretests/src/com/android/internal/inputmethod/InputMethodDebugTest.java
index 629f7b6..222e494 100644
--- a/core/tests/coretests/src/com/android/internal/inputmethod/InputMethodDebugTest.java
+++ b/core/tests/coretests/src/com/android/internal/inputmethod/InputMethodDebugTest.java
@@ -18,10 +18,11 @@
import static org.junit.Assert.assertEquals;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.WindowManager.LayoutParams;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/com/android/internal/inputmethod/SubtypeLocaleUtilsTest.java b/core/tests/coretests/src/com/android/internal/inputmethod/SubtypeLocaleUtilsTest.java
index 8179328..ba63908 100644
--- a/core/tests/coretests/src/com/android/internal/inputmethod/SubtypeLocaleUtilsTest.java
+++ b/core/tests/coretests/src/com/android/internal/inputmethod/SubtypeLocaleUtilsTest.java
@@ -18,8 +18,8 @@
import static org.junit.Assert.assertEquals;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java
index 992b46f..b687801 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java
@@ -13,6 +13,7 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.os;
import static android.os.BatteryStats.STATS_SINCE_CHARGED;
@@ -20,10 +21,11 @@
import android.app.ActivityManager;
import android.os.BatteryStats;
import android.os.WorkSource;
-import android.support.test.filters.SmallTest;
import android.util.ArrayMap;
import android.view.Display;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
/**
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsCounterTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsCounterTest.java
index 08f8dd1..37f818a 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsCounterTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsCounterTest.java
@@ -13,11 +13,13 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.os;
import android.os.BatteryStats;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsCpuTimesTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsCpuTimesTest.java
index ee8d508..0179ead 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsCpuTimesTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsCpuTimesTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.os;
import static android.os.BatteryStats.STATS_SINCE_CHARGED;
@@ -36,11 +37,12 @@
import android.os.BatteryStats;
import android.os.UserHandle;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseLongArray;
import android.view.Display;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.util.ArrayUtils;
import org.junit.Before;
@@ -64,7 +66,7 @@
* Install: adb install -r \
* ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
* Run: adb shell am instrument -e class com.android.internal.os.BatteryStatsCpuTimesTest -w \
- * com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
+ * com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner
*
* or
*
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsDualTimerTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsDualTimerTest.java
index 3a5a9f5..efb8710 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsDualTimerTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsDualTimerTest.java
@@ -13,10 +13,12 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.os;
import android.os.BatteryStats;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsDurationTimerTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsDurationTimerTest.java
index 19dab79..a42286f 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsDurationTimerTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsDurationTimerTest.java
@@ -13,11 +13,13 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.os;
import android.os.BatteryStats;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsHelperTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsHelperTest.java
index 7467114..355601c 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsHelperTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsHelperTest.java
@@ -17,7 +17,6 @@
package com.android.internal.os;
-
import static android.os.BatteryStats.Uid.PROCESS_STATE_TOP;
import static com.google.common.truth.Truth.assertThat;
@@ -37,12 +36,13 @@
import android.content.pm.PackageManager;
import android.os.BatteryStats;
import android.os.Process;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.text.format.DateUtils;
import android.util.StatsLog;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import junit.framework.TestCase;
import org.junit.Before;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryTest.java
index 10a3189..cc0ddb7 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryTest.java
@@ -13,18 +13,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.os;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertEquals;
-
import android.content.Context;
import android.os.Parcel;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsImplTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsImplTest.java
index 613de45..dc93675 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsImplTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsImplTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.os;
import static android.os.BatteryStats.STATS_SINCE_CHARGED;
@@ -31,12 +32,13 @@
import static org.mockito.Mockito.when;
import android.os.BatteryStats;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseArray;
import android.util.SparseIntArray;
import android.view.Display;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.util.ArrayUtils;
import org.junit.Before;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java
index 8cbe5d6..3e33273 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java
@@ -13,6 +13,7 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.os;
import static android.os.BatteryStats.STATS_CURRENT;
@@ -20,21 +21,20 @@
import static android.os.BatteryStats.WAKE_TYPE_PARTIAL;
import android.app.ActivityManager;
-import android.os.BatteryManager;
import android.os.BatteryStats;
import android.os.BatteryStats.HistoryItem;
import android.os.BatteryStats.Uid.Sensor;
import android.os.WorkSource;
-import android.support.test.filters.SmallTest;
import android.view.Display;
+import androidx.test.filters.SmallTest;
+
import com.android.internal.os.BatteryStatsImpl.DualTimer;
import com.android.internal.os.BatteryStatsImpl.Uid;
+
import junit.framework.TestCase;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
/**
@@ -47,7 +47,7 @@
* Install: adb install -r \
* ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
* Run: adb shell am instrument -e class com.android.internal.os.BatteryStatsNoteTest -w \
- * com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
+ * com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner
*/
public class BatteryStatsNoteTest extends TestCase {
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java
index 251ceb0..61d20df 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java
@@ -13,11 +13,13 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.os;
import android.os.BatteryStats;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java
index a751f90..b851f0a 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java
@@ -13,13 +13,15 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.os;
import android.app.ActivityManager;
import android.os.BatteryStats;
-import android.support.test.filters.SmallTest;
import android.view.Display;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
/**
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsServTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsServTest.java
index 5fd8225..b9995c4 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsServTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsServTest.java
@@ -18,7 +18,8 @@
import android.os.BatteryStats;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.Assert;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsStopwatchTimerTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsStopwatchTimerTest.java
index 015314e..f76f316 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsStopwatchTimerTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsStopwatchTimerTest.java
@@ -13,10 +13,12 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.os;
import android.os.BatteryStats;
-import android.support.test.filters.SmallTest;
+
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java
index 225515e..d69e1d1 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.os;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimeBaseTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimeBaseTest.java
index 3190d9e..bce8b40 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimeBaseTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimeBaseTest.java
@@ -16,19 +16,20 @@
package com.android.internal.os;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
import android.os.BatteryStats;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
import android.util.Log;
+import androidx.test.filters.SmallTest;
+
import junit.framework.Assert;
import junit.framework.TestCase;
import org.mockito.Mockito;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
/**
* Provides test cases for android.os.BatteryStats.
*/
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimerTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimerTest.java
index 98d0f7f..87dc2f3 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimerTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimerTest.java
@@ -18,16 +18,17 @@
import android.os.BatteryStats;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
import android.util.StringBuilderPrinter;
-import junit.framework.Assert;
-import junit.framework.TestCase;
+import androidx.test.filters.SmallTest;
import com.android.internal.os.BatteryStatsImpl.Clocks;
import com.android.internal.os.BatteryStatsImpl.TimeBase;
import com.android.internal.os.BatteryStatsImpl.Timer;
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
/**
* Provides test cases for android.os.BatteryStats.
*/
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsUidTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsUidTest.java
index a7e75a2..4df3190 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsUidTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsUidTest.java
@@ -16,22 +16,10 @@
package com.android.internal.os;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
+import androidx.test.filters.SmallTest;
-import android.os.BatteryStats;
-import android.os.Parcel;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.Log;
-
-import junit.framework.Assert;
import junit.framework.TestCase;
-import com.android.internal.os.BatteryStatsImpl;
-
-import org.mockito.Mockito;
-
/**
* Provides test cases for android.os.BatteryStats.
*/
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsUserLifecycleTests.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsUserLifecycleTests.java
index 450473d..e7a1bca 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsUserLifecycleTests.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsUserLifecycleTests.java
@@ -28,12 +28,13 @@
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.UiDevice;
import android.util.ArraySet;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git a/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java
index dc3a12f..1d35143 100644
--- a/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java
@@ -22,11 +22,12 @@
import android.os.Binder;
import android.os.SystemClock;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.ArrayMap;
import android.util.SparseArray;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.os.BinderInternal.CallSession;
import org.junit.Assert;
diff --git a/core/tests/coretests/src/com/android/internal/os/BstatsCpuTimesValidationTest.java b/core/tests/coretests/src/com/android/internal/os/BstatsCpuTimesValidationTest.java
index 42c9139..01515bd 100644
--- a/core/tests/coretests/src/com/android/internal/os/BstatsCpuTimesValidationTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BstatsCpuTimesValidationTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.os;
import static android.os.BatteryStats.UID_TIMES_TYPE_ALL;
@@ -33,9 +34,6 @@
import static junit.framework.Assert.assertTrue;
import static junit.framework.Assert.fail;
-import com.android.frameworks.coretests.aidl.ICmdCallback;
-import com.android.frameworks.coretests.aidl.ICmdReceiver;
-
import android.app.ActivityManager;
import android.app.KeyguardManager;
import android.content.ComponentName;
@@ -52,14 +50,18 @@
import android.os.Process;
import android.os.SystemClock;
import android.provider.Settings;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.UiDevice;
import android.text.TextUtils;
import android.util.DebugUtils;
import android.util.Log;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.frameworks.coretests.aidl.ICmdCallback;
+import com.android.frameworks.coretests.aidl.ICmdReceiver;
+
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Rule;
diff --git a/core/tests/coretests/src/com/android/internal/os/DebugTest.java b/core/tests/coretests/src/com/android/internal/os/DebugTest.java
index efb78d7..2a8a857 100644
--- a/core/tests/coretests/src/com/android/internal/os/DebugTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/DebugTest.java
@@ -18,7 +18,8 @@
import android.os.Debug;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
@SmallTest
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelCpuProcReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelCpuProcReaderTest.java
index 8360126..a25a7489 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelCpuProcReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelCpuProcReaderTest.java
@@ -24,9 +24,10 @@
import android.content.Context;
import android.os.FileUtils;
import android.os.SystemClock;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelCpuProcStringReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelCpuProcStringReaderTest.java
index 2663f2b..7a31605 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelCpuProcStringReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelCpuProcStringReaderTest.java
@@ -24,9 +24,10 @@
import android.content.Context;
import android.os.FileUtils;
import android.os.SystemClock;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelCpuThreadReaderEndToEndTest.java b/core/tests/coretests/src/com/android/internal/os/KernelCpuThreadReaderEndToEndTest.java
new file mode 100644
index 0000000..c03d1f3
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/os/KernelCpuThreadReaderEndToEndTest.java
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2018 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.internal.os;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import android.os.SystemClock;
+import android.support.test.filters.LargeTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import com.android.internal.os.KernelCpuThreadReader.ProcessCpuUsage;
+import com.android.internal.os.KernelCpuThreadReader.ThreadCpuUsage;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.time.Duration;
+import java.util.Arrays;
+import java.util.List;
+import java.util.OptionalDouble;
+import java.util.concurrent.CountDownLatch;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+/**
+ * End to end test for {@link KernelCpuThreadReader} that checks the accuracy of the reported times
+ * by spawning threads that do a predictable amount of work
+ */
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class KernelCpuThreadReaderEndToEndTest {
+
+ private static final int TIMED_NUM_SAMPLES = 5;
+ private static final int TIMED_START_MILLIS = 500;
+ private static final int TIMED_END_MILLIS = 2000;
+ private static final int TIMED_INCREMENT_MILLIS = 500;
+ private static final int TIMED_COMPARISON_DELTA_MILLIS = 200;
+
+ private static final int ITERATIVE_NUM_SAMPLES = 100;
+ private static final long ITERATIVE_LOW_ITERATIONS = (long) 1e8;
+ private static final long ITERATIVE_HIGH_ITERATIONS = (long) 2e8;
+ private static final double ITERATIONS_COMPARISONS_DELTA = 0.25;
+
+ /**
+ * Test that when we busy-wait for the thread-local time to reach N seconds, the time reported
+ * is also N seconds. Takes ~10s.
+ */
+ @Test
+ public void testTimedWork() throws InterruptedException {
+ for (int millis = TIMED_START_MILLIS;
+ millis <= TIMED_END_MILLIS;
+ millis += TIMED_INCREMENT_MILLIS) {
+ final Duration targetDuration = Duration.ofMillis(millis);
+ final Runnable work = timedWork(targetDuration);
+ Duration resultDuration = getAverageWorkTime(
+ work, String.format("timed%dms", millis), TIMED_NUM_SAMPLES);
+ assertEquals(
+ "Time worked according to currentThreadTimeMillis doesn't match "
+ + "KernelCpuThreadReader",
+ targetDuration.toMillis(), resultDuration.toMillis(),
+ TIMED_COMPARISON_DELTA_MILLIS);
+ }
+ }
+
+ /**
+ * Test that when we scale up the amount of work by N, the time reported also scales by N. Takes
+ * ~15s.
+ */
+ @Test
+ public void testIterativeWork() throws InterruptedException {
+ final Runnable lowAmountWork = iterativeWork(ITERATIVE_LOW_ITERATIONS);
+ final Runnable highAmountWork = iterativeWork(ITERATIVE_HIGH_ITERATIONS);
+ final Duration lowResultDuration =
+ getAverageWorkTime(lowAmountWork, "iterlow", ITERATIVE_NUM_SAMPLES);
+ final Duration highResultDuration =
+ getAverageWorkTime(highAmountWork, "iterhigh", ITERATIVE_NUM_SAMPLES);
+ assertEquals(
+ "Work scale and CPU time scale do not match",
+ ((double) ITERATIVE_HIGH_ITERATIONS) / ((double) ITERATIVE_LOW_ITERATIONS),
+ ((double) highResultDuration.toMillis()) / ((double) lowResultDuration.toMillis()),
+ ITERATIONS_COMPARISONS_DELTA);
+ }
+
+ /**
+ * Run some work {@code numSamples} times, and take the average CPU duration used for that work
+ * according to {@link KernelCpuThreadReader}
+ */
+ private Duration getAverageWorkTime(
+ Runnable work, String tag, int numSamples) throws InterruptedException {
+ // Count down every time a thread finishes work, so that we can wait for work to complete
+ final CountDownLatch workFinishedLatch = new CountDownLatch(numSamples);
+ // Count down once when threads can terminate (after we get them from
+ // `KernelCpuThreadReader`)
+ final CountDownLatch threadFinishedLatch = new CountDownLatch(1);
+
+ // Start `NUM_SAMPLE` threads to do the work
+ for (int i = 0; i < numSamples; i++) {
+ final String threadName = String.format("%s%d", tag, i);
+ // Check the thread name, as we rely on it later to identify threads
+ assertTrue("Max name length for linux threads is 15", threadName.length() <= 15);
+ doWork(work, threadName, workFinishedLatch, threadFinishedLatch);
+ }
+
+ // Wait for threads to finish
+ workFinishedLatch.await();
+
+ // Get thread data from KernelCpuThreadReader
+ final KernelCpuThreadReader kernelCpuThreadReader = KernelCpuThreadReader.create();
+ assertNotNull(kernelCpuThreadReader);
+ final ProcessCpuUsage currentProcessCpuUsage =
+ kernelCpuThreadReader.getCurrentProcessCpuUsage();
+
+ // Threads can terminate, as we've finished crawling them from /proc
+ threadFinishedLatch.countDown();
+
+ // Check that we've got times for every thread we spawned
+ final List<ThreadCpuUsage> threadCpuUsages = currentProcessCpuUsage.threadCpuUsages
+ .stream()
+ .filter((thread) -> thread.threadName.startsWith(tag))
+ .collect(Collectors.toList());
+ assertEquals(
+ "Incorrect number of threads returned by KernelCpuThreadReader",
+ numSamples, threadCpuUsages.size());
+
+ // Calculate the average time spent working
+ final OptionalDouble averageWorkTimeMillis = threadCpuUsages.stream()
+ .mapToDouble((t) -> Arrays.stream(t.usageTimesMillis).sum())
+ .average();
+ assertTrue(averageWorkTimeMillis.isPresent());
+ return Duration.ofMillis((long) averageWorkTimeMillis.getAsDouble());
+ }
+
+ /**
+ * Work that lasts {@code duration} according to {@link SystemClock#currentThreadTimeMillis()}
+ */
+ private Runnable timedWork(Duration duration) {
+ return () -> {
+ // Busy loop until `duration` has elapsed for the thread timer
+ final long startTimeMillis = SystemClock.currentThreadTimeMillis();
+ final long durationMillis = duration.toMillis();
+ while (true) {
+ final long elapsedMillis = SystemClock.currentThreadTimeMillis() - startTimeMillis;
+ if (elapsedMillis >= durationMillis) {
+ break;
+ }
+ }
+ };
+ }
+
+ /**
+ * Work that iterates {@code iterations} times
+ */
+ private Runnable iterativeWork(long iterations) {
+ Consumer<Long> empty = (i) -> {
+ };
+ return () -> {
+ long count = 0;
+ for (long i = 0; i < iterations; i++) {
+ // Alternate branching to reduce effect of branch prediction
+ if (i % 2 == 0) {
+ count++;
+ }
+ }
+ // Call empty function with value to avoid loop getting optimized away
+ empty.accept(count);
+ };
+ }
+
+ /**
+ * Perform some work in another thread
+ *
+ * @param work the work to perform
+ * @param threadName the name of the spawned thread
+ * @param workFinishedLatch latch to register that the work has been completed
+ * @param threadFinishedLatch latch to pause termination of the thread until the latch is
+ * decremented
+ */
+ private void doWork(
+ Runnable work,
+ String threadName,
+ CountDownLatch workFinishedLatch,
+ CountDownLatch threadFinishedLatch) {
+ Runnable workWrapped = () -> {
+ // Do the work
+ work.run();
+ // Notify that the work is finished
+ workFinishedLatch.countDown();
+ // Wait until `threadFinishLatch` has been released in order to keep the thread alive so
+ // we can see it in `proc` filesystem
+ try {
+ threadFinishedLatch.await();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ };
+ new Thread(workWrapped, threadName).start();
+ }
+}
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelCpuThreadReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelCpuThreadReaderTest.java
index b242a34..0c56b8a 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelCpuThreadReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelCpuThreadReaderTest.java
@@ -23,9 +23,10 @@
import android.content.Context;
import android.os.FileUtils;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidActiveTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidActiveTimeReaderTest.java
index adafda0..1b13a99 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidActiveTimeReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidActiveTimeReaderTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.os;
import static org.junit.Assert.assertEquals;
@@ -20,11 +21,12 @@
import android.content.Context;
import android.os.FileUtils;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseLongArray;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.os.KernelCpuUidTimeReader.KernelCpuUidActiveTimeReader;
import org.junit.After;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidClusterTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidClusterTimeReaderTest.java
index ad20d84..2ea80da 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidClusterTimeReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidClusterTimeReaderTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.os;
import static org.junit.Assert.assertArrayEquals;
@@ -22,11 +23,12 @@
import android.content.Context;
import android.os.FileUtils;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseArray;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.os.KernelCpuUidTimeReader.KernelCpuUidClusterTimeReader;
import org.junit.After;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidFreqTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidFreqTimeReaderTest.java
index 1d3a98a..0b6fed3 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidFreqTimeReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidFreqTimeReaderTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.os;
import static org.junit.Assert.assertArrayEquals;
@@ -24,11 +25,12 @@
import android.content.Context;
import android.os.FileUtils;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseArray;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.os.KernelCpuUidTimeReader.KernelCpuUidFreqTimeReader;
import org.junit.After;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidUserSysTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidUserSysTimeReaderTest.java
index 9b4512b..8f81ea2 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidUserSysTimeReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidUserSysTimeReaderTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.os;
import static org.junit.Assert.assertArrayEquals;
@@ -23,11 +24,12 @@
import android.content.Context;
import android.os.FileUtils;
import android.os.SystemClock;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseArray;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.os.KernelCpuUidTimeReader.KernelCpuUidUserSysTimeReader;
import org.junit.After;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelMemoryBandwidthStatsTest.java b/core/tests/coretests/src/com/android/internal/os/KernelMemoryBandwidthStatsTest.java
index 32317ee..60dac85 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelMemoryBandwidthStatsTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelMemoryBandwidthStatsTest.java
@@ -1,11 +1,27 @@
+/*
+ * Copyright (C) 2016 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.internal.os;
-import android.support.test.filters.SmallTest;
import android.util.LongSparseLongArray;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
-import org.junit.Assert;
import org.mockito.Mockito;
import java.io.BufferedReader;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelSingleUidTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelSingleUidTimeReaderTest.java
index 29227f9..479e19e 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelSingleUidTimeReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelSingleUidTimeReaderTest.java
@@ -21,10 +21,11 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseArray;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.os.KernelSingleUidTimeReader.Injector;
import org.junit.Before;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelUidCpuActiveTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelUidCpuActiveTimeReaderTest.java
index 28570e8..12f6c18 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelUidCpuActiveTimeReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelUidCpuActiveTimeReaderTest.java
@@ -20,8 +20,8 @@
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelUidCpuClusterTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelUidCpuClusterTimeReaderTest.java
index 85dce02..532f337 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelUidCpuClusterTimeReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelUidCpuClusterTimeReaderTest.java
@@ -21,10 +21,11 @@
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseArray;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelUidCpuFreqTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelUidCpuFreqTimeReaderTest.java
index 67c4e61..6d2980b 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelUidCpuFreqTimeReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelUidCpuFreqTimeReaderTest.java
@@ -24,10 +24,11 @@
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.util.SparseArray;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -53,7 +54,7 @@
* Install: adb install -r \
* ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
* Run: adb shell am instrument -e class com.android.internal.os.KernelUidCpuFreqTimeReaderTest -w \
- * com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
+ * com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner
*
* or
*
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java
index 4e4bb3507..78b6843 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java
@@ -13,9 +13,10 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.os;
-import android.support.test.filters.SmallTest;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/com/android/internal/os/LoggingPrintStreamTest.java b/core/tests/coretests/src/com/android/internal/os/LoggingPrintStreamTest.java
index fe62764..cb8a62c 100644
--- a/core/tests/coretests/src/com/android/internal/os/LoggingPrintStreamTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/LoggingPrintStreamTest.java
@@ -16,7 +16,9 @@
package com.android.internal.os;
-import android.test.suitebuilder.annotation.Suppress;
+import androidx.test.filters.Suppress;
+
+import junit.framework.TestCase;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -25,8 +27,6 @@
import java.util.Collections;
import java.util.List;
-import junit.framework.TestCase;
-
// this test causes a IllegalAccessError: superclass not accessible
@Suppress
public class LoggingPrintStreamTest extends TestCase {
diff --git a/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterArrayTest.java b/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterArrayTest.java
index 37b4e41a..0516bb7 100644
--- a/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterArrayTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterArrayTest.java
@@ -30,8 +30,9 @@
import static org.mockito.Mockito.when;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
@@ -55,7 +56,7 @@
* Install: adb install -r \
* ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
* Run: adb shell am instrument -e class com.android.internal.os.LongSamplingCounterArrayTest -w \
- * com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
+ * com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner
*/
@SmallTest
@RunWith(AndroidJUnit4.class)
diff --git a/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterTest.java b/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterTest.java
index 853bf8a..d2f5735 100644
--- a/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterTest.java
@@ -28,8 +28,9 @@
import static org.mockito.Mockito.when;
import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/com/android/internal/os/LooperStatsTest.java b/core/tests/coretests/src/com/android/internal/os/LooperStatsTest.java
index b65c1e6..2c597b1 100644
--- a/core/tests/coretests/src/com/android/internal/os/LooperStatsTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/LooperStatsTest.java
@@ -23,8 +23,9 @@
import android.os.Looper;
import android.os.Message;
import android.platform.test.annotations.Presubmit;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Assert;
diff --git a/core/tests/coretests/src/com/android/internal/os/MockBatteryStatsImpl.java b/core/tests/coretests/src/com/android/internal/os/MockBatteryStatsImpl.java
index b68f6b1..c18445e 100644
--- a/core/tests/coretests/src/com/android/internal/os/MockBatteryStatsImpl.java
+++ b/core/tests/coretests/src/com/android/internal/os/MockBatteryStatsImpl.java
@@ -21,6 +21,7 @@
import android.util.SparseIntArray;
import com.android.internal.location.gnssmetrics.GnssMetrics;
+
import java.util.ArrayList;
import java.util.Queue;
import java.util.concurrent.Future;
diff --git a/core/tests/coretests/src/com/android/internal/os/PowerCalculatorTest.java b/core/tests/coretests/src/com/android/internal/os/PowerCalculatorTest.java
index 14d62e0..c592ab6 100644
--- a/core/tests/coretests/src/com/android/internal/os/PowerCalculatorTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/PowerCalculatorTest.java
@@ -17,13 +17,13 @@
package com.android.internal.os;
-
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.os.BatteryStats;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/com/android/internal/os/PowerProfileTest.java b/core/tests/coretests/src/com/android/internal/os/PowerProfileTest.java
index 2853c96..5862368 100644
--- a/core/tests/coretests/src/com/android/internal/os/PowerProfileTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/PowerProfileTest.java
@@ -17,8 +17,8 @@
package com.android.internal.os;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/com/android/internal/os/ProcStatsUtilTest.java b/core/tests/coretests/src/com/android/internal/os/ProcStatsUtilTest.java
index 489e164..e97caf8 100644
--- a/core/tests/coretests/src/com/android/internal/os/ProcStatsUtilTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/ProcStatsUtilTest.java
@@ -20,9 +20,10 @@
import android.content.Context;
import android.os.FileUtils;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/com/android/internal/os/ProcTimeInStateReaderTest.java b/core/tests/coretests/src/com/android/internal/os/ProcTimeInStateReaderTest.java
index 2893066..9db3f8a 100644
--- a/core/tests/coretests/src/com/android/internal/os/ProcTimeInStateReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/ProcTimeInStateReaderTest.java
@@ -22,9 +22,10 @@
import android.content.Context;
import android.os.FileUtils;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
diff --git a/core/tests/coretests/src/com/android/internal/os/StoragedUidIoStatsReaderTest.java b/core/tests/coretests/src/com/android/internal/os/StoragedUidIoStatsReaderTest.java
index c051a1c..85eafc5 100644
--- a/core/tests/coretests/src/com/android/internal/os/StoragedUidIoStatsReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/StoragedUidIoStatsReaderTest.java
@@ -15,15 +15,17 @@
*/
package com.android.internal.os;
+
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyZeroInteractions;
import android.content.Context;
import android.os.FileUtils;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
@@ -36,7 +38,6 @@
import java.io.File;
import java.nio.file.Files;
-
/**
* Test class for {@link StoragedUidIoStatsReader}.
*
diff --git a/core/tests/coretests/src/com/android/internal/policy/PhoneWindowActionModeTest.java b/core/tests/coretests/src/com/android/internal/policy/PhoneWindowActionModeTest.java
index 2a24881..8e0c1fe 100644
--- a/core/tests/coretests/src/com/android/internal/policy/PhoneWindowActionModeTest.java
+++ b/core/tests/coretests/src/com/android/internal/policy/PhoneWindowActionModeTest.java
@@ -17,8 +17,6 @@
package com.android.internal.policy;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.ActionMode;
import android.view.ActionMode.Callback;
import android.view.KeyEvent;
@@ -32,7 +30,8 @@
import android.view.WindowManager.LayoutParams;
import android.view.accessibility.AccessibilityEvent;
-import java.util.List;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.SmallTest;
/**
* Tests {@link PhoneWindow}'s {@link ActionMode} related methods.
diff --git a/core/tests/coretests/src/com/android/internal/policy/PhoneWindowTest.java b/core/tests/coretests/src/com/android/internal/policy/PhoneWindowTest.java
index d4b8566..6c2d630 100644
--- a/core/tests/coretests/src/com/android/internal/policy/PhoneWindowTest.java
+++ b/core/tests/coretests/src/com/android/internal/policy/PhoneWindowTest.java
@@ -28,12 +28,13 @@
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.platform.test.annotations.Presubmit;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.ActionMode;
import android.view.ContextThemeWrapper;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.frameworks.coretests.R;
import org.junit.Before;
diff --git a/core/tests/coretests/src/com/android/internal/util/ArrayUtilsTest.java b/core/tests/coretests/src/com/android/internal/util/ArrayUtilsTest.java
index b3897ce..d026735 100644
--- a/core/tests/coretests/src/com/android/internal/util/ArrayUtilsTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/ArrayUtilsTest.java
@@ -13,9 +13,11 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
+
package com.android.internal.util;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
+
import junit.framework.TestCase;
import java.util.ArrayList;
diff --git a/core/tests/coretests/src/com/android/internal/util/DumpUtilsTest.java b/core/tests/coretests/src/com/android/internal/util/DumpUtilsTest.java
index a44b860..4716312 100644
--- a/core/tests/coretests/src/com/android/internal/util/DumpUtilsTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/DumpUtilsTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.util;
import static com.android.internal.util.DumpUtils.CRITICAL_SECTION_COMPONENTS;
diff --git a/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java b/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java
index 4845c4e..b2a2265 100644
--- a/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java
@@ -19,11 +19,8 @@
import junit.framework.TestCase;
import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
import java.io.Writer;
import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List;
/**
diff --git a/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java b/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java
index f00c48c..867152e 100644
--- a/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.internal.util;
import junit.framework.TestCase;
diff --git a/core/tests/coretests/src/android/util/TokenBucketTest.java b/core/tests/coretests/src/com/android/internal/util/TokenBucketTest.java
similarity index 90%
rename from core/tests/coretests/src/android/util/TokenBucketTest.java
rename to core/tests/coretests/src/com/android/internal/util/TokenBucketTest.java
index f7ac20c..6c50bce 100644
--- a/core/tests/coretests/src/android/util/TokenBucketTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/TokenBucketTest.java
@@ -18,6 +18,7 @@
import android.os.SystemClock;
import android.text.format.DateUtils;
+
import junit.framework.TestCase;
public class TokenBucketTest extends TestCase {
@@ -54,9 +55,9 @@
drain(new TokenBucket(FILL_DELTA_VERY_LONG, 10, 100), 10);
- drain(new TokenBucket((int)DateUtils.MINUTE_IN_MILLIS, 50), 50);
- drain(new TokenBucket((int)DateUtils.HOUR_IN_MILLIS, 10), 10);
- drain(new TokenBucket((int)DateUtils.DAY_IN_MILLIS, 200), 200);
+ drain(new TokenBucket((int) DateUtils.MINUTE_IN_MILLIS, 50), 50);
+ drain(new TokenBucket((int) DateUtils.HOUR_IN_MILLIS, 10), 10);
+ drain(new TokenBucket((int) DateUtils.DAY_IN_MILLIS, 200), 200);
}
public void testReset() {
@@ -163,16 +164,16 @@
void assertDuration(long expected, long elapsed) {
String msg = String.format(
- "expected elapsed time at least %d ms, but was %d ms", expected, elapsed);
+ "expected elapsed time at least %d ms, but was %d ms", expected, elapsed);
elapsed += 1; // one millisecond extra guard
assertTrue(msg, elapsed >= expected);
}
- void assertThrow(Fn fn) {
- try {
- fn.call();
- fail("expected n exception to be thrown.");
- } catch (Throwable t) {}
+ void assertThrow(Fn fn) {
+ try {
+ fn.call();
+ fail("expected n exception to be thrown.");
+ } catch (Throwable t) { }
}
interface Fn { void call(); }
diff --git a/core/tests/coretests/src/com/android/internal/widget/ActionBarContainerTest.java b/core/tests/coretests/src/com/android/internal/widget/ActionBarContainerTest.java
index 912b7ec..b372366 100644
--- a/core/tests/coretests/src/com/android/internal/widget/ActionBarContainerTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/ActionBarContainerTest.java
@@ -18,11 +18,12 @@
import android.content.Context;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.ActionMode;
import android.view.View;
import android.view.ViewGroup;
+import androidx.test.filters.SmallTest;
+
/**
* Tests for {@link ActionBarContainer}.
*/
diff --git a/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java b/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java
index d782c0c..d10f173 100644
--- a/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java
@@ -29,9 +29,6 @@
import android.content.Context;
import android.graphics.Insets;
import android.graphics.Rect;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
import android.view.DisplayCutout;
import android.view.View;
import android.view.View.OnApplyWindowInsetsListener;
@@ -40,6 +37,10 @@
import android.widget.FrameLayout;
import android.widget.Toolbar;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/com/android/internal/widget/BackgroundFallbackTest.java b/core/tests/coretests/src/com/android/internal/widget/BackgroundFallbackTest.java
index e21143d..0fada06 100644
--- a/core/tests/coretests/src/com/android/internal/widget/BackgroundFallbackTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/BackgroundFallbackTest.java
@@ -32,10 +32,11 @@
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
-import android.support.test.InstrumentationRegistry;
import android.view.ViewGroup;
import android.widget.FrameLayout;
+import androidx.test.InstrumentationRegistry;
+
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java b/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java
index 1806b22..2e0dbb4 100644
--- a/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java
@@ -19,12 +19,13 @@
import static org.junit.Assert.assertTrue;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
import android.text.Layout;
import android.view.View.MeasureSpec;
import android.widget.TextView;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
diff --git a/core/tests/coretests/src/com/android/internal/widget/LockPatternUtilsTest.java b/core/tests/coretests/src/com/android/internal/widget/LockPatternUtilsTest.java
index f73950a..6167c4b 100644
--- a/core/tests/coretests/src/com/android/internal/widget/LockPatternUtilsTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/LockPatternUtilsTest.java
@@ -20,8 +20,9 @@
import static org.junit.Assert.assertTrue;
import android.os.UserHandle;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/com/android/internal/widget/MessagingLinearLayoutTest.java b/core/tests/coretests/src/com/android/internal/widget/MessagingLinearLayoutTest.java
index 41082b7..6af7c88 100644
--- a/core/tests/coretests/src/com/android/internal/widget/MessagingLinearLayoutTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/MessagingLinearLayoutTest.java
@@ -21,12 +21,12 @@
import static org.junit.Assert.assertTrue;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View.MeasureSpec;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+
import com.android.frameworks.coretests.R;
import org.junit.Before;
diff --git a/core/tests/hdmitests/src/android/hardware/hdmi/HdmiAudioSystemClientTest.java b/core/tests/hdmitests/src/android/hardware/hdmi/HdmiAudioSystemClientTest.java
index 0dd9d09..28a8afe 100644
--- a/core/tests/hdmitests/src/android/hardware/hdmi/HdmiAudioSystemClientTest.java
+++ b/core/tests/hdmitests/src/android/hardware/hdmi/HdmiAudioSystemClientTest.java
@@ -318,6 +318,27 @@
mMaxVolume = maxVolume;
mIsMute = isMute;
}
+
+ @Override
+ public void setSystemAudioModeOnForAudioOnlySource() {
+ }
+
+ @Override
+ public int getPhysicalAddress() {
+ return 0x0000;
+ }
+
+ @Override
+ public void powerOffRemoteDevice(int logicalAddress, int powerStatus) {
+ }
+
+ @Override
+ public void powerOnRemoteDevice(int logicalAddress, int powerStatus) {
+ }
+
+ @Override
+ public void askRemoteDeviceToBecomeActiveSource(int physicalAddress) {
+ }
}
}
diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/Android.mk
index d161059..cc2d8d2 100644
--- a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/Android.mk
+++ b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/Android.mk
@@ -38,16 +38,11 @@
LOCAL_MIN_SDK_VERSION := 8
-LOCAL_JACK_FLAGS := -D jack.dex.output.policy=minimal-multidex \
- -D jack.dex.output.multidex.legacy=true
-
include $(BUILD_PACKAGE)
-ifndef LOCAL_JACK_ENABLED
-$(mainDexList): $(full_classes_pre_proguard_jar) | $(MAINDEXCLASSES)
+$(mainDexList): $(full_classes_pre_proguard_jar) $(MAINDEXCLASSES) $(PROGUARD_DEPS)
$(hide) mkdir -p $(dir $@)
- $(MAINDEXCLASSES) $< 1>$@
+ PROGUARD_HOME=$(PROGUARD_HOME) $(MAINDEXCLASSES) $< 1>$@
echo "com/android/multidexlegacyandexception/Test.class" >> $@
$(built_dex_intermediate): $(mainDexList)
-endif
diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestApp/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyTestApp/Android.mk
index cf8fc92..c577eef 100644
--- a/core/tests/hosttests/test-apps/MultiDexLegacyTestApp/Android.mk
+++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestApp/Android.mk
@@ -38,9 +38,9 @@
include $(BUILD_PACKAGE)
-$(mainDexList): $(full_classes_pre_proguard_jar) | $(MAINDEXCLASSES)
+$(mainDexList): $(full_classes_pre_proguard_jar) $(MAINDEXCLASSES) $(PROGUARD_DEPS)
$(hide) mkdir -p $(dir $@)
- $(MAINDEXCLASSES) $< 1>$@
+ PROGUARD_HOME=$(PROGUARD_HOME) $(MAINDEXCLASSES) $< 1>$@
echo "com/android/multidexlegacytestapp/Test.class" >> $@
$(built_dex_intermediate): $(mainDexList)
@@ -69,9 +69,9 @@
include $(BUILD_PACKAGE)
-$(mainDexList2): $(full_classes_pre_proguard_jar) | $(MAINDEXCLASSES)
+$(mainDexList2): $(full_classes_pre_proguard_jar) $(MAINDEXCLASSES) $(PROGUARD_DEPS)
$(hide) mkdir -p $(dir $@)
- $(MAINDEXCLASSES) $< 1>$@
+ PROGUARD_HOME=$(PROGUARD_HOME) $(MAINDEXCLASSES) $< 1>$@
echo "com/android/multidexlegacytestapp/Test.class" >> $@
$(built_dex_intermediate): $(mainDexList2)
diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestServices/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyTestServices/Android.mk
index 2ce50b3..da40940 100644
--- a/core/tests/hosttests/test-apps/MultiDexLegacyTestServices/Android.mk
+++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestServices/Android.mk
@@ -30,14 +30,13 @@
$(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME),$(LOCAL_IS_HOST_MODULE),common)/maindex.list
LOCAL_DX_FLAGS := --multi-dex --main-dex-list=$(mainDexList) --minimal-main-dex
-LOCAL_JACK_FLAGS := -D jack.dex.output.policy=minimal-multidex -D jack.dex.output.multidex.legacy=true
LOCAL_DEX_PREOPT := false
include $(BUILD_PACKAGE)
-$(mainDexList): $(full_classes_pre_proguard_jar) | $(MAINDEXCLASSES)
+$(mainDexList): $(full_classes_pre_proguard_jar) $(MAINDEXCLASSES) $(PROGUARD_DEPS)
$(hide) mkdir -p $(dir $@)
- $(MAINDEXCLASSES) $< 1>$@
+ PROGUARD_HOME=$(PROGUARD_HOME) $(MAINDEXCLASSES) $< 1>$@
$(built_dex_intermediate): $(mainDexList)
diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/Android.mk
index f3d98a8..afbcd46 100644
--- a/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/Android.mk
+++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/Android.mk
@@ -23,7 +23,7 @@
LOCAL_PACKAGE_NAME := MultiDexLegacyTestServicesTests2
LOCAL_JAVA_LIBRARIES := android-support-multidex
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-test
+LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
LOCAL_SDK_VERSION := 9
diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/AndroidManifest.xml b/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/AndroidManifest.xml
index 0ab2959..01285e7 100644
--- a/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/AndroidManifest.xml
+++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/AndroidManifest.xml
@@ -7,7 +7,7 @@
<uses-sdk android:minSdkVersion="9" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
<instrumentation
- android:name="android.support.test.runner.AndroidJUnitRunner"
+ android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="com.android.framework.multidexlegacytestservices" />
<application
diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/src/com/android/framework/multidexlegacytestservices/test2/ServicesTests.java b/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/src/com/android/framework/multidexlegacytestservices/test2/ServicesTests.java
index 900f203..f2c72f0 100644
--- a/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/src/com/android/framework/multidexlegacytestservices/test2/ServicesTests.java
+++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestServicesTests2/src/com/android/framework/multidexlegacytestservices/test2/ServicesTests.java
@@ -19,22 +19,26 @@
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.concurrent.TimeoutException;
-import junit.framework.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
/**
* Run the tests with: <code>adb shell am instrument -w
- * com.android.framework.multidexlegacytestservices.test2/android.support.test.runner.AndroidJUnitRunner
+ * com.android.framework.multidexlegacytestservices.test2/androidx.test.runner.AndroidJUnitRunner
* </code>
*/
@RunWith(AndroidJUnit4.class)
diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v1/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v1/Android.mk
index 8b0c750..665e22d 100644
--- a/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v1/Android.mk
+++ b/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v1/Android.mk
@@ -35,9 +35,9 @@
include $(BUILD_PACKAGE)
-$(mainDexList): $(full_classes_pre_proguard_jar) | $(MAINDEXCLASSES)
+$(mainDexList): $(full_classes_pre_proguard_jar) $(MAINDEXCLASSES) $(PROGUARD_DEPS)
$(hide) mkdir -p $(dir $@)
- $(MAINDEXCLASSES) $< 1>$@
+ PROGUARD_HOME=$(PROGUARD_HOME) $(MAINDEXCLASSES) $< 1>$@
echo "com/android/framework/multidexlegacyversionedtestapp/MultiDexUpdateTest.class" >> $@
$(built_dex_intermediate): $(mainDexList)
diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v2/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v2/Android.mk
index a36c993..c827fa8 100644
--- a/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v2/Android.mk
+++ b/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v2/Android.mk
@@ -35,9 +35,9 @@
include $(BUILD_PACKAGE)
-$(mainDexList): $(full_classes_pre_proguard_jar) | $(MAINDEXCLASSES)
+$(mainDexList): $(full_classes_pre_proguard_jar) $(MAINDEXCLASSES) $(PROGUARD_DEPS)
$(hide) mkdir -p $(dir $@)
- $(MAINDEXCLASSES) $< 1>$@
+ PROGUARD_HOME=$(PROGUARD_HOME) $(MAINDEXCLASSES) $< 1>$@
echo "com/android/framework/multidexlegacyversionedtestapp/MultiDexUpdateTest.class" >> $@
$(built_dex_intermediate): $(mainDexList)
diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v3/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v3/Android.mk
index 6b7418c..3d6ad7d 100644
--- a/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v3/Android.mk
+++ b/core/tests/hosttests/test-apps/MultiDexLegacyVersionedTestApp_v3/Android.mk
@@ -35,9 +35,9 @@
include $(BUILD_PACKAGE)
-$(mainDexList): $(full_classes_pre_proguard_jar) | $(MAINDEXCLASSES)
+$(mainDexList): $(full_classes_pre_proguard_jar) $(MAINDEXCLASSES) $(PROGUARD_DEPS)
$(hide) mkdir -p $(dir $@)
- $(MAINDEXCLASSES) $< 1>$@
+ PROGUARD_HOME=$(PROGUARD_HOME) $(MAINDEXCLASSES) $< 1>$@
echo "com/android/framework/multidexlegacyversionedtestapp/MultiDexUpdateTest.class" >> $@
$(built_dex_intermediate): $(mainDexList)
diff --git a/data/etc/Android.bp b/data/etc/Android.bp
index 0bffa38..035ee10 100644
--- a/data/etc/Android.bp
+++ b/data/etc/Android.bp
@@ -39,9 +39,38 @@
name: "privapp-permissions-platform.xml",
sub_dir: "permissions",
src: "privapp-permissions-platform.xml",
- required: [
- "privapp_whitelist_com.android.settings.intelligence",
- ]
+}
+
+prebuilt_etc {
+ name: "privapp_whitelist_com.android.carrierconfig",
+ product_specific: true,
+ sub_dir: "permissions",
+ src: "com.android.carrierconfig.xml",
+ filename_from_src: true,
+}
+
+prebuilt_etc {
+ name: "privapp_whitelist_com.android.contacts",
+ product_specific: true,
+ sub_dir: "permissions",
+ src: "com.android.contacts.xml",
+ filename_from_src: true,
+}
+
+prebuilt_etc {
+ name: "privapp_whitelist_com.android.launcher3",
+ product_specific: true,
+ sub_dir: "permissions",
+ src: "com.android.launcher3.xml",
+ filename_from_src: true,
+}
+
+prebuilt_etc {
+ name: "privapp_whitelist_com.android.provision",
+ product_specific: true,
+ sub_dir: "permissions",
+ src: "com.android.provision.xml",
+ filename_from_src: true,
}
prebuilt_etc {
@@ -54,12 +83,21 @@
prebuilt_etc {
name: "privapp_whitelist_com.android.settings.intelligence",
+ product_specific: true,
sub_dir: "permissions",
src: "com.android.settings.intelligence.xml",
filename_from_src: true,
}
prebuilt_etc {
+ name: "privapp_whitelist_com.android.storagemanager",
+ product_specific: true,
+ sub_dir: "permissions",
+ src: "com.android.storagemanager.xml",
+ filename_from_src: true,
+}
+
+prebuilt_etc {
name: "privapp_whitelist_com.android.systemui",
product_specific: true,
sub_dir: "permissions",
diff --git a/data/etc/com.android.carrierconfig.xml b/data/etc/com.android.carrierconfig.xml
new file mode 100644
index 0000000..17efb03
--- /dev/null
+++ b/data/etc/com.android.carrierconfig.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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
+ -->
+<permissions>
+ <privapp-permissions package="com.android.carrierconfig">
+ <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
+ </privapp-permissions>
+</permissions>
diff --git a/data/etc/com.android.contacts.xml b/data/etc/com.android.contacts.xml
new file mode 100644
index 0000000..78eae40
--- /dev/null
+++ b/data/etc/com.android.contacts.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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
+ -->
+<permissions>
+ <privapp-permissions package="com.android.contacts">
+ <permission name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
+ <permission name="com.android.voicemail.permission.READ_VOICEMAIL"/>
+ </privapp-permissions>
+</permissions>
diff --git a/data/etc/com.android.launcher3.xml b/data/etc/com.android.launcher3.xml
new file mode 100644
index 0000000..337e153
--- /dev/null
+++ b/data/etc/com.android.launcher3.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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
+ -->
+<permissions>
+ <privapp-permissions package="com.android.launcher3">
+ <permission name="android.permission.BIND_APPWIDGET"/>
+ <permission name="android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS"/>
+ <permission name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
+ </privapp-permissions>
+</permissions>
diff --git a/data/etc/com.android.provision.xml b/data/etc/com.android.provision.xml
new file mode 100644
index 0000000..05404ef
--- /dev/null
+++ b/data/etc/com.android.provision.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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
+ -->
+<permissions>
+ <privapp-permissions package="com.android.provision">
+ <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
+ </privapp-permissions>
+</permissions>
diff --git a/data/etc/com.android.storagemanager.xml b/data/etc/com.android.storagemanager.xml
new file mode 100644
index 0000000..e85a82c
--- /dev/null
+++ b/data/etc/com.android.storagemanager.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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
+ -->
+<permissions>
+ <privapp-permissions package="com.android.storagemanager">
+ <permission name="android.permission.DELETE_PACKAGES"/>
+ <permission name="android.permission.INTERACT_ACROSS_USERS"/>
+ <permission name="android.permission.MANAGE_USERS"/>
+ <permission name="android.permission.PACKAGE_USAGE_STATS"/>
+ <permission name="android.permission.USE_RESERVED_DISK"/>
+ <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
+ </privapp-permissions>
+</permissions>
diff --git a/data/etc/com.android.systemui.xml b/data/etc/com.android.systemui.xml
index 221708b..3562a8f 100644
--- a/data/etc/com.android.systemui.xml
+++ b/data/etc/com.android.systemui.xml
@@ -44,6 +44,7 @@
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.REAL_GET_TASKS"/>
<permission name="android.permission.RECEIVE_MEDIA_RESOURCE_USAGE"/>
+ <permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
<permission name="android.permission.START_ACTIVITY_AS_CALLER"/>
<permission name="android.permission.START_TASKS_FROM_RECENTS"/>
<permission name="android.permission.STATUS_BAR"/>
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index 4a2db0a..fb43e41 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -223,12 +223,12 @@
code to link against. -->
<library name="android.test.base"
- file="/system/framework/android.test.base.impl.jar" />
+ file="/system/framework/android.test.base.jar" />
<library name="android.test.mock"
- file="/system/framework/android.test.mock.impl.jar"
+ file="/system/framework/android.test.mock.jar"
dependency="android.test.base" />
<library name="android.test.runner"
- file="/system/framework/android.test.runner.impl.jar"
+ file="/system/framework/android.test.runner.jar"
dependency="android.test.base:android.test.mock" />
<!-- In BOOT_JARS historically, and now added to legacy applications. -->
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 393a2a6..597d14a 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -33,10 +33,6 @@
<permission name="android.permission.CRYPT_KEEPER"/>
</privapp-permissions>
- <privapp-permissions package="com.android.carrierconfig">
- <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
- </privapp-permissions>
-
<privapp-permissions package="com.android.cellbroadcastreceiver">
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
<permission name="android.permission.MANAGE_USERS"/>
@@ -45,11 +41,6 @@
<permission name="android.permission.RECEIVE_EMERGENCY_BROADCAST"/>
</privapp-permissions>
- <privapp-permissions package="com.android.contacts">
- <permission name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
- <permission name="com.android.voicemail.permission.READ_VOICEMAIL"/>
- </privapp-permissions>
-
<privapp-permissions package="com.android.defcontainer">
<permission name="android.permission.ACCESS_CACHE_FILESYSTEM"/>
<permission name="android.permission.ALLOCATE_AGGRESSIVE"/>
@@ -79,12 +70,6 @@
<permission name="android.permission.WRITE_MEDIA_STORAGE"/>
</privapp-permissions>
- <privapp-permissions package="com.android.launcher3">
- <permission name="android.permission.BIND_APPWIDGET"/>
- <permission name="android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS"/>
- <permission name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
- </privapp-permissions>
-
<privapp-permissions package="com.android.location.fused">
<permission name="android.permission.INSTALL_LOCATION_PROVIDER"/>
</privapp-permissions>
@@ -238,10 +223,6 @@
<permission name="android.permission.USE_RESERVED_DISK"/>
</privapp-permissions>
- <privapp-permissions package="com.android.provision">
- <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
- </privapp-permissions>
-
<privapp-permissions package="com.android.mainline.networkstack">
<permission name="android.permission.ACCESS_NETWORK_CONDITIONS"/>
<permission name="android.permission.CHANGE_BACKGROUND_DATA_SETTING"/>
@@ -335,6 +316,7 @@
<permission name="android.permission.SET_TIME"/>
<permission name="android.permission.SET_TIME_ZONE"/>
<permission name="android.permission.SIGNAL_PERSISTENT_PROCESSES"/>
+ <permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
<permission name="android.permission.START_TASKS_FROM_RECENTS" />
<permission name="android.permission.STOP_APP_SWITCHES"/>
<permission name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME"/>
@@ -349,15 +331,6 @@
<permission name="android.permission.INTENT_FILTER_VERIFICATION_AGENT"/>
</privapp-permissions>
- <privapp-permissions package="com.android.storagemanager">
- <permission name="android.permission.DELETE_PACKAGES"/>
- <permission name="android.permission.INTERACT_ACROSS_USERS"/>
- <permission name="android.permission.MANAGE_USERS"/>
- <permission name="android.permission.PACKAGE_USAGE_STATS"/>
- <permission name="android.permission.USE_RESERVED_DISK"/>
- <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
- </privapp-permissions>
-
<privapp-permissions package="com.android.tv">
<permission name="android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE"/>
<permission name="android.permission.DVB_DEVICE"/>
diff --git a/graphics/java/android/graphics/BaseCanvas.java b/graphics/java/android/graphics/BaseCanvas.java
index ca9dc47..65aaba1 100644
--- a/graphics/java/android/graphics/BaseCanvas.java
+++ b/graphics/java/android/graphics/BaseCanvas.java
@@ -22,6 +22,7 @@
import android.annotation.Size;
import android.annotation.UnsupportedAppUsage;
import android.graphics.Canvas.VertexMode;
+import android.graphics.text.MeasuredText;
import android.text.GraphicsOperations;
import android.text.MeasuredParagraph;
import android.text.PrecomputedText;
@@ -554,14 +555,12 @@
final int paraStart = pt.getParagraphStart(paraIndex);
final MeasuredParagraph mp = pt.getMeasuredParagraph(paraIndex);
// Only support the text in the same paragraph.
- nDrawTextRun(mNativeCanvasWrapper,
- mp.getChars(),
- start - paraStart,
- end - start,
- contextStart - paraStart,
- contextEnd - contextStart,
- x, y, isRtl, paint.getNativeInstance(),
- mp.getMeasuredText().getNativePtr());
+ drawTextRun(mp.getMeasuredText(),
+ start - paraStart,
+ end - paraStart,
+ contextStart - paraStart,
+ contextEnd - paraStart,
+ x, y, isRtl, paint);
return;
}
}
@@ -576,6 +575,14 @@
}
}
+ public void drawTextRun(@NonNull MeasuredText measuredText, int start, int end,
+ int contextStart, int contextEnd, float x, float y, boolean isRtl,
+ @NonNull Paint paint) {
+ nDrawTextRun(mNativeCanvasWrapper, measuredText.getChars(), start, end - start,
+ contextStart, contextEnd - contextStart, x, y, isRtl, paint.getNativeInstance(),
+ measuredText.getNativePtr());
+ }
+
public void drawVertices(@NonNull VertexMode mode, int vertexCount, @NonNull float[] verts,
int vertOffset, @Nullable float[] texs, int texOffset, @Nullable int[] colors,
int colorOffset, @Nullable short[] indices, int indexOffset, int indexCount,
diff --git a/graphics/java/android/graphics/BaseRecordingCanvas.java b/graphics/java/android/graphics/BaseRecordingCanvas.java
index 901c211..4f60935 100644
--- a/graphics/java/android/graphics/BaseRecordingCanvas.java
+++ b/graphics/java/android/graphics/BaseRecordingCanvas.java
@@ -20,6 +20,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Size;
+import android.graphics.text.MeasuredText;
import android.text.GraphicsOperations;
import android.text.MeasuredParagraph;
import android.text.PrecomputedText;
@@ -522,14 +523,12 @@
final int paraStart = pt.getParagraphStart(paraIndex);
final MeasuredParagraph mp = pt.getMeasuredParagraph(paraIndex);
// Only support if the target is in the same paragraph.
- nDrawTextRun(mNativeCanvasWrapper,
- mp.getChars(),
+ drawTextRun(mp.getMeasuredText(),
start - paraStart,
- end - start,
+ end - paraStart,
contextStart - paraStart,
- contextEnd - contextStart,
- x, y, isRtl, paint.getNativeInstance(),
- mp.getMeasuredText().getNativePtr());
+ contextEnd - paraStart,
+ x, y, isRtl, paint);
return;
}
}
@@ -545,6 +544,15 @@
}
@Override
+ public void drawTextRun(@NonNull MeasuredText measuredText, int start, int end,
+ int contextStart, int contextEnd, float x, float y, boolean isRtl,
+ @NonNull Paint paint) {
+ nDrawTextRun(mNativeCanvasWrapper, measuredText.getChars(), start, end - start,
+ contextStart, contextEnd - contextStart, x, y, isRtl, paint.getNativeInstance(),
+ measuredText.getNativePtr());
+ }
+
+ @Override
public final void drawVertices(@NonNull VertexMode mode, int vertexCount,
@NonNull float[] verts, int vertOffset, @Nullable float[] texs, int texOffset,
@Nullable int[] colors, int colorOffset, @Nullable short[] indices, int indexOffset,
diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index 790b37e..30f0bfa 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -18,9 +18,11 @@
import android.annotation.CheckResult;
import android.annotation.ColorInt;
+import android.annotation.ColorLong;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Size;
+import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.annotation.WorkerThread;
import android.content.res.ResourcesImpl;
@@ -1780,6 +1782,30 @@
}
/**
+ * Fills the bitmap's pixels with the specified {@link Color}.
+ *
+ * @throws IllegalStateException if the bitmap is not mutable.
+ * @throws IllegalArgumentException if the color space encoded in the long
+ * is invalid or unknown.
+ *
+ * @hide pending API approval
+ */
+ @TestApi
+ public void eraseColor(@ColorLong long c) {
+ checkRecycled("Can't erase a recycled bitmap");
+ if (!isMutable()) {
+ throw new IllegalStateException("cannot erase immutable bitmaps");
+ }
+
+ ColorSpace cs = Color.colorSpace(c);
+ float r = Color.red(c);
+ float g = Color.green(c);
+ float b = Color.blue(c);
+ float a = Color.alpha(c);
+ nativeErase(mNativePtr, cs, r, g, b, a);
+ }
+
+ /**
* Returns the {@link Color} at the specified location. Throws an exception
* if x or y are out of bounds (negative or >= to the width or height
* respectively). The returned color is a non-premultiplied ARGB value in
@@ -2123,6 +2149,8 @@
int quality, OutputStream stream,
byte[] tempStorage);
private static native void nativeErase(long nativeBitmap, int color);
+ private static native void nativeErase(long nativeBitmap, ColorSpace cs,
+ float r, float g, float b, float a);
private static native int nativeRowBytes(long nativeBitmap);
private static native int nativeConfig(long nativeBitmap);
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index 63a806e..8c1bae2 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -22,6 +22,7 @@
import android.annotation.Nullable;
import android.annotation.Size;
import android.annotation.UnsupportedAppUsage;
+import android.graphics.text.MeasuredText;
import android.os.Build;
import dalvik.annotation.optimization.CriticalNative;
@@ -2122,7 +2123,8 @@
* the text next to it.
* <p>
* All text outside the range {@code contextStart..contextEnd} is ignored. The text between
- * {@code start} and {@code end} will be laid out and drawn.
+ * {@code start} and {@code end} will be laid out and drawn. The context range is useful for
+ * contextual shaping, e.g. Kerning, Arabic contextural form.
* <p>
* The direction of the run is explicitly specified by {@code isRtl}. Thus, this method is
* suitable only for runs of a single direction. Alignment of the text is as determined by the
@@ -2151,6 +2153,31 @@
}
/**
+ * Draw a run of text, all in a single direction, with optional context for complex text
+ * shaping.
+ * <p>
+ * See {@link #drawTextRun(CharSequence, int, int, int, int, float, float, boolean, Paint)} for
+ * more details. This method uses a {@link MeasuredText} rather than CharSequence to represent
+ * the string.
+ *
+ * @param text the text to render
+ * @param start the start of the text to render. Data before this position can be used for
+ * shaping context.
+ * @param end the end of the text to render. Data at or after this position can be used for
+ * shaping context.
+ * @param contextStart the index of the start of the shaping context
+ * @param contextEnd the index of the end of the shaping context
+ * @param x the x position at which to draw the text
+ * @param y the y position at which to draw the text
+ * @param isRtl whether the run is in RTL direction
+ * @param paint the paint
+ */
+ public void drawTextRun(@NonNull MeasuredText text, int start, int end, int contextStart,
+ int contextEnd, float x, float y, boolean isRtl, @NonNull Paint paint) {
+ super.drawTextRun(text, start, end, contextStart, contextEnd, x, y, isRtl, paint);
+ }
+
+ /**
* Draw the array of vertices, interpreted as triangles (based on mode). The verts array is
* required, and specifies the x,y pairs for each vertex. If texs is non-null, then it is used
* to specify the coordinate in shader coordinates to use at each vertex (the paint must have a
diff --git a/graphics/java/android/graphics/ColorSpace.java b/graphics/java/android/graphics/ColorSpace.java
index 95317a4..9fa70a5 100644
--- a/graphics/java/android/graphics/ColorSpace.java
+++ b/graphics/java/android/graphics/ColorSpace.java
@@ -1661,10 +1661,12 @@
* @param rhs 3x3 matrix, as a non-null array of 9 floats
* @return A new array of 9 floats containing the result of the multiplication
* of rhs by lhs
+ *
+ * @hide
*/
@NonNull
@Size(9)
- private static float[] mul3x3(@NonNull @Size(9) float[] lhs, @NonNull @Size(9) float[] rhs) {
+ public static float[] mul3x3(@NonNull @Size(9) float[] lhs, @NonNull @Size(9) float[] rhs) {
float[] r = new float[9];
r[0] = lhs[0] * rhs[0] + lhs[3] * rhs[1] + lhs[6] * rhs[2];
r[1] = lhs[1] * rhs[0] + lhs[4] * rhs[1] + lhs[7] * rhs[2];
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 3342fd2..54e1abc 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -17,12 +17,14 @@
package android.graphics;
import android.annotation.ColorInt;
+import android.annotation.ColorLong;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Px;
import android.annotation.Size;
+import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.graphics.fonts.FontVariationAxis;
import android.os.Build;
@@ -66,26 +68,27 @@
Paint.class.getClassLoader(), nGetNativeFinalizer(), NATIVE_PAINT_SIZE);
}
- private ColorFilter mColorFilter;
- private MaskFilter mMaskFilter;
- private PathEffect mPathEffect;
- private Shader mShader;
+ @ColorLong private long mColor;
+ private ColorFilter mColorFilter;
+ private MaskFilter mMaskFilter;
+ private PathEffect mPathEffect;
+ private Shader mShader;
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
- private Typeface mTypeface;
- private Xfermode mXfermode;
+ private Typeface mTypeface;
+ private Xfermode mXfermode;
- private boolean mHasCompatScaling;
- private float mCompatScaling;
- private float mInvCompatScaling;
+ private boolean mHasCompatScaling;
+ private float mCompatScaling;
+ private float mInvCompatScaling;
- private LocaleList mLocales;
- private String mFontFeatureSettings;
- private String mFontVariationSettings;
+ private LocaleList mLocales;
+ private String mFontFeatureSettings;
+ private String mFontVariationSettings;
- private float mShadowLayerRadius;
- private float mShadowLayerDx;
- private float mShadowLayerDy;
- private int mShadowLayerColor;
+ private float mShadowLayerRadius;
+ private float mShadowLayerDx;
+ private float mShadowLayerDy;
+ @ColorLong private long mShadowLayerColor;
private static final Object sCacheLock = new Object();
@@ -503,6 +506,7 @@
// ? HINTING_OFF : HINTING_ON);
mCompatScaling = mInvCompatScaling = 1;
setTextLocales(LocaleList.getAdjustedDefault());
+ mColor = Color.pack(Color.BLACK);
}
/**
@@ -528,6 +532,7 @@
// setHinting(DisplayMetrics.DENSITY_DEVICE >= DisplayMetrics.DENSITY_TV
// ? HINTING_OFF : HINTING_ON);
+ mColor = Color.pack(Color.BLACK);
mColorFilter = null;
mMaskFilter = null;
mPathEffect = null;
@@ -549,7 +554,7 @@
mShadowLayerRadius = 0.0f;
mShadowLayerDx = 0.0f;
mShadowLayerDy = 0.0f;
- mShadowLayerColor = 0;
+ mShadowLayerColor = Color.pack(0);
}
/**
@@ -570,6 +575,7 @@
* {@link Paint}.
*/
private void setClassVariablesFrom(Paint paint) {
+ mColor = paint.mColor;
mColorFilter = paint.mColorFilter;
mMaskFilter = paint.mMaskFilter;
mPathEffect = paint.mPathEffect;
@@ -947,7 +953,7 @@
}
/**
- * Return the paint's color. Note that the color is a 32bit value
+ * Return the paint's color in sRGB. Note that the color is a 32bit value
* containing alpha as well as r,g,b. This 32bit value is not premultiplied,
* meaning that its alpha can be any value, regardless of the values of
* r,g,b. See the Color class for more details.
@@ -956,7 +962,25 @@
*/
@ColorInt
public int getColor() {
- return nGetColor(mNativePaint);
+ return Color.toArgb(mColor);
+ }
+
+ /**
+ * Return the paint's color. Note that the color is a long with an encoded
+ * {@link ColorSpace} as well as alpha and r,g,b. These values are not
+ * premultiplied, meaning that alpha can be any value, regardless of the
+ * values of r,g,b. See the {@link Color} class for more details.
+ *
+ * @see Color for APIs that help manipulate a color long.
+ *
+ * @return the paint's color (and alpha).
+ *
+ * @hide pending API approval
+ */
+ @TestApi
+ @ColorLong
+ public long getColorLong() {
+ return mColor;
}
/**
@@ -968,7 +992,33 @@
* @param color The new color (including alpha) to set in the paint.
*/
public void setColor(@ColorInt int color) {
- nSetColor(mNativePaint, color);
+ setColor(Color.pack(color));
+ }
+
+ /**
+ * Set the paint's color with a {@link ColorLong}. Note that the color is
+ * a long with an encoded {@link ColorSpace} as well as alpha and r,g,b.
+ * These values are not premultiplied, meaning that alpha can be any value,
+ * regardless of the values of r,g,b. See the {@link Color} class for more
+ * details.
+ *
+ * @param color The new color (including alpha and {@link ColorSpace})
+ * to set in the paint.
+ * @throws IllegalArgumentException if the color space encoded in the long
+ * is invalid or unknown.
+ *
+ * @hide pending API approval
+ */
+ @TestApi
+ public void setColor(@ColorLong long color) {
+ ColorSpace cs = Color.colorSpace(color);
+ float r = Color.red(color);
+ float g = Color.green(color);
+ float b = Color.blue(color);
+ float a = Color.alpha(color);
+
+ nSetColor(mNativePaint, cs, r, g, b, a);
+ mColor = color;
}
/**
@@ -979,7 +1029,7 @@
* @return the alpha component of the paint's color.
*/
public int getAlpha() {
- return nGetAlpha(mNativePaint);
+ return Math.round(Color.alpha(mColor) * 255.0f);
}
/**
@@ -990,6 +1040,13 @@
* @param a set the alpha component [0..255] of the paint's color.
*/
public void setAlpha(int a) {
+ // FIXME: No need to unpack this. Instead, just update the alpha bits.
+ // b/122959599
+ ColorSpace cs = Color.colorSpace(mColor);
+ float r = Color.red(mColor);
+ float g = Color.green(mColor);
+ float b = Color.blue(mColor);
+ mColor = Color.pack(r, g, b, a * (1.0f / 255), cs);
nSetAlpha(mNativePaint, a);
}
@@ -1370,12 +1427,40 @@
* The alpha of the shadow will be the paint's alpha if the shadow color is
* opaque, or the alpha from the shadow color if not.
*/
- public void setShadowLayer(float radius, float dx, float dy, int shadowColor) {
- mShadowLayerRadius = radius;
- mShadowLayerDx = dx;
- mShadowLayerDy = dy;
- mShadowLayerColor = shadowColor;
- nSetShadowLayer(mNativePaint, radius, dx, dy, shadowColor);
+ public void setShadowLayer(float radius, float dx, float dy, @ColorInt int shadowColor) {
+ setShadowLayer(radius, dx, dy, Color.pack(shadowColor));
+ }
+
+ /**
+ * This draws a shadow layer below the main layer, with the specified
+ * offset and color, and blur radius. If radius is 0, then the shadow
+ * layer is removed.
+ * <p>
+ * Can be used to create a blurred shadow underneath text. Support for use
+ * with other drawing operations is constrained to the software rendering
+ * pipeline.
+ * <p>
+ * The alpha of the shadow will be the paint's alpha if the shadow color is
+ * opaque, or the alpha from the shadow color if not.
+ *
+ * @throws IllegalArgumentException if the color space encoded in the long
+ * is invalid or unknown.
+ *
+ * @hide pending API approval
+ */
+ @TestApi
+ public void setShadowLayer(float radius, float dx, float dy, @ColorLong long shadowColor) {
+ ColorSpace cs = Color.colorSpace(shadowColor);
+ float r = Color.red(shadowColor);
+ float g = Color.green(shadowColor);
+ float b = Color.blue(shadowColor);
+ float a = Color.alpha(shadowColor);
+ nSetShadowLayer(mNativePaint, radius, dx, dy, cs, r, g, b, a);
+
+ mShadowLayerRadius = radius;
+ mShadowLayerDx = dx;
+ mShadowLayerDy = dy;
+ mShadowLayerColor = shadowColor;
}
/**
@@ -1422,8 +1507,20 @@
/**
* Returns the color of the shadow layer.
* @see #setShadowLayer(float,float,float,int)
+ * @see #setShadowLayer(float,float,float,long)
*/
public @ColorInt int getShadowLayerColor() {
+ return Color.toArgb(mShadowLayerColor);
+ }
+
+ /**
+ * Returns the color of the shadow layer.
+ * @see #setShadowLayer(float,float,float,int)
+ * @see #setShadowLayer(float,float,float,long)
+ * @hide pending API approval
+ */
+ @TestApi
+ public @ColorLong long getShadowLayerColorLong() {
return mShadowLayerColor;
}
@@ -2906,6 +3003,11 @@
int contextStart, int contextEnd, boolean isRtl, int offset);
private static native int nGetOffsetForAdvance(long paintPtr, char[] text, int start, int end,
int contextStart, int contextEnd, boolean isRtl, float advance);
+ private static native void nSetColor(long paintPtr, ColorSpace cs,
+ float r, float g, float b, float a);
+ private static native void nSetShadowLayer(long paintPtr,
+ float radius, float dx, float dy, ColorSpace cs,
+ float r, float g, float b, float a);
// ---------------- @FastNative ------------------------
@@ -2961,7 +3063,7 @@
int mMinikinLocaleListId);
@CriticalNative
private static native void nSetShadowLayer(long paintPtr,
- float radius, float dx, float dy, int color);
+ float radius, float dx, float dy, @ColorInt int color);
@CriticalNative
private static native boolean nHasShadowLayer(long paintPtr);
@CriticalNative
@@ -3009,12 +3111,6 @@
@CriticalNative
private static native void nSetFilterBitmap(long paintPtr, boolean filter);
@CriticalNative
- private static native int nGetColor(long paintPtr);
- @CriticalNative
- private static native void nSetColor(long paintPtr, @ColorInt int color);
- @CriticalNative
- private static native int nGetAlpha(long paintPtr);
- @CriticalNative
private static native void nSetStrikeThruText(long paintPtr, boolean strikeThruText);
@CriticalNative
private static native boolean nIsElegantTextHeight(long paintPtr);
diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp
index ad9ec02..3c35d9b 100644
--- a/libs/androidfw/AssetManager2.cpp
+++ b/libs/androidfw/AssetManager2.cpp
@@ -20,8 +20,9 @@
#include <algorithm>
#include <iterator>
-#include <set>
#include <map>
+#include <set>
+#include <sstream>
#include "android-base/logging.h"
#include "android-base/stringprintf.h"
@@ -372,6 +373,9 @@
uint32_t best_offset = 0u;
uint32_t type_flags = 0u;
+ Resolution::Step::Type resolution_type;
+ std::vector<Resolution::Step> resolution_steps;
+
// If desired_config is the same as the set configuration, then we can use our filtered list
// and we don't need to match the configurations, since they already matched.
const bool use_fast_path = desired_config == &configuration_;
@@ -403,8 +407,8 @@
// If the package is an overlay, then even configurations that are the same MUST be chosen.
const bool package_is_overlay = loaded_package->IsOverlay();
- const FilteredConfigGroup& filtered_group = loaded_package_impl.filtered_configs_[type_idx];
if (use_fast_path) {
+ const FilteredConfigGroup& filtered_group = loaded_package_impl.filtered_configs_[type_idx];
const std::vector<ResTable_config>& candidate_configs = filtered_group.configurations;
const size_t type_count = candidate_configs.size();
for (uint32_t i = 0; i < type_count; i++) {
@@ -412,21 +416,34 @@
// We can skip calling ResTable_config::match() because we know that all candidate
// configurations that do NOT match have been filtered-out.
- if ((best_config == nullptr || this_config.isBetterThan(*best_config, desired_config)) ||
- (package_is_overlay && this_config.compare(*best_config) == 0)) {
- // The configuration matches and is better than the previous selection.
- // Find the entry value if it exists for this configuration.
- const ResTable_type* type_chunk = filtered_group.types[i];
- const uint32_t offset = LoadedPackage::GetEntryOffset(type_chunk, local_entry_idx);
- if (offset == ResTable_type::NO_ENTRY) {
- continue;
- }
+ if (best_config == nullptr) {
+ resolution_type = Resolution::Step::Type::INITIAL;
+ } else if (this_config.isBetterThan(*best_config, desired_config)) {
+ resolution_type = Resolution::Step::Type::BETTER_MATCH;
+ } else if (package_is_overlay && this_config.compare(*best_config) == 0) {
+ resolution_type = Resolution::Step::Type::OVERLAID;
+ } else {
+ continue;
+ }
- best_cookie = cookie;
- best_package = loaded_package;
- best_type = type_chunk;
- best_config = &this_config;
- best_offset = offset;
+ // The configuration matches and is better than the previous selection.
+ // Find the entry value if it exists for this configuration.
+ const ResTable_type* type = filtered_group.types[i];
+ const uint32_t offset = LoadedPackage::GetEntryOffset(type, local_entry_idx);
+ if (offset == ResTable_type::NO_ENTRY) {
+ continue;
+ }
+
+ best_cookie = cookie;
+ best_package = loaded_package;
+ best_type = type;
+ best_config = &this_config;
+ best_offset = offset;
+
+ if (resource_resolution_logging_enabled_) {
+ resolution_steps.push_back(Resolution::Step{resolution_type,
+ this_config.toString(),
+ &loaded_package->GetPackageName()});
}
}
} else {
@@ -440,23 +457,38 @@
ResTable_config this_config;
this_config.copyFromDtoH((*iter)->config);
- if (this_config.match(*desired_config)) {
- if ((best_config == nullptr || this_config.isBetterThan(*best_config, desired_config)) ||
- (package_is_overlay && this_config.compare(*best_config) == 0)) {
- // The configuration matches and is better than the previous selection.
- // Find the entry value if it exists for this configuration.
- const uint32_t offset = LoadedPackage::GetEntryOffset(*iter, local_entry_idx);
- if (offset == ResTable_type::NO_ENTRY) {
- continue;
- }
+ if (!this_config.match(*desired_config)) {
+ continue;
+ }
- best_cookie = cookie;
- best_package = loaded_package;
- best_type = *iter;
- best_config_copy = this_config;
- best_config = &best_config_copy;
- best_offset = offset;
- }
+ if (best_config == nullptr) {
+ resolution_type = Resolution::Step::Type::INITIAL;
+ } else if (this_config.isBetterThan(*best_config, desired_config)) {
+ resolution_type = Resolution::Step::Type::BETTER_MATCH;
+ } else if (package_is_overlay && this_config.compare(*best_config) == 0) {
+ resolution_type = Resolution::Step::Type::OVERLAID;
+ } else {
+ continue;
+ }
+
+ // The configuration matches and is better than the previous selection.
+ // Find the entry value if it exists for this configuration.
+ const uint32_t offset = LoadedPackage::GetEntryOffset(*iter, local_entry_idx);
+ if (offset == ResTable_type::NO_ENTRY) {
+ continue;
+ }
+
+ best_cookie = cookie;
+ best_package = loaded_package;
+ best_type = *iter;
+ best_config_copy = this_config;
+ best_config = &best_config_copy;
+ best_offset = offset;
+
+ if (resource_resolution_logging_enabled_) {
+ resolution_steps.push_back(Resolution::Step{resolution_type,
+ this_config.toString(),
+ &loaded_package->GetPackageName()});
}
}
}
@@ -478,9 +510,95 @@
out_entry->entry_string_ref =
StringPoolRef(best_package->GetKeyStringPool(), best_entry->key.index);
out_entry->dynamic_ref_table = &package_group.dynamic_ref_table;
+
+ if (resource_resolution_logging_enabled_) {
+ last_resolution.resid = resid;
+ last_resolution.cookie = best_cookie;
+ last_resolution.steps = resolution_steps;
+
+ // Cache only the type/entry refs since that's all that's needed to build name
+ last_resolution.type_string_ref =
+ StringPoolRef(best_package->GetTypeStringPool(), best_type->id - 1);
+ last_resolution.entry_string_ref =
+ StringPoolRef(best_package->GetKeyStringPool(), best_entry->key.index);
+ }
+
return best_cookie;
}
+void AssetManager2::SetResourceResolutionLoggingEnabled(bool enabled) {
+ resource_resolution_logging_enabled_ = enabled;
+
+ if (!enabled) {
+ last_resolution.cookie = kInvalidCookie;
+ last_resolution.resid = 0;
+ last_resolution.steps.clear();
+ last_resolution.type_string_ref = StringPoolRef();
+ last_resolution.entry_string_ref = StringPoolRef();
+ }
+}
+
+std::string AssetManager2::GetLastResourceResolution() const {
+ if (!resource_resolution_logging_enabled_) {
+ LOG(ERROR) << "Must enable resource resolution logging before getting path.";
+ return std::string();
+ }
+
+ auto cookie = last_resolution.cookie;
+ if (cookie == kInvalidCookie) {
+ LOG(ERROR) << "AssetManager hasn't resolved a resource to read resolution path.";
+ return std::string();
+ }
+
+ uint32_t resid = last_resolution.resid;
+ std::vector<Resolution::Step>& steps = last_resolution.steps;
+
+ ResourceName resource_name;
+ std::string resource_name_string;
+
+ const LoadedPackage* package =
+ apk_assets_[cookie]->GetLoadedArsc()->GetPackageById(get_package_id(resid));
+
+ if (package != nullptr) {
+ ToResourceName(last_resolution.type_string_ref,
+ last_resolution.entry_string_ref,
+ package,
+ &resource_name);
+ resource_name_string = ToFormattedResourceString(&resource_name);
+ }
+
+ std::stringstream log_stream;
+ log_stream << base::StringPrintf("Resolution for 0x%08x ", resid)
+ << resource_name_string
+ << "\n\tFor config -"
+ << configuration_.toString();
+
+ std::string prefix;
+ for (Resolution::Step step : steps) {
+ switch (step.type) {
+ case Resolution::Step::Type::INITIAL:
+ prefix = "Found initial";
+ break;
+ case Resolution::Step::Type::BETTER_MATCH:
+ prefix = "Found better";
+ break;
+ case Resolution::Step::Type::OVERLAID:
+ prefix = "Overlaid";
+ break;
+ }
+
+ if (!prefix.empty()) {
+ log_stream << "\n\t" << prefix << ": " << *step.package_name;
+
+ if (!step.config_name.isEmpty()) {
+ log_stream << " -" << step.config_name;
+ }
+ }
+ }
+
+ return log_stream.str();
+}
+
bool AssetManager2::GetResourceName(uint32_t resid, ResourceName* out_name) const {
FindEntryResult entry;
ApkAssetsCookie cookie =
@@ -495,27 +613,10 @@
return false;
}
- out_name->package = package->GetPackageName().data();
- out_name->package_len = package->GetPackageName().size();
-
- out_name->type = entry.type_string_ref.string8(&out_name->type_len);
- out_name->type16 = nullptr;
- if (out_name->type == nullptr) {
- out_name->type16 = entry.type_string_ref.string16(&out_name->type_len);
- if (out_name->type16 == nullptr) {
- return false;
- }
- }
-
- out_name->entry = entry.entry_string_ref.string8(&out_name->entry_len);
- out_name->entry16 = nullptr;
- if (out_name->entry == nullptr) {
- out_name->entry16 = entry.entry_string_ref.string16(&out_name->entry_len);
- if (out_name->entry16 == nullptr) {
- return false;
- }
- }
- return true;
+ return ToResourceName(entry.type_string_ref,
+ entry.entry_string_ref,
+ package,
+ out_name);
}
bool AssetManager2::GetResourceFlags(uint32_t resid, uint32_t* out_flags) const {
diff --git a/libs/androidfw/AttributeResolution.cpp b/libs/androidfw/AttributeResolution.cpp
index 3dc1f2c..18d74ef 100644
--- a/libs/androidfw/AttributeResolution.cpp
+++ b/libs/androidfw/AttributeResolution.cpp
@@ -286,6 +286,7 @@
value.dataType = Res_value::TYPE_NULL;
value.data = Res_value::DATA_NULL_UNDEFINED;
config.density = 0;
+ uint32_t source_style_resid = 0;
// Try to find a value for this attribute... we prioritize values
// coming from, first XML attributes, then XML style, then default
@@ -309,6 +310,7 @@
cookie = entry->cookie;
type_set_flags = style_flags;
value = entry->value;
+ source_style_resid = entry->style;
if (kDebugStyles) {
ALOGI("-> From style: type=0x%x, data=0x%08x, style=0x%08x", value.dataType, value.data,
entry->style);
@@ -325,8 +327,10 @@
type_set_flags = def_style_flags;
value = entry->value;
if (kDebugStyles) {
- ALOGI("-> From def style: type=0x%x, data=0x%08x", value.dataType, value.data);
+ ALOGI("-> From def style: type=0x%x, data=0x%08x, style=0x%08x", value.dataType, value.data,
+ entry->style);
}
+ source_style_resid = entry->style;
}
}
@@ -382,6 +386,7 @@
out_values[STYLE_RESOURCE_ID] = resid;
out_values[STYLE_CHANGING_CONFIGURATIONS] = type_set_flags;
out_values[STYLE_DENSITY] = config.density;
+ out_values[SYTLE_SOURCE_STYLE] = source_style_resid;
if (value.dataType != Res_value::TYPE_NULL || value.data == Res_value::DATA_NULL_EMPTY) {
indices_idx++;
diff --git a/libs/androidfw/CursorWindow.cpp b/libs/androidfw/CursorWindow.cpp
index 5694115..a99e77f 100644
--- a/libs/androidfw/CursorWindow.cpp
+++ b/libs/androidfw/CursorWindow.cpp
@@ -94,7 +94,7 @@
if (size < 0) {
result = UNKNOWN_ERROR;
} else {
- int dupAshmemFd = ::dup(ashmemFd);
+ int dupAshmemFd = ::fcntl(ashmemFd, F_DUPFD_CLOEXEC, 0);
if (dupAshmemFd < 0) {
result = -errno;
} else {
diff --git a/libs/androidfw/LoadedArsc.cpp b/libs/androidfw/LoadedArsc.cpp
index 5a26780..70ce9bc 100644
--- a/libs/androidfw/LoadedArsc.cpp
+++ b/libs/androidfw/LoadedArsc.cpp
@@ -593,7 +593,12 @@
return {};
}
- // Iterate over the overlayable policy chunks
+ std::string name;
+ util::ReadUtf16StringFromDevice(header->name, arraysize(header->name), &name);
+ std::string actor;
+ util::ReadUtf16StringFromDevice(header->actor, arraysize(header->actor), &actor);
+
+ // Iterate over the overlayable policy chunks contained within the overlayable chunk data
ChunkIterator overlayable_iter(child_chunk.data_ptr(), child_chunk.data_size());
while (overlayable_iter.HasNext()) {
const Chunk overlayable_child_chunk = overlayable_iter.Next();
@@ -613,7 +618,7 @@
return {};
}
- // Retrieve all the ids belonging to this policy
+ // Retrieve all the resource ids belonging to this policy chunk
std::unordered_set<uint32_t> ids;
const auto ids_begin =
reinterpret_cast<const ResTable_ref*>(overlayable_child_chunk.data_ptr());
@@ -622,8 +627,10 @@
ids.insert(dtohl(id_iter->ident));
}
- // Add the pairing of overlayable properties to resource ids to the package
+ // Add the pairing of overlayable properties and resource ids to the package
OverlayableInfo overlayable_info{};
+ overlayable_info.name = name;
+ overlayable_info.actor = actor;
overlayable_info.policy_flags = policy_header->policy_flags;
loaded_package->overlayable_infos_.push_back(std::make_pair(overlayable_info, ids));
break;
@@ -636,7 +643,7 @@
}
if (overlayable_iter.HadError()) {
- LOG(ERROR) << StringPrintf("Error parsing RES_TABLE_OVERLAYABLE_POLICY_TYPE: %s",
+ LOG(ERROR) << StringPrintf("Error parsing RES_TABLE_OVERLAYABLE_TYPE: %s",
overlayable_iter.GetLastError().c_str());
if (overlayable_iter.HadFatalError()) {
return {};
diff --git a/libs/androidfw/ResourceUtils.cpp b/libs/androidfw/ResourceUtils.cpp
index d63feb01..645984d 100644
--- a/libs/androidfw/ResourceUtils.cpp
+++ b/libs/androidfw/ResourceUtils.cpp
@@ -48,4 +48,65 @@
!(has_type_separator && out_type->empty());
}
+bool ToResourceName(StringPoolRef& type_string_ref,
+ StringPoolRef& entry_string_ref,
+ const LoadedPackage* package,
+ AssetManager2::ResourceName* out_name) {
+ out_name->package = package->GetPackageName().data();
+ out_name->package_len = package->GetPackageName().size();
+
+ out_name->type = type_string_ref.string8(&out_name->type_len);
+ out_name->type16 = nullptr;
+ if (out_name->type == nullptr) {
+ out_name->type16 = type_string_ref.string16(&out_name->type_len);
+ if (out_name->type16 == nullptr) {
+ return false;
+ }
+ }
+
+ out_name->entry = entry_string_ref.string8(&out_name->entry_len);
+ out_name->entry16 = nullptr;
+ if (out_name->entry == nullptr) {
+ out_name->entry16 = entry_string_ref.string16(&out_name->entry_len);
+ if (out_name->entry16 == nullptr) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+std::string ToFormattedResourceString(AssetManager2::ResourceName* resource_name) {
+ std::string result;
+ if (resource_name->package != nullptr) {
+ result.append(resource_name->package, resource_name->package_len);
+ }
+
+ if (resource_name->type != nullptr || resource_name->type16 != nullptr) {
+ if (!result.empty()) {
+ result += ":";
+ }
+
+ if (resource_name->type != nullptr) {
+ result.append(resource_name->type, resource_name->type_len);
+ } else {
+ result += util::Utf16ToUtf8(StringPiece16(resource_name->type16, resource_name->type_len));
+ }
+ }
+
+ if (resource_name->entry != nullptr || resource_name->entry16 != nullptr) {
+ if (!result.empty()) {
+ result += "/";
+ }
+
+ if (resource_name->entry != nullptr) {
+ result.append(resource_name->entry, resource_name->entry_len);
+ } else {
+ result += util::Utf16ToUtf8(StringPiece16(resource_name->entry16, resource_name->entry_len));
+ }
+ }
+
+ return result;
+}
+
} // namespace android
diff --git a/libs/androidfw/include/androidfw/AssetManager2.h b/libs/androidfw/include/androidfw/AssetManager2.h
index 0d49298..f29769b 100644
--- a/libs/androidfw/include/androidfw/AssetManager2.h
+++ b/libs/androidfw/include/androidfw/AssetManager2.h
@@ -229,6 +229,14 @@
ResTable_config* in_out_selected_config, uint32_t* in_out_flags,
uint32_t* out_last_reference) const;
+ // Enables or disables resource resolution logging. Clears stored steps when
+ // disabled.
+ void SetResourceResolutionLoggingEnabled(bool enabled);
+
+ // Returns formatted log of last resource resolution path, or empty if no
+ // resource has been resolved yet.
+ std::string GetLastResourceResolution() const;
+
// Retrieves the best matching bag/map resource with ID `resid`.
// This method will resolve all parent references for this bag and merge keys with the child.
// To iterate over the keys, use the following idiom:
@@ -346,6 +354,48 @@
// Cached set of bags. These are cached because they can inherit keys from parent bags,
// which involves some calculation.
std::unordered_map<uint32_t, util::unique_cptr<ResolvedBag>> cached_bags_;
+
+ // Whether or not to save resource resolution steps
+ bool resource_resolution_logging_enabled_ = false;
+
+ struct Resolution {
+
+ struct Step {
+
+ enum class Type {
+ INITIAL,
+ BETTER_MATCH,
+ OVERLAID
+ };
+
+ // Marks what kind of override this step was.
+ Type type;
+
+ // Built name of configuration for this step.
+ String8 config_name;
+
+ // Marks the package name of the better resource found in this step.
+ const std::string* package_name;
+ };
+
+ // Last resolved resource ID.
+ uint32_t resid;
+
+ // Last resolved resource result cookie.
+ ApkAssetsCookie cookie = kInvalidCookie;
+
+ // Last resolved resource type.
+ StringPoolRef type_string_ref;
+
+ // Last resolved resource entry.
+ StringPoolRef entry_string_ref;
+
+ // Steps taken to resolve last resource.
+ std::vector<Step> steps;
+ };
+
+ // Record of the last resolved resource's resolution path.
+ mutable Resolution last_resolution;
};
class Theme {
diff --git a/libs/androidfw/include/androidfw/AttributeResolution.h b/libs/androidfw/include/androidfw/AttributeResolution.h
index 35ef98d..c88004c 100644
--- a/libs/androidfw/include/androidfw/AttributeResolution.h
+++ b/libs/androidfw/include/androidfw/AttributeResolution.h
@@ -23,15 +23,17 @@
namespace android {
// Offsets into the outValues array populated by the methods below. outValues is a uint32_t
-// array, but each logical element takes up 6 uint32_t-sized physical elements.
+// array, but each logical element takes up 7 uint32_t-sized physical elements.
+// Keep these in sync with android.content.res.TypedArray java class
enum {
- STYLE_NUM_ENTRIES = 6,
+ STYLE_NUM_ENTRIES = 7,
STYLE_TYPE = 0,
STYLE_DATA = 1,
STYLE_ASSET_COOKIE = 2,
STYLE_RESOURCE_ID = 3,
STYLE_CHANGING_CONFIGURATIONS = 4,
- STYLE_DENSITY = 5
+ STYLE_DENSITY = 5,
+ SYTLE_SOURCE_STYLE = 6
};
// These are all variations of the same method. They each perform the exact same operation,
diff --git a/libs/androidfw/include/androidfw/LoadedArsc.h b/libs/androidfw/include/androidfw/LoadedArsc.h
index 8c5c3b7..be62f30 100644
--- a/libs/androidfw/include/androidfw/LoadedArsc.h
+++ b/libs/androidfw/include/androidfw/LoadedArsc.h
@@ -78,6 +78,8 @@
using TypeSpecPtr = util::unique_cptr<TypeSpec>;
struct OverlayableInfo {
+ std::string name;
+ std::string actor;
uint32_t policy_flags;
};
diff --git a/libs/androidfw/include/androidfw/ResourceTypes.h b/libs/androidfw/include/androidfw/ResourceTypes.h
index 9b05d1f..1655e89 100644
--- a/libs/androidfw/include/androidfw/ResourceTypes.h
+++ b/libs/androidfw/include/androidfw/ResourceTypes.h
@@ -1611,6 +1611,12 @@
struct ResTable_overlayable_header
{
struct ResChunk_header header;
+
+ // The name of the overlayable set of resources that overlays target.
+ uint16_t name[256];
+
+ // The component responsible for enabling and disabling overlays targeting this chunk.
+ uint16_t actor[256];
};
/**
@@ -1637,10 +1643,6 @@
// The overlay must reside of the product partition or must have existed on the product
// partition before an upgrade to overlay these resources.
POLICY_PRODUCT_PARTITION = 0x00000008,
-
- // The overlay must reside of the product services partition or must have existed on the product
- // services partition before an upgrade to overlay these resources.
- POLICY_PRODUCT_SERVICES_PARTITION = 0x00000010,
};
uint32_t policy_flags;
diff --git a/libs/androidfw/include/androidfw/ResourceUtils.h b/libs/androidfw/include/androidfw/ResourceUtils.h
index d94779b..eb6eb8e 100644
--- a/libs/androidfw/include/androidfw/ResourceUtils.h
+++ b/libs/androidfw/include/androidfw/ResourceUtils.h
@@ -17,6 +17,7 @@
#ifndef ANDROIDFW_RESOURCEUTILS_H
#define ANDROIDFW_RESOURCEUTILS_H
+#include "androidfw/AssetManager2.h"
#include "androidfw/StringPiece.h"
namespace android {
@@ -27,6 +28,17 @@
bool ExtractResourceName(const StringPiece& str, StringPiece* out_package, StringPiece* out_type,
StringPiece* out_entry);
+// Convert a type_string_ref, entry_string_ref, and package
+// to AssetManager2::ResourceName. Useful for getting
+// resource name without re-running AssetManager2::FindEntry searches.
+bool ToResourceName(StringPoolRef& type_string_ref,
+ StringPoolRef& entry_string_ref,
+ const LoadedPackage* package,
+ AssetManager2::ResourceName* out_name);
+
+// Formats a ResourceName to "package:type/entry_name".
+std::string ToFormattedResourceString(AssetManager2::ResourceName* resource_name);
+
inline uint32_t fix_package_id(uint32_t resid, uint8_t package_id) {
return (resid & 0x00ffffffu) | (static_cast<uint32_t>(package_id) << 24);
}
diff --git a/libs/androidfw/tests/AssetManager2_test.cpp b/libs/androidfw/tests/AssetManager2_test.cpp
index 5449a54..105dcd2 100644
--- a/libs/androidfw/tests/AssetManager2_test.cpp
+++ b/libs/androidfw/tests/AssetManager2_test.cpp
@@ -586,4 +586,111 @@
EXPECT_THAT(asset_dir->getFileType(2), Eq(FileType::kFileTypeDirectory));
}
+TEST_F(AssetManager2Test, GetLastPathWithoutEnablingReturnsEmpty) {
+ ResTable_config desired_config;
+
+ AssetManager2 assetmanager;
+ assetmanager.SetConfiguration(desired_config);
+ assetmanager.SetApkAssets({basic_assets_.get()});
+ assetmanager.SetResourceResolutionLoggingEnabled(false);
+
+ Res_value value;
+ ResTable_config selected_config;
+ uint32_t flags;
+
+ ApkAssetsCookie cookie =
+ assetmanager.GetResource(basic::R::string::test1, false /*may_be_bag*/,
+ 0 /*density_override*/, &value, &selected_config, &flags);
+ ASSERT_NE(kInvalidCookie, cookie);
+
+ auto result = assetmanager.GetLastResourceResolution();
+ EXPECT_EQ("", result);
+}
+
+TEST_F(AssetManager2Test, GetLastPathWithoutResolutionReturnsEmpty) {
+ ResTable_config desired_config;
+
+ AssetManager2 assetmanager;
+ assetmanager.SetConfiguration(desired_config);
+ assetmanager.SetApkAssets({basic_assets_.get()});
+
+ auto result = assetmanager.GetLastResourceResolution();
+ EXPECT_EQ("", result);
+}
+
+TEST_F(AssetManager2Test, GetLastPathWithSingleApkAssets) {
+ ResTable_config desired_config;
+ memset(&desired_config, 0, sizeof(desired_config));
+ desired_config.language[0] = 'd';
+ desired_config.language[1] = 'e';
+
+ AssetManager2 assetmanager;
+ assetmanager.SetResourceResolutionLoggingEnabled(true);
+ assetmanager.SetConfiguration(desired_config);
+ assetmanager.SetApkAssets({basic_assets_.get()});
+
+ Res_value value;
+ ResTable_config selected_config;
+ uint32_t flags;
+
+ ApkAssetsCookie cookie =
+ assetmanager.GetResource(basic::R::string::test1, false /*may_be_bag*/,
+ 0 /*density_override*/, &value, &selected_config, &flags);
+ ASSERT_NE(kInvalidCookie, cookie);
+
+ auto result = assetmanager.GetLastResourceResolution();
+ EXPECT_EQ("Resolution for 0x7f030000 com.android.basic:string/test1\n\tFor config -de\n\tFound initial: com.android.basic", result);
+}
+
+TEST_F(AssetManager2Test, GetLastPathWithMultipleApkAssets) {
+ ResTable_config desired_config;
+ memset(&desired_config, 0, sizeof(desired_config));
+ desired_config.language[0] = 'd';
+ desired_config.language[1] = 'e';
+
+ AssetManager2 assetmanager;
+ assetmanager.SetResourceResolutionLoggingEnabled(true);
+ assetmanager.SetConfiguration(desired_config);
+ assetmanager.SetApkAssets({basic_assets_.get(), basic_de_fr_assets_.get()});
+
+ Res_value value = Res_value();
+ ResTable_config selected_config;
+ uint32_t flags;
+
+ ApkAssetsCookie cookie =
+ assetmanager.GetResource(basic::R::string::test1, false /*may_be_bag*/,
+ 0 /*density_override*/, &value, &selected_config, &flags);
+ ASSERT_NE(kInvalidCookie, cookie);
+
+ auto result = assetmanager.GetLastResourceResolution();
+ EXPECT_EQ("Resolution for 0x7f030000 com.android.basic:string/test1\n\tFor config -de\n\tFound initial: com.android.basic\n\tFound better: com.android.basic -de", result);
+}
+
+TEST_F(AssetManager2Test, GetLastPathAfterDisablingReturnsEmpty) {
+ ResTable_config desired_config;
+ memset(&desired_config, 0, sizeof(desired_config));
+
+ AssetManager2 assetmanager;
+ assetmanager.SetResourceResolutionLoggingEnabled(true);
+ assetmanager.SetConfiguration(desired_config);
+ assetmanager.SetApkAssets({basic_assets_.get()});
+
+ Res_value value = Res_value();
+ ResTable_config selected_config;
+ uint32_t flags;
+
+ ApkAssetsCookie cookie =
+ assetmanager.GetResource(basic::R::string::test1, false /*may_be_bag*/,
+ 0 /*density_override*/, &value, &selected_config, &flags);
+ ASSERT_NE(kInvalidCookie, cookie);
+
+ auto resultEnabled = assetmanager.GetLastResourceResolution();
+ ASSERT_NE("", resultEnabled);
+
+ assetmanager.SetResourceResolutionLoggingEnabled(false);
+
+ auto resultDisabled = assetmanager.GetLastResourceResolution();
+ EXPECT_EQ("", resultDisabled);
+}
+
} // namespace android
diff --git a/libs/androidfw/tests/LoadedArsc_test.cpp b/libs/androidfw/tests/LoadedArsc_test.cpp
index 22d587a..b8d3c6b 100644
--- a/libs/androidfw/tests/LoadedArsc_test.cpp
+++ b/libs/androidfw/tests/LoadedArsc_test.cpp
@@ -294,22 +294,29 @@
info = package->GetOverlayableInfo(overlayable::R::string::overlayable1);
ASSERT_THAT(info, NotNull());
+ EXPECT_THAT(info->name, Eq("OverlayableResources1"));
+ EXPECT_THAT(info->actor, Eq("overlay://theme"));
EXPECT_THAT(info->policy_flags, Eq(ResTable_overlayable_policy_header::POLICY_PUBLIC));
info = package->GetOverlayableInfo(overlayable::R::string::overlayable2);
ASSERT_THAT(info, NotNull());
+ EXPECT_THAT(info->name, Eq("OverlayableResources1"));
+ EXPECT_THAT(info->actor, Eq("overlay://theme"));
EXPECT_THAT(info->policy_flags,
Eq(ResTable_overlayable_policy_header::POLICY_SYSTEM_PARTITION
| ResTable_overlayable_policy_header::POLICY_PRODUCT_PARTITION));
info = package->GetOverlayableInfo(overlayable::R::string::overlayable3);
ASSERT_THAT(info, NotNull());
+ EXPECT_THAT(info->name, Eq("OverlayableResources2"));
+ EXPECT_THAT(info->actor, Eq("overlay://com.android.overlayable"));
EXPECT_THAT(info->policy_flags,
Eq(ResTable_overlayable_policy_header::POLICY_VENDOR_PARTITION
- | ResTable_overlayable_policy_header::POLICY_PRODUCT_SERVICES_PARTITION
| ResTable_overlayable_policy_header::POLICY_PRODUCT_PARTITION));
info = package->GetOverlayableInfo(overlayable::R::string::overlayable4);
+ EXPECT_THAT(info->name, Eq("OverlayableResources1"));
+ EXPECT_THAT(info->actor, Eq("overlay://theme"));
ASSERT_THAT(info, NotNull());
EXPECT_THAT(info->policy_flags, Eq(ResTable_overlayable_policy_header::POLICY_PUBLIC));
}
diff --git a/libs/androidfw/tests/data/overlayable/overlayable.apk b/libs/androidfw/tests/data/overlayable/overlayable.apk
index 85ab4be..047e6af 100644
--- a/libs/androidfw/tests/data/overlayable/overlayable.apk
+++ b/libs/androidfw/tests/data/overlayable/overlayable.apk
Binary files differ
diff --git a/libs/androidfw/tests/data/overlayable/res/values/overlayable.xml b/libs/androidfw/tests/data/overlayable/res/values/overlayable.xml
index 11aa735..fcdbe94 100644
--- a/libs/androidfw/tests/data/overlayable/res/values/overlayable.xml
+++ b/libs/androidfw/tests/data/overlayable/res/values/overlayable.xml
@@ -15,7 +15,7 @@
-->
<resources>
-<overlayable>
+<overlayable name="OverlayableResources1" actor="overlay://theme">
<!-- Any overlay can overlay the value of @string/overlayable1 -->
<item type="string" name="overlayable1" />
@@ -31,10 +31,10 @@
</policy>
</overlayable>
-<overlayable>
- <!-- Any overlay on the product_services, vendor, or product partition can overlay the value of
- @string/overlayable3 -->
- <policy type="product_services|vendor|product">
+<overlayable name="OverlayableResources2" actor="overlay://com.android.overlayable">
+ <!-- Any overlay on the vendor or product partition can overlay the value of
+ @string/overlayable3 -->
+ <policy type="vendor|product">
<item type="string" name="overlayable3" />
</policy>
</overlayable>
diff --git a/libs/hwui/DeviceInfo.cpp b/libs/hwui/DeviceInfo.cpp
index ed167e5..56b1885 100644
--- a/libs/hwui/DeviceInfo.cpp
+++ b/libs/hwui/DeviceInfo.cpp
@@ -79,8 +79,7 @@
switch (wcgDataspace) {
case ui::Dataspace::DISPLAY_P3:
*colorGamut = SkColorSpace::Gamut::kDCIP3_D65_Gamut;
- *colorSpace = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
- SkColorSpace::Gamut::kDCIP3_D65_Gamut);
+ *colorSpace = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3);
break;
case ui::Dataspace::V0_SCRGB:
*colorGamut = SkColorSpace::Gamut::kSRGB_Gamut;
diff --git a/libs/hwui/WebViewFunctorManager.cpp b/libs/hwui/WebViewFunctorManager.cpp
index 9170d6d..68541b4 100644
--- a/libs/hwui/WebViewFunctorManager.cpp
+++ b/libs/hwui/WebViewFunctorManager.cpp
@@ -86,6 +86,26 @@
mCallbacks.gles.draw(mFunctor, mData, drawInfo);
}
+void WebViewFunctor::initVk(const VkFunctorInitParams& params) {
+ ATRACE_NAME("WebViewFunctor::initVk");
+ if (!mHasContext) {
+ mHasContext = true;
+ } else {
+ return;
+ }
+ mCallbacks.vk.initialize(mFunctor, mData, params);
+}
+
+void WebViewFunctor::drawVk(const VkFunctorDrawParams& params) {
+ ATRACE_NAME("WebViewFunctor::drawVk");
+ mCallbacks.vk.draw(mFunctor, mData, params);
+}
+
+void WebViewFunctor::postDrawVk() {
+ ATRACE_NAME("WebViewFunctor::postDrawVk");
+ mCallbacks.vk.postDraw(mFunctor, mData);
+}
+
void WebViewFunctor::destroyContext() {
if (mHasContext) {
mHasContext = false;
diff --git a/libs/hwui/WebViewFunctorManager.h b/libs/hwui/WebViewFunctorManager.h
index 1719ce7..2846cb1 100644
--- a/libs/hwui/WebViewFunctorManager.h
+++ b/libs/hwui/WebViewFunctorManager.h
@@ -42,6 +42,12 @@
void drawGl(const DrawGlInfo& drawInfo) const { mReference.drawGl(drawInfo); }
+ void initVk(const VkFunctorInitParams& params) { mReference.initVk(params); }
+
+ void drawVk(const VkFunctorDrawParams& params) { mReference.drawVk(params); }
+
+ void postDrawVk() { mReference.postDrawVk(); }
+
private:
friend class WebViewFunctor;
@@ -53,6 +59,9 @@
int id() const { return mFunctor; }
void sync(const WebViewSyncData& syncData) const;
void drawGl(const DrawGlInfo& drawInfo);
+ void initVk(const VkFunctorInitParams& params);
+ void drawVk(const VkFunctorDrawParams& params);
+ void postDrawVk();
void destroyContext();
sp<Handle> createHandle() {
diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp
index 4338b1c..cfbb995 100644
--- a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp
@@ -96,11 +96,12 @@
SkASSERT(mRenderThread.getGrContext() != nullptr);
sk_sp<SkSurface> surface(SkSurface::MakeFromBackendRenderTarget(
- mRenderThread.getGrContext(), backendRT, kBottomLeft_GrSurfaceOrigin, colorType,
+ mRenderThread.getGrContext(), backendRT, this->getSurfaceOrigin(), colorType,
mSurfaceColorSpace, &props));
SkiaPipeline::updateLighting(lightGeometry, lightInfo);
- renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface);
+ renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
+ SkMatrix::I());
layerUpdateQueue->clear();
// Draw visual debugging features
diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h
index 47991069..6692922 100644
--- a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h
+++ b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h
@@ -39,6 +39,7 @@
const Rect& contentDrawBounds, bool opaque, const LightInfo& lightInfo,
const std::vector<sp<RenderNode> >& renderNodes,
FrameInfoVisualizer* profiler) override;
+ GrSurfaceOrigin getSurfaceOrigin() override { return kBottomLeft_GrSurfaceOrigin; }
bool swapBuffers(const renderthread::Frame& frame, bool drew, const SkRect& screenDirty,
FrameInfo* currentFrameInfo, bool* requireSwap) override;
DeferredLayerUpdater* createTextureLayer() override;
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
index 2e7850d..df82243 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
@@ -174,7 +174,8 @@
SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
SkASSERT(mRenderThread.getGrContext() != nullptr);
node->setLayerSurface(SkSurface::MakeRenderTarget(mRenderThread.getGrContext(),
- SkBudgeted::kYes, info, 0, &props));
+ SkBudgeted::kYes, info, 0,
+ this->getSurfaceOrigin(), &props));
if (node->getLayerSurface()) {
// update the transform in window of the layer to reset its origin wrt light source
// position
@@ -311,7 +312,8 @@
void SkiaPipeline::renderFrame(const LayerUpdateQueue& layers, const SkRect& clip,
const std::vector<sp<RenderNode>>& nodes, bool opaque,
- const Rect& contentDrawBounds, sk_sp<SkSurface> surface) {
+ const Rect& contentDrawBounds, sk_sp<SkSurface> surface,
+ const SkMatrix& preTransform) {
renderVectorDrawableCache();
// draw all layers up front
@@ -322,12 +324,12 @@
std::unique_ptr<SkPictureRecorder> recorder;
SkCanvas* canvas = tryCapture(surface.get());
- renderFrameImpl(layers, clip, nodes, opaque, contentDrawBounds, canvas);
+ renderFrameImpl(layers, clip, nodes, opaque, contentDrawBounds, canvas, preTransform);
endCapture(surface.get());
if (CC_UNLIKELY(Properties::debugOverdraw)) {
- renderOverdraw(layers, clip, nodes, contentDrawBounds, surface);
+ renderOverdraw(layers, clip, nodes, contentDrawBounds, surface, preTransform);
}
ATRACE_NAME("flush commands");
@@ -343,9 +345,11 @@
void SkiaPipeline::renderFrameImpl(const LayerUpdateQueue& layers, const SkRect& clip,
const std::vector<sp<RenderNode>>& nodes, bool opaque,
- const Rect& contentDrawBounds, SkCanvas* canvas) {
+ const Rect& contentDrawBounds, SkCanvas* canvas,
+ const SkMatrix& preTransform) {
SkAutoCanvasRestore saver(canvas, true);
- canvas->androidFramework_setDeviceClipRestriction(clip.roundOut());
+ canvas->androidFramework_setDeviceClipRestriction(preTransform.mapRect(clip).roundOut());
+ canvas->concat(preTransform);
// STOPSHIP: Revert, temporary workaround to clear always F16 frame buffer for b/74976293
if (!opaque || getSurfaceColorType() == kRGBA_F16_SkColorType) {
@@ -485,7 +489,8 @@
void SkiaPipeline::renderOverdraw(const LayerUpdateQueue& layers, const SkRect& clip,
const std::vector<sp<RenderNode>>& nodes,
- const Rect& contentDrawBounds, sk_sp<SkSurface> surface) {
+ const Rect& contentDrawBounds, sk_sp<SkSurface> surface,
+ const SkMatrix& preTransform) {
// Set up the overdraw canvas.
SkImageInfo offscreenInfo = SkImageInfo::MakeA8(surface->width(), surface->height());
sk_sp<SkSurface> offscreen = surface->makeSurface(offscreenInfo);
@@ -495,7 +500,7 @@
// each time a pixel would have been drawn.
// Pass true for opaque so we skip the clear - the overdrawCanvas is already zero
// initialized.
- renderFrameImpl(layers, clip, nodes, true, contentDrawBounds, &overdrawCanvas);
+ renderFrameImpl(layers, clip, nodes, true, contentDrawBounds, &overdrawCanvas, preTransform);
sk_sp<SkImage> counts = offscreen->makeImageSnapshot();
// Draw overdraw colors to the canvas. The color filter will convert counts to colors.
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.h b/libs/hwui/pipeline/skia/SkiaPipeline.h
index ff87313..cf6f5b2 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.h
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.h
@@ -48,12 +48,13 @@
bool createOrUpdateLayer(RenderNode* node, const DamageAccumulator& damageAccumulator,
ErrorHandler* errorHandler) override;
- SkColorType getSurfaceColorType() const { return mSurfaceColorType; }
+ SkColorType getSurfaceColorType() const override { return mSurfaceColorType; }
sk_sp<SkColorSpace> getSurfaceColorSpace() override { return mSurfaceColorSpace; }
void renderFrame(const LayerUpdateQueue& layers, const SkRect& clip,
const std::vector<sp<RenderNode>>& nodes, bool opaque,
- const Rect& contentDrawBounds, sk_sp<SkSurface> surface);
+ const Rect& contentDrawBounds, sk_sp<SkSurface> surface,
+ const SkMatrix& preTransform);
std::vector<VectorDrawableRoot*>* getVectorDrawables() { return &mVectorDrawables; }
@@ -116,7 +117,8 @@
private:
void renderFrameImpl(const LayerUpdateQueue& layers, const SkRect& clip,
const std::vector<sp<RenderNode>>& nodes, bool opaque,
- const Rect& contentDrawBounds, SkCanvas* canvas);
+ const Rect& contentDrawBounds, SkCanvas* canvas,
+ const SkMatrix& preTransform);
/**
* Debugging feature. Draws a semi-transparent overlay on each pixel, indicating
@@ -124,7 +126,7 @@
*/
void renderOverdraw(const LayerUpdateQueue& layers, const SkRect& clip,
const std::vector<sp<RenderNode>>& nodes, const Rect& contentDrawBounds,
- sk_sp<SkSurface>);
+ sk_sp<SkSurface> surface, const SkMatrix& preTransform);
/**
* Render mVectorDrawables into offscreen buffers.
diff --git a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp
index 6eefed9..d54275f 100644
--- a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp
+++ b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp
@@ -125,8 +125,6 @@
uirenderer::GlFunctorLifecycleListener* listener) {
FunctorDrawable* functorDrawable;
if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) {
- // TODO(cblume) use VkFunctorDrawable instead of VkInteropFunctorDrawable here when the
- // interop is disabled/moved.
functorDrawable = mDisplayList->allocateDrawable<VkInteropFunctorDrawable>(
functor, listener, asSkCanvas());
} else {
diff --git a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp
index b9aae98..53495a7 100644
--- a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp
@@ -58,7 +58,8 @@
return Frame(-1, -1, 0);
}
- Frame frame(backBuffer->width(), backBuffer->height(), mVkManager.getAge(mVkSurface));
+ Frame frame(mVkSurface->windowWidth(), mVkSurface->windowHeight(),
+ mVkManager.getAge(mVkSurface));
return frame;
}
@@ -73,7 +74,8 @@
return false;
}
SkiaPipeline::updateLighting(lightGeometry, lightInfo);
- renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, backBuffer);
+ renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds,
+ backBuffer, mVkSurface->preTransform());
ShaderCache::get().onVkFrameFlushed(mRenderThread.getGrContext());
layerUpdateQueue->clear();
diff --git a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h
index 53ffc44..9343076 100644
--- a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h
+++ b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h
@@ -35,6 +35,7 @@
const Rect& contentDrawBounds, bool opaque, const LightInfo& lightInfo,
const std::vector<sp<RenderNode> >& renderNodes,
FrameInfoVisualizer* profiler) override;
+ GrSurfaceOrigin getSurfaceOrigin() override { return kTopLeft_GrSurfaceOrigin; }
bool swapBuffers(const renderthread::Frame& frame, bool drew, const SkRect& screenDirty,
FrameInfo* currentFrameInfo, bool* requireSwap) override;
DeferredLayerUpdater* createTextureLayer() override;
diff --git a/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp b/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp
index 156f74a..2f8d381 100644
--- a/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp
+++ b/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp
@@ -17,6 +17,8 @@
#include "VkFunctorDrawable.h"
#include <private/hwui/DrawVkInfo.h>
+#include "renderthread/VulkanManager.h"
+#include "renderthread/RenderThread.h"
#include <GrBackendDrawableInfo.h>
#include <SkImage.h>
#include <utils/Color.h>
@@ -31,34 +33,58 @@
namespace uirenderer {
namespace skiapipeline {
-VkFunctorDrawHandler::VkFunctorDrawHandler(Functor* functor) : INHERITED(), mFunctor(functor) {}
+VkFunctorDrawHandler::VkFunctorDrawHandler(sp<WebViewFunctor::Handle> functor_handle,
+ const SkMatrix& matrix, const SkIRect& clip,
+ const SkImageInfo& image_info)
+ : INHERITED()
+ , mFunctorHandle(functor_handle)
+ , mMatrix(matrix)
+ , mClip(clip)
+ , mImageInfo(image_info) {}
VkFunctorDrawHandler::~VkFunctorDrawHandler() {
- // TODO(cblume) Fill in the DrawVkInfo parameters.
- (*mFunctor)(DrawVkInfo::kModePostComposite, nullptr);
+ mFunctorHandle->postDrawVk();
}
void VkFunctorDrawHandler::draw(const GrBackendDrawableInfo& info) {
ATRACE_CALL();
+ if (!renderthread::RenderThread::isCurrent())
+ LOG_ALWAYS_FATAL("VkFunctorDrawHandler::draw not called on render thread");
GrVkDrawableInfo vulkan_info;
if (!info.getVkDrawableInfo(&vulkan_info)) {
return;
}
+ renderthread::VulkanManager& vk_manager =
+ renderthread::RenderThread::getInstance().vulkanManager();
+ mFunctorHandle->initVk(vk_manager.getVkFunctorInitParams());
- DrawVkInfo draw_vk_info;
- // TODO(cblume) Fill in the rest of the parameters and test the actual call.
- draw_vk_info.isLayer = true;
+ SkMatrix44 mat4(mMatrix);
+ VkFunctorDrawParams params{
+ .width = mImageInfo.width(),
+ .height = mImageInfo.height(),
+ .is_layer = false, // TODO(boliu): Populate is_layer.
+ .color_space_ptr = mImageInfo.colorSpace(),
+ .clip_left = mClip.fLeft,
+ .clip_top = mClip.fTop,
+ .clip_right = mClip.fRight,
+ .clip_bottom = mClip.fBottom,
+ };
+ mat4.asColMajorf(¶ms.transform[0]);
+ params.secondary_command_buffer = vulkan_info.fSecondaryCommandBuffer;
+ params.color_attachment_index = vulkan_info.fColorAttachmentIndex;
+ params.compatible_render_pass = vulkan_info.fCompatibleRenderPass;
+ params.format = vulkan_info.fFormat;
- (*mFunctor)(DrawVkInfo::kModeComposite, &draw_vk_info);
+ mFunctorHandle->drawVk(params);
+
+ vulkan_info.fDrawBounds->offset.x = mClip.fLeft;
+ vulkan_info.fDrawBounds->offset.y = mClip.fTop;
+ vulkan_info.fDrawBounds->extent.width = mClip.fRight - mClip.fLeft;
+ vulkan_info.fDrawBounds->extent.height = mClip.fBottom - mClip.fTop;
}
VkFunctorDrawable::~VkFunctorDrawable() {
- if (auto lp = std::get_if<LegacyFunctor>(&mAnyFunctor)) {
- if (lp->listener) {
- lp->listener->onGlFunctorReleased(lp->functor);
- }
- }
}
void VkFunctorDrawable::onDraw(SkCanvas* /*canvas*/) {
@@ -67,16 +93,17 @@
}
std::unique_ptr<FunctorDrawable::GpuDrawHandler> VkFunctorDrawable::onSnapGpuDrawHandler(
- GrBackendApi backendApi, const SkMatrix& matrix) {
+ GrBackendApi backendApi, const SkMatrix& matrix, const SkIRect& clip,
+ const SkImageInfo& image_info) {
if (backendApi != GrBackendApi::kVulkan) {
return nullptr;
}
std::unique_ptr<VkFunctorDrawHandler> draw;
if (mAnyFunctor.index() == 0) {
- LOG_ALWAYS_FATAL("Not implemented");
- return nullptr;
+ return std::make_unique<VkFunctorDrawHandler>(std::get<0>(mAnyFunctor).handle, matrix, clip,
+ image_info);
} else {
- return std::make_unique<VkFunctorDrawHandler>(std::get<1>(mAnyFunctor).functor);
+ LOG_ALWAYS_FATAL("Not implemented");
}
}
diff --git a/libs/hwui/pipeline/skia/VkFunctorDrawable.h b/libs/hwui/pipeline/skia/VkFunctorDrawable.h
index d6fefc1..1a53c8f 100644
--- a/libs/hwui/pipeline/skia/VkFunctorDrawable.h
+++ b/libs/hwui/pipeline/skia/VkFunctorDrawable.h
@@ -32,15 +32,18 @@
*/
class VkFunctorDrawHandler : public FunctorDrawable::GpuDrawHandler {
public:
- explicit VkFunctorDrawHandler(Functor* functor);
+ VkFunctorDrawHandler(sp<WebViewFunctor::Handle> functor_handle, const SkMatrix& matrix,
+ const SkIRect& clip, const SkImageInfo& image_info);
~VkFunctorDrawHandler() override;
void draw(const GrBackendDrawableInfo& info) override;
private:
typedef GpuDrawHandler INHERITED;
-
- Functor* mFunctor;
+ sp<WebViewFunctor::Handle> mFunctorHandle;
+ const SkMatrix mMatrix;
+ const SkIRect mClip;
+ const SkImageInfo mImageInfo;
};
/**
@@ -57,7 +60,8 @@
// SkDrawable functions:
void onDraw(SkCanvas* canvas) override;
std::unique_ptr<FunctorDrawable::GpuDrawHandler> onSnapGpuDrawHandler(
- GrBackendApi backendApi, const SkMatrix& matrix) override;
+ GrBackendApi backendApi, const SkMatrix& matrix, const SkIRect& clip,
+ const SkImageInfo& image_info) override;
};
} // namespace skiapipeline
diff --git a/libs/hwui/private/hwui/DrawVkInfo.h b/libs/hwui/private/hwui/DrawVkInfo.h
index b2351fc..abc4dbf 100644
--- a/libs/hwui/private/hwui/DrawVkInfo.h
+++ b/libs/hwui/private/hwui/DrawVkInfo.h
@@ -17,89 +17,61 @@
#ifndef ANDROID_HWUI_DRAW_VK_INFO_H
#define ANDROID_HWUI_DRAW_VK_INFO_H
+#include <SkColorSpace.h>
#include <vulkan/vulkan.h>
namespace android {
namespace uirenderer {
-/**
- * Structure used by VulkanRenderer::callDrawVKFunction() to pass and receive data from Vulkan
- * functors.
- */
-struct DrawVkInfo {
- // Input: current width/height of destination surface
- int width;
- int height;
+struct VkFunctorInitParams {
+ VkInstance instance;
+ VkPhysicalDevice physical_device;
+ VkDevice device;
+ VkQueue queue;
+ uint32_t graphics_queue_index;
+ uint32_t instance_version;
+ const char* const* enabled_instance_extension_names;
+ uint32_t enabled_instance_extension_names_length;
+ const char* const* enabled_device_extension_names;
+ uint32_t enabled_device_extension_names_length;
+ const VkPhysicalDeviceFeatures2* device_features_2;
+};
- // Input: is the render target an FBO
- bool isLayer;
+struct VkFunctorDrawParams {
+ // Input: current width/height of destination surface.
+ int width;
+ int height;
- // Input: current transform matrix, in OpenGL format
- float transform[16];
+ // Input: is the render target a FBO
+ bool is_layer;
- // Input: WebView should do its main compositing draws into this. It cannot do anything that
- // would require stopping the render pass.
- VkCommandBuffer secondaryCommandBuffer;
+ // Input: current transform matrix
+ float transform[16];
- // Input: The main color attachment index where secondaryCommandBuffer will eventually be
- // submitted.
- uint32_t colorAttachmentIndex;
+ // Input WebView should do its main compositing draws into this. It cannot do
+ // anything that would require stopping the render pass.
+ VkCommandBuffer secondary_command_buffer;
- // Input: A render pass which will be compatible to the one which the secondaryCommandBuffer
- // will be submitted into.
- VkRenderPass compatibleRenderPass;
+ // Input: The main color attachment index where secondary_command_buffer will
+ // eventually be submitted.
+ uint32_t color_attachment_index;
- // Input: Format of the destination surface.
- VkFormat format;
+ // Input: A render pass which will be compatible to the one which the
+ // secondary_command_buffer will be submitted into.
+ VkRenderPass compatible_render_pass;
- // Input: Color space transfer params
- float g;
- float a;
- float b;
- float c;
- float d;
- float e;
- float f;
+ // Input: Format of the destination surface.
+ VkFormat format;
- // Input: Color space transformation from linear RGB to D50-adapted XYZ
- float colorSpaceTransform[9];
+ // Input: Color space.
+ const SkColorSpace* color_space_ptr;
- // Input: current clip rect
- int clipLeft;
- int clipTop;
- int clipRight;
- int clipBottom;
-
- /**
- * Values used as the "what" parameter of the functor.
- */
- enum Mode {
- // Called once at WebView start
- kModeInit,
- // Called when things need to be re-created
- kModeReInit,
- // Notifies the app that the composite functor will be called soon. This allows WebView to
- // begin work early.
- kModePreComposite,
- // Do the actual composite work
- kModeComposite,
- // This allows WebView to begin using the previously submitted objects in future work.
- kModePostComposite,
- // Invoked every time the UI thread pushes over a frame to the render thread and the owning
- // view has a dirty display list*. This is a signal to sync any data that needs to be
- // shared between the UI thread and the render thread. During this time the UI thread is
- // blocked.
- kModeSync
- };
-
- /**
- * Values used by Vulkan functors to tell the framework what to do next.
- */
- enum Status {
- // The functor is done
- kStatusDone = 0x0,
- };
-}; // struct DrawVkInfo
+ // Input: current clip rect
+ int clip_left;
+ int clip_top;
+ int clip_right;
+ int clip_bottom;
+};
} // namespace uirenderer
} // namespace android
diff --git a/libs/hwui/private/hwui/WebViewFunctor.h b/libs/hwui/private/hwui/WebViewFunctor.h
index da3d06a..96da947 100644
--- a/libs/hwui/private/hwui/WebViewFunctor.h
+++ b/libs/hwui/private/hwui/WebViewFunctor.h
@@ -19,6 +19,7 @@
#include <cutils/compiler.h>
#include <private/hwui/DrawGlInfo.h>
+#include <private/hwui/DrawVkInfo.h>
namespace android::uirenderer {
@@ -52,18 +53,12 @@
// Called on RenderThread. initialize is guaranteed to happen before this call
void (*draw)(int functor, void* data, const DrawGlInfo& params);
} gles;
- // TODO: VK support. The current DrawVkInfo is monolithic and needs to be split up for
- // what params are valid on what callbacks
struct {
// Called either the first time the functor is used or the first time it's used after
// a call to onContextDestroyed.
- // void (*initialize)(int functor, const InitParams& params);
- // void (*frameStart)(int functor, /* todo: what params are actually needed for this to
- // be useful? Is this useful? */)
- // void (*draw)(int functor, const CompositeParams& params /* todo: rename - composite
- // almost always means something else, and we aren't compositing */);
- // void (*frameEnd)(int functor, const PostCompositeParams& params /* todo: same as
- // CompositeParams - rename */);
+ void (*initialize)(int functor, void* data, const VkFunctorInitParams& params);
+ void (*draw)(int functor, void* data, const VkFunctorDrawParams& params);
+ void (*postDraw)(int functor, void*);
} vk;
};
};
diff --git a/libs/hwui/renderthread/IRenderPipeline.h b/libs/hwui/renderthread/IRenderPipeline.h
index 42e17b273..d4dd629 100644
--- a/libs/hwui/renderthread/IRenderPipeline.h
+++ b/libs/hwui/renderthread/IRenderPipeline.h
@@ -84,6 +84,7 @@
virtual void onPrepareTree() = 0;
virtual SkColorType getSurfaceColorType() const = 0;
virtual sk_sp<SkColorSpace> getSurfaceColorSpace() = 0;
+ virtual GrSurfaceOrigin getSurfaceOrigin() = 0;
virtual ~IRenderPipeline() {}
};
diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp
index c06fadd..8bef359 100644
--- a/libs/hwui/renderthread/RenderThread.cpp
+++ b/libs/hwui/renderthread/RenderThread.cpp
@@ -171,6 +171,9 @@
mRenderState = new RenderState(*this);
mVkManager = new VulkanManager(*this);
mCacheManager = new CacheManager(mDisplayInfo);
+ if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) {
+ mVkManager->initialize();
+ }
}
void RenderThread::requireGlContext() {
diff --git a/libs/hwui/renderthread/RenderThread.h b/libs/hwui/renderthread/RenderThread.h
index 5272227..1ef83fb 100644
--- a/libs/hwui/renderthread/RenderThread.h
+++ b/libs/hwui/renderthread/RenderThread.h
@@ -47,6 +47,10 @@
class RenderState;
class TestUtils;
+namespace skiapipeline {
+class VkFunctorDrawHandler;
+}
+
namespace renderthread {
class CanvasContext;
@@ -124,6 +128,7 @@
friend class DummyVsyncSource;
friend class android::uirenderer::TestUtils;
friend class android::uirenderer::WebViewFunctor;
+ friend class android::uirenderer::skiapipeline::VkFunctorDrawHandler;
RenderThread();
virtual ~RenderThread();
diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp
index aa7a141..5c6cb9a 100644
--- a/libs/hwui/renderthread/VulkanManager.cpp
+++ b/libs/hwui/renderthread/VulkanManager.cpp
@@ -34,6 +34,23 @@
namespace uirenderer {
namespace renderthread {
+static void free_features_extensions_structs(const VkPhysicalDeviceFeatures2& features) {
+ // All Vulkan structs that could be part of the features chain will start with the
+ // structure type followed by the pNext pointer. We cast to the CommonVulkanHeader
+ // so we can get access to the pNext for the next struct.
+ struct CommonVulkanHeader {
+ VkStructureType sType;
+ void* pNext;
+ };
+
+ void* pNext = features.pNext;
+ while (pNext) {
+ void* current = pNext;
+ pNext = static_cast<CommonVulkanHeader*>(current)->pNext;
+ free(current);
+ }
+}
+
#define GET_PROC(F) m##F = (PFN_vk##F)vkGetInstanceProcAddr(VK_NULL_HANDLE, "vk" #F)
#define GET_INST_PROC(F) m##F = (PFN_vk##F)vkGetInstanceProcAddr(mInstance, "vk" #F)
#define GET_DEV_PROC(F) m##F = (PFN_vk##F)vkGetDeviceProcAddr(mDevice, "vk" #F)
@@ -66,6 +83,11 @@
mDevice = VK_NULL_HANDLE;
mPhysicalDevice = VK_NULL_HANDLE;
mInstance = VK_NULL_HANDLE;
+ mInstanceVersion = 0u;
+ mInstanceExtensions.clear();
+ mDeviceExtensions.clear();
+ free_features_extensions_structs(mPhysicalDeviceFeatures2);
+ mPhysicalDeviceFeatures2 = {};
}
bool VulkanManager::setupDevice(GrVkExtensions& grExtensions, VkPhysicalDeviceFeatures2& features) {
@@ -81,7 +103,6 @@
VK_MAKE_VERSION(1, 1, 0), // apiVersion
};
- std::vector<const char*> instanceExtensions;
{
GET_PROC(EnumerateInstanceExtensionProperties);
@@ -99,7 +120,7 @@
bool hasKHRSurfaceExtension = false;
bool hasKHRAndroidSurfaceExtension = false;
for (uint32_t i = 0; i < extensionCount; ++i) {
- instanceExtensions.push_back(extensions[i].extensionName);
+ mInstanceExtensions.push_back(extensions[i].extensionName);
if (!strcmp(extensions[i].extensionName, VK_KHR_SURFACE_EXTENSION_NAME)) {
hasKHRSurfaceExtension = true;
}
@@ -120,8 +141,8 @@
&app_info, // pApplicationInfo
0, // enabledLayerNameCount
nullptr, // ppEnabledLayerNames
- (uint32_t) instanceExtensions.size(), // enabledExtensionNameCount
- instanceExtensions.data(), // ppEnabledExtensionNames
+ (uint32_t) mInstanceExtensions.size(), // enabledExtensionNameCount
+ mInstanceExtensions.data(), // ppEnabledExtensionNames
};
GET_PROC(CreateInstance);
@@ -201,7 +222,6 @@
// presentation with any native window. So just use the first one.
mPresentQueueIndex = 0;
- std::vector<const char*> deviceExtensions;
{
uint32_t extensionCount = 0;
err = mEnumerateDeviceExtensionProperties(mPhysicalDevice, nullptr, &extensionCount,
@@ -220,7 +240,7 @@
}
bool hasKHRSwapchainExtension = false;
for (uint32_t i = 0; i < extensionCount; ++i) {
- deviceExtensions.push_back(extensions[i].extensionName);
+ mDeviceExtensions.push_back(extensions[i].extensionName);
if (!strcmp(extensions[i].extensionName, VK_KHR_SWAPCHAIN_EXTENSION_NAME)) {
hasKHRSwapchainExtension = true;
}
@@ -237,8 +257,8 @@
}
return vkGetInstanceProcAddr(instance, proc_name);
};
- grExtensions.init(getProc, mInstance, mPhysicalDevice, instanceExtensions.size(),
- instanceExtensions.data(), deviceExtensions.size(), deviceExtensions.data());
+ grExtensions.init(getProc, mInstance, mPhysicalDevice, mInstanceExtensions.size(),
+ mInstanceExtensions.data(), mDeviceExtensions.size(), mDeviceExtensions.data());
if (!grExtensions.hasExtension(VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, 1)) {
this->destroy();
@@ -308,8 +328,8 @@
queueInfo, // pQueueCreateInfos
0, // layerCount
nullptr, // ppEnabledLayerNames
- (uint32_t) deviceExtensions.size(), // extensionCount
- deviceExtensions.data(), // ppEnabledExtensionNames
+ (uint32_t) mDeviceExtensions.size(), // extensionCount
+ mDeviceExtensions.data(), // ppEnabledExtensionNames
nullptr, // ppEnabledFeatures
};
@@ -351,36 +371,17 @@
return true;
}
-static void free_features_extensions_structs(const VkPhysicalDeviceFeatures2& features) {
- // All Vulkan structs that could be part of the features chain will start with the
- // structure type followed by the pNext pointer. We cast to the CommonVulkanHeader
- // so we can get access to the pNext for the next struct.
- struct CommonVulkanHeader {
- VkStructureType sType;
- void* pNext;
- };
-
- void* pNext = features.pNext;
- while (pNext) {
- void* current = pNext;
- pNext = static_cast<CommonVulkanHeader*>(current)->pNext;
- free(current);
- }
-}
-
void VulkanManager::initialize() {
if (mDevice != VK_NULL_HANDLE) {
return;
}
GET_PROC(EnumerateInstanceVersion);
- uint32_t instanceVersion = 0;
- LOG_ALWAYS_FATAL_IF(mEnumerateInstanceVersion(&instanceVersion));
- LOG_ALWAYS_FATAL_IF(instanceVersion < VK_MAKE_VERSION(1, 1, 0));
+ LOG_ALWAYS_FATAL_IF(mEnumerateInstanceVersion(&mInstanceVersion));
+ LOG_ALWAYS_FATAL_IF(mInstanceVersion < VK_MAKE_VERSION(1, 1, 0));
GrVkExtensions extensions;
- VkPhysicalDeviceFeatures2 features;
- LOG_ALWAYS_FATAL_IF(!this->setupDevice(extensions, features));
+ LOG_ALWAYS_FATAL_IF(!this->setupDevice(extensions, mPhysicalDeviceFeatures2));
mGetDeviceQueue(mDevice, mGraphicsQueueIndex, 0, &mGraphicsQueue);
@@ -397,9 +398,9 @@
backendContext.fDevice = mDevice;
backendContext.fQueue = mGraphicsQueue;
backendContext.fGraphicsQueueIndex = mGraphicsQueueIndex;
- backendContext.fInstanceVersion = instanceVersion;
+ backendContext.fInstanceVersion = mInstanceVersion;
backendContext.fVkExtensions = &extensions;
- backendContext.fDeviceFeatures2 = &features;
+ backendContext.fDeviceFeatures2 = &mPhysicalDeviceFeatures2;
backendContext.fGetProc = std::move(getProc);
// create the command pool for the command buffers
@@ -433,13 +434,29 @@
LOG_ALWAYS_FATAL_IF(!grContext.get());
mRenderThread.setGrContext(grContext);
- free_features_extensions_structs(features);
-
if (Properties::enablePartialUpdates && Properties::useBufferAge) {
mSwapBehavior = SwapBehavior::BufferAge;
}
}
+VkFunctorInitParams VulkanManager::getVkFunctorInitParams() const {
+ return VkFunctorInitParams{
+ .instance = mInstance,
+ .physical_device = mPhysicalDevice,
+ .device = mDevice,
+ .queue = mGraphicsQueue,
+ .graphics_queue_index = mGraphicsQueueIndex,
+ .instance_version = mInstanceVersion,
+ .enabled_instance_extension_names = mInstanceExtensions.data(),
+ .enabled_instance_extension_names_length =
+ static_cast<uint32_t>(mInstanceExtensions.size()),
+ .enabled_device_extension_names = mDeviceExtensions.data(),
+ .enabled_device_extension_names_length =
+ static_cast<uint32_t>(mDeviceExtensions.size()),
+ .device_features_2 = &mPhysicalDeviceFeatures2,
+ };
+}
+
// Returns the next BackbufferInfo to use for the next draw. The function will make sure all
// previous uses have finished before returning.
VulkanSurface::BackbufferInfo* VulkanManager::getAvailableBackbuffer(VulkanSurface* surface) {
@@ -463,6 +480,32 @@
return backbuffer;
}
+static SkMatrix getPreTransformMatrix(int width, int height,
+ VkSurfaceTransformFlagBitsKHR transform) {
+ switch (transform) {
+ case VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR:
+ return SkMatrix::I();
+ case VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR:
+ return SkMatrix::MakeAll(0, -1, height, 1, 0, 0, 0, 0, 1);
+ case VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR:
+ return SkMatrix::MakeAll(-1, 0, width, 0, -1, height, 0, 0, 1);
+ case VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR:
+ return SkMatrix::MakeAll(0, 1, 0, -1, 0, width, 0, 0, 1);
+ case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR:
+ return SkMatrix::MakeAll(-1, 0, width, 0, 1, 0, 0, 0, 1);
+ case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR:
+ return SkMatrix::MakeAll(0, -1, height, -1, 0, width, 0, 0, 1);
+ case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR:
+ return SkMatrix::MakeAll(1, 0, 0, 0, -1, height, 0, 0, 1);
+ case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR:
+ return SkMatrix::MakeAll(0, 1, 0, 1, 0, 0, 0, 0, 1);
+ default:
+ LOG_ALWAYS_FATAL("Unsupported pre transform of swapchain.");
+ }
+ return SkMatrix::I();
+}
+
+
SkSurface* VulkanManager::getBackbufferSurface(VulkanSurface** surfaceOut) {
// Recreate VulkanSurface, if ANativeWindow has been resized.
VulkanSurface* surface = *surfaceOut;
@@ -499,7 +542,7 @@
// maybe use attach somehow? but need a Window
return nullptr;
}
- if (VK_ERROR_OUT_OF_DATE_KHR == res) {
+ if (VK_ERROR_OUT_OF_DATE_KHR == res || VK_SUBOPTIMAL_KHR == res) {
// tear swapchain down and try again
if (!createSwapchain(surface)) {
return nullptr;
@@ -578,6 +621,10 @@
}
backendRT.setVkImageLayout(VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
+ surface->mPreTransform = getPreTransformMatrix(surface->windowWidth(),
+ surface->windowHeight(),
+ surface->mTransform);
+
surface->mBackbuffer = std::move(skSurface);
return surface->mBackbuffer.get();
}
@@ -732,6 +779,17 @@
return false;
}
+ if (!SkToBool(caps.supportedTransforms & VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR)) {
+ return false;
+ }
+ VkSurfaceTransformFlagBitsKHR transform;
+ if (SkToBool(caps.supportedTransforms & caps.currentTransform) &&
+ !SkToBool(caps.currentTransform & VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR)) {
+ transform = caps.currentTransform;
+ } else {
+ transform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
+ }
+
VkExtent2D extent = caps.currentExtent;
// clamp width; to handle currentExtent of -1 and protect us from broken hints
if (extent.width < caps.minImageExtent.width) {
@@ -743,6 +801,16 @@
extent.height = caps.minImageExtent.height;
}
SkASSERT(extent.height <= caps.maxImageExtent.height);
+
+ VkExtent2D swapExtent = extent;
+ if (transform == VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR ||
+ transform == VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR ||
+ transform == VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR ||
+ transform == VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR) {
+ swapExtent.width = extent.height;
+ swapExtent.height = extent.width;
+ }
+
surface->mWindowWidth = extent.width;
surface->mWindowHeight = extent.height;
@@ -758,7 +826,7 @@
VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
VK_IMAGE_USAGE_TRANSFER_DST_BIT;
SkASSERT((caps.supportedUsageFlags & usageFlags) == usageFlags);
- SkASSERT(caps.supportedTransforms & caps.currentTransform);
+
SkASSERT(caps.supportedCompositeAlpha &
(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR | VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR));
VkCompositeAlphaFlagBitsKHR composite_alpha =
@@ -805,7 +873,7 @@
swapchainCreateInfo.minImageCount = imageCount;
swapchainCreateInfo.imageFormat = surfaceFormat;
swapchainCreateInfo.imageColorSpace = colorSpace;
- swapchainCreateInfo.imageExtent = extent;
+ swapchainCreateInfo.imageExtent = swapExtent;
swapchainCreateInfo.imageArrayLayers = 1;
swapchainCreateInfo.imageUsage = usageFlags;
@@ -820,7 +888,7 @@
swapchainCreateInfo.pQueueFamilyIndices = nullptr;
}
- swapchainCreateInfo.preTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
+ swapchainCreateInfo.preTransform = transform;
swapchainCreateInfo.compositeAlpha = composite_alpha;
swapchainCreateInfo.presentMode = mode;
swapchainCreateInfo.clipped = true;
@@ -831,6 +899,8 @@
return false;
}
+ surface->mTransform = transform;
+
// destroy the old swapchain
if (swapchainCreateInfo.oldSwapchain != VK_NULL_HANDLE) {
mDeviceWaitIdle(mDevice);
@@ -840,7 +910,7 @@
mDestroySwapchainKHR(mDevice, swapchainCreateInfo.oldSwapchain, nullptr);
}
- createBuffers(surface, surfaceFormat, extent);
+ createBuffers(surface, surfaceFormat, swapExtent);
// The window content is not updated (frozen) until a buffer of the window size is received.
// This prevents temporary stretching of the window after it is resized, but before the first
diff --git a/libs/hwui/renderthread/VulkanManager.h b/libs/hwui/renderthread/VulkanManager.h
index 9eb942c..b06eb82 100644
--- a/libs/hwui/renderthread/VulkanManager.h
+++ b/libs/hwui/renderthread/VulkanManager.h
@@ -45,6 +45,14 @@
sk_sp<SkSurface> getBackBufferSurface() { return mBackbuffer; }
+ // The width and height are are the logical width and height for when submitting draws to the
+ // surface. In reality if the window is rotated the underlying VkImage may have the width and
+ // height swapped.
+ int windowWidth() const { return mWindowWidth; }
+ int windowHeight() const { return mWindowHeight; }
+
+ SkMatrix& preTransform() { return mPreTransform; }
+
private:
friend class VulkanManager;
struct BackbufferInfo {
@@ -84,6 +92,8 @@
sk_sp<SkColorSpace> mColorSpace;
SkColorSpace::Gamut mColorGamut;
SkColorType mColorType;
+ VkSurfaceTransformFlagBitsKHR mTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
+ SkMatrix mPreTransform;
};
// This class contains the shared global Vulkan objects, such as VkInstance, VkDevice and VkQueue,
@@ -132,6 +142,9 @@
// Creates a fence that is signaled, when all the pending Vulkan commands are flushed.
status_t createReleaseFence(sp<Fence>& nativeFence);
+ // Returned pointers are owned by VulkanManager.
+ VkFunctorInitParams getVkFunctorInitParams() const;
+
private:
friend class RenderThread;
@@ -234,6 +247,12 @@
VkCommandBuffer mDummyCB = VK_NULL_HANDLE;
+ // Variables saved to populate VkFunctorInitParams.
+ uint32_t mInstanceVersion = 0u;
+ std::vector<const char*> mInstanceExtensions;
+ std::vector<const char*> mDeviceExtensions;
+ VkPhysicalDeviceFeatures2 mPhysicalDeviceFeatures2{};
+
enum class SwapBehavior {
Discard,
BufferAge,
diff --git a/libs/hwui/tests/unit/SkiaCanvasTests.cpp b/libs/hwui/tests/unit/SkiaCanvasTests.cpp
index f3a7648..f6178af 100644
--- a/libs/hwui/tests/unit/SkiaCanvasTests.cpp
+++ b/libs/hwui/tests/unit/SkiaCanvasTests.cpp
@@ -44,8 +44,8 @@
}
TEST(SkiaCanvas, colorSpaceXform) {
- sk_sp<SkColorSpace> adobe = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
- SkColorSpace::kAdobeRGB_Gamut);
+ sk_sp<SkColorSpace> adobe = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB,
+ SkNamedGamut::kAdobeRGB);
SkImageInfo adobeInfo = SkImageInfo::Make(1, 1, kN32_SkColorType, kOpaque_SkAlphaType, adobe);
sk_sp<Bitmap> adobeBitmap = Bitmap::allocateHeapBitmap(adobeInfo);
diff --git a/libs/hwui/tests/unit/SkiaPipelineTests.cpp b/libs/hwui/tests/unit/SkiaPipelineTests.cpp
index 3c06dab..e86cf42 100644
--- a/libs/hwui/tests/unit/SkiaPipelineTests.cpp
+++ b/libs/hwui/tests/unit/SkiaPipelineTests.cpp
@@ -51,7 +51,8 @@
auto surface = SkSurface::MakeRasterN32Premul(1, 1);
surface->getCanvas()->drawColor(SK_ColorBLUE, SkBlendMode::kSrcOver);
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorBLUE);
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorRED);
}
@@ -83,7 +84,8 @@
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorBLUE);
// drawFrame will crash if "SkiaPipeline::onPrepareTree" did not clean invalid VD pointer
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorRED);
}
@@ -104,10 +106,12 @@
auto surface = SkSurface::MakeRasterN32Premul(2, 2);
surface->getCanvas()->drawColor(SK_ColorBLUE, SkBlendMode::kSrcOver);
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorBLUE);
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, true, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, true, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorBLUE);
ASSERT_EQ(TestUtils::getColor(surface, 0, 1), SK_ColorGREEN);
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, false, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, false, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), (unsigned int)SK_ColorTRANSPARENT);
ASSERT_EQ(TestUtils::getColor(surface, 0, 1), SK_ColorGREEN);
}
@@ -126,7 +130,8 @@
auto surface = SkSurface::MakeRasterN32Premul(2, 2);
surface->getCanvas()->drawColor(SK_ColorBLUE, SkBlendMode::kSrcOver);
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorBLUE);
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, true, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, true, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorBLUE);
ASSERT_EQ(TestUtils::getColor(surface, 1, 0), SK_ColorBLUE);
ASSERT_EQ(TestUtils::getColor(surface, 0, 1), SK_ColorRED);
@@ -198,32 +203,38 @@
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorBLUE);
// Single draw, should be white.
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), SK_ColorWHITE);
// 1 Overdraw, should be blue blended onto white.
renderNodes.push_back(whiteNode);
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), (unsigned)0xffd0d0ff);
// 2 Overdraw, should be green blended onto white
renderNodes.push_back(whiteNode);
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), (unsigned)0xffd0ffd0);
// 3 Overdraw, should be pink blended onto white.
renderNodes.push_back(whiteNode);
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), (unsigned)0xffffc0c0);
// 4 Overdraw, should be red blended onto white.
renderNodes.push_back(whiteNode);
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), (unsigned)0xffff8080);
// 5 Overdraw, should be red blended onto white.
renderNodes.push_back(whiteNode);
- pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
+ SkMatrix::I());
ASSERT_EQ(TestUtils::getColor(surface, 0, 0), (unsigned)0xffff8080);
}
@@ -308,7 +319,8 @@
SkRect dirty = SkRect::MakeWH(800, 600);
auto pipeline = std::make_unique<SkiaOpenGLPipeline>(renderThread);
sk_sp<DeferLayer<DeferTestCanvas>> surface(new DeferLayer<DeferTestCanvas>());
- pipeline->renderFrame(layerUpdateQueue, dirty, nodes, true, contentDrawBounds, surface);
+ pipeline->renderFrame(layerUpdateQueue, dirty, nodes, true, contentDrawBounds, surface,
+ SkMatrix::I());
EXPECT_EQ(4, surface->canvas()->mDrawCounter);
}
@@ -339,7 +351,43 @@
auto pipeline = std::make_unique<SkiaOpenGLPipeline>(renderThread);
sk_sp<DeferLayer<ClippedTestCanvas>> surface(new DeferLayer<ClippedTestCanvas>());
pipeline->renderFrame(layerUpdateQueue, dirty, nodes, true,
- SkRect::MakeWH(CANVAS_WIDTH, CANVAS_HEIGHT), surface);
+ SkRect::MakeWH(CANVAS_WIDTH, CANVAS_HEIGHT), surface, SkMatrix::I());
+ EXPECT_EQ(1, surface->canvas()->mDrawCounter);
+}
+
+// Test renderFrame with a dirty clip and a pre-transform matrix.
+RENDERTHREAD_SKIA_PIPELINE_TEST(SkiaPipeline, clipped_rotated) {
+ static const int CANVAS_WIDTH = 200;
+ static const int CANVAS_HEIGHT = 100;
+ static const SkMatrix rotateMatrix = SkMatrix::MakeAll(0, -1, CANVAS_HEIGHT, 1, 0, 0, 0, 0, 1);
+ static const SkRect dirty = SkRect::MakeLTRB(10, 20, 20, 40);
+ class ClippedTestCanvas : public SkCanvas {
+ public:
+ ClippedTestCanvas() : SkCanvas(CANVAS_WIDTH, CANVAS_HEIGHT) {}
+ void onDrawImage(const SkImage*, SkScalar dx, SkScalar dy, const SkPaint*) override {
+ EXPECT_EQ(0, mDrawCounter++);
+ // Expect clip to be rotated.
+ EXPECT_EQ(SkRect::MakeLTRB(CANVAS_HEIGHT - dirty.fTop - dirty.height(), dirty.fLeft,
+ CANVAS_HEIGHT - dirty.fTop, dirty.fLeft + dirty.width()),
+ TestUtils::getClipBounds(this));
+ EXPECT_EQ(rotateMatrix, getTotalMatrix());
+ }
+ int mDrawCounter = 0;
+ };
+
+ std::vector<sp<RenderNode>> nodes;
+ nodes.push_back(TestUtils::createSkiaNode(
+ 0, 0, CANVAS_WIDTH, CANVAS_HEIGHT,
+ [](RenderProperties& props, SkiaRecordingCanvas& canvas) {
+ sk_sp<Bitmap> bitmap(TestUtils::createBitmap(CANVAS_WIDTH, CANVAS_HEIGHT));
+ canvas.drawBitmap(*bitmap, 0, 0, nullptr);
+ }));
+
+ LayerUpdateQueue layerUpdateQueue;
+ auto pipeline = std::make_unique<SkiaOpenGLPipeline>(renderThread);
+ sk_sp<DeferLayer<ClippedTestCanvas>> surface(new DeferLayer<ClippedTestCanvas>());
+ pipeline->renderFrame(layerUpdateQueue, dirty, nodes, true,
+ SkRect::MakeWH(CANVAS_WIDTH, CANVAS_HEIGHT), surface, rotateMatrix);
EXPECT_EQ(1, surface->canvas()->mDrawCounter);
}
@@ -369,7 +417,7 @@
auto pipeline = std::make_unique<SkiaOpenGLPipeline>(renderThread);
sk_sp<DeferLayer<ClipReplaceTestCanvas>> surface(new DeferLayer<ClipReplaceTestCanvas>());
pipeline->renderFrame(layerUpdateQueue, dirty, nodes, true,
- SkRect::MakeWH(CANVAS_WIDTH, CANVAS_HEIGHT), surface);
+ SkRect::MakeWH(CANVAS_WIDTH, CANVAS_HEIGHT), surface, SkMatrix::I());
EXPECT_EQ(1, surface->canvas()->mDrawCounter);
}
diff --git a/libs/hwui/utils/Color.cpp b/libs/hwui/utils/Color.cpp
index dc347f6..4415a59 100644
--- a/libs/hwui/utils/Color.cpp
+++ b/libs/hwui/utils/Color.cpp
@@ -25,38 +25,6 @@
namespace android {
namespace uirenderer {
-static inline bool almostEqual(float a, float b) {
- return std::abs(a - b) < 1e-2f;
-}
-
-bool transferFunctionCloseToSRGB(const SkColorSpace* colorSpace) {
- if (colorSpace == nullptr) return true;
- if (colorSpace->isSRGB()) return true;
-
- SkColorSpaceTransferFn transferFunction;
- if (colorSpace->isNumericalTransferFn(&transferFunction)) {
- // sRGB transfer function params:
- const float sRGBParamA = 1 / 1.055f;
- const float sRGBParamB = 0.055f / 1.055f;
- const float sRGBParamC = 1 / 12.92f;
- const float sRGBParamD = 0.04045f;
- const float sRGBParamE = 0.0f;
- const float sRGBParamF = 0.0f;
- const float sRGBParamG = 2.4f;
-
- // This comparison will catch Display P3
- return almostEqual(sRGBParamA, transferFunction.fA) &&
- almostEqual(sRGBParamB, transferFunction.fB) &&
- almostEqual(sRGBParamC, transferFunction.fC) &&
- almostEqual(sRGBParamD, transferFunction.fD) &&
- almostEqual(sRGBParamE, transferFunction.fE) &&
- almostEqual(sRGBParamF, transferFunction.fF) &&
- almostEqual(sRGBParamG, transferFunction.fG);
- }
-
- return false;
-}
-
android::PixelFormat ColorTypeToPixelFormat(SkColorType colorType) {
switch (colorType) {
case kRGBA_8888_SkColorType:
@@ -79,19 +47,19 @@
sk_sp<SkColorSpace> DataSpaceToColorSpace(android_dataspace dataspace) {
- SkColorSpace::Gamut gamut;
+ skcms_Matrix3x3 gamut;
switch (dataspace & HAL_DATASPACE_STANDARD_MASK) {
case HAL_DATASPACE_STANDARD_BT709:
- gamut = SkColorSpace::kSRGB_Gamut;
+ gamut = SkNamedGamut::kSRGB;
break;
case HAL_DATASPACE_STANDARD_BT2020:
- gamut = SkColorSpace::kRec2020_Gamut;
+ gamut = SkNamedGamut::kRec2020;
break;
case HAL_DATASPACE_STANDARD_DCI_P3:
- gamut = SkColorSpace::kDCIP3_D65_Gamut;
+ gamut = SkNamedGamut::kDCIP3;
break;
case HAL_DATASPACE_STANDARD_ADOBE_RGB:
- gamut = SkColorSpace::kAdobeRGB_Gamut;
+ gamut = SkNamedGamut::kAdobeRGB;
break;
case HAL_DATASPACE_STANDARD_UNSPECIFIED:
return nullptr;
@@ -109,9 +77,9 @@
switch (dataspace & HAL_DATASPACE_TRANSFER_MASK) {
case HAL_DATASPACE_TRANSFER_LINEAR:
- return SkColorSpace::MakeRGB(SkColorSpace::kLinear_RenderTargetGamma, gamut);
+ return SkColorSpace::MakeRGB(SkNamedTransferFn::kLinear, gamut);
case HAL_DATASPACE_TRANSFER_SRGB:
- return SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, gamut);
+ return SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, gamut);
case HAL_DATASPACE_TRANSFER_GAMMA2_2:
return SkColorSpace::MakeRGB({2.2f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, gamut);
case HAL_DATASPACE_TRANSFER_GAMMA2_6:
diff --git a/libs/hwui/utils/Color.h b/libs/hwui/utils/Color.h
index 4473ce6..3880252 100644
--- a/libs/hwui/utils/Color.h
+++ b/libs/hwui/utils/Color.h
@@ -111,11 +111,6 @@
#endif
}
-// Returns whether the specified color space's transfer function can be
-// approximated with the native sRGB transfer function. This method
-// returns true for sRGB, gamma 2.2 and Display P3 for instance
-bool transferFunctionCloseToSRGB(const SkColorSpace* colorSpace);
-
android::PixelFormat ColorTypeToPixelFormat(SkColorType colorType);
ANDROID_API sk_sp<SkColorSpace> DataSpaceToColorSpace(android_dataspace dataspace);
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp
index b4f19c9..d742cc3 100644
--- a/libs/input/PointerController.cpp
+++ b/libs/input/PointerController.cpp
@@ -255,7 +255,7 @@
if (presentation == PRESENTATION_POINTER && mLocked.additionalMouseResources.empty()) {
mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources,
- &mLocked.animationResources);
+ &mLocked.animationResources, mLocked.viewport.displayId);
}
if (mLocked.presentation != presentation) {
@@ -727,14 +727,14 @@
}
void PointerController::loadResourcesLocked() REQUIRES(mLock) {
- mPolicy->loadPointerResources(&mResources);
+ mPolicy->loadPointerResources(&mResources, mLocked.viewport.displayId);
if (mLocked.presentation == PRESENTATION_POINTER) {
mLocked.additionalMouseResources.clear();
mLocked.animationResources.clear();
- mPolicy->loadPointerIcon(&mLocked.pointerIcon);
+ mPolicy->loadPointerIcon(&mLocked.pointerIcon, mLocked.viewport.displayId);
mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources,
- &mLocked.animationResources);
+ &mLocked.animationResources, mLocked.viewport.displayId);
}
mLocked.pointerIconChanged = true;
diff --git a/libs/input/PointerController.h b/libs/input/PointerController.h
index a32cc42..be05786 100644
--- a/libs/input/PointerController.h
+++ b/libs/input/PointerController.h
@@ -62,10 +62,10 @@
virtual ~PointerControllerPolicyInterface() { }
public:
- virtual void loadPointerIcon(SpriteIcon* icon) = 0;
- virtual void loadPointerResources(PointerResources* outResources) = 0;
+ virtual void loadPointerIcon(SpriteIcon* icon, int32_t displayId) = 0;
+ virtual void loadPointerResources(PointerResources* outResources, int32_t displayId) = 0;
virtual void loadAdditionalMouseResources(std::map<int32_t, SpriteIcon>* outResources,
- std::map<int32_t, PointerAnimation>* outAnimationResources) = 0;
+ std::map<int32_t, PointerAnimation>* outAnimationResources, int32_t displayId) = 0;
virtual int32_t getDefaultPointerIconId() = 0;
virtual int32_t getCustomPointerIconId() = 0;
};
diff --git a/libs/services/include/android/os/DropBoxManager.h b/libs/services/include/android/os/DropBoxManager.h
index 75b26c6..0747243 100644
--- a/libs/services/include/android/os/DropBoxManager.h
+++ b/libs/services/include/android/os/DropBoxManager.h
@@ -62,7 +62,7 @@
// file descriptor.
Status addFile(const String16& tag, int fd, int flags);
- class Entry : public virtual RefBase, public Parcelable {
+ class Entry : public Parcelable {
public:
Entry();
virtual ~Entry();
@@ -89,9 +89,6 @@
friend class DropBoxManager;
};
- // Get the next entry from the drop box after the specified time.
- Status getNextEntry(const String16& tag, long msec, Entry* entry);
-
private:
enum {
HAS_BYTE_ARRAY = 8
diff --git a/libs/services/src/os/DropBoxManager.cpp b/libs/services/src/os/DropBoxManager.cpp
index 8282518..681d5f7 100644
--- a/libs/services/src/os/DropBoxManager.cpp
+++ b/libs/services/src/os/DropBoxManager.cpp
@@ -228,15 +228,4 @@
return service->add(entry);
}
-Status
-DropBoxManager::getNextEntry(const String16& tag, long msec, Entry* entry)
-{
- sp<IDropBoxManagerService> service = interface_cast<IDropBoxManagerService>(
- defaultServiceManager()->getService(android::String16("dropbox")));
- if (service == NULL) {
- return Status::fromExceptionCode(Status::EX_NULL_POINTER, "can't find dropbox service");
- }
- return service->getNextEntry(tag, msec, android::String16("android"), entry);
-}
-
}} // namespace android::os
diff --git a/libs/usb/api/current.txt b/libs/usb/api/current.txt
index 8488db5..f17b65a 100644
--- a/libs/usb/api/current.txt
+++ b/libs/usb/api/current.txt
@@ -1,12 +1,13 @@
+// Signature format: 2.0
package com.android.future.usb {
public class UsbAccessory {
- method public java.lang.String getDescription();
- method public java.lang.String getManufacturer();
- method public java.lang.String getModel();
- method public java.lang.String getSerial();
- method public java.lang.String getUri();
- method public java.lang.String getVersion();
+ method public String getDescription();
+ method public String getManufacturer();
+ method public String getModel();
+ method public String getSerial();
+ method public String getUri();
+ method public String getVersion();
}
public class UsbManager {
@@ -16,9 +17,9 @@
method public boolean hasPermission(com.android.future.usb.UsbAccessory);
method public android.os.ParcelFileDescriptor openAccessory(com.android.future.usb.UsbAccessory);
method public void requestPermission(com.android.future.usb.UsbAccessory, android.app.PendingIntent);
- field public static final java.lang.String ACTION_USB_ACCESSORY_ATTACHED = "android.hardware.usb.action.USB_ACCESSORY_ATTACHED";
- field public static final java.lang.String ACTION_USB_ACCESSORY_DETACHED = "android.hardware.usb.action.USB_ACCESSORY_DETACHED";
- field public static final java.lang.String EXTRA_PERMISSION_GRANTED = "permission";
+ field public static final String ACTION_USB_ACCESSORY_ATTACHED = "android.hardware.usb.action.USB_ACCESSORY_ATTACHED";
+ field public static final String ACTION_USB_ACCESSORY_DETACHED = "android.hardware.usb.action.USB_ACCESSORY_DETACHED";
+ field public static final String EXTRA_PERMISSION_GRANTED = "permission";
}
}
diff --git a/libs/usb/api/removed.txt b/libs/usb/api/removed.txt
index e69de29..d802177 100644
--- a/libs/usb/api/removed.txt
+++ b/libs/usb/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/libs/usb/api/system-current.txt b/libs/usb/api/system-current.txt
index e69de29..d802177 100644
--- a/libs/usb/api/system-current.txt
+++ b/libs/usb/api/system-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/libs/usb/api/system-removed.txt b/libs/usb/api/system-removed.txt
index e69de29..d802177 100644
--- a/libs/usb/api/system-removed.txt
+++ b/libs/usb/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/libs/usb/api/test-current.txt b/libs/usb/api/test-current.txt
index e69de29..d802177 100644
--- a/libs/usb/api/test-current.txt
+++ b/libs/usb/api/test-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/libs/usb/api/test-removed.txt b/libs/usb/api/test-removed.txt
index e69de29..d802177 100644
--- a/libs/usb/api/test-removed.txt
+++ b/libs/usb/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/location/java/android/location/GnssMeasurement.java b/location/java/android/location/GnssMeasurement.java
index f179bc3..602cc3e 100644
--- a/location/java/android/location/GnssMeasurement.java
+++ b/location/java/android/location/GnssMeasurement.java
@@ -48,6 +48,7 @@
private int mMultipathIndicator;
private double mSnrInDb;
private double mAutomaticGainControlLevelInDb;
+ private int mCodeType;
// The following enumerations must be in sync with the values declared in gps.h
@@ -58,6 +59,7 @@
private static final int HAS_CARRIER_PHASE = (1<<11);
private static final int HAS_CARRIER_PHASE_UNCERTAINTY = (1<<12);
private static final int HAS_AUTOMATIC_GAIN_CONTROL = (1<<13);
+ private static final int HAS_CODE_TYPE = (1 << 14);
/**
* The status of the multipath indicator.
@@ -202,6 +204,104 @@
public static final int ADR_STATE_HALF_CYCLE_REPORTED = (1<<4);
/**
+ * GNSS measurement code type.
+ * @hide
+ */
+ @IntDef(prefix = { "CODE_TYPE_" }, value = {
+ CODE_TYPE_UNKNOWN, CODE_TYPE_A, CODE_TYPE_B, CODE_TYPE_C, CODE_TYPE_I, CODE_TYPE_L,
+ CODE_TYPE_M, CODE_TYPE_P, CODE_TYPE_Q, CODE_TYPE_S, CODE_TYPE_W, CODE_TYPE_X,
+ CODE_TYPE_Y, CODE_TYPE_Z, CODE_TYPE_CODELESS
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface CodeType {}
+
+ /** The GNSS Measurement's code type is unknown. */
+ public static final int CODE_TYPE_UNKNOWN = -1;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GALILEO E1A, GALILEO E6A, IRNSS
+ * L5A, IRNSS SA.
+ */
+ public static final int CODE_TYPE_A = 0;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GALILEO E1B, GALILEO E6B, IRNSS
+ * L5B, IRNSS SB.
+ */
+ public static final int CODE_TYPE_B = 1;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L1 C/A, GPS L2 C/A, GLONASS G1
+ * C/A, GLONASS G2 C/A, GALILEO E1C, GALILEO E6C, SBAS L1 C/A, QZSS L1 C/A, IRNSS L5C.
+ */
+ public static final int CODE_TYPE_C = 2;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L5 I, GLONASS G3 I, GALILEO E5a
+ * I, GALILEO E5b I, GALILEO E5a+b I, SBAS L5 I, QZSS L5 I, BDS B1 I, BDS B2 I, BDS B3 I.
+ */
+ public static final int CODE_TYPE_I = 3;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L1C (P), GPS L2C (L), QZSS L1C
+ * (P), QZSS L2C (L), LEX(6) L.
+ */
+ public static final int CODE_TYPE_L = 4;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L1M, GPS L2M.
+ */
+ public static final int CODE_TYPE_M = 5;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L1P, GPS L2P, GLONASS G1P,
+ * GLONASS G2P.
+ */
+ public static final int CODE_TYPE_P = 6;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L5 Q, GLONASS G3 Q, GALILEO E5a
+ * Q, GALILEO E5b Q, GALILEO E5a+b Q, SBAS L5 Q, QZSS L5 Q, BDS B1 Q, BDS B2 Q, BDS B3 Q.
+ */
+ public static final int CODE_TYPE_Q = 7;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L1C (D), GPS L2C (M), QZSS L1C
+ * (D), QZSS L2C (M), LEX(6) S.
+ */
+ public static final int CODE_TYPE_S = 8;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L1 Z-tracking, GPS L2
+ * Z-tracking.
+ */
+ public static final int CODE_TYPE_W = 9;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L1C (D+P), GPS L2C (M+L), GPS
+ * L5 (I+Q), GLONASS G3 (I+Q), GALILEO E1 (B+C), GALILEO E5a (I+Q), GALILEO E5b (I+Q), GALILEO
+ * E5a+b(I+Q), GALILEO E6 (B+C), SBAS L5 (I+Q), QZSS L1C (D+P), QZSS L2C (M+L), QZSS L5 (I+Q),
+ * LEX(6) (S+L), BDS B1 (I+Q), BDS B2 (I+Q), BDS B3 (I+Q), IRNSS L5 (B+C).
+ */
+ public static final int CODE_TYPE_X = 10;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L1Y, GPS L2Y.
+ */
+ public static final int CODE_TYPE_Y = 11;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GALILEO E1 (A+B+C), GALILEO E6
+ * (A+B+C), QZSS L1-SAIF.
+ */
+ public static final int CODE_TYPE_Z = 12;
+
+ /**
+ * The GNSS Measurement's code type is one of the following: GPS L1 codeless, GPS L2 codeless.
+ */
+ public static final int CODE_TYPE_CODELESS = 13;
+
+ /**
* All the 'Accumulated Delta Range' flags.
* @hide
*/
@@ -248,6 +348,7 @@
mMultipathIndicator = measurement.mMultipathIndicator;
mSnrInDb = measurement.mSnrInDb;
mAutomaticGainControlLevelInDb = measurement.mAutomaticGainControlLevelInDb;
+ mCodeType = measurement.mCodeType;
}
/**
@@ -967,7 +1068,7 @@
* <p>For internal and logging use only.
*/
private String getMultipathIndicatorString() {
- switch(mMultipathIndicator) {
+ switch (mMultipathIndicator) {
case MULTIPATH_INDICATOR_UNKNOWN:
return "Unknown";
case MULTIPATH_INDICATOR_DETECTED:
@@ -1063,6 +1164,89 @@
mAutomaticGainControlLevelInDb = Double.NaN;
}
+ /**
+ * Returns {@code true} if {@link #getCodeType()} is available,
+ * {@code false} otherwise.
+ */
+ public boolean hasCodeType() {
+ return isFlagSet(HAS_CODE_TYPE);
+ }
+
+ /**
+ * Gets the GNSS measurement's code type.
+ *
+ * <p>Similar to the Attribute field described in Rinex 3.03, e.g., in Tables 4-10, and Table
+ * A2 at the Rinex 3.03 Update 1 Document.
+ */
+ @CodeType
+ public int getCodeType() {
+ return mCodeType;
+ }
+
+ /**
+ * Sets the GNSS measurement's code type.
+ *
+ * @hide
+ */
+ @TestApi
+ public void setCodeType(@CodeType int codeType) {
+ setFlag(HAS_CODE_TYPE);
+ mCodeType = codeType;
+ }
+
+ /**
+ * Resets the GNSS measurement's code type.
+ *
+ * @hide
+ */
+ @TestApi
+ public void resetCodeType() {
+ resetFlag(HAS_CODE_TYPE);
+ mCodeType = CODE_TYPE_UNKNOWN;
+ }
+
+ /**
+ * Gets a string representation of the 'code type'.
+ *
+ * <p>For internal and logging use only.
+ */
+ private String getCodeTypeString() {
+ switch (mCodeType) {
+ case CODE_TYPE_UNKNOWN:
+ return "CODE_TYPE_UNKNOWN";
+ case CODE_TYPE_A:
+ return "CODE_TYPE_A";
+ case CODE_TYPE_B:
+ return "CODE_TYPE_B";
+ case CODE_TYPE_C:
+ return "CODE_TYPE_C";
+ case CODE_TYPE_I:
+ return "CODE_TYPE_I";
+ case CODE_TYPE_L:
+ return "CODE_TYPE_L";
+ case CODE_TYPE_M:
+ return "CODE_TYPE_M";
+ case CODE_TYPE_P:
+ return "CODE_TYPE_P";
+ case CODE_TYPE_Q:
+ return "CODE_TYPE_Q";
+ case CODE_TYPE_S:
+ return "CODE_TYPE_S";
+ case CODE_TYPE_W:
+ return "CODE_TYPE_W";
+ case CODE_TYPE_X:
+ return "CODE_TYPE_X";
+ case CODE_TYPE_Y:
+ return "CODE_TYPE_Y";
+ case CODE_TYPE_Z:
+ return "CODE_TYPE_Z";
+ case CODE_TYPE_CODELESS:
+ return "CODE_TYPE_CODELESS";
+ default:
+ return "<Invalid: " + mCodeType + ">";
+ }
+ }
+
public static final Creator<GnssMeasurement> CREATOR = new Creator<GnssMeasurement>() {
@Override
public GnssMeasurement createFromParcel(Parcel parcel) {
@@ -1088,6 +1272,7 @@
gnssMeasurement.mMultipathIndicator = parcel.readInt();
gnssMeasurement.mSnrInDb = parcel.readDouble();
gnssMeasurement.mAutomaticGainControlLevelInDb = parcel.readDouble();
+ gnssMeasurement.mCodeType = parcel.readInt();
return gnssMeasurement;
}
@@ -1120,6 +1305,7 @@
parcel.writeInt(mMultipathIndicator);
parcel.writeDouble(mSnrInDb);
parcel.writeDouble(mAutomaticGainControlLevelInDb);
+ parcel.writeInt(mCodeType);
}
@Override
@@ -1191,9 +1377,13 @@
"SnrInDb",
hasSnrInDb() ? mSnrInDb : null));
builder.append(String.format(
- format,
- "AgcLevelDb",
- hasAutomaticGainControlLevelDb() ? mAutomaticGainControlLevelInDb : null));
+ format,
+ "AgcLevelDb",
+ hasAutomaticGainControlLevelDb() ? mAutomaticGainControlLevelInDb : null));
+ builder.append(String.format(
+ format,
+ "CodeType",
+ hasCodeType() ? getCodeTypeString() : null));
return builder.toString();
}
@@ -1218,6 +1408,7 @@
setMultipathIndicator(MULTIPATH_INDICATOR_UNKNOWN);
resetSnrInDb();
resetAutomaticGainControlLevel();
+ resetCodeType();
}
private void setFlag(int flag) {
diff --git a/location/java/android/location/GnssSingleSatCorrection.java b/location/java/android/location/GnssSingleSatCorrection.java
index 6c757f9..3922d2f 100644
--- a/location/java/android/location/GnssSingleSatCorrection.java
+++ b/location/java/android/location/GnssSingleSatCorrection.java
@@ -16,11 +16,14 @@
package android.location;
+import android.annotation.FloatRange;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
+import com.android.internal.util.Preconditions;
+
/**
* A container with measurement corrections for a single visible satellite
*
@@ -31,9 +34,9 @@
/**
* Bit mask for {@link #mSingleSatCorrectionFlags} indicating the presence of {@link
- * #mSatIsLos}.
+ * #mProbSatIsLos}.
*/
- public static final int HAS_SAT_IS_LOS_MASK = 1 << 0;
+ public static final int HAS_PROB_SAT_IS_LOS_MASK = 1 << 0;
/**
* Bit mask for {@link #mSingleSatCorrectionFlags} indicating the presence of {@link
@@ -78,9 +81,11 @@
private float mCarrierFrequencyHz;
/**
- * True if the satellite is estimated to be in Line-of-Sight condition at the given location.
+ * The probability that the satellite is estimated to be in Line-of-Sight condition at the given
+ * location.
*/
- private boolean mSatIsLos;
+ @FloatRange(from = 0f, to = 1f)
+ private float mProbSatIsLos;
/**
* Excess path length to be subtracted from pseudorange before using it in calculating location.
@@ -103,7 +108,7 @@
mSatId = builder.mSatId;
mConstellationType = builder.mConstellationType;
mCarrierFrequencyHz = builder.mCarrierFrequencyHz;
- mSatIsLos = builder.mSatIsLos;
+ mProbSatIsLos = builder.mProbSatIsLos;
mExcessPathLengthMeters = builder.mExcessPathLengthMeters;
mExcessPathLengthUncertaintyMeters = builder.mExcessPathLengthUncertaintyMeters;
mReflectingPlane = builder.mReflectingPlane;
@@ -152,9 +157,13 @@
return mCarrierFrequencyHz;
}
- /** True if the satellite is line-of-sight */
- public boolean isSatelliteLineOfSight() {
- return mSatIsLos;
+ /**
+ * Returns the probability that the satellite is in line-of-sight condition at the given
+ * location.
+ */
+ @FloatRange(from = 0f, to = 1f)
+ public float getProbSatIsLos() {
+ return mProbSatIsLos;
}
/**
@@ -180,9 +189,9 @@
return mReflectingPlane;
}
- /** Returns {@code true} if {@link #isSatelliteLineOfSight()} is valid. */
+ /** Returns {@code true} if {@link #getProbSatIsLos()} is valid. */
public boolean hasSatelliteLineOfSight() {
- return (mSingleSatCorrectionFlags & HAS_SAT_IS_LOS_MASK) != 0;
+ return (mSingleSatCorrectionFlags & HAS_PROB_SAT_IS_LOS_MASK) != 0;
}
/** Returns {@code true} if {@link #getExcessPathLengthMeters()} is valid. */
@@ -215,7 +224,7 @@
.setConstellationType(parcel.readInt())
.setSatId(parcel.readInt())
.setCarrierFrequencyHz(parcel.readFloat())
- .setSatIsLos(parcel.readBoolean())
+ .setProbSatIsLos(parcel.readFloat())
.setExcessPathLengthMeters(parcel.readFloat())
.setExcessPathLengthUncertaintyMeters(parcel.readFloat())
.setReflectingPlane(
@@ -239,7 +248,7 @@
builder.append(String.format(format, "ConstellationType = ", mConstellationType));
builder.append(String.format(format, "SatId = ", mSatId));
builder.append(String.format(format, "CarrierFrequencyHz = ", mCarrierFrequencyHz));
- builder.append(String.format(format, "SatIsLos = ", mSatIsLos));
+ builder.append(String.format(format, "ProbSatIsLos = ", mProbSatIsLos));
builder.append(String.format(format, "ExcessPathLengthMeters = ", mExcessPathLengthMeters));
builder.append(
String.format(
@@ -256,7 +265,7 @@
parcel.writeInt(mConstellationType);
parcel.writeInt(mSatId);
parcel.writeFloat(mCarrierFrequencyHz);
- parcel.writeBoolean(mSatIsLos);
+ parcel.writeFloat(mProbSatIsLos);
parcel.writeFloat(mExcessPathLengthMeters);
parcel.writeFloat(mExcessPathLengthUncertaintyMeters);
mReflectingPlane.writeToParcel(parcel, flags);
@@ -274,7 +283,7 @@
private int mConstellationType;
private int mSatId;
private float mCarrierFrequencyHz;
- private boolean mSatIsLos;
+ private float mProbSatIsLos;
private float mExcessPathLengthMeters;
private float mExcessPathLengthUncertaintyMeters;
private GnssReflectingPlane mReflectingPlane;
@@ -303,10 +312,16 @@
return this;
}
- /** Sets the line=of-sight state of the satellite */
- public Builder setSatIsLos(boolean satIsLos) {
- mSatIsLos = satIsLos;
- mSingleSatCorrectionFlags = (byte) (mSingleSatCorrectionFlags | HAS_SAT_IS_LOS_MASK);
+ /**
+ * Sets the line-of-sight probability of the satellite at the given location in the range
+ * between 0 and 1.
+ */
+ public Builder setProbSatIsLos(@FloatRange(from = 0f, to = 1f) float probSatIsLos) {
+ Preconditions.checkArgumentInRange(probSatIsLos, 0, 1,
+ "probSatIsLos should be between 0 and 1.");
+ mProbSatIsLos = probSatIsLos;
+ mSingleSatCorrectionFlags =
+ (byte) (mSingleSatCorrectionFlags | HAS_PROB_SAT_IS_LOS_MASK);
return this;
}
diff --git a/location/lib/api/current.txt b/location/lib/api/current.txt
index 10c3447..c721218 100644
--- a/location/lib/api/current.txt
+++ b/location/lib/api/current.txt
@@ -1,27 +1,28 @@
+// Signature format: 2.0
package com.android.location.provider {
- public abstract deprecated class FusedProvider {
- ctor public FusedProvider();
- method public android.os.IBinder getBinder();
+ @Deprecated public abstract class FusedProvider {
+ ctor @Deprecated public FusedProvider();
+ method @Deprecated public android.os.IBinder getBinder();
}
public abstract class LocationProviderBase {
- ctor public LocationProviderBase(java.lang.String, com.android.location.provider.ProviderPropertiesUnbundled);
+ ctor public LocationProviderBase(String, com.android.location.provider.ProviderPropertiesUnbundled);
method public android.os.IBinder getBinder();
method public boolean isEnabled();
- method protected deprecated void onDisable();
- method protected void onDump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
- method protected deprecated void onEnable();
- method protected deprecated int onGetStatus(android.os.Bundle);
- method protected deprecated long onGetStatusUpdateTime();
+ method @Deprecated protected void onDisable();
+ method protected void onDump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
+ method @Deprecated protected void onEnable();
+ method @Deprecated protected int onGetStatus(android.os.Bundle);
+ method @Deprecated protected long onGetStatusUpdateTime();
method protected void onInit();
- method protected boolean onSendExtraCommand(java.lang.String, android.os.Bundle);
+ method protected boolean onSendExtraCommand(@Nullable String, @Nullable android.os.Bundle);
method protected abstract void onSetRequest(com.android.location.provider.ProviderRequestUnbundled, android.os.WorkSource);
method public void reportLocation(android.location.Location);
method public void setEnabled(boolean);
method public void setProperties(com.android.location.provider.ProviderPropertiesUnbundled);
- field public static final java.lang.String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
- field public static final java.lang.String FUSED_PROVIDER = "fused";
+ field public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
+ field public static final String FUSED_PROVIDER = "fused";
}
public final class LocationRequestUnbundled {
diff --git a/location/lib/api/removed.txt b/location/lib/api/removed.txt
index e69de29..d802177 100644
--- a/location/lib/api/removed.txt
+++ b/location/lib/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/location/lib/api/system-current.txt b/location/lib/api/system-current.txt
index e69de29..d802177 100644
--- a/location/lib/api/system-current.txt
+++ b/location/lib/api/system-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/location/lib/api/system-removed.txt b/location/lib/api/system-removed.txt
index e69de29..d802177 100644
--- a/location/lib/api/system-removed.txt
+++ b/location/lib/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/location/lib/api/test-current.txt b/location/lib/api/test-current.txt
index e69de29..d802177 100644
--- a/location/lib/api/test-current.txt
+++ b/location/lib/api/test-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/location/lib/api/test-removed.txt b/location/lib/api/test-removed.txt
index e69de29..d802177 100644
--- a/location/lib/api/test-removed.txt
+++ b/location/lib/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/location/lib/java/com/android/location/provider/ActivityChangedEvent.java b/location/lib/java/com/android/location/provider/ActivityChangedEvent.java
deleted file mode 100644
index 843dd67..0000000
--- a/location/lib/java/com/android/location/provider/ActivityChangedEvent.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2014 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.location.provider;
-
-import android.annotation.NonNull;
-
-import java.security.InvalidParameterException;
-import java.util.List;
-
-/**
- * A class representing an event for Activity changes.
- * @hide
- */
-public class ActivityChangedEvent {
- private final List<ActivityRecognitionEvent> mActivityRecognitionEvents;
-
- public ActivityChangedEvent(List<ActivityRecognitionEvent> activityRecognitionEvents) {
- if (activityRecognitionEvents == null) {
- throw new InvalidParameterException(
- "Parameter 'activityRecognitionEvents' must not be null.");
- }
-
- mActivityRecognitionEvents = activityRecognitionEvents;
- }
-
- @NonNull
- public Iterable<ActivityRecognitionEvent> getActivityRecognitionEvents() {
- return mActivityRecognitionEvents;
- }
-
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder("[ ActivityChangedEvent:");
-
- for (ActivityRecognitionEvent event : mActivityRecognitionEvents) {
- builder.append("\n ");
- builder.append(event.toString());
- }
- builder.append("\n]");
-
- return builder.toString();
- }
-}
diff --git a/location/lib/java/com/android/location/provider/ActivityRecognitionEvent.java b/location/lib/java/com/android/location/provider/ActivityRecognitionEvent.java
deleted file mode 100644
index e54dea4..0000000
--- a/location/lib/java/com/android/location/provider/ActivityRecognitionEvent.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2014 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.location.provider;
-
-/**
- * A class that represents an Activity Recognition Event.
- * @hide
- */
-public class ActivityRecognitionEvent {
- private final String mActivity;
- private final int mEventType;
- private final long mTimestampNs;
-
- public ActivityRecognitionEvent(String activity, int eventType, long timestampNs) {
- mActivity = activity;
- mEventType = eventType;
- mTimestampNs = timestampNs;
- }
-
- public String getActivity() {
- return mActivity;
- }
-
- public int getEventType() {
- return mEventType;
- }
-
- public long getTimestampNs() {
- return mTimestampNs;
- }
-
- @Override
- public String toString() {
- String eventString;
- switch (mEventType) {
- case ActivityRecognitionProvider.EVENT_TYPE_ENTER:
- eventString = "Enter";
- break;
- case ActivityRecognitionProvider.EVENT_TYPE_EXIT:
- eventString = "Exit";
- break;
- case ActivityRecognitionProvider.EVENT_TYPE_FLUSH_COMPLETE:
- eventString = "FlushComplete";
- break;
- default:
- eventString = "<Invalid>";
- break;
- }
-
- return String.format(
- "Activity='%s', EventType=%s(%s), TimestampNs=%s",
- mActivity,
- eventString,
- mEventType,
- mTimestampNs);
- }
-}
diff --git a/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java b/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java
deleted file mode 100644
index 0eff7d3..0000000
--- a/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2014 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.location.provider;
-
-import com.android.internal.util.Preconditions;
-
-import android.hardware.location.IActivityRecognitionHardware;
-import android.hardware.location.IActivityRecognitionHardwareSink;
-import android.os.RemoteException;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-
-/**
- * A class that exposes {@link IActivityRecognitionHardware} functionality to unbundled services.
- * @hide
- */
-public final class ActivityRecognitionProvider {
- private final IActivityRecognitionHardware mService;
- private final HashSet<Sink> mSinkSet = new HashSet<>();
-
- // the following constants must remain in sync with activity_recognition.h
-
- public static final String ACTIVITY_IN_VEHICLE = "android.activity_recognition.in_vehicle";
- public static final String ACTIVITY_ON_BICYCLE = "android.activity_recognition.on_bicycle";
- public static final String ACTIVITY_WALKING = "android.activity_recognition.walking";
- public static final String ACTIVITY_RUNNING = "android.activity_recognition.running";
- public static final String ACTIVITY_STILL = "android.activity_recognition.still";
- public static final String ACTIVITY_TILTING = "android.activity_recognition.tilting";
-
- // NOTE: when adding an additional EVENT_TYPE_, EVENT_TYPE_COUNT needs to be updated in
- // android.hardware.location.ActivityRecognitionHardware
- public static final int EVENT_TYPE_FLUSH_COMPLETE = 0;
- public static final int EVENT_TYPE_ENTER = 1;
- public static final int EVENT_TYPE_EXIT = 2;
-
- // end constants activity_recognition.h
-
- /**
- * Used to receive Activity-Recognition events.
- */
- public interface Sink {
- void onActivityChanged(ActivityChangedEvent event);
- }
-
- public ActivityRecognitionProvider(IActivityRecognitionHardware service)
- throws RemoteException {
- Preconditions.checkNotNull(service);
- mService = service;
- mService.registerSink(new SinkTransport());
- }
-
- public String[] getSupportedActivities() throws RemoteException {
- return mService.getSupportedActivities();
- }
-
- public boolean isActivitySupported(String activity) throws RemoteException {
- return mService.isActivitySupported(activity);
- }
-
- public void registerSink(Sink sink) {
- Preconditions.checkNotNull(sink);
- synchronized (mSinkSet) {
- mSinkSet.add(sink);
- }
- }
-
- // TODO: if this functionality is exposed to 3rd party developers, handle unregistration (here
- // and in the service) of all sinks while failing to disable all events
- public void unregisterSink(Sink sink) {
- Preconditions.checkNotNull(sink);
- synchronized (mSinkSet) {
- mSinkSet.remove(sink);
- }
- }
-
- public boolean enableActivityEvent(String activity, int eventType, long reportLatencyNs)
- throws RemoteException {
- return mService.enableActivityEvent(activity, eventType, reportLatencyNs);
- }
-
- public boolean disableActivityEvent(String activity, int eventType) throws RemoteException {
- return mService.disableActivityEvent(activity, eventType);
- }
-
- public boolean flush() throws RemoteException {
- return mService.flush();
- }
-
- private final class SinkTransport extends IActivityRecognitionHardwareSink.Stub {
- @Override
- public void onActivityChanged(android.hardware.location.ActivityChangedEvent event) {
- Collection<Sink> sinks;
- synchronized (mSinkSet) {
- if (mSinkSet.isEmpty()) {
- return;
- }
- sinks = new ArrayList<>(mSinkSet);
- }
-
- // translate the event from platform internal and GmsCore types
- ArrayList<ActivityRecognitionEvent> gmsEvents = new ArrayList<>();
- for (android.hardware.location.ActivityRecognitionEvent reportingEvent
- : event.getActivityRecognitionEvents()) {
- ActivityRecognitionEvent gmsEvent = new ActivityRecognitionEvent(
- reportingEvent.getActivity(),
- reportingEvent.getEventType(),
- reportingEvent.getTimestampNs());
- gmsEvents.add(gmsEvent);
- }
- ActivityChangedEvent gmsEvent = new ActivityChangedEvent(gmsEvents);
-
- for (Sink sink : sinks) {
- sink.onActivityChanged(gmsEvent);
- }
- }
- }
-}
diff --git a/location/lib/java/com/android/location/provider/ActivityRecognitionProviderClient.java b/location/lib/java/com/android/location/provider/ActivityRecognitionProviderClient.java
deleted file mode 100644
index 326d901..0000000
--- a/location/lib/java/com/android/location/provider/ActivityRecognitionProviderClient.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2015 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.location.provider;
-
-import android.annotation.NonNull;
-import android.hardware.location.IActivityRecognitionHardware;
-import android.hardware.location.IActivityRecognitionHardwareClient;
-import android.os.Binder;
-import android.os.IBinder;
-import android.os.Process;
-import android.os.RemoteException;
-import android.util.Log;
-
-/**
- * A client class for interaction with an Activity-Recognition provider.
- * @hide
- */
-public abstract class ActivityRecognitionProviderClient {
- private static final String TAG = "ArProviderClient";
-
- protected ActivityRecognitionProviderClient() {}
-
- private IActivityRecognitionHardwareClient.Stub mClient =
- new IActivityRecognitionHardwareClient.Stub() {
- @Override
- public void onAvailabilityChanged(
- boolean isSupported,
- IActivityRecognitionHardware instance) {
- int callingUid = Binder.getCallingUid();
- if (callingUid != Process.SYSTEM_UID) {
- Log.d(TAG, "Ignoring calls from non-system server. Uid: " + callingUid);
- return;
- }
- ActivityRecognitionProvider provider;
- try {
- provider = isSupported ? new ActivityRecognitionProvider(instance) : null;
- } catch (RemoteException e) {
- Log.e(TAG, "Error creating Hardware Activity-Recognition Provider.", e);
- return;
- }
- onProviderChanged(isSupported, provider);
- }
- };
-
- /**
- * Gets the binder needed to interact with proxy provider in the platform.
- */
- @NonNull
- public IBinder getBinder() {
- return mClient;
- }
-
- /**
- * Called when a change in the availability of {@link ActivityRecognitionProvider} is detected.
- *
- * @param isSupported whether the platform supports the provider natively
- * @param instance the available provider's instance
- */
- public abstract void onProviderChanged(
- boolean isSupported,
- ActivityRecognitionProvider instance);
-}
diff --git a/location/lib/java/com/android/location/provider/ActivityRecognitionProviderWatcher.java b/location/lib/java/com/android/location/provider/ActivityRecognitionProviderWatcher.java
deleted file mode 100644
index 42f77b4..0000000
--- a/location/lib/java/com/android/location/provider/ActivityRecognitionProviderWatcher.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2014 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.location.provider;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.hardware.location.IActivityRecognitionHardware;
-import android.hardware.location.IActivityRecognitionHardwareWatcher;
-import android.os.Binder;
-import android.os.IBinder;
-import android.os.Process;
-import android.os.RemoteException;
-import android.util.Log;
-
-/**
- * A watcher class for Activity-Recognition instances.
- *
- * @deprecated use {@link ActivityRecognitionProviderClient} instead.
- * @hide
- */
-@Deprecated
-public class ActivityRecognitionProviderWatcher {
- private static final String TAG = "ActivityRecognitionProviderWatcher";
-
- private static ActivityRecognitionProviderWatcher sWatcher;
- private static final Object sWatcherLock = new Object();
-
- private ActivityRecognitionProvider mActivityRecognitionProvider;
-
- private ActivityRecognitionProviderWatcher() {}
-
- public static ActivityRecognitionProviderWatcher getInstance() {
- synchronized (sWatcherLock) {
- if (sWatcher == null) {
- sWatcher = new ActivityRecognitionProviderWatcher();
- }
- return sWatcher;
- }
- }
-
- private IActivityRecognitionHardwareWatcher.Stub mWatcherStub =
- new IActivityRecognitionHardwareWatcher.Stub() {
- @Override
- public void onInstanceChanged(IActivityRecognitionHardware instance) {
- int callingUid = Binder.getCallingUid();
- if (callingUid != Process.SYSTEM_UID) {
- Log.d(TAG, "Ignoring calls from non-system server. Uid: " + callingUid);
- return;
- }
-
- try {
- mActivityRecognitionProvider = new ActivityRecognitionProvider(instance);
- } catch (RemoteException e) {
- Log.e(TAG, "Error creating Hardware Activity-Recognition", e);
- }
- }
- };
-
- /**
- * Gets the binder needed to interact with proxy provider in the platform.
- */
- @NonNull
- public IBinder getBinder() {
- return mWatcherStub;
- }
-
- /**
- * Gets an object that supports the functionality of {@link ActivityRecognitionProvider}.
- *
- * @return Non-null value if the functionality is supported by the platform, false otherwise.
- */
- @Nullable
- public ActivityRecognitionProvider getActivityRecognitionProvider() {
- return mActivityRecognitionProvider;
- }
-}
diff --git a/location/tests/locationtests/src/android/location/GnssMeasurementCorrectionsTest.java b/location/tests/locationtests/src/android/location/GnssMeasurementCorrectionsTest.java
index c18d58f..d6227bb 100644
--- a/location/tests/locationtests/src/android/location/GnssMeasurementCorrectionsTest.java
+++ b/location/tests/locationtests/src/android/location/GnssMeasurementCorrectionsTest.java
@@ -59,7 +59,7 @@
assertEquals(GnssStatus.CONSTELLATION_GPS, singleSatCorrection.getConstellationType());
assertEquals(11, singleSatCorrection.getSatId());
assertEquals(1575430000f, singleSatCorrection.getCarrierFrequencyHz());
- assertEquals(false, singleSatCorrection.isSatelliteLineOfSight());
+ assertEquals(0.9f, singleSatCorrection.getProbSatIsLos());
assertEquals(50.0f, singleSatCorrection.getExcessPathLengthMeters());
assertEquals(55.0f, singleSatCorrection.getExcessPathLengthUncertaintyMeters());
GnssReflectingPlane reflectingPlane = singleSatCorrection.getReflectingPlane();
@@ -88,7 +88,7 @@
.setConstellationType(GnssStatus.CONSTELLATION_GPS)
.setSatId(11)
.setCarrierFrequencyHz(1575430000f)
- .setSatIsLos(false)
+ .setProbSatIsLos(0.9f)
.setExcessPathLengthMeters(50.0f)
.setExcessPathLengthUncertaintyMeters(55.0f)
.setReflectingPlane(generateTestReflectingPlane());
diff --git a/location/tests/locationtests/src/android/location/GnssSingleSatCorrectionsTest.java b/location/tests/locationtests/src/android/location/GnssSingleSatCorrectionsTest.java
index 2e54ae4..f358806 100644
--- a/location/tests/locationtests/src/android/location/GnssSingleSatCorrectionsTest.java
+++ b/location/tests/locationtests/src/android/location/GnssSingleSatCorrectionsTest.java
@@ -44,7 +44,7 @@
assertEquals(GnssStatus.CONSTELLATION_GALILEO, singleSatCorrection.getConstellationType());
assertEquals(12, singleSatCorrection.getSatId());
assertEquals(1575420000f, singleSatCorrection.getCarrierFrequencyHz());
- assertEquals(true, singleSatCorrection.isSatelliteLineOfSight());
+ assertEquals(0.1f, singleSatCorrection.getProbSatIsLos());
assertEquals(10.0f, singleSatCorrection.getExcessPathLengthMeters());
assertEquals(5.0f, singleSatCorrection.getExcessPathLengthUncertaintyMeters());
GnssReflectingPlane reflectingPlane = singleSatCorrection.getReflectingPlane();
@@ -58,7 +58,7 @@
.setConstellationType(singleSatCorr.getConstellationType())
.setSatId(singleSatCorr.getSatId())
.setCarrierFrequencyHz(singleSatCorr.getCarrierFrequencyHz())
- .setSatIsLos(singleSatCorr.isSatelliteLineOfSight())
+ .setProbSatIsLos(singleSatCorr.getProbSatIsLos())
.setExcessPathLengthMeters(singleSatCorr.getExcessPathLengthMeters())
.setExcessPathLengthUncertaintyMeters(
singleSatCorr.getExcessPathLengthUncertaintyMeters())
@@ -72,7 +72,7 @@
.setConstellationType(GnssStatus.CONSTELLATION_GALILEO)
.setSatId(12)
.setCarrierFrequencyHz(1575420000f)
- .setSatIsLos(true)
+ .setProbSatIsLos(0.1f)
.setExcessPathLengthMeters(10.0f)
.setExcessPathLengthUncertaintyMeters(5.0f)
.setReflectingPlane(GnssReflectingPlaneTest.generateTestReflectingPlane());
diff --git a/media/Android.bp b/media/Android.bp
index d5da6f2..8ebc91a 100644
--- a/media/Android.bp
+++ b/media/Android.bp
@@ -1,4 +1,21 @@
java_library {
+ name: "media1",
+
+ srcs: [
+ ":media1-srcs",
+ ],
+
+ sdk_version: "system_current",
+}
+
+filegroup {
+ name: "media1-srcs",
+ srcs: [
+ "java/android/media/session/MediaSessionProviderService.java",
+ ],
+}
+
+java_library {
// TODO: include media2.jar in the media apex and add it to the bootclasspath.
name: "media2",
diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java
index 4f23cca..f5a6f86 100644
--- a/media/java/android/media/AudioAttributes.java
+++ b/media/java/android/media/AudioAttributes.java
@@ -736,8 +736,9 @@
* @param preset one of {@link MediaRecorder.AudioSource#DEFAULT},
* {@link MediaRecorder.AudioSource#MIC}, {@link MediaRecorder.AudioSource#CAMCORDER},
* {@link MediaRecorder.AudioSource#VOICE_RECOGNITION},
- * {@link MediaRecorder.AudioSource#VOICE_COMMUNICATION} or
- * {@link MediaRecorder.AudioSource#UNPROCESSED}
+ * {@link MediaRecorder.AudioSource#VOICE_COMMUNICATION},
+ * {@link MediaRecorder.AudioSource#UNPROCESSED} or
+ * {@link MediaRecorder.AudioSource#VOICE_PERFORMANCE}
* @return the same Builder instance.
*/
@SystemApi
@@ -749,6 +750,7 @@
case MediaRecorder.AudioSource.VOICE_RECOGNITION:
case MediaRecorder.AudioSource.VOICE_COMMUNICATION:
case MediaRecorder.AudioSource.UNPROCESSED:
+ case MediaRecorder.AudioSource.VOICE_PERFORMANCE:
mSource = preset;
break;
default:
@@ -760,7 +762,7 @@
/**
* @hide
* Same as {@link #setCapturePreset(int)} but authorizes the use of HOTWORD,
- * REMOTE_SUBMIX, RADIO_TUNER, VOICE_DOWNLINK, VOICE_UPLINK and VOICE_CALL.
+ * REMOTE_SUBMIX, RADIO_TUNER, VOICE_DOWNLINK, VOICE_UPLINK, VOICE_CALL and ECHO_REFERENCE.
* @param preset
* @return the same Builder instance.
*/
@@ -771,7 +773,8 @@
|| (preset == MediaRecorder.AudioSource.RADIO_TUNER)
|| (preset == MediaRecorder.AudioSource.VOICE_DOWNLINK)
|| (preset == MediaRecorder.AudioSource.VOICE_UPLINK)
- || (preset == MediaRecorder.AudioSource.VOICE_CALL)) {
+ || (preset == MediaRecorder.AudioSource.VOICE_CALL)
+ || (preset == MediaRecorder.AudioSource.ECHO_REFERENCE)) {
mSource = preset;
} else {
setCapturePreset(preset);
diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java
index 793aa27..5516086 100644
--- a/media/java/android/media/AudioFormat.java
+++ b/media/java/android/media/AudioFormat.java
@@ -17,6 +17,7 @@
package android.media;
import android.annotation.IntDef;
+import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
@@ -816,7 +817,7 @@
*
* @return The audio frame size in bytes corresponding to the encoding and the channel mask.
*/
- public int getFrameSizeInBytes() {
+ public @IntRange(from = 1) int getFrameSizeInBytes() {
return mFrameSizeInBytes;
}
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 30b5480..b7f042b 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -28,6 +28,7 @@
import android.annotation.UnsupportedAppUsage;
import android.app.NotificationManager;
import android.app.PendingIntent;
+import android.bluetooth.BluetoothCodecConfig;
import android.bluetooth.BluetoothDevice;
import android.content.ComponentName;
import android.content.Context;
@@ -3802,6 +3803,12 @@
public static final int DEVICE_IN_HDMI =
AudioSystem.DEVICE_IN_HDMI;
/** @hide
+ * The audio input device code for HDMI ARC
+ */
+ public static final int DEVICE_IN_HDMI_ARC =
+ AudioSystem.DEVICE_IN_HDMI_ARC;
+
+ /** @hide
* The audio input device code for telephony voice RX path
*/
public static final int DEVICE_IN_TELEPHONY_RX =
@@ -4047,6 +4054,36 @@
}
}
+ /**
+ * Indicate A2DP source or sink active device change and eventually suppress
+ * the {@link AudioManager.ACTION_AUDIO_BECOMING_NOISY} intent.
+ * @param device Bluetooth device connected/disconnected
+ * @param state new connection state (BluetoothProfile.STATE_xxx)
+ * @param profile profile for the A2DP device
+ * (either {@link android.bluetooth.BluetoothProfile.A2DP} or
+ * {@link android.bluetooth.BluetoothProfile.A2DP_SINK})
+ * @param a2dpVolume New volume for the connecting device. Does nothing if
+ * disconnecting. Pass value -1 in case you want this field to be ignored
+ * @param suppressNoisyIntent if true the
+ * {@link AudioManager.ACTION_AUDIO_BECOMING_NOISY} intent will not be sent.
+ * @return a delay in ms that the caller should wait before broadcasting
+ * BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED intent.
+ * {@hide}
+ */
+ public int handleBluetoothA2dpActiveDeviceChange(
+ BluetoothDevice device, int state, int profile,
+ boolean suppressNoisyIntent, int a2dpVolume) {
+ final IAudioService service = getService();
+ int delay = 0;
+ try {
+ delay = service.handleBluetoothA2dpActiveDeviceChange(device,
+ state, profile, suppressNoisyIntent, a2dpVolume);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ return delay;
+ }
+
/** {@hide} */
public IRingtonePlayer getRingtonePlayer() {
try {
@@ -4910,6 +4947,34 @@
return microphones;
}
+ /**
+ * Returns a list of audio formats that corresponds to encoding formats
+ * supported on offload path for A2DP playback.
+ *
+ * @return a list of {@link BluetoothCodecConfig} objects containing encoding formats
+ * supported for offload A2DP playback
+ * @hide
+ */
+ public List<BluetoothCodecConfig> getHwOffloadEncodingFormatsSupportedForA2DP() {
+ ArrayList<Integer> formatsList = new ArrayList<Integer>();
+ ArrayList<BluetoothCodecConfig> codecConfigList = new ArrayList<BluetoothCodecConfig>();
+
+ int status = AudioSystem.getHwOffloadEncodingFormatsSupportedForA2DP(formatsList);
+ if (status != AudioManager.SUCCESS) {
+ Log.e(TAG, "getHwOffloadEncodingFormatsSupportedForA2DP failed:" + status);
+ return codecConfigList;
+ }
+
+ for (Integer format : formatsList) {
+ int btSourceCodec = AudioSystem.audioFormatToBluetoothSourceCodec(format);
+ if (btSourceCodec
+ != BluetoothCodecConfig.SOURCE_CODEC_TYPE_INVALID) {
+ codecConfigList.add(new BluetoothCodecConfig(btSourceCodec));
+ }
+ }
+ return codecConfigList;
+ }
+
// Since we need to calculate the changes since THE LAST NOTIFICATION, and not since the
// (unpredictable) last time updateAudioPortCache() was called by someone, keep a list
// of the ports that exist at the time of the last notification.
diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java
index 33f81f1..92afe7e 100644
--- a/media/java/android/media/AudioRecord.java
+++ b/media/java/android/media/AudioRecord.java
@@ -61,7 +61,8 @@
* been read yet. Data should be read from the audio hardware in chunks of sizes inferior to
* the total recording buffer size.
*/
-public class AudioRecord implements AudioRouting, AudioRecordingMonitor, AudioRecordingMonitorClient
+public class AudioRecord implements AudioRouting, MicrophoneDirection,
+ AudioRecordingMonitor, AudioRecordingMonitorClient
{
//---------------------------------------------------------
// Constants
@@ -1657,7 +1658,6 @@
return activeMicrophones;
}
-
//--------------------------------------------------------------------------
// Implementation of AudioRecordingMonitor interface
//--------------------
@@ -1707,6 +1707,33 @@
return native_getPortId();
}
+ //--------------------------------------------------------------------------
+ // MicrophoneDirection
+ //--------------------
+ /**
+ * Specifies the logical microphone (for processing).
+ *
+ * @param direction Direction constant (MicrophoneDirection.MIC_DIRECTION_*)
+ * @return retval OK if the call is successful, an error code otherwise.
+ * @hide
+ */
+ public int setMicrophoneDirection(int direction) {
+ return native_set_microphone_direction(direction);
+ }
+
+ /**
+ * Specifies the zoom factor (i.e. the field dimension) for the selected microphone
+ * (for processing). The selected microphone is determined by the use-case for the stream.
+ *
+ * @param zoom the desired field dimension of microphone capture. Range is from -1 (wide angle),
+ * though 0 (no zoom) to 1 (maximum zoom).
+ * @return retval OK if the call is successful, an error code otherwise.
+ * @hide
+ */
+ public int setMicrophoneFieldDimension(float zoom) {
+ return native_set_microphone_field_dimension(zoom);
+ }
+
//---------------------------------------------------------
// Interface definitions
//--------------------
@@ -1860,6 +1887,9 @@
private native int native_getPortId();
+ private native int native_set_microphone_direction(int direction);
+ private native int native_set_microphone_field_dimension(float zoom);
+
//---------------------------------------------------------
// Utility methods
//------------------
diff --git a/media/java/android/media/AudioRecordingConfiguration.java b/media/java/android/media/AudioRecordingConfiguration.java
index de76aef..52771e4 100644
--- a/media/java/android/media/AudioRecordingConfiguration.java
+++ b/media/java/android/media/AudioRecordingConfiguration.java
@@ -172,7 +172,8 @@
MediaRecorder.AudioSource.CAMCORDER,
MediaRecorder.AudioSource.VOICE_RECOGNITION,
MediaRecorder.AudioSource.VOICE_COMMUNICATION,
- MediaRecorder.AudioSource.UNPROCESSED
+ MediaRecorder.AudioSource.UNPROCESSED,
+ MediaRecorder.AudioSource.VOICE_PERFORMANCE
})
@Retention(RetentionPolicy.SOURCE)
public @interface AudioSource {}
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 45cde0f..2848b89 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.UnsupportedAppUsage;
+import android.bluetooth.BluetoothCodecConfig;
import android.content.Context;
import android.content.pm.PackageManager;
import android.media.audiofx.AudioEffect;
@@ -140,6 +141,29 @@
}
}
+ /* Formats for A2DP codecs, must match system/audio-base.h audio_format_t */
+ public static final int AUDIO_FORMAT_INVALID = 0xFFFFFFFF;
+ public static final int AUDIO_FORMAT_DEFAULT = 0;
+ public static final int AUDIO_FORMAT_AAC = 0x04000000;
+ public static final int AUDIO_FORMAT_SBC = 0x1F000000;
+ public static final int AUDIO_FORMAT_APTX = 0x20000000;
+ public static final int AUDIO_FORMAT_APTX_HD = 0x21000000;
+ public static final int AUDIO_FORMAT_LDAC = 0x23000000;
+
+ /**
+ * Convert audio format enum values to Bluetooth codec values
+ */
+ public static int audioFormatToBluetoothSourceCodec(int audioFormat) {
+ switch (audioFormat) {
+ case AUDIO_FORMAT_AAC: return BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC;
+ case AUDIO_FORMAT_SBC: return BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC;
+ case AUDIO_FORMAT_APTX: return BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX;
+ case AUDIO_FORMAT_APTX_HD: return BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD;
+ case AUDIO_FORMAT_LDAC: return BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC;
+ default: return BluetoothCodecConfig.SOURCE_CODEC_TYPE_INVALID;
+ }
+ }
+
/* Routing bits for the former setRouting/getRouting API */
/** @deprecated */
@Deprecated public static final int ROUTE_EARPIECE = (1 << 0);
@@ -541,6 +565,9 @@
public static final int DEVICE_IN_BUS = DEVICE_BIT_IN | 0x100000;
public static final int DEVICE_IN_PROXY = DEVICE_BIT_IN | 0x1000000;
public static final int DEVICE_IN_USB_HEADSET = DEVICE_BIT_IN | 0x2000000;
+ public static final int DEVICE_IN_BLUETOOTH_BLE = DEVICE_BIT_IN | 0x4000000;
+ public static final int DEVICE_IN_HDMI_ARC = DEVICE_BIT_IN | 0x8000000;
+ public static final int DEVICE_IN_ECHO_REFERENCE = DEVICE_BIT_IN | 0x10000000;
@UnsupportedAppUsage
public static final int DEVICE_IN_DEFAULT = DEVICE_BIT_IN | DEVICE_BIT_DEFAULT;
@@ -567,6 +594,9 @@
DEVICE_IN_BUS |
DEVICE_IN_PROXY |
DEVICE_IN_USB_HEADSET |
+ DEVICE_IN_BLUETOOTH_BLE |
+ DEVICE_IN_HDMI_ARC |
+ DEVICE_IN_ECHO_REFERENCE |
DEVICE_IN_DEFAULT);
public static final int DEVICE_IN_ALL_SCO = DEVICE_IN_BLUETOOTH_SCO_HEADSET;
public static final int DEVICE_IN_ALL_USB = (DEVICE_IN_USB_ACCESSORY |
@@ -641,6 +671,9 @@
public static final String DEVICE_IN_BUS_NAME = "bus";
public static final String DEVICE_IN_PROXY_NAME = "proxy";
public static final String DEVICE_IN_USB_HEADSET_NAME = "usb_headset";
+ public static final String DEVICE_IN_BLUETOOTH_BLE_NAME = "bt_ble";
+ public static final String DEVICE_IN_ECHO_REFERENCE_NAME = "echo_reference";
+ public static final String DEVICE_IN_HDMI_ARC_NAME = "hdmi_arc";
@UnsupportedAppUsage
public static String getOutputDeviceName(int device)
@@ -757,6 +790,12 @@
return DEVICE_IN_PROXY_NAME;
case DEVICE_IN_USB_HEADSET:
return DEVICE_IN_USB_HEADSET_NAME;
+ case DEVICE_IN_BLUETOOTH_BLE:
+ return DEVICE_IN_BLUETOOTH_BLE_NAME;
+ case DEVICE_IN_ECHO_REFERENCE:
+ return DEVICE_IN_ECHO_REFERENCE_NAME;
+ case DEVICE_IN_HDMI_ARC:
+ return DEVICE_IN_HDMI_ARC_NAME;
case DEVICE_IN_DEFAULT:
default:
return Integer.toString(device);
@@ -850,12 +889,14 @@
*/
@UnsupportedAppUsage
public static native int setDeviceConnectionState(int device, int state,
- String device_address, String device_name);
+ String device_address, String device_name,
+ int codecFormat);
@UnsupportedAppUsage
public static native int getDeviceConnectionState(int device, String device_address);
public static native int handleDeviceConfigChange(int device,
String device_address,
- String device_name);
+ String device_name,
+ int codecFormat);
@UnsupportedAppUsage
public static native int setPhoneState(int state);
@UnsupportedAppUsage
@@ -940,6 +981,12 @@
public static native int getSurroundFormats(Map<Integer, Boolean> surroundFormats,
boolean reported);
+ /**
+ * Returns a list of audio formats (codec) supported on the A2DP offload path.
+ */
+ public static native int getHwOffloadEncodingFormatsSupportedForA2DP(
+ ArrayList<Integer> formatList);
+
public static native int setSurroundFormatEnabled(int audioFormat, boolean enabled);
/**
diff --git a/media/java/android/media/Controller2Link.java b/media/java/android/media/Controller2Link.java
index a62db5f..d11f776 100644
--- a/media/java/android/media/Controller2Link.java
+++ b/media/java/android/media/Controller2Link.java
@@ -16,6 +16,7 @@
package android.media;
+import android.os.Binder;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -102,6 +103,15 @@
}
}
+ /** Interface method for IMediaController2.notifyPlaybackActiveChanged */
+ public void notifyPlaybackActiveChanged(int seq, boolean playbackActive) {
+ try {
+ mIController.notifyPlaybackActiveChanged(seq, playbackActive);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
/** Interface method for IMediaController2.sendSessionCommand */
public void sendSessionCommand(int seq, Session2Command command, Bundle args,
ResultReceiver resultReceiver) {
@@ -135,6 +145,11 @@
mController.onDisconnected(seq);
}
+ /** Stub implementation for IMediaController2.notifyPlaybackActiveChanged */
+ public void onPlaybackActiveChanged(int seq, boolean playbackActive) {
+ mController.onPlaybackActiveChanged(seq, playbackActive);
+ }
+
/** Stub implementation for IMediaController2.sendSessionCommand */
public void onSessionCommand(int seq, Session2Command command, Bundle args,
ResultReceiver resultReceiver) {
@@ -149,23 +164,53 @@
private class Controller2Stub extends IMediaController2.Stub {
@Override
public void notifyConnected(int seq, Bundle connectionResult) {
- Controller2Link.this.onConnected(seq, connectionResult);
+ final long token = Binder.clearCallingIdentity();
+ try {
+ Controller2Link.this.onConnected(seq, connectionResult);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
@Override
public void notifyDisconnected(int seq) {
- Controller2Link.this.onDisconnected(seq);
+ final long token = Binder.clearCallingIdentity();
+ try {
+ Controller2Link.this.onDisconnected(seq);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void notifyPlaybackActiveChanged(int seq, boolean playbackActive) {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ Controller2Link.this.onPlaybackActiveChanged(seq, playbackActive);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
@Override
public void sendSessionCommand(int seq, Session2Command command, Bundle args,
ResultReceiver resultReceiver) {
- Controller2Link.this.onSessionCommand(seq, command, args, resultReceiver);
+ final long token = Binder.clearCallingIdentity();
+ try {
+ Controller2Link.this.onSessionCommand(seq, command, args, resultReceiver);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
@Override
public void cancelSessionCommand(int seq) {
- Controller2Link.this.onCancelCommand(seq);
+ final long token = Binder.clearCallingIdentity();
+ try {
+ Controller2Link.this.onCancelCommand(seq);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
}
}
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index 9fbd7ea..14bdab9 100644
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -155,6 +155,9 @@
void handleBluetoothA2dpDeviceConfigChange(in BluetoothDevice device);
+ int handleBluetoothA2dpActiveDeviceChange(in BluetoothDevice device,
+ int state, int profile, boolean suppressNoisyIntent, int a2dpVolume);
+
AudioRoutesInfo startWatchingRoutes(in IAudioRoutesObserver observer);
boolean isCameraSoundForced();
diff --git a/media/java/android/media/IMediaController2.aidl b/media/java/android/media/IMediaController2.aidl
index ca5394f..42c6e70 100644
--- a/media/java/android/media/IMediaController2.aidl
+++ b/media/java/android/media/IMediaController2.aidl
@@ -31,8 +31,9 @@
oneway interface IMediaController2 {
void notifyConnected(int seq, in Bundle connectionResult) = 0;
void notifyDisconnected(int seq) = 1;
+ void notifyPlaybackActiveChanged(int seq, boolean playbackActive) = 2;
void sendSessionCommand(int seq, in Session2Command command, in Bundle args,
- in ResultReceiver resultReceiver) = 2;
- void cancelSessionCommand(int seq) = 3;
- // Next Id : 4
+ in ResultReceiver resultReceiver) = 3;
+ void cancelSessionCommand(int seq) = 4;
+ // Next Id : 5
}
diff --git a/media/java/android/media/IMediaSession2Service.aidl b/media/java/android/media/IMediaSession2Service.aidl
new file mode 100644
index 0000000..10ac1be
--- /dev/null
+++ b/media/java/android/media/IMediaSession2Service.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2019 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 android.media;
+
+import android.os.Bundle;
+import android.media.Controller2Link;
+
+/**
+ * Interface from MediaController2 to MediaSession2Service.
+ * <p>
+ * Keep this interface oneway. Otherwise a malicious app may implement fake version of this,
+ * and holds calls from controller to make controller owner(s) frozen.
+ * @hide
+ */
+oneway interface IMediaSession2Service {
+ void connect(in Controller2Link caller, int seq, in Bundle connectionRequest) = 0;
+ // Next Id : 1
+}
diff --git a/media/java/android/media/ImageReader.java b/media/java/android/media/ImageReader.java
index 8ec0e35..9ac147b 100644
--- a/media/java/android/media/ImageReader.java
+++ b/media/java/android/media/ImageReader.java
@@ -150,7 +150,7 @@
* consumer end-points. For example, if the application intends to send the images to
* {@link android.media.MediaCodec} or {@link android.media.MediaRecorder} for hardware video
* encoding, the format and usage flag combination needs to be
- * {@link ImageFormat#PRIVATE PRIVATE} and {@link HardwareBuffer#USAGE0_VIDEO_ENCODE}. When an
+ * {@link ImageFormat#PRIVATE PRIVATE} and {@link HardwareBuffer#USAGE_VIDEO_ENCODE}. When an
* {@link ImageReader} object is created with a valid size and such format/usage flag
* combination, the application can send the {@link Image images} to an {@link ImageWriter} that
* is created with the input {@link android.view.Surface} provided by the
@@ -173,7 +173,7 @@
* ImageReaders using other format such as {@link ImageFormat#YUV_420_888 YUV_420_888}.
* </p>
* <p>
- * Note that not all format and usage flag combination is supported by the
+ * Note that not all format and usage flag combinations are supported by the
* {@link ImageReader}. Below are the supported combinations by the {@link ImageReader}
* (assuming the consumer end-points support the such image consumption, e.g., hardware video
* encoding).
@@ -186,13 +186,13 @@
* <td>non-{@link android.graphics.ImageFormat#PRIVATE PRIVATE} formats defined by
* {@link android.graphics.ImageFormat ImageFormat} or
* {@link android.graphics.PixelFormat PixelFormat}</td>
- * <td>{@link HardwareBuffer#USAGE0_CPU_READ} or
- * {@link HardwareBuffer#USAGE0_CPU_READ_OFTEN}</td>
+ * <td>{@link HardwareBuffer#USAGE_CPU_READ_RARELY} or
+ * {@link HardwareBuffer#USAGE_CPU_READ_OFTEN}</td>
* </tr>
* <tr>
* <td>{@link android.graphics.ImageFormat#PRIVATE}</td>
- * <td>{@link HardwareBuffer#USAGE0_VIDEO_ENCODE} or
- * {@link HardwareBuffer#USAGE0_GPU_SAMPLED_IMAGE}, or combined</td>
+ * <td>{@link HardwareBuffer#USAGE_VIDEO_ENCODE} or
+ * {@link HardwareBuffer#USAGE_GPU_SAMPLED_IMAGE}, or combined</td>
* </tr>
* </table>
* Using other combinations may result in {@link IllegalArgumentException}.
@@ -208,11 +208,10 @@
* become available for access through {@link #acquireLatestImage()} or
* {@link #acquireNextImage()}. Must be greater than 0.
* @param usage The intended usage of the images produced by this ImageReader. It needs
- * to be one of the Usage0 defined by {@link HardwareBuffer}, or an
+ * to be one of the Usage defined by {@link HardwareBuffer}, or an
* {@link IllegalArgumentException} will be thrown.
* @see Image
* @see HardwareBuffer
- * @hide
*/
public static ImageReader newInstance(int width, int height, int format, int maxImages,
long usage) {
diff --git a/media/java/android/media/ImageWriter.java b/media/java/android/media/ImageWriter.java
index 4c0153f..dd09afc 100644
--- a/media/java/android/media/ImageWriter.java
+++ b/media/java/android/media/ImageWriter.java
@@ -168,7 +168,6 @@
* {@link ImageFormat} or {@link PixelFormat}.
*
* @return a new ImageWriter instance.
- * @hide
*/
public static ImageWriter newInstance(Surface surface, int maxImages, int format) {
if (!ImageFormat.isPublicFormat(format) && !PixelFormat.isPublicFormat(format)) {
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index bc9500d..f756658 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -1829,9 +1829,14 @@
mBufferLock = new Object();
+ // save name used at creation
+ mNameAtCreation = nameIsType ? null : name;
+
native_setup(name, nameIsType, encoder);
}
+ private String mNameAtCreation;
+
@Override
protected void finalize() {
native_finalize();
@@ -3317,12 +3322,36 @@
private native void native_setAudioPresentation(int presentationId, int programId);
/**
- * Get the component name. If the codec was created by createDecoderByType
- * or createEncoderByType, what component is chosen is not known beforehand.
+ * Retrieve the codec name.
+ *
+ * If the codec was created by createDecoderByType or createEncoderByType, what component is
+ * chosen is not known beforehand. This method returns the name of the codec that was
+ * selected by the platform.
+ *
+ * <strong>Note:</strong> Implementations may provide multiple aliases (codec
+ * names) for the same underlying codec, any of which can be used to instantiate the same
+ * underlying codec in {@link MediaCodec#createByCodecName}. This method returns the
+ * name used to create the codec in this case.
+ *
* @throws IllegalStateException if in the Released state.
*/
@NonNull
- public native final String getName();
+ public final String getName() {
+ // get canonical name to handle exception
+ String canonicalName = getCanonicalName();
+ return mNameAtCreation != null ? mNameAtCreation : canonicalName;
+ }
+
+ /**
+ * Retrieve the underlying codec name.
+ *
+ * This method is similar to {@link #getName}, except that it returns the underlying component
+ * name even if an alias was used to create this MediaCodec object by name,
+ *
+ * @throws IllegalStateException if in the Released state.
+ */
+ @NonNull
+ public native final String getCanonicalName();
/**
* Return Metrics data about the current codec instance.
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index 10a1e3a..751d57b 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -32,8 +32,10 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.Vector;
/**
* Provides information about a given media codec available on the device. You can
@@ -61,15 +63,25 @@
*
*/
public final class MediaCodecInfo {
- private boolean mIsEncoder;
+ private static final String TAG = "MediaCodecInfo";
+
+ private static final int FLAG_IS_ENCODER = (1 << 0);
+ private static final int FLAG_IS_VENDOR = (1 << 1);
+ private static final int FLAG_IS_SOFTWARE_ONLY = (1 << 2);
+ private static final int FLAG_IS_HARDWARE_ACCELERATED = (1 << 3);
+
+ private int mFlags;
private String mName;
+ private String mCanonicalName;
private Map<String, CodecCapabilities> mCaps;
/* package private */ MediaCodecInfo(
- String name, boolean isEncoder, CodecCapabilities[] caps) {
+ String name, String canonicalName, int flags, CodecCapabilities[] caps) {
mName = name;
- mIsEncoder = isEncoder;
+ mCanonicalName = canonicalName;
+ mFlags = flags;
mCaps = new HashMap<String, CodecCapabilities>();
+
for (CodecCapabilities c: caps) {
mCaps.put(c.getMimeType(), c);
}
@@ -77,16 +89,69 @@
/**
* Retrieve the codec name.
+ *
+ * <strong>Note:</strong> Implementations may provide multiple aliases (codec
+ * names) for the same underlying codec, any of which can be used to instantiate the same
+ * underlying codec in {@link MediaCodec#createByCodecName}.
+ *
+ * Applications targeting SDK < {@link android.os.Build.VERSION_CODES#Q}, cannot determine if
+ * the multiple codec names listed in MediaCodecList are in-fact for the same codec.
*/
+ @NonNull
public final String getName() {
return mName;
}
/**
+ * Retrieve the underlying codec name.
+ *
+ * Device implementations may provide multiple aliases (codec names) for the same underlying
+ * codec to maintain backward app compatibility. This method returns the name of the underlying
+ * codec name, which must not be another alias. For non-aliases this is always the name of the
+ * codec.
+ */
+ @NonNull
+ public final String getCanonicalName() {
+ return mCanonicalName;
+ }
+
+ /**
+ * Query if the codec is an alias for another underlying codec.
+ */
+ public final boolean isAlias() {
+ return !mName.equals(mCanonicalName);
+ }
+
+ /**
* Query if the codec is an encoder.
*/
public final boolean isEncoder() {
- return mIsEncoder;
+ return (mFlags & FLAG_IS_ENCODER) != 0;
+ }
+
+ /**
+ * Query if the codec is provided by the Android platform (false) or the device manufacturer
+ * (true).
+ */
+ public final boolean isVendor() {
+ return (mFlags & FLAG_IS_VENDOR) != 0;
+ }
+
+ /**
+ * Query if the codec is software only. Software-only codecs are more secure as they run in
+ * a tighter security sandbox. On the other hand, software-only codecs do not provide any
+ * performance guarantees.
+ */
+ public final boolean isSoftwareOnly() {
+ return (mFlags & FLAG_IS_SOFTWARE_ONLY) != 0;
+ }
+
+ /**
+ * Query if the codec is hardware accelerated. This attribute is provided by the device
+ * manufacturer. Note that it cannot be tested for correctness.
+ */
+ public final boolean isHardwareAccelerated() {
+ return (mFlags & FLAG_IS_HARDWARE_ACCELERATED) != 0;
}
/**
@@ -163,7 +228,7 @@
// such as B-frame support, arithmetic coding...
public CodecProfileLevel[] profileLevels; // NOTE this array is modifiable by user
- // from OMX_COLOR_FORMATTYPE
+ // from MediaCodecConstants
/** @deprecated Use {@link #COLOR_Format24bitBGR888}. */
public static final int COLOR_FormatMonochrome = 1;
/** @deprecated Use {@link #COLOR_Format24bitBGR888}. */
@@ -344,7 +409,7 @@
/** @deprecated Use {@link #COLOR_FormatYUV420Flexible}. */
public static final int COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100;
// COLOR_FormatSurface indicates that the data will be a GraphicBuffer metadata reference.
- // In OMX this is called OMX_COLOR_FormatAndroidOpaque.
+ // Note: in OMX this is called OMX_COLOR_FormatAndroidOpaque.
public static final int COLOR_FormatSurface = 0x7F000789;
/**
@@ -435,8 +500,7 @@
public static final int COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00;
/**
- * Defined in the OpenMAX IL specs, color format values are drawn from
- * OMX_COLOR_FORMATTYPE.
+ * The color format for the media. This is one of the color constants defined in this class.
*/
public int[] colorFormats; // NOTE this array is modifiable by user
@@ -462,6 +526,26 @@
public static final String FEATURE_TunneledPlayback = "tunneled-playback";
/**
+ * If true, the timestamp of each output buffer is derived from the timestamp of the input
+ * buffer that produced the output. If false, the timestamp of each output buffer is
+ * derived from the timestamp of the first input buffer.
+ */
+ public static final String FEATURE_DynamicTimestamp = "dynamic-timestamp";
+
+ /**
+ * <b>decoder only</b>If true, the codec supports partial (including multiple) access units
+ * per input buffer.
+ */
+ public static final String FEATURE_FrameParsing = "frame-parsing";
+
+ /**
+ * If true, the codec supports multiple access units (for decoding, or to output for
+ * encoders). If false, the codec only supports single access units. Producing multiple
+ * access units for output is an optional feature.
+ */
+ public static final String FEATURE_MultipleFrames = "multiple-frames";
+
+ /**
* <b>video decoder only</b>: codec supports queuing partial frames.
*/
public static final String FEATURE_PartialFrame = "partial-frame";
@@ -497,10 +581,15 @@
new Feature(FEATURE_SecurePlayback, (1 << 1), false),
new Feature(FEATURE_TunneledPlayback, (1 << 2), false),
new Feature(FEATURE_PartialFrame, (1 << 3), false),
+ new Feature(FEATURE_FrameParsing, (1 << 4), false),
+ new Feature(FEATURE_MultipleFrames, (1 << 5), false),
+ new Feature(FEATURE_DynamicTimestamp, (1 << 6), false),
};
private static final Feature[] encoderFeatures = {
new Feature(FEATURE_IntraRefresh, (1 << 0), false),
+ new Feature(FEATURE_MultipleFrames, (1 << 1), false),
+ new Feature(FEATURE_DynamicTimestamp, (1 << 2), false),
};
/** @hide */
@@ -869,7 +958,7 @@
CodecCapabilities ret = new CodecCapabilities(
new CodecProfileLevel[] { pl }, new int[0], true /* encoder */,
- 0 /* flags */, defaultFormat, new MediaFormat() /* info */);
+ defaultFormat, new MediaFormat() /* info */);
if (ret.mError != 0) {
return null;
}
@@ -878,10 +967,10 @@
/* package private */ CodecCapabilities(
CodecProfileLevel[] profLevs, int[] colFmts,
- boolean encoder, int flags,
+ boolean encoder,
Map<String, Object>defaultFormatMap,
Map<String, Object>capabilitiesMap) {
- this(profLevs, colFmts, encoder, flags,
+ this(profLevs, colFmts, encoder,
new MediaFormat(defaultFormatMap),
new MediaFormat(capabilitiesMap));
}
@@ -889,11 +978,11 @@
private MediaFormat mCapabilitiesInfo;
/* package private */ CodecCapabilities(
- CodecProfileLevel[] profLevs, int[] colFmts, boolean encoder, int flags,
+ CodecProfileLevel[] profLevs, int[] colFmts, boolean encoder,
MediaFormat defaultFormat, MediaFormat info) {
final Map<String, Object> map = info.getMap();
colorFormats = colFmts;
- mFlagsVerified = flags;
+ mFlagsVerified = 0; // TODO: remove as it is unused
mDefaultFormat = defaultFormat;
mCapabilitiesInfo = info;
mMime = mDefaultFormat.getString(MediaFormat.KEY_MIME);
@@ -1243,6 +1332,7 @@
private Range<Rational> mBlockAspectRatioRange;
private Range<Long> mBlocksPerSecondRange;
private Map<Size, Range<Long>> mMeasuredFrameRates;
+ private Vector<PerformancePoint> mPerformancePoints;
private Range<Integer> mFrameRateRange;
private int mBlockWidth;
@@ -1524,6 +1614,158 @@
}
/**
+ * Video performance points are a set of standard performance points defined by pixel rate.
+ */
+ public static final class PerformancePoint {
+ /**
+ * Frame width in pixels.
+ */
+ public final int width;
+
+ /**
+ * Frame height in pixels.
+ */
+ public final int height;
+
+ /**
+ * Frame rate in frames per second.
+ */
+ public final int frameRate;
+
+ /* package private */
+ PerformancePoint(int width_, int height_, int frameRate_) {
+ width = width_;
+ height = height_;
+ frameRate = frameRate_;
+ }
+
+ /**
+ * Checks whether the performance point covers a media format.
+ *
+ * @param format Stream format considered
+ *
+ * @return {@code true} if the performance point covers the format.
+ */
+ public boolean covers(@NonNull MediaFormat format) {
+ // for simplicity, this code assumes a 16x16 block size.
+ long macroBlocks = ((width + 15) / 16) * (long)((height + 15) / 16);
+ long mbps = macroBlocks * frameRate;
+
+ long formatMacroBlocks =
+ (long)((format.getInteger(MediaFormat.KEY_WIDTH, 0) + 15) / 16)
+ * ((format.getInteger(MediaFormat.KEY_HEIGHT, 0) + 15) / 16);
+ double formatMbps =
+ Math.ceil(formatMacroBlocks
+ * format.getNumber(MediaFormat.KEY_FRAME_RATE, 0).doubleValue());
+ return formatMacroBlocks > 0 && formatMacroBlocks <= macroBlocks
+ && formatMbps <= mbps;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof PerformancePoint) {
+ PerformancePoint other = (PerformancePoint)o;
+ return ((long)width * height) == ((long)other.width * other.height)
+ && frameRate == other.frameRate;
+ }
+ return false;
+ }
+
+ /** 480p 24fps */
+ public static final PerformancePoint SD_24 = new PerformancePoint(720, 480, 24);
+ /** 576p 25fps */
+ public static final PerformancePoint SD_25 = new PerformancePoint(720, 576, 25);
+ /** 480p 30fps */
+ public static final PerformancePoint SD_30 = new PerformancePoint(720, 480, 30);
+ /** 480p 48fps */
+ public static final PerformancePoint SD_48 = new PerformancePoint(720, 480, 48);
+ /** 576p 50fps */
+ public static final PerformancePoint SD_50 = new PerformancePoint(720, 576, 50);
+ /** 480p 60fps */
+ public static final PerformancePoint SD_60 = new PerformancePoint(720, 480, 60);
+
+ /** 720p 24fps */
+ public static final PerformancePoint HD_24 = new PerformancePoint(1280, 720, 24);
+ /** 720p 25fps */
+ public static final PerformancePoint HD_25 = new PerformancePoint(1280, 720, 25);
+ /** 720p 30fps */
+ public static final PerformancePoint HD_30 = new PerformancePoint(1280, 720, 30);
+ /** 720p 50fps */
+ public static final PerformancePoint HD_50 = new PerformancePoint(1280, 720, 50);
+ /** 720p 60fps */
+ public static final PerformancePoint HD_60 = new PerformancePoint(1280, 720, 60);
+ /** 720p 100fps */
+ public static final PerformancePoint HD_100 = new PerformancePoint(1280, 720, 100);
+ /** 720p 120fps */
+ public static final PerformancePoint HD_120 = new PerformancePoint(1280, 720, 120);
+ /** 720p 200fps */
+ public static final PerformancePoint HD_200 = new PerformancePoint(1280, 720, 200);
+ /** 720p 240fps */
+ public static final PerformancePoint HD_240 = new PerformancePoint(1280, 720, 240);
+
+ /** 1080p 24fps */
+ public static final PerformancePoint FHD_24 = new PerformancePoint(1920, 1080, 24);
+ /** 1080p 25fps */
+ public static final PerformancePoint FHD_25 = new PerformancePoint(1920, 1080, 25);
+ /** 1080p 30fps */
+ public static final PerformancePoint FHD_30 = new PerformancePoint(1920, 1080, 30);
+ /** 1080p 50fps */
+ public static final PerformancePoint FHD_50 = new PerformancePoint(1920, 1080, 50);
+ /** 1080p 60fps */
+ public static final PerformancePoint FHD_60 = new PerformancePoint(1920, 1080, 60);
+ /** 1080p 100fps */
+ public static final PerformancePoint FHD_100 = new PerformancePoint(1920, 1080, 100);
+ /** 1080p 120fps */
+ public static final PerformancePoint FHD_120 = new PerformancePoint(1920, 1080, 120);
+ /** 1080p 200fps */
+ public static final PerformancePoint FHD_200 = new PerformancePoint(1920, 1080, 200);
+ /** 1080p 240fps */
+ public static final PerformancePoint FHD_240 = new PerformancePoint(1920, 1080, 240);
+
+ /** 2160p 24fps */
+ public static final PerformancePoint UHD_24 = new PerformancePoint(3840, 2160, 24);
+ /** 2160p 25fps */
+ public static final PerformancePoint UHD_25 = new PerformancePoint(3840, 2160, 25);
+ /** 2160p 30fps */
+ public static final PerformancePoint UHD_30 = new PerformancePoint(3840, 2160, 30);
+ /** 2160p 50fps */
+ public static final PerformancePoint UHD_50 = new PerformancePoint(3840, 2160, 50);
+ /** 2160p 60fps */
+ public static final PerformancePoint UHD_60 = new PerformancePoint(3840, 2160, 60);
+ /** 2160p 100fps */
+ public static final PerformancePoint UHD_100 = new PerformancePoint(3840, 2160, 100);
+ /** 2160p 120fps */
+ public static final PerformancePoint UHD_120 = new PerformancePoint(3840, 2160, 120);
+ /** 2160p 200fps */
+ public static final PerformancePoint UHD_200 = new PerformancePoint(3840, 2160, 200);
+ /** 2160p 240fps */
+ public static final PerformancePoint UHD_240 = new PerformancePoint(3840, 2160, 240);
+ }
+
+ /**
+ * Returns the supported performance points. May return {@code null} if the codec did not
+ * publish any performance point information (e.g. the vendor codecs have not been updated
+ * to the latest android release). May return an empty list if the codec published that
+ * if does not guarantee any performance points.
+ * <p>
+ * This is a performance guarantee provided by the device manufacturer for hardware codecs
+ * based on hardware capabilities of the device.
+ * <p>
+ * The returned list is sorted first by decreasing number of pixels, then by decreasing
+ * width, and finally by decreasing frame rate.
+ * Performance points assume a single active codec. For use cases where multiple
+ * codecs are active, should use that highest pixel count, and add the frame rates of
+ * each individual codec.
+ */
+ @Nullable
+ public List<PerformancePoint> getSupportedPerformancePoints() {
+ if (mPerformancePoints == null) {
+ return null;
+ }
+ return new ArrayList<PerformancePoint>(mPerformancePoints);
+ }
+
+ /**
* Returns whether a given video size ({@code width} and
* {@code height}) and {@code frameRate} combination is supported.
*/
@@ -1659,6 +1901,50 @@
mSmallerDimensionUpperLimit = SIZE_RANGE.getUpper();
}
+ private @Nullable Vector<PerformancePoint> getPerformancePoints(Map<String, Object> map) {
+ Vector<PerformancePoint> ret = new Vector<>();
+ final String prefix = "performance-point-";
+ Set<String> keys = map.keySet();
+ for (String key : keys) {
+ // looking for: performance-point-WIDTHxHEIGHT-range
+ if (!key.startsWith(prefix)) {
+ continue;
+ }
+ String subKey = key.substring(prefix.length());
+ if (subKey.equals("none") && ret.size() == 0) {
+ // This means that component knowingly did not publish performance points.
+ // This is different from when the component forgot to publish performance
+ // points.
+ return ret;
+ }
+ String[] temp = key.split("-");
+ if (temp.length != 4) {
+ continue;
+ }
+ String sizeStr = temp[2];
+ Size size = Utils.parseSize(sizeStr, null);
+ if (size == null || size.getWidth() * size.getHeight() <= 0) {
+ continue;
+ }
+ Range<Long> range = Utils.parseLongRange(map.get(key), null);
+ if (range == null || range.getLower() < 0 || range.getUpper() < 0) {
+ continue;
+ }
+ ret.add(new PerformancePoint(
+ size.getWidth(), size.getHeight(), range.getLower().intValue()));
+ }
+ // check if the component specified no performance point indication
+ if (ret.size() == 0) {
+ return null;
+ }
+
+ // sort reversed by area first, then by frame rate
+ ret.sort((a, b) -> (a.width * a.height != b.width * b.height ?
+ (b.width * b.height - a.width * a.height) :
+ (b.frameRate - a.frameRate)));
+ return ret;
+ }
+
private Map<Size, Range<Long>> getMeasuredFrameRates(Map<String, Object> map) {
Map<Size, Range<Long>> ret = new HashMap<Size, Range<Long>>();
final String prefix = "measured-frame-rate-";
@@ -1770,6 +2056,7 @@
blockRates =
Utils.parseLongRange(map.get("blocks-per-second-range"), null);
mMeasuredFrameRates = getMeasuredFrameRates(map);
+ mPerformancePoints = getPerformancePoints(map);
Pair<Range<Integer>, Range<Integer>> sizeRanges =
parseWidthHeightRanges(map.get("size-range"));
if (sizeRanges != null) {
@@ -2879,7 +3166,9 @@
* {@link MediaCodecInfo.CodecCapabilities#profileLevels} field.
*/
public static final class CodecProfileLevel {
- // from OMX_VIDEO_AVCPROFILETYPE
+ // These constants were originally in-line with OMX values, but this
+ // correspondence is no longer maintained.
+
public static final int AVCProfileBaseline = 0x01;
public static final int AVCProfileMain = 0x02;
public static final int AVCProfileExtended = 0x04;
@@ -2890,7 +3179,6 @@
public static final int AVCProfileConstrainedBaseline = 0x10000;
public static final int AVCProfileConstrainedHigh = 0x80000;
- // from OMX_VIDEO_AVCLEVELTYPE
public static final int AVCLevel1 = 0x01;
public static final int AVCLevel1b = 0x02;
public static final int AVCLevel11 = 0x04;
@@ -2908,8 +3196,10 @@
public static final int AVCLevel5 = 0x4000;
public static final int AVCLevel51 = 0x8000;
public static final int AVCLevel52 = 0x10000;
+ public static final int AVCLevel6 = 0x20000;
+ public static final int AVCLevel61 = 0x40000;
+ public static final int AVCLevel62 = 0x80000;
- // from OMX_VIDEO_H263PROFILETYPE
public static final int H263ProfileBaseline = 0x01;
public static final int H263ProfileH320Coding = 0x02;
public static final int H263ProfileBackwardCompatible = 0x04;
@@ -2920,7 +3210,6 @@
public static final int H263ProfileInterlace = 0x80;
public static final int H263ProfileHighLatency = 0x100;
- // from OMX_VIDEO_H263LEVELTYPE
public static final int H263Level10 = 0x01;
public static final int H263Level20 = 0x02;
public static final int H263Level30 = 0x04;
@@ -2930,7 +3219,6 @@
public static final int H263Level60 = 0x40;
public static final int H263Level70 = 0x80;
- // from OMX_VIDEO_MPEG4PROFILETYPE
public static final int MPEG4ProfileSimple = 0x01;
public static final int MPEG4ProfileSimpleScalable = 0x02;
public static final int MPEG4ProfileCore = 0x04;
@@ -2948,7 +3236,6 @@
public static final int MPEG4ProfileAdvancedScalable = 0x4000;
public static final int MPEG4ProfileAdvancedSimple = 0x8000;
- // from OMX_VIDEO_MPEG4LEVELTYPE
public static final int MPEG4Level0 = 0x01;
public static final int MPEG4Level0b = 0x02;
public static final int MPEG4Level1 = 0x04;
@@ -2960,7 +3247,6 @@
public static final int MPEG4Level5 = 0x80;
public static final int MPEG4Level6 = 0x100;
- // from OMX_VIDEO_MPEG2PROFILETYPE
public static final int MPEG2ProfileSimple = 0x00;
public static final int MPEG2ProfileMain = 0x01;
public static final int MPEG2Profile422 = 0x02;
@@ -2968,14 +3254,12 @@
public static final int MPEG2ProfileSpatial = 0x04;
public static final int MPEG2ProfileHigh = 0x05;
- // from OMX_VIDEO_MPEG2LEVELTYPE
public static final int MPEG2LevelLL = 0x00;
public static final int MPEG2LevelML = 0x01;
public static final int MPEG2LevelH14 = 0x02;
public static final int MPEG2LevelHL = 0x03;
public static final int MPEG2LevelHP = 0x04;
- // from OMX_AUDIO_AACPROFILETYPE
public static final int AACObjectMain = 1;
public static final int AACObjectLC = 2;
public static final int AACObjectSSR = 3;
@@ -2990,16 +3274,13 @@
/** xHE-AAC (includes USAC) */
public static final int AACObjectXHE = 42;
- // from OMX_VIDEO_VP8LEVELTYPE
public static final int VP8Level_Version0 = 0x01;
public static final int VP8Level_Version1 = 0x02;
public static final int VP8Level_Version2 = 0x04;
public static final int VP8Level_Version3 = 0x08;
- // from OMX_VIDEO_VP8PROFILETYPE
public static final int VP8ProfileMain = 0x01;
- // from OMX_VIDEO_VP9PROFILETYPE
public static final int VP9Profile0 = 0x01;
public static final int VP9Profile1 = 0x02;
public static final int VP9Profile2 = 0x04;
@@ -3010,7 +3291,6 @@
public static final int VP9Profile2HDR10Plus = 0x4000;
public static final int VP9Profile3HDR10Plus = 0x8000;
- // from OMX_VIDEO_VP9LEVELTYPE
public static final int VP9Level1 = 0x1;
public static final int VP9Level11 = 0x2;
public static final int VP9Level2 = 0x4;
@@ -3026,14 +3306,12 @@
public static final int VP9Level61 = 0x1000;
public static final int VP9Level62 = 0x2000;
- // from OMX_VIDEO_HEVCPROFILETYPE
public static final int HEVCProfileMain = 0x01;
public static final int HEVCProfileMain10 = 0x02;
public static final int HEVCProfileMainStill = 0x04;
public static final int HEVCProfileMain10HDR10 = 0x1000;
public static final int HEVCProfileMain10HDR10Plus = 0x2000;
- // from OMX_VIDEO_HEVCLEVELTYPE
public static final int HEVCMainTierLevel1 = 0x1;
public static final int HEVCHighTierLevel1 = 0x2;
public static final int HEVCMainTierLevel2 = 0x4;
@@ -3067,7 +3345,6 @@
HEVCHighTierLevel51 | HEVCHighTierLevel52 | HEVCHighTierLevel6 | HEVCHighTierLevel61 |
HEVCHighTierLevel62;
- // from OMX_VIDEO_DOLBYVISIONPROFILETYPE
public static final int DolbyVisionProfileDvavPer = 0x1;
public static final int DolbyVisionProfileDvavPen = 0x2;
public static final int DolbyVisionProfileDvheDer = 0x4;
@@ -3079,7 +3356,6 @@
public static final int DolbyVisionProfileDvheSt = 0x100;
public static final int DolbyVisionProfileDvavSe = 0x200;
- // from OMX_VIDEO_DOLBYVISIONLEVELTYPE
public static final int DolbyVisionLevelHd24 = 0x1;
public static final int DolbyVisionLevelHd30 = 0x2;
public static final int DolbyVisionLevelFhd24 = 0x4;
@@ -3090,17 +3366,44 @@
public static final int DolbyVisionLevelUhd48 = 0x80;
public static final int DolbyVisionLevelUhd60 = 0x100;
+ public static final int AV1Profile0 = 0x1;
+ public static final int AV1Profile1 = 0x2;
+ public static final int AV1Profile2 = 0x4;
+
+ public static final int AV1Level2 = 0x1;
+ public static final int AV1Level21 = 0x2;
+ public static final int AV1Level22 = 0x4;
+ public static final int AV1Level23 = 0x8;
+ public static final int AV1Level3 = 0x10;
+ public static final int AV1Level31 = 0x20;
+ public static final int AV1Level32 = 0x40;
+ public static final int AV1Level33 = 0x80;
+ public static final int AV1Level4 = 0x100;
+ public static final int AV1Level41 = 0x200;
+ public static final int AV1Level42 = 0x400;
+ public static final int AV1Level43 = 0x800;
+ public static final int AV1Level5 = 0x1000;
+ public static final int AV1Level51 = 0x2000;
+ public static final int AV1Level52 = 0x4000;
+ public static final int AV1Level53 = 0x8000;
+ public static final int AV1Level6 = 0x10000;
+ public static final int AV1Level61 = 0x20000;
+ public static final int AV1Level62 = 0x40000;
+ public static final int AV1Level63 = 0x80000;
+ public static final int AV1Level7 = 0x100000;
+ public static final int AV1Level71 = 0x200000;
+ public static final int AV1Level72 = 0x400000;
+ public static final int AV1Level73 = 0x800000;
+
/**
- * Defined in the OpenMAX IL specs, depending on the type of media
- * this can be OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE,
- * OMX_VIDEO_MPEG4PROFILETYPE, OMX_VIDEO_VP8PROFILETYPE or OMX_VIDEO_VP9PROFILETYPE.
+ * The profile of the media content. Depending on the type of media this can be
+ * one of the profile values defined in this class.
*/
public int profile;
/**
- * Defined in the OpenMAX IL specs, depending on the type of media
- * this can be OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE
- * OMX_VIDEO_MPEG4LEVELTYPE, OMX_VIDEO_VP8LEVELTYPE or OMX_VIDEO_VP9LEVELTYPE.
+ * The level of the media content. Depending on the type of media this can be
+ * one of the level values defined in this class.
*
* Note that VP9 decoder on platforms before {@link android.os.Build.VERSION_CODES#N} may
* not advertise a profile level support. For those VP9 decoders, please use
@@ -3157,7 +3460,7 @@
}
return new MediaCodecInfo(
- mName, mIsEncoder,
+ mName, mCanonicalName, mFlags,
caps.toArray(new CodecCapabilities[caps.size()]));
}
}
diff --git a/media/java/android/media/MediaCodecList.java b/media/java/android/media/MediaCodecList.java
index 2e47865..a460954 100644
--- a/media/java/android/media/MediaCodecList.java
+++ b/media/java/android/media/MediaCodecList.java
@@ -111,12 +111,14 @@
caps[typeIx++] = getCodecCapabilities(index, type);
}
return new MediaCodecInfo(
- getCodecName(index), isEncoder(index), caps);
+ getCodecName(index), getCanonicalName(index), getAttributes(index), caps);
}
/* package private */ static native final String getCodecName(int index);
- /* package private */ static native final boolean isEncoder(int index);
+ /* package private */ static native final String getCanonicalName(int index);
+
+ /* package private */ static native final int getAttributes(int index);
/* package private */ static native final String[] getSupportedTypes(int index);
diff --git a/media/java/android/media/MediaConstants.java b/media/java/android/media/MediaConstants.java
index 275b0ac..65b6f55 100644
--- a/media/java/android/media/MediaConstants.java
+++ b/media/java/android/media/MediaConstants.java
@@ -24,8 +24,9 @@
static final String KEY_PACKAGE_NAME = "android.media.key.PACKAGE_NAME";
// Bundle key for Parcelable
- static final String KEY_SESSION2_STUB = "android.media.key.SESSION2_STUB";
+ static final String KEY_SESSION2LINK = "android.media.key.SESSION2LINK";
static final String KEY_ALLOWED_COMMANDS = "android.media.key.ALLOWED_COMMANDS";
+ static final String KEY_PLAYBACK_ACTIVE = "android.media.key.PLAYBACK_ACTIVE";
private MediaConstants() {
}
diff --git a/media/java/android/media/MediaController2.java b/media/java/android/media/MediaController2.java
index b8381a7..7c5335b 100644
--- a/media/java/android/media/MediaController2.java
+++ b/media/java/android/media/MediaController2.java
@@ -19,19 +19,23 @@
import static android.media.MediaConstants.KEY_ALLOWED_COMMANDS;
import static android.media.MediaConstants.KEY_PACKAGE_NAME;
import static android.media.MediaConstants.KEY_PID;
-import static android.media.MediaConstants.KEY_SESSION2_STUB;
+import static android.media.MediaConstants.KEY_PLAYBACK_ACTIVE;
+import static android.media.MediaConstants.KEY_SESSION2LINK;
import static android.media.Session2Command.RESULT_ERROR_UNKNOWN_ERROR;
import static android.media.Session2Command.RESULT_INFO_SKIPPED;
import static android.media.Session2Token.TYPE_SESSION;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.ComponentName;
import android.content.Context;
-import android.os.Binder;
+import android.content.Intent;
+import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Process;
+import android.os.RemoteException;
import android.os.ResultReceiver;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -41,15 +45,15 @@
/**
* Allows an app to interact with an active {@link MediaSession2} or a
- * {@link MediaSession2Service} which would provide {@link MediaSession2}. Media buttons and other
+ * MediaSession2Service which would provide {@link MediaSession2}. Media buttons and other
* commands can be sent to the session.
* <p>
* This API is not generally intended for third party application developers.
* Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
* <a href="{@docRoot}reference/androidx/media2/package-summary.html">Media2 Library</a>
* for consistent behavior across all devices.
- * @hide
*/
+// TODO: use @link for MediaSession2Service
public class MediaController2 implements AutoCloseable {
static final String TAG = "MediaController2";
static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -63,6 +67,7 @@
private final Executor mCallbackExecutor;
private final Controller2Link mControllerStub;
private final Handler mResultHandler;
+ private final SessionServiceConnection mServiceConnection;
private final Object mLock = new Object();
//@GuardedBy("mLock")
@@ -77,6 +82,8 @@
private ArrayMap<ResultReceiver, Integer> mPendingCommands;
//@GuardedBy("mLock")
private ArraySet<Integer> mRequestedCommandSeqNumbers;
+ //@GuardedBy("mLock")
+ private boolean mPlaybackActive;
/**
* Create a {@link MediaController2} from the {@link Session2Token}.
@@ -118,20 +125,29 @@
mPendingCommands = new ArrayMap<>();
mRequestedCommandSeqNumbers = new ArraySet<>();
+ boolean connectRequested;
if (token.getType() == TYPE_SESSION) {
- connectToSession();
+ mServiceConnection = null;
+ connectRequested = requestConnectToSession();
} else {
- // TODO: Handle connect to session service.
+ mServiceConnection = new SessionServiceConnection();
+ connectRequested = requestConnectToService();
+ }
+ if (!connectRequested) {
+ close();
}
}
@Override
public void close() {
synchronized (mLock) {
+ if (mServiceConnection != null) {
+ mContext.unbindService(mServiceConnection);
+ }
if (mSessionBinder != null) {
try {
- mSessionBinder.unlinkToDeath(mDeathRecipient, 0);
mSessionBinder.disconnect(mControllerStub, getNextSeqNumber());
+ mSessionBinder.unlinkToDeath(mDeathRecipient, 0);
} catch (RuntimeException e) {
// No-op
}
@@ -146,6 +162,18 @@
}
/**
+ * Returns whether the session's playback is active.
+ *
+ * @return {@code true} if playback active. {@code false} otherwise.
+ * @see ControllerCallback#onPlaybackActiveChanged(MediaController2, boolean)
+ */
+ public boolean isPlaybackActive() {
+ synchronized (mLock) {
+ return mPlaybackActive;
+ }
+ }
+
+ /**
* Sends a session command to the session
* <p>
* @param command the session command
@@ -153,6 +181,7 @@
* @return a token which will be sent together in {@link ControllerCallback#onCommandResult}
* when its result is received.
*/
+ @NonNull
public Object sendSessionCommand(@NonNull Session2Command command, @Nullable Bundle args) {
if (command == null) {
throw new IllegalArgumentException("command shouldn't be null");
@@ -206,89 +235,82 @@
// Called by Controller2Link.onConnected
void onConnected(int seq, Bundle connectionResult) {
- final long token = Binder.clearCallingIdentity();
- try {
- Session2Link sessionBinder = connectionResult.getParcelable(KEY_SESSION2_STUB);
- Session2CommandGroup allowedCommands =
- connectionResult.getParcelable(KEY_ALLOWED_COMMANDS);
- if (DEBUG) {
- Log.d(TAG, "notifyConnected sessionBinder=" + sessionBinder
- + ", allowedCommands=" + allowedCommands);
- }
- if (sessionBinder == null || allowedCommands == null) {
- // Connection rejected.
- close();
- return;
- }
- synchronized (mLock) {
- mSessionBinder = sessionBinder;
- mAllowedCommands = allowedCommands;
- // Implementation for the local binder is no-op,
- // so can be used without worrying about deadlock.
- sessionBinder.linkToDeath(mDeathRecipient, 0);
- mConnectedToken = new Session2Token(mSessionToken.getUid(), TYPE_SESSION,
- mSessionToken.getPackageName(), sessionBinder);
- }
- mCallbackExecutor.execute(() -> {
- mCallback.onConnected(MediaController2.this, allowedCommands);
- });
- } finally {
- Binder.restoreCallingIdentity(token);
+ Session2Link sessionBinder = connectionResult.getParcelable(KEY_SESSION2LINK);
+ Session2CommandGroup allowedCommands =
+ connectionResult.getParcelable(KEY_ALLOWED_COMMANDS);
+ boolean playbackActive = connectionResult.getBoolean(KEY_PLAYBACK_ACTIVE);
+ if (DEBUG) {
+ Log.d(TAG, "notifyConnected sessionBinder=" + sessionBinder
+ + ", allowedCommands=" + allowedCommands);
}
+ if (sessionBinder == null || allowedCommands == null) {
+ // Connection rejected.
+ close();
+ return;
+ }
+ synchronized (mLock) {
+ mSessionBinder = sessionBinder;
+ mAllowedCommands = allowedCommands;
+ mPlaybackActive = playbackActive;
+
+ // Implementation for the local binder is no-op,
+ // so can be used without worrying about deadlock.
+ sessionBinder.linkToDeath(mDeathRecipient, 0);
+ mConnectedToken = new Session2Token(mSessionToken.getUid(), TYPE_SESSION,
+ mSessionToken.getPackageName(), sessionBinder);
+ }
+ mCallbackExecutor.execute(() -> {
+ mCallback.onConnected(MediaController2.this, allowedCommands);
+ });
}
// Called by Controller2Link.onDisconnected
void onDisconnected(int seq) {
- final long token = Binder.clearCallingIdentity();
- try {
- // close() will call mCallback.onDisconnected
- close();
- } finally {
- Binder.restoreCallingIdentity(token);
+ // close() will call mCallback.onDisconnected
+ close();
+ }
+
+ // Called by Controller2Link.onPlaybackActiveChanged
+ void onPlaybackActiveChanged(int seq, boolean playbackActive) {
+ synchronized (mLock) {
+ mPlaybackActive = playbackActive;
}
+ mCallbackExecutor.execute(() -> {
+ mCallback.onPlaybackActiveChanged(MediaController2.this, playbackActive);
+ });
}
// Called by Controller2Link.onSessionCommand
void onSessionCommand(int seq, Session2Command command, Bundle args,
@Nullable ResultReceiver resultReceiver) {
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- mRequestedCommandSeqNumbers.add(seq);
- }
- mCallbackExecutor.execute(() -> {
- boolean isCanceled;
- synchronized (mLock) {
- isCanceled = !mRequestedCommandSeqNumbers.remove(seq);
- }
- if (isCanceled) {
- resultReceiver.send(RESULT_INFO_SKIPPED, null);
- return;
- }
- Session2Command.Result result = mCallback.onSessionCommand(
- MediaController2.this, command, args);
- if (resultReceiver != null) {
- if (result == null) {
- throw new RuntimeException("onSessionCommand shouldn't return null");
- } else {
- resultReceiver.send(result.getResultCode(), result.getResultData());
- }
- }
- });
- } finally {
- Binder.restoreCallingIdentity(token);
+ synchronized (mLock) {
+ mRequestedCommandSeqNumbers.add(seq);
}
+ mCallbackExecutor.execute(() -> {
+ boolean isCanceled;
+ synchronized (mLock) {
+ isCanceled = !mRequestedCommandSeqNumbers.remove(seq);
+ }
+ if (isCanceled) {
+ resultReceiver.send(RESULT_INFO_SKIPPED, null);
+ return;
+ }
+ Session2Command.Result result = mCallback.onSessionCommand(
+ MediaController2.this, command, args);
+ if (resultReceiver != null) {
+ if (result == null) {
+ throw new RuntimeException("onSessionCommand shouldn't return null");
+ } else {
+ resultReceiver.send(result.getResultCode(), result.getResultData());
+ }
+ }
+ });
}
// Called by Controller2Link.onSessionCommand
void onCancelCommand(int seq) {
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- mRequestedCommandSeqNumbers.remove(seq);
- }
- } finally {
- Binder.restoreCallingIdentity(token);
+ synchronized (mLock) {
+ mRequestedCommandSeqNumbers.remove(seq);
}
}
@@ -298,18 +320,55 @@
}
}
- private void connectToSession() {
- Session2Link sessionBinder = mSessionToken.getSessionLink();
+ private Bundle createConnectionRequest() {
Bundle connectionRequest = new Bundle();
connectionRequest.putString(KEY_PACKAGE_NAME, mContext.getPackageName());
connectionRequest.putInt(KEY_PID, Process.myPid());
+ return connectionRequest;
+ }
+ private boolean requestConnectToSession() {
+ Session2Link sessionBinder = mSessionToken.getSessionLink();
+ Bundle connectionRequest = createConnectionRequest();
try {
sessionBinder.connect(mControllerStub, getNextSeqNumber(), connectionRequest);
} catch (RuntimeException e) {
- Log.w(TAG, "Failed to call connection request. Framework will retry"
- + " automatically");
+ Log.w(TAG, "Failed to call connection request", e);
+ return false;
}
+ return true;
+ }
+
+ private boolean requestConnectToService() {
+ // Service. Needs to get fresh binder whenever connection is needed.
+ final Intent intent = new Intent(MediaSession2Service.SERVICE_INTERFACE);
+ intent.setClassName(mSessionToken.getPackageName(), mSessionToken.getServiceName());
+
+ // Use bindService() instead of startForegroundService() to start session service for three
+ // reasons.
+ // 1. Prevent session service owner's stopSelf() from destroying service.
+ // With the startForegroundService(), service's call of stopSelf() will trigger immediate
+ // onDestroy() calls on the main thread even when onConnect() is running in another
+ // thread.
+ // 2. Minimize APIs for developers to take care about.
+ // With bindService(), developers only need to take care about Service.onBind()
+ // but Service.onStartCommand() should be also taken care about with the
+ // startForegroundService().
+ // 3. Future support for UI-less playback
+ // If a service wants to keep running, it should be either foreground service or
+ // bound service. But there had been request for the feature for system apps
+ // and using bindService() will be better fit with it.
+ synchronized (mLock) {
+ boolean result = mContext.bindService(
+ intent, mServiceConnection, Context.BIND_AUTO_CREATE);
+ if (!result) {
+ Log.w(TAG, "bind to " + mSessionToken + " failed");
+ return false;
+ } else if (DEBUG) {
+ Log.d(TAG, "bind to " + mSessionToken + " succeeded");
+ }
+ }
+ return true;
}
/**
@@ -341,6 +400,17 @@
public void onDisconnected(@NonNull MediaController2 controller) {}
/**
+ * Called when the playback of the session's playback activeness is changed.
+ *
+ * @param controller the controller for this event
+ * @param playbackActive {@code true} if the session's playback is active.
+ * {@code false} otherwise.
+ * @see MediaController2#isPlaybackActive()
+ */
+ public void onPlaybackActiveChanged(@NonNull MediaController2 controller,
+ boolean playbackActive) {}
+
+ /**
* Called when the connected session sent a session command.
*
* @param controller the controller for this event
@@ -349,7 +419,7 @@
* @return the result for the session command. A runtime exception will be thrown if null
* is returned.
*/
- @NonNull
+ @Nullable
public Session2Command.Result onSessionCommand(@NonNull MediaController2 controller,
@NonNull Session2Command command, @Nullable Bundle args) {
return null;
@@ -366,4 +436,59 @@
public void onCommandResult(@NonNull MediaController2 controller, @NonNull Object token,
@NonNull Session2Command command, @NonNull Session2Command.Result result) {}
}
+
+ // This will be called on the main thread.
+ private class SessionServiceConnection implements ServiceConnection {
+ SessionServiceConnection() {
+ }
+
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ // Note that it's always main-thread.
+ boolean connectRequested = false;
+ try {
+ if (DEBUG) {
+ Log.d(TAG, "onServiceConnected " + name + " " + this);
+ }
+ // Sanity check
+ if (!mSessionToken.getPackageName().equals(name.getPackageName())) {
+ Log.wtf(TAG, "Expected connection to " + mSessionToken.getPackageName()
+ + " but is connected to " + name);
+ return;
+ }
+ IMediaSession2Service iService = IMediaSession2Service.Stub.asInterface(service);
+ if (iService == null) {
+ Log.wtf(TAG, "Service interface is missing.");
+ return;
+ }
+ Bundle connectionRequest = createConnectionRequest();
+ iService.connect(mControllerStub, getNextSeqNumber(), connectionRequest);
+ connectRequested = true;
+ } catch (RemoteException e) {
+ Log.w(TAG, "Service " + name + " has died prematurely", e);
+ } finally {
+ if (!connectRequested) {
+ close();
+ }
+ }
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ // Temporal lose of the binding because of the service crash. System will automatically
+ // rebind, so just no-op.
+ if (DEBUG) {
+ Log.w(TAG, "Session service " + name + " is disconnected.");
+ }
+ close();
+ }
+
+ @Override
+ public void onBindingDied(ComponentName name) {
+ // Permanent lose of the binding because of the service package update or removed.
+ // This SessionServiceRecord will be removed accordingly, but forget session binder here
+ // for sure.
+ close();
+ }
+ }
}
diff --git a/media/java/android/media/MediaDrm.java b/media/java/android/media/MediaDrm.java
index 75b3915..bfc10da5 100644
--- a/media/java/android/media/MediaDrm.java
+++ b/media/java/android/media/MediaDrm.java
@@ -1285,7 +1285,7 @@
@Retention(RetentionPolicy.SOURCE)
@IntDef({HDCP_LEVEL_UNKNOWN, HDCP_NONE, HDCP_V1, HDCP_V2,
- HDCP_V2_1, HDCP_V2_2, HDCP_NO_DIGITAL_OUTPUT})
+ HDCP_V2_1, HDCP_V2_2, HDCP_V2_3, HDCP_NO_DIGITAL_OUTPUT})
public @interface HdcpLevel {}
@@ -1321,6 +1321,11 @@
public static final int HDCP_V2_2 = 5;
/**
+ * HDCP version 2.3 Type 1.
+ */
+ public static final int HDCP_V2_3 = 6;
+
+ /**
* No digital output, implicitly secure
*/
public static final int HDCP_NO_DIGITAL_OUTPUT = Integer.MAX_VALUE;
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index 594a224..c82b5f6 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -124,6 +124,7 @@
public final class MediaFormat {
public static final String MIMETYPE_VIDEO_VP8 = "video/x-vnd.on2.vp8";
public static final String MIMETYPE_VIDEO_VP9 = "video/x-vnd.on2.vp9";
+ public static final String MIMETYPE_VIDEO_AV1 = "video/av01";
public static final String MIMETYPE_VIDEO_AVC = "video/avc";
public static final String MIMETYPE_VIDEO_HEVC = "video/hevc";
public static final String MIMETYPE_VIDEO_MPEG4 = "video/mp4v-es";
diff --git a/media/java/android/media/MediaPlayer2.java b/media/java/android/media/MediaPlayer2.java
index df96994..aa79c41 100644
--- a/media/java/android/media/MediaPlayer2.java
+++ b/media/java/android/media/MediaPlayer2.java
@@ -60,6 +60,7 @@
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
@@ -67,6 +68,7 @@
import java.util.Map;
import java.util.Queue;
import java.util.UUID;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
@@ -399,8 +401,7 @@
clearSourceInfos();
// Modular DRM clean up
- mOnDrmConfigHelper = null;
- synchronized (mDrmEventCbLock) {
+ synchronized (mDrmEventCallbackLock) {
mDrmEventCallbackRecords.clear();
}
@@ -775,7 +776,7 @@
}
boolean hasError = false;
for (DataSourceDesc dsd : dsds) {
- if (dsd != null) {
+ if (dsd == null) {
hasError = true;
continue;
}
@@ -2889,7 +2890,7 @@
}
private void sendDrmEvent(final DrmEventNotifier notifier) {
- synchronized (mDrmEventCbLock) {
+ synchronized (mDrmEventCallbackLock) {
try {
for (Pair<Executor, DrmEventCallback> cb : mDrmEventCallbackRecords) {
cb.first.execute(() -> notifier.notify(cb.second));
@@ -2901,12 +2902,28 @@
}
}
+ private <T> T sendDrmEventWait(final DrmEventNotifier<T> notifier)
+ throws InterruptedException, ExecutionException {
+ synchronized (mDrmEventCallbackLock) {
+ mDrmEventCallbackRecords.get(0);
+ for (Pair<Executor, DrmEventCallback> cb : mDrmEventCallbackRecords) {
+ CompletableFuture<T> ret = new CompletableFuture<>();
+ cb.first.execute(() -> ret.complete(notifier.notifyWait(cb.second)));
+ return ret.get();
+ }
+ }
+ return null;
+ }
+
private interface EventNotifier {
void notify(EventCallback callback);
}
- private interface DrmEventNotifier {
- void notify(DrmEventCallback callback);
+ private interface DrmEventNotifier<T> {
+ default void notify(DrmEventCallback callback) { }
+ default T notifyWait(DrmEventCallback callback) {
+ return null;
+ }
}
/* Do not change these values without updating their counterparts
@@ -3351,73 +3368,209 @@
// Modular DRM begin
/**
- * Interface definition of a callback to be invoked when the app
- * can do DRM configuration (get/set properties) before the session
- * is opened. This facilitates configuration of the properties, like
- * 'securityLevel', which has to be set after DRM scheme creation but
- * before the DRM session is opened.
+ * An immutable structure per {@link DataSourceDesc} with settings required to initiate a DRM
+ * protected playback session.
*
- * The only allowed DRM calls in this listener are
- * {@link MediaPlayer2#getDrmPropertyString(DataSourceDesc, String)}
- * and {@link MediaPlayer2#setDrmPropertyString(DataSourceDesc, String, String)}.
- * @hide
+ * @see DrmPreparationInfo.Builder
*/
- public interface OnDrmConfigHelper {
+ public static final class DrmPreparationInfo {
+
/**
- * Called to give the app the opportunity to configure DRM before the session is created
- *
- * @param mp the {@code MediaPlayer2} associated with this callback
- * @param dsd the DataSourceDesc of this data source
+ * Mutable builder to create a {@link MediaPlayer2.DrmPreparationInfo} object.
*/
- public void onDrmConfig(MediaPlayer2 mp, DataSourceDesc dsd);
- }
+ public static final class Builder {
- /**
- * Register a callback to be invoked for configuration of the DRM object before
- * the session is created.
- * The callback will be invoked synchronously during the execution
- * of {@link #prepareDrm}.
- *
- * @param listener the callback that will be run
- * @hide
- */
- // This is a synchronous call.
- public void setOnDrmConfigHelper(OnDrmConfigHelper listener) {
- mOnDrmConfigHelper = listener;
- }
+ private UUID mUUID;
+ private byte[] mKeySetId;
+ private byte[] mInitData;
+ private String mMimeType;
+ private int mKeyType;
+ private Map<String, String> mOptionalParameters;
- private OnDrmConfigHelper mOnDrmConfigHelper;
+ /**
+ * Set UUID of the crypto scheme selected to decrypt content. An UUID can be retrieved from
+ * the source listening to {@link MediaPlayer2.DrmEventCallback#onDrmInfo}.
+ *
+ * @param uuid of selected crypto scheme
+ * @return this
+ */
+ public Builder setUuid(@NonNull UUID uuid) {
+ this.mUUID = uuid;
+ return this;
+ }
+
+ /**
+ * Set identifier of a persisted offline key obtained from
+ * {@link MediaPlayer2.DrmEventCallback#onDrmPrepared(MediaPlayer2, DataSourceDesc, int, byte[])}.
+ *
+ * A {@code keySetId} can be used to restore persisted offline keys into a new playback
+ * session of a DRM protected data source. When {@code keySetId} is set, {@code initData},
+ * {@code mimeType}, {@code keyType}, {@code optionalParameters} are ignored.
+ *
+ * @param keySetId identifier of a persisted offline key
+ * @return this
+ */
+ public Builder setKeySetId(@Nullable byte[] keySetId) {
+ this.mKeySetId = keySetId;
+ return this;
+ }
+
+ /**
+ * Set container-specific DRM initialization data. Its meaning is interpreted based on
+ * {@code mimeType}. For example, it could contain the content ID, key ID or other data
+ * obtained from the content metadata that is required to generate a
+ * {@link MediaDrm.KeyRequest}.
+ *
+ * @param initData container-specific DRM initialization data
+ * @return this
+ */
+ public Builder setInitData(@Nullable byte[] initData) {
+ this.mInitData = initData;
+ return this;
+ }
+
+ /**
+ * Set mime type of the content
+ *
+ * @param mimeType mime type to the content
+ * @return this
+ */
+ public Builder setMimeType(@Nullable String mimeType) {
+ this.mMimeType = mimeType;
+ return this;
+ }
+
+ /**
+ * Set type of the key request. The request may be to acquire keys
+ * for streaming, {@link MediaDrm#KEY_TYPE_STREAMING}, or for offline content,
+ * {@link MediaDrm#KEY_TYPE_OFFLINE}. Releasing previously acquired keys
+ * ({@link MediaDrm#KEY_TYPE_RELEASE}) is not allowed.
+ *
+ * @param keyType type of the key request
+ * @return this
+ */
+ public Builder setKeyType(@MediaPlayer2.MediaDrmKeyType int keyType) {
+ this.mKeyType = keyType;
+ return this;
+ }
+
+ /**
+ * Set optional parameters to be included in a {@link MediaDrm.KeyRequest} message sent to
+ * the license server.
+ *
+ * @param optionalParameters optional parameters to be included in a key request
+ * @return this
+ */
+ public Builder setOptionalParameters(
+ @Nullable Map<String, String> optionalParameters) {
+ this.mOptionalParameters = optionalParameters;
+ return this;
+ }
+
+ /**
+ * @return an immutable {@link MediaPlayer2.DrmPreparationInfo} representing the settings of this builder
+ */
+ public MediaPlayer2.DrmPreparationInfo build() {
+ return new MediaPlayer2.DrmPreparationInfo(mUUID, mKeySetId, mInitData, mMimeType, mKeyType,
+ mOptionalParameters);
+ }
+
+ }
+
+ private final UUID mUUID;
+ private final byte[] mKeySetId;
+ private final byte[] mInitData;
+ private final String mMimeType;
+ private final int mKeyType;
+ private final Map<String, String> mOptionalParameters;
+
+ private DrmPreparationInfo(UUID mUUID, byte[] mKeySetId, byte[] mInitData, String mMimeType,
+ int mKeyType, Map<String, String> optionalParameters) {
+ this.mUUID = mUUID;
+ this.mKeySetId = mKeySetId;
+ this.mInitData = mInitData;
+ this.mMimeType = mMimeType;
+ this.mKeyType = mKeyType;
+ this.mOptionalParameters = optionalParameters;
+ }
+
+ }
/**
* Interface definition for callbacks to be invoked when the player has the corresponding
* DRM events.
- * @hide
*/
public static class DrmEventCallback {
/**
- * Called to indicate DRM info is available
+ * Called to indicate DRM info is available. Return a {@link DrmPreparationInfo} object that
+ * bundles DRM initialization parameters.
*
* @param mp the {@code MediaPlayer2} associated with this callback
- * @param dsd the DataSourceDesc of this data source
- * @param drmInfo DRM info of the source including PSSH, and subset
- * of crypto schemes supported by this device
+ * @param dsd the {@link DataSourceDesc} of this data source
+ * @param drmInfo DRM info of the source including PSSH, and subset of crypto schemes
+ * supported by this device
+ * @return a {@link DrmPreparationInfo} object to initialize DRM playback, or null to skip
+ * DRM initialization
*/
- public void onDrmInfo(MediaPlayer2 mp, DataSourceDesc dsd, DrmInfo drmInfo) { }
+ public DrmPreparationInfo onDrmInfo(MediaPlayer2 mp, DataSourceDesc dsd, DrmInfo drmInfo) {
+ return null;
+ }
/**
- * Called to notify the client that {@link MediaPlayer2#prepareDrm(DataSourceDesc, UUID)}
- * is finished and ready for key request/response.
+ * Called to notify the client that {@code mp} is ready to decrypt DRM protected data source
+ * {@code dsd}
*
* @param mp the {@code MediaPlayer2} associated with this callback
- * @param dsd the DataSourceDesc of this data source
+ * @param dsd the {@link DataSourceDesc} of this data source
* @param status the result of DRM preparation.
+ * @param keySetId optional identifier that can be used to restore DRM playback initiated
+ * with a {@link MediaDrm#KEY_TYPE_OFFLINE} key request.
+ *
+ * @see DrmPreparationInfo.Builder#setKeySetId(byte[])
*/
- public void onDrmPrepared(
- MediaPlayer2 mp, DataSourceDesc dsd, @PrepareDrmStatusCode int status) { }
+ public void onDrmPrepared(@NonNull MediaPlayer2 mp, @NonNull DataSourceDesc dsd,
+ @PrepareDrmStatusCode int status, @Nullable byte[] keySetId) { }
+
+ /**
+ * Called to give the app the opportunity to configure DRM before the session is created.
+ *
+ * This facilitates configuration of the properties, like 'securityLevel', which
+ * has to be set after DRM scheme creation but before the DRM session is opened.
+ *
+ * The only allowed DRM calls in this listener are
+ * {@link MediaDrm#getPropertyString(String)},
+ * {@link MediaDrm#getPropertyByteArray(String)},
+ * {@link MediaDrm#setPropertyString(String, String)},
+ * {@link MediaDrm#setPropertyByteArray(String, byte[])},
+ * {@link MediaDrm#setOnExpirationUpdateListener},
+ * and {@link MediaDrm#setOnKeyStatusChangeListener}.
+ *
+ * @param mp the {@code MediaPlayer2} associated with this callback
+ * @param dsd the {@link DataSourceDesc} of this data source
+ * @param drm handle to get/set DRM properties and listeners for this data source
+ */
+ public void onDrmConfig(@NonNull MediaPlayer2 mp, @NonNull DataSourceDesc dsd,
+ @NonNull MediaDrm drm) { }
+
+ /**
+ * Called to indicate the DRM session for {@code dsd} is ready for key request/response
+ *
+ * @param mp the {@code MediaPlayer2} associated with this callback
+ * @param dsd the {@link DataSourceDesc} of this data source
+ * @param request a {@link MediaDrm.KeyRequest} prepared using the
+ * {@link DrmPreparationInfo} returned from
+ * {@link #onDrmInfo(MediaPlayer2, DataSourceDesc, DrmInfo)}
+ * @return the response to {@code request} (from license server)
+ */
+ public byte[] onDrmKeyRequest(@NonNull MediaPlayer2 mp, @NonNull DataSourceDesc dsd,
+ @NonNull MediaDrm.KeyRequest request) {
+ return null;
+ }
+
}
- private final Object mDrmEventCbLock = new Object();
- private ArrayList<Pair<Executor, DrmEventCallback>> mDrmEventCallbackRecords =
+ private final Object mDrmEventCallbackLock = new Object();
+ private List<Pair<Executor, DrmEventCallback>> mDrmEventCallbackRecords =
new ArrayList<Pair<Executor, DrmEventCallback>>();
/**
@@ -3425,10 +3578,9 @@
*
* @param eventCallback the callback that will be run
* @param executor the executor through which the callback should be invoked
- * @hide
*/
// This is a synchronous call.
- public void registerDrmEventCallback(@NonNull @CallbackExecutor Executor executor,
+ public void setDrmEventCallback(@NonNull @CallbackExecutor Executor executor,
@NonNull DrmEventCallback eventCallback) {
if (eventCallback == null) {
throw new IllegalArgumentException("Illegal null EventCallback");
@@ -3437,8 +3589,9 @@
throw new IllegalArgumentException(
"Illegal null Executor for the EventCallback");
}
- synchronized (mDrmEventCbLock) {
- mDrmEventCallbackRecords.add(new Pair(executor, eventCallback));
+ synchronized (mDrmEventCallbackLock) {
+ mDrmEventCallbackRecords = Collections.singletonList(
+ new Pair<Executor, DrmEventCallback>(executor, eventCallback));
}
}
@@ -3450,7 +3603,7 @@
*/
// This is a synchronous call.
public void unregisterDrmEventCallback(DrmEventCallback eventCallback) {
- synchronized (mDrmEventCbLock) {
+ synchronized (mDrmEventCallbackLock) {
for (Pair<Executor, DrmEventCallback> cb : mDrmEventCallbackRecords) {
if (cb.second == eventCallback) {
mDrmEventCallbackRecords.remove(cb);
@@ -3564,7 +3717,7 @@
/**
* Prepares the DRM for the given data source
* <p>
- * If {@link OnDrmConfigHelper} is registered, it will be called during
+ * If {@link DrmEventCallback} is registered, it will be called during
* preparation to allow configuration of the DRM properties before opening the
* DRM session. It should be used only for a series of
* {@link #getDrmPropertyString(DataSourceDesc, String)} and
@@ -3587,8 +3740,7 @@
* @param dsd The DRM protected data source
*
* @param uuid The UUID of the crypto scheme. If not known beforehand, it can be retrieved
- * from the source through {@link #getDrmInfo(DataSourceDesc)} or registering a
- * {@link DrmEventCallback#onDrmInfo}.
+ * from the source listening to {@link DrmEventCallback#onDrmInfo}.
*
* @return a token which can be used to cancel the operation later with {@link #cancelCommand}.
* @hide
@@ -3661,8 +3813,8 @@
sendDrmEvent(new DrmEventNotifier() {
@Override
public void notify(DrmEventCallback callback) {
- callback.onDrmPrepared(
- MediaPlayer2.this, dsd, prepareDrmStatus);
+ callback.onDrmPrepared(MediaPlayer2.this, dsd, prepareDrmStatus,
+ /* TODO: keySetId */ null);
}
});
@@ -3876,7 +4028,6 @@
/**
* Encapsulates the DRM properties of the source.
- * @hide
*/
public static final class DrmInfo {
private Map<UUID, byte[]> mMapPssh;
@@ -4013,10 +4164,8 @@
}; // DrmInfo
/**
- * Thrown when a DRM method is called before preparing a DRM scheme through
- * {@link MediaPlayer2#prepareDrm(DataSourceDesc, UUID)}.
+ * Thrown when a DRM method is called when there is no active DRM session.
* Extends MediaDrm.MediaDrmException
- * @hide
*/
public static final class NoDrmSchemeException extends MediaDrmException {
public NoDrmSchemeException(String detailMessage) {
@@ -4291,9 +4440,9 @@
}
void prepare(UUID uuid) throws UnsupportedSchemeException,
- ResourceBusyException, NotProvisionedException {
- final OnDrmConfigHelper onDrmConfigHelper = mOnDrmConfigHelper;
- Log.v(TAG, "prepareDrm: uuid: " + uuid + " mOnDrmConfigHelper: " + onDrmConfigHelper);
+ ResourceBusyException, NotProvisionedException, InterruptedException,
+ ExecutionException {
+ Log.v(TAG, "prepareDrm: uuid: " + uuid);
synchronized (this) {
if (mActiveDrmUUID != null) {
@@ -4334,9 +4483,13 @@
} // synchronized
// call the callback outside the lock
- if (onDrmConfigHelper != null) {
- onDrmConfigHelper.onDrmConfig(MediaPlayer2.this, mDSD);
- }
+ sendDrmEventWait(new DrmEventNotifier<Void>() {
+ @Override
+ public Void notifyWait(DrmEventCallback callback) {
+ callback.onDrmConfig(MediaPlayer2.this, mDSD, mDrmObj);
+ return null;
+ }
+ });
synchronized (this) {
mDrmConfigAllowed = false;
@@ -4506,7 +4659,7 @@
@Override
public void notify(DrmEventCallback callback) {
callback.onDrmPrepared(
- MediaPlayer2.this, mDSD, finalStatus);
+ MediaPlayer2.this, mDSD, finalStatus, /* TODO: keySetId */ null);
}
});
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index 25b1df2..1304afe 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -302,6 +302,34 @@
* {@link #DEFAULT} otherwise. */
public static final int UNPROCESSED = 9;
+
+ /**
+ * Source for capturing audio meant to be processed in real time and played back for live
+ * performance (e.g karaoke).
+ * <p>
+ * The capture path will minimize latency and coupling with
+ * playback path.
+ * </p>
+ */
+ public static final int VOICE_PERFORMANCE = 10;
+
+ /**
+ * Source for an echo canceller to capture the reference signal to be cancelled.
+ * <p>
+ * The echo reference signal will be captured as close as possible to the DAC in order
+ * to include all post processing applied to the playback path.
+ * </p><p>
+ * Capturing the echo reference requires the
+ * {@link android.Manifest.permission#CAPTURE_AUDIO_OUTPUT} permission.
+ * This permission is reserved for use by system components and is not available to
+ * third-party applications.
+ * </p>
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT)
+ public static final int ECHO_REFERENCE = 1997;
+
/**
* Audio source for capturing broadcast radio tuner output.
* @hide
@@ -343,6 +371,7 @@
case AudioSource.VOICE_COMMUNICATION:
//case REMOTE_SUBMIX: considered "system" as it requires system permissions
case AudioSource.UNPROCESSED:
+ case AudioSource.VOICE_PERFORMANCE:
return false;
default:
return true;
@@ -372,6 +401,10 @@
return "REMOTE_SUBMIX";
case AudioSource.UNPROCESSED:
return "UNPROCESSED";
+ case AudioSource.ECHO_REFERENCE:
+ return "ECHO_REFERENCE";
+ case AudioSource.VOICE_PERFORMANCE:
+ return "VOICE_PERFORMANCE";
case AudioSource.RADIO_TUNER:
return "RADIO_TUNER";
case AudioSource.HOTWORD:
@@ -524,7 +557,7 @@
* @see android.media.MediaRecorder.AudioSource
*/
public static final int getAudioSourceMax() {
- return AudioSource.UNPROCESSED;
+ return AudioSource.VOICE_PERFORMANCE;
}
/**
diff --git a/media/java/android/media/MediaSession2.java b/media/java/android/media/MediaSession2.java
index 7b20f7a..3adac72 100644
--- a/media/java/android/media/MediaSession2.java
+++ b/media/java/android/media/MediaSession2.java
@@ -19,7 +19,8 @@
import static android.media.MediaConstants.KEY_ALLOWED_COMMANDS;
import static android.media.MediaConstants.KEY_PACKAGE_NAME;
import static android.media.MediaConstants.KEY_PID;
-import static android.media.MediaConstants.KEY_SESSION2_STUB;
+import static android.media.MediaConstants.KEY_PLAYBACK_ACTIVE;
+import static android.media.MediaConstants.KEY_SESSION2LINK;
import static android.media.Session2Command.RESULT_ERROR_UNKNOWN_ERROR;
import static android.media.Session2Command.RESULT_INFO_SKIPPED;
import static android.media.Session2Token.TYPE_SESSION;
@@ -31,7 +32,6 @@
import android.content.Intent;
import android.media.session.MediaSessionManager;
import android.media.session.MediaSessionManager.RemoteUserInfo;
-import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.Process;
@@ -41,7 +41,6 @@
import android.util.Log;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -56,10 +55,9 @@
* Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
* <a href="{@docRoot}reference/androidx/media2/package-summary.html">Media2 Library</a>
* for consistent behavior across all devices.
- * @hide
*/
public class MediaSession2 implements AutoCloseable {
- static final String TAG = "MediaSession";
+ static final String TAG = "MediaSession2";
static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
// Note: This checks the uniqueness of a session ID only in a single process.
@@ -89,8 +87,9 @@
private final Handler mResultHandler;
//@GuardedBy("mLock")
- @SuppressWarnings("WeakerAccess") /* synthetic access */
private boolean mClosed;
+ //@GuardedBy("mLock")
+ private boolean mPlaybackActive;
MediaSession2(@NonNull Context context, @NonNull String id, PendingIntent sessionActivity,
@NonNull Executor callbackExecutor, @NonNull SessionCallback callback) {
@@ -113,20 +112,25 @@
Context.MEDIA_SESSION_SERVICE);
// NOTE: mResultHandler uses main looper, so this MUST NOT be blocked.
mResultHandler = new Handler(context.getMainLooper());
+ mClosed = false;
}
@Override
public void close() {
try {
+ List<ControllerInfo> controllerInfos;
+ synchronized (mLock) {
+ if (mClosed) {
+ return;
+ }
+ mClosed = true;
+ controllerInfos = getConnectedControllers();
+ mConnectedControllers.clear();
+ mCallback.onSessionClosed(this);
+ }
synchronized (MediaSession2.class) {
SESSION_ID_LIST.remove(mSessionId);
}
- Collection<ControllerInfo> controllerInfos;
- synchronized (mLock) {
- controllerInfos = mConnectedControllers.values();
- mConnectedControllers.clear();
- mClosed = true;
- }
for (ControllerInfo info : controllerInfos) {
info.notifyDisconnected();
}
@@ -161,10 +165,7 @@
if (command == null) {
throw new IllegalArgumentException("command shouldn't be null");
}
- Collection<ControllerInfo> controllerInfos;
- synchronized (mLock) {
- controllerInfos = mConnectedControllers.values();
- }
+ List<ControllerInfo> controllerInfos = getConnectedControllers();
for (ControllerInfo controller : controllerInfos) {
controller.sendSessionCommand(command, args, null);
}
@@ -179,6 +180,7 @@
* @return a token which will be sent together in {@link SessionCallback#onCommandResult}
* when its result is received.
*/
+ @NonNull
public Object sendSessionCommand(@NonNull ControllerInfo controller,
@NonNull Session2Command command, @Nullable Bundle args) {
if (controller == null) {
@@ -206,36 +208,71 @@
* @param controller the controller to get the session command
* @param token the token which is returned from {@link #sendSessionCommand}.
*/
- public void cancelSessionCommand(ControllerInfo controller, Object token) {
+ public void cancelSessionCommand(@NonNull ControllerInfo controller, @NonNull Object token) {
+ if (controller == null) {
+ throw new IllegalArgumentException("controller shouldn't be null");
+ }
if (token == null) {
throw new IllegalArgumentException("token shouldn't be null");
}
controller.cancelSessionCommand(token);
}
+ /**
+ * Sets whether the playback is active (i.e. playing something)
+ *
+ * @param playbackActive {@code true} if the playback active, {@code false} otherwise.
+ **/
+ public void setPlaybackActive(boolean playbackActive) {
+ synchronized (mLock) {
+ if (mPlaybackActive == playbackActive) {
+ return;
+ }
+ mPlaybackActive = playbackActive;
+ }
+ List<ControllerInfo> controllerInfos = getConnectedControllers();
+ for (ControllerInfo controller : controllerInfos) {
+ controller.notifyPlaybackActiveChanged(playbackActive);
+ }
+ }
+
+ /**
+ * Returns whehther the playback is active (i.e. playing something)
+ *
+ * @return {@code true} if the playback active, {@code false} otherwise.
+ */
+ public boolean isPlaybackActive() {
+ synchronized (mLock) {
+ return mPlaybackActive;
+ }
+ }
+
boolean isClosed() {
synchronized (mLock) {
return mClosed;
}
}
- // Called by Session2Link.onConnect
- void onConnect(final Controller2Link controller, int seq, Bundle connectionRequest) {
- if (controller == null || connectionRequest == null) {
- return;
+ SessionCallback getCallback() {
+ return mCallback;
+ }
+
+ // Called by Session2Link.onConnect and MediaSession2Service.MediaSession2ServiceStub.connect
+ void onConnect(final Controller2Link controller, int callingPid, int callingUid, int seq,
+ Bundle connectionRequest) {
+ if (callingPid == 0) {
+ // The pid here is from Binder.getCallingPid(), which can be 0 for an oneway call from
+ // the remote process. If it's the case, use PID from the connectionRequest.
+ callingPid = connectionRequest.getInt(KEY_PID);
}
- final int uid = Binder.getCallingUid();
- final int callingPid = Binder.getCallingPid();
- final long token = Binder.clearCallingIdentity();
- // Binder.getCallingPid() can be 0 for an oneway call from the remote process.
- // If it's the case, use PID from the ConnectionRequest.
- final int pid = (callingPid != 0) ? callingPid : connectionRequest.getInt(KEY_PID);
- final String pkg = connectionRequest.getString(KEY_PACKAGE_NAME);
- try {
- RemoteUserInfo remoteUserInfo = new RemoteUserInfo(pkg, pid, uid);
- final ControllerInfo controllerInfo = new ControllerInfo(remoteUserInfo,
- mSessionManager.isTrustedForMediaControl(remoteUserInfo), controller);
- mCallbackExecutor.execute(() -> {
+ String callingPkg = connectionRequest.getString(KEY_PACKAGE_NAME);
+
+ RemoteUserInfo remoteUserInfo = new RemoteUserInfo(callingPkg, callingPid, callingUid);
+ final ControllerInfo controllerInfo = new ControllerInfo(remoteUserInfo,
+ mSessionManager.isTrustedForMediaControl(remoteUserInfo), controller);
+ mCallbackExecutor.execute(() -> {
+ boolean connected = false;
+ try {
if (isClosed()) {
return;
}
@@ -244,77 +281,72 @@
// Don't reject connection for the request from trusted app.
// Otherwise server will fail to retrieve session's information to dispatch
// media keys to.
- boolean accept =
- controllerInfo.mAllowedCommands != null || controllerInfo.isTrusted();
- if (accept) {
- if (controllerInfo.mAllowedCommands == null) {
- // For trusted apps, send non-null allowed commands to keep
- // connection.
- controllerInfo.mAllowedCommands =
- new Session2CommandGroup.Builder().build();
+ if (controllerInfo.mAllowedCommands == null && !controllerInfo.isTrusted()) {
+ return;
+ }
+ if (controllerInfo.mAllowedCommands == null) {
+ // For trusted apps, send non-null allowed commands to keep
+ // connection.
+ controllerInfo.mAllowedCommands =
+ new Session2CommandGroup.Builder().build();
+ }
+ if (DEBUG) {
+ Log.d(TAG, "Accepting connection: " + controllerInfo);
+ }
+ synchronized (mLock) {
+ if (mConnectedControllers.containsKey(controller)) {
+ Log.w(TAG, "Controller " + controllerInfo + " has sent connection"
+ + " request multiple times");
}
+ mConnectedControllers.put(controller, controllerInfo);
+ }
+ // If connection is accepted, notify the current state to the controller.
+ // It's needed because we cannot call synchronous calls between
+ // session/controller.
+ Bundle connectionResult = new Bundle();
+ connectionResult.putParcelable(KEY_SESSION2LINK, mSessionStub);
+ connectionResult.putParcelable(KEY_ALLOWED_COMMANDS,
+ controllerInfo.mAllowedCommands);
+ connectionResult.putBoolean(KEY_PLAYBACK_ACTIVE, isPlaybackActive());
+
+ // Double check if session is still there, because close() can be called in
+ // another thread.
+ if (isClosed()) {
+ return;
+ }
+ controllerInfo.notifyConnected(connectionResult);
+ connected = true;
+ } finally {
+ if (!connected) {
if (DEBUG) {
- Log.d(TAG, "Accepting connection: " + controllerInfo);
+ Log.d(TAG, "Rejecting connection or notifying that session is closed"
+ + ", controllerInfo=" + controllerInfo);
}
synchronized (mLock) {
- if (mConnectedControllers.containsKey(controller)) {
- Log.w(TAG, "Controller " + controllerInfo + " has sent connection"
- + " request multiple times");
- }
- mConnectedControllers.put(controller, controllerInfo);
- }
- // If connection is accepted, notify the current state to the controller.
- // It's needed because we cannot call synchronous calls between
- // session/controller.
- Bundle connectionResult = new Bundle();
- connectionResult.putParcelable(KEY_SESSION2_STUB, mSessionStub);
- connectionResult.putParcelable(KEY_ALLOWED_COMMANDS,
- controllerInfo.mAllowedCommands);
-
- // Double check if session is still there, because close() can be called in
- // another thread.
- if (isClosed()) {
- return;
- }
- controllerInfo.notifyConnected(connectionResult);
- } else {
- if (DEBUG) {
- Log.d(TAG, "Rejecting connection, controllerInfo=" + controllerInfo);
+ mConnectedControllers.remove(controller);
}
controllerInfo.notifyDisconnected();
}
- });
- } finally {
- Binder.restoreCallingIdentity(token);
- }
+ }
+ });
}
// Called by Session2Link.onDisconnect
- void onDisconnect(final Controller2Link controller, int seq) {
- if (controller == null) {
- return;
- }
+ void onDisconnect(@NonNull final Controller2Link controller, int seq) {
final ControllerInfo controllerInfo;
synchronized (mLock) {
- controllerInfo = mConnectedControllers.get(controller);
+ controllerInfo = mConnectedControllers.remove(controller);
}
if (controllerInfo == null) {
return;
}
-
- final long token = Binder.clearCallingIdentity();
- try {
- mCallbackExecutor.execute(() -> {
- mCallback.onDisconnected(MediaSession2.this, controllerInfo);
- });
- mConnectedControllers.remove(controller);
- } finally {
- Binder.restoreCallingIdentity(token);
- }
+ mCallbackExecutor.execute(() -> {
+ mCallback.onDisconnected(MediaSession2.this, controllerInfo);
+ });
}
// Called by Session2Link.onSessionCommand
- void onSessionCommand(final Controller2Link controller, final int seq,
+ void onSessionCommand(@NonNull final Controller2Link controller, final int seq,
final Session2Command command, final Bundle args,
@Nullable ResultReceiver resultReceiver) {
if (controller == null) {
@@ -329,34 +361,28 @@
}
// TODO: check allowed commands.
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- controllerInfo.addRequestedCommandSeqNumber(seq);
- }
-
- mCallbackExecutor.execute(() -> {
- if (!controllerInfo.removeRequestedCommandSeqNumber(seq)) {
- resultReceiver.send(RESULT_INFO_SKIPPED, null);
- return;
- }
- Session2Command.Result result = mCallback.onSessionCommand(
- MediaSession2.this, controllerInfo, command, args);
- if (resultReceiver != null) {
- if (result == null) {
- throw new RuntimeException("onSessionCommand shouldn't return null");
- } else {
- resultReceiver.send(result.getResultCode(), result.getResultData());
- }
- }
- });
- } finally {
- Binder.restoreCallingIdentity(token);
+ synchronized (mLock) {
+ controllerInfo.addRequestedCommandSeqNumber(seq);
}
+ mCallbackExecutor.execute(() -> {
+ if (!controllerInfo.removeRequestedCommandSeqNumber(seq)) {
+ resultReceiver.send(RESULT_INFO_SKIPPED, null);
+ return;
+ }
+ Session2Command.Result result = mCallback.onSessionCommand(
+ MediaSession2.this, controllerInfo, command, args);
+ if (resultReceiver != null) {
+ if (result == null) {
+ throw new RuntimeException("onSessionCommand shouldn't return null");
+ } else {
+ resultReceiver.send(result.getResultCode(), result.getResultData());
+ }
+ }
+ });
}
// Called by Session2Link.onCancelCommand
- void onCancelCommand(final Controller2Link controller, final int seq) {
+ void onCancelCommand(@NonNull final Controller2Link controller, final int seq) {
final ControllerInfo controllerInfo;
synchronized (mLock) {
controllerInfo = mConnectedControllers.get(controller);
@@ -364,13 +390,15 @@
if (controllerInfo == null) {
return;
}
+ controllerInfo.removeRequestedCommandSeqNumber(seq);
+ }
- final long token = Binder.clearCallingIdentity();
- try {
- controllerInfo.removeRequestedCommandSeqNumber(seq);
- } finally {
- Binder.restoreCallingIdentity(token);
+ private List<ControllerInfo> getConnectedControllers() {
+ List<ControllerInfo> controllers = new ArrayList<>();
+ synchronized (mLock) {
+ controllers.addAll(mConnectedControllers.values());
}
+ return controllers;
}
/**
@@ -558,7 +586,7 @@
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
if (!(obj instanceof ControllerInfo)) return false;
if (this == obj) return true;
@@ -570,6 +598,7 @@
}
@Override
+ @NonNull
public String toString() {
return "ControllerInfo {pkg=" + mRemoteUserInfo.getPackageName() + ", uid="
+ mRemoteUserInfo.getUid() + ", allowedCommands=" + mAllowedCommands + "})";
@@ -595,6 +624,16 @@
}
}
+ void notifyPlaybackActiveChanged(boolean playbackActive) {
+ if (mControllerBinder == null) return;
+
+ try {
+ mControllerBinder.notifyPlaybackActiveChanged(getNextSeqNumber(), playbackActive);
+ } catch (RuntimeException e) {
+ // Controller may be died prematurely.
+ }
+ }
+
void sendSessionCommand(Session2Command command, Bundle args,
ResultReceiver resultReceiver) {
if (mControllerBinder == null) return;
@@ -656,6 +695,8 @@
* This API is not generally intended for third party application developers.
*/
public abstract static class SessionCallback {
+ ForegroundServiceEventCallback mForegroundServiceEventCallback;
+
/**
* Called when a controller is created for this session. Return allowed commands for
* controller. By default it returns {@code null}.
@@ -693,7 +734,7 @@
* @return the result for the session command. A runtime exception will be thrown if null
* is returned.
*/
- @NonNull
+ @Nullable
public Session2Command.Result onSessionCommand(@NonNull MediaSession2 session,
@NonNull ControllerInfo controller, @NonNull Session2Command command,
@Nullable Bundle args) {
@@ -712,5 +753,19 @@
public void onCommandResult(@NonNull MediaSession2 session,
@NonNull ControllerInfo controller, @NonNull Object token,
@NonNull Session2Command command, @NonNull Session2Command.Result result) {}
+
+ final void onSessionClosed(MediaSession2 session) {
+ if (mForegroundServiceEventCallback != null) {
+ mForegroundServiceEventCallback.onSessionClosed(session);
+ }
+ }
+
+ void setForegroundServiceEventCallback(ForegroundServiceEventCallback callback) {
+ mForegroundServiceEventCallback = callback;
+ }
+
+ abstract static class ForegroundServiceEventCallback {
+ public void onSessionClosed(MediaSession2 session) {}
+ }
}
}
diff --git a/media/java/android/media/MediaSession2Service.java b/media/java/android/media/MediaSession2Service.java
new file mode 100644
index 0000000..8fb00fe
--- /dev/null
+++ b/media/java/android/media/MediaSession2Service.java
@@ -0,0 +1,288 @@
+/*
+ * Copyright 2019 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 android.media;
+
+import android.annotation.CallSuper;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.Service;
+import android.content.Intent;
+import android.os.Binder;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import com.android.internal.annotations.GuardedBy;
+
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Service containing {@link MediaSession2}.
+ * <p>
+ * This API is not generally intended for third party application developers.
+ * Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
+ * <a href="{@docRoot}reference/androidx/media2/package-summary.html">Media2 Library</a>
+ * for consistent behavior across all devices.
+ * @hide
+ */
+// TODO: Unhide
+// TODO: Add onUpdateNotification(), and calls it to get Notification for startForegroundService()
+// when a session's player state becomes playing.
+public abstract class MediaSession2Service extends Service {
+ /**
+ * The {@link Intent} that must be declared as handled by the service.
+ */
+ public static final String SERVICE_INTERFACE = "android.media.MediaSession2Service";
+
+ private static final String TAG = "MediaSession2Service";
+ private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+ private final Object mLock = new Object();
+ @GuardedBy("mLock")
+ private Map<String, MediaSession2> mSessions = new ArrayMap<>();
+
+ private MediaSession2ServiceStub mStub;
+
+ /**
+ * Called by the system when the service is first created. Do not call this method directly.
+ * <p>
+ * Override this method if you need your own initialization. Derived classes MUST call through
+ * to the super class's implementation of this method.
+ */
+ @CallSuper
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ mStub = new MediaSession2ServiceStub(this);
+ }
+
+ @CallSuper
+ @Override
+ @Nullable
+ public IBinder onBind(@NonNull Intent intent) {
+ if (SERVICE_INTERFACE.equals(intent.getAction())) {
+ return mStub;
+ }
+ return null;
+ }
+
+ @CallSuper
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ // TODO: Dispatch media key events to the primary session.
+ return START_STICKY;
+ }
+
+ /**
+ * Called by the system to notify that it is no longer used and is being removed. Do not call
+ * this method directly.
+ * <p>
+ * Override this method if you need your own clean up. Derived classes MUST call through
+ * to the super class's implementation of this method.
+ */
+ @CallSuper
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ synchronized (mLock) {
+ for (MediaSession2 session : mSessions.values()) {
+ session.getCallback().setForegroundServiceEventCallback(null);
+ }
+ mSessions.clear();
+ }
+ mStub.close();
+ }
+
+ /**
+ * Called when a {@link MediaController2} is created with the this service's
+ * {@link Session2Token}. Return the primary session for telling the controller which session to
+ * connect.
+ * <p>
+ * Primary session is the highest priority session that this service manages. Here are some
+ * recommendations of the primary session.
+ * <ol>
+ * <li>When there's no {@link MediaSession2}, create and return a new session. Resume the
+ * playback that the app has the lastly played with the new session. The behavior is what
+ * framework expects when the framework sends key events to the service.</li>
+ * <li>When there's multiple {@link MediaSession2}s, pick the session that has the lastly
+ * started the playback. This is the same way as the framework prioritize sessions to receive
+ * media key events.</li>
+ * </ol>
+ * <p>
+ * Session returned here will be added to this service automatically. You don't need to call
+ * {@link #addSession(MediaSession2)} for that.
+ * <p>
+ * Session service will accept or reject the connection with the
+ * {@link MediaSession2.SessionCallback} in the session returned here.
+ * <p>
+ * This method is always called on the main thread.
+ *
+ * @return a new session
+ * @see MediaSession2.Builder
+ * @see #getSessions()
+ */
+ @NonNull
+ public abstract MediaSession2 onGetPrimarySession();
+
+ /**
+ * Adds a session to this service.
+ * <p>
+ * Added session will be removed automatically when it's closed, or removed when
+ * {@link #removeSession} is called.
+ *
+ * @param session a session to be added.
+ * @see #removeSession(MediaSession2)
+ */
+ public final void addSession(@NonNull MediaSession2 session) {
+ if (session == null) {
+ throw new IllegalArgumentException("session shouldn't be null");
+ }
+ if (session.isClosed()) {
+ throw new IllegalArgumentException("session is already closed");
+ }
+ synchronized (mLock) {
+ MediaSession2 previousSession = mSessions.get(session.getSessionId());
+ if (previousSession != session) {
+ if (previousSession != null) {
+ Log.w(TAG, "Session ID should be unique, ID=" + session.getSessionId()
+ + ", previous=" + previousSession + ", session=" + session);
+ }
+ return;
+ }
+ mSessions.put(session.getSessionId(), session);
+ session.getCallback().setForegroundServiceEventCallback(
+ new MediaSession2.SessionCallback.ForegroundServiceEventCallback() {
+ @Override
+ public void onSessionClosed(MediaSession2 session) {
+ removeSession(session);
+ }
+ });
+ }
+ }
+
+ /**
+ * Removes a session from this service.
+ *
+ * @param session a session to be removed.
+ * @see #addSession(MediaSession2)
+ */
+ public final void removeSession(@NonNull MediaSession2 session) {
+ if (session == null) {
+ throw new IllegalArgumentException("session shouldn't be null");
+ }
+ synchronized (mLock) {
+ mSessions.remove(session.getSessionId());
+ }
+ }
+
+ /**
+ * Gets the list of {@link MediaSession2}s that you've added to this service.
+ *
+ * @return sessions
+ */
+ public final @NonNull List<MediaSession2> getSessions() {
+ List<MediaSession2> list = new ArrayList<>();
+ synchronized (mLock) {
+ list.addAll(mSessions.values());
+ }
+ return list;
+ }
+
+ private static final class MediaSession2ServiceStub extends IMediaSession2Service.Stub
+ implements AutoCloseable {
+ final WeakReference<MediaSession2Service> mService;
+ final Handler mHandler;
+
+ MediaSession2ServiceStub(MediaSession2Service service) {
+ mService = new WeakReference<>(service);
+ mHandler = new Handler(service.getMainLooper());
+ }
+
+ @Override
+ public void connect(Controller2Link caller, int seq, Bundle connectionRequest) {
+ if (mService.get() == null) {
+ if (DEBUG) {
+ Log.d(TAG, "Service is already destroyed");
+ }
+ return;
+ }
+ if (caller == null || connectionRequest == null) {
+ if (DEBUG) {
+ Log.d(TAG, "Ignoring calls with illegal arguments, caller=" + caller
+ + ", connectionRequest=" + connectionRequest);
+ }
+ return;
+ }
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ mHandler.post(() -> {
+ boolean shouldNotifyDisconnected = true;
+ try {
+ final MediaSession2Service service = mService.get();
+ if (service == null) {
+ if (DEBUG) {
+ Log.d(TAG, "Service isn't available");
+ }
+ return;
+ }
+ if (DEBUG) {
+ Log.d(TAG, "Handling incoming connection request from the"
+ + " controller, controller=" + caller + ", uid=" + uid);
+ }
+ final MediaSession2 session;
+ session = service.onGetPrimarySession();
+ service.addSession(session);
+ shouldNotifyDisconnected = false;
+ session.onConnect(caller, pid, uid, seq, connectionRequest);
+ } catch (Exception e) {
+ // Don't propagate exception in service to the controller.
+ Log.w(TAG, "Failed to add a session to session service", e);
+ } finally {
+ // Trick to call onDisconnected() in one place.
+ if (shouldNotifyDisconnected) {
+ if (DEBUG) {
+ Log.d(TAG, "Service has destroyed prematurely."
+ + " Rejecting connection");
+ }
+ try {
+ caller.notifyDisconnected(0);
+ } catch (RuntimeException e) {
+ // Controller may be died prematurely.
+ // Not an issue because we'll ignore it anyway.
+ }
+ }
+ }
+ });
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void close() {
+ mHandler.removeCallbacksAndMessages(null);
+ mService.clear();
+ }
+ }
+}
diff --git a/media/java/android/media/MicrophoneDirection.java b/media/java/android/media/MicrophoneDirection.java
new file mode 100644
index 0000000..99201c0
--- /dev/null
+++ b/media/java/android/media/MicrophoneDirection.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2018 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 android.media;
+
+/**
+ * @hide
+ */
+public interface MicrophoneDirection {
+ /**
+ * @hide
+ */
+ int MIC_DIRECTION_UNSPECIFIED = 0;
+
+ /**
+ * @hide
+ */
+ int MIC_DIRECTION_FRONT = 1;
+
+ /**
+ * @hide
+ */
+ int MIC_DIRECTION_BACK = 2;
+
+ /**
+ * @hide
+ */
+ int MIC_DIRECTION_EXTERNAL = 3;
+
+ /**
+ * Specifies the logical microphone (for processing).
+ *
+ * @param direction Direction constant (MicrophoneDirection.MIC_DIRECTION_*)
+ * @return retval OK if the call is successful, an error code otherwise.
+ * @hide
+ */
+ int setMicrophoneDirection(int direction);
+
+ /**
+ * Specifies the zoom factor (i.e. the field dimension) for the selected microphone
+ * (for processing). The selected microphone is determined by the use-case for the stream.
+ *
+ * @param zoom the desired field dimension of microphone capture. Range is from -1 (wide angle),
+ * though 0 (no zoom) to 1 (maximum zoom).
+ * @return retval OK if the call is successful, an error code otherwise.
+ * @hide
+ */
+ int setMicrophoneFieldDimension(float zoom);
+}
diff --git a/media/java/android/media/Session2CommandGroup.java b/media/java/android/media/Session2CommandGroup.java
index 519888e..a189c26 100644
--- a/media/java/android/media/Session2CommandGroup.java
+++ b/media/java/android/media/Session2CommandGroup.java
@@ -59,6 +59,7 @@
*
* @param commands The collection of commands to copy.
*/
+ @SuppressWarnings("WeakerAccess") /* synthetic access */
Session2CommandGroup(@Nullable Collection<Session2Command> commands) {
if (commands != null) {
mCommands.addAll(commands);
diff --git a/media/java/android/media/Session2Link.java b/media/java/android/media/Session2Link.java
index 5fe558d..08664aa 100644
--- a/media/java/android/media/Session2Link.java
+++ b/media/java/android/media/Session2Link.java
@@ -17,6 +17,7 @@
package android.media;
import android.annotation.NonNull;
+import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Parcel;
@@ -145,8 +146,9 @@
}
/** Stub implementation for IMediaSession2.connect */
- public void onConnect(final Controller2Link caller, int seq, Bundle connectionRequest) {
- mSession.onConnect(caller, seq, connectionRequest);
+ public void onConnect(final Controller2Link caller, int pid, int uid, int seq,
+ Bundle connectionRequest) {
+ mSession.onConnect(caller, pid, uid, seq, connectionRequest);
}
/** Stub implementation for IMediaSession2.disconnect */
@@ -168,23 +170,57 @@
private class Session2Stub extends IMediaSession2.Stub {
@Override
public void connect(final Controller2Link caller, int seq, Bundle connectionRequest) {
- Session2Link.this.onConnect(caller, seq, connectionRequest);
+ if (caller == null || connectionRequest == null) {
+ return;
+ }
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ Session2Link.this.onConnect(caller, pid, uid, seq, connectionRequest);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
@Override
public void disconnect(final Controller2Link caller, int seq) {
- Session2Link.this.onDisconnect(caller, seq);
+ if (caller == null) {
+ return;
+ }
+ final long token = Binder.clearCallingIdentity();
+ try {
+ Session2Link.this.onDisconnect(caller, seq);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
@Override
public void sendSessionCommand(final Controller2Link caller, final int seq,
final Session2Command command, final Bundle args, ResultReceiver resultReceiver) {
- Session2Link.this.onSessionCommand(caller, seq, command, args, resultReceiver);
+ if (caller == null) {
+ return;
+ }
+ final long token = Binder.clearCallingIdentity();
+ try {
+ Session2Link.this.onSessionCommand(caller, seq, command, args, resultReceiver);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
@Override
public void cancelSessionCommand(final Controller2Link caller, final int seq) {
- Session2Link.this.onCancelCommand(caller, seq);
+ if (caller == null) {
+ return;
+ }
+ final long token = Binder.clearCallingIdentity();
+ try {
+ Session2Link.this.onCancelCommand(caller, seq);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
}
}
diff --git a/media/java/android/media/Session2Token.java b/media/java/android/media/Session2Token.java
index e1fff38..d8f74c5 100644
--- a/media/java/android/media/Session2Token.java
+++ b/media/java/android/media/Session2Token.java
@@ -27,6 +27,7 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
+import android.util.Log;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -34,7 +35,7 @@
import java.util.Objects;
/**
- * Represents an ongoing {@link MediaSession2} or a {@link MediaSession2Service}.
+ * Represents an ongoing {@link MediaSession2} or a MediaSession2Service.
* If it's representing a session service, it may not be ongoing.
* <p>
* This API is not generally intended for third party application developers.
@@ -45,9 +46,7 @@
* This may be passed to apps by the session owner to allow them to create a
* {@link MediaController2} to communicate with the session.
* <p>
- * It can be also obtained by {@link MediaSessionManager}.
- *
- * @hide
+ * It can be also obtained by {@link android.media.session.MediaSessionManager}.
*/
// New version of MediaSession2.Token for following reasons
// - Stop implementing Parcelable for updatable support
@@ -56,6 +55,7 @@
// This helps controller apps to keep target of dispatching media key events in uniform way.
// For details about the reason, see following. (Android O+)
// android.media.session.MediaSessionManager.Callback#onAddressedPlayerChanged
+// TODO: use @link for MediaSession2Service
public final class Session2Token implements Parcelable {
private static final String TAG = "Session2Token";
@@ -75,7 +75,7 @@
* @hide
*/
@Retention(RetentionPolicy.SOURCE)
- @IntDef(prefix = "TYPE_", value = {TYPE_SESSION, TYPE_SESSION_SERVICE, TYPE_LIBRARY_SERVICE})
+ @IntDef(prefix = "TYPE_", value = {TYPE_SESSION, TYPE_SESSION_SERVICE})
public @interface TokenType {
}
@@ -85,15 +85,10 @@
public static final int TYPE_SESSION = 0;
/**
- * Type for {@link MediaSession2Service}.
+ * Type for MediaSession2Service.
*/
public static final int TYPE_SESSION_SERVICE = 1;
- /**
- * Type for {@link MediaLibrary2Service}.
- */
- public static final int TYPE_LIBRARY_SERVICE = 2;
-
private final int mUid;
private final @TokenType int mType;
private final String mPackageName;
@@ -102,8 +97,7 @@
private final ComponentName mComponentName;
/**
- * Constructor for the token with type {@link #TYPE_SESSION_SERVICE} or
- * {@link #TYPE_LIBRARY_SERVICE}.
+ * Constructor for the token with type {@link #TYPE_SESSION_SERVICE}.
*
* @param context The context.
* @param serviceComponent The component name of the service.
@@ -119,28 +113,15 @@
final PackageManager manager = context.getPackageManager();
final int uid = getUid(manager, serviceComponent.getPackageName());
- // TODO: Uncomment below to stop hardcode type.
- final int type = TYPE_SESSION_SERVICE;
-// final int type;
-// if (isInterfaceDeclared(manager, MediaLibraryService2.SERVICE_INTERFACE,
-// serviceComponent)) {
-// type = TYPE_LIBRARY_SERVICE;
-// } else if (isInterfaceDeclared(manager, MediaSessionService2.SERVICE_INTERFACE,
-// serviceComponent)) {
-// type = TYPE_SESSION_SERVICE;
-// } else if (isInterfaceDeclared(manager,
-// MediaBrowserServiceCompat.SERVICE_INTERFACE, serviceComponent)) {
-// type = TYPE_BROWSER_SERVICE_LEGACY;
-// } else {
-// throw new IllegalArgumentException(serviceComponent + " doesn't implement none of"
-// + " MediaSessionService2, MediaLibraryService2, MediaBrowserService nor"
-// + " MediaBrowserServiceCompat. Use service's full name.");
-// }
+ if (!isInterfaceDeclared(manager, MediaSession2Service.SERVICE_INTERFACE,
+ serviceComponent)) {
+ Log.w(TAG, serviceComponent + " doesn't implement MediaSession2Service.");
+ }
mComponentName = serviceComponent;
mPackageName = serviceComponent.getPackageName();
mServiceName = serviceComponent.getClassName();
mUid = uid;
- mType = type;
+ mType = TYPE_SESSION_SERVICE;
mSessionLink = null;
}
@@ -158,9 +139,7 @@
mType = in.readInt();
mPackageName = in.readString();
mServiceName = in.readString();
- // TODO: Uncomment below and stop hardcode mSessionLink
- mSessionLink = null;
- //mSessionLink = ISession.Stub.asInterface(in.readStrongBinder());
+ mSessionLink = in.readParcelable(null);
mComponentName = ComponentName.unflattenFromString(in.readString());
}
@@ -170,8 +149,7 @@
dest.writeInt(mType);
dest.writeString(mPackageName);
dest.writeString(mServiceName);
- // TODO: Uncomment below
- //dest.writeStrongBinder(mSessionLink.getBinder());
+ dest.writeParcelable(mSessionLink, flags);
dest.writeString(mComponentName == null ? "" : mComponentName.flattenToString());
}
@@ -239,7 +217,6 @@
* @return type of the token
* @see #TYPE_SESSION
* @see #TYPE_SESSION_SERVICE
- * @see #TYPE_LIBRARY_SERVICE
*/
public @TokenType int getType() {
return mType;
@@ -255,7 +232,7 @@
private static boolean isInterfaceDeclared(PackageManager manager, String serviceInterface,
ComponentName serviceComponent) {
Intent serviceIntent = new Intent(serviceInterface);
- // Use queryIntentServices to find services with MediaLibraryService2.SERVICE_INTERFACE.
+ // Use queryIntentServices to find services with MediaSession2Service.SERVICE_INTERFACE.
// We cannot use resolveService with intent specified class name, because resolveService
// ignores actions if Intent.setClassName() is specified.
serviceIntent.setPackage(serviceComponent.getPackageName());
diff --git a/media/java/android/media/session/MediaSessionProviderService.java b/media/java/android/media/session/MediaSessionProviderService.java
new file mode 100644
index 0000000..9a346ff
--- /dev/null
+++ b/media/java/android/media/session/MediaSessionProviderService.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 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 android.media.session;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+/**
+ * Abstract class for mainline module services.
+ *
+ * @hide // TODO: Make it as a @SystemApi
+ */
+public abstract class MediaSessionProviderService extends Service {
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ // TODO: Return IMediaSessionProviderService.Stub()
+ return null;
+ }
+}
diff --git a/media/jni/Android.bp b/media/jni/Android.bp
index d6b6339..0198470 100644
--- a/media/jni/Android.bp
+++ b/media/jni/Android.bp
@@ -34,7 +34,6 @@
"libutils",
"libbinder",
"libmedia",
- "libmediaextractor",
"libmedia_omx",
"libmediametrics",
"libmediadrm",
@@ -85,7 +84,7 @@
}
cc_library_shared {
- name: "libmedia2_jni",
+ name: "libmediaplayer2_jni",
srcs: [
"android_media_DataSourceCallback.cpp",
@@ -117,7 +116,10 @@
"libz",
],
- header_libs: ["libhardware_headers"],
+ header_libs: [
+ "libhardware_headers",
+ "libnativewindow_headers",
+ ],
static_libs: [
"libbase",
@@ -125,12 +127,12 @@
"libcutils",
"libmedia_helper",
"libmedia_player2_util",
- "libmediaextractor",
"libmediaplayer2",
"libmediaplayer2-protos",
"libmediandk_utils",
"libmediautils",
"libprotobuf-cpp-lite",
+ "libstagefright",
"libstagefright_esds",
"libstagefright_foundation",
"libstagefright_httplive",
diff --git a/media/jni/Android.mk b/media/jni/Android.mk
new file mode 100644
index 0000000..1d7d6de
--- /dev/null
+++ b/media/jni/Android.mk
@@ -0,0 +1,30 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_CFLAGS := -Wall -Werror
+LOCAL_SRC_FILES := \
+ Media2Jni.cpp \
+
+# TODO: Move libmedia2_jni from system to media apex. Currently, libraries defined in
+# Android.mk is not visible in apex build.
+LOCAL_MODULE:= libmedia2_jni
+LOCAL_SHARED_LIBRARIES := libdl liblog
+
+sanitizer_runtime_libraries := $(call normalize-path-list,$(addsuffix .so,\
+ $(ADDRESS_SANITIZER_RUNTIME_LIBRARY) \
+ $(UBSAN_RUNTIME_LIBRARY) \
+ $(TSAN_RUNTIME_LIBRARY)))
+
+# $(info Sanitizer: $(sanitizer_runtime_libraries))
+
+ndk_libraries := $(call normalize-path-list,$(addprefix lib,$(addsuffix .so,\
+ $(NDK_PREBUILT_SHARED_LIBRARIES))))
+
+# $(info NDK: $(ndk_libraries))
+
+LOCAL_CFLAGS += -DLINKED_LIBRARIES='"$(sanitizer_runtime_libraries):$(ndk_libraries)"'
+
+sanitizer_runtime_libraries :=
+ndk_libraries :=
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/media/jni/Media2Jni.cpp b/media/jni/Media2Jni.cpp
new file mode 100644
index 0000000..6c0a65c
--- /dev/null
+++ b/media/jni/Media2Jni.cpp
@@ -0,0 +1,89 @@
+/*
+**
+** Copyright 2019, 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.
+*/
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "MediaPlayer2-JNI"
+#include "utils/Log.h"
+
+#include "jni.h"
+#include <android/dlext.h>
+#include <dirent.h>
+#include <dlfcn.h>
+#include <errno.h>
+#include <string.h>
+
+extern "C" {
+ // Copied from GraphicsEnv.cpp
+ // TODO(b/37049319) Get this from a header once one exists
+ android_namespace_t* android_create_namespace(const char* name,
+ const char* ld_library_path,
+ const char* default_library_path,
+ uint64_t type,
+ const char* permitted_when_isolated_path,
+ android_namespace_t* parent);
+ bool android_link_namespaces(android_namespace_t* from,
+ android_namespace_t* to,
+ const char* shared_libs_sonames);
+ enum {
+ ANDROID_NAMESPACE_TYPE_ISOLATED = 1,
+ };
+
+} // extern "C"
+
+static const char kApexLibPath[] = "/apex/com.android.media/lib"
+#ifdef __LP64__
+ "64"
+#endif
+ "/";
+static const char kMediaPlayer2LibPath[] = "/apex/com.android.media/lib"
+#ifdef __LP64__
+ "64"
+#endif
+ "/libmediaplayer2_jni.so";
+
+typedef jint (*Media2JniOnLoad)(JavaVM*, void*);
+
+JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
+{
+ android_namespace_t *media2Ns = android_create_namespace("media2",
+ nullptr, // ld_library_path
+ kApexLibPath,
+ ANDROID_NAMESPACE_TYPE_ISOLATED,
+ nullptr, // permitted_when_isolated_path
+ nullptr); // parent
+ if (!android_link_namespaces(media2Ns, nullptr, LINKED_LIBRARIES)) {
+ ALOGE("Failed to link namespace. Failed to load extractor plug-ins in apex.");
+ return -1;
+ }
+ const android_dlextinfo dlextinfo = {
+ .flags = ANDROID_DLEXT_USE_NAMESPACE,
+ .library_namespace = media2Ns,
+ };
+ // load libmediaplayer2_jni and call JNI_OnLoad.
+ void *libHandle = android_dlopen_ext(kMediaPlayer2LibPath, RTLD_NOW | RTLD_LOCAL, &dlextinfo);
+ if (libHandle == NULL) {
+ ALOGW("couldn't dlopen(%s) %s", kMediaPlayer2LibPath, strerror(errno));
+ return -1;
+ }
+ Media2JniOnLoad media2JniOnLoad = (Media2JniOnLoad) dlsym(libHandle, "JNI_OnLoad");
+ if (!media2JniOnLoad) {
+ ALOGW("%s does not contain JNI_OnLoad()", kMediaPlayer2LibPath);
+ dlclose(libHandle);
+ return -1;
+ }
+ return media2JniOnLoad(vm, reserved);
+}
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index 7b07bea3..406f9dd 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -648,7 +648,6 @@
capabilities->getSupportedColorFormats(&colorFormats);
capabilities->getSupportedProfileLevels(&profileLevels);
- uint32_t flags = capabilities->getFlags();
sp<AMessage> details = capabilities->getDetails();
jobject defaultFormatObj = NULL;
@@ -687,7 +686,7 @@
return env->NewObject(
gCodecInfo.capsClazz, gCodecInfo.capsCtorId,
- profileLevelArray.get(), colorFormatsArray.get(), isEncoder, flags,
+ profileLevelArray.get(), colorFormatsArray.get(), isEncoder,
defaultFormatRef.get(), detailsRef.get());
}
@@ -700,23 +699,28 @@
return err;
}
+ // TODO: get alias
ScopedLocalRef<jstring> nameObject(env,
env->NewStringUTF(codecInfo->getCodecName()));
+ ScopedLocalRef<jstring> canonicalNameObject(env,
+ env->NewStringUTF(codecInfo->getCodecName()));
+
+ MediaCodecInfo::Attributes attributes = codecInfo->getAttributes();
bool isEncoder = codecInfo->isEncoder();
- Vector<AString> mimes;
- codecInfo->getSupportedMimes(&mimes);
+ Vector<AString> mediaTypes;
+ codecInfo->getSupportedMediaTypes(&mediaTypes);
ScopedLocalRef<jobjectArray> capsArrayObj(env,
- env->NewObjectArray(mimes.size(), gCodecInfo.capsClazz, NULL));
+ env->NewObjectArray(mediaTypes.size(), gCodecInfo.capsClazz, NULL));
- for (size_t i = 0; i < mimes.size(); i++) {
+ for (size_t i = 0; i < mediaTypes.size(); i++) {
const sp<MediaCodecInfo::Capabilities> caps =
- codecInfo->getCapabilitiesFor(mimes[i].c_str());
+ codecInfo->getCapabilitiesFor(mediaTypes[i].c_str());
ScopedLocalRef<jobject> capsObj(env, getCodecCapabilitiesObject(
- env, mimes[i].c_str(), isEncoder, caps));
+ env, mediaTypes[i].c_str(), isEncoder, caps));
env->SetObjectArrayElement(capsArrayObj.get(), i, capsObj.get());
}
@@ -726,10 +730,10 @@
CHECK(codecInfoClazz.get() != NULL);
jmethodID codecInfoCtorID = env->GetMethodID(codecInfoClazz.get(), "<init>",
- "(Ljava/lang/String;Z[Landroid/media/MediaCodecInfo$CodecCapabilities;)V");
+ "(Ljava/lang/String;Ljava/lang/String;I[Landroid/media/MediaCodecInfo$CodecCapabilities;)V");
*codecInfoObject = env->NewObject(codecInfoClazz.get(), codecInfoCtorID,
- nameObject.get(), isEncoder, capsArrayObj.get());
+ nameObject.get(), canonicalNameObject.get(), attributes, capsArrayObj.get());
return OK;
}
@@ -2079,7 +2083,7 @@
gCodecInfo.capsClazz = (jclass)env->NewGlobalRef(clazz.get());
method = env->GetMethodID(clazz.get(), "<init>",
- "([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZI"
+ "([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZ"
"Ljava/util/Map;Ljava/util/Map;)V");
CHECK(method != NULL);
gCodecInfo.capsCtorId = method;
@@ -2217,7 +2221,7 @@
{ "getImage", "(ZI)Landroid/media/Image;",
(void *)android_media_MediaCodec_getImage },
- { "getName", "()Ljava/lang/String;",
+ { "getCanonicalName", "()Ljava/lang/String;",
(void *)android_media_MediaCodec_getName },
{ "getOwnCodecInfo", "()Landroid/media/MediaCodecInfo;",
diff --git a/media/jni/android_media_MediaCodecList.cpp b/media/jni/android_media_MediaCodecList.cpp
index 8de11ca..cf14942 100644
--- a/media/jni/android_media_MediaCodecList.cpp
+++ b/media/jni/android_media_MediaCodecList.cpp
@@ -41,6 +41,21 @@
return mcl;
}
+static sp<MediaCodecInfo> getCodecInfo(JNIEnv *env, jint index) {
+ sp<IMediaCodecList> mcl = getCodecList(env);
+ if (mcl == NULL) {
+ // Runtime exception already pending.
+ return NULL;
+ }
+
+ sp<MediaCodecInfo> info = mcl->getCodecInfo(index);
+ if (info == NULL) {
+ jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
+ }
+
+ return info;
+}
+
static jint android_media_MediaCodecList_getCodecCount(
JNIEnv *env, jobject /* thiz */) {
sp<IMediaCodecList> mcl = getCodecList(env);
@@ -53,15 +68,22 @@
static jstring android_media_MediaCodecList_getCodecName(
JNIEnv *env, jobject /* thiz */, jint index) {
- sp<IMediaCodecList> mcl = getCodecList(env);
- if (mcl == NULL) {
+ sp<MediaCodecInfo> info = getCodecInfo(env, index);
+ if (info == NULL) {
// Runtime exception already pending.
return NULL;
}
- const sp<MediaCodecInfo> &info = mcl->getCodecInfo(index);
+ // TODO: support aliases
+ const char *name = info->getCodecName();
+ return env->NewStringUTF(name);
+}
+
+static jstring android_media_MediaCodecList_getCanonicalName(
+ JNIEnv *env, jobject /* thiz */, jint index) {
+ sp<MediaCodecInfo> info = getCodecInfo(env, index);
if (info == NULL) {
- jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
+ // Runtime exception already pending.
return NULL;
}
@@ -94,39 +116,27 @@
return ret;
}
-static jboolean android_media_MediaCodecList_isEncoder(
+static jboolean android_media_MediaCodecList_getAttributes(
JNIEnv *env, jobject /* thiz */, jint index) {
- sp<IMediaCodecList> mcl = getCodecList(env);
- if (mcl == NULL) {
- // Runtime exception already pending.
- return false;
- }
-
- const sp<MediaCodecInfo> &info = mcl->getCodecInfo(index);
+ sp<MediaCodecInfo> info = getCodecInfo(env, index);
if (info == NULL) {
- jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return false;
+ // Runtime exception already pending.
+ return 0;
}
- return info->isEncoder();
+ return info->getAttributes();
}
static jarray android_media_MediaCodecList_getSupportedTypes(
JNIEnv *env, jobject /* thiz */, jint index) {
- sp<IMediaCodecList> mcl = getCodecList(env);
- if (mcl == NULL) {
+ sp<MediaCodecInfo> info = getCodecInfo(env, index);
+ if (info == NULL) {
// Runtime exception already pending.
return NULL;
}
- const sp<MediaCodecInfo> &info = mcl->getCodecInfo(index);
- if (info == NULL) {
- jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return NULL;
- }
-
Vector<AString> types;
- info->getSupportedMimes(&types);
+ info->getSupportedMediaTypes(&types);
jclass clazz = env->FindClass("java/lang/String");
CHECK(clazz != NULL);
@@ -150,17 +160,12 @@
return NULL;
}
- sp<IMediaCodecList> mcl = getCodecList(env);
- if (mcl == NULL) {
+ sp<MediaCodecInfo> info = getCodecInfo(env, index);
+ if (info == NULL) {
// Runtime exception already pending.
return NULL;
}
- const sp<MediaCodecInfo> &info = mcl->getCodecInfo(index);
- if (info == NULL) {
- jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return NULL;
- }
const char *typeStr = env->GetStringUTFChars(type, NULL);
if (typeStr == NULL) {
@@ -186,7 +191,6 @@
capabilities->getSupportedColorFormats(&colorFormats);
capabilities->getSupportedProfileLevels(&profileLevels);
- uint32_t flags = capabilities->getFlags();
sp<AMessage> details = capabilities->getDetails();
bool isEncoder = info->isEncoder();
@@ -240,11 +244,11 @@
}
jmethodID capsConstructID = env->GetMethodID(capsClazz, "<init>",
- "([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZI"
+ "([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZ"
"Ljava/util/Map;Ljava/util/Map;)V");
jobject caps = env->NewObject(capsClazz, capsConstructID,
- profileLevelArray, colorFormatsArray, isEncoder, flags,
+ profileLevelArray, colorFormatsArray, isEncoder,
defaultFormatObj, infoObj);
env->DeleteLocalRef(profileLevelArray);
@@ -288,9 +292,15 @@
static const JNINativeMethod gMethods[] = {
{ "native_getCodecCount", "()I", (void *)android_media_MediaCodecList_getCodecCount },
+
+ { "getCanonicalName", "(I)Ljava/lang/String;",
+ (void *)android_media_MediaCodecList_getCanonicalName },
+
{ "getCodecName", "(I)Ljava/lang/String;",
(void *)android_media_MediaCodecList_getCodecName },
- { "isEncoder", "(I)Z", (void *)android_media_MediaCodecList_isEncoder },
+
+ { "getAttributes", "(I)I", (void *)android_media_MediaCodecList_getAttributes },
+
{ "getSupportedTypes", "(I)[Ljava/lang/String;",
(void *)android_media_MediaCodecList_getSupportedTypes },
diff --git a/media/jni/android_media_MediaDrm.cpp b/media/jni/android_media_MediaDrm.cpp
index 8336459..42c5b05 100644
--- a/media/jni/android_media_MediaDrm.cpp
+++ b/media/jni/android_media_MediaDrm.cpp
@@ -159,6 +159,7 @@
jint kHdcpV2;
jint kHdcpV2_1;
jint kHdcpV2_2;
+ jint kHdcpV2_3;
jint kHdcpNoOutput;
} gHdcpLevels;
@@ -774,6 +775,8 @@
gHdcpLevels.kHdcpV2_1 = env->GetStaticIntField(clazz, field);
GET_STATIC_FIELD_ID(field, clazz, "HDCP_V2_2", "I");
gHdcpLevels.kHdcpV2_2 = env->GetStaticIntField(clazz, field);
+ GET_STATIC_FIELD_ID(field, clazz, "HDCP_V2_3", "I");
+ gHdcpLevels.kHdcpV2_3 = env->GetStaticIntField(clazz, field);
GET_STATIC_FIELD_ID(field, clazz, "HDCP_NO_DIGITAL_OUTPUT", "I");
gHdcpLevels.kHdcpNoOutput = env->GetStaticIntField(clazz, field);
@@ -1390,6 +1393,8 @@
return gHdcpLevels.kHdcpV2_1;
case DrmPlugin::kHdcpV2_2:
return gHdcpLevels.kHdcpV2_2;
+ case DrmPlugin::kHdcpV2_3:
+ return gHdcpLevels.kHdcpV2_3;
case DrmPlugin::kHdcpNoOutput:
return gHdcpLevels.kHdcpNoOutput;
}
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp
index 56b85b5..06a7182 100644
--- a/media/jni/android_mtp_MtpDatabase.cpp
+++ b/media/jni/android_mtp_MtpDatabase.cpp
@@ -708,6 +708,24 @@
int type = dataTypes[i];
packet.putUInt16(type);
+ if (type == MTP_TYPE_STR) {
+ jstring value = (jstring)env->GetObjectArrayElement(stringValuesArray, i);
+ const char *valueStr = (value ? env->GetStringUTFChars(value, NULL) : NULL);
+ if (valueStr) {
+ packet.putString(valueStr);
+ env->ReleaseStringUTFChars(value, valueStr);
+ } else {
+ packet.putEmptyString();
+ }
+ env->DeleteLocalRef(value);
+ continue;
+ }
+
+ if (!longValues) {
+ ALOGE("bad longValuesArray value in MyMtpDatabase::getObjectPropertyList");
+ continue;
+ }
+
switch (type) {
case MTP_TYPE_INT8:
packet.putInt8(longValues[i]);
@@ -739,18 +757,6 @@
case MTP_TYPE_UINT128:
packet.putUInt128(longValues[i]);
break;
- case MTP_TYPE_STR: {
- jstring value = (jstring)env->GetObjectArrayElement(stringValuesArray, i);
- const char *valueStr = (value ? env->GetStringUTFChars(value, NULL) : NULL);
- if (valueStr) {
- packet.putString(valueStr);
- env->ReleaseStringUTFChars(value, valueStr);
- } else {
- packet.putEmptyString();
- }
- env->DeleteLocalRef(value);
- break;
- }
default:
ALOGE("bad or unsupported data type in MtpDatabase::getObjectPropertyList");
break;
diff --git a/media/lib/remotedisplay/api/current.txt b/media/lib/remotedisplay/api/current.txt
index e69de29..d802177 100644
--- a/media/lib/remotedisplay/api/current.txt
+++ b/media/lib/remotedisplay/api/current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/remotedisplay/api/removed.txt b/media/lib/remotedisplay/api/removed.txt
index e69de29..d802177 100644
--- a/media/lib/remotedisplay/api/removed.txt
+++ b/media/lib/remotedisplay/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/remotedisplay/api/system-current.txt b/media/lib/remotedisplay/api/system-current.txt
index 69bbd35..3619fcf 100644
--- a/media/lib/remotedisplay/api/system-current.txt
+++ b/media/lib/remotedisplay/api/system-current.txt
@@ -1,17 +1,18 @@
+// Signature format: 2.0
package com.android.media.remotedisplay {
public class RemoteDisplay {
- ctor public RemoteDisplay(java.lang.String, java.lang.String);
- method public java.lang.String getDescription();
- method public java.lang.String getId();
- method public java.lang.String getName();
+ ctor public RemoteDisplay(String, String);
+ method public String getDescription();
+ method public String getId();
+ method public String getName();
method public int getPresentationDisplayId();
method public int getStatus();
method public int getVolume();
method public int getVolumeHandling();
method public int getVolumeMax();
- method public void setDescription(java.lang.String);
- method public void setName(java.lang.String);
+ method public void setDescription(String);
+ method public void setName(String);
method public void setPresentationDisplayId(int);
method public void setStatus(int);
method public void setVolume(int);
@@ -29,7 +30,7 @@
public abstract class RemoteDisplayProvider {
ctor public RemoteDisplayProvider(android.content.Context);
method public void addDisplay(com.android.media.remotedisplay.RemoteDisplay);
- method public com.android.media.remotedisplay.RemoteDisplay findRemoteDisplay(java.lang.String);
+ method public com.android.media.remotedisplay.RemoteDisplay findRemoteDisplay(String);
method public android.os.IBinder getBinder();
method public final android.content.Context getContext();
method public int getDiscoveryMode();
@@ -45,7 +46,7 @@
field public static final int DISCOVERY_MODE_ACTIVE = 2; // 0x2
field public static final int DISCOVERY_MODE_NONE = 0; // 0x0
field public static final int DISCOVERY_MODE_PASSIVE = 1; // 0x1
- field public static final java.lang.String SERVICE_INTERFACE = "com.android.media.remotedisplay.RemoteDisplayProvider";
+ field public static final String SERVICE_INTERFACE = "com.android.media.remotedisplay.RemoteDisplayProvider";
}
}
diff --git a/media/lib/remotedisplay/api/system-removed.txt b/media/lib/remotedisplay/api/system-removed.txt
index e69de29..d802177 100644
--- a/media/lib/remotedisplay/api/system-removed.txt
+++ b/media/lib/remotedisplay/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/remotedisplay/api/test-current.txt b/media/lib/remotedisplay/api/test-current.txt
index e69de29..d802177 100644
--- a/media/lib/remotedisplay/api/test-current.txt
+++ b/media/lib/remotedisplay/api/test-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/remotedisplay/api/test-removed.txt b/media/lib/remotedisplay/api/test-removed.txt
index e69de29..d802177 100644
--- a/media/lib/remotedisplay/api/test-removed.txt
+++ b/media/lib/remotedisplay/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/signer/api/current.txt b/media/lib/signer/api/current.txt
index 4aa912d..c9298dd 100644
--- a/media/lib/signer/api/current.txt
+++ b/media/lib/signer/api/current.txt
@@ -1,9 +1,10 @@
+// Signature format: 2.0
package com.android.mediadrm.signer {
public final class MediaDrmSigner {
- method public static com.android.mediadrm.signer.MediaDrmSigner.CertificateRequest getCertificateRequest(android.media.MediaDrm, int, java.lang.String);
+ method public static com.android.mediadrm.signer.MediaDrmSigner.CertificateRequest getCertificateRequest(android.media.MediaDrm, int, String);
method public static com.android.mediadrm.signer.MediaDrmSigner.Certificate provideCertificateResponse(android.media.MediaDrm, byte[]) throws android.media.DeniedByServerException;
- method public static byte[] signRSA(android.media.MediaDrm, byte[], java.lang.String, byte[], byte[]);
+ method public static byte[] signRSA(android.media.MediaDrm, byte[], String, byte[], byte[]);
field public static final int CERTIFICATE_TYPE_X509 = 1; // 0x1
}
@@ -14,7 +15,7 @@
public static final class MediaDrmSigner.CertificateRequest {
method public byte[] getData();
- method public java.lang.String getDefaultUrl();
+ method public String getDefaultUrl();
}
}
diff --git a/media/lib/signer/api/removed.txt b/media/lib/signer/api/removed.txt
index e69de29..d802177 100644
--- a/media/lib/signer/api/removed.txt
+++ b/media/lib/signer/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/signer/api/system-current.txt b/media/lib/signer/api/system-current.txt
index e69de29..d802177 100644
--- a/media/lib/signer/api/system-current.txt
+++ b/media/lib/signer/api/system-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/signer/api/system-removed.txt b/media/lib/signer/api/system-removed.txt
index e69de29..d802177 100644
--- a/media/lib/signer/api/system-removed.txt
+++ b/media/lib/signer/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/signer/api/test-current.txt b/media/lib/signer/api/test-current.txt
index e69de29..d802177 100644
--- a/media/lib/signer/api/test-current.txt
+++ b/media/lib/signer/api/test-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/signer/api/test-removed.txt b/media/lib/signer/api/test-removed.txt
index e69de29..d802177 100644
--- a/media/lib/signer/api/test-removed.txt
+++ b/media/lib/signer/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/tvremote/api/current.txt b/media/lib/tvremote/api/current.txt
index eea9e9c..1086d58 100644
--- a/media/lib/tvremote/api/current.txt
+++ b/media/lib/tvremote/api/current.txt
@@ -1,3 +1,4 @@
+// Signature format: 2.0
package com.android.media.tv.remoteprovider {
public abstract class TvRemoteProvider {
@@ -7,14 +8,14 @@
method public android.os.IBinder getBinder();
method public final android.content.Context getContext();
method public void onInputBridgeConnected(android.os.IBinder);
- method public void openRemoteInputBridge(android.os.IBinder, java.lang.String, int, int, int) throws java.lang.RuntimeException;
+ method public void openRemoteInputBridge(android.os.IBinder, String, int, int, int) throws java.lang.RuntimeException;
method public void sendKeyDown(android.os.IBinder, int) throws java.lang.RuntimeException;
method public void sendKeyUp(android.os.IBinder, int) throws java.lang.RuntimeException;
method public void sendPointerDown(android.os.IBinder, int, int, int) throws java.lang.RuntimeException;
method public void sendPointerSync(android.os.IBinder) throws java.lang.RuntimeException;
method public void sendPointerUp(android.os.IBinder, int) throws java.lang.RuntimeException;
method public void sendTimestamp(android.os.IBinder, long) throws java.lang.RuntimeException;
- field public static final java.lang.String SERVICE_INTERFACE = "com.android.media.tv.remoteprovider.TvRemoteProvider";
+ field public static final String SERVICE_INTERFACE = "com.android.media.tv.remoteprovider.TvRemoteProvider";
}
}
diff --git a/media/lib/tvremote/api/removed.txt b/media/lib/tvremote/api/removed.txt
index e69de29..d802177 100644
--- a/media/lib/tvremote/api/removed.txt
+++ b/media/lib/tvremote/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/tvremote/api/system-current.txt b/media/lib/tvremote/api/system-current.txt
index e69de29..d802177 100644
--- a/media/lib/tvremote/api/system-current.txt
+++ b/media/lib/tvremote/api/system-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/tvremote/api/system-removed.txt b/media/lib/tvremote/api/system-removed.txt
index e69de29..d802177 100644
--- a/media/lib/tvremote/api/system-removed.txt
+++ b/media/lib/tvremote/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/tvremote/api/test-current.txt b/media/lib/tvremote/api/test-current.txt
index e69de29..d802177 100644
--- a/media/lib/tvremote/api/test-current.txt
+++ b/media/lib/tvremote/api/test-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/lib/tvremote/api/test-removed.txt b/media/lib/tvremote/api/test-removed.txt
index e69de29..d802177 100644
--- a/media/lib/tvremote/api/test-removed.txt
+++ b/media/lib/tvremote/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/media/packages/MediaCore/Android.bp b/media/packages/MediaCore/Android.bp
new file mode 100644
index 0000000..c7fd58b
--- /dev/null
+++ b/media/packages/MediaCore/Android.bp
@@ -0,0 +1,21 @@
+android_app {
+ name: "MediaCore",
+
+ srcs: [
+ "src/**/*.java",
+ ],
+
+ static_libs: [
+ // TODO: Temporarily statically linked. Should go into "libs"
+ "media1",
+ ],
+
+ // System app
+ platform_apis: true,
+
+ // Privileged app
+ privileged: true,
+
+ // Make sure that the implementation only relies on SDK or system APIs.
+ sdk_version: "system_current",
+}
diff --git a/media/packages/MediaCore/AndroidManifest.xml b/media/packages/MediaCore/AndroidManifest.xml
new file mode 100644
index 0000000..4e2b274
--- /dev/null
+++ b/media/packages/MediaCore/AndroidManifest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/AndroidManifest.xml
+**
+** Copyright 2019, 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.
+*/
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.media" coreApp="true" android:sharedUserId="android.uid.system"
+ android:sharedUserLabel="@string/android_system_label">
+ <application android:process="system"
+ android:persistent="true"
+ android:directBootAware="true">
+ <service android:name="AmlMediaSessionProviderService" android:singleUser="true">
+ <intent-filter>
+ <action android:name="android.media.session.MediaSessionProviderService"/>
+ </intent-filter>
+ </service>
+ </application>
+</manifest>
diff --git a/media/packages/MediaCore/res/values/strings.xml b/media/packages/MediaCore/res/values/strings.xml
new file mode 100644
index 0000000..59fd635
--- /dev/null
+++ b/media/packages/MediaCore/res/values/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2019 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.
+-->
+
+<resources>
+ <!-- Label for the Android system components when they are shown to the user. -->
+ <string name="android_system_label" translatable="false">Android System</string>
+</resources>
+
diff --git a/media/packages/MediaCore/src/com/android/media/AmlMediaSessionProviderService.java b/media/packages/MediaCore/src/com/android/media/AmlMediaSessionProviderService.java
new file mode 100644
index 0000000..43b95ab
--- /dev/null
+++ b/media/packages/MediaCore/src/com/android/media/AmlMediaSessionProviderService.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2019 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.media;
+
+import android.content.Context;
+import android.media.session.MediaSessionProviderService;
+import android.os.PowerManager;
+import android.util.Log;
+
+/**
+ * System implementation of MediaSessionProviderService
+ */
+public class AmlMediaSessionProviderService extends MediaSessionProviderService {
+ private static final String TAG = "AmlMediaSessionProviderS";
+ static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+ private Context mContext;
+
+ public AmlMediaSessionProviderService(Context context) {
+ mContext = context;
+ PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+ }
+}
diff --git a/media/tests/players/Android.mk b/media/tests/players/Android.mk
index 35aba4d..ee9d850 100644
--- a/media/tests/players/Android.mk
+++ b/media/tests/players/Android.mk
@@ -25,7 +25,7 @@
liblog
LOCAL_MODULE:= invoke_mock_media_player
-LOCAL_MODULE_TAGS := tests eng
+LOCAL_MODULE_TAGS := tests
LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
diff --git a/native/android/Android.bp b/native/android/Android.bp
index fdcfc44..73d4c45 100644
--- a/native/android/Android.bp
+++ b/native/android/Android.bp
@@ -49,6 +49,7 @@
"sharedmem.cpp",
"storage_manager.cpp",
"surface_texture.cpp",
+ "surface_control.cpp",
"system_fonts.cpp",
"trace.cpp",
],
diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt
index 537aed4..8be8eda 100644
--- a/native/android/libandroid.map.txt
+++ b/native/android/libandroid.map.txt
@@ -205,6 +205,9 @@
AStorageManager_mountObb;
AStorageManager_new;
AStorageManager_unmountObb;
+ ASurfaceControl_create; # introduced=29
+ ASurfaceControl_createFromWindow; # introduced=29
+ ASurfaceControl_destroy; # introduced=29
ASurfaceTexture_acquireANativeWindow; # introduced=28
ASurfaceTexture_attachToGLContext; # introduced=28
ASurfaceTexture_detachFromGLContext; # introduced=28
@@ -213,6 +216,16 @@
ASurfaceTexture_getTransformMatrix; # introduced=28
ASurfaceTexture_release; # introduced=28
ASurfaceTexture_updateTexImage; # introduced=28
+ ASurfaceTransaction_apply; # introduced=29
+ ASurfaceTransaction_create; # introduced=29
+ ASurfaceTransaction_delete; # introduced=29
+ ASurfaceTransaction_setBuffer; # introduced=29
+ ASurfaceTransaction_setBufferTransparency; # introduced=29
+ ASurfaceTransaction_setDamageRegion; # introduced=29
+ ASurfaceTransaction_setGeometry; # introduced=29
+ ASurfaceTransaction_setOnComplete; # introduced=29
+ ASurfaceTransaction_setVisibility; # introduced=29
+ ASurfaceTransaction_setZOrder; # introduced=29
ASystemFontIterator_open; # introduced=29
ASystemFontIterator_close; # introduced=29
ASystemFontIterator_next; # introduced=29
diff --git a/native/android/sensor.cpp b/native/android/sensor.cpp
index 8e58210..c3b2e25 100644
--- a/native/android/sensor.cpp
+++ b/native/android/sensor.cpp
@@ -342,3 +342,8 @@
RETURN_IF_SENSOR_IS_NULL(ASENSOR_DIRECT_RATE_STOP);
return static_cast<Sensor const *>(sensor)->getHighestDirectReportRateLevel();
}
+
+int ASensor_getHandle(ASensor const* sensor) {
+ RETURN_IF_SENSOR_IS_NULL(ASENSOR_INVALID);
+ return static_cast<Sensor const*>(sensor)->getHandle();
+}
diff --git a/native/android/sharedmem.cpp b/native/android/sharedmem.cpp
index 757aaec..4410bd6 100644
--- a/native/android/sharedmem.cpp
+++ b/native/android/sharedmem.cpp
@@ -71,7 +71,7 @@
}
int fd = env->CallIntMethod(javaSharedMemory, sSharedMemory.getFd);
if (fd != -1) {
- fd = dup(fd);
+ fd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
}
return fd;
}
diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp
new file mode 100644
index 0000000..ead5b0b
--- /dev/null
+++ b/native/android/surface_control.cpp
@@ -0,0 +1,232 @@
+/*
+ * Copyright 2018 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.
+ */
+
+#include <android/native_window.h>
+#include <android/surface_control.h>
+
+#include <gui/Surface.h>
+#include <gui/SurfaceComposerClient.h>
+#include <gui/SurfaceControl.h>
+
+using namespace android;
+
+using Transaction = SurfaceComposerClient::Transaction;
+
+#define CHECK_NOT_NULL(name) \
+ LOG_ALWAYS_FATAL_IF(name == nullptr, "nullptr passed as " #name " argument");
+
+#define CHECK_VALID_RECT(name) \
+ LOG_ALWAYS_FATAL_IF(!static_cast<const Rect&>(name).isValid(), \
+ "invalid arg passed as " #name " argument");
+
+Transaction* ASurfaceTransaction_to_Transaction(ASurfaceTransaction* aSurfaceTransaction) {
+ return reinterpret_cast<Transaction*>(aSurfaceTransaction);
+}
+
+SurfaceControl* ASurfaceControl_to_SurfaceControl(ASurfaceControl* aSurfaceControl) {
+ return reinterpret_cast<SurfaceControl*>(aSurfaceControl);
+}
+
+void SurfaceControl_acquire(SurfaceControl* surfaceControl) {
+ // incStrong/decStrong token must be the same, doesn't matter what it is
+ surfaceControl->incStrong((void*)SurfaceControl_acquire);
+}
+
+void SurfaceControl_release(SurfaceControl* surfaceControl) {
+ // incStrong/decStrong token must be the same, doesn't matter what it is
+ surfaceControl->decStrong((void*)SurfaceControl_acquire);
+}
+
+ASurfaceControl* ASurfaceControl_createFromWindow(ANativeWindow* window, const char* debug_name) {
+ CHECK_NOT_NULL(window);
+ CHECK_NOT_NULL(debug_name);
+
+ sp<SurfaceComposerClient> client = new SurfaceComposerClient();
+ if (client->initCheck() != NO_ERROR) {
+ return nullptr;
+ }
+
+ uint32_t flags = ISurfaceComposerClient::eFXSurfaceBufferState;
+ sp<SurfaceControl> surfaceControl =
+ client->createWithSurfaceParent(String8(debug_name), 0 /* width */, 0 /* height */,
+ // Format is only relevant for buffer queue layers.
+ PIXEL_FORMAT_UNKNOWN /* format */, flags,
+ static_cast<Surface*>(window));
+ if (!surfaceControl) {
+ return nullptr;
+ }
+
+ SurfaceControl_acquire(surfaceControl.get());
+ return reinterpret_cast<ASurfaceControl*>(surfaceControl.get());
+}
+
+ASurfaceControl* ASurfaceControl_create(ASurfaceControl* parent, const char* debug_name) {
+ CHECK_NOT_NULL(parent);
+ CHECK_NOT_NULL(debug_name);
+
+ SurfaceComposerClient* client = ASurfaceControl_to_SurfaceControl(parent)->getClient().get();
+
+ SurfaceControl* surfaceControlParent = ASurfaceControl_to_SurfaceControl(parent);
+
+ uint32_t flags = ISurfaceComposerClient::eFXSurfaceBufferState;
+ sp<SurfaceControl> surfaceControl =
+ client->createSurface(String8(debug_name), 0 /* width */, 0 /* height */,
+ // Format is only relevant for buffer queue layers.
+ PIXEL_FORMAT_UNKNOWN /* format */, flags,
+ surfaceControlParent);
+ if (!surfaceControl) {
+ return nullptr;
+ }
+
+ SurfaceControl_acquire(surfaceControl.get());
+ return reinterpret_cast<ASurfaceControl*>(surfaceControl.get());
+}
+
+void ASurfaceControl_destroy(ASurfaceControl* aSurfaceControl) {
+ sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+
+ Transaction().reparent(surfaceControl, nullptr).apply();
+ SurfaceControl_release(surfaceControl.get());
+}
+
+ASurfaceTransaction* ASurfaceTransaction_create() {
+ Transaction* transaction = new Transaction;
+ return reinterpret_cast<ASurfaceTransaction*>(transaction);
+}
+
+void ASurfaceTransaction_delete(ASurfaceTransaction* aSurfaceTransaction) {
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+ delete transaction;
+}
+
+void ASurfaceTransaction_apply(ASurfaceTransaction* aSurfaceTransaction) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ transaction->apply();
+}
+
+void ASurfaceTransaction_setOnComplete(ASurfaceTransaction* aSurfaceTransaction, void* context,
+ ASurfaceTransaction_OnComplete func) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+ CHECK_NOT_NULL(context);
+ CHECK_NOT_NULL(func);
+
+ TransactionCompletedCallbackTakesContext callback = [func](void* callback_context,
+ const TransactionStats& stats) {
+ int fence = (stats.presentFence) ? stats.presentFence->dup() : -1;
+ (*func)(callback_context, fence);
+ };
+
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ transaction->addTransactionCompletedCallback(callback, context);
+}
+
+void ASurfaceTransaction_setVisibility(ASurfaceTransaction* aSurfaceTransaction, ASurfaceControl* aSurfaceControl,
+ int8_t visibility) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+ CHECK_NOT_NULL(aSurfaceControl);
+
+ sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ switch (visibility) {
+ case ASURFACE_TRANSACTION_VISIBILITY_SHOW:
+ transaction->show(surfaceControl);
+ break;
+ case ASURFACE_TRANSACTION_VISIBILITY_HIDE:
+ transaction->hide(surfaceControl);
+ break;
+ default:
+ LOG_ALWAYS_FATAL("invalid visibility %d", visibility);
+ }
+}
+
+void ASurfaceTransaction_setZOrder(ASurfaceTransaction* aSurfaceTransaction, ASurfaceControl* aSurfaceControl,
+ int32_t z_order) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+ CHECK_NOT_NULL(aSurfaceControl);
+
+ sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ transaction->setLayer(surfaceControl, z_order);
+}
+
+void ASurfaceTransaction_setBuffer(ASurfaceTransaction* aSurfaceTransaction, ASurfaceControl* aSurfaceControl,
+ AHardwareBuffer* buffer, int fence_fd) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+ CHECK_NOT_NULL(aSurfaceControl);
+
+ sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ sp<GraphicBuffer> graphic_buffer(reinterpret_cast<GraphicBuffer*>(buffer));
+
+ transaction->setBuffer(surfaceControl, graphic_buffer);
+ if (fence_fd != -1) {
+ sp<Fence> fence = new Fence(fence_fd);
+ transaction->setAcquireFence(surfaceControl, fence);
+ }
+}
+
+void ASurfaceTransaction_setGeometry(ASurfaceTransaction* aSurfaceTransaction,
+ ASurfaceControl* aSurfaceControl, const ARect& source,
+ const ARect& destination, int32_t transform) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+ CHECK_NOT_NULL(aSurfaceControl);
+ CHECK_VALID_RECT(source);
+ CHECK_VALID_RECT(destination);
+
+ sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ transaction->setCrop(surfaceControl, static_cast<const Rect&>(source));
+ transaction->setFrame(surfaceControl, static_cast<const Rect&>(destination));
+ transaction->setTransform(surfaceControl, transform);
+}
+
+void ASurfaceTransaction_setBufferTransparency(ASurfaceTransaction* aSurfaceTransaction,
+ ASurfaceControl* aSurfaceControl,
+ int8_t transparency) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+ CHECK_NOT_NULL(aSurfaceControl);
+
+ sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ uint32_t flags = (transparency == ASURFACE_TRANSACTION_TRANSPARENCY_OPAQUE) ?
+ layer_state_t::eLayerOpaque : 0;
+ transaction->setFlags(surfaceControl, flags, layer_state_t::eLayerOpaque);
+}
+
+void ASurfaceTransaction_setDamageRegion(ASurfaceTransaction* aSurfaceTransaction, ASurfaceControl* aSurfaceControl,
+ const ARect rects[], uint32_t count) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+ CHECK_NOT_NULL(aSurfaceControl);
+
+ sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ Region region;
+ for (uint32_t i = 0; i < count; ++i) {
+ region.merge(static_cast<const Rect&>(rects[i]));
+ }
+
+ transaction->setSurfaceDamageRegion(surfaceControl, region);
+}
diff --git a/native/webview/plat_support/draw_fn.h b/native/webview/plat_support/draw_fn.h
index 6afd883..0490e65 100644
--- a/native/webview/plat_support/draw_fn.h
+++ b/native/webview/plat_support/draw_fn.h
@@ -74,7 +74,10 @@
VkQueue queue;
uint32_t graphics_queue_index;
uint32_t instance_version;
- const char* const* enabled_extension_names;
+ const char* const* enabled_instance_extension_names;
+ uint32_t enabled_instance_extension_names_length;
+ const char* const* enabled_device_extension_names;
+ uint32_t enabled_device_extension_names_length;
// Only one of device_features and device_features_2 should be non-null.
// If both are null then no features are enabled.
VkPhysicalDeviceFeatures* device_features;
@@ -109,8 +112,15 @@
// Input: Format of the destination surface.
VkFormat format;
- // Input: Color space transformation from linear RGB to D50-adapted XYZ
- float matrix[9];
+ // Input: Color space parameters.
+ float transfer_function_g;
+ float transfer_function_a;
+ float transfer_function_b;
+ float transfer_function_c;
+ float transfer_function_d;
+ float transfer_function_e;
+ float transfer_function_f;
+ float color_space_toXYZD50[9];
// Input: current clip rect
int clip_left;
@@ -121,15 +131,13 @@
struct AwDrawFn_PostDrawVkParams {
int version;
-
- // Input: Fence for the composite command buffer to signal it has finished its
- // work on the GPU.
- int fd;
};
// Called on render thread while UI thread is blocked. Called for both GL and
// VK.
-typedef void AwDrawFn_OnSync(int functor, void* data, AwDrawFn_OnSyncParams* params);
+typedef void AwDrawFn_OnSync(int functor,
+ void* data,
+ AwDrawFn_OnSyncParams* params);
// Called on render thread when either the context is destroyed _or_ when the
// functor's last reference goes away. Will always be called with an active
@@ -143,17 +151,24 @@
typedef void AwDrawFn_OnDestroyed(int functor, void* data);
// Only called for GL.
-typedef void AwDrawFn_DrawGL(int functor, void* data, AwDrawFn_DrawGLParams* params);
+typedef void AwDrawFn_DrawGL(int functor,
+ void* data,
+ AwDrawFn_DrawGLParams* params);
// Initialize vulkan state. Needs to be called again after any
// OnContextDestroyed. Only called for Vulkan.
-typedef void AwDrawFn_InitVk(int functor, void* data, AwDrawFn_InitVkParams* params);
+typedef void AwDrawFn_InitVk(int functor,
+ void* data,
+ AwDrawFn_InitVkParams* params);
// Only called for Vulkan.
-typedef void AwDrawFn_DrawVk(int functor, void* data, AwDrawFn_DrawVkParams* params);
+typedef void AwDrawFn_DrawVk(int functor,
+ void* data,
+ AwDrawFn_DrawVkParams* params);
// Only called for Vulkan.
-typedef void AwDrawFn_PostDrawVk(int functor, void* data,
+typedef void AwDrawFn_PostDrawVk(int functor,
+ void* data,
AwDrawFn_PostDrawVkParams* params);
struct AwDrawFnFunctorCallbacks {
@@ -176,7 +191,8 @@
typedef AwDrawFnRenderMode AwDrawFn_QueryRenderMode(void);
// Create a functor. |functor_callbacks| should be valid until OnDestroyed.
-typedef int AwDrawFn_CreateFunctor(void* data, AwDrawFnFunctorCallbacks* functor_callbacks);
+typedef int AwDrawFn_CreateFunctor(void* data,
+ AwDrawFnFunctorCallbacks* functor_callbacks);
// May be called on any thread to signal that the functor should be destroyed.
// The functor will receive an onDestroyed when the last usage of it is
diff --git a/native/webview/plat_support/draw_functor.cpp b/native/webview/plat_support/draw_functor.cpp
index 6c1ceab..b97bbc3 100644
--- a/native/webview/plat_support/draw_functor.cpp
+++ b/native/webview/plat_support/draw_functor.cpp
@@ -74,6 +74,79 @@
support->callbacks.draw_gl(functor, support->data, ¶ms);
}
+void initializeVk(int functor, void* data,
+ const uirenderer::VkFunctorInitParams& init_vk_params) {
+ SupportData* support = static_cast<SupportData*>(data);
+ VkPhysicalDeviceFeatures2 device_features_2;
+ if (init_vk_params.device_features_2)
+ device_features_2 = *init_vk_params.device_features_2;
+
+ AwDrawFn_InitVkParams params{
+ .version = kAwDrawFnVersion,
+ .instance = init_vk_params.instance,
+ .physical_device = init_vk_params.physical_device,
+ .device = init_vk_params.device,
+ .queue = init_vk_params.queue,
+ .graphics_queue_index = init_vk_params.graphics_queue_index,
+ .instance_version = init_vk_params.instance_version,
+ .enabled_instance_extension_names =
+ init_vk_params.enabled_instance_extension_names,
+ .enabled_instance_extension_names_length =
+ init_vk_params.enabled_instance_extension_names_length,
+ .enabled_device_extension_names =
+ init_vk_params.enabled_device_extension_names,
+ .enabled_device_extension_names_length =
+ init_vk_params.enabled_device_extension_names_length,
+ .device_features = nullptr,
+ .device_features_2 =
+ init_vk_params.device_features_2 ? &device_features_2 : nullptr,
+ };
+ support->callbacks.init_vk(functor, support->data, ¶ms);
+}
+
+void drawVk(int functor, void* data, const uirenderer::VkFunctorDrawParams& draw_vk_params) {
+ SupportData* support = static_cast<SupportData*>(data);
+ float gabcdef[7];
+ draw_vk_params.color_space_ptr->transferFn(gabcdef);
+ AwDrawFn_DrawVkParams params{
+ .version = kAwDrawFnVersion,
+ .width = draw_vk_params.width,
+ .height = draw_vk_params.height,
+ .is_layer = draw_vk_params.is_layer,
+ .secondary_command_buffer = draw_vk_params.secondary_command_buffer,
+ .color_attachment_index = draw_vk_params.color_attachment_index,
+ .compatible_render_pass = draw_vk_params.compatible_render_pass,
+ .format = draw_vk_params.format,
+ .transfer_function_g = gabcdef[0],
+ .transfer_function_a = gabcdef[1],
+ .transfer_function_b = gabcdef[2],
+ .transfer_function_c = gabcdef[3],
+ .transfer_function_d = gabcdef[4],
+ .transfer_function_e = gabcdef[5],
+ .transfer_function_f = gabcdef[6],
+ .clip_left = draw_vk_params.clip_left,
+ .clip_top = draw_vk_params.clip_top,
+ .clip_right = draw_vk_params.clip_right,
+ .clip_bottom = draw_vk_params.clip_bottom,
+ };
+ COMPILE_ASSERT(sizeof(params.color_space_toXYZD50) == sizeof(skcms_Matrix3x3),
+ gamut_transform_size_mismatch);
+ draw_vk_params.color_space_ptr->toXYZD50(
+ reinterpret_cast<skcms_Matrix3x3*>(¶ms.color_space_toXYZD50));
+ COMPILE_ASSERT(NELEM(params.transform) == NELEM(draw_vk_params.transform),
+ mismatched_transform_matrix_sizes);
+ for (int i = 0; i < NELEM(params.transform); ++i) {
+ params.transform[i] = draw_vk_params.transform[i];
+ }
+ support->callbacks.draw_vk(functor, support->data, ¶ms);
+}
+
+void postDrawVk(int functor, void* data) {
+ SupportData* support = static_cast<SupportData*>(data);
+ AwDrawFn_PostDrawVkParams params{.version = kAwDrawFnVersion};
+ support->callbacks.post_draw_vk(functor, support->data, ¶ms);
+}
+
int CreateFunctor(void* data, AwDrawFnFunctorCallbacks* functor_callbacks) {
static bool callbacks_initialized = false;
static uirenderer::WebViewFunctorCallbacks webview_functor_callbacks = {
@@ -82,9 +155,19 @@
.onDestroyed = &onDestroyed,
};
if (!callbacks_initialized) {
- // Under uirenderer::RenderMode::Vulkan, whether gles or vk union should
- // be populated should match whether the vk-gl interop is used.
- webview_functor_callbacks.gles.draw = &draw_gl;
+ switch (uirenderer::WebViewFunctor_queryPlatformRenderMode()) {
+ case uirenderer::RenderMode::OpenGL_ES:
+ webview_functor_callbacks.gles.draw = &draw_gl;
+ break;
+ case uirenderer::RenderMode::Vulkan:
+ webview_functor_callbacks.vk.initialize = &initializeVk;
+ webview_functor_callbacks.vk.draw = &drawVk;
+ webview_functor_callbacks.vk.postDraw = &postDrawVk;
+ // TODO(boliu): Remove this once SkiaRecordingCanvas::drawWebViewFunctor
+ // no longer uses GL interop.
+ webview_functor_callbacks.gles.draw = &draw_gl;
+ break;
+ }
callbacks_initialized = true;
}
SupportData* support = new SupportData{
diff --git a/nfc-extras/api/current.txt b/nfc-extras/api/current.txt
index 066b7b5..47ccddf 100644
--- a/nfc-extras/api/current.txt
+++ b/nfc-extras/api/current.txt
@@ -1,44 +1,45 @@
+// Signature format: 2.0
package com.android.nfc_extras {
public class EeAlreadyOpenException extends com.android.nfc_extras.EeIOException {
ctor public EeAlreadyOpenException();
- ctor public EeAlreadyOpenException(java.lang.String);
+ ctor public EeAlreadyOpenException(String);
}
public class EeExternalFieldException extends com.android.nfc_extras.EeIOException {
ctor public EeExternalFieldException();
- ctor public EeExternalFieldException(java.lang.String);
+ ctor public EeExternalFieldException(String);
}
public class EeIOException extends java.io.IOException {
ctor public EeIOException();
- ctor public EeIOException(java.lang.String);
+ ctor public EeIOException(String);
}
public class EeInitializationException extends com.android.nfc_extras.EeIOException {
ctor public EeInitializationException();
- ctor public EeInitializationException(java.lang.String);
+ ctor public EeInitializationException(String);
}
public class EeListenModeException extends com.android.nfc_extras.EeIOException {
ctor public EeListenModeException();
- ctor public EeListenModeException(java.lang.String);
+ ctor public EeListenModeException(String);
}
public class EeNfcDisabledException extends com.android.nfc_extras.EeIOException {
ctor public EeNfcDisabledException();
- ctor public EeNfcDisabledException(java.lang.String);
+ ctor public EeNfcDisabledException(String);
}
public final class NfcAdapterExtras {
method public void authenticate(byte[]);
method public static com.android.nfc_extras.NfcAdapterExtras get(android.nfc.NfcAdapter);
method public com.android.nfc_extras.NfcAdapterExtras.CardEmulationRoute getCardEmulationRoute();
- method public java.lang.String getDriverName();
+ method public String getDriverName();
method public com.android.nfc_extras.NfcExecutionEnvironment getEmbeddedExecutionEnvironment();
method public void setCardEmulationRoute(com.android.nfc_extras.NfcAdapterExtras.CardEmulationRoute);
- field public static final java.lang.String ACTION_RF_FIELD_OFF_DETECTED = "com.android.nfc_extras.action.RF_FIELD_OFF_DETECTED";
- field public static final java.lang.String ACTION_RF_FIELD_ON_DETECTED = "com.android.nfc_extras.action.RF_FIELD_ON_DETECTED";
+ field public static final String ACTION_RF_FIELD_OFF_DETECTED = "com.android.nfc_extras.action.RF_FIELD_OFF_DETECTED";
+ field public static final String ACTION_RF_FIELD_ON_DETECTED = "com.android.nfc_extras.action.RF_FIELD_ON_DETECTED";
}
public static final class NfcAdapterExtras.CardEmulationRoute {
@@ -53,7 +54,7 @@
method public void close() throws java.io.IOException;
method public void open() throws com.android.nfc_extras.EeIOException;
method public byte[] transceive(byte[]) throws java.io.IOException;
- field public static final java.lang.String ACTION_AID_SELECTED = "com.android.nfc_extras.action.AID_SELECTED";
+ field public static final String ACTION_AID_SELECTED = "com.android.nfc_extras.action.AID_SELECTED";
}
}
diff --git a/nfc-extras/api/removed.txt b/nfc-extras/api/removed.txt
index e69de29..d802177 100644
--- a/nfc-extras/api/removed.txt
+++ b/nfc-extras/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/nfc-extras/api/system-current.txt b/nfc-extras/api/system-current.txt
index e69de29..d802177 100644
--- a/nfc-extras/api/system-current.txt
+++ b/nfc-extras/api/system-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/nfc-extras/api/system-removed.txt b/nfc-extras/api/system-removed.txt
index e69de29..d802177 100644
--- a/nfc-extras/api/system-removed.txt
+++ b/nfc-extras/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/nfc-extras/api/test-current.txt b/nfc-extras/api/test-current.txt
index e69de29..d802177 100644
--- a/nfc-extras/api/test-current.txt
+++ b/nfc-extras/api/test-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/nfc-extras/api/test-removed.txt b/nfc-extras/api/test-removed.txt
index e69de29..d802177 100644
--- a/nfc-extras/api/test-removed.txt
+++ b/nfc-extras/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/obex/api/current.txt b/obex/api/current.txt
index 1cd562f..f142bc8 100644
--- a/obex/api/current.txt
+++ b/obex/api/current.txt
@@ -1,3 +1,4 @@
+// Signature format: 2.0
package javax.obex {
public class ObexPacket {
diff --git a/obex/api/removed.txt b/obex/api/removed.txt
index e69de29..d802177 100644
--- a/obex/api/removed.txt
+++ b/obex/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/obex/api/system-current.txt b/obex/api/system-current.txt
index e69de29..d802177 100644
--- a/obex/api/system-current.txt
+++ b/obex/api/system-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/obex/api/system-removed.txt b/obex/api/system-removed.txt
index e69de29..d802177 100644
--- a/obex/api/system-removed.txt
+++ b/obex/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/obex/api/test-current.txt b/obex/api/test-current.txt
index e69de29..d802177 100644
--- a/obex/api/test-current.txt
+++ b/obex/api/test-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/obex/api/test-removed.txt b/obex/api/test-removed.txt
index e69de29..d802177 100644
--- a/obex/api/test-removed.txt
+++ b/obex/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/packages/ExtServices/src/android/ext/services/notification/SmartActionsHelper.java b/packages/ExtServices/src/android/ext/services/notification/SmartActionsHelper.java
index a9d8f62..95df5f2 100644
--- a/packages/ExtServices/src/android/ext/services/notification/SmartActionsHelper.java
+++ b/packages/ExtServices/src/android/ext/services/notification/SmartActionsHelper.java
@@ -27,6 +27,7 @@
import android.service.notification.NotificationAssistantService;
import android.text.TextUtils;
import android.util.LruCache;
+import android.view.textclassifier.ConversationAction;
import android.view.textclassifier.ConversationActions;
import android.view.textclassifier.TextClassification;
import android.view.textclassifier.TextClassificationContext;
@@ -65,13 +66,13 @@
private static final int MAX_MESSAGES_TO_EXTRACT = 5;
private static final int MAX_RESULT_ID_TO_CACHE = 20;
- private static final ConversationActions.TypeConfig TYPE_CONFIG =
- new ConversationActions.TypeConfig.Builder().setIncludedTypes(
- Collections.singletonList(ConversationActions.TYPE_TEXT_REPLY))
+ private static final TextClassifier.EntityConfig TYPE_CONFIG =
+ new TextClassifier.EntityConfig.Builder().setIncludedTypes(
+ Collections.singletonList(ConversationAction.TYPE_TEXT_REPLY))
.includeTypesFromTextClassifier(false)
.build();
private static final List<String> HINTS =
- Collections.singletonList(ConversationActions.HINT_FOR_NOTIFICATION);
+ Collections.singletonList(ConversationActions.Request.HINT_FOR_NOTIFICATION);
private Context mContext;
@Nullable
@@ -137,7 +138,7 @@
ConversationActions conversationActionsResult =
mTextClassifier.suggestConversationActions(request);
- List<ConversationActions.ConversationAction> conversationActions =
+ List<ConversationAction> conversationActions =
conversationActionsResult.getConversationActions();
ArrayList<CharSequence> replies = conversationActions.stream()
.map(conversationAction -> conversationAction.getTextReply())
@@ -193,7 +194,7 @@
}
TextClassifierEvent textClassifierEvent =
createTextClassifierEventBuilder(TextClassifierEvent.TYPE_SMART_ACTION, resultId)
- .setEntityType(ConversationActions.TYPE_TEXT_REPLY)
+ .setEntityType(ConversationAction.TYPE_TEXT_REPLY)
.build();
mTextClassifier.onTextClassifierEvent(textClassifierEvent);
}
diff --git a/packages/ExtServices/tests/src/android/ext/services/notification/SmartActionHelperTest.java b/packages/ExtServices/tests/src/android/ext/services/notification/SmartActionHelperTest.java
index 7d74788..7b7ce3d 100644
--- a/packages/ExtServices/tests/src/android/ext/services/notification/SmartActionHelperTest.java
+++ b/packages/ExtServices/tests/src/android/ext/services/notification/SmartActionHelperTest.java
@@ -32,6 +32,7 @@
import android.service.notification.StatusBarNotification;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
+import android.view.textclassifier.ConversationAction;
import android.view.textclassifier.ConversationActions;
import android.view.textclassifier.TextClassificationManager;
import android.view.textclassifier.TextClassifier;
@@ -65,9 +66,10 @@
private static final String NOTIFICATION_KEY = "key";
private static final String RESULT_ID = "id";
- private static final ConversationActions.ConversationAction REPLY_ACTION =
- new ConversationActions.ConversationAction.Builder(
- ConversationActions.TYPE_TEXT_REPLY).setTextReply("Home").build();
+ private static final ConversationAction REPLY_ACTION =
+ new ConversationAction.Builder(ConversationAction.TYPE_TEXT_REPLY)
+ .setTextReply("Home")
+ .build();
private SmartActionsHelper mSmartActionsHelper;
private Context mContext;
diff --git a/packages/NetworkStack/AndroidManifest.xml b/packages/NetworkStack/AndroidManifest.xml
index 0b0f1ec..7f8bb93 100644
--- a/packages/NetworkStack/AndroidManifest.xml
+++ b/packages/NetworkStack/AndroidManifest.xml
@@ -20,6 +20,7 @@
package="com.android.mainline.networkstack"
android:sharedUserId="android.uid.networkstack">
<uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
diff --git a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
index 94ea1b9..4077d93 100644
--- a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
+++ b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
@@ -545,7 +545,9 @@
return HANDLED;
case CMD_FORCE_REEVALUATION:
case CMD_CAPTIVE_PORTAL_RECHECK:
- log("Forcing reevaluation for UID " + message.arg1);
+ final int dnsCount = mDnsStallDetector.getConsecutiveTimeoutCount();
+ validationLog("Forcing reevaluation for UID " + message.arg1
+ + ". Dns signal count: " + dnsCount);
mUidResponsibleForReeval = message.arg1;
transitionTo(mEvaluatingState);
return HANDLED;
diff --git a/packages/SettingsLib/EntityHeaderWidgets/res/layout/app_view.xml b/packages/SettingsLib/EntityHeaderWidgets/res/layout/app_view.xml
index fcafa31..9604512 100644
--- a/packages/SettingsLib/EntityHeaderWidgets/res/layout/app_view.xml
+++ b/packages/SettingsLib/EntityHeaderWidgets/res/layout/app_view.xml
@@ -22,6 +22,8 @@
android:layout_weight="1"
android:layout_marginEnd="16dp"
android:gravity="center"
+ android:clickable="true"
+ android:background="?android:attr/selectableItemBackground"
android:orientation="vertical">
<ImageView
diff --git a/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntitiesHeaderController.java b/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntitiesHeaderController.java
index 8ccf89f..73cb8db 100644
--- a/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntitiesHeaderController.java
+++ b/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntitiesHeaderController.java
@@ -18,7 +18,6 @@
import android.content.Context;
import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
@@ -32,23 +31,9 @@
import androidx.annotation.VisibleForTesting;
/**
- * This is used to initialize view which was inflated
+ * This class is used to initialize view which was inflated
* from {@link R.xml.app_entities_header.xml}.
*
- * <p>The view looks like below.
- *
- * <pre>
- * --------------------------------------------------------------
- * | Header title |
- * --------------------------------------------------------------
- * | App1 icon | App2 icon | App3 icon |
- * | App1 title | App2 title | App3 title |
- * | App1 summary | App2 summary | App3 summary |
- * |-------------------------------------------------------------
- * | Header details |
- * --------------------------------------------------------------
- * </pre>
- *
* <p>How to use AppEntitiesHeaderController?
*
* <p>1. Add a {@link LayoutPreference} in layout XML file.
@@ -66,13 +51,20 @@
* View headerView = ((LayoutPreference) screen.findPreference("app_entities_header"))
* .findViewById(R.id.app_entities_header);
*
+ * final AppEntityInfo appEntityInfo = new AppEntityInfo.Builder()
+ * .setIcon(icon)
+ * .setTitle(title)
+ * .setSummary(summary)
+ * .setOnClickListener(view -> doSomething())
+ * .build();
+ *
* AppEntitiesHeaderController.newInstance(context, headerView)
* .setHeaderTitleRes(R.string.xxxxx)
* .setHeaderDetailsRes(R.string.xxxxx)
* .setHeaderDetailsClickListener(onClickListener)
- * .setAppEntity(0, icon, "app title", "app summary")
- * .setAppEntity(1, icon, "app title", "app summary")
- * .setAppEntity(2, icon, "app title", "app summary")
+ * .setAppEntity(0, appEntityInfo)
+ * .setAppEntity(1, appEntityInfo)
+ * .setAppEntity(2, appEntityInfo)
* .apply();
* </pre>
*/
@@ -81,13 +73,13 @@
private static final String TAG = "AppEntitiesHeaderCtl";
@VisibleForTesting
- static final int MAXIMUM_APPS = 3;
+ public static final int MAXIMUM_APPS = 3;
private final Context mContext;
private final TextView mHeaderTitleView;
private final Button mHeaderDetailsView;
- private final AppEntity[] mAppEntities;
+ private final AppEntityInfo[] mAppEntityInfos;
private final View[] mAppEntityViews;
private final ImageView[] mAppIconViews;
private final TextView[] mAppTitleViews;
@@ -100,7 +92,7 @@
/**
* Creates a new instance of the controller.
*
- * @param context the Context the view is running in
+ * @param context the Context the view is running in
* @param appEntitiesHeaderView view was inflated from <code>app_entities_header</code>
*/
public static AppEntitiesHeaderController newInstance(@NonNull Context context,
@@ -113,7 +105,7 @@
mHeaderTitleView = appEntitiesHeaderView.findViewById(R.id.header_title);
mHeaderDetailsView = appEntitiesHeaderView.findViewById(R.id.header_details);
- mAppEntities = new AppEntity[MAXIMUM_APPS];
+ mAppEntityInfos = new AppEntityInfo[MAXIMUM_APPS];
mAppIconViews = new ImageView[MAXIMUM_APPS];
mAppTitleViews = new TextView[MAXIMUM_APPS];
mAppSummaryViews = new TextView[MAXIMUM_APPS];
@@ -162,16 +154,13 @@
/**
* Set an app entity at a specified position view.
*
- * @param index the index at which the specified view is to be inserted
- * @param icon the icon of app entity
- * @param titleRes the title of app entity
- * @param summaryRes the summary of app entity
+ * @param index the index at which the specified view is to be inserted
+ * @param appEntityInfo the information of an app entity
* @return this {@code AppEntitiesHeaderController} object
*/
- public AppEntitiesHeaderController setAppEntity(int index, @NonNull Drawable icon,
- @Nullable CharSequence titleRes, @Nullable CharSequence summaryRes) {
- final AppEntity appEntity = new AppEntity(icon, titleRes, summaryRes);
- mAppEntities[index] = appEntity;
+ public AppEntitiesHeaderController setAppEntity(int index,
+ @NonNull AppEntityInfo appEntityInfo) {
+ mAppEntityInfos[index] = appEntityInfo;
return this;
}
@@ -182,7 +171,7 @@
* @return this {@code AppEntitiesHeaderController} object
*/
public AppEntitiesHeaderController removeAppEntity(int index) {
- mAppEntities[index] = null;
+ mAppEntityInfos[index] = null;
return this;
}
@@ -237,31 +226,23 @@
}
private void bindAppEntityView(int index) {
- final AppEntity appEntity = mAppEntities[index];
- mAppEntityViews[index].setVisibility(appEntity != null ? View.VISIBLE : View.GONE);
+ final AppEntityInfo appEntityInfo = mAppEntityInfos[index];
+ mAppEntityViews[index].setVisibility(appEntityInfo != null ? View.VISIBLE : View.GONE);
- if (appEntity != null) {
- mAppIconViews[index].setImageDrawable(appEntity.icon);
+ if (appEntityInfo != null) {
+ mAppEntityViews[index].setOnClickListener(appEntityInfo.getClickListener());
+ mAppIconViews[index].setImageDrawable(appEntityInfo.getIcon());
+
+ final CharSequence title = appEntityInfo.getTitle();
mAppTitleViews[index].setVisibility(
- TextUtils.isEmpty(appEntity.title) ? View.INVISIBLE : View.VISIBLE);
- mAppTitleViews[index].setText(appEntity.title);
+ TextUtils.isEmpty(title) ? View.INVISIBLE : View.VISIBLE);
+ mAppTitleViews[index].setText(title);
+ final CharSequence summary = appEntityInfo.getSummary();
mAppSummaryViews[index].setVisibility(
- TextUtils.isEmpty(appEntity.summary) ? View.INVISIBLE : View.VISIBLE);
- mAppSummaryViews[index].setText(appEntity.summary);
- }
- }
-
- private static class AppEntity {
- public final Drawable icon;
- public final CharSequence title;
- public final CharSequence summary;
-
- AppEntity(Drawable appIcon, CharSequence appTitle, CharSequence appSummary) {
- icon = appIcon;
- title = appTitle;
- summary = appSummary;
+ TextUtils.isEmpty(summary) ? View.INVISIBLE : View.VISIBLE);
+ mAppSummaryViews[index].setText(summary);
}
}
}
diff --git a/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntityInfo.java b/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntityInfo.java
new file mode 100644
index 0000000..1e55f2e
--- /dev/null
+++ b/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntityInfo.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2019 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.settingslib.widget;
+
+import android.graphics.drawable.Drawable;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+/**
+ * AppEntityInfo is responsible for storing app information shown in {@link R.xml.app_view.xml}.
+ */
+public class AppEntityInfo {
+
+ private final Drawable mIcon;
+ private final CharSequence mTitle;
+ private final CharSequence mSummary;
+ private final View.OnClickListener mClickListener;
+
+ /**
+ * Gets the drawable for the icon of app entity.
+ *
+ * @return the drawable for the icon of app entity.
+ */
+ public Drawable getIcon() {
+ return mIcon;
+ }
+
+ /**
+ * Gets the text for the title of app enitity.
+ *
+ * @return the text for the title of app enitity.
+ */
+ public CharSequence getTitle() {
+ return mTitle;
+ }
+
+ /**
+ * Gets the text for the summary of app enitity.
+ *
+ * @return the text for the summary of app enitity.
+ */
+ public CharSequence getSummary() {
+ return mSummary;
+ }
+
+ /**
+ * Gets the click listener for the app entity view.
+ *
+ * @return click listener for the app entity view.
+ */
+ public View.OnClickListener getClickListener() {
+ return mClickListener;
+ }
+
+ private AppEntityInfo(Builder builder) {
+ mIcon = builder.mIcon;
+ mTitle = builder.mTitle;
+ mSummary = builder.mSummary;
+ mClickListener = builder.mClickListener;
+ }
+
+ /**
+ * Builder class for {@link AppEntityInfo}
+ */
+ public static class Builder {
+
+ private Drawable mIcon;
+ private CharSequence mTitle;
+ private CharSequence mSummary;
+ private View.OnClickListener mClickListener;
+
+ /**
+ * Creates an instance of a {@link AppEntityInfo} based on the current builder settings.
+ *
+ * @return The {@link AppEntityInfo}.
+ */
+ public AppEntityInfo build() {
+ return new AppEntityInfo(this);
+ }
+
+ /**
+ * Sets the drawable for the icon.
+ */
+ public Builder setIcon(@NonNull Drawable icon) {
+ mIcon = icon;
+ return this;
+ }
+
+ /**
+ * Sets the text for the title.
+ */
+ public Builder setTitle(@Nullable CharSequence title) {
+ mTitle = title;
+ return this;
+ }
+
+ /**
+ * Sets the text for the summary.
+ */
+ public Builder setSummary(@Nullable CharSequence summary) {
+ mSummary = summary;
+ return this;
+ }
+
+ /**
+ * Sets the click listener for app entity view.
+ */
+ public Builder setOnClickListener(@Nullable View.OnClickListener clickListener) {
+ mClickListener = clickListener;
+ return this;
+ }
+ }
+}
diff --git a/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml b/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml
index 3787005..237d62e 100644
--- a/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="search_menu" msgid="1604061903696928905">"تنظیمات جستجو"</string>
+ <string name="search_menu" msgid="1604061903696928905">"جستجوی تنظیمات"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index ac34a99e..080fcc2 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Outomaties deur %1$s gekoppel"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Outomaties deur netwerkgraderingverskaffer gekoppel"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Gekoppel via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Beskikbaar via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Gekoppel, geen internet nie"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Geen internet nie"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Aanmelding word vereis"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Toegangspunt is tydelik vol"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Gekoppel via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Beskikbaar via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Baie stadig"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Stadig"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 9405b7d..53d1c4d 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"በ%1$s በኩል በራስ-ሰር ተገናኝቷል"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"በአውታረ መረብ ደረጃ ሰጪ አቅራቢ በኩል በራስ-ሰር ተገናኝቷል"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"በ%1$s በኩል መገናኘት"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"በ%1$s በኩል የሚገኝ"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ተገናኝቷል፣ ምንም በይነመረብ የለም"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ምንም በይነመረብ የለም"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ወደ መለያ መግባት ያስፈልጋል"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"የመዳረሻ ነጥብ ለጊዜው ሞልቷል"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"በ%1$s በኩል ተገናኝቷል"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"በ%1$s በኩል የሚገኝ"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"በጣም ቀርፋፋ"</string>
<string name="speed_label_slow" msgid="813109590815810235">"አዘግይ"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"እሺ"</string>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 8ffd7a9..81755a7 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"تم الاتصال تلقائيًا عبر %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"تم الاتصال تلقائيًا عبر مقدم خدمة تقييم الشبكة"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"تم الاتصال عبر %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"متوفرة عبر %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"متصلة ولكن بلا إنترنت"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"لا يتوفر اتصال إنترنت."</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"يلزم تسجيل الدخول"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"نقطة الدخول ممتلئة مؤقتًا"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"تم الاتصال عبر %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"متوفرة عبر %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"بطيئة جدًا"</string>
<string name="speed_label_slow" msgid="813109590815810235">"بطيئة"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"موافق"</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index 3ad13bd..6cb0c3e 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s মাধ্যমেদি স্বয়ংক্ৰিয়ভাৱে সংযোগ কৰা হৈছে"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"নেটৱৰ্ক ৰেটিং প্ৰদানকাৰীৰ জৰিয়তে স্বয়ং সংয়োগ কৰা হ’ল"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s-ৰ মাধ্যমেদি সংযোগ কৰা হৈছে"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$sৰ মাধ্যমেৰে উপলব্ধ"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"সংযোজিত, ইণ্টাৰনেট নাই"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ইণ্টাৰনেট সংযোগ নাই"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ছাইন ইন কৰা দৰকাৰী"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"একচেছ পইণ্ট কিছু সময়ৰ বাবে পূৰ্ণ হৈ আছে"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$sৰ যোগেৰে সংযোজিত"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$sৰ মাধ্যমেৰে উপলব্ধ"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"অতি লেহেম"</string>
<string name="speed_label_slow" msgid="813109590815810235">"লেহেমীয়া"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ঠিক"</string>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index daa9c8f..d30834f2 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s üzərindən avtomatik qoşuldu"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Avtomatik olaraq şəbəkə reytinq provayderi ilə qoşuludur"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s vasitəsilə qoşuludur"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s vasitəsilə əlçatandır"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Qoşuludur, internet yoxdur"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"İnternet yoxdur"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Giriş tələb olunur"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Giriş nöqtəsi müvəqqəti olaraq doludur"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s ilə qoşuludur"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s vasitəsilə əlçatandır"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Çox Yavaş"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Yavaş"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 44f14df..427daab 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatski povezano preko %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatski povezano preko dobavljača ocene mreže"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Veza je uspostavljena preko pristupne tačke %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostupna je preko pristupne tačke %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Veza je uspostavljena, nema interneta"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nema interneta"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Treba da se prijavite"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pristupna tačka je privremeno zauzeta"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Povezano preko %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Dostupno preko %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Veoma spora"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Spora"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Potvrdi"</string>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 2dcdd37..a156caf0 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Аўтаматычна падключана праз %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Аўтаматычна падключана праз пастаўшчыка паслугі ацэнкі сеткі"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Падлучана праз %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Даступна праз %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Падключана, без доступу да інтэрнэту"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Не падключана да інтэрнэту"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Трэба выканаць уваход"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Пункт доступу часова заняты"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Падлучана праз %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Даступна праз %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Вельмі павольная"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Павольная"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ОК"</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 1e2f0f4..8333646 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Автоматично е установена връзка чрез %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Автоматично е установена връзка чрез доставчик на услуги за оценяване на мрежите"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Установена е връзка през „%1$s“"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Мрежата е достъпна през „%1$s“"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Установена е връзка – няма достъп до интернет"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Няма връзка с интернет"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Изисква се вход в профила"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Точката за достъп временно е пълна"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Установена е връзка през %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Мрежата е достъпна през %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Много бавна"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Бавна"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ОK"</string>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 4ec893b..c7b3afea 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"স্বয়ংক্রিয়ভাবে %1$s এর মাধ্যমে কানেক্ট হয়েছে"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"নেটওয়ার্কের রেটিং প্রদানকারীর মাধ্যমে অটোমেটিক কানেক্ট"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s মাধ্যমে কানেক্ট হয়েছে"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s এর মাধ্যমে উপলব্ধ"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"কানেক্ট, ইন্টারনেট নেই"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ইন্টারনেট কানেকশন নেই"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"সাইন-ইন করা দরকার"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"এই মুহূর্তে অ্যাক্সেস পয়েন্টের কোনও কানেকশন ফাঁকা নেই"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s এর মাধ্যমে কানেক্ট হয়েছে"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s এর মাধ্যমে পাওয়া যাচ্ছে"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"খুব ধীরে"</string>
<string name="speed_label_slow" msgid="813109590815810235">"ধীরে"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ঠিক আছে"</string>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index a0a0e2a..715a8a5 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -27,7 +27,7 @@
<string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Greška u konfiguraciji IP-a"</string>
<string name="wifi_disabled_by_recommendation_provider" msgid="5168315140978066096">"Niste povezani zbog slabog kvaliteta mreže"</string>
<string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Greška pri povezivanju na WiFi"</string>
- <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problem pri provjeri vjerodostojnosti."</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problem pri autentifikaciji."</string>
<string name="wifi_cant_connect" msgid="5410016875644565884">"Nije se moguće povezati"</string>
<string name="wifi_cant_connect_to_ap" msgid="1222553274052685331">"Nije se moguće povezati na aplikaciju \'<xliff:g id="AP_NAME">%1$s</xliff:g>\'"</string>
<string name="wifi_check_password_try_again" msgid="516958988102584767">"Provjerite lozinku i pokušajte ponovo"</string>
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatski povezano koristeći %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatski povezano putem ocjenjivača mreže"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Povezani preko %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostupan preko %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Povezano, nema interneta"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nema internetske veze"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Potrebna je prijava"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pristupna tačka je privremeno puna"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Povezano koristeći %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Dostupna koristeći %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Veoma sporo"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Sporo"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"UREDU"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 0bd6a1b..56f55dd 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Connectada automàticament a través de: %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Connectada automàticament a través d\'un proveïdor de valoració de xarxes"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Connectada mitjançant %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponible mitjançant %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connectada, sense Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sense connexió a Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Cal iniciar la sessió"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"El punt d\'accés està temporalment ple"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Connectat mitjançant %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Disponible mitjançant %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Molt lenta"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Correcta"</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 69c22ec..edbb358 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automaticky připojeno přes poskytovatele %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automaticky připojeno přes poskytovatele hodnocení sítí"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Připojeno prostřednictvím %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostupné prostřednictvím %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Připojeno, není k dispozici internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nejste připojeni k internetu"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Je vyžadováno přihlášení"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Přístupový bod je dočasně zaplněn"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Připojeno prostřednictvím %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Dostupné prostřednictvím %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Velmi pomalá"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Pomalá"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 077258a..1d34579 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatisk tilsluttet via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatisk forbundet via udbyder af netværksvurdering"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Tilsluttet via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Tilgængelig via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Tilsluttet – intet internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Intet internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Login er påkrævet"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Adgangspunktet er midlertidigt fuldt"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Tilsluttet via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Tilgængelig via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Meget langsom"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Langsom"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index c4e03ad..1abc359 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatisch über %1$s verbunden"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatisch über Anbieter von Netzwerkbewertungen verbunden"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Über %1$s verbunden"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Verfügbar über %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Verbunden, kein Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Kein Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Anmeldung erforderlich"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Zugangspunkt vorübergehend voll belegt"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Über %1$s verbunden"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Verfügbar über %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Sehr langsam"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Langsam"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 642e862..eb57558 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Συνδέθηκε αυτόματα μέσω %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Συνδέθηκε αυτόματα μέσω παρόχου αξιολόγησης δικτύου"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Συνδέθηκε μέσω %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Διαθέσιμο μέσω %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Συνδέθηκε, χωρίς σύνδεση στο διαδίκτυο"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Δεν υπάρχει σύνδεση στο διαδίκτυο"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Απαιτείται σύνδεση"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Το σημείο πρόσβασης είναι προσωρινά πλήρες"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Συνδέθηκε μέσω %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Διαθέσιμο μέσω %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Πολύ αργή"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Αργή"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ΟΚ"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index 0cdfaf2..1f74d9b1 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatically connected via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatically connected via network rating provider"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Connected via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connected, no Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"No Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sign-in required"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Connected via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Available via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Very slow"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Slow"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index 0cdfaf2..1f74d9b1 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatically connected via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatically connected via network rating provider"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Connected via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connected, no Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"No Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sign-in required"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Connected via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Available via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Very slow"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Slow"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index 0cdfaf2..1f74d9b1 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatically connected via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatically connected via network rating provider"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Connected via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connected, no Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"No Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sign-in required"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Connected via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Available via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Very slow"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Slow"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index 0cdfaf2..1f74d9b1 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatically connected via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatically connected via network rating provider"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Connected via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connected, no Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"No Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sign-in required"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Connected via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Available via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Very slow"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Slow"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml
index eda4d1bb..082a331 100644
--- a/packages/SettingsLib/res/values-en-rXC/strings.xml
+++ b/packages/SettingsLib/res/values-en-rXC/strings.xml
@@ -38,13 +38,50 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatically connected via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatically connected via network rating provider"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Connected via %1$s"</string>
+ <string name="ssid_by_passpoint_provider" msgid="7898171424140673315">"<xliff:g id="SSID">%1$s</xliff:g> by <xliff:g id="PASSPOINTPROVIDER">%2$s</xliff:g>"</string>
<string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string>
+ <string name="tap_to_set_up" msgid="2468970825530423314">"Tap to set up"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connected, no internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"No internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sign in required"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Connected via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Available via %1$s"</string>
+ <string name="osu_failure_ap_connection" msgid="598977488344424542">"Connection failed"</string>
+ <string name="osu_failure_server_url_invalid" msgid="2237477219243136714">"Invalid OSU server URL"</string>
+ <string name="osu_failure_server_connection" msgid="8192988165059982174">"OSU server connection failed"</string>
+ <string name="osu_failure_server_validation" msgid="4631649978129606823">"OSU server validation failed"</string>
+ <string name="osu_failure_service_provider_verification" msgid="4854091521439785597">"Invalid OSU server certificate"</string>
+ <string name="osu_failure_provisioning_aborted" msgid="424627208135320329">"Provisioning aborted"</string>
+ <string name="osu_failure_provisioning_not_available" msgid="3021783729256985432">"Provisioning not available"</string>
+ <string name="osu_failure_invalid_server_url" msgid="8548886196179435758">"Invalid OSU server URL"</string>
+ <string name="osu_failure_unexpected_command_type" msgid="8245921319866603904">"Unexpected command type"</string>
+ <string name="osu_failure_unexpected_soap_message_type" msgid="2255897608510053065">"Unexpected SOAP message type"</string>
+ <string name="osu_failure_soap_message_exchange" msgid="4357358438685987192">"SOAP message exchange failed"</string>
+ <string name="osu_failure_start_redirect_listener" msgid="4292769407279548482">"Redirect listener failed to start"</string>
+ <string name="osu_failure_timed_out_redirect_listener" msgid="3168657820278807508">"Timed out waiting for redirect"</string>
+ <string name="osu_failure_no_osu_activity_found" msgid="4593038891437878675">"No OSU activity found"</string>
+ <string name="osu_failure_unexpected_soap_message_status" msgid="6568467710235256675">"Unexpected SOAP message status"</string>
+ <string name="osu_failure_no_pps_mo" msgid="850567403039076835">"Failed to find PPS-MO"</string>
+ <string name="osu_failure_no_aaa_server_trust_root_node" msgid="8961455873459838456">"Failed to find trust root node for AAA server"</string>
+ <string name="osu_failure_no_remediation_server_trust_root_node" msgid="5041179688081545244">"Failed to find trust root node for remediation server"</string>
+ <string name="osu_failure_no_policy_server_trust_root_node" msgid="6617290380940513539">"Failed to find trust root node for policy server"</string>
+ <string name="osu_failure_retrieve_trust_root_certificates" msgid="1499136256195528265">"Failed to retrieve trust root certificates"</string>
+ <string name="osu_failure_no_aaa_trust_root_certificate" msgid="1904322497042226984">"Failed to find trust root certificate for AAA server"</string>
+ <string name="osu_failure_add_passpoint_configuration" msgid="2173557755811446047">"Failed to add PassPoint configuration"</string>
+ <string name="osu_failure_osu_provider_not_found" msgid="6616172862116673082">"Failed to find an OSU provider"</string>
+ <string name="osu_status_ap_connecting" msgid="5296821043003441437">"Connecting"</string>
+ <string name="osu_status_ap_connected" msgid="3777289375683170728">"Connected"</string>
+ <string name="osu_status_server_connecting" msgid="8499785407540355867">"Connecting to OSU server"</string>
+ <string name="osu_status_server_validated" msgid="3158727184762596355">"OSU server validated"</string>
+ <string name="osu_status_server_connected" msgid="8382024481520158168">"Connected to OSU server"</string>
+ <string name="osu_status_init_soap_exchange" msgid="8628063888912101981">"Initial SOAP exchange"</string>
+ <string name="osu_status_waiting_for_redirect_response" msgid="2343016207837053197">"Waiting for redirect response"</string>
+ <string name="osu_status_redirect_response_received" msgid="5323368411922609405">"Received redirect response"</string>
+ <string name="osu_status_second_soap_exchange" msgid="7115332266758483909">"Second SOAP exchange"</string>
+ <string name="osu_status_third_soap_exchange" msgid="8460901783597440766">"Third SOAP exchange"</string>
+ <string name="osu_status_retrieving_trust_root_certs" msgid="1563445892926269689">"Retrieving trust root certificates"</string>
+ <string name="osu_provisioning_complete" msgid="5120178802493970149">"Provisioning complete"</string>
<string name="speed_label_very_slow" msgid="1867055264243608530">"Very Slow"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Slow"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index bd3d1b7..795ad9c 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Conexión automática mediante %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Conectado automáticamente mediante proveedor de calificación de red"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Conexión a través de %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponible a través de %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conectado pero sin conexión a Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sin Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Acceso obligatorio"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"El punto de acceso está completo temporalmente"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Conexión a través de %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Disponible a través de %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Muy lenta"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Aceptar"</string>
@@ -144,7 +218,7 @@
<string name="tts_settings_title" msgid="1237820681016639683">"Salida de texto a voz"</string>
<string name="tts_default_rate_title" msgid="6030550998379310088">"Velocidad de voz"</string>
<string name="tts_default_rate_summary" msgid="4061815292287182801">"Velocidad en la que se habla el texto"</string>
- <string name="tts_default_pitch_title" msgid="6135942113172488671">"Sonido"</string>
+ <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tono"</string>
<string name="tts_default_pitch_summary" msgid="1944885882882650009">"Afecta el tono de la voz sintetizada"</string>
<string name="tts_default_lang_title" msgid="8018087612299820556">"Idioma"</string>
<string name="tts_lang_use_system" msgid="2679252467416513208">"Usar el idioma del sistema"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 94f88eb..669871f 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Conectada automáticamente a través de %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Conectado automáticamente a través de un proveedor de valoración de redes"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Conectado a través de %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponible a través de %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conexión sin Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sin Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Debes iniciar sesión"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punto de acceso temporalmente lleno"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Conectado a través de %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Disponible a través de %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Muy lenta"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Aceptable"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index 31527dc..0c9d28e 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Ühendus loodi automaatselt teenusega %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Ühendus loodi automaatselt võrgukvaliteedi hinnangute pakkuja kaudu"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Ühendatud üksuse %1$s kaudu"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Saadaval üksuse %1$s kaudu"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Ühendatud, Interneti-ühendus puudub"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Interneti-ühendus puudub"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Nõutav on sisselogimine"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pääsupunkt on ajutiselt täis"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Ühendatud operaatori %1$s kaudu"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Saadaval operaatori %1$s kaudu"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Väga aeglane"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Aeglane"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Hea"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index dd77284..2687d1d 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s bidez automatikoki konektatuta"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatikoki konektatuta sareen balorazioen hornitzailearen bidez"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s bidez konektatuta"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s bidez erabilgarri"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Konektatuta; ezin da atzitu Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ez dago Interneteko konexiorik"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Saioa hasi behar da"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Sarbide-puntua beteta dago aldi baterako"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s bidez konektatuta"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s bidez erabilgarri"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Oso motela"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Motela"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Ados"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 57f8960..ec6200f 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"اتصال خودکار ازطریق %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"اتصال خودکار ازطریق ارائهدهنده رتبهبندی شبکه"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"متصل از طریق %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"در دسترس از طریق %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"متصل، بدون اینترنت"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"عدم دسترسی به اینترنت"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ورود به سیستم لازم است"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ظرفیت نقطه دسترسی موقتاً تکمیل شده است"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"متصل ازطریق %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"در دسترس ازطریق %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"بسیار آهسته"</string>
<string name="speed_label_slow" msgid="813109590815810235">"آهسته"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"تأیید"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 922d8d3..174caef 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automaattinen yhteys muodostettu palvelun %1$s kautta"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Yhdistetty automaattisesti verkon arviointipalvelun kautta"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Yhdistetty seuraavan kautta: %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Käytettävissä seuraavan kautta: %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Yhdistetty, ei internetyhteyttä"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ei internetyhteyttä"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sisäänkirjautuminen vaaditaan"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Yhteyspiste tilapäisesti täynnä"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Yhdistetty, verkko: %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Käytettävissä, verkko: %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Hyvin hidas"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Hidas"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index 765a80f..f189d77 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatiquement connecté par %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Connecté automatiquement par le fournisseur d\'avis sur le réseau"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Connecté par %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Accessible par %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connecté, aucun accès à Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Aucune connexion Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Connexion requise"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Le point d\'accès est temporairement plein"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Connecté par %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Accessible par %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Très lente"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lente"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index 198b922..97cc5aa 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Connecté automatiquement via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Connecté automatiquement via un fournisseur d\'évaluation de l\'état du réseau"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Connecté via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponible via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connecté, aucun accès à Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Aucun accès à Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Connexion requise"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Point d\'accès temporairement plein"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Connecté via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Disponible via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Très lente"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lente"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Correct"</string>
@@ -372,10 +446,10 @@
<string name="power_remaining_duration_only_enhanced" msgid="4189311599812296592">"Temps restant en fonction de votre utilisation : environ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
<string name="power_discharging_duration_enhanced" msgid="1992003260664804080">"Temps restant en fonction de votre utilisation (<xliff:g id="LEVEL">%2$s</xliff:g>) : environ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
<string name="power_remaining_duration_only_short" msgid="3463575350656389957">"Temps restant : <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
- <string name="power_discharge_by_enhanced" msgid="2095821536747992464">"Temps restant estimé en fonction de votre utilisation : <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
- <string name="power_discharge_by_only_enhanced" msgid="2175151772952365149">"Temps restant estimé en fonction de votre utilisation : <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <string name="power_discharge_by" msgid="6453537733650125582">"Temps restant estimé : <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
- <string name="power_discharge_by_only" msgid="107616694963545745">"Temps restant estimé : <xliff:g id="TIME">%1$s</xliff:g>"</string>
+ <string name="power_discharge_by_enhanced" msgid="2095821536747992464">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> en fonction de votre utilisation (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_discharge_by_only_enhanced" msgid="2175151772952365149">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> en fonction de votre utilisation"</string>
+ <string name="power_discharge_by" msgid="6453537733650125582">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_discharge_by_only" msgid="107616694963545745">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Jusqu\'à <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index de5e7e41..fb63a9d 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Conectouse automaticamente a través de %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Conectada automaticamente a través dun provedor de valoración de rede"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Conectado a través de %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Dispoñible a través de %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conexión sen Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Non hai conexión a Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"É obrigatorio iniciar sesión"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"O punto de acceso está temporalmente cheo"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Conectado a través de %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Dispoñible a través de %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Moi lenta"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Aceptar"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 993eed1..54fa7d1 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s દ્વારા સ્વત: કનેક્ટ થયેલ"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"નેટવર્ક રેટિંગ પ્રદાતા દ્વારા આપમેળે કનેક્ટ થયું"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s દ્વારા કનેક્ટ થયેલ"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s દ્વારા ઉપલબ્ધ"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"કનેક્ટ કર્યું, કોઈ ઇન્ટરનેટ નથી"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ઇન્ટરનેટ ઍક્સેસ નથી"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"સાઇન ઇન આવશ્યક"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ઍક્સેસ પૉઇન્ટ અસ્થાયીરૂપે ભરાયેલ છે"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s દ્વારા કનેક્ટ થયેલ"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s દ્વારા ઉપલબ્ધ"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"ખૂબ જ ધીમી"</string>
<string name="speed_label_slow" msgid="813109590815810235">"ધીમી"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ઓકે"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index faf551e..0aba3f6 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s के ज़रिए ऑटोमैटिक रूप से कनेक्ट है"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"नेटवर्क रेटिंग प्रदाता के ज़रिए अपने आप कनेक्ट है"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s के द्वारा उपलब्ध"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s के द्वारा उपलब्ध"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"कनेक्ट हो गया है, लेकिन इंटरनेट नहीं है"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"इंटरनेट कनेक्शन नहीं है"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"साइन इन करना ज़रूरी है"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"एक्सेस प्वाइंट फ़िलहाल भरा हुआ है"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s के ज़रिए कनेक्ट"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s के ज़रिए उपलब्ध"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"अत्यधिक धीमी"</string>
<string name="speed_label_slow" msgid="813109590815810235">"धीमी"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ठीक है"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 5f04b65..5a48ffd 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatski povezan putem %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatski povezan putem ocjenjivača mreže"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Povezano putem %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostupno putem %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Povezano, bez interneta"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nema interneta"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Obavezna prijava"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pristupna je točka privremeno puna"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Povezano putem mreže %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Dostupno putem mreže %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Vrlo sporo"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Sporo"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"U redu"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 7469c1a..1fa7f6a 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatikusan csatlakozott a következőn keresztül: %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatikusan csatlakozott a hálózatértékelés szolgáltatóján keresztül"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Csatlakozva a következőn keresztül: %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Elérhető a következőn keresztül: %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Csatlakozva, nincs internet-hozzáférés"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nincs internetkapcsolat"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Bejelentkezést igényel"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"A hozzáférési pont átmenetileg megtelt"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Csatlakozva a következőn keresztül: %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Elérhető a következőn keresztül: %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Nagyon lassú"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lassú"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Rendben"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index b27bb7e..02a24fe 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Ավտոմատ կերպով կապակցվել է %1$s-ի միջոցով"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Ավտոմատ կերպով միացել է ցանցի վարկանիշի ծառայության մատակարարի միջոցով"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Կապակցված է %1$s-ի միջոցով"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Հասանելի է %1$s-ի միջոցով"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Միացված է, սակայն ինտերնետ կապ չկա"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ինտերնետ կապ չկա"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Անհրաժեշտ է մուտք գործել"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Հասանելիության կետը ժամանակավորապես լիքն է"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Միացված է %1$s-ի միջոցով"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Հասանելի է %1$s-ի միջոցով"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Շատ դանդաղ"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Դանդաղ"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Հաստատել"</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 342a505..6b901ff 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Tersambung otomatis melalui %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Otomatis tersambung melalui penyedia rating jaringan"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Terhubung melalui %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Tersedia melalui %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Tersambung, tidak ada internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Tidak ada internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Perlu login"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Titik akses penuh untuk sementara"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Tersambung melalui %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Tersedia melalui %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Sangat Lambat"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lambat"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Oke"</string>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index 8f1b9a1..ae31d6b 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Sjálfkrafa tengt um %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Sjálfkrafa tengt um netgæðaveitu"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Tengt í gegnum %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Í boði í gegnum %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Tengt, enginn netaðgangur"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Engin nettenging"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Innskráningar krafist"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Aðgangsstaður tímabundið fullur"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Tengt í gegnum %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Í boði í gegnum %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Mjög hægt"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Hægt"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Í lagi"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 6600ca2..44acbcb 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Collegato automaticamente tramite %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Collegato automaticamente tramite fornitore di servizi di valutazione rete"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Collegato tramite %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponibile tramite %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connesso, senza Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nessuna connessione a Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Accesso richiesto"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punto di accesso momentaneamente al completo"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Connesso tramite %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Disponibile tramite %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Molto lenta"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index a8da0b1..5ae1321 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"מחובר אוטומטית דרך %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"מחובר אוטומטית דרך ספק של דירוג רשת"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"מחובר דרך %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"זמינה דרך %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"מחובר. אין אינטרנט"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"אין אינטרנט"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"נדרשת כניסה"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"נקודת הגישה מלאה באופן זמני"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"מחובר לרשת של %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"זמינה דרך %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"איטית מאוד"</string>
<string name="speed_label_slow" msgid="813109590815810235">"איטית"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"אישור"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index ea62637..25308cf 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s 経由で自動的に接続しています"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"ネットワーク評価プロバイダ経由で自動的に接続しています"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s経由で接続"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s経由で使用可能"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"接続済み、インターネット接続なし"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"インターネット未接続"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ログインが必要"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"アクセス ポイントが一時的にいっぱいです"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s 経由で接続済み"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s 経由で使用可能"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"とても遅い"</string>
<string name="speed_label_slow" msgid="813109590815810235">"遅い"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index bd88435..b38dcc6 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"ავტომატურად დაკავშირდა %1$s-ის მეშვეობით"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"ავტომატურად დაკავშირდა ქსელის ხარისხის შეფასების პროვაიდერის მეშვეობით"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s-ით დაკავშირებული"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"ხელმისაწვდომია %1$s-ით"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"დაკავშირებულია, ინტერნეტის გარეშე"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ინტერნეტ-კავშირი არ არის"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"აუცილებელია სისტემაში შესვლა"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"წვდომის წერტილი დროებით გადატვირთულია"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s-ით დაკავშირებული"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"ხელმისაწვდომია %1$s-ით"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"ძალიან ნელი"</string>
<string name="speed_label_slow" msgid="813109590815810235">"ნელი"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"კარგი"</string>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index d22b139..54087a0 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s арқылы автоматты қосылды"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Желі рейтингі провайдері арқылы автоматты түрде қосылған"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s арқылы қосылған"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s арқылы қолжетімді"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Қосылған, интернет жоқ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Интернетпен байланыс жоқ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Есептік жазбаға кіру керек"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Кіру нүктесі уақытша бос емес"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s арқылы қосылды"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s арқылы қолжетімді"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Өте баяу"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Баяу"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Жарайды"</string>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index d516db9..3fc609f 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"បានភ្ជាប់ដោយស្វ័យប្រវត្តិតាមរយៈ %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"បានភ្ជាប់ដោយស្វ័យប្រវត្តិតាមរយៈក្រុមហ៊ុនផ្តល់ការវាយតម្លៃលើបណ្តាញ"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"បានភ្ជាប់តាមរយៈ %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"មានតាមរយៈ %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"បានភ្ជាប់ ប៉ុន្តែគ្មានអ៊ីនធឺណិតទេ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"គ្មានអ៊ីនធឺណិតទេ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"តម្រូវឱ្យចូលគណនី"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ចំណុចចូលប្រើពេញជាបណ្តោះអាសន្ន"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"បានភ្ជាប់តាមរយៈ %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"មានតាមរយៈ %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"យឺតណាស់"</string>
<string name="speed_label_slow" msgid="813109590815810235">"យឺត"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"យល់ព្រម"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index 94a711c..bc1150d 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"ನೆಟ್ವರ್ಕ್ ರೇಟಿಂಗ್ ಒದಗಿಸುವವರ ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s ಮೂಲಕ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ಮೂಲಕ ಲಭ್ಯವಿದೆ"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ, ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ಸೈನ್ ಇನ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ಪ್ರವೇಶ ಕೇಂದ್ರ ತಾತ್ಕಾಲಿಕವಾಗಿ ಭರ್ತಿಯಾಗಿದೆ"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s ಮೂಲಕ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s ಮೂಲಕ ಲಭ್ಯವಿದೆ"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"ತುಂಬಾ ನಿಧಾನವಾಗಿದೆ"</string>
<string name="speed_label_slow" msgid="813109590815810235">"ನಿಧಾನ"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ಸರಿ"</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 0b4125f..035c24b 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s을(를) 통해 자동으로 연결됨"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"네트워크 평가 제공업체를 통해 자동으로 연결됨"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s을(를) 통해 연결됨"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s을(를) 통해 사용 가능"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"연결됨, 인터넷 사용 불가"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"인터넷 연결 없음"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"로그인 필요"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"액세스 포인트가 일시적으로 가득 참"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s을(를) 통해 연결됨"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s을(를) 통해 사용 가능"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"매우 느림"</string>
<string name="speed_label_slow" msgid="813109590815810235">"느림"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"보통"</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index 42dc97e..8a68c78 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s аркылуу автоматтык түрдө туташты"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Тармактар рейтингинин автору аркылуу автоматтык түрдө туташты"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s аркылуу жеткиликтүү"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s аркылуу жеткиликтүү"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Туташып турат, Интернет жок"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Интернет жок"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Аккаунтка кирүү талап кылынат"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Байланыш түйүнүнө өтө көп түзмөк туташып турат"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s аркылуу туташты"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s аркылуу иштейт"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Өтө жай"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Жай"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Жарайт"</string>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index 0505a5d..009f44f 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"ເຊື່ອມຕໍ່ຜ່ານທາງ %1$s ໂດຍອັດຕະໂນມັດ"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"ເຊື່ອມຕໍ່ກັບອັດຕະໂນມັດແລ້ວຜ່ານຜູ້ໃຫ້ບໍລິການຄະແນນເຄືອຂ່າຍ"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"ເຊື່ອມຕໍ່ຜ່ານ %1$s ແລ້ວ"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"ມີໃຫ້ຜ່ານ %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ເຊື່ອມຕໍ່ແລ້ວ, ບໍ່ມີອິນເຕີເນັດ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ບໍ່ມີອິນເຕີເນັດ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ຈຳເປັນຕ້ອງເຂົ້າສູ່ລະບົບ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ຈຸດການເຂົ້າເຖິງເຕັມຊົ່ວຄາວ"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"ເຊື່ອມຕໍ່ຜ່ານ %1$s ແລ້ວ"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"ໃຊ້ໄດ້ຜ່ານ %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"ຊ້າຫຼາຍ"</string>
<string name="speed_label_slow" msgid="813109590815810235">"ຊ້າ"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ຕົກລົງ"</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index e1412e7..f08a78b 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatiškai prisijungta naudojant „%1$s“"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatiškai prisijungta naudojant tinklo įvertinimo paslaugos teikėjo paslaugomis"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Prisijungta naudojant „%1$s“"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Pasiekiama naudojant „%1$s“"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Prisijungta, nėra interneto"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nėra interneto ryšio"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Reikia prisijungti"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Prieigos taškas laikinai visiškai užimtas"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Prisijungta naudojant „%1$s“"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Pasiekiama naudojant „%1$s“"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Labai lėtas"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lėtas"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Gerai"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 5082775..c768d11 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automātiski savienots, izmantojot %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automātiski izveidots savienojums, izmantojot tīkla vērtējuma sniedzēju"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Savienots, izmantojot %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Pieejams, izmantojot %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Savienojums izveidots, nav piekļuves internetam"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nav piekļuves internetam"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Nepieciešama pierakstīšanās"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Piekļuves punkts īslaicīgi ir pilns"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Savienojums izveidots, izmantojot %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Pieejams, izmantojot %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Ļoti lēns"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lēns"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Labi"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index 99cf468..85430a6 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Автоматски поврзано преку %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Автоматски поврзано преку оператор за оценување мрежа"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Поврзано преку %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Достапно преку %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Поврзана, нема интернет"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Нема интернет"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Потребно е најавување"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Пристапната точка привремено е преоптоварена"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Поврзано преку %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Достапно преку %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Многу бавна"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Бавна"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Во ред"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index a0222ad..c3438dc 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s വഴി സ്വയമേവ ബന്ധിപ്പിച്ചു"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"നെറ്റ്വർക്ക് റേറ്റിംഗ് ദാതാവുമായി സ്വയം കണക്റ്റുചെയ്തു"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s വഴി ബന്ധിപ്പിച്ചു"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s വഴി ലഭ്യം"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"കണക്റ്റ് ചെയ്തു, ഇന്റർനെറ്റ് ഇല്ല"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ഇന്റർനെറ്റ് ഇല്ല"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"സൈൻ ഇൻ ചെയ്യേണ്ടത് ആവശ്യമാണ്"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ആക്സസ് പോയിന്റ് താൽക്കാലികമായി നിറഞ്ഞിരിക്കുന്നു"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s വഴി ബന്ധിപ്പിച്ചു"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s വഴി ലഭ്യം"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"വളരെ കുറഞ്ഞ വേഗത്തിൽ"</string>
<string name="speed_label_slow" msgid="813109590815810235">"കുറഞ്ഞ വേഗത്തിൽ"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ശരി"</string>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index 5b2acac..7c8aa8b 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s-р автоматаар холбогдсон"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Сүлжээний үнэлгээ үзүүлэгчээр автоматаар холбогдох"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s-р холбогдсон"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s-р боломжтой"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Холбогдсон хэдий ч интернет алга"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Интернэт алга"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Нэвтрэх шаардлагатай"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Хандах цэг түр хугацаанд дүүрсэн байна"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s-р холбогдсон"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s-р боломжтой"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Маш удаан"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Удаан"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ЗА"</string>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 891ada8..3ab2a4b 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s द्वारे स्वयंचलितपणे कनेक्ट केले"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"नेटवर्क रेटिंग प्रदात्याद्वारे स्वयंचलितपणे कनेक्ट केले"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s द्वारे कनेक्ट केले"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s द्वारे उपलब्ध"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"कनेक्ट केले, इंटरनेट नाही"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"इंटरनेट नाही"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"साइन इन करणे आवश्यक आहे"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"अॅक्सेस पॉइंट तात्पुरते भरलेले"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s ने कनेक्ट केले"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s ने उपलब्ध"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"खूप हळू"</string>
<string name="speed_label_slow" msgid="813109590815810235">"हळू"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ठीक आहे"</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 8030c3e..5459b80 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Disambungkan secara automatik melalui %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Disambungkan secara automatik melalui pembekal penilaian rangkaian"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Disambungkan melalui %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Tersedia melalui %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Disambungkan, tiada Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Tiada Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Log masuk diperlukan"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Titik akses penuh buat sementara waktu"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Disambungkan melalui %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Tersedia melalui %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Sangat Perlahan"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Perlahan"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index c5439746..254de2a 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s မှတစ်ဆင့် အလိုအလျောက် ချိတ်ဆက်ထားပါသည်"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"ကွန်ရက်အဆင့်သတ်မှတ်ပေးသူ မှတစ်ဆင့် အလိုအလျောက် ချိတ်ဆက်ထားပါသည်"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s မှတစ်ဆင့် ချိတ်ဆက်ထားသည်"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s မှတစ်ဆင့်ရနိုင်သည်"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ချိတ်ဆက်ထားသည်၊ အင်တာနက်မရှိ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"အင်တာနက် မရှိပါ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"လက်မှတ်ထိုးဝင်ရန် လိုအပ်သည်"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ကွန်ရက်ချိတ်ဆက်မှု ယာယီပြည့်နေသည်"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s မှတစ်ဆင့် ချိတ်ဆက်ထားသည်"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s မှတစ်ဆင့် ရနိုင်သည်"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"အလွန်နှေး"</string>
<string name="speed_label_slow" msgid="813109590815810235">"နှေး"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index c4ad033..5d5568f 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatisk tilkoblet via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatisk tilkoblet via leverandør av nettverksvurdering"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Tilkoblet via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Tilgjengelig via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Tilkoblet – ingen Internett-tilgang"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ingen internettilkobling"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Pålogging kreves"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Tilgangspunktet er midlertidig fullt"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Tilkoblet via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Tilgjengelig via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Veldig treg"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Treg"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Ok"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index f67e05c..f63e9d7 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s मार्फत् स्वतः जडान गरिएको"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"नेटवर्कको दर्जा प्रदायक मार्फत स्वत: जडान गरिएको"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s मार्फत जडित"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s मार्फत उपलब्ध"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"जडान गरियो तर इन्टरनेट छैन"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"इन्टरनेटमाथिको पहुँच छैन"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"साइन इन गर्न आवश्यक छ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"पहुँचसम्बन्धी स्थान अस्थायी रूपमा भरिएको छ"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s मार्फत जडान गरियो"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s मार्फत उपलब्ध"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"धेरै ढिलो"</string>
<string name="speed_label_slow" msgid="813109590815810235">"बिस्तारै"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ठिक छ"</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index d2fd4e24..798dc7c 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatisch verbonden via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatisch verbonden via provider van netwerkbeoordelingen"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Verbonden via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Beschikbaar via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Verbonden, geen internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Geen internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Inloggen vereist"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Toegangspunt tijdelijk vol"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Verbonden via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Beschikbaar via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Zeer langzaam"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Langzaam"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Redelijk"</string>
@@ -144,7 +218,7 @@
<string name="tts_settings_title" msgid="1237820681016639683">"Spraakuitvoer"</string>
<string name="tts_default_rate_title" msgid="6030550998379310088">"Spreeksnelheid"</string>
<string name="tts_default_rate_summary" msgid="4061815292287182801">"Snelheid waarmee de tekst wordt gesproken"</string>
- <string name="tts_default_pitch_title" msgid="6135942113172488671">"Hoogte"</string>
+ <string name="tts_default_pitch_title" msgid="6135942113172488671">"Toonhoogte"</string>
<string name="tts_default_pitch_summary" msgid="1944885882882650009">"Is van invloed op de toon van de synthetisch gegenereerde spraak"</string>
<string name="tts_default_lang_title" msgid="8018087612299820556">"Taal"</string>
<string name="tts_lang_use_system" msgid="2679252467416513208">"Systeemtaal gebruiken"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index bed22a7..9491af3 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s ମାଧ୍ୟମରେ ଅଟୋମେଟିକାଲୀ ସଂଯୁକ୍ତ"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"ନେଟୱର୍କ ମୂଲ୍ୟାୟନ ପ୍ରଦାତାଙ୍କ ମାଧ୍ୟମରେ ଅଟୋମେଟିକାଲ୍ୟ ସଂଯୁକ୍ତ"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s ମାଧ୍ୟମରେ ସଂଯୁକ୍ତ"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ମାଧ୍ୟମରେ ଉପଲବ୍ଧ"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ସଂଯୁକ୍ତ, ଇଣ୍ଟର୍ନେଟ୍ ନାହିଁ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"କୌଣସି ଇଣ୍ଟରନେଟ୍ ନାହିଁ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ସାଇନ୍-ଇନ୍ ଆବଶ୍ୟକ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ଆକ୍ସେସ୍ ପଏଣ୍ଟ ସାମୟିକ ଭାବେ ପୂର୍ଣ୍ଣ"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s ମାଧ୍ୟମରେ ସଂଯୁକ୍ତ"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s ମାଧ୍ୟମରେ ଉପଲବ୍ଧ"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"ବହୁତ ମନ୍ଥର"</string>
<string name="speed_label_slow" msgid="813109590815810235">"କମ୍ ବେଗ"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ଠିକ୍ ଅଛି"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 1c2a947..eadc554 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s ਰਾਹੀਂ ਆਪਣੇ-ਆਪ ਕਨੈਕਟ ਹੋਇਆ"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"ਨੈੱਟਵਰਕ ਰੇਟਿੰਗ ਪ੍ਰਦਾਨਕ ਰਾਹੀਂ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕਨੈਕਟ ਹੋਇਆ"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ਰਾਹੀਂ ਉਪਲਬਧ"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ਕਨੈਕਟ ਕੀਤਾ, ਕੋਈ ਇੰਟਰਨੈੱਟ ਨਹੀਂ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ਇੰਟਰਨੈੱਟ ਨਹੀਂ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ਸਾਈਨ-ਇਨ ਲੋੜੀਂਦਾ ਹੈ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ਐਕਸੈੱਸ ਪੁਆਇੰਟ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਸੰਪੂਰਨ ਰੁਝੇਂਵੇਂ ਵਿੱਚ ਹੈ"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤਾ"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s ਰਾਹੀਂ ਉਪਲਬਧ"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"ਬਹੁਤ ਹੌਲੀ"</string>
<string name="speed_label_slow" msgid="813109590815810235">"ਹੌਲੀ"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ਠੀਕ ਹੈ"</string>
@@ -142,7 +216,7 @@
<string name="launch_defaults_none" msgid="4241129108140034876">"ਕੋਈ ਡਿਫੌਲਟਸ ਸੈਟ ਨਹੀਂ ਕੀਤੇ"</string>
<string name="tts_settings" msgid="8186971894801348327">"ਲਿਖਤ ਤੋਂ ਬੋਲੀ ਸੈਟਿੰਗਾਂ"</string>
<string name="tts_settings_title" msgid="1237820681016639683">"ਲਿਖਤ-ਤੋਂ-ਬੋਲੀ ਆਊਟਪੁੱਟ"</string>
- <string name="tts_default_rate_title" msgid="6030550998379310088">"ਸਪੀਚ ਰੇਟ"</string>
+ <string name="tts_default_rate_title" msgid="6030550998379310088">"ਬੋਲਣ ਦੀ ਗਤੀ"</string>
<string name="tts_default_rate_summary" msgid="4061815292287182801">"ਸਪੀਡ ਜਿਸਤੇ ਟੈਕਸਟ ਬੋਲਿਆ ਜਾਂਦਾ ਹੈ"</string>
<string name="tts_default_pitch_title" msgid="6135942113172488671">"ਪਿਚ"</string>
<string name="tts_default_pitch_summary" msgid="1944885882882650009">"ਬਣਾਵਟੀ ਬੋਲੀ ਦੇ ਲਹਿਜੇ \'ਤੇ ਅਸਰ ਪਾਉਂਦੀ ਹੈ"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 1a0a30d..f94308a 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatycznie połączono przez: %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatycznie połączono przez dostawcę ocen jakości sieci"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Połączono przez %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostępne przez %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Połączono, brak internetu"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Brak internetu"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Musisz się zalogować"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punkt dostępu jest tymczasowo zajęty"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Połączono przez: %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Dostępna przez: %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Bardzo wolna"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Wolna"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 2795d47..f1b043b 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Conectado automaticamente via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Conectado automaticamente via provedor de avaliação de rede"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Conectado via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponível via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conectada, sem Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sem Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"É necessário fazer login"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Ponto de acesso temporariamente cheio"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Conectado via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Disponível via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Muito lenta"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Ok"</string>
@@ -142,9 +216,9 @@
<string name="launch_defaults_none" msgid="4241129108140034876">"Nenhum padrão definido"</string>
<string name="tts_settings" msgid="8186971894801348327">"Configurações da conversão de texto em voz"</string>
<string name="tts_settings_title" msgid="1237820681016639683">"Conversão de texto em voz"</string>
- <string name="tts_default_rate_title" msgid="6030550998379310088">"Taxa de fala"</string>
+ <string name="tts_default_rate_title" msgid="6030550998379310088">"Velocidade da fala"</string>
<string name="tts_default_rate_summary" msgid="4061815292287182801">"Velocidade em que o texto é falado"</string>
- <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tom da fala"</string>
+ <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tom de voz"</string>
<string name="tts_default_pitch_summary" msgid="1944885882882650009">"Afeta o tom da voz sintetizada"</string>
<string name="tts_default_lang_title" msgid="8018087612299820556">"Idioma"</string>
<string name="tts_lang_use_system" msgid="2679252467416513208">"Usar idioma do sistema"</string>
@@ -166,8 +240,8 @@
<string name="tts_engine_settings_button" msgid="1030512042040722285">"Iniciar configurações do mecanismo"</string>
<string name="tts_engine_preference_section_title" msgid="448294500990971413">"Mecanismo preferencial"</string>
<string name="tts_general_section_title" msgid="4402572014604490502">"Gerais"</string>
- <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"Redefinir o tom da fala"</string>
- <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Redefinir o tom no qual o texto é falado para o padrão."</string>
+ <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"Redefinir o tom de voz"</string>
+ <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Redefinir o tom de voz para o padrão."</string>
<string-array name="tts_rate_entries">
<item msgid="6695494874362656215">"Muito devagar"</item>
<item msgid="4795095314303559268">"Devagar"</item>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index fd15210..b0694d1 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Ligado automaticamente através de %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Ligado automaticamente através do fornecedor de classificação de rede"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Ligado através de %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponível através de %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Ligado, sem Internet."</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sem Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"É necessário iniciar sessão"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Ponto de acesso temporariamente cheio"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Ligado através de %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Disponível através de %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Muito lenta"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 2795d47..f1b043b 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Conectado automaticamente via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Conectado automaticamente via provedor de avaliação de rede"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Conectado via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponível via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conectada, sem Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sem Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"É necessário fazer login"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Ponto de acesso temporariamente cheio"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Conectado via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Disponível via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Muito lenta"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Ok"</string>
@@ -142,9 +216,9 @@
<string name="launch_defaults_none" msgid="4241129108140034876">"Nenhum padrão definido"</string>
<string name="tts_settings" msgid="8186971894801348327">"Configurações da conversão de texto em voz"</string>
<string name="tts_settings_title" msgid="1237820681016639683">"Conversão de texto em voz"</string>
- <string name="tts_default_rate_title" msgid="6030550998379310088">"Taxa de fala"</string>
+ <string name="tts_default_rate_title" msgid="6030550998379310088">"Velocidade da fala"</string>
<string name="tts_default_rate_summary" msgid="4061815292287182801">"Velocidade em que o texto é falado"</string>
- <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tom da fala"</string>
+ <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tom de voz"</string>
<string name="tts_default_pitch_summary" msgid="1944885882882650009">"Afeta o tom da voz sintetizada"</string>
<string name="tts_default_lang_title" msgid="8018087612299820556">"Idioma"</string>
<string name="tts_lang_use_system" msgid="2679252467416513208">"Usar idioma do sistema"</string>
@@ -166,8 +240,8 @@
<string name="tts_engine_settings_button" msgid="1030512042040722285">"Iniciar configurações do mecanismo"</string>
<string name="tts_engine_preference_section_title" msgid="448294500990971413">"Mecanismo preferencial"</string>
<string name="tts_general_section_title" msgid="4402572014604490502">"Gerais"</string>
- <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"Redefinir o tom da fala"</string>
- <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Redefinir o tom no qual o texto é falado para o padrão."</string>
+ <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"Redefinir o tom de voz"</string>
+ <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Redefinir o tom de voz para o padrão."</string>
<string-array name="tts_rate_entries">
<item msgid="6695494874362656215">"Muito devagar"</item>
<item msgid="4795095314303559268">"Devagar"</item>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index ecdd003..032fceb 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Conectată automat prin %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Conectată automat prin furnizor de evaluări ale rețelei"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Conectată prin %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponibilă prin %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conectată, fără internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Fără conexiune la internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Trebuie să vă conectați"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punctul de acces este temporar plin"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Conectată prin %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Disponibilă prin %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Foarte lentă"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Lentă"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Bine"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 74075c5..a280285 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Автоматически подключено к %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Автоматически подключено через автора рейтинга сетей"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Подключено к %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Доступно через %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Подключено, без доступа к Интернету"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Нет подключения к Интернету"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Требуется выполнить вход."</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"К точке доступа подключено слишком много устройств"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Подключено к %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Доступно через %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Очень медленная"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Медленная"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ОК"</string>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index fc90db5..c143c76 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s හරහා ස්වයංක්රියව සම්බන්ධ විය"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"ජාල ශ්රේණිගත සපයන්නා හරහා ස්වයංක්රියව සම්බන්ධ විය"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s හරහා සම්බන්ධ විය"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s හරහා ලබා ගැනීමට හැකිය"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"සම්බන්ධයි, අන්තර්ජාලය නැත"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"අන්තර්ජාලය නැත"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"පිරීම අවශ්යයි"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ප්රවේශ ලක්ෂ්ය තාවකාලිකව පිරී ඇත"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s හරහා සම්බන්ධ විය"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s හරහා ලබා ගැනීමට හැකිය"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"ඉතා මන්දගාමී"</string>
<string name="speed_label_slow" msgid="813109590815810235">"මන්දගාමී"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"හරි"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index ed51f55..b41d5d3 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automaticky pripojené prostredníctvom %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automaticky pripojené prostredníctvom poskytovateľa hodnotenia siete"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Pripojené prostredníctvom %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"K dispozícii prostredníctvom %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Pripojené, žiadny internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Žiadny internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Vyžaduje sa prihlásenie"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Prístupový bod je dočasne plný"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Pripojené prostredníctvom operátora %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"K dispozícii prostredníctvom operátora %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Veľmi nízka"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Nízka"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index ad47f75..298acb9 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Samodejno vzpostavljena povezava prek: %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Samodejno vzpostavljena povezava prek ponudnika ocenjevanja omrežij"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Vzpostavljena povezava prek: %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Na voljo prek: %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Vzpostavljena povezava, brez interneta"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Brez internetne povezave"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Zahtevana je prijava"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Dostopna točka je trenutno zasedena"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Vzpostavljena povezava prek: %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Na voljo prek: %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Zelo počasna"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Počasna"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"V redu"</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index f8f491b..569b4d9 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Lidhur automatikisht përmes %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Lidhur automatikisht nëpërmjet ofruesit të vlerësimit të rrjetit"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"E lidhur përmes %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"E mundshme përmes %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"U lidh, por nuk ka internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nuk ka internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Kërkohet identifikimi"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pika e qasjes është përkohësisht plot"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"E lidhur përmes %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"E disponueshme përmes %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Shumë e ulët"</string>
<string name="speed_label_slow" msgid="813109590815810235">"E ngadaltë"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Në rregull"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index 3fe40f9..bf5e311 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Аутоматски повезано преко %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Аутоматски повезано преко добављача оцене мреже"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Веза је успостављена преко приступне тачке %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Доступна је преко приступне тачке %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Веза је успостављена, нема интернета"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Нема интернета"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Треба да се пријавите"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Приступна тачка је привремено заузета"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Повезано преко %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Доступно преко %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Веома спора"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Спора"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Потврди"</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 186395e..6e004df 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Automatiskt ansluten via %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Automatiskt ansluten via leverantör av nätverksbetyg"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Anslutet via %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Tillgängligt via %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Ansluten, inget internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Inget internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Inloggning krävs"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Åtkomstpunkten har inga platser över för tillfället"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Anslutet via %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Tillgängligt via %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Mycket långsam"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Långsam"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Okej"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 03e0c3a..bf03476 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Imeunganishwa kiotomatiki kupitia %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Imeunganishwa kiotomatiki kupitia mtoa huduma wa ukadiriaji wa mtandao"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Imeunganishwa kupitia %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Inapatikana kupitia %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Imeunganishwa, hakuna intaneti"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Hakuna intaneti"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Unahitaji kuingia katika akaunti"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Lango la mtandao lina shughuli nyingi kwa sasa"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Imeunganishwa kupitia %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Inapatikana kupitia %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Polepole Sana"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Polepole"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Sawa"</string>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 0efd285..58e5967 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s மூலம் தானாக இணைக்கப்பட்டது"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"நெட்வொர்க் மதிப்பீடு வழங்குநரால் தானாக இணைக்கப்பட்டது"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s வழியாக இணைக்கப்பட்டது"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s வழியாகக் கிடைக்கிறது"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"இணைக்கப்பட்டுள்ளது, ஆனால் இண்டர்நெட் இல்லை"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"இணைய இணைப்பு இல்லை"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"உள்நுழைய வேண்டும்"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"தற்காலிகமாக அணுகல் புள்ளி நிரம்பியுள்ளது"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s வழியாக இணைக்கப்பட்டது"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s வழியாகக் கிடைக்கிறது"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"மிகவும் வேகம் குறைவானது"</string>
<string name="speed_label_slow" msgid="813109590815810235">"வேகம் குறைவு"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"சரி"</string>
diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml
index ddb40ce..5d79065 100644
--- a/packages/SettingsLib/res/values-te/arrays.xml
+++ b/packages/SettingsLib/res/values-te/arrays.xml
@@ -173,7 +173,7 @@
<item msgid="2850427388488887328">"కెర్నెల్ మాత్రమే"</item>
</string-array>
<string-array name="select_logpersist_summaries">
- <item msgid="2216470072500521830">"ఆఫ్ చేయి"</item>
+ <item msgid="2216470072500521830">"ఆఫ్"</item>
<item msgid="172978079776521897">"అన్ని లాగ్ బఫర్లు"</item>
<item msgid="3873873912383879240">"అన్నీ కానీ రేడియో లాగ్ బఫర్లు"</item>
<item msgid="8489661142527693381">"కెర్నెల్ లాగ్ బఫర్ మాత్రమే"</item>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index 2caa2ef..9d1b23e 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s ద్వారా స్వయంచాలకంగా కనెక్ట్ చేయబడింది"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"నెట్వర్క్ రేటింగ్ ప్రదాత ద్వారా స్వయంచాలకంగా కనెక్ట్ చేయబడింది"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s ద్వారా కనెక్ట్ చేయబడింది"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ద్వారా అందుబాటులో ఉంది"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"కనెక్ట్ చేయబడింది, ఇంటర్నెట్ లేదు"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ఇంటర్నెట్ లేదు"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"సైన్ ఇన్ చేయాలి"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"యాక్సెస్ పాయింట్ తాత్కాలికంగా నిండుకుంది"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s ద్వారా కనెక్ట్ చేయబడింది"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s ద్వారా అందుబాటులో ఉంది"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"చాలా నెమ్మది"</string>
<string name="speed_label_slow" msgid="813109590815810235">"నెమ్మది"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"సరే"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 03bf354..ddd9aae 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"เชื่อมต่ออัตโนมัติผ่าน %1$s แล้ว"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"เชื่อมต่ออัตโนมัติผ่านผู้ให้บริการการจัดอันดับเครือข่าย"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"เชื่อมต่อผ่าน %1$s แล้ว"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"พร้อมใช้งานผ่านทาง %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"เชื่อมต่อแล้ว ไม่พบอินเทอร์เน็ต"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ไม่มีอินเทอร์เน็ต"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ต้องลงชื่อเข้าใช้"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"จุดเข้าใช้งานเต็มชั่วคราว"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"เชื่อมต่อผ่าน %1$s แล้ว"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"พร้อมใช้งานผ่านทาง %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"ช้ามาก"</string>
<string name="speed_label_slow" msgid="813109590815810235">"ช้า"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ตกลง"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 3f5cca2..6445480 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Awtomatikong nakakonekta sa pamamagitan ng %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Awtomatikong nakakonekta sa pamamagitan ng provider ng rating ng network"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Nakakonekta sa pamamagitan ng %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Available sa pamamagitan ng %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Nakakonekta, walang internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Walang internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Kinakailangang mag-sign in"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pansamantalang puno ang access point"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Nakakonekta sa pamamagitan ng %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Available sa pamamagitan ng %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Napakabagal"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Mabagal"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index b0a782a..c3a3ff2 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s üzerinden otomatik olarak bağlı"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Ağ derecelendirme sağlayıcı aracılığıyla otomatik olarak bağlandı"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s üzerinden bağlı"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s üzerinden kullanılabilir"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Bağlı, internet yok"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"İnternet yok"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Oturum açılması gerekiyor"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Erişim noktası geçici olarak dolu"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s üzerinden bağlı"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s üzerinden kullanılabilir"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Çok Yavaş"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Yavaş"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Tamam"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index 2b63573..a28dc18 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Автоматично під’єднано через %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Автоматично під’єднано через постачальника оцінки якості мережі"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Під’єднано через %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Доступ через %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Під’єднано, але немає доступу до Інтернету"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Немає Інтернету"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Потрібно ввійти в обліковий запис"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Точка доступу тимчасово переповнена"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Під’єднано через мережу %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Доступ через мережу %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Дуже повільна"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Повільна"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ОК"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index d7123a6..397f4b2 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s کے ذریعے از خود منسلک کردہ"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"نیٹ ورک درجہ بندی کے فراہم کنندہ کے ذریعے از خود منسلک"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"منسلک بذریعہ %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"دستیاب بذریعہ %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"منسلک، انٹرنیٹ نہیں ہے"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"انٹرنیٹ نہیں ہے"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"سائن ان درکار ہے"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"رسائی پوائنٹ عارضی طور پر فُل ہے"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"منسلک بذریعہ %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"دستیاب بذریعہ %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"بہت سست"</string>
<string name="speed_label_slow" msgid="813109590815810235">"سست"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"ٹھیک ہے"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 51156d7..5f214ce 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s orqali avtomatik ulandi"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Tarmoqlar reytingi muallifi orqali avtomatik ulandi"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s orqali ulangan"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s orqali ishlaydi"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Ulangan, lekin internet aloqasi yo‘q"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Internet yo‘q"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Hisob bilan kirish zarur"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Internet kirish nuqtasi vaqtinchalik to‘lgan"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s orqali ulangan"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s orqali ishlaydi"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Juda sekin"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Sekin"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 13a9322..e019953 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Tự động được kết nối qua %1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Tự động được kết nối qua nhà cung cấp dịch vụ xếp hạng mạng"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Được kết nối qua %1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Có sẵn qua %1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Đã kết nối, không có Internet"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Không có Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Yêu cầu đăng nhập"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Điểm truy cập tạm thời đã đạt đến giới hạn số lượng thiết bị truy cập."</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Được kết nối qua %1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Có sẵn qua %1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Rất chậm"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Chậm"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"Khá tốt"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 866c143..fd0d36e 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"已通过%1$s自动连接"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"已自动连接(通过网络评分服务提供方)"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"已通过%1$s连接"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"可通过%1$s连接"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"已连接,但无法访问互联网"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"无法访问互联网"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"必须登录"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"接入点暂时满载"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"已通过%1$s连接"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"可通过%1$s连接"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"很慢"</string>
<string name="speed_label_slow" msgid="813109590815810235">"慢"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"良好"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index f63ba3a..024299b 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"已透過 %1$s 自動連線"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"已透過網絡評分供應商自動連線"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"已透過 %1$s 連線"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"可透過 %1$s 連線"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"已連線,但沒有互聯網"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"沒有互聯網連線"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"必須登入"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"存取點暫時已滿"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"已透過 %1$s 連線"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"可透過 %1$s 連線"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"非常慢"</string>
<string name="speed_label_slow" msgid="813109590815810235">"慢"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"良好"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 93592a79..146ffac 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"已透過 %1$s 自動連線"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"已透過網路評分供應商自動連線"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"已透過 %1$s 連線"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"可透過 %1$s 使用"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"已連線,沒有網際網路"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"沒有網際網路連線"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"必須登入"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"存取點暫時滿載"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"已透過 %1$s 連線"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"可透過 %1$s 使用"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"非常慢"</string>
<string name="speed_label_slow" msgid="813109590815810235">"慢"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"確定"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index dd2f3d8..fc7b9b4 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -38,13 +38,87 @@
<string name="connected_via_network_scorer" msgid="5713793306870815341">"Ixhumeke ngokuzenzakalela nge-%1$s"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"Kuxhunywe ngokuzenzakalelayo ngomhlinzeki wesilinganiso wenethiwekhi"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"Kuxhumeke nge-%1$s"</string>
+ <!-- no translation found for ssid_by_passpoint_provider (7898171424140673315) -->
+ <skip />
<string name="available_via_passpoint" msgid="1617440946846329613">"Iyatholakala nge-%1$s"</string>
+ <!-- no translation found for tap_to_set_up (2468970825530423314) -->
+ <skip />
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Kuxhunyiwe, ayikho i-inthanethi"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ayikho i-inthanethi"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Ukungena ngemvume kuyadingeka"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Iphoyinti lokufinyelela ligcwele okwesikhashana"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"Kuxhumeke nge-%1$s"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"Iyatholakala nge-%1$s"</string>
+ <!-- no translation found for osu_failure_ap_connection (598977488344424542) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_url_invalid (2237477219243136714) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_connection (8192988165059982174) -->
+ <skip />
+ <!-- no translation found for osu_failure_server_validation (4631649978129606823) -->
+ <skip />
+ <!-- no translation found for osu_failure_service_provider_verification (4854091521439785597) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_aborted (424627208135320329) -->
+ <skip />
+ <!-- no translation found for osu_failure_provisioning_not_available (3021783729256985432) -->
+ <skip />
+ <!-- no translation found for osu_failure_invalid_server_url (8548886196179435758) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_command_type (8245921319866603904) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_type (2255897608510053065) -->
+ <skip />
+ <!-- no translation found for osu_failure_soap_message_exchange (4357358438685987192) -->
+ <skip />
+ <!-- no translation found for osu_failure_start_redirect_listener (4292769407279548482) -->
+ <skip />
+ <!-- no translation found for osu_failure_timed_out_redirect_listener (3168657820278807508) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_osu_activity_found (4593038891437878675) -->
+ <skip />
+ <!-- no translation found for osu_failure_unexpected_soap_message_status (6568467710235256675) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_pps_mo (850567403039076835) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_server_trust_root_node (8961455873459838456) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_remediation_server_trust_root_node (5041179688081545244) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_policy_server_trust_root_node (6617290380940513539) -->
+ <skip />
+ <!-- no translation found for osu_failure_retrieve_trust_root_certificates (1499136256195528265) -->
+ <skip />
+ <!-- no translation found for osu_failure_no_aaa_trust_root_certificate (1904322497042226984) -->
+ <skip />
+ <!-- no translation found for osu_failure_add_passpoint_configuration (2173557755811446047) -->
+ <skip />
+ <!-- no translation found for osu_failure_osu_provider_not_found (6616172862116673082) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connecting (5296821043003441437) -->
+ <skip />
+ <!-- no translation found for osu_status_ap_connected (3777289375683170728) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connecting (8499785407540355867) -->
+ <skip />
+ <!-- no translation found for osu_status_server_validated (3158727184762596355) -->
+ <skip />
+ <!-- no translation found for osu_status_server_connected (8382024481520158168) -->
+ <skip />
+ <!-- no translation found for osu_status_init_soap_exchange (8628063888912101981) -->
+ <skip />
+ <!-- no translation found for osu_status_waiting_for_redirect_response (2343016207837053197) -->
+ <skip />
+ <!-- no translation found for osu_status_redirect_response_received (5323368411922609405) -->
+ <skip />
+ <!-- no translation found for osu_status_second_soap_exchange (7115332266758483909) -->
+ <skip />
+ <!-- no translation found for osu_status_third_soap_exchange (8460901783597440766) -->
+ <skip />
+ <!-- no translation found for osu_status_retrieving_trust_root_certs (1563445892926269689) -->
+ <skip />
+ <!-- no translation found for osu_provisioning_complete (5120178802493970149) -->
+ <skip />
<string name="speed_label_very_slow" msgid="1867055264243608530">"Phansi kakhulu"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Phansi"</string>
<string name="speed_label_okay" msgid="2331665440671174858">"KULUNGILE"</string>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 03c6205..16bfcc9 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -99,8 +99,12 @@
<string name="connected_via_network_scorer_default">Automatically connected via network rating provider</string>
<!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
<string name="connected_via_passpoint">Connected via %1$s</string>
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <string name="ssid_by_passpoint_provider"><xliff:g id="ssid" example="Cafe Wifi">%1$s</xliff:g> by <xliff:g id="passpointProvider" example="Passpoint Provider">%2$s</xliff:g></string>
<!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
<string name="available_via_passpoint">Available via %1$s</string>
+ <!-- Status message of OSU Provider network when not connected. [CHAR LIMIT=NONE] -->
+ <string name="tap_to_set_up">Tap to set up</string>
<!-- Package name for Settings app-->
<string name="settings_package" translatable="false">com.android.settings</string>
<!-- Package name for Certinstaller app-->
@@ -123,6 +127,79 @@
<!-- Status message of Wi-Fi when an available network is a carrier network. [CHAR LIMIT=NONE] -->
<string name="available_via_carrier">Available via %1$s</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_AP_CONNECTION. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_ap_connection">Connection failed</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_SERVER_URL_INVALID. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_server_url_invalid">Invalid OSU server URL</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_SERVER_CONNECTION. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_server_connection">OSU server connection failed</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_SERVER_VALIDATION. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_server_validation">OSU server validation failed</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_SERVICE_PROVIDER_VERIFICATION. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_service_provider_verification">Invalid OSU server certificate</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_PROVISIONING_ABORTED. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_provisioning_aborted">Provisioning aborted</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_PROVISIONING_NOT_AVAILABLE. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_provisioning_not_available">Provisioning not available</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_INVALID_SERVER_URL. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_invalid_server_url">Invalid OSU server URL</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_UNEXPECTED_COMMAND_TYPE. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_unexpected_command_type">Unexpected command type</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_TYPE. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_unexpected_soap_message_type">Unexpected SOAP message type</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_SOAP_MESSAGE_EXCHANGE. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_soap_message_exchange">SOAP message exchange failed</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_START_REDIRECT_LISTENER. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_start_redirect_listener">Redirect listener failed to start</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_TIMED_OUT_REDIRECT_LISTENER. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_timed_out_redirect_listener">Timed out waiting for redirect</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_OSU_ACTIVITY_FOUND. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_no_osu_activity_found">No OSU activity found</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_STATUS. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_unexpected_soap_message_status">Unexpected SOAP message status</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_PPS_MO. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_no_pps_mo">Failed to find PPS-MO</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_AAA_SERVER_TRUST_ROOT_NODE. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_no_aaa_server_trust_root_node">Failed to find trust root node for AAA server</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_REMEDIATION_SERVER_TRUST_ROOT_NODE. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_no_remediation_server_trust_root_node">Failed to find trust root node for remediation server</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_POLICY_SERVER_TRUST_ROOT_NODE. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_no_policy_server_trust_root_node">Failed to find trust root node for policy server</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_RETRIEVE_TRUST_ROOT_CERTIFICATES. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_retrieve_trust_root_certificates">Failed to retrieve trust root certificates</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_AAA_TRUST_ROOT_CERTIFICATE. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_no_aaa_trust_root_certificate">Failed to find trust root certificate for AAA server</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_ADD_PASSPOINT_CONFIGURATION. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_add_passpoint_configuration">Failed to add PassPoint configuration</string>
+ <!-- Status message of OSU Provider on receiving OSU_FAILURE_OSU_PROVIDER_NOT_FOUND. [CHAR LIMIT=NONE] -->
+ <string name="osu_failure_osu_provider_not_found">Failed to find an OSU provider</string>
+
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_AP_CONNECTING. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_ap_connecting">Connecting</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_AP_CONNECTED. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_ap_connected">Connected</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_SERVER_CONNECTING. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_server_connecting">Connecting to OSU server</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_SERVER_VALIDATED. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_server_validated">OSU server validated</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_SERVER_CONNECTED. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_server_connected">Connected to OSU server</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_INIT_SOAP_EXCHANGE. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_init_soap_exchange">Initial SOAP exchange</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_WAITING_FOR_REDIRECT_RESPONSE. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_waiting_for_redirect_response">Waiting for redirect response</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_REDIRECT_RESPONSE_RECEIVED. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_redirect_response_received">Received redirect response</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_SECOND_SOAP_EXCHANGE. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_second_soap_exchange">Second SOAP exchange</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_THIRD_SOAP_EXCHANGE. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_third_soap_exchange">Third SOAP exchange</string>
+ <!-- Status message of OSU Provider on receiving OSU_STATUS_RETRIEVING_TRUST_ROOT_CERTS. [CHAR LIMIT=NONE] -->
+ <string name="osu_status_retrieving_trust_root_certs">Retrieving trust root certificates</string>
+
+ <!-- Status message of OSU Provider on completing provisioning. [CHAR LIMIT=NONE] -->
+ <string name="osu_provisioning_complete">Provisioning complete</string>
+
<!-- Speed label for very slow network speed -->
<string name="speed_label_very_slow">Very Slow</string>
<!-- Speed label for slow network speed -->
diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java
index 595aeb3..c751c39 100644
--- a/packages/SettingsLib/src/com/android/settingslib/Utils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java
@@ -38,8 +38,8 @@
private static final String CURRENT_MODE_KEY = "CURRENT_MODE";
private static final String NEW_MODE_KEY = "NEW_MODE";
@VisibleForTesting
- static final String STORAGE_MANAGER_SHOW_OPT_IN_PROPERTY =
- "ro.storage_manager.show_opt_in";
+ static final String STORAGE_MANAGER_ENABLED_PROPERTY =
+ "ro.storage_manager.enabled";
private static Signature[] sSystemSignature;
private static String sPermissionControllerPackageName;
@@ -373,8 +373,7 @@
public static boolean isStorageManagerEnabled(Context context) {
boolean isDefaultOn;
try {
- // Turn off by default if the opt-in was shown.
- isDefaultOn = !SystemProperties.getBoolean(STORAGE_MANAGER_SHOW_OPT_IN_PROPERTY, true);
+ isDefaultOn = SystemProperties.getBoolean(STORAGE_MANAGER_ENABLED_PROPERTY, false);
} catch (Resources.NotFoundException e) {
isDefaultOn = false;
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java
index aed02a2..8090169 100644
--- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java
+++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java
@@ -41,10 +41,6 @@
private int mSourceMetricsCategory = MetricsProto.MetricsEvent.VIEW_UNKNOWN;
private long mVisibleTimestamp;
- private VisibilityLoggerMixin() {
- mMetricsCategory = METRICS_CATEGORY_UNKNOWN;
- }
-
public VisibilityLoggerMixin(int metricsCategory, MetricsFeatureProvider metricsFeature) {
mMetricsCategory = metricsCategory;
mMetricsFeature = metricsFeature;
@@ -81,12 +77,4 @@
MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY,
MetricsProto.MetricsEvent.VIEW_UNKNOWN);
}
-
- /** Returns elapsed time since onResume() */
- public long elapsedTimeSinceVisible() {
- if (mVisibleTimestamp == 0) {
- return 0;
- }
- return SystemClock.elapsedRealtime() - mVisibleTimestamp;
- }
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java
index 12b8efb..4ab9a9a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java
@@ -55,6 +55,12 @@
"com.android.settings.category.ia.privacy";
public static final String CATEGORY_ENTERPRISE_PRIVACY =
"com.android.settings.category.ia.enterprise_privacy";
+ public static final String CATEGORY_ABOUT_LEGAL =
+ "com.android.settings.category.ia.about_legal";
+ public static final String CATEGORY_MY_DEVICE_INFO =
+ "com.android.settings.category.ia.my_device_info";
+ public static final String CATEGORY_BATTERY_SAVER_SETTINGS =
+ "com.android.settings.category.ia.battery_saver_settings";
public static final Map<String, String> KEY_COMPAT_MAP;
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java
index 180b77e..8cb252e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java
@@ -66,6 +66,7 @@
private INetworkStatsSession mSession;
private Callback mCallback;
private NetworkNameProvider mNetworkController;
+ private int mSubscriptionId;
public DataUsageController(Context context) {
mContext = context;
@@ -75,6 +76,7 @@
ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
mPolicyManager = NetworkPolicyManager.from(mContext);
mNetworkStatsManager = context.getSystemService(NetworkStatsManager.class);
+ mSubscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
}
public void setNetworkController(NetworkNameProvider networkController) {
@@ -82,6 +84,15 @@
}
/**
+ * By default this class will just get data usage information for the default data subscription,
+ * but this method can be called to require it to use an explicit subscription id which may be
+ * different from the default one (this is useful for the case of multi-SIM devices).
+ */
+ public void setSubscriptionId(int subscriptionId) {
+ mSubscriptionId = subscriptionId;
+ }
+
+ /**
* Returns the default warning level in bytes.
*/
public long getDefaultWarningLevel() {
@@ -99,7 +110,7 @@
}
public DataUsageInfo getDataUsageInfo() {
- final String subscriberId = getActiveSubscriberId(mContext);
+ final String subscriberId = getActiveSubscriberId();
if (subscriberId == null) {
return warn("no subscriber id");
}
@@ -164,7 +175,8 @@
private long getUsageLevel(NetworkTemplate template, long start, long end) {
try {
final Bucket bucket = mNetworkStatsManager.querySummaryForDevice(
- getNetworkType(template), getActiveSubscriberId(mContext), start, end);
+ getNetworkType(template), getActiveSubscriberId(),
+ start, end);
if (bucket != null) {
return bucket.getRxBytes() + bucket.getTxBytes();
}
@@ -237,10 +249,13 @@
}
}
- private static String getActiveSubscriberId(Context context) {
- final TelephonyManager tele = TelephonyManager.from(context);
- final String actualSubscriberId = tele.getSubscriberId(
- SubscriptionManager.getDefaultDataSubscriptionId());
+ private String getActiveSubscriberId() {
+ final TelephonyManager tele = TelephonyManager.from(mContext);
+ int subscriptionId = mSubscriptionId;
+ if (subscriptionId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ subscriptionId = SubscriptionManager.getDefaultDataSubscriptionId();
+ }
+ final String actualSubscriberId = tele.getSubscriberId(subscriptionId);
return actualSubscriberId;
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index af5a24f..27dc628 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -41,7 +41,9 @@
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiNetworkScoreCache;
+import android.net.wifi.hotspot2.OsuProvider;
import android.net.wifi.hotspot2.PasspointConfiguration;
+import android.net.wifi.hotspot2.ProvisioningCallback;
import android.os.Bundle;
import android.os.Parcelable;
import android.os.RemoteException;
@@ -182,6 +184,10 @@
public static final int UNREACHABLE_RSSI = Integer.MIN_VALUE;
+ public static final String KEY_PREFIX_AP = "AP:";
+ public static final String KEY_PREFIX_FQDN = "FQDN:";
+ public static final String KEY_PREFIX_OSU = "OSU:";
+
private final Context mContext;
private String ssid;
@@ -204,9 +210,6 @@
@Speed private int mSpeed = Speed.NONE;
private boolean mIsScoredNetworkMetered = false;
- // used to co-relate internal vs returned accesspoint.
- int mId;
-
/**
* Information associated with the {@link PasspointConfiguration}. Only maintaining
* the relevant info to preserve spaces.
@@ -215,6 +218,13 @@
private String mProviderFriendlyName;
private boolean mIsCarrierAp = false;
+
+ private OsuProvider mOsuProvider;
+
+ private String mOsuStatus;
+ private String mOsuFailure;
+ private boolean mOsuProvisioningComplete = false;
+
/**
* The EAP type {@link WifiEnterpriseConfig.Eap} associated with this AP if it is a carrier AP.
*/
@@ -280,14 +290,18 @@
// Calculate required fields
updateKey();
updateRssi();
-
- mId = sLastId.incrementAndGet();
}
+ /**
+ * Creates an AccessPoint with only a WifiConfiguration. This is used for the saved networks
+ * page.
+ *
+ * Passpoint Credential AccessPoints should be created with this.
+ * Make sure to call setScanResults after constructing with this.
+ */
public AccessPoint(Context context, WifiConfiguration config) {
mContext = context;
loadConfig(config);
- mId = sLastId.incrementAndGet();
}
/**
@@ -298,7 +312,17 @@
mContext = context;
mFqdn = config.getHomeSp().getFqdn();
mProviderFriendlyName = config.getHomeSp().getFriendlyName();
- mId = sLastId.incrementAndGet();
+ }
+
+ /**
+ * Initialize an AccessPoint object for a Passpoint OSU Provider.
+ * Make sure to call setScanResults after constructing with this.
+ */
+ public AccessPoint(Context context, OsuProvider provider) {
+ mContext = context;
+ mOsuProvider = provider;
+ ssid = provider.getFriendlyName();
+ updateKey();
}
AccessPoint(Context context, Collection<ScanResult> results) {
@@ -324,8 +348,6 @@
mIsCarrierAp = firstResult.isCarrierAp;
mCarrierApEapType = firstResult.carrierApEapType;
mCarrierName = firstResult.carrierName;
-
- mId = sLastId.incrementAndGet();
}
@VisibleForTesting void loadConfig(WifiConfiguration config) {
@@ -340,19 +362,13 @@
/** Updates {@link #mKey} and should only called upon object creation/initialization. */
private void updateKey() {
// TODO(sghuman): Consolidate Key logic on ScanResultMatchInfo
-
- StringBuilder builder = new StringBuilder();
-
if (isPasspoint()) {
- builder.append(mConfig.FQDN);
- } else if (TextUtils.isEmpty(getSsidStr())) {
- builder.append(getBssid());
- } else {
- builder.append(getSsidStr());
+ mKey = getKey(mConfig);
+ } else if (isOsuProvider()) {
+ mKey = getKey(mOsuProvider);
+ } else { // Non-Passpoint AP
+ mKey = getKey(getSsidStr(), getBssid(), getSecurity());
}
-
- builder.append(',').append(getSecurity());
- mKey = builder.toString();
}
/**
@@ -396,8 +412,8 @@
return difference;
}
- // Sort by ssid.
- difference = getSsidStr().compareToIgnoreCase(other.getSsidStr());
+ // Sort by title.
+ difference = getTitle().compareToIgnoreCase(other.getTitle());
if (difference != 0) {
return difference;
}
@@ -593,30 +609,46 @@
}
public static String getKey(ScanResult result) {
- StringBuilder builder = new StringBuilder();
-
- if (TextUtils.isEmpty(result.SSID)) {
- builder.append(result.BSSID);
- } else {
- builder.append(result.SSID);
- }
-
- builder.append(',').append(getSecurity(result));
- return builder.toString();
+ return getKey(result.SSID, result.BSSID, getSecurity(result));
}
+ /**
+ * Returns the AccessPoint key for a WifiConfiguration.
+ * This will return a special Passpoint key if the config is for Passpoint.
+ */
public static String getKey(WifiConfiguration config) {
- StringBuilder builder = new StringBuilder();
-
if (config.isPasspoint()) {
- builder.append(config.FQDN);
- } else if (TextUtils.isEmpty(config.SSID)) {
- builder.append(config.BSSID);
+ return new StringBuilder()
+ .append(KEY_PREFIX_FQDN)
+ .append(config.FQDN).toString();
} else {
- builder.append(removeDoubleQuotes(config.SSID));
+ return getKey(config.SSID, config.BSSID, getSecurity(config));
}
+ }
- builder.append(',').append(getSecurity(config));
+ /**
+ * Returns the AccessPoint key corresponding to the OsuProvider.
+ */
+ public static String getKey(OsuProvider provider) {
+ return new StringBuilder()
+ .append(KEY_PREFIX_OSU)
+ .append(provider.getFriendlyName())
+ .append(',')
+ .append(provider.getServerUri()).toString();
+ }
+
+ /**
+ * Returns the AccessPoint key for a normal non-Passpoint network by ssid/bssid and security.
+ */
+ private static String getKey(String ssid, String bssid, int security) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(KEY_PREFIX_AP);
+ if (TextUtils.isEmpty(ssid)) {
+ builder.append(bssid);
+ } else {
+ builder.append(ssid);
+ }
+ builder.append(',').append(security);
return builder.toString();
}
@@ -839,91 +871,105 @@
public String getTitle() {
if (isPasspoint()) {
return mConfig.providerFriendlyName;
+ } else if (isOsuProvider()) {
+ return mOsuProvider.getFriendlyName();
} else {
return getSsidStr();
}
}
public String getSummary() {
- return getSettingsSummary(mConfig);
+ return getSettingsSummary();
}
public String getSettingsSummary() {
- return getSettingsSummary(mConfig);
- }
-
- private String getSettingsSummary(WifiConfiguration config) {
// Update to new summary
StringBuilder summary = new StringBuilder();
- if (isActive() && config != null && config.isPasspoint()) {
- // This is the active connection on passpoint
- summary.append(getSummary(mContext, getDetailedState(),
- false, config.providerFriendlyName));
- } else if (isActive() && config != null && getDetailedState() == DetailedState.CONNECTED
- && mIsCarrierAp) {
- summary.append(String.format(mContext.getString(R.string.connected_via_carrier), mCarrierName));
- } else if (isActive()) {
- // This is the active connection on non-passpoint network
- summary.append(getSummary(mContext, getDetailedState(),
- mInfo != null && mInfo.isEphemeral()));
- } else if (config != null && config.isPasspoint()
- && config.getNetworkSelectionStatus().isNetworkEnabled()) {
- String format = mContext.getString(R.string.available_via_passpoint);
- summary.append(String.format(format, config.providerFriendlyName));
- } else if (config != null && config.hasNoInternetAccess()) {
- int messageID = config.getNetworkSelectionStatus().isNetworkPermanentlyDisabled()
- ? R.string.wifi_no_internet_no_reconnect
- : R.string.wifi_no_internet;
- summary.append(mContext.getString(messageID));
- } else if (config != null && !config.getNetworkSelectionStatus().isNetworkEnabled()) {
- WifiConfiguration.NetworkSelectionStatus networkStatus =
- config.getNetworkSelectionStatus();
- switch (networkStatus.getNetworkSelectionDisableReason()) {
- case WifiConfiguration.NetworkSelectionStatus.DISABLED_AUTHENTICATION_FAILURE:
- summary.append(mContext.getString(R.string.wifi_disabled_password_failure));
- break;
- case WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD:
- summary.append(mContext.getString(R.string.wifi_check_password_try_again));
- break;
- case WifiConfiguration.NetworkSelectionStatus.DISABLED_DHCP_FAILURE:
- case WifiConfiguration.NetworkSelectionStatus.DISABLED_DNS_FAILURE:
- summary.append(mContext.getString(R.string.wifi_disabled_network_failure));
- break;
- case WifiConfiguration.NetworkSelectionStatus.DISABLED_ASSOCIATION_REJECTION:
- summary.append(mContext.getString(R.string.wifi_disabled_generic));
- break;
+ if (isOsuProvider()) {
+ if (mOsuProvisioningComplete) {
+ summary.append(mContext.getString(R.string.osu_provisioning_complete));
+ } else if (mOsuFailure != null) {
+ summary.append(mOsuFailure);
+ } else if (mOsuStatus != null) {
+ summary.append(mOsuStatus);
+ } else {
+ summary.append(mContext.getString(R.string.tap_to_set_up));
}
- } else if (config != null && config.getNetworkSelectionStatus().isNotRecommended()) {
- summary.append(mContext.getString(R.string.wifi_disabled_by_recommendation_provider));
- } else if (mIsCarrierAp) {
- summary.append(String.format(mContext.getString(R.string.available_via_carrier), mCarrierName));
- } else if (!isReachable()) { // Wifi out of range
- summary.append(mContext.getString(R.string.wifi_not_in_range));
- } else { // In range, not disabled.
- if (config != null) { // Is saved network
- // Last attempt to connect to this failed. Show reason why
- switch (config.recentFailure.getAssociationStatus()) {
- case WifiConfiguration.RecentFailure.STATUS_AP_UNABLE_TO_HANDLE_NEW_STA:
- summary.append(mContext.getString(
- R.string.wifi_ap_unable_to_handle_new_sta));
+ } else if (isActive()) {
+ if (isPasspoint()) {
+ // This is the active connection on passpoint
+ summary.append(getSummary(mContext, ssid, getDetailedState(),
+ false, mConfig.providerFriendlyName));
+ } else if (mConfig != null && getDetailedState() == DetailedState.CONNECTED
+ && mIsCarrierAp) {
+ // This is the active connection on a carrier AP
+ summary.append(String.format(mContext.getString(R.string.connected_via_carrier),
+ mCarrierName));
+ } else {
+ // This is the active connection on non-passpoint network
+ summary.append(getSummary(mContext, getDetailedState(),
+ mInfo != null && mInfo.isEphemeral()));
+ }
+ } else { // not active
+ if (mConfig != null && mConfig.hasNoInternetAccess()) {
+ int messageID = mConfig.getNetworkSelectionStatus().isNetworkPermanentlyDisabled()
+ ? R.string.wifi_no_internet_no_reconnect
+ : R.string.wifi_no_internet;
+ summary.append(mContext.getString(messageID));
+ } else if (mConfig != null && !mConfig.getNetworkSelectionStatus().isNetworkEnabled()) {
+ WifiConfiguration.NetworkSelectionStatus networkStatus =
+ mConfig.getNetworkSelectionStatus();
+ switch (networkStatus.getNetworkSelectionDisableReason()) {
+ case WifiConfiguration.NetworkSelectionStatus.DISABLED_AUTHENTICATION_FAILURE:
+ summary.append(mContext.getString(R.string.wifi_disabled_password_failure));
break;
- default:
- // "Saved"
- summary.append(mContext.getString(R.string.wifi_remembered));
+ case WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD:
+ summary.append(mContext.getString(R.string.wifi_check_password_try_again));
break;
+ case WifiConfiguration.NetworkSelectionStatus.DISABLED_DHCP_FAILURE:
+ case WifiConfiguration.NetworkSelectionStatus.DISABLED_DNS_FAILURE:
+ summary.append(mContext.getString(R.string.wifi_disabled_network_failure));
+ break;
+ case WifiConfiguration.NetworkSelectionStatus.DISABLED_ASSOCIATION_REJECTION:
+ summary.append(mContext.getString(R.string.wifi_disabled_generic));
+ break;
+ }
+ } else if (mConfig != null && mConfig.getNetworkSelectionStatus().isNotRecommended()) {
+ summary.append(mContext.getString(
+ R.string.wifi_disabled_by_recommendation_provider));
+ } else if (mIsCarrierAp) {
+ summary.append(String.format(mContext.getString(
+ R.string.available_via_carrier), mCarrierName));
+ } else if (!isReachable()) { // Wifi out of range
+ summary.append(mContext.getString(R.string.wifi_not_in_range));
+ } else { // In range, not disabled.
+ if (mConfig != null) { // Is saved network
+ // Last attempt to connect to this failed. Show reason why
+ switch (mConfig.recentFailure.getAssociationStatus()) {
+ case WifiConfiguration.RecentFailure.STATUS_AP_UNABLE_TO_HANDLE_NEW_STA:
+ summary.append(mContext.getString(
+ R.string.wifi_ap_unable_to_handle_new_sta));
+ break;
+ default:
+ // "Saved"
+ summary.append(mContext.getString(R.string.wifi_remembered));
+ break;
+ }
}
}
}
+
+
if (isVerboseLoggingEnabled()) {
- summary.append(WifiUtils.buildLoggingSummary(this, config));
+ summary.append(WifiUtils.buildLoggingSummary(this, mConfig));
}
- if (config != null && (WifiUtils.isMeteredOverridden(config) || config.meteredHint)) {
+ if (mConfig != null && (WifiUtils.isMeteredOverridden(mConfig) || mConfig.meteredHint)) {
return mContext.getResources().getString(
R.string.preference_summary_default_combination,
- WifiUtils.getMeteredLabel(mContext, config),
+ WifiUtils.getMeteredLabel(mContext, mConfig),
summary.toString());
}
@@ -976,11 +1022,33 @@
}
/**
+ * Return true if this AccessPoint represents an OSU Provider.
+ */
+ public boolean isOsuProvider() {
+ return mOsuProvider != null;
+ }
+
+ /**
+ * Starts the OSU Provisioning flow.
+ */
+ public void startOsuProvisioning() {
+ mContext.getSystemService(WifiManager.class).startSubscriptionProvisioning(
+ mOsuProvider,
+ new AccessPointProvisioningCallback(),
+ ThreadUtils.getUiThreadHandler()
+ );
+ }
+
+ /**
* Return whether the given {@link WifiInfo} is for this access point.
* If the current AP does not have a network Id then the config is used to
* match based on SSID and security.
*/
private boolean isInfoForThisAccessPoint(WifiConfiguration config, WifiInfo info) {
+ if (info.isOsuAp()) {
+ return (mOsuStatus != null);
+ }
+
if (isPasspoint() == false && networkId != WifiConfiguration.INVALID_NETWORK_ID) {
return networkId == info.getNetworkId();
} else if (config != null) {
@@ -1065,8 +1133,8 @@
void setScanResults(Collection<ScanResult> scanResults) {
// Validate scan results are for current AP only by matching SSID/BSSID
- // Passpoint R1 networks are not bound to a specific SSID/BSSID, so skip this for passpoint.
- if (!isPasspoint()) {
+ // Passpoint networks are not bound to a specific SSID/BSSID, so skip this for passpoint.
+ if (!isPasspoint() && !isOsuProvider()) {
String key = getKey();
for (ScanResult result : scanResults) {
String scanResultKey = AccessPoint.getKey(result);
@@ -1119,7 +1187,17 @@
}
}
- /** Attempt to update the AccessPoint and return true if an update occurred. */
+ /**
+ * Attempt to update the AccessPoint with the current connection info.
+ * This is used to set an AccessPoint to the active one if the connection info matches, or
+ * conversely to set an AccessPoint to inactive if the connection info does not match. The RSSI
+ * is also updated upon a match. Listeners will be notified if an update occurred.
+ *
+ * This is called in {@link WifiTracker#updateAccessPoints} as well as in callbacks for handling
+ * NETWORK_STATE_CHANGED_ACTION, RSSI_CHANGED_ACTION, and onCapabilitiesChanged in WifiTracker.
+ *
+ * Returns true if an update occurred.
+ */
public boolean update(
@Nullable WifiConfiguration config, WifiInfo info, NetworkInfo networkInfo) {
@@ -1246,11 +1324,11 @@
public static String getSummary(Context context, String ssid, DetailedState state,
boolean isEphemeral, String passpointProvider) {
- if (state == DetailedState.CONNECTED && ssid == null) {
- if (TextUtils.isEmpty(passpointProvider) == false) {
+ if (state == DetailedState.CONNECTED) {
+ if (!TextUtils.isEmpty(passpointProvider)) {
// Special case for connected + passpoint networks.
- String format = context.getString(R.string.connected_via_passpoint);
- return String.format(format, passpointProvider);
+ String format = context.getString(R.string.ssid_by_passpoint_provider);
+ return String.format(format, ssid, passpointProvider);
} else if (isEphemeral) {
// Special case for connected + ephemeral networks.
final NetworkScoreManager networkScoreManager = context.getSystemService(
@@ -1443,4 +1521,166 @@
private static boolean isVerboseLoggingEnabled() {
return WifiTracker.sVerboseLogging || Log.isLoggable(TAG, Log.VERBOSE);
}
+
+ /**
+ * Callbacks relaying changes to the OSU provisioning status started in startOsuProvisioning().
+ *
+ * All methods are invoked on the Main Thread
+ */
+ private class AccessPointProvisioningCallback extends ProvisioningCallback {
+ // TODO: Remove logs and implement summary changing logic for these provisioning callbacks.
+ @Override
+ @MainThread public void onProvisioningFailure(int status) {
+ switch (status) {
+ case OSU_FAILURE_AP_CONNECTION:
+ mOsuFailure = mContext.getString(R.string.osu_failure_ap_connection);
+ break;
+ case OSU_FAILURE_SERVER_URL_INVALID:
+ mOsuFailure = mContext.getString(R.string.osu_failure_server_url_invalid);
+ break;
+ case OSU_FAILURE_SERVER_CONNECTION:
+ mOsuFailure = mContext.getString(R.string.osu_failure_server_connection);
+ break;
+ case OSU_FAILURE_SERVER_VALIDATION:
+ mOsuFailure = mContext.getString(R.string.osu_failure_server_validation);
+ break;
+ case OSU_FAILURE_SERVICE_PROVIDER_VERIFICATION:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_service_provider_verification);
+ break;
+ case OSU_FAILURE_PROVISIONING_ABORTED:
+ mOsuFailure = mContext.getString(R.string.osu_failure_provisioning_aborted);
+ break;
+ case OSU_FAILURE_PROVISIONING_NOT_AVAILABLE:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_provisioning_not_available);
+ break;
+ case OSU_FAILURE_INVALID_SERVER_URL:
+ mOsuFailure = mContext.getString(R.string.osu_failure_invalid_server_url);
+ break;
+ case OSU_FAILURE_UNEXPECTED_COMMAND_TYPE:
+ mOsuFailure = mContext.getString(R.string.osu_failure_unexpected_command_type);
+ break;
+ case OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_TYPE:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_unexpected_soap_message_type);
+ break;
+ case OSU_FAILURE_SOAP_MESSAGE_EXCHANGE:
+ mOsuFailure = mContext.getString(R.string.osu_failure_soap_message_exchange);
+ break;
+ case OSU_FAILURE_START_REDIRECT_LISTENER:
+ mOsuFailure = mContext.getString(R.string.osu_failure_start_redirect_listener);
+ break;
+ case OSU_FAILURE_TIMED_OUT_REDIRECT_LISTENER:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_timed_out_redirect_listener);
+ break;
+ case OSU_FAILURE_NO_OSU_ACTIVITY_FOUND:
+ mOsuFailure = mContext.getString(R.string.osu_failure_no_osu_activity_found);
+ break;
+ case OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_STATUS:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_unexpected_soap_message_status);
+ break;
+ case OSU_FAILURE_NO_PPS_MO:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_no_pps_mo);
+ break;
+ case OSU_FAILURE_NO_AAA_SERVER_TRUST_ROOT_NODE:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_no_aaa_server_trust_root_node);
+ break;
+ case OSU_FAILURE_NO_REMEDIATION_SERVER_TRUST_ROOT_NODE:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_no_remediation_server_trust_root_node);
+ break;
+ case OSU_FAILURE_NO_POLICY_SERVER_TRUST_ROOT_NODE:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_no_policy_server_trust_root_node);
+ break;
+ case OSU_FAILURE_RETRIEVE_TRUST_ROOT_CERTIFICATES:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_retrieve_trust_root_certificates);
+ break;
+ case OSU_FAILURE_NO_AAA_TRUST_ROOT_CERTIFICATE:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_no_aaa_trust_root_certificate);
+ break;
+ case OSU_FAILURE_ADD_PASSPOINT_CONFIGURATION:
+ mOsuFailure = mContext.getString(
+ R.string.osu_failure_add_passpoint_configuration);
+ break;
+ case OSU_FAILURE_OSU_PROVIDER_NOT_FOUND:
+ mOsuFailure = mContext.getString(R.string.osu_failure_osu_provider_not_found);
+ break;
+ }
+ mOsuStatus = null;
+ mOsuProvisioningComplete = false;
+ ThreadUtils.postOnMainThread(() -> {
+ if (mAccessPointListener != null) {
+ mAccessPointListener.onAccessPointChanged(AccessPoint.this);
+ }
+ });
+ }
+
+ @Override
+ @MainThread public void onProvisioningStatus(int status) {
+ switch (status) {
+ case OSU_STATUS_AP_CONNECTING:
+ mOsuStatus = mContext.getString(R.string.osu_status_ap_connecting);
+ break;
+ case OSU_STATUS_AP_CONNECTED:
+ mOsuStatus = mContext.getString(R.string.osu_status_ap_connected);
+ break;
+ case OSU_STATUS_SERVER_CONNECTING:
+ mOsuStatus = mContext.getString(R.string.osu_status_server_connecting);
+ break;
+ case OSU_STATUS_SERVER_VALIDATED:
+ mOsuStatus = mContext.getString(R.string.osu_status_server_validated);
+ break;
+ case OSU_STATUS_SERVER_CONNECTED:
+ mOsuStatus = mContext.getString(R.string.osu_status_server_connected);
+ break;
+ case OSU_STATUS_INIT_SOAP_EXCHANGE:
+ mOsuStatus = mContext.getString(R.string.osu_status_init_soap_exchange);
+ break;
+ case OSU_STATUS_WAITING_FOR_REDIRECT_RESPONSE:
+ mOsuStatus = mContext.getString(
+ R.string.osu_status_waiting_for_redirect_response);
+ break;
+ case OSU_STATUS_REDIRECT_RESPONSE_RECEIVED:
+ mOsuStatus = mContext.getString(R.string.osu_status_redirect_response_received);
+ break;
+ case OSU_STATUS_SECOND_SOAP_EXCHANGE:
+ mOsuStatus = mContext.getString(R.string.osu_status_second_soap_exchange);
+ break;
+ case OSU_STATUS_THIRD_SOAP_EXCHANGE:
+ mOsuStatus = mContext.getString(R.string.osu_status_third_soap_exchange);
+ break;
+ case OSU_STATUS_RETRIEVING_TRUST_ROOT_CERTS:
+ mOsuStatus = mContext.getString(
+ R.string.osu_status_retrieving_trust_root_certs);
+ break;
+ }
+ mOsuFailure = null;
+ mOsuProvisioningComplete = false;
+ ThreadUtils.postOnMainThread(() -> {
+ if (mAccessPointListener != null) {
+ mAccessPointListener.onAccessPointChanged(AccessPoint.this);
+ }
+ });
+ }
+
+ @Override
+ @MainThread public void onProvisioningComplete() {
+ mOsuProvisioningComplete = true;
+ mOsuFailure = null;
+ mOsuStatus = null;
+ ThreadUtils.postOnMainThread(() -> {
+ if (mAccessPointListener != null) {
+ mAccessPointListener.onAccessPointChanged(AccessPoint.this);
+ }
+ });
+ }
+ }
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index 79a7240..b9a5f23 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -35,6 +35,7 @@
import android.net.wifi.WifiManager;
import android.net.wifi.WifiNetworkScoreCache;
import android.net.wifi.WifiNetworkScoreCache.CacheListener;
+import android.net.wifi.hotspot2.OsuProvider;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
@@ -67,6 +68,7 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.ListIterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -584,7 +586,6 @@
Map<Integer, List<ScanResult>>> pairing : passpointConfigsAndScans) {
WifiConfiguration config = pairing.first;
- // TODO: Prioritize home networks before roaming networks
List<ScanResult> scanResults = new ArrayList<>();
List<ScanResult> homeScans =
@@ -599,8 +600,12 @@
roamingScans = new ArrayList<>();
}
- scanResults.addAll(homeScans);
- scanResults.addAll(roamingScans);
+ // TODO(b/118705403): Differentiate home network vs roaming network for summary info
+ if (!homeScans.isEmpty()) {
+ scanResults.addAll(homeScans);
+ } else {
+ scanResults.addAll(roamingScans);
+ }
if (seenFQDNs.add(config.FQDN)) {
int bestRssi = Integer.MIN_VALUE;
@@ -611,13 +616,30 @@
}
}
- AccessPoint accessPoint = new AccessPoint(mContext, config);
- accessPoint.setScanResults(scanResults);
+ AccessPoint accessPoint =
+ getCachedOrCreatePasspoint(scanResults, cachedAccessPoints, config);
accessPoint.update(connectionConfig, mLastInfo, mLastNetworkInfo);
accessPoints.add(accessPoint);
}
}
+ // Add Passpoint OSU Provider AccessPoints
+ Map<OsuProvider, List<ScanResult>> providersAndScans =
+ mWifiManager.getMatchingOsuProviders(cachedScanResults);
+ Set<OsuProvider> alreadyProvisioned = mWifiManager
+ .getMatchingPasspointConfigsForOsuProviders(
+ providersAndScans.keySet()).keySet();
+ for (OsuProvider provider : providersAndScans.keySet()) {
+ if (!alreadyProvisioned.contains(provider)) {
+ AccessPoint accessPointOsu =
+ getCachedOrCreateOsu(providersAndScans.get(provider),
+ cachedAccessPoints, provider);
+ accessPointOsu.update(connectionConfig, mLastInfo, mLastNetworkInfo);
+ accessPoints.add(accessPointOsu);
+ }
+ }
+
+
// If there were no scan results, create an AP for the currently connected network (if
// it exists).
if (accessPoints.isEmpty() && connectionConfig != null) {
@@ -667,16 +689,49 @@
AccessPoint getCachedOrCreate(
List<ScanResult> scanResults,
List<AccessPoint> cache) {
- final int N = cache.size();
- for (int i = 0; i < N; i++) {
- if (cache.get(i).getKey().equals(AccessPoint.getKey(scanResults.get(0)))) {
- AccessPoint ret = cache.remove(i);
- ret.setScanResults(scanResults);
- return ret;
+ AccessPoint accessPoint = getCachedByKey(cache, AccessPoint.getKey(scanResults.get(0)));
+ if (accessPoint == null) {
+ accessPoint = new AccessPoint(mContext, scanResults);
+ } else {
+ accessPoint.setScanResults(scanResults);
+ }
+ return accessPoint;
+ }
+
+ private AccessPoint getCachedOrCreatePasspoint(
+ List<ScanResult> scanResults,
+ List<AccessPoint> cache,
+ WifiConfiguration config) {
+ AccessPoint accessPoint = getCachedByKey(cache, AccessPoint.getKey(config));
+ if (accessPoint == null) {
+ accessPoint = new AccessPoint(mContext, config);
+ }
+ accessPoint.setScanResults(scanResults);
+ return accessPoint;
+ }
+
+ private AccessPoint getCachedOrCreateOsu(
+ List<ScanResult> scanResults,
+ List<AccessPoint> cache,
+ OsuProvider provider) {
+ AccessPoint accessPoint = getCachedByKey(cache, AccessPoint.getKey(provider));
+ if (accessPoint == null) {
+ accessPoint = new AccessPoint(mContext, provider);
+ }
+ accessPoint.setScanResults(scanResults);
+ return accessPoint;
+ }
+
+ private AccessPoint getCachedByKey(List<AccessPoint> cache, String key) {
+ ListIterator<AccessPoint> lit = cache.listIterator();
+ while (lit.hasNext()) {
+ AccessPoint currentAccessPoint = lit.next();
+ if (currentAccessPoint.getKey().equals(key)) {
+ lit.remove();
+ return currentAccessPoint;
}
}
- final AccessPoint accessPoint = new AccessPoint(mContext, scanResults);
- return accessPoint;
+ return null;
}
private void updateNetworkInfo(NetworkInfo networkInfo) {
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java
index 86f0438..92ebe44 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java
@@ -17,7 +17,7 @@
import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
-import static com.android.settingslib.Utils.STORAGE_MANAGER_SHOW_OPT_IN_PROPERTY;
+import static com.android.settingslib.Utils.STORAGE_MANAGER_ENABLED_PROPERTY;
import static com.google.common.truth.Truth.assertThat;
@@ -159,7 +159,7 @@
@Test
public void testIsStorageManagerEnabled_UsesSystemProperties() {
- SystemProperties.set(STORAGE_MANAGER_SHOW_OPT_IN_PROPERTY, "false");
+ SystemProperties.set(STORAGE_MANAGER_ENABLED_PROPERTY, "true");
assertThat(Utils.isStorageManagerEnabled(mContext)).isTrue();
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java
index acf99a2..220463b 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java
@@ -45,6 +45,7 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
+import org.robolectric.shadows.ShadowSubscriptionManager;
@RunWith(RobolectricTestRunner.class)
public class DataUsageControllerTest {
@@ -73,7 +74,9 @@
new NetworkStatsHistory(DateUtils.DAY_IN_MILLIS /* bucketDuration */));
doReturn(mNetworkStatsHistory)
.when(mSession).getHistoryForNetwork(any(NetworkTemplate.class), anyInt());
- doReturn(SUB_ID).when(mTelephonyManager).getSubscriberId(anyInt());
+ final int defaultSubscriptionId = 1234;
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(defaultSubscriptionId);
+ doReturn(SUB_ID).when(mTelephonyManager).getSubscriberId(eq(defaultSubscriptionId));
}
@Test
@@ -107,4 +110,39 @@
assertThat(mController.getHistoricalUsageLevel(NetworkTemplate.buildTemplateWifiWildcard()))
.isEqualTo(receivedBytes + transmittedBytes);
}
+
+ @Test
+ public void getDataUsageInfo_hasUsageData_shouldReturnCorrectUsageForExplicitSubId()
+ throws Exception {
+ // First setup a stats bucket for the default subscription / subscriber ID.
+ final long defaultSubRx = 1234567L;
+ final long defaultSubTx = 123456L;
+ final NetworkStats.Bucket defaultSubscriberBucket = mock(NetworkStats.Bucket.class);
+ when(defaultSubscriberBucket.getRxBytes()).thenReturn(defaultSubRx);
+ when(defaultSubscriberBucket.getTxBytes()).thenReturn(defaultSubTx);
+ when(mNetworkStatsManager.querySummaryForDevice(eq(ConnectivityManager.TYPE_MOBILE),
+ eq(SUB_ID), eq(0L)/* startTime */, anyLong() /* endTime */)).thenReturn(
+ defaultSubscriberBucket);
+
+ // Now setup a stats bucket for a different, non-default subscription / subscriber ID.
+ final long nonDefaultSubRx = 7654321L;
+ final long nonDefaultSubTx = 654321L;
+ final NetworkStats.Bucket nonDefaultSubscriberBucket = mock(NetworkStats.Bucket.class);
+ when(nonDefaultSubscriberBucket.getRxBytes()).thenReturn(nonDefaultSubRx);
+ when(nonDefaultSubscriberBucket.getTxBytes()).thenReturn(nonDefaultSubTx);
+ final int explictSubscriptionId = 55;
+ final String subscriberId2 = "Test Subscriber 2";
+ when(mNetworkStatsManager.querySummaryForDevice(eq(ConnectivityManager.TYPE_MOBILE),
+ eq(subscriberId2), eq(0L)/* startTime */, anyLong() /* endTime */)).thenReturn(
+ nonDefaultSubscriberBucket);
+ doReturn(subscriberId2).when(mTelephonyManager).getSubscriberId(explictSubscriptionId);
+
+ // Now verify that when we're asking for stats on the non-default subscription, we get
+ // the data back for that subscription and *not* the default one.
+ mController.setSubscriptionId(explictSubscriptionId);
+
+ assertThat(mController.getHistoricalUsageLevel(
+ NetworkTemplate.buildTemplateMobileAll(subscriberId2))).isEqualTo(
+ nonDefaultSubRx + nonDefaultSubTx);
+ }
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/AppEntitiesHeaderControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/AppEntitiesHeaderControllerTest.java
index c3bc8da..8c18c35 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/AppEntitiesHeaderControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/AppEntitiesHeaderControllerTest.java
@@ -19,7 +19,6 @@
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
-import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
@@ -43,18 +42,24 @@
public final ExpectedException thrown = ExpectedException.none();
private Context mContext;
- private Drawable mIcon;
private View mAppEntitiesHeaderView;
private AppEntitiesHeaderController mController;
+ private AppEntityInfo mAppEntityInfo;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mAppEntitiesHeaderView = LayoutInflater.from(mContext).inflate(
R.layout.app_entities_header, null /* root */);
- mIcon = mContext.getDrawable(R.drawable.ic_menu);
mController = AppEntitiesHeaderController.newInstance(mContext,
mAppEntitiesHeaderView);
+ mAppEntityInfo = new AppEntityInfo.Builder()
+ .setIcon(mContext.getDrawable(R.drawable.ic_menu))
+ .setTitle(TITLE)
+ .setSummary(SUMMARY)
+ .setOnClickListener(v -> {
+ })
+ .build();
}
@Test
@@ -91,26 +96,26 @@
public void setAppEntity_indexLessThanZero_shouldThrowArrayIndexOutOfBoundsException() {
thrown.expect(ArrayIndexOutOfBoundsException.class);
- mController.setAppEntity(-1, mIcon, TITLE, SUMMARY);
+ mController.setAppEntity(-1, mAppEntityInfo);
}
@Test
public void asetAppEntity_indexGreaterThanMaximum_shouldThrowArrayIndexOutOfBoundsException() {
thrown.expect(ArrayIndexOutOfBoundsException.class);
- mController.setAppEntity(AppEntitiesHeaderController.MAXIMUM_APPS + 1, mIcon, TITLE,
- SUMMARY);
+ mController.setAppEntity(AppEntitiesHeaderController.MAXIMUM_APPS + 1, mAppEntityInfo);
}
@Test
public void setAppEntity_addAppToIndex0_shouldShowAppView1() {
- mController.setAppEntity(0, mIcon, TITLE, SUMMARY).apply();
+ mController.setAppEntity(0, mAppEntityInfo).apply();
final View app1View = mAppEntitiesHeaderView.findViewById(R.id.app1_view);
final ImageView appIconView = app1View.findViewById(R.id.app_icon);
final TextView appTitle = app1View.findViewById(R.id.app_title);
final TextView appSummary = app1View.findViewById(R.id.app_summary);
assertThat(app1View.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(app1View.hasOnClickListeners()).isTrue();
assertThat(appIconView.getDrawable()).isNotNull();
assertThat(appTitle.getText()).isEqualTo(TITLE);
assertThat(appSummary.getText()).isEqualTo(SUMMARY);
@@ -118,13 +123,14 @@
@Test
public void setAppEntity_addAppToIndex1_shouldShowAppView2() {
- mController.setAppEntity(1, mIcon, TITLE, SUMMARY).apply();
+ mController.setAppEntity(1, mAppEntityInfo).apply();
final View app2View = mAppEntitiesHeaderView.findViewById(R.id.app2_view);
final ImageView appIconView = app2View.findViewById(R.id.app_icon);
final TextView appTitle = app2View.findViewById(R.id.app_title);
final TextView appSummary = app2View.findViewById(R.id.app_summary);
assertThat(app2View.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(app2View.hasOnClickListeners()).isTrue();
assertThat(appIconView.getDrawable()).isNotNull();
assertThat(appTitle.getText()).isEqualTo(TITLE);
assertThat(appSummary.getText()).isEqualTo(SUMMARY);
@@ -132,13 +138,14 @@
@Test
public void setAppEntity_addAppToIndex2_shouldShowAppView3() {
- mController.setAppEntity(2, mIcon, TITLE, SUMMARY).apply();
+ mController.setAppEntity(2, mAppEntityInfo).apply();
final View app3View = mAppEntitiesHeaderView.findViewById(R.id.app3_view);
final ImageView appIconView = app3View.findViewById(R.id.app_icon);
final TextView appTitle = app3View.findViewById(R.id.app_title);
final TextView appSummary = app3View.findViewById(R.id.app_summary);
assertThat(app3View.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(app3View.hasOnClickListeners()).isTrue();
assertThat(appIconView.getDrawable()).isNotNull();
assertThat(appTitle.getText()).isEqualTo(TITLE);
assertThat(appSummary.getText()).isEqualTo(SUMMARY);
@@ -146,8 +153,8 @@
@Test
public void removeAppEntity_removeIndex0_shouldNotShowAppView1() {
- mController.setAppEntity(0, mIcon, TITLE, SUMMARY)
- .setAppEntity(1, mIcon, TITLE, SUMMARY).apply();
+ mController.setAppEntity(0, mAppEntityInfo)
+ .setAppEntity(1, mAppEntityInfo).apply();
final View app1View = mAppEntitiesHeaderView.findViewById(R.id.app1_view);
final View app2View = mAppEntitiesHeaderView.findViewById(R.id.app2_view);
@@ -162,9 +169,9 @@
@Test
public void clearAllAppEntities_shouldNotShowAllAppViews() {
- mController.setAppEntity(0, mIcon, TITLE, SUMMARY)
- .setAppEntity(1, mIcon, TITLE, SUMMARY)
- .setAppEntity(2, mIcon, TITLE, SUMMARY).apply();
+ mController.setAppEntity(0, mAppEntityInfo)
+ .setAppEntity(1, mAppEntityInfo)
+ .setAppEntity(2, mAppEntityInfo).apply();
final View app1View = mAppEntitiesHeaderView.findViewById(R.id.app1_view);
final View app2View = mAppEntitiesHeaderView.findViewById(R.id.app2_view);
final View app3View = mAppEntitiesHeaderView.findViewById(R.id.app3_view);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index bcf37ff..e843eb4 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -705,14 +705,17 @@
Settings.Global.GPU_DEBUG_LAYERS_GLES,
GlobalSettingsProto.Gpu.DEBUG_LAYERS_GLES);
dumpSetting(s, p,
+ Settings.Global.GUP_DEV_ALL_APPS,
+ GlobalSettingsProto.Gpu.GUP_DEV_ALL_APPS);
+ dumpSetting(s, p,
Settings.Global.GUP_DEV_OPT_IN_APPS,
GlobalSettingsProto.Gpu.GUP_DEV_OPT_IN_APPS);
dumpSetting(s, p,
Settings.Global.GUP_DEV_OPT_OUT_APPS,
GlobalSettingsProto.Gpu.GUP_DEV_OPT_OUT_APPS);
dumpSetting(s, p,
- Settings.Global.GUP_BLACK_LIST,
- GlobalSettingsProto.Gpu.GUP_BLACK_LIST);
+ Settings.Global.GUP_BLACKLIST,
+ GlobalSettingsProto.Gpu.GUP_BLACKLIST);
p.end(gpuToken);
final long hdmiToken = p.start(GlobalSettingsProto.HDMI);
@@ -1879,6 +1882,9 @@
dumpSetting(s, p,
Settings.Secure.DOZE_DOUBLE_TAP_GESTURE,
SecureSettingsProto.Doze.PULSE_ON_DOUBLE_TAP);
+ dumpSetting(s, p,
+ Settings.Secure.DOZE_TAP_SCREEN_GESTURE,
+ SecureSettingsProto.Doze.PULSE_ON_TAP);
p.end(dozeToken);
dumpSetting(s, p,
@@ -2363,6 +2369,14 @@
SecureSettingsProto.Zen.SETTINGS_SUGGESTION_VIEWED);
p.end(zenToken);
+ dumpSetting(s, p,
+ Settings.Secure.SKIP_GESTURE,
+ SecureSettingsProto.SKIP_GESTURE_ENABLED);
+
+ dumpSetting(s, p,
+ Settings.Secure.SILENCE_GESTURE,
+ SecureSettingsProto.SILENCE_GESTURE_ENABLED);
+
// Please insert new settings using the same order as in SecureSettingsProto.
p.end(token);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index bce5593..5105ff4 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -84,6 +84,8 @@
import com.android.server.LocalServices;
import com.android.server.SystemConfig;
+import com.google.android.collect.Sets;
+
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileNotFoundException;
@@ -957,12 +959,12 @@
UserManagerInternal userManager = LocalServices.getService(UserManagerInternal.class);
userManager.addUserRestrictionsListener((int userId, Bundle newRestrictions,
Bundle prevRestrictions) -> {
+ Set<String> changedRestrictions = getRestrictionDiff(prevRestrictions, newRestrictions);
// We are changing the settings affected by restrictions to their current
// value with a forced update to ensure that all cross profile dependencies
// are taken into account. Also make sure the settings update to.. the same
// value passes the security checks, so clear binder calling id.
- if (newRestrictions.getBoolean(UserManager.DISALLOW_SHARE_LOCATION)
- != prevRestrictions.getBoolean(UserManager.DISALLOW_SHARE_LOCATION)) {
+ if (changedRestrictions.contains(UserManager.DISALLOW_SHARE_LOCATION)) {
final long identity = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
@@ -976,11 +978,8 @@
Binder.restoreCallingIdentity(identity);
}
}
- if (newRestrictions.getBoolean(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES)
- != prevRestrictions.getBoolean(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES) ||
- newRestrictions.getBoolean(
- UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY)
- != prevRestrictions.getBoolean(
+ if (changedRestrictions.contains(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES)
+ || changedRestrictions.contains(
UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY)) {
final long identity = Binder.clearCallingIdentity();
try {
@@ -994,8 +993,7 @@
Binder.restoreCallingIdentity(identity);
}
}
- if (newRestrictions.getBoolean(UserManager.DISALLOW_DEBUGGING_FEATURES)
- != prevRestrictions.getBoolean(UserManager.DISALLOW_DEBUGGING_FEATURES)) {
+ if (changedRestrictions.contains(UserManager.DISALLOW_DEBUGGING_FEATURES)) {
final long identity = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
@@ -1008,8 +1006,7 @@
Binder.restoreCallingIdentity(identity);
}
}
- if (newRestrictions.getBoolean(UserManager.ENSURE_VERIFY_APPS)
- != prevRestrictions.getBoolean(UserManager.ENSURE_VERIFY_APPS)) {
+ if (changedRestrictions.contains(UserManager.ENSURE_VERIFY_APPS)) {
final long identity = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
@@ -1028,8 +1025,7 @@
Binder.restoreCallingIdentity(identity);
}
}
- if (newRestrictions.getBoolean(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)
- != prevRestrictions.getBoolean(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
+ if (changedRestrictions.contains(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
final long identity = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
@@ -1046,13 +1042,27 @@
});
}
+ private static Set<String> getRestrictionDiff(Bundle prevRestrictions, Bundle newRestrictions) {
+ Set<String> restrictionNames = Sets.newArraySet();
+ restrictionNames.addAll(prevRestrictions.keySet());
+ restrictionNames.addAll(newRestrictions.keySet());
+ Set<String> diff = Sets.newArraySet();
+ for (String restrictionName : restrictionNames) {
+ if (prevRestrictions.getBoolean(restrictionName) != newRestrictions.getBoolean(
+ restrictionName)) {
+ diff.add(restrictionName);
+ }
+ }
+ return diff;
+ }
+
private Setting getConfigSetting(String name) {
if (DEBUG) {
Slog.v(LOG_TAG, "getConfigSetting(" + name + ")");
}
// TODO(b/117663715): Ensure the caller can access the setting.
- // enforceSettingReadable(name, SETTINGS_TYPE_CONFIG, UserHandle.getCallingUserId());
+ // enforceReadPermission(READ_DEVICE_CONFIG);
// Get the value.
synchronized (mLock) {
@@ -1088,8 +1098,9 @@
private boolean mutateConfigSetting(String name, String value, String prefix,
boolean makeDefault, int operation, int mode) {
- // TODO(b/117663715): check the new permission when it's added.
- // enforceWritePermission(Manifest.permission.WRITE_SECURE_SETTINGS);
+
+ // TODO(b/117663715): Ensure the caller can access the setting.
+ // enforceReadPermission(WRITE_DEVICE_CONFIG);
// Perform the mutation.
synchronized (mLock) {
diff --git a/packages/SettingsProvider/test/AndroidManifest.xml b/packages/SettingsProvider/test/AndroidManifest.xml
index 87a4f60..ebdf9b1 100644
--- a/packages/SettingsProvider/test/AndroidManifest.xml
+++ b/packages/SettingsProvider/test/AndroidManifest.xml
@@ -20,6 +20,8 @@
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
+ <uses-permission android:name="android.permission.WRITE_DEVICE_CONFIG"/>
+ <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
<uses-permission android:name="android.permission.MANAGE_USERS"/>
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index fa95bf2..b903142 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -57,6 +57,8 @@
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+ <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
+ <uses-permission android:name="android.permission.WRITE_DEVICE_CONFIG" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.MANAGE_ACCESSIBILITY" />
<!-- Development tool permissions granted to the shell. -->
@@ -129,6 +131,7 @@
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" />
<uses-permission android:name="android.permission.START_TASKS_FROM_RECENTS" />
+ <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
<uses-permission android:name="android.permission.ACTIVITY_EMBEDDING" />
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java
index 2530abc..2d7471d 100644
--- a/packages/Shell/src/com/android/shell/BugreportProgressService.java
+++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java
@@ -56,6 +56,7 @@
import android.accounts.Account;
import android.accounts.AccountManager;
import android.annotation.MainThread;
+import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Notification;
@@ -799,6 +800,18 @@
Log.wtf(TAG, "Missing " + EXTRA_BUGREPORT + " on intent " + intent);
return;
}
+ final int max = intent.getIntExtra(EXTRA_MAX, -1);
+ final File screenshotFile = getFileExtra(intent, EXTRA_SCREENSHOT);
+ final String shareTitle = intent.getStringExtra(EXTRA_TITLE);
+ final String shareDescription = intent.getStringExtra(EXTRA_DESCRIPTION);
+ onBugreportFinished(id, bugreportFile, screenshotFile, shareTitle, shareDescription, max);
+ }
+
+ /**
+ * Wraps up bugreport generation and triggers a notification to share the bugreport.
+ */
+ private void onBugreportFinished(int id, File bugreportFile, @Nullable File screenshotFile,
+ String shareTitle, String shareDescription, int max) {
mInfoDialog.onBugreportFinished();
BugreportInfo info = getInfo(id);
if (info == null) {
@@ -809,22 +822,17 @@
}
info.renameScreenshots(mScreenshotsDir);
info.bugreportFile = bugreportFile;
+ if (screenshotFile != null) {
+ info.addScreenshot(screenshotFile);
+ }
- final int max = intent.getIntExtra(EXTRA_MAX, -1);
if (max != -1) {
MetricsLogger.histogram(this, "dumpstate_duration", max);
info.max = max;
}
- final File screenshot = getFileExtra(intent, EXTRA_SCREENSHOT);
- if (screenshot != null) {
- info.addScreenshot(screenshot);
- }
-
- final String shareTitle = intent.getStringExtra(EXTRA_TITLE);
if (!TextUtils.isEmpty(shareTitle)) {
info.title = shareTitle;
- final String shareDescription = intent.getStringExtra(EXTRA_DESCRIPTION);
if (!TextUtils.isEmpty(shareDescription)) {
info.shareDescription= shareDescription;
}
@@ -1944,6 +1952,22 @@
}
@Override
+ public void onProgress(int progress) throws RemoteException {
+ updateProgressInfo(progress, 100 /* progress is already a percentage; so max = 100 */);
+ }
+
+ @Override
+ public void onError(int errorCode) throws RemoteException {
+ // TODO(b/111441001): implement
+ }
+
+ @Override
+ public void onFinished(long durationMs, String title, String description)
+ throws RemoteException {
+ // TODO(b/111441001): implement
+ }
+
+ @Override
public void onProgressUpdated(int progress) throws RemoteException {
/*
* Checks whether the progress changed in a way that should be displayed to the user:
@@ -1964,21 +1988,7 @@
}
if (newPercentage > oldPercentage) {
- if (DEBUG) {
- if (progress != info.progress) {
- Log.v(TAG, "Updating progress for PID " + info.pid + "(id: " + info.id
- + ") from " + info.progress + " to " + progress);
- }
- if (max != info.max) {
- Log.v(TAG, "Updating max progress for PID " + info.pid + "(id: " + info.id
- + ") from " + info.max + " to " + max);
- }
- }
- info.progress = progress;
- info.max = max;
- info.lastUpdate = System.currentTimeMillis();
-
- updateProgress(info);
+ updateProgressInfo(progress, max);
}
}
@@ -2000,5 +2010,23 @@
public void dump(String prefix, PrintWriter pw) {
pw.print(prefix); pw.print("token: "); pw.println(token);
}
+
+ private void updateProgressInfo(int progress, int max) {
+ if (DEBUG) {
+ if (progress != info.progress) {
+ Log.v(TAG, "Updating progress for PID " + info.pid + "(id: " + info.id
+ + ") from " + info.progress + " to " + progress);
+ }
+ if (max != info.max) {
+ Log.v(TAG, "Updating max progress for PID " + info.pid + "(id: " + info.id
+ + ") from " + info.max + " to " + max);
+ }
+ }
+ info.progress = progress;
+ info.max = max;
+ info.lastUpdate = System.currentTimeMillis();
+
+ updateProgress(info);
+ }
}
}
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 1c1a140..b4f2711 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -87,6 +87,7 @@
<uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
<uses-permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" />
<uses-permission android:name="android.permission.START_ANY_ACTIVITY" />
+ <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<uses-permission android:name="android.permission.GET_TOP_ACTIVITY_INFO" />
diff --git a/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml b/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml
new file mode 100644
index 0000000..d3c3a51
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="200dp"
+ android:width="200dp"
+ android:viewportHeight="100"
+ android:viewportWidth="100">
+ <path
+ android:fillColor="#000000"
+ android:pathData="M50.082,14.199m-13.985,0a13.985,13.985 0,1 1,27.97 0a13.985,13.985 0,1 1,-27.97 0"/>
+</vector>
diff --git a/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml b/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml
new file mode 100644
index 0000000..a4417fb
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="200dp"
+ android:width="200dp"
+ android:viewportHeight="100"
+ android:viewportWidth="100" >
+ <path
+ android:fillColor="#000000"
+ android:pathData="M50.082,0.025L50.082,0.025A13.985,15.63 0,0 1,64.067 15.656L64.067,49.029A13.985,15.63 0,0 1,50.082 64.659L50.082,64.659A13.985,15.63 0,0 1,36.097 49.029L36.097,15.656A13.985,15.63 0,0 1,50.082 0.025z"/>
+</vector>
diff --git a/packages/SystemUI/res-keyguard/layout/bubble_clock.xml b/packages/SystemUI/res-keyguard/layout/bubble_clock.xml
new file mode 100644
index 0000000..6f7f398
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/layout/bubble_clock.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+ -->
+<com.android.keyguard.clock.ClockLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ >
+ <include
+ android:id="@+id/digital_clock"
+ layout="@layout/text_clock"
+ />
+ <com.android.keyguard.clock.ImageClock
+ android:id="@+id/analog_clock"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ >
+ <ImageView
+ android:id="@+id/minute_hand"
+ android:layout_width="300dp"
+ android:layout_height="300dp"
+ android:src="@drawable/bubble_minute_hand"
+ android:tint="@color/bubbleMinuteHandColor"
+ />
+ <ImageView
+ android:id="@+id/hour_hand"
+ android:layout_width="300dp"
+ android:layout_height="300dp"
+ android:src="@drawable/bubble_hour_hand"
+ android:tint="@color/bubbleHourHandColor"
+ />
+ </com.android.keyguard.clock.ImageClock>
+</com.android.keyguard.clock.ClockLayout>
diff --git a/packages/SystemUI/res-keyguard/layout/digital_clock.xml b/packages/SystemUI/res-keyguard/layout/digital_clock.xml
new file mode 100644
index 0000000..e88e2c9
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/layout/digital_clock.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+ -->
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_alignParentTop="true">
+ <include
+ android:id="@+id/lock_screen_clock"
+ layout="@layout/text_clock"
+ />
+</FrameLayout>
+
diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml
index d52866f..463367b 100644
--- a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml
+++ b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml
@@ -30,17 +30,9 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_alignParentTop="true">
- <TextClock
+ <include
android:id="@+id/default_clock_view"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:letterSpacing="0.03"
- android:textColor="?attr/wallpaperTextColor"
- android:singleLine="true"
- style="@style/widget_big"
- android:format12Hour="@string/keyguard_widget_12_hours_format"
- android:format24Hour="@string/keyguard_widget_24_hours_format" />
+ layout="@layout/text_clock" />
</FrameLayout>
<include layout="@layout/keyguard_status_area"
android:id="@+id/keyguard_status_area"
diff --git a/packages/SystemUI/res-keyguard/layout/stretchanalog_clock.xml b/packages/SystemUI/res-keyguard/layout/stretchanalog_clock.xml
new file mode 100644
index 0000000..64b676f5
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/layout/stretchanalog_clock.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+ -->
+<com.android.keyguard.clock.ClockLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ >
+ <include
+ android:id="@+id/digital_clock"
+ layout="@layout/text_clock"
+ />
+ <com.android.keyguard.clock.StretchAnalogClock
+ android:id="@+id/analog_clock"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ />
+</com.android.keyguard.clock.ClockLayout>
diff --git a/packages/SystemUI/res-keyguard/layout/text_clock.xml b/packages/SystemUI/res-keyguard/layout/text_clock.xml
new file mode 100644
index 0000000..b61ad9c
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/layout/text_clock.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+ -->
+<TextClock
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:letterSpacing="0.03"
+ android:textColor="?attr/wallpaperTextColor"
+ android:singleLine="true"
+ style="@style/widget_big"
+ android:format12Hour="@string/keyguard_widget_12_hours_format"
+ android:format24Hour="@string/keyguard_widget_24_hours_format"
+ android:elegantTextHeight="false"
+/>
diff --git a/packages/SystemUI/res-keyguard/layout/type_clock.xml b/packages/SystemUI/res-keyguard/layout/type_clock.xml
new file mode 100644
index 0000000..21c64e9
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/layout/type_clock.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+ -->
+<com.android.keyguard.clock.ClockLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ >
+ <com.android.keyguard.clock.TypographicClock
+ android:id="@+id/type_clock"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ >
+ <TextView
+ android:id="@+id/header"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="50dp"
+ style="@style/widget_big"
+ android:textColor="@color/typeClockAccentColor"
+ android:text="@string/type_clock_header"
+ android:textSize="40dp"
+ />
+ <TextView
+ android:id="@+id/hour"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="50dp"
+ style="@style/widget_big"
+ android:textSize="40dp"
+ />
+ <TextView
+ android:id="@+id/minute"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="50dp"
+ style="@style/widget_big"
+ android:textSize="40dp"
+ />
+ </com.android.keyguard.clock.TypographicClock>
+</com.android.keyguard.clock.ClockLayout>
diff --git a/packages/SystemUI/res-keyguard/values/colors.xml b/packages/SystemUI/res-keyguard/values/colors.xml
new file mode 100644
index 0000000..74ee7ff
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/values/colors.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+ -->
+<resources>
+ <!-- Default color for hour hand of Bubble clock. -->
+ <color name="bubbleHourHandColor">#C97343</color>
+ <!-- Default color for minute hand of Bubble clock. -->
+ <color name="bubbleMinuteHandColor">#F5C983</color>
+ <!-- Accent color for Typographic clock. -->
+ <color name="typeClockAccentColor">#F5C983</color>
+</resources>
diff --git a/packages/SystemUI/res-keyguard/values/dimens.xml b/packages/SystemUI/res-keyguard/values/dimens.xml
index 9245c30..e2ba23e 100644
--- a/packages/SystemUI/res-keyguard/values/dimens.xml
+++ b/packages/SystemUI/res-keyguard/values/dimens.xml
@@ -47,8 +47,6 @@
<dimen name="bottom_text_spacing_digital">0dp</dimen>
<!-- Slice subtitle -->
<dimen name="widget_label_font_size">16dp</dimen>
- <!-- Slice offset when pulsing -->
- <dimen name="widget_pulsing_bottom_padding">48dp</dimen>
<!-- Clock without header -->
<dimen name="widget_big_font_size">64dp</dimen>
<!-- Clock with header -->
diff --git a/packages/SystemUI/res-keyguard/values/strings.xml b/packages/SystemUI/res-keyguard/values/strings.xml
index 1d5aa6d..7432f9c 100644
--- a/packages/SystemUI/res-keyguard/values/strings.xml
+++ b/packages/SystemUI/res-keyguard/values/strings.xml
@@ -402,4 +402,87 @@
number">%d</xliff:g> remaining attempts before SIM becomes permanently unusable. Contact carrier for details.</item>
</plurals>
+ <!-- Header for typographic clock face. [CHAR LIMIT=8] -->
+ <string name="type_clock_header">It\u2019s</string>
+
+ <!-- Hour displayed in words on the typographic clock face. [CHAR LIMIT=8] -->
+ <string-array name="type_clock_hours">
+ <item>Twelve</item>
+ <item>One</item>
+ <item>Two</item>
+ <item>Three</item>
+ <item>Four</item>
+ <item>Five</item>
+ <item>Six</item>
+ <item>Seven</item>
+ <item>Eight</item>
+ <item>Nine</item>
+ <item>Ten</item>
+ <item>Eleven</item>
+ </string-array>
+
+ <!-- Minutes displayed in words on the typographic clock face. [CHAR LIMIT=16] -->
+ <string-array name="type_clock_minutes">
+ <item>O\u2019Clock</item>
+ <item>O\u2019One</item>
+ <item>O\u2019Two</item>
+ <item>O\u2019Three</item>
+ <item>O\u2019Four</item>
+ <item>O\u2019Five</item>
+ <item>O\u2019Six</item>
+ <item>O\u2019Seven</item>
+ <item>O\u2019Eight</item>
+ <item>O\u2019Nine</item>
+ <item>Ten</item>
+ <item>Eleven</item>
+ <item>Twelve</item>
+ <item>Thirteen</item>
+ <item>Fourteen</item>
+ <item>Fifteen</item>
+ <item>Sixteen</item>
+ <item>Seventeen</item>
+ <item>Eighteen</item>
+ <item>Nineteen</item>
+ <item>Twenty</item>
+ <item>Twenty\nOne</item>
+ <item>Twenty\nTwo</item>
+ <item>Twenty\nThree</item>
+ <item>Twenty\nFour</item>
+ <item>Twenty\nFive</item>
+ <item>Twenty\nSix</item>
+ <item>Twenty\nSeven</item>
+ <item>Twenty\nEight</item>
+ <item>Twenty\nNine</item>
+ <item>Thirty</item>
+ <item>Thirty\nOne</item>
+ <item>Thirty\nTwo</item>
+ <item>Thirty\nThree</item>
+ <item>Thirty\nFour</item>
+ <item>Thirty\nFive</item>
+ <item>Thirty\nSix</item>
+ <item>Thirty\nSeven</item>
+ <item>Thirty\nEight</item>
+ <item>Thirty\nNine</item>
+ <item>Forty</item>
+ <item>Forty\nOne</item>
+ <item>Forty\nTwo</item>
+ <item>Forty\nThree</item>
+ <item>Forty\nFour</item>
+ <item>Forty\nFive</item>
+ <item>Forty\nSix</item>
+ <item>Forty\nSeven</item>
+ <item>Forty\nEight</item>
+ <item>Forty\nNine</item>
+ <item>Fifty</item>
+ <item>Fifty\nOne</item>
+ <item>Fifty\nTwo</item>
+ <item>Fifty\nThree</item>
+ <item>Fifty\nFour</item>
+ <item>Fifty\nFive</item>
+ <item>Fifty\nSix</item>
+ <item>Fifty\nSeven</item>
+ <item>Fifty\nEight</item>
+ <item>Fifty\nNine</item>
+ </string-array>
+
</resources>
diff --git a/packages/SystemUI/res/layout/dock_info_overlay.xml b/packages/SystemUI/res/layout/dock_info_overlay.xml
new file mode 100644
index 0000000..430143c
--- /dev/null
+++ b/packages/SystemUI/res/layout/dock_info_overlay.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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.
+ -->
+
+<!-- empty stub -->
+<merge />
diff --git a/packages/SystemUI/res/layout/global_actions_wrapped.xml b/packages/SystemUI/res/layout/global_actions_wrapped.xml
index 7f4e0d2..f932303 100644
--- a/packages/SystemUI/res/layout/global_actions_wrapped.xml
+++ b/packages/SystemUI/res/layout/global_actions_wrapped.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.HardwareUiLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@id/global_actions_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top|right"
diff --git a/packages/SystemUI/res/layout/ongoing_privacy_dialog_item.xml b/packages/SystemUI/res/layout/ongoing_privacy_dialog_item.xml
index ecfbfb4..c8e0845 100644
--- a/packages/SystemUI/res/layout/ongoing_privacy_dialog_item.xml
+++ b/packages/SystemUI/res/layout/ongoing_privacy_dialog_item.xml
@@ -25,12 +25,18 @@
android:focusable="true"
android:layout_gravity="center_vertical">
- <ImageView
- android:id="@+id/app_icon"
+ <FrameLayout
android:layout_height="@dimen/ongoing_appops_dialog_app_icon_size"
android:layout_width="@dimen/ongoing_appops_dialog_app_icon_size"
- android:layout_gravity="start|center_vertical"
- />
+ android:layout_gravity="start|center_vertical">
+
+ <ImageView
+ android:id="@+id/app_icon"
+ android:layout_height="@dimen/ongoing_appops_dialog_app_icon_size"
+ android:layout_width="@dimen/ongoing_appops_dialog_app_icon_size"
+ android:layout_gravity="center"
+ />
+ </FrameLayout>
<TextView
android:id="@+id/app_name"
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index 75c0ec3..7d403b2 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -43,6 +43,8 @@
android:clipToPadding="false"
android:clipChildren="false">
+ <include layout="@layout/dock_info_overlay" />
+
<FrameLayout
android:id="@+id/qs_frame"
android:layout="@layout/qs_panel"
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 476089a..98f0cbe 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -106,7 +106,7 @@
<!-- The default tiles to display in QuickSettings -->
<string name="quick_settings_tiles_default" translatable="false">
- wifi,bt,dnd,flashlight,rotation,battery,cell,airplane,cast
+ wifi,bt,dnd,flashlight,rotation,battery,cell,airplane,cast,sensorprivacy
</string>
<!-- Tiles native to System UI. Order should match "quick_settings_tiles_default" -->
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index ef16bca..ab0bbe1 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -66,9 +66,7 @@
<item name="status_bar_icon_scale_factor" format="float" type="dimen">1.0</item>
<dimen name="group_overflow_number_size">@*android:dimen/notification_text_size</dimen>
- <dimen name="group_overflow_number_size_dark">16sp</dimen>
<dimen name="group_overflow_number_padding">@*android:dimen/notification_content_margin_end</dimen>
- <dimen name="group_overflow_number_extra_padding_dark">@*android:dimen/notification_extra_margin_ambient</dimen>
<!-- max height of a notification such that the content can still fade out when closing -->
<dimen name="max_notification_fadeout_height">100dp</dimen>
@@ -94,9 +92,6 @@
<!-- Height of a large notification in the status bar -->
<dimen name="notification_max_height">294dp</dimen>
- <!-- Height of an ambient notification on ambient display -->
- <dimen name="notification_ambient_height">400dp</dimen>
-
<!-- Height of a heads up notification in the status bar for legacy custom views -->
<dimen name="notification_max_heads_up_height_legacy">128dp</dimen>
@@ -952,6 +947,8 @@
<dimen name="ongoing_appops_dialog_icon_margin">8dp</dimen>
<!-- Height and width of Application icons in Ongoing App Ops dialog -->
<dimen name="ongoing_appops_dialog_app_icon_size">32dp</dimen>
+ <!-- Height and width of Plus sign in Ongoing App Ops dialog -->
+ <dimen name="ongoing_appops_dialog_app_plus_size">24dp</dimen>
<!-- Height of line in Ongoing App Ops dialog-->
<dimen name="ongoing_appops_dialog_line_height">48dp</dimen>
<!-- Side margin of title in Ongoing App Ops dialog -->
diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml
index 633f868..bd34bea 100644
--- a/packages/SystemUI/res/values/ids.xml
+++ b/packages/SystemUI/res/values/ids.xml
@@ -114,5 +114,8 @@
<item type="id" name="aod_mask_transition_progress_tag" />
<item type="id" name="aod_mask_transition_progress_end_tag" />
<item type="id" name="aod_mask_transition_progress_start_tag" />
+
+ <!-- Global Actions Menu -->
+ <item type="id" name="global_actions_view" />
</resources>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 22a0b36..fa675b7 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -64,48 +64,16 @@
<item name="hybridNotificationTextStyle">@style/hybrid_notification_text</item>
</style>
- <style name="HybridNotification.Ambient">
- <item name="hybridNotificationStyle">@style/hybrid_notification_ambient</item>
- <item name="hybridNotificationTitleStyle">@style/hybrid_notification_title_ambient</item>
- <item name="hybridNotificationTextStyle">@style/hybrid_notification_text_ambient</item>
- </style>
-
- <style name="hybrid_notification_ambient">
- <item name="android:paddingStart">@*android:dimen/notification_extra_margin_ambient</item>
- <item name="android:paddingEnd">@*android:dimen/notification_extra_margin_ambient</item>
- <item name="android:orientation">vertical</item>
- </style>
-
<style name="hybrid_notification">
<item name="android:paddingStart">@*android:dimen/notification_content_margin_start</item>
<item name="android:paddingEnd">12dp</item>
</style>
- <style name="hybrid_notification_title_ambient">
- <item name="android:layout_marginTop">@*android:dimen/notification_header_margin_top_ambient</item>
- <item name="android:paddingStart">@*android:dimen/notification_content_margin_start</item>
- <item name="android:paddingEnd">@*android:dimen/notification_content_margin_end</item>
- <item name="android:textAppearance">@*android:style/Notification.Header.Ambient</item>
- <item name="android:layout_gravity">top|center_horizontal</item>
- <item name="android:textSize">@*android:dimen/notification_ambient_title_text_size</item>
- <item name="android:textColor">#ffffffff</item>
- </style>
-
<style name="hybrid_notification_title">
<item name="android:paddingEnd">4dp</item>
<item name="android:textAppearance">@*android:style/TextAppearance.Material.Notification.Title</item>
</style>
- <style name="hybrid_notification_text_ambient">
- <item name="android:paddingStart">@*android:dimen/notification_content_margin_start</item>
- <item name="android:paddingEnd">@*android:dimen/notification_content_margin_end</item>
- <item name="android:textSize">@*android:dimen/notification_ambient_text_size</item>
- <item name="android:textColor">#eeffffff</item>
- <item name="android:gravity">top|center_horizontal</item>
- <item name="android:ellipsize">end</item>
- <item name="android:maxLines">3</item>
- </style>
-
<style name="hybrid_notification_text"
parent="@*android:style/Widget.Material.Notification.Text">
<item name="android:paddingEnd">4dp</item>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
index 523720d5..1a684a0 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
@@ -323,7 +323,7 @@
return null;
}
// Create our own ClassLoader so we can use our own code as the parent.
- ClassLoader classLoader = mManager.getClassLoader(info.sourceDir, info.packageName);
+ ClassLoader classLoader = mManager.getClassLoader(info);
Context pluginContext = new PluginContextWrapper(
mContext.createApplicationContext(info, 0), classLoader);
Class<?> pluginClass = Class.forName(cls, true, classLoader);
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java
index da143f9..7139708 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java
@@ -14,6 +14,7 @@
package com.android.systemui.shared.plugins;
+import android.app.LoadedApk;
import android.app.Notification;
import android.app.Notification.Action;
import android.app.NotificationManager;
@@ -44,15 +45,17 @@
import com.android.systemui.plugins.Plugin;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.annotations.ProvidesInterface;
-import com.android.systemui.shared.plugins.PluginInstanceManager.PluginContextWrapper;
import com.android.systemui.shared.plugins.PluginInstanceManager.PluginInfo;
import dalvik.system.PathClassLoader;
+import java.io.File;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.Thread.UncaughtExceptionHandler;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import java.util.Map;
/**
* @see Plugin
@@ -117,6 +120,7 @@
return mPluginEnabler;
}
+ // TODO(mankoff): This appears to be only called from tests. Remove?
public <T extends Plugin> T getOneShotPlugin(Class<T> cls) {
ProvidesInterface info = cls.getDeclaredAnnotation(ProvidesInterface.class);
if (info == null) {
@@ -282,17 +286,25 @@
}
}
- public ClassLoader getClassLoader(String sourceDir, String pkg) {
- if (!isDebuggable && !mWhitelistedPlugins.contains(pkg)) {
- Log.w(TAG, "Cannot get class loader for non-whitelisted plugin. Src:" + sourceDir +
- ", pkg: " + pkg);
+ /** Returns class loader specific for the given plugin. */
+ public ClassLoader getClassLoader(ApplicationInfo appInfo) {
+ if (!isDebuggable && !mWhitelistedPlugins.contains(appInfo.packageName)) {
+ Log.w(TAG, "Cannot get class loader for non-whitelisted plugin. Src:"
+ + appInfo.sourceDir + ", pkg: " + appInfo.packageName);
return null;
}
- if (mClassLoaders.containsKey(pkg)) {
- return mClassLoaders.get(pkg);
+ if (mClassLoaders.containsKey(appInfo.packageName)) {
+ return mClassLoaders.get(appInfo.packageName);
}
- ClassLoader classLoader = new PathClassLoader(sourceDir, getParentClassLoader());
- mClassLoaders.put(pkg, classLoader);
+
+ List<String> zipPaths = new ArrayList<>();
+ List<String> libPaths = new ArrayList<>();
+ LoadedApk.makePaths(null, true, appInfo, zipPaths, libPaths);
+ ClassLoader classLoader = new PathClassLoader(
+ TextUtils.join(File.pathSeparator, zipPaths),
+ TextUtils.join(File.pathSeparator, libPaths),
+ getParentClassLoader());
+ mClassLoaders.put(appInfo.packageName, classLoader);
return classLoader;
}
@@ -309,11 +321,6 @@
return mParentClassLoader;
}
- public Context getContext(ApplicationInfo info, String pkg) throws NameNotFoundException {
- ClassLoader classLoader = getClassLoader(info.sourceDir, pkg);
- return new PluginContextWrapper(mContext.createApplicationContext(info, 0), classLoader);
- }
-
public <T> boolean dependsOn(Plugin p, Class<T> cls) {
for (int i = 0; i < mPluginMap.size(); i++) {
if (mPluginMap.valueAt(i).dependsOn(p, cls)) {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
index 41e9eba..a055950 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
@@ -46,6 +46,7 @@
protected View mEcaView;
protected boolean mEnableHaptics;
private boolean mDismissing;
+ protected boolean mResumed;
private CountDownTimer mCountdownTimer = null;
// To avoid accidental lockout due to events while the device in in the pocket, ignore
@@ -263,6 +264,8 @@
@Override
public void onPause() {
+ mResumed = false;
+
if (mCountdownTimer != null) {
mCountdownTimer.cancel();
mCountdownTimer = null;
@@ -276,6 +279,7 @@
@Override
public void onResume(int reason) {
+ mResumed = true;
}
@Override
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
index 3cfd6a9..1aff394 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
@@ -1,9 +1,15 @@
package com.android.keyguard;
+import android.content.ContentResolver;
import android.content.Context;
+import android.database.ContentObserver;
import android.graphics.Paint;
import android.graphics.Paint.Style;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
import android.util.AttributeSet;
+import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
@@ -12,6 +18,9 @@
import androidx.annotation.VisibleForTesting;
+import com.android.keyguard.clock.BubbleClockController;
+import com.android.keyguard.clock.StretchAnalogClockController;
+import com.android.keyguard.clock.TypeClockController;
import com.android.systemui.Dependency;
import com.android.systemui.plugins.ClockPlugin;
import com.android.systemui.statusbar.StatusBarState;
@@ -19,13 +28,19 @@
import com.android.systemui.statusbar.policy.ExtensionController;
import com.android.systemui.statusbar.policy.ExtensionController.Extension;
+import java.util.Objects;
import java.util.TimeZone;
import java.util.function.Consumer;
+import java.util.function.Supplier;
/**
* Switch to show plugin clock when plugin is connected, otherwise it will show default clock.
*/
public class KeyguardClockSwitch extends RelativeLayout {
+
+ private LayoutInflater mLayoutInflater;
+
+ private final ContentResolver mContentResolver;
/**
* Optional/alternative clock injected via plugin.
*/
@@ -79,12 +94,25 @@
}
};
+ private final ContentObserver mContentObserver =
+ new ContentObserver(new Handler(Looper.getMainLooper())) {
+ @Override
+ public void onChange(boolean selfChange) {
+ super.onChange(selfChange);
+ if (mClockExtension != null) {
+ mClockExtension.reload();
+ }
+ }
+ };
+
public KeyguardClockSwitch(Context context) {
this(context, null);
}
public KeyguardClockSwitch(Context context, AttributeSet attrs) {
super(context, attrs);
+ mLayoutInflater = LayoutInflater.from(context);
+ mContentResolver = context.getContentResolver();
}
/**
@@ -108,7 +136,34 @@
mClockExtension = Dependency.get(ExtensionController.class).newExtension(ClockPlugin.class)
.withPlugin(ClockPlugin.class)
.withCallback(mClockPluginConsumer)
+ // Using withDefault even though this isn't the default as a workaround.
+ // ExtensionBulider doesn't provide the ability to supply a ClockPlugin
+ // instance based off of the value of a setting. Since multiple "default"
+ // can be provided, using a supplier that changes the settings value.
+ // A null return will cause Extension#reload to look at the next "default"
+ // supplier.
+ .withDefault(
+ new SettingsGattedSupplier(
+ mContentResolver,
+ Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE,
+ BubbleClockController.class.getName(),
+ () -> BubbleClockController.build(mLayoutInflater)))
+ .withDefault(
+ new SettingsGattedSupplier(
+ mContentResolver,
+ Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE,
+ StretchAnalogClockController.class.getName(),
+ () -> StretchAnalogClockController.build(mLayoutInflater)))
+ .withDefault(
+ new SettingsGattedSupplier(
+ mContentResolver,
+ Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE,
+ TypeClockController.class.getName(),
+ () -> TypeClockController.build(mLayoutInflater)))
.build();
+ mContentResolver.registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE),
+ false, mContentObserver);
Dependency.get(StatusBarStateController.class).addCallback(mStateListener);
}
@@ -116,6 +171,7 @@
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mClockExtension.destroy();
+ mContentResolver.unregisterContentObserver(mContentObserver);
Dependency.get(StatusBarStateController.class).removeCallback(mStateListener);
}
@@ -199,10 +255,6 @@
mClockView.setShowCurrentUserTime(showCurrentUserTime);
}
- public void setElegantTextHeight(boolean elegant) {
- mClockView.setElegantTextHeight(elegant);
- }
-
public void setTextSize(int unit, float size) {
mClockView.setTextSize(unit, size);
}
@@ -269,4 +321,44 @@
StatusBarStateController.StateListener getStateListener() {
return mStateListener;
}
+
+ /**
+ * Supplier that only gets an instance when a settings value matches expected value.
+ */
+ private static class SettingsGattedSupplier implements Supplier<ClockPlugin> {
+
+ private final ContentResolver mContentResolver;
+ private final String mKey;
+ private final String mValue;
+ private final Supplier<ClockPlugin> mSupplier;
+
+ /**
+ * Constructs a supplier that changes secure setting key against value.
+ *
+ * @param contentResolver Used to look up settings value.
+ * @param key Settings key.
+ * @param value If the setting matches this values that get supplies a ClockPlugin
+ * instance.
+ * @param supplier Supplier of ClockPlugin instance, only used if the setting
+ * matches value.
+ */
+ SettingsGattedSupplier(ContentResolver contentResolver, String key, String value,
+ Supplier<ClockPlugin> supplier) {
+ mContentResolver = contentResolver;
+ mKey = key;
+ mValue = value;
+ mSupplier = supplier;
+ }
+
+ /**
+ * Returns null if the settings value doesn't match the expected value.
+ *
+ * A null return causes Extension#reload to skip this supplier and move to the next.
+ */
+ @Override
+ public ClockPlugin get() {
+ final String currentValue = Settings.Secure.getString(mContentResolver, mKey);
+ return Objects.equals(currentValue, mValue) ? mSupplier.get() : null;
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java
index 41afa9a..64c5b17 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.graphics.Rect;
+import android.os.UserHandle;
import android.text.Editable;
import android.text.InputType;
import android.text.TextUtils;
@@ -79,8 +80,14 @@
@Override
protected void resetState() {
+ mPasswordEntry.setTextOperationUser(UserHandle.of(KeyguardUpdateMonitor.getCurrentUser()));
mSecurityMessageDisplay.setMessage("");
final boolean wasDisabled = mPasswordEntry.isEnabled();
+ // Don't set enabled password entry & showSoftInput when PasswordEntry is invisible or in
+ // pausing stage.
+ if (!mResumed || !mPasswordEntry.isVisibleToUser()) {
+ return;
+ }
setPasswordEntryEnabled(true);
setPasswordEntryInputEnabled(true);
if (wasDisabled) {
@@ -169,6 +176,7 @@
Context.INPUT_METHOD_SERVICE);
mPasswordEntry = findViewById(getPasswordTextViewId());
+ mPasswordEntry.setTextOperationUser(UserHandle.of(KeyguardUpdateMonitor.getCurrentUser()));
mPasswordEntryDisabler = new TextViewInputDisabler(mPasswordEntry);
mPasswordEntry.setKeyListener(TextKeyListener.getInstance());
mPasswordEntry.setInputType(InputType.TYPE_CLASS_TEXT
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
index 669e6ff..bac7844 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
@@ -90,7 +90,7 @@
*/
private Runnable mContentChangeListener;
private Slice mSlice;
- private boolean mPulsing;
+ private boolean mHasHeader;
public KeyguardSliceView(Context context) {
this(context, null, 0);
@@ -150,10 +150,18 @@
Dependency.get(ConfigurationController.class).removeCallback(this);
}
+ /**
+ * Returns whether the current visible slice has a title/header.
+ */
+ public boolean hasHeader() {
+ return mHasHeader;
+ }
+
private void showSlice() {
Trace.beginSection("KeyguardSliceView#showSlice");
- if (mPulsing || mSlice == null) {
+ if (mSlice == null) {
mRow.setVisibility(GONE);
+ mHasHeader = false;
if (mContentChangeListener != null) {
mContentChangeListener.run();
}
@@ -162,7 +170,7 @@
ListContent lc = new ListContent(getContext(), mSlice);
SliceContent headerContent = lc.getHeader();
- boolean hasHeader = headerContent != null
+ mHasHeader = headerContent != null
&& !headerContent.getSliceItem().hasHint(HINT_LIST_ITEM);
List<SliceContent> subItems = new ArrayList<>();
for (int i = 0; i < lc.getRowItems().size(); i++) {
@@ -177,7 +185,7 @@
mClickActions.clear();
final int subItemsCount = subItems.size();
final int blendedColor = getTextColor();
- final int startIndex = hasHeader ? 1 : 0; // First item is header; skip it
+ final int startIndex = mHasHeader ? 1 : 0; // First item is header; skip it
mRow.setVisibility(subItemsCount > 0 ? VISIBLE : GONE);
for (int i = startIndex; i < subItemsCount; i++) {
RowContent rc = (RowContent) subItems.get(i);
@@ -189,7 +197,7 @@
button = new KeyguardSliceButton(mContext);
button.setTextColor(blendedColor);
button.setTag(itemTag);
- final int viewIndex = i - (hasHeader ? 1 : 0);
+ final int viewIndex = i - (mHasHeader ? 1 : 0);
mRow.addView(button, viewIndex);
}
@@ -234,18 +242,6 @@
Trace.endSection();
}
- public void setPulsing(boolean pulsing, boolean animate) {
- mPulsing = pulsing;
- LayoutTransition transition = getLayoutTransition();
- if (!animate) {
- setLayoutTransition(null);
- }
- showSlice();
- if (!animate) {
- setLayoutTransition(transition);
- }
- }
-
public void setDarkAmount(float darkAmount) {
mDarkAmount = darkAmount;
mRow.setDarkAmount(darkAmount);
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
index f0cdc89..bb549ad 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
@@ -72,7 +72,6 @@
private ArraySet<View> mVisibleInDoze;
private boolean mPulsing;
- private boolean mWasPulsing;
private float mDarkAmount = 0;
private int mTextColor;
private int mLastLayoutHeight;
@@ -202,10 +201,6 @@
updateOwnerInfo();
updateLogoutView();
updateDark();
-
- // Disable elegant text height because our fancy colon makes the ymin value huge for no
- // reason.
- mClockView.setElegantTextHeight(false);
}
/**
@@ -214,7 +209,7 @@
private void onSliceContentChanged() {
LinearLayout.LayoutParams layoutParams =
(LinearLayout.LayoutParams) mClockView.getLayoutParams();
- layoutParams.bottomMargin = mPulsing ? mSmallClockPadding : 0;
+ layoutParams.bottomMargin = mKeyguardSlice.hasHeader() ? mSmallClockPadding : 0;
mClockView.setLayoutParams(layoutParams);
}
@@ -224,16 +219,16 @@
@Override
public void onLayoutChange(View view, int left, int top, int right, int bottom,
int oldLeft, int oldTop, int oldRight, int oldBottom) {
- int heightOffset = mPulsing || mWasPulsing ? 0 : getHeight() - mLastLayoutHeight;
+ boolean smallClock = mKeyguardSlice.hasHeader();
+ int heightOffset = smallClock ? 0 : getHeight() - mLastLayoutHeight;
long duration = KeyguardSliceView.DEFAULT_ANIM_DURATION;
- long delay = mPulsing || mWasPulsing ? 0 : duration / 4;
- mWasPulsing = false;
+ long delay = smallClock ? 0 : duration / 4;
boolean shouldAnimate = mKeyguardSlice.getLayoutTransition() != null
&& mKeyguardSlice.getLayoutTransition().isRunning();
if (view == mClockView) {
- float clockScale = mPulsing ? mSmallClockScale : 1;
- Paint.Style style = mPulsing ? Paint.Style.FILL_AND_STROKE : Paint.Style.FILL;
+ float clockScale = smallClock ? mSmallClockScale : 1;
+ Paint.Style style = smallClock ? Paint.Style.FILL_AND_STROKE : Paint.Style.FILL;
mClockView.animate().cancel();
if (shouldAnimate) {
mClockView.setY(oldTop + heightOffset);
@@ -438,15 +433,11 @@
}
}
- public void setPulsing(boolean pulsing, boolean animate) {
+ public void setPulsing(boolean pulsing) {
if (mPulsing == pulsing) {
return;
}
- if (mPulsing) {
- mWasPulsing = true;
- }
mPulsing = pulsing;
- mKeyguardSlice.setPulsing(pulsing, animate);
updateDozeVisibleViews();
}
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java b/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java
new file mode 100644
index 0000000..db6127f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import android.graphics.Paint.Style;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextClock;
+
+import com.android.keyguard.R;
+import com.android.systemui.plugins.ClockPlugin;
+
+import java.util.TimeZone;
+
+/**
+ * Controller for Bubble clock that can appear on lock screen and AOD.
+ */
+public class BubbleClockController implements ClockPlugin {
+
+ /**
+ * Custom clock shown on AOD screen and behind stack scroller on lock.
+ */
+ private View mView;
+ private TextClock mDigitalClock;
+ private ImageClock mAnalogClock;
+
+ /**
+ * Small clock shown on lock screen above stack scroller.
+ */
+ private View mLockClockContainer;
+ private TextClock mLockClock;
+
+ /**
+ * Controller for transition to dark state.
+ */
+ private CrossFadeDarkController mDarkController;
+
+ private BubbleClockController() { }
+
+ /**
+ * Create a BubbleClockController instance.
+ *
+ * @param layoutInflater Inflater used to inflate custom clock views.
+ */
+ public static BubbleClockController build(LayoutInflater layoutInflater) {
+ BubbleClockController controller = new BubbleClockController();
+ controller.createViews(layoutInflater);
+ return controller;
+ }
+
+ private void createViews(LayoutInflater layoutInflater) {
+ mView = layoutInflater.inflate(R.layout.bubble_clock, null);
+ mDigitalClock = (TextClock) mView.findViewById(R.id.digital_clock);
+ mAnalogClock = (ImageClock) mView.findViewById(R.id.analog_clock);
+
+ mLockClockContainer = layoutInflater.inflate(R.layout.digital_clock, null);
+ mLockClock = (TextClock) mLockClockContainer.findViewById(R.id.lock_screen_clock);
+ mLockClock.setVisibility(View.GONE);
+
+ mDarkController = new CrossFadeDarkController(mDigitalClock, mLockClock);
+ }
+
+ @Override
+ public View getView() {
+ return mLockClockContainer;
+ }
+
+ @Override
+ public View getBigClockView() {
+ return mView;
+ }
+
+ @Override
+ public void setStyle(Style style) {}
+
+ @Override
+ public void setTextColor(int color) {
+ mLockClock.setTextColor(color);
+ mDigitalClock.setTextColor(color);
+ }
+
+ @Override
+ public void dozeTimeTick() {
+ mAnalogClock.onTimeChanged();
+ }
+
+ @Override
+ public void setDarkAmount(float darkAmount) {
+ mDarkController.setDarkAmount(darkAmount);
+ }
+
+ @Override
+ public void onTimeZoneChanged(TimeZone timeZone) {
+ mAnalogClock.onTimeZoneChanged(timeZone);
+ }
+
+ @Override
+ public boolean shouldShowStatusArea() {
+ return false;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/ClockLayout.java b/packages/SystemUI/src/com/android/keyguard/clock/ClockLayout.java
new file mode 100644
index 0000000..3591dc8
--- /dev/null
+++ b/packages/SystemUI/src/com/android/keyguard/clock/ClockLayout.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInOffset;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.FrameLayout;
+
+import com.android.keyguard.R;
+
+/**
+ * Positions clock faces (analog, digital, typographic) and handles pixel shifting
+ * to prevent screen burn-in.
+ */
+public class ClockLayout extends FrameLayout {
+
+ /**
+ * Clock face views.
+ */
+ private View mDigitalClock;
+ private View mAnalogClock;
+ private View mTypeClock;
+
+ /**
+ * Pixel shifting amplitidues used to prevent screen burn-in.
+ */
+ private int mBurnInPreventionOffsetX;
+ private int mBurnInPreventionOffsetY;
+
+ public ClockLayout(Context context) {
+ this(context, null);
+ }
+
+ public ClockLayout(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public ClockLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mDigitalClock = findViewById(R.id.digital_clock);
+ mAnalogClock = findViewById(R.id.analog_clock);
+ mTypeClock = findViewById(R.id.type_clock);
+
+ // Get pixel shifting X, Y amplitudes from resources.
+ Resources resources = getResources();
+ mBurnInPreventionOffsetX = resources.getDimensionPixelSize(
+ R.dimen.burn_in_prevention_offset_x);
+ mBurnInPreventionOffsetY = resources.getDimensionPixelSize(
+ R.dimen.burn_in_prevention_offset_y);
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+ super.onLayout(changed, left, top, right, bottom);
+
+ final float offsetX = getBurnInOffset(mBurnInPreventionOffsetX, true);
+ final float offsetY = getBurnInOffset(mBurnInPreventionOffsetY, false);
+
+ // Put digital clock in two left corner of the screen.
+ if (mDigitalClock != null) {
+ mDigitalClock.setX(0.1f * getWidth() + offsetX);
+ mDigitalClock.setY(0.1f * getHeight() + offsetY);
+ }
+
+ // Put the analog clock in the middle of the screen.
+ if (mAnalogClock != null) {
+ mAnalogClock.setX(Math.max(0f, 0.5f * (getWidth() - mAnalogClock.getWidth()))
+ + offsetX);
+ mAnalogClock.setY(Math.max(0f, 0.5f * (getHeight() - mAnalogClock.getHeight()))
+ + offsetY);
+ }
+
+ // Put the typographic clock part way down the screen.
+ if (mTypeClock != null) {
+ mTypeClock.setX(offsetX);
+ mTypeClock.setY(0.2f * getHeight() + offsetY);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/CrossFadeDarkController.java b/packages/SystemUI/src/com/android/keyguard/clock/CrossFadeDarkController.java
new file mode 100644
index 0000000..3c3f475
--- /dev/null
+++ b/packages/SystemUI/src/com/android/keyguard/clock/CrossFadeDarkController.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import android.view.View;
+
+/**
+ * Controls transition to dark state by cross fading between views.
+ */
+final class CrossFadeDarkController {
+
+ private final View mFadeInView;
+ private final View mFadeOutView;
+
+ /**
+ * Creates a new controller that fades between views.
+ *
+ * @param fadeInView View to fade in when transitioning to AOD.
+ * @param fadeOutView View to fade out when transitioning to AOD.
+ */
+ CrossFadeDarkController(View fadeInView, View fadeOutView) {
+ mFadeInView = fadeInView;
+ mFadeOutView = fadeOutView;
+ }
+
+ /**
+ * Sets the amount the system has transitioned to the dark state.
+ *
+ * @param darkAmount Amount of transition to dark state: 1f for AOD and 0f for lock screen.
+ */
+ void setDarkAmount(float darkAmount) {
+ mFadeInView.setAlpha(Math.max(0f, 2f * darkAmount - 1f));
+ if (darkAmount == 0f) {
+ mFadeInView.setVisibility(View.GONE);
+ } else {
+ if (mFadeInView.getVisibility() == View.GONE) {
+ mFadeInView.setVisibility(View.VISIBLE);
+ }
+ }
+ mFadeOutView.setAlpha(Math.max(0f, 1f - 2f * darkAmount));
+ if (darkAmount == 1f) {
+ mFadeOutView.setVisibility(View.GONE);
+ } else {
+ if (mFadeOutView.getVisibility() == View.GONE) {
+ mFadeOutView.setVisibility(View.VISIBLE);
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/ImageClock.java b/packages/SystemUI/src/com/android/keyguard/clock/ImageClock.java
new file mode 100644
index 0000000..2c709e0
--- /dev/null
+++ b/packages/SystemUI/src/com/android/keyguard/clock/ImageClock.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import android.content.Context;
+import android.text.format.DateFormat;
+import android.util.AttributeSet;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+
+import com.android.keyguard.R;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.TimeZone;
+
+/**
+ * Clock composed of two images that rotate with the time.
+ *
+ * The images are the clock hands. ImageClock expects two child ImageViews
+ * with ids hour_hand and minute_hand.
+ */
+public class ImageClock extends FrameLayout {
+
+ private ImageView mHourHand;
+ private ImageView mMinuteHand;
+ private Calendar mTime;
+ private String mDescFormat;
+ private TimeZone mTimeZone;
+
+ public ImageClock(Context context) {
+ this(context, null);
+ }
+
+ public ImageClock(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public ImageClock(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ mTime = Calendar.getInstance();
+ mDescFormat = ((SimpleDateFormat) DateFormat.getTimeFormat(context)).toLocalizedPattern();
+ }
+
+ /**
+ * Call when the time changes to update the rotation of the clock hands.
+ */
+ public void onTimeChanged() {
+ mTime.setTimeInMillis(System.currentTimeMillis());
+ final float hourAngle = mTime.get(Calendar.HOUR) * 30f;
+ mHourHand.setRotation(hourAngle);
+ final float minuteAngle = mTime.get(Calendar.MINUTE) * 6f;
+ mMinuteHand.setRotation(minuteAngle);
+ setContentDescription(DateFormat.format(mDescFormat, mTime));
+ invalidate();
+ }
+
+ /**
+ * Call when the time zone has changed to update clock hands.
+ *
+ * @param timeZone The updated time zone that will be used.
+ */
+ public void onTimeZoneChanged(TimeZone timeZone) {
+ mTimeZone = timeZone;
+ mTime.setTimeZone(timeZone);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mHourHand = findViewById(R.id.hour_hand);
+ mMinuteHand = findViewById(R.id.minute_hand);
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mTime = Calendar.getInstance(mTimeZone != null ? mTimeZone : TimeZone.getDefault());
+ onTimeChanged();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/StretchAnalogClock.java b/packages/SystemUI/src/com/android/keyguard/clock/StretchAnalogClock.java
new file mode 100644
index 0000000..87347545
--- /dev/null
+++ b/packages/SystemUI/src/com/android/keyguard/clock/StretchAnalogClock.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.util.AttributeSet;
+import android.view.View;
+
+import java.util.Calendar;
+import java.util.TimeZone;
+
+/**
+ * Analog clock where the minute hand extends off of the screen.
+ */
+public class StretchAnalogClock extends View {
+
+ private static final int DEFAULT_COLOR = Color.parseColor("#F5C983");
+ private static final float HOUR_STROKE_WIDTH = 60f;
+ private static final float MINUTE_STROKE_WIDTH = 20f;
+ private static final float CENTER_GAP_AND_CIRCLE_RADIUS = 80f;
+
+ private final Paint mHourPaint = new Paint();
+ private final Paint mMinutePaint = new Paint();
+ private Calendar mTime;
+ private TimeZone mTimeZone;
+
+ public StretchAnalogClock(Context context) {
+ this(context, null);
+ }
+
+ public StretchAnalogClock(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public StretchAnalogClock(Context context, AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public StretchAnalogClock(Context context, AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ init();
+ }
+
+ /**
+ * Call when the time changes to update the clock hands.
+ */
+ public void onTimeChanged() {
+ mTime.setTimeInMillis(System.currentTimeMillis());
+ invalidate();
+ }
+
+ /**
+ * Call when the time zone has changed to update clock hands.
+ *
+ * @param timeZone The updated time zone that will be used.
+ */
+ public void onTimeZoneChanged(TimeZone timeZone) {
+ mTime.setTimeZone(timeZone);
+ }
+
+ /**
+ * Set the color of the minute hand.
+ */
+ public void setMinuteHandColor(int color) {
+ mMinutePaint.setColor(color);
+ invalidate();
+ }
+
+ private void init() {
+ mHourPaint.setColor(DEFAULT_COLOR);
+ mHourPaint.setStrokeWidth(HOUR_STROKE_WIDTH);
+ mHourPaint.setAntiAlias(true);
+ mHourPaint.setStrokeCap(Paint.Cap.ROUND);
+
+ mMinutePaint.setColor(Color.WHITE);
+ mMinutePaint.setStrokeWidth(MINUTE_STROKE_WIDTH);
+ mMinutePaint.setAntiAlias(true);
+ mMinutePaint.setStrokeCap(Paint.Cap.ROUND);
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ final float centerX = getWidth() / 2f;
+ final float centerY = getHeight() / 2f;
+
+ final float minutesRotation = mTime.get(Calendar.MINUTE) * 6f;
+ final float hoursRotation = (mTime.get(Calendar.HOUR) * 30);
+
+ // Compute length of clock hands. Hour hand is 60% the length from center to edge
+ // and minute hand is twice the length to make sure it extends past screen edge.
+ double sMinuteHandLengthFactor = Math.sin(2d * Math.PI * minutesRotation / 360d);
+ float sMinuteHandLength = (float) (2d * (centerY + (centerX - centerY)
+ * sMinuteHandLengthFactor * sMinuteHandLengthFactor));
+ double sHourHandLengthFactor = Math.sin(2d * Math.PI * hoursRotation / 360d);
+ float sHourHandLength = (float) (0.6d * (centerY + (centerX - centerY)
+ * sHourHandLengthFactor * sHourHandLengthFactor));
+
+ canvas.save();
+
+ canvas.rotate(minutesRotation, centerX, centerY);
+ canvas.drawLine(
+ centerX,
+ centerY + CENTER_GAP_AND_CIRCLE_RADIUS,
+ centerX,
+ centerY - sMinuteHandLength,
+ mMinutePaint);
+
+ canvas.rotate(hoursRotation - minutesRotation, centerX, centerY);
+ canvas.drawLine(
+ centerX,
+ centerY + CENTER_GAP_AND_CIRCLE_RADIUS,
+ centerX,
+ centerY - sHourHandLength,
+ mHourPaint);
+
+ canvas.restore();
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mTime = Calendar.getInstance(mTimeZone != null ? mTimeZone : TimeZone.getDefault());
+ onTimeChanged();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/StretchAnalogClockController.java b/packages/SystemUI/src/com/android/keyguard/clock/StretchAnalogClockController.java
new file mode 100644
index 0000000..0a39158
--- /dev/null
+++ b/packages/SystemUI/src/com/android/keyguard/clock/StretchAnalogClockController.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import android.graphics.Paint.Style;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextClock;
+
+import com.android.keyguard.R;
+import com.android.systemui.plugins.ClockPlugin;
+
+import java.util.TimeZone;
+
+/**
+ * Controller for Stretch clock that can appear on lock screen and AOD.
+ */
+public class StretchAnalogClockController implements ClockPlugin {
+
+ /**
+ * Custom clock shown on AOD screen and behind stack scroller on lock.
+ */
+ private View mBigClockView;
+ private TextClock mDigitalClock;
+ private StretchAnalogClock mAnalogClock;
+
+ /**
+ * Small clock shown on lock screen above stack scroller.
+ */
+ private View mView;
+ private TextClock mLockClock;
+
+ /**
+ * Controller for transition to dark state.
+ */
+ private CrossFadeDarkController mDarkController;
+
+ private StretchAnalogClockController() { }
+
+ /**
+ * Create a BubbleClockController instance.
+ *
+ * @param layoutInflater Inflater used to inflate custom clock views.
+ */
+ public static StretchAnalogClockController build(LayoutInflater layoutInflater) {
+ StretchAnalogClockController controller = new StretchAnalogClockController();
+ controller.createViews(layoutInflater);
+ return controller;
+ }
+
+ private void createViews(LayoutInflater layoutInflater) {
+ mBigClockView = layoutInflater.inflate(R.layout.stretchanalog_clock, null);
+ mAnalogClock = mBigClockView.findViewById(R.id.analog_clock);
+ mDigitalClock = mBigClockView.findViewById(R.id.digital_clock);
+
+ mView = layoutInflater.inflate(R.layout.digital_clock, null);
+ mLockClock = mView.findViewById(R.id.lock_screen_clock);
+ mLockClock.setVisibility(View.GONE);
+
+ mDarkController = new CrossFadeDarkController(mDigitalClock, mLockClock);
+ }
+
+ @Override
+ public View getView() {
+ return mView;
+ }
+
+ @Override
+ public View getBigClockView() {
+ return mBigClockView;
+ }
+
+ @Override
+ public void setStyle(Style style) {}
+
+ @Override
+ public void setTextColor(int color) {
+ mLockClock.setTextColor(color);
+ mDigitalClock.setTextColor(color);
+ mAnalogClock.setMinuteHandColor(color);
+ }
+
+ @Override
+ public void dozeTimeTick() {
+ mAnalogClock.onTimeChanged();
+ }
+
+ @Override
+ public void setDarkAmount(float darkAmount) {
+ mDarkController.setDarkAmount(darkAmount);
+ }
+
+ @Override
+ public void onTimeZoneChanged(TimeZone timeZone) {
+ mAnalogClock.onTimeZoneChanged(timeZone);
+ }
+
+ @Override
+ public boolean shouldShowStatusArea() {
+ return false;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/TypeClockController.java b/packages/SystemUI/src/com/android/keyguard/clock/TypeClockController.java
new file mode 100644
index 0000000..17d929d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/keyguard/clock/TypeClockController.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import android.graphics.Paint.Style;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import com.android.keyguard.R;
+import com.android.systemui.plugins.ClockPlugin;
+
+import java.util.TimeZone;
+
+/**
+ * Plugin for a custom Typographic clock face that displays the time in words.
+ */
+public class TypeClockController implements ClockPlugin {
+
+ /**
+ * Custom clock shown on AOD screen and behind stack scroller on lock.
+ */
+ private View mView;
+ private TypographicClock mTypeClock;
+
+ /**
+ * Small clock shown on lock screen above stack scroller.
+ */
+ private View mLockClockContainer;
+
+ /**
+ * Controller for transition into dark state.
+ */
+ private CrossFadeDarkController mDarkController;
+
+ private TypeClockController() {}
+
+ /**
+ * Create a TypeClockController instance.
+ *
+ * @param inflater Inflater used to inflate custom clock views.
+ */
+ public static TypeClockController build(LayoutInflater inflater) {
+ TypeClockController controller = new TypeClockController();
+ controller.createViews(inflater);
+ return controller;
+ }
+
+ private void createViews(LayoutInflater inflater) {
+ mView = inflater.inflate(R.layout.type_clock, null);
+ mTypeClock = mView.findViewById(R.id.type_clock);
+
+ // For now, this view is used to hide the default digital clock.
+ // Need better transition to lock screen.
+ mLockClockContainer = inflater.inflate(R.layout.digital_clock, null);
+ mLockClockContainer.setVisibility(View.GONE);
+ }
+
+ @Override
+ public View getView() {
+ return mLockClockContainer;
+ }
+
+ @Override
+ public View getBigClockView() {
+ return mView;
+ }
+
+ @Override
+ public void setStyle(Style style) {}
+
+ @Override
+ public void setTextColor(int color) {
+ mTypeClock.setTextColor(color);
+ }
+
+ @Override
+ public void dozeTimeTick() {
+ mTypeClock.onTimeChanged();
+ }
+
+ @Override
+ public void setDarkAmount(float darkAmount) {}
+
+ @Override
+ public void onTimeZoneChanged(TimeZone timeZone) {
+ mTypeClock.onTimeZoneChanged(timeZone);
+ }
+
+ @Override
+ public boolean shouldShowStatusArea() {
+ return false;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/TypographicClock.java b/packages/SystemUI/src/com/android/keyguard/clock/TypographicClock.java
new file mode 100644
index 0000000..5f9da3e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/keyguard/clock/TypographicClock.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.text.format.DateFormat;
+import android.util.AttributeSet;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.keyguard.R;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.TimeZone;
+
+/**
+ * Clock that presents the time in words.
+ */
+public class TypographicClock extends LinearLayout {
+
+ private final String[] mHours;
+ private final String[] mMinutes;
+ private TextView mHeaderText;
+ private TextView mHourText;
+ private TextView mMinuteText;
+ private Calendar mTime;
+ private String mDescFormat;
+ private TimeZone mTimeZone;
+
+ public TypographicClock(Context context) {
+ this(context, null);
+ }
+
+ public TypographicClock(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public TypographicClock(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ mTime = Calendar.getInstance();
+ mDescFormat = ((SimpleDateFormat) DateFormat.getTimeFormat(context)).toLocalizedPattern();
+ Resources res = context.getResources();
+ mHours = res.getStringArray(R.array.type_clock_hours);
+ mMinutes = res.getStringArray(R.array.type_clock_minutes);
+ }
+
+ /**
+ * Call when the time changes to update the text of the time.
+ */
+ public void onTimeChanged() {
+ mTime.setTimeInMillis(System.currentTimeMillis());
+ setContentDescription(DateFormat.format(mDescFormat, mTime));
+ final int hour = mTime.get(Calendar.HOUR);
+ mHourText.setText(mHours[hour % 12]);
+ final int minute = mTime.get(Calendar.MINUTE);
+ mMinuteText.setText(mMinutes[minute % 60]);
+ invalidate();
+ }
+
+ /**
+ * Call when the time zone has changed to update clock time.
+ *
+ * @param timeZone The updated time zone that will be used.
+ */
+ public void onTimeZoneChanged(TimeZone timeZone) {
+ mTimeZone = timeZone;
+ mTime.setTimeZone(timeZone);
+ }
+
+ /**
+ * Set the color of the text used to display the time.
+ *
+ * This is necessary when the wallpaper shown behind the clock on the
+ * lock screen changes.
+ */
+ public void setTextColor(int color) {
+ mHourText.setTextColor(color);
+ mMinuteText.setTextColor(color);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mHeaderText = findViewById(R.id.header);
+ mHourText = findViewById(R.id.hour);
+ mMinuteText = findViewById(R.id.minute);
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mTime = Calendar.getInstance(mTimeZone != null ? mTimeZone : TimeZone.getDefault());
+ onTimeChanged();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/HardwareUiLayout.java b/packages/SystemUI/src/com/android/systemui/HardwareUiLayout.java
index 16e869e..e28aa9d 100644
--- a/packages/SystemUI/src/com/android/systemui/HardwareUiLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/HardwareUiLayout.java
@@ -37,23 +37,25 @@
import com.android.systemui.tuner.TunerService.Tunable;
import com.android.systemui.util.leak.RotationUtils;
-public class HardwareUiLayout extends LinearLayout implements Tunable {
+/**
+ * Layout for placing two containers at a specific physical position on the device, relative to the
+ * device's hardware, regardless of screen rotation.
+ */
+public class HardwareUiLayout extends MultiListLayout implements Tunable {
private static final String EDGE_BLEED = "sysui_hwui_edge_bleed";
private static final String ROUNDED_DIVIDER = "sysui_hwui_rounded_divider";
private final int[] mTmp2 = new int[2];
- private View mList;
- private View mSeparatedView;
+ private ViewGroup mList;
+ private ViewGroup mSeparatedView;
private int mOldHeight;
private boolean mAnimating;
private AnimatorSet mAnimation;
private View mDivision;
- private boolean mHasOutsideTouch;
private HardwareBgDrawable mListBackground;
private HardwareBgDrawable mSeparatedViewBackground;
private Animator mAnimator;
private boolean mCollapse;
- private boolean mHasSeparatedButton;
private int mEndPoint;
private boolean mEdgeBleed;
private boolean mRoundedDivider;
@@ -67,6 +69,35 @@
}
@Override
+ protected ViewGroup getSeparatedView() {
+ return findViewById(com.android.systemui.R.id.separated_button);
+ }
+
+ @Override
+ protected ViewGroup getListView() {
+ return findViewById(android.R.id.list);
+ }
+
+ @Override
+ public void removeAllItems() {
+ if (mList != null) {
+ mList.removeAllViews();
+ }
+ if (mSeparatedView != null) {
+ mSeparatedView.removeAllViews();
+ }
+ }
+
+ @Override
+ public ViewGroup getParentView(boolean separated, int index) {
+ if (separated) {
+ return getSeparatedView();
+ } else {
+ return getListView();
+ }
+ }
+
+ @Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
updateSettings();
@@ -137,9 +168,9 @@
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mList == null) {
if (getChildCount() != 0) {
- mList = getChildAt(0);
+ mList = getListView();
mList.setBackground(mListBackground);
- mSeparatedView = getChildAt(1);
+ mSeparatedView = getSeparatedView();
mSeparatedView.setBackground(mSeparatedViewBackground);
updateEdgeMargin(mEdgeBleed ? 0 : getEdgePadding());
mOldHeight = mList.getMeasuredHeight();
@@ -187,7 +218,7 @@
} else {
rotateLeft();
}
- if (mHasSeparatedButton) {
+ if (mHasSeparatedView) {
if (from == ROTATION_SEASCAPE || to == ROTATION_SEASCAPE) {
// Separated view has top margin, so seascape separated view need special rotation,
// not a full left or right rotation.
@@ -408,8 +439,8 @@
if (mList == null) return;
// If got separated button, setRotatedBackground to false,
// all items won't get white background.
- mListBackground.setRotatedBackground(mHasSeparatedButton);
- mSeparatedViewBackground.setRotatedBackground(mHasSeparatedButton);
+ mListBackground.setRotatedBackground(mHasSeparatedView);
+ mSeparatedViewBackground.setRotatedBackground(mHasSeparatedView);
if (mDivision != null && mDivision.getVisibility() == VISIBLE) {
int index = mRotatedBackground ? 0 : 1;
mDivision.getLocationOnScreen(mTmp2);
@@ -460,21 +491,21 @@
case RotationUtils.ROTATION_LANDSCAPE:
defaultTopPadding = getPaddingLeft();
viewsTotalHeight = mList.getMeasuredWidth() + mSeparatedView.getMeasuredWidth();
- separatedViewTopMargin = mHasSeparatedButton ? params.leftMargin : 0;
+ separatedViewTopMargin = mHasSeparatedView ? params.leftMargin : 0;
screenHeight = getMeasuredWidth();
targetGravity = Gravity.CENTER_HORIZONTAL|Gravity.TOP;
break;
case RotationUtils.ROTATION_SEASCAPE:
defaultTopPadding = getPaddingRight();
viewsTotalHeight = mList.getMeasuredWidth() + mSeparatedView.getMeasuredWidth();
- separatedViewTopMargin = mHasSeparatedButton ? params.leftMargin : 0;
+ separatedViewTopMargin = mHasSeparatedView ? params.leftMargin : 0;
screenHeight = getMeasuredWidth();
targetGravity = Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM;
break;
default: // Portrait
defaultTopPadding = getPaddingTop();
viewsTotalHeight = mList.getMeasuredHeight() + mSeparatedView.getMeasuredHeight();
- separatedViewTopMargin = mHasSeparatedButton ? params.topMargin : 0;
+ separatedViewTopMargin = mHasSeparatedView ? params.topMargin : 0;
screenHeight = getMeasuredHeight();
targetGravity = Gravity.CENTER_VERTICAL|Gravity.RIGHT;
break;
@@ -491,30 +522,10 @@
return super.getOutlineProvider();
}
- public void setOutsideTouchListener(OnClickListener onClickListener) {
- mHasOutsideTouch = true;
- requestLayout();
- setOnClickListener(onClickListener);
- setClickable(true);
- setFocusable(true);
- }
-
public void setCollapse() {
mCollapse = true;
}
- public void setHasSeparatedButton(boolean hasSeparatedButton) {
- mHasSeparatedButton = hasSeparatedButton;
- }
-
- public static HardwareUiLayout get(View v) {
- if (v instanceof HardwareUiLayout) return (HardwareUiLayout) v;
- if (v.getParent() instanceof View) {
- return get((View) v.getParent());
- }
- return null;
- }
-
private final ViewTreeObserver.OnComputeInternalInsetsListener mInsetsListener = inoutInfo -> {
if (mHasOutsideTouch || (mList == null)) {
inoutInfo.setTouchableInsets(
diff --git a/packages/SystemUI/src/com/android/systemui/MultiListLayout.java b/packages/SystemUI/src/com/android/systemui/MultiListLayout.java
new file mode 100644
index 0000000..0c7a9a9
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/MultiListLayout.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2019 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.systemui;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+/**
+ * Layout class representing the Global Actions menu which appears when the power button is held.
+ */
+public abstract class MultiListLayout extends LinearLayout {
+ boolean mHasOutsideTouch;
+ boolean mHasSeparatedView;
+
+ int mExpectedSeparatedItemCount;
+ int mExpectedListItemCount;
+
+ public MultiListLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ protected abstract ViewGroup getSeparatedView();
+
+ protected abstract ViewGroup getListView();
+
+ /**
+ * Removes all child items from the separated and list views, if they exist.
+ */
+ public abstract void removeAllItems();
+
+ /**
+ * Get the parent view which will be used to contain the item at the specified index.
+ * @param separated Whether or not this index refers to a position in the separated or list
+ * container.
+ * @param index The index of the item within the container.
+ * @return The parent ViewGroup which will be used to contain the specified item
+ * after it has been added to the layout.
+ */
+ public abstract ViewGroup getParentView(boolean separated, int index);
+
+ /**
+ * Sets the divided view, which may have a differently-colored background.
+ */
+ public abstract void setDivisionView(View v);
+
+ /**
+ * Set the view accessibility delegate for the list view container.
+ */
+ public void setListViewAccessibilityDelegate(View.AccessibilityDelegate delegate) {
+ getListView().setAccessibilityDelegate(delegate);
+ }
+
+ protected void setSeparatedViewVisibility(boolean visible) {
+ getSeparatedView().setVisibility(visible ? View.VISIBLE : View.GONE);
+ }
+
+ /**
+ * Sets the number of items expected to be rendered in the separated container. This allows the
+ * layout to correctly determine which parent containers will be used for items before they have
+ * beenadded to the layout.
+ * @param count The number of items expected.
+ */
+ public void setExpectedSeparatedItemCount(int count) {
+ mExpectedSeparatedItemCount = count;
+ }
+
+ /**
+ * Sets the number of items expected to be rendered in the list container. This allows the
+ * layout to correctly determine which parent containers will be used for items before they have
+ * beenadded to the layout.
+ * @param count The number of items expected.
+ */
+ public void setExpectedListItemCount(int count) {
+ mExpectedListItemCount = count;
+ }
+
+ /**
+ * Sets whether the separated view should be shown, and handles updating visibility on
+ * that view.
+ */
+ public void setHasSeparatedView(boolean hasSeparatedView) {
+ mHasSeparatedView = hasSeparatedView;
+ setSeparatedViewVisibility(hasSeparatedView);
+ }
+
+ /**
+ * Sets this layout to respond to an outside touch listener.
+ */
+ public void setOutsideTouchListener(OnClickListener onClickListener) {
+ mHasOutsideTouch = true;
+ requestLayout();
+ setOnClickListener(onClickListener);
+ setClickable(true);
+ setFocusable(true);
+ }
+
+ /**
+ * Retrieve the MultiListLayout associated with the given view.
+ */
+ public static MultiListLayout get(View v) {
+ if (v instanceof MultiListLayout) return (MultiListLayout) v;
+ if (v.getParent() instanceof View) {
+ return get((View) v.getParent());
+ }
+ return null;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index d7bf77d..957d772 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -284,8 +284,9 @@
@Nullable
private PendingIntent getAppOverlayIntent(NotificationEntry notif) {
Notification notification = notif.notification.getNotification();
- if (canLaunchInActivityView(notification.getAppOverlayIntent())) {
- return notification.getAppOverlayIntent();
+ if (canLaunchInActivityView(notification.getBubbleMetadata() != null
+ ? notification.getBubbleMetadata().getIntent() : null)) {
+ return notification.getBubbleMetadata().getIntent();
} else if (shouldUseContentIntent(mContext)
&& canLaunchInActivityView(notification.contentIntent)) {
Log.d(TAG, "[addBubble " + notif.key
@@ -446,15 +447,16 @@
StatusBarNotification n = entry.notification;
boolean canAppOverlay = false;
try {
- canAppOverlay = mNotificationManagerService.areAppOverlaysAllowedForPackage(
+ canAppOverlay = mNotificationManagerService.areBubblesAllowedForPackage(
n.getPackageName(), n.getUid());
} catch (RemoteException e) {
Log.w(TAG, "Error calling NoMan to determine if app can overlay", e);
}
boolean canChannelOverlay = mNotificationEntryManager.getNotificationData().getChannel(
- entry.key).canOverlayApps();
- boolean hasOverlayIntent = n.getNotification().getAppOverlayIntent() != null;
+ entry.key).canBubble();
+ boolean hasOverlayIntent = n.getNotification().getBubbleMetadata() != null
+ && n.getNotification().getBubbleMetadata().getIntent() != null;
return hasOverlayIntent && canChannelOverlay && canAppOverlay;
}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeHost.java b/packages/SystemUI/src/com/android/systemui/doze/DozeHost.java
index 4cb1fee..bd7a421 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeHost.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeHost.java
@@ -38,7 +38,13 @@
void setAnimateWakeup(boolean animateWakeup);
void setAnimateScreenOff(boolean animateScreenOff);
- void onDoubleTap(float x, float y);
+ /**
+ * Reports that a tap event happend on the Sensors Low Power Island.
+ *
+ * @param x Touch X, or -1 if sensor doesn't support touch location.
+ * @param y Touch Y, or -1 if sensor doesn't support touch location.
+ */
+ void onSlpiTap(float x, float y);
default void setAodDimmingScrim(float scrimOpacity) {}
void setDozeScreenBrightness(int value);
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
index 50003e3..a784773 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
@@ -35,7 +35,7 @@
private static final int SIZE = Build.IS_DEBUGGABLE ? 400 : 50;
static final SimpleDateFormat FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss.SSS");
- private static final int REASONS = 9;
+ private static final int REASONS = 10;
public static final int PULSE_REASON_NONE = -1;
public static final int PULSE_REASON_INTENT = 0;
@@ -47,6 +47,7 @@
public static final int PULSE_REASON_DOCKING = 6;
public static final int REASON_SENSOR_WAKE_UP = 7;
public static final int PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN = 8;
+ public static final int PULSE_REASON_SENSOR_TAP = 9;
private static boolean sRegisterKeyguardCallback = true;
@@ -207,6 +208,7 @@
case PULSE_REASON_DOCKING: return "docking";
case PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN: return "wakelockscreen";
case REASON_SENSOR_WAKE_UP: return "wakeup";
+ case PULSE_REASON_SENSOR_TAP: return "tap";
default: throw new IllegalArgumentException("bad reason: " + pulseReason);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
index b6fc355..78374a0 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
@@ -107,6 +107,13 @@
dozeParameters.doubleTapReportsTouchCoordinates(),
true /* touchscreen */),
new TriggerSensor(
+ findSensorWithType(config.tapSensorType()),
+ Settings.Secure.DOZE_TAP_SCREEN_GESTURE,
+ true /* configured */,
+ DozeLog.PULSE_REASON_SENSOR_TAP,
+ false /* reports touch coordinates */,
+ true /* touchscreen */),
+ new TriggerSensor(
findSensorWithType(config.longPressSensorType()),
Settings.Secure.DOZE_PULSE_ON_LONG_PRESS,
false /* settingDef */,
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index 6a9b689..e2e448b 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
@@ -132,6 +132,7 @@
private void onSensor(int pulseReason, boolean sensorPerformedProxCheck,
float screenX, float screenY, float[] rawValues) {
boolean isDoubleTap = pulseReason == DozeLog.PULSE_REASON_SENSOR_DOUBLE_TAP;
+ boolean isTap = pulseReason == DozeLog.PULSE_REASON_SENSOR_TAP;
boolean isPickup = pulseReason == DozeLog.PULSE_REASON_SENSOR_PICKUP;
boolean isLongPress = pulseReason == DozeLog.PULSE_REASON_SENSOR_LONG_PRESS;
boolean isWakeDisplay = pulseReason == DozeLog.REASON_SENSOR_WAKE_UP;
@@ -148,8 +149,10 @@
// In pocket, drop event.
return;
}
- if (isDoubleTap) {
- mDozeHost.onDoubleTap(screenX, screenY);
+ if (isDoubleTap || isTap) {
+ if (screenX != -1 && screenY != -1) {
+ mDozeHost.onSlpiTap(screenX, screenY);
+ }
mMachine.wakeUp();
} else if (isPickup) {
mMachine.wakeUp();
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index 268245b..7b18fad 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -67,10 +67,8 @@
import android.view.accessibility.AccessibilityEvent;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
-import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.internal.R;
@@ -86,8 +84,8 @@
import com.android.internal.util.ScreenshotHelper;
import com.android.internal.widget.LockPatternUtils;
import com.android.systemui.Dependency;
-import com.android.systemui.HardwareUiLayout;
import com.android.systemui.Interpolators;
+import com.android.systemui.MultiListLayout;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
import com.android.systemui.statusbar.phone.ScrimController;
@@ -490,6 +488,11 @@
public boolean showBeforeProvisioning() {
return true;
}
+
+ @Override
+ public boolean shouldBeSeparated() {
+ return true;
+ }
}
private final class RestartAction extends SinglePressAction implements LongPressAction {
@@ -926,6 +929,34 @@
return getItem(position).isEnabled();
}
+ public ArrayList<Action> getSeparatedActions(boolean shouldUseSeparatedView) {
+ ArrayList<Action> separatedActions = new ArrayList<Action>();
+ if (!shouldUseSeparatedView) {
+ return separatedActions;
+ }
+ for (int i = 0; i < mItems.size(); i++) {
+ final Action action = mItems.get(i);
+ if (action.shouldBeSeparated()) {
+ separatedActions.add(action);
+ }
+ }
+ return separatedActions;
+ }
+
+ public ArrayList<Action> getListActions(boolean shouldUseSeparatedView) {
+ if (!shouldUseSeparatedView) {
+ return new ArrayList<Action>(mItems);
+ }
+ ArrayList<Action> listActions = new ArrayList<Action>();
+ for (int i = 0; i < mItems.size(); i++) {
+ final Action action = mItems.get(i);
+ if (!action.shouldBeSeparated()) {
+ listActions.add(action);
+ }
+ }
+ return listActions;
+ }
+
@Override
public boolean areAllItemsEnabled() {
return false;
@@ -965,7 +996,7 @@
View view = action.create(mContext, convertView, parent, LayoutInflater.from(mContext));
// Everything but screenshot, the last item, gets white background.
if (position == getCount() - 1) {
- HardwareUiLayout.get(parent).setDivisionView(view);
+ MultiListLayout.get(parent).setDivisionView(view);
}
return view;
}
@@ -1004,6 +1035,10 @@
boolean showBeforeProvisioning();
boolean isEnabled();
+
+ default boolean shouldBeSeparated() {
+ return false;
+ }
}
/**
@@ -1423,9 +1458,7 @@
private final Context mContext;
private final MyAdapter mAdapter;
- private final LinearLayout mListView;
- private final FrameLayout mSeparatedView;
- private final HardwareUiLayout mHardwareLayout;
+ private final MultiListLayout mGlobalActionsLayout;
private final OnClickListener mClickListener;
private final OnItemLongClickListener mLongClickListener;
private final GradientDrawable mGradientDrawable;
@@ -1466,16 +1499,11 @@
window.setType(WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY);
setContentView(com.android.systemui.R.layout.global_actions_wrapped);
- mListView = findViewById(android.R.id.list);
- mSeparatedView = findViewById(com.android.systemui.R.id.separated_button);
- if (!mShouldDisplaySeparatedButton) {
- mSeparatedView.setVisibility(View.GONE);
- }
- mHardwareLayout = HardwareUiLayout.get(mListView);
- mHardwareLayout.setOutsideTouchListener(view -> dismiss());
- mHardwareLayout.setHasSeparatedButton(mShouldDisplaySeparatedButton);
- setTitle(R.string.global_actions);
- mListView.setAccessibilityDelegate(new View.AccessibilityDelegate() {
+ mGlobalActionsLayout = (MultiListLayout)
+ findViewById(com.android.systemui.R.id.global_actions_view);
+ mGlobalActionsLayout.setOutsideTouchListener(view -> dismiss());
+ mGlobalActionsLayout.setHasSeparatedView(mShouldDisplaySeparatedButton);
+ mGlobalActionsLayout.setListViewAccessibilityDelegate(new View.AccessibilityDelegate() {
@Override
public boolean dispatchPopulateAccessibilityEvent(
View host, AccessibilityEvent event) {
@@ -1484,20 +1512,33 @@
return true;
}
});
+ setTitle(R.string.global_actions);
}
private void updateList() {
- mListView.removeAllViews();
- mSeparatedView.removeAllViews();
+ mGlobalActionsLayout.removeAllItems();
+ ArrayList<Action> separatedActions =
+ mAdapter.getSeparatedActions(mShouldDisplaySeparatedButton);
+ ArrayList<Action> listActions = mAdapter.getListActions(mShouldDisplaySeparatedButton);
+ mGlobalActionsLayout.setExpectedListItemCount(listActions.size());
+ mGlobalActionsLayout.setExpectedSeparatedItemCount(separatedActions.size());
+
for (int i = 0; i < mAdapter.getCount(); i++) {
- ViewGroup parentView = mShouldDisplaySeparatedButton && i == mAdapter.getCount() - 1
- ? mSeparatedView : mListView;
- View v = mAdapter.getView(i, null, parentView);
+ Action action = mAdapter.getItem(i);
+ int separatedIndex = separatedActions.indexOf(action);
+ ViewGroup parent;
+ if (separatedIndex != -1) {
+ parent = mGlobalActionsLayout.getParentView(true, separatedIndex);
+ } else {
+ int listIndex = listActions.indexOf(action);
+ parent = mGlobalActionsLayout.getParentView(false, listIndex);
+ }
+ View v = mAdapter.getView(i, null, parent);
final int pos = i;
v.setOnClickListener(view -> mClickListener.onClick(this, pos));
v.setOnLongClickListener(view ->
mLongClickListener.onItemLongClick(null, v, pos, 0));
- parentView.addView(v);
+ parent.addView(v);
}
}
@@ -1543,9 +1584,9 @@
super.show();
mShowing = true;
mGradientDrawable.setAlpha(0);
- mHardwareLayout.setTranslationX(getAnimTranslation());
- mHardwareLayout.setAlpha(0);
- mHardwareLayout.animate()
+ mGlobalActionsLayout.setTranslationX(getAnimTranslation());
+ mGlobalActionsLayout.setAlpha(0);
+ mGlobalActionsLayout.animate()
.alpha(1)
.translationX(0)
.setDuration(300)
@@ -1564,9 +1605,9 @@
return;
}
mShowing = false;
- mHardwareLayout.setTranslationX(0);
- mHardwareLayout.setAlpha(1);
- mHardwareLayout.animate()
+ mGlobalActionsLayout.setTranslationX(0);
+ mGlobalActionsLayout.setAlpha(1);
+ mGlobalActionsLayout.animate()
.alpha(0)
.translationX(getAnimTranslation())
.setDuration(300)
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyDialog.kt b/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyDialog.kt
index 6ed1eba..77e25e3 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyDialog.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyDialog.kt
@@ -20,6 +20,7 @@
import android.content.DialogInterface
import android.content.Intent
import android.content.res.ColorStateList
+import android.util.IconDrawableFactory
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
@@ -37,11 +38,22 @@
private val iconSize = context.resources.getDimensionPixelSize(
R.dimen.ongoing_appops_dialog_icon_size)
+ private val plusSize = context.resources.getDimensionPixelSize(
+ R.dimen.ongoing_appops_dialog_app_plus_size)
private val iconColor = context.resources.getColor(
com.android.internal.R.color.text_color_primary, context.theme)
+ private val plusColor: Int
private val iconMargin = context.resources.getDimensionPixelSize(
R.dimen.ongoing_appops_dialog_icon_margin)
private val MAX_ITEMS = context.resources.getInteger(R.integer.ongoing_appops_dialog_max_apps)
+ private val iconFactory = IconDrawableFactory.newInstance(context, true)
+
+ init {
+ val a = context.theme.obtainStyledAttributes(
+ intArrayOf(com.android.internal.R.attr.colorAccent))
+ plusColor = a.getColor(0, 0)
+ a.recycle()
+ }
fun createDialog(): Dialog {
val builder = AlertDialog.Builder(context).apply {
@@ -87,9 +99,15 @@
numItems - MAX_ITEMS
)
val overflowPlus = overflow.findViewById(R.id.app_icon) as ImageView
+ val lp = overflowPlus.layoutParams.apply {
+ height = plusSize
+ width = plusSize
+ }
+ overflowPlus.layoutParams = lp
overflowPlus.apply {
- imageTintList = ColorStateList.valueOf(iconColor)
- setImageDrawable(context.getDrawable(R.drawable.plus))
+ val plus = context.getDrawable(R.drawable.plus)
+ imageTintList = ColorStateList.valueOf(plusColor)
+ setImageDrawable(plus)
}
}
@@ -114,7 +132,7 @@
}
app.icon.let {
- appIcon.setImageDrawable(it)
+ appIcon.setImageDrawable(iconFactory.getShadowedIcon(it))
}
appName.text = app.applicationName
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/SensorPrivacyTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/SensorPrivacyTile.java
index 5230cea..7ee37d5 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/SensorPrivacyTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/SensorPrivacyTile.java
@@ -84,7 +84,7 @@
@Override
public Intent getLongClickIntent() {
- return null;
+ return new Intent();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
index bd9ca1a..9ef9c94 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
@@ -65,12 +65,12 @@
private static final String TAG = "NotificationShelf";
private static final long SHELF_IN_TRANSLATION_DURATION = 200;
- private boolean mDark;
private NotificationIconContainer mShelfIcons;
private int[] mTmp = new int[2];
private boolean mHideBackground;
private int mIconAppearTopPadding;
private int mShelfAppearTranslation;
+ private float mDarkShelfPadding;
private int mStatusBarHeight;
private int mStatusBarPaddingStart;
private AmbientState mAmbientState;
@@ -140,6 +140,7 @@
mStatusBarPaddingStart = res.getDimensionPixelOffset(R.dimen.status_bar_padding_start);
mPaddingBetweenElements = res.getDimensionPixelSize(R.dimen.notification_divider_height);
mShelfAppearTranslation = res.getDimensionPixelSize(R.dimen.shelf_appear_translation);
+ mDarkShelfPadding = res.getDimensionPixelSize(R.dimen.widget_bottom_separator_padding);
ViewGroup.LayoutParams layoutParams = getLayoutParams();
layoutParams.height = res.getDimensionPixelOffset(R.dimen.notification_shelf_height);
@@ -165,11 +166,11 @@
@Override
public void setDark(boolean dark, boolean fade, long delay) {
- super.setDark(dark, fade, delay);
if (mDark == dark) return;
- mDark = dark;
+ super.setDark(dark, fade, delay);
mShelfIcons.setDark(dark, fade, delay);
updateInteractiveness();
+ updateOutline();
}
/**
@@ -218,10 +219,9 @@
float awakenTranslation = Math.max(Math.min(viewEnd, maxShelfEnd) - viewState.height,
getFullyClosedTranslation());
- float darkTranslation = mAmbientState.getDarkTopPadding();
float yRatio = mAmbientState.hasPulsingNotifications() ?
0 : mAmbientState.getDarkAmount();
- viewState.yTranslation = MathUtils.lerp(awakenTranslation, darkTranslation, yRatio);
+ viewState.yTranslation = awakenTranslation + mDarkShelfPadding * yRatio;
viewState.zTranslation = ambientState.getBaseZHeight();
// For the small display size, it's not enough to make the icon not covered by
// the top cutout so the denominator add the height of cutout.
@@ -763,18 +763,14 @@
}
}
- public boolean hidesBackground() {
- return mHideBackground;
- }
-
@Override
protected boolean needsOutline() {
- return !mHideBackground && super.needsOutline();
+ return !mHideBackground && !mDark && super.needsOutline();
}
@Override
protected boolean shouldHideBackground() {
- return super.shouldHideBackground() || mHideBackground;
+ return super.shouldHideBackground() || mHideBackground || mDark;
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryListener.java
index eea4490..839b06c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryListener.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryListener.java
@@ -33,6 +33,13 @@
default void onPendingEntryAdded(NotificationEntry entry) {
}
+ // TODO: Combine this with onPreEntryUpdated into "onBeforeEntryFiltered" or similar
+ /**
+ * Called when a new entry is created but before it has been filtered or displayed to the user.
+ */
+ default void onBeforeNotificationAdded(NotificationEntry entry) {
+ }
+
/**
* Called when a new entry is created.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
index 45db002..989e781 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
@@ -18,11 +18,9 @@
import android.annotation.Nullable;
import android.app.Notification;
import android.content.Context;
-import android.os.UserHandle;
import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import android.util.ArrayMap;
-import android.util.ArraySet;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
@@ -41,7 +39,6 @@
import com.android.systemui.statusbar.notification.row.NotificationInflater;
import com.android.systemui.statusbar.notification.row.NotificationInflater.InflationFlag;
import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
-import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.util.leak.LeakDetector;
@@ -68,8 +65,6 @@
@VisibleForTesting
protected final HashMap<String, NotificationEntry> mPendingNotifications = new HashMap<>();
- private final DeviceProvisionedController mDeviceProvisionedController =
- Dependency.get(DeviceProvisionedController.class);
private final ForegroundServiceController mForegroundServiceController =
Dependency.get(ForegroundServiceController.class);
@@ -81,25 +76,12 @@
private NotificationListenerService.RankingMap mLatestRankingMap;
@VisibleForTesting
protected NotificationData mNotificationData;
- private NotificationListContainer mListContainer;
+
@VisibleForTesting
final ArrayList<NotificationLifetimeExtender> mNotificationLifetimeExtenders
= new ArrayList<>();
private final List<NotificationEntryListener> mNotificationEntryListeners = new ArrayList<>();
- private final DeviceProvisionedController.DeviceProvisionedListener
- mDeviceProvisionedListener =
- new DeviceProvisionedController.DeviceProvisionedListener() {
- @Override
- public void onDeviceProvisionedChanged() {
- updateNotifications();
- }
- };
-
- public void destroy() {
- mDeviceProvisionedController.removeCallback(mDeviceProvisionedListener);
- }
-
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("NotificationEntryManager state:");
@@ -151,9 +133,6 @@
HeadsUpManager headsUpManager) {
mPresenter = presenter;
mNotificationData.setHeadsUpManager(headsUpManager);
- mListContainer = listContainer;
-
- mDeviceProvisionedController.addCallback(mDeviceProvisionedListener);
}
/** Adds multiple {@link NotificationLifetimeExtender}s. */
@@ -227,7 +206,9 @@
listener.onEntryInflated(entry, inflatedFlags);
}
mNotificationData.add(entry);
- tagForeground(entry.notification);
+ for (NotificationEntryListener listener : mNotificationEntryListeners) {
+ listener.onBeforeNotificationAdded(entry);
+ }
updateNotifications();
for (NotificationEntryListener listener : mNotificationEntryListeners) {
listener.onNotificationAdded(entry);
@@ -283,7 +264,6 @@
if (entry.rowExists()) {
entry.removeRow();
- mListContainer.cleanUpViewStateForEntry(entry);
}
// Let's remove the children if this was a summary
@@ -368,19 +348,6 @@
}
}
- @VisibleForTesting
- void tagForeground(StatusBarNotification notification) {
- ArraySet<Integer> activeOps = mForegroundServiceController.getAppOps(
- notification.getUserId(), notification.getPackageName());
- if (activeOps != null) {
- int N = activeOps.size();
- for (int i = 0; i < N; i++) {
- updateNotificationsForAppOp(activeOps.valueAt(i), notification.getUid(),
- notification.getPackageName(), true);
- }
- }
- }
-
@Override
public void addNotification(StatusBarNotification notification,
NotificationListenerService.RankingMap ranking) {
@@ -391,15 +358,6 @@
}
}
- public void updateNotificationsForAppOp(int appOp, int uid, String pkg, boolean showIcon) {
- String foregroundKey = mForegroundServiceController.getStandardLayoutKey(
- UserHandle.getUserId(uid), pkg);
- if (foregroundKey != null) {
- mNotificationData.updateAppOp(appOp, uid, pkg, foregroundKey, showIcon);
- updateNotifications();
- }
- }
-
private void updateNotificationInternal(StatusBarNotification notification,
NotificationListenerService.RankingMap ranking) throws InflationException {
if (DEBUG) Log.d(TAG, "updateNotification(" + notification + ")");
@@ -452,8 +410,9 @@
public void updateNotifications() {
mNotificationData.filterAndSort();
-
- mPresenter.updateNotificationViews();
+ if (mPresenter != null) {
+ mPresenter.updateNotificationViews();
+ }
}
public void updateNotificationRanking(NotificationListenerService.RankingMap rankingMap) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationListController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationListController.java
new file mode 100644
index 0000000..88f4ca2
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationListController.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2019 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.systemui.statusbar.notification;
+
+import static com.android.internal.util.Preconditions.checkNotNull;
+
+import android.os.UserHandle;
+import android.service.notification.StatusBarNotification;
+import android.util.ArraySet;
+
+import com.android.internal.statusbar.NotificationVisibility;
+import com.android.systemui.ForegroundServiceController;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
+import com.android.systemui.statusbar.policy.DeviceProvisionedController;
+import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
+
+/**
+ * Root controller for the list of notifications in the shade.
+ *
+ * TODO: Much of the code in NotificationPresenter should eventually move in here. It will proxy
+ * domain-specific behavior (ARC, etc) to subcontrollers.
+ */
+public class NotificationListController {
+ private final NotificationEntryManager mEntryManager;
+ private final NotificationListContainer mListContainer;
+ private final ForegroundServiceController mForegroundServiceController;
+ private final DeviceProvisionedController mDeviceProvisionedController;
+
+ public NotificationListController(
+ NotificationEntryManager entryManager,
+ NotificationListContainer listContainer,
+ ForegroundServiceController foregroundServiceController,
+ DeviceProvisionedController deviceProvisionedController) {
+ mEntryManager = checkNotNull(entryManager);
+ mListContainer = checkNotNull(listContainer);
+ mForegroundServiceController = checkNotNull(foregroundServiceController);
+ mDeviceProvisionedController = checkNotNull(deviceProvisionedController);
+ }
+
+ /**
+ * Causes the controller to register listeners on its dependencies. This method must be called
+ * before the controller is ready to perform its duties.
+ */
+ public void bind() {
+ mEntryManager.addNotificationEntryListener(mEntryListener);
+ mDeviceProvisionedController.addCallback(mDeviceProvisionedListener);
+ }
+
+ /** Should be called when the list controller is being destroyed. */
+ public void destroy() {
+ mDeviceProvisionedController.removeCallback(mDeviceProvisionedListener);
+ }
+
+ @SuppressWarnings("FieldCanBeLocal")
+ private final NotificationEntryListener mEntryListener = new NotificationEntryListener() {
+ @Override
+ public void onEntryRemoved(
+ NotificationEntry entry,
+ NotificationVisibility visibility,
+ boolean removedByUser) {
+ mListContainer.cleanUpViewStateForEntry(entry);
+ }
+
+ @Override
+ public void onBeforeNotificationAdded(NotificationEntry entry) {
+ tagForeground(entry.notification);
+ }
+ };
+
+ private final DeviceProvisionedListener mDeviceProvisionedListener =
+ new DeviceProvisionedListener() {
+ @Override
+ public void onDeviceProvisionedChanged() {
+ mEntryManager.updateNotifications();
+ }
+ };
+
+ // TODO: This method is horrifically inefficient
+ private void tagForeground(StatusBarNotification notification) {
+ ArraySet<Integer> activeOps =
+ mForegroundServiceController.getAppOps(
+ notification.getUserId(), notification.getPackageName());
+ if (activeOps != null) {
+ int len = activeOps.size();
+ for (int i = 0; i < len; i++) {
+ updateNotificationsForAppOp(activeOps.valueAt(i), notification.getUid(),
+ notification.getPackageName(), true);
+ }
+ }
+ }
+
+ /** When an app op changes, propagate that change to notifications. */
+ public void updateNotificationsForAppOp(int appOp, int uid, String pkg, boolean showIcon) {
+ String foregroundKey =
+ mForegroundServiceController.getStandardLayoutKey(UserHandle.getUserId(uid), pkg);
+ if (foregroundKey != null) {
+ mEntryManager
+ .getNotificationData().updateAppOp(appOp, uid, pkg, foregroundKey, showIcon);
+ mEntryManager.updateNotifications();
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
index 8b0a682..c34d567 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
@@ -105,7 +105,7 @@
private final DoubleTapHelper mDoubleTapHelper;
private boolean mDimmed;
- private boolean mDark;
+ protected boolean mDark;
protected int mBgTint = NO_COLOR;
private float mBgAlpha = 1f;
@@ -140,7 +140,6 @@
private FalsingManager mFalsingManager;
private float mNormalBackgroundVisibilityAmount;
- private ValueAnimator mFadeInFromDarkAnimator;
private float mDimmedBackgroundFadeInAmount = -1;
private ValueAnimator.AnimatorUpdateListener mBackgroundVisibilityUpdater
= new ValueAnimator.AnimatorUpdateListener() {
@@ -150,22 +149,6 @@
mDimmedBackgroundFadeInAmount = mBackgroundDimmed.getAlpha();
}
};
- private AnimatorListenerAdapter mFadeInEndListener = new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- super.onAnimationEnd(animation);
- mFadeInFromDarkAnimator = null;
- mDimmedBackgroundFadeInAmount = -1;
- updateBackground();
- }
- };
- private ValueAnimator.AnimatorUpdateListener mUpdateOutlineListener
- = new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- updateOutlineAlpha();
- }
- };
private FakeShadowView mFakeShadow;
private int mCurrentBackgroundTint;
private int mTargetTint;
@@ -465,22 +448,11 @@
mDark = dark;
updateBackground();
updateBackgroundTint(false);
- if (!dark && fade && !shouldHideBackground()) {
- fadeInFromDark(delay);
- }
- updateOutlineAlpha();
}
private void updateOutlineAlpha() {
- if (mDark) {
- setOutlineAlpha(0f);
- return;
- }
float alpha = NotificationStackScrollLayout.BACKGROUND_ALPHA_DIMMED;
alpha = (alpha + (1.0f - alpha) * mNormalBackgroundVisibilityAmount);
- if (mFadeInFromDarkAnimator != null) {
- alpha *= mFadeInFromDarkAnimator.getAnimatedFraction();
- }
setOutlineAlpha(alpha);
}
@@ -638,36 +610,6 @@
}
/**
- * Fades in the background when exiting dark mode.
- */
- private void fadeInFromDark(long delay) {
- final View background = mDimmed ? mBackgroundDimmed : mBackgroundNormal;
- background.setAlpha(0f);
- mBackgroundVisibilityUpdater.onAnimationUpdate(null);
- background.animate()
- .alpha(1f)
- .setDuration(DARK_ANIMATION_LENGTH)
- .setStartDelay(delay)
- .setInterpolator(Interpolators.ALPHA_IN)
- .setListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationCancel(Animator animation) {
- // Jump state if we are cancelled
- background.setAlpha(1f);
- }
- })
- .setUpdateListener(mBackgroundVisibilityUpdater)
- .start();
- mFadeInFromDarkAnimator = TimeAnimator.ofFloat(0.0f, 1.0f);
- mFadeInFromDarkAnimator.setDuration(DARK_ANIMATION_LENGTH);
- mFadeInFromDarkAnimator.setStartDelay(delay);
- mFadeInFromDarkAnimator.setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
- mFadeInFromDarkAnimator.addListener(mFadeInEndListener);
- mFadeInFromDarkAnimator.addUpdateListener(mUpdateOutlineListener);
- mFadeInFromDarkAnimator.start();
- }
-
- /**
* Fades the background when the dimmed state changes.
*/
private void fadeDimmedBackground() {
@@ -708,9 +650,7 @@
public void onAnimationEnd(Animator animation) {
updateBackground();
mBackgroundAnimator = null;
- if (mFadeInFromDarkAnimator == null) {
- mDimmedBackgroundFadeInAmount = -1;
- }
+ mDimmedBackgroundFadeInAmount = -1;
}
});
mBackgroundAnimator.addUpdateListener(mBackgroundVisibilityUpdater);
@@ -736,7 +676,7 @@
mBackgroundNormal.setVisibility(mActivated ? VISIBLE : INVISIBLE);
} else if (mDimmed) {
// When groups are animating to the expanded state from the lockscreen, show the
- // normal background instead of the dimmed background
+ // normal background instead of the dimmed background.
final boolean dontShowDimmed = isGroupExpansionChanging() && isChildInGroup();
mBackgroundDimmed.setVisibility(dontShowDimmed ? View.INVISIBLE : View.VISIBLE);
mBackgroundNormal.setVisibility((mActivated || dontShowDimmed)
@@ -760,7 +700,7 @@
}
protected boolean shouldHideBackground() {
- return mDark;
+ return false;
}
private void cancelFadeAnimations() {
@@ -1023,14 +963,11 @@
/**
* @param withTint should a possible tint be factored in?
- * @param withOverRide should the value be interpolated with {@link #mOverrideTint}
+ * @param withOverride should the value be interpolated with {@link #mOverrideTint}
* @return the calculated background color
*/
- private int calculateBgColor(boolean withTint, boolean withOverRide) {
- if (withTint && mDark) {
- return getContext().getColor(R.color.notification_material_background_dark_color);
- }
- if (withOverRide && mOverrideTint != NO_COLOR) {
+ private int calculateBgColor(boolean withTint, boolean withOverride) {
+ if (withOverride && mOverrideTint != NO_COLOR) {
int defaultTint = calculateBgColor(withTint, false);
return NotificationUtils.interpolateColors(defaultTint, mOverrideTint, mOverrideAmount);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index df0189f..296c061 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -132,7 +132,6 @@
}
private LayoutListener mLayoutListener;
- private boolean mDark;
private boolean mLowPriorityStateUpdated;
private final NotificationInflater mNotificationInflater;
private int mIconTransformContentShift;
@@ -146,7 +145,6 @@
private int mNotificationMinHeight;
private int mNotificationMinHeightLarge;
private int mNotificationMaxHeight;
- private int mNotificationAmbientHeight;
private int mIncreasedPaddingBetweenElements;
private int mNotificationLaunchHeight;
private boolean mMustStayOnScreen;
@@ -677,8 +675,7 @@
if (headsUpWrapper != null) {
headsUpHeight = Math.max(headsUpHeight, headsUpWrapper.getMinLayoutHeight());
}
- layout.setHeights(minHeight, headsUpHeight, mNotificationMaxHeight,
- mNotificationAmbientHeight);
+ layout.setHeights(minHeight, headsUpHeight, mNotificationMaxHeight, headsUpHeight);
}
public StatusBarNotification getStatusBarNotification() {
@@ -1647,8 +1644,6 @@
R.dimen.notification_min_height_increased);
mNotificationMaxHeight = NotificationUtils.getFontScaledHeight(mContext,
R.dimen.notification_max_height);
- mNotificationAmbientHeight = NotificationUtils.getFontScaledHeight(mContext,
- R.dimen.notification_ambient_height);
mMaxHeadsUpHeightBeforeN = NotificationUtils.getFontScaledHeight(mContext,
R.dimen.notification_max_heads_up_height_legacy);
mMaxHeadsUpHeightBeforeP = NotificationUtils.getFontScaledHeight(mContext,
@@ -2008,8 +2003,10 @@
@Override
public void setDark(boolean dark, boolean fade, long delay) {
+ if (mDark == dark) {
+ return;
+ }
super.setDark(dark, fade, delay);
- mDark = dark;
if (!mIsAmbientPulsing) {
// Only fade the showing view of the pulsing notification.
fade = false;
@@ -2018,9 +2015,6 @@
if (showing != null) {
showing.setDark(dark, fade, delay);
}
- if (mIsSummaryWithChildren) {
- mChildrenContainer.setDark(dark, fade, delay);
- }
updateShelfIconColor();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridGroupManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridGroupManager.java
index 33badaf..90ff4a7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridGroupManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridGroupManager.java
@@ -39,14 +39,10 @@
private final NotificationDozeHelper mDozer;
private final ViewGroup mParent;
- private float mOverflowNumberSizeDark;
- private int mOverflowNumberPaddingDark;
private float mOverflowNumberSize;
private int mOverflowNumberPadding;
private int mOverflowNumberColor;
- private int mOverflowNumberColorDark;
- private float mDarkAmount = 0f;
public HybridGroupManager(Context ctx, ViewGroup parent) {
mContext = ctx;
@@ -59,12 +55,8 @@
Resources res = mContext.getResources();
mOverflowNumberSize = res.getDimensionPixelSize(
R.dimen.group_overflow_number_size);
- mOverflowNumberSizeDark = res.getDimensionPixelSize(
- R.dimen.group_overflow_number_size_dark);
mOverflowNumberPadding = res.getDimensionPixelSize(
R.dimen.group_overflow_number_padding);
- mOverflowNumberPaddingDark = mOverflowNumberPadding + res.getDimensionPixelSize(
- R.dimen.group_overflow_number_extra_padding_dark);
}
private HybridNotificationView inflateHybridViewWithStyle(int style) {
@@ -86,13 +78,11 @@
}
private void updateOverFlowNumberColor(TextView numberView) {
- numberView.setTextColor(NotificationUtils.interpolateColors(
- mOverflowNumberColor, mOverflowNumberColorDark, mDarkAmount));
+ numberView.setTextColor(mOverflowNumberColor);
}
- public void setOverflowNumberColor(TextView numberView, int colorRegular, int colorDark) {
+ public void setOverflowNumberColor(TextView numberView, int colorRegular) {
mOverflowNumberColor = colorRegular;
- mOverflowNumberColorDark = colorDark;
if (numberView != null) {
updateOverFlowNumberColor(numberView);
}
@@ -107,7 +97,7 @@
public HybridNotificationView bindAmbientFromNotification(HybridNotificationView reusableView,
Notification notification) {
return bindFromNotificationWithStyle(reusableView, notification,
- R.style.HybridNotification_Ambient);
+ R.style.HybridNotification);
}
private HybridNotificationView bindFromNotificationWithStyle(
@@ -150,6 +140,11 @@
R.plurals.notification_group_overflow_description, number), number);
reusableView.setContentDescription(contentDescription);
+ reusableView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mOverflowNumberSize);
+ reusableView.setPaddingRelative(reusableView.getPaddingStart(),
+ reusableView.getPaddingTop(), mOverflowNumberPadding,
+ reusableView.getPaddingBottom());
+ updateOverFlowNumberColor(reusableView);
return reusableView;
}
@@ -163,16 +158,4 @@
}
return titleView;
}
-
- public void setOverflowNumberDark(TextView view, boolean dark, boolean fade, long delay) {
- mDozer.setIntensityDark((f)->{
- mDarkAmount = f;
- updateOverFlowNumberColor(view);
- }, dark, fade, delay, view);
- view.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- dark ? mOverflowNumberSizeDark : mOverflowNumberSize);
- int paddingEnd = dark ? mOverflowNumberPaddingDark : mOverflowNumberPadding;
- view.setPaddingRelative(view.getPaddingStart(), view.getPaddingTop(), paddingEnd,
- view.getPaddingBottom());
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
index cbec37e..1b5013d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
@@ -75,7 +75,6 @@
private int mIntrinsicPadding;
private int mExpandAnimationTopChange;
private ExpandableNotificationRow mExpandingNotification;
- private int mDarkTopPadding;
private float mDarkAmount;
private boolean mAppearing;
@@ -351,7 +350,8 @@
}
public boolean hasPulsingNotifications() {
- return mPulsing;
+ return mPulsing && mAmbientPulseManager != null
+ && mAmbientPulseManager.hasNotifications();
}
public void setPulsing(boolean hasPulsing) {
@@ -458,14 +458,6 @@
return mDarkAmount != 0;
}
- public void setDarkTopPadding(int darkTopPadding) {
- mDarkTopPadding = darkTopPadding;
- }
-
- public int getDarkTopPadding() {
- return mDarkTopPadding;
- }
-
public void setAppearing(boolean appearing) {
mAppearing = appearing;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
index 5118036..8ffada4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
@@ -316,7 +316,7 @@
StatusBarNotification notification = mContainingNotification.getStatusBarNotification();
final Notification.Builder builder = Notification.Builder.recoverBuilder(getContext(),
notification.getNotification());
- RemoteViews header = builder.makeNotificationHeader(false /* ambient */);
+ RemoteViews header = builder.makeNotificationHeader();
if (mNotificationHeader == null) {
mNotificationHeader = (NotificationHeaderView) header.apply(getContext(), this);
final View expandButton = mNotificationHeader.findViewById(
@@ -344,7 +344,7 @@
builder = Notification.Builder.recoverBuilder(getContext(),
notification.getNotification());
}
- header = builder.makeNotificationHeader(true /* ambient */);
+ header = builder.makeNotificationHeader();
if (mNotificationHeaderAmbient == null) {
mNotificationHeaderAmbient = (ViewGroup) header.apply(getContext(), this);
mNotificationHeaderWrapperAmbient = NotificationViewWrapper.wrap(getContext(),
@@ -1171,12 +1171,6 @@
return mIsLowPriority && !mContainingNotification.isExpanded();
}
- public void setDark(boolean dark, boolean fade, long delay) {
- if (mOverflowNumber != null) {
- mHybridGroupManager.setOverflowNumberDark(mOverflowNumber, dark, fade, delay);
- }
- }
-
public void reInflateViews(OnClickListener listener, StatusBarNotification notification) {
if (mNotificationHeader != null) {
removeView(mNotificationHeader);
@@ -1227,8 +1221,7 @@
public void onNotificationUpdated() {
mHybridGroupManager.setOverflowNumberColor(mOverflowNumber,
- mContainingNotification.getNotificationColor(),
- mContainingNotification.getNotificationColorAmbient());
+ mContainingNotification.getNotificationColor());
}
public int getPositionInLinearLayout(View childInGroup) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManager.java
index 9418601..c5ab9f6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManager.java
@@ -18,6 +18,7 @@
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.NUM_SECTIONS;
+import com.android.systemui.statusbar.AmbientPulseManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
@@ -26,26 +27,34 @@
import java.util.HashSet;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* A class that manages the roundness for notification views
*/
-class NotificationRoundnessManager implements OnHeadsUpChangedListener {
+@Singleton
+class NotificationRoundnessManager implements OnHeadsUpChangedListener,
+ AmbientPulseManager.OnAmbientChangedListener {
+ private final ActivatableNotificationView[] mFirstInSectionViews;
+ private final ActivatableNotificationView[] mLastInSectionViews;
+ private final ActivatableNotificationView[] mTmpFirstInSectionViews;
+ private final ActivatableNotificationView[] mTmpLastInSectionViews;
private boolean mExpanded;
- private ActivatableNotificationView[] mFirstInSectionViews;
- private ActivatableNotificationView[] mLastInSectionViews;
- private ActivatableNotificationView[] mTmpFirstInSectionViews;
- private ActivatableNotificationView[] mTmpLastInSectionViews;
private HashSet<ExpandableView> mAnimatedChildren;
private Runnable mRoundingChangedCallback;
private ExpandableNotificationRow mTrackedHeadsUp;
+ private ActivatableNotificationView mTrackedAmbient;
private float mAppearFraction;
- NotificationRoundnessManager() {
+ @Inject
+ NotificationRoundnessManager(AmbientPulseManager ambientPulseManager) {
mFirstInSectionViews = new ActivatableNotificationView[NUM_SECTIONS];
mLastInSectionViews = new ActivatableNotificationView[NUM_SECTIONS];
mTmpFirstInSectionViews = new ActivatableNotificationView[NUM_SECTIONS];
mTmpLastInSectionViews = new ActivatableNotificationView[NUM_SECTIONS];
+ ambientPulseManager.addListener(this);
}
@Override
@@ -63,6 +72,17 @@
updateView(row, false /* animate */);
}
+ @Override
+ public void onAmbientStateChanged(NotificationEntry entry, boolean isPulsing) {
+ ActivatableNotificationView row = entry.getRow();
+ if (isPulsing) {
+ mTrackedAmbient = row;
+ } else if (mTrackedAmbient == row) {
+ mTrackedAmbient = null;
+ }
+ updateView(row, false /* animate */);
+ }
+
private void updateView(ActivatableNotificationView view, boolean animate) {
boolean changed = updateViewWithoutCallback(view, animate);
if (changed) {
@@ -125,6 +145,9 @@
// rounded.
return 1.0f;
}
+ if (view == mTrackedAmbient) {
+ return 1.0f;
+ }
return 0.0f;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index 2d1f989..d066567 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -201,12 +201,7 @@
private int mPaddingBetweenElements;
private int mIncreasedPaddingBetweenElements;
private int mMaxTopPadding;
- private int mRegularTopPadding;
- private int mDarkTopPadding;
- // Current padding, will be either mRegularTopPadding or mDarkTopPadding
private int mTopPadding;
- // Distance between AOD separator and shelf
- private int mDarkShelfPadding;
private int mBottomMargin;
private int mBottomInset = 0;
private float mQsExpansionFraction;
@@ -318,7 +313,7 @@
private HashSet<Pair<ExpandableNotificationRow, Boolean>> mHeadsUpChangeAnimations
= new HashSet<>();
private HeadsUpManagerPhone mHeadsUpManager;
- private NotificationRoundnessManager mRoundnessManager = new NotificationRoundnessManager();
+ private final NotificationRoundnessManager mRoundnessManager;
private boolean mTrackingHeadsUp;
private ScrimController mScrimController;
private boolean mForceNoOverlappingRendering;
@@ -441,7 +436,8 @@
Dependency.get(NotificationEntryManager.class);
private final IStatusBarService mBarService = IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
- private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
+ @VisibleForTesting
+ protected final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
private final NotificationRemoteInputManager mRemoteInputManager =
Dependency.get(NotificationRemoteInputManager.class);
private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class);
@@ -468,7 +464,8 @@
public NotificationStackScrollLayout(
@Named(VIEW_CONTEXT) Context context,
AttributeSet attrs,
- @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) boolean allowLongPress) {
+ @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) boolean allowLongPress,
+ NotificationRoundnessManager notificationRoundnessManager) {
super(context, attrs, 0, 0);
Resources res = getResources();
@@ -479,6 +476,7 @@
}
mAmbientState = new AmbientState(context);
+ mRoundnessManager = notificationRoundnessManager;
mBgColor = context.getColor(R.color.notification_shade_background_color);
int minHeight = res.getDimensionPixelSize(R.dimen.notification_min_height);
int maxHeight = res.getDimensionPixelSize(R.dimen.notification_max_height);
@@ -495,7 +493,6 @@
res.getBoolean(R.bool.config_drawNotificationBackground);
mFadeNotificationsOnDismiss =
res.getBoolean(R.bool.config_fadeNotificationsOnDismiss);
- mDarkShelfPadding = res.getDimensionPixelSize(R.dimen.widget_bottom_separator_padding);
mRoundnessManager.setAnimatedChildren(mChildrenToAddAnimated);
mRoundnessManager.setOnRoundingChangedCallback(this::invalidate);
addOnExpandedHeightListener(mRoundnessManager::setExpanded);
@@ -684,7 +681,7 @@
int lockScreenTop = mSections[0].getCurrentBounds().top;
int lockScreenBottom = mSections[NUM_SECTIONS - 1].getCurrentBounds().bottom;
int darkLeft = getWidth() / 2;
- int darkTop = mRegularTopPadding;
+ int darkTop = mTopPadding;
float yProgress = 1 - mInterpolatedDarkAmount;
float xProgress = mDarkXInterpolator.getInterpolation(
@@ -952,8 +949,6 @@
@ShadeViewRefactor(RefactorComponent.LAYOUT_ALGORITHM)
private void updateAlgorithmHeightAndPadding() {
- mTopPadding = (int) MathUtils.lerp(mRegularTopPadding, mDarkTopPadding,
- mInterpolatedDarkAmount);
mAmbientState.setLayoutHeight(getLayoutHeight());
updateAlgorithmLayoutMinHeight();
mAmbientState.setTopPadding(mTopPadding);
@@ -1091,10 +1086,8 @@
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
private void setTopPadding(int topPadding, boolean animate) {
- if (mRegularTopPadding != topPadding) {
- mRegularTopPadding = topPadding;
- mDarkTopPadding = topPadding + mDarkShelfPadding;
- mAmbientState.setDarkTopPadding(mDarkTopPadding);
+ if (mTopPadding != topPadding) {
+ mTopPadding = topPadding;
updateAlgorithmHeightAndPadding();
updateContentHeight();
if (animate && mAnimationsEnabled && mIsExpanded) {
@@ -2059,10 +2052,7 @@
}
mIntrinsicContentHeight = height;
- // We don't want to use the toppadding since that might be interpolated and we want
- // to take the final value of the animation.
- int topPadding = mAmbientState.isFullyDark() ? mDarkTopPadding : mRegularTopPadding;
- mContentHeight = height + topPadding + mBottomMargin;
+ mContentHeight = height + mTopPadding + mBottomMargin;
updateScrollability();
clampScrollPosition();
mAmbientState.setLayoutMaxHeight(mContentHeight);
@@ -2226,13 +2216,16 @@
int top = 0;
if (section != null) {
ActivatableNotificationView firstView = section.getFirstVisibleChild();
- // Round Y up to avoid seeing the background during animation
- int finalTranslationY = (int) Math.ceil(ViewState.getFinalTranslationY(firstView));
- if (alreadyAnimating || section.isTargetTop(finalTranslationY)) {
- // we're ending up at the same location as we are now, let's just skip the animation
- top = finalTranslationY;
- } else {
- top = (int) Math.ceil(firstView.getTranslationY());
+ if (firstView != null) {
+ // Round Y up to avoid seeing the background during animation
+ int finalTranslationY = (int) Math.ceil(ViewState.getFinalTranslationY(firstView));
+ if (alreadyAnimating || section.isTargetTop(finalTranslationY)) {
+ // we're ending up at the same location as we are now, let's just skip the
+ // animation
+ top = finalTranslationY;
+ } else {
+ top = (int) Math.ceil(firstView.getTranslationY());
+ }
}
}
return top;
@@ -5218,9 +5211,6 @@
// another "changeViewPosition" call is ever added.
changeViewPosition(mShelf,
getChildCount() - offsetFromEnd);
-
- // Scrim opacity varies based on notification count
- mScrimController.setNotificationCount(getNotGoneChildCount());
}
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
@@ -5638,8 +5628,9 @@
}
};
+ @VisibleForTesting
@ShadeViewRefactor(RefactorComponent.INPUT)
- private final OnMenuEventListener mMenuEventListener = new OnMenuEventListener() {
+ protected final OnMenuEventListener mMenuEventListener = new OnMenuEventListener() {
@Override
public void onMenuClicked(View view, int x, int y, MenuItem item) {
if (mLongPressListener == null) {
@@ -5647,8 +5638,10 @@
}
if (view instanceof ExpandableNotificationRow) {
ExpandableNotificationRow row = (ExpandableNotificationRow) view;
- MetricsLogger.action(mContext, MetricsEvent.ACTION_TOUCH_GEAR,
- row.getStatusBarNotification().getPackageName());
+ mMetricsLogger.write(row.getStatusBarNotification().getLogMaker()
+ .setCategory(MetricsEvent.ACTION_TOUCH_GEAR)
+ .setType(MetricsEvent.TYPE_ACTION)
+ );
}
mLongPressListener.onLongPress(view, x, y, item);
}
@@ -5671,8 +5664,9 @@
public void onMenuShown(View row) {
if (row instanceof ExpandableNotificationRow) {
ExpandableNotificationRow notificationRow = (ExpandableNotificationRow) row;
- MetricsLogger.action(mContext, MetricsEvent.ACTION_REVEAL_GEAR,
- notificationRow.getStatusBarNotification().getPackageName());
+ mMetricsLogger.write(notificationRow.getStatusBarNotification().getLogMaker()
+ .setCategory(MetricsEvent.ACTION_REVEAL_GEAR)
+ .setType(MetricsEvent.TYPE_ACTION));
mHeadsUpManager.setMenuShown(notificationRow.getEntry(), true);
}
mSwipeHelper.onMenuShown(row);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
index 19fce48..b4c205a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
@@ -426,6 +426,9 @@
mTmpState.yTranslation += mPulsingAppearingTranslation;
mTmpState.alpha = 0;
mTmpState.applyToView(changingView);
+
+ mTmpState.copyFrom(mShelf.getViewState());
+ mTmpState.applyToView(mShelf);
}
} else if (event.animationType == NotificationStackScrollLayout
.AnimationEvent.ANIMATION_TYPE_PULSE_DISAPPEAR) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index 6f2b63d..1049773 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -158,8 +158,7 @@
* @return duration in millis.
*/
public long getWallpaperAodDuration() {
- if (mAmbientDisplayConfiguration.wakeLockScreenGestureEnabled(UserHandle.USER_CURRENT)
- || shouldControlScreenOff()) {
+ if (shouldControlScreenOff()) {
return DozeScreenState.ENTER_DOZE_HIDE_WALLPAPER_DELAY;
}
return mAlwaysOnPolicy.wallpaperVisibilityDuration;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
index 577e8d6..280dda0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
@@ -84,14 +84,6 @@
public void onCancelled() {
pulseFinished();
}
-
- /**
- * Whether to fade out wallpaper.
- */
- @Override
- public boolean isFadeOutWallpaper() {
- return mPulseReason == DozeLog.PULSE_REASON_DOCKING;
- }
};
public DozeScrimController(DozeParameters dozeParameters) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java
index a81b7e5..c68fdd4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java
@@ -91,11 +91,6 @@
private int mBurnInPreventionOffsetY;
/**
- * Clock vertical padding when pulsing.
- */
- private int mPulsingPadding;
-
- /**
* Doze/AOD transition amount.
*/
private float mDarkAmount;
@@ -105,10 +100,6 @@
*/
private boolean mCurrentlySecure;
- /**
- * Dozing and receiving a notification (AOD notification.)
- */
- private boolean mPulsing;
private float mEmptyDragAmount;
/**
@@ -123,13 +114,11 @@
R.dimen.burn_in_prevention_offset_x);
mBurnInPreventionOffsetY = res.getDimensionPixelSize(
R.dimen.burn_in_prevention_offset_y);
- mPulsingPadding = res.getDimensionPixelSize(
- R.dimen.widget_pulsing_bottom_padding);
}
public void setup(int minTopMargin, int maxShadeBottom, int notificationStackHeight,
float panelExpansion, int parentHeight, int keyguardStatusHeight, float dark,
- boolean secure, boolean pulsing, float emptyDragAmount) {
+ boolean secure, float emptyDragAmount) {
mMinTopMargin = minTopMargin + mContainerTopPadding;
mMaxShadeBottom = maxShadeBottom;
mNotificationStackHeight = notificationStackHeight;
@@ -138,7 +127,6 @@
mKeyguardStatusHeight = keyguardStatusHeight;
mDarkAmount = dark;
mCurrentlySecure = secure;
- mPulsing = pulsing;
mEmptyDragAmount = emptyDragAmount;
}
@@ -146,7 +134,7 @@
final int y = getClockY();
result.clockY = y;
result.clockAlpha = getClockAlpha(y);
- result.stackScrollerPadding = y + (mPulsing ? mPulsingPadding : mKeyguardStatusHeight);
+ result.stackScrollerPadding = y + mKeyguardStatusHeight;
result.clockX = (int) interpolate(0, burnInPreventionOffsetX(), mDarkAmount);
}
@@ -185,9 +173,6 @@
private int getClockY() {
// Dark: Align the bottom edge of the clock at about half of the screen:
float clockYDark = getMaxClockY() + burnInPreventionOffsetY();
- if (mPulsing) {
- clockYDark -= mPulsingPadding;
- }
clockYDark = MathUtils.max(0, clockYDark);
float clockYRegular = getExpandedClockPosition();
@@ -230,11 +215,6 @@
- mBurnInPreventionOffsetX;
}
- @VisibleForTesting
- void setPulsingPadding(int padding) {
- mPulsingPadding = padding;
- }
-
public static class Result {
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationAssistantAction.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationAssistantAction.java
index ebcd39b..323e776 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationAssistantAction.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationAssistantAction.java
@@ -43,6 +43,11 @@
}
@Override
+ public boolean disableProxyEvents() {
+ return true;
+ }
+
+ @Override
public void onGestureStart(MotionEvent event) {
mAssistManager.startAssist(new Bundle());
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBackAction.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBackAction.java
index 93605ad..7a42b03 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBackAction.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBackAction.java
@@ -95,6 +95,11 @@
}
}
+ @Override
+ public boolean disableProxyEvents() {
+ return true;
+ }
+
private void performBack() {
sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
sendEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 31310f5..0d5ebb9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -141,6 +141,7 @@
private KeyguardAffordanceHelper mAffordanceHelper;
private KeyguardUserSwitcher mKeyguardUserSwitcher;
private KeyguardStatusBarView mKeyguardStatusBar;
+ private ViewGroup mBigClockContainer;
private QS mQs;
private FrameLayout mQsFrame;
@VisibleForTesting
@@ -348,8 +349,8 @@
mKeyguardStatusView = findViewById(R.id.keyguard_status_view);
KeyguardClockSwitch keyguardClockSwitch = findViewById(R.id.keyguard_clock_container);
- ViewGroup bigClockContainer = findViewById(R.id.big_clock_container);
- keyguardClockSwitch.setBigClockContainer(bigClockContainer);
+ mBigClockContainer = findViewById(R.id.big_clock_container);
+ keyguardClockSwitch.setBigClockContainer(mBigClockContainer);
mNotificationContainerParent = findViewById(R.id.notification_container_parent);
mNotificationStackScroller = findViewById(R.id.notification_stack_scroller);
@@ -578,18 +579,23 @@
mKeyguardStatusView.getHeight(),
mInterpolatedDarkAmount,
mStatusBar.isKeyguardCurrentlySecure(),
- mPulsing,
mEmptyDragAmount);
mClockPositionAlgorithm.run(mClockPositionResult);
PropertyAnimator.setProperty(mKeyguardStatusView, AnimatableProperty.X,
mClockPositionResult.clockX, CLOCK_ANIMATION_PROPERTIES, animateClock);
PropertyAnimator.setProperty(mKeyguardStatusView, AnimatableProperty.Y,
mClockPositionResult.clockY, CLOCK_ANIMATION_PROPERTIES, animateClock);
+ // Move big clock up while pulling up the bouncer
+ PropertyAnimator.setProperty(mBigClockContainer, AnimatableProperty.Y,
+ MathUtils.lerp(-mBigClockContainer.getHeight(), 0,
+ Interpolators.FAST_OUT_LINEAR_IN.getInterpolation(getExpandedFraction())),
+ CLOCK_ANIMATION_PROPERTIES, animateClock);
updateClock();
stackScrollerPadding = mClockPositionResult.stackScrollerPadding;
}
mNotificationStackScroller.setIntrinsicPadding(stackScrollerPadding);
- mNotificationStackScroller.setAntiBurnInOffsetX(mClockPositionResult.clockX);
+ int burnInXOffset = mPulsing ? 0 : mClockPositionResult.clockX;
+ mNotificationStackScroller.setAntiBurnInOffsetX(burnInXOffset);
mStackScrollerMeasuringPass++;
requestScrollerTopPaddingUpdate(animate);
@@ -2824,7 +2830,7 @@
mAnimateNextPositionUpdate = false;
}
mNotificationStackScroller.setPulsing(pulsing, animatePulse);
- mKeyguardStatusView.setPulsing(pulsing, animatePulse);
+ mKeyguardStatusView.setPulsing(pulsing);
mKeyguardBottomArea.setPulsing(pulsing, animatePulse);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java
index 0cec637..9e91ab7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java
@@ -34,13 +34,20 @@
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Rect;
+import android.hardware.input.InputManager;
import android.os.RemoteException;
+import android.os.SystemClock;
import android.provider.Settings;
import android.util.Log;
+import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
import android.view.ViewPropertyAnimator;
+import android.view.WindowManager;
+import android.view.WindowManager.LayoutParams;
+
import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
@@ -64,7 +71,10 @@
/** Experiment to swipe home button left to execute a back key press */
private static final String HIDE_BACK_BUTTON_PROP = "quickstepcontroller_hideback";
+ private static final String ENABLE_CLICK_THROUGH_NAV_PROP = "quickstepcontroller_clickthrough";
private static final long BACK_BUTTON_FADE_IN_ALPHA = 150;
+ private static final long CLICK_THROUGH_TAP_DELAY = 70;
+ private static final long CLICK_THROUGH_TAP_RESET_DELAY = 100;
/** When the home-swipe-back gesture is disallowed, make it harder to pull */
private static final float HORIZONTAL_GESTURE_DAMPING = 0.3f;
@@ -100,6 +110,9 @@
private float mMinDragLimit;
private float mDragDampeningFactor;
private float mEdgeSwipeThreshold;
+ private boolean mClickThroughPressed;
+ private float mClickThroughPressX;
+ private float mClickThroughPressY;
private NavigationGestureAction mCurrentAction;
private NavigationGestureAction[] mGestureActions = new NavigationGestureAction[MAX_GESTURES];
@@ -117,6 +130,19 @@
mOverviewEventSender = Dependency.get(OverviewProxyService.class);
}
+ private final Runnable mClickThroughSendTap = new Runnable() {
+ @Override
+ public void run() {
+ sendTap(mClickThroughPressX, mClickThroughPressY);
+ mNavigationBarView.postDelayed(mClickThroughResetTap, CLICK_THROUGH_TAP_RESET_DELAY);
+ }
+ };
+
+ private final Runnable mClickThroughResetTap = () -> {
+ setWindowTouchable(true);
+ mClickThroughPressed = false;
+ };
+
public void setComponents(NavigationBarView navigationBarView) {
mNavigationBarView = navigationBarView;
@@ -320,6 +346,25 @@
case MotionEvent.ACTION_UP:
if (mCurrentAction != null) {
mCurrentAction.endGesture();
+ } else if (action == MotionEvent.ACTION_UP
+ && getBoolGlobalSetting(mContext, ENABLE_CLICK_THROUGH_NAV_PROP)
+ && !mClickThroughPressed) {
+ // Enable click through functionality where no gesture has been detected and not
+ // passed the drag slop so inject a touch event at the same location
+ // after making the navigation bar window untouchable. After a some time, the
+ // navigation bar will be able to take input events again
+ float diffX = Math.abs(event.getX() - mTouchDownX);
+ float diffY = Math.abs(event.getY() - mTouchDownY);
+
+ if ((diffX <= NavigationBarCompat.getQuickStepDragSlopPx()
+ && diffY <= NavigationBarCompat.getQuickStepDragSlopPx())) {
+ setWindowTouchable(false);
+ mClickThroughPressX = event.getRawX();
+ mClickThroughPressY = event.getRawY();
+ mClickThroughPressed = true;
+ mNavigationBarView.postDelayed(mClickThroughSendTap,
+ CLICK_THROUGH_TAP_DELAY);
+ }
}
// Return the hit target back to its original position
@@ -350,6 +395,19 @@
return mCurrentAction != null || deadZoneConsumed;
}
+ private void setWindowTouchable(boolean flag) {
+ final WindowManager.LayoutParams lp = (WindowManager.LayoutParams)
+ ((ViewGroup) mNavigationBarView.getParent()).getLayoutParams();
+ if (flag) {
+ lp.flags &= ~LayoutParams.FLAG_NOT_TOUCHABLE;
+ } else {
+ lp.flags |= LayoutParams.FLAG_NOT_TOUCHABLE;
+ }
+ final WindowManager wm = (WindowManager) mNavigationBarView.getContext()
+ .getSystemService(Context.WINDOW_SERVICE);
+ wm.updateViewLayout((View) mNavigationBarView.getParent(), lp);
+ }
+
private boolean isEdgeSwipeAlongNavBar(int touchDown, boolean dragPositiveDirection) {
// Detect edge swipe from side of 0 -> threshold
if (dragPositiveDirection) {
@@ -562,6 +620,38 @@
return false;
}
+ private void sendTap(float x, float y) {
+ long now = SystemClock.uptimeMillis();
+ injectMotionEvent(InputDevice.SOURCE_TOUCHSCREEN, MotionEvent.ACTION_DOWN, now, x, y, 1.0f);
+ injectMotionEvent(InputDevice.SOURCE_TOUCHSCREEN, MotionEvent.ACTION_UP, now, x, y, 0.0f);
+ }
+
+ private int getInputDeviceId(int inputSource) {
+ int[] devIds = InputDevice.getDeviceIds();
+ for (int devId : devIds) {
+ InputDevice inputDev = InputDevice.getDevice(devId);
+ if (inputDev.supportsSource(inputSource)) {
+ return devId;
+ }
+ }
+ return 0;
+ }
+
+ private void injectMotionEvent(int inputSource, int action, long when, float x, float y,
+ float pressure) {
+ final float defaultSize = 1.0f;
+ final int defaultMetaState = 0;
+ final float defaultPrecisionX = 1.0f;
+ final float defaultPrecisionY = 1.0f;
+ final int defaultEdgeFlags = 0;
+ MotionEvent event = MotionEvent.obtain(when, when, action, x, y, pressure, defaultSize,
+ defaultMetaState, defaultPrecisionX, defaultPrecisionY,
+ getInputDeviceId(inputSource), defaultEdgeFlags);
+ event.setSource(inputSource);
+ InputManager.getInstance().injectInputEvent(event,
+ InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
+ }
+
private boolean proxyMotionEvents(MotionEvent event) {
final IOverviewProxy overviewProxy = mOverviewEventSender.getProxy();
event.transform(mTransformGlobalMatrix);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 853d7ab..bf143c8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -88,16 +88,12 @@
/**
* Default alpha value for most scrims.
*/
- public static final float GRADIENT_SCRIM_ALPHA = 0.45f;
+ public static final float GRADIENT_SCRIM_ALPHA = 0.2f;
/**
* A scrim varies its opacity based on a busyness factor, for example
* how many notifications are currently visible.
*/
public static final float GRADIENT_SCRIM_ALPHA_BUSY = 0.7f;
- /**
- * Scrim opacity when a wallpaper doesn't support ambient mode.
- */
- public static final float PULSING_WALLPAPER_SCRIM_ALPHA = 0.6f;
/**
* The most common scrim, the one under the keyguard.
@@ -154,7 +150,6 @@
private Callback mCallback;
private boolean mWallpaperSupportsAmbientMode;
private boolean mScreenOn;
- private float mNotificationDensity;
// Scrim blanking callbacks
private Runnable mPendingFrameCallback;
@@ -245,7 +240,7 @@
mCurrentInFrontTint = state.getFrontTint();
mCurrentBehindTint = state.getBehindTint();
mCurrentInFrontAlpha = state.getFrontAlpha();
- mCurrentBehindAlpha = state.getBehindAlpha(mNotificationDensity);
+ mCurrentBehindAlpha = state.getBehindAlpha();
applyExpansionToAlpha();
// Scrim might acquire focus when user is navigating with a D-pad or a keyboard.
@@ -279,8 +274,7 @@
// Docking pulses may take a long time, wallpapers should also fade away after a while.
if (mWallpaperSupportsAmbientMode && (
mDozeParameters.getAlwaysOn() && mState == ScrimState.AOD
- || mState == ScrimState.PULSING && mCallback != null
- && mCallback.isFadeOutWallpaper())) {
+ || mState == ScrimState.PULSING && mCallback != null)) {
if (!mWallpaperVisibilityTimedOut) {
mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
@@ -416,7 +410,7 @@
// Either darken of make the scrim transparent when you
// pull down the shade
float interpolatedFract = getInterpolatedFraction();
- float alphaBehind = mState.getBehindAlpha(mNotificationDensity);
+ float alphaBehind = mState.getBehindAlpha();
if (mDarkenWhileDragging) {
mCurrentBehindAlpha = MathUtils.lerp(GRADIENT_SCRIM_ALPHA_BUSY, alphaBehind,
interpolatedFract);
@@ -430,24 +424,6 @@
}
/**
- * Keyguard and shade scrim opacity varies according to how many notifications are visible.
- * @param notificationCount Number of visible notifications.
- */
- public void setNotificationCount(int notificationCount) {
- final float maxNotificationDensity = 3;
- float notificationDensity = Math.min(notificationCount / maxNotificationDensity, 1f);
- if (mNotificationDensity == notificationDensity) {
- return;
- }
- mNotificationDensity = notificationDensity;
-
- if (mState == ScrimState.KEYGUARD) {
- applyExpansionToAlpha();
- scheduleUpdate();
- }
- }
-
- /**
* Sets the given drawable as the background of the scrim that shows up behind the
* notifications.
*/
@@ -612,9 +588,11 @@
anim.setStartDelay(mAnimationDelay);
anim.setDuration(mAnimationDuration);
anim.addListener(new AnimatorListenerAdapter() {
+ private Callback lastCallback = mCallback;
+
@Override
public void onAnimationEnd(Animator animation) {
- onFinished();
+ onFinished(lastCallback);
scrim.setTag(TAG_KEY_ANIM, null);
dispatchScrimsVisible();
@@ -672,14 +650,23 @@
}
private void onFinished() {
+ onFinished(mCallback);
+ }
+
+ private void onFinished(Callback callback) {
if (mWakeLockHeld) {
mWakeLock.release();
mWakeLockHeld = false;
}
- if (mCallback != null) {
- mCallback.onFinished();
- mCallback = null;
+
+ if (callback != null) {
+ callback.onFinished();
+
+ if (callback == mCallback) {
+ mCallback = null;
+ }
}
+
// When unlocking with fingerprint, we'll fade the scrims from black to transparent.
// At the end of the animation we need to remove the tint.
if (mState == ScrimState.UNLOCKED) {
@@ -898,7 +885,7 @@
// Backdrop event may arrive after state was already applied,
// in this case, back-scrim needs to be re-evaluated
if (mState == ScrimState.AOD || mState == ScrimState.PULSING) {
- float newBehindAlpha = mState.getBehindAlpha(mNotificationDensity);
+ float newBehindAlpha = mState.getBehindAlpha();
if (mCurrentBehindAlpha != newBehindAlpha) {
mCurrentBehindAlpha = newBehindAlpha;
updateScrims();
@@ -912,6 +899,10 @@
}
}
+ public void setPulseReason(int pulseReason) {
+ ScrimState.PULSING.setPulseReason(pulseReason);
+ }
+
public interface Callback {
default void onStart() {
}
@@ -921,9 +912,6 @@
}
default void onCancelled() {
}
- default boolean isFadeOutWallpaper() {
- return false;
- }
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java
index 72519ba3..11a2d32 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java
@@ -18,8 +18,8 @@
import android.graphics.Color;
import android.os.Trace;
-import android.util.MathUtils;
+import com.android.systemui.doze.DozeLog;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
@@ -57,13 +57,6 @@
mCurrentBehindAlpha = mScrimBehindAlphaKeyguard;
mCurrentInFrontAlpha = 0;
}
-
- @Override
- public float getBehindAlpha(float busynessFactor) {
- return MathUtils.map(0 /* start */, 1 /* stop */,
- mScrimBehindAlphaKeyguard, ScrimController.GRADIENT_SCRIM_ALPHA_BUSY,
- busynessFactor);
- }
},
/**
@@ -117,7 +110,7 @@
}
@Override
- public float getBehindAlpha(float busyness) {
+ public float getBehindAlpha() {
return mWallpaperSupportsAmbientMode && !mHasBackdrop ? 0f : 1f;
}
@@ -133,17 +126,17 @@
PULSING(5) {
@Override
public void prepare(ScrimState previousState) {
- mCurrentInFrontAlpha = 0;
- mCurrentInFrontTint = Color.BLACK;
- mCurrentBehindTint = Color.BLACK;
+ mCurrentInFrontAlpha = 0f;
+ if (mPulseReason == DozeLog.PULSE_REASON_NOTIFICATION
+ || mPulseReason == DozeLog.PULSE_REASON_DOCKING) {
+ mCurrentBehindAlpha = previousState.getBehindAlpha();
+ mCurrentBehindTint = Color.BLACK;
+ } else {
+ mCurrentBehindAlpha = mScrimBehindAlphaKeyguard;
+ mCurrentBehindTint = Color.TRANSPARENT;
+ }
mBlankScreen = mDisplayRequiresBlanking;
}
-
- @Override
- public float getBehindAlpha(float busyness) {
- return mWallpaperSupportsAmbientMode && !mHasBackdrop ? 0f
- : ScrimController.PULSING_WALLPAPER_SCRIM_ALPHA;
- }
},
/**
@@ -204,6 +197,7 @@
int mIndex;
boolean mHasBackdrop;
boolean mLaunchingAffordanceWithPreview;
+ int mPulseReason;
ScrimState(int index) {
mIndex = index;
@@ -235,7 +229,7 @@
return mCurrentInFrontAlpha;
}
- public float getBehindAlpha(float busyness) {
+ public float getBehindAlpha() {
return mCurrentBehindAlpha;
}
@@ -276,6 +270,10 @@
mAodFrontScrimAlpha = aodFrontScrimAlpha;
}
+ public void setPulseReason(int pulseReason) {
+ mPulseReason = pulseReason;
+ }
+
public void setScrimBehindAlphaKeyguard(float scrimBehindAlphaKeyguard) {
mScrimBehindAlphaKeyguard = scrimBehindAlphaKeyguard;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 514bb22..1470d0f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -196,6 +196,7 @@
import com.android.systemui.statusbar.notification.NotificationClicker;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
+import com.android.systemui.statusbar.notification.NotificationListController;
import com.android.systemui.statusbar.notification.NotificationRowBinder;
import com.android.systemui.statusbar.notification.VisualStabilityManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -387,6 +388,7 @@
private NotificationGutsManager mGutsManager;
protected NotificationLogger mNotificationLogger;
protected NotificationEntryManager mEntryManager;
+ private NotificationListController mNotificationListController;
private NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
private NotificationRowBinder mNotificationRowBinder;
protected NotificationViewHierarchyManager mViewHierarchyManager;
@@ -593,7 +595,7 @@
public void onActiveStateChanged(int code, int uid, String packageName, boolean active) {
mForegroundServiceController.onAppOpChanged(code, uid, packageName, active);
Dependency.get(Dependency.MAIN_HANDLER).post(() -> {
- mEntryManager.updateNotificationsForAppOp(code, uid, packageName, active);
+ mNotificationListController.updateNotificationsForAppOp(code, uid, packageName, active);
});
}
@@ -1044,6 +1046,13 @@
mScrimController, mActivityLaunchAnimator, mStatusBarKeyguardViewManager,
mNotificationAlertingManager);
+ mNotificationListController =
+ new NotificationListController(
+ mEntryManager,
+ (NotificationListContainer) mStackScroller,
+ mForegroundServiceController,
+ mDeviceProvisionedController);
+
mAppOpsController.addCallback(APP_OPS, this);
mNotificationListener.setUpWithPresenter(mPresenter);
mNotificationShelf.setOnActivatedListener(mPresenter);
@@ -1056,6 +1065,7 @@
this, Dependency.get(BubbleController.class), mNotificationActivityStarter));
mGroupAlertTransferHelper.bind(mEntryManager, mGroupManager);
+ mNotificationListController.bind();
}
/**
@@ -2831,7 +2841,7 @@
} catch (RemoteException e) {
// Ignore.
}
- mEntryManager.destroy();
+ mNotificationListController.destroy();
// End old BaseStatusBar.destroy().
if (mStatusBarWindow != null) {
mWindowManager.removeViewImmediate(mStatusBarWindow);
@@ -3873,6 +3883,7 @@
@Override
public void pulseWhileDozing(@NonNull PulseCallback callback, int reason) {
+ mScrimController.setPulseReason(reason);
if (reason == DozeLog.PULSE_REASON_SENSOR_LONG_PRESS) {
mPowerManager.wakeUp(SystemClock.uptimeMillis(), "com.android.systemui:NODOZE");
startAssist(new Bundle());
@@ -3999,7 +4010,7 @@
}
@Override
- public void onDoubleTap(float screenX, float screenY) {
+ public void onSlpiTap(float screenX, float screenY) {
if (screenX > 0 && screenY > 0 && mAmbientIndicationContainer != null
&& mAmbientIndicationContainer.getVisibility() == View.VISIBLE) {
mAmbientIndicationContainer.getLocationOnScreen(mTmpInt2);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
index 04d24dc..4f61009 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
@@ -346,7 +346,7 @@
}
private void handleFullScreenIntent(NotificationEntry entry) {
- boolean isHeadsUped = mNotificationInterruptionStateProvider.canHeadsUpCommon(entry);
+ boolean isHeadsUped = mNotificationInterruptionStateProvider.shouldHeadsUp(entry);
if (!isHeadsUped && entry.notification.getNotification().fullScreenIntent != null) {
if (shouldSuppressFullScreenIntent(entry)) {
if (DEBUG) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 9422101..f79ad71 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -541,7 +541,8 @@
@VisibleForTesting
void doUpdateMobileControllers() {
- List<SubscriptionInfo> subscriptions = mSubscriptionManager.getActiveSubscriptionInfoList();
+ List<SubscriptionInfo> subscriptions = mSubscriptionManager
+ .getActiveSubscriptionInfoList(true);
if (subscriptions == null) {
subscriptions = Collections.emptyList();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
index dfb02cf..9c4db34 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
@@ -18,6 +18,7 @@
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
+import android.app.ActivityManager;
import android.app.Notification;
import android.app.PendingIntent;
import android.app.RemoteInput;
@@ -28,6 +29,7 @@
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.text.Editable;
import android.text.SpannedString;
import android.text.TextWatcher;
@@ -283,6 +285,11 @@
focus();
}
+ private static UserHandle computeTextOperationUser(UserHandle notificationUser) {
+ return UserHandle.ALL.equals(notificationUser)
+ ? UserHandle.of(ActivityManager.getCurrentUser()) : notificationUser;
+ }
+
public void focus() {
MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_OPEN,
mEntry.notification.getPackageName());
@@ -291,6 +298,7 @@
if (mWrapper != null) {
mWrapper.setRemoteInputVisible(true);
}
+ mEditText.setTextOperationUser(computeTextOperationUser(mEntry.notification.getUser()));
mEditText.setInnerFocusable(true);
mEditText.mShowImeOnInputConnection = true;
mEditText.setText(mEntry.remoteInputText);
@@ -320,6 +328,7 @@
mResetting = true;
mEntry.remoteInputTextWhenReset = SpannedString.valueOf(mEditText.getText());
+ mEditText.setTextOperationUser(null);
mEditText.getText().clear();
mEditText.setEnabled(true);
mSendButton.setVisibility(VISIBLE);
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/clock/BubbleClockControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/clock/BubbleClockControllerTest.java
new file mode 100644
index 0000000..9e946fa
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/keyguard/clock/BubbleClockControllerTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.test.suitebuilder.annotation.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper.RunWithLooper;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.android.systemui.SysuiTestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@RunWithLooper
+public final class BubbleClockControllerTest extends SysuiTestCase {
+
+ private BubbleClockController mClockController;
+
+ @Before
+ public void setUp() {
+ LayoutInflater layoutInflater = LayoutInflater.from(getContext());
+ mClockController = BubbleClockController.build(layoutInflater);
+ }
+
+ @Test
+ public void setDarkAmount_fadeIn() {
+ ViewGroup smallClockFrame = (ViewGroup) mClockController.getView();
+ View smallClock = smallClockFrame.getChildAt(0);
+ // WHEN dark amount is set to AOD
+ mClockController.setDarkAmount(1f);
+ // THEN small clock should not be shown.
+ assertThat(smallClock.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void setTextColor_setDigitalClock() {
+ ViewGroup smallClock = (ViewGroup) mClockController.getView();
+ // WHEN text color is set
+ mClockController.setTextColor(42);
+ // THEN child of small clock should have text color set.
+ TextView digitalClock = (TextView) smallClock.getChildAt(0);
+ assertThat(digitalClock.getCurrentTextColor()).isEqualTo(42);
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/clock/CrossFadeDarkControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/clock/CrossFadeDarkControllerTest.java
new file mode 100644
index 0000000..fd7657f
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/keyguard/clock/CrossFadeDarkControllerTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.test.suitebuilder.annotation.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper.RunWithLooper;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.systemui.SysuiTestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@RunWithLooper
+public final class CrossFadeDarkControllerTest extends SysuiTestCase {
+
+ private View mViewFadeIn;
+ private View mViewFadeOut;
+ private CrossFadeDarkController mDarkController;
+
+ @Before
+ public void setUp() {
+ mViewFadeIn = new TextView(getContext());
+ mViewFadeIn.setVisibility(View.VISIBLE);
+ mViewFadeIn.setAlpha(1f);
+ mViewFadeOut = new TextView(getContext());
+ mViewFadeOut.setVisibility(View.VISIBLE);
+ mViewFadeOut.setAlpha(1f);
+
+ mDarkController = new CrossFadeDarkController(mViewFadeIn, mViewFadeOut);
+ }
+
+ @Test
+ public void setDarkAmount_fadeIn() {
+ // WHEN dark amount corresponds to AOD
+ mDarkController.setDarkAmount(1f);
+ // THEN fade in view should be faded in and fade out view faded out.
+ assertThat(mViewFadeIn.getAlpha()).isEqualTo(1f);
+ assertThat(mViewFadeIn.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewFadeOut.getAlpha()).isEqualTo(0f);
+ assertThat(mViewFadeOut.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void setDarkAmount_fadeOut() {
+ // WHEN dark amount corresponds to lock screen
+ mDarkController.setDarkAmount(0f);
+ // THEN fade out view should bed faded out and fade in view faded in.
+ assertThat(mViewFadeIn.getAlpha()).isEqualTo(0f);
+ assertThat(mViewFadeIn.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewFadeOut.getAlpha()).isEqualTo(1f);
+ assertThat(mViewFadeOut.getVisibility()).isEqualTo(View.VISIBLE);
+ }
+
+ @Test
+ public void setDarkAmount_partialFadeIn() {
+ // WHEN dark amount corresponds to a partial transition
+ mDarkController.setDarkAmount(0.9f);
+ // THEN views should have intermediate alpha value.
+ assertThat(mViewFadeIn.getAlpha()).isGreaterThan(0f);
+ assertThat(mViewFadeIn.getAlpha()).isLessThan(1f);
+ assertThat(mViewFadeIn.getVisibility()).isEqualTo(View.VISIBLE);
+ }
+
+ @Test
+ public void setDarkAmount_partialFadeOut() {
+ // WHEN dark amount corresponds to a partial transition
+ mDarkController.setDarkAmount(0.1f);
+ // THEN views should have intermediate alpha value.
+ assertThat(mViewFadeOut.getAlpha()).isGreaterThan(0f);
+ assertThat(mViewFadeOut.getAlpha()).isLessThan(1f);
+ assertThat(mViewFadeOut.getVisibility()).isEqualTo(View.VISIBLE);
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/clock/StretchAnalogClockControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/clock/StretchAnalogClockControllerTest.java
new file mode 100644
index 0000000..8de8f3d
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/keyguard/clock/StretchAnalogClockControllerTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2019 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.keyguard.clock;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.test.suitebuilder.annotation.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper.RunWithLooper;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.android.systemui.SysuiTestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@RunWithLooper
+public final class StretchAnalogClockControllerTest extends SysuiTestCase {
+
+ private StretchAnalogClockController mClockController;
+
+ @Before
+ public void setUp() {
+ LayoutInflater layoutInflater = LayoutInflater.from(getContext());
+ mClockController = StretchAnalogClockController.build(layoutInflater);
+ }
+
+ @Test
+ public void setDarkAmount_fadeIn() {
+ ViewGroup smallClockFrame = (ViewGroup) mClockController.getView();
+ View smallClock = smallClockFrame.getChildAt(0);
+ // WHEN dark amount is set to AOD
+ mClockController.setDarkAmount(1f);
+ // THEN small clock should not be shown.
+ assertThat(smallClock.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void setTextColor_setDigitalClock() {
+ ViewGroup smallClock = (ViewGroup) mClockController.getView();
+ // WHEN text color is set
+ mClockController.setTextColor(42);
+ // THEN child of small clock should have text color set.
+ TextView digitalClock = (TextView) smallClock.getChildAt(0);
+ assertThat(digitalClock.getCurrentTextColor()).isEqualTo(42);
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeHostFake.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeHostFake.java
index ce28b50..dc42872 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeHostFake.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeHostFake.java
@@ -104,7 +104,7 @@
}
@Override
- public void onDoubleTap(float x, float y) {
+ public void onSlpiTap(float x, float y) {
doubleTapX = y;
doubleTapY = y;
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginInstanceManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginInstanceManagerTest.java
index 4583770..3415c72 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginInstanceManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginInstanceManagerTest.java
@@ -91,7 +91,7 @@
mMockPm = mock(PackageManager.class);
mMockListener = mock(PluginListener.class);
mMockManager = mock(PluginManagerImpl.class);
- when(mMockManager.getClassLoader(any(), any())).thenReturn(getClass().getClassLoader());
+ when(mMockManager.getClassLoader(any())).thenReturn(getClass().getClassLoader());
mMockEnabler = mock(PluginEnabler.class);
when(mMockManager.getPluginEnabler()).thenReturn(mMockEnabler);
mMockVersionInfo = mock(VersionInfo.class);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginManagerTest.java
index 76e68f1..536c043 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginManagerTest.java
@@ -25,6 +25,7 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.test.suitebuilder.annotation.SmallTest;
@@ -135,9 +136,13 @@
});
resetExceptionHandler();
+ String sourceDir = "myPlugin";
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.sourceDir = sourceDir;
+ applicationInfo.packageName = WHITELISTED_PACKAGE;
mPluginManager.addPluginListener("myAction", mMockListener, TestPlugin.class);
- assertNull(mPluginManager.getOneShotPlugin("myPlugin", TestPlugin.class));
- assertNull(mPluginManager.getClassLoader("myPlugin", WHITELISTED_PACKAGE));
+ assertNull(mPluginManager.getOneShotPlugin(sourceDir, TestPlugin.class));
+ assertNull(mPluginManager.getClassLoader(applicationInfo));
}
@Test
@@ -152,9 +157,16 @@
});
resetExceptionHandler();
+ String sourceDir = "myPlugin";
+ ApplicationInfo whiteListedApplicationInfo = new ApplicationInfo();
+ whiteListedApplicationInfo.sourceDir = sourceDir;
+ whiteListedApplicationInfo.packageName = WHITELISTED_PACKAGE;
+ ApplicationInfo invalidApplicationInfo = new ApplicationInfo();
+ invalidApplicationInfo.sourceDir = sourceDir;
+ invalidApplicationInfo.packageName = "com.android.invalidpackage";
mPluginManager.addPluginListener("myAction", mMockListener, TestPlugin.class);
- assertNotNull(mPluginManager.getClassLoader("myPlugin", WHITELISTED_PACKAGE));
- assertNull(mPluginManager.getClassLoader("myPlugin", "com.android.invalidpackage"));
+ assertNotNull(mPluginManager.getClassLoader(whiteListedApplicationInfo));
+ assertNull(mPluginManager.getClassLoader(invalidApplicationInfo));
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java
index 2b13f86..0b24c21 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java
@@ -27,6 +27,7 @@
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
+import android.graphics.drawable.Icon;
import android.os.UserHandle;
import android.service.notification.StatusBarNotification;
import android.support.test.InstrumentationRegistry;
@@ -53,6 +54,8 @@
public static final String PKG = "com.android.systemui";
/** System UI id for testing purposes. */
public static final int UID = 1000;
+ /** Current {@link UserHandle} of the system. */
+ public static final UserHandle USER_HANDLE = UserHandle.of(ActivityManager.getCurrentUser());
private static final String GROUP_KEY = "gruKey";
@@ -77,7 +80,7 @@
* @throws Exception
*/
public ExpandableNotificationRow createRow() throws Exception {
- return createRow(PKG, UID);
+ return createRow(PKG, UID, USER_HANDLE);
}
/**
@@ -88,8 +91,9 @@
* @return a row with a notification using the package and user id
* @throws Exception
*/
- public ExpandableNotificationRow createRow(String pkg, int uid) throws Exception {
- return createRow(pkg, uid, false /* isGroupSummary */, null /* groupKey */);
+ public ExpandableNotificationRow createRow(String pkg, int uid, UserHandle userHandle)
+ throws Exception {
+ return createRow(pkg, uid, userHandle, false /* isGroupSummary */, null /* groupKey */);
}
/**
@@ -100,7 +104,7 @@
* @throws Exception
*/
public ExpandableNotificationRow createRow(Notification notification) throws Exception {
- return generateRow(notification, PKG, UID, 0 /* extraInflationFlags */);
+ return generateRow(notification, PKG, UID, USER_HANDLE, 0 /* extraInflationFlags */);
}
/**
@@ -113,7 +117,7 @@
*/
public ExpandableNotificationRow createRow(@InflationFlag int extraInflationFlags)
throws Exception {
- return generateRow(createNotification(), PKG, UID, extraInflationFlags);
+ return generateRow(createNotification(), PKG, UID, USER_HANDLE, extraInflationFlags);
}
/**
@@ -135,11 +139,11 @@
}
private ExpandableNotificationRow createGroupSummary(String groupkey) throws Exception {
- return createRow(PKG, UID, true /* isGroupSummary */, groupkey);
+ return createRow(PKG, UID, USER_HANDLE, true /* isGroupSummary */, groupkey);
}
private ExpandableNotificationRow createGroupChild(String groupkey) throws Exception {
- return createRow(PKG, UID, false /* isGroupSummary */, groupkey);
+ return createRow(PKG, UID, USER_HANDLE, false /* isGroupSummary */, groupkey);
}
/**
@@ -148,7 +152,7 @@
public ExpandableNotificationRow createBubble() throws Exception {
Notification n = createNotification(false /* isGroupSummary */,
null /* groupKey */, true /* isBubble */);
- return generateRow(n, PKG, UID, 0 /* extraInflationFlags */, IMPORTANCE_HIGH);
+ return generateRow(n, PKG, UID, USER_HANDLE, 0 /* extraInflationFlags */, IMPORTANCE_HIGH);
}
/**
@@ -165,11 +169,12 @@
private ExpandableNotificationRow createRow(
String pkg,
int uid,
+ UserHandle userHandle,
boolean isGroupSummary,
@Nullable String groupKey)
throws Exception {
Notification notif = createNotification(isGroupSummary, groupKey);
- return generateRow(notif, pkg, uid, 0 /* inflationFlags */);
+ return generateRow(notif, pkg, uid, userHandle, 0 /* inflationFlags */);
}
/**
@@ -220,8 +225,7 @@
notificationBuilder.setGroup(groupKey);
}
if (isBubble) {
- PendingIntent bubbleIntent = PendingIntent.getActivity(mContext, 0, new Intent(), 0);
- notificationBuilder.setAppOverlayIntent(bubbleIntent);
+ notificationBuilder.setBubbleMetadata(makeBubbleMetadata());
}
return notificationBuilder.build();
}
@@ -230,15 +234,18 @@
Notification notification,
String pkg,
int uid,
+ UserHandle userHandle,
@InflationFlag int extraInflationFlags)
throws Exception {
- return generateRow(notification, pkg, uid, extraInflationFlags, IMPORTANCE_DEFAULT);
+ return generateRow(notification, pkg, uid, userHandle, extraInflationFlags,
+ IMPORTANCE_DEFAULT);
}
private ExpandableNotificationRow generateRow(
Notification notification,
String pkg,
int uid,
+ UserHandle userHandle,
@InflationFlag int extraInflationFlags,
int importance)
throws Exception {
@@ -252,7 +259,6 @@
row.setGroupManager(mGroupManager);
row.setHeadsUpManager(mHeadsUpManager);
row.setAboveShelfChangedListener(aboveShelf -> {});
- UserHandle mUser = UserHandle.of(ActivityManager.getCurrentUser());
StatusBarNotification sbn = new StatusBarNotification(
pkg,
pkg,
@@ -261,7 +267,7 @@
uid,
2000 /* initialPid */,
notification,
- mUser,
+ userHandle,
null /* overrideGroupKey */,
System.currentTimeMillis());
NotificationEntry entry = new NotificationEntry(sbn);
@@ -282,4 +288,14 @@
mGroupManager.onEntryAdded(entry);
return row;
}
+
+ private Notification.BubbleMetadata makeBubbleMetadata() {
+ PendingIntent bubbleIntent = PendingIntent.getActivity(mContext, 0, new Intent(), 0);
+ return new Notification.BubbleMetadata.Builder()
+ .setIntent(bubbleIntent)
+ .setTitle("bubble title")
+ .setIcon(Icon.createWithResource(mContext, 1))
+ .setDesiredHeight(314)
+ .build();
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
index d937f93..9ce6ae1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
@@ -22,19 +22,15 @@
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.ActivityManager;
-import android.app.AppOpsManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
@@ -49,7 +45,6 @@
import android.support.test.filters.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
-import android.util.ArraySet;
import android.widget.FrameLayout;
import com.android.internal.logging.MetricsLogger;
@@ -79,8 +74,6 @@
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.HeadsUpManager;
-import junit.framework.Assert;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -346,7 +339,6 @@
verify(mEntryListener, never()).onInflationError(any(), any());
- verify(mListContainer).cleanUpViewStateForEntry(mEntry);
verify(mPresenter).updateNotificationViews();
verify(mEntryListener).onEntryRemoved(
mEntry, null, false /* removedByUser */);
@@ -401,90 +393,6 @@
}
@Test
- public void testUpdateAppOps_foregroundNoti() {
- com.android.systemui.util.Assert.isNotMainThread();
-
- when(mForegroundServiceController.getStandardLayoutKey(anyInt(), anyString()))
- .thenReturn(mEntry.key);
- mEntry.setRow(mRow);
- mEntryManager.getNotificationData().add(mEntry);
-
- mEntryManager.updateNotificationsForAppOp(
- AppOpsManager.OP_CAMERA, mEntry.notification.getUid(),
- mEntry.notification.getPackageName(), true);
-
- verify(mPresenter, times(1)).updateNotificationViews();
- assertTrue(mEntryManager.getNotificationData().get(mEntry.key).mActiveAppOps.contains(
- AppOpsManager.OP_CAMERA));
- }
-
- @Test
- public void testUpdateAppOps_otherNoti() {
- com.android.systemui.util.Assert.isNotMainThread();
-
- when(mForegroundServiceController.getStandardLayoutKey(anyInt(), anyString()))
- .thenReturn(null);
- mEntryManager.updateNotificationsForAppOp(AppOpsManager.OP_CAMERA, 1000, "pkg", true);
-
- verify(mPresenter, never()).updateNotificationViews();
- }
-
- @Test
- public void testAddNotificationExistingAppOps() {
- mEntry.setRow(mRow);
- mEntryManager.getNotificationData().add(mEntry);
- ArraySet<Integer> expected = new ArraySet<>();
- expected.add(3);
- expected.add(235);
- expected.add(1);
-
- when(mForegroundServiceController.getAppOps(mEntry.notification.getUserId(),
- mEntry.notification.getPackageName())).thenReturn(expected);
- when(mForegroundServiceController.getStandardLayoutKey(
- mEntry.notification.getUserId(),
- mEntry.notification.getPackageName())).thenReturn(mEntry.key);
-
- mEntryManager.tagForeground(mEntry.notification);
-
- Assert.assertEquals(expected.size(), mEntry.mActiveAppOps.size());
- for (int op : expected) {
- assertTrue("Entry missing op " + op, mEntry.mActiveAppOps.contains(op));
- }
- }
-
- @Test
- public void testAdd_noExistingAppOps() {
- mEntry.setRow(mRow);
- mEntryManager.getNotificationData().add(mEntry);
- when(mForegroundServiceController.getStandardLayoutKey(
- mEntry.notification.getUserId(),
- mEntry.notification.getPackageName())).thenReturn(mEntry.key);
- when(mForegroundServiceController.getAppOps(mEntry.notification.getUserId(),
- mEntry.notification.getPackageName())).thenReturn(null);
-
- mEntryManager.tagForeground(mEntry.notification);
- Assert.assertEquals(0, mEntry.mActiveAppOps.size());
- }
-
- @Test
- public void testAdd_existingAppOpsNotForegroundNoti() {
- mEntry.setRow(mRow);
- mEntryManager.getNotificationData().add(mEntry);
- ArraySet<Integer> ops = new ArraySet<>();
- ops.add(3);
- ops.add(235);
- ops.add(1);
- when(mForegroundServiceController.getAppOps(mEntry.notification.getUserId(),
- mEntry.notification.getPackageName())).thenReturn(ops);
- when(mForegroundServiceController.getStandardLayoutKey(
- mEntry.notification.getUserId(),
- mEntry.notification.getPackageName())).thenReturn("something else");
-
- mEntryManager.tagForeground(mEntry.notification);
- Assert.assertEquals(0, mEntry.mActiveAppOps.size());
- }
-
- @Test
public void testUpdateNotificationRanking() {
when(mDeviceProvisionedController.isDeviceProvisioned()).thenReturn(true);
when(mEnvironment.isDeviceProvisioned()).thenReturn(true);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationListControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationListControllerTest.java
new file mode 100644
index 0000000..4b5037b
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationListControllerTest.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2019 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.systemui.statusbar.notification;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertTrue;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.ActivityManager;
+import android.app.AppOpsManager;
+import android.app.Notification;
+import android.os.UserHandle;
+import android.service.notification.StatusBarNotification;
+import android.support.test.filters.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+import android.util.ArraySet;
+
+import com.android.internal.statusbar.NotificationVisibility;
+import com.android.systemui.ForegroundServiceController;
+import com.android.systemui.R;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.notification.collection.NotificationData;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
+import com.android.systemui.statusbar.policy.DeviceProvisionedController;
+import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class NotificationListControllerTest extends SysuiTestCase {
+ private NotificationListController mController;
+
+ @Mock private NotificationEntryManager mEntryManager;
+ @Mock private NotificationListContainer mListContainer;
+ @Mock private ForegroundServiceController mForegroundServiceController;
+ @Mock private DeviceProvisionedController mDeviceProvisionedController;
+
+ @Captor private ArgumentCaptor<NotificationEntryListener> mEntryListenerCaptor;
+ @Captor private ArgumentCaptor<DeviceProvisionedListener> mProvisionedCaptor;
+
+ private NotificationEntryListener mEntryListener;
+ private DeviceProvisionedListener mProvisionedListener;
+
+ // TODO: Remove this once EntryManager no longer needs to be mocked
+ private NotificationData mNotificationData = new NotificationData();
+
+ private int mNextNotifId = 0;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ when(mEntryManager.getNotificationData()).thenReturn(mNotificationData);
+
+ mController = new NotificationListController(
+ mEntryManager,
+ mListContainer,
+ mForegroundServiceController,
+ mDeviceProvisionedController);
+ mController.bind();
+
+ // Capture callbacks passed to mocks
+ verify(mEntryManager).addNotificationEntryListener(mEntryListenerCaptor.capture());
+ mEntryListener = mEntryListenerCaptor.getValue();
+ verify(mDeviceProvisionedController).addCallback(mProvisionedCaptor.capture());
+ mProvisionedListener = mProvisionedCaptor.getValue();
+ }
+
+ @Test
+ public void testCleanUpViewStateOnEntryRemoved() {
+ final NotificationEntry entry = buildEntry();
+ mEntryListener.onEntryRemoved(
+ entry,
+ NotificationVisibility.obtain(entry.key, 0, 0, true),
+ false);
+ verify(mListContainer).cleanUpViewStateForEntry(entry);
+ }
+
+ @Test
+ public void testCallUpdateNotificationsOnDeviceProvisionedChange() {
+ mProvisionedListener.onDeviceProvisionedChanged();
+ verify(mEntryManager).updateNotifications();
+ }
+
+ @Test
+ public void testAppOps_appOpAddedToForegroundNotif() {
+ // GIVEN a notification associated with a foreground service
+ final NotificationEntry entry = buildEntry();
+ mNotificationData.add(entry);
+ when(mForegroundServiceController.getStandardLayoutKey(anyInt(), anyString()))
+ .thenReturn(entry.key);
+
+ // WHEN we are notified of a new app op
+ mController.updateNotificationsForAppOp(
+ AppOpsManager.OP_CAMERA,
+ entry.notification.getUid(),
+ entry.notification.getPackageName(),
+ true);
+
+ // THEN the app op is added to the entry
+ assertTrue(entry.mActiveAppOps.contains(AppOpsManager.OP_CAMERA));
+ // THEN updateNotifications() is called
+ verify(mEntryManager, times(1)).updateNotifications();
+ }
+
+ @Test
+ public void testAppOps_appOpAddedToUnrelatedNotif() {
+ // GIVEN No current foreground notifs
+ when(mForegroundServiceController.getStandardLayoutKey(anyInt(), anyString()))
+ .thenReturn(null);
+
+ // WHEN An unrelated notification gets a new app op
+ mController.updateNotificationsForAppOp(AppOpsManager.OP_CAMERA, 1000, "pkg", true);
+
+ // THEN We never call updateNotifications()
+ verify(mEntryManager, never()).updateNotifications();
+ }
+
+ @Test
+ public void testAppOps_addNotificationWithExistingAppOps() {
+ // GIVEN a notification with three associated app ops that is associated with a foreground
+ // service
+ final NotificationEntry entry = buildEntry();
+ mNotificationData.add(entry);
+ ArraySet<Integer> expected = new ArraySet<>();
+ expected.add(3);
+ expected.add(235);
+ expected.add(1);
+ when(mForegroundServiceController.getStandardLayoutKey(
+ entry.notification.getUserId(),
+ entry.notification.getPackageName())).thenReturn(entry.key);
+ when(mForegroundServiceController.getAppOps(entry.notification.getUserId(),
+ entry.notification.getPackageName())).thenReturn(expected);
+
+ // WHEN the notification is added
+ mEntryListener.onBeforeNotificationAdded(entry);
+
+ // THEN the entry is tagged with all three app ops
+ assertEquals(expected.size(), entry.mActiveAppOps.size());
+ for (int op : expected) {
+ assertTrue("Entry missing op " + op, entry.mActiveAppOps.contains(op));
+ }
+ }
+
+ @Test
+ public void testAdd_addNotificationWithNoExistingAppOps() {
+ // GIVEN a notification with NO associated app ops
+ final NotificationEntry entry = buildEntry();
+
+ mNotificationData.add(entry);
+ when(mForegroundServiceController.getStandardLayoutKey(
+ entry.notification.getUserId(),
+ entry.notification.getPackageName())).thenReturn(entry.key);
+ when(mForegroundServiceController.getAppOps(entry.notification.getUserId(),
+ entry.notification.getPackageName())).thenReturn(null);
+
+ // WHEN the notification is added
+ mEntryListener.onBeforeNotificationAdded(entry);
+
+ // THEN the entry doesn't have any app ops associated with it
+ assertEquals(0, entry.mActiveAppOps.size());
+ }
+
+ @Test
+ public void testAdd_addNonForegroundNotificationWithExistingAppOps() {
+ // GIVEN a notification with app ops that isn't associated with a foreground service
+ final NotificationEntry entry = buildEntry();
+ mNotificationData.add(entry);
+ ArraySet<Integer> ops = new ArraySet<>();
+ ops.add(3);
+ ops.add(235);
+ ops.add(1);
+ when(mForegroundServiceController.getAppOps(entry.notification.getUserId(),
+ entry.notification.getPackageName())).thenReturn(ops);
+ when(mForegroundServiceController.getStandardLayoutKey(
+ entry.notification.getUserId(),
+ entry.notification.getPackageName())).thenReturn("something else");
+
+ // WHEN the notification is added
+ mEntryListener.onBeforeNotificationAdded(entry);
+
+ // THEN the entry doesn't have any app ops associated with it
+ assertEquals(0, entry.mActiveAppOps.size());
+ }
+
+ private NotificationEntry buildEntry() {
+ mNextNotifId++;
+
+ Notification.Builder n = new Notification.Builder(mContext, "")
+ .setSmallIcon(R.drawable.ic_person)
+ .setContentTitle("Title")
+ .setContentText("Text");
+
+ StatusBarNotification notification =
+ new StatusBarNotification(
+ TEST_PACKAGE_NAME,
+ TEST_PACKAGE_NAME,
+ mNextNotifId,
+ null,
+ TEST_UID,
+ 0,
+ n.build(),
+ new UserHandle(ActivityManager.getCurrentUser()),
+ null,
+ 0);
+ return new NotificationEntry(notification);
+ }
+
+ private static final String TEST_PACKAGE_NAME = "test";
+ private static final int TEST_UID = 0;
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationDataTest.java
index 193f483..b507692 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationDataTest.java
@@ -44,6 +44,7 @@
import android.graphics.drawable.Icon;
import android.media.session.MediaSession;
import android.os.Bundle;
+import android.os.Process;
import android.service.notification.NotificationListenerService;
import android.service.notification.NotificationListenerService.Ranking;
import android.service.notification.SnoozeCriterion;
@@ -140,7 +141,8 @@
ExpandableNotificationRow row2 = new NotificationTestHelper(getContext()).createRow();
mNotificationData.add(row2.getEntry());
ExpandableNotificationRow diffPkg =
- new NotificationTestHelper(getContext()).createRow("pkg", 4000);
+ new NotificationTestHelper(getContext()).createRow("pkg", 4000,
+ Process.myUserHandle());
mNotificationData.add(diffPkg.getEntry());
ArraySet<Integer> expectedOps = new ArraySet<>();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManagerTest.java
index 8ae7d52..ff30a4d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManagerTest.java
@@ -29,7 +29,10 @@
import android.testing.TestableLooper.RunWithLooper;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.AmbientPulseManager;
import com.android.systemui.statusbar.NotificationTestHelper;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.ExpandableView;
@@ -37,6 +40,8 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
import java.util.HashSet;
@@ -45,14 +50,18 @@
@RunWithLooper
public class NotificationRoundnessManagerTest extends SysuiTestCase {
- private NotificationRoundnessManager mRoundnessManager = new NotificationRoundnessManager();
+ private NotificationRoundnessManager mRoundnessManager;
private HashSet<ExpandableView> mAnimatedChildren = new HashSet<>();
private Runnable mRoundnessCallback = mock(Runnable.class);
private ExpandableNotificationRow mFirst;
private ExpandableNotificationRow mSecond;
+ @Mock
+ private AmbientPulseManager mAmbientPulseManager;
@Before
public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ mRoundnessManager = new NotificationRoundnessManager(mAmbientPulseManager);
com.android.systemui.util.Assert.sMainLooper = TestableLooper.get(this).getLooper();
NotificationTestHelper testHelper = new NotificationTestHelper(getContext());
mFirst = testHelper.createRow();
@@ -127,6 +136,27 @@
}
@Test
+ public void testRoundnessPulsing() throws Exception {
+ // Let's create a notification that's neither the first or last item of the stack,
+ // this way we'll ensure that it won't have any rounded corners by default.
+ mRoundnessManager.updateRoundedChildren(new NotificationSection[]{
+ createSection(mFirst, mSecond),
+ createSection(null, null)
+ });
+ ExpandableNotificationRow row = new NotificationTestHelper(getContext()).createRow();
+ NotificationEntry entry = mock(NotificationEntry.class);
+ when(entry.getRow()).thenReturn(row);
+
+ mRoundnessManager.onAmbientStateChanged(entry, true);
+ Assert.assertEquals(1f, row.getCurrentBottomRoundness(), 0.0f);
+ Assert.assertEquals(1f, row.getCurrentTopRoundness(), 0.0f);
+
+ mRoundnessManager.onAmbientStateChanged(entry, false);
+ Assert.assertEquals(0f, row.getCurrentBottomRoundness(), 0.0f);
+ Assert.assertEquals(0f, row.getCurrentTopRoundness(), 0.0f);
+ }
+
+ @Test
public void testRoundnessSetOnSecondSectionLast() {
mRoundnessManager.updateRoundedChildren(new NotificationSection[]{
createSection(mFirst, mFirst),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
index c140ba2..736f384 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
@@ -24,6 +24,7 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.atLeastOnce;
@@ -35,17 +36,21 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.metrics.LogMaker;
import android.provider.Settings;
import android.support.test.annotation.UiThreadTest;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.view.View;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.nano.MetricsProto;
import com.android.systemui.Dependency;
import com.android.systemui.ExpandHelper;
import com.android.systemui.InitController;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
import com.android.systemui.statusbar.EmptyShadeView;
import com.android.systemui.statusbar.NotificationPresenter;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
@@ -73,6 +78,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatcher;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
@@ -86,7 +92,8 @@
@RunWith(AndroidJUnit4.class)
public class NotificationStackScrollLayoutTest extends SysuiTestCase {
- private NotificationStackScrollLayout mStackScroller;
+ private NotificationStackScrollLayout mStackScroller; // Normally test this
+ private NotificationStackScrollLayout mStackScrollerInternal; // See explanation below
@Rule public MockitoRule mockito = MockitoJUnit.rule();
@Mock private StatusBar mBar;
@@ -99,9 +106,12 @@
@Mock private NotificationData mNotificationData;
@Mock private NotificationRemoteInputManager mRemoteInputManager;
@Mock private RemoteInputController mRemoteInputController;
+ @Mock private MetricsLogger mMetricsLogger;
+ @Mock private NotificationRoundnessManager mNotificationRoundnessManager;
private TestableNotificationEntryManager mEntryManager;
private int mOriginalInterruptionModelSetting;
+
@Before
@UiThreadTest
public void setUp() throws Exception {
@@ -110,6 +120,7 @@
NotificationBlockingHelperManager.class,
mBlockingHelperManager);
mDependency.injectTestDependency(StatusBarStateController.class, mBarState);
+ mDependency.injectTestDependency(MetricsLogger.class, mMetricsLogger);
mDependency.injectTestDependency(NotificationRemoteInputManager.class,
mRemoteInputManager);
mDependency.injectMockDependency(ShadeController.class);
@@ -123,8 +134,15 @@
NotificationShelf notificationShelf = mock(NotificationShelf.class);
- mStackScroller = spy(new NotificationStackScrollLayout(getContext(), null,
- true /* allowLongPress */));
+
+ // The actual class under test. You may need to work with this class directly when
+ // testing anonymous class members of mStackScroller, like mMenuEventListener,
+ // which refer to members of NotificationStackScrollLayout. The spy
+ // holds a copy of the CUT's instances of these classes, so they still refer to the CUT's
+ // member variables, not the spy's member variables.
+ mStackScrollerInternal = new NotificationStackScrollLayout(getContext(), null,
+ true /* allowLongPress */, mNotificationRoundnessManager);
+ mStackScroller = spy(mStackScrollerInternal);
mStackScroller.setShelf(notificationShelf);
mStackScroller.setStatusBar(mBar);
mStackScroller.setScrimController(mock(ScrimController.class));
@@ -422,6 +440,63 @@
assertNull(swipeActionHelper.getExposedMenuView());
}
+ class LogMatcher implements ArgumentMatcher<LogMaker> {
+ private int mCategory, mType;
+
+ LogMatcher(int category, int type) {
+ mCategory = category;
+ mType = type;
+ }
+ public boolean matches(LogMaker l) {
+ return (l.getCategory() == mCategory)
+ && (l.getType() == mType);
+ }
+
+ public String toString() {
+ return String.format("LogMaker(%d, %d)", mCategory, mType);
+ }
+ }
+
+ private LogMaker logMatcher(int category, int type) {
+ return argThat(new LogMatcher(category, type));
+ }
+
+ @Test
+ @UiThreadTest
+ public void testOnMenuClickedLogging() {
+ // Set up the object under test to have a valid mLongPressListener. We're testing an
+ // anonymous-class member, mMenuEventListener, so we need to modify the state of the
+ // class itself, not the Mockito spy copied from it. See notes in setup.
+ mStackScrollerInternal.setLongPressListener(
+ mock(ExpandableNotificationRow.LongPressListener.class));
+
+ ExpandableNotificationRow row = mock(ExpandableNotificationRow.class, RETURNS_DEEP_STUBS);
+ when(row.getStatusBarNotification().getLogMaker()).thenReturn(new LogMaker(
+ MetricsProto.MetricsEvent.VIEW_UNKNOWN));
+
+ mStackScroller.mMenuEventListener.onMenuClicked(row, 0, 0, mock(
+ NotificationMenuRowPlugin.MenuItem.class));
+ verify(row.getStatusBarNotification()).getLogMaker(); // This writes most of the log data
+ verify(mMetricsLogger).write(logMatcher(MetricsProto.MetricsEvent.ACTION_TOUCH_GEAR,
+ MetricsProto.MetricsEvent.TYPE_ACTION));
+ }
+
+ @Test
+ @UiThreadTest
+ public void testOnMenuShownLogging() {
+ // Set up the object under test to have a valid mHeadsUpManager. See notes in setup.
+ mStackScrollerInternal.setHeadsUpManager(mHeadsUpManager);
+
+ ExpandableNotificationRow row = mock(ExpandableNotificationRow.class, RETURNS_DEEP_STUBS);
+ when(row.getStatusBarNotification().getLogMaker()).thenReturn(new LogMaker(
+ MetricsProto.MetricsEvent.VIEW_UNKNOWN));
+
+ mStackScroller.mMenuEventListener.onMenuShown(row);
+ verify(row.getStatusBarNotification()).getLogMaker(); // This writes most of the log data
+ verify(mMetricsLogger).write(logMatcher(MetricsProto.MetricsEvent.ACTION_REVEAL_GEAR,
+ MetricsProto.MetricsEvent.TYPE_ACTION));
+ }
+
private void setBarStateForTest(int state) {
// Can't inject this through the listener or we end up on the actual implementation
// rather than the mock because the spy just coppied the anonymous inner /shruggie.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java
index 27ed9c5..cd52e87 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java
@@ -47,7 +47,6 @@
private float mPanelExpansion;
private int mKeyguardStatusHeight;
private float mDark;
- private boolean mPulsing;
@Before
public void setUp() {
@@ -208,20 +207,6 @@
}
@Test
- public void notifPositionWhilePulsingOnAOD() {
- // GIVEN on AOD and pulsing
- givenAOD();
- mNotificationStackHeight = EMPTY_HEIGHT;
- mKeyguardStatusHeight = EMPTY_HEIGHT;
- mPulsing = true;
- mClockPositionAlgorithm.setPulsingPadding(200);
- // WHEN the clock position algorithm is run
- positionClock();
- // THEN the notif padding doesn't adjust for pulsing.
- assertThat(mClockPosition.stackScrollerPadding).isEqualTo(1000);
- }
-
- @Test
public void notifPositionMiddleOfScreenOnLockScreen() {
// GIVEN on lock screen and both stack scroll and clock have 0 height
givenLockScreen();
@@ -307,20 +292,6 @@
assertThat(mClockPosition.stackScrollerPadding).isEqualTo(0);
}
- @Test
- public void notifPositionWhilePulsingOnLockScreen() {
- // GIVEN on lock screen and pulsing
- givenLockScreen();
- mNotificationStackHeight = EMPTY_HEIGHT;
- mKeyguardStatusHeight = EMPTY_HEIGHT;
- mPulsing = true;
- mClockPositionAlgorithm.setPulsingPadding(200);
- // WHEN the clock position algorithm is run
- positionClock();
- // THEN the notif padding adjusts for pulsing.
- assertThat(mClockPosition.stackScrollerPadding).isEqualTo(1200);
- }
-
private void givenAOD() {
mPanelExpansion = 1.f;
mDark = 1.f;
@@ -334,7 +305,7 @@
private void positionClock() {
mClockPositionAlgorithm.setup(EMPTY_MARGIN, SCREEN_HEIGHT, mNotificationStackHeight,
mPanelExpansion, SCREEN_HEIGHT, mKeyguardStatusHeight, mDark, SECURE_LOCKED,
- mPulsing, ZERO_DRAG);
+ ZERO_DRAG);
mClockPositionAlgorithm.run(mClockPosition);
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
index 8eb42c4..c20d37f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
@@ -45,6 +45,7 @@
import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.internal.util.function.TriConsumer;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.doze.DozeLog;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.util.wakelock.WakeLock;
import com.android.systemui.utils.os.FakeHandler;
@@ -133,7 +134,8 @@
// Back scrim should be transparent
assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_TRANSPARENT);
- // Move on to PULSING and check if the back scrim is still transparent
+ // Pulsing notification should conserve AOD wallpaper.
+ mScrimController.setPulseReason(DozeLog.PULSE_REASON_NOTIFICATION);
mScrimController.transitionTo(ScrimState.PULSING);
mScrimController.finishAnimationsImmediately();
assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_TRANSPARENT);
@@ -218,13 +220,14 @@
mScrimController.finishAnimationsImmediately();
assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE);
+ mScrimController.setPulseReason(DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN);
mScrimController.transitionTo(ScrimState.PULSING);
mScrimController.finishAnimationsImmediately();
// Front scrim should be transparent
// Back scrim should be semi-transparent so the user can see the wallpaper
// Pulse callback should have been invoked
assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_SEMI_TRANSPARENT);
- assertScrimTint(mScrimBehind, true /* tinted */);
+ assertScrimTint(mScrimBehind, false /* tinted */);
}
@Test
@@ -477,12 +480,8 @@
@Test
public void testHoldsPulsingWallpaperAnimationLock() {
// Pre-conditions
- mScrimController.transitionTo(ScrimState.PULSING, new ScrimController.Callback() {
- @Override
- public boolean isFadeOutWallpaper() {
- return true;
- }
- });
+ mScrimController.setPulseReason(DozeLog.PULSE_REASON_NOTIFICATION);
+ mScrimController.transitionTo(ScrimState.PULSING);
mScrimController.finishAnimationsImmediately();
reset(mWakeLock);
@@ -491,7 +490,6 @@
verify(mWakeLock, never()).release();
mScrimController.finishAnimationsImmediately();
verify(mWakeLock).release();
- assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE);
}
@Test
@@ -504,31 +502,27 @@
}
@Test
- public void testWillHidePulsingWallpaper_withRequestFadeOut() {
- mScrimController.setWallpaperSupportsAmbientMode(true);
- mScrimController.transitionTo(ScrimState.PULSING, new ScrimController.Callback() {
- @Override
- public boolean isFadeOutWallpaper() {
- return true;
- }
- });
- verify(mAlarmManager).setExact(anyInt(), anyLong(), any(), any(), any());
- mScrimController.transitionTo(ScrimState.KEYGUARD);
- verify(mAlarmManager).cancel(any(AlarmManager.OnAlarmListener.class));
- }
-
- @Test
- public void testDoesNotHidePulsingWallpaper_withoutRequestFadeOut() {
- mScrimController.setWallpaperSupportsAmbientMode(true);
- mScrimController.transitionTo(ScrimState.PULSING, new ScrimController.Callback() {});
- verify(mAlarmManager, never()).setExact(anyInt(), anyLong(), any(), any(), any());
- }
-
- @Test
- public void testDoesNotHidePulsingWallpaper_withoutCallback() {
- mScrimController.setWallpaperSupportsAmbientMode(true);
+ public void testWillHidePulsingWallpaper_whenNotification() {
+ mScrimController.setWallpaperSupportsAmbientMode(false);
+ mScrimController.transitionTo(ScrimState.AOD);
+ mScrimController.finishAnimationsImmediately();
+ mScrimController.setPulseReason(DozeLog.PULSE_REASON_NOTIFICATION);
mScrimController.transitionTo(ScrimState.PULSING);
- verify(mAlarmManager, never()).setExact(anyInt(), anyLong(), any(), any(), any());
+ mScrimController.finishAnimationsImmediately();
+ assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE);
+ assertScrimTint(mScrimBehind, true);
+ }
+
+ @Test
+ public void testWillHidePulsingWallpaper_whenDocking() {
+ mScrimController.setWallpaperSupportsAmbientMode(false);
+ mScrimController.transitionTo(ScrimState.AOD);
+ mScrimController.finishAnimationsImmediately();
+ mScrimController.setPulseReason(DozeLog.PULSE_REASON_DOCKING);
+ mScrimController.transitionTo(ScrimState.PULSING);
+ mScrimController.finishAnimationsImmediately();
+ assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE);
+ assertScrimTint(mScrimBehind, true);
}
@Test
@@ -560,34 +554,6 @@
Assert.assertTrue(mScrimController.wasAnimationJustCancelled());
}
- /**
- * Number of visible notifications affects scrim opacity.
- */
- @Test
- public void testNotificationDensity() {
- mScrimController.transitionTo(ScrimState.KEYGUARD);
- mScrimController.finishAnimationsImmediately();
-
- mScrimController.setNotificationCount(0);
- mScrimController.finishAnimationsImmediately();
- Assert.assertEquals("lower density when no notifications",
- ScrimController.GRADIENT_SCRIM_ALPHA, mScrimBehind.getViewAlpha(), 0.01f);
-
- mScrimController.setNotificationCount(3);
- mScrimController.finishAnimationsImmediately();
- Assert.assertEquals("stronger density when notifications are visible",
- ScrimController.GRADIENT_SCRIM_ALPHA_BUSY, mScrimBehind.getViewAlpha(), 0.01f);
- }
-
- /**
- * Moving from/to states conserves old notification density.
- */
- @Test
- public void testConservesNotificationDensity() {
- testConservesNotificationDensity(0 /* count */, ScrimController.GRADIENT_SCRIM_ALPHA);
- testConservesNotificationDensity(3 /* count */, ScrimController.GRADIENT_SCRIM_ALPHA_BUSY);
- }
-
@Test
public void testScrimFocus() {
mScrimController.transitionTo(ScrimState.AOD);
@@ -662,24 +628,6 @@
mScrimBehind.getDefaultFocusHighlightEnabled());
}
- /**
- * Conserves old notification density after leaving state and coming back.
- *
- * @param count How many notification.
- * @param expectedAlpha Expected alpha.
- */
- private void testConservesNotificationDensity(int count, float expectedAlpha) {
- mScrimController.setNotificationCount(count);
- mScrimController.transitionTo(ScrimState.UNLOCKED);
- mScrimController.finishAnimationsImmediately();
-
- mScrimController.transitionTo(ScrimState.KEYGUARD);
- mScrimController.finishAnimationsImmediately();
-
- Assert.assertEquals("Doesn't respect notification busyness after transition",
- expectedAlpha, mScrimBehind.getViewAlpha(), 0.01f);
- }
-
private void assertScrimTint(ScrimView scrimView, boolean tinted) {
final boolean viewIsTinted = scrimView.getTint() != Color.TRANSPARENT;
final String name = scrimView == mScrimInFront ? "front" : "back";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index fdbf090..c1f8885 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -182,6 +182,7 @@
subs.add(subscription);
}
when(mMockSm.getActiveSubscriptionInfoList()).thenReturn(subs);
+ when(mMockSm.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(subs);
mNetworkController.doUpdateMobileControllers();
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java
index b3ac6be..ed98c62 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java
@@ -15,17 +15,23 @@
package com.android.systemui.statusbar.policy;
import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import android.app.ActivityManager;
import android.app.PendingIntent;
import android.app.RemoteInput;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ShortcutManager;
import android.os.Handler;
+import android.os.Process;
+import android.os.UserHandle;
import android.support.test.filters.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputConnection;
import android.widget.EditText;
import android.widget.ImageButton;
@@ -53,6 +59,10 @@
private static final String TEST_REPLY = "hello";
private static final String TEST_ACTION = "com.android.REMOTE_INPUT_VIEW_ACTION";
+ private static final String DUMMY_MESSAGE_APP_PKG =
+ "com.android.sysuitest.dummynotificationsender";
+ private static final int DUMMY_MESSAGE_APP_ID = Process.LAST_APPLICATION_UID - 1;
+
@Mock private RemoteInputController mController;
@Mock private ShortcutManager mShortcutManager;
@Mock private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
@@ -73,9 +83,6 @@
// Avoid SecurityException RemoteInputView#sendRemoteInput().
mContext.addMockSystemService(ShortcutManager.class, mShortcutManager);
-
- ExpandableNotificationRow row = new NotificationTestHelper(mContext).createRow();
- mView = RemoteInputView.inflate(mContext, null, row.getEntry(), mController);
}
@After
@@ -83,19 +90,27 @@
mContext.unregisterReceiver(mReceiver);
}
- @Test
- public void testSendRemoteInput_intentContainsResultsAndSource() throws InterruptedException {
+ private void setTestPendingIntent(RemoteInputView view) {
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0,
new Intent(TEST_ACTION), 0);
RemoteInput input = new RemoteInput.Builder(TEST_RESULT_KEY).build();
- mView.setPendingIntent(pendingIntent);
- mView.setRemoteInput(new RemoteInput[]{input}, input);
- mView.focus();
+ view.setPendingIntent(pendingIntent);
+ view.setRemoteInput(new RemoteInput[]{input}, input);
+ }
- EditText editText = mView.findViewById(R.id.remote_input_text);
+ @Test
+ public void testSendRemoteInput_intentContainsResultsAndSource() throws Exception {
+ ExpandableNotificationRow row = new NotificationTestHelper(mContext).createRow();
+ RemoteInputView view = RemoteInputView.inflate(mContext, null, row.getEntry(), mController);
+
+ setTestPendingIntent(view);
+
+ view.focus();
+
+ EditText editText = view.findViewById(R.id.remote_input_text);
editText.setText(TEST_REPLY);
- ImageButton sendButton = mView.findViewById(R.id.remote_input_send);
+ ImageButton sendButton = view.findViewById(R.id.remote_input_send);
sendButton.performClick();
Intent resultIntent = mReceiver.waitForIntent();
@@ -105,10 +120,55 @@
RemoteInput.getResultsSource(resultIntent));
}
+ private UserHandle getTargetInputMethodUser(UserHandle fromUser, UserHandle toUser)
+ throws Exception {
+ ExpandableNotificationRow row = new NotificationTestHelper(mContext).createRow(
+ DUMMY_MESSAGE_APP_PKG,
+ UserHandle.getUid(fromUser.getIdentifier(), DUMMY_MESSAGE_APP_ID),
+ toUser);
+ RemoteInputView view = RemoteInputView.inflate(mContext, null, row.getEntry(), mController);
+
+ setTestPendingIntent(view);
+
+ view.focus();
+
+ EditText editText = view.findViewById(R.id.remote_input_text);
+ EditorInfo editorInfo = new EditorInfo();
+ editorInfo.packageName = DUMMY_MESSAGE_APP_PKG;
+ editorInfo.fieldId = editText.getId();
+ InputConnection ic = editText.onCreateInputConnection(editorInfo);
+ assertNotNull(ic);
+ return editorInfo.targetInputMethodUser;
+ }
+
@Test
- public void testNoCrashWithoutVisibilityListener() {
- mView.setOnVisibilityChangedListener(null);
- mView.setVisibility(View.INVISIBLE);
- mView.setVisibility(View.VISIBLE);
+ public void testEditorInfoTargetInputMethodUserForCallingUser() throws Exception {
+ UserHandle callingUser = Process.myUserHandle();
+ assertEquals(callingUser, getTargetInputMethodUser(callingUser, callingUser));
+ }
+
+ @Test
+ public void testEditorInfoTargetInputMethodUserForDifferentUser() throws Exception {
+ UserHandle differentUser = UserHandle.of(UserHandle.getCallingUserId() + 1);
+ assertEquals(differentUser, getTargetInputMethodUser(differentUser, differentUser));
+ }
+
+ @Test
+ public void testEditorInfoTargetInputMethodUserForAllUser() throws Exception {
+ // For the special pseudo user UserHandle.ALL, EditorInfo#targetInputMethodUser must be
+ // resolved as the current user.
+ UserHandle callingUser = Process.myUserHandle();
+ assertEquals(UserHandle.of(ActivityManager.getCurrentUser()),
+ getTargetInputMethodUser(callingUser, UserHandle.ALL));
+ }
+
+ @Test
+ public void testNoCrashWithoutVisibilityListener() throws Exception {
+ ExpandableNotificationRow row = new NotificationTestHelper(mContext).createRow();
+ RemoteInputView view = RemoteInputView.inflate(mContext, null, row.getEntry(), mController);
+
+ view.setOnVisibilityChangedListener(null);
+ view.setVisibility(View.INVISIBLE);
+ view.setVisibility(View.VISIBLE);
}
}
diff --git a/packages/WallpaperCropper/Android.mk b/packages/WallpaperCropper/Android.mk
index 848f2bd..2fa1dde 100644
--- a/packages/WallpaperCropper/Android.mk
+++ b/packages/WallpaperCropper/Android.mk
@@ -8,6 +8,7 @@
LOCAL_PACKAGE_NAME := WallpaperCropper
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_CERTIFICATE := platform
+LOCAL_PRODUCT_MODULE := true
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
diff --git a/packages/WallpaperCropper/CleanSpec.mk b/packages/WallpaperCropper/CleanSpec.mk
new file mode 100644
index 0000000..e6d8d5a
--- /dev/null
+++ b/packages/WallpaperCropper/CleanSpec.mk
@@ -0,0 +1,50 @@
+# Copyright (C) 2019 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.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list. These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list. E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/WallpaperCropper)
+
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
diff --git a/packages/services/PacProcessor/Android.mk b/packages/services/PacProcessor/Android.mk
index 295b3d8..be9ba43 100644
--- a/packages/services/PacProcessor/Android.mk
+++ b/packages/services/PacProcessor/Android.mk
@@ -26,6 +26,6 @@
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_CERTIFICATE := platform
-LOCAL_JNI_SHARED_LIBRARIES := libjni_pacprocessor libpac
+LOCAL_JNI_SHARED_LIBRARIES := libjni_pacprocessor
include $(BUILD_PACKAGE)
diff --git a/proto/src/metrics_constants/metrics_constants.proto b/proto/src/metrics_constants/metrics_constants.proto
index 44edb56..8261fe8 100644
--- a/proto/src/metrics_constants/metrics_constants.proto
+++ b/proto/src/metrics_constants/metrics_constants.proto
@@ -6801,8 +6801,26 @@
// ACTION: Tap & Pay -> Default Application Setting -> Use Default
// OS: Q
ACTION_NFC_PAYMENT_ALWAYS_SETTING = 1623;
- // ---- End Q Constants, all Q constants go above this line ----
+ // OPEN: Settings > System > Input & Gesture > Skip song gesture
+ // OS: Q
+ SETTINGS_GESTURE_SKIP_SONG = 1624;
+
+ // OPEN: Settings > System > Input & Gesture > Silence gesture
+ // OS: Q
+ SETTINGS_GESTURE_SILENCE = 1625;
+
+ // OPEN: Settings > System > Input & Gesture > Tap screen gesture
+ // OS: Q
+ SETTINGS_GESTURE_TAP_SCREEN = 1626;
+
+ // OPEN: Settings > Network & internet > Click Mobile network to land on a page with a list of
+ // SIM/eSIM subscriptions.
+ // CATEGORY: SETTINGS
+ // OS: Q
+ MOBILE_NETWORK_LIST = 1627;
+
+ // ---- End Q Constants, all Q constants go above this line ----
// Add new aosp constants above this line.
// END OF AOSP CONSTANTS
}
diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto
index e9ce737..bcc43a7 100644
--- a/proto/src/wifi.proto
+++ b/proto/src/wifi.proto
@@ -485,6 +485,9 @@
// Multiple lists of timestamped link layer stats with labels to represent whether wifi is usable
repeated WifiUsabilityStats wifi_usability_stats_list = 126;
+
+ // Counts the occurrences of each Wifi usability score provided by external app
+ repeated WifiUsabilityScoreCount wifi_usability_score_count = 127;
}
// Information that gets logged for every WiFi connection.
@@ -670,6 +673,15 @@
optional int32 count = 2;
}
+// Counts the number of instances of a specific Wifi Usability Score
+message WifiUsabilityScoreCount {
+ // Wifi Usability Score
+ optional int32 score = 1;
+
+ // Number of Wifi score reports with this score
+ optional int32 count = 2;
+}
+
// Number of occurrences of a specific link speed (Mbps)
// and sum of rssi (dBm) and rssi^2 (dBm^2)
message LinkSpeedCount {
@@ -826,6 +838,10 @@
// Wifi is turned off
TYPE_WIFI_DISABLED = 19;
+
+ // The NetworkAgent Wifi usability score has changed in a way that may
+ // impact connectivity
+ TYPE_WIFI_USABILITY_SCORE_BREACH = 20;
}
enum FrameworkDisconnectReason {
@@ -940,6 +956,9 @@
// NetworkAgent score of connected wifi
optional int32 last_score = 14 [default = -1];
+
+ // NetworkAgent Wifi usability score of connected wifi
+ optional int32 last_wifi_usability_score = 15 [default = -1];
}
// Wi-Fi Aware metrics
@@ -1653,6 +1672,10 @@
// Firmware alert code. Only valid when the event was triggered by a firmware alert, otherwise -1.
optional int32 firmware_alert_code = 10 [default = -1];
+
+ // NetworkAgent wifi usability score of connected wifi.
+ // Defaults to -1 if the score was never set.
+ optional int32 last_wifi_usability_score = 11 [default = -1];
}
message PasspointProfileTypeCount {
@@ -1765,6 +1788,15 @@
// The total time spent on hotspot2.0 scans and GAS exchange in ms counted from the last radio
// chip reset
optional int64 total_hotspot_2_scan_time_ms = 16;
+
+ // Internal framework Wifi score
+ optional int32 wifi_score = 17;
+
+ // Wifi usability score provided by external system app
+ optional int32 wifi_usability_score = 18;
+
+ // Sequence number from external system app to framework
+ optional int32 seq_num_to_framework = 19;
}
message WifiUsabilityStats {
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 36ca52a..763c16f 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -16,6 +16,11 @@
package com.android.server.accessibility;
+import static android.accessibilityservice.AccessibilityService.SHOW_MODE_AUTO;
+import static android.accessibilityservice.AccessibilityService.SHOW_MODE_HARD_KEYBOARD_ORIGINAL_VALUE;
+import static android.accessibilityservice.AccessibilityService.SHOW_MODE_HARD_KEYBOARD_OVERRIDDEN;
+import static android.accessibilityservice.AccessibilityService.SHOW_MODE_HIDDEN;
+import static android.accessibilityservice.AccessibilityService.SHOW_MODE_IGNORE_HARD_KEYBOARD;
import static android.accessibilityservice.AccessibilityService.SHOW_MODE_MASK;
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
import static android.view.accessibility.AccessibilityEvent.WINDOWS_CHANGE_ACCESSIBILITY_FOCUSED;
@@ -23,13 +28,9 @@
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS;
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK;
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK;
+
import static com.android.internal.util.FunctionalUtils.ignoreRemoteException;
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
-import static android.accessibilityservice.AccessibilityService.SHOW_MODE_AUTO;
-import static android.accessibilityservice.AccessibilityService.SHOW_MODE_HIDDEN;
-import static android.accessibilityservice.AccessibilityService.SHOW_MODE_IGNORE_HARD_KEYBOARD;
-import static android.accessibilityservice.AccessibilityService.SHOW_MODE_HARD_KEYBOARD_ORIGINAL_VALUE;
-import static android.accessibilityservice.AccessibilityService.SHOW_MODE_HARD_KEYBOARD_OVERRIDDEN;
import android.Manifest;
import android.accessibilityservice.AccessibilityService;
@@ -121,6 +122,8 @@
import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.WindowManagerInternal;
+import libcore.util.EmptyArray;
+
import org.xmlpull.v1.XmlPullParserException;
import java.io.FileDescriptor;
@@ -139,8 +142,6 @@
import java.util.function.Consumer;
import java.util.function.IntSupplier;
-import libcore.util.EmptyArray;
-
/**
* This class is instantiated by the system as a system level service and can be
* accessed only by the system. The task of this service is to be a centralized
@@ -1827,8 +1828,6 @@
updateFilterKeyEventsLocked(userState);
updateTouchExplorationLocked(userState);
updatePerformGesturesLocked(userState);
- updateDisplayDaltonizerLocked(userState);
- updateDisplayInversionLocked(userState);
updateMagnificationLocked(userState);
scheduleUpdateFingerprintGestureHandling(userState);
scheduleUpdateInputFilter(userState);
@@ -2187,14 +2186,6 @@
return false;
}
- private void updateDisplayDaltonizerLocked(UserState userState) {
- DisplayAdjustmentUtils.applyDaltonizerSetting(mContext, userState.mUserId);
- }
-
- private void updateDisplayInversionLocked(UserState userState) {
- DisplayAdjustmentUtils.applyInversionSetting(mContext, userState.mUserId);
- }
-
private void updateMagnificationLocked(UserState userState) {
if (userState.mUserId != mCurrentUserId) {
return;
@@ -4104,15 +4095,6 @@
private final Uri mTouchExplorationGrantedAccessibilityServicesUri = Settings.Secure
.getUriFor(Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES);
- private final Uri mDisplayInversionEnabledUri = Settings.Secure.getUriFor(
- Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED);
-
- private final Uri mDisplayDaltonizerEnabledUri = Settings.Secure.getUriFor(
- Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED);
-
- private final Uri mDisplayDaltonizerUri = Settings.Secure.getUriFor(
- Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER);
-
private final Uri mHighTextContrastUri = Settings.Secure.getUriFor(
Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED);
@@ -4153,12 +4135,6 @@
mTouchExplorationGrantedAccessibilityServicesUri,
false, this, UserHandle.USER_ALL);
contentResolver.registerContentObserver(
- mDisplayInversionEnabledUri, false, this, UserHandle.USER_ALL);
- contentResolver.registerContentObserver(
- mDisplayDaltonizerEnabledUri, false, this, UserHandle.USER_ALL);
- contentResolver.registerContentObserver(
- mDisplayDaltonizerUri, false, this, UserHandle.USER_ALL);
- contentResolver.registerContentObserver(
mHighTextContrastUri, false, this, UserHandle.USER_ALL);
contentResolver.registerContentObserver(
mAccessibilitySoftKeyboardModeUri, false, this, UserHandle.USER_ALL);
@@ -4202,11 +4178,6 @@
if (readTouchExplorationGrantedAccessibilityServicesLocked(userState)) {
onUserStateChangedLocked(userState);
}
- } else if (mDisplayDaltonizerEnabledUri.equals(uri)
- || mDisplayDaltonizerUri.equals(uri)) {
- updateDisplayDaltonizerLocked(userState);
- } else if (mDisplayInversionEnabledUri.equals(uri)) {
- updateDisplayInversionLocked(userState);
} else if (mHighTextContrastUri.equals(uri)) {
if (readHighTextContrastEnabledSettingLocked(userState)) {
onUserStateChangedLocked(userState);
diff --git a/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java b/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java
deleted file mode 100644
index c81a876..0000000
--- a/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2013 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.server.accessibility;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.os.Binder;
-import android.provider.Settings.Secure;
-import android.view.accessibility.AccessibilityManager;
-
-import com.android.server.LocalServices;
-import com.android.server.display.DisplayTransformManager;
-
-/**
- * Utility methods for performing accessibility display adjustments.
- */
-class DisplayAdjustmentUtils {
-
- /** Default inversion mode for display color correction. */
- private static final int DEFAULT_DISPLAY_DALTONIZER =
- AccessibilityManager.DALTONIZER_CORRECT_DEUTERANOMALY;
-
- /** Matrix and offset used for converting color to gray-scale. */
- private static final float[] MATRIX_GRAYSCALE = new float[] {
- .2126f, .2126f, .2126f, 0,
- .7152f, .7152f, .7152f, 0,
- .0722f, .0722f, .0722f, 0,
- 0, 0, 0, 1
- };
-
- /**
- * Matrix and offset used for luminance inversion. Represents a transform
- * from RGB to YIQ color space, rotation around the Y axis by 180 degrees,
- * transform back to RGB color space, and subtraction from 1. The last row
- * represents a non-multiplied addition, see surfaceflinger's ProgramCache
- * for full implementation details.
- */
- private static final float[] MATRIX_INVERT_COLOR = new float[] {
- 0.402f, -0.598f, -0.599f, 0,
- -1.174f, -0.174f, -1.175f, 0,
- -0.228f, -0.228f, 0.772f, 0,
- 1, 1, 1, 1
- };
-
- public static void applyDaltonizerSetting(Context context, int userId) {
- final ContentResolver cr = context.getContentResolver();
- final DisplayTransformManager dtm = LocalServices.getService(DisplayTransformManager.class);
-
- int daltonizerMode = AccessibilityManager.DALTONIZER_DISABLED;
- long identity = Binder.clearCallingIdentity();
- try {
- if (Secure.getIntForUser(cr,
- Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0, userId) != 0) {
- daltonizerMode = Secure.getIntForUser(cr,
- Secure.ACCESSIBILITY_DISPLAY_DALTONIZER, DEFAULT_DISPLAY_DALTONIZER, userId);
- }
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
-
- float[] grayscaleMatrix = null;
- if (daltonizerMode == AccessibilityManager.DALTONIZER_SIMULATE_MONOCHROMACY) {
- // Monochromacy isn't supported by the native Daltonizer.
- grayscaleMatrix = MATRIX_GRAYSCALE;
- daltonizerMode = AccessibilityManager.DALTONIZER_DISABLED;
- }
- dtm.setColorMatrix(DisplayTransformManager.LEVEL_COLOR_MATRIX_GRAYSCALE, grayscaleMatrix);
- dtm.setDaltonizerMode(daltonizerMode);
- }
-
- /**
- * Applies the specified user's display color adjustments.
- */
- public static void applyInversionSetting(Context context, int userId) {
- final ContentResolver cr = context.getContentResolver();
- final DisplayTransformManager dtm = LocalServices.getService(DisplayTransformManager.class);
-
- long identity = Binder.clearCallingIdentity();
- try {
- final boolean invertColors = Secure.getIntForUser(cr,
- Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, userId) != 0;
- dtm.setColorMatrix(DisplayTransformManager.LEVEL_COLOR_MATRIX_INVERT_COLOR,
- invertColors ? MATRIX_INVERT_COLOR : null);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-}
diff --git a/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java b/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java
index cf9f233..8ffadde 100644
--- a/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java
+++ b/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java
@@ -462,7 +462,7 @@
return false;
}
- endGestureDetection();
+ endGestureDetection(true);
mAms.onGesture(gestureId);
@@ -472,7 +472,7 @@
@Override
public boolean onGestureCancelled(MotionEvent event, int policyFlags) {
if (mCurrentState == STATE_GESTURE_DETECTING) {
- endGestureDetection();
+ endGestureDetection(event.getActionMasked() == MotionEvent.ACTION_UP);
return true;
} else if (mCurrentState == STATE_TOUCH_EXPLORING) {
// If the finger is still moving, pass the event on.
@@ -804,13 +804,19 @@
}
}
- private void endGestureDetection() {
+ private void endGestureDetection(boolean interactionEnd) {
mAms.onTouchInteractionEnd();
// Announce the end of the gesture recognition.
sendAccessibilityEvent(AccessibilityEvent.TYPE_GESTURE_DETECTION_END);
- // Announce the end of a the touch interaction.
- sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_END);
+ if (interactionEnd) {
+ // Announce the end of a the touch interaction.
+ sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_END);
+ } else {
+ // If gesture detection is end, but user doesn't release the finger, announce the
+ // transition to exploration state.
+ sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START);
+ }
mExitGestureDetectionModeDelayed.cancel();
mCurrentState = STATE_TOUCH_EXPLORING;
@@ -889,7 +895,6 @@
MotionEvent event = mInjectedPointerTracker.getLastInjectedHoverEvent();
if (event != null && event.getActionMasked() == MotionEvent.ACTION_HOVER_EXIT) {
final int pointerIdBits = event.getPointerIdBits();
- sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START);
sendMotionEvent(event, MotionEvent.ACTION_HOVER_ENTER, pointerIdBits, policyFlags);
}
}
@@ -1148,8 +1153,8 @@
sendAccessibilityEvent(AccessibilityEvent.TYPE_GESTURE_DETECTION_END);
// Clearing puts is in touch exploration state with a finger already
// down, so announce the transition to exploration state.
- sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START);
clear();
+ sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START);
}
}
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
index 24fd7b9..c992da4 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
@@ -252,9 +252,8 @@
@Override // from AbstractMasterSystemService
protected AutofillManagerServiceImpl newServiceLocked(@UserIdInt int resolvedUserId,
boolean disabled) {
- return new AutofillManagerServiceImpl(this, mLock, mRequestsHistory,
- mUiLatencyHistory, mWtfHistory, resolvedUserId, mUi, mAutofillCompatState,
- disabled);
+ return new AutofillManagerServiceImpl(this, mLock, mUiLatencyHistory,
+ mWtfHistory, resolvedUserId, mUi, mAutofillCompatState, disabled);
}
@Override // AbstractMasterSystemService
@@ -291,6 +290,13 @@
return mSupportedSmartSuggestionModes;
}
+ /**
+ * Logs a request so it's dumped later...
+ */
+ void logRequestLocked(@NonNull String historyItem) {
+ mRequestsHistory.log(historyItem);
+ }
+
// Called by AutofillManagerServiceImpl, doesn't need to check permission
boolean isInstantServiceAllowed() {
return mAllowInstantService;
@@ -701,6 +707,11 @@
public void onBackKeyPressed() {
if (sDebug) Slog.d(TAG, "onBackKeyPressed()");
mUi.hideAll(null);
+ synchronized (mLock) {
+ final AutofillManagerServiceImpl service =
+ getServiceForUserLocked(UserHandle.getCallingUserId());
+ service.onBackKeyPressed();
+ }
}
@Override
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
index a6bb049..954b67e 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
@@ -108,7 +108,6 @@
private static final Random sRandom = new Random();
- private final LocalLog mRequestsHistory;
private final LocalLog mUiLatencyHistory;
private final LocalLog mWtfHistory;
private final FieldClassificationStrategy mFieldClassificationStrategy;
@@ -166,12 +165,12 @@
@Nullable
private RemoteAugmentedAutofillService mRemoteAugmentedAutofillService;
- AutofillManagerServiceImpl(AutofillManagerService master, Object lock, LocalLog requestsHistory,
+ AutofillManagerServiceImpl(AutofillManagerService master, Object lock,
LocalLog uiLatencyHistory, LocalLog wtfHistory, int userId, AutoFillUI ui,
- AutofillCompatState autofillCompatState, boolean disabled) {
+ AutofillCompatState autofillCompatState,
+ boolean disabled) {
super(master, lock, userId);
- mRequestsHistory = requestsHistory;
mUiLatencyHistory = uiLatencyHistory;
mWtfHistory = wtfHistory;
mUi = ui;
@@ -187,6 +186,15 @@
}
@GuardedBy("mLock")
+ void onBackKeyPressed() {
+ final RemoteAugmentedAutofillService remoteService =
+ getRemoteAugmentedAutofillServiceLocked();
+ if (remoteService != null) {
+ remoteService.onDestroyAutofillWindowsRequest();
+ }
+ }
+
+ @GuardedBy("mLock")
@Override // from PerUserSystemService
protected boolean updateLocked(boolean disabled) {
destroySessionsLocked();
@@ -301,7 +309,7 @@
+ " s=" + mInfo.getServiceInfo().packageName
+ " u=" + mUserId + " i=" + autofillId + " b=" + virtualBounds
+ " hc=" + hasCallback + " f=" + flags;
- mRequestsHistory.log(historyItem);
+ mMaster.logRequestLocked(historyItem);
newSession.updateLocked(autofillId, virtualBounds, value, ACTION_START_SESSION, flags);
diff --git a/services/autofill/java/com/android/server/autofill/RemoteAugmentedAutofillService.java b/services/autofill/java/com/android/server/autofill/RemoteAugmentedAutofillService.java
index a8ff9b0..5d8d8fa 100644
--- a/services/autofill/java/com/android/server/autofill/RemoteAugmentedAutofillService.java
+++ b/services/autofill/java/com/android/server/autofill/RemoteAugmentedAutofillService.java
@@ -109,8 +109,8 @@
/**
* Called by {@link Session} when it's time to destroy all augmented autofill requests.
*/
- public void onDestroyAutofillWindowsRequest(int sessionId) {
- scheduleAsyncRequest((s) -> s.onDestroyFillWindowRequest(sessionId));
+ public void onDestroyAutofillWindowsRequest() {
+ scheduleAsyncRequest((s) -> s.onDestroyAllFillWindowsRequest());
}
// TODO(b/111330312): inline into PendingAutofillRequest if it doesn't have any other subclass
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index cf4963c..7dfd8fe 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -2610,6 +2610,13 @@
+ " when server returned null for session " + this.id);
}
+ final String historyItem =
+ "aug:id=" + id + " u=" + uid + " m=" + mode
+ + " a=" + ComponentName.flattenToShortString(mComponentName)
+ + " f=" + mCurrentViewId
+ + " s=" + remoteService.getComponentName();
+ mService.getMaster().logRequestLocked(historyItem);
+
final AutofillValue currentValue = mViewStates.get(mCurrentViewId).getCurrentValue();
// TODO(b/111330312): we might need to add a new state in the AutofillManager to optimize
@@ -2619,7 +2626,7 @@
currentValue);
if (mAugmentedAutofillDestroyer == null) {
- mAugmentedAutofillDestroyer = () -> remoteService.onDestroyAutofillWindowsRequest(id);
+ mAugmentedAutofillDestroyer = () -> remoteService.onDestroyAutofillWindowsRequest();
}
return mAugmentedAutofillDestroyer;
}
diff --git a/services/backup/java/com/android/server/backup/TransportManager.java b/services/backup/java/com/android/server/backup/TransportManager.java
index 529430c..a7bada0 100644
--- a/services/backup/java/com/android/server/backup/TransportManager.java
+++ b/services/backup/java/com/android/server/backup/TransportManager.java
@@ -562,7 +562,7 @@
private void registerTransportsFromPackage(
String packageName, Predicate<ComponentName> transportComponentFilter) {
try {
- mPackageManager.getPackageInfo(packageName, 0);
+ mPackageManager.getPackageInfoAsUser(packageName, 0, mUserId);
} catch (PackageManager.NameNotFoundException e) {
Slog.e(TAG, "Trying to register transports from package not found " + packageName);
return;
@@ -599,7 +599,8 @@
return false;
}
try {
- PackageInfo packInfo = mPackageManager.getPackageInfo(transport.getPackageName(), 0);
+ PackageInfo packInfo =
+ mPackageManager.getPackageInfoAsUser(transport.getPackageName(), 0, mUserId);
if ((packInfo.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED)
== 0) {
Slog.w(TAG, "Transport package " + transport.getPackageName() + " not privileged");
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
index 0412b0f..79f8a7e 100644
--- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
@@ -249,11 +249,11 @@
private final TransportManager mTransportManager;
private final HandlerThread mUserBackupThread;
- private Context mContext;
- private PackageManager mPackageManager;
- private IPackageManager mPackageManagerBinder;
- private IActivityManager mActivityManager;
- private ActivityManagerInternal mActivityManagerInternal;
+ private final Context mContext;
+ private final PackageManager mPackageManager;
+ private final IPackageManager mPackageManagerBinder;
+ private final IActivityManager mActivityManager;
+ private final ActivityManagerInternal mActivityManagerInternal;
private PowerManager mPowerManager;
private final AlarmManager mAlarmManager;
private final IStorageManager mStorageManager;
@@ -494,20 +494,18 @@
mUserId);
mBaseStateDir = checkNotNull(baseStateDir, "baseStateDir cannot be null");
- mBaseStateDir.mkdirs();
- if (!SELinux.restorecon(mBaseStateDir)) {
- Slog.w(TAG, "SELinux restorecon failed on " + mBaseStateDir);
- }
-
- mDataDir = checkNotNull(dataDir, "dataDir cannot be null");
- // TODO(b/120424138): Remove when the system user moves out of the cache dir. The cache dir
- // is managed by init.rc so we don't have to create it below.
- if (userId != UserHandle.USER_SYSTEM) {
- mDataDir.mkdirs();
- if (!SELinux.restorecon(mDataDir)) {
- Slog.w(TAG, "SELinux restorecon failed on " + mDataDir);
+ // TODO (b/120424138): Remove once the system user is migrated to use the per-user CE
+ // directory. Per-user CE directories are managed by vold.
+ if (userId == UserHandle.USER_SYSTEM) {
+ mBaseStateDir.mkdirs();
+ if (!SELinux.restorecon(mBaseStateDir)) {
+ Slog.w(TAG, "SELinux restorecon failed on " + mBaseStateDir);
}
}
+
+ // TODO (b/120424138): The system user currently uses the cache which is managed by init.rc
+ // Initialization and restorecon is managed by vold for per-user CE directories.
+ mDataDir = checkNotNull(dataDir, "dataDir cannot be null");
mBackupPasswordManager = new BackupPasswordManager(mContext, mBaseStateDir, mRng);
// Receivers for scheduled backups and transport initialization operations.
@@ -584,7 +582,7 @@
mBackupHandler.postDelayed(this::parseLeftoverJournals, INITIALIZATION_DELAY_MILLIS);
// Power management
- mWakelock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "*backup*");
+ mWakelock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "*backup*-" + userId);
}
void initializeBackupEnableState() {
@@ -1352,7 +1350,7 @@
private List<PackageInfo> allAgentPackages() {
// !!! TODO: cache this and regenerate only when necessary
int flags = PackageManager.GET_SIGNING_CERTIFICATES;
- List<PackageInfo> packages = mPackageManager.getInstalledPackages(flags);
+ List<PackageInfo> packages = mPackageManager.getInstalledPackagesAsUser(flags, mUserId);
int numPackages = packages.size();
for (int a = numPackages - 1; a >= 0; a--) {
PackageInfo pkg = packages.get(a);
@@ -1366,8 +1364,8 @@
// we will need the shared library path, so look that up and store it here.
// This is used implicitly when we pass the PackageInfo object off to
// the Activity Manager to launch the app for backup/restore purposes.
- app = mPackageManager.getApplicationInfo(pkg.packageName,
- PackageManager.GET_SHARED_LIBRARY_FILES);
+ app = mPackageManager.getApplicationInfoAsUser(pkg.packageName,
+ PackageManager.GET_SHARED_LIBRARY_FILES, mUserId);
pkg.applicationInfo.sharedLibraryFiles = app.sharedLibraryFiles;
pkg.applicationInfo.sharedLibraryInfos = app.sharedLibraryInfos;
}
@@ -1392,7 +1390,7 @@
notification.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES
| Intent.FLAG_RECEIVER_FOREGROUND);
notification.putExtra(BACKUP_FINISHED_PACKAGE_EXTRA, packageName);
- mContext.sendBroadcastAsUser(notification, UserHandle.OWNER);
+ mContext.sendBroadcastAsUser(notification, UserHandle.of(mUserId));
}
mProcessedPackagesJournal.addPackage(packageName);
@@ -1466,11 +1464,7 @@
}
}
if (agent == null) {
- try {
- mActivityManager.clearPendingBackup();
- } catch (RemoteException e) {
- // can't happen - ActivityManager is local
- }
+ mActivityManagerInternal.clearPendingBackup(mUserId);
}
return agent;
}
@@ -2212,11 +2206,10 @@
/** Used by both incremental and full restore to restore widget data. */
public void restoreWidgetData(String packageName, byte[] widgetData) {
// Apply the restored widget state and generate the ID update for the app
- // TODO: http://b/22388012
if (MORE_DEBUG) {
Slog.i(TAG, "Incorporating restored widget data");
}
- AppWidgetBackupBridge.restoreWidgetState(packageName, widgetData, UserHandle.USER_SYSTEM);
+ AppWidgetBackupBridge.restoreWidgetState(packageName, widgetData, mUserId);
}
// *****************************
@@ -2295,20 +2288,6 @@
/** Sent from an app's backup agent to let the service know that there's new data to backup. */
public void dataChanged(final String packageName) {
- final int callingUserHandle = UserHandle.getCallingUserId();
- if (callingUserHandle != UserHandle.USER_SYSTEM) {
- // TODO: http://b/22388012
- // App is running under a non-owner user profile. For now, we do not back
- // up data from secondary user profiles.
- // TODO: backups for all user profiles although don't add backup for profiles
- // without adding admin control in DevicePolicyManager.
- if (MORE_DEBUG) {
- Slog.v(TAG, "dataChanged(" + packageName + ") ignored because it's user "
- + callingUserHandle);
- }
- return;
- }
-
final HashSet<String> targets = dataChangedTargets(packageName);
if (targets == null) {
Slog.w(TAG, "dataChanged but no participant pkg='" + packageName + "'"
@@ -2925,7 +2904,7 @@
try {
int transportUid =
mContext.getPackageManager()
- .getPackageUid(transportComponent.getPackageName(), 0);
+ .getPackageUidAsUser(transportComponent.getPackageName(), 0, mUserId);
if (callingUid != transportUid) {
throw new SecurityException("Only the transport can change its description");
}
diff --git a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java
index 862ca71..cfc129e 100644
--- a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java
+++ b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java
@@ -45,6 +45,7 @@
import android.os.Process;
import android.os.RemoteException;
import android.os.SELinux;
+import android.os.UserHandle;
import android.os.WorkSource;
import com.android.internal.annotations.GuardedBy;
@@ -686,8 +687,12 @@
ParcelFileDescriptor.open(
mNewStateFile, MODE_READ_WRITE | MODE_CREATE | MODE_TRUNCATE);
- if (!SELinux.restorecon(mBackupDataFile)) {
- mReporter.onRestoreconFailed(mBackupDataFile);
+ // TODO (b/120424138): Remove once the system user is migrated to use the per-user CE
+ // directory. Per-user CE directories are managed by vold.
+ if (mUserId == UserHandle.USER_SYSTEM) {
+ if (!SELinux.restorecon(mBackupDataFile)) {
+ mReporter.onRestoreconFailed(mBackupDataFile);
+ }
}
IBackupTransport transport = mTransportClient.connectOrThrow("KVBT.extractAgentData()");
diff --git a/services/backup/java/com/android/server/backup/restore/FullRestoreEngine.java b/services/backup/java/com/android/server/backup/restore/FullRestoreEngine.java
index c7f3315..b3d9fbc 100644
--- a/services/backup/java/com/android/server/backup/restore/FullRestoreEngine.java
+++ b/services/backup/java/com/android/server/backup/restore/FullRestoreEngine.java
@@ -68,6 +68,8 @@
public class FullRestoreEngine extends RestoreEngine {
private final UserBackupManagerService mBackupManagerService;
+ private final int mUserId;
+
// Task in charge of monitoring timeouts
private final BackupRestoreTask mMonitorTask;
@@ -146,6 +148,7 @@
backupManagerService.getAgentTimeoutParameters(),
"Timeout parameters cannot be null");
mIsAdbRestore = isAdbRestore;
+ mUserId = backupManagerService.getUserId();
}
public IBackupAgent getAgent() {
@@ -272,7 +275,7 @@
instream, mBackupManagerService.getContext(),
mDeleteObserver, mManifestSignatures,
mPackagePolicies, info, installerPackageName,
- bytesReadListener, mBackupManagerService.getUserId());
+ bytesReadListener, mUserId);
// good to go; promote to ACCEPT
mPackagePolicies.put(pkg, isSuccessfullyInstalled
? RestorePolicy.ACCEPT
@@ -329,9 +332,8 @@
}
try {
- mTargetApp =
- mBackupManagerService.getPackageManager().getApplicationInfo(
- pkg, 0);
+ mTargetApp = mBackupManagerService.getPackageManager()
+ .getApplicationInfoAsUser(pkg, 0, mUserId);
// If we haven't sent any data to this app yet, we probably
// need to clear it first. Check that.
@@ -684,7 +686,7 @@
String packageListString = Settings.Secure.getStringForUser(
mBackupManagerService.getContext().getContentResolver(),
Settings.Secure.PACKAGES_TO_CLEAR_DATA_BEFORE_FULL_RESTORE,
- mBackupManagerService.getUserId());
+ mUserId);
if (TextUtils.isEmpty(packageListString)) {
return false;
}
diff --git a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
index 5284d94..d01f77b 100644
--- a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
+++ b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
@@ -360,7 +360,6 @@
// If we're starting a full-system restore, set up to begin widget ID remapping
if (mIsSystemRestore) {
- // TODO: http://b/22388012
AppWidgetBackupBridge.restoreStarting(mUserId);
}
@@ -1079,7 +1078,6 @@
}
// Kick off any work that may be needed regarding app widget restores
- // TODO: http://b/22388012
AppWidgetBackupBridge.restoreFinished(mUserId);
// If this was a full-system restore, record the ancestral
diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
index dc0f602..e4bbcd6 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
@@ -32,6 +32,7 @@
import android.os.ShellCallback;
import android.os.UserHandle;
import android.os.UserManager;
+import android.util.LocalLog;
import android.util.Slog;
import android.view.contentcapture.IContentCaptureManager;
@@ -69,6 +70,8 @@
private final LocalService mLocalService = new LocalService();
+ private final LocalLog mRequestsHistory = new LocalLog(20);
+
public ContentCaptureManagerService(@NonNull Context context) {
super(context, new FrameworkResourcesServiceNameResolver(context,
com.android.internal.R.string.config_defaultContentCaptureService),
@@ -154,6 +157,13 @@
}
}
+ /**
+ * Logs a request so it's dumped later...
+ */
+ void logRequestLocked(@NonNull String historyItem) {
+ mRequestsHistory.log(historyItem);
+ }
+
private ActivityManagerInternal getAmInternal() {
synchronized (mLock) {
if (mAm == null) {
@@ -217,9 +227,29 @@
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpPermission(getContext(), TAG, pw)) return;
+ boolean showHistory = true;
+ if (args != null) {
+ for (String arg : args) {
+ switch(arg) {
+ case "--no-history":
+ showHistory = false;
+ break;
+ case "--help":
+ pw.println("Usage: dumpsys content_capture [--no-history]");
+ return;
+ default:
+ Slog.w(TAG, "Ignoring invalid dump arg: " + arg);
+ }
+ }
+ }
+
synchronized (mLock) {
dumpLocked("", pw);
}
+ if (showHistory) {
+ pw.println(); pw.println("Requests history:"); pw.println();
+ mRequestsHistory.reverseDump(fd, pw, args);
+ }
}
@Override
diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java
index 09aa421..8d2c79b 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java
@@ -17,6 +17,9 @@
package com.android.server.contentcapture;
import static android.service.contentcapture.ContentCaptureService.setClientState;
+import static android.view.contentcapture.ContentCaptureSession.STATE_DISABLED;
+import static android.view.contentcapture.ContentCaptureSession.STATE_DUPLICATED_ID;
+import static android.view.contentcapture.ContentCaptureSession.STATE_NO_SERVICE;
import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_CONTENT;
import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_DATA;
@@ -36,10 +39,11 @@
import android.os.IBinder;
import android.os.RemoteException;
import android.service.contentcapture.ContentCaptureService;
+import android.service.contentcapture.IContentCaptureServiceCallback;
import android.service.contentcapture.SnapshotData;
import android.util.ArrayMap;
+import android.util.Log;
import android.util.Slog;
-import android.view.contentcapture.ContentCaptureSession;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.os.IResultReceiver;
@@ -48,6 +52,7 @@
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.List;
/**
* Per-user instance of {@link ContentCaptureManagerService}.
@@ -72,12 +77,14 @@
@GuardedBy("mLock")
private RemoteContentCaptureService mRemoteService;
+ private final ContentCaptureServiceRemoteCallback mRemoteServiceCallback =
+ new ContentCaptureServiceRemoteCallback();
+
// TODO(b/111276913): add mechanism to prune stale sessions, similar to Autofill's
ContentCapturePerUserService(@NonNull ContentCaptureManagerService master,
@NonNull Object lock, boolean disabled, @UserIdInt int userId) {
super(master, lock, userId);
-
updateRemoteServiceLocked(disabled);
}
@@ -100,10 +107,10 @@
}
if (!disabled) {
- mRemoteService = new RemoteContentCaptureService(
- mMaster.getContext(),
- ContentCaptureService.SERVICE_INTERFACE, serviceComponentName, mUserId, this,
- mMaster.isBindInstantServiceAllowed(), mMaster.verbose);
+ mRemoteService = new RemoteContentCaptureService(mMaster.getContext(),
+ ContentCaptureService.SERVICE_INTERFACE, serviceComponentName,
+ mRemoteServiceCallback, mUserId, this, mMaster.isBindInstantServiceAllowed(),
+ mMaster.verbose);
}
}
@@ -162,14 +169,24 @@
@NonNull ComponentName componentName, int taskId, int displayId,
@NonNull String sessionId, int uid, int flags,
@NonNull IResultReceiver clientReceiver) {
- if (!isEnabledLocked()) {
+
+ final ComponentName serviceComponentName = getServiceComponentName();
+ final boolean enabled = isEnabledLocked();
+ final String historyItem =
+ "id=" + sessionId + " uid=" + uid
+ + " a=" + ComponentName.flattenToShortString(componentName)
+ + " t=" + taskId + " d=" + displayId
+ + " s=" + ComponentName.flattenToShortString(serviceComponentName)
+ + " u=" + mUserId + " f=" + flags + (enabled ? "" : " (disabled)");
+ mMaster.logRequestLocked(historyItem);
+
+ if (!enabled) {
// TODO: it would be better to split in differet reasons, like
// STATE_DISABLED_NO_SERVICE and STATE_DISABLED_BY_DEVICE_POLICY
- setClientState(clientReceiver, ContentCaptureSession.STATE_DISABLED_NO_SERVICE,
+ setClientState(clientReceiver, STATE_DISABLED | STATE_NO_SERVICE,
/* binder= */ null);
return;
}
- final ComponentName serviceComponentName = getServiceComponentName();
if (serviceComponentName == null) {
// TODO(b/111276913): this happens when the system service is starting, we should
// probably handle it in a more elegant way (like waiting for boot_complete or
@@ -184,7 +201,7 @@
if (existingSession != null) {
Slog.w(TAG, "startSession(id=" + existingSession + ", token=" + activityToken
+ ": ignoring because it already exists for " + existingSession.mActivityToken);
- setClientState(clientReceiver, ContentCaptureSession.STATE_DISABLED_DUPLICATED_ID,
+ setClientState(clientReceiver, STATE_DISABLED | STATE_DUPLICATED_ID,
/* binder=*/ null);
return;
}
@@ -197,8 +214,7 @@
// TODO(b/119613670): log metrics
Slog.w(TAG, "startSession(id=" + existingSession + ", token=" + activityToken
+ ": ignoring because service is not set");
- // TODO(b/111276913): use a new disabled state?
- setClientState(clientReceiver, ContentCaptureSession.STATE_DISABLED_NO_SERVICE,
+ setClientState(clientReceiver, STATE_DISABLED | STATE_NO_SERVICE,
/* binder= */ null);
return;
}
@@ -338,4 +354,50 @@
}
return null;
}
+
+ private final class ContentCaptureServiceRemoteCallback extends
+ IContentCaptureServiceCallback.Stub {
+
+ @Override
+ public void setContentCaptureWhitelist(List<String> packages,
+ List<ComponentName> activities) {
+ if (mMaster.verbose) {
+ Log.v(TAG, "setContentCaptureWhitelist(packages=" + packages + ", activities="
+ + activities + ")");
+ }
+ // TODO(b/122595322): implement
+ // TODO(b/119613670): log metrics
+ }
+
+ @Override
+ public void setActivityContentCaptureEnabled(ComponentName activity, boolean enabled) {
+ if (mMaster.verbose) {
+ Log.v(TAG, "setActivityContentCaptureEnabled(activity=" + activity + ", enabled="
+ + enabled + ")");
+ }
+ // TODO(b/122595322): implement
+ // TODO(b/119613670): log metrics
+ }
+
+ @Override
+ public void setPackageContentCaptureEnabled(String packageName, boolean enabled) {
+ if (mMaster.verbose) {
+ Log.v(TAG,
+ "setPackageContentCaptureEnabled(packageName=" + packageName + ", enabled="
+ + enabled + ")");
+ }
+ // TODO(b/122595322): implement
+ // TODO(b/119613670): log metrics
+ }
+
+ @Override
+ public void getContentCaptureDisabledActivities(IResultReceiver receiver) {
+ // TODO(b/122595322): implement
+ }
+
+ @Override
+ public void getContentCaptureDisabledPackages(IResultReceiver receiver) {
+ // TODO(b/122595322): implement
+ }
+ }
}
diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureServerSession.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureServerSession.java
index ebe0083..3c52e17 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureServerSession.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureServerSession.java
@@ -83,6 +83,8 @@
*/
@GuardedBy("mLock")
public void sendActivitySnapshotLocked(@NonNull SnapshotData snapshotData) {
+ mService.getMaster().logRequestLocked("snapshot: id=" + mId);
+
mRemoteService.onActivitySnapshotRequest(mId, snapshotData);
}
diff --git a/services/contentcapture/java/com/android/server/contentcapture/RemoteContentCaptureService.java b/services/contentcapture/java/com/android/server/contentcapture/RemoteContentCaptureService.java
index 82416286..12742ca 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/RemoteContentCaptureService.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/RemoteContentCaptureService.java
@@ -21,6 +21,7 @@
import android.content.Context;
import android.os.IBinder;
import android.service.contentcapture.IContentCaptureService;
+import android.service.contentcapture.IContentCaptureServiceCallback;
import android.service.contentcapture.SnapshotData;
import android.text.format.DateUtils;
import android.util.Slog;
@@ -35,12 +36,15 @@
private static final long TIMEOUT_REMOTE_REQUEST_MILLIS = 2 * DateUtils.SECOND_IN_MILLIS;
+ private final IBinder mServerCallback;
+
RemoteContentCaptureService(Context context, String serviceInterface,
- ComponentName componentName, int userId,
+ ComponentName serviceComponentName, IContentCaptureServiceCallback callback, int userId,
ContentCaptureServiceCallbacks callbacks, boolean bindInstantServiceAllowed,
boolean verbose) {
- super(context, serviceInterface, componentName, userId, callbacks,
+ super(context, serviceInterface, serviceComponentName, userId, callbacks,
bindInstantServiceAllowed, verbose, /* initialCapacity= */ 2);
+ mServerCallback = callback.asBinder();
// Bind right away, which will trigger a onConnected() on service's
scheduleBind();
@@ -69,7 +73,11 @@
scheduleUnbind();
}
try {
- mService.onConnectedStateChanged(state);
+ if (state) {
+ mService.onConnected(mServerCallback);
+ } else {
+ mService.onDisconnected();
+ }
} catch (Exception e) {
Slog.w(mTag, "Exception calling onConnectedStateChanged(" + state + "): " + e);
}
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index d0666b9..00550d9 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -1494,6 +1494,9 @@
newNc.setUids(null);
newNc.setSSID(null);
}
+ if (newNc.getNetworkSpecifier() != null) {
+ newNc.setNetworkSpecifier(newNc.getNetworkSpecifier().redact());
+ }
return newNc;
}
@@ -4879,7 +4882,7 @@
final NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities);
final NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(),
new Network(reserveNetId()), new NetworkInfo(networkInfo), lp, nc, currentScore,
- mContext, mTrackerHandler, new NetworkMisc(networkMisc), this);
+ mContext, mTrackerHandler, new NetworkMisc(networkMisc), this, mNetd, mNMS);
// Make sure the network capabilities reflect what the agent info says.
nai.networkCapabilities = mixInCapabilities(nai, nc);
final String extraInfo = networkInfo.getExtraInfo();
@@ -5358,7 +5361,8 @@
}
switch (notificationType) {
case ConnectivityManager.CALLBACK_AVAILABLE: {
- putParcelable(bundle, new NetworkCapabilities(networkAgent.networkCapabilities));
+ putParcelable(bundle, networkCapabilitiesRestrictedForCallerPermissions(
+ networkAgent.networkCapabilities, nri.mPid, nri.mUid));
putParcelable(bundle, new LinkProperties(networkAgent.linkProperties));
// For this notification, arg1 contains the blocked status.
msg.arg1 = arg1;
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 869d564..add5e5f 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -46,7 +46,6 @@
import android.content.pm.Signature;
import android.content.res.Resources;
import android.database.ContentObserver;
-import android.hardware.location.ActivityRecognitionHardware;
import android.location.Address;
import android.location.Criteria;
import android.location.GeocoderParams;
@@ -93,7 +92,6 @@
import com.android.internal.util.DumpUtils;
import com.android.internal.util.Preconditions;
import com.android.server.location.AbstractLocationProvider;
-import com.android.server.location.ActivityRecognitionProxy;
import com.android.server.location.GeocoderProxy;
import com.android.server.location.GeofenceManager;
import com.android.server.location.GeofenceProxy;
@@ -257,6 +255,9 @@
packageManagerInternal.setLocationPackagesProvider(
userId -> mContext.getResources().getStringArray(
com.android.internal.R.array.config_locationProviderPackageNames));
+ packageManagerInternal.setLocationExtraPackagesProvider(
+ userId -> mContext.getResources().getStringArray(
+ com.android.internal.R.array.config_locationExtraPackageNames));
// most startup is deferred until systemRunning()
}
@@ -735,25 +736,6 @@
Slog.d(TAG, "Unable to bind FLP Geofence proxy.");
}
- // bind to hardware activity recognition
- boolean activityRecognitionHardwareIsSupported = ActivityRecognitionHardware.isSupported();
- ActivityRecognitionHardware activityRecognitionHardware = null;
- if (activityRecognitionHardwareIsSupported) {
- activityRecognitionHardware = ActivityRecognitionHardware.getInstance(mContext);
- } else {
- Slog.d(TAG, "Hardware Activity-Recognition not supported.");
- }
- ActivityRecognitionProxy proxy = ActivityRecognitionProxy.createAndBind(
- mContext,
- activityRecognitionHardwareIsSupported,
- activityRecognitionHardware,
- com.android.internal.R.bool.config_enableActivityRecognitionHardwareOverlay,
- com.android.internal.R.string.config_activityRecognitionHardwarePackageName,
- com.android.internal.R.array.config_locationProviderPackageNames);
- if (proxy == null) {
- Slog.d(TAG, "Unable to bind ActivityRecognitionProxy.");
- }
-
String[] testProviderStrings = resources.getStringArray(
com.android.internal.R.array.config_testLocationProviders);
for (String testProviderString : testProviderStrings) {
@@ -1041,12 +1023,13 @@
@Override
public void onSetProperties(ProviderProperties properties) {
- // move calls coming from below LMS onto a different thread to avoid deadlock
- runInternal(() -> {
- synchronized (mLock) {
- mProperties = properties;
- }
- });
+ // because this does not invoke any other methods which might result in calling back
+ // into the location provider, it is safe to run this on the calling thread. it is also
+ // currently necessary to run this on the calling thread to ensure that property changes
+ // are publicly visibly immediately, ie for mock providers which are created.
+ synchronized (mLock) {
+ mProperties = properties;
+ }
}
@GuardedBy("mLock")
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index b0ca2df..aed0684 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -17,13 +17,11 @@
package com.android.server;
import static android.Manifest.permission.CONNECTIVITY_INTERNAL;
-import static android.Manifest.permission.DUMP;
import static android.Manifest.permission.NETWORK_SETTINGS;
import static android.Manifest.permission.NETWORK_STACK;
import static android.Manifest.permission.SHUTDOWN;
import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_DOZABLE;
import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_DOZABLE;
-import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_NONE;
import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_POWERSAVE;
import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_STANDBY;
import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NONE;
@@ -40,6 +38,7 @@
import static android.net.NetworkStats.TAG_NONE;
import static android.net.NetworkStats.UID_ALL;
import static android.net.TrafficStats.UID_TETHERING;
+
import static com.android.server.NetworkManagementService.NetdResponseCode.ClatdStatusResult;
import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceGetCfgResult;
import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceListResult;
@@ -53,11 +52,9 @@
import android.annotation.NonNull;
import android.app.ActivityManager;
-import android.content.ContentResolver;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.INetd;
-import android.net.TetherStatsParcel;
import android.net.INetworkManagementEventObserver;
import android.net.ITetheringStatsProvider;
import android.net.InterfaceConfiguration;
@@ -69,18 +66,15 @@
import android.net.NetworkStats;
import android.net.NetworkUtils;
import android.net.RouteInfo;
+import android.net.TetherStatsParcel;
import android.net.UidRange;
-import android.net.UidRangeParcel;
import android.net.util.NetdService;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiConfiguration.KeyMgmt;
import android.os.BatteryStats;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.INetworkActivityListener;
import android.os.INetworkManagementService;
-import android.os.PersistableBundle;
import android.os.PowerManager;
import android.os.Process;
import android.os.RemoteCallbackList;
@@ -91,12 +85,7 @@
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
-import android.provider.Settings;
import android.telephony.DataConnectionRealTimeInfo;
-import android.telephony.PhoneStateListener;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
import android.util.Log;
import android.util.Slog;
import android.util.SparseBooleanArray;
@@ -110,13 +99,11 @@
import com.android.internal.util.DumpUtils;
import com.android.internal.util.HexDump;
import com.android.internal.util.Preconditions;
-import com.android.server.NativeDaemonConnector.Command;
-import com.android.server.NativeDaemonConnector.SensitiveArg;
+
import com.google.android.collect.Maps;
import java.io.BufferedReader;
import java.io.DataInputStream;
-import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;
@@ -124,15 +111,11 @@
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.InterfaceAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.StringTokenizer;
import java.util.concurrent.CountDownLatch;
/**
@@ -2153,28 +2136,6 @@
}
@Override
- public void startClatd(String interfaceName) throws IllegalStateException {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
-
- try {
- mNetdService.clatdStart(interfaceName);
- } catch (RemoteException | ServiceSpecificException e) {
- throw new IllegalStateException(e);
- }
- }
-
- @Override
- public void stopClatd(String interfaceName) throws IllegalStateException {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
-
- try {
- mNetdService.clatdStop(interfaceName);
- } catch (RemoteException | ServiceSpecificException e) {
- throw new IllegalStateException(e);
- }
- }
-
- @Override
public void registerNetworkActivityListener(INetworkActivityListener listener) {
mNetworkActivityListeners.register(listener);
}
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index 2a80644..7731c04 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -780,6 +780,13 @@
});
refreshZramSettings();
+ // Schedule zram writeback unless zram is disabled by persist.sys.zram_enabled
+ String zramPropValue = SystemProperties.get(ZRAM_ENABLED_PROPERTY);
+ if (!zramPropValue.equals("0")
+ && mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_zramWriteback)) {
+ ZramWriteback.scheduleZramWriteback(mContext);
+ }
// Toggle isolated-enable system property in response to settings
mContext.getContentResolver().registerContentObserver(
Settings.Global.getUriFor(Settings.Global.ISOLATED_STORAGE_REMOTE),
@@ -813,6 +820,12 @@
// changing the property value. There's no race: we're the
// sole writer.
SystemProperties.set(ZRAM_ENABLED_PROPERTY, desiredPropertyValue);
+ // Schedule writeback only if zram is being enabled.
+ if (desiredPropertyValue.equals("1")
+ && mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_zramWriteback)) {
+ ZramWriteback.scheduleZramWriteback(mContext);
+ }
}
}
@@ -3275,7 +3288,8 @@
}
final int mountMode = mAmInternal.getStorageMountMode(pid, uid);
- if (mountMode == Zygote.MOUNT_EXTERNAL_FULL) {
+ if (mountMode == Zygote.MOUNT_EXTERNAL_FULL
+ || mountMode == Zygote.MOUNT_EXTERNAL_LEGACY) {
return path;
}
@@ -3650,12 +3664,13 @@
return Zygote.MOUNT_EXTERNAL_FULL;
} else if (mIAppOpsService.checkOperation(OP_LEGACY_STORAGE, uid,
packageName) == MODE_ALLOWED) {
- // TODO: define a specific "legacy" mount mode
- return Zygote.MOUNT_EXTERNAL_FULL;
+ return Zygote.MOUNT_EXTERNAL_LEGACY;
} else if (mIPackageManager.checkUidPermission(INSTALL_PACKAGES, uid)
== PERMISSION_GRANTED || mIAppOpsService.checkOperation(
OP_REQUEST_INSTALL_PACKAGES, uid, packageName) == MODE_ALLOWED) {
return Zygote.MOUNT_EXTERNAL_INSTALLER;
+ } else if (mPmInternal.isInstantApp(packageName, UserHandle.getUserId(uid))) {
+ return Zygote.MOUNT_EXTERNAL_NONE;
} else {
return Zygote.MOUNT_EXTERNAL_WRITE;
}
diff --git a/services/core/java/com/android/server/TEST_MAPPING b/services/core/java/com/android/server/TEST_MAPPING
index 93e1dd3..16b12f1 100644
--- a/services/core/java/com/android/server/TEST_MAPPING
+++ b/services/core/java/com/android/server/TEST_MAPPING
@@ -7,7 +7,7 @@
"include-annotation": "android.platform.test.annotations.Presubmit"
},
{
- "exclude-annotation": "android.support.test.filters.FlakyTest"
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
}
]
}
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index cbf6d04..aa23890 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -32,6 +32,8 @@
import android.os.Message;
import android.os.RemoteException;
import android.os.UserHandle;
+import android.telephony.CallAttributes;
+import android.telephony.CallQuality;
import android.telephony.CellInfo;
import android.telephony.CellLocation;
import android.telephony.DataFailCause;
@@ -173,6 +175,8 @@
private ServiceState[] mServiceState;
+ private int[] mNetworkType;
+
private int[] mVoiceActivationState;
private int[] mDataActivationState;
@@ -202,6 +206,10 @@
private Map<Integer, List<EmergencyNumber>> mEmergencyNumberList;
+ private CallQuality mCallQuality;
+
+ private CallAttributes mCallAttributes;
+
private int[] mSrvccState;
private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -358,6 +366,7 @@
mDataConnectionNetworkType = new int[numPhones];
mCallIncomingNumber = new String[numPhones];
mServiceState = new ServiceState[numPhones];
+ mNetworkType = new int[numPhones];
mVoiceActivationState = new int[numPhones];
mDataActivationState = new int[numPhones];
mUserMobileDataState = new boolean[numPhones];
@@ -377,6 +386,7 @@
mDataActivationState[i] = TelephonyManager.SIM_ACTIVATION_STATE_UNKNOWN;
mCallIncomingNumber[i] = "";
mServiceState[i] = new ServiceState();
+ mNetworkType[i] = mServiceState[i].getVoiceNetworkType();
mSignalStrength[i] = new SignalStrength();
mUserMobileDataState[i] = false;
mMessageWaiting[i] = false;
@@ -807,6 +817,13 @@
remove(r.binder);
}
}
+ if ((events & PhoneStateListener.LISTEN_CALL_ATTRIBUTES_CHANGED) != 0) {
+ try {
+ r.callback.onCallAttributesChanged(mCallAttributes);
+ } catch (RemoteException ex) {
+ remove(r.binder);
+ }
+ }
}
}
} else {
@@ -957,6 +974,21 @@
if (validatePhoneId(phoneId)) {
mServiceState[phoneId] = state;
+ boolean notifyCallAttributes = true;
+ if (mNetworkType[phoneId] != mServiceState[phoneId].getVoiceNetworkType()) {
+ mNetworkType[phoneId] = state.getVoiceNetworkType();
+ mCallAttributes = new CallAttributes(mPreciseCallState, mNetworkType[phoneId],
+ mCallQuality);
+ } else {
+ // No change to network type, so no need to notify call attributes
+ notifyCallAttributes = false;
+ }
+
+ if (mCallQuality == null) {
+ // No call quality reported yet, so no need to notify call attributes
+ notifyCallAttributes = false;
+ }
+
for (Record r : mRecords) {
if (VDBG) {
log("notifyServiceStateForSubscriber: r=" + r + " subId=" + subId
@@ -975,6 +1007,14 @@
mRemoveList.add(r.binder);
}
}
+ if (notifyCallAttributes && r.matchPhoneStateListenerEvent(
+ PhoneStateListener.LISTEN_CALL_ATTRIBUTES_CHANGED)) {
+ try {
+ r.callback.onCallAttributesChanged(mCallAttributes);
+ } catch (RemoteException ex) {
+ mRemoveList.add(r.binder);
+ }
+ }
}
} else {
log("notifyServiceStateForSubscriber: INVALID phoneId=" + phoneId);
@@ -1484,7 +1524,7 @@
}
public void notifyPreciseCallState(int ringingCallState, int foregroundCallState,
- int backgroundCallState) {
+ int backgroundCallState, int phoneId) {
if (!checkNotifyPermission("notifyPreciseCallState()")) {
return;
}
@@ -1496,6 +1536,15 @@
backgroundCallState,
DisconnectCause.NOT_VALID,
PreciseDisconnectCause.NOT_VALID);
+ boolean notifyCallAttributes = true;
+ if (mCallQuality == null) {
+ log("notifyPreciseCallState: mCallQuality is null, skipping call attributes");
+ notifyCallAttributes = false;
+ } else {
+ mCallAttributes = new CallAttributes(mPreciseCallState, mNetworkType[phoneId],
+ mCallQuality);
+ }
+
for (Record r : mRecords) {
if (r.matchPhoneStateListenerEvent(PhoneStateListener.LISTEN_PRECISE_CALL_STATE)) {
try {
@@ -1504,6 +1553,14 @@
mRemoveList.add(r.binder);
}
}
+ if (notifyCallAttributes && r.matchPhoneStateListenerEvent(
+ PhoneStateListener.LISTEN_CALL_ATTRIBUTES_CHANGED)) {
+ try {
+ r.callback.onCallAttributesChanged(mCallAttributes);
+ } catch (RemoteException ex) {
+ mRemoveList.add(r.binder);
+ }
+ }
}
handleRemoveListLocked();
}
@@ -1721,6 +1778,36 @@
}
}
+ @Override
+ public void notifyCallQualityChanged(CallQuality callQuality, int phoneId) {
+ if (!checkNotifyPermission("notifyCallQualityChanged()")) {
+ return;
+ }
+
+ // merge CallQuality with PreciseCallState and network type
+ mCallQuality = callQuality;
+ mCallAttributes = new CallAttributes(mPreciseCallState,
+ mNetworkType[phoneId],
+ callQuality);
+
+ synchronized (mRecords) {
+ TelephonyManager tm = (TelephonyManager) mContext.getSystemService(
+ Context.TELEPHONY_SERVICE);
+
+ for (Record r : mRecords) {
+ if (r.matchPhoneStateListenerEvent(
+ PhoneStateListener.LISTEN_CALL_ATTRIBUTES_CHANGED)) {
+ try {
+ r.callback.onCallAttributesChanged(mCallAttributes);
+ } catch (RemoteException ex) {
+ mRemoveList.add(r.binder);
+ }
+ }
+ }
+ handleRemoveListLocked();
+ }
+ }
+
@Override
public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
@@ -1738,6 +1825,7 @@
pw.println("mCallState=" + mCallState[i]);
pw.println("mCallIncomingNumber=" + mCallIncomingNumber[i]);
pw.println("mServiceState=" + mServiceState[i]);
+ pw.println("mNetworkType=" + mNetworkType[i]);
pw.println("mVoiceActivationState= " + mVoiceActivationState[i]);
pw.println("mDataActivationState= " + mDataActivationState[i]);
pw.println("mUserMobileDataState= " + mUserMobileDataState[i]);
@@ -1763,6 +1851,8 @@
pw.println("mPreferredDataSubId=" + mPreferredDataSubId);
pw.println("mRadioPowerState=" + mRadioPowerState);
pw.println("mEmergencyNumberList=" + mEmergencyNumberList);
+ pw.println("mCallQuality=" + mCallQuality);
+ pw.println("mCallAttributes=" + mCallAttributes);
pw.decreaseIndent();
@@ -2020,6 +2110,11 @@
android.Manifest.permission.READ_PRECISE_PHONE_STATE, null);
}
+ if ((events & PhoneStateListener.LISTEN_CALL_ATTRIBUTES_CHANGED) != 0) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.READ_PRECISE_PHONE_STATE, null);
+ }
+
return true;
}
diff --git a/services/core/java/com/android/server/ZramWriteback.java b/services/core/java/com/android/server/ZramWriteback.java
new file mode 100644
index 0000000..3a4aff2
--- /dev/null
+++ b/services/core/java/com/android/server/ZramWriteback.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2019 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.server;
+
+import android.app.job.JobInfo;
+import android.app.job.JobParameters;
+import android.app.job.JobScheduler;
+import android.app.job.JobService;
+import android.content.ComponentName;
+import android.content.Context;
+import android.os.FileUtils;
+import android.os.SystemProperties;
+import android.util.Slog;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Schedules jobs for triggering zram writeback.
+ */
+public final class ZramWriteback extends JobService {
+ private static final String TAG = "ZramWriteback";
+ private static final boolean DEBUG = false;
+
+ private static final ComponentName sZramWriteback =
+ new ComponentName("android", ZramWriteback.class.getName());
+
+ private static final int MARK_IDLE_JOB_ID = 811;
+ private static final int WRITEBACK_IDLE_JOB_ID = 812;
+
+ private static final int MAX_ZRAM_DEVICES = 256;
+ private static int sZramDeviceId = 0;
+
+ private static final String IDLE_SYS = "/sys/block/zram%d/idle";
+ private static final String IDLE_SYS_ALL_PAGES = "all";
+
+ private static final String WB_SYS = "/sys/block/zram%d/writeback";
+ private static final String WB_SYS_IDLE_PAGES = "idle";
+
+ private static final String WB_STATS_SYS = "/sys/block/zram%d/bd_stat";
+ private static final int WB_STATS_MAX_FILE_SIZE = 128;
+
+ private static final String BDEV_SYS = "/sys/block/zram%d/backing_dev";
+
+ private static final String MARK_IDLE_DELAY_PROP = "ro.zram.mark_idle_delay_mins";
+ private static final String FIRST_WB_DELAY_PROP = "ro.zram.first_wb_delay_mins";
+ private static final String PERIODIC_WB_DELAY_PROP = "ro.zram.periodic_wb_delay_hours";
+
+ private void markPagesAsIdle() {
+ String idlePath = String.format(IDLE_SYS, sZramDeviceId);
+ try {
+ FileUtils.stringToFile(new File(idlePath), IDLE_SYS_ALL_PAGES);
+ } catch (IOException e) {
+ Slog.e(TAG, "Failed to write to " + idlePath);
+ }
+ }
+
+ private void flushIdlePages() {
+ if (DEBUG) Slog.d(TAG, "Start writing back idle pages to disk");
+ String wbPath = String.format(WB_SYS, sZramDeviceId);
+ try {
+ FileUtils.stringToFile(new File(wbPath), WB_SYS_IDLE_PAGES);
+ } catch (IOException e) {
+ Slog.e(TAG, "Failed to write to " + wbPath);
+ }
+ if (DEBUG) Slog.d(TAG, "Finished writeback back idle pages");
+ }
+
+ private int getWrittenPageCount() {
+ String wbStatsPath = String.format(WB_STATS_SYS, sZramDeviceId);
+ try {
+ String wbStats = FileUtils
+ .readTextFile(new File(wbStatsPath), WB_STATS_MAX_FILE_SIZE, "");
+ return Integer.parseInt(wbStats.trim().split("\\s+")[2], 10);
+ } catch (IOException e) {
+ Slog.e(TAG, "Failed to read writeback stats from " + wbStatsPath);
+ }
+
+ return -1;
+ }
+
+ private void markAndFlushPages() {
+ int pageCount = getWrittenPageCount();
+
+ flushIdlePages();
+ markPagesAsIdle();
+
+ if (pageCount != -1) {
+ Slog.i(TAG, "Total pages written to disk is " + (getWrittenPageCount() - pageCount));
+ }
+ }
+
+ private static boolean isWritebackEnabled() {
+ try {
+ String backingDev = FileUtils
+ .readTextFile(new File(String.format(BDEV_SYS, sZramDeviceId)), 128, "");
+ if (!"none".equals(backingDev.trim())) {
+ return true;
+ } else {
+ Slog.w(TAG, "Writeback device is not set");
+ }
+ } catch (IOException e) {
+ Slog.w(TAG, "Writeback is not enabled on zram");
+ }
+ return false;
+ }
+
+ private static void schedNextWriteback(Context context) {
+ int nextWbDelay = SystemProperties.getInt(PERIODIC_WB_DELAY_PROP, 24);
+ JobScheduler js = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+
+ js.schedule(new JobInfo.Builder(WRITEBACK_IDLE_JOB_ID, sZramWriteback)
+ .setMinimumLatency(TimeUnit.HOURS.toMillis(nextWbDelay))
+ .setRequiresDeviceIdle(true)
+ .build());
+ }
+
+ @Override
+ public boolean onStartJob(JobParameters params) {
+
+ if (!isWritebackEnabled()) {
+ jobFinished(params, false);
+ return false;
+ }
+
+ if (params.getJobId() == MARK_IDLE_JOB_ID) {
+ markPagesAsIdle();
+ jobFinished(params, false);
+ return false;
+ } else {
+ new Thread("ZramWriteback_WritebackIdlePages") {
+ @Override
+ public void run() {
+ markAndFlushPages();
+ schedNextWriteback(ZramWriteback.this);
+ jobFinished(params, false);
+ }
+ }.start();
+ }
+ return true;
+ }
+
+ @Override
+ public boolean onStopJob(JobParameters params) {
+ // The thread that triggers the writeback is non-interruptible
+ return false;
+ }
+
+ /**
+ * Schedule the zram writeback job to trigger a writeback when idle
+ */
+ public static void scheduleZramWriteback(Context context) {
+ int markIdleDelay = SystemProperties.getInt(MARK_IDLE_DELAY_PROP, 20);
+ int firstWbDelay = SystemProperties.getInt(FIRST_WB_DELAY_PROP, 180);
+
+ JobScheduler js = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+
+ // Schedule a one time job to mark pages as idle. These pages will be written
+ // back at later point if they remain untouched.
+ js.schedule(new JobInfo.Builder(MARK_IDLE_JOB_ID, sZramWriteback)
+ .setMinimumLatency(TimeUnit.MINUTES.toMillis(markIdleDelay))
+ .build());
+
+ // Schedule a one time job to flush idle pages to disk.
+ // After the initial writeback, subsequent writebacks are done at interval set
+ // by ro.zram.periodic_wb_delay_hours.
+ js.schedule(new JobInfo.Builder(WRITEBACK_IDLE_JOB_ID, sZramWriteback)
+ .setMinimumLatency(TimeUnit.MINUTES.toMillis(firstWbDelay))
+ .setRequiresDeviceIdle(true)
+ .build());
+ }
+}
diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java
index 1c04a94..dd2b33a 100644
--- a/services/core/java/com/android/server/am/ActivityManagerConstants.java
+++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java
@@ -70,6 +70,12 @@
static final String KEY_MEMORY_INFO_THROTTLE_TIME = "memory_info_throttle_time";
static final String KEY_TOP_TO_FGS_GRACE_DURATION = "top_to_fgs_grace_duration";
static final String KEY_USE_COMPACTION = "use_compaction";
+ static final String KEY_COMPACT_ACTION_1 = "compact_action_1";
+ static final String KEY_COMPACT_ACTION_2 = "compact_action_2";
+ static final String KEY_COMPACT_THROTTLE_1 = "compact_throttle_1";
+ static final String KEY_COMPACT_THROTTLE_2 = "compact_throttle_2";
+ static final String KEY_COMPACT_THROTTLE_3 = "compact_throttle_3";
+ static final String KEY_COMPACT_THROTTLE_4 = "compact_throttle_4";
private static final int DEFAULT_MAX_CACHED_PROCESSES = 32;
private static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60*1000;
@@ -101,6 +107,12 @@
private static final long DEFAULT_MEMORY_INFO_THROTTLE_TIME = 5*60*1000;
private static final long DEFAULT_TOP_TO_FGS_GRACE_DURATION = 15 * 1000;
private static final boolean DEFAULT_USE_COMPACTION = false;
+ public static final int DEFAULT_COMPACT_ACTION_1 = 1;
+ public static final int DEFAULT_COMPACT_ACTION_2 = 3;
+ public static final long DEFAULT_COMPACT_THROTTLE_1 = 5000;
+ public static final long DEFAULT_COMPACT_THROTTLE_2 = 10000;
+ public static final long DEFAULT_COMPACT_THROTTLE_3 = 500;
+ public static final long DEFAULT_COMPACT_THROTTLE_4 = 10000;
// Maximum number of cached processes we will allow.
public int MAX_CACHED_PROCESSES = DEFAULT_MAX_CACHED_PROCESSES;
@@ -223,6 +235,20 @@
// Use compaction for background apps.
public boolean USE_COMPACTION = DEFAULT_USE_COMPACTION;
+ // Action for compactAppSome.
+ public int COMPACT_ACTION_1 = DEFAULT_COMPACT_ACTION_1;
+ // Action for compactAppFull;
+ public int COMPACT_ACTION_2 = DEFAULT_COMPACT_ACTION_2;
+
+ // How long we'll skip second compactAppSome after first compactAppSome
+ public long COMPACT_THROTTLE_1 = DEFAULT_COMPACT_THROTTLE_1;
+ // How long we'll skip compactAppSome after compactAppFull
+ public long COMPACT_THROTTLE_2 = DEFAULT_COMPACT_THROTTLE_2;
+ // How long we'll skip compactAppFull after compactAppSome
+ public long COMPACT_THROTTLE_3 = DEFAULT_COMPACT_THROTTLE_3;
+ // How long we'll skip second compactAppFull after first compactAppFull
+ public long COMPACT_THROTTLE_4 = DEFAULT_COMPACT_THROTTLE_4;
+
// Indicates whether the activity starts logging is enabled.
// Controlled by Settings.Global.ACTIVITY_STARTS_LOGGING_ENABLED
volatile boolean mFlagActivityStartsLoggingEnabled;
@@ -381,6 +407,12 @@
TOP_TO_FGS_GRACE_DURATION = mParser.getDurationMillis(KEY_TOP_TO_FGS_GRACE_DURATION,
DEFAULT_TOP_TO_FGS_GRACE_DURATION);
USE_COMPACTION = mParser.getBoolean(KEY_USE_COMPACTION, DEFAULT_USE_COMPACTION);
+ COMPACT_ACTION_1 = mParser.getInt(KEY_COMPACT_ACTION_1, DEFAULT_COMPACT_ACTION_1);
+ COMPACT_ACTION_2 = mParser.getInt(KEY_COMPACT_ACTION_2, DEFAULT_COMPACT_ACTION_2);
+ COMPACT_THROTTLE_1 = mParser.getLong(KEY_COMPACT_THROTTLE_1, DEFAULT_COMPACT_THROTTLE_1);
+ COMPACT_THROTTLE_2 = mParser.getLong(KEY_COMPACT_THROTTLE_2, DEFAULT_COMPACT_THROTTLE_2);
+ COMPACT_THROTTLE_3 = mParser.getLong(KEY_COMPACT_THROTTLE_3, DEFAULT_COMPACT_THROTTLE_3);
+ COMPACT_THROTTLE_4 = mParser.getLong(KEY_COMPACT_THROTTLE_4, DEFAULT_COMPACT_THROTTLE_4);
updateMaxCachedProcesses();
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 3b08a00..089847d 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -32,6 +32,7 @@
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.pm.ApplicationInfo.HIDDEN_API_ENFORCEMENT_DEFAULT;
import static android.content.pm.PackageManager.GET_PROVIDERS;
+import static android.content.pm.PackageManager.MATCH_ALL;
import static android.content.pm.PackageManager.MATCH_ANY_USER;
import static android.content.pm.PackageManager.MATCH_DEBUG_TRIAGED_MISSING;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
@@ -318,7 +319,6 @@
import com.android.internal.util.function.QuadFunction;
import com.android.internal.util.function.TriFunction;
import com.android.server.AlarmManagerInternal;
-import com.android.server.appop.AppOpsService;
import com.android.server.AttributeCache;
import com.android.server.DeviceIdleController;
import com.android.server.DisplayThread;
@@ -337,6 +337,7 @@
import com.android.server.Watchdog;
import com.android.server.am.ActivityManagerServiceDumpProcessesProto.UidObserverRegistrationProto;
import com.android.server.am.MemoryStatUtil.MemoryStat;
+import com.android.server.appop.AppOpsService;
import com.android.server.firewall.IntentFirewall;
import com.android.server.job.JobSchedulerInternal;
import com.android.server.pm.Installer;
@@ -658,9 +659,47 @@
/**
* When an app has restrictions on the other apps that can have associations with it,
- * it appears here with a set of the allowed apps.
+ * it appears here with a set of the allowed apps and also track debuggability of the app.
*/
- ArrayMap<String, ArraySet<String>> mAllowedAssociations;
+ ArrayMap<String, PackageAssociationInfo> mAllowedAssociations;
+
+ /**
+ * Tracks association information for a particular package along with debuggability.
+ * <p> Associations for a package A are allowed to package B if B is part of the
+ * allowed associations for A or if A is debuggable.
+ */
+ private final class PackageAssociationInfo {
+ private final String mSourcePackage;
+ private final ArraySet<String> mAllowedPackageAssociations;
+ private boolean mIsDebuggable;
+
+ PackageAssociationInfo(String sourcePackage, ArraySet<String> allowedPackages,
+ boolean isDebuggable) {
+ mSourcePackage = sourcePackage;
+ mAllowedPackageAssociations = allowedPackages;
+ mIsDebuggable = isDebuggable;
+ }
+
+ /**
+ * Returns true if {@code mSourcePackage} is allowed association with
+ * {@code targetPackage}.
+ */
+ boolean isPackageAssociationAllowed(String targetPackage) {
+ return mIsDebuggable || mAllowedPackageAssociations.contains(targetPackage);
+ }
+
+ boolean isDebuggable() {
+ return mIsDebuggable;
+ }
+
+ void setDebuggable(boolean isDebuggable) {
+ mIsDebuggable = isDebuggable;
+ }
+
+ ArraySet<String> getAllowedPackageAssociations() {
+ return mAllowedPackageAssociations;
+ }
+ }
/**
* All of the processes we currently have running organized by pid.
@@ -920,8 +959,8 @@
/**
* Backup/restore process management
*/
- String mBackupAppName = null;
- BackupRecord mBackupTarget = null;
+ @GuardedBy("this")
+ final SparseArray<BackupRecord> mBackupTargets = new SparseArray<>();
final ProviderMap mProviderMap;
@@ -2392,12 +2431,10 @@
* If it does not, give it an empty set.
*/
void requireAllowedAssociationsLocked(String packageName) {
- if (mAllowedAssociations == null) {
- mAllowedAssociations = new ArrayMap<>(
- SystemConfig.getInstance().getAllowedAssociations());
- }
+ ensureAllowedAssociations();
if (mAllowedAssociations.get(packageName) == null) {
- mAllowedAssociations.put(packageName, new ArraySet<>());
+ mAllowedAssociations.put(packageName, new PackageAssociationInfo(packageName,
+ new ArraySet<>(), /* isDebuggable = */ false));
}
}
@@ -2408,10 +2445,7 @@
* association is implicitly allowed.
*/
boolean validateAssociationAllowedLocked(String pkg1, int uid1, String pkg2, int uid2) {
- if (mAllowedAssociations == null) {
- mAllowedAssociations = new ArrayMap<>(
- SystemConfig.getInstance().getAllowedAssociations());
- }
+ ensureAllowedAssociations();
// Interactions with the system uid are always allowed, since that is the core system
// that everyone needs to be able to interact with. Also allow reflexive associations
// within the same uid.
@@ -2419,24 +2453,57 @@
|| UserHandle.getAppId(uid2) == SYSTEM_UID) {
return true;
}
- // We won't allow this association if either pkg1 or pkg2 has a limit on the
- // associations that are allowed with it, and the other package is not explicitly
- // specified as one of those associations.
- ArraySet<String> pkgs = mAllowedAssociations.get(pkg1);
- if (pkgs != null) {
- if (!pkgs.contains(pkg2)) {
- return false;
- }
+
+ // Check for association on both source and target packages.
+ PackageAssociationInfo pai = mAllowedAssociations.get(pkg1);
+ if (pai != null && !pai.isPackageAssociationAllowed(pkg2)) {
+ return false;
}
- pkgs = mAllowedAssociations.get(pkg2);
- if (pkgs != null) {
- return pkgs.contains(pkg1);
+ pai = mAllowedAssociations.get(pkg2);
+ if (pai != null && !pai.isPackageAssociationAllowed(pkg1)) {
+ return false;
}
// If no explicit associations are provided in the manifest, then assume the app is
// allowed associations with any package.
return true;
}
+ /** Sets up allowed associations for system prebuilt packages from system config (if needed). */
+ private void ensureAllowedAssociations() {
+ if (mAllowedAssociations == null) {
+ ArrayMap<String, ArraySet<String>> allowedAssociations =
+ SystemConfig.getInstance().getAllowedAssociations();
+ mAllowedAssociations = new ArrayMap<>(allowedAssociations.size());
+ PackageManagerInternal pm = getPackageManagerInternalLocked();
+ for (int i = 0; i < allowedAssociations.size(); i++) {
+ final String pkg = allowedAssociations.keyAt(i);
+ final ArraySet<String> asc = allowedAssociations.valueAt(i);
+
+ // Query latest debuggable flag from package-manager.
+ boolean isDebuggable = false;
+ try {
+ ApplicationInfo ai = AppGlobals.getPackageManager()
+ .getApplicationInfo(pkg, MATCH_ALL, 0);
+ if (ai != null) {
+ isDebuggable = (ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
+ }
+ } catch (RemoteException e) {
+ /* ignore */
+ }
+ mAllowedAssociations.put(pkg, new PackageAssociationInfo(pkg, asc, isDebuggable));
+ }
+ }
+ }
+
+ /** Updates allowed associations for app info (specifically, based on debuggability). */
+ private void updateAssociationForApp(ApplicationInfo appInfo) {
+ ensureAllowedAssociations();
+ PackageAssociationInfo pai = mAllowedAssociations.get(appInfo.packageName);
+ if (pai != null) {
+ pai.setDebuggable((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0);
+ }
+ }
+
@Override
public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
throws RemoteException {
@@ -4365,6 +4432,7 @@
mProcessList.removeProcessLocked(app, false, true, "timeout publishing content providers");
}
+ @GuardedBy("this")
private final void processStartTimedOutLocked(ProcessRecord app) {
final int pid = app.pid;
boolean gone = mPidsSelfLocked.removeIfNoThread(pid);
@@ -4385,7 +4453,8 @@
mBatteryStatsService.removeIsolatedUid(app.uid, app.info.uid);
}
removeLruProcessLocked(app);
- if (mBackupTarget != null && mBackupTarget.app.pid == pid) {
+ final BackupRecord backupTarget = mBackupTargets.get(app.userId);
+ if (backupTarget != null && backupTarget.app.pid == pid) {
Slog.w(TAG, "Unattached app died before backup, skipping");
mHandler.post(new Runnable() {
@Override
@@ -4393,7 +4462,7 @@
try {
IBackupManager bm = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE));
- bm.agentDisconnected(app.info.packageName);
+ bm.agentDisconnectedForUser(app.userId, app.info.packageName);
} catch (RemoteException e) {
// Can't happen; the backup manager is local
}
@@ -4516,6 +4585,7 @@
if (DEBUG_ALL) Slog.v(
TAG, "New app record " + app
+ " thread=" + thread.asBinder() + " pid=" + pid);
+ final BackupRecord backupTarget = mBackupTargets.get(app.userId);
try {
int testMode = ApplicationThreadConstants.DEBUG_OFF;
if (mDebugApp != null && mDebugApp.equals(processName)) {
@@ -4537,11 +4607,11 @@
// If the app is being launched for restore or full backup, set it up specially
boolean isRestrictedBackupMode = false;
- if (mBackupTarget != null && mBackupAppName.equals(processName)) {
- isRestrictedBackupMode = mBackupTarget.appInfo.uid >= FIRST_APPLICATION_UID
- && ((mBackupTarget.backupMode == BackupRecord.RESTORE)
- || (mBackupTarget.backupMode == BackupRecord.RESTORE_FULL)
- || (mBackupTarget.backupMode == BackupRecord.BACKUP_FULL));
+ if (backupTarget != null && backupTarget.appInfo.packageName.equals(processName)) {
+ isRestrictedBackupMode = backupTarget.appInfo.uid >= FIRST_APPLICATION_UID
+ && ((backupTarget.backupMode == BackupRecord.RESTORE)
+ || (backupTarget.backupMode == BackupRecord.RESTORE_FULL)
+ || (backupTarget.backupMode == BackupRecord.BACKUP_FULL));
}
final ActiveInstrumentation instr = app.getActiveInstrumentation();
@@ -4749,15 +4819,15 @@
}
// Check whether the next backup agent is in this process...
- if (!badApp && mBackupTarget != null && mBackupTarget.app == app) {
+ if (!badApp && backupTarget != null && backupTarget.app == app) {
if (DEBUG_BACKUP) Slog.v(TAG_BACKUP,
"New app is backup target, launching agent for " + app);
- notifyPackageUse(mBackupTarget.appInfo.packageName,
+ notifyPackageUse(backupTarget.appInfo.packageName,
PackageManager.NOTIFY_PACKAGE_USE_BACKUP);
try {
- thread.scheduleCreateBackupAgent(mBackupTarget.appInfo,
- compatibilityInfoForPackage(mBackupTarget.appInfo),
- mBackupTarget.backupMode);
+ thread.scheduleCreateBackupAgent(backupTarget.appInfo,
+ compatibilityInfoForPackage(backupTarget.appInfo),
+ backupTarget.backupMode);
} catch (Exception e) {
Slog.wtf(TAG, "Exception thrown creating backup agent in " + app, e);
badApp = true;
@@ -10625,7 +10695,6 @@
ProtoUtils.toDuration(proto, ActivityManagerServiceDumpProcessesProto.LAST_IDLE_TIME, mLastIdleTime, now);
proto.write(ActivityManagerServiceDumpProcessesProto.LOW_RAM_SINCE_LAST_IDLE_MS, getLowRamTimeSinceIdle(now));
}
-
}
void writeProcessesToGcToProto(ProtoOutputStream proto, long fieldId, String dumpPackage) {
@@ -10907,14 +10976,14 @@
void dumpAllowedAssociationsLocked(FileDescriptor fd, PrintWriter pw, String[] args,
int opti, boolean dumpAll, String dumpPackage) {
boolean needSep = false;
- boolean printedAnything = false;
pw.println("ACTIVITY MANAGER ALLOWED ASSOCIATION STATE (dumpsys activity allowed-associations)");
boolean printed = false;
if (mAllowedAssociations != null) {
for (int i = 0; i < mAllowedAssociations.size(); i++) {
final String pkg = mAllowedAssociations.keyAt(i);
- final ArraySet<String> asc = mAllowedAssociations.valueAt(i);
+ final ArraySet<String> asc =
+ mAllowedAssociations.valueAt(i).getAllowedPackageAssociations();
boolean printedHeader = false;
for (int j = 0; j < asc.size(); j++) {
if (dumpPackage == null || pkg.equals(dumpPackage)
@@ -10923,7 +10992,6 @@
pw.println(" Allowed associations (by restricted package):");
printed = true;
needSep = true;
- printedAnything = true;
}
if (!printedHeader) {
pw.print(" * ");
@@ -10935,6 +11003,9 @@
pw.println(asc.valueAt(j));
}
}
+ if (mAllowedAssociations.valueAt(i).isDebuggable()) {
+ pw.println(" (debuggable)");
+ }
}
}
if (!printed) {
@@ -13224,16 +13295,17 @@
app.receivers.clear();
// If the app is undergoing backup, tell the backup manager about it
- if (mBackupTarget != null && app.pid == mBackupTarget.app.pid) {
+ final BackupRecord backupTarget = mBackupTargets.get(app.userId);
+ if (backupTarget != null && app.pid == backupTarget.app.pid) {
if (DEBUG_BACKUP || DEBUG_CLEANUP) Slog.d(TAG_CLEANUP, "App "
- + mBackupTarget.appInfo + " died during backup");
+ + backupTarget.appInfo + " died during backup");
mHandler.post(new Runnable() {
@Override
public void run(){
try {
IBackupManager bm = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE));
- bm.agentDisconnected(app.info.packageName);
+ bm.agentDisconnectedForUser(app.userId, app.info.packageName);
} catch (RemoteException e) {
// can't happen; backup manager is local
}
@@ -13573,7 +13645,11 @@
// instantiated. The backup agent will invoke backupAgentCreated() on the
// activity manager to announce its creation.
public boolean bindBackupAgent(String packageName, int backupMode, int userId) {
- if (DEBUG_BACKUP) Slog.v(TAG, "bindBackupAgent: app=" + packageName + " mode=" + backupMode);
+ if (DEBUG_BACKUP) {
+ Slog.v(TAG, "bindBackupAgent: app=" + packageName + " mode="
+ + backupMode + " userId=" + userId + " callingUid = " + Binder.getCallingUid()
+ + " uid = " + Process.myUid());
+ }
enforceCallingPermission("android.permission.CONFIRM_FULL_BACKUP", "bindBackupAgent");
IPackageManager pm = AppGlobals.getPackageManager();
@@ -13625,10 +13701,10 @@
proc.inFullBackup = true;
}
r.app = proc;
- oldBackupUid = mBackupTarget != null ? mBackupTarget.appInfo.uid : -1;
+ final BackupRecord backupTarget = mBackupTargets.get(userId);
+ oldBackupUid = backupTarget != null ? backupTarget.appInfo.uid : -1;
newBackupUid = proc.inFullBackup ? r.appInfo.uid : -1;
- mBackupTarget = r;
- mBackupAppName = app.packageName;
+ mBackupTargets.put(userId, r);
// Try not to kill the process during backup
updateOomAdjLocked(proc, true);
@@ -13663,14 +13739,14 @@
return true;
}
- @Override
- public void clearPendingBackup() {
- if (DEBUG_BACKUP) Slog.v(TAG_BACKUP, "clearPendingBackup");
- enforceCallingPermission("android.permission.BACKUP", "clearPendingBackup");
+ private void clearPendingBackup(int userId) {
+ if (DEBUG_BACKUP) {
+ Slog.v(TAG_BACKUP, "clearPendingBackup: userId = " + userId + " callingUid = "
+ + Binder.getCallingUid() + " uid = " + Process.myUid());
+ }
synchronized (this) {
- mBackupTarget = null;
- mBackupAppName = null;
+ mBackupTargets.delete(userId);
}
JobSchedulerInternal js = LocalServices.getService(JobSchedulerInternal.class);
@@ -13678,12 +13754,19 @@
}
// A backup agent has just come up
+ @Override
public void backupAgentCreated(String agentPackageName, IBinder agent) {
- if (DEBUG_BACKUP) Slog.v(TAG_BACKUP, "backupAgentCreated: " + agentPackageName
- + " = " + agent);
+ final int callingUserId = UserHandle.getCallingUserId();
+ if (DEBUG_BACKUP) {
+ Slog.v(TAG_BACKUP, "backupAgentCreated: " + agentPackageName + " = " + agent
+ + " callingUserId = " + callingUserId + " callingUid = "
+ + Binder.getCallingUid() + " uid = " + Process.myUid());
+ }
synchronized(this) {
- if (!agentPackageName.equals(mBackupAppName)) {
+ final BackupRecord backupTarget = mBackupTargets.get(callingUserId);
+ String backupAppName = backupTarget == null ? null : backupTarget.appInfo.packageName;
+ if (!agentPackageName.equals(backupAppName)) {
Slog.e(TAG, "Backup agent created for " + agentPackageName + " but not requested!");
return;
}
@@ -13693,7 +13776,7 @@
try {
IBackupManager bm = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE));
- bm.agentConnected(agentPackageName, agent);
+ bm.agentConnectedForUser(callingUserId, agentPackageName, agent);
} catch (RemoteException e) {
// can't happen; the backup manager service is local
} catch (Exception e) {
@@ -13706,7 +13789,12 @@
// done with this agent
public void unbindBackupAgent(ApplicationInfo appInfo) {
- if (DEBUG_BACKUP) Slog.v(TAG_BACKUP, "unbindBackupAgent: " + appInfo);
+ if (DEBUG_BACKUP) {
+ Slog.v(TAG_BACKUP, "unbindBackupAgent: " + appInfo + " appInfo.uid = "
+ + appInfo.uid + " callingUid = " + Binder.getCallingUid() + " uid = "
+ + Process.myUid());
+ }
+
enforceCallingPermission("android.permission.CONFIRM_FULL_BACKUP", "unbindBackupAgent");
if (appInfo == null) {
Slog.w(TAG, "unbind backup agent for null app");
@@ -13715,24 +13803,27 @@
int oldBackupUid;
+ final int userId = UserHandle.getUserId(appInfo.uid);
synchronized(this) {
+ final BackupRecord backupTarget = mBackupTargets.get(userId);
+ String backupAppName = backupTarget == null ? null : backupTarget.appInfo.packageName;
try {
- if (mBackupAppName == null) {
+ if (backupAppName == null) {
Slog.w(TAG, "Unbinding backup agent with no active backup");
return;
}
- if (!mBackupAppName.equals(appInfo.packageName)) {
+ if (!backupAppName.equals(appInfo.packageName)) {
Slog.e(TAG, "Unbind of " + appInfo + " but is not the current backup target");
return;
}
// Not backing this app up any more; reset its OOM adjustment
- final ProcessRecord proc = mBackupTarget.app;
+ final ProcessRecord proc = backupTarget.app;
updateOomAdjLocked(proc, true);
proc.inFullBackup = false;
- oldBackupUid = mBackupTarget != null ? mBackupTarget.appInfo.uid : -1;
+ oldBackupUid = backupTarget != null ? backupTarget.appInfo.uid : -1;
// If the app crashed during backup, 'thread' will be null here
if (proc.thread != null) {
@@ -13745,8 +13836,7 @@
}
}
} finally {
- mBackupTarget = null;
- mBackupAppName = null;
+ mBackupTargets.delete(userId);
}
}
@@ -14497,6 +14587,7 @@
+ " ssp=" + ssp + " data=" + data);
return ActivityManager.BROADCAST_SUCCESS;
}
+ updateAssociationForApp(aInfo);
mAtmInternal.onPackageReplaced(aInfo);
mServices.updateServiceApplicationInfoLocked(aInfo);
sendPackageBroadcastLocked(ApplicationThreadConstants.PACKAGE_REPLACED,
@@ -17771,6 +17862,20 @@
public boolean isAppForeground(int uid) {
return ActivityManagerService.this.isAppForeground(uid);
}
+
+ @Override
+ public void clearPendingBackup(int userId) {
+ ActivityManagerService.this.clearPendingBackup(userId);
+ }
+
+ /**
+ * When power button is very long pressed, call this interface to do some pre-shutdown work
+ * like persisting database etc.
+ */
+ @Override
+ public void prepareForPossibleShutdown() {
+ ActivityManagerService.this.prepareForPossibleShutdown();
+ }
}
long inputDispatchingTimedOut(int pid, final boolean aboveSystem, String reason) {
@@ -18027,6 +18132,18 @@
}
}
+ /**
+ * When power button is very long pressed, call this interface to do some pre-shutdown work
+ * like persisting database etc.
+ */
+ public void prepareForPossibleShutdown() {
+ synchronized (this) {
+ if (mUsageStatsService != null) {
+ mUsageStatsService.prepareForPossibleShutdown();
+ }
+ }
+ }
+
@VisibleForTesting
public static class Injector {
private NetworkManagementInternal mNmi;
diff --git a/services/core/java/com/android/server/am/AppCompactor.java b/services/core/java/com/android/server/am/AppCompactor.java
index aee16c3..fe27c49 100644
--- a/services/core/java/com/android/server/am/AppCompactor.java
+++ b/services/core/java/com/android/server/am/AppCompactor.java
@@ -44,7 +44,11 @@
*/
final ArrayList<ProcessRecord> mPendingCompactionProcesses = new ArrayList<ProcessRecord>();
- /*
+ static final int COMPACT_PROCESS_SOME = 1;
+ static final int COMPACT_PROCESS_FULL = 2;
+ static final int COMPACT_PROCESS_MSG = 1;
+
+ /**
* This thread must be moved to the system background cpuset.
* If that doesn't happen, it's probably going to draw a lot of power.
* However, this has to happen after the first updateOomAdjLocked, because
@@ -53,13 +57,22 @@
*/
final ServiceThread mCompactionThread;
- static final int COMPACT_PROCESS_SOME = 1;
- static final int COMPACT_PROCESS_FULL = 2;
- static final int COMPACT_PROCESS_MSG = 1;
- final Handler mCompactionHandler;
+ final private Handler mCompactionHandler;
- final ActivityManagerService mAm;
- final ActivityManagerConstants mConstants;
+ final private ActivityManagerService mAm;
+ final private ActivityManagerConstants mConstants;
+
+ final private String COMPACT_ACTION_FILE = "file";
+ final private String COMPACT_ACTION_ANON = "anon";
+ final private String COMPACT_ACTION_FULL = "full";
+
+ final private String compactActionSome;
+ final private String compactActionFull;
+
+ final private long throttleSomeSome;
+ final private long throttleSomeFull;
+ final private long throttleFullSome;
+ final private long throttleFullFull;
public AppCompactor(ActivityManagerService am) {
mAm = am;
@@ -69,6 +82,41 @@
THREAD_PRIORITY_FOREGROUND, true);
mCompactionThread.start();
mCompactionHandler = new MemCompactionHandler(this);
+
+ switch(mConstants.COMPACT_ACTION_1) {
+ case 1:
+ compactActionSome = COMPACT_ACTION_FILE;
+ break;
+ case 2:
+ compactActionSome = COMPACT_ACTION_ANON;
+ break;
+ case 3:
+ compactActionSome = COMPACT_ACTION_FULL;
+ break;
+ default:
+ compactActionSome = COMPACT_ACTION_FILE;
+ break;
+ }
+
+ switch(mConstants.COMPACT_ACTION_2) {
+ case 1:
+ compactActionFull = COMPACT_ACTION_FILE;
+ break;
+ case 2:
+ compactActionFull = COMPACT_ACTION_ANON;
+ break;
+ case 3:
+ compactActionFull = COMPACT_ACTION_FULL;
+ break;
+ default:
+ compactActionFull = COMPACT_ACTION_FULL;
+ break;
+ }
+
+ throttleSomeSome = mConstants.COMPACT_THROTTLE_1;
+ throttleSomeFull = mConstants.COMPACT_THROTTLE_2;
+ throttleFullSome = mConstants.COMPACT_THROTTLE_3;
+ throttleFullFull = mConstants.COMPACT_THROTTLE_4;
}
// Must be called while holding AMS lock.
@@ -128,18 +176,16 @@
}
// basic throttling
+ // use the ActivityManagerConstants knobs to determine whether current/prevous
+ // compaction combo should be throtted or not
if (pendingAction == COMPACT_PROCESS_SOME) {
- // if we're compacting some, then compact if >10s after last full
- // or >5s after last some
- if ((lastCompactAction == COMPACT_PROCESS_SOME && (start - lastCompactTime < 5000)) ||
- (lastCompactAction == COMPACT_PROCESS_FULL && (start - lastCompactTime < 10000))) {
+ if ((lastCompactAction == COMPACT_PROCESS_SOME && (start - lastCompactTime < throttleSomeSome)) ||
+ (lastCompactAction == COMPACT_PROCESS_FULL && (start - lastCompactTime < throttleSomeFull))) {
return;
}
} else {
- // if we're compacting full, then compact if >10s after last full
- // or >.5s after last some
- if ((lastCompactAction == COMPACT_PROCESS_SOME && (start - lastCompactTime < 500)) ||
- (lastCompactAction == COMPACT_PROCESS_FULL && (start - lastCompactTime < 10000))) {
+ if ((lastCompactAction == COMPACT_PROCESS_SOME && (start - lastCompactTime < throttleFullSome)) ||
+ (lastCompactAction == COMPACT_PROCESS_FULL && (start - lastCompactTime < throttleFullFull))) {
return;
}
}
@@ -151,9 +197,9 @@
long[] rssBefore = Process.getRss(pid);
FileOutputStream fos = new FileOutputStream("/proc/" + pid + "/reclaim");
if (pendingAction == COMPACT_PROCESS_SOME) {
- action = "file";
+ action = compactActionSome;
} else {
- action = "all";
+ action = compactActionFull;
}
fos.write(action.getBytes());
fos.close();
diff --git a/services/core/java/com/android/server/am/CoreSettingsObserver.java b/services/core/java/com/android/server/am/CoreSettingsObserver.java
index d7cb2bd..d3953b5 100644
--- a/services/core/java/com/android/server/am/CoreSettingsObserver.java
+++ b/services/core/java/com/android/server/am/CoreSettingsObserver.java
@@ -67,9 +67,10 @@
sGlobalSettingToTypeMap.put(Settings.Global.GPU_DEBUG_LAYERS_GLES, String.class);
sGlobalSettingToTypeMap.put(Settings.Global.GPU_DEBUG_LAYER_APP, String.class);
sGlobalSettingToTypeMap.put(Settings.Global.SMS_ACCESS_RESTRICTION_ENABLED, int.class);
+ sGlobalSettingToTypeMap.put(Settings.Global.GUP_DEV_ALL_APPS, int.class);
sGlobalSettingToTypeMap.put(Settings.Global.GUP_DEV_OPT_IN_APPS, String.class);
sGlobalSettingToTypeMap.put(Settings.Global.GUP_DEV_OPT_OUT_APPS, String.class);
- sGlobalSettingToTypeMap.put(Settings.Global.GUP_BLACK_LIST, String.class);
+ sGlobalSettingToTypeMap.put(Settings.Global.GUP_BLACKLIST, String.class);
// add other global settings here...
}
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index cb4cac9..dc03369 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -132,8 +132,11 @@
mActiveUids = activeUids;
mLocalPowerManager = LocalServices.getService(PowerManagerInternal.class);
- mAppCompact = new AppCompactor(mService);
mConstants = mService.mConstants;
+ // mConstants can be null under test, which causes AppCompactor to crash
+ if (mConstants != null) {
+ mAppCompact = new AppCompactor(mService);
+ }
}
/**
@@ -1024,7 +1027,8 @@
app.hasStartedServices = false;
app.adjSeq = mAdjSeq;
- if (mService.mBackupTarget != null && app == mService.mBackupTarget.app) {
+ final BackupRecord backupTarget = mService.mBackupTargets.get(app.userId);
+ if (backupTarget != null && app == backupTarget.app) {
// If possible we want to avoid killing apps while they're being backed up
if (adj > ProcessList.BACKUP_APP_ADJ) {
if (DEBUG_BACKUP) Slog.v(TAG_BACKUP, "oom BACKUP_APP_ADJ for " + app);
diff --git a/services/core/java/com/android/server/am/PendingIntentRecord.java b/services/core/java/com/android/server/am/PendingIntentRecord.java
index 98c9ad6..55cca95 100644
--- a/services/core/java/com/android/server/am/PendingIntentRecord.java
+++ b/services/core/java/com/android/server/am/PendingIntentRecord.java
@@ -389,8 +389,9 @@
if (key.allIntents != null && key.allIntents.length > 1) {
res = controller.mAtmInternal.startActivitiesInPackage(
- uid, key.packageName, allIntents, allResolvedTypes, resultTo,
- mergedOptions, userId, false /* validateIncomingUser */,
+ uid, callingPid, callingUid, key.packageName, allIntents,
+ allResolvedTypes, resultTo, mergedOptions, userId,
+ false /* validateIncomingUser */,
this /* originatingPendingIntent */,
mAllowBgActivityStartsForActivitySender.contains(whitelistToken));
} else {
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index 5bc8845..c1be387 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -1678,12 +1678,14 @@
AppZygote appZygote = mAppZygotes.get(app.info.processName, app.info.uid);
final ArrayList<ProcessRecord> zygoteProcessList;
if (appZygote == null) {
- final int userId = UserHandle.getUserId(app.info.uid);
final IsolatedUidRange uidRange =
mAppIsolatedUidRangeAllocator.getIsolatedUidRangeLocked(app.info);
- // Allocate an isolated UID out of this range for the Zygote itself
- final int zygoteIsolatedUid = uidRange.allocateIsolatedUidLocked(userId);
- appZygote = new AppZygote(app.info, zygoteIsolatedUid);
+ final int userId = UserHandle.getUserId(app.info.uid);
+ // Create the app-zygote and provide it with the UID-range it's allowed
+ // to setresuid/setresgid to.
+ final int firstUid = UserHandle.getUid(userId, uidRange.mFirstUid);
+ final int lastUid = UserHandle.getUid(userId, uidRange.mLastUid);
+ appZygote = new AppZygote(app.info, app.info.uid, firstUid, lastUid);
mAppZygotes.put(app.info.processName, app.info.uid, appZygote);
zygoteProcessList = new ArrayList<ProcessRecord>();
mAppZygoteProcesses.put(appZygote, zygoteProcessList);
diff --git a/services/core/java/com/android/server/appop/HistoricalRegistry.java b/services/core/java/com/android/server/appop/HistoricalRegistry.java
index 8d7811f..714a807 100644
--- a/services/core/java/com/android/server/appop/HistoricalRegistry.java
+++ b/services/core/java/com/android/server/appop/HistoricalRegistry.java
@@ -1454,8 +1454,8 @@
if (accessCount > 0) {
if (!printedUidState) {
mWriter.print(mUidStatePrefix);
- mWriter.print(AppOpsManager.uidStateToString(uidState));
- mWriter.print("[");
+ mWriter.print(AppOpsService.UID_STATE_NAMES[uidState]);
+ mWriter.print(" = ");
printedUidState = true;
}
mWriter.print("access=");
@@ -1465,11 +1465,11 @@
if (rejectCount > 0) {
if (!printedUidState) {
mWriter.print(mUidStatePrefix);
- mWriter.print(AppOpsManager.uidStateToString(uidState));
- mWriter.print("[");
+ mWriter.print(AppOpsService.UID_STATE_NAMES[uidState]);
+ mWriter.print(" = ");
printedUidState = true;
} else {
- mWriter.print(",");
+ mWriter.print(", ");
}
mWriter.print("reject=");
mWriter.print(rejectCount);
@@ -1478,16 +1478,17 @@
if (accessDuration > 0) {
if (!printedUidState) {
mWriter.print(mUidStatePrefix);
- mWriter.print(AppOpsManager.uidStateToString(uidState));
+ mWriter.print(AppOpsService.UID_STATE_NAMES[uidState]);
+ mWriter.print(" = ");
printedUidState = true;
} else {
- mWriter.print(",");
+ mWriter.print(", ");
}
mWriter.print("duration=");
- mWriter.print(accessDuration);
+ TimeUtils.formatDuration(accessDuration, mWriter);
}
if (printedUidState) {
- mWriter.println("]");
+ mWriter.println("");
}
}
}
diff --git a/services/core/java/com/android/server/attention/AttentionManagerService.java b/services/core/java/com/android/server/attention/AttentionManagerService.java
new file mode 100644
index 0000000..f60d6b0
--- /dev/null
+++ b/services/core/java/com/android/server/attention/AttentionManagerService.java
@@ -0,0 +1,548 @@
+/*
+ * Copyright (C) 2019 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.server.attention;
+
+import android.Manifest;
+import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.app.ActivityManager;
+import android.attention.AttentionManagerInternal;
+import android.attention.AttentionManagerInternal.AttentionCallbackInternal;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.ServiceConnection;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.os.Binder;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.Message;
+import android.os.PowerManager;
+import android.os.RemoteException;
+import android.os.SystemClock;
+import android.os.UserHandle;
+import android.service.attention.AttentionService;
+import android.service.attention.AttentionService.AttentionFailureCodes;
+import android.service.attention.IAttentionCallback;
+import android.service.attention.IAttentionService;
+import android.text.TextUtils;
+import android.util.Slog;
+import android.util.SparseArray;
+
+import com.android.internal.R;
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.DumpUtils;
+import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.Preconditions;
+import com.android.server.SystemService;
+
+import java.io.PrintWriter;
+
+/**
+ * An attention service implementation that runs in System Server process.
+ * This service publishes a LocalService and reroutes calls to a {@link AttentionService} that it
+ * manages.
+ */
+public class AttentionManagerService extends SystemService {
+ private static final String LOG_TAG = "AttentionManagerService";
+
+ /** Service will unbind if connection is not used for that amount of time. */
+ private static final long CONNECTION_TTL_MILLIS = 60_000;
+
+ /** If the check attention called within that period - cached value will be returned. */
+ private static final long STALE_AFTER_MILLIS = 5_000;
+
+ private final Context mContext;
+ private final PowerManager mPowerManager;
+ private final ActivityManager mActivityManager;
+ private final Object mLock;
+ @GuardedBy("mLock")
+ private final SparseArray<UserState> mUserStates = new SparseArray<>();
+ private final AttentionHandler mAttentionHandler;
+
+ private ComponentName mComponentName;
+
+ public AttentionManagerService(Context context) {
+ super(context);
+ mContext = Preconditions.checkNotNull(context);
+ mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+ mLock = new Object();
+ mAttentionHandler = new AttentionHandler();
+ }
+
+ @Override
+ public void onStart() {
+ publishLocalService(AttentionManagerInternal.class, new LocalService());
+ }
+
+ @Override
+ public void onStopUser(int userId) {
+ cancelAndUnbindLocked(peekUserStateLocked(userId),
+ AttentionService.ATTENTION_FAILURE_UNKNOWN);
+ }
+
+ @Override
+ public void onBootPhase(int phase) {
+ super.onBootPhase(phase);
+ if (phase == SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) {
+ mComponentName = resolveAttentionService(mContext);
+ if (mComponentName != null) {
+ // If the service is supported we want to keep receiving the screen off events.
+ mContext.registerReceiver(new ScreenStateReceiver(),
+ new IntentFilter(Intent.ACTION_SCREEN_OFF));
+ }
+ }
+ }
+
+ /**
+ * Returns {@code true} if attention service is supported on this device.
+ */
+ public boolean isAttentionServiceSupported() {
+ return mComponentName != null;
+ }
+
+ /**
+ * Checks whether user attention is at the screen and calls in the provided callback.
+ *
+ * @return {@code true} if the framework was able to send the provided callback to the service
+ */
+ public boolean checkAttention(int requestCode, long timeout,
+ AttentionCallbackInternal callback) {
+ Preconditions.checkNotNull(callback);
+
+ if (!isAttentionServiceSupported()) {
+ Slog.w(LOG_TAG, "Trying to call checkAttention() on an unsupported device.");
+ return false;
+ }
+
+ // don't allow attention check in screen off state
+ if (!mPowerManager.isInteractive()) {
+ return false;
+ }
+
+ synchronized (mLock) {
+ unbindAfterTimeoutLocked();
+
+ final UserState userState = getOrCreateCurrentUserStateLocked();
+ // lazily start the service, which should be very lightweight to start
+ if (!userState.bindLocked()) {
+ return false;
+ }
+
+ if (userState.mService == null) {
+ // make sure every callback is called back
+ if (userState.mPendingAttentionCheck != null) {
+ userState.mPendingAttentionCheck.cancel(
+ AttentionService.ATTENTION_FAILURE_UNKNOWN);
+ }
+ userState.mPendingAttentionCheck = new PendingAttentionCheck(requestCode,
+ callback, () -> checkAttention(requestCode, timeout, callback));
+ } else {
+ try {
+ // throttle frequent requests
+ final AttentionCheckCache attentionCheckCache = userState.mAttentionCheckCache;
+ if (attentionCheckCache != null && SystemClock.uptimeMillis()
+ < attentionCheckCache.mLastComputed + STALE_AFTER_MILLIS) {
+ callback.onSuccess(requestCode, attentionCheckCache.mResult,
+ attentionCheckCache.mTimestamp);
+ return true;
+ }
+
+ cancelAfterTimeoutLocked(timeout);
+
+ userState.mCurrentAttentionCheckRequestCode = requestCode;
+ userState.mService.checkAttention(requestCode, new IAttentionCallback.Stub() {
+ @Override
+ public void onSuccess(int requestCode, int result, long timestamp) {
+ callback.onSuccess(requestCode, result, timestamp);
+ userState.mAttentionCheckCache = new AttentionCheckCache(
+ SystemClock.uptimeMillis(), result,
+ timestamp);
+ }
+
+ @Override
+ public void onFailure(int requestCode, int error) {
+ callback.onFailure(requestCode, error);
+ }
+
+ @Override
+ public IBinder asBinder() {
+ return null;
+ }
+ });
+ } catch (RemoteException e) {
+ Slog.e(LOG_TAG, "Cannot call into the AttentionService");
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+
+ /** Cancels the specified attention check. */
+ public void cancelAttentionCheck(int requestCode) {
+ final UserState userState = getOrCreateCurrentUserStateLocked();
+ try {
+ userState.mService.cancelAttentionCheck(requestCode);
+ } catch (RemoteException e) {
+ Slog.e(LOG_TAG, "Cannot call into the AttentionService");
+ }
+ }
+
+ @GuardedBy("mLock")
+ private void unbindAfterTimeoutLocked() {
+ mAttentionHandler.sendEmptyMessageDelayed(AttentionHandler.CONNECTION_EXPIRED,
+ CONNECTION_TTL_MILLIS);
+ }
+
+ @GuardedBy("mLock")
+ private void cancelAfterTimeoutLocked(long timeout) {
+ mAttentionHandler.sendEmptyMessageDelayed(AttentionHandler.ATTENTION_CHECK_TIMEOUT,
+ timeout);
+ }
+
+
+ @GuardedBy("mLock")
+ private UserState getOrCreateCurrentUserStateLocked() {
+ return getOrCreateUserStateLocked(mActivityManager.getCurrentUser());
+ }
+
+ @GuardedBy("mLock")
+ private UserState getOrCreateUserStateLocked(int userId) {
+ UserState result = mUserStates.get(userId);
+ if (result == null) {
+ result = new UserState(userId, mContext, mLock);
+ mUserStates.put(userId, result);
+ }
+ return result;
+ }
+
+ @GuardedBy("mLock")
+ UserState peekCurrentUserStateLocked() {
+ return peekUserStateLocked(mActivityManager.getCurrentUser());
+ }
+
+ @GuardedBy("mLock")
+ UserState peekUserStateLocked(int userId) {
+ return mUserStates.get(userId);
+ }
+
+ /**
+ * Provides attention service component name at runtime, making sure it's provided by the
+ * system.
+ */
+ private static ComponentName resolveAttentionService(Context context) {
+ // TODO(b/111939367): add a flag to turn on/off.
+ final String componentNameString = context.getString(
+ R.string.config_defaultAttentionService);
+
+ if (TextUtils.isEmpty(componentNameString)) {
+ return null;
+ }
+
+ final ComponentName componentName = ComponentName.unflattenFromString(componentNameString);
+ if (componentName == null) {
+ return null;
+ }
+
+ final Intent intent = new Intent(AttentionService.SERVICE_INTERFACE).setPackage(
+ componentName.getPackageName());
+
+ // Make sure that only system apps can declare the AttentionService.
+ final ResolveInfo resolveInfo = context.getPackageManager().resolveService(intent,
+ PackageManager.MATCH_SYSTEM_ONLY);
+ if (resolveInfo == null || resolveInfo.serviceInfo == null) {
+ Slog.wtf(LOG_TAG, String.format("Service %s not found in package %s",
+ AttentionService.SERVICE_INTERFACE, componentName
+ ));
+ return null;
+ }
+
+ final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+ final String permission = serviceInfo.permission;
+ if (Manifest.permission.BIND_ATTENTION_SERVICE.equals(permission)) {
+ return serviceInfo.getComponentName();
+ }
+ Slog.e(LOG_TAG, String.format(
+ "Service %s should require %s permission. Found %s permission",
+ serviceInfo.getComponentName(),
+ Manifest.permission.BIND_ATTENTION_SERVICE,
+ serviceInfo.permission));
+ return null;
+ }
+
+ private void dumpInternal(PrintWriter pw) {
+ if (!DumpUtils.checkDumpPermission(mContext, LOG_TAG, pw)) return;
+ IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
+ ipw.println("Attention Manager Service (dumpsys attention)\n");
+
+ ipw.printPair("context", mContext);
+ pw.println();
+ synchronized (mLock) {
+ int size = mUserStates.size();
+ ipw.print("Number user states: ");
+ pw.println(size);
+ if (size > 0) {
+ ipw.increaseIndent();
+ for (int i = 0; i < size; i++) {
+ UserState userState = mUserStates.valueAt(i);
+ ipw.print(i);
+ ipw.print(":");
+ userState.dump(ipw);
+ ipw.println();
+ }
+ ipw.decreaseIndent();
+ }
+ }
+ }
+
+ private final class LocalService extends AttentionManagerInternal {
+ @Override
+ public boolean isAttentionServiceSupported() {
+ return AttentionManagerService.this.isAttentionServiceSupported();
+ }
+
+ @Override
+ public boolean checkAttention(int requestCode, long timeout,
+ AttentionCallbackInternal callback) {
+ return AttentionManagerService.this.checkAttention(requestCode, timeout, callback);
+ }
+
+ @Override
+ public void cancelAttentionCheck(int requestCode) {
+ AttentionManagerService.this.cancelAttentionCheck(requestCode);
+ }
+ }
+
+ private static final class AttentionCheckCache {
+ private final long mLastComputed;
+ private final int mResult;
+ private final long mTimestamp;
+
+ AttentionCheckCache(long lastComputed, @AttentionService.AttentionSuccessCodes int result,
+ long timestamp) {
+ mLastComputed = lastComputed;
+ mResult = result;
+ mTimestamp = timestamp;
+ }
+ }
+
+ private static final class PendingAttentionCheck {
+ private final int mRequestCode;
+ private final AttentionCallbackInternal mCallback;
+ private final Runnable mRunnable;
+
+ PendingAttentionCheck(int requestCode, AttentionCallbackInternal callback,
+ Runnable runnable) {
+ mRequestCode = requestCode;
+ mCallback = callback;
+ mRunnable = runnable;
+ }
+
+ void cancel(@AttentionFailureCodes int failureCode) {
+ mCallback.onFailure(mRequestCode, failureCode);
+ }
+
+ void run() {
+ mRunnable.run();
+ }
+ }
+
+ private static final class UserState {
+ final AttentionServiceConnection mConnection = new AttentionServiceConnection();
+
+ @GuardedBy("mLock")
+ IAttentionService mService;
+ @GuardedBy("mLock")
+ boolean mBinding;
+ @GuardedBy("mLock")
+ int mCurrentAttentionCheckRequestCode;
+ @GuardedBy("mLock")
+ PendingAttentionCheck mPendingAttentionCheck;
+
+ @GuardedBy("mLock")
+ AttentionCheckCache mAttentionCheckCache;
+
+ @UserIdInt
+ final int mUserId;
+ final Context mContext;
+ final Object mLock;
+
+ private UserState(int userId, Context context, Object lock) {
+ mUserId = userId;
+ mContext = Preconditions.checkNotNull(context);
+ mLock = Preconditions.checkNotNull(lock);
+ }
+
+
+ @GuardedBy("mLock")
+ private void handlePendingCallbackLocked() {
+ if (mService != null && mPendingAttentionCheck != null) {
+ mPendingAttentionCheck.run();
+ mPendingAttentionCheck = null;
+ }
+ }
+
+ /** Binds to the system's AttentionService which provides an actual implementation. */
+ @GuardedBy("mLock")
+ private boolean bindLocked() {
+ // No need to bind if service is binding or has already been bound.
+ if (mBinding || mService != null) {
+ return true;
+ }
+
+ final boolean willBind;
+ final long identity = Binder.clearCallingIdentity();
+
+ try {
+ final ComponentName componentName =
+ resolveAttentionService(mContext);
+ if (componentName == null) {
+ // Might happen if the storage is encrypted and the user is not unlocked
+ return false;
+ }
+ final Intent mServiceIntent = new Intent(
+ AttentionService.SERVICE_INTERFACE).setComponent(
+ componentName);
+ willBind = mContext.bindServiceAsUser(mServiceIntent, mConnection,
+ Context.BIND_AUTO_CREATE, UserHandle.CURRENT);
+ mBinding = willBind;
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ return willBind;
+ }
+
+ private void dump(IndentingPrintWriter pw) {
+ pw.printPair("context", mContext);
+ pw.printPair("userId", mUserId);
+ synchronized (mLock) {
+ pw.printPair("binding", mBinding);
+ pw.printPair("isAttentionCheckPending", mPendingAttentionCheck != null);
+ }
+ }
+
+ private final class AttentionServiceConnection implements ServiceConnection {
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ init(IAttentionService.Stub.asInterface(service));
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ cleanupService();
+ }
+
+ @Override
+ public void onBindingDied(ComponentName name) {
+ cleanupService();
+ }
+
+ @Override
+ public void onNullBinding(ComponentName name) {
+ cleanupService();
+ }
+
+ void cleanupService() {
+ init(null);
+ }
+
+ private void init(@Nullable IAttentionService service) {
+ synchronized (mLock) {
+ mService = service;
+ mBinding = false;
+ handlePendingCallbackLocked();
+ }
+ }
+ }
+ }
+
+ private class AttentionHandler extends Handler {
+ private static final int CONNECTION_EXPIRED = 1;
+ private static final int ATTENTION_CHECK_TIMEOUT = 2;
+
+ AttentionHandler() {
+ super(Looper.myLooper());
+ }
+
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ // Do not occupy resources when not in use - unbind proactively.
+ case CONNECTION_EXPIRED: {
+ for (int i = 0; i < mUserStates.size(); i++) {
+ cancelAndUnbindLocked(mUserStates.valueAt(i),
+ AttentionService.ATTENTION_FAILURE_UNKNOWN);
+ }
+
+ }
+ break;
+
+ // Callee is no longer interested in the attention check result - cancel.
+ case ATTENTION_CHECK_TIMEOUT: {
+ cancelAndUnbindLocked(peekCurrentUserStateLocked(),
+ AttentionService.ATTENTION_FAILURE_TIMED_OUT);
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+
+ @GuardedBy("mLock")
+ private void cancelAndUnbindLocked(UserState userState,
+ @AttentionFailureCodes int failureCode) {
+ synchronized (mLock) {
+ if (userState != null && userState.mService != null) {
+ try {
+ userState.mService.cancelAttentionCheck(
+ userState.mCurrentAttentionCheckRequestCode);
+ } catch (RemoteException e) {
+ Slog.e(LOG_TAG, "Unable to cancel attention check");
+ }
+
+ if (userState.mPendingAttentionCheck != null) {
+ userState.mPendingAttentionCheck.cancel(failureCode);
+ }
+ mContext.unbindService(userState.mConnection);
+ userState.mConnection.cleanupService();
+ mUserStates.remove(userState.mUserId);
+ }
+ }
+ }
+
+ /**
+ * Unbinds and stops the service when the screen off intent is received.
+ * Attention service only makes sense when screen is ON; disconnect and stop service otherwise.
+ */
+ private final class ScreenStateReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) {
+ cancelAndUnbindLocked(peekCurrentUserStateLocked(),
+ AttentionService.ATTENTION_FAILURE_UNKNOWN);
+ }
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index d704a3e..11299b6 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -38,6 +38,8 @@
import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothCodecConfig;
+import android.bluetooth.BluetoothCodecStatus;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothHearingAid;
@@ -268,6 +270,7 @@
private static final int MSG_DISABLE_AUDIO_FOR_UID = 104;
private static final int MSG_SET_HEARING_AID_CONNECTION_STATE = 105;
private static final int MSG_BTA2DP_DOCK_TIMEOUT = 106;
+ private static final int MSG_A2DP_ACTIVE_DEVICE_CHANGE = 107;
// end of messages handled under wakelock
private static final int BTA2DP_DOCK_TIMEOUT_MILLIS = 8000;
@@ -480,16 +483,20 @@
int mDeviceType;
String mDeviceName;
String mDeviceAddress;
+ int mDeviceCodecFormat;
- public DeviceListSpec(int deviceType, String deviceName, String deviceAddress) {
+ DeviceListSpec(int deviceType, String deviceName, String deviceAddress,
+ int deviceCodecFormat) {
mDeviceType = deviceType;
mDeviceName = deviceName;
mDeviceAddress = deviceAddress;
+ mDeviceCodecFormat = deviceCodecFormat;
}
public String toString() {
return "[type:0x" + Integer.toHexString(mDeviceType) + " name:" + mDeviceName
- + " address:" + mDeviceAddress + "]";
+ + " address:" + mDeviceAddress
+ + " codec: " + Integer.toHexString(mDeviceCodecFormat) + "]";
}
}
@@ -501,6 +508,52 @@
private final ArrayMap<String, DeviceListSpec> mConnectedDevices = new ArrayMap<>();
+ private class BluetoothA2dpDeviceInfo {
+ BluetoothDevice mBtDevice;
+ int mVolume;
+ int mCodec;
+
+ BluetoothA2dpDeviceInfo(BluetoothDevice btDevice) {
+ this(btDevice, -1, AudioSystem.AUDIO_FORMAT_DEFAULT);
+ }
+
+ BluetoothA2dpDeviceInfo(BluetoothDevice btDevice,
+ int volume, int codec) {
+ mBtDevice = btDevice;
+ mVolume = volume;
+ mCodec = codec;
+ }
+
+ public BluetoothDevice getBtDevice() {
+ return mBtDevice;
+ }
+
+ public int getVolume() {
+ return mVolume;
+ }
+
+ public int getCodec() {
+ return mCodec;
+ }
+ }
+
+ private int mapBluetoothCodecToAudioFormat(int btCodecType) {
+ switch (btCodecType) {
+ case BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC:
+ return AudioSystem.AUDIO_FORMAT_SBC;
+ case BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC:
+ return AudioSystem.AUDIO_FORMAT_AAC;
+ case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX:
+ return AudioSystem.AUDIO_FORMAT_APTX;
+ case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD:
+ return AudioSystem.AUDIO_FORMAT_APTX_HD;
+ case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC:
+ return AudioSystem.AUDIO_FORMAT_LDAC;
+ default:
+ return AudioSystem.AUDIO_FORMAT_DEFAULT;
+ }
+ }
+
// Forced device usage for communications
private int mForcedUseForComm;
private int mForcedUseForCommExt; // External state returned by getters: always consistent
@@ -1020,7 +1073,8 @@
spec.mDeviceType,
AudioSystem.DEVICE_STATE_AVAILABLE,
spec.mDeviceAddress,
- spec.mDeviceName);
+ spec.mDeviceName,
+ spec.mDeviceCodecFormat);
}
}
// Restore call state
@@ -1614,7 +1668,9 @@
// For notifications/ring, show the ui before making any adjustments
// Don't suppress mute/unmute requests
- if (mVolumeController.suppressAdjustment(resolvedStream, flags, isMute)) {
+ // Don't suppress adjustments for single volume device
+ if (mVolumeController.suppressAdjustment(resolvedStream, flags, isMute)
+ && !mIsSingleVolume) {
direction = 0;
flags &= ~AudioManager.FLAG_PLAY_SOUND;
flags &= ~AudioManager.FLAG_VIBRATE;
@@ -3904,8 +3960,8 @@
queueMsgUnderWakeLock(mAudioHandler,
MSG_SET_A2DP_SINK_CONNECTION_STATE,
state,
- -1,
- btDevice,
+ 0 /* arg2 unused */,
+ new BluetoothA2dpDeviceInfo(btDevice),
delay);
}
}
@@ -3922,7 +3978,7 @@
MSG_SET_A2DP_SRC_CONNECTION_STATE,
state,
0 /* arg2 unused */,
- btDevice,
+ new BluetoothA2dpDeviceInfo(btDevice),
0 /* delay */);
}
}
@@ -4618,6 +4674,7 @@
msg == MSG_SET_HEARING_AID_CONNECTION_STATE ||
msg == MSG_SET_WIRED_DEVICE_CONNECTION_STATE ||
msg == MSG_A2DP_DEVICE_CONFIG_CHANGE ||
+ msg == MSG_A2DP_ACTIVE_DEVICE_CHANGE ||
msg == MSG_BTA2DP_DOCK_TIMEOUT) {
if (mLastDeviceConnectMsgTime >= time) {
// add a little delay to make sure messages are ordered as expected
@@ -4687,6 +4744,17 @@
}
}
+ private int getA2dpCodec(BluetoothDevice device) {
+ synchronized (mA2dpAvrcpLock) {
+ if (mA2dp != null) {
+ BluetoothCodecStatus btCodecStatus = mA2dp.getCodecStatus(device);
+ BluetoothCodecConfig btCodecConfig = btCodecStatus.getCodecConfig();
+ return mapBluetoothCodecToAudioFormat(btCodecConfig.getCodecType());
+ }
+ return AudioSystem.AUDIO_FORMAT_DEFAULT;
+ }
+ }
+
/*
* A class just for packaging up a set of connection parameters.
*/
@@ -4751,14 +4819,16 @@
return delay;
}
- public int setBluetoothA2dpDeviceConnectionState(BluetoothDevice device, int state, int profile)
+ public int setBluetoothA2dpDeviceConnectionState(
+ BluetoothDevice device, int state, int profile)
{
return setBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent(
- device, state, profile, false /* suppressNoisyIntent */, -1 /* a2dpVolume */);
+ device, state, profile, false /* suppressNoisyIntent */,
+ -1 /* a2dpVolume */);
}
public int setBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent(BluetoothDevice device,
- int state, int profile, boolean suppressNoisyIntent, int a2dpVolume)
+ int state, int profile, boolean suppressNoisyIntent, int a2dpVolume)
{
mDeviceLogger.log((new AudioEventLogger.StringEvent(
"setBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent state=" + state
@@ -4771,7 +4841,8 @@
return 0;
}
return setBluetoothA2dpDeviceConnectionStateInt(
- device, state, profile, suppressNoisyIntent, AudioSystem.DEVICE_NONE, a2dpVolume);
+ device, state, profile, suppressNoisyIntent,
+ AudioSystem.DEVICE_NONE, a2dpVolume);
}
public int setBluetoothA2dpDeviceConnectionStateInt(
@@ -4791,18 +4862,20 @@
delay = 0;
}
+ int a2dpCodec = getA2dpCodec(device);
+
if (DEBUG_DEVICES) {
Log.d(TAG, "setBluetoothA2dpDeviceConnectionStateInt device: " + device
- + " state: " + state + " delay(ms): " + delay
- + " suppressNoisyIntent: " + suppressNoisyIntent);
+ + " state: " + state + " delay(ms): " + delay + "codec:" + a2dpCodec
+ + " suppressNoisyIntent: " + suppressNoisyIntent);
}
queueMsgUnderWakeLock(mAudioHandler,
(profile == BluetoothProfile.A2DP ?
MSG_SET_A2DP_SINK_CONNECTION_STATE : MSG_SET_A2DP_SRC_CONNECTION_STATE),
state,
- a2dpVolume,
- device,
+ 0, /* arg2 unused */
+ new BluetoothA2dpDeviceInfo(device, a2dpVolume, a2dpCodec),
delay);
}
return delay;
@@ -4811,15 +4884,71 @@
public void handleBluetoothA2dpDeviceConfigChange(BluetoothDevice device)
{
synchronized (mConnectedDevices) {
+ int a2dpCodec = getA2dpCodec(device);
queueMsgUnderWakeLock(mAudioHandler,
MSG_A2DP_DEVICE_CONFIG_CHANGE,
0 /* arg1 unused */,
- 0 /* arg1 unused */,
- device,
+ 0 /* arg2 unused */,
+ new BluetoothA2dpDeviceInfo(device, -1, a2dpCodec),
0 /* delay */);
}
}
+ /**
+ * @see AudioManager#handleBluetoothA2dpActiveDeviceChange(BluetoothDevice, int, int,
+ * boolean, int)
+ */
+ public int handleBluetoothA2dpActiveDeviceChange(
+ BluetoothDevice device, int state, int profile, boolean suppressNoisyIntent,
+ int a2dpVolume) {
+ if (profile != BluetoothProfile.A2DP && profile != BluetoothProfile.A2DP_SINK) {
+ throw new IllegalArgumentException("invalid profile " + profile);
+ }
+
+ synchronized (mConnectedDevices) {
+ if (state == BluetoothA2dp.STATE_CONNECTED) {
+ for (int i = 0; i < mConnectedDevices.size(); i++) {
+ DeviceListSpec deviceSpec = mConnectedDevices.valueAt(i);
+ if (deviceSpec.mDeviceType != AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP) {
+ continue;
+ }
+ // If A2DP device exists, this is either an active device change or
+ // device config change
+ String existingDevicekey = mConnectedDevices.keyAt(i);
+ String deviceName = device.getName();
+ String address = device.getAddress();
+ String newDeviceKey = makeDeviceListKey(
+ AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, address);
+ int a2dpCodec = getA2dpCodec(device);
+ // Device not equal to existing device, active device change
+ if (!TextUtils.equals(existingDevicekey, newDeviceKey)) {
+ mConnectedDevices.remove(existingDevicekey);
+ mConnectedDevices.put(newDeviceKey, new DeviceListSpec(
+ AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, deviceName,
+ address, a2dpCodec));
+ queueMsgUnderWakeLock(mAudioHandler,
+ MSG_A2DP_ACTIVE_DEVICE_CHANGE,
+ 0,
+ 0,
+ new BluetoothA2dpDeviceInfo(
+ device, a2dpVolume, a2dpCodec),
+ 0 /* delay */);
+ return 0;
+ } else {
+ // Device config change for existing device
+ handleBluetoothA2dpDeviceConfigChange(device);
+ return 0;
+ }
+ }
+ }
+ }
+
+ // New device connection or a device disconnect
+ return setBluetoothA2dpDeviceConnectionStateInt(
+ device, state, profile, suppressNoisyIntent,
+ AudioSystem.DEVICE_NONE, a2dpVolume);
+ }
+
private static final int DEVICE_MEDIA_UNMUTED_ON_PLUG =
AudioSystem.DEVICE_OUT_WIRED_HEADSET | AudioSystem.DEVICE_OUT_WIRED_HEADPHONE |
AudioSystem.DEVICE_OUT_LINE |
@@ -5697,7 +5826,7 @@
case MSG_BTA2DP_DOCK_TIMEOUT:
// msg.obj == address of BTA2DP device
synchronized (mConnectedDevices) {
- makeA2dpDeviceUnavailableNow( (String) msg.obj );
+ makeA2dpDeviceUnavailableNow((String) msg.obj, msg.arg1);
}
mAudioEventWakeLock.release();
break;
@@ -5722,12 +5851,12 @@
break;
case MSG_SET_A2DP_SRC_CONNECTION_STATE:
- onSetA2dpSourceConnectionState((BluetoothDevice)msg.obj, msg.arg1);
+ onSetA2dpSourceConnectionState((BluetoothA2dpDeviceInfo) msg.obj, msg.arg1);
mAudioEventWakeLock.release();
break;
case MSG_SET_A2DP_SINK_CONNECTION_STATE:
- onSetA2dpSinkConnectionState((BluetoothDevice)msg.obj, msg.arg1, msg.arg2);
+ onSetA2dpSinkConnectionState((BluetoothA2dpDeviceInfo) msg.obj, msg.arg1);
mAudioEventWakeLock.release();
break;
@@ -5737,7 +5866,12 @@
break;
case MSG_A2DP_DEVICE_CONFIG_CHANGE:
- onBluetoothA2dpDeviceConfigChange((BluetoothDevice)msg.obj);
+ onBluetoothA2dpDeviceConfigChange((BluetoothA2dpDeviceInfo) msg.obj);
+ mAudioEventWakeLock.release();
+ break;
+
+ case MSG_A2DP_ACTIVE_DEVICE_CHANGE:
+ onBluetoothA2dpActiveDeviceChange((BluetoothA2dpDeviceInfo) msg.obj);
mAudioEventWakeLock.release();
break;
@@ -5911,19 +6045,20 @@
}
// must be called synchronized on mConnectedDevices
- private void makeA2dpDeviceAvailable(String address, String name, String eventSource) {
+ private void makeA2dpDeviceAvailable(
+ String address, String name, String eventSource, int a2dpCodec) {
// enable A2DP before notifying A2DP connection to avoid unnecessary processing in
// audio policy manager
VolumeStreamState streamState = mStreamStates[AudioSystem.STREAM_MUSIC];
setBluetoothA2dpOnInt(true, eventSource);
AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP,
- AudioSystem.DEVICE_STATE_AVAILABLE, address, name);
+ AudioSystem.DEVICE_STATE_AVAILABLE, address, name, a2dpCodec);
// Reset A2DP suspend state each time a new sink is connected
AudioSystem.setParameters("A2dpSuspended=false");
mConnectedDevices.put(
makeDeviceListKey(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, address),
new DeviceListSpec(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, name,
- address));
+ address, a2dpCodec));
sendMsg(mAudioHandler, MSG_ACCESSORY_PLUG_MEDIA_UNMUTE, SENDMSG_QUEUE,
AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, 0, null, 0);
setCurrentAudioRouteNameIfPossible(name);
@@ -5936,7 +6071,7 @@
}
// must be called synchronized on mConnectedDevices
- private void makeA2dpDeviceUnavailableNow(String address) {
+ private void makeA2dpDeviceUnavailableNow(String address, int a2dpCodec) {
if (address == null) {
return;
}
@@ -5944,7 +6079,7 @@
mAvrcpAbsVolSupported = false;
}
AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP,
- AudioSystem.DEVICE_STATE_UNAVAILABLE, address, "");
+ AudioSystem.DEVICE_STATE_UNAVAILABLE, address, "", a2dpCodec);
mConnectedDevices.remove(
makeDeviceListKey(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, address));
// Remove A2DP routes as well
@@ -5959,32 +6094,38 @@
// prevent any activity on the A2DP audio output to avoid unwanted
// reconnection of the sink.
AudioSystem.setParameters("A2dpSuspended=true");
+ // Retrieve deviceSpec before removing device
+ String deviceKey = makeDeviceListKey(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, address);
+ DeviceListSpec deviceSpec = mConnectedDevices.get(deviceKey);
+ int a2dpCodec = deviceSpec != null ? deviceSpec.mDeviceCodecFormat :
+ AudioSystem.AUDIO_FORMAT_DEFAULT;
// the device will be made unavailable later, so consider it disconnected right away
- mConnectedDevices.remove(
- makeDeviceListKey(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, address));
+ mConnectedDevices.remove(deviceKey);
// send the delayed message to make the device unavailable later
queueMsgUnderWakeLock(mAudioHandler,
- MSG_BTA2DP_DOCK_TIMEOUT,
- 0,
- 0,
- address,
- delayMs);
+ MSG_BTA2DP_DOCK_TIMEOUT,
+ a2dpCodec,
+ 0,
+ address,
+ delayMs);
}
// must be called synchronized on mConnectedDevices
private void makeA2dpSrcAvailable(String address) {
AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_IN_BLUETOOTH_A2DP,
- AudioSystem.DEVICE_STATE_AVAILABLE, address, "");
+ AudioSystem.DEVICE_STATE_AVAILABLE, address, "",
+ AudioSystem.AUDIO_FORMAT_DEFAULT);
mConnectedDevices.put(
makeDeviceListKey(AudioSystem.DEVICE_IN_BLUETOOTH_A2DP, address),
new DeviceListSpec(AudioSystem.DEVICE_IN_BLUETOOTH_A2DP, "",
- address));
+ address, AudioSystem.AUDIO_FORMAT_DEFAULT));
}
// must be called synchronized on mConnectedDevices
private void makeA2dpSrcUnavailable(String address) {
AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_IN_BLUETOOTH_A2DP,
- AudioSystem.DEVICE_STATE_UNAVAILABLE, address, "");
+ AudioSystem.DEVICE_STATE_UNAVAILABLE, address, "",
+ AudioSystem.AUDIO_FORMAT_DEFAULT);
mConnectedDevices.remove(
makeDeviceListKey(AudioSystem.DEVICE_IN_BLUETOOTH_A2DP, address));
}
@@ -6008,11 +6149,12 @@
setHearingAidVolume(index, AudioSystem.STREAM_MUSIC);
AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_HEARING_AID,
- AudioSystem.DEVICE_STATE_AVAILABLE, address, name);
+ AudioSystem.DEVICE_STATE_AVAILABLE, address, name,
+ AudioSystem.AUDIO_FORMAT_DEFAULT);
mConnectedDevices.put(
makeDeviceListKey(AudioSystem.DEVICE_OUT_HEARING_AID, address),
new DeviceListSpec(AudioSystem.DEVICE_OUT_HEARING_AID, name,
- address));
+ address, AudioSystem.AUDIO_FORMAT_DEFAULT));
sendMsg(mAudioHandler, MSG_ACCESSORY_PLUG_MEDIA_UNMUTE, SENDMSG_QUEUE,
AudioSystem.DEVICE_OUT_HEARING_AID, 0, null, 0);
sendMsg(mAudioHandler, MSG_SET_DEVICE_VOLUME, SENDMSG_QUEUE,
@@ -6024,7 +6166,8 @@
// must be called synchronized on mConnectedDevices
private void makeHearingAidDeviceUnavailable(String address) {
AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_HEARING_AID,
- AudioSystem.DEVICE_STATE_UNAVAILABLE, address, "");
+ AudioSystem.DEVICE_STATE_UNAVAILABLE, address, "",
+ AudioSystem.AUDIO_FORMAT_DEFAULT);
mConnectedDevices.remove(
makeDeviceListKey(AudioSystem.DEVICE_OUT_HEARING_AID, address));
// Remove Hearing Aid routes as well
@@ -6041,15 +6184,23 @@
return mAudioHandler.hasMessages(MSG_BTA2DP_DOCK_TIMEOUT);
}
- private void onSetA2dpSinkConnectionState(BluetoothDevice btDevice, int state, int a2dpVolume)
+ private void onSetA2dpSinkConnectionState(BluetoothA2dpDeviceInfo btInfo, int state)
{
- if (DEBUG_DEVICES) {
- Log.d(TAG, "onSetA2dpSinkConnectionState btDevice= " + btDevice+" state= " + state
- + " is dock: "+btDevice.isBluetoothDock());
+ if (btInfo == null) {
+ return;
}
+
+ BluetoothDevice btDevice = btInfo.getBtDevice();
+ int a2dpVolume = btInfo.getVolume();
+ int a2dpCodec = btInfo.getCodec();
+
if (btDevice == null) {
return;
}
+ if (DEBUG_DEVICES) {
+ Log.d(TAG, "onSetA2dpSinkConnectionState btDevice= " + btDevice + " state= " + state
+ + " is dock: " + btDevice.isBluetoothDock());
+ }
String address = btDevice.getAddress();
if (!BluetoothAdapter.checkBluetoothAddress(address)) {
address = "";
@@ -6071,7 +6222,7 @@
// the next time isConnected is evaluated, it will be false for the dock
}
} else {
- makeA2dpDeviceUnavailableNow(address);
+ makeA2dpDeviceUnavailableNow(address, deviceSpec.mDeviceCodecFormat);
}
} else if (!isConnected && state == BluetoothProfile.STATE_CONNECTED) {
if (btDevice.isBluetoothDock()) {
@@ -6083,7 +6234,8 @@
// a dock: cancel the dock timeout, and make the dock unavailable now
if (hasScheduledA2dpDockTimeout() && mDockAddress != null) {
cancelA2dpDeviceTimeout();
- makeA2dpDeviceUnavailableNow(mDockAddress);
+ makeA2dpDeviceUnavailableNow(mDockAddress,
+ AudioSystem.AUDIO_FORMAT_DEFAULT);
}
}
if (a2dpVolume != -1) {
@@ -6095,13 +6247,18 @@
setDeviceVolume(streamState, AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP);
}
makeA2dpDeviceAvailable(address, btDevice.getName(),
- "onSetA2dpSinkConnectionState");
+ "onSetA2dpSinkConnectionState", a2dpCodec);
}
}
}
- private void onSetA2dpSourceConnectionState(BluetoothDevice btDevice, int state)
+ private void onSetA2dpSourceConnectionState(BluetoothA2dpDeviceInfo btInfo, int state)
{
+ if (btInfo == null) {
+ return;
+ }
+ BluetoothDevice btDevice = btInfo.getBtDevice();
+
if (DEBUG_VOL) {
Log.d(TAG, "onSetA2dpSourceConnectionState btDevice=" + btDevice + " state=" + state);
}
@@ -6176,14 +6333,20 @@
return false;
}
- private void onBluetoothA2dpDeviceConfigChange(BluetoothDevice btDevice)
+ private void onBluetoothA2dpDeviceConfigChange(BluetoothA2dpDeviceInfo btInfo)
{
- if (DEBUG_DEVICES) {
- Log.d(TAG, "onBluetoothA2dpDeviceConfigChange btDevice=" + btDevice);
+ if (btInfo == null) {
+ return;
}
+ BluetoothDevice btDevice = btInfo.getBtDevice();
+ int a2dpCodec = btInfo.getCodec();
+
if (btDevice == null) {
return;
}
+ if (DEBUG_DEVICES) {
+ Log.d(TAG, "onBluetoothA2dpDeviceConfigChange btDevice=" + btDevice);
+ }
String address = btDevice.getAddress();
if (!BluetoothAdapter.checkBluetoothAddress(address)) {
address = "";
@@ -6200,17 +6363,84 @@
}
final String key = makeDeviceListKey(device, address);
final DeviceListSpec deviceSpec = mConnectedDevices.get(key);
- if (deviceSpec != null) {
- // Device is connected
- int musicDevice = getDeviceForStream(AudioSystem.STREAM_MUSIC);
- if (AudioSystem.handleDeviceConfigChange(device, address,
- btDevice.getName()) != AudioSystem.AUDIO_STATUS_OK) {
- // force A2DP device disconnection in case of error so that AudioService state is
- // consistent with audio policy manager state
- setBluetoothA2dpDeviceConnectionStateInt(
- btDevice, BluetoothA2dp.STATE_DISCONNECTED, BluetoothProfile.A2DP,
- false /* suppressNoisyIntent */, musicDevice, -1 /* a2dpVolume */);
- }
+ if (deviceSpec == null) {
+ return;
+ }
+ // Device is connected
+ if (deviceSpec.mDeviceCodecFormat != a2dpCodec) {
+ deviceSpec.mDeviceCodecFormat = a2dpCodec;
+ mConnectedDevices.replace(key, deviceSpec);
+ }
+ if (DEBUG_DEVICES) {
+ Log.d(TAG, "onBluetoothA2dpDeviceConfigChange: codec="
+ + deviceSpec.mDeviceCodecFormat);
+ }
+ if (AudioSystem.handleDeviceConfigChange(device, address,
+ btDevice.getName(), deviceSpec.mDeviceCodecFormat)
+ != AudioSystem.AUDIO_STATUS_OK) {
+ int musicDevice = getDeviceForStream(AudioSystem.STREAM_MUSIC);
+ // force A2DP device disconnection in case of error so that AudioService state is
+ // consistent with audio policy manager state
+ setBluetoothA2dpDeviceConnectionStateInt(
+ btDevice, BluetoothA2dp.STATE_DISCONNECTED, BluetoothProfile.A2DP,
+ false /* suppressNoisyIntent */, musicDevice, -1 /* a2dpVolume */);
+ }
+ }
+ }
+
+ /** message handler for MSG_A2DP_ACTIVE_DEVICE_CHANGE */
+ public void onBluetoothA2dpActiveDeviceChange(BluetoothA2dpDeviceInfo btInfo) {
+ if (btInfo == null) {
+ return;
+ }
+ BluetoothDevice btDevice = btInfo.getBtDevice();
+ int a2dpVolume = btInfo.getVolume();
+ int a2dpCodec = btInfo.getCodec();
+
+ if (btDevice == null) {
+ return;
+ }
+ if (DEBUG_DEVICES) {
+ Log.d(TAG, "onBluetoothA2dpActiveDeviceChange btDevice=" + btDevice);
+ }
+ String address = btDevice.getAddress();
+ if (!BluetoothAdapter.checkBluetoothAddress(address)) {
+ address = "";
+ }
+ mDeviceLogger.log(new AudioEventLogger.StringEvent(
+ "onBluetoothA2dpActiveDeviceChange addr=" + address));
+
+ int device = AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP;
+ synchronized (mConnectedDevices) {
+ if (mAudioHandler.hasMessages(MSG_SET_A2DP_SINK_CONNECTION_STATE, btDevice)) {
+ mDeviceLogger.log(new AudioEventLogger.StringEvent(
+ "A2dp config change ignored"));
+ return;
+ }
+ final String key = makeDeviceListKey(device, address);
+ final DeviceListSpec deviceSpec = mConnectedDevices.get(key);
+ if (deviceSpec == null) {
+ return;
+ }
+
+ // Device is connected
+ if (a2dpVolume != -1) {
+ VolumeStreamState streamState = mStreamStates[AudioSystem.STREAM_MUSIC];
+ // Convert index to internal representation in VolumeStreamState
+ a2dpVolume = a2dpVolume * 10;
+ streamState.setIndex(a2dpVolume, device,
+ "onBluetoothA2dpActiveDeviceChange");
+ setDeviceVolume(streamState, device);
+ }
+
+ if (AudioSystem.handleDeviceConfigChange(device, address,
+ btDevice.getName(), a2dpCodec) != AudioSystem.AUDIO_STATUS_OK) {
+ int musicDevice = getDeviceForStream(AudioSystem.STREAM_MUSIC);
+ // force A2DP device disconnection in case of error so that AudioService state is
+ // consistent with audio policy manager state
+ setBluetoothA2dpDeviceConnectionStateInt(
+ btDevice, BluetoothA2dp.STATE_DISCONNECTED, BluetoothProfile.A2DP,
+ false /* suppressNoisyIntent */, musicDevice, -1 /* a2dpVolume */);
}
}
}
@@ -6243,19 +6473,22 @@
}
if (connect && !isConnected) {
final int res = AudioSystem.setDeviceConnectionState(device,
- AudioSystem.DEVICE_STATE_AVAILABLE, address, deviceName);
+ AudioSystem.DEVICE_STATE_AVAILABLE, address, deviceName,
+ AudioSystem.AUDIO_FORMAT_DEFAULT);
if (res != AudioSystem.AUDIO_STATUS_OK) {
Slog.e(TAG, "not connecting device 0x" + Integer.toHexString(device) +
" due to command error " + res );
return false;
}
- mConnectedDevices.put(deviceKey, new DeviceListSpec(device, deviceName, address));
+ mConnectedDevices.put(deviceKey, new DeviceListSpec(device,
+ deviceName, address, AudioSystem.AUDIO_FORMAT_DEFAULT));
sendMsg(mAudioHandler, MSG_ACCESSORY_PLUG_MEDIA_UNMUTE, SENDMSG_QUEUE,
device, 0, null, 0);
return true;
} else if (!connect && isConnected) {
AudioSystem.setDeviceConnectionState(device,
- AudioSystem.DEVICE_STATE_UNAVAILABLE, address, deviceName);
+ AudioSystem.DEVICE_STATE_UNAVAILABLE, address, deviceName,
+ AudioSystem.AUDIO_FORMAT_DEFAULT);
// always remove even if disconnection failed
mConnectedDevices.remove(deviceKey);
return true;
@@ -7824,8 +8057,10 @@
/** see AudioPolicy.setUidDeviceAffinity() */
public int setUidDeviceAffinity(IAudioPolicyCallback pcb, int uid,
- @NonNull int[] deviceTypes,
- @NonNull String[] deviceAddresses) {
+ @NonNull int[] deviceTypes, @NonNull String[] deviceAddresses) {
+ if (DEBUG_AP) {
+ Log.d(TAG, "setUidDeviceAffinity for " + pcb.asBinder() + " uid:" + uid);
+ }
synchronized (mAudioPolicies) {
final AudioPolicyProxy app =
checkUpdateForPolicy(pcb, "Cannot change device affinity in audio policy");
@@ -7835,21 +8070,23 @@
if (!app.hasMixRoutedToDevices(deviceTypes, deviceAddresses)) {
return AudioManager.ERROR;
}
+ return app.setUidDeviceAffinities(uid, deviceTypes, deviceAddresses);
}
- return AudioManager.SUCCESS;
}
/** see AudioPolicy.removeUidDeviceAffinity() */
public int removeUidDeviceAffinity(IAudioPolicyCallback pcb, int uid) {
+ if (DEBUG_AP) {
+ Log.d(TAG, "removeUidDeviceAffinity for " + pcb.asBinder() + " uid:" + uid);
+ }
synchronized (mAudioPolicies) {
final AudioPolicyProxy app =
checkUpdateForPolicy(pcb, "Cannot remove device affinity in audio policy");
if (app == null) {
return AudioManager.ERROR;
}
-
+ return app.removeUidDeviceAffinities(uid);
}
- return AudioManager.SUCCESS;
}
public int setFocusPropertiesForPolicy(int duckingBehavior, IAudioPolicyCallback pcb) {
@@ -8160,27 +8397,41 @@
Binder.restoreCallingIdentity(identity);
}
- void setUidDeviceAffinities(int uid, @NonNull int[] types, @NonNull String[] addresses) {
+ int setUidDeviceAffinities(int uid, @NonNull int[] types, @NonNull String[] addresses) {
final Integer Uid = new Integer(uid);
+ int res;
if (mUidDeviceAffinities.remove(Uid) != null) {
final long identity = Binder.clearCallingIdentity();
- AudioSystem.removeUidDeviceAffinities(uid);
+ res = AudioSystem.removeUidDeviceAffinities(uid);
Binder.restoreCallingIdentity(identity);
+ if (res != AudioSystem.SUCCESS) {
+ Log.e(TAG, "AudioSystem. removeUidDeviceAffinities(" + uid + ") failed, "
+ + " cannot call AudioSystem.setUidDeviceAffinities");
+ return AudioManager.ERROR;
+ }
}
final long identity = Binder.clearCallingIdentity();
- final int res = AudioSystem.setUidDeviceAffinities(uid, types, addresses);
+ res = AudioSystem.setUidDeviceAffinities(uid, types, addresses);
Binder.restoreCallingIdentity(identity);
if (res == AudioSystem.SUCCESS) {
mUidDeviceAffinities.put(Uid, new AudioDeviceArray(types, addresses));
+ return AudioManager.SUCCESS;
}
+ Log.e(TAG, "AudioSystem. setUidDeviceAffinities(" + uid + ") failed");
+ return AudioManager.ERROR;
}
- void removeUidDeviceAffinities(int uid, @NonNull int[] types, @NonNull String[] addresses) {
+ int removeUidDeviceAffinities(int uid) {
if (mUidDeviceAffinities.remove(new Integer(uid)) != null) {
final long identity = Binder.clearCallingIdentity();
- AudioSystem.removeUidDeviceAffinities(uid);
+ final int res = AudioSystem.removeUidDeviceAffinities(uid);
Binder.restoreCallingIdentity(identity);
+ if (res == AudioSystem.SUCCESS) {
+ return AudioManager.SUCCESS;
+ }
}
+ Log.e(TAG, "AudioSystem. removeUidDeviceAffinities failed");
+ return AudioManager.ERROR;
}
};
diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
index ecc3d2d..174ecfa 100644
--- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
+++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
@@ -116,6 +116,7 @@
protected HashMap<Integer, PerformanceStats> mPerformanceMap = new HashMap<>();
// Transactions that make use of CryptoObjects are tracked by mCryptoPerformaceMap.
protected HashMap<Integer, PerformanceStats> mCryptoPerformanceMap = new HashMap<>();
+ protected int mHALDeathCount;
protected class PerformanceStats {
public int accept; // number of accepted biometrics
@@ -596,6 +597,7 @@
public void serviceDied(long cookie) {
Slog.e(getTag(), "HAL died");
mMetricsLogger.count(getMetrics().tagHalDied(), 1);
+ mHALDeathCount++;
handleError(getHalDeviceId(), BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE,
0 /*vendorCode */);
}
diff --git a/services/core/java/com/android/server/biometrics/face/FaceService.java b/services/core/java/com/android/server/biometrics/face/FaceService.java
index 5a9c1ac..a2aacdd 100644
--- a/services/core/java/com/android/server/biometrics/face/FaceService.java
+++ b/services/core/java/com/android/server/biometrics/face/FaceService.java
@@ -675,6 +675,12 @@
}
@Override
+ public void serviceDied(long cookie) {
+ super.serviceDied(cookie);
+ mDaemon = null;
+ }
+
+ @Override
protected void updateActiveGroup(int userId, String clientPackage) {
IBiometricsFace daemon = getFaceDaemon();
@@ -864,6 +870,8 @@
Slog.e(TAG, "dump formatting failure", e);
}
pw.println(dump);
+ pw.println("HAL Deaths: " + mHALDeathCount);
+ mHALDeathCount = 0;
}
private void dumpProto(FileDescriptor fd) {
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
index 1613dc9..3db6a74 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
@@ -777,6 +777,12 @@
}
@Override
+ public void serviceDied(long cookie) {
+ super.serviceDied(cookie);
+ mDaemon = null;
+ }
+
+ @Override
protected void updateActiveGroup(int userId, String clientPackage) {
IBiometricsFingerprint daemon = getFingerprintDaemon();
@@ -1074,6 +1080,8 @@
Slog.e(TAG, "dump formatting failure", e);
}
pw.println(dump);
+ pw.println("HAL Deaths: " + mHALDeathCount);
+ mHALDeathCount = 0;
}
private void dumpProto(FileDescriptor fd) {
diff --git a/services/core/java/com/android/server/connectivity/Nat464Xlat.java b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
index 6596d27..9d9b1cf 100644
--- a/services/core/java/com/android/server/connectivity/Nat464Xlat.java
+++ b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
@@ -16,8 +16,9 @@
package com.android.server.connectivity;
-import android.net.InterfaceConfiguration;
import android.net.ConnectivityManager;
+import android.net.INetd;
+import android.net.InterfaceConfiguration;
import android.net.LinkAddress;
import android.net.LinkProperties;
import android.net.NetworkInfo;
@@ -59,6 +60,7 @@
NetworkInfo.State.SUSPENDED,
};
+ private final INetd mNetd;
private final INetworkManagementService mNMService;
// The network we're running on, and its type.
@@ -76,7 +78,8 @@
private String mIface;
private State mState = State.IDLE;
- public Nat464Xlat(INetworkManagementService nmService, NetworkAgentInfo nai) {
+ public Nat464Xlat(NetworkAgentInfo nai, INetd netd, INetworkManagementService nmService) {
+ mNetd = netd;
mNMService = nmService;
mNetwork = nai;
}
@@ -140,7 +143,7 @@
return;
}
try {
- mNMService.startClatd(baseIface);
+ mNetd.clatdStart(baseIface);
} catch(RemoteException|IllegalStateException e) {
Slog.e(TAG, "Error starting clatd on " + baseIface, e);
}
@@ -162,7 +165,7 @@
*/
private void enterStoppingState() {
try {
- mNMService.stopClatd(mBaseIface);
+ mNetd.clatdStop(mBaseIface);
} catch(RemoteException|IllegalStateException e) {
Slog.e(TAG, "Error stopping clatd on " + mBaseIface, e);
}
@@ -204,7 +207,7 @@
Slog.e(TAG, "startClat: Can't start clat on null interface");
return;
}
- // TODO: should we only do this if mNMService.startClatd() succeeds?
+ // TODO: should we only do this if mNetd.clatdStart() succeeds?
Slog.i(TAG, "Starting clatd on " + baseIface);
enterStartingState(baseIface);
}
diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
index 54c89aa..9ea73fb 100644
--- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
+++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
@@ -17,6 +17,7 @@
package com.android.server.connectivity;
import android.content.Context;
+import android.net.INetd;
import android.net.INetworkMonitor;
import android.net.LinkProperties;
import android.net.Network;
@@ -239,12 +240,15 @@
private static final String TAG = ConnectivityService.class.getSimpleName();
private static final boolean VDBG = false;
private final ConnectivityService mConnService;
+ private final INetd mNetd;
+ private final INetworkManagementService mNMS;
private final Context mContext;
private final Handler mHandler;
public NetworkAgentInfo(Messenger messenger, AsyncChannel ac, Network net, NetworkInfo info,
LinkProperties lp, NetworkCapabilities nc, int score, Context context, Handler handler,
- NetworkMisc misc, ConnectivityService connService) {
+ NetworkMisc misc, ConnectivityService connService, INetd netd,
+ INetworkManagementService nms) {
this.messenger = messenger;
asyncChannel = ac;
network = net;
@@ -253,6 +257,8 @@
networkCapabilities = nc;
currentScore = score;
mConnService = connService;
+ mNetd = netd;
+ mNMS = nms;
mContext = context;
mHandler = handler;
networkMisc = misc;
@@ -587,18 +593,18 @@
public void updateClat(INetworkManagementService netd) {
if (Nat464Xlat.requiresClat(this)) {
- maybeStartClat(netd);
+ maybeStartClat();
} else {
maybeStopClat();
}
}
/** Ensure clat has started for this network. */
- public void maybeStartClat(INetworkManagementService netd) {
+ public void maybeStartClat() {
if (clatd != null && clatd.isStarted()) {
return;
}
- clatd = new Nat464Xlat(netd, this);
+ clatd = new Nat464Xlat(this, mNetd, mNMS);
clatd.start();
}
diff --git a/services/core/java/com/android/server/connectivity/PacManager.java b/services/core/java/com/android/server/connectivity/PacManager.java
index 3ea9810..9789688 100644
--- a/services/core/java/com/android/server/connectivity/PacManager.java
+++ b/services/core/java/com/android/server/connectivity/PacManager.java
@@ -282,6 +282,7 @@
private void setCurrentProxyScript(String script) {
if (mProxyService == null) {
Log.e(TAG, "setCurrentProxyScript: no proxy service");
+ return;
}
try {
mProxyService.setPacFile(script);
diff --git a/services/core/java/com/android/server/content/SyncJobService.java b/services/core/java/com/android/server/content/SyncJobService.java
index bfcc629..aaf9cbc 100644
--- a/services/core/java/com/android/server/content/SyncJobService.java
+++ b/services/core/java/com/android/server/content/SyncJobService.java
@@ -141,10 +141,7 @@
final long runtime = nowUptime - startUptime;
- if (startUptime == 0) {
- wtf("Job " + jobId + " start uptime not found: "
- + " params=" + jobParametersToString(params));
- } else if (runtime > 60 * 1000) {
+ if (runtime > 60 * 1000) {
// WTF if startSyncH() hasn't happened, *unless* onStopJob() was called too soon.
// (1 minute threshold.)
// Also don't wtf when it's not ready to sync.
diff --git a/services/core/java/com/android/server/content/SyncLogger.java b/services/core/java/com/android/server/content/SyncLogger.java
index 5cbe5b9..fc20ef20 100644
--- a/services/core/java/com/android/server/content/SyncLogger.java
+++ b/services/core/java/com/android/server/content/SyncLogger.java
@@ -16,6 +16,7 @@
package com.android.server.content;
+import android.accounts.Account;
import android.app.job.JobParameters;
import android.os.Build;
import android.os.Environment;
@@ -31,6 +32,8 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.IntPair;
import com.android.server.IoThread;
+import com.android.server.content.SyncManager.ActiveSyncContext;
+import com.android.server.content.SyncStorageEngine.EndPoint;
import libcore.io.IoUtils;
@@ -309,4 +312,20 @@
}
}
}
+
+ static String logSafe(Account account) {
+ return account == null ? "[null]" : account.toSafeString();
+ }
+
+ static String logSafe(EndPoint endPoint) {
+ return endPoint == null ? "[null]" : endPoint.toSafeString();
+ }
+
+ static String logSafe(SyncOperation operation) {
+ return operation == null ? "[null]" : operation.toSafeString();
+ }
+
+ static String logSafe(ActiveSyncContext asc) {
+ return asc == null ? "[null]" : asc.toSafeString();
+ }
}
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 8b93e04..7096477c 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -16,6 +16,8 @@
package com.android.server.content;
+import static com.android.server.content.SyncLogger.logSafe;
+
import android.accounts.Account;
import android.accounts.AccountAndUser;
import android.accounts.AccountManager;
@@ -1140,7 +1142,7 @@
/* ignore - local call */
}
if (checkAccountAccess && !canAccessAccount(account, owningPackage, owningUid)) {
- Log.w(TAG, "Access to " + account + " denied for package "
+ Log.w(TAG, "Access to " + logSafe(account) + " denied for package "
+ owningPackage + " in UID " + syncAdapterInfo.uid);
return AuthorityInfo.SYNCABLE_NO_ACCOUNT_ACCESS;
}
@@ -1474,7 +1476,8 @@
if (!syncOperation.ignoreBackoff()) {
Pair<Long, Long> backoff = mSyncStorageEngine.getBackoff(syncOperation.target);
if (backoff == null) {
- Slog.e(TAG, "Couldn't find backoff values for " + syncOperation.target);
+ Slog.e(TAG, "Couldn't find backoff values for "
+ + logSafe(syncOperation.target));
backoff = new Pair<Long, Long>(SyncStorageEngine.NOT_IN_BACKOFF_MODE,
SyncStorageEngine.NOT_IN_BACKOFF_MODE);
}
@@ -1745,8 +1748,8 @@
scheduleSyncOperationH(operation);
} else {
// Otherwise do not reschedule.
- Log.d(TAG, "not retrying sync operation because the error is a hard error: "
- + operation);
+ Log.e(TAG, "not retrying sync operation because the error is a hard error: "
+ + logSafe(operation));
}
}
@@ -1881,11 +1884,12 @@
sendSyncFinishedOrCanceledMessage(this, result);
}
- public void toString(StringBuilder sb) {
+ public void toString(StringBuilder sb, boolean logSafe) {
sb.append("startTime ").append(mStartTime)
.append(", mTimeoutStartTime ").append(mTimeoutStartTime)
.append(", mHistoryRowId ").append(mHistoryRowId)
- .append(", syncOperation ").append(mSyncOperation);
+ .append(", syncOperation ").append(
+ logSafe ? logSafe(mSyncOperation) : mSyncOperation);
}
public void onServiceConnected(ComponentName name, IBinder service) {
@@ -1947,7 +1951,13 @@
public String toString() {
StringBuilder sb = new StringBuilder();
- toString(sb);
+ toString(sb, false);
+ return sb.toString();
+ }
+
+ public String toSafeString() {
+ StringBuilder sb = new StringBuilder();
+ toString(sb, true);
return sb.toString();
}
@@ -2036,7 +2046,7 @@
int count = 0;
for (SyncOperation op: pendingSyncs) {
if (!op.isPeriodic) {
- pw.println(op.dump(null, false, buckets));
+ pw.println(op.dump(null, false, buckets, /*logSafe=*/ false));
count++;
}
}
@@ -2053,7 +2063,7 @@
int count = 0;
for (SyncOperation op: pendingSyncs) {
if (op.isPeriodic) {
- pw.println(op.dump(null, false, buckets));
+ pw.println(op.dump(null, false, buckets, /*logSafe=*/ false));
count++;
}
}
@@ -2186,7 +2196,7 @@
sb.setLength(0);
pw.print(formatDurationHMS(sb, durationInSeconds));
pw.print(" - ");
- pw.print(activeSyncContext.mSyncOperation.dump(pm, false, buckets));
+ pw.print(activeSyncContext.mSyncOperation.dump(pm, false, buckets, /*logSafe=*/ false));
pw.println();
}
pw.println();
@@ -2974,7 +2984,7 @@
case SyncHandler.MESSAGE_CANCEL:
SyncStorageEngine.EndPoint endpoint = (SyncStorageEngine.EndPoint) msg.obj;
Bundle extras = msg.peekData();
- if (Log.isLoggable(TAG, Log.DEBUG)) {
+ if (isLoggable) {
Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_CANCEL: "
+ endpoint + " bundle: " + extras);
}
@@ -2985,9 +2995,11 @@
SyncFinishedOrCancelledMessagePayload payload =
(SyncFinishedOrCancelledMessagePayload) msg.obj;
if (!isSyncStillActiveH(payload.activeSyncContext)) {
- Log.d(TAG, "handleSyncHandlerMessage: dropping since the "
- + "sync is no longer active: "
- + payload.activeSyncContext);
+ if (isLoggable) {
+ Log.d(TAG, "handleSyncHandlerMessage: dropping since the "
+ + "sync is no longer active: "
+ + payload.activeSyncContext);
+ }
break;
}
if (isLoggable) {
@@ -3002,7 +3014,7 @@
case SyncHandler.MESSAGE_SERVICE_CONNECTED: {
ServiceConnectionData msgData = (ServiceConnectionData) msg.obj;
- if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ if (isLoggable) {
Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_SERVICE_CONNECTED: "
+ msgData.activeSyncContext);
}
@@ -3018,7 +3030,7 @@
case SyncHandler.MESSAGE_SERVICE_DISCONNECTED: {
final ActiveSyncContext currentSyncContext =
((ServiceConnectionData) msg.obj).activeSyncContext;
- if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ if (isLoggable) {
Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_SERVICE_DISCONNECTED: "
+ currentSyncContext);
}
@@ -3053,7 +3065,7 @@
case SyncHandler.MESSAGE_MONITOR_SYNC:
ActiveSyncContext monitoredSyncContext = (ActiveSyncContext) msg.obj;
- if (Log.isLoggable(TAG, Log.DEBUG)) {
+ if (isLoggable) {
Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_MONITOR_SYNC: " +
monitoredSyncContext.mSyncOperation.target);
}
@@ -3061,7 +3073,7 @@
if (isSyncNotUsingNetworkH(monitoredSyncContext)) {
Log.w(TAG, String.format(
"Detected sync making no progress for %s. cancelling.",
- monitoredSyncContext));
+ logSafe(monitoredSyncContext)));
SyncJobService.callJobFinished(
monitoredSyncContext.mSyncOperation.jobId, false,
"no network activity");
@@ -3558,7 +3570,8 @@
} catch (RuntimeException exc) {
mLogger.log("Sync failed with RuntimeException: ", exc.toString());
closeActiveSyncContext(activeSyncContext);
- Slog.e(TAG, "Caught RuntimeException while starting the sync " + syncOperation, exc);
+ Slog.e(TAG, "Caught RuntimeException while starting the sync "
+ + logSafe(syncOperation), exc);
}
}
@@ -3658,7 +3671,8 @@
reschedulePeriodicSyncH(syncOperation);
}
} else {
- Log.w(TAG, "failed sync operation " + syncOperation + ", " + syncResult);
+ Log.w(TAG, "failed sync operation "
+ + logSafe(syncOperation) + ", " + syncResult);
syncOperation.retries++;
if (syncOperation.retries > mConstants.getMaxRetriesWithAppStandbyExemption()) {
@@ -4042,11 +4056,6 @@
getJobScheduler().cancel(op.jobId);
}
- private void wtfWithLog(String message) {
- Slog.wtf(TAG, message);
- mLogger.log("WTF: ", message);
- }
-
public void resetTodayStats() {
mSyncStorageEngine.resetTodayStats(/*force=*/ true);
}
diff --git a/services/core/java/com/android/server/content/SyncOperation.java b/services/core/java/com/android/server/content/SyncOperation.java
index 25edf40..2abc2e6 100644
--- a/services/core/java/com/android/server/content/SyncOperation.java
+++ b/services/core/java/com/android/server/content/SyncOperation.java
@@ -363,14 +363,19 @@
@Override
public String toString() {
- return dump(null, true, null);
+ return dump(null, true, null, false);
}
- String dump(PackageManager pm, boolean shorter, SyncAdapterStateFetcher appStates) {
+ public String toSafeString() {
+ return dump(null, true, null, true);
+ }
+
+ String dump(PackageManager pm, boolean shorter, SyncAdapterStateFetcher appStates,
+ boolean logSafe) {
StringBuilder sb = new StringBuilder();
sb.append("JobId=").append(jobId)
.append(" ")
- .append(target.account.name)
+ .append(logSafe ? "***" : target.account.name)
.append("/")
.append(target.account.type)
.append(" u")
diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java
index bfd1791..6b441a0 100644
--- a/services/core/java/com/android/server/content/SyncStorageEngine.java
+++ b/services/core/java/com/android/server/content/SyncStorageEngine.java
@@ -16,6 +16,8 @@
package com.android.server.content;
+import static com.android.server.content.SyncLogger.logSafe;
+
import android.accounts.Account;
import android.accounts.AccountAndUser;
import android.accounts.AccountManager;
@@ -225,6 +227,15 @@
sb.append(":u" + userId);
return sb.toString();
}
+
+ public String toSafeString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(account == null ? "ALL ACCS" : logSafe(account))
+ .append("/")
+ .append(provider == null ? "ALL PDRS" : provider);
+ sb.append(":u" + userId);
+ return sb.toString();
+ }
}
public static class AuthorityInfo {
@@ -1861,8 +1872,8 @@
}
} else {
- Slog.w(TAG, "Failure adding authority: account="
- + accountName + " auth=" + authorityName
+ Slog.w(TAG, "Failure adding authority:"
+ + " auth=" + authorityName
+ " enabled=" + enabled
+ " syncable=" + syncable);
}
diff --git a/services/core/java/com/android/server/display/AppSaturationController.java b/services/core/java/com/android/server/display/AppSaturationController.java
new file mode 100644
index 0000000..5d5e4f7
--- /dev/null
+++ b/services/core/java/com/android/server/display/AppSaturationController.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2019 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.server.display;
+
+import android.annotation.UserIdInt;
+import android.util.SparseArray;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.display.ColorDisplayService.ColorTransformController;
+
+import java.io.PrintWriter;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+class AppSaturationController {
+
+ private final Object mLock = new Object();
+
+ /**
+ * A package name has one or more userIds it is running under. Each userId has zero or one
+ * saturation level, and zero or more ColorTransformControllers.
+ */
+ @GuardedBy("mLock")
+ private final Map<String, SparseArray<SaturationController>> mAppsMap = new HashMap<>();
+
+ @VisibleForTesting
+ static final float[] TRANSLATION_VECTOR = {0f, 0f, 0f};
+
+ /**
+ * Add an {@link WeakReference<ColorTransformController>} for a given package and userId.
+ */
+ boolean addColorTransformController(String packageName, @UserIdInt int userId,
+ WeakReference<ColorTransformController> controller) {
+ synchronized (mLock) {
+ return getSaturationControllerLocked(packageName, userId)
+ .addColorTransformController(controller);
+ }
+ }
+
+ /**
+ * Set the saturation level ({@code ColorDisplayManager#SaturationLevel} constant for a given
+ * package name and userId.
+ */
+ public boolean setSaturationLevel(String packageName, @UserIdInt int userId,
+ int saturationLevel) {
+ synchronized (mLock) {
+ return getSaturationControllerLocked(packageName, userId)
+ .setSaturationLevel(saturationLevel);
+ }
+ }
+
+ /**
+ * Dump state information.
+ */
+ public void dump(PrintWriter pw) {
+ synchronized (mLock) {
+ pw.println("App Saturation: ");
+ if (mAppsMap.size() == 0) {
+ pw.println(" No packages");
+ return;
+ }
+ final List<String> packageNames = new ArrayList<>(mAppsMap.keySet());
+ Collections.sort(packageNames);
+ for (String packageName : packageNames) {
+ pw.println(" " + packageName + ":");
+ final SparseArray<SaturationController> appUserIdMap = mAppsMap.get(packageName);
+ for (int i = 0; i < appUserIdMap.size(); i++) {
+ pw.println(" " + appUserIdMap.keyAt(i) + ":");
+ appUserIdMap.valueAt(i).dump(pw);
+ }
+ }
+ }
+ }
+
+ /**
+ * Retrieve the SaturationController for a given package and userId, creating all intermediate
+ * connections as needed.
+ */
+ private SaturationController getSaturationControllerLocked(String packageName,
+ @UserIdInt int userId) {
+ return getOrCreateSaturationControllerLocked(getOrCreateUserIdMapLocked(packageName),
+ userId);
+ }
+
+ /**
+ * Retrieve or create the mapping between the app's given package name and its userIds (and
+ * their SaturationControllers).
+ */
+ private SparseArray<SaturationController> getOrCreateUserIdMapLocked(String packageName) {
+ if (mAppsMap.get(packageName) != null) {
+ return mAppsMap.get(packageName);
+ }
+
+ final SparseArray<SaturationController> appUserIdMap = new SparseArray<>();
+ mAppsMap.put(packageName, appUserIdMap);
+ return appUserIdMap;
+ }
+
+ /**
+ * Retrieve or create the mapping between an app's given userId and SaturationController.
+ */
+ private SaturationController getOrCreateSaturationControllerLocked(
+ SparseArray<SaturationController> appUserIdMap, @UserIdInt int userId) {
+ if (appUserIdMap.get(userId) != null) {
+ return appUserIdMap.get(userId);
+ }
+
+ final SaturationController saturationController = new SaturationController();
+ appUserIdMap.put(userId, saturationController);
+ return saturationController;
+ }
+
+ @VisibleForTesting
+ static void computeGrayscaleTransformMatrix(float saturation, float[] matrix) {
+ float desaturation = 1.0f - saturation;
+ float[] luminance = {0.231f * desaturation, 0.715f * desaturation,
+ 0.072f * desaturation};
+ matrix[0] = luminance[0] + saturation;
+ matrix[1] = luminance[0];
+ matrix[2] = luminance[0];
+ matrix[3] = luminance[1];
+ matrix[4] = luminance[1] + saturation;
+ matrix[5] = luminance[1];
+ matrix[6] = luminance[2];
+ matrix[7] = luminance[2];
+ matrix[8] = luminance[2] + saturation;
+ }
+
+ private static class SaturationController {
+
+ private final List<WeakReference<ColorTransformController>> mControllerRefs =
+ new ArrayList<>();
+ private int mSaturationLevel = 100;
+ private float[] mTransformMatrix = new float[9];
+
+ private boolean setSaturationLevel(int saturationLevel) {
+ mSaturationLevel = saturationLevel;
+ if (!mControllerRefs.isEmpty()) {
+ return updateState();
+ }
+ return false;
+ }
+
+ private boolean addColorTransformController(
+ WeakReference<ColorTransformController> controller) {
+ mControllerRefs.add(controller);
+ if (mSaturationLevel != 100) {
+ return updateState();
+ } else {
+ clearExpiredReferences();
+ }
+ return false;
+ }
+
+ private boolean updateState() {
+ computeGrayscaleTransformMatrix(mSaturationLevel / 100f, mTransformMatrix);
+
+ boolean updated = false;
+ final Iterator<WeakReference<ColorTransformController>> iterator = mControllerRefs
+ .iterator();
+ while (iterator.hasNext()) {
+ WeakReference<ColorTransformController> controllerRef = iterator.next();
+ final ColorTransformController controller = controllerRef.get();
+ if (controller != null) {
+ controller.applyAppSaturation(mTransformMatrix, TRANSLATION_VECTOR);
+ updated = true;
+ } else {
+ // Purge cleared refs lazily to avoid accumulating a lot of dead windows
+ iterator.remove();
+ }
+ }
+ return updated;
+
+ }
+
+ private void clearExpiredReferences() {
+ final Iterator<WeakReference<ColorTransformController>> iterator = mControllerRefs
+ .iterator();
+ while (iterator.hasNext()) {
+ WeakReference<ColorTransformController> controllerRef = iterator.next();
+ final ColorTransformController controller = controllerRef.get();
+ if (controller == null) {
+ iterator.remove();
+ }
+ }
+ }
+
+ private void dump(PrintWriter pw) {
+ pw.println(" mSaturationLevel: " + mSaturationLevel);
+ pw.println(" mControllerRefs count: " + mControllerRefs.size());
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/display/ColorDisplayService.java b/services/core/java/com/android/server/display/ColorDisplayService.java
index b332c47..9223739 100644
--- a/services/core/java/com/android/server/display/ColorDisplayService.java
+++ b/services/core/java/com/android/server/display/ColorDisplayService.java
@@ -27,6 +27,7 @@
import android.animation.ValueAnimator;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.Size;
import android.app.AlarmManager;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
@@ -34,7 +35,9 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
import android.database.ContentObserver;
+import android.graphics.ColorSpace;
import android.hardware.display.ColorDisplayManager;
import android.hardware.display.IColorDisplayManager;
import android.net.Uri;
@@ -48,17 +51,22 @@
import android.provider.Settings.System;
import android.util.MathUtils;
import android.util.Slog;
+import android.view.accessibility.AccessibilityManager;
import android.view.animation.AnimationUtils;
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.ColorDisplayController;
+import com.android.internal.util.DumpUtils;
import com.android.server.DisplayThread;
import com.android.server.SystemService;
import com.android.server.twilight.TwilightListener;
import com.android.server.twilight.TwilightManager;
import com.android.server.twilight.TwilightState;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.lang.ref.WeakReference;
import java.time.DateTimeException;
import java.time.Instant;
import java.time.LocalDateTime;
@@ -148,26 +156,204 @@
};
private final TintController mDisplayWhiteBalanceTintController = new TintController() {
+ // Three chromaticity coordinates per color: X, Y, and Z
+ private final int NUM_VALUES_PER_PRIMARY = 3;
+ // Four colors: red, green, blue, and white
+ private final int NUM_DISPLAY_PRIMARIES_VALS = 4 * NUM_VALUES_PER_PRIMARY;
+ private final Object mLock = new Object();
+ private int mTemperatureMin;
+ private int mTemperatureMax;
+ private int mTemperatureDefault;
+ private float[] mDisplayNominalWhiteXYZ = new float[NUM_VALUES_PER_PRIMARY];
+ private ColorSpace.Rgb mDisplayColorSpaceRGB;
+ private float[] mChromaticAdaptationMatrix;
+ private int mCurrentColorTemperature;
+ private float[] mCurrentColorTemperatureXYZ;
+ private boolean mSetUp = false;
private float[] mMatrixDisplayWhiteBalance = new float[16];
@Override
public void setUp(Context context, boolean needsLinear) {
+ mSetUp = false;
+
+ final Resources res = getContext().getResources();
+ final String[] displayPrimariesValues = res.getStringArray(
+ R.array.config_displayWhiteBalanceDisplayPrimaries);
+ final String[] nominalWhiteValues = res.getStringArray(
+ R.array.config_displayWhiteBalanceDisplayNominalWhite);
+
+ if (displayPrimariesValues.length != NUM_DISPLAY_PRIMARIES_VALS) {
+ Slog.e(TAG, "Unexpected display white balance primaries resource length " +
+ displayPrimariesValues.length);
+ return;
+ }
+
+ if (nominalWhiteValues.length != NUM_VALUES_PER_PRIMARY) {
+ Slog.e(TAG, "Unexpected display white balance nominal white resource length " +
+ nominalWhiteValues.length);
+ return;
+ }
+
+ float[] displayRedGreenBlueXYZ =
+ new float[NUM_DISPLAY_PRIMARIES_VALS - NUM_VALUES_PER_PRIMARY];
+ float[] displayWhiteXYZ = new float[NUM_VALUES_PER_PRIMARY];
+ for (int i = 0; i < displayRedGreenBlueXYZ.length; i++) {
+ displayRedGreenBlueXYZ[i] = Float.parseFloat(displayPrimariesValues[i]);
+ }
+ for (int i = 0; i < displayWhiteXYZ.length; i++) {
+ displayWhiteXYZ[i] = Float.parseFloat(
+ displayPrimariesValues[displayRedGreenBlueXYZ.length + i]);
+ }
+
+ final ColorSpace.Rgb displayColorSpaceRGB = new ColorSpace.Rgb(
+ "Display Color Space",
+ displayRedGreenBlueXYZ,
+ displayWhiteXYZ,
+ 2.2f // gamma, unused for display white balance
+ );
+
+ float[] displayNominalWhiteXYZ = new float[NUM_VALUES_PER_PRIMARY];
+ for (int i = 0; i < nominalWhiteValues.length; i++) {
+ displayNominalWhiteXYZ[i] = Float.parseFloat(nominalWhiteValues[i]);
+ }
+
+ final int colorTemperatureMin = res.getInteger(
+ R.integer.config_displayWhiteBalanceColorTemperatureMin);
+ if (colorTemperatureMin <= 0) {
+ Slog.e(TAG, "display white balance minimum temperature must be greater than 0");
+ return;
+ }
+
+ final int colorTemperatureMax = res.getInteger(
+ R.integer.config_displayWhiteBalanceColorTemperatureMax);
+ if (colorTemperatureMax < colorTemperatureMin) {
+ Slog.e(TAG, "display white balance max temp must be greater or equal to min");
+ return;
+ }
+
+ final int colorTemperature = res.getInteger(
+ R.integer.config_displayWhiteBalanceColorTemperatureDefault);
+
+ synchronized (mLock) {
+ mDisplayColorSpaceRGB = displayColorSpaceRGB;
+ mDisplayNominalWhiteXYZ = displayNominalWhiteXYZ;
+ mTemperatureMin = colorTemperatureMin;
+ mTemperatureMax = colorTemperatureMax;
+ mTemperatureDefault = colorTemperature;
+ mSetUp = true;
+ }
+
+ setMatrix(mTemperatureDefault);
}
@Override
public float[] getMatrix() {
- return isActivated() ? mMatrixDisplayWhiteBalance : MATRIX_IDENTITY;
+ return mSetUp && isActivated() ? mMatrixDisplayWhiteBalance : MATRIX_IDENTITY;
}
@Override
public void setMatrix(int cct) {
+ if (!mSetUp) {
+ Slog.w(TAG, "Can't set display white balance temperature: uninitialized");
+ return;
+ }
+
+ if (cct < mTemperatureMin) {
+ Slog.w(TAG, "Requested display color temperature is below allowed minimum");
+ cct = mTemperatureMin;
+ } else if (cct > mTemperatureMax) {
+ Slog.w(TAG, "Requested display color temperature is above allowed maximum");
+ cct = mTemperatureMax;
+ }
+
+ Slog.d(TAG, "setDisplayWhiteBalanceTemperatureMatrix: cct = " + cct);
+
+ synchronized (mLock) {
+ mCurrentColorTemperature = cct;
+
+ // Adapt the display's nominal white point to match the requested CCT value
+ mCurrentColorTemperatureXYZ = ColorSpace.cctToIlluminantdXyz(cct);
+
+ mChromaticAdaptationMatrix =
+ ColorSpace.chromaticAdaptation(ColorSpace.Adaptation.BRADFORD,
+ mDisplayNominalWhiteXYZ, mCurrentColorTemperatureXYZ);
+
+ // Convert the adaptation matrix to RGB space
+ float[] result = ColorSpace.mul3x3(mChromaticAdaptationMatrix,
+ mDisplayColorSpaceRGB.getTransform());
+ result = ColorSpace.mul3x3(mDisplayColorSpaceRGB.getInverseTransform(), result);
+
+ // Normalize the transform matrix to peak white value in RGB space
+ final float adaptedMaxR = result[0] + result[3] + result[6];
+ final float adaptedMaxG = result[1] + result[4] + result[7];
+ final float adaptedMaxB = result[2] + result[5] + result[8];
+ final float denum = Math.max(Math.max(adaptedMaxR, adaptedMaxG), adaptedMaxB);
+ for (int i = 0; i < result.length; i++) {
+ result[i] /= denum;
+ }
+
+ Matrix.setIdentityM(mMatrixDisplayWhiteBalance, 0);
+ java.lang.System.arraycopy(result, 0, mMatrixDisplayWhiteBalance, 0, 3);
+ java.lang.System.arraycopy(result, 3, mMatrixDisplayWhiteBalance, 4, 3);
+ java.lang.System.arraycopy(result, 6, mMatrixDisplayWhiteBalance, 8, 3);
+ }
}
@Override
public int getLevel() {
return LEVEL_COLOR_MATRIX_DISPLAY_WHITE_BALANCE;
}
+
+ /**
+ * Format a given matrix into a string.
+ *
+ * @param matrix the matrix to format
+ * @param cols number of columns in the matrix
+ */
+ private String matrixToString(float[] matrix, int cols) {
+ if (matrix == null || cols <= 0) {
+ Slog.e(TAG, "Invalid arguments when formatting matrix to string");
+ return "";
+ }
+
+ StringBuilder sb = new StringBuilder("");
+ for (int i = 0; i < matrix.length; i++) {
+ if (i % cols == 0) {
+ sb.append("\n ");
+ }
+ sb.append(String.format("%9.6f ", matrix[i]));
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public void dump(PrintWriter pw) {
+ synchronized (mLock) {
+ pw.println("ColorDisplayService");
+ pw.println(" mSetUp = " + mSetUp);
+
+ if (!mSetUp) {
+ return;
+ }
+
+ pw.println(" isActivated = " + isActivated());
+ pw.println(" mTemperatureMin = " + mTemperatureMin);
+ pw.println(" mTemperatureMax = " + mTemperatureMax);
+ pw.println(" mTemperatureDefault = " + mTemperatureDefault);
+ pw.println(" mCurrentColorTemperature = " + mCurrentColorTemperature);
+ pw.println(" mCurrentColorTemperatureXYZ = " +
+ matrixToString(mCurrentColorTemperatureXYZ, 3));
+ pw.println(" mDisplayColorSpaceRGB RGB-to-XYZ = " +
+ matrixToString(mDisplayColorSpaceRGB.getTransform(), 3));
+ pw.println(" mChromaticAdaptationMatrix = " +
+ matrixToString(mChromaticAdaptationMatrix, 3));
+ pw.println(" mDisplayColorSpaceRGB XYZ-to-RGB = " +
+ matrixToString(mDisplayColorSpaceRGB.getInverseTransform(), 3));
+ pw.println(" mMatrixDisplayWhiteBalance = " +
+ matrixToString(mMatrixDisplayWhiteBalance, 4));
+ }
+ }
};
private final TintController mGlobalSaturationTintController = new TintController() {
@@ -217,8 +403,33 @@
}
};
+ /**
+ * Matrix and offset used for converting color to grayscale.
+ */
+ private static final float[] MATRIX_GRAYSCALE = new float[]{
+ .2126f, .2126f, .2126f, 0f,
+ .7152f, .7152f, .7152f, 0f,
+ .0722f, .0722f, .0722f, 0f,
+ 0f, 0f, 0f, 1f
+ };
+
+ /**
+ * Matrix and offset used for luminance inversion. Represents a transform from RGB to YIQ color
+ * space, rotation around the Y axis by 180 degrees, transform back to RGB color space, and
+ * subtraction from 1. The last row represents a non-multiplied addition, see surfaceflinger's
+ * ProgramCache for full implementation details.
+ */
+ private static final float[] MATRIX_INVERT_COLOR = new float[] {
+ 0.402f, -0.598f, -0.599f, 0f,
+ -1.174f, -0.174f, -1.175f, 0f,
+ -0.228f, -0.228f, 0.772f, 0f,
+ 1f, 1f, 1f, 1f
+ };
+
private final Handler mHandler;
+ private final AppSaturationController mAppSaturationController = new AppSaturationController();
+
private int mCurrentUser = UserHandle.USER_NULL;
private ContentObserver mUserSetupObserver;
private boolean mBootCompleted;
@@ -230,8 +441,6 @@
private NightDisplayAutoMode mNightDisplayAutoMode;
- private Integer mDisplayWhiteBalanceColorTemperature;
-
public ColorDisplayService(Context context) {
super(context);
mHandler = new TintHandler(Looper.getMainLooper());
@@ -358,12 +567,19 @@
case System.DISPLAY_COLOR_MODE:
onDisplayColorModeChanged(mNightDisplayController.getColorMode());
break;
- case Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED:
case Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED:
- onAccessibilityTransformChanged();
+ onAccessibilityInversionChanged();
+ onAccessibilityActivated();
+ break;
+ case Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED:
+ onAccessibilityDaltonizerChanged();
+ onAccessibilityActivated();
+ break;
+ case Secure.ACCESSIBILITY_DISPLAY_DALTONIZER:
+ onAccessibilityDaltonizerChanged();
break;
case Secure.DISPLAY_WHITE_BALANCE_ENABLED:
- onDisplayWhiteBalanceEnabled(isDisplayWhiteBalanceSettingEnabled());
+ updateDisplayWhiteBalanceStatus();
break;
}
}
@@ -389,6 +605,9 @@
cr.registerContentObserver(
Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED),
false /* notifyForDescendants */, mContentObserver, mCurrentUser);
+ cr.registerContentObserver(
+ Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_DALTONIZER),
+ false /* notifyForDescendants */, mContentObserver, mCurrentUser);
cr.registerContentObserver(Secure.getUriFor(Secure.DISPLAY_WHITE_BALANCE_ENABLED),
false /* notifyForDescendants */, mContentObserver, mCurrentUser);
@@ -416,14 +635,9 @@
if (ColorDisplayManager.isDisplayWhiteBalanceAvailable(getContext())) {
// Prepare the display white balance transform matrix.
- mDisplayWhiteBalanceTintController
- .setUp(getContext(), DisplayTransformManager.needsLinearColorMatrix());
- if (mDisplayWhiteBalanceColorTemperature != null) {
- mDisplayWhiteBalanceTintController
- .setMatrix(mDisplayWhiteBalanceColorTemperature);
- }
+ mDisplayWhiteBalanceTintController.setUp(getContext(), true /* needsLinear */);
- onDisplayWhiteBalanceEnabled(isDisplayWhiteBalanceSettingEnabled());
+ updateDisplayWhiteBalanceStatus();
}
}
@@ -460,6 +674,8 @@
mNightDisplayAutoMode.onActivated(activated);
}
+ updateDisplayWhiteBalanceStatus();
+
applyTint(mNightDisplayTintController, false);
}
}
@@ -516,20 +732,49 @@
.setUp(getContext(), DisplayTransformManager.needsLinearColorMatrix(mode));
mNightDisplayTintController.setMatrix(mNightDisplayController.getColorTemperature());
- mDisplayWhiteBalanceTintController
- .setUp(getContext(), DisplayTransformManager.needsLinearColorMatrix(mode));
- if (mDisplayWhiteBalanceColorTemperature != null) {
- mDisplayWhiteBalanceTintController.setMatrix(mDisplayWhiteBalanceColorTemperature);
- }
+ updateDisplayWhiteBalanceStatus();
final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
dtm.setColorMode(mode, mNightDisplayTintController.getMatrix());
}
- private void onAccessibilityTransformChanged() {
+ private void onAccessibilityActivated() {
onDisplayColorModeChanged(mNightDisplayController.getColorMode());
}
+ /**
+ * Apply the accessibility daltonizer transform based on the settings value.
+ */
+ private void onAccessibilityDaltonizerChanged() {
+ final boolean enabled = Secure.getIntForUser(getContext().getContentResolver(),
+ Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0, mCurrentUser) != 0;
+ final int daltonizerMode = enabled ? Secure.getIntForUser(getContext().getContentResolver(),
+ Secure.ACCESSIBILITY_DISPLAY_DALTONIZER,
+ AccessibilityManager.DALTONIZER_CORRECT_DEUTERANOMALY, mCurrentUser)
+ : AccessibilityManager.DALTONIZER_DISABLED;
+
+ final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
+ if (daltonizerMode == AccessibilityManager.DALTONIZER_SIMULATE_MONOCHROMACY) {
+ // Monochromacy isn't supported by the native Daltonizer implementation; use grayscale.
+ dtm.setColorMatrix(DisplayTransformManager.LEVEL_COLOR_MATRIX_GRAYSCALE,
+ MATRIX_GRAYSCALE);
+ dtm.setDaltonizerMode(AccessibilityManager.DALTONIZER_DISABLED);
+ } else {
+ dtm.setColorMatrix(DisplayTransformManager.LEVEL_COLOR_MATRIX_GRAYSCALE, null);
+ dtm.setDaltonizerMode(daltonizerMode);
+ }
+ }
+
+ /**
+ * Apply the accessibility inversion transform based on the settings value.
+ */
+ private void onAccessibilityInversionChanged() {
+ final boolean enabled = Secure.getIntForUser(getContext().getContentResolver(),
+ Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, mCurrentUser) != 0;
+ final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
+ dtm.setColorMatrix(DisplayTransformManager.LEVEL_COLOR_MATRIX_INVERT_COLOR,
+ enabled ? MATRIX_INVERT_COLOR : null);
+ }
/**
* Applies current color temperature matrix, or removes it if deactivated.
@@ -611,10 +856,15 @@
return ldt.isBefore(compareTime) ? ldt.plusDays(1) : ldt;
}
- private void onDisplayWhiteBalanceEnabled(boolean enabled) {
- mDisplayWhiteBalanceTintController.setActivated(enabled);
- if (mDisplayWhiteBalanceListener != null) {
- mDisplayWhiteBalanceListener.onDisplayWhiteBalanceStatusChanged(enabled);
+ private void updateDisplayWhiteBalanceStatus() {
+ boolean oldActivated = mDisplayWhiteBalanceTintController.isActivated();
+ mDisplayWhiteBalanceTintController.setActivated(isDisplayWhiteBalanceSettingEnabled() &&
+ !mNightDisplayTintController.isActivated() &&
+ DisplayTransformManager.needsLinearColorMatrix());
+ boolean activated = mDisplayWhiteBalanceTintController.isActivated();
+
+ if (mDisplayWhiteBalanceListener != null && oldActivated != activated) {
+ mDisplayWhiteBalanceListener.onDisplayWhiteBalanceStatusChanged(activated);
}
}
@@ -652,6 +902,22 @@
return LocalDateTime.MIN;
}
+ private boolean setAppSaturationLevelInternal(String packageName, int saturationLevel) {
+ return mAppSaturationController
+ .setSaturationLevel(packageName, mCurrentUser, saturationLevel);
+ }
+
+ private void dumpInternal(PrintWriter pw) {
+ pw.println("COLOR DISPLAY MANAGER dumpsys (color_display)");
+ pw.println("Night Display:");
+ if (ColorDisplayManager.isNightDisplayAvailable(getContext())) {
+ pw.println(" Activated: " + mNightDisplayTintController.isActivated());
+ } else {
+ pw.println(" Not available");
+ }
+ mAppSaturationController.dump(pw);
+ }
+
private abstract class NightDisplayAutoMode {
public abstract void onActivated(boolean activated);
@@ -896,6 +1162,12 @@
}
/**
+ * Dump debug information.
+ */
+ public void dump(PrintWriter pw) {
+ }
+
+ /**
* Set up any constants needed for computing the matrix.
*/
public abstract void setUp(Context context, boolean needsLinear);
@@ -929,11 +1201,10 @@
*/
public boolean setDisplayWhiteBalanceColorTemperature(int cct) {
// Update the transform matrix even if it can't be applied.
- mDisplayWhiteBalanceColorTemperature = cct;
mDisplayWhiteBalanceTintController.setMatrix(cct);
if (mDisplayWhiteBalanceTintController.isActivated()) {
- applyTint(mDisplayWhiteBalanceTintController, true);
+ applyTint(mDisplayWhiteBalanceTintController, false);
return true;
}
return false;
@@ -946,6 +1217,20 @@
mDisplayWhiteBalanceListener = listener;
return mDisplayWhiteBalanceTintController.isActivated();
}
+
+ public void dump(PrintWriter pw) {
+ mDisplayWhiteBalanceTintController.dump(pw);
+ }
+
+ /**
+ * Adds a {@link WeakReference<ColorTransformController>} for a newly started activity, and
+ * invokes {@link ColorTransformController#applyAppSaturation(float[], float[])} if needed.
+ */
+ public boolean attachColorTransformController(String packageName, int uid,
+ WeakReference<ColorTransformController> controller) {
+ return mAppSaturationController
+ .addColorTransformController(packageName, uid, controller);
+ }
}
/**
@@ -977,6 +1262,15 @@
}
}
+ /**
+ * Interface for applying transforms to a given AppWindow.
+ */
+ public interface ColorTransformController {
+
+ /** Apply the given saturation (grayscale) matrix to the associated AppWindow. */
+ void applyAppSaturation(@Size(9) float[] matrix, @Size(3) float[] translation);
+ }
+
private final class BinderService extends IColorDisplayManager.Stub {
@Override
@@ -1010,5 +1304,30 @@
}
return true;
}
+
+ @Override
+ public boolean setAppSaturationLevel(String packageName, int level) {
+ getContext().enforceCallingPermission(
+ Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
+ "Permission required to set display saturation level");
+ final long token = Binder.clearCallingIdentity();
+ try {
+ return setAppSaturationLevelInternal(packageName, level);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (!DumpUtils.checkDumpPermission(getContext(), TAG, pw)) return;
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ dumpInternal(pw);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
}
}
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 4a17c65..cb3f91b 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -95,6 +95,7 @@
import com.android.server.UiThread;
import com.android.server.wm.SurfaceAnimationThread;
import com.android.server.wm.WindowManagerInternal;
+import com.android.server.display.ColorDisplayService.ColorDisplayServiceInternal;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -791,6 +792,16 @@
}
}
+ private void setVirtualDisplayStateInternal(IBinder appToken, boolean isOn) {
+ synchronized (mSyncRoot) {
+ if (mVirtualDisplayAdapter == null) {
+ return;
+ }
+
+ mVirtualDisplayAdapter.setVirtualDisplayStateLocked(appToken, isOn);
+ }
+ }
+
private void registerDefaultDisplayAdapters() {
// Register default display adapters.
synchronized (mSyncRoot) {
@@ -1459,6 +1470,13 @@
pw.println();
mPersistentDataStore.dump(pw);
+
+ final ColorDisplayServiceInternal cds = LocalServices.getService(
+ ColorDisplayServiceInternal.class);
+ if (cds != null) {
+ pw.println();
+ cds.dump(pw);
+ }
}
}
@@ -1922,6 +1940,16 @@
}
@Override // Binder call
+ public void setVirtualDisplayState(IVirtualDisplayCallback callback, boolean isOn) {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ setVirtualDisplayStateInternal(callback.asBinder(), isOn);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
diff --git a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
index 5aa585f..1ca8dd3 100644
--- a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
@@ -147,6 +147,13 @@
return device;
}
+ void setVirtualDisplayStateLocked(IBinder appToken, boolean isOn) {
+ VirtualDisplayDevice device = mVirtualDisplayDevices.get(appToken);
+ if (device != null) {
+ device.setDisplayState(isOn);
+ }
+ }
+
/**
* Returns the next unique index for the uniqueIdPrefix
*/
@@ -206,6 +213,7 @@
private int mPendingChanges;
private int mUniqueIndex;
private Display.Mode mMode;
+ private boolean mIsDisplayOn;
public VirtualDisplayDevice(IBinder displayToken, IBinder appToken,
int ownerUid, String ownerPackageName,
@@ -226,6 +234,7 @@
mDisplayState = Display.STATE_UNKNOWN;
mPendingChanges |= PENDING_SURFACE_CHANGE;
mUniqueIndex = uniqueIndex;
+ mIsDisplayOn = surface != null;
}
@Override
@@ -304,6 +313,14 @@
}
}
+ void setDisplayState(boolean isOn) {
+ if (mIsDisplayOn != isOn) {
+ mIsDisplayOn = isOn;
+ mInfo = null;
+ sendDisplayDeviceEventLocked(this, DISPLAY_DEVICE_EVENT_CHANGED);
+ }
+ }
+
public void stopLocked() {
setSurfaceLocked(null);
mStopped = true;
@@ -375,7 +392,9 @@
mInfo.type = Display.TYPE_VIRTUAL;
mInfo.touch = ((mFlags & VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH) == 0) ?
DisplayDeviceInfo.TOUCH_NONE : DisplayDeviceInfo.TOUCH_VIRTUAL;
- mInfo.state = mSurface != null ? Display.STATE_ON : Display.STATE_OFF;
+
+ mInfo.state = mIsDisplayOn ? Display.STATE_ON : Display.STATE_OFF;
+
mInfo.ownerUid = mOwnerUid;
mInfo.ownerPackageName = mOwnerPackageName;
}
diff --git a/services/core/java/com/android/server/hdmi/ArcInitiationActionFromAvr.java b/services/core/java/com/android/server/hdmi/ArcInitiationActionFromAvr.java
index 18d328d..137833c 100644
--- a/services/core/java/com/android/server/hdmi/ArcInitiationActionFromAvr.java
+++ b/services/core/java/com/android/server/hdmi/ArcInitiationActionFromAvr.java
@@ -51,6 +51,13 @@
}
switch (cmd.getOpcode()) {
case Constants.MESSAGE_FEATURE_ABORT:
+ if ((cmd.getParams()[0] & 0xFF) == Constants.MESSAGE_INITIATE_ARC) {
+ audioSystem().setArcStatus(false);
+ finish();
+ return true;
+ } else {
+ return false;
+ }
case Constants.MESSAGE_REPORT_ARC_TERMINATED:
audioSystem().setArcStatus(false);
finish();
diff --git a/services/core/java/com/android/server/hdmi/Constants.java b/services/core/java/com/android/server/hdmi/Constants.java
index ff029c1..297a418 100644
--- a/services/core/java/com/android/server/hdmi/Constants.java
+++ b/services/core/java/com/android/server/hdmi/Constants.java
@@ -17,6 +17,7 @@
package com.android.server.hdmi;
import android.annotation.IntDef;
+import android.annotation.StringDef;
import android.hardware.hdmi.HdmiDeviceInfo;
import java.lang.annotation.Retention;
@@ -222,6 +223,15 @@
static final int AUDIO_CODEC_WMAPRO = 0xE; // Support WMA-Pro
static final int AUDIO_CODEC_MAX = 0xF;
+ @StringDef({
+ AUDIO_DEVICE_ARC_IN,
+ AUDIO_DEVICE_SPDIF,
+ })
+ public @interface AudioDevice {}
+
+ static final String AUDIO_DEVICE_ARC_IN = "ARC_IN";
+ static final String AUDIO_DEVICE_SPDIF = "SPDIF";
+
// Bit mask used to get the routing path of the top level device.
// When &'d with the path 1.2.2.0 (0x1220), for instance, gives 1.0.0.0.
static final int ROUTING_PATH_TOP_MASK = 0xF000;
diff --git a/services/core/java/com/android/server/hdmi/DetectTvSystemAudioModeSupportAction.java b/services/core/java/com/android/server/hdmi/DetectTvSystemAudioModeSupportAction.java
index 0495ff8..7187319 100644
--- a/services/core/java/com/android/server/hdmi/DetectTvSystemAudioModeSupportAction.java
+++ b/services/core/java/com/android/server/hdmi/DetectTvSystemAudioModeSupportAction.java
@@ -50,8 +50,10 @@
if (mState != STATE_WAITING_FOR_FEATURE_ABORT) {
return false;
}
- finishAction(false);
- return true;
+ if ((cmd.getParams()[0] & 0xFF) == Constants.MESSAGE_SET_SYSTEM_AUDIO_MODE) {
+ finishAction(false);
+ return true;
+ }
}
return false;
}
diff --git a/services/core/java/com/android/server/hdmi/DeviceDiscoveryAction.java b/services/core/java/com/android/server/hdmi/DeviceDiscoveryAction.java
index ba21b78..df0dc77 100755
--- a/services/core/java/com/android/server/hdmi/DeviceDiscoveryAction.java
+++ b/services/core/java/com/android/server/hdmi/DeviceDiscoveryAction.java
@@ -16,6 +16,7 @@
package com.android.server.hdmi;
+import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.util.Slog;
@@ -51,6 +52,10 @@
private static final int STATE_WAITING_FOR_OSD_NAME = 3;
// State in which the action is waiting for gathering vendor id of non-local devices.
private static final int STATE_WAITING_FOR_VENDOR_ID = 4;
+ // State in which the action is waiting for devices to be ready.
+ private static final int STATE_WAITING_FOR_DEVICES = 5;
+ // State in which the action is waiting for gathering power status of non-local devices.
+ private static final int STATE_WAITING_FOR_POWER = 6;
/**
* Interface used to report result of device discovery.
@@ -72,6 +77,7 @@
private int mPhysicalAddress = Constants.INVALID_PHYSICAL_ADDRESS;
private int mPortId = Constants.INVALID_PORT_ID;
private int mVendorId = Constants.UNKNOWN_VENDOR_ID;
+ private int mPowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN;
private String mDisplayName = "";
private int mDeviceType = HdmiDeviceInfo.DEVICE_INACTIVE;
@@ -81,7 +87,7 @@
private HdmiDeviceInfo toHdmiDeviceInfo() {
return new HdmiDeviceInfo(mLogicalAddress, mPhysicalAddress, mPortId, mDeviceType,
- mVendorId, mDisplayName);
+ mVendorId, mDisplayName, mPowerStatus);
}
}
@@ -89,7 +95,20 @@
private final DeviceDiscoveryCallback mCallback;
private int mProcessedDeviceCount = 0;
private int mTimeoutRetry = 0;
- private boolean mIsTvDevice = source().mService.isTvDevice();
+ private boolean mIsTvDevice = localDevice().mService.isTvDevice();
+ private final int mDelayPeriod;
+
+ /**
+ * Constructor.
+ *
+ * @param source an instance of {@link HdmiCecLocalDevice}.
+ * @param delay delay action for this period between query Physical Address and polling
+ */
+ DeviceDiscoveryAction(HdmiCecLocalDevice source, DeviceDiscoveryCallback callback, int delay) {
+ super(source);
+ mCallback = Preconditions.checkNotNull(callback);
+ mDelayPeriod = delay;
+ }
/**
* Constructor.
@@ -97,8 +116,7 @@
* @param source an instance of {@link HdmiCecLocalDevice}.
*/
DeviceDiscoveryAction(HdmiCecLocalDevice source, DeviceDiscoveryCallback callback) {
- super(source);
- mCallback = Preconditions.checkNotNull(callback);
+ this(source, callback, 0);
}
@Override
@@ -117,7 +135,11 @@
Slog.v(TAG, "Device detected: " + ackedAddress);
allocateDevices(ackedAddress);
- startPhysicalAddressStage();
+ if (mDelayPeriod > 0) {
+ startToDelayAction();
+ } else {
+ startPhysicalAddressStage();
+ }
}
}, Constants.POLL_ITERATION_REVERSE_ORDER
| Constants.POLL_STRATEGY_REMOTES_DEVICES, HdmiConfig.DEVICE_POLLING_RETRY);
@@ -131,6 +153,13 @@
}
}
+ private void startToDelayAction() {
+ Slog.v(TAG, "Waiting for connected devices to be ready");
+ mState = STATE_WAITING_FOR_DEVICES;
+
+ checkAndProceedStage();
+ }
+
private void startPhysicalAddressStage() {
Slog.v(TAG, "Start [Physical Address Stage]:" + mDevices.size());
mProcessedDeviceCount = 0;
@@ -159,6 +188,11 @@
addTimer(mState, HdmiConfig.TIMEOUT_MS);
}
+ private void delayActionWithTimePeriod(int timeDelay) {
+ mActionTimer.clearTimerMessage();
+ addTimer(mState, timeDelay);
+ }
+
private void startOsdNameStage() {
Slog.v(TAG, "Start [Osd Name Stage]:" + mDevices.size());
mProcessedDeviceCount = 0;
@@ -207,6 +241,29 @@
addTimer(mState, HdmiConfig.TIMEOUT_MS);
}
+ private void startPowerStatusStage() {
+ Slog.v(TAG, "Start [Power Status Stage]:" + mDevices.size());
+ mProcessedDeviceCount = 0;
+ mState = STATE_WAITING_FOR_POWER;
+
+ checkAndProceedStage();
+ }
+
+ private void queryPowerStatus(int address) {
+ if (!verifyValidLogicalAddress(address)) {
+ checkAndProceedStage();
+ return;
+ }
+
+ mActionTimer.clearTimerMessage();
+
+ if (mayProcessMessageIfCached(address, Constants.MESSAGE_REPORT_POWER_STATUS)) {
+ return;
+ }
+ sendCommand(HdmiCecMessageBuilder.buildGiveDevicePowerStatus(getSourceAddress(), address));
+ addTimer(mState, HdmiConfig.TIMEOUT_MS);
+ }
+
private boolean mayProcessMessageIfCached(int address, int opcode) {
HdmiCecMessage message = getCecMessageCache().getMessage(address, opcode);
if (message != null) {
@@ -245,6 +302,16 @@
return true;
}
return false;
+ case STATE_WAITING_FOR_POWER:
+ if (cmd.getOpcode() == Constants.MESSAGE_REPORT_POWER_STATUS) {
+ handleReportPowerStatus(cmd);
+ return true;
+ } else if ((cmd.getOpcode() == Constants.MESSAGE_FEATURE_ABORT)
+ && ((cmd.getParams()[0] & 0xFF) == Constants.MESSAGE_REPORT_POWER_STATUS)) {
+ handleReportPowerStatus(cmd);
+ return true;
+ }
+ return false;
case STATE_WAITING_FOR_DEVICE_POLLING:
// Fall through.
default:
@@ -266,6 +333,7 @@
current.mPhysicalAddress = HdmiUtils.twoBytesToInt(params);
current.mPortId = getPortId(current.mPhysicalAddress);
current.mDeviceType = params[2] & 0xFF;
+ current.mDisplayName = HdmiUtils.getDefaultDeviceName(current.mDeviceType);
// TODO(amyjojo): check if non-TV device needs to update cec switch info.
// This is to manager CEC device separately in case they don't have address.
@@ -329,6 +397,26 @@
checkAndProceedStage();
}
+ private void handleReportPowerStatus(HdmiCecMessage cmd) {
+ Preconditions.checkState(mProcessedDeviceCount < mDevices.size());
+
+ DeviceInfo current = mDevices.get(mProcessedDeviceCount);
+ if (current.mLogicalAddress != cmd.getSource()) {
+ Slog.w(TAG, "Unmatched address[expected:" + current.mLogicalAddress + ", actual:"
+ + cmd.getSource());
+ return;
+ }
+
+ if (cmd.getOpcode() != Constants.MESSAGE_FEATURE_ABORT) {
+ byte[] params = cmd.getParams();
+ int powerStatus = params[0] & 0xFF;
+ current.mPowerStatus = powerStatus;
+ }
+
+ increaseProcessedDeviceCount();
+ checkAndProceedStage();
+ }
+
private void increaseProcessedDeviceCount() {
mProcessedDeviceCount++;
mTimeoutRetry = 0;
@@ -372,6 +460,9 @@
startVendorIdStage();
return;
case STATE_WAITING_FOR_VENDOR_ID:
+ startPowerStatusStage();
+ return;
+ case STATE_WAITING_FOR_POWER:
wrapUpAndFinish();
return;
default:
@@ -385,6 +476,9 @@
private void sendQueryCommand() {
int address = mDevices.get(mProcessedDeviceCount).mLogicalAddress;
switch (mState) {
+ case STATE_WAITING_FOR_DEVICES:
+ delayActionWithTimePeriod(mDelayPeriod);
+ return;
case STATE_WAITING_FOR_PHYSICAL_ADDRESS:
queryPhysicalAddress(address);
return;
@@ -394,6 +488,9 @@
case STATE_WAITING_FOR_VENDOR_ID:
queryVendorId(address);
return;
+ case STATE_WAITING_FOR_POWER:
+ queryPowerStatus(address);
+ return;
default:
return;
}
@@ -405,13 +502,24 @@
return;
}
+ if (mState == STATE_WAITING_FOR_DEVICES) {
+ startPhysicalAddressStage();
+ return;
+ }
if (++mTimeoutRetry < HdmiConfig.TIMEOUT_RETRY) {
sendQueryCommand();
return;
}
mTimeoutRetry = 0;
Slog.v(TAG, "Timeout[State=" + mState + ", Processed=" + mProcessedDeviceCount);
- removeDevice(mProcessedDeviceCount);
+ if (mState != STATE_WAITING_FOR_POWER && mState != STATE_WAITING_FOR_OSD_NAME) {
+ // We don't need to remove the device info if the power status is unknown.
+ // Some device does not have preferred OSD name and does not respond to Give OSD name.
+ // Like LG TV. We can give it default device name and not remove it.
+ removeDevice(mProcessedDeviceCount);
+ } else {
+ increaseProcessedDeviceCount();
+ }
checkAndProceedStage();
}
}
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecController.java b/services/core/java/com/android/server/hdmi/HdmiCecController.java
index e777ce8..86be585 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecController.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecController.java
@@ -77,7 +77,7 @@
private static final int NUM_LOGICAL_ADDRESS = 16;
- private static final int MAX_CEC_MESSAGE_HISTORY = 20;
+ private static final int MAX_CEC_MESSAGE_HISTORY = 200;
// Predicate for whether the given logical address is remote device's one or not.
private final Predicate<Integer> mRemoteDeviceAddressPredicate = new Predicate<Integer>() {
@@ -682,7 +682,7 @@
void dump(final IndentingPrintWriter pw) {
for (int i = 0; i < mLocalDevices.size(); ++i) {
- pw.println("HdmiCecLocalDevice #" + i + ":");
+ pw.println("HdmiCecLocalDevice #" + mLocalDevices.keyAt(i) + ":");
pw.increaseIndent();
mLocalDevices.valueAt(i).dump(pw);
pw.decreaseIndent();
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
index 32dc0261..414f6bb 100755
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
@@ -56,16 +56,12 @@
// Within the timer, a received <User Control Pressed> will start "Press and Hold" behavior.
// When it expires, we can assume <User Control Release> is received.
private static final int FOLLOWER_SAFETY_TIMEOUT = 550;
- /**
- * Return value of {@link #getLocalPortFromPhysicalAddress(int)}
- */
- private static final int TARGET_NOT_UNDER_LOCAL_DEVICE = -1;
- private static final int TARGET_SAME_PHYSICAL_ADDRESS = 0;
protected final HdmiControlService mService;
protected final int mDeviceType;
protected int mAddress;
protected int mPreferredAddress;
+ @GuardedBy("mLock")
protected HdmiDeviceInfo mDeviceInfo;
protected int mLastKeycode = HdmiCecKeycode.UNSUPPORTED_KEYCODE;
protected int mLastKeyRepeatCount = 0;
@@ -717,16 +713,18 @@
return mDeviceType;
}
- @ServiceThreadOnly
+ @GuardedBy("mLock")
HdmiDeviceInfo getDeviceInfo() {
- assertRunOnServiceThread();
- return mDeviceInfo;
+ synchronized (mLock) {
+ return mDeviceInfo;
+ }
}
- @ServiceThreadOnly
+ @GuardedBy("mLock")
void setDeviceInfo(HdmiDeviceInfo info) {
- assertRunOnServiceThread();
- mDeviceInfo = info;
+ synchronized (mLock) {
+ mDeviceInfo = info;
+ }
}
// Returns true if the logical address is same as the argument.
@@ -1058,47 +1056,6 @@
pw.println(String.format("mActiveRoutingPath: 0x%04x", mActiveRoutingPath));
}
- /**
- * Method to parse target physical address to the port number on the current device.
- *
- * <p>This check assumes target address is valid.
- * @param targetPhysicalAddress is the physical address of the target device
- * @return
- * If the target device is under the current device, return the port number of current device
- * that the target device is connected to.
- *
- * <p>If the target device has the same physical address as the current device, return
- * {@link #TARGET_SAME_PHYSICAL_ADDRESS}.
- *
- * <p>If the target device is not under the current device, return
- * {@link #TARGET_NOT_UNDER_LOCAL_DEVICE}.
- */
- protected int getLocalPortFromPhysicalAddress(int targetPhysicalAddress) {
- int myPhysicalAddress = mService.getPhysicalAddress();
- if (myPhysicalAddress == targetPhysicalAddress) {
- return TARGET_SAME_PHYSICAL_ADDRESS;
- }
- int finalMask = 0xF000;
- int mask;
- int port = 0;
- for (mask = 0x0F00; mask > 0x000F; mask >>= 4) {
- if ((myPhysicalAddress & mask) == 0) {
- port = mask & targetPhysicalAddress;
- break;
- } else {
- finalMask |= mask;
- }
- }
- if (finalMask != 0xFFFF && (finalMask & targetPhysicalAddress) == myPhysicalAddress) {
- while (mask != 0x000F) {
- mask >>= 4;
- port >>= 4;
- }
- return port;
- }
- return TARGET_NOT_UNDER_LOCAL_DEVICE;
- }
-
/** Calculates the physical address for {@code activePortId}.
*
* <p>This method assumes current device physical address is valid.
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
index 0e4e334..63214ed 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
@@ -26,22 +26,38 @@
import android.hardware.hdmi.HdmiPortInfo;
import android.hardware.hdmi.IHdmiControlCallback;
import android.media.AudioDeviceInfo;
+import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioSystem;
import android.media.tv.TvContract;
import android.os.SystemProperties;
+import android.provider.Settings.Global;
import android.util.Slog;
import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.IndentingPrintWriter;
import com.android.server.hdmi.Constants.AudioCodec;
import com.android.server.hdmi.DeviceDiscoveryAction.DeviceDiscoveryCallback;
import com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly;
+import com.android.server.hdmi.HdmiUtils.CodecSad;
+import com.android.server.hdmi.HdmiUtils.DeviceConfig;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
+import java.util.stream.Collectors;
+
/**
* Represent a logical device of type {@link HdmiDeviceInfo#DEVICE_AUDIO_SYSTEM} residing in Android
@@ -77,25 +93,28 @@
// processing.
private final HashMap<Integer, String> mTvInputs = new HashMap<>();
+ // Copy of mDeviceInfos to guarantee thread-safety.
+ @GuardedBy("mLock")
+ private List<HdmiDeviceInfo> mSafeAllDeviceInfos = Collections.emptyList();
+
// Map-like container of all cec devices.
// device id is used as key of container.
private final SparseArray<HdmiDeviceInfo> mDeviceInfos = new SparseArray<>();
protected HdmiCecLocalDeviceAudioSystem(HdmiControlService service) {
super(service, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM);
- mSystemAudioControlFeatureEnabled = true;
- // TODO(amyjojo) make System Audio Control controllable by users
- /*mSystemAudioControlFeatureEnabled =
- mService.readBooleanSetting(Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, true);*/
- // TODO(amyjojo): make the map ro property.
- mTvInputs.put(Constants.CEC_SWITCH_HDMI1,
- "com.droidlogic.tvinput/.services.Hdmi1InputService/HW5");
- mTvInputs.put(Constants.CEC_SWITCH_HDMI2,
- "com.droidlogic.tvinput/.services.Hdmi2InputService/HW6");
- mTvInputs.put(Constants.CEC_SWITCH_HDMI3,
- "com.droidlogic.tvinput/.services.Hdmi3InputService/HW7");
+ mRoutingControlFeatureEnabled =
+ mService.readBooleanSetting(Global.HDMI_CEC_SWITCH_ENABLED, false);
+ mSystemAudioControlFeatureEnabled =
+ mService.readBooleanSetting(Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, true);
+ // TODO(amyjojo): Maintain a portId to TvinputId map.
+ mTvInputs.put(2, "com.droidlogic.tvinput/.services.Hdmi1InputService/HW5");
+ mTvInputs.put(4, "com.droidlogic.tvinput/.services.Hdmi2InputService/HW6");
+ mTvInputs.put(1, "com.droidlogic.tvinput/.services.Hdmi3InputService/HW7");
}
+ private static final String SHORT_AUDIO_DESCRIPTOR_CONFIG_PATH = "/vendor/etc/sadConfig.xml";
+
/**
* Called when a device is newly added or a new device is detected or
* an existing device is updated.
@@ -167,6 +186,7 @@
removeDeviceInfo(deviceInfo.getId());
}
mDeviceInfos.append(deviceInfo.getId(), deviceInfo);
+ updateSafeDeviceInfoList();
return oldDeviceInfo;
}
@@ -184,6 +204,7 @@
if (deviceInfo != null) {
mDeviceInfos.remove(id);
}
+ updateSafeDeviceInfoList();
return deviceInfo;
}
@@ -200,6 +221,24 @@
return mDeviceInfos.get(HdmiDeviceInfo.idForCecDevice(logicalAddress));
}
+ @ServiceThreadOnly
+ private void updateSafeDeviceInfoList() {
+ assertRunOnServiceThread();
+ List<HdmiDeviceInfo> copiedDevices = HdmiUtils.sparseArrayToList(mDeviceInfos);
+ synchronized (mLock) {
+ mSafeAllDeviceInfos = copiedDevices;
+ }
+ }
+
+ @GuardedBy("mLock")
+ List<HdmiDeviceInfo> getSafeCecDevicesLocked() {
+ ArrayList<HdmiDeviceInfo> infoList = new ArrayList<>();
+ for (HdmiDeviceInfo info : mSafeAllDeviceInfos) {
+ infoList.add(info);
+ }
+ return infoList;
+ }
+
private void invokeDeviceEventListener(HdmiDeviceInfo info, int status) {
mService.invokeDeviceEventListeners(info, status);
}
@@ -229,7 +268,7 @@
mTvSystemAudioModeSupport = false;
// Record the last state of System Audio Control before going to standby
synchronized (mLock) {
- SystemProperties.set(
+ mService.writeStringSetting(
Constants.PROPERTY_LAST_SYSTEM_AUDIO_CONTROL,
mSystemAudioActivated ? "true" : "false");
}
@@ -240,6 +279,10 @@
@ServiceThreadOnly
protected void onAddressAllocated(int logicalAddress, int reason) {
assertRunOnServiceThread();
+ if (reason == mService.INITIATED_BY_ENABLE_CEC) {
+ mService.setAndBroadcastActiveSource(mService.getPhysicalAddress(),
+ getDeviceInfo().getDeviceType(), Constants.ADDR_BROADCAST);
+ }
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(
mAddress, mService.getPhysicalAddress(), mDeviceType));
@@ -259,7 +302,10 @@
@Override
protected int findKeyReceiverAddress() {
- return Constants.ADDR_TV;
+ if (getActiveSource().isValid()) {
+ return getActiveSource().logicalAddress;
+ }
+ return Constants.ADDR_INVALID;
}
@VisibleForTesting
@@ -267,7 +313,7 @@
int systemAudioOnPowerOnProp, boolean lastSystemAudioControlStatus) {
if ((systemAudioOnPowerOnProp == ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON)
|| ((systemAudioOnPowerOnProp == USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON)
- && lastSystemAudioControlStatus)) {
+ && lastSystemAudioControlStatus && isSystemAudioControlFeatureEnabled())) {
addAndStartAction(new SystemAudioInitiationActionFromAvr(this));
}
}
@@ -284,7 +330,7 @@
@ServiceThreadOnly
protected void setPreferredAddress(int addr) {
assertRunOnServiceThread();
- SystemProperties.set(
+ mService.writeStringSetting(
Constants.PROPERTY_PREFERRED_ADDRESS_AUDIO_SYSTEM, String.valueOf(addr));
}
@@ -400,8 +446,11 @@
@ServiceThreadOnly
protected boolean handleGiveAudioStatus(HdmiCecMessage message) {
assertRunOnServiceThread();
-
- reportAudioStatus(message);
+ if (isSystemAudioControlFeatureEnabled()) {
+ reportAudioStatus(message.getSource());
+ } else {
+ mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED);
+ }
return true;
}
@@ -420,7 +469,7 @@
protected boolean handleRequestArcInitiate(HdmiCecMessage message) {
assertRunOnServiceThread();
removeAction(ArcInitiationActionFromAvr.class);
- if (!SystemProperties.getBoolean(Constants.PROPERTY_ARC_SUPPORT, true)) {
+ if (!mService.readBooleanSetting(Constants.PROPERTY_ARC_SUPPORT, true)) {
mService.maySendFeatureAbortCommand(message, Constants.ABORT_UNRECOGNIZED_OPCODE);
} else if (!isDirectConnectToTv()) {
HdmiLogger.debug("AVR device is not directly connected with TV");
@@ -459,13 +508,35 @@
mService.maySendFeatureAbortCommand(message, Constants.ABORT_NOT_IN_CORRECT_MODE);
return true;
}
- AudioDeviceInfo deviceInfo = getSystemAudioDeviceInfo();
- if (deviceInfo == null) {
- mService.maySendFeatureAbortCommand(message, Constants.ABORT_UNABLE_TO_DETERMINE);
- return true;
+
+ List<DeviceConfig> config = null;
+ File file = new File(SHORT_AUDIO_DESCRIPTOR_CONFIG_PATH);
+ if (file.exists()) {
+ try {
+ InputStream in = new FileInputStream(file);
+ config = HdmiUtils.ShortAudioDescriptorXmlParser.parse(in);
+ in.close();
+ } catch (IOException e) {
+ Slog.e(TAG, "Error reading file: " + file, e);
+ } catch (XmlPullParserException e) {
+ Slog.e(TAG, "Unable to parse file: " + file, e);
+ }
}
+
@AudioCodec int[] audioFormatCodes = parseAudioFormatCodes(message.getParams());
- byte[] sadBytes = getSupportedShortAudioDescriptors(deviceInfo, audioFormatCodes);
+ byte[] sadBytes;
+ if (config != null && config.size() > 0) {
+ sadBytes = getSupportedShortAudioDescriptorsFromConfig(config, audioFormatCodes);
+ } else {
+ AudioDeviceInfo deviceInfo = getSystemAudioDeviceInfo();
+ if (deviceInfo == null) {
+ mService.maySendFeatureAbortCommand(message, Constants.ABORT_UNABLE_TO_DETERMINE);
+ return true;
+ }
+
+ sadBytes = getSupportedShortAudioDescriptors(deviceInfo, audioFormatCodes);
+ }
+
if (sadBytes.length == 0) {
mService.maySendFeatureAbortCommand(message, Constants.ABORT_INVALID_OPERAND);
} else {
@@ -478,14 +549,127 @@
private byte[] getSupportedShortAudioDescriptors(
AudioDeviceInfo deviceInfo, @AudioCodec int[] audioFormatCodes) {
- // TODO(b/80297701) implement
- return new byte[] {};
+ ArrayList<byte[]> sads = new ArrayList<>(audioFormatCodes.length);
+ for (@AudioCodec int audioFormatCode : audioFormatCodes) {
+ byte[] sad = getSupportedShortAudioDescriptor(deviceInfo, audioFormatCode);
+ if (sad != null) {
+ if (sad.length == 3) {
+
+ sads.add(sad);
+ } else {
+ HdmiLogger.warning(
+ "Dropping Short Audio Descriptor with length %d for requested codec %x",
+ sad.length, audioFormatCode);
+ }
+ }
+ }
+ return getShortAudioDescriptorBytes(sads);
+ }
+
+ private byte[] getSupportedShortAudioDescriptorsFromConfig(
+ List<DeviceConfig> deviceConfig, @AudioCodec int[] audioFormatCodes) {
+ DeviceConfig deviceConfigToUse = null;
+ for (DeviceConfig device : deviceConfig) {
+ // TODO(amyjojo) use PROPERTY_SYSTEM_AUDIO_MODE_AUDIO_PORT to get the audio device name
+ if (device.name.equals("VX_AUDIO_DEVICE_IN_HDMI_ARC")) {
+ deviceConfigToUse = device;
+ break;
+ }
+ }
+ if (deviceConfigToUse == null) {
+ // TODO(amyjojo) use PROPERTY_SYSTEM_AUDIO_MODE_AUDIO_PORT to get the audio device name
+ Slog.w(TAG, "sadConfig.xml does not have required device info for "
+ + "VX_AUDIO_DEVICE_IN_HDMI_ARC");
+ return new byte[0];
+ }
+ HashMap<Integer, byte[]> map = new HashMap<>();
+ ArrayList<byte[]> sads = new ArrayList<>(audioFormatCodes.length);
+ for (CodecSad codecSad : deviceConfigToUse.supportedCodecs) {
+ map.put(codecSad.audioCodec, codecSad.sad);
+ }
+ for (int i = 0; i < audioFormatCodes.length; i++) {
+ if (map.containsKey(audioFormatCodes[i])) {
+ byte[] sad = map.get(audioFormatCodes[i]);
+ if (sad != null && sad.length == 3) {
+ sads.add(sad);
+ }
+ }
+ }
+ return getShortAudioDescriptorBytes(sads);
+ }
+
+ private byte[] getShortAudioDescriptorBytes(ArrayList<byte[]> sads) {
+ // Short Audio Descriptors are always 3 bytes long.
+ byte[] bytes = new byte[sads.size() * 3];
+ int index = 0;
+ for (byte[] sad : sads) {
+ System.arraycopy(sad, 0, bytes, index, 3);
+ index += 3;
+ }
+ return bytes;
+ }
+
+ /**
+ * Returns a 3 byte short audio descriptor as described in CEC 1.4 table 29 or null if the
+ * audioFormatCode is not supported.
+ */
+ @Nullable
+ private byte[] getSupportedShortAudioDescriptor(
+ AudioDeviceInfo deviceInfo, @AudioCodec int audioFormatCode) {
+ switch (audioFormatCode) {
+ case Constants.AUDIO_CODEC_NONE: {
+ return null;
+ }
+ case Constants.AUDIO_CODEC_LPCM: {
+ return getLpcmShortAudioDescriptor(deviceInfo);
+ }
+ // TODO(b/80297701): implement the rest of the codecs
+ case Constants.AUDIO_CODEC_DD:
+ case Constants.AUDIO_CODEC_MPEG1:
+ case Constants.AUDIO_CODEC_MP3:
+ case Constants.AUDIO_CODEC_MPEG2:
+ case Constants.AUDIO_CODEC_AAC:
+ case Constants.AUDIO_CODEC_DTS:
+ case Constants.AUDIO_CODEC_ATRAC:
+ case Constants.AUDIO_CODEC_ONEBITAUDIO:
+ case Constants.AUDIO_CODEC_DDP:
+ case Constants.AUDIO_CODEC_DTSHD:
+ case Constants.AUDIO_CODEC_TRUEHD:
+ case Constants.AUDIO_CODEC_DST:
+ case Constants.AUDIO_CODEC_WMAPRO:
+ default: {
+ return null;
+ }
+ }
+ }
+
+ @Nullable
+ private byte[] getLpcmShortAudioDescriptor(AudioDeviceInfo deviceInfo) {
+ // TODO(b/80297701): implement
+ return null;
}
@Nullable
private AudioDeviceInfo getSystemAudioDeviceInfo() {
- // TODO(b/80297701) implement
- // Get the audio device used for system audio mode.
+ AudioManager audioManager = mService.getContext().getSystemService(AudioManager.class);
+ if (audioManager == null) {
+ HdmiLogger.error(
+ "Error getting system audio device because AudioManager not available.");
+ return null;
+ }
+ AudioDeviceInfo[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS);
+ HdmiLogger.debug("Found %d audio input devices", devices.length);
+ for (AudioDeviceInfo device : devices) {
+ HdmiLogger.debug("%s at port %s", device.getProductName(), device.getPort());
+ HdmiLogger.debug("Supported encodings are %s",
+ Arrays.stream(device.getEncodings()).mapToObj(
+ AudioFormat::toLogFriendlyEncoding
+ ).collect(Collectors.joining(", ")));
+ // TODO(b/80297701) use the actual device type that system audio mode is connected to.
+ if (device.getType() == AudioDeviceInfo.TYPE_HDMI_ARC) {
+ return device;
+ }
+ }
return null;
}
@@ -583,17 +767,20 @@
.setWiredDeviceConnectionState(AudioSystem.DEVICE_IN_HDMI, enabled ? 1 : 0, "", "");
}
- private void reportAudioStatus(HdmiCecMessage message) {
+ void reportAudioStatus(int source) {
assertRunOnServiceThread();
int volume = mService.getAudioManager().getStreamVolume(AudioManager.STREAM_MUSIC);
boolean mute = mService.getAudioManager().isStreamMute(AudioManager.STREAM_MUSIC);
int maxVolume = mService.getAudioManager().getStreamMaxVolume(AudioManager.STREAM_MUSIC);
+ int minVolume = mService.getAudioManager().getStreamMinVolume(AudioManager.STREAM_MUSIC);
int scaledVolume = VolumeControlAction.scaleToCecVolume(volume, maxVolume);
+ HdmiLogger.debug("Reporting volume %i (%i-%i) as CEC volume %i", volume,
+ minVolume, maxVolume, scaledVolume);
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportAudioStatus(
- mAddress, message.getSource(), scaledVolume, mute));
+ mAddress, source, scaledVolume, mute));
}
/**
@@ -633,7 +820,7 @@
*/
private void setSystemAudioMode(boolean newSystemAudioMode) {
int targetPhysicalAddress = getActiveSource().physicalAddress;
- int port = getLocalPortFromPhysicalAddress(targetPhysicalAddress);
+ int port = mService.pathToPortId(targetPhysicalAddress);
if (newSystemAudioMode && port >= 0) {
switchToAudioInput();
}
@@ -641,16 +828,18 @@
// PROPERTY_SYSTEM_AUDIO_MODE_MUTING_ENABLE is false when device never needs to be muted.
boolean currentMuteStatus =
mService.getAudioManager().isStreamMute(AudioManager.STREAM_MUSIC);
- if (SystemProperties.getBoolean(
- Constants.PROPERTY_SYSTEM_AUDIO_MODE_MUTING_ENABLE, true)
- && currentMuteStatus == newSystemAudioMode) {
- mService.getAudioManager()
- .adjustStreamVolume(
- AudioManager.STREAM_MUSIC,
- newSystemAudioMode
- ? AudioManager.ADJUST_UNMUTE
- : AudioManager.ADJUST_MUTE,
- 0);
+ if (currentMuteStatus == newSystemAudioMode) {
+ if (mService.readBooleanSetting(
+ Constants.PROPERTY_SYSTEM_AUDIO_MODE_MUTING_ENABLE, true)
+ || newSystemAudioMode) {
+ mService.getAudioManager()
+ .adjustStreamVolume(
+ AudioManager.STREAM_MUSIC,
+ newSystemAudioMode
+ ? AudioManager.ADJUST_UNMUTE
+ : AudioManager.ADJUST_MUTE,
+ 0);
+ }
}
updateAudioManagerForSystemAudio(newSystemAudioMode);
synchronized (mLock) {
@@ -688,6 +877,13 @@
HdmiLogger.debug("[A]UpdateSystemAudio mode[on=%b] output=[%X]", on, device);
}
+ void onSystemAduioControlFeatureSupportChanged(boolean enabled) {
+ setSystemAudioControlFeatureEnabled(enabled);
+ if (enabled) {
+ addAndStartAction(new SystemAudioInitiationActionFromAvr(this));
+ }
+ }
+
@ServiceThreadOnly
void setSystemAudioControlFeatureEnabled(boolean enabled) {
assertRunOnServiceThread();
@@ -697,6 +893,14 @@
}
@ServiceThreadOnly
+ void setRoutingControlFeatureEnables(boolean enabled) {
+ assertRunOnServiceThread();
+ synchronized (mLock) {
+ mRoutingControlFeatureEnabled = enabled;
+ }
+ }
+
+ @ServiceThreadOnly
void doManualPortSwitching(int portId, IHdmiControlCallback callback) {
assertRunOnServiceThread();
// TODO: validate port ID
@@ -817,7 +1021,7 @@
@Override
protected void switchInputOnReceivingNewActivePath(int physicalAddress) {
- int port = getLocalPortFromPhysicalAddress(physicalAddress);
+ int port = mService.pathToPortId(physicalAddress);
if (isSystemAudioActivated() && port < 0) {
// If system audio mode is on and the new active source is not under the current device,
// Will switch to ARC input.
@@ -831,6 +1035,10 @@
}
protected void routeToInputFromPortId(int portId) {
+ if (!isRoutingControlFeatureEnabled()) {
+ HdmiLogger.debug("Routing Control Feature is not enabled.");
+ return;
+ }
if (mArcIntentUsed) {
routeToTvInputFromPortId(portId);
} else {
@@ -885,7 +1093,7 @@
@Override
protected void handleRoutingChangeAndInformation(int physicalAddress, HdmiCecMessage message) {
- int port = getLocalPortFromPhysicalAddress(physicalAddress);
+ int port = mService.pathToPortId(physicalAddress);
// Routing change or information sent from switches under the current device can be ignored.
if (port > 0) {
return;
@@ -918,8 +1126,7 @@
return;
}
- int routingInformationPath =
- getActivePathOnSwitchFromActivePortId(getRoutingPort());
+ int routingInformationPath = mService.portIdToPath(getRoutingPort());
// If current device is already the leaf of the whole HDMI system, will do nothing.
if (routingInformationPath == mService.getPhysicalAddress()) {
HdmiLogger.debug("Current device can't assign valid physical address"
@@ -954,6 +1161,10 @@
@ServiceThreadOnly
private void launchDeviceDiscovery() {
assertRunOnServiceThread();
+ if (hasAction(DeviceDiscoveryAction.class)) {
+ Slog.i(TAG, "Device Discovery Action is in progress. Restarting.");
+ removeAction(DeviceDiscoveryAction.class);
+ }
DeviceDiscoveryAction action = new DeviceDiscoveryAction(this,
new DeviceDiscoveryCallback() {
@Override
@@ -977,5 +1188,25 @@
invokeDeviceEventListener(info, HdmiControlManager.DEVICE_EVENT_REMOVE_DEVICE);
}
mDeviceInfos.clear();
+ updateSafeDeviceInfoList();
}
+
+ @Override
+ protected void dump(IndentingPrintWriter pw) {
+ pw.println("HdmiCecLocalDeviceAudioSystem:");
+ pw.increaseIndent();
+ pw.println("mSystemAudioActivated: " + mSystemAudioActivated);
+ pw.println("isRoutingFeatureEnabled " + isRoutingControlFeatureEnabled());
+ pw.println("mSystemAudioControlFeatureEnabled: " + mSystemAudioControlFeatureEnabled);
+ pw.println("mTvSystemAudioModeSupport: " + mTvSystemAudioModeSupport);
+ pw.println("mArcEstablished: " + mArcEstablished);
+ pw.println("mArcIntentUsed: " + mArcIntentUsed);
+ pw.println("mRoutingPort: " + getRoutingPort());
+ pw.println("mLocalActivePort: " + getLocalActivePort());
+ HdmiUtils.dumpMap(pw, "mTvInputs:", mTvInputs);
+ HdmiUtils.dumpSparseArray(pw, "mDeviceInfos:", mDeviceInfos);
+ pw.decreaseIndent();
+ super.dump(pw);
+ }
+
}
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
index 07db971..7a0c279 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
@@ -77,6 +77,10 @@
@ServiceThreadOnly
protected void onAddressAllocated(int logicalAddress, int reason) {
assertRunOnServiceThread();
+ if (reason == mService.INITIATED_BY_ENABLE_CEC) {
+ mService.setAndBroadcastActiveSource(mService.getPhysicalAddress(),
+ getDeviceInfo().getDeviceType(), Constants.ADDR_BROADCAST);
+ }
mService.sendCecCommand(HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(
mAddress, mService.getPhysicalAddress(), mDeviceType));
mService.sendCecCommand(HdmiCecMessageBuilder.buildDeviceVendorIdCommand(
@@ -96,7 +100,7 @@
@ServiceThreadOnly
protected void setPreferredAddress(int addr) {
assertRunOnServiceThread();
- SystemProperties.set(Constants.PROPERTY_PREFERRED_ADDRESS_PLAYBACK,
+ mService.writeStringSetting(Constants.PROPERTY_PREFERRED_ADDRESS_PLAYBACK,
String.valueOf(addr));
}
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java
index a95f7f1..ae008b4 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java
@@ -66,6 +66,10 @@
@LocalActivePort
protected int mLocalActivePort = Constants.CEC_SWITCH_HOME;
+ // Whether the Routing Coutrol feature is enabled or not. False by default.
+ @GuardedBy("mLock")
+ protected boolean mRoutingControlFeatureEnabled;
+
protected HdmiCecLocalDeviceSource(HdmiControlService service, int deviceType) {
super(service, deviceType);
}
@@ -123,7 +127,9 @@
}
setIsActiveSource(physicalAddress == mService.getPhysicalAddress());
updateDevicePowerStatus(logicalAddress, HdmiControlManager.POWER_STATUS_ON);
- switchInputOnReceivingNewActivePath(physicalAddress);
+ if (isRoutingControlFeatureEnabled()) {
+ switchInputOnReceivingNewActivePath(physicalAddress);
+ }
return true;
}
@@ -153,6 +159,10 @@
@ServiceThreadOnly
protected boolean handleRoutingChange(HdmiCecMessage message) {
assertRunOnServiceThread();
+ if (!isRoutingControlFeatureEnabled()) {
+ mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED);
+ return true;
+ }
int newPath = HdmiUtils.twoBytesToInt(message.getParams(), 2);
// if the current device is a pure playback device
if (!mIsSwitchDevice
@@ -168,6 +178,10 @@
@ServiceThreadOnly
protected boolean handleRoutingInformation(HdmiCecMessage message) {
assertRunOnServiceThread();
+ if (!isRoutingControlFeatureEnabled()) {
+ mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED);
+ return true;
+ }
int physicalAddress = HdmiUtils.twoBytesToInt(message.getParams());
// if the current device is a pure playback device
if (!mIsSwitchDevice
@@ -204,7 +218,7 @@
// This method should only be called when the device can be the active source.
protected void setAndBroadcastActiveSource(HdmiCecMessage message, int physicalAddress) {
mService.setAndBroadcastActiveSource(
- message, physicalAddress, getDeviceInfo().getDeviceType());
+ physicalAddress, getDeviceInfo().getDeviceType(), message.getSource());
}
@ServiceThreadOnly
@@ -279,6 +293,12 @@
}
}
+ boolean isRoutingControlFeatureEnabled() {
+ synchronized (mLock) {
+ return mRoutingControlFeatureEnabled;
+ }
+ }
+
// Check if the device is trying to switch to the same input that is active right now.
// This can help avoid redundant port switching.
protected boolean isSwitchingToTheSameInput(@LocalActivePort int activePort) {
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecMessage.java b/services/core/java/com/android/server/hdmi/HdmiCecMessage.java
index c005615..f8b3962 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecMessage.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecMessage.java
@@ -17,6 +17,7 @@
package com.android.server.hdmi;
import android.annotation.Nullable;
+
import libcore.util.EmptyArray;
import java.util.Arrays;
@@ -111,12 +112,11 @@
@Override
public String toString() {
StringBuffer s = new StringBuffer();
- s.append(String.format("<%s> src: %d, dst: %d",
- opcodeToString(mOpcode), mSource, mDestination));
+ s.append(String.format("<%s> %X%X:%02X",
+ opcodeToString(mOpcode), mSource, mDestination, mOpcode));
if (mParams.length > 0) {
- s.append(", params:");
for (byte data : mParams) {
- s.append(String.format(" %02X", data));
+ s.append(String.format(":%02X", data));
}
}
return s.toString();
@@ -133,7 +133,7 @@
case Constants.MESSAGE_TUNER_STEP_DECREMENT:
return "Tuner Step Decrement";
case Constants.MESSAGE_TUNER_DEVICE_STATUS:
- return "Tuner Device Staus";
+ return "Tuner Device Status";
case Constants.MESSAGE_GIVE_TUNER_DEVICE_STATUS:
return "Give Tuner Device Status";
case Constants.MESSAGE_RECORD_ON:
@@ -207,7 +207,7 @@
case Constants.MESSAGE_DEVICE_VENDOR_ID:
return "Device Vendor Id";
case Constants.MESSAGE_VENDOR_COMMAND:
- return "Vendor Commandn";
+ return "Vendor Command";
case Constants.MESSAGE_VENDOR_REMOTE_BUTTON_DOWN:
return "Vendor Remote Button Down";
case Constants.MESSAGE_VENDOR_REMOTE_BUTTON_UP:
@@ -215,7 +215,7 @@
case Constants.MESSAGE_GIVE_DEVICE_VENDOR_ID:
return "Give Device Vendor Id";
case Constants.MESSAGE_MENU_REQUEST:
- return "Menu REquest";
+ return "Menu Request";
case Constants.MESSAGE_MENU_STATUS:
return "Menu Status";
case Constants.MESSAGE_GIVE_DEVICE_POWER_STATUS:
@@ -247,7 +247,7 @@
case Constants.MESSAGE_SET_EXTERNAL_TIMER:
return "Set External Timer";
case Constants.MESSAGE_REPORT_SHORT_AUDIO_DESCRIPTOR:
- return "Repot Short Audio Descriptor";
+ return "Report Short Audio Descriptor";
case Constants.MESSAGE_REQUEST_SHORT_AUDIO_DESCRIPTOR:
return "Request Short Audio Descriptor";
case Constants.MESSAGE_INITIATE_ARC:
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index 2d6e762..46219d5 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -20,12 +20,14 @@
import static android.hardware.hdmi.HdmiControlManager.DEVICE_EVENT_REMOVE_DEVICE;
import static com.android.internal.os.RoSystemProperties.PROPERTY_HDMI_IS_DEVICE_HDMI_CEC_SWITCH;
+import static com.android.server.hdmi.Constants.ADDR_UNREGISTERED;
import static com.android.server.hdmi.Constants.DISABLED;
import static com.android.server.hdmi.Constants.ENABLED;
import static com.android.server.hdmi.Constants.OPTION_MHL_ENABLE;
import static com.android.server.hdmi.Constants.OPTION_MHL_INPUT_SWITCHING;
import static com.android.server.hdmi.Constants.OPTION_MHL_POWER_CHARGE;
import static com.android.server.hdmi.Constants.OPTION_MHL_SERVICE_CONTROL;
+import static com.android.server.power.ShutdownThread.SHUTDOWN_ACTION_PROPERTY;
import android.annotation.Nullable;
import android.content.BroadcastReceiver;
@@ -184,9 +186,10 @@
@Override
public void onReceive(Context context, Intent intent) {
assertRunOnServiceThread();
+ boolean isReboot = SystemProperties.get(SHUTDOWN_ACTION_PROPERTY).contains("1");
switch (intent.getAction()) {
case Intent.ACTION_SCREEN_OFF:
- if (isPowerOnOrTransient()) {
+ if (isPowerOnOrTransient() && !isReboot) {
onStandby(STANDBY_SCREEN_OFF);
}
break;
@@ -202,7 +205,7 @@
}
break;
case Intent.ACTION_SHUTDOWN:
- if (isPowerOnOrTransient()) {
+ if (isPowerOnOrTransient() && !isReboot) {
onStandby(STANDBY_SHUTDOWN);
}
break;
@@ -345,6 +348,10 @@
@Nullable
private Looper mIoLooper;
+ // Thread safe physical address
+ @GuardedBy("mLock")
+ private int mPhysicalAddress = Constants.INVALID_PHYSICAL_ADDRESS;
+
// Last input port before switching to the MHL port. Should switch back to this port
// when the mobile device sends the request one touch play with off.
// Gets invalidated if we go to other port/input.
@@ -564,7 +571,8 @@
Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED,
Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED,
Global.MHL_INPUT_SWITCHING_ENABLED,
- Global.MHL_POWER_CHARGE_ENABLED
+ Global.MHL_POWER_CHARGE_ENABLED,
+ Global.HDMI_CEC_SWITCH_ENABLED
};
for (String s : settings) {
resolver.registerContentObserver(Global.getUriFor(s), false, mSettingsObserver,
@@ -605,6 +613,24 @@
if (isTvDeviceEnabled()) {
tv().setSystemAudioControlFeatureEnabled(enabled);
}
+ if (isAudioSystemDevice()) {
+ if (audioSystem() == null) {
+ Slog.e(TAG, "Audio System device has not registered yet."
+ + " Can't turn system audio mode on.");
+ break;
+ }
+ audioSystem().onSystemAduioControlFeatureSupportChanged(enabled);
+ }
+ break;
+ case Global.HDMI_CEC_SWITCH_ENABLED:
+ if (isAudioSystemDevice()) {
+ if (audioSystem() == null) {
+ Slog.w(TAG, "Switch device has not registered yet."
+ + " Can't turn routing on.");
+ break;
+ }
+ audioSystem().setRoutingControlFeatureEnables(enabled);
+ }
break;
case Global.MHL_INPUT_SWITCHING_ENABLED:
setMhlInputChangeEnabled(enabled);
@@ -620,6 +646,7 @@
return enabled ? ENABLED : DISABLED;
}
+ @VisibleForTesting
boolean readBooleanSetting(String key, boolean defVal) {
ContentResolver cr = getContext().getContentResolver();
return Global.getInt(cr, key, toInt(defVal)) == ENABLED;
@@ -630,6 +657,11 @@
Global.putInt(cr, key, toInt(value));
}
+ void writeStringSetting(String key, String value) {
+ ContentResolver cr = getContext().getContentResolver();
+ Global.putString(cr, key, value);
+ }
+
private void initializeCec(int initiatedBy) {
mAddressAllocated = false;
mCecController.setOption(OptionKey.SYSTEM_CEC_CONTROL, true);
@@ -734,6 +766,10 @@
assertRunOnServiceThread();
HdmiPortInfo[] cecPortInfo = null;
+ synchronized (mLock) {
+ mPhysicalAddress = getPhysicalAddress();
+ }
+
// CEC HAL provides majority of the info while MHL does only MHL support flag for
// each port. Return empty array if CEC HAL didn't provide the info.
if (mCecController != null) {
@@ -827,7 +863,10 @@
int pathToPortId(int path) {
int mask = 0xF000;
int finalMask = 0xF000;
- int physicalAddress = getPhysicalAddress();
+ int physicalAddress;
+ synchronized (mLock) {
+ physicalAddress = mPhysicalAddress;
+ }
int maskedAddress = physicalAddress;
while (maskedAddress != 0) {
@@ -1135,7 +1174,7 @@
String displayName = Build.MODEL;
return new HdmiDeviceInfo(logicalAddress,
getPhysicalAddress(), pathToPortId(getPhysicalAddress()), deviceType,
- getVendorId(), displayName);
+ getVendorId(), displayName, powerStatus);
}
@ServiceThreadOnly
@@ -1354,6 +1393,33 @@
HdmiCecLocalDeviceTv tv = tv();
if (tv == null) {
Slog.w(TAG, "Local tv device not available");
+ if (isPlaybackDevice()) {
+ // if playback device itself is the active source,
+ // return its own device info.
+ if (playback() != null && playback().mIsActiveSource) {
+ return playback().getDeviceInfo();
+ }
+ // Otherwise get the active source and look for it from the device list
+ ActiveSource activeSource = mActiveSource;
+ // If the active source is not set yet, return null
+ if (!activeSource.isValid()) {
+ return null;
+ }
+ if (audioSystem() != null) {
+ HdmiCecLocalDeviceAudioSystem audioSystem = audioSystem();
+ for (HdmiDeviceInfo info : audioSystem.getSafeCecDevicesLocked()) {
+ if (info.getLogicalAddress() == activeSource.logicalAddress) {
+ return info;
+ }
+ }
+ }
+ // If the device info is not in the list yet, return a device info with minimum
+ // information from mActiveSource.
+ return new HdmiDeviceInfo(activeSource.logicalAddress,
+ activeSource.physicalAddress, pathToPortId(activeSource.physicalAddress),
+ HdmiUtils.getTypeFromAddress(activeSource.logicalAddress), 0,
+ HdmiUtils.getDefaultDeviceName(activeSource.logicalAddress));
+ }
return null;
}
ActiveSource activeSource = tv.getActiveSource();
@@ -1532,6 +1598,14 @@
}
@Override
+ public int getPhysicalAddress() {
+ enforceAccessPermission();
+ synchronized (mLock) {
+ return mPhysicalAddress;
+ }
+ }
+
+ @Override
public void setSystemAudioMode(final boolean enabled, final IHdmiControlCallback callback) {
enforceAccessPermission();
runOnServiceThread(new Runnable() {
@@ -1588,14 +1662,62 @@
public List<HdmiDeviceInfo> getDeviceList() {
enforceAccessPermission();
HdmiCecLocalDeviceTv tv = tv();
- synchronized (mLock) {
- return (tv == null)
+ if (tv != null) {
+ synchronized (mLock) {
+ return tv.getSafeCecDevicesLocked();
+ }
+ } else {
+ HdmiCecLocalDeviceAudioSystem audioSystem = audioSystem();
+ synchronized (mLock) {
+ return (audioSystem == null)
? Collections.<HdmiDeviceInfo>emptyList()
- : tv.getSafeCecDevicesLocked();
+ : audioSystem.getSafeCecDevicesLocked();
+ }
}
}
@Override
+ public void powerOffRemoteDevice(int logicalAddress, int powerStatus) {
+ enforceAccessPermission();
+ runOnServiceThread(new Runnable() {
+ @Override
+ public void run() {
+ Slog.w(TAG, "Device "
+ + logicalAddress + " power status is " + powerStatus
+ + " before standby command sent out");
+ sendCecCommand(HdmiCecMessageBuilder.buildStandby(
+ getRemoteControlSourceAddress(), logicalAddress));
+ }
+ });
+ }
+
+ @Override
+ public void powerOnRemoteDevice(int logicalAddress, int powerStatus) {
+ // TODO(amyjojo): implement the method
+ }
+
+ @Override
+ // TODO(AMYJOJO): add a result callback
+ public void askRemoteDeviceToBecomeActiveSource(int physicalAddress) {
+ enforceAccessPermission();
+ runOnServiceThread(new Runnable() {
+ @Override
+ public void run() {
+ HdmiCecMessage setStreamPath = HdmiCecMessageBuilder.buildSetStreamPath(
+ getRemoteControlSourceAddress(), physicalAddress);
+ if (pathToPortId(physicalAddress) != Constants.INVALID_PORT_ID) {
+ if (getSwitchDevice() != null) {
+ getSwitchDevice().handleSetStreamPath(setStreamPath);
+ } else {
+ Slog.e(TAG, "Can't get the correct local device to handle routing.");
+ }
+ }
+ sendCecCommand(setStreamPath);
+ }
+ });
+ }
+
+ @Override
public void setSystemAudioVolume(final int oldIndex, final int newIndex,
final int maxIndex) {
enforceAccessPermission();
@@ -1834,14 +1956,32 @@
Slog.w(TAG, "audio system is not in system audio mode");
return;
}
- int scaledVolume = VolumeControlAction.scaleToCecVolume(volume, maxVolume);
+ audioSystem().reportAudioStatus(Constants.ADDR_TV);
+ }
+ });
+ }
- sendCecCommand(HdmiCecMessageBuilder
- .buildReportAudioStatus(
- device.getDeviceInfo().getLogicalAddress(),
- Constants.ADDR_TV,
- scaledVolume,
- isMute));
+ @Override
+ public void setSystemAudioModeOnForAudioOnlySource() {
+ enforceAccessPermission();
+ runOnServiceThread(new Runnable() {
+ @Override
+ public void run() {
+ if (!isAudioSystemDevice()) {
+ Slog.e(TAG, "Not an audio system device. Won't set system audio mode on");
+ return;
+ }
+ if (audioSystem() == null) {
+ Slog.e(TAG, "Audio System local device is not registered");
+ return;
+ }
+ if (!audioSystem().checkSupportAndSetSystemAudioMode(true)) {
+ Slog.e(TAG, "System Audio Mode is not supported.");
+ return;
+ }
+ sendCecCommand(
+ HdmiCecMessageBuilder.buildSetSystemAudioMode(
+ audioSystem().mAddress, Constants.ADDR_BROADCAST, true));
}
});
}
@@ -1851,30 +1991,54 @@
if (!DumpUtils.checkDumpPermission(getContext(), TAG, writer)) return;
final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ");
- pw.println("mHdmiControlEnabled: " + mHdmiControlEnabled);
pw.println("mProhibitMode: " + mProhibitMode);
- if (mCecController != null) {
- pw.println("mCecController: ");
- pw.increaseIndent();
- mCecController.dump(pw);
- pw.decreaseIndent();
- }
+ pw.println("mPowerStatus: " + mPowerStatus);
+
+ // System settings
+ pw.println("System_settings:");
+ pw.increaseIndent();
+ pw.println("mHdmiControlEnabled: " + mHdmiControlEnabled);
+ pw.println("mMhlInputChangeEnabled: " + mMhlInputChangeEnabled);
+ pw.decreaseIndent();
pw.println("mMhlController: ");
pw.increaseIndent();
mMhlController.dump(pw);
pw.decreaseIndent();
- pw.println("mPortInfo: ");
- pw.increaseIndent();
- for (HdmiPortInfo hdmiPortInfo : mPortInfo) {
- pw.println("- " + hdmiPortInfo);
+ HdmiUtils.dumpIterable(pw, "mPortInfo:", mPortInfo);
+ if (mCecController != null) {
+ pw.println("mCecController: ");
+ pw.increaseIndent();
+ mCecController.dump(pw);
+ pw.decreaseIndent();
}
- pw.decreaseIndent();
- pw.println("mPowerStatus: " + mPowerStatus);
}
}
+ // Get the source address to send out commands to devices connected to the current device
+ // when other services interact with HdmiControlService.
+ private int getRemoteControlSourceAddress() {
+ if (isAudioSystemDevice()) {
+ return audioSystem().getDeviceInfo().getLogicalAddress();
+ } else if (isPlaybackDevice()) {
+ return playback().getDeviceInfo().getLogicalAddress();
+ }
+ return ADDR_UNREGISTERED;
+ }
+
+ // Get the switch device to do CEC routing control
+ @Nullable
+ private HdmiCecLocalDeviceSource getSwitchDevice() {
+ if (isAudioSystemDevice()) {
+ return audioSystem();
+ }
+ if (isPlaybackDevice()) {
+ return playback();
+ }
+ return null;
+ }
+
@ServiceThreadOnly
private void oneTouchPlay(final IHdmiControlCallback callback) {
assertRunOnServiceThread();
@@ -2549,14 +2713,14 @@
// For example, when receiving broadcast messages, all the device types will call this
// method but only one of them will be the Active Source.
protected void setAndBroadcastActiveSource(
- HdmiCecMessage message, int physicalAddress, int deviceType) {
+ int physicalAddress, int deviceType, int source) {
// If the device has both playback and audio system logical addresses,
// playback will claim active source. Otherwise audio system will.
if (deviceType == HdmiDeviceInfo.DEVICE_PLAYBACK) {
HdmiCecLocalDevicePlayback playback = playback();
playback.setIsActiveSource(true);
playback.wakeUpIfActiveSource();
- playback.maySendActiveSource(message.getSource());
+ playback.maySendActiveSource(source);
setActiveSource(playback.mAddress, physicalAddress);
}
@@ -2567,7 +2731,7 @@
} else {
audioSystem.setIsActiveSource(true);
audioSystem.wakeUpIfActiveSource();
- audioSystem.maySendActiveSource(message.getSource());
+ audioSystem.maySendActiveSource(source);
setActiveSource(audioSystem.mAddress, physicalAddress);
}
}
diff --git a/services/core/java/com/android/server/hdmi/HdmiUtils.java b/services/core/java/com/android/server/hdmi/HdmiUtils.java
index 2a8117f..e44f1d1 100644
--- a/services/core/java/com/android/server/hdmi/HdmiUtils.java
+++ b/services/core/java/com/android/server/hdmi/HdmiUtils.java
@@ -16,19 +16,35 @@
package com.android.server.hdmi;
+import android.annotation.Nullable;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.util.Slog;
import android.util.SparseArray;
+import android.util.Xml;
+import com.android.internal.util.HexDump;
+import com.android.internal.util.IndentingPrintWriter;
+import com.android.server.hdmi.Constants.AudioCodec;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.Objects;
/**
* Various utilities to handle HDMI CEC messages.
*/
final class HdmiUtils {
+ private static final String TAG = "HdmiUtils";
+
private static final int[] ADDRESS_TO_TYPE = {
HdmiDeviceInfo.DEVICE_TV, // ADDR_TV
HdmiDeviceInfo.DEVICE_RECORDER, // ADDR_RECORDER_1
@@ -65,6 +81,12 @@
"Secondary_TV",
};
+ /**
+ * Return value of {@link #getLocalPortFromPhysicalAddress(int, int)}
+ */
+ static final int TARGET_NOT_UNDER_LOCAL_DEVICE = -1;
+ static final int TARGET_SAME_PHYSICAL_ADDRESS = 0;
+
private HdmiUtils() { /* cannot be instantiated */ }
/**
@@ -317,4 +339,339 @@
info.getPhysicalAddress(), info.getPortId(), info.getDeviceType(),
info.getVendorId(), info.getDisplayName(), newPowerStatus);
}
+
+ /**
+ * Dump a {@link SparseArray} to the print writer.
+ *
+ * <p>The dump is formatted:
+ * <pre>
+ * name:
+ * key = value
+ * key = value
+ * ...
+ * </pre>
+ */
+ static <T> void dumpSparseArray(IndentingPrintWriter pw, String name,
+ SparseArray<T> sparseArray) {
+ printWithTrailingColon(pw, name);
+ pw.increaseIndent();
+ int size = sparseArray.size();
+ for (int i = 0; i < size; i++) {
+ int key = sparseArray.keyAt(i);
+ T value = sparseArray.get(key);
+ pw.printPair(Integer.toString(key), value);
+ pw.println();
+ }
+ pw.decreaseIndent();
+ }
+
+ private static void printWithTrailingColon(IndentingPrintWriter pw, String name) {
+ pw.println(name.endsWith(":") ? name : name.concat(":"));
+ }
+
+ /**
+ * Dump a {@link Map} to the print writer.
+ *
+ * <p>The dump is formatted:
+ * <pre>
+ * name:
+ * key = value
+ * key = value
+ * ...
+ * </pre>
+ */
+ static <K, V> void dumpMap(IndentingPrintWriter pw, String name, Map<K, V> map) {
+ printWithTrailingColon(pw, name);
+ pw.increaseIndent();
+ for (Map.Entry<K, V> entry: map.entrySet()) {
+ pw.printPair(entry.getKey().toString(), entry.getValue());
+ pw.println();
+ }
+ pw.decreaseIndent();
+ }
+
+ /**
+ * Dump a {@link Map} to the print writer.
+ *
+ * <p>The dump is formatted:
+ * <pre>
+ * name:
+ * value
+ * value
+ * ...
+ * </pre>
+ */
+ static <T> void dumpIterable(IndentingPrintWriter pw, String name, Iterable<T> values) {
+ printWithTrailingColon(pw, name);
+ pw.increaseIndent();
+ for (T value : values) {
+ pw.println(value);
+ }
+ pw.decreaseIndent();
+ }
+
+ /**
+ * Method to parse target physical address to the port number on the current device.
+ *
+ * <p>This check assumes target address is valid.
+ *
+ * @param targetPhysicalAddress is the physical address of the target device
+ * @param myPhysicalAddress is the physical address of the current device
+ * @return
+ * If the target device is under the current device, return the port number of current device
+ * that the target device is connected to. This also applies to the devices that are indirectly
+ * connected to the current device.
+ *
+ * <p>If the target device has the same physical address as the current device, return
+ * {@link #TARGET_SAME_PHYSICAL_ADDRESS}.
+ *
+ * <p>If the target device is not under the current device, return
+ * {@link #TARGET_NOT_UNDER_LOCAL_DEVICE}.
+ */
+ public static int getLocalPortFromPhysicalAddress(
+ int targetPhysicalAddress, int myPhysicalAddress) {
+ if (myPhysicalAddress == targetPhysicalAddress) {
+ return TARGET_SAME_PHYSICAL_ADDRESS;
+ }
+
+ int mask = 0xF000;
+ int finalMask = 0xF000;
+ int maskedAddress = myPhysicalAddress;
+
+ while (maskedAddress != 0) {
+ maskedAddress = myPhysicalAddress & mask;
+ finalMask |= mask;
+ mask >>= 4;
+ }
+
+ int portAddress = targetPhysicalAddress & finalMask;
+ if ((portAddress & (finalMask << 4)) != myPhysicalAddress) {
+ return TARGET_NOT_UNDER_LOCAL_DEVICE;
+ }
+
+ mask <<= 4;
+ int port = portAddress & mask;
+ while ((port >> 4) != 0) {
+ port >>= 4;
+ }
+ return port;
+ }
+
+ public static class ShortAudioDescriptorXmlParser {
+ // We don't use namespaces
+ private static final String NS = null;
+
+ // return a list of devices config
+ public static List<DeviceConfig> parse(InputStream in)
+ throws XmlPullParserException, IOException {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
+ parser.setInput(in, null);
+ parser.nextTag();
+ return readDevices(parser);
+ }
+
+ private static void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
+ if (parser.getEventType() != XmlPullParser.START_TAG) {
+ throw new IllegalStateException();
+ }
+ int depth = 1;
+ while (depth != 0) {
+ switch (parser.next()) {
+ case XmlPullParser.END_TAG:
+ depth--;
+ break;
+ case XmlPullParser.START_TAG:
+ depth++;
+ break;
+ }
+ }
+ }
+
+ private static List<DeviceConfig> readDevices(XmlPullParser parser)
+ throws XmlPullParserException, IOException {
+ List<DeviceConfig> devices = new ArrayList<>();
+
+ parser.require(XmlPullParser.START_TAG, NS, "config");
+ while (parser.next() != XmlPullParser.END_TAG) {
+ if (parser.getEventType() != XmlPullParser.START_TAG) {
+ continue;
+ }
+ String name = parser.getName();
+ // Starts by looking for the device tag
+ if (name.equals("device")) {
+ String deviceType = parser.getAttributeValue(null, "type");
+ DeviceConfig config = null;
+ if (deviceType != null) {
+ config = readDeviceConfig(parser, deviceType);
+ }
+ if (config != null) {
+ devices.add(config);
+ }
+ } else {
+ skip(parser);
+ }
+ }
+ return devices;
+ }
+
+ // Processes device tags in the config.
+ @Nullable
+ private static DeviceConfig readDeviceConfig(XmlPullParser parser, String deviceType)
+ throws XmlPullParserException, IOException {
+ List<CodecSad> codecSads = new ArrayList<>();
+ int format;
+ byte[] descriptor;
+
+ parser.require(XmlPullParser.START_TAG, NS, "device");
+ while (parser.next() != XmlPullParser.END_TAG) {
+ if (parser.getEventType() != XmlPullParser.START_TAG) {
+ continue;
+ }
+ String tagName = parser.getName();
+
+ // Starts by looking for the supportedFormat tag
+ if (tagName.equals("supportedFormat")) {
+ String codecAttriValue = parser.getAttributeValue(null, "format");
+ String sadAttriValue = parser.getAttributeValue(null, "descriptor");
+ format = (codecAttriValue) == null
+ ? Constants.AUDIO_CODEC_NONE : formatNameToNum(codecAttriValue);
+ descriptor = readSad(sadAttriValue);
+ if (format != Constants.AUDIO_CODEC_NONE && descriptor != null) {
+ codecSads.add(new CodecSad(format, descriptor));
+ }
+ parser.nextTag();
+ parser.require(XmlPullParser.END_TAG, NS, "supportedFormat");
+ } else {
+ skip(parser);
+ }
+ }
+ if (codecSads.size() == 0) {
+ return null;
+ }
+ return new DeviceConfig(deviceType, codecSads);
+ }
+
+ // Processes sad attribute in the supportedFormat.
+ @Nullable
+ private static byte[] readSad(String sad) {
+ if (sad == null || sad.length() == 0) {
+ return null;
+ }
+ byte[] sadBytes = HexDump.hexStringToByteArray(sad);
+ if (sadBytes.length != 3) {
+ Slog.w(TAG, "SAD byte array length is not 3. Length = " + sadBytes.length);
+ return null;
+ }
+ return sadBytes;
+ }
+
+ @AudioCodec
+ private static int formatNameToNum(String codecAttriValue) {
+ switch (codecAttriValue) {
+ case "AUDIO_FORMAT_NONE":
+ return Constants.AUDIO_CODEC_NONE;
+ case "AUDIO_FORMAT_LPCM":
+ return Constants.AUDIO_CODEC_LPCM;
+ case "AUDIO_FORMAT_DD":
+ return Constants.AUDIO_CODEC_DD;
+ case "AUDIO_FORMAT_MPEG1":
+ return Constants.AUDIO_CODEC_MPEG1;
+ case "AUDIO_FORMAT_MP3":
+ return Constants.AUDIO_CODEC_MP3;
+ case "AUDIO_FORMAT_MPEG2":
+ return Constants.AUDIO_CODEC_MPEG2;
+ case "AUDIO_FORMAT_AAC":
+ return Constants.AUDIO_CODEC_AAC;
+ case "AUDIO_FORMAT_DTS":
+ return Constants.AUDIO_CODEC_DTS;
+ case "AUDIO_FORMAT_ATRAC":
+ return Constants.AUDIO_CODEC_ATRAC;
+ case "AUDIO_FORMAT_ONEBITAUDIO":
+ return Constants.AUDIO_CODEC_ONEBITAUDIO;
+ case "AUDIO_FORMAT_DDP":
+ return Constants.AUDIO_CODEC_DDP;
+ case "AUDIO_FORMAT_DTSHD":
+ return Constants.AUDIO_CODEC_DTSHD;
+ case "AUDIO_FORMAT_TRUEHD":
+ return Constants.AUDIO_CODEC_TRUEHD;
+ case "AUDIO_FORMAT_DST":
+ return Constants.AUDIO_CODEC_DST;
+ case "AUDIO_FORMAT_WMAPRO":
+ return Constants.AUDIO_CODEC_WMAPRO;
+ case "AUDIO_FORMAT_MAX":
+ return Constants.AUDIO_CODEC_MAX;
+ default:
+ return Constants.AUDIO_CODEC_NONE;
+ }
+ }
+ }
+
+ // Device configuration of its supported Codecs and their Short Audio Descriptors.
+ public static class DeviceConfig {
+ /** Name of the device. Should be {@link Constants.AudioDevice}. **/
+ public final String name;
+ /** List of a {@link CodecSad}. **/
+ public final List<CodecSad> supportedCodecs;
+
+ public DeviceConfig(String name, List<CodecSad> supportedCodecs) {
+ this.name = name;
+ this.supportedCodecs = supportedCodecs;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof DeviceConfig) {
+ DeviceConfig that = (DeviceConfig) obj;
+ return that.name.equals(this.name)
+ && that.supportedCodecs.equals(this.supportedCodecs);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ name,
+ supportedCodecs.hashCode());
+ }
+ }
+
+ // Short Audio Descriptor of a specific Codec
+ public static class CodecSad {
+ /** Audio Codec. Should be {@link Constants.AudioCodec}. **/
+ public final int audioCodec;
+ /**
+ * Three-byte Short Audio Descriptor. See HDMI Specification 1.4b CEC 13.15.3 and
+ * ANSI-CTA-861-F-FINAL 7.5.2 Audio Data Block for more details.
+ */
+ public final byte[] sad;
+
+ public CodecSad(int audioCodec, byte[] sad) {
+ this.audioCodec = audioCodec;
+ this.sad = sad;
+ }
+
+ public CodecSad(int audioCodec, String sad) {
+ this.audioCodec = audioCodec;
+ this.sad = HexDump.hexStringToByteArray(sad);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof CodecSad) {
+ CodecSad that = (CodecSad) obj;
+ return that.audioCodec == this.audioCodec
+ && Arrays.equals(that.sad, this.sad);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ audioCodec,
+ Arrays.hashCode(sad));
+ }
+ }
}
diff --git a/services/core/java/com/android/server/hdmi/OneTouchPlayAction.java b/services/core/java/com/android/server/hdmi/OneTouchPlayAction.java
index 41bf01f8..354d8d1 100644
--- a/services/core/java/com/android/server/hdmi/OneTouchPlayAction.java
+++ b/services/core/java/com/android/server/hdmi/OneTouchPlayAction.java
@@ -92,6 +92,9 @@
if (source.mService.audioSystem() != null) {
source = source.mService.audioSystem();
}
+ if (source.getLocalActivePort() != Constants.CEC_SWITCH_HOME) {
+ source.switchInputOnReceivingNewActivePath(getSourcePath());
+ }
source.setRoutingPort(Constants.CEC_SWITCH_HOME);
source.setLocalActivePort(Constants.CEC_SWITCH_HOME);
}
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 979de66..669ff2b 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -138,6 +138,9 @@
private final Context mContext;
private final InputManagerHandler mHandler;
+ // Context cache used for loading pointer resources.
+ private Context mDisplayContext;
+
private final File mDoubleTouchGestureEnableFile;
private WindowManagerCallbacks mWindowManagerCallbacks;
@@ -1923,8 +1926,25 @@
}
// Native callback.
- private PointerIcon getPointerIcon() {
- return PointerIcon.getDefaultIcon(mContext);
+ private PointerIcon getPointerIcon(int displayId) {
+ return PointerIcon.getDefaultIcon(getContextForDisplay(displayId));
+ }
+
+ private Context getContextForDisplay(int displayId) {
+ if (mDisplayContext != null && mDisplayContext.getDisplay().getDisplayId() == displayId) {
+ return mDisplayContext;
+ }
+
+ if (mContext.getDisplay().getDisplayId() == displayId) {
+ mDisplayContext = mContext;
+ return mDisplayContext;
+ }
+
+ // Create and cache context for non-default display.
+ final DisplayManager displayManager = mContext.getSystemService(DisplayManager.class);
+ final Display display = displayManager.getDisplay(displayId);
+ mDisplayContext = mContext.createDisplayContext(display);
+ return mDisplayContext;
}
// Native callback.
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 5fa3f52..a24373e 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -89,6 +89,7 @@
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
+import android.os.UserManagerInternal;
import android.provider.Settings;
import android.service.vr.IVrManager;
import android.service.vr.IVrStateCallbacks;
@@ -309,6 +310,7 @@
private final HardKeyboardListener mHardKeyboardListener;
private final AppOpsManager mAppOpsManager;
private final UserManager mUserManager;
+ private final UserManagerInternal mUserManagerInternal;
// All known input methods. mMethodMap also serves as the global
// lock for this class.
@@ -1405,6 +1407,7 @@
}, true /*asyncHandler*/);
mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
mUserManager = mContext.getSystemService(UserManager.class);
+ mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
mHardKeyboardListener = new HardKeyboardListener();
mHasFeature = context.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_INPUT_METHODS);
@@ -1489,7 +1492,7 @@
// If the system is not ready or the device is not yed unlocked by the user, then we use
// copy-on-write settings.
final boolean useCopyOnWriteSettings =
- !mSystemReady || !mUserManager.isUserUnlockingOrUnlocked(newUserId);
+ !mSystemReady || !mUserManagerInternal.isUserUnlockingOrUnlocked(newUserId);
mSettings.switchCurrentUser(newUserId, useCopyOnWriteSettings);
updateCurrentProfileIds();
// Additional subtypes should be reset when the user is changed
@@ -1562,7 +1565,7 @@
mLastSystemLocales = mRes.getConfiguration().getLocales();
final int currentUserId = mSettings.getCurrentUserId();
mSettings.switchCurrentUser(currentUserId,
- !mUserManager.isUserUnlockingOrUnlocked(currentUserId));
+ !mUserManagerInternal.isUserUnlockingOrUnlocked(currentUserId));
mKeyguardManager = mContext.getSystemService(KeyguardManager.class);
mNotificationManager = mContext.getSystemService(NotificationManager.class);
mStatusBar = statusBar;
@@ -2443,12 +2446,6 @@
(vis & InputMethodService.IME_VISIBLE) != 0, dismissImeOnBackKeyPressed);
}
- private void updateSystemUi(IBinder token, int vis, int backDisposition) {
- synchronized (mMethodMap) {
- updateSystemUiLocked(token, vis, backDisposition);
- }
- }
-
@BinderThread
private void reportStartInput(IBinder token, IBinder startInputToken) {
synchronized (mMethodMap) {
@@ -2900,7 +2897,23 @@
@SoftInputModeFlags int softInputMode, int windowFlags, EditorInfo attribute,
IInputContext inputContext, @MissingMethodFlags int missingMethods,
int unverifiedTargetSdkVersion) {
- final int userId = UserHandle.getUserId(Binder.getCallingUid());
+ final int callingUserId = UserHandle.getCallingUserId();
+ final int userId;
+ if (PER_PROFILE_IME_ENABLED && attribute != null && attribute.targetInputMethodUser != null
+ && attribute.targetInputMethodUser.getIdentifier() != callingUserId) {
+ mContext.enforceCallingPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL,
+ "Using EditorInfo.user requires INTERACT_ACROSS_USERS_FULL.");
+ userId = attribute.targetInputMethodUser.getIdentifier();
+ if (!mUserManagerInternal.isUserRunning(userId)) {
+ // There is a chance that we hit here because of race condition. Let's just return
+ // an error code instead of crashing the caller process, which at least has
+ // INTERACT_ACROSS_USERS_FULL permission thus is likely to be an important process.
+ Slog.e(TAG, "User #" + userId + " is not running.");
+ return InputBindResult.INVALID_USER;
+ }
+ } else {
+ userId = callingUserId;
+ }
InputBindResult res = null;
synchronized (mMethodMap) {
// Needs to check the validity before clearing calling identity
@@ -4030,7 +4043,7 @@
attrs.privateFlags |= PRIVATE_FLAG_SHOW_FOR_ALL_USERS;
attrs.setTitle("Select input method");
w.setAttributes(attrs);
- updateSystemUi(mCurToken, mImeWindowVis, mBackDisposition);
+ updateSystemUiLocked(mCurToken, mImeWindowVis, mBackDisposition);
mSwitchingDialog.show();
}
}
@@ -4884,7 +4897,7 @@
@BinderThread
@Override
- public void notifyUserActionAsync() {
+ public void notifyUserAction() {
mImms.notifyUserAction(mToken);
}
}
diff --git a/services/core/java/com/android/server/job/JobConcurrencyManager.java b/services/core/java/com/android/server/job/JobConcurrencyManager.java
index 827c0f1..4d9b5f5 100644
--- a/services/core/java/com/android/server/job/JobConcurrencyManager.java
+++ b/services/core/java/com/android/server/job/JobConcurrencyManager.java
@@ -18,16 +18,34 @@
import android.app.ActivityManager;
import android.app.job.JobInfo;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Handler;
+import android.os.PowerManager;
import android.os.RemoteException;
import android.util.Slog;
+import android.util.TimeUtils;
+import android.util.proto.ProtoOutputStream;
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.procstats.ProcessStats;
+import com.android.internal.os.BackgroundThread;
+import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.StatLogger;
+import com.android.server.job.JobSchedulerService.Constants;
import com.android.server.job.controllers.JobStatus;
import com.android.server.job.controllers.StateController;
import java.util.Iterator;
import java.util.List;
+/**
+ * This class decides, given the various configuration and the system status, how many more jobs
+ * can start.
+ */
class JobConcurrencyManager {
private static final String TAG = JobSchedulerService.TAG;
private static final boolean DEBUG = JobSchedulerService.DEBUG;
@@ -35,6 +53,16 @@
private final Object mLock;
private final JobSchedulerService mService;
private final JobSchedulerService.Constants mConstants;
+ private final Context mContext;
+ private final Handler mHandler;
+
+ private PowerManager mPowerManager;
+
+ private boolean mCurrentInteractiveState;
+ private boolean mEffectiveInteractiveState;
+
+ private long mLastScreenOnRealtime;
+ private long mLastScreenOffRealtime;
private static final int MAX_JOB_CONTEXTS_COUNT = JobSchedulerService.MAX_JOB_CONTEXTS_COUNT;
@@ -50,10 +78,193 @@
int[] mRecycledPreferredUidForContext = new int[MAX_JOB_CONTEXTS_COUNT];
+ /** Max job counts according to the current system state. */
+ private JobSchedulerService.MaxJobCounts mMaxJobCounts;
+
+ private final JobCountTracker mJobCountTracker = new JobCountTracker();
+
+ /** Current memory trim level. */
+ private int mLastMemoryTrimLevel;
+
+ /** Used to throttle heavy API calls. */
+ private long mNextSystemStateRefreshTime;
+ private static final int SYSTEM_STATE_REFRESH_MIN_INTERVAL = 1000;
+
+ private final StatLogger mStatLogger = new StatLogger(new String[]{
+ "assignJobsToContexts",
+ "refreshSystemState",
+ });
+
+ interface Stats {
+ int ASSIGN_JOBS_TO_CONTEXTS = 0;
+ int REFRESH_SYSTEM_STATE = 1;
+
+ int COUNT = REFRESH_SYSTEM_STATE + 1;
+ }
+
JobConcurrencyManager(JobSchedulerService service) {
mService = service;
mLock = mService.mLock;
mConstants = service.mConstants;
+ mContext = service.getContext();
+
+ mHandler = BackgroundThread.getHandler();
+ }
+
+ public void onSystemReady() {
+ mPowerManager = mContext.getSystemService(PowerManager.class);
+
+ final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
+ filter.addAction(Intent.ACTION_SCREEN_OFF);
+ mContext.registerReceiver(mReceiver, filter);
+
+ onInteractiveStateChanged(mPowerManager.isInteractive());
+ }
+
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ switch (intent.getAction()) {
+ case Intent.ACTION_SCREEN_ON:
+ onInteractiveStateChanged(true);
+ break;
+ case Intent.ACTION_SCREEN_OFF:
+ onInteractiveStateChanged(false);
+ break;
+ }
+ }
+ };
+
+ /**
+ * Called when the screen turns on / off.
+ */
+ private void onInteractiveStateChanged(boolean interactive) {
+ synchronized (mLock) {
+ if (mCurrentInteractiveState == interactive) {
+ return;
+ }
+ mCurrentInteractiveState = interactive;
+ if (DEBUG) {
+ Slog.d(TAG, "Interactive: " + interactive);
+ }
+
+ final long now = JobSchedulerService.sElapsedRealtimeClock.millis();
+ if (interactive) {
+ mLastScreenOnRealtime = now;
+ mEffectiveInteractiveState = true;
+
+ mHandler.removeCallbacks(mRampUpForScreenOff);
+ } else {
+ mLastScreenOffRealtime = now;
+
+ // Set mEffectiveInteractiveState to false after the delay, when we may increase
+ // the concurrency.
+ // We don't need a wakeup alarm here. When there's a pending job, there should
+ // also be jobs running too, meaning the device should be awake.
+
+ // Note: we can't directly do postDelayed(this::rampUpForScreenOn), because
+ // we need the exact same instance for removeCallbacks().
+ mHandler.postDelayed(mRampUpForScreenOff,
+ mConstants.SCREEN_OFF_JOB_CONCURRENCY_INCREASE_DELAY_MS.getValue());
+ }
+ }
+ }
+
+ private final Runnable mRampUpForScreenOff = this::rampUpForScreenOff;
+
+ /**
+ * Called in {@link Constants#SCREEN_OFF_JOB_CONCURRENCY_INCREASE_DELAY_MS} after
+ * the screen turns off, in order to increase concurrency.
+ */
+ private void rampUpForScreenOff() {
+ synchronized (mLock) {
+ // Make sure the screen has really been off for the configured duration.
+ // (There could be a race.)
+ if (!mEffectiveInteractiveState) {
+ return;
+ }
+ if (mLastScreenOnRealtime > mLastScreenOffRealtime) {
+ return;
+ }
+ final long now = JobSchedulerService.sElapsedRealtimeClock.millis();
+ if ((mLastScreenOffRealtime
+ + mConstants.SCREEN_OFF_JOB_CONCURRENCY_INCREASE_DELAY_MS.getValue())
+ > now) {
+ return;
+ }
+
+ mEffectiveInteractiveState = false;
+
+ if (DEBUG) {
+ Slog.d(TAG, "Ramping up concurrency");
+ }
+
+ mService.maybeRunPendingJobsLocked();
+ }
+ }
+
+ private boolean isFgJob(JobStatus job) {
+ return job.lastEvaluatedPriority >= JobInfo.PRIORITY_TOP_APP;
+ }
+
+ @GuardedBy("mLock")
+ private void refreshSystemStateLocked() {
+ final long nowUptime = JobSchedulerService.sUptimeMillisClock.millis();
+
+ // Only refresh the information every so often.
+ if (nowUptime < mNextSystemStateRefreshTime) {
+ return;
+ }
+
+ final long start = mStatLogger.getTime();
+ mNextSystemStateRefreshTime = nowUptime + SYSTEM_STATE_REFRESH_MIN_INTERVAL;
+
+ mLastMemoryTrimLevel = ProcessStats.ADJ_MEM_FACTOR_NORMAL;
+ try {
+ mLastMemoryTrimLevel = ActivityManager.getService().getMemoryTrimLevel();
+ } catch (RemoteException e) {
+ }
+
+ mStatLogger.logDurationStat(Stats.REFRESH_SYSTEM_STATE, start);
+ }
+
+ @GuardedBy("mLock")
+ private void updateMaxCountsLocked() {
+ refreshSystemStateLocked();
+
+ if (mEffectiveInteractiveState) {
+ // Screen on
+ switch (mLastMemoryTrimLevel) {
+ case ProcessStats.ADJ_MEM_FACTOR_MODERATE:
+ mMaxJobCounts = mConstants.MAX_JOB_COUNTS_ON_MODERATE;
+ break;
+ case ProcessStats.ADJ_MEM_FACTOR_LOW:
+ mMaxJobCounts = mConstants.MAX_JOB_COUNTS_ON_LOW;
+ break;
+ case ProcessStats.ADJ_MEM_FACTOR_CRITICAL:
+ mMaxJobCounts = mConstants.MAX_JOB_COUNTS_ON_CRITICAL;
+ break;
+ default:
+ mMaxJobCounts = mConstants.MAX_JOB_COUNTS_ON_NORMAL;
+ break;
+ }
+ } else {
+ // Screen off
+ switch (mLastMemoryTrimLevel) {
+ case ProcessStats.ADJ_MEM_FACTOR_MODERATE:
+ mMaxJobCounts = mConstants.MAX_JOB_COUNTS_OFF_MODERATE;
+ break;
+ case ProcessStats.ADJ_MEM_FACTOR_LOW:
+ mMaxJobCounts = mConstants.MAX_JOB_COUNTS_OFF_LOW;
+ break;
+ case ProcessStats.ADJ_MEM_FACTOR_CRITICAL:
+ mMaxJobCounts = mConstants.MAX_JOB_COUNTS_OFF_CRITICAL;
+ break;
+ default:
+ mMaxJobCounts = mConstants.MAX_JOB_COUNTS_OFF_NORMAL;
+ break;
+ }
+ }
}
/**
@@ -62,7 +273,17 @@
* run higher priority ones.
* Lock on mJobs before calling this function.
*/
+ @GuardedBy("mLock")
void assignJobsToContextsLocked() {
+ final long start = mStatLogger.getTime();
+
+ assignJobsToContextsInternalLocked();
+
+ mStatLogger.logDurationStat(Stats.ASSIGN_JOBS_TO_CONTEXTS, start);
+ }
+
+ @GuardedBy("mLock")
+ private void assignJobsToContextsInternalLocked() {
if (DEBUG) {
Slog.d(TAG, printPendingQueueLocked());
}
@@ -72,60 +293,63 @@
final List<JobServiceContext> activeServices = mService.mActiveServices;
final List<StateController> controllers = mService.mControllers;
- int memLevel;
- try {
- memLevel = ActivityManager.getService().getMemoryTrimLevel();
- } catch (RemoteException e) {
- memLevel = ProcessStats.ADJ_MEM_FACTOR_NORMAL;
- }
- switch (memLevel) {
- case ProcessStats.ADJ_MEM_FACTOR_MODERATE:
- mService.mMaxActiveJobs = mConstants.BG_MODERATE_JOB_COUNT;
- break;
- case ProcessStats.ADJ_MEM_FACTOR_LOW:
- mService.mMaxActiveJobs = mConstants.BG_LOW_JOB_COUNT;
- break;
- case ProcessStats.ADJ_MEM_FACTOR_CRITICAL:
- mService.mMaxActiveJobs = mConstants.BG_CRITICAL_JOB_COUNT;
- break;
- default:
- mService.mMaxActiveJobs = mConstants.BG_NORMAL_JOB_COUNT;
- break;
- }
+ updateMaxCountsLocked();
// To avoid GC churn, we recycle the arrays.
JobStatus[] contextIdToJobMap = mRecycledAssignContextIdToJobMap;
boolean[] slotChanged = mRecycledSlotChanged;
int[] preferredUidForContext = mRecycledPreferredUidForContext;
- int numTotalRunningJobs = 0;
- int numForegroundJobs = 0;
+
+ // Initialize the work variables and also count running jobs.
+ mJobCountTracker.reset(
+ mMaxJobCounts.getTotalMax(),
+ mMaxJobCounts.getMaxBg(),
+ mMaxJobCounts.getMinBg());
+
for (int i=0; i<MAX_JOB_CONTEXTS_COUNT; i++) {
final JobServiceContext js = mService.mActiveServices.get(i);
final JobStatus status = js.getRunningJobLocked();
+
if ((contextIdToJobMap[i] = status) != null) {
- numTotalRunningJobs++;
- if (status.lastEvaluatedPriority >= JobInfo.PRIORITY_TOP_APP) {
- numForegroundJobs++;
- }
+ mJobCountTracker.incrementRunningJobCount(isFgJob(status));
}
+
slotChanged[i] = false;
preferredUidForContext[i] = js.getPreferredUid();
}
if (DEBUG) {
Slog.d(TAG, printContextIdToJobMap(contextIdToJobMap, "running jobs initial"));
}
- for (int i=0; i<pendingJobs.size(); i++) {
- final JobStatus nextPending = pendingJobs.get(i);
+
+ // Next, update the job priorities, and also count the pending FG / BG jobs.
+ for (int i = 0; i < pendingJobs.size(); i++) {
+ final JobStatus pending = pendingJobs.get(i);
// If job is already running, go to next job.
+ int jobRunningContext = findJobContextIdFromMap(pending, contextIdToJobMap);
+ if (jobRunningContext != -1) {
+ continue;
+ }
+
+ final int priority = mService.evaluateJobPriorityLocked(pending);
+ pending.lastEvaluatedPriority = priority;
+
+ mJobCountTracker.incrementPendingJobCount(isFgJob(pending));
+ }
+
+ mJobCountTracker.onCountDone();
+
+ for (int i = 0; i < pendingJobs.size(); i++) {
+ final JobStatus nextPending = pendingJobs.get(i);
+
+ // Unfortunately we need to repeat this relatively expensive check.
int jobRunningContext = findJobContextIdFromMap(nextPending, contextIdToJobMap);
if (jobRunningContext != -1) {
continue;
}
- final int priority = mService.evaluateJobPriorityLocked(nextPending);
- nextPending.lastEvaluatedPriority = priority;
+ final boolean isPendingFg = isFgJob(nextPending);
// Find an available slot for nextPending. The context should be available OR
// it should have lowest priority among all running jobs
@@ -137,18 +361,10 @@
JobStatus job = contextIdToJobMap[j];
int preferredUid = preferredUidForContext[j];
if (job == null) {
- final boolean totalCountOk = numTotalRunningJobs < mService.mMaxActiveJobs;
- final boolean fgCountOk = (priority >= JobInfo.PRIORITY_TOP_APP)
- && (numForegroundJobs < mConstants.FG_JOB_COUNT);
final boolean preferredUidOkay = (preferredUid == nextPending.getUid())
|| (preferredUid == JobServiceContext.NO_PREFERRED_UID);
- // TODO: The following check is slightly wrong.
- // Depending on how the pending jobs are sorted, we sometimes cap the total
- // job count at mMaxActiveJobs (when all jobs are FG jobs), or
- // at [mMaxActiveJobs + FG_JOB_COUNT] (when there are mMaxActiveJobs BG jobs
- // and then FG_JOB_COUNT FG jobs.)
- if ((totalCountOk || fgCountOk) && preferredUidOkay) {
+ if (preferredUidOkay && mJobCountTracker.canJobStart(isPendingFg)) {
// This slot is free, and we haven't yet hit the limit on
// concurrent jobs... we can just throw the job in to here.
selectedContextId = j;
@@ -183,16 +399,18 @@
}
if (startingJob) {
// Increase the counters when we're going to start a job.
- numTotalRunningJobs++;
- if (priority >= JobInfo.PRIORITY_TOP_APP) {
- numForegroundJobs++;
- }
+ mJobCountTracker.onStartingNewJob(isPendingFg);
}
}
if (DEBUG) {
Slog.d(TAG, printContextIdToJobMap(contextIdToJobMap, "running jobs final"));
}
- tracker.noteConcurrency(numTotalRunningJobs, numForegroundJobs);
+
+ mJobCountTracker.logStatus();
+
+ tracker.noteConcurrency(mJobCountTracker.getTotalRunningJobCountToNote(),
+ mJobCountTracker.getFgRunningJobCountToNote());
+
for (int i=0; i<MAX_JOB_CONTEXTS_COUNT; i++) {
boolean preservePreferredUid = false;
if (slotChanged[i]) {
@@ -228,7 +446,7 @@
}
}
- int findJobContextIdFromMap(JobStatus jobStatus, JobStatus[] map) {
+ private static int findJobContextIdFromMap(JobStatus jobStatus, JobStatus[] map) {
for (int i=0; i<map.length; i++) {
if (map[i] != null && map[i].matches(jobStatus.getUid(), jobStatus.getJobId())) {
return i;
@@ -237,6 +455,7 @@
return -1;
}
+ @GuardedBy("mLock")
private String printPendingQueueLocked() {
StringBuilder s = new StringBuilder("Pending queue: ");
Iterator<JobStatus> it = mService.mPendingJobs.iterator();
@@ -251,7 +470,7 @@
return s.toString();
}
- private String printContextIdToJobMap(JobStatus[] map, String initial) {
+ private static String printContextIdToJobMap(JobStatus[] map, String initial) {
StringBuilder s = new StringBuilder(initial + ": ");
for (int i=0; i<map.length; i++) {
s.append("(")
@@ -262,4 +481,222 @@
return s.toString();
}
+
+ public void dumpLocked(IndentingPrintWriter pw) {
+ final long now = System.currentTimeMillis();
+ final long nowRealtime = JobSchedulerService.sElapsedRealtimeClock.millis();
+
+ pw.println("Concurrency:");
+
+ pw.increaseIndent();
+ try {
+ pw.print("Screen state: current ");
+ pw.print(mCurrentInteractiveState ? "ON" : "OFF");
+ pw.print(" effective ");
+ pw.print(mEffectiveInteractiveState ? "ON" : "OFF");
+ pw.println();
+
+ pw.print("Last screen ON : ");
+ TimeUtils.dumpTimeWithDelta(pw, now - nowRealtime + mLastScreenOnRealtime, now);
+ pw.println();
+
+ pw.print("Last screen OFF: ");
+ TimeUtils.dumpTimeWithDelta(pw, now - nowRealtime + mLastScreenOffRealtime, now);
+ pw.println();
+
+ pw.println();
+
+ pw.println("Current max jobs:");
+ pw.println(" ");
+ pw.println(mJobCountTracker);
+
+ pw.println();
+
+ pw.print("mLastMemoryTrimLevel: ");
+ pw.print(mLastMemoryTrimLevel);
+ pw.println();
+
+ mStatLogger.dump(pw);
+ } finally {
+ pw.decreaseIndent();
+ }
+ }
+
+ public void dumpProtoLocked(ProtoOutputStream proto) {
+ // TODO Implement it.
+ }
+
+ /**
+ * This class decides, taking into account {@link #mMaxJobCounts} and how many jos are running /
+ * pending, how many more job can start.
+ *
+ * Extracted for testing and logging.
+ */
+ @VisibleForTesting
+ static class JobCountTracker {
+ private int mConfigNumTotalMaxJobs;
+ private int mConfigNumMaxBgJobs;
+ private int mConfigNumMinBgJobs;
+
+ private int mNumRunningFgJobs;
+ private int mNumRunningBgJobs;
+
+ private int mNumPendingFgJobs;
+ private int mNumPendingBgJobs;
+
+ private int mNumStartingFgJobs;
+ private int mNumStartingBgJobs;
+
+ private int mNumReservedForBg;
+ private int mNumActualMaxFgJobs;
+ private int mNumActualMaxBgJobs;
+
+ void reset(int numTotalMaxJobs, int numMaxBgJobs, int numMinBgJobs) {
+ mConfigNumTotalMaxJobs = numTotalMaxJobs;
+ mConfigNumMaxBgJobs = numMaxBgJobs;
+ mConfigNumMinBgJobs = numMinBgJobs;
+
+ mNumRunningFgJobs = 0;
+ mNumRunningBgJobs = 0;
+
+ mNumPendingFgJobs = 0;
+ mNumPendingBgJobs = 0;
+
+ mNumStartingFgJobs = 0;
+ mNumStartingBgJobs = 0;
+
+ mNumReservedForBg = 0;
+ mNumActualMaxFgJobs = 0;
+ mNumActualMaxBgJobs = 0;
+ }
+
+ void incrementRunningJobCount(boolean isFg) {
+ if (isFg) {
+ mNumRunningFgJobs++;
+ } else {
+ mNumRunningBgJobs++;
+ }
+ }
+
+ void incrementPendingJobCount(boolean isFg) {
+ if (isFg) {
+ mNumPendingFgJobs++;
+ } else {
+ mNumPendingBgJobs++;
+ }
+ }
+
+ void onStartingNewJob(boolean isFg) {
+ if (isFg) {
+ mNumStartingFgJobs++;
+ } else {
+ mNumStartingBgJobs++;
+ }
+ }
+
+ void onCountDone() {
+ // Note some variables are used only here but are made class members in order to have
+ // them on logcat / dumpsys.
+
+ // How many slots should we allocate to BG jobs at least?
+ // That's basically "getMinBg()", but if there are less jobs, decrease it.
+ // (e.g. even if min-bg is 2, if there's only 1 running+pending job, this has to be 1.)
+ final int reservedForBg = Math.min(
+ mConfigNumMinBgJobs,
+ mNumRunningBgJobs + mNumPendingBgJobs);
+
+ // However, if there are FG jobs already running, we have to adjust it.
+ mNumReservedForBg = Math.min(reservedForBg,
+ mConfigNumTotalMaxJobs - mNumRunningFgJobs);
+
+ // Max FG is [total - [number needed for BG jobs]]
+ // [number needed for BG jobs] is the bigger one of [running BG] or [reserved BG]
+ final int maxFg =
+ mConfigNumTotalMaxJobs - Math.max(mNumRunningBgJobs, mNumReservedForBg);
+
+ // The above maxFg is the theoretical max. If there are less FG jobs, the actual
+ // max FG will be lower accordingly.
+ mNumActualMaxFgJobs = Math.min(
+ maxFg,
+ mNumRunningFgJobs + mNumPendingFgJobs);
+
+ // Max BG is [total - actual max FG], but cap at [config max BG].
+ final int maxBg = Math.min(
+ mConfigNumMaxBgJobs,
+ mConfigNumTotalMaxJobs - mNumActualMaxFgJobs);
+
+ // If there are less BG jobs than maxBg, then reduce the actual max BG accordingly.
+ // This isn't needed for the logic to work, but this will give consistent output
+ // on logcat and dumpsys.
+ mNumActualMaxBgJobs = Math.min(
+ maxBg,
+ mNumRunningBgJobs + mNumPendingBgJobs);
+ }
+
+ boolean canJobStart(boolean isFg) {
+ if (isFg) {
+ return mNumRunningFgJobs + mNumStartingFgJobs < mNumActualMaxFgJobs;
+ } else {
+ return mNumRunningBgJobs + mNumStartingBgJobs < mNumActualMaxBgJobs;
+ }
+ }
+
+ public int getNumStartingFgJobs() {
+ return mNumStartingFgJobs;
+ }
+
+ public int getNumStartingBgJobs() {
+ return mNumStartingBgJobs;
+ }
+
+ int getTotalRunningJobCountToNote() {
+ return mNumRunningFgJobs + mNumRunningBgJobs
+ + mNumStartingFgJobs + mNumStartingBgJobs;
+ }
+
+ int getFgRunningJobCountToNote() {
+ return mNumRunningFgJobs + mNumStartingFgJobs;
+ }
+
+ void logStatus() {
+ if (DEBUG) {
+ Slog.d(TAG, "assignJobsToContexts: " + this);
+ }
+ }
+
+ public String toString() {
+ final int totalFg = mNumRunningFgJobs + mNumStartingFgJobs;
+ final int totalBg = mNumRunningBgJobs + mNumStartingBgJobs;
+ return String.format(
+ "Config={tot=%d bg min/max=%d/%d}"
+ + " Running: %d / %d (%d)"
+ + " Pending: %d / %d (%d)"
+ + " Actual max: %d%s / %d%s (%d%s)"
+ + " Starting: %d / %d (%d)"
+ + " Total: %d%s / %d%s (%d%s)",
+ mConfigNumTotalMaxJobs,
+ mConfigNumMinBgJobs,
+ mConfigNumMaxBgJobs,
+
+ mNumRunningFgJobs, mNumRunningBgJobs,
+ mNumRunningFgJobs + mNumRunningBgJobs,
+
+ mNumPendingFgJobs, mNumPendingBgJobs,
+ mNumPendingFgJobs + mNumPendingBgJobs,
+
+ mNumActualMaxFgJobs, (totalFg <= mConfigNumTotalMaxJobs) ? "" : "*",
+ mNumActualMaxBgJobs, (totalBg <= mConfigNumMaxBgJobs) ? "" : "*",
+
+ mNumActualMaxFgJobs + mNumActualMaxBgJobs,
+ (mNumActualMaxFgJobs + mNumActualMaxBgJobs <= mConfigNumTotalMaxJobs)
+ ? "" : "*",
+
+ mNumStartingFgJobs, mNumStartingBgJobs, mNumStartingFgJobs + mNumStartingBgJobs,
+
+ totalFg, (totalFg <= mNumActualMaxFgJobs) ? "" : "*",
+ totalBg, (totalBg <= mNumActualMaxBgJobs) ? "" : "*",
+ totalFg + totalBg, (totalFg + totalBg <= mConfigNumTotalMaxJobs) ? "" : "*"
+ );
+ }
+ }
}
diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java
index 2464ca7..cc0ac9a 100644
--- a/services/core/java/com/android/server/job/JobSchedulerService.java
+++ b/services/core/java/com/android/server/job/JobSchedulerService.java
@@ -224,12 +224,6 @@
volatile boolean mInParole;
/**
- * Current limit on the number of concurrent JobServiceContext entries we want to
- * keep actively running a job.
- */
- int mMaxActiveJobs = 1;
-
- /**
* A mapping of which uids are currently in the foreground to their effective priority.
*/
final SparseIntArray mUidPriorityOverride = new SparseIntArray();
@@ -332,41 +326,68 @@
}
}
- private static class MaxJobCounts {
+ static class MaxJobCounts {
private final KeyValueListParser.IntValue mTotal;
- private final KeyValueListParser.IntValue mBg;
+ private final KeyValueListParser.IntValue mMaxBg;
+ private final KeyValueListParser.IntValue mMinBg;
- private MaxJobCounts(int totalDefault, String totalKey, int bgDefault, String bgKey) {
+ MaxJobCounts(int totalDefault, String totalKey,
+ int maxBgDefault, String maxBgKey, int minBgDefault, String minBgKey) {
mTotal = new KeyValueListParser.IntValue(totalKey, totalDefault);
- mBg = new KeyValueListParser.IntValue(bgKey, bgDefault);
+ mMaxBg = new KeyValueListParser.IntValue(maxBgKey, maxBgDefault);
+ mMinBg = new KeyValueListParser.IntValue(minBgKey, minBgDefault);
}
public void parse(KeyValueListParser parser) {
mTotal.parse(parser);
- mBg.parse(parser);
+ mMaxBg.parse(parser);
+ mMinBg.parse(parser);
- if (mBg.getValue() > mTotal.getValue()) {
- mBg.setValue(mTotal.getValue());
+ if (mTotal.getValue() < 1) {
+ mTotal.setValue(1);
+ } else if (mTotal.getValue() > MAX_JOB_CONTEXTS_COUNT) {
+ mTotal.setValue(MAX_JOB_CONTEXTS_COUNT);
}
+ if (mMaxBg.getValue() < 1) {
+ mMaxBg.setValue(1);
+ } else if (mMaxBg.getValue() > mTotal.getValue()) {
+ mMaxBg.setValue(mTotal.getValue());
+ }
+ if (mMinBg.getValue() < 0) {
+ mMinBg.setValue(0);
+ } else {
+ if (mMinBg.getValue() > mMaxBg.getValue()) {
+ mMinBg.setValue(mMaxBg.getValue());
+ }
+ if (mMinBg.getValue() >= mTotal.getValue()) {
+ mMinBg.setValue(mTotal.getValue() - 1);
+ }
+ }
}
public int getTotalMax() {
return mTotal.getValue();
}
- public int getBgMax() {
- return mBg.getValue();
+ public int getMaxBg() {
+ return mMaxBg.getValue();
+ }
+
+ public int getMinBg() {
+ return mMinBg.getValue();
}
public void dump(PrintWriter pw, String prefix) {
mTotal.dump(pw, prefix);
- mBg.dump(pw, prefix);
+ mMaxBg.dump(pw, prefix);
+ mMinBg.dump(pw, prefix);
}
public void dumpProto(ProtoOutputStream proto, long tagTotal, long tagBg) {
mTotal.dumpProto(proto, tagTotal);
- mBg.dumpProto(proto, tagBg);
+ mMaxBg.dumpProto(proto, tagBg);
+ mMinBg.dumpProto(proto, tagBg);
}
}
@@ -386,11 +407,14 @@
private static final String KEY_MIN_READY_JOBS_COUNT = "min_ready_jobs_count";
private static final String KEY_HEAVY_USE_FACTOR = "heavy_use_factor";
private static final String KEY_MODERATE_USE_FACTOR = "moderate_use_factor";
- private static final String KEY_FG_JOB_COUNT = "fg_job_count";
- private static final String KEY_BG_NORMAL_JOB_COUNT = "bg_normal_job_count";
- private static final String KEY_BG_MODERATE_JOB_COUNT = "bg_moderate_job_count";
- private static final String KEY_BG_LOW_JOB_COUNT = "bg_low_job_count";
- private static final String KEY_BG_CRITICAL_JOB_COUNT = "bg_critical_job_count";
+
+ // The following values used to be used on P and below. Do not reuse them.
+ private static final String DEPRECATED_KEY_FG_JOB_COUNT = "fg_job_count";
+ private static final String DEPRECATED_KEY_BG_NORMAL_JOB_COUNT = "bg_normal_job_count";
+ private static final String DEPRECATED_KEY_BG_MODERATE_JOB_COUNT = "bg_moderate_job_count";
+ private static final String DEPRECATED_KEY_BG_LOW_JOB_COUNT = "bg_low_job_count";
+ private static final String DEPRECATED_KEY_BG_CRITICAL_JOB_COUNT = "bg_critical_job_count";
+
private static final String KEY_MAX_STANDARD_RESCHEDULE_COUNT
= "max_standard_reschedule_count";
private static final String KEY_MAX_WORK_RESCHEDULE_COUNT = "max_work_reschedule_count";
@@ -429,11 +453,6 @@
private static final int DEFAULT_MIN_READY_JOBS_COUNT = 1;
private static final float DEFAULT_HEAVY_USE_FACTOR = .9f;
private static final float DEFAULT_MODERATE_USE_FACTOR = .5f;
- private static final int DEFAULT_FG_JOB_COUNT = 4;
- private static final int DEFAULT_BG_NORMAL_JOB_COUNT = 6;
- private static final int DEFAULT_BG_MODERATE_JOB_COUNT = 4;
- private static final int DEFAULT_BG_LOW_JOB_COUNT = 1;
- private static final int DEFAULT_BG_CRITICAL_JOB_COUNT = 1;
private static final int DEFAULT_MAX_STANDARD_RESCHEDULE_COUNT = Integer.MAX_VALUE;
private static final int DEFAULT_MAX_WORK_RESCHEDULE_COUNT = Integer.MAX_VALUE;
private static final long DEFAULT_MIN_LINEAR_BACKOFF_TIME = JobInfo.MIN_BACKOFF_MILLIS;
@@ -506,66 +525,52 @@
* This is the job execution factor that is considered to be moderate use of the system.
*/
float MODERATE_USE_FACTOR = DEFAULT_MODERATE_USE_FACTOR;
- /**
- * The number of MAX_JOB_CONTEXTS_COUNT we reserve for the foreground app.
- */
- int FG_JOB_COUNT = DEFAULT_FG_JOB_COUNT;
- /**
- * The maximum number of background jobs we allow when the system is in a normal
- * memory state.
- */
- int BG_NORMAL_JOB_COUNT = DEFAULT_BG_NORMAL_JOB_COUNT;
- /**
- * The maximum number of background jobs we allow when the system is in a moderate
- * memory state.
- */
- int BG_MODERATE_JOB_COUNT = DEFAULT_BG_MODERATE_JOB_COUNT;
- /**
- * The maximum number of background jobs we allow when the system is in a low
- * memory state.
- */
- int BG_LOW_JOB_COUNT = DEFAULT_BG_LOW_JOB_COUNT;
- /**
- * The maximum number of background jobs we allow when the system is in a critical
- * memory state.
- */
- int BG_CRITICAL_JOB_COUNT = DEFAULT_BG_CRITICAL_JOB_COUNT;
// Max job counts for screen on / off, for each memory trim level.
- // TODO Remove the old configs such as FG_JOB_COUNT and BG_*_COUNT, once the code switches
- // to the below configs.
-
final MaxJobCounts MAX_JOB_COUNTS_ON_NORMAL = new MaxJobCounts(
- 4, "max_job_total_on_normal",
- 2, "max_job_bg_on_normal");
+ 8, "max_job_total_on_normal",
+ 6, "max_job_max_bg_on_normal",
+ 2, "max_job_min_bg_on_normal");
final MaxJobCounts MAX_JOB_COUNTS_ON_MODERATE = new MaxJobCounts(
- 4, "max_job_total_on_moderate",
- 1, "max_job_bg_on_moderate");
+ 8, "max_job_total_on_moderate",
+ 4, "max_job_max_bg_on_moderate",
+ 2, "max_job_min_bg_on_moderate");
final MaxJobCounts MAX_JOB_COUNTS_ON_LOW = new MaxJobCounts(
- 4, "max_job_total_on_low",
- 1, "max_job_bg_on_low");
+ 5, "max_job_total_on_low",
+ 1, "max_job_max_bg_on_low",
+ 1, "max_job_min_bg_on_low");
final MaxJobCounts MAX_JOB_COUNTS_ON_CRITICAL = new MaxJobCounts(
- 2, "max_job_total_on_critical",
- 1, "max_job_bg_on_critical");
+ 5, "max_job_total_on_critical",
+ 1, "max_job_max_bg_on_critical",
+ 1, "max_job_min_bg_on_critical");
final MaxJobCounts MAX_JOB_COUNTS_OFF_NORMAL = new MaxJobCounts(
- 8, "max_job_total_off_normal",
- 4, "max_job_bg_off_normal");
+ 10, "max_job_total_off_normal",
+ 6, "max_job_max_bg_off_normal",
+ 2, "max_job_min_bg_off_normal");
final MaxJobCounts MAX_JOB_COUNTS_OFF_MODERATE = new MaxJobCounts(
- 6, "max_job_total_off_moderate",
- 4, "max_job_bg_off_moderate");
+ 10, "max_job_total_off_moderate",
+ 4, "max_job_max_bg_off_moderate",
+ 2, "max_job_min_bg_off_moderate");
final MaxJobCounts MAX_JOB_COUNTS_OFF_LOW = new MaxJobCounts(
- 4, "max_job_total_off_low",
- 1, "max_job_bg_off_low");
+ 5, "max_job_total_off_low",
+ 1, "max_job_max_bg_off_low",
+ 1, "max_job_min_bg_off_low");
final MaxJobCounts MAX_JOB_COUNTS_OFF_CRITICAL = new MaxJobCounts(
- 2, "max_job_total_off_critical",
- 1, "max_job_bg_off_critical");
+ 5, "max_job_total_off_critical",
+ 1, "max_job_max_bg_off_critical",
+ 1, "max_job_min_bg_off_critical");
+
+ /** Wait for this long after screen off before increasing the job concurrency. */
+ final KeyValueListParser.IntValue SCREEN_OFF_JOB_CONCURRENCY_INCREASE_DELAY_MS =
+ new KeyValueListParser.IntValue(
+ "screen_off_job_concurrency_increase_delay_ms", 30_000);
/**
* The maximum number of times we allow a job to have itself rescheduled before
@@ -706,28 +711,6 @@
DEFAULT_HEAVY_USE_FACTOR);
MODERATE_USE_FACTOR = mParser.getFloat(KEY_MODERATE_USE_FACTOR,
DEFAULT_MODERATE_USE_FACTOR);
- FG_JOB_COUNT = mParser.getInt(KEY_FG_JOB_COUNT,
- DEFAULT_FG_JOB_COUNT);
- BG_NORMAL_JOB_COUNT = mParser.getInt(KEY_BG_NORMAL_JOB_COUNT,
- DEFAULT_BG_NORMAL_JOB_COUNT);
- if ((FG_JOB_COUNT+BG_NORMAL_JOB_COUNT) > MAX_JOB_CONTEXTS_COUNT) {
- BG_NORMAL_JOB_COUNT = MAX_JOB_CONTEXTS_COUNT - FG_JOB_COUNT;
- }
- BG_MODERATE_JOB_COUNT = mParser.getInt(KEY_BG_MODERATE_JOB_COUNT,
- DEFAULT_BG_MODERATE_JOB_COUNT);
- if ((FG_JOB_COUNT+BG_MODERATE_JOB_COUNT) > MAX_JOB_CONTEXTS_COUNT) {
- BG_MODERATE_JOB_COUNT = MAX_JOB_CONTEXTS_COUNT - FG_JOB_COUNT;
- }
- BG_LOW_JOB_COUNT = mParser.getInt(KEY_BG_LOW_JOB_COUNT,
- DEFAULT_BG_LOW_JOB_COUNT);
- if ((FG_JOB_COUNT+BG_LOW_JOB_COUNT) > MAX_JOB_CONTEXTS_COUNT) {
- BG_LOW_JOB_COUNT = MAX_JOB_CONTEXTS_COUNT - FG_JOB_COUNT;
- }
- BG_CRITICAL_JOB_COUNT = mParser.getInt(KEY_BG_CRITICAL_JOB_COUNT,
- DEFAULT_BG_CRITICAL_JOB_COUNT);
- if ((FG_JOB_COUNT+BG_CRITICAL_JOB_COUNT) > MAX_JOB_CONTEXTS_COUNT) {
- BG_CRITICAL_JOB_COUNT = MAX_JOB_CONTEXTS_COUNT - FG_JOB_COUNT;
- }
MAX_JOB_COUNTS_ON_NORMAL.parse(mParser);
MAX_JOB_COUNTS_ON_MODERATE.parse(mParser);
@@ -798,11 +781,6 @@
pw.printPair(KEY_MIN_READY_JOBS_COUNT, MIN_READY_JOBS_COUNT).println();
pw.printPair(KEY_HEAVY_USE_FACTOR, HEAVY_USE_FACTOR).println();
pw.printPair(KEY_MODERATE_USE_FACTOR, MODERATE_USE_FACTOR).println();
- pw.printPair(KEY_FG_JOB_COUNT, FG_JOB_COUNT).println();
- pw.printPair(KEY_BG_NORMAL_JOB_COUNT, BG_NORMAL_JOB_COUNT).println();
- pw.printPair(KEY_BG_MODERATE_JOB_COUNT, BG_MODERATE_JOB_COUNT).println();
- pw.printPair(KEY_BG_LOW_JOB_COUNT, BG_LOW_JOB_COUNT).println();
- pw.printPair(KEY_BG_CRITICAL_JOB_COUNT, BG_CRITICAL_JOB_COUNT).println();
MAX_JOB_COUNTS_ON_NORMAL.dump(pw, "");
MAX_JOB_COUNTS_ON_MODERATE.dump(pw, "");
@@ -859,11 +837,6 @@
proto.write(ConstantsProto.MIN_READY_JOBS_COUNT, MIN_READY_JOBS_COUNT);
proto.write(ConstantsProto.HEAVY_USE_FACTOR, HEAVY_USE_FACTOR);
proto.write(ConstantsProto.MODERATE_USE_FACTOR, MODERATE_USE_FACTOR);
- proto.write(ConstantsProto.FG_JOB_COUNT, FG_JOB_COUNT);
- proto.write(ConstantsProto.BG_NORMAL_JOB_COUNT, BG_NORMAL_JOB_COUNT);
- proto.write(ConstantsProto.BG_MODERATE_JOB_COUNT, BG_MODERATE_JOB_COUNT);
- proto.write(ConstantsProto.BG_LOW_JOB_COUNT, BG_LOW_JOB_COUNT);
- proto.write(ConstantsProto.BG_CRITICAL_JOB_COUNT, BG_CRITICAL_JOB_COUNT);
// TODO Dump max job counts.
@@ -1558,6 +1531,9 @@
} catch (RemoteException e) {
// ignored; both services live in system_server
}
+
+ mConcurrencyManager.onSystemReady();
+
// Remove any jobs that are not associated with any of the current users.
cancelJobsForNonExistentUsers();
// Register thermal callback
@@ -1685,7 +1661,7 @@
* Reschedules the given job based on the job's backoff policy. It doesn't make sense to
* specify an override deadline on a failed job (the failed job will run even though it's not
* ready), so we reschedule it with {@link JobStatus#NO_LATEST_RUNTIME}, but specify that any
- * ready job with {@link JobStatus#numFailures} > 0 will be executed.
+ * ready job with {@link JobStatus#getNumFailures()} > 0 will be executed.
*
* @param failureToReschedule Provided job status that we will reschedule.
* @return A newly instantiated JobStatus with the same constraints as the last job except
@@ -2467,7 +2443,7 @@
* A controller can force a job into the pending queue even if it's already running, but
* here is where we decide whether to actually execute it.
*/
- private void maybeRunPendingJobsLocked() {
+ void maybeRunPendingJobsLocked() {
if (DEBUG) {
Slog.d(TAG, "pending queue: " + mPendingJobs.size() + " jobs.");
}
@@ -3480,9 +3456,12 @@
pw.println();
pw.print("mReadyToRock="); pw.println(mReadyToRock);
pw.print("mReportedActive="); pw.println(mReportedActive);
- pw.print("mMaxActiveJobs="); pw.println(mMaxActiveJobs);
}
pw.println();
+
+ mConcurrencyManager.dumpLocked(pw);
+
+ pw.println();
pw.print("PersistStats: ");
pw.println(mJobs.getPersistStats());
}
@@ -3634,8 +3613,8 @@
if (filterUid == -1) {
proto.write(JobSchedulerServiceDumpProto.IS_READY_TO_ROCK, mReadyToRock);
proto.write(JobSchedulerServiceDumpProto.REPORTED_ACTIVE, mReportedActive);
- proto.write(JobSchedulerServiceDumpProto.MAX_ACTIVE_JOBS, mMaxActiveJobs);
}
+ mConcurrencyManager.dumpProtoLocked(proto);
}
proto.flush();
diff --git a/services/core/java/com/android/server/job/controllers/QuotaController.java b/services/core/java/com/android/server/job/controllers/QuotaController.java
index ac2dbdf..c16d1b4 100644
--- a/services/core/java/com/android/server/job/controllers/QuotaController.java
+++ b/services/core/java/com/android/server/job/controllers/QuotaController.java
@@ -26,7 +26,10 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
+import android.app.ActivityManager;
+import android.app.ActivityManagerInternal;
import android.app.AlarmManager;
+import android.app.IUidObserver;
import android.app.usage.UsageStatsManagerInternal;
import android.app.usage.UsageStatsManagerInternal.AppIdleStateChangeListener;
import android.content.BroadcastReceiver;
@@ -38,12 +41,14 @@
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.os.RemoteException;
import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
import android.util.Slog;
import android.util.SparseArray;
+import android.util.SparseBooleanArray;
import android.util.proto.ProtoOutputStream;
import com.android.internal.annotations.VisibleForTesting;
@@ -69,6 +74,11 @@
* bucket, it will be eligible to run. When a job's bucket changes, its new quota is immediately
* applied to it.
*
+ * Jobs are throttled while an app is not in a foreground state. All jobs are allowed to run
+ * freely when an app enters the foreground state and are restricted when the app leaves the
+ * foreground state. However, jobs that are started while the app is in the TOP state are not
+ * restricted regardless of the app's state change.
+ *
* Test: atest com.android.server.job.controllers.QuotaControllerTest
*/
public final class QuotaController extends StateController {
@@ -97,6 +107,12 @@
data.put(packageName, obj);
}
+ public void clear() {
+ for (int i = 0; i < mData.size(); ++i) {
+ mData.valueAt(i).clear();
+ }
+ }
+
/** Removes all the data for the user, if there was any. */
public void delete(int userId) {
mData.delete(userId);
@@ -119,6 +135,11 @@
return null;
}
+ /** @see SparseArray#indexOfKey */
+ public int indexOfKey(int userId) {
+ return mData.indexOfKey(userId);
+ }
+
/** Returns the userId at the given index. */
public int keyAt(int index) {
return mData.keyAt(index);
@@ -294,6 +315,17 @@
/** Cached calculation results for each app, with the standby buckets as the array indices. */
private final UserPackageMap<ExecutionStats[]> mExecutionStatsCache = new UserPackageMap<>();
+ /** List of UIDs currently in the foreground. */
+ private final SparseBooleanArray mForegroundUids = new SparseBooleanArray();
+
+ /**
+ * List of jobs that started while the UID was in the TOP state. There will be no more than
+ * 16 ({@link JobSchedulerService.MAX_JOB_CONTEXTS_COUNT}) running at once, so an ArraySet is
+ * fine.
+ */
+ private final ArraySet<JobStatus> mTopStartedJobs = new ArraySet<>();
+
+ private final ActivityManagerInternal mActivityManagerInternal;
private final AlarmManager mAlarmManager;
private final ChargingTracker mChargeTracker;
private final Handler mHandler;
@@ -343,6 +375,29 @@
}
};
+ private final IUidObserver mUidObserver = new IUidObserver.Stub() {
+ @Override
+ public void onUidStateChanged(int uid, int procState, long procStateSeq) {
+ mHandler.obtainMessage(MSG_UID_PROCESS_STATE_CHANGED, uid, procState).sendToTarget();
+ }
+
+ @Override
+ public void onUidGone(int uid, boolean disabled) {
+ }
+
+ @Override
+ public void onUidActive(int uid) {
+ }
+
+ @Override
+ public void onUidIdle(int uid, boolean disabled) {
+ }
+
+ @Override
+ public void onUidCachedChanged(int uid, boolean cached) {
+ }
+ };
+
/**
* The rolling window size for each standby bucket. Within each window, an app will have 10
* minutes to run its jobs.
@@ -363,12 +418,15 @@
private static final int MSG_CLEAN_UP_SESSIONS = 1;
/** Check if a package is now within its quota. */
private static final int MSG_CHECK_PACKAGE = 2;
+ /** Process state for a UID has changed. */
+ private static final int MSG_UID_PROCESS_STATE_CHANGED = 3;
public QuotaController(JobSchedulerService service) {
super(service);
mHandler = new QcHandler(mContext.getMainLooper());
mChargeTracker = new ChargingTracker();
mChargeTracker.startTracking();
+ mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class);
mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
// Set up the app standby bucketing tracker
@@ -376,6 +434,14 @@
UsageStatsManagerInternal.class);
usageStats.addAppIdleStateChangeListener(new StandbyTracker());
+ try {
+ ActivityManager.getService().registerUidObserver(mUidObserver,
+ ActivityManager.UID_OBSERVER_PROCSTATE,
+ ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, null);
+ } catch (RemoteException e) {
+ // ignored; both services live in system_server
+ }
+
onConstantsUpdatedLocked();
}
@@ -399,11 +465,15 @@
if (DEBUG) Slog.d(TAG, "Prepping for " + jobStatus.toShortString());
final int userId = jobStatus.getSourceUserId();
final String packageName = jobStatus.getSourcePackageName();
+ final int uid = jobStatus.getSourceUid();
Timer timer = mPkgTimers.get(userId, packageName);
if (timer == null) {
- timer = new Timer(userId, packageName);
+ timer = new Timer(uid, userId, packageName);
mPkgTimers.add(userId, packageName, timer);
}
+ if (mActivityManagerInternal.getUidProcessState(uid) == ActivityManager.PROCESS_STATE_TOP) {
+ mTopStartedJobs.add(jobStatus);
+ }
timer.startTrackingJob(jobStatus);
}
@@ -421,6 +491,7 @@
if (jobs != null) {
jobs.remove(jobStatus);
}
+ mTopStartedJobs.remove(jobStatus);
}
}
@@ -511,6 +582,7 @@
mInQuotaAlarmListeners.delete(userId, packageName);
}
mExecutionStatsCache.delete(userId, packageName);
+ mForegroundUids.delete(uid);
}
@Override
@@ -522,6 +594,20 @@
mExecutionStatsCache.delete(userId);
}
+ private boolean isUidInForeground(int uid) {
+ if (UserHandle.isCore(uid)) {
+ return true;
+ }
+ synchronized (mLock) {
+ return mForegroundUids.get(uid);
+ }
+ }
+
+ /** @return true if the job was started while the app was in the TOP state. */
+ private boolean isTopStartedJob(@NonNull final JobStatus jobStatus) {
+ return mTopStartedJobs.contains(jobStatus);
+ }
+
/**
* Returns an appropriate standby bucket for the job, taking into account any standby
* exemptions.
@@ -537,9 +623,15 @@
private boolean isWithinQuotaLocked(@NonNull final JobStatus jobStatus) {
final int standbyBucket = getEffectiveStandbyBucket(jobStatus);
- // Jobs for the active app should always be able to run.
- return jobStatus.uidActive || isWithinQuotaLocked(
- jobStatus.getSourceUserId(), jobStatus.getSourcePackageName(), standbyBucket);
+ Timer timer = mPkgTimers.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName());
+ // A job is within quota if one of the following is true:
+ // 1. it was started while the app was in the TOP state
+ // 2. the app is currently in the foreground
+ // 3. the app overall is within its quota
+ return isTopStartedJob(jobStatus)
+ || isUidInForeground(jobStatus.getSourceUid())
+ || isWithinQuotaLocked(
+ jobStatus.getSourceUserId(), jobStatus.getSourcePackageName(), standbyBucket);
}
private boolean isWithinQuotaLocked(final int userId, @NonNull final String packageName,
@@ -800,7 +892,7 @@
final boolean isCharging = mChargeTracker.isCharging();
if (DEBUG) Slog.d(TAG, "handleNewChargingStateLocked: " + isCharging);
// Deal with Timers first.
- mPkgTimers.forEach((t) -> t.onChargingChanged(nowElapsed, isCharging));
+ mPkgTimers.forEach((t) -> t.onStateChanged(nowElapsed, isCharging));
// Now update jobs.
maybeUpdateAllConstraintsLocked();
}
@@ -837,10 +929,15 @@
boolean changed = false;
for (int i = jobs.size() - 1; i >= 0; --i) {
final JobStatus js = jobs.valueAt(i);
- if (js.uidActive) {
- // Jobs for the active app should always be able to run.
+ if (isTopStartedJob(js)) {
+ // Job was started while the app was in the TOP state so we should allow it to
+ // finish.
changed |= js.setQuotaConstraintSatisfied(true);
- } else if (realStandbyBucket == getEffectiveStandbyBucket(js)) {
+ } else if (realStandbyBucket != ACTIVE_INDEX
+ && realStandbyBucket == getEffectiveStandbyBucket(js)) {
+ // An app in the ACTIVE bucket may be out of quota while the job could be in quota
+ // for some reason. Therefore, avoid setting the real value here and check each job
+ // individually.
changed |= js.setQuotaConstraintSatisfied(realInQuota);
} else {
// This job is somehow exempted. Need to determine its own quota status.
@@ -854,7 +951,7 @@
maybeScheduleStartAlarmLocked(userId, packageName, realStandbyBucket);
} else {
QcAlarmListener alarmListener = mInQuotaAlarmListeners.get(userId, packageName);
- if (alarmListener != null) {
+ if (alarmListener != null && alarmListener.isWaiting()) {
mAlarmManager.cancel(alarmListener);
// Set the trigger time to 0 so that the alarm doesn't think it's still waiting.
alarmListener.setTriggerTime(0);
@@ -863,6 +960,56 @@
return changed;
}
+ private class UidConstraintUpdater implements Consumer<JobStatus> {
+ private final UserPackageMap<Integer> mToScheduleStartAlarms = new UserPackageMap<>();
+ public boolean wasJobChanged;
+
+ @Override
+ public void accept(JobStatus jobStatus) {
+ wasJobChanged |= jobStatus.setQuotaConstraintSatisfied(isWithinQuotaLocked(jobStatus));
+ final int userId = jobStatus.getSourceUserId();
+ final String packageName = jobStatus.getSourcePackageName();
+ final int realStandbyBucket = jobStatus.getStandbyBucket();
+ if (isWithinQuotaLocked(userId, packageName, realStandbyBucket)) {
+ QcAlarmListener alarmListener = mInQuotaAlarmListeners.get(userId, packageName);
+ if (alarmListener != null && alarmListener.isWaiting()) {
+ mAlarmManager.cancel(alarmListener);
+ // Set the trigger time to 0 so that the alarm doesn't think it's still waiting.
+ alarmListener.setTriggerTime(0);
+ }
+ } else {
+ mToScheduleStartAlarms.add(userId, packageName, realStandbyBucket);
+ }
+ }
+
+ void postProcess() {
+ for (int u = 0; u < mToScheduleStartAlarms.numUsers(); ++u) {
+ final int userId = mToScheduleStartAlarms.keyAt(u);
+ for (int p = 0; p < mToScheduleStartAlarms.numPackagesForUser(userId); ++p) {
+ final String packageName = mToScheduleStartAlarms.keyAt(u, p);
+ final int standbyBucket = mToScheduleStartAlarms.get(userId, packageName);
+ maybeScheduleStartAlarmLocked(userId, packageName, standbyBucket);
+ }
+ }
+ }
+
+ void reset() {
+ wasJobChanged = false;
+ mToScheduleStartAlarms.clear();
+ }
+ }
+
+ private final UidConstraintUpdater mUpdateUidConstraints = new UidConstraintUpdater();
+
+ private boolean maybeUpdateConstraintForUidLocked(final int uid) {
+ mService.getJobStore().forEachJobForSourceUid(uid, mUpdateUidConstraints);
+
+ mUpdateUidConstraints.postProcess();
+ boolean changed = mUpdateUidConstraints.wasJobChanged;
+ mUpdateUidConstraints.reset();
+ return changed;
+ }
+
/**
* Maybe schedule a non-wakeup alarm for the next time this package will have quota to run
* again. This should only be called if the package is already out of quota.
@@ -1052,6 +1199,7 @@
private final class Timer {
private final Package mPkg;
+ private final int mUid;
// List of jobs currently running for this app that started when the app wasn't in the
// foreground.
@@ -1059,16 +1207,18 @@
private long mStartTimeElapsed;
private int mBgJobCount;
- Timer(int userId, String packageName) {
+ Timer(int uid, int userId, String packageName) {
mPkg = new Package(userId, packageName);
+ mUid = uid;
}
void startTrackingJob(@NonNull JobStatus jobStatus) {
- if (jobStatus.uidActive) {
- // We intentionally don't pay attention to fg state changes after a job has started.
+ if (isTopStartedJob(jobStatus)) {
+ // We intentionally don't pay attention to fg state changes after a TOP job has
+ // started.
if (DEBUG) {
Slog.v(TAG,
- "Timer ignoring " + jobStatus.toShortString() + " because uidActive");
+ "Timer ignoring " + jobStatus.toShortString() + " because isTop");
}
return;
}
@@ -1076,7 +1226,7 @@
synchronized (mLock) {
// Always track jobs, even when charging.
mRunningBgJobs.add(jobStatus);
- if (!mChargeTracker.isCharging()) {
+ if (shouldTrackLocked()) {
mBgJobCount++;
if (mRunningBgJobs.size() == 1) {
// Started tracking the first job.
@@ -1142,6 +1292,10 @@
}
}
+ boolean isRunning(JobStatus jobStatus) {
+ return mRunningBgJobs.contains(jobStatus);
+ }
+
long getCurrentDuration(long nowElapsed) {
synchronized (mLock) {
return !isActive() ? 0 : nowElapsed - mStartTimeElapsed;
@@ -1154,17 +1308,21 @@
}
}
- void onChargingChanged(long nowElapsed, boolean isCharging) {
+ private boolean shouldTrackLocked() {
+ return !mChargeTracker.isCharging() && !mForegroundUids.get(mUid);
+ }
+
+ void onStateChanged(long nowElapsed, boolean isQuotaFree) {
synchronized (mLock) {
- if (isCharging) {
+ if (isQuotaFree) {
emitSessionLocked(nowElapsed);
- } else {
+ } else if (shouldTrackLocked()) {
// Start timing from unplug.
if (mRunningBgJobs.size() > 0) {
mStartTimeElapsed = nowElapsed;
// NOTE: this does have the unfortunate consequence that if the device is
- // repeatedly plugged in and unplugged, the job count for a package may be
- // artificially high.
+ // repeatedly plugged in and unplugged, or an app changes foreground state
+ // very frequently, the job count for a package may be artificially high.
mBgJobCount = mRunningBgJobs.size();
// Starting the timer means that all cached execution stats are now
// incorrect.
@@ -1371,6 +1529,38 @@
}
break;
}
+ case MSG_UID_PROCESS_STATE_CHANGED: {
+ final int uid = msg.arg1;
+ final int procState = msg.arg2;
+ final int userId = UserHandle.getUserId(uid);
+ final long nowElapsed = sElapsedRealtimeClock.millis();
+
+ synchronized (mLock) {
+ boolean isQuotaFree;
+ if (procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) {
+ mForegroundUids.put(uid, true);
+ isQuotaFree = true;
+ } else {
+ mForegroundUids.delete(uid);
+ isQuotaFree = false;
+ }
+ // Update Timers first.
+ final int userIndex = mPkgTimers.indexOfKey(userId);
+ if (userIndex != -1) {
+ final int numPkgs = mPkgTimers.numPackagesForUser(userId);
+ for (int p = 0; p < numPkgs; ++p) {
+ Timer t = mPkgTimers.valueAt(userIndex, p);
+ if (t != null) {
+ t.onStateChanged(nowElapsed, isQuotaFree);
+ }
+ }
+ }
+ if (maybeUpdateConstraintForUidLocked(uid)) {
+ mStateChangedListener.onControllerStateChanged();
+ }
+ }
+ break;
+ }
}
}
}
@@ -1420,6 +1610,12 @@
@VisibleForTesting
@NonNull
+ SparseBooleanArray getForegroundUids() {
+ return mForegroundUids;
+ }
+
+ @VisibleForTesting
+ @NonNull
Handler getHandler() {
return mHandler;
}
@@ -1450,6 +1646,10 @@
pw.println("In parole: " + mInParole);
pw.println();
+ pw.print("Foreground UIDs: ");
+ pw.println(mForegroundUids.toString());
+ pw.println();
+
mTrackedJobs.forEach((jobs) -> {
for (int j = 0; j < jobs.size(); j++) {
final JobStatus js = jobs.valueAt(j);
@@ -1460,6 +1660,9 @@
js.printUniqueId(pw);
pw.print(" from ");
UserHandle.formatUid(pw, js.getSourceUid());
+ if (mTopStartedJobs.contains(js)) {
+ pw.print(" (TOP)");
+ }
pw.println();
pw.increaseIndent();
@@ -1511,6 +1714,11 @@
proto.write(StateControllerProto.QuotaController.IS_CHARGING, mChargeTracker.isCharging());
proto.write(StateControllerProto.QuotaController.IS_IN_PAROLE, mInParole);
+ for (int i = 0; i < mForegroundUids.size(); ++i) {
+ proto.write(StateControllerProto.QuotaController.FOREGROUND_UIDS,
+ mForegroundUids.keyAt(i));
+ }
+
mTrackedJobs.forEach((jobs) -> {
for (int j = 0; j < jobs.size(); j++) {
final JobStatus js = jobs.valueAt(j);
@@ -1526,6 +1734,8 @@
proto.write(
StateControllerProto.QuotaController.TrackedJob.EFFECTIVE_STANDBY_BUCKET,
getEffectiveStandbyBucket(js));
+ proto.write(StateControllerProto.QuotaController.TrackedJob.IS_TOP_STARTED_JOB,
+ mTopStartedJobs.contains(js));
proto.write(StateControllerProto.QuotaController.TrackedJob.HAS_QUOTA,
js.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
proto.write(StateControllerProto.QuotaController.TrackedJob.REMAINING_QUOTA_MS,
diff --git a/services/core/java/com/android/server/location/ActivityRecognitionProxy.java b/services/core/java/com/android/server/location/ActivityRecognitionProxy.java
deleted file mode 100644
index 22fabb2..0000000
--- a/services/core/java/com/android/server/location/ActivityRecognitionProxy.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2014 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.server.location;
-
-import android.content.Context;
-import android.hardware.location.ActivityRecognitionHardware;
-import android.hardware.location.IActivityRecognitionHardwareClient;
-import android.hardware.location.IActivityRecognitionHardwareWatcher;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.util.Log;
-
-import com.android.internal.os.BackgroundThread;
-import com.android.server.ServiceWatcher;
-
-/**
- * Proxy class to bind GmsCore to the ActivityRecognitionHardware.
- *
- * @hide
- */
-public class ActivityRecognitionProxy {
-
- private static final String TAG = "ActivityRecognitionProxy";
-
- /**
- * Creates an instance of the proxy and binds it to the appropriate FusedProvider.
- *
- * @return An instance of the proxy if it could be bound, null otherwise.
- */
- public static ActivityRecognitionProxy createAndBind(
- Context context,
- boolean activityRecognitionHardwareIsSupported,
- ActivityRecognitionHardware activityRecognitionHardware,
- int overlaySwitchResId,
- int defaultServicePackageNameResId,
- int initialPackageNameResId) {
- ActivityRecognitionProxy activityRecognitionProxy = new ActivityRecognitionProxy(
- context,
- activityRecognitionHardwareIsSupported,
- activityRecognitionHardware,
- overlaySwitchResId,
- defaultServicePackageNameResId,
- initialPackageNameResId);
-
- if (activityRecognitionProxy.mServiceWatcher.start()) {
- return activityRecognitionProxy;
- } else {
- return null;
- }
- }
-
- private final ServiceWatcher mServiceWatcher;
- private final boolean mIsSupported;
- private final ActivityRecognitionHardware mInstance;
-
- private ActivityRecognitionProxy(
- Context context,
- boolean activityRecognitionHardwareIsSupported,
- ActivityRecognitionHardware activityRecognitionHardware,
- int overlaySwitchResId,
- int defaultServicePackageNameResId,
- int initialPackageNameResId) {
- mIsSupported = activityRecognitionHardwareIsSupported;
- mInstance = activityRecognitionHardware;
-
- mServiceWatcher = new ServiceWatcher(
- context,
- TAG,
- "com.android.location.service.ActivityRecognitionProvider",
- overlaySwitchResId,
- defaultServicePackageNameResId,
- initialPackageNameResId,
- BackgroundThread.getHandler()) {
- @Override
- protected void onBind() {
- runOnBinder(ActivityRecognitionProxy.this::initializeService);
- }
- };
- }
-
- private void initializeService(IBinder binder) {
- try {
- String descriptor = binder.getInterfaceDescriptor();
-
- if (IActivityRecognitionHardwareWatcher.class.getCanonicalName().equals(
- descriptor)) {
- IActivityRecognitionHardwareWatcher watcher =
- IActivityRecognitionHardwareWatcher.Stub.asInterface(binder);
- if (mInstance != null) {
- watcher.onInstanceChanged(mInstance);
- }
- } else if (IActivityRecognitionHardwareClient.class.getCanonicalName()
- .equals(descriptor)) {
- IActivityRecognitionHardwareClient client =
- IActivityRecognitionHardwareClient.Stub.asInterface(binder);
- client.onAvailabilityChanged(mIsSupported, mInstance);
- } else {
- Log.e(TAG, "Invalid descriptor found on connection: " + descriptor);
- }
- } catch (RemoteException e) {
- Log.w(TAG, e);
- }
- }
-}
diff --git a/services/core/java/com/android/server/location/GeofenceProxy.java b/services/core/java/com/android/server/location/GeofenceProxy.java
index ca4f7fe..38c7d49 100644
--- a/services/core/java/com/android/server/location/GeofenceProxy.java
+++ b/services/core/java/com/android/server/location/GeofenceProxy.java
@@ -113,8 +113,12 @@
IGeofenceHardware geofenceHardware = IGeofenceHardware.Stub.asInterface(service);
try {
- geofenceHardware.setGpsGeofenceHardware(mGpsGeofenceHardware);
- geofenceHardware.setFusedGeofenceHardware(mFusedGeofenceHardware);
+ if (mGpsGeofenceHardware != null) {
+ geofenceHardware.setGpsGeofenceHardware(mGpsGeofenceHardware);
+ }
+ if (mFusedGeofenceHardware != null) {
+ geofenceHardware.setFusedGeofenceHardware(mFusedGeofenceHardware);
+ }
mGeofenceHardware = geofenceHardware;
mServiceWatcher.runOnBinder(mUpdateGeofenceHardware);
diff --git a/services/core/java/com/android/server/location/GnssConfiguration.java b/services/core/java/com/android/server/location/GnssConfiguration.java
index 29465ad..7225926 100644
--- a/services/core/java/com/android/server/location/GnssConfiguration.java
+++ b/services/core/java/com/android/server/location/GnssConfiguration.java
@@ -23,13 +23,17 @@
import android.telephony.SubscriptionManager;
import android.text.TextUtils;
import android.util.Log;
+import android.util.StatsLog;
import libcore.io.IoUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
@@ -66,6 +70,7 @@
"USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL";
private static final String CONFIG_GPS_LOCK = "GPS_LOCK";
private static final String CONFIG_ES_EXTENSION_SEC = "ES_EXTENSION_SEC";
+ public static final String CONFIG_NFW_PROXY_APPS = "NFW_PROXY_APPS";
// Limit on NI emergency mode time extension after emergency sessions ends
private static final int MAX_EMERGENCY_MODE_EXTENSION_SECONDS = 300; // 5 minute maximum
@@ -171,6 +176,32 @@
}
/**
+ * Returns the list of proxy apps from the value of config parameter NFW_PROXY_APPS or
+ * {@Collections.EMPTY_LIST} if no value is provided.
+ */
+ List<String> getProxyApps() {
+ // Space separated list of Android proxy app package names.
+ String proxyAppsStr = mProperties.getProperty(CONFIG_NFW_PROXY_APPS);
+ if (TextUtils.isEmpty(proxyAppsStr)) {
+ return Collections.EMPTY_LIST;
+ }
+
+ String[] proxyAppsArray = proxyAppsStr.trim().split("\\s+");
+ if (proxyAppsArray.length == 0) {
+ return Collections.EMPTY_LIST;
+ }
+
+ // TODO(b/122856486): Validate proxy app names so that a system app or some popular app
+ // with location permission is not specified as a proxy app.
+ ArrayList proxyApps = new ArrayList(proxyAppsArray.length);
+ for (String proxyApp : proxyAppsArray) {
+ proxyApps.add(proxyApp);
+ }
+
+ return proxyApps;
+ }
+
+ /**
* Updates the GNSS HAL satellite blacklist.
*/
void setSatelliteBlacklist(int[] constellations, int[] svids) {
@@ -201,6 +232,8 @@
mEsExtensionSec = getRangeCheckedConfigEsExtensionSec();
+ logConfigurations();
+
final HalInterfaceVersion gnssConfigurationIfaceVersion =
native_get_gnss_configuration_version();
if (gnssConfigurationIfaceVersion != null) {
@@ -252,6 +285,23 @@
}
}
+ private void logConfigurations() {
+ StatsLog.write(StatsLog.GNSS_CONFIGURATION_REPORTED,
+ getSuplHost(),
+ getSuplPort(0),
+ getC2KHost(),
+ getC2KPort(0),
+ getIntConfig(CONFIG_SUPL_VER, 0),
+ getSuplMode(0),
+ getSuplEs(0) == 1,
+ getIntConfig(CONFIG_LPP_PROFILE, 0),
+ getIntConfig(CONFIG_A_GLONASS_POS_PROTOCOL_SELECT, 0),
+ getIntConfig(CONFIG_USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL, 0) == 1,
+ getIntConfig(CONFIG_GPS_LOCK, 0),
+ getEsExtensionSec(),
+ mProperties.getProperty(CONFIG_NFW_PROXY_APPS));
+ }
+
/**
* Loads GNSS properties from carrier config file.
*/
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 269767a..d346ddc 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -64,6 +64,7 @@
import android.telephony.gsm.GsmCellLocation;
import android.text.TextUtils;
import android.util.Log;
+import android.util.StatsLog;
import com.android.internal.app.IBatteryStats;
import com.android.internal.location.GpsNetInitiatedHandler;
@@ -371,6 +372,7 @@
private boolean mSuplEsEnabled = false;
private final Context mContext;
+ private final Looper mLooper;
private final LocationExtras mLocationExtras = new LocationExtras();
private final GnssStatusListenerHelper mGnssStatusListenerHelper;
private final GnssSatelliteBlacklistHelper mGnssSatelliteBlacklistHelper;
@@ -381,6 +383,7 @@
private final NtpTimeHelper mNtpTimeHelper;
private final GnssBatchingProvider mGnssBatchingProvider;
private final GnssGeofenceProvider mGnssGeofenceProvider;
+ private GnssVisibilityControl mGnssVisibilityControl;
// Handler for processing events
private Handler mHandler;
@@ -555,6 +558,9 @@
mC2KServerPort = mGnssConfiguration.getC2KPort(TCP_MIN_PORT);
mNIHandler.setEmergencyExtensionSeconds(mGnssConfiguration.getEsExtensionSec());
mSuplEsEnabled = mGnssConfiguration.getSuplEs(0) == 1;
+ if (mGnssVisibilityControl != null) {
+ mGnssVisibilityControl.updateProxyApps(mGnssConfiguration.getProxyApps());
+ }
}
public GnssLocationProvider(Context context, LocationProviderManager locationProviderManager,
@@ -562,6 +568,7 @@
super(locationProviderManager);
mContext = context;
+ mLooper = looper;
// Create a wake lock
mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
@@ -1704,6 +1711,24 @@
", response: " + userResponse);
}
native_send_ni_response(notificationId, userResponse);
+
+ StatsLog.write(StatsLog.GNSS_NI_EVENT_REPORTED,
+ StatsLog.GNSS_NI_EVENT_REPORTED__EVENT_TYPE__NI_RESPONSE,
+ notificationId,
+ /* niType= */ 0,
+ /* needNotify= */ false,
+ /* needVerify= */ false,
+ /* privacyOverride= */ false,
+ /* timeout= */ 0,
+ /* defaultResponse= */ 0,
+ /* requestorId= */ null,
+ /* text= */ null,
+ /* requestorIdEncoding= */ 0,
+ /* textEncoding= */ 0,
+ mSuplEsEnabled,
+ mEnabled,
+ userResponse);
+
return true;
}
};
@@ -1753,6 +1778,22 @@
notification.textEncoding = textEncoding;
mNIHandler.handleNiNotification(notification);
+ StatsLog.write(StatsLog.GNSS_NI_EVENT_REPORTED,
+ StatsLog.GNSS_NI_EVENT_REPORTED__EVENT_TYPE__NI_REQUEST,
+ notification.notificationId,
+ notification.niType,
+ notification.needNotify,
+ notification.needVerify,
+ notification.privacyOverride,
+ notification.timeout,
+ notification.defaultResponse,
+ notification.requestorId,
+ notification.text,
+ notification.requestorIdEncoding,
+ notification.textEncoding,
+ mSuplEsEnabled,
+ mEnabled,
+ /* userResponse= */ 0);
}
/**
@@ -1834,6 +1875,27 @@
}
}
+ // Implements method nfwNotifyCb() in IGnssVisibilityControlCallback.hal.
+ @NativeEntryPoint
+ private void reportNfwNotification(String proxyAppPackageName, byte protocolStack,
+ String otherProtocolStackName, byte requestor, String requestorId, byte responseType,
+ boolean inEmergencyMode, boolean isCachedLocation) {
+ if (mGnssVisibilityControl == null) {
+ Log.e(TAG, "reportNfwNotification: mGnssVisibilityControl is not initialized.");
+ return;
+ }
+
+ mGnssVisibilityControl.reportNfwNotification(proxyAppPackageName, protocolStack,
+ otherProtocolStackName, requestor, requestorId, responseType, inEmergencyMode,
+ isCachedLocation);
+ }
+
+ // Implements method isInEmergencySession() in IGnssVisibilityControlCallback.hal.
+ @NativeEntryPoint
+ boolean isInEmergencySession() {
+ return mNIHandler.getInEmergency();
+ }
+
private void sendMessage(int message, int arg, Object obj) {
// hold a wake lock until this message is delivered
// note that this assumes the message will not be removed from the queue before
@@ -1922,6 +1984,10 @@
native_cleanup();
}
+ if (native_is_gnss_visibility_control_supported()) {
+ mGnssVisibilityControl = new GnssVisibilityControl(mContext, mLooper);
+ }
+
// load default GPS configuration
// (this configuration might change in the future based on SIM changes)
reloadGpsProperties();
@@ -2079,6 +2145,8 @@
private static native boolean native_is_supported();
+ private static native boolean native_is_gnss_visibility_control_supported();
+
private static native void native_init_once();
private native boolean native_init();
diff --git a/services/core/java/com/android/server/location/GnssVisibilityControl.java b/services/core/java/com/android/server/location/GnssVisibilityControl.java
new file mode 100644
index 0000000..591889d
--- /dev/null
+++ b/services/core/java/com/android/server/location/GnssVisibilityControl.java
@@ -0,0 +1,384 @@
+/*
+ * Copyright (C) 2019 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.server.location;
+
+import android.annotation.SuppressLint;
+import android.app.AppOpsManager;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.PowerManager;
+import android.os.UserHandle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.StatsLog;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Handles GNSS non-framework location access user visibility and control.
+ *
+ * The state of the GnssVisibilityControl object must be accessed/modified through the Handler
+ * thread only.
+ */
+class GnssVisibilityControl {
+ private static final String TAG = "GnssVisibilityControl";
+ private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+ // Constants related to non-framework (NFW) location access permission proxy apps.
+ private static final String NFW_PROXY_APP_PKG_ACTIVITY_NAME_SUFFIX =
+ ".NonFrameworkLocationAccessActivity";
+ private static final String NFW_INTENT_ACTION_NFW_LOCATION_ACCESS_SUFFIX =
+ ".intent.action.NON_FRAMEWORK_LOCATION_ACCESS";
+ private static final String NFW_INTENT_TYPE = "text/plain";
+
+ private static final String LOCATION_PERMISSION_NAME =
+ "android.permission.ACCESS_FINE_LOCATION";
+
+ // Wakelocks
+ private static final String WAKELOCK_KEY = TAG;
+ private static final long WAKELOCK_TIMEOUT_MILLIS = 60 * 1000;
+ private final PowerManager.WakeLock mWakeLock;
+
+ private final AppOpsManager mAppOps;
+ private final PackageManager mPackageManager;
+
+ private final Handler mHandler;
+ private final Context mContext;
+
+ // Number of non-framework location access proxy apps is expected to be small (< 5).
+ private static final int HASH_MAP_INITIAL_CAPACITY_PROXY_APP_TO_LOCATION_PERMISSIONS = 7;
+ private HashMap<String, Boolean> mProxyAppToLocationPermissions = new HashMap<>(
+ HASH_MAP_INITIAL_CAPACITY_PROXY_APP_TO_LOCATION_PERMISSIONS);
+
+ private PackageManager.OnPermissionsChangedListener mOnPermissionsChangedListener =
+ uid -> postEvent(() -> handlePermissionsChanged(uid));
+
+ GnssVisibilityControl(Context context, Looper looper) {
+ mContext = context;
+ PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+ mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_KEY);
+ mHandler = new Handler(looper);
+ mAppOps = mContext.getSystemService(AppOpsManager.class);
+ mPackageManager = mContext.getPackageManager();
+ // TODO(b/122855984): Handle global location settings on/off.
+ // TODO(b/122856189): Handle roaming case.
+ }
+
+ void updateProxyApps(List<String> nfwLocationAccessProxyApps) {
+ // NOTE: This class doesn't explicitly register and listen for SIM_STATE_CHANGED event
+ // but rather piggy backs on the GnssLocationProvider SIM_STATE_CHANGED handling
+ // so that the order of processing is preserved. GnssLocationProvider should
+ // first load the new config parameters for the new SIM and then call this method.
+ postEvent(() -> handleSubscriptionOrSimChanged(nfwLocationAccessProxyApps));
+ }
+
+ void reportNfwNotification(String proxyAppPackageName, byte protocolStack,
+ String otherProtocolStackName, byte requestor, String requestorId, byte responseType,
+ boolean inEmergencyMode, boolean isCachedLocation) {
+ postEvent(() -> handleNfwNotification(
+ new NfwNotification(proxyAppPackageName, protocolStack, otherProtocolStackName,
+ requestor, requestorId, responseType, inEmergencyMode, isCachedLocation)));
+ }
+
+ private void handleSubscriptionOrSimChanged(List<String> nfwLocationAccessProxyApps) {
+ if (nfwLocationAccessProxyApps.isEmpty()) {
+ // Stop listening for app permission changes. Clear the app list in GNSS HAL.
+ if (!mProxyAppToLocationPermissions.isEmpty()) {
+ mPackageManager.removeOnPermissionsChangeListener(mOnPermissionsChangedListener);
+ mProxyAppToLocationPermissions.clear();
+ updateNfwLocationAccessProxyAppsInGnssHal();
+ }
+ return;
+ }
+
+ if (mProxyAppToLocationPermissions.isEmpty()) {
+ mPackageManager.addOnPermissionsChangeListener(mOnPermissionsChangedListener);
+ } else {
+ mProxyAppToLocationPermissions.clear();
+ }
+
+ for (String proxApp : nfwLocationAccessProxyApps) {
+ mProxyAppToLocationPermissions.put(proxApp, hasLocationPermission(proxApp));
+ }
+
+ updateNfwLocationAccessProxyAppsInGnssHal();
+ }
+
+ // Represents NfwNotification structure in IGnssVisibilityControlCallback.hal
+ private static class NfwNotification {
+ private static final String KEY_PROTOCOL_STACK = "ProtocolStack";
+ private static final String KEY_OTHER_PROTOCOL_STACK_NAME = "OtherProtocolStackName";
+ private static final String KEY_REQUESTOR = "Requestor";
+ private static final String KEY_REQUESTOR_ID = "RequestorId";
+ private static final String KEY_RESPONSE_TYPE = "ResponseType";
+ private static final String KEY_IN_EMERGENCY_MODE = "InEmergencyMode";
+ private static final String KEY_IS_CACHED_LOCATION = "IsCachedLocation";
+
+ // This must match with NfwResponseType enum in IGnssVisibilityControlCallback.hal.
+ private static final byte NFW_RESPONSE_TYPE_REJECTED = 0;
+ private static final byte NFW_RESPONSE_TYPE_ACCEPTED_NO_LOCATION_PROVIDED = 1;
+ private static final byte NFW_RESPONSE_TYPE_ACCEPTED_LOCATION_PROVIDED = 2;
+
+ private final String mProxyAppPackageName;
+ private final byte mProtocolStack;
+ private final String mOtherProtocolStackName;
+ private final byte mRequestor;
+ private final String mRequestorId;
+ private final byte mResponseType;
+ private final boolean mInEmergencyMode;
+ private final boolean mIsCachedLocation;
+
+ NfwNotification(String proxyAppPackageName, byte protocolStack,
+ String otherProtocolStackName, byte requestor, String requestorId,
+ byte responseType, boolean inEmergencyMode, boolean isCachedLocation) {
+ mProxyAppPackageName = proxyAppPackageName;
+ mProtocolStack = protocolStack;
+ mOtherProtocolStackName = otherProtocolStackName;
+ mRequestor = requestor;
+ mRequestorId = requestorId;
+ mResponseType = responseType;
+ mInEmergencyMode = inEmergencyMode;
+ mIsCachedLocation = isCachedLocation;
+ }
+
+ void copyFieldsToIntent(Intent intent) {
+ intent.putExtra(KEY_PROTOCOL_STACK, mProtocolStack);
+ if (!TextUtils.isEmpty(mOtherProtocolStackName)) {
+ intent.putExtra(KEY_OTHER_PROTOCOL_STACK_NAME, mOtherProtocolStackName);
+ }
+ intent.putExtra(KEY_REQUESTOR, mRequestor);
+ if (!TextUtils.isEmpty(mRequestorId)) {
+ intent.putExtra(KEY_REQUESTOR_ID, mRequestorId);
+ }
+ intent.putExtra(KEY_RESPONSE_TYPE, mResponseType);
+ intent.putExtra(KEY_IN_EMERGENCY_MODE, mInEmergencyMode);
+ if (mResponseType == NFW_RESPONSE_TYPE_ACCEPTED_LOCATION_PROVIDED) {
+ intent.putExtra(KEY_IS_CACHED_LOCATION, mIsCachedLocation);
+ }
+ }
+
+ @SuppressLint("DefaultLocale")
+ public String toString() {
+ return String.format(
+ "[Notification] proxyAppPackageName: %s, protocolStack: %d"
+ + ", otherProtocolStackName: %s, requestor: %d, requestorId: %s"
+ + ", responseType: %d, inEmergencyMode: %b, isCachedLocation: %b",
+ mProxyAppPackageName, mProtocolStack, mOtherProtocolStackName,
+ mRequestor, mRequestorId, mResponseType, mInEmergencyMode, mIsCachedLocation);
+ }
+
+ String getResponseTypeAsString() {
+ switch (mResponseType) {
+ case NFW_RESPONSE_TYPE_REJECTED:
+ return "REJECTED";
+ case NFW_RESPONSE_TYPE_ACCEPTED_NO_LOCATION_PROVIDED:
+ return "ACCEPTED_NO_LOCATION_PROVIDED";
+ case NFW_RESPONSE_TYPE_ACCEPTED_LOCATION_PROVIDED:
+ return "ACCEPTED_LOCATION_PROVIDED";
+ default:
+ return "<Unknown>";
+ }
+ }
+ }
+
+ private void handlePermissionsChanged(int uid) {
+ if (mProxyAppToLocationPermissions.isEmpty()) {
+ return;
+ }
+
+ for (Map.Entry<String, Boolean> entry : mProxyAppToLocationPermissions.entrySet()) {
+ // Cannot cache uid since the application could be uninstalled and reinstalled.
+ final String proxyApp = entry.getKey();
+ final Integer nfwProxyAppUid = getApplicationUid(proxyApp);
+ if (nfwProxyAppUid == null || nfwProxyAppUid != uid) {
+ continue;
+ }
+
+ final boolean isLocationPermissionEnabled = hasLocationPermission(proxyApp);
+ if (isLocationPermissionEnabled != entry.getValue()) {
+ Log.i(TAG, "Location permission setting is changed to "
+ + (isLocationPermissionEnabled ? "enabled" : "disabled")
+ + " for non-framework location access proxy app "
+ + proxyApp);
+ entry.setValue(isLocationPermissionEnabled);
+ updateNfwLocationAccessProxyAppsInGnssHal();
+ return;
+ }
+ }
+ }
+
+ private Integer getApplicationUid(String pkgName) {
+ try {
+ return mPackageManager.getApplicationInfo(pkgName, 0).uid;
+ } catch (PackageManager.NameNotFoundException e) {
+ if (DEBUG) {
+ Log.d(TAG, "Non-framework location access proxy app "
+ + pkgName + " is not found.");
+ }
+ return null;
+ }
+ }
+
+ private boolean hasLocationPermission(String pkgName) {
+ return mPackageManager.checkPermission(LOCATION_PERMISSION_NAME, pkgName)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
+ private void updateNfwLocationAccessProxyAppsInGnssHal() {
+ // Get a count of proxy apps with location permission enabled to array creation size.
+ int countLocationPermissionEnabledProxyApps = 0;
+ for (Boolean hasLocationPermissionEnabled : mProxyAppToLocationPermissions.values()) {
+ if (hasLocationPermissionEnabled) {
+ ++countLocationPermissionEnabledProxyApps;
+ }
+ }
+
+ int i = 0;
+ String[] locationPermissionEnabledProxyApps =
+ new String[countLocationPermissionEnabledProxyApps];
+ for (Map.Entry<String, Boolean> entry : mProxyAppToLocationPermissions.entrySet()) {
+ final String proxyApp = entry.getKey();
+ final boolean hasLocationPermissionEnabled = entry.getValue();
+ if (hasLocationPermissionEnabled) {
+ locationPermissionEnabledProxyApps[i++] = proxyApp;
+ }
+ }
+
+ String proxyAppsStr = Arrays.toString(locationPermissionEnabledProxyApps);
+ Log.i(TAG, "Updating non-framework location access proxy apps in the GNSS HAL to: "
+ + proxyAppsStr);
+ boolean result = native_enable_nfw_location_access(locationPermissionEnabledProxyApps);
+ if (!result) {
+ Log.e(TAG, "Failed to update non-framework location access proxy apps in the"
+ + " GNSS HAL to: " + proxyAppsStr);
+ }
+ }
+
+ private void handleNfwNotification(NfwNotification nfwNotification) {
+ if (DEBUG) Log.d(TAG, nfwNotification.toString());
+
+ final String proxyAppPackageName = nfwNotification.mProxyAppPackageName;
+ Boolean isLocationPermissionEnabled = mProxyAppToLocationPermissions.get(
+ proxyAppPackageName);
+ boolean isLocationRequestAccepted =
+ nfwNotification.mResponseType != NfwNotification.NFW_RESPONSE_TYPE_REJECTED;
+ boolean isPermissionMismatched;
+ if (isLocationPermissionEnabled == null) {
+ isPermissionMismatched = isLocationRequestAccepted;
+ } else {
+ isPermissionMismatched = (isLocationPermissionEnabled != isLocationRequestAccepted);
+ }
+ logEvent(nfwNotification, isPermissionMismatched);
+
+ if (TextUtils.isEmpty(proxyAppPackageName)) {
+ Log.e(TAG, "ProxyAppPackageName field is not set. Not sending intent to proxy app for "
+ + nfwNotification);
+ return;
+ }
+
+ if (isLocationPermissionEnabled == null) {
+ // App is not in the configured list.
+ Log.e(TAG, "Could not find proxy app with name: " + proxyAppPackageName + " in the "
+ + "value specified for config parameter: "
+ + GnssConfiguration.CONFIG_NFW_PROXY_APPS + ". Not sending intent to proxy app"
+ + " for " + nfwNotification);
+ return;
+ }
+
+ // Send intent to non-framework location proxy app with notification information.
+ final Intent intent = new Intent(
+ proxyAppPackageName + NFW_INTENT_ACTION_NFW_LOCATION_ACCESS_SUFFIX);
+ final String proxAppActivityName =
+ proxyAppPackageName + NFW_PROXY_APP_PKG_ACTIVITY_NAME_SUFFIX;
+ intent.setClassName(proxyAppPackageName, proxAppActivityName);
+ intent.setType(NFW_INTENT_TYPE);
+ nfwNotification.copyFieldsToIntent(intent);
+
+ // Check if the proxy app is still installed.
+ final Integer clsAppUid = getApplicationUid(proxyAppPackageName);
+ if (clsAppUid == null || intent.resolveActivity(mPackageManager) == null) {
+ Log.i(TAG, "Proxy application " + proxyAppPackageName + " and/or activity "
+ + proxAppActivityName + " is not found. Not sending"
+ + " intent to proxy app for " + nfwNotification);
+ return;
+ }
+
+ // Display location icon attributed to this proxy app.
+ mAppOps.noteOpNoThrow(AppOpsManager.OP_FINE_LOCATION, clsAppUid, proxyAppPackageName);
+
+ // Log proxy app permission mismatch between framework and GNSS HAL.
+ if (isPermissionMismatched) {
+ Log.w(TAG, "Permission mismatch. Framework proxy app " + proxyAppPackageName
+ + " location permission is set to " + isLocationPermissionEnabled
+ + " but GNSS non-framework location access response type is "
+ + nfwNotification.getResponseTypeAsString() + " for " + nfwNotification);
+ }
+
+ // Notify proxy app.
+ try {
+ if (DEBUG) {
+ Log.d(TAG, "Sending non-framework location access notification intent: " + intent);
+ }
+ mContext.startActivityAsUser(intent, UserHandle.getUserHandleForUid(clsAppUid));
+ } catch (ActivityNotFoundException e) {
+ Log.w(TAG, "Activity not found. Failed to send non-framework location access"
+ + " notification intent to proxy app activity: " + proxAppActivityName);
+ }
+ }
+
+ private void logEvent(NfwNotification notification, boolean isPermissionMismatched) {
+ StatsLog.write(StatsLog.GNSS_NFW_NOTIFICATION_REPORTED,
+ notification.mProxyAppPackageName,
+ notification.mProtocolStack,
+ notification.mOtherProtocolStackName,
+ notification.mRequestor,
+ notification.mRequestorId,
+ notification.mResponseType,
+ notification.mInEmergencyMode,
+ notification.mIsCachedLocation,
+ isPermissionMismatched);
+ }
+
+ private void postEvent(Runnable event) {
+ // Hold a wake lock until this message is delivered.
+ // Note that this assumes the message will not be removed from the queue before
+ // it is handled (otherwise the wake lock would be leaked).
+ mWakeLock.acquire(WAKELOCK_TIMEOUT_MILLIS);
+ if (!mHandler.post(runEventAndReleaseWakeLock(event))) {
+ mWakeLock.release();
+ }
+ }
+
+ private Runnable runEventAndReleaseWakeLock(Runnable event) {
+ return () -> {
+ try {
+ event.run();
+ } finally {
+ mWakeLock.release();
+ }
+ };
+ }
+
+ private native boolean native_enable_nfw_location_access(String[] proxyApps);
+}
diff --git a/services/core/java/com/android/server/location/MockProvider.java b/services/core/java/com/android/server/location/MockProvider.java
index 86bc9f3..fe91c63 100644
--- a/services/core/java/com/android/server/location/MockProvider.java
+++ b/services/core/java/com/android/server/location/MockProvider.java
@@ -52,7 +52,6 @@
mExtras = null;
setProperties(properties);
- setEnabled(true);
}
/** Sets the enabled state of this mock provider. */
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index ea8c792..8734ceb6 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -21,10 +21,10 @@
import static android.content.Context.KEYGUARD_SERVICE;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT;
-import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT;
import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_ENABLED_KEY;
import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_HANDLE_KEY;
+import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT;
+import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT;
import static com.android.internal.widget.LockPatternUtils.USER_FRP;
import static com.android.internal.widget.LockPatternUtils.frpCredentialEnabled;
import static com.android.internal.widget.LockPatternUtils.userOwnsFrpCredential;
@@ -81,9 +81,9 @@
import android.security.keystore.KeyProtection;
import android.security.keystore.UserNotAuthenticatedException;
import android.security.keystore.recovery.KeyChainProtectionParams;
+import android.security.keystore.recovery.KeyChainSnapshot;
import android.security.keystore.recovery.RecoveryCertPath;
import android.security.keystore.recovery.WrappedApplicationKey;
-import android.security.keystore.recovery.KeyChainSnapshot;
import android.service.gatekeeper.GateKeeperResponse;
import android.service.gatekeeper.IGateKeeperService;
import android.text.TextUtils;
@@ -109,9 +109,9 @@
import com.android.server.SystemService;
import com.android.server.locksettings.LockSettingsStorage.CredentialHash;
import com.android.server.locksettings.LockSettingsStorage.PersistentData;
-import com.android.server.locksettings.recoverablekeystore.RecoverableKeyStoreManager;
import com.android.server.locksettings.SyntheticPasswordManager.AuthenticationResult;
import com.android.server.locksettings.SyntheticPasswordManager.AuthenticationToken;
+import com.android.server.locksettings.recoverablekeystore.RecoverableKeyStoreManager;
import com.android.server.wm.WindowManagerInternal;
import libcore.util.HexEncoding;
@@ -130,8 +130,8 @@
import java.security.SecureRandom;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
-import java.util.Arrays;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
@@ -2103,11 +2103,24 @@
}
@Override
- public @Nullable String importKey(@NonNull String alias, byte[] keyBytes) throws RemoteException {
+ public @Nullable String generateKeyWithMetadata(
+ @NonNull String alias, @Nullable byte[] metadata) throws RemoteException {
+ return mRecoverableKeyStoreManager.generateKeyWithMetadata(alias, metadata);
+ }
+
+ @Override
+ public @Nullable String importKey(@NonNull String alias, @NonNull byte[] keyBytes)
+ throws RemoteException {
return mRecoverableKeyStoreManager.importKey(alias, keyBytes);
}
@Override
+ public @Nullable String importKeyWithMetadata(@NonNull String alias, @NonNull byte[] keyBytes,
+ @Nullable byte[] metadata) throws RemoteException {
+ return mRecoverableKeyStoreManager.importKeyWithMetadata(alias, keyBytes, metadata);
+ }
+
+ @Override
public @Nullable String getKey(@NonNull String alias) throws RemoteException {
return mRecoverableKeyStoreManager.getKey(alias);
}
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncTask.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncTask.java
index f1951b1..1f9b027 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncTask.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncTask.java
@@ -26,6 +26,7 @@
import android.security.keystore.recovery.KeyDerivationParams;
import android.security.keystore.recovery.WrappedApplicationKey;
import android.util.Log;
+import android.util.Pair;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
@@ -258,9 +259,9 @@
localLskfHash = hashCredentialsBySaltedSha256(salt, mCredential);
}
- Map<String, SecretKey> rawKeys;
+ Map<String, Pair<SecretKey, byte[]>> rawKeysWithMetadata;
try {
- rawKeys = getKeysToSync(recoveryAgentUid);
+ rawKeysWithMetadata = getKeysToSync(recoveryAgentUid);
} catch (GeneralSecurityException e) {
Log.e(TAG, "Failed to load recoverable keys for sync", e);
return;
@@ -278,7 +279,9 @@
}
// Only include insecure key material for test
if (mTestOnlyInsecureCertificateHelper.isTestOnlyCertificateAlias(rootCertAlias)) {
- rawKeys = mTestOnlyInsecureCertificateHelper.keepOnlyWhitelistedInsecureKeys(rawKeys);
+ rawKeysWithMetadata =
+ mTestOnlyInsecureCertificateHelper.keepOnlyWhitelistedInsecureKeys(
+ rawKeysWithMetadata);
}
SecretKey recoveryKey;
@@ -292,7 +295,7 @@
Map<String, byte[]> encryptedApplicationKeys;
try {
encryptedApplicationKeys = KeySyncUtils.encryptKeysWithRecoveryKey(
- recoveryKey, rawKeys);
+ recoveryKey, rawKeysWithMetadata);
} catch (InvalidKeyException | NoSuchAlgorithmException e) {
Log.wtf(TAG,
"Should be impossible: could not encrypt application keys with random key",
@@ -356,7 +359,8 @@
.setCounterId(counterId)
.setServerParams(vaultHandle)
.setKeyChainProtectionParams(metadataList)
- .setWrappedApplicationKeys(createApplicationKeyEntries(encryptedApplicationKeys))
+ .setWrappedApplicationKeys(
+ createApplicationKeyEntries(encryptedApplicationKeys, rawKeysWithMetadata))
.setEncryptedRecoveryKeyBlob(encryptedRecoveryKey);
try {
keyChainSnapshotBuilder.setTrustedHardwareCertPath(certPath);
@@ -405,7 +409,7 @@
/**
* Returns all of the recoverable keys for the user.
*/
- private Map<String, SecretKey> getKeysToSync(int recoveryAgentUid)
+ private Map<String, Pair<SecretKey, byte[]>> getKeysToSync(int recoveryAgentUid)
throws InsecureUserException, KeyStoreException, UnrecoverableKeyException,
NoSuchAlgorithmException, NoSuchPaddingException, BadPlatformKeyException,
InvalidKeyException, InvalidAlgorithmParameterException, IOException {
@@ -521,12 +525,14 @@
}
private static List<WrappedApplicationKey> createApplicationKeyEntries(
- Map<String, byte[]> encryptedApplicationKeys) {
+ Map<String, byte[]> encryptedApplicationKeys,
+ Map<String, Pair<SecretKey, byte[]>> originalKeysWithMetadata) {
ArrayList<WrappedApplicationKey> keyEntries = new ArrayList<>();
for (String alias : encryptedApplicationKeys.keySet()) {
keyEntries.add(new WrappedApplicationKey.Builder()
.setAlias(alias)
.setEncryptedKeyMaterial(encryptedApplicationKeys.get(alias))
+ .setMetadata(originalKeysWithMetadata.get(alias).second)
.build());
}
return keyEntries;
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncUtils.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncUtils.java
index 8e6f9cb..24d575e 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncUtils.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncUtils.java
@@ -16,6 +16,9 @@
package com.android.server.locksettings.recoverablekeystore;
+import android.annotation.Nullable;
+import android.util.Pair;
+
import com.android.internal.annotations.VisibleForTesting;
import java.nio.ByteBuffer;
@@ -152,15 +155,28 @@
* @hide
*/
public static Map<String, byte[]> encryptKeysWithRecoveryKey(
- SecretKey recoveryKey, Map<String, SecretKey> keys)
+ SecretKey recoveryKey, Map<String, Pair<SecretKey, byte[]>> keys)
throws NoSuchAlgorithmException, InvalidKeyException {
HashMap<String, byte[]> encryptedKeys = new HashMap<>();
for (String alias : keys.keySet()) {
- SecretKey key = keys.get(alias);
+ SecretKey key = keys.get(alias).first;
+ byte[] metadata = keys.get(alias).second;
+ byte[] header;
+ if (metadata == null) {
+ header = ENCRYPTED_APPLICATION_KEY_HEADER;
+ } else {
+ // The provided metadata, if non-empty, will be bound to the authenticated
+ // encryption process of the key material. As a result, the ciphertext cannot be
+ // decrypted if a wrong metadata is provided during the recovery/decryption process.
+ // Note that Android P devices do not have the API to provide the optional metadata,
+ // so all the keys with non-empty metadata stored on Android Q+ devices cannot be
+ // recovered on Android P devices.
+ header = concat(ENCRYPTED_APPLICATION_KEY_HEADER, metadata);
+ }
byte[] encryptedKey = SecureBox.encrypt(
/*theirPublicKey=*/ null,
/*sharedSecret=*/ recoveryKey.getEncoded(),
- /*header=*/ ENCRYPTED_APPLICATION_KEY_HEADER,
+ /*header=*/ header,
/*payload=*/ key.getEncoded());
encryptedKeys.put(alias, encryptedKey);
}
@@ -257,12 +273,19 @@
* @throws AEADBadTagException if the message has been tampered with or was encrypted with a
* different key.
*/
- public static byte[] decryptApplicationKey(byte[] recoveryKey, byte[] encryptedApplicationKey)
+ public static byte[] decryptApplicationKey(byte[] recoveryKey, byte[] encryptedApplicationKey,
+ @Nullable byte[] applicationKeyMetadata)
throws NoSuchAlgorithmException, InvalidKeyException, AEADBadTagException {
+ byte[] header;
+ if (applicationKeyMetadata == null) {
+ header = ENCRYPTED_APPLICATION_KEY_HEADER;
+ } else {
+ header = concat(ENCRYPTED_APPLICATION_KEY_HEADER, applicationKeyMetadata);
+ }
return SecureBox.decrypt(
/*ourPrivateKey=*/ null,
/*sharedSecret=*/ recoveryKey,
- /*header=*/ ENCRYPTED_APPLICATION_KEY_HEADER,
+ /*header=*/ header,
/*encryptedPayload=*/ encryptedApplicationKey);
}
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator.java
index c249468..1692e5c 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator.java
@@ -17,6 +17,8 @@
package com.android.server.locksettings.recoverablekeystore;
import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.util.Log;
import com.android.server.locksettings.recoverablekeystore.storage.RecoverableKeyStoreDb;
@@ -24,7 +26,6 @@
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;
-import android.util.Log;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
@@ -84,6 +85,8 @@
* @param userId The user ID of the profile to which the calling app belongs.
* @param uid The uid of the application that will own the key.
* @param alias The alias by which the key will be known in the recoverable key store.
+ * @param metadata The optional metadata that will be authenticated (but unencrypted) together
+ * with the key material when the key is uploaded to cloud.
* @throws RecoverableKeyStorageException if there is some error persisting the key either to
* the database.
* @throws KeyStoreException if there is a KeyStore error wrapping the generated key.
@@ -92,12 +95,13 @@
* @hide
*/
public byte[] generateAndStoreKey(
- PlatformEncryptionKey platformKey, int userId, int uid, String alias)
+ PlatformEncryptionKey platformKey, int userId, int uid, String alias,
+ @Nullable byte[] metadata)
throws RecoverableKeyStorageException, KeyStoreException, InvalidKeyException {
mKeyGenerator.init(KEY_SIZE_BITS);
SecretKey key = mKeyGenerator.generateKey();
- WrappedKey wrappedKey = WrappedKey.fromSecretKey(platformKey, key);
+ WrappedKey wrappedKey = WrappedKey.fromSecretKey(platformKey, key, metadata);
long result = mDatabase.insertKey(userId, uid, alias, wrappedKey);
if (result == RESULT_CANNOT_INSERT_ROW) {
@@ -126,6 +130,8 @@
* @param uid The uid of the application that will own the key.
* @param alias The alias by which the key will be known in the recoverable key store.
* @param keyBytes The raw bytes of the AES key to be imported.
+ * @param metadata The optional metadata that will be authenticated (but unencrypted) together
+ * with the key material when the key is uploaded to cloud.
* @throws RecoverableKeyStorageException if there is some error persisting the key either to
* the database.
* @throws KeyStoreException if there is a KeyStore error wrapping the generated key.
@@ -135,11 +141,11 @@
*/
public void importKey(
@NonNull PlatformEncryptionKey platformKey, int userId, int uid, @NonNull String alias,
- @NonNull byte[] keyBytes)
+ @NonNull byte[] keyBytes, @Nullable byte[] metadata)
throws RecoverableKeyStorageException, KeyStoreException, InvalidKeyException {
SecretKey key = new SecretKeySpec(keyBytes, SECRET_KEY_ALGORITHM);
- WrappedKey wrappedKey = WrappedKey.fromSecretKey(platformKey, key);
+ WrappedKey wrappedKey = WrappedKey.fromSecretKey(platformKey, key, metadata);
long result = mDatabase.insertKey(userId, uid, alias, wrappedKey);
if (result == RESULT_CANNOT_INSERT_ROW) {
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager.java
index fc5184d..ed864c0 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager.java
@@ -20,8 +20,8 @@
import static android.security.keystore.recovery.RecoveryController.ERROR_DECRYPTION_FAILED;
import static android.security.keystore.recovery.RecoveryController.ERROR_DOWNGRADE_CERTIFICATE;
import static android.security.keystore.recovery.RecoveryController.ERROR_INSECURE_USER;
-import static android.security.keystore.recovery.RecoveryController.ERROR_INVALID_KEY_FORMAT;
import static android.security.keystore.recovery.RecoveryController.ERROR_INVALID_CERTIFICATE;
+import static android.security.keystore.recovery.RecoveryController.ERROR_INVALID_KEY_FORMAT;
import static android.security.keystore.recovery.RecoveryController.ERROR_NO_SNAPSHOT_PENDING;
import static android.security.keystore.recovery.RecoveryController.ERROR_SERVICE_INTERNAL_ERROR;
import static android.security.keystore.recovery.RecoveryController.ERROR_SESSION_EXPIRED;
@@ -35,12 +35,12 @@
import android.os.RemoteException;
import android.os.ServiceSpecificException;
import android.os.UserHandle;
+import android.security.KeyStore;
import android.security.keystore.recovery.KeyChainProtectionParams;
import android.security.keystore.recovery.KeyChainSnapshot;
import android.security.keystore.recovery.RecoveryCertPath;
import android.security.keystore.recovery.RecoveryController;
import android.security.keystore.recovery.WrappedApplicationKey;
-import android.security.KeyStore;
import android.util.ArrayMap;
import android.util.Log;
@@ -59,7 +59,6 @@
import java.io.IOException;
import java.security.InvalidKeyException;
-import java.security.KeyFactory;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
@@ -70,7 +69,6 @@
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.security.spec.InvalidKeySpecException;
-import java.security.spec.X509EncodedKeySpec;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -606,7 +604,8 @@
try {
byte[] recoveryKey = decryptRecoveryKey(sessionEntry, encryptedRecoveryKey);
- Map<String, byte[]> keysByAlias = recoverApplicationKeys(recoveryKey, applicationKeys);
+ Map<String, byte[]> keysByAlias = recoverApplicationKeys(recoveryKey,
+ applicationKeys);
return importKeyMaterials(userId, uid, keysByAlias);
} catch (KeyStoreException e) {
throw new ServiceSpecificException(ERROR_SERVICE_INTERNAL_ERROR, e.getMessage());
@@ -625,7 +624,8 @@
* @throws KeyStoreException if an error occurs importing the key or getting the grant.
*/
private @NonNull Map<String, String> importKeyMaterials(
- int userId, int uid, Map<String, byte[]> keysByAlias) throws KeyStoreException {
+ int userId, int uid, Map<String, byte[]> keysByAlias)
+ throws KeyStoreException {
ArrayMap<String, String> grantAliasesByAlias = new ArrayMap<>(keysByAlias.size());
for (String alias : keysByAlias.keySet()) {
mApplicationKeyStorage.setSymmetricKeyEntry(userId, uid, alias, keysByAlias.get(alias));
@@ -674,9 +674,29 @@
* Generates a key named {@code alias} in caller's namespace.
* The key is stored in system service keystore namespace.
*
+ * @param alias the alias provided by caller as a reference to the key.
* @return grant alias, which caller can use to access the key.
+ * @throws RemoteException if certain internal errors occur.
+ *
+ * @deprecated Use {@link #generateKeyWithMetadata(String, byte[])} instead.
*/
+ @Deprecated
public String generateKey(@NonNull String alias) throws RemoteException {
+ return generateKeyWithMetadata(alias, /*metadata=*/ null);
+ }
+
+ /**
+ * Generates a key named {@code alias} with the {@code metadata} in caller's namespace.
+ * The key is stored in system service keystore namespace.
+ *
+ * @param alias the alias provided by caller as a reference to the key.
+ * @param metadata the optional metadata blob that will authenticated (but unencrypted) together
+ * with the key material when the key is uploaded to cloud.
+ * @return grant alias, which caller can use to access the key.
+ * @throws RemoteException if certain internal errors occur.
+ */
+ public String generateKeyWithMetadata(@NonNull String alias, @Nullable byte[] metadata)
+ throws RemoteException {
checkRecoverKeyStorePermission();
Preconditions.checkNotNull(alias, "alias is null");
int uid = Binder.getCallingUid();
@@ -695,8 +715,8 @@
}
try {
- byte[] secretKey =
- mRecoverableKeyGenerator.generateAndStoreKey(encryptionKey, userId, uid, alias);
+ byte[] secretKey = mRecoverableKeyGenerator.generateAndStoreKey(encryptionKey, userId,
+ uid, alias, metadata);
mApplicationKeyStorage.setSymmetricKeyEntry(userId, uid, alias, secretKey);
return getAlias(userId, uid, alias);
} catch (KeyStoreException | InvalidKeyException | RecoverableKeyStorageException e) {
@@ -713,10 +733,30 @@
* @return grant alias, which caller can use to access the key.
* @throws RemoteException if the given key is invalid or some internal errors occur.
*
+ * @deprecated Use {{@link #importKeyWithMetadata(String, byte[], byte[])}} instead.
+ *
* @hide
*/
+ @Deprecated
public @Nullable String importKey(@NonNull String alias, @NonNull byte[] keyBytes)
throws RemoteException {
+ return importKeyWithMetadata(alias, keyBytes, /*metadata=*/ null);
+ }
+
+ /**
+ * Imports a 256-bit AES-GCM key named {@code alias} with the given {@code metadata}. The key is
+ * stored in system service keystore namespace.
+ *
+ * @param alias the alias provided by caller as a reference to the key.
+ * @param keyBytes the raw bytes of the 256-bit AES key.
+ * @param metadata the metadata to be authenticated (but unencrypted) together with the key.
+ * @return grant alias, which caller can use to access the key.
+ * @throws RemoteException if the given key is invalid or some internal errors occur.
+ *
+ * @hide
+ */
+ public @Nullable String importKeyWithMetadata(@NonNull String alias, @NonNull byte[] keyBytes,
+ @Nullable byte[] metadata) throws RemoteException {
checkRecoverKeyStorePermission();
Preconditions.checkNotNull(alias, "alias is null");
Preconditions.checkNotNull(keyBytes, "keyBytes is null");
@@ -745,7 +785,8 @@
try {
// Wrap the key by the platform key and store the wrapped key locally
- mRecoverableKeyGenerator.importKey(encryptionKey, userId, uid, alias, keyBytes);
+ mRecoverableKeyGenerator.importKey(encryptionKey, userId, uid, alias, keyBytes,
+ metadata);
// Import the key to Android KeyStore and get grant
mApplicationKeyStorage.setSymmetricKeyEntry(userId, uid, alias, keyBytes);
@@ -812,17 +853,17 @@
* @return Map from alias to raw key material.
* @throws RemoteException if an error occurred decrypting the keys.
*/
- private @NonNull Map<String, byte[]> recoverApplicationKeys(
- @NonNull byte[] recoveryKey,
+ private @NonNull Map<String, byte[]> recoverApplicationKeys(@NonNull byte[] recoveryKey,
@NonNull List<WrappedApplicationKey> applicationKeys) throws RemoteException {
HashMap<String, byte[]> keyMaterialByAlias = new HashMap<>();
for (WrappedApplicationKey applicationKey : applicationKeys) {
String alias = applicationKey.getAlias();
byte[] encryptedKeyMaterial = applicationKey.getEncryptedKeyMaterial();
+ byte[] keyMetadata = applicationKey.getMetadata();
try {
- byte[] keyMaterial =
- KeySyncUtils.decryptApplicationKey(recoveryKey, encryptedKeyMaterial);
+ byte[] keyMaterial = KeySyncUtils.decryptApplicationKey(recoveryKey,
+ encryptedKeyMaterial, keyMetadata);
keyMaterialByAlias.put(alias, keyMaterial);
} catch (NoSuchAlgorithmException e) {
Log.wtf(TAG, "Missing SecureBox algorithm. AOSP required to support this.", e);
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper.java
index 5ba3cce..057429c 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper.java
@@ -18,17 +18,20 @@
import static android.security.keystore.recovery.RecoveryController.ERROR_INVALID_CERTIFICATE;
-import com.android.internal.widget.LockPatternUtils;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.RemoteException;
import android.os.ServiceSpecificException;
import android.security.keystore.recovery.TrustedRootCertificates;
import android.util.Log;
+import android.util.Pair;
-import java.util.HashMap;
+import com.android.internal.widget.LockPatternUtils;
+
import java.security.cert.X509Certificate;
+import java.util.HashMap;
import java.util.Map;
+
import javax.crypto.SecretKey;
/**
@@ -90,16 +93,18 @@
&& credential.startsWith(TrustedRootCertificates.INSECURE_PASSWORD_PREFIX);
}
- public Map<String, SecretKey> keepOnlyWhitelistedInsecureKeys(Map<String, SecretKey> rawKeys) {
+ public Map<String, Pair<SecretKey, byte[]>> keepOnlyWhitelistedInsecureKeys(
+ Map<String, Pair<SecretKey, byte[]>> rawKeys) {
if (rawKeys == null) {
return null;
}
- Map<String, SecretKey> filteredKeys = new HashMap<>();
- for (Map.Entry<String, SecretKey> entry : rawKeys.entrySet()) {
+ Map<String, Pair<SecretKey, byte[]>> filteredKeys = new HashMap<>();
+ for (Map.Entry<String, Pair<SecretKey, byte[]>> entry : rawKeys.entrySet()) {
String alias = entry.getKey();
if (alias != null
&& alias.startsWith(TrustedRootCertificates.INSECURE_KEY_ALIAS_PREFIX)) {
- filteredKeys.put(entry.getKey(), entry.getValue());
+ filteredKeys.put(entry.getKey(),
+ Pair.create(entry.getValue().first, entry.getValue().second));
Log.d(TAG, "adding key with insecure alias " + alias + " to the recovery snapshot");
}
}
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/WrappedKey.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/WrappedKey.java
index 0077242..09d7541 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/WrappedKey.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/WrappedKey.java
@@ -16,8 +16,10 @@
package com.android.server.locksettings.recoverablekeystore;
+import android.annotation.Nullable;
import android.security.keystore.recovery.RecoveryController;
import android.util.Log;
+import android.util.Pair;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
@@ -49,6 +51,7 @@
private final int mRecoveryStatus;
private final byte[] mNonce;
private final byte[] mKeyMaterial;
+ private final byte[] mKeyMetadata;
/**
* Returns a wrapped form of {@code key}, using {@code wrappingKey} to encrypt the key material.
@@ -58,7 +61,8 @@
* {@link android.security.keystore.AndroidKeyStoreKey} for an example of a key that does
* not expose its key material.
*/
- public static WrappedKey fromSecretKey(PlatformEncryptionKey wrappingKey, SecretKey key)
+ public static WrappedKey fromSecretKey(PlatformEncryptionKey wrappingKey, SecretKey key,
+ @Nullable byte[] metadata)
throws InvalidKeyException, KeyStoreException {
if (key.getEncoded() == null) {
throw new InvalidKeyException(
@@ -96,6 +100,7 @@
return new WrappedKey(
/*nonce=*/ cipher.getIV(),
/*keyMaterial=*/ encryptedKeyMaterial,
+ /*keyMetadata=*/ metadata,
/*platformKeyGenerationId=*/ wrappingKey.getGenerationId(),
RecoveryController.RECOVERY_STATUS_SYNC_IN_PROGRESS);
}
@@ -110,11 +115,10 @@
* @see RecoveryController#RECOVERY_STATUS_SYNC_IN_PROGRESS
* @hide
*/
- public WrappedKey(byte[] nonce, byte[] keyMaterial, int platformKeyGenerationId) {
- mNonce = nonce;
- mKeyMaterial = keyMaterial;
- mPlatformKeyGenerationId = platformKeyGenerationId;
- mRecoveryStatus = RecoveryController.RECOVERY_STATUS_SYNC_IN_PROGRESS;
+ public WrappedKey(byte[] nonce, byte[] keyMaterial, @Nullable byte[] keyMetadata,
+ int platformKeyGenerationId) {
+ this(nonce, keyMaterial, keyMetadata, platformKeyGenerationId,
+ RecoveryController.RECOVERY_STATUS_SYNC_IN_PROGRESS);
}
/**
@@ -122,15 +126,18 @@
*
* @param nonce The nonce with which the key material was encrypted.
* @param keyMaterial The encrypted bytes of the key material.
+ * @param keyMetadata The metadata that will be authenticated (but unencrypted) together with
+ * the key material when the key is uploaded to cloud.
* @param platformKeyGenerationId The generation ID of the key used to wrap this key.
* @param recoveryStatus recovery status of the key.
*
* @hide
*/
- public WrappedKey(byte[] nonce, byte[] keyMaterial, int platformKeyGenerationId,
- int recoveryStatus) {
+ public WrappedKey(byte[] nonce, byte[] keyMaterial, @Nullable byte[] keyMetadata,
+ int platformKeyGenerationId, int recoveryStatus) {
mNonce = nonce;
mKeyMaterial = keyMaterial;
+ mKeyMetadata = keyMetadata;
mPlatformKeyGenerationId = platformKeyGenerationId;
mRecoveryStatus = recoveryStatus;
}
@@ -154,6 +161,15 @@
}
/**
+ * Returns the key metadata.
+ *
+ * @hide
+ */
+ public @Nullable byte[] getKeyMetadata() {
+ return mKeyMetadata;
+ }
+
+ /**
* Returns the generation ID of the platform key, with which this key was wrapped.
*
* @hide
@@ -181,12 +197,12 @@
*
* @hide
*/
- public static Map<String, SecretKey> unwrapKeys(
+ public static Map<String, Pair<SecretKey, byte[]>> unwrapKeys(
PlatformDecryptionKey platformKey,
Map<String, WrappedKey> wrappedKeys)
throws NoSuchAlgorithmException, NoSuchPaddingException, BadPlatformKeyException,
InvalidKeyException, InvalidAlgorithmParameterException {
- HashMap<String, SecretKey> unwrappedKeys = new HashMap<>();
+ HashMap<String, Pair<SecretKey, byte[]>> unwrappedKeys = new HashMap<>();
Cipher cipher = Cipher.getInstance(KEY_WRAP_CIPHER_ALGORITHM);
int platformKeyGenerationId = platformKey.getGenerationId();
@@ -219,7 +235,7 @@
e);
continue;
}
- unwrappedKeys.put(alias, key);
+ unwrappedKeys.put(alias, Pair.create(key, wrappedKey.getKeyMetadata()));
}
return unwrappedKeys;
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer.java
index b486834..8a19d62 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer.java
@@ -23,19 +23,18 @@
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_ALIAS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_APPLICATION_KEY;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_APPLICATION_KEYS;
-
-import static com.android.server.locksettings.recoverablekeystore.serialization
- .KeyChainSnapshotSchema.TAG_BACKEND_PUBLIC_KEY;
+import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_BACKEND_PUBLIC_KEY;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_COUNTER_ID;
-import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_RECOVERY_KEY_MATERIAL;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_CHAIN_PROTECTION_PARAMS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_CHAIN_PROTECTION_PARAMS_LIST;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_CHAIN_SNAPSHOT;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_DERIVATION_PARAMS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_MATERIAL;
+import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_METADATA;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_LOCK_SCREEN_UI_TYPE;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_MAX_ATTEMPTS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_MEMORY_DIFFICULTY;
+import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_RECOVERY_KEY_MATERIAL;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_SALT;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_SERVER_PARAMS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_SNAPSHOT_VERSION;
@@ -49,6 +48,9 @@
import android.util.Base64;
import android.util.Xml;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -59,9 +61,6 @@
import java.util.List;
import java.util.Locale;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
/**
* Deserializes a {@link android.security.keystore.recovery.KeyChainSnapshot} instance from XML.
*/
@@ -191,6 +190,10 @@
builder.setEncryptedKeyMaterial(readBlobTag(parser, TAG_KEY_MATERIAL));
break;
+ case TAG_KEY_METADATA:
+ builder.setMetadata(readBlobTag(parser, TAG_KEY_METADATA));
+ break;
+
default:
throw new KeyChainSnapshotParserException(String.format(
Locale.US, "Unexpected tag %s in wrappedApplicationKey", name));
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSchema.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSchema.java
index 0f2c2fc..8f85a27 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSchema.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSchema.java
@@ -52,6 +52,7 @@
static final String TAG_APPLICATION_KEY = "applicationKey";
static final String TAG_ALIAS = "alias";
static final String TAG_KEY_MATERIAL = "keyMaterial";
+ static final String TAG_KEY_METADATA = "keyMetadata";
// Statics only
private KeyChainSnapshotSchema() {}
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer.java
index 235df69..527e879 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer.java
@@ -24,25 +24,24 @@
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_ALIAS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_APPLICATION_KEY;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_APPLICATION_KEYS;
-
-import static com.android.server.locksettings.recoverablekeystore.serialization
- .KeyChainSnapshotSchema.TAG_BACKEND_PUBLIC_KEY;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_COUNTER_ID;
-import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_RECOVERY_KEY_MATERIAL;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_CHAIN_PROTECTION_PARAMS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_CHAIN_PROTECTION_PARAMS_LIST;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_CHAIN_SNAPSHOT;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_DERIVATION_PARAMS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_MATERIAL;
+import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_KEY_METADATA;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_LOCK_SCREEN_UI_TYPE;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_MAX_ATTEMPTS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_MEMORY_DIFFICULTY;
+import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_RECOVERY_KEY_MATERIAL;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_SALT;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_SERVER_PARAMS;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_SNAPSHOT_VERSION;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_TRUSTED_HARDWARE_CERT_PATH;
import static com.android.server.locksettings.recoverablekeystore.serialization.KeyChainSnapshotSchema.TAG_USER_SECRET_TYPE;
+import android.annotation.Nullable;
import android.security.keystore.recovery.KeyChainProtectionParams;
import android.security.keystore.recovery.KeyChainSnapshot;
import android.security.keystore.recovery.KeyDerivationParams;
@@ -103,6 +102,7 @@
XmlSerializer xmlSerializer, WrappedApplicationKey applicationKey) throws IOException {
writePropertyTag(xmlSerializer, TAG_ALIAS, applicationKey.getAlias());
writePropertyTag(xmlSerializer, TAG_KEY_MATERIAL, applicationKey.getEncryptedKeyMaterial());
+ writePropertyTag(xmlSerializer, TAG_KEY_METADATA, applicationKey.getMetadata());
}
private static void writeKeyChainProtectionParams(
@@ -181,8 +181,11 @@
}
private static void writePropertyTag(
- XmlSerializer xmlSerializer, String propertyName, byte[] propertyValue)
+ XmlSerializer xmlSerializer, String propertyName, @Nullable byte[] propertyValue)
throws IOException {
+ if (propertyValue == null) {
+ return;
+ }
xmlSerializer.startTag(NAMESPACE, propertyName);
xmlSerializer.text(Base64.encodeToString(propertyValue, /*flags=*/ Base64.DEFAULT));
xmlSerializer.endTag(NAMESPACE, propertyName);
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb.java
index e69f73d..dffaffe 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb.java
@@ -104,6 +104,12 @@
values.put(KeysEntry.COLUMN_NAME_LAST_SYNCED_AT, LAST_SYNCED_AT_UNSYNCED);
values.put(KeysEntry.COLUMN_NAME_GENERATION_ID, wrappedKey.getPlatformKeyGenerationId());
values.put(KeysEntry.COLUMN_NAME_RECOVERY_STATUS, wrappedKey.getRecoveryStatus());
+ byte[] keyMetadata = wrappedKey.getKeyMetadata();
+ if (keyMetadata == null) {
+ values.putNull(KeysEntry.COLUMN_NAME_KEY_METADATA);
+ } else {
+ values.put(KeysEntry.COLUMN_NAME_KEY_METADATA, keyMetadata);
+ }
return db.replace(KeysEntry.TABLE_NAME, /*nullColumnHack=*/ null, values);
}
@@ -119,7 +125,8 @@
KeysEntry.COLUMN_NAME_NONCE,
KeysEntry.COLUMN_NAME_WRAPPED_KEY,
KeysEntry.COLUMN_NAME_GENERATION_ID,
- KeysEntry.COLUMN_NAME_RECOVERY_STATUS};
+ KeysEntry.COLUMN_NAME_RECOVERY_STATUS,
+ KeysEntry.COLUMN_NAME_KEY_METADATA};
String selection =
KeysEntry.COLUMN_NAME_UID + " = ? AND "
+ KeysEntry.COLUMN_NAME_ALIAS + " = ?";
@@ -155,7 +162,17 @@
cursor.getColumnIndexOrThrow(KeysEntry.COLUMN_NAME_GENERATION_ID));
int recoveryStatus = cursor.getInt(
cursor.getColumnIndexOrThrow(KeysEntry.COLUMN_NAME_RECOVERY_STATUS));
- return new WrappedKey(nonce, keyMaterial, generationId, recoveryStatus);
+
+ // Retrieve the metadata associated with the key
+ byte[] keyMetadata;
+ int metadataIdx = cursor.getColumnIndexOrThrow(KeysEntry.COLUMN_NAME_KEY_METADATA);
+ if (cursor.isNull(metadataIdx)) {
+ keyMetadata = null;
+ } else {
+ keyMetadata = cursor.getBlob(metadataIdx);
+ }
+
+ return new WrappedKey(nonce, keyMaterial, keyMetadata, generationId, recoveryStatus);
}
}
@@ -252,7 +269,8 @@
KeysEntry.COLUMN_NAME_NONCE,
KeysEntry.COLUMN_NAME_WRAPPED_KEY,
KeysEntry.COLUMN_NAME_ALIAS,
- KeysEntry.COLUMN_NAME_RECOVERY_STATUS};
+ KeysEntry.COLUMN_NAME_RECOVERY_STATUS,
+ KeysEntry.COLUMN_NAME_KEY_METADATA};
String selection =
KeysEntry.COLUMN_NAME_USER_ID + " = ? AND "
+ KeysEntry.COLUMN_NAME_UID + " = ? AND "
@@ -283,8 +301,18 @@
cursor.getColumnIndexOrThrow(KeysEntry.COLUMN_NAME_ALIAS));
int recoveryStatus = cursor.getInt(
cursor.getColumnIndexOrThrow(KeysEntry.COLUMN_NAME_RECOVERY_STATUS));
- keys.put(alias, new WrappedKey(nonce, keyMaterial, platformKeyGenerationId,
- recoveryStatus));
+
+ // Retrieve the metadata associated with the key
+ byte[] keyMetadata;
+ int metadataIdx = cursor.getColumnIndexOrThrow(KeysEntry.COLUMN_NAME_KEY_METADATA);
+ if (cursor.isNull(metadataIdx)) {
+ keyMetadata = null;
+ } else {
+ keyMetadata = cursor.getBlob(metadataIdx);
+ }
+
+ keys.put(alias, new WrappedKey(nonce, keyMaterial, keyMetadata,
+ platformKeyGenerationId, recoveryStatus));
}
return keys;
}
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbContract.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbContract.java
index 22e77cc..b58ee4b 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbContract.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbContract.java
@@ -67,6 +67,12 @@
* Status of the key sync {@code RecoveryController#setRecoveryStatus}
*/
static final String COLUMN_NAME_RECOVERY_STATUS = "recovery_status";
+
+ /**
+ * Data blob that will be authenticated (but encrypted) together with the key when the key
+ * is uploaded to cloud.
+ */
+ static final String COLUMN_NAME_KEY_METADATA = "key_metadata";
}
/**
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper.java
index 43efe9c..b0613da 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper.java
@@ -32,7 +32,7 @@
class RecoverableKeyStoreDbHelper extends SQLiteOpenHelper {
private static final String TAG = "RecoverableKeyStoreDbHp";
- static final int DATABASE_VERSION = 4;
+ static final int DATABASE_VERSION = 5;
private static final String DATABASE_NAME = "recoverablekeystore.db";
private static final String SQL_CREATE_KEYS_ENTRY =
@@ -46,6 +46,7 @@
+ KeysEntry.COLUMN_NAME_GENERATION_ID + " INTEGER,"
+ KeysEntry.COLUMN_NAME_LAST_SYNCED_AT + " INTEGER,"
+ KeysEntry.COLUMN_NAME_RECOVERY_STATUS + " INTEGER,"
+ + KeysEntry.COLUMN_NAME_KEY_METADATA + " BLOB,"
+ "UNIQUE(" + KeysEntry.COLUMN_NAME_UID + ","
+ KeysEntry.COLUMN_NAME_ALIAS + "))";
@@ -135,6 +136,11 @@
oldVersion = 4;
}
+ if (oldVersion < 5 && newVersion >= 5) {
+ upgradeDbForVersion5(db);
+ oldVersion = 5;
+ }
+
if (oldVersion != newVersion) {
Log.e(TAG, "Failed to update recoverablekeystore database to the most recent version");
}
@@ -166,6 +172,13 @@
/*defaultStr=*/ null);
}
+ private void upgradeDbForVersion5(SQLiteDatabase db) {
+ Log.d(TAG, "Updating recoverable keystore database to version 5");
+ // adds a column to store the metadata for application keys
+ addColumnToTable(db, KeysEntry.TABLE_NAME,
+ KeysEntry.COLUMN_NAME_KEY_METADATA, "BLOB", /*defaultStr=*/ null);
+ }
+
private static void addColumnToTable(
SQLiteDatabase db, String tableName, String column, String columnType,
String defaultStr) {
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index d611a17..7fffe8e 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -80,7 +80,7 @@
private final ControllerStub mController;
private final SessionStub mSession;
private final SessionCb mSessionCb;
- private final MediaSessionService mService;
+ private final MediaSessionService.ServiceImpl mService;
private final Context mContext;
private final Object mLock = new Object();
@@ -120,7 +120,8 @@
private String mMetadataDescription;
public MediaSessionRecord(int ownerPid, int ownerUid, int userId, String ownerPackageName,
- SessionCallbackLink cb, String tag, MediaSessionService service, Looper handlerLooper) {
+ SessionCallbackLink cb, String tag, MediaSessionService.ServiceImpl service,
+ Looper handlerLooper) {
mOwnerPid = ownerPid;
mOwnerUid = ownerUid;
mUserId = userId;
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index ba7b87e..d20ed8c 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -16,79 +16,15 @@
package com.android.server.media;
-import static android.os.UserHandle.USER_ALL;
-
-import android.annotation.Nullable;
-import android.app.ActivityManager;
-import android.app.INotificationManager;
-import android.app.KeyguardManager;
-import android.app.PendingIntent;
-import android.app.PendingIntent.CanceledException;
-import android.content.ActivityNotFoundException;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.ContentResolver;
import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ServiceInfo;
-import android.content.pm.UserInfo;
-import android.database.ContentObserver;
-import android.media.AudioManager;
-import android.media.AudioManagerInternal;
-import android.media.AudioPlaybackConfiguration;
-import android.media.AudioSystem;
-import android.media.IAudioService;
-import android.media.IRemoteVolumeController;
-import android.media.MediaController2;
-import android.media.Session2CommandGroup;
import android.media.Session2Token;
-import android.media.session.IActiveSessionsListener;
-import android.media.session.ICallback;
-import android.media.session.IOnMediaKeyListener;
-import android.media.session.IOnVolumeKeyLongPressListener;
-import android.media.session.ISession;
-import android.media.session.ISession2TokensListener;
-import android.media.session.ISessionManager;
-import android.media.session.MediaSession;
-import android.media.session.MediaSessionManager;
-import android.media.session.SessionCallbackLink;
-import android.net.Uri;
-import android.os.Binder;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerExecutor;
import android.os.IBinder;
-import android.os.Message;
-import android.os.PowerManager;
-import android.os.Process;
-import android.os.RemoteException;
-import android.os.ResultReceiver;
-import android.os.ServiceManager;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.speech.RecognizerIntent;
-import android.text.TextUtils;
import android.util.Log;
-import android.util.Slog;
-import android.util.SparseArray;
-import android.util.SparseIntArray;
-import android.view.KeyEvent;
-import android.view.ViewConfiguration;
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.util.DumpUtils;
-import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.Watchdog;
import com.android.server.Watchdog.Monitor;
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -97,2040 +33,124 @@
public class MediaSessionService extends SystemService implements Monitor {
private static final String TAG = "MediaSessionService";
static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- // Leave log for key event always.
- private static final boolean DEBUG_KEY_EVENT = true;
- private static final int WAKELOCK_TIMEOUT = 5000;
- private static final int MEDIA_KEY_LISTENER_TIMEOUT = 1000;
-
- private final SessionManagerImpl mSessionManagerImpl;
- private final MessageHandler mHandler = new MessageHandler();
- private final PowerManager.WakeLock mMediaEventWakeLock;
- private final int mLongPressTimeout;
- private final INotificationManager mNotificationManager;
- private final Object mLock = new Object();
- // Keeps the full user id for each user.
- @GuardedBy("mLock")
- private final SparseIntArray mFullUserIds = new SparseIntArray();
- @GuardedBy("mLock")
- private final SparseArray<FullUserRecord> mUserRecords = new SparseArray<FullUserRecord>();
- @GuardedBy("mLock")
- private final ArrayList<SessionsListenerRecord> mSessionsListeners
- = new ArrayList<SessionsListenerRecord>();
- // Map user id as index to list of Session2Tokens
- // TODO: Keep session2 info in MediaSessionStack for prioritizing both session1 and session2 in
- // one place.
- @GuardedBy("mLock")
- private final SparseArray<List<Session2Token>> mSession2TokensPerUser = new SparseArray<>();
- @GuardedBy("mLock")
- private final List<Session2TokensListenerRecord> mSession2TokensListenerRecords =
- new ArrayList<>();
-
- private KeyguardManager mKeyguardManager;
- private IAudioService mAudioService;
- private AudioManagerInternal mAudioManagerInternal;
- private ActivityManager mActivityManager;
- private ContentResolver mContentResolver;
- private SettingsObserver mSettingsObserver;
- private boolean mHasFeatureLeanback;
-
- // The FullUserRecord of the current users. (i.e. The foreground user that isn't a profile)
- // It's always not null after the MediaSessionService is started.
- private FullUserRecord mCurrentFullUserRecord;
- private MediaSessionRecord mGlobalPrioritySession;
- private AudioPlayerStateMonitor mAudioPlayerStateMonitor;
-
- // Used to notify system UI when remote volume was changed. TODO find a
- // better way to handle this.
- private IRemoteVolumeController mRvc;
+ private final ServiceImpl mImpl;
public MediaSessionService(Context context) {
super(context);
- mSessionManagerImpl = new SessionManagerImpl();
- PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
- mMediaEventWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "handleMediaEvent");
- mLongPressTimeout = ViewConfiguration.getLongPressTimeout();
- mNotificationManager = INotificationManager.Stub.asInterface(
- ServiceManager.getService(Context.NOTIFICATION_SERVICE));
+ mImpl = new MediaSessionServiceImpl(context);
}
@Override
public void onStart() {
- publishBinderService(Context.MEDIA_SESSION_SERVICE, mSessionManagerImpl);
+ publishBinderService(Context.MEDIA_SESSION_SERVICE, mImpl.getServiceBinder());
Watchdog.getInstance().addMonitor(this);
- mKeyguardManager =
- (KeyguardManager) getContext().getSystemService(Context.KEYGUARD_SERVICE);
- mAudioService = getAudioService();
- mAudioManagerInternal = LocalServices.getService(AudioManagerInternal.class);
- mActivityManager =
- (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE);
- mAudioPlayerStateMonitor = AudioPlayerStateMonitor.getInstance();
- mAudioPlayerStateMonitor.registerListener(
- (config, isRemoved) -> {
- if (isRemoved || !config.isActive() || config.getPlayerType()
- == AudioPlaybackConfiguration.PLAYER_TYPE_JAM_SOUNDPOOL) {
- return;
- }
- synchronized (mLock) {
- FullUserRecord user = getFullUserRecordLocked(
- UserHandle.getUserId(config.getClientUid()));
- if (user != null) {
- user.mPriorityStack.updateMediaButtonSessionIfNeeded();
- }
- }
- }, null /* handler */);
- mAudioPlayerStateMonitor.registerSelfIntoAudioServiceIfNeeded(mAudioService);
- mContentResolver = getContext().getContentResolver();
- mSettingsObserver = new SettingsObserver();
- mSettingsObserver.observe();
- mHasFeatureLeanback = getContext().getPackageManager().hasSystemFeature(
- PackageManager.FEATURE_LEANBACK);
- updateUser();
+ mImpl.onStart();
}
- private IAudioService getAudioService() {
- IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE);
- return IAudioService.Stub.asInterface(b);
+ @Override
+ public void onStartUser(int userId) {
+ mImpl.onStartUser(userId);
}
- private boolean isGlobalPriorityActiveLocked() {
- return mGlobalPrioritySession != null && mGlobalPrioritySession.isActive();
+ @Override
+ public void onSwitchUser(int userId) {
+ mImpl.onSwitchUser(userId);
}
+ // Called when the user with the userId is removed.
+ @Override
+ public void onStopUser(int userId) {
+ mImpl.onStopUser(userId);
+ }
+
+ @Override
+ public void monitor() {
+ mImpl.monitor();
+ }
+
+ /**
+ * Updates session.
+ */
public void updateSession(MediaSessionRecord record) {
- synchronized (mLock) {
- FullUserRecord user = getFullUserRecordLocked(record.getUserId());
- if (user == null) {
- Log.w(TAG, "Unknown session updated. Ignoring.");
- return;
- }
- if ((record.getFlags() & MediaSession.FLAG_EXCLUSIVE_GLOBAL_PRIORITY) != 0) {
- if (DEBUG_KEY_EVENT) {
- Log.d(TAG, "Global priority session is updated, active=" + record.isActive());
- }
- user.pushAddressedPlayerChangedLocked();
- } else {
- if (!user.mPriorityStack.contains(record)) {
- Log.w(TAG, "Unknown session updated. Ignoring.");
- return;
- }
- user.mPriorityStack.onSessionStateChange(record);
- }
- mHandler.postSessionsChanged(record.getUserId());
- }
+ mImpl.updateSession(record);
}
+ /**
+ * Sets global priority session.
+ */
public void setGlobalPrioritySession(MediaSessionRecord record) {
- synchronized (mLock) {
- FullUserRecord user = getFullUserRecordLocked(record.getUserId());
- if (mGlobalPrioritySession != record) {
- Log.d(TAG, "Global priority session is changed from " + mGlobalPrioritySession
- + " to " + record);
- mGlobalPrioritySession = record;
- if (user != null && user.mPriorityStack.contains(record)) {
- // Handle the global priority session separately.
- // Otherwise, it can be the media button session regardless of the active state
- // because it or other system components might have been the lastly played media
- // app.
- user.mPriorityStack.removeSession(record);
- }
- }
- }
- }
-
- private List<MediaSessionRecord> getActiveSessionsLocked(int userId) {
- List<MediaSessionRecord> records = new ArrayList<>();
- if (userId == USER_ALL) {
- int size = mUserRecords.size();
- for (int i = 0; i < size; i++) {
- records.addAll(mUserRecords.valueAt(i).mPriorityStack.getActiveSessions(userId));
- }
- } else {
- FullUserRecord user = getFullUserRecordLocked(userId);
- if (user == null) {
- Log.w(TAG, "getSessions failed. Unknown user " + userId);
- return records;
- }
- records.addAll(user.mPriorityStack.getActiveSessions(userId));
- }
-
- // Return global priority session at the first whenever it's asked.
- if (isGlobalPriorityActiveLocked()
- && (userId == USER_ALL || userId == mGlobalPrioritySession.getUserId())) {
- records.add(0, mGlobalPrioritySession);
- }
- return records;
+ mImpl.setGlobalPrioritySession(record);
}
List<Session2Token> getSession2TokensLocked(int userId) {
- List<Session2Token> list = new ArrayList<>();
- if (userId == USER_ALL) {
- for (int i = 0; i < mSession2TokensPerUser.size(); i++) {
- list.addAll(mSession2TokensPerUser.valueAt(i));
- }
- } else {
- list.addAll(mSession2TokensPerUser.get(userId));
- }
- return list;
+ return mImpl.getSession2TokensLocked(userId);
}
/**
* Tells the system UI that volume has changed on an active remote session.
*/
public void notifyRemoteVolumeChanged(int flags, MediaSessionRecord session) {
- if (mRvc == null || !session.isActive()) {
- return;
- }
- try {
- mRvc.remoteVolumeChanged(session.getControllerBinder(), flags);
- } catch (Exception e) {
- Log.wtf(TAG, "Error sending volume change to system UI.", e);
- }
+ mImpl.notifyRemoteVolumeChanged(flags, session);
}
+ /**
+ * Called when session playstate is changed.
+ */
public void onSessionPlaystateChanged(MediaSessionRecord record, int oldState, int newState) {
- synchronized (mLock) {
- FullUserRecord user = getFullUserRecordLocked(record.getUserId());
- if (user == null || !user.mPriorityStack.contains(record)) {
- Log.d(TAG, "Unknown session changed playback state. Ignoring.");
- return;
- }
- user.mPriorityStack.onPlaystateChanged(record, oldState, newState);
- }
+ mImpl.onSessionPlaystateChanged(record, oldState, newState);
}
+ /**
+ * Called when session playback type is changed.
+ */
public void onSessionPlaybackTypeChanged(MediaSessionRecord record) {
- synchronized (mLock) {
- FullUserRecord user = getFullUserRecordLocked(record.getUserId());
- if (user == null || !user.mPriorityStack.contains(record)) {
- Log.d(TAG, "Unknown session changed playback type. Ignoring.");
- return;
- }
- pushRemoteVolumeUpdateLocked(record.getUserId());
- }
- }
-
- @Override
- public void onStartUser(int userId) {
- if (DEBUG) Log.d(TAG, "onStartUser: " + userId);
- updateUser();
- }
-
- @Override
- public void onSwitchUser(int userId) {
- if (DEBUG) Log.d(TAG, "onSwitchUser: " + userId);
- updateUser();
- }
-
- // Called when the user with the userId is removed.
- @Override
- public void onStopUser(int userId) {
- if (DEBUG) Log.d(TAG, "onStopUser: " + userId);
- synchronized (mLock) {
- // TODO: Also handle removing user in updateUser() because adding/switching user is
- // handled in updateUser().
- FullUserRecord user = getFullUserRecordLocked(userId);
- if (user != null) {
- if (user.mFullUserId == userId) {
- user.destroySessionsForUserLocked(USER_ALL);
- mUserRecords.remove(userId);
- } else {
- user.destroySessionsForUserLocked(userId);
- }
- }
- mSession2TokensPerUser.remove(userId);
- updateUser();
- }
- }
-
- @Override
- public void monitor() {
- synchronized (mLock) {
- // Check for deadlock
- }
+ mImpl.onSessionPlaybackTypeChanged(record);
}
protected void enforcePhoneStatePermission(int pid, int uid) {
- if (getContext().checkPermission(android.Manifest.permission.MODIFY_PHONE_STATE, pid, uid)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Must hold the MODIFY_PHONE_STATE permission.");
- }
+ mImpl.enforcePhoneStatePermission(pid, uid);
}
void sessionDied(MediaSessionRecord session) {
- synchronized (mLock) {
- destroySessionLocked(session);
- }
+ mImpl.sessionDied(session);
}
void destroySession(MediaSessionRecord session) {
- synchronized (mLock) {
- destroySessionLocked(session);
- }
- }
-
- private void updateUser() {
- synchronized (mLock) {
- UserManager manager = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
- mFullUserIds.clear();
- List<UserInfo> allUsers = manager.getUsers();
- if (allUsers != null) {
- for (UserInfo userInfo : allUsers) {
- if (userInfo.isManagedProfile()) {
- mFullUserIds.put(userInfo.id, userInfo.profileGroupId);
- } else {
- mFullUserIds.put(userInfo.id, userInfo.id);
- if (mUserRecords.get(userInfo.id) == null) {
- mUserRecords.put(userInfo.id, new FullUserRecord(userInfo.id));
- }
- }
- if (mSession2TokensPerUser.get(userInfo.id) == null) {
- mSession2TokensPerUser.put(userInfo.id, new ArrayList<>());
- }
- }
- }
- // Ensure that the current full user exists.
- int currentFullUserId = ActivityManager.getCurrentUser();
- mCurrentFullUserRecord = mUserRecords.get(currentFullUserId);
- if (mCurrentFullUserRecord == null) {
- Log.w(TAG, "Cannot find FullUserInfo for the current user " + currentFullUserId);
- mCurrentFullUserRecord = new FullUserRecord(currentFullUserId);
- mUserRecords.put(currentFullUserId, mCurrentFullUserRecord);
- if (mSession2TokensPerUser.get(currentFullUserId) == null) {
- mSession2TokensPerUser.put(currentFullUserId, new ArrayList<>());
- }
- }
- mFullUserIds.put(currentFullUserId, currentFullUserId);
- }
- }
-
- private void updateActiveSessionListeners() {
- synchronized (mLock) {
- for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
- SessionsListenerRecord listener = mSessionsListeners.get(i);
- try {
- enforceMediaPermissions(listener.componentName, listener.pid, listener.uid,
- listener.userId);
- } catch (SecurityException e) {
- Log.i(TAG, "ActiveSessionsListener " + listener.componentName
- + " is no longer authorized. Disconnecting.");
- mSessionsListeners.remove(i);
- try {
- listener.listener
- .onActiveSessionsChanged(new ArrayList<MediaSession.Token>());
- } catch (Exception e1) {
- // ignore
- }
- }
- }
- }
- }
-
- /*
- * When a session is removed several things need to happen.
- * 1. We need to remove it from the relevant user.
- * 2. We need to remove it from the priority stack.
- * 3. We need to remove it from all sessions.
- * 4. If this is the system priority session we need to clear it.
- * 5. We need to unlink to death from the cb binder
- * 6. We need to tell the session to do any final cleanup (onDestroy)
- */
- private void destroySessionLocked(MediaSessionRecord session) {
- if (DEBUG) {
- Log.d(TAG, "Destroying " + session);
- }
- FullUserRecord user = getFullUserRecordLocked(session.getUserId());
- if (mGlobalPrioritySession == session) {
- mGlobalPrioritySession = null;
- if (session.isActive() && user != null) {
- user.pushAddressedPlayerChangedLocked();
- }
- } else {
- if (user != null) {
- user.mPriorityStack.removeSession(session);
- }
- }
-
- try {
- session.getCallback().getBinder().unlinkToDeath(session, 0);
- } catch (Exception e) {
- // ignore exceptions while destroying a session.
- }
- session.onDestroy();
- mHandler.postSessionsChanged(session.getUserId());
- }
-
- private void enforcePackageName(String packageName, int uid) {
- if (TextUtils.isEmpty(packageName)) {
- throw new IllegalArgumentException("packageName may not be empty");
- }
- String[] packages = getContext().getPackageManager().getPackagesForUid(uid);
- final int packageCount = packages.length;
- for (int i = 0; i < packageCount; i++) {
- if (packageName.equals(packages[i])) {
- return;
- }
- }
- throw new IllegalArgumentException("packageName is not owned by the calling process");
- }
-
- /**
- * Checks a caller's authorization to register an IRemoteControlDisplay.
- * Authorization is granted if one of the following is true:
- * <ul>
- * <li>the caller has android.Manifest.permission.MEDIA_CONTENT_CONTROL
- * permission</li>
- * <li>the caller's listener is one of the enabled notification listeners
- * for the caller's user</li>
- * </ul>
- */
- private void enforceMediaPermissions(ComponentName compName, int pid, int uid,
- int resolvedUserId) {
- if (isCurrentVolumeController(pid, uid)) return;
- if (getContext()
- .checkPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid)
- != PackageManager.PERMISSION_GRANTED
- && !isEnabledNotificationListener(compName, UserHandle.getUserId(uid),
- resolvedUserId)) {
- throw new SecurityException("Missing permission to control media.");
- }
- }
-
- private boolean isCurrentVolumeController(int pid, int uid) {
- return getContext().checkPermission(android.Manifest.permission.STATUS_BAR_SERVICE,
- pid, uid) == PackageManager.PERMISSION_GRANTED;
- }
-
- private void enforceSystemUiPermission(String action, int pid, int uid) {
- if (!isCurrentVolumeController(pid, uid)) {
- throw new SecurityException("Only system ui may " + action);
- }
- }
-
- /**
- * This checks if the component is an enabled notification listener for the
- * specified user. Enabled components may only operate on behalf of the user
- * they're running as.
- *
- * @param compName The component that is enabled.
- * @param userId The user id of the caller.
- * @param forUserId The user id they're making the request on behalf of.
- * @return True if the component is enabled, false otherwise
- */
- private boolean isEnabledNotificationListener(ComponentName compName, int userId,
- int forUserId) {
- if (userId != forUserId) {
- // You may not access another user's content as an enabled listener.
- return false;
- }
- if (DEBUG) {
- Log.d(TAG, "Checking if enabled notification listener " + compName);
- }
- if (compName != null) {
- try {
- return mNotificationManager.isNotificationListenerAccessGrantedForUser(
- compName, userId);
- } catch(RemoteException e) {
- Log.w(TAG, "Dead NotificationManager in isEnabledNotificationListener", e);
- }
- }
- return false;
- }
-
- private MediaSessionRecord createSessionInternal(int callerPid, int callerUid, int userId,
- String callerPackageName, SessionCallbackLink cb, String tag) throws RemoteException {
- synchronized (mLock) {
- return createSessionLocked(callerPid, callerUid, userId, callerPackageName, cb, tag);
- }
- }
-
- /*
- * When a session is created the following things need to happen.
- * 1. Its callback binder needs a link to death
- * 2. It needs to be added to all sessions.
- * 3. It needs to be added to the priority stack.
- * 4. It needs to be added to the relevant user record.
- */
- private MediaSessionRecord createSessionLocked(int callerPid, int callerUid, int userId,
- String callerPackageName, SessionCallbackLink cb, String tag) {
- FullUserRecord user = getFullUserRecordLocked(userId);
- if (user == null) {
- Log.wtf(TAG, "Request from invalid user: " + userId);
- throw new RuntimeException("Session request from invalid user.");
- }
-
- final MediaSessionRecord session = new MediaSessionRecord(callerPid, callerUid, userId,
- callerPackageName, cb, tag, this, mHandler.getLooper());
- try {
- cb.getBinder().linkToDeath(session, 0);
- } catch (RemoteException e) {
- throw new RuntimeException("Media Session owner died prematurely.", e);
- }
-
- user.mPriorityStack.addSession(session);
- mHandler.postSessionsChanged(userId);
-
- if (DEBUG) {
- Log.d(TAG, "Created session for " + callerPackageName + " with tag " + tag);
- }
- return session;
- }
-
- private int findIndexOfSessionsListenerLocked(IActiveSessionsListener listener) {
- for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
- if (mSessionsListeners.get(i).listener.asBinder() == listener.asBinder()) {
- return i;
- }
- }
- return -1;
- }
-
- private int findIndexOfSession2TokensListenerLocked(ISession2TokensListener listener) {
- for (int i = mSession2TokensListenerRecords.size() - 1; i >= 0; i--) {
- if (mSession2TokensListenerRecords.get(i).listener.asBinder() == listener.asBinder()) {
- return i;
- }
- }
- return -1;
- }
-
-
- private void pushSessionsChanged(int userId) {
- synchronized (mLock) {
- FullUserRecord user = getFullUserRecordLocked(userId);
- if (user == null) {
- Log.w(TAG, "pushSessionsChanged failed. No user with id=" + userId);
- return;
- }
- List<MediaSessionRecord> records = getActiveSessionsLocked(userId);
- int size = records.size();
- ArrayList<MediaSession.Token> tokens = new ArrayList<MediaSession.Token>();
- for (int i = 0; i < size; i++) {
- tokens.add(new MediaSession.Token(records.get(i).getControllerBinder()));
- }
- pushRemoteVolumeUpdateLocked(userId);
- for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
- SessionsListenerRecord record = mSessionsListeners.get(i);
- if (record.userId == USER_ALL || record.userId == userId) {
- try {
- record.listener.onActiveSessionsChanged(tokens);
- } catch (RemoteException e) {
- Log.w(TAG, "Dead ActiveSessionsListener in pushSessionsChanged, removing",
- e);
- mSessionsListeners.remove(i);
- }
- }
- }
- }
- }
-
- private void pushRemoteVolumeUpdateLocked(int userId) {
- if (mRvc != null) {
- try {
- FullUserRecord user = getFullUserRecordLocked(userId);
- if (user == null) {
- Log.w(TAG, "pushRemoteVolumeUpdateLocked failed. No user with id=" + userId);
- return;
- }
- MediaSessionRecord record = user.mPriorityStack.getDefaultRemoteSession(userId);
- mRvc.updateRemoteController(record == null ? null : record.getControllerBinder());
- } catch (RemoteException e) {
- Log.wtf(TAG, "Error sending default remote volume to sys ui.", e);
- }
- }
+ mImpl.destroySession(session);
}
void pushSession2TokensChangedLocked(int userId) {
- List<Session2Token> allSession2Tokens = getSession2TokensLocked(USER_ALL);
- List<Session2Token> session2Tokens = getSession2TokensLocked(userId);
-
- for (int i = mSession2TokensListenerRecords.size() - 1; i >= 0; i--) {
- Session2TokensListenerRecord listenerRecord = mSession2TokensListenerRecords.get(i);
- try {
- if (listenerRecord.userId == USER_ALL) {
- listenerRecord.listener.onSession2TokensChanged(allSession2Tokens);
- } else if (listenerRecord.userId == userId) {
- listenerRecord.listener.onSession2TokensChanged(session2Tokens);
- }
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to notify Session2Token change. Removing listener.", e);
- mSession2TokensListenerRecords.remove(i);
- }
- }
+ mImpl.pushSession2TokensChangedLocked(userId);
}
/**
- * Called when the media button receiver for the {@param record} is changed.
- *
- * @param record the media session whose media button receiver is updated.
+ * Called when media button receiver changed.
*/
public void onMediaButtonReceiverChanged(MediaSessionRecord record) {
- synchronized (mLock) {
- FullUserRecord user = getFullUserRecordLocked(record.getUserId());
- MediaSessionRecord mediaButtonSession =
- user.mPriorityStack.getMediaButtonSession();
- if (record == mediaButtonSession) {
- user.rememberMediaButtonReceiverLocked(mediaButtonSession);
- }
- }
+ mImpl.onMediaButtonReceiverChanged(record);
}
- private String getCallingPackageName(int uid) {
- String[] packages = getContext().getPackageManager().getPackagesForUid(uid);
- if (packages != null && packages.length > 0) {
- return packages[0];
- }
- return "";
- }
-
- private void dispatchVolumeKeyLongPressLocked(KeyEvent keyEvent) {
- if (mCurrentFullUserRecord.mOnVolumeKeyLongPressListener == null) {
- return;
- }
- try {
- mCurrentFullUserRecord.mOnVolumeKeyLongPressListener.onVolumeKeyLongPress(keyEvent);
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to send " + keyEvent + " to volume key long-press listener");
- }
- }
-
- private FullUserRecord getFullUserRecordLocked(int userId) {
- int fullUserId = mFullUserIds.get(userId, -1);
- if (fullUserId < 0) {
- return null;
- }
- return mUserRecords.get(fullUserId);
- }
-
- /**
- * Information about a full user and its corresponding managed profiles.
- *
- * <p>Since the full user runs together with its managed profiles, a user wouldn't differentiate
- * them when he/she presses a media/volume button. So keeping media sessions for them in one
- * place makes more sense and increases the readability.</p>
- * <p>The contents of this object is guarded by {@link #mLock}.
- */
- final class FullUserRecord implements MediaSessionStack.OnMediaButtonSessionChangedListener {
- public static final int COMPONENT_TYPE_INVALID = 0;
- public static final int COMPONENT_TYPE_BROADCAST = 1;
- public static final int COMPONENT_TYPE_ACTIVITY = 2;
- public static final int COMPONENT_TYPE_SERVICE = 3;
- private static final String COMPONENT_NAME_USER_ID_DELIM = ",";
-
- private final int mFullUserId;
- private final MediaSessionStack mPriorityStack;
- private PendingIntent mLastMediaButtonReceiver;
- private ComponentName mRestoredMediaButtonReceiver;
- private int mRestoredMediaButtonReceiverComponentType;
- private int mRestoredMediaButtonReceiverUserId;
-
- private IOnVolumeKeyLongPressListener mOnVolumeKeyLongPressListener;
- private int mOnVolumeKeyLongPressListenerUid;
- private KeyEvent mInitialDownVolumeKeyEvent;
- private int mInitialDownVolumeStream;
- private boolean mInitialDownMusicOnly;
-
- private IOnMediaKeyListener mOnMediaKeyListener;
- private int mOnMediaKeyListenerUid;
- private ICallback mCallback;
-
- public FullUserRecord(int fullUserId) {
- mFullUserId = fullUserId;
- mPriorityStack = new MediaSessionStack(mAudioPlayerStateMonitor, this);
- // Restore the remembered media button receiver before the boot.
- String mediaButtonReceiverInfo = Settings.Secure.getStringForUser(mContentResolver,
- Settings.System.MEDIA_BUTTON_RECEIVER, mFullUserId);
- if (mediaButtonReceiverInfo == null) {
- return;
- }
- String[] tokens = mediaButtonReceiverInfo.split(COMPONENT_NAME_USER_ID_DELIM);
- if (tokens == null || (tokens.length != 2 && tokens.length != 3)) {
- return;
- }
- mRestoredMediaButtonReceiver = ComponentName.unflattenFromString(tokens[0]);
- mRestoredMediaButtonReceiverUserId = Integer.parseInt(tokens[1]);
- if (tokens.length == 3) {
- mRestoredMediaButtonReceiverComponentType = Integer.parseInt(tokens[2]);
- } else {
- mRestoredMediaButtonReceiverComponentType =
- getComponentType(mRestoredMediaButtonReceiver);
- }
- }
-
- public void destroySessionsForUserLocked(int userId) {
- List<MediaSessionRecord> sessions = mPriorityStack.getPriorityList(false, userId);
- for (MediaSessionRecord session : sessions) {
- MediaSessionService.this.destroySessionLocked(session);
- }
- }
-
- public void dumpLocked(PrintWriter pw, String prefix) {
- pw.print(prefix + "Record for full_user=" + mFullUserId);
- // Dump managed profile user ids associated with this user.
- int size = mFullUserIds.size();
- for (int i = 0; i < size; i++) {
- if (mFullUserIds.keyAt(i) != mFullUserIds.valueAt(i)
- && mFullUserIds.valueAt(i) == mFullUserId) {
- pw.print(", profile_user=" + mFullUserIds.keyAt(i));
- }
- }
- pw.println();
- String indent = prefix + " ";
- pw.println(indent + "Volume key long-press listener: " + mOnVolumeKeyLongPressListener);
- pw.println(indent + "Volume key long-press listener package: " +
- getCallingPackageName(mOnVolumeKeyLongPressListenerUid));
- pw.println(indent + "Media key listener: " + mOnMediaKeyListener);
- pw.println(indent + "Media key listener package: " +
- getCallingPackageName(mOnMediaKeyListenerUid));
- pw.println(indent + "Callback: " + mCallback);
- pw.println(indent + "Last MediaButtonReceiver: " + mLastMediaButtonReceiver);
- pw.println(indent + "Restored MediaButtonReceiver: " + mRestoredMediaButtonReceiver);
- pw.println(indent + "Restored MediaButtonReceiverComponentType: "
- + mRestoredMediaButtonReceiverComponentType);
- mPriorityStack.dump(pw, indent);
- pw.println(indent + "Session2Tokens:");
- for (int i = 0; i < mSession2TokensPerUser.size(); i++) {
- List<Session2Token> list = mSession2TokensPerUser.valueAt(i);
- if (list == null || list.size() == 0) {
- continue;
- }
- for (Session2Token token : list) {
- pw.println(indent + " " + token);
- }
- }
- }
-
- @Override
- public void onMediaButtonSessionChanged(MediaSessionRecord oldMediaButtonSession,
- MediaSessionRecord newMediaButtonSession) {
- if (DEBUG_KEY_EVENT) {
- Log.d(TAG, "Media button session is changed to " + newMediaButtonSession);
- }
- synchronized (mLock) {
- if (oldMediaButtonSession != null) {
- mHandler.postSessionsChanged(oldMediaButtonSession.getUserId());
- }
- if (newMediaButtonSession != null) {
- rememberMediaButtonReceiverLocked(newMediaButtonSession);
- mHandler.postSessionsChanged(newMediaButtonSession.getUserId());
- }
- pushAddressedPlayerChangedLocked();
- }
- }
-
- // Remember media button receiver and keep it in the persistent storage.
- public void rememberMediaButtonReceiverLocked(MediaSessionRecord record) {
- PendingIntent receiver = record.getMediaButtonReceiver();
- mLastMediaButtonReceiver = receiver;
- mRestoredMediaButtonReceiver = null;
- mRestoredMediaButtonReceiverComponentType = COMPONENT_TYPE_INVALID;
-
- String mediaButtonReceiverInfo = "";
- if (receiver != null) {
- ComponentName component = receiver.getIntent().getComponent();
- if (component != null
- && record.getPackageName().equals(component.getPackageName())) {
- String componentName = component.flattenToString();
- int componentType = getComponentType(component);
- mediaButtonReceiverInfo = String.join(COMPONENT_NAME_USER_ID_DELIM,
- componentName, String.valueOf(record.getUserId()),
- String.valueOf(componentType));
- }
- }
- Settings.Secure.putStringForUser(mContentResolver,
- Settings.System.MEDIA_BUTTON_RECEIVER, mediaButtonReceiverInfo,
- mFullUserId);
- }
-
- private void pushAddressedPlayerChangedLocked() {
- if (mCallback == null) {
- return;
- }
- try {
- MediaSessionRecord mediaButtonSession = getMediaButtonSessionLocked();
- if (mediaButtonSession != null) {
- mCallback.onAddressedPlayerChangedToMediaSession(
- new MediaSession.Token(mediaButtonSession.getControllerBinder()));
- } else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) {
- mCallback.onAddressedPlayerChangedToMediaButtonReceiver(
- mCurrentFullUserRecord.mLastMediaButtonReceiver
- .getIntent().getComponent());
- } else if (mCurrentFullUserRecord.mRestoredMediaButtonReceiver != null) {
- mCallback.onAddressedPlayerChangedToMediaButtonReceiver(
- mCurrentFullUserRecord.mRestoredMediaButtonReceiver);
- }
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to pushAddressedPlayerChangedLocked", e);
- }
- }
-
- private MediaSessionRecord getMediaButtonSessionLocked() {
- return isGlobalPriorityActiveLocked()
- ? mGlobalPrioritySession : mPriorityStack.getMediaButtonSession();
- }
-
- private int getComponentType(@Nullable ComponentName componentName) {
- if (componentName == null) {
- return COMPONENT_TYPE_INVALID;
- }
- PackageManager pm = getContext().getPackageManager();
- try {
- ActivityInfo activityInfo = pm.getActivityInfo(componentName,
- PackageManager.MATCH_DIRECT_BOOT_AWARE
- | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
- | PackageManager.GET_ACTIVITIES);
- if (activityInfo != null) {
- return COMPONENT_TYPE_ACTIVITY;
- }
- } catch (NameNotFoundException e) {
- }
- try {
- ServiceInfo serviceInfo = pm.getServiceInfo(componentName,
- PackageManager.MATCH_DIRECT_BOOT_AWARE
- | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
- | PackageManager.GET_SERVICES);
- if (serviceInfo != null) {
- return COMPONENT_TYPE_SERVICE;
- }
- } catch (NameNotFoundException e) {
- }
- // Pick legacy behavior for BroadcastReceiver or unknown.
- return COMPONENT_TYPE_BROADCAST;
- }
- }
-
- final class SessionsListenerRecord implements IBinder.DeathRecipient {
- public final IActiveSessionsListener listener;
- public final ComponentName componentName;
- public final int userId;
- public final int pid;
- public final int uid;
-
- public SessionsListenerRecord(IActiveSessionsListener listener,
- ComponentName componentName,
- int userId, int pid, int uid) {
- this.listener = listener;
- this.componentName = componentName;
- this.userId = userId;
- this.pid = pid;
- this.uid = uid;
- }
-
- @Override
- public void binderDied() {
- synchronized (mLock) {
- mSessionsListeners.remove(this);
- }
- }
- }
-
- final class Session2TokensListenerRecord implements IBinder.DeathRecipient {
- public final ISession2TokensListener listener;
- public final int userId;
-
- Session2TokensListenerRecord(ISession2TokensListener listener,
- int userId) {
- this.listener = listener;
- this.userId = userId;
- }
-
- @Override
- public void binderDied() {
- synchronized (mLock) {
- mSession2TokensListenerRecords.remove(this);
- }
- }
- }
-
- final class SettingsObserver extends ContentObserver {
- private final Uri mSecureSettingsUri = Settings.Secure.getUriFor(
- Settings.Secure.ENABLED_NOTIFICATION_LISTENERS);
-
- private SettingsObserver() {
- super(null);
- }
-
- private void observe() {
- mContentResolver.registerContentObserver(mSecureSettingsUri,
- false, this, USER_ALL);
- }
-
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- updateActiveSessionListeners();
- }
- }
-
- class SessionManagerImpl extends ISessionManager.Stub {
- private static final String EXTRA_WAKELOCK_ACQUIRED =
- "android.media.AudioService.WAKELOCK_ACQUIRED";
- private static final int WAKELOCK_RELEASE_ON_FINISHED = 1980; // magic number
-
- private boolean mVoiceButtonDown = false;
- private boolean mVoiceButtonHandled = false;
-
- @Override
- public ISession createSession(String packageName, SessionCallbackLink cb, String tag,
- int userId) throws RemoteException {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- enforcePackageName(packageName, uid);
- int resolvedUserId = ActivityManager.handleIncomingUser(pid, uid, userId,
- false /* allowAll */, true /* requireFull */, "createSession", packageName);
- if (cb == null) {
- throw new IllegalArgumentException("Controller callback cannot be null");
- }
- return createSessionInternal(pid, uid, resolvedUserId, packageName, cb, tag)
- .getSessionBinder();
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public void notifySession2Created(Session2Token sessionToken) throws RemoteException {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- if (DEBUG) {
- Log.d(TAG, "Session2 is created " + sessionToken);
- }
- if (uid != sessionToken.getUid()) {
- throw new SecurityException("Unexpected Session2Token's UID, expected=" + uid
- + " but actually=" + sessionToken.getUid());
- }
- Controller2Callback callback = new Controller2Callback(sessionToken);
- // Note: It's safe not to keep controller here because it wouldn't be GC'ed until
- // it's closed.
- // TODO: Keep controller as well for better readability
- // because the GC behavior isn't straightforward.
- MediaController2 controller = new MediaController2(getContext(), sessionToken,
- new HandlerExecutor(mHandler), callback);
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public List<IBinder> getSessions(ComponentName componentName, int userId) {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
-
- try {
- int resolvedUserId = verifySessionsRequest(componentName, userId, pid, uid);
- ArrayList<IBinder> binders = new ArrayList<IBinder>();
- synchronized (mLock) {
- List<MediaSessionRecord> records = getActiveSessionsLocked(resolvedUserId);
- for (MediaSessionRecord record : records) {
- binders.add(record.getControllerBinder().asBinder());
- }
- }
- return binders;
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public List<Session2Token> getSession2Tokens(int userId) {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
-
- try {
- // Check that they can make calls on behalf of the user and
- // get the final user id
- int resolvedUserId = ActivityManager.handleIncomingUser(pid, uid, userId,
- true /* allowAll */, true /* requireFull */, "getSession2Tokens",
- null /* optional packageName */);
- List<Session2Token> result;
- synchronized (mLock) {
- result = getSession2TokensLocked(resolvedUserId);
- }
- return result;
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public void addSessionsListener(IActiveSessionsListener listener,
- ComponentName componentName, int userId) throws RemoteException {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
-
- try {
- int resolvedUserId = verifySessionsRequest(componentName, userId, pid, uid);
- synchronized (mLock) {
- int index = findIndexOfSessionsListenerLocked(listener);
- if (index != -1) {
- Log.w(TAG, "ActiveSessionsListener is already added, ignoring");
- return;
- }
- SessionsListenerRecord record = new SessionsListenerRecord(listener,
- componentName, resolvedUserId, pid, uid);
- try {
- listener.asBinder().linkToDeath(record, 0);
- } catch (RemoteException e) {
- Log.e(TAG, "ActiveSessionsListener is dead, ignoring it", e);
- return;
- }
- mSessionsListeners.add(record);
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public void removeSessionsListener(IActiveSessionsListener listener)
- throws RemoteException {
- synchronized (mLock) {
- int index = findIndexOfSessionsListenerLocked(listener);
- if (index != -1) {
- SessionsListenerRecord record = mSessionsListeners.remove(index);
- try {
- record.listener.asBinder().unlinkToDeath(record, 0);
- } catch (Exception e) {
- // ignore exceptions, the record is being removed
- }
- }
- }
- }
-
- @Override
- public void addSession2TokensListener(ISession2TokensListener listener,
- int userId) {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
-
- try {
- // Check that they can make calls on behalf of the user and get the final user id.
- int resolvedUserId = ActivityManager.handleIncomingUser(pid, uid, userId,
- true /* allowAll */, true /* requireFull */, "addSession2TokensListener",
- null /* optional packageName */);
- synchronized (mLock) {
- int index = findIndexOfSession2TokensListenerLocked(listener);
- if (index >= 0) {
- Log.w(TAG, "addSession2TokensListener is already added, ignoring");
- return;
- }
- mSession2TokensListenerRecords.add(
- new Session2TokensListenerRecord(listener, resolvedUserId));
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public void removeSession2TokensListener(ISession2TokensListener listener) {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
-
- try {
- synchronized (mLock) {
- int index = findIndexOfSession2TokensListenerLocked(listener);
- if (index >= 0) {
- Session2TokensListenerRecord listenerRecord =
- mSession2TokensListenerRecords.remove(index);
- try {
- listenerRecord.listener.asBinder().unlinkToDeath(listenerRecord, 0);
- } catch (Exception e) {
- // Ignore exception.
- }
- }
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- /**
- * Handles the dispatching of the media button events to one of the
- * registered listeners, or if there was none, broadcast an
- * ACTION_MEDIA_BUTTON intent to the rest of the system.
- *
- * @param packageName The caller package
- * @param asSystemService {@code true} if the event sent to the session as if it was come
- * from the system service instead of the app process. This helps sessions to
- * distinguish between the key injection by the app and key events from the
- * hardware devices. Should be used only when the volume key events aren't handled
- * by foreground activity. {@code false} otherwise to tell session about the real
- * caller.
- * @param keyEvent a non-null KeyEvent whose key code is one of the
- * supported media buttons
- * @param needWakeLock true if a PARTIAL_WAKE_LOCK needs to be held
- * while this key event is dispatched.
- */
- @Override
- public void dispatchMediaKeyEvent(String packageName, boolean asSystemService,
- KeyEvent keyEvent, boolean needWakeLock) {
- if (keyEvent == null || !KeyEvent.isMediaSessionKey(keyEvent.getKeyCode())) {
- Log.w(TAG, "Attempted to dispatch null or non-media key event.");
- return;
- }
-
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- if (DEBUG) {
- Log.d(TAG, "dispatchMediaKeyEvent, pkg=" + packageName + " pid=" + pid
- + ", uid=" + uid + ", asSystem=" + asSystemService + ", event="
- + keyEvent);
- }
- if (!isUserSetupComplete()) {
- // Global media key handling can have the side-effect of starting new
- // activities which is undesirable while setup is in progress.
- Slog.i(TAG, "Not dispatching media key event because user "
- + "setup is in progress.");
- return;
- }
-
- synchronized (mLock) {
- boolean isGlobalPriorityActive = isGlobalPriorityActiveLocked();
- if (isGlobalPriorityActive && uid != Process.SYSTEM_UID) {
- // Prevent dispatching key event through reflection while the global
- // priority session is active.
- Slog.i(TAG, "Only the system can dispatch media key event "
- + "to the global priority session.");
- return;
- }
- if (!isGlobalPriorityActive) {
- if (mCurrentFullUserRecord.mOnMediaKeyListener != null) {
- if (DEBUG_KEY_EVENT) {
- Log.d(TAG, "Send " + keyEvent + " to the media key listener");
- }
- try {
- mCurrentFullUserRecord.mOnMediaKeyListener.onMediaKey(keyEvent,
- new MediaKeyListenerResultReceiver(packageName, pid, uid,
- asSystemService, keyEvent, needWakeLock));
- return;
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to send " + keyEvent
- + " to the media key listener");
- }
- }
- }
- if (!isGlobalPriorityActive && isVoiceKey(keyEvent.getKeyCode())) {
- handleVoiceKeyEventLocked(packageName, pid, uid, asSystemService, keyEvent,
- needWakeLock);
- } else {
- dispatchMediaKeyEventLocked(packageName, pid, uid, asSystemService,
- keyEvent, needWakeLock);
- }
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public void setCallback(ICallback callback) {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- if (!UserHandle.isSameApp(uid, Process.BLUETOOTH_UID)) {
- throw new SecurityException("Only Bluetooth service processes can set"
- + " Callback");
- }
- synchronized (mLock) {
- int userId = UserHandle.getUserId(uid);
- FullUserRecord user = getFullUserRecordLocked(userId);
- if (user == null || user.mFullUserId != userId) {
- Log.w(TAG, "Only the full user can set the callback"
- + ", userId=" + userId);
- return;
- }
- user.mCallback = callback;
- Log.d(TAG, "The callback " + user.mCallback
- + " is set by " + getCallingPackageName(uid));
- if (user.mCallback == null) {
- return;
- }
- try {
- user.mCallback.asBinder().linkToDeath(
- new IBinder.DeathRecipient() {
- @Override
- public void binderDied() {
- synchronized (mLock) {
- user.mCallback = null;
- }
- }
- }, 0);
- user.pushAddressedPlayerChangedLocked();
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to set callback", e);
- user.mCallback = null;
- }
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public void setOnVolumeKeyLongPressListener(IOnVolumeKeyLongPressListener listener) {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- // Enforce SET_VOLUME_KEY_LONG_PRESS_LISTENER permission.
- if (getContext().checkPermission(
- android.Manifest.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER, pid, uid)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Must hold the SET_VOLUME_KEY_LONG_PRESS_LISTENER" +
- " permission.");
- }
-
- synchronized (mLock) {
- int userId = UserHandle.getUserId(uid);
- FullUserRecord user = getFullUserRecordLocked(userId);
- if (user == null || user.mFullUserId != userId) {
- Log.w(TAG, "Only the full user can set the volume key long-press listener"
- + ", userId=" + userId);
- return;
- }
- if (user.mOnVolumeKeyLongPressListener != null &&
- user.mOnVolumeKeyLongPressListenerUid != uid) {
- Log.w(TAG, "The volume key long-press listener cannot be reset"
- + " by another app , mOnVolumeKeyLongPressListener="
- + user.mOnVolumeKeyLongPressListenerUid
- + ", uid=" + uid);
- return;
- }
-
- user.mOnVolumeKeyLongPressListener = listener;
- user.mOnVolumeKeyLongPressListenerUid = uid;
-
- Log.d(TAG, "The volume key long-press listener "
- + listener + " is set by " + getCallingPackageName(uid));
-
- if (user.mOnVolumeKeyLongPressListener != null) {
- try {
- user.mOnVolumeKeyLongPressListener.asBinder().linkToDeath(
- new IBinder.DeathRecipient() {
- @Override
- public void binderDied() {
- synchronized (mLock) {
- user.mOnVolumeKeyLongPressListener = null;
- }
- }
- }, 0);
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to set death recipient "
- + user.mOnVolumeKeyLongPressListener);
- user.mOnVolumeKeyLongPressListener = null;
- }
- }
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public void setOnMediaKeyListener(IOnMediaKeyListener listener) {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- // Enforce SET_MEDIA_KEY_LISTENER permission.
- if (getContext().checkPermission(
- android.Manifest.permission.SET_MEDIA_KEY_LISTENER, pid, uid)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Must hold the SET_MEDIA_KEY_LISTENER" +
- " permission.");
- }
-
- synchronized (mLock) {
- int userId = UserHandle.getUserId(uid);
- FullUserRecord user = getFullUserRecordLocked(userId);
- if (user == null || user.mFullUserId != userId) {
- Log.w(TAG, "Only the full user can set the media key listener"
- + ", userId=" + userId);
- return;
- }
- if (user.mOnMediaKeyListener != null && user.mOnMediaKeyListenerUid != uid) {
- Log.w(TAG, "The media key listener cannot be reset by another app. "
- + ", mOnMediaKeyListenerUid=" + user.mOnMediaKeyListenerUid
- + ", uid=" + uid);
- return;
- }
-
- user.mOnMediaKeyListener = listener;
- user.mOnMediaKeyListenerUid = uid;
-
- Log.d(TAG, "The media key listener " + user.mOnMediaKeyListener
- + " is set by " + getCallingPackageName(uid));
-
- if (user.mOnMediaKeyListener != null) {
- try {
- user.mOnMediaKeyListener.asBinder().linkToDeath(
- new IBinder.DeathRecipient() {
- @Override
- public void binderDied() {
- synchronized (mLock) {
- user.mOnMediaKeyListener = null;
- }
- }
- }, 0);
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to set death recipient " + user.mOnMediaKeyListener);
- user.mOnMediaKeyListener = null;
- }
- }
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- /**
- * Handles the dispatching of the volume button events to one of the
- * registered listeners. If there's a volume key long-press listener and
- * there's no active global priority session, long-pressess will be sent to the
- * long-press listener instead of adjusting volume.
- *
- * @param packageName The caller's package name, obtained by Context#getPackageName()
- * @param opPackageName The caller's op package name, obtained by Context#getOpPackageName()
- * @param asSystemService {@code true} if the event sent to the session as if it was come
- * from the system service instead of the app process. This helps sessions to
- * distinguish between the key injection by the app and key events from the
- * hardware devices. Should be used only when the volume key events aren't handled
- * by foreground activity. {@code false} otherwise to tell session about the real
- * caller.
- * @param keyEvent a non-null KeyEvent whose key code is one of the
- * {@link KeyEvent#KEYCODE_VOLUME_UP},
- * {@link KeyEvent#KEYCODE_VOLUME_DOWN},
- * or {@link KeyEvent#KEYCODE_VOLUME_MUTE}.
- * @param stream stream type to adjust volume.
- * @param musicOnly true if both UI nor haptic feedback aren't needed when adjust volume.
- */
- @Override
- public void dispatchVolumeKeyEvent(String packageName, String opPackageName,
- boolean asSystemService, KeyEvent keyEvent, int stream, boolean musicOnly) {
- if (keyEvent == null ||
- (keyEvent.getKeyCode() != KeyEvent.KEYCODE_VOLUME_UP
- && keyEvent.getKeyCode() != KeyEvent.KEYCODE_VOLUME_DOWN
- && keyEvent.getKeyCode() != KeyEvent.KEYCODE_VOLUME_MUTE)) {
- Log.w(TAG, "Attempted to dispatch null or non-volume key event.");
- return;
- }
-
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
-
- if (DEBUG_KEY_EVENT) {
- Log.d(TAG, "dispatchVolumeKeyEvent, pkg=" + packageName + ", pid=" + pid + ", uid="
- + uid + ", asSystem=" + asSystemService + ", event=" + keyEvent);
- }
-
- try {
- synchronized (mLock) {
- if (isGlobalPriorityActiveLocked()
- || mCurrentFullUserRecord.mOnVolumeKeyLongPressListener == null) {
- dispatchVolumeKeyEventLocked(packageName, opPackageName, pid, uid,
- asSystemService, keyEvent, stream, musicOnly);
- } else {
- // TODO: Consider the case when both volume up and down keys are pressed
- // at the same time.
- if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
- if (keyEvent.getRepeatCount() == 0) {
- // Keeps the copy of the KeyEvent because it can be reused.
- mCurrentFullUserRecord.mInitialDownVolumeKeyEvent =
- KeyEvent.obtain(keyEvent);
- mCurrentFullUserRecord.mInitialDownVolumeStream = stream;
- mCurrentFullUserRecord.mInitialDownMusicOnly = musicOnly;
- mHandler.sendMessageDelayed(
- mHandler.obtainMessage(
- MessageHandler.MSG_VOLUME_INITIAL_DOWN,
- mCurrentFullUserRecord.mFullUserId, 0),
- mLongPressTimeout);
- }
- if (keyEvent.getRepeatCount() > 0 || keyEvent.isLongPress()) {
- mHandler.removeMessages(MessageHandler.MSG_VOLUME_INITIAL_DOWN);
- if (mCurrentFullUserRecord.mInitialDownVolumeKeyEvent != null) {
- dispatchVolumeKeyLongPressLocked(
- mCurrentFullUserRecord.mInitialDownVolumeKeyEvent);
- // Mark that the key is already handled.
- mCurrentFullUserRecord.mInitialDownVolumeKeyEvent = null;
- }
- dispatchVolumeKeyLongPressLocked(keyEvent);
- }
- } else { // if up
- mHandler.removeMessages(MessageHandler.MSG_VOLUME_INITIAL_DOWN);
- if (mCurrentFullUserRecord.mInitialDownVolumeKeyEvent != null
- && mCurrentFullUserRecord.mInitialDownVolumeKeyEvent
- .getDownTime() == keyEvent.getDownTime()) {
- // Short-press. Should change volume.
- dispatchVolumeKeyEventLocked(packageName, opPackageName, pid, uid,
- asSystemService,
- mCurrentFullUserRecord.mInitialDownVolumeKeyEvent,
- mCurrentFullUserRecord.mInitialDownVolumeStream,
- mCurrentFullUserRecord.mInitialDownMusicOnly);
- dispatchVolumeKeyEventLocked(packageName, opPackageName, pid, uid,
- asSystemService, keyEvent, stream, musicOnly);
- } else {
- dispatchVolumeKeyLongPressLocked(keyEvent);
- }
- }
- }
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- private void dispatchVolumeKeyEventLocked(String packageName, String opPackageName, int pid,
- int uid, boolean asSystemService, KeyEvent keyEvent, int stream,
- boolean musicOnly) {
- boolean down = keyEvent.getAction() == KeyEvent.ACTION_DOWN;
- boolean up = keyEvent.getAction() == KeyEvent.ACTION_UP;
- int direction = 0;
- boolean isMute = false;
- switch (keyEvent.getKeyCode()) {
- case KeyEvent.KEYCODE_VOLUME_UP:
- direction = AudioManager.ADJUST_RAISE;
- break;
- case KeyEvent.KEYCODE_VOLUME_DOWN:
- direction = AudioManager.ADJUST_LOWER;
- break;
- case KeyEvent.KEYCODE_VOLUME_MUTE:
- isMute = true;
- break;
- }
- if (down || up) {
- int flags = AudioManager.FLAG_FROM_KEY;
- if (musicOnly) {
- // This flag is used when the screen is off to only affect active media.
- flags |= AudioManager.FLAG_ACTIVE_MEDIA_ONLY;
- } else {
- // These flags are consistent with the home screen
- if (up) {
- flags |= AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_VIBRATE;
- } else {
- flags |= AudioManager.FLAG_SHOW_UI | AudioManager.FLAG_VIBRATE;
- }
- }
- if (direction != 0) {
- // If this is action up we want to send a beep for non-music events
- if (up) {
- direction = 0;
- }
- dispatchAdjustVolumeLocked(packageName, opPackageName, pid, uid,
- asSystemService, stream, direction, flags);
- } else if (isMute) {
- if (down && keyEvent.getRepeatCount() == 0) {
- dispatchAdjustVolumeLocked(packageName, opPackageName, pid, uid,
- asSystemService, stream, AudioManager.ADJUST_TOGGLE_MUTE, flags);
- }
- }
- }
- }
-
- @Override
- public void dispatchAdjustVolume(String packageName, String opPackageName,
- int suggestedStream, int delta, int flags) {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- dispatchAdjustVolumeLocked(packageName, opPackageName, pid, uid, false,
- suggestedStream, delta, flags);
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public void setRemoteVolumeController(IRemoteVolumeController rvc) {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- enforceSystemUiPermission("listen for volume changes", pid, uid);
- mRvc = rvc;
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
- public boolean isGlobalPriorityActive() {
- synchronized (mLock) {
- return isGlobalPriorityActiveLocked();
- }
- }
-
- @Override
- public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
- if (!DumpUtils.checkDumpPermission(getContext(), TAG, pw)) return;
-
- pw.println("MEDIA SESSION SERVICE (dumpsys media_session)");
- pw.println();
-
- synchronized (mLock) {
- pw.println(mSessionsListeners.size() + " sessions listeners.");
- pw.println("Global priority session is " + mGlobalPrioritySession);
- if (mGlobalPrioritySession != null) {
- mGlobalPrioritySession.dump(pw, " ");
- }
- pw.println("User Records:");
- int count = mUserRecords.size();
- for (int i = 0; i < count; i++) {
- mUserRecords.valueAt(i).dumpLocked(pw, "");
- }
- mAudioPlayerStateMonitor.dump(getContext(), pw, "");
- }
- }
-
- /**
- * Returns if the controller's package is trusted (i.e. has either MEDIA_CONTENT_CONTROL
- * permission or an enabled notification listener)
- *
- * @param controllerPackageName package name of the controller app
- * @param controllerPid pid of the controller app
- * @param controllerUid uid of the controller app
- */
- @Override
- public boolean isTrusted(String controllerPackageName, int controllerPid, int controllerUid)
- throws RemoteException {
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- // Don't perform sanity check between controllerPackageName and controllerUid.
- // When an (activity|service) runs on the another apps process by specifying
- // android:process in the AndroidManifest.xml, then PID and UID would have the
- // running process' information instead of the (activity|service) that has created
- // MediaController.
- // Note that we can use Context#getOpPackageName() instead of
- // Context#getPackageName() for getting package name that matches with the PID/UID,
- // but it doesn't tell which package has created the MediaController, so useless.
- return hasMediaControlPermission(UserHandle.getUserId(uid), controllerPackageName,
- controllerPid, controllerUid);
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- // For MediaSession
- private int verifySessionsRequest(ComponentName componentName, int userId, final int pid,
- final int uid) {
- String packageName = null;
- if (componentName != null) {
- // If they gave us a component name verify they own the
- // package
- packageName = componentName.getPackageName();
- enforcePackageName(packageName, uid);
- }
- // Check that they can make calls on behalf of the user and
- // get the final user id
- int resolvedUserId = ActivityManager.handleIncomingUser(pid, uid, userId,
- true /* allowAll */, true /* requireFull */, "getSessions", packageName);
- // Check if they have the permissions or their component is
- // enabled for the user they're calling from.
- enforceMediaPermissions(componentName, pid, uid, resolvedUserId);
- return resolvedUserId;
- }
-
- private boolean hasMediaControlPermission(int resolvedUserId, String packageName,
- int pid, int uid) throws RemoteException {
- // Allow API calls from the System UI
- if (isCurrentVolumeController(pid, uid)) {
- return true;
- }
-
- // Check if it's system server or has MEDIA_CONTENT_CONTROL.
- // Note that system server doesn't have MEDIA_CONTENT_CONTROL, so we need extra
- // check here.
- if (uid == Process.SYSTEM_UID || getContext().checkPermission(
- android.Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid)
- == PackageManager.PERMISSION_GRANTED) {
- return true;
- } else if (DEBUG) {
- Log.d(TAG, packageName + " (uid=" + uid + ") hasn't granted MEDIA_CONTENT_CONTROL");
- }
-
- // You may not access another user's content as an enabled listener.
- final int userId = UserHandle.getUserId(uid);
- if (resolvedUserId != userId) {
- return false;
- }
-
- // TODO(jaewan): (Post-P) Propose NotificationManager#hasEnabledNotificationListener(
- // String pkgName) to notification team for optimization
- final List<ComponentName> enabledNotificationListeners =
- mNotificationManager.getEnabledNotificationListeners(userId);
- if (enabledNotificationListeners != null) {
- for (int i = 0; i < enabledNotificationListeners.size(); i++) {
- if (TextUtils.equals(packageName,
- enabledNotificationListeners.get(i).getPackageName())) {
- return true;
- }
- }
- }
- if (DEBUG) {
- Log.d(TAG, packageName + " (uid=" + uid + ") doesn't have an enabled "
- + "notification listener");
- }
- return false;
- }
-
- private void dispatchAdjustVolumeLocked(String packageName, String opPackageName, int pid,
- int uid, boolean asSystemService, int suggestedStream, int direction, int flags) {
- MediaSessionRecord session = isGlobalPriorityActiveLocked() ? mGlobalPrioritySession
- : mCurrentFullUserRecord.mPriorityStack.getDefaultVolumeSession();
-
- boolean preferSuggestedStream = false;
- if (isValidLocalStreamType(suggestedStream)
- && AudioSystem.isStreamActive(suggestedStream, 0)) {
- preferSuggestedStream = true;
- }
- if (DEBUG_KEY_EVENT) {
- Log.d(TAG, "Adjusting " + session + " by " + direction + ". flags="
- + flags + ", suggestedStream=" + suggestedStream
- + ", preferSuggestedStream=" + preferSuggestedStream);
- }
- if (session == null || preferSuggestedStream) {
- if ((flags & AudioManager.FLAG_ACTIVE_MEDIA_ONLY) != 0
- && !AudioSystem.isStreamActive(AudioManager.STREAM_MUSIC, 0)) {
- if (DEBUG) {
- Log.d(TAG, "No active session to adjust, skipping media only volume event");
- }
- return;
- }
-
- // Execute mAudioService.adjustSuggestedStreamVolume() on
- // handler thread of MediaSessionService.
- // This will release the MediaSessionService.mLock sooner and avoid
- // a potential deadlock between MediaSessionService.mLock and
- // ActivityManagerService lock.
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- final String callingOpPackageName;
- final int callingUid;
- if (asSystemService) {
- callingOpPackageName = getContext().getOpPackageName();
- callingUid = Process.myUid();
- } else {
- callingOpPackageName = opPackageName;
- callingUid = uid;
- }
- try {
- mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(suggestedStream,
- direction, flags, callingOpPackageName, callingUid);
- } catch (SecurityException | IllegalArgumentException e) {
- Log.e(TAG, "Cannot adjust volume: direction=" + direction
- + ", suggestedStream=" + suggestedStream + ", flags=" + flags
- + ", packageName=" + packageName + ", uid=" + uid
- + ", asSystemService=" + asSystemService, e);
- }
- }
- });
- } else {
- session.adjustVolume(packageName, opPackageName, pid, uid, null, asSystemService,
- direction, flags, true);
- }
- }
-
- private void handleVoiceKeyEventLocked(String packageName, int pid, int uid,
- boolean asSystemService, KeyEvent keyEvent, boolean needWakeLock) {
- int action = keyEvent.getAction();
- boolean isLongPress = (keyEvent.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0;
- if (action == KeyEvent.ACTION_DOWN) {
- if (keyEvent.getRepeatCount() == 0) {
- mVoiceButtonDown = true;
- mVoiceButtonHandled = false;
- } else if (mVoiceButtonDown && !mVoiceButtonHandled && isLongPress) {
- mVoiceButtonHandled = true;
- startVoiceInput(needWakeLock);
- }
- } else if (action == KeyEvent.ACTION_UP) {
- if (mVoiceButtonDown) {
- mVoiceButtonDown = false;
- if (!mVoiceButtonHandled && !keyEvent.isCanceled()) {
- // Resend the down then send this event through
- KeyEvent downEvent = KeyEvent.changeAction(keyEvent, KeyEvent.ACTION_DOWN);
- dispatchMediaKeyEventLocked(packageName, pid, uid, asSystemService,
- downEvent, needWakeLock);
- dispatchMediaKeyEventLocked(packageName, pid, uid, asSystemService,
- keyEvent, needWakeLock);
- }
- }
- }
- }
-
- private void dispatchMediaKeyEventLocked(String packageName, int pid, int uid,
- boolean asSystemService, KeyEvent keyEvent, boolean needWakeLock) {
- MediaSessionRecord session = mCurrentFullUserRecord.getMediaButtonSessionLocked();
- if (session != null) {
- if (DEBUG_KEY_EVENT) {
- Log.d(TAG, "Sending " + keyEvent + " to " + session);
- }
- if (needWakeLock) {
- mKeyEventReceiver.aquireWakeLockLocked();
- }
- // If we don't need a wakelock use -1 as the id so we won't release it later.
- session.sendMediaButton(packageName, pid, uid, asSystemService, keyEvent,
- needWakeLock ? mKeyEventReceiver.mLastTimeoutId : -1,
- mKeyEventReceiver);
- if (mCurrentFullUserRecord.mCallback != null) {
- try {
- mCurrentFullUserRecord.mCallback.onMediaKeyEventDispatchedToMediaSession(
- keyEvent, new MediaSession.Token(session.getControllerBinder()));
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to send callback", e);
- }
- }
- } else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null
- || mCurrentFullUserRecord.mRestoredMediaButtonReceiver != null) {
- if (needWakeLock) {
- mKeyEventReceiver.aquireWakeLockLocked();
- }
- Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
- mediaButtonIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- mediaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
- // TODO: Find a way to also send PID/UID in secure way.
- String callerPackageName =
- (asSystemService) ? getContext().getPackageName() : packageName;
- mediaButtonIntent.putExtra(Intent.EXTRA_PACKAGE_NAME, callerPackageName);
- try {
- if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) {
- PendingIntent receiver = mCurrentFullUserRecord.mLastMediaButtonReceiver;
- if (DEBUG_KEY_EVENT) {
- Log.d(TAG, "Sending " + keyEvent
- + " to the last known PendingIntent " + receiver);
- }
- receiver.send(getContext(),
- needWakeLock ? mKeyEventReceiver.mLastTimeoutId : -1,
- mediaButtonIntent, mKeyEventReceiver, mHandler);
- if (mCurrentFullUserRecord.mCallback != null) {
- ComponentName componentName = mCurrentFullUserRecord
- .mLastMediaButtonReceiver.getIntent().getComponent();
- if (componentName != null) {
- mCurrentFullUserRecord.mCallback
- .onMediaKeyEventDispatchedToMediaButtonReceiver(
- keyEvent, componentName);
- }
- }
- } else {
- ComponentName receiver =
- mCurrentFullUserRecord.mRestoredMediaButtonReceiver;
- int componentType = mCurrentFullUserRecord
- .mRestoredMediaButtonReceiverComponentType;
- UserHandle userHandle = UserHandle.of(mCurrentFullUserRecord
- .mRestoredMediaButtonReceiverUserId);
- if (DEBUG_KEY_EVENT) {
- Log.d(TAG, "Sending " + keyEvent + " to the restored intent "
- + receiver + ", type=" + componentType);
- }
- mediaButtonIntent.setComponent(receiver);
- try {
- switch (componentType) {
- case FullUserRecord.COMPONENT_TYPE_ACTIVITY:
- getContext().startActivityAsUser(mediaButtonIntent, userHandle);
- break;
- case FullUserRecord.COMPONENT_TYPE_SERVICE:
- getContext().startForegroundServiceAsUser(mediaButtonIntent,
- userHandle);
- break;
- default:
- // Legacy behavior for other cases.
- getContext().sendBroadcastAsUser(mediaButtonIntent, userHandle);
- }
- } catch (Exception e) {
- Log.w(TAG, "Error sending media button to the restored intent "
- + receiver + ", type=" + componentType, e);
- }
- if (mCurrentFullUserRecord.mCallback != null) {
- mCurrentFullUserRecord.mCallback
- .onMediaKeyEventDispatchedToMediaButtonReceiver(
- keyEvent, receiver);
- }
- }
- } catch (CanceledException e) {
- Log.i(TAG, "Error sending key event to media button receiver "
- + mCurrentFullUserRecord.mLastMediaButtonReceiver, e);
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to send callback", e);
- }
- }
- }
-
- private void startVoiceInput(boolean needWakeLock) {
- Intent voiceIntent = null;
- // select which type of search to launch:
- // - screen on and device unlocked: action is ACTION_WEB_SEARCH
- // - device locked or screen off: action is
- // ACTION_VOICE_SEARCH_HANDS_FREE
- // with EXTRA_SECURE set to true if the device is securely locked
- PowerManager pm = (PowerManager) getContext().getSystemService(Context.POWER_SERVICE);
- boolean isLocked = mKeyguardManager != null && mKeyguardManager.isKeyguardLocked();
- if (!isLocked && pm.isScreenOn()) {
- voiceIntent = new Intent(android.speech.RecognizerIntent.ACTION_WEB_SEARCH);
- Log.i(TAG, "voice-based interactions: about to use ACTION_WEB_SEARCH");
- } else {
- voiceIntent = new Intent(RecognizerIntent.ACTION_VOICE_SEARCH_HANDS_FREE);
- voiceIntent.putExtra(RecognizerIntent.EXTRA_SECURE,
- isLocked && mKeyguardManager.isKeyguardSecure());
- Log.i(TAG, "voice-based interactions: about to use ACTION_VOICE_SEARCH_HANDS_FREE");
- }
- // start the search activity
- if (needWakeLock) {
- mMediaEventWakeLock.acquire();
- }
- try {
- if (voiceIntent != null) {
- voiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
- if (DEBUG) Log.d(TAG, "voiceIntent: " + voiceIntent);
- getContext().startActivityAsUser(voiceIntent, UserHandle.CURRENT);
- }
- } catch (ActivityNotFoundException e) {
- Log.w(TAG, "No activity for search: " + e);
- } finally {
- if (needWakeLock) {
- mMediaEventWakeLock.release();
- }
- }
- }
-
- private boolean isVoiceKey(int keyCode) {
- return keyCode == KeyEvent.KEYCODE_HEADSETHOOK
- || (!mHasFeatureLeanback && keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);
- }
-
- private boolean isUserSetupComplete() {
- return Settings.Secure.getIntForUser(getContext().getContentResolver(),
- Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0;
- }
-
- // we only handle public stream types, which are 0-5
- private boolean isValidLocalStreamType(int streamType) {
- return streamType >= AudioManager.STREAM_VOICE_CALL
- && streamType <= AudioManager.STREAM_NOTIFICATION;
- }
-
- private class MediaKeyListenerResultReceiver extends ResultReceiver implements Runnable {
- private final String mPackageName;
- private final int mPid;
- private final int mUid;
- private final boolean mAsSystemService;
- private final KeyEvent mKeyEvent;
- private final boolean mNeedWakeLock;
- private boolean mHandled;
-
- private MediaKeyListenerResultReceiver(String packageName, int pid, int uid,
- boolean asSystemService, KeyEvent keyEvent, boolean needWakeLock) {
- super(mHandler);
- mHandler.postDelayed(this, MEDIA_KEY_LISTENER_TIMEOUT);
- mPackageName = packageName;
- mPid = pid;
- mUid = uid;
- mAsSystemService = asSystemService;
- mKeyEvent = keyEvent;
- mNeedWakeLock = needWakeLock;
- }
-
- @Override
- public void run() {
- Log.d(TAG, "The media key listener is timed-out for " + mKeyEvent);
- dispatchMediaKeyEvent();
- }
-
- @Override
- protected void onReceiveResult(int resultCode, Bundle resultData) {
- if (resultCode == MediaSessionManager.RESULT_MEDIA_KEY_HANDLED) {
- mHandled = true;
- mHandler.removeCallbacks(this);
- return;
- }
- dispatchMediaKeyEvent();
- }
-
- private void dispatchMediaKeyEvent() {
- if (mHandled) {
- return;
- }
- mHandled = true;
- mHandler.removeCallbacks(this);
- synchronized (mLock) {
- if (!isGlobalPriorityActiveLocked()
- && isVoiceKey(mKeyEvent.getKeyCode())) {
- handleVoiceKeyEventLocked(mPackageName, mPid, mUid, mAsSystemService,
- mKeyEvent, mNeedWakeLock);
- } else {
- dispatchMediaKeyEventLocked(mPackageName, mPid, mUid, mAsSystemService,
- mKeyEvent, mNeedWakeLock);
- }
- }
- }
- }
-
- private KeyEventWakeLockReceiver mKeyEventReceiver = new KeyEventWakeLockReceiver(mHandler);
-
- class KeyEventWakeLockReceiver extends ResultReceiver implements Runnable,
- PendingIntent.OnFinished {
- private final Handler mHandler;
- private int mRefCount = 0;
- private int mLastTimeoutId = 0;
-
- public KeyEventWakeLockReceiver(Handler handler) {
- super(handler);
- mHandler = handler;
- }
-
- public void onTimeout() {
- synchronized (mLock) {
- if (mRefCount == 0) {
- // We've already released it, so just return
- return;
- }
- mLastTimeoutId++;
- mRefCount = 0;
- releaseWakeLockLocked();
- }
- }
-
- public void aquireWakeLockLocked() {
- if (mRefCount == 0) {
- mMediaEventWakeLock.acquire();
- }
- mRefCount++;
- mHandler.removeCallbacks(this);
- mHandler.postDelayed(this, WAKELOCK_TIMEOUT);
-
- }
-
- @Override
- public void run() {
- onTimeout();
- }
-
- @Override
- protected void onReceiveResult(int resultCode, Bundle resultData) {
- if (resultCode < mLastTimeoutId) {
- // Ignore results from calls that were before the last
- // timeout, just in case.
- return;
- } else {
- synchronized (mLock) {
- if (mRefCount > 0) {
- mRefCount--;
- if (mRefCount == 0) {
- releaseWakeLockLocked();
- }
- }
- }
- }
- }
-
- private void releaseWakeLockLocked() {
- mMediaEventWakeLock.release();
- mHandler.removeCallbacks(this);
- }
-
- @Override
- public void onSendFinished(PendingIntent pendingIntent, Intent intent, int resultCode,
- String resultData, Bundle resultExtras) {
- onReceiveResult(resultCode, null);
- }
- };
-
- BroadcastReceiver mKeyEventDone = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent == null) {
- return;
- }
- Bundle extras = intent.getExtras();
- if (extras == null) {
- return;
- }
- synchronized (mLock) {
- if (extras.containsKey(EXTRA_WAKELOCK_ACQUIRED)
- && mMediaEventWakeLock.isHeld()) {
- mMediaEventWakeLock.release();
- }
- }
- }
- };
- }
-
- final class MessageHandler extends Handler {
- private static final int MSG_SESSIONS_CHANGED = 1;
- private static final int MSG_VOLUME_INITIAL_DOWN = 2;
- private final SparseArray<Integer> mIntegerCache = new SparseArray<>();
-
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_SESSIONS_CHANGED:
- pushSessionsChanged((int) msg.obj);
- break;
- case MSG_VOLUME_INITIAL_DOWN:
- synchronized (mLock) {
- FullUserRecord user = mUserRecords.get((int) msg.arg1);
- if (user != null && user.mInitialDownVolumeKeyEvent != null) {
- dispatchVolumeKeyLongPressLocked(user.mInitialDownVolumeKeyEvent);
- // Mark that the key is already handled.
- user.mInitialDownVolumeKeyEvent = null;
- }
- }
- break;
- }
- }
-
- public void postSessionsChanged(int userId) {
- // Use object instead of the arguments when posting message to remove pending requests.
- Integer userIdInteger = mIntegerCache.get(userId);
- if (userIdInteger == null) {
- userIdInteger = Integer.valueOf(userId);
- mIntegerCache.put(userId, userIdInteger);
- }
- removeMessages(MSG_SESSIONS_CHANGED, userIdInteger);
- obtainMessage(MSG_SESSIONS_CHANGED, userIdInteger).sendToTarget();
- }
- }
-
- private class Controller2Callback extends MediaController2.ControllerCallback {
- private final Session2Token mToken;
-
- Controller2Callback(Session2Token token) {
- mToken = token;
- }
-
- @Override
- public void onConnected(MediaController2 controller, Session2CommandGroup allowedCommands) {
- synchronized (mLock) {
- int userId = UserHandle.getUserId(mToken.getUid());
- mSession2TokensPerUser.get(userId).add(mToken);
- pushSession2TokensChangedLocked(userId);
- }
- }
-
- @Override
- public void onDisconnected(MediaController2 controller) {
- synchronized (mLock) {
- int userId = UserHandle.getUserId(mToken.getUid());
- mSession2TokensPerUser.get(userId).remove(mToken);
- pushSession2TokensChangedLocked(userId);
- }
- }
+ abstract static class ServiceImpl {
+ public abstract void onStart();
+ public abstract void notifyRemoteVolumeChanged(int flags, MediaSessionRecord session);
+ public abstract void onSessionPlaystateChanged(
+ MediaSessionRecord record, int oldState, int newState);
+ public abstract void onSessionPlaybackTypeChanged(MediaSessionRecord record);
+ public abstract void onStartUser(int userId);
+ public abstract void onSwitchUser(int userId);
+ public abstract void monitor();
+ public abstract void onMediaButtonReceiverChanged(MediaSessionRecord record);
+ protected abstract void enforcePhoneStatePermission(int pid, int uid);
+ abstract void updateSession(MediaSessionRecord record);
+ abstract void setGlobalPrioritySession(MediaSessionRecord record);
+ abstract List<Session2Token> getSession2TokensLocked(int userId);
+ abstract void onStopUser(int userId);
+ abstract void sessionDied(MediaSessionRecord session);
+ abstract void destroySession(MediaSessionRecord session);
+ abstract void pushSession2TokensChangedLocked(int userId);
+ abstract Context getContext();
+ abstract IBinder getServiceBinder();
}
}
diff --git a/services/core/java/com/android/server/media/MediaSessionServiceImpl.java b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java
new file mode 100644
index 0000000..f374c6d
--- /dev/null
+++ b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java
@@ -0,0 +1,2142 @@
+/*
+ * Copyright 2019 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.server.media;
+
+import static android.os.UserHandle.USER_ALL;
+
+import android.annotation.Nullable;
+import android.app.ActivityManager;
+import android.app.INotificationManager;
+import android.app.KeyguardManager;
+import android.app.PendingIntent;
+import android.app.PendingIntent.CanceledException;
+import android.content.ActivityNotFoundException;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.ServiceInfo;
+import android.content.pm.UserInfo;
+import android.database.ContentObserver;
+import android.media.AudioManager;
+import android.media.AudioManagerInternal;
+import android.media.AudioPlaybackConfiguration;
+import android.media.AudioSystem;
+import android.media.IAudioService;
+import android.media.IRemoteVolumeController;
+import android.media.MediaController2;
+import android.media.Session2CommandGroup;
+import android.media.Session2Token;
+import android.media.session.IActiveSessionsListener;
+import android.media.session.ICallback;
+import android.media.session.IOnMediaKeyListener;
+import android.media.session.IOnVolumeKeyLongPressListener;
+import android.media.session.ISession;
+import android.media.session.ISession2TokensListener;
+import android.media.session.ISessionManager;
+import android.media.session.MediaSession;
+import android.media.session.MediaSessionManager;
+import android.media.session.SessionCallbackLink;
+import android.net.Uri;
+import android.os.Binder;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerExecutor;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.PowerManager;
+import android.os.Process;
+import android.os.RemoteException;
+import android.os.ResultReceiver;
+import android.os.ServiceManager;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.speech.RecognizerIntent;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.Slog;
+import android.util.SparseArray;
+import android.util.SparseIntArray;
+import android.view.KeyEvent;
+import android.view.ViewConfiguration;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.DumpUtils;
+import com.android.server.LocalServices;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * System implementation of MediaSessionManager
+ */
+public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl {
+ private static final String TAG = "MediaSessionService";
+ static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+ // Leave log for key event always.
+ private static final boolean DEBUG_KEY_EVENT = true;
+
+ private static final int WAKELOCK_TIMEOUT = 5000;
+ private static final int MEDIA_KEY_LISTENER_TIMEOUT = 1000;
+
+ private final Context mContext;
+ private final SessionManagerImpl mSessionManagerImpl;
+ private final MessageHandler mHandler = new MessageHandler();
+ private final PowerManager.WakeLock mMediaEventWakeLock;
+ private final int mLongPressTimeout;
+ private final INotificationManager mNotificationManager;
+ private final Object mLock = new Object();
+ // Keeps the full user id for each user.
+ @GuardedBy("mLock")
+ private final SparseIntArray mFullUserIds = new SparseIntArray();
+ @GuardedBy("mLock")
+ private final SparseArray<FullUserRecord> mUserRecords = new SparseArray<FullUserRecord>();
+ @GuardedBy("mLock")
+ private final ArrayList<SessionsListenerRecord> mSessionsListeners =
+ new ArrayList<SessionsListenerRecord>();
+ // Map user id as index to list of Session2Tokens
+ // TODO: Keep session2 info in MediaSessionStack for prioritizing both session1 and session2 in
+ // one place.
+ @GuardedBy("mLock")
+ private final SparseArray<List<Session2Token>> mSession2TokensPerUser = new SparseArray<>();
+ @GuardedBy("mLock")
+ private final List<Session2TokensListenerRecord> mSession2TokensListenerRecords =
+ new ArrayList<>();
+
+ private KeyguardManager mKeyguardManager;
+ private IAudioService mAudioService;
+ private AudioManagerInternal mAudioManagerInternal;
+ private ActivityManager mActivityManager;
+ private ContentResolver mContentResolver;
+ private SettingsObserver mSettingsObserver;
+ private boolean mHasFeatureLeanback;
+
+ // The FullUserRecord of the current users. (i.e. The foreground user that isn't a profile)
+ // It's always not null after the MediaSessionService is started.
+ private FullUserRecord mCurrentFullUserRecord;
+ private MediaSessionRecord mGlobalPrioritySession;
+ private AudioPlayerStateMonitor mAudioPlayerStateMonitor;
+
+ // Used to notify system UI when remote volume was changed. TODO find a
+ // better way to handle this.
+ private IRemoteVolumeController mRvc;
+
+ public MediaSessionServiceImpl(Context context) {
+ mContext = context;
+ mSessionManagerImpl = new SessionManagerImpl();
+ PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+ mMediaEventWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "handleMediaEvent");
+ mLongPressTimeout = ViewConfiguration.getLongPressTimeout();
+ mNotificationManager = INotificationManager.Stub.asInterface(
+ ServiceManager.getService(Context.NOTIFICATION_SERVICE));
+ }
+
+ Context getContext() {
+ return mContext;
+ }
+
+ IBinder getServiceBinder() {
+ return mSessionManagerImpl;
+ }
+
+ @Override
+ public void onStart() {
+ mKeyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
+ mAudioService = getAudioService();
+ mAudioManagerInternal = LocalServices.getService(AudioManagerInternal.class);
+ mActivityManager =
+ (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
+ mAudioPlayerStateMonitor = AudioPlayerStateMonitor.getInstance();
+ mAudioPlayerStateMonitor.registerListener(
+ (config, isRemoved) -> {
+ if (isRemoved || !config.isActive() || config.getPlayerType()
+ == AudioPlaybackConfiguration.PLAYER_TYPE_JAM_SOUNDPOOL) {
+ return;
+ }
+ synchronized (mLock) {
+ FullUserRecord user = getFullUserRecordLocked(
+ UserHandle.getUserId(config.getClientUid()));
+ if (user != null) {
+ user.mPriorityStack.updateMediaButtonSessionIfNeeded();
+ }
+ }
+ }, null /* handler */);
+ mAudioPlayerStateMonitor.registerSelfIntoAudioServiceIfNeeded(mAudioService);
+ mContentResolver = mContext.getContentResolver();
+ mSettingsObserver = new SettingsObserver();
+ mSettingsObserver.observe();
+ mHasFeatureLeanback = mContext.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_LEANBACK);
+
+ updateUser();
+ }
+
+ private IAudioService getAudioService() {
+ IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE);
+ return IAudioService.Stub.asInterface(b);
+ }
+
+ private boolean isGlobalPriorityActiveLocked() {
+ return mGlobalPrioritySession != null && mGlobalPrioritySession.isActive();
+ }
+
+ @Override
+ public void updateSession(MediaSessionRecord record) {
+ synchronized (mLock) {
+ FullUserRecord user = getFullUserRecordLocked(record.getUserId());
+ if (user == null) {
+ Log.w(TAG, "Unknown session updated. Ignoring.");
+ return;
+ }
+ if ((record.getFlags() & MediaSession.FLAG_EXCLUSIVE_GLOBAL_PRIORITY) != 0) {
+ if (DEBUG_KEY_EVENT) {
+ Log.d(TAG, "Global priority session is updated, active=" + record.isActive());
+ }
+ user.pushAddressedPlayerChangedLocked();
+ } else {
+ if (!user.mPriorityStack.contains(record)) {
+ Log.w(TAG, "Unknown session updated. Ignoring.");
+ return;
+ }
+ user.mPriorityStack.onSessionStateChange(record);
+ }
+ mHandler.postSessionsChanged(record.getUserId());
+ }
+ }
+
+ @Override
+ public void setGlobalPrioritySession(MediaSessionRecord record) {
+ synchronized (mLock) {
+ FullUserRecord user = getFullUserRecordLocked(record.getUserId());
+ if (mGlobalPrioritySession != record) {
+ Log.d(TAG, "Global priority session is changed from " + mGlobalPrioritySession
+ + " to " + record);
+ mGlobalPrioritySession = record;
+ if (user != null && user.mPriorityStack.contains(record)) {
+ // Handle the global priority session separately.
+ // Otherwise, it can be the media button session regardless of the active state
+ // because it or other system components might have been the lastly played media
+ // app.
+ user.mPriorityStack.removeSession(record);
+ }
+ }
+ }
+ }
+
+ private List<MediaSessionRecord> getActiveSessionsLocked(int userId) {
+ List<MediaSessionRecord> records = new ArrayList<>();
+ if (userId == USER_ALL) {
+ int size = mUserRecords.size();
+ for (int i = 0; i < size; i++) {
+ records.addAll(mUserRecords.valueAt(i).mPriorityStack.getActiveSessions(userId));
+ }
+ } else {
+ FullUserRecord user = getFullUserRecordLocked(userId);
+ if (user == null) {
+ Log.w(TAG, "getSessions failed. Unknown user " + userId);
+ return records;
+ }
+ records.addAll(user.mPriorityStack.getActiveSessions(userId));
+ }
+
+ // Return global priority session at the first whenever it's asked.
+ if (isGlobalPriorityActiveLocked()
+ && (userId == USER_ALL || userId == mGlobalPrioritySession.getUserId())) {
+ records.add(0, mGlobalPrioritySession);
+ }
+ return records;
+ }
+
+ List<Session2Token> getSession2TokensLocked(int userId) {
+ List<Session2Token> list = new ArrayList<>();
+ if (userId == USER_ALL) {
+ for (int i = 0; i < mSession2TokensPerUser.size(); i++) {
+ list.addAll(mSession2TokensPerUser.valueAt(i));
+ }
+ } else {
+ list.addAll(mSession2TokensPerUser.get(userId));
+ }
+ return list;
+ }
+
+ /**
+ * Tells the system UI that volume has changed on an active remote session.
+ */
+ public void notifyRemoteVolumeChanged(int flags, MediaSessionRecord session) {
+ if (mRvc == null || !session.isActive()) {
+ return;
+ }
+ try {
+ mRvc.remoteVolumeChanged(session.getControllerBinder(), flags);
+ } catch (Exception e) {
+ Log.wtf(TAG, "Error sending volume change to system UI.", e);
+ }
+ }
+
+ @Override
+ public void onSessionPlaystateChanged(MediaSessionRecord record, int oldState, int newState) {
+ synchronized (mLock) {
+ FullUserRecord user = getFullUserRecordLocked(record.getUserId());
+ if (user == null || !user.mPriorityStack.contains(record)) {
+ Log.d(TAG, "Unknown session changed playback state. Ignoring.");
+ return;
+ }
+ user.mPriorityStack.onPlaystateChanged(record, oldState, newState);
+ }
+ }
+
+ @Override
+ public void onSessionPlaybackTypeChanged(MediaSessionRecord record) {
+ synchronized (mLock) {
+ FullUserRecord user = getFullUserRecordLocked(record.getUserId());
+ if (user == null || !user.mPriorityStack.contains(record)) {
+ Log.d(TAG, "Unknown session changed playback type. Ignoring.");
+ return;
+ }
+ pushRemoteVolumeUpdateLocked(record.getUserId());
+ }
+ }
+
+ @Override
+ public void onStartUser(int userId) {
+ if (DEBUG) Log.d(TAG, "onStartUser: " + userId);
+ updateUser();
+ }
+
+ @Override
+ public void onSwitchUser(int userId) {
+ if (DEBUG) Log.d(TAG, "onSwitchUser: " + userId);
+ updateUser();
+ }
+
+ // Called when the user with the userId is removed.
+ @Override
+ public void onStopUser(int userId) {
+ if (DEBUG) Log.d(TAG, "onStopUser: " + userId);
+ synchronized (mLock) {
+ // TODO: Also handle removing user in updateUser() because adding/switching user is
+ // handled in updateUser().
+ FullUserRecord user = getFullUserRecordLocked(userId);
+ if (user != null) {
+ if (user.mFullUserId == userId) {
+ user.destroySessionsForUserLocked(USER_ALL);
+ mUserRecords.remove(userId);
+ } else {
+ user.destroySessionsForUserLocked(userId);
+ }
+ }
+ mSession2TokensPerUser.remove(userId);
+ updateUser();
+ }
+ }
+
+ @Override
+ public void monitor() {
+ synchronized (mLock) {
+ // Check for deadlock
+ }
+ }
+
+ protected void enforcePhoneStatePermission(int pid, int uid) {
+ if (mContext.checkPermission(android.Manifest.permission.MODIFY_PHONE_STATE, pid, uid)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("Must hold the MODIFY_PHONE_STATE permission.");
+ }
+ }
+
+ void sessionDied(MediaSessionRecord session) {
+ synchronized (mLock) {
+ destroySessionLocked(session);
+ }
+ }
+
+ void destroySession(MediaSessionRecord session) {
+ synchronized (mLock) {
+ destroySessionLocked(session);
+ }
+ }
+
+ private void updateUser() {
+ synchronized (mLock) {
+ UserManager manager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+ mFullUserIds.clear();
+ List<UserInfo> allUsers = manager.getUsers();
+ if (allUsers != null) {
+ for (UserInfo userInfo : allUsers) {
+ if (userInfo.isManagedProfile()) {
+ mFullUserIds.put(userInfo.id, userInfo.profileGroupId);
+ } else {
+ mFullUserIds.put(userInfo.id, userInfo.id);
+ if (mUserRecords.get(userInfo.id) == null) {
+ mUserRecords.put(userInfo.id, new FullUserRecord(userInfo.id));
+ }
+ }
+ if (mSession2TokensPerUser.get(userInfo.id) == null) {
+ mSession2TokensPerUser.put(userInfo.id, new ArrayList<>());
+ }
+ }
+ }
+ // Ensure that the current full user exists.
+ int currentFullUserId = ActivityManager.getCurrentUser();
+ mCurrentFullUserRecord = mUserRecords.get(currentFullUserId);
+ if (mCurrentFullUserRecord == null) {
+ Log.w(TAG, "Cannot find FullUserInfo for the current user " + currentFullUserId);
+ mCurrentFullUserRecord = new FullUserRecord(currentFullUserId);
+ mUserRecords.put(currentFullUserId, mCurrentFullUserRecord);
+ if (mSession2TokensPerUser.get(currentFullUserId) == null) {
+ mSession2TokensPerUser.put(currentFullUserId, new ArrayList<>());
+ }
+ }
+ mFullUserIds.put(currentFullUserId, currentFullUserId);
+ }
+ }
+
+ private void updateActiveSessionListeners() {
+ synchronized (mLock) {
+ for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
+ SessionsListenerRecord listener = mSessionsListeners.get(i);
+ try {
+ enforceMediaPermissions(listener.componentName, listener.pid, listener.uid,
+ listener.userId);
+ } catch (SecurityException e) {
+ Log.i(TAG, "ActiveSessionsListener " + listener.componentName
+ + " is no longer authorized. Disconnecting.");
+ mSessionsListeners.remove(i);
+ try {
+ listener.listener
+ .onActiveSessionsChanged(new ArrayList<MediaSession.Token>());
+ } catch (Exception e1) {
+ // ignore
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * When a session is removed several things need to happen.
+ * 1. We need to remove it from the relevant user.
+ * 2. We need to remove it from the priority stack.
+ * 3. We need to remove it from all sessions.
+ * 4. If this is the system priority session we need to clear it.
+ * 5. We need to unlink to death from the cb binder
+ * 6. We need to tell the session to do any final cleanup (onDestroy)
+ */
+ private void destroySessionLocked(MediaSessionRecord session) {
+ if (DEBUG) {
+ Log.d(TAG, "Destroying " + session);
+ }
+ FullUserRecord user = getFullUserRecordLocked(session.getUserId());
+ if (mGlobalPrioritySession == session) {
+ mGlobalPrioritySession = null;
+ if (session.isActive() && user != null) {
+ user.pushAddressedPlayerChangedLocked();
+ }
+ } else {
+ if (user != null) {
+ user.mPriorityStack.removeSession(session);
+ }
+ }
+
+ try {
+ session.getCallback().getBinder().unlinkToDeath(session, 0);
+ } catch (Exception e) {
+ // ignore exceptions while destroying a session.
+ }
+ session.onDestroy();
+ mHandler.postSessionsChanged(session.getUserId());
+ }
+
+ private void enforcePackageName(String packageName, int uid) {
+ if (TextUtils.isEmpty(packageName)) {
+ throw new IllegalArgumentException("packageName may not be empty");
+ }
+ String[] packages = mContext.getPackageManager().getPackagesForUid(uid);
+ final int packageCount = packages.length;
+ for (int i = 0; i < packageCount; i++) {
+ if (packageName.equals(packages[i])) {
+ return;
+ }
+ }
+ throw new IllegalArgumentException("packageName is not owned by the calling process");
+ }
+
+ /**
+ * Checks a caller's authorization to register an IRemoteControlDisplay.
+ * Authorization is granted if one of the following is true:
+ * <ul>
+ * <li>the caller has android.Manifest.permission.MEDIA_CONTENT_CONTROL
+ * permission</li>
+ * <li>the caller's listener is one of the enabled notification listeners
+ * for the caller's user</li>
+ * </ul>
+ */
+ private void enforceMediaPermissions(ComponentName compName, int pid, int uid,
+ int resolvedUserId) {
+ if (isCurrentVolumeController(pid, uid)) return;
+ if (mContext
+ .checkPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid)
+ != PackageManager.PERMISSION_GRANTED
+ && !isEnabledNotificationListener(compName, UserHandle.getUserId(uid),
+ resolvedUserId)) {
+ throw new SecurityException("Missing permission to control media.");
+ }
+ }
+
+ private boolean isCurrentVolumeController(int pid, int uid) {
+ return mContext.checkPermission(android.Manifest.permission.STATUS_BAR_SERVICE,
+ pid, uid) == PackageManager.PERMISSION_GRANTED;
+ }
+
+ private void enforceSystemUiPermission(String action, int pid, int uid) {
+ if (!isCurrentVolumeController(pid, uid)) {
+ throw new SecurityException("Only system ui may " + action);
+ }
+ }
+
+ /**
+ * This checks if the component is an enabled notification listener for the
+ * specified user. Enabled components may only operate on behalf of the user
+ * they're running as.
+ *
+ * @param compName The component that is enabled.
+ * @param userId The user id of the caller.
+ * @param forUserId The user id they're making the request on behalf of.
+ * @return True if the component is enabled, false otherwise
+ */
+ private boolean isEnabledNotificationListener(ComponentName compName, int userId,
+ int forUserId) {
+ if (userId != forUserId) {
+ // You may not access another user's content as an enabled listener.
+ return false;
+ }
+ if (DEBUG) {
+ Log.d(TAG, "Checking if enabled notification listener " + compName);
+ }
+ if (compName != null) {
+ try {
+ return mNotificationManager.isNotificationListenerAccessGrantedForUser(
+ compName, userId);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Dead NotificationManager in isEnabledNotificationListener", e);
+ }
+ }
+ return false;
+ }
+
+ private MediaSessionRecord createSessionInternal(int callerPid, int callerUid, int userId,
+ String callerPackageName, SessionCallbackLink cb, String tag) throws RemoteException {
+ synchronized (mLock) {
+ return createSessionLocked(callerPid, callerUid, userId, callerPackageName, cb, tag);
+ }
+ }
+
+ /*
+ * When a session is created the following things need to happen.
+ * 1. Its callback binder needs a link to death
+ * 2. It needs to be added to all sessions.
+ * 3. It needs to be added to the priority stack.
+ * 4. It needs to be added to the relevant user record.
+ */
+ private MediaSessionRecord createSessionLocked(int callerPid, int callerUid, int userId,
+ String callerPackageName, SessionCallbackLink cb, String tag) {
+ FullUserRecord user = getFullUserRecordLocked(userId);
+ if (user == null) {
+ Log.wtf(TAG, "Request from invalid user: " + userId);
+ throw new RuntimeException("Session request from invalid user.");
+ }
+
+ final MediaSessionRecord session = new MediaSessionRecord(callerPid, callerUid, userId,
+ callerPackageName, cb, tag, this, mHandler.getLooper());
+ try {
+ cb.getBinder().linkToDeath(session, 0);
+ } catch (RemoteException e) {
+ throw new RuntimeException("Media Session owner died prematurely.", e);
+ }
+
+ user.mPriorityStack.addSession(session);
+ mHandler.postSessionsChanged(userId);
+
+ if (DEBUG) {
+ Log.d(TAG, "Created session for " + callerPackageName + " with tag " + tag);
+ }
+ return session;
+ }
+
+ private int findIndexOfSessionsListenerLocked(IActiveSessionsListener listener) {
+ for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
+ if (mSessionsListeners.get(i).listener.asBinder() == listener.asBinder()) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ private int findIndexOfSession2TokensListenerLocked(ISession2TokensListener listener) {
+ for (int i = mSession2TokensListenerRecords.size() - 1; i >= 0; i--) {
+ if (mSession2TokensListenerRecords.get(i).listener.asBinder() == listener.asBinder()) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+
+ private void pushSessionsChanged(int userId) {
+ synchronized (mLock) {
+ FullUserRecord user = getFullUserRecordLocked(userId);
+ if (user == null) {
+ Log.w(TAG, "pushSessionsChanged failed. No user with id=" + userId);
+ return;
+ }
+ List<MediaSessionRecord> records = getActiveSessionsLocked(userId);
+ int size = records.size();
+ ArrayList<MediaSession.Token> tokens = new ArrayList<MediaSession.Token>();
+ for (int i = 0; i < size; i++) {
+ tokens.add(new MediaSession.Token(records.get(i).getControllerBinder()));
+ }
+ pushRemoteVolumeUpdateLocked(userId);
+ for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
+ SessionsListenerRecord record = mSessionsListeners.get(i);
+ if (record.userId == USER_ALL || record.userId == userId) {
+ try {
+ record.listener.onActiveSessionsChanged(tokens);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Dead ActiveSessionsListener in pushSessionsChanged, removing",
+ e);
+ mSessionsListeners.remove(i);
+ }
+ }
+ }
+ }
+ }
+
+ private void pushRemoteVolumeUpdateLocked(int userId) {
+ if (mRvc != null) {
+ try {
+ FullUserRecord user = getFullUserRecordLocked(userId);
+ if (user == null) {
+ Log.w(TAG, "pushRemoteVolumeUpdateLocked failed. No user with id=" + userId);
+ return;
+ }
+ MediaSessionRecord record = user.mPriorityStack.getDefaultRemoteSession(userId);
+ mRvc.updateRemoteController(record == null ? null : record.getControllerBinder());
+ } catch (RemoteException e) {
+ Log.wtf(TAG, "Error sending default remote volume to sys ui.", e);
+ }
+ }
+ }
+
+ void pushSession2TokensChangedLocked(int userId) {
+ List<Session2Token> allSession2Tokens = getSession2TokensLocked(USER_ALL);
+ List<Session2Token> session2Tokens = getSession2TokensLocked(userId);
+
+ for (int i = mSession2TokensListenerRecords.size() - 1; i >= 0; i--) {
+ Session2TokensListenerRecord listenerRecord = mSession2TokensListenerRecords.get(i);
+ try {
+ if (listenerRecord.userId == USER_ALL) {
+ listenerRecord.listener.onSession2TokensChanged(allSession2Tokens);
+ } else if (listenerRecord.userId == userId) {
+ listenerRecord.listener.onSession2TokensChanged(session2Tokens);
+ }
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to notify Session2Token change. Removing listener.", e);
+ mSession2TokensListenerRecords.remove(i);
+ }
+ }
+ }
+
+ /**
+ * Called when the media button receiver for the {@code record} is changed.
+ *
+ * @param record the media session whose media button receiver is updated.
+ */
+ public void onMediaButtonReceiverChanged(MediaSessionRecord record) {
+ synchronized (mLock) {
+ FullUserRecord user = getFullUserRecordLocked(record.getUserId());
+ MediaSessionRecord mediaButtonSession =
+ user.mPriorityStack.getMediaButtonSession();
+ if (record == mediaButtonSession) {
+ user.rememberMediaButtonReceiverLocked(mediaButtonSession);
+ }
+ }
+ }
+
+ private String getCallingPackageName(int uid) {
+ String[] packages = mContext.getPackageManager().getPackagesForUid(uid);
+ if (packages != null && packages.length > 0) {
+ return packages[0];
+ }
+ return "";
+ }
+
+ private void dispatchVolumeKeyLongPressLocked(KeyEvent keyEvent) {
+ if (mCurrentFullUserRecord.mOnVolumeKeyLongPressListener == null) {
+ return;
+ }
+ try {
+ mCurrentFullUserRecord.mOnVolumeKeyLongPressListener.onVolumeKeyLongPress(keyEvent);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to send " + keyEvent + " to volume key long-press listener");
+ }
+ }
+
+ private FullUserRecord getFullUserRecordLocked(int userId) {
+ int fullUserId = mFullUserIds.get(userId, -1);
+ if (fullUserId < 0) {
+ return null;
+ }
+ return mUserRecords.get(fullUserId);
+ }
+
+ /**
+ * Information about a full user and its corresponding managed profiles.
+ *
+ * <p>Since the full user runs together with its managed profiles, a user wouldn't differentiate
+ * them when he/she presses a media/volume button. So keeping media sessions for them in one
+ * place makes more sense and increases the readability.</p>
+ * <p>The contents of this object is guarded by {@link #mLock}.
+ */
+ final class FullUserRecord implements MediaSessionStack.OnMediaButtonSessionChangedListener {
+ public static final int COMPONENT_TYPE_INVALID = 0;
+ public static final int COMPONENT_TYPE_BROADCAST = 1;
+ public static final int COMPONENT_TYPE_ACTIVITY = 2;
+ public static final int COMPONENT_TYPE_SERVICE = 3;
+ private static final String COMPONENT_NAME_USER_ID_DELIM = ",";
+
+ private final int mFullUserId;
+ private final MediaSessionStack mPriorityStack;
+ private PendingIntent mLastMediaButtonReceiver;
+ private ComponentName mRestoredMediaButtonReceiver;
+ private int mRestoredMediaButtonReceiverComponentType;
+ private int mRestoredMediaButtonReceiverUserId;
+
+ private IOnVolumeKeyLongPressListener mOnVolumeKeyLongPressListener;
+ private int mOnVolumeKeyLongPressListenerUid;
+ private KeyEvent mInitialDownVolumeKeyEvent;
+ private int mInitialDownVolumeStream;
+ private boolean mInitialDownMusicOnly;
+
+ private IOnMediaKeyListener mOnMediaKeyListener;
+ private int mOnMediaKeyListenerUid;
+ private ICallback mCallback;
+
+ FullUserRecord(int fullUserId) {
+ mFullUserId = fullUserId;
+ mPriorityStack = new MediaSessionStack(mAudioPlayerStateMonitor, this);
+ // Restore the remembered media button receiver before the boot.
+ String mediaButtonReceiverInfo = Settings.Secure.getStringForUser(mContentResolver,
+ Settings.System.MEDIA_BUTTON_RECEIVER, mFullUserId);
+ if (mediaButtonReceiverInfo == null) {
+ return;
+ }
+ String[] tokens = mediaButtonReceiverInfo.split(COMPONENT_NAME_USER_ID_DELIM);
+ if (tokens == null || (tokens.length != 2 && tokens.length != 3)) {
+ return;
+ }
+ mRestoredMediaButtonReceiver = ComponentName.unflattenFromString(tokens[0]);
+ mRestoredMediaButtonReceiverUserId = Integer.parseInt(tokens[1]);
+ if (tokens.length == 3) {
+ mRestoredMediaButtonReceiverComponentType = Integer.parseInt(tokens[2]);
+ } else {
+ mRestoredMediaButtonReceiverComponentType =
+ getComponentType(mRestoredMediaButtonReceiver);
+ }
+ }
+
+ public void destroySessionsForUserLocked(int userId) {
+ List<MediaSessionRecord> sessions = mPriorityStack.getPriorityList(false, userId);
+ for (MediaSessionRecord session : sessions) {
+ MediaSessionServiceImpl.this.destroySessionLocked(session);
+ }
+ }
+
+ public void dumpLocked(PrintWriter pw, String prefix) {
+ pw.print(prefix + "Record for full_user=" + mFullUserId);
+ // Dump managed profile user ids associated with this user.
+ int size = mFullUserIds.size();
+ for (int i = 0; i < size; i++) {
+ if (mFullUserIds.keyAt(i) != mFullUserIds.valueAt(i)
+ && mFullUserIds.valueAt(i) == mFullUserId) {
+ pw.print(", profile_user=" + mFullUserIds.keyAt(i));
+ }
+ }
+ pw.println();
+ String indent = prefix + " ";
+ pw.println(indent + "Volume key long-press listener: " + mOnVolumeKeyLongPressListener);
+ pw.println(indent + "Volume key long-press listener package: "
+ + getCallingPackageName(mOnVolumeKeyLongPressListenerUid));
+ pw.println(indent + "Media key listener: " + mOnMediaKeyListener);
+ pw.println(indent + "Media key listener package: "
+ + getCallingPackageName(mOnMediaKeyListenerUid));
+ pw.println(indent + "Callback: " + mCallback);
+ pw.println(indent + "Last MediaButtonReceiver: " + mLastMediaButtonReceiver);
+ pw.println(indent + "Restored MediaButtonReceiver: " + mRestoredMediaButtonReceiver);
+ pw.println(indent + "Restored MediaButtonReceiverComponentType: "
+ + mRestoredMediaButtonReceiverComponentType);
+ mPriorityStack.dump(pw, indent);
+ pw.println(indent + "Session2Tokens:");
+ for (int i = 0; i < mSession2TokensPerUser.size(); i++) {
+ List<Session2Token> list = mSession2TokensPerUser.valueAt(i);
+ if (list == null || list.size() == 0) {
+ continue;
+ }
+ for (Session2Token token : list) {
+ pw.println(indent + " " + token);
+ }
+ }
+ }
+
+ @Override
+ public void onMediaButtonSessionChanged(MediaSessionRecord oldMediaButtonSession,
+ MediaSessionRecord newMediaButtonSession) {
+ if (DEBUG_KEY_EVENT) {
+ Log.d(TAG, "Media button session is changed to " + newMediaButtonSession);
+ }
+ synchronized (mLock) {
+ if (oldMediaButtonSession != null) {
+ mHandler.postSessionsChanged(oldMediaButtonSession.getUserId());
+ }
+ if (newMediaButtonSession != null) {
+ rememberMediaButtonReceiverLocked(newMediaButtonSession);
+ mHandler.postSessionsChanged(newMediaButtonSession.getUserId());
+ }
+ pushAddressedPlayerChangedLocked();
+ }
+ }
+
+ // Remember media button receiver and keep it in the persistent storage.
+ public void rememberMediaButtonReceiverLocked(MediaSessionRecord record) {
+ PendingIntent receiver = record.getMediaButtonReceiver();
+ mLastMediaButtonReceiver = receiver;
+ mRestoredMediaButtonReceiver = null;
+ mRestoredMediaButtonReceiverComponentType = COMPONENT_TYPE_INVALID;
+
+ String mediaButtonReceiverInfo = "";
+ if (receiver != null) {
+ ComponentName component = receiver.getIntent().getComponent();
+ if (component != null
+ && record.getPackageName().equals(component.getPackageName())) {
+ String componentName = component.flattenToString();
+ int componentType = getComponentType(component);
+ mediaButtonReceiverInfo = String.join(COMPONENT_NAME_USER_ID_DELIM,
+ componentName, String.valueOf(record.getUserId()),
+ String.valueOf(componentType));
+ }
+ }
+ Settings.Secure.putStringForUser(mContentResolver,
+ Settings.System.MEDIA_BUTTON_RECEIVER, mediaButtonReceiverInfo,
+ mFullUserId);
+ }
+
+ private void pushAddressedPlayerChangedLocked() {
+ if (mCallback == null) {
+ return;
+ }
+ try {
+ MediaSessionRecord mediaButtonSession = getMediaButtonSessionLocked();
+ if (mediaButtonSession != null) {
+ mCallback.onAddressedPlayerChangedToMediaSession(
+ new MediaSession.Token(mediaButtonSession.getControllerBinder()));
+ } else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) {
+ mCallback.onAddressedPlayerChangedToMediaButtonReceiver(
+ mCurrentFullUserRecord.mLastMediaButtonReceiver
+ .getIntent().getComponent());
+ } else if (mCurrentFullUserRecord.mRestoredMediaButtonReceiver != null) {
+ mCallback.onAddressedPlayerChangedToMediaButtonReceiver(
+ mCurrentFullUserRecord.mRestoredMediaButtonReceiver);
+ }
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to pushAddressedPlayerChangedLocked", e);
+ }
+ }
+
+ private MediaSessionRecord getMediaButtonSessionLocked() {
+ return isGlobalPriorityActiveLocked()
+ ? mGlobalPrioritySession : mPriorityStack.getMediaButtonSession();
+ }
+
+ private int getComponentType(@Nullable ComponentName componentName) {
+ if (componentName == null) {
+ return COMPONENT_TYPE_INVALID;
+ }
+ PackageManager pm = mContext.getPackageManager();
+ try {
+ ActivityInfo activityInfo = pm.getActivityInfo(componentName,
+ PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+ | PackageManager.GET_ACTIVITIES);
+ if (activityInfo != null) {
+ return COMPONENT_TYPE_ACTIVITY;
+ }
+ } catch (NameNotFoundException e) {
+ }
+ try {
+ ServiceInfo serviceInfo = pm.getServiceInfo(componentName,
+ PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+ | PackageManager.GET_SERVICES);
+ if (serviceInfo != null) {
+ return COMPONENT_TYPE_SERVICE;
+ }
+ } catch (NameNotFoundException e) {
+ }
+ // Pick legacy behavior for BroadcastReceiver or unknown.
+ return COMPONENT_TYPE_BROADCAST;
+ }
+ }
+
+ final class SessionsListenerRecord implements IBinder.DeathRecipient {
+ public final IActiveSessionsListener listener;
+ public final ComponentName componentName;
+ public final int userId;
+ public final int pid;
+ public final int uid;
+
+ SessionsListenerRecord(IActiveSessionsListener listener,
+ ComponentName componentName,
+ int userId, int pid, int uid) {
+ this.listener = listener;
+ this.componentName = componentName;
+ this.userId = userId;
+ this.pid = pid;
+ this.uid = uid;
+ }
+
+ @Override
+ public void binderDied() {
+ synchronized (mLock) {
+ mSessionsListeners.remove(this);
+ }
+ }
+ }
+
+ final class Session2TokensListenerRecord implements IBinder.DeathRecipient {
+ public final ISession2TokensListener listener;
+ public final int userId;
+
+ Session2TokensListenerRecord(ISession2TokensListener listener,
+ int userId) {
+ this.listener = listener;
+ this.userId = userId;
+ }
+
+ @Override
+ public void binderDied() {
+ synchronized (mLock) {
+ mSession2TokensListenerRecords.remove(this);
+ }
+ }
+ }
+
+ final class SettingsObserver extends ContentObserver {
+ private final Uri mSecureSettingsUri = Settings.Secure.getUriFor(
+ Settings.Secure.ENABLED_NOTIFICATION_LISTENERS);
+
+ private SettingsObserver() {
+ super(null);
+ }
+
+ private void observe() {
+ mContentResolver.registerContentObserver(mSecureSettingsUri,
+ false, this, USER_ALL);
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ updateActiveSessionListeners();
+ }
+ }
+
+ class SessionManagerImpl extends ISessionManager.Stub {
+ private static final String EXTRA_WAKELOCK_ACQUIRED =
+ "android.media.AudioService.WAKELOCK_ACQUIRED";
+ private static final int WAKELOCK_RELEASE_ON_FINISHED = 1980; // magic number
+
+ private boolean mVoiceButtonDown = false;
+ private boolean mVoiceButtonHandled = false;
+
+ @Override
+ public ISession createSession(String packageName, SessionCallbackLink cb, String tag,
+ int userId) throws RemoteException {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ enforcePackageName(packageName, uid);
+ int resolvedUserId = ActivityManager.handleIncomingUser(pid, uid, userId,
+ false /* allowAll */, true /* requireFull */, "createSession", packageName);
+ if (cb == null) {
+ throw new IllegalArgumentException("Controller callback cannot be null");
+ }
+ return createSessionInternal(pid, uid, resolvedUserId, packageName, cb, tag)
+ .getSessionBinder();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void notifySession2Created(Session2Token sessionToken) throws RemoteException {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ if (DEBUG) {
+ Log.d(TAG, "Session2 is created " + sessionToken);
+ }
+ if (uid != sessionToken.getUid()) {
+ throw new SecurityException("Unexpected Session2Token's UID, expected=" + uid
+ + " but actually=" + sessionToken.getUid());
+ }
+ Controller2Callback callback = new Controller2Callback(sessionToken);
+ // Note: It's safe not to keep controller here because it wouldn't be GC'ed until
+ // it's closed.
+ // TODO: Keep controller as well for better readability
+ // because the GC behavior isn't straightforward.
+ MediaController2 controller = new MediaController2(mContext, sessionToken,
+ new HandlerExecutor(mHandler), callback);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public List<IBinder> getSessions(ComponentName componentName, int userId) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+
+ try {
+ int resolvedUserId = verifySessionsRequest(componentName, userId, pid, uid);
+ ArrayList<IBinder> binders = new ArrayList<IBinder>();
+ synchronized (mLock) {
+ List<MediaSessionRecord> records = getActiveSessionsLocked(resolvedUserId);
+ for (MediaSessionRecord record : records) {
+ binders.add(record.getControllerBinder().asBinder());
+ }
+ }
+ return binders;
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public List<Session2Token> getSession2Tokens(int userId) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+
+ try {
+ // Check that they can make calls on behalf of the user and
+ // get the final user id
+ int resolvedUserId = ActivityManager.handleIncomingUser(pid, uid, userId,
+ true /* allowAll */, true /* requireFull */, "getSession2Tokens",
+ null /* optional packageName */);
+ List<Session2Token> result;
+ synchronized (mLock) {
+ result = getSession2TokensLocked(resolvedUserId);
+ }
+ return result;
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void addSessionsListener(IActiveSessionsListener listener,
+ ComponentName componentName, int userId) throws RemoteException {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+
+ try {
+ int resolvedUserId = verifySessionsRequest(componentName, userId, pid, uid);
+ synchronized (mLock) {
+ int index = findIndexOfSessionsListenerLocked(listener);
+ if (index != -1) {
+ Log.w(TAG, "ActiveSessionsListener is already added, ignoring");
+ return;
+ }
+ SessionsListenerRecord record = new SessionsListenerRecord(listener,
+ componentName, resolvedUserId, pid, uid);
+ try {
+ listener.asBinder().linkToDeath(record, 0);
+ } catch (RemoteException e) {
+ Log.e(TAG, "ActiveSessionsListener is dead, ignoring it", e);
+ return;
+ }
+ mSessionsListeners.add(record);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void removeSessionsListener(IActiveSessionsListener listener)
+ throws RemoteException {
+ synchronized (mLock) {
+ int index = findIndexOfSessionsListenerLocked(listener);
+ if (index != -1) {
+ SessionsListenerRecord record = mSessionsListeners.remove(index);
+ try {
+ record.listener.asBinder().unlinkToDeath(record, 0);
+ } catch (Exception e) {
+ // ignore exceptions, the record is being removed
+ }
+ }
+ }
+ }
+
+ @Override
+ public void addSession2TokensListener(ISession2TokensListener listener,
+ int userId) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+
+ try {
+ // Check that they can make calls on behalf of the user and get the final user id.
+ int resolvedUserId = ActivityManager.handleIncomingUser(pid, uid, userId,
+ true /* allowAll */, true /* requireFull */, "addSession2TokensListener",
+ null /* optional packageName */);
+ synchronized (mLock) {
+ int index = findIndexOfSession2TokensListenerLocked(listener);
+ if (index >= 0) {
+ Log.w(TAG, "addSession2TokensListener is already added, ignoring");
+ return;
+ }
+ mSession2TokensListenerRecords.add(
+ new Session2TokensListenerRecord(listener, resolvedUserId));
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void removeSession2TokensListener(ISession2TokensListener listener) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+
+ try {
+ synchronized (mLock) {
+ int index = findIndexOfSession2TokensListenerLocked(listener);
+ if (index >= 0) {
+ Session2TokensListenerRecord listenerRecord =
+ mSession2TokensListenerRecords.remove(index);
+ try {
+ listenerRecord.listener.asBinder().unlinkToDeath(listenerRecord, 0);
+ } catch (Exception e) {
+ // Ignore exception.
+ }
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ /**
+ * Handles the dispatching of the media button events to one of the
+ * registered listeners, or if there was none, broadcast an
+ * ACTION_MEDIA_BUTTON intent to the rest of the system.
+ *
+ * @param packageName The caller package
+ * @param asSystemService {@code true} if the event sent to the session as if it was come
+ * from the system service instead of the app process. This helps sessions to
+ * distinguish between the key injection by the app and key events from the
+ * hardware devices. Should be used only when the volume key events aren't handled
+ * by foreground activity. {@code false} otherwise to tell session about the real
+ * caller.
+ * @param keyEvent a non-null KeyEvent whose key code is one of the
+ * supported media buttons
+ * @param needWakeLock true if a PARTIAL_WAKE_LOCK needs to be held
+ * while this key event is dispatched.
+ */
+ @Override
+ public void dispatchMediaKeyEvent(String packageName, boolean asSystemService,
+ KeyEvent keyEvent, boolean needWakeLock) {
+ if (keyEvent == null || !KeyEvent.isMediaSessionKey(keyEvent.getKeyCode())) {
+ Log.w(TAG, "Attempted to dispatch null or non-media key event.");
+ return;
+ }
+
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ if (DEBUG) {
+ Log.d(TAG, "dispatchMediaKeyEvent, pkg=" + packageName + " pid=" + pid
+ + ", uid=" + uid + ", asSystem=" + asSystemService + ", event="
+ + keyEvent);
+ }
+ if (!isUserSetupComplete()) {
+ // Global media key handling can have the side-effect of starting new
+ // activities which is undesirable while setup is in progress.
+ Slog.i(TAG, "Not dispatching media key event because user "
+ + "setup is in progress.");
+ return;
+ }
+
+ synchronized (mLock) {
+ boolean isGlobalPriorityActive = isGlobalPriorityActiveLocked();
+ if (isGlobalPriorityActive && uid != Process.SYSTEM_UID) {
+ // Prevent dispatching key event through reflection while the global
+ // priority session is active.
+ Slog.i(TAG, "Only the system can dispatch media key event "
+ + "to the global priority session.");
+ return;
+ }
+ if (!isGlobalPriorityActive) {
+ if (mCurrentFullUserRecord.mOnMediaKeyListener != null) {
+ if (DEBUG_KEY_EVENT) {
+ Log.d(TAG, "Send " + keyEvent + " to the media key listener");
+ }
+ try {
+ mCurrentFullUserRecord.mOnMediaKeyListener.onMediaKey(keyEvent,
+ new MediaKeyListenerResultReceiver(packageName, pid, uid,
+ asSystemService, keyEvent, needWakeLock));
+ return;
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to send " + keyEvent
+ + " to the media key listener");
+ }
+ }
+ }
+ if (!isGlobalPriorityActive && isVoiceKey(keyEvent.getKeyCode())) {
+ handleVoiceKeyEventLocked(packageName, pid, uid, asSystemService, keyEvent,
+ needWakeLock);
+ } else {
+ dispatchMediaKeyEventLocked(packageName, pid, uid, asSystemService,
+ keyEvent, needWakeLock);
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void setCallback(ICallback callback) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ if (!UserHandle.isSameApp(uid, Process.BLUETOOTH_UID)) {
+ throw new SecurityException("Only Bluetooth service processes can set"
+ + " Callback");
+ }
+ synchronized (mLock) {
+ int userId = UserHandle.getUserId(uid);
+ FullUserRecord user = getFullUserRecordLocked(userId);
+ if (user == null || user.mFullUserId != userId) {
+ Log.w(TAG, "Only the full user can set the callback"
+ + ", userId=" + userId);
+ return;
+ }
+ user.mCallback = callback;
+ Log.d(TAG, "The callback " + user.mCallback
+ + " is set by " + getCallingPackageName(uid));
+ if (user.mCallback == null) {
+ return;
+ }
+ try {
+ user.mCallback.asBinder().linkToDeath(
+ new IBinder.DeathRecipient() {
+ @Override
+ public void binderDied() {
+ synchronized (mLock) {
+ user.mCallback = null;
+ }
+ }
+ }, 0);
+ user.pushAddressedPlayerChangedLocked();
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to set callback", e);
+ user.mCallback = null;
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void setOnVolumeKeyLongPressListener(IOnVolumeKeyLongPressListener listener) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ // Enforce SET_VOLUME_KEY_LONG_PRESS_LISTENER permission.
+ if (mContext.checkPermission(
+ android.Manifest.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER, pid, uid)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("Must hold the SET_VOLUME_KEY_LONG_PRESS_LISTENER"
+ + " permission.");
+ }
+
+ synchronized (mLock) {
+ int userId = UserHandle.getUserId(uid);
+ FullUserRecord user = getFullUserRecordLocked(userId);
+ if (user == null || user.mFullUserId != userId) {
+ Log.w(TAG, "Only the full user can set the volume key long-press listener"
+ + ", userId=" + userId);
+ return;
+ }
+ if (user.mOnVolumeKeyLongPressListener != null
+ && user.mOnVolumeKeyLongPressListenerUid != uid) {
+ Log.w(TAG, "The volume key long-press listener cannot be reset"
+ + " by another app , mOnVolumeKeyLongPressListener="
+ + user.mOnVolumeKeyLongPressListenerUid
+ + ", uid=" + uid);
+ return;
+ }
+
+ user.mOnVolumeKeyLongPressListener = listener;
+ user.mOnVolumeKeyLongPressListenerUid = uid;
+
+ Log.d(TAG, "The volume key long-press listener "
+ + listener + " is set by " + getCallingPackageName(uid));
+
+ if (user.mOnVolumeKeyLongPressListener != null) {
+ try {
+ user.mOnVolumeKeyLongPressListener.asBinder().linkToDeath(
+ new IBinder.DeathRecipient() {
+ @Override
+ public void binderDied() {
+ synchronized (mLock) {
+ user.mOnVolumeKeyLongPressListener = null;
+ }
+ }
+ }, 0);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to set death recipient "
+ + user.mOnVolumeKeyLongPressListener);
+ user.mOnVolumeKeyLongPressListener = null;
+ }
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void setOnMediaKeyListener(IOnMediaKeyListener listener) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ // Enforce SET_MEDIA_KEY_LISTENER permission.
+ if (mContext.checkPermission(
+ android.Manifest.permission.SET_MEDIA_KEY_LISTENER, pid, uid)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("Must hold the SET_MEDIA_KEY_LISTENER permission.");
+ }
+
+ synchronized (mLock) {
+ int userId = UserHandle.getUserId(uid);
+ FullUserRecord user = getFullUserRecordLocked(userId);
+ if (user == null || user.mFullUserId != userId) {
+ Log.w(TAG, "Only the full user can set the media key listener"
+ + ", userId=" + userId);
+ return;
+ }
+ if (user.mOnMediaKeyListener != null && user.mOnMediaKeyListenerUid != uid) {
+ Log.w(TAG, "The media key listener cannot be reset by another app. "
+ + ", mOnMediaKeyListenerUid=" + user.mOnMediaKeyListenerUid
+ + ", uid=" + uid);
+ return;
+ }
+
+ user.mOnMediaKeyListener = listener;
+ user.mOnMediaKeyListenerUid = uid;
+
+ Log.d(TAG, "The media key listener " + user.mOnMediaKeyListener
+ + " is set by " + getCallingPackageName(uid));
+
+ if (user.mOnMediaKeyListener != null) {
+ try {
+ user.mOnMediaKeyListener.asBinder().linkToDeath(
+ new IBinder.DeathRecipient() {
+ @Override
+ public void binderDied() {
+ synchronized (mLock) {
+ user.mOnMediaKeyListener = null;
+ }
+ }
+ }, 0);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to set death recipient " + user.mOnMediaKeyListener);
+ user.mOnMediaKeyListener = null;
+ }
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ /**
+ * Handles the dispatching of the volume button events to one of the
+ * registered listeners. If there's a volume key long-press listener and
+ * there's no active global priority session, long-pressess will be sent to the
+ * long-press listener instead of adjusting volume.
+ *
+ * @param packageName The caller's package name, obtained by Context#getPackageName()
+ * @param opPackageName The caller's op package name, obtained by Context#getOpPackageName()
+ * @param asSystemService {@code true} if the event sent to the session as if it was come
+ * from the system service instead of the app process. This helps sessions to
+ * distinguish between the key injection by the app and key events from the
+ * hardware devices. Should be used only when the volume key events aren't handled
+ * by foreground activity. {@code false} otherwise to tell session about the real
+ * caller.
+ * @param keyEvent a non-null KeyEvent whose key code is one of the
+ * {@link KeyEvent#KEYCODE_VOLUME_UP},
+ * {@link KeyEvent#KEYCODE_VOLUME_DOWN},
+ * or {@link KeyEvent#KEYCODE_VOLUME_MUTE}.
+ * @param stream stream type to adjust volume.
+ * @param musicOnly true if both UI nor haptic feedback aren't needed when adjust volume.
+ */
+ @Override
+ public void dispatchVolumeKeyEvent(String packageName, String opPackageName,
+ boolean asSystemService, KeyEvent keyEvent, int stream, boolean musicOnly) {
+ if (keyEvent == null
+ || (keyEvent.getKeyCode() != KeyEvent.KEYCODE_VOLUME_UP
+ && keyEvent.getKeyCode() != KeyEvent.KEYCODE_VOLUME_DOWN
+ && keyEvent.getKeyCode() != KeyEvent.KEYCODE_VOLUME_MUTE)) {
+ Log.w(TAG, "Attempted to dispatch null or non-volume key event.");
+ return;
+ }
+
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+
+ if (DEBUG_KEY_EVENT) {
+ Log.d(TAG, "dispatchVolumeKeyEvent, pkg=" + packageName + ", pid=" + pid + ", uid="
+ + uid + ", asSystem=" + asSystemService + ", event=" + keyEvent);
+ }
+
+ try {
+ synchronized (mLock) {
+ if (isGlobalPriorityActiveLocked()
+ || mCurrentFullUserRecord.mOnVolumeKeyLongPressListener == null) {
+ dispatchVolumeKeyEventLocked(packageName, opPackageName, pid, uid,
+ asSystemService, keyEvent, stream, musicOnly);
+ } else {
+ // TODO: Consider the case when both volume up and down keys are pressed
+ // at the same time.
+ if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ if (keyEvent.getRepeatCount() == 0) {
+ // Keeps the copy of the KeyEvent because it can be reused.
+ mCurrentFullUserRecord.mInitialDownVolumeKeyEvent =
+ KeyEvent.obtain(keyEvent);
+ mCurrentFullUserRecord.mInitialDownVolumeStream = stream;
+ mCurrentFullUserRecord.mInitialDownMusicOnly = musicOnly;
+ mHandler.sendMessageDelayed(
+ mHandler.obtainMessage(
+ MessageHandler.MSG_VOLUME_INITIAL_DOWN,
+ mCurrentFullUserRecord.mFullUserId, 0),
+ mLongPressTimeout);
+ }
+ if (keyEvent.getRepeatCount() > 0 || keyEvent.isLongPress()) {
+ mHandler.removeMessages(MessageHandler.MSG_VOLUME_INITIAL_DOWN);
+ if (mCurrentFullUserRecord.mInitialDownVolumeKeyEvent != null) {
+ dispatchVolumeKeyLongPressLocked(
+ mCurrentFullUserRecord.mInitialDownVolumeKeyEvent);
+ // Mark that the key is already handled.
+ mCurrentFullUserRecord.mInitialDownVolumeKeyEvent = null;
+ }
+ dispatchVolumeKeyLongPressLocked(keyEvent);
+ }
+ } else { // if up
+ mHandler.removeMessages(MessageHandler.MSG_VOLUME_INITIAL_DOWN);
+ if (mCurrentFullUserRecord.mInitialDownVolumeKeyEvent != null
+ && mCurrentFullUserRecord.mInitialDownVolumeKeyEvent
+ .getDownTime() == keyEvent.getDownTime()) {
+ // Short-press. Should change volume.
+ dispatchVolumeKeyEventLocked(packageName, opPackageName, pid, uid,
+ asSystemService,
+ mCurrentFullUserRecord.mInitialDownVolumeKeyEvent,
+ mCurrentFullUserRecord.mInitialDownVolumeStream,
+ mCurrentFullUserRecord.mInitialDownMusicOnly);
+ dispatchVolumeKeyEventLocked(packageName, opPackageName, pid, uid,
+ asSystemService, keyEvent, stream, musicOnly);
+ } else {
+ dispatchVolumeKeyLongPressLocked(keyEvent);
+ }
+ }
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ private void dispatchVolumeKeyEventLocked(String packageName, String opPackageName, int pid,
+ int uid, boolean asSystemService, KeyEvent keyEvent, int stream,
+ boolean musicOnly) {
+ boolean down = keyEvent.getAction() == KeyEvent.ACTION_DOWN;
+ boolean up = keyEvent.getAction() == KeyEvent.ACTION_UP;
+ int direction = 0;
+ boolean isMute = false;
+ switch (keyEvent.getKeyCode()) {
+ case KeyEvent.KEYCODE_VOLUME_UP:
+ direction = AudioManager.ADJUST_RAISE;
+ break;
+ case KeyEvent.KEYCODE_VOLUME_DOWN:
+ direction = AudioManager.ADJUST_LOWER;
+ break;
+ case KeyEvent.KEYCODE_VOLUME_MUTE:
+ isMute = true;
+ break;
+ }
+ if (down || up) {
+ int flags = AudioManager.FLAG_FROM_KEY;
+ if (musicOnly) {
+ // This flag is used when the screen is off to only affect active media.
+ flags |= AudioManager.FLAG_ACTIVE_MEDIA_ONLY;
+ } else {
+ // These flags are consistent with the home screen
+ if (up) {
+ flags |= AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_VIBRATE;
+ } else {
+ flags |= AudioManager.FLAG_SHOW_UI | AudioManager.FLAG_VIBRATE;
+ }
+ }
+ if (direction != 0) {
+ // If this is action up we want to send a beep for non-music events
+ if (up) {
+ direction = 0;
+ }
+ dispatchAdjustVolumeLocked(packageName, opPackageName, pid, uid,
+ asSystemService, stream, direction, flags);
+ } else if (isMute) {
+ if (down && keyEvent.getRepeatCount() == 0) {
+ dispatchAdjustVolumeLocked(packageName, opPackageName, pid, uid,
+ asSystemService, stream, AudioManager.ADJUST_TOGGLE_MUTE, flags);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void dispatchAdjustVolume(String packageName, String opPackageName,
+ int suggestedStream, int delta, int flags) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ dispatchAdjustVolumeLocked(packageName, opPackageName, pid, uid, false,
+ suggestedStream, delta, flags);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public void setRemoteVolumeController(IRemoteVolumeController rvc) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ enforceSystemUiPermission("listen for volume changes", pid, uid);
+ mRvc = rvc;
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override
+ public boolean isGlobalPriorityActive() {
+ synchronized (mLock) {
+ return isGlobalPriorityActiveLocked();
+ }
+ }
+
+ @Override
+ public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
+ if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
+
+ pw.println("MEDIA SESSION SERVICE (dumpsys media_session)");
+ pw.println();
+
+ synchronized (mLock) {
+ pw.println(mSessionsListeners.size() + " sessions listeners.");
+ pw.println("Global priority session is " + mGlobalPrioritySession);
+ if (mGlobalPrioritySession != null) {
+ mGlobalPrioritySession.dump(pw, " ");
+ }
+ pw.println("User Records:");
+ int count = mUserRecords.size();
+ for (int i = 0; i < count; i++) {
+ mUserRecords.valueAt(i).dumpLocked(pw, "");
+ }
+ mAudioPlayerStateMonitor.dump(mContext, pw, "");
+ }
+ }
+
+ /**
+ * Returns if the controller's package is trusted (i.e. has either MEDIA_CONTENT_CONTROL
+ * permission or an enabled notification listener)
+ *
+ * @param controllerPackageName package name of the controller app
+ * @param controllerPid pid of the controller app
+ * @param controllerUid uid of the controller app
+ */
+ @Override
+ public boolean isTrusted(String controllerPackageName, int controllerPid, int controllerUid)
+ throws RemoteException {
+ final int uid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ // Don't perform sanity check between controllerPackageName and controllerUid.
+ // When an (activity|service) runs on the another apps process by specifying
+ // android:process in the AndroidManifest.xml, then PID and UID would have the
+ // running process' information instead of the (activity|service) that has created
+ // MediaController.
+ // Note that we can use Context#getOpPackageName() instead of
+ // Context#getPackageName() for getting package name that matches with the PID/UID,
+ // but it doesn't tell which package has created the MediaController, so useless.
+ return hasMediaControlPermission(UserHandle.getUserId(uid), controllerPackageName,
+ controllerPid, controllerUid);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ // For MediaSession
+ private int verifySessionsRequest(ComponentName componentName, int userId, final int pid,
+ final int uid) {
+ String packageName = null;
+ if (componentName != null) {
+ // If they gave us a component name verify they own the
+ // package
+ packageName = componentName.getPackageName();
+ enforcePackageName(packageName, uid);
+ }
+ // Check that they can make calls on behalf of the user and
+ // get the final user id
+ int resolvedUserId = ActivityManager.handleIncomingUser(pid, uid, userId,
+ true /* allowAll */, true /* requireFull */, "getSessions", packageName);
+ // Check if they have the permissions or their component is
+ // enabled for the user they're calling from.
+ enforceMediaPermissions(componentName, pid, uid, resolvedUserId);
+ return resolvedUserId;
+ }
+
+ private boolean hasMediaControlPermission(int resolvedUserId, String packageName,
+ int pid, int uid) throws RemoteException {
+ // Allow API calls from the System UI
+ if (isCurrentVolumeController(pid, uid)) {
+ return true;
+ }
+
+ // Check if it's system server or has MEDIA_CONTENT_CONTROL.
+ // Note that system server doesn't have MEDIA_CONTENT_CONTROL, so we need extra
+ // check here.
+ if (uid == Process.SYSTEM_UID || mContext.checkPermission(
+ android.Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid)
+ == PackageManager.PERMISSION_GRANTED) {
+ return true;
+ } else if (DEBUG) {
+ Log.d(TAG, packageName + " (uid=" + uid + ") hasn't granted MEDIA_CONTENT_CONTROL");
+ }
+
+ // You may not access another user's content as an enabled listener.
+ final int userId = UserHandle.getUserId(uid);
+ if (resolvedUserId != userId) {
+ return false;
+ }
+
+ // TODO(jaewan): (Post-P) Propose NotificationManager#hasEnabledNotificationListener(
+ // String pkgName) to notification team for optimization
+ final List<ComponentName> enabledNotificationListeners =
+ mNotificationManager.getEnabledNotificationListeners(userId);
+ if (enabledNotificationListeners != null) {
+ for (int i = 0; i < enabledNotificationListeners.size(); i++) {
+ if (TextUtils.equals(packageName,
+ enabledNotificationListeners.get(i).getPackageName())) {
+ return true;
+ }
+ }
+ }
+ if (DEBUG) {
+ Log.d(TAG, packageName + " (uid=" + uid + ") doesn't have an enabled "
+ + "notification listener");
+ }
+ return false;
+ }
+
+ private void dispatchAdjustVolumeLocked(String packageName, String opPackageName, int pid,
+ int uid, boolean asSystemService, int suggestedStream, int direction, int flags) {
+ MediaSessionRecord session = isGlobalPriorityActiveLocked() ? mGlobalPrioritySession
+ : mCurrentFullUserRecord.mPriorityStack.getDefaultVolumeSession();
+
+ boolean preferSuggestedStream = false;
+ if (isValidLocalStreamType(suggestedStream)
+ && AudioSystem.isStreamActive(suggestedStream, 0)) {
+ preferSuggestedStream = true;
+ }
+ if (DEBUG_KEY_EVENT) {
+ Log.d(TAG, "Adjusting " + session + " by " + direction + ". flags="
+ + flags + ", suggestedStream=" + suggestedStream
+ + ", preferSuggestedStream=" + preferSuggestedStream);
+ }
+ if (session == null || preferSuggestedStream) {
+ if ((flags & AudioManager.FLAG_ACTIVE_MEDIA_ONLY) != 0
+ && !AudioSystem.isStreamActive(AudioManager.STREAM_MUSIC, 0)) {
+ if (DEBUG) {
+ Log.d(TAG, "No active session to adjust, skipping media only volume event");
+ }
+ return;
+ }
+
+ // Execute mAudioService.adjustSuggestedStreamVolume() on
+ // handler thread of MediaSessionService.
+ // This will release the MediaSessionService.mLock sooner and avoid
+ // a potential deadlock between MediaSessionService.mLock and
+ // ActivityManagerService lock.
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ final String callingOpPackageName;
+ final int callingUid;
+ if (asSystemService) {
+ callingOpPackageName = mContext.getOpPackageName();
+ callingUid = Process.myUid();
+ } else {
+ callingOpPackageName = opPackageName;
+ callingUid = uid;
+ }
+ try {
+ mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(suggestedStream,
+ direction, flags, callingOpPackageName, callingUid);
+ } catch (SecurityException | IllegalArgumentException e) {
+ Log.e(TAG, "Cannot adjust volume: direction=" + direction
+ + ", suggestedStream=" + suggestedStream + ", flags=" + flags
+ + ", packageName=" + packageName + ", uid=" + uid
+ + ", asSystemService=" + asSystemService, e);
+ }
+ }
+ });
+ } else {
+ session.adjustVolume(packageName, opPackageName, pid, uid, null, asSystemService,
+ direction, flags, true);
+ }
+ }
+
+ private void handleVoiceKeyEventLocked(String packageName, int pid, int uid,
+ boolean asSystemService, KeyEvent keyEvent, boolean needWakeLock) {
+ int action = keyEvent.getAction();
+ boolean isLongPress = (keyEvent.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0;
+ if (action == KeyEvent.ACTION_DOWN) {
+ if (keyEvent.getRepeatCount() == 0) {
+ mVoiceButtonDown = true;
+ mVoiceButtonHandled = false;
+ } else if (mVoiceButtonDown && !mVoiceButtonHandled && isLongPress) {
+ mVoiceButtonHandled = true;
+ startVoiceInput(needWakeLock);
+ }
+ } else if (action == KeyEvent.ACTION_UP) {
+ if (mVoiceButtonDown) {
+ mVoiceButtonDown = false;
+ if (!mVoiceButtonHandled && !keyEvent.isCanceled()) {
+ // Resend the down then send this event through
+ KeyEvent downEvent = KeyEvent.changeAction(keyEvent, KeyEvent.ACTION_DOWN);
+ dispatchMediaKeyEventLocked(packageName, pid, uid, asSystemService,
+ downEvent, needWakeLock);
+ dispatchMediaKeyEventLocked(packageName, pid, uid, asSystemService,
+ keyEvent, needWakeLock);
+ }
+ }
+ }
+ }
+
+ private void dispatchMediaKeyEventLocked(String packageName, int pid, int uid,
+ boolean asSystemService, KeyEvent keyEvent, boolean needWakeLock) {
+ MediaSessionRecord session = mCurrentFullUserRecord.getMediaButtonSessionLocked();
+ if (session != null) {
+ if (DEBUG_KEY_EVENT) {
+ Log.d(TAG, "Sending " + keyEvent + " to " + session);
+ }
+ if (needWakeLock) {
+ mKeyEventReceiver.aquireWakeLockLocked();
+ }
+ // If we don't need a wakelock use -1 as the id so we won't release it later.
+ session.sendMediaButton(packageName, pid, uid, asSystemService, keyEvent,
+ needWakeLock ? mKeyEventReceiver.mLastTimeoutId : -1,
+ mKeyEventReceiver);
+ if (mCurrentFullUserRecord.mCallback != null) {
+ try {
+ mCurrentFullUserRecord.mCallback.onMediaKeyEventDispatchedToMediaSession(
+ keyEvent, new MediaSession.Token(session.getControllerBinder()));
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to send callback", e);
+ }
+ }
+ } else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null
+ || mCurrentFullUserRecord.mRestoredMediaButtonReceiver != null) {
+ if (needWakeLock) {
+ mKeyEventReceiver.aquireWakeLockLocked();
+ }
+ Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
+ mediaButtonIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+ mediaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
+ // TODO: Find a way to also send PID/UID in secure way.
+ String callerPackageName =
+ (asSystemService) ? mContext.getPackageName() : packageName;
+ mediaButtonIntent.putExtra(Intent.EXTRA_PACKAGE_NAME, callerPackageName);
+ try {
+ if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) {
+ PendingIntent receiver = mCurrentFullUserRecord.mLastMediaButtonReceiver;
+ if (DEBUG_KEY_EVENT) {
+ Log.d(TAG, "Sending " + keyEvent
+ + " to the last known PendingIntent " + receiver);
+ }
+ receiver.send(mContext,
+ needWakeLock ? mKeyEventReceiver.mLastTimeoutId : -1,
+ mediaButtonIntent, mKeyEventReceiver, mHandler);
+ if (mCurrentFullUserRecord.mCallback != null) {
+ ComponentName componentName = mCurrentFullUserRecord
+ .mLastMediaButtonReceiver.getIntent().getComponent();
+ if (componentName != null) {
+ mCurrentFullUserRecord.mCallback
+ .onMediaKeyEventDispatchedToMediaButtonReceiver(
+ keyEvent, componentName);
+ }
+ }
+ } else {
+ ComponentName receiver =
+ mCurrentFullUserRecord.mRestoredMediaButtonReceiver;
+ int componentType = mCurrentFullUserRecord
+ .mRestoredMediaButtonReceiverComponentType;
+ UserHandle userHandle = UserHandle.of(mCurrentFullUserRecord
+ .mRestoredMediaButtonReceiverUserId);
+ if (DEBUG_KEY_EVENT) {
+ Log.d(TAG, "Sending " + keyEvent + " to the restored intent "
+ + receiver + ", type=" + componentType);
+ }
+ mediaButtonIntent.setComponent(receiver);
+ try {
+ switch (componentType) {
+ case FullUserRecord.COMPONENT_TYPE_ACTIVITY:
+ mContext.startActivityAsUser(mediaButtonIntent, userHandle);
+ break;
+ case FullUserRecord.COMPONENT_TYPE_SERVICE:
+ mContext.startForegroundServiceAsUser(mediaButtonIntent,
+ userHandle);
+ break;
+ default:
+ // Legacy behavior for other cases.
+ mContext.sendBroadcastAsUser(mediaButtonIntent, userHandle);
+ }
+ } catch (Exception e) {
+ Log.w(TAG, "Error sending media button to the restored intent "
+ + receiver + ", type=" + componentType, e);
+ }
+ if (mCurrentFullUserRecord.mCallback != null) {
+ mCurrentFullUserRecord.mCallback
+ .onMediaKeyEventDispatchedToMediaButtonReceiver(
+ keyEvent, receiver);
+ }
+ }
+ } catch (CanceledException e) {
+ Log.i(TAG, "Error sending key event to media button receiver "
+ + mCurrentFullUserRecord.mLastMediaButtonReceiver, e);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to send callback", e);
+ }
+ }
+ }
+
+ private void startVoiceInput(boolean needWakeLock) {
+ Intent voiceIntent = null;
+ // select which type of search to launch:
+ // - screen on and device unlocked: action is ACTION_WEB_SEARCH
+ // - device locked or screen off: action is
+ // ACTION_VOICE_SEARCH_HANDS_FREE
+ // with EXTRA_SECURE set to true if the device is securely locked
+ PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ boolean isLocked = mKeyguardManager != null && mKeyguardManager.isKeyguardLocked();
+ if (!isLocked && pm.isScreenOn()) {
+ voiceIntent = new Intent(android.speech.RecognizerIntent.ACTION_WEB_SEARCH);
+ Log.i(TAG, "voice-based interactions: about to use ACTION_WEB_SEARCH");
+ } else {
+ voiceIntent = new Intent(RecognizerIntent.ACTION_VOICE_SEARCH_HANDS_FREE);
+ voiceIntent.putExtra(RecognizerIntent.EXTRA_SECURE,
+ isLocked && mKeyguardManager.isKeyguardSecure());
+ Log.i(TAG, "voice-based interactions: about to use ACTION_VOICE_SEARCH_HANDS_FREE");
+ }
+ // start the search activity
+ if (needWakeLock) {
+ mMediaEventWakeLock.acquire();
+ }
+ try {
+ if (voiceIntent != null) {
+ voiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+ if (DEBUG) Log.d(TAG, "voiceIntent: " + voiceIntent);
+ mContext.startActivityAsUser(voiceIntent, UserHandle.CURRENT);
+ }
+ } catch (ActivityNotFoundException e) {
+ Log.w(TAG, "No activity for search: " + e);
+ } finally {
+ if (needWakeLock) {
+ mMediaEventWakeLock.release();
+ }
+ }
+ }
+
+ private boolean isVoiceKey(int keyCode) {
+ return keyCode == KeyEvent.KEYCODE_HEADSETHOOK
+ || (!mHasFeatureLeanback && keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);
+ }
+
+ private boolean isUserSetupComplete() {
+ return Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0;
+ }
+
+ // we only handle public stream types, which are 0-5
+ private boolean isValidLocalStreamType(int streamType) {
+ return streamType >= AudioManager.STREAM_VOICE_CALL
+ && streamType <= AudioManager.STREAM_NOTIFICATION;
+ }
+
+ private class MediaKeyListenerResultReceiver extends ResultReceiver implements Runnable {
+ private final String mPackageName;
+ private final int mPid;
+ private final int mUid;
+ private final boolean mAsSystemService;
+ private final KeyEvent mKeyEvent;
+ private final boolean mNeedWakeLock;
+ private boolean mHandled;
+
+ private MediaKeyListenerResultReceiver(String packageName, int pid, int uid,
+ boolean asSystemService, KeyEvent keyEvent, boolean needWakeLock) {
+ super(mHandler);
+ mHandler.postDelayed(this, MEDIA_KEY_LISTENER_TIMEOUT);
+ mPackageName = packageName;
+ mPid = pid;
+ mUid = uid;
+ mAsSystemService = asSystemService;
+ mKeyEvent = keyEvent;
+ mNeedWakeLock = needWakeLock;
+ }
+
+ @Override
+ public void run() {
+ Log.d(TAG, "The media key listener is timed-out for " + mKeyEvent);
+ dispatchMediaKeyEvent();
+ }
+
+ @Override
+ protected void onReceiveResult(int resultCode, Bundle resultData) {
+ if (resultCode == MediaSessionManager.RESULT_MEDIA_KEY_HANDLED) {
+ mHandled = true;
+ mHandler.removeCallbacks(this);
+ return;
+ }
+ dispatchMediaKeyEvent();
+ }
+
+ private void dispatchMediaKeyEvent() {
+ if (mHandled) {
+ return;
+ }
+ mHandled = true;
+ mHandler.removeCallbacks(this);
+ synchronized (mLock) {
+ if (!isGlobalPriorityActiveLocked()
+ && isVoiceKey(mKeyEvent.getKeyCode())) {
+ handleVoiceKeyEventLocked(mPackageName, mPid, mUid, mAsSystemService,
+ mKeyEvent, mNeedWakeLock);
+ } else {
+ dispatchMediaKeyEventLocked(mPackageName, mPid, mUid, mAsSystemService,
+ mKeyEvent, mNeedWakeLock);
+ }
+ }
+ }
+ }
+
+ private KeyEventWakeLockReceiver mKeyEventReceiver = new KeyEventWakeLockReceiver(mHandler);
+
+ class KeyEventWakeLockReceiver extends ResultReceiver implements Runnable,
+ PendingIntent.OnFinished {
+ private final Handler mHandler;
+ private int mRefCount = 0;
+ private int mLastTimeoutId = 0;
+
+ KeyEventWakeLockReceiver(Handler handler) {
+ super(handler);
+ mHandler = handler;
+ }
+
+ public void onTimeout() {
+ synchronized (mLock) {
+ if (mRefCount == 0) {
+ // We've already released it, so just return
+ return;
+ }
+ mLastTimeoutId++;
+ mRefCount = 0;
+ releaseWakeLockLocked();
+ }
+ }
+
+ public void aquireWakeLockLocked() {
+ if (mRefCount == 0) {
+ mMediaEventWakeLock.acquire();
+ }
+ mRefCount++;
+ mHandler.removeCallbacks(this);
+ mHandler.postDelayed(this, WAKELOCK_TIMEOUT);
+
+ }
+
+ @Override
+ public void run() {
+ onTimeout();
+ }
+
+ @Override
+ protected void onReceiveResult(int resultCode, Bundle resultData) {
+ if (resultCode < mLastTimeoutId) {
+ // Ignore results from calls that were before the last
+ // timeout, just in case.
+ return;
+ } else {
+ synchronized (mLock) {
+ if (mRefCount > 0) {
+ mRefCount--;
+ if (mRefCount == 0) {
+ releaseWakeLockLocked();
+ }
+ }
+ }
+ }
+ }
+
+ private void releaseWakeLockLocked() {
+ mMediaEventWakeLock.release();
+ mHandler.removeCallbacks(this);
+ }
+
+ @Override
+ public void onSendFinished(PendingIntent pendingIntent, Intent intent, int resultCode,
+ String resultData, Bundle resultExtras) {
+ onReceiveResult(resultCode, null);
+ }
+ };
+
+ BroadcastReceiver mKeyEventDone = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent == null) {
+ return;
+ }
+ Bundle extras = intent.getExtras();
+ if (extras == null) {
+ return;
+ }
+ synchronized (mLock) {
+ if (extras.containsKey(EXTRA_WAKELOCK_ACQUIRED)
+ && mMediaEventWakeLock.isHeld()) {
+ mMediaEventWakeLock.release();
+ }
+ }
+ }
+ };
+ }
+
+ final class MessageHandler extends Handler {
+ private static final int MSG_SESSIONS_CHANGED = 1;
+ private static final int MSG_VOLUME_INITIAL_DOWN = 2;
+ private final SparseArray<Integer> mIntegerCache = new SparseArray<>();
+
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_SESSIONS_CHANGED:
+ pushSessionsChanged((int) msg.obj);
+ break;
+ case MSG_VOLUME_INITIAL_DOWN:
+ synchronized (mLock) {
+ FullUserRecord user = mUserRecords.get((int) msg.arg1);
+ if (user != null && user.mInitialDownVolumeKeyEvent != null) {
+ dispatchVolumeKeyLongPressLocked(user.mInitialDownVolumeKeyEvent);
+ // Mark that the key is already handled.
+ user.mInitialDownVolumeKeyEvent = null;
+ }
+ }
+ break;
+ }
+ }
+
+ public void postSessionsChanged(int userId) {
+ // Use object instead of the arguments when posting message to remove pending requests.
+ Integer userIdInteger = mIntegerCache.get(userId);
+ if (userIdInteger == null) {
+ userIdInteger = Integer.valueOf(userId);
+ mIntegerCache.put(userId, userIdInteger);
+ }
+ removeMessages(MSG_SESSIONS_CHANGED, userIdInteger);
+ obtainMessage(MSG_SESSIONS_CHANGED, userIdInteger).sendToTarget();
+ }
+ }
+
+ private class Controller2Callback extends MediaController2.ControllerCallback {
+ private final Session2Token mToken;
+
+ Controller2Callback(Session2Token token) {
+ mToken = token;
+ }
+
+ @Override
+ public void onConnected(MediaController2 controller, Session2CommandGroup allowedCommands) {
+ synchronized (mLock) {
+ int userId = UserHandle.getUserId(mToken.getUid());
+ mSession2TokensPerUser.get(userId).add(mToken);
+ pushSession2TokensChangedLocked(userId);
+ }
+ }
+
+ @Override
+ public void onDisconnected(MediaController2 controller) {
+ synchronized (mLock) {
+ int userId = UserHandle.getUserId(mToken.getUid());
+ mSession2TokensPerUser.get(userId).remove(mToken);
+ pushSession2TokensChangedLocked(userId);
+ }
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/media/RemoteDisplayProviderWatcher.java b/services/core/java/com/android/server/media/RemoteDisplayProviderWatcher.java
index 6a5f563..64c451d 100644
--- a/services/core/java/com/android/server/media/RemoteDisplayProviderWatcher.java
+++ b/services/core/java/com/android/server/media/RemoteDisplayProviderWatcher.java
@@ -159,12 +159,13 @@
+ serviceInfo.packageName + "/" + serviceInfo.name);
return false;
}
- if (!hasCaptureVideoPermission(serviceInfo.packageName)) {
- // If the service does not have permission to capture video then it
- // isn't going to be terribly useful as a remote display, is it?
- // Kind of makes you wonder what it's doing there in the first place.
+ if (mPackageManager.checkPermission(Manifest.permission.REMOTE_DISPLAY_PROVIDER,
+ serviceInfo.packageName) != PackageManager.PERMISSION_GRANTED) {
+ // If the service does not have this permission then the system will not bind to it.
+ // This is to prevent non privileged apps declaring themselves as remote display
+ // providers just to be bound to by the system and keep their process alive.
Slog.w(TAG, "Ignoring remote display provider service because it does not "
- + "have the CAPTURE_VIDEO_OUTPUT or CAPTURE_SECURE_VIDEO_OUTPUT "
+ + "have the REMOTE_DISPLAY_PROVIDER "
+ "permission: " + serviceInfo.packageName + "/" + serviceInfo.name);
return false;
}
@@ -172,18 +173,6 @@
return true;
}
- private boolean hasCaptureVideoPermission(String packageName) {
- if (mPackageManager.checkPermission(Manifest.permission.CAPTURE_VIDEO_OUTPUT,
- packageName) == PackageManager.PERMISSION_GRANTED) {
- return true;
- }
- if (mPackageManager.checkPermission(Manifest.permission.CAPTURE_SECURE_VIDEO_OUTPUT,
- packageName) == PackageManager.PERMISSION_GRANTED) {
- return true;
- }
- return false;
- }
-
private int findProvider(String packageName, String className) {
int count = mProviders.size();
for (int i = 0; i < count; i++) {
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 20eebe7..1798617 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -2311,22 +2311,22 @@
}
@Override
- public boolean areAppOverlaysAllowed(String pkg) {
- return areAppOverlaysAllowedForPackage(pkg, Binder.getCallingUid());
+ public boolean areBubblesAllowed(String pkg) {
+ return areBubblesAllowedForPackage(pkg, Binder.getCallingUid());
}
@Override
- public boolean areAppOverlaysAllowedForPackage(String pkg, int uid) {
- enforceSystemOrSystemUIOrSamePackage("Caller not system or systemui or same package",
- pkg);
- return mPreferencesHelper.areAppOverlaysAllowed(pkg, uid);
+ public boolean areBubblesAllowedForPackage(String pkg, int uid) {
+ enforceSystemOrSystemUIOrSamePackage(pkg,
+ "Caller not system or systemui or same package");
+ return mPreferencesHelper.areBubblessAllowed(pkg, uid);
}
@Override
- public void setAppOverlaysAllowed(String pkg, int uid, boolean allowed) {
+ public void setBubblesAllowed(String pkg, int uid, boolean allowed) {
checkCallerIsSystem();
- mPreferencesHelper.setAppOverlaysAllowed(pkg, uid, allowed);
+ mPreferencesHelper.setBubblesAllowed(pkg, uid, allowed);
handleSavePolicyFile();
}
@@ -3509,7 +3509,7 @@
getContext().sendBroadcastAsUser(new Intent(
NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED)
.setPackage(pkg)
- .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY),
+ .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT),
UserHandle.of(userId), null);
handleSavePolicyFile();
}
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index 28f6972..7a21aa2 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -81,7 +81,7 @@
private static final String ATT_NAME = "name";
private static final String ATT_UID = "uid";
private static final String ATT_ID = "id";
- private static final String ATT_APP_OVERLAY = "overlay";
+ private static final String ATT_ALLOW_BUBBLE = "allow_bubble";
private static final String ATT_PRIORITY = "priority";
private static final String ATT_VISIBILITY = "visibility";
private static final String ATT_IMPORTANCE = "importance";
@@ -94,8 +94,9 @@
private static final int DEFAULT_VISIBILITY = NotificationManager.VISIBILITY_NO_OVERRIDE;
private static final int DEFAULT_IMPORTANCE = NotificationManager.IMPORTANCE_UNSPECIFIED;
private static final boolean DEFAULT_SHOW_BADGE = true;
- private static final boolean DEFAULT_ALLOW_APP_OVERLAY = true;
+ private static final boolean DEFAULT_ALLOW_BUBBLE = true;
private static final boolean DEFAULT_OEM_LOCKED_IMPORTANCE = false;
+
/**
* Default value for what fields are user locked. See {@link LockableAppFields} for all lockable
* fields.
@@ -108,7 +109,7 @@
@IntDef({LockableAppFields.USER_LOCKED_IMPORTANCE})
public @interface LockableAppFields {
int USER_LOCKED_IMPORTANCE = 0x00000001;
- int USER_LOCKED_APP_OVERLAY = 0x00000002;
+ int USER_LOCKED_BUBBLE = 0x00000002;
}
// pkg|uid => PackagePreferences
@@ -176,7 +177,7 @@
XmlUtils.readBooleanAttribute(
parser, ATT_SHOW_BADGE, DEFAULT_SHOW_BADGE),
XmlUtils.readBooleanAttribute(
- parser, ATT_APP_OVERLAY, DEFAULT_ALLOW_APP_OVERLAY));
+ parser, ATT_ALLOW_BUBBLE, DEFAULT_ALLOW_BUBBLE));
r.importance = XmlUtils.readIntAttribute(
parser, ATT_IMPORTANCE, DEFAULT_IMPORTANCE);
r.priority = XmlUtils.readIntAttribute(
@@ -272,11 +273,11 @@
private PackagePreferences getOrCreatePackagePreferences(String pkg, int uid) {
return getOrCreatePackagePreferences(pkg, uid,
DEFAULT_IMPORTANCE, DEFAULT_PRIORITY, DEFAULT_VISIBILITY, DEFAULT_SHOW_BADGE,
- DEFAULT_ALLOW_APP_OVERLAY);
+ DEFAULT_ALLOW_BUBBLE);
}
private PackagePreferences getOrCreatePackagePreferences(String pkg, int uid, int importance,
- int priority, int visibility, boolean showBadge, boolean allowAppOverlay) {
+ int priority, int visibility, boolean showBadge, boolean allowBubble) {
final String key = packagePreferencesKey(pkg, uid);
synchronized (mPackagePreferences) {
PackagePreferences
@@ -290,7 +291,7 @@
r.priority = priority;
r.visibility = visibility;
r.showBadge = showBadge;
- r.appOverlay = allowAppOverlay;
+ r.allowBubble = allowBubble;
try {
createDefaultChannelIfNeeded(r);
@@ -392,7 +393,7 @@
|| r.channels.size() > 0
|| r.groups.size() > 0
|| r.delegate != null
- || r.appOverlay != DEFAULT_ALLOW_APP_OVERLAY;
+ || r.allowBubble != DEFAULT_ALLOW_BUBBLE;
if (hasNonDefaultSettings) {
out.startTag(null, TAG_PACKAGE);
out.attribute(null, ATT_NAME, r.pkg);
@@ -405,8 +406,8 @@
if (r.visibility != DEFAULT_VISIBILITY) {
out.attribute(null, ATT_VISIBILITY, Integer.toString(r.visibility));
}
- if (r.appOverlay != DEFAULT_ALLOW_APP_OVERLAY) {
- out.attribute(null, ATT_APP_OVERLAY, Boolean.toString(r.appOverlay));
+ if (r.allowBubble != DEFAULT_ALLOW_BUBBLE) {
+ out.attribute(null, ATT_ALLOW_BUBBLE, Boolean.toString(r.allowBubble));
}
out.attribute(null, ATT_SHOW_BADGE, Boolean.toString(r.showBadge));
out.attribute(null, ATT_APP_USER_LOCKED_FIELDS,
@@ -452,14 +453,28 @@
out.endTag(null, TAG_RANKING);
}
- public void setAppOverlaysAllowed(String pkg, int uid, boolean allowed) {
+ /**
+ * Sets whether bubbles are allowed.
+ *
+ * @param pkg the package to allow or not allow bubbles for.
+ * @param uid the uid to allow or not allow bubbles for.
+ * @param allowed whether bubbles are allowed.
+ */
+ public void setBubblesAllowed(String pkg, int uid, boolean allowed) {
PackagePreferences p = getOrCreatePackagePreferences(pkg, uid);
- p.appOverlay = allowed;
- p.lockedAppFields = p.lockedAppFields | LockableAppFields.USER_LOCKED_APP_OVERLAY;
+ p.allowBubble = allowed;
+ p.lockedAppFields = p.lockedAppFields | LockableAppFields.USER_LOCKED_BUBBLE;
}
- public boolean areAppOverlaysAllowed(String pkg, int uid) {
- return getOrCreatePackagePreferences(pkg, uid).appOverlay;
+ /**
+ * Whether bubbles are allowed.
+ *
+ * @param pkg the package to check if bubbles are allowed for
+ * @param uid the uid to check if bubbles are allowed for.
+ * @return whether bubbles are allowed.
+ */
+ public boolean areBubblessAllowed(String pkg, int uid) {
+ return getOrCreatePackagePreferences(pkg, uid).allowBubble;
}
public int getAppLockedFields(String pkg, int uid) {
@@ -1232,8 +1247,8 @@
if (original.canShowBadge() != update.canShowBadge()) {
update.lockFields(NotificationChannel.USER_LOCKED_SHOW_BADGE);
}
- if (original.isAppOverlayAllowed() != update.isAppOverlayAllowed()) {
- update.lockFields(NotificationChannel.USER_LOCKED_ALLOW_APP_OVERLAY);
+ if (original.isBubbleAllowed() != update.isBubbleAllowed()) {
+ update.lockFields(NotificationChannel.USER_LOCKED_ALLOW_BUBBLE);
}
}
@@ -1654,7 +1669,7 @@
int priority = DEFAULT_PRIORITY;
int visibility = DEFAULT_VISIBILITY;
boolean showBadge = DEFAULT_SHOW_BADGE;
- boolean appOverlay = DEFAULT_ALLOW_APP_OVERLAY;
+ boolean allowBubble = DEFAULT_ALLOW_BUBBLE;
int lockedAppFields = DEFAULT_LOCKED_APP_FIELDS;
boolean oemLockedImportance = DEFAULT_OEM_LOCKED_IMPORTANCE;
List<String> futureOemLockedChannels = new ArrayList<>();
diff --git a/services/core/java/com/android/server/om/IdmapManager.java b/services/core/java/com/android/server/om/IdmapManager.java
index 16143d3..74fbea1 100644
--- a/services/core/java/com/android/server/om/IdmapManager.java
+++ b/services/core/java/com/android/server/om/IdmapManager.java
@@ -24,11 +24,14 @@
import android.annotation.NonNull;
import android.content.om.OverlayInfo;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
+import android.os.Build.VERSION_CODES;
import android.os.IBinder;
import android.os.IIdmap2;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.SystemProperties;
import android.os.UserHandle;
import android.util.Slog;
@@ -51,6 +54,13 @@
private final Installer mInstaller;
private IIdmap2 mIdmap2Service;
+ private static final boolean VENDOR_IS_Q_OR_LATER;
+ static {
+ // STOPSHIP(b/119390857): Check api version once Q sdk version is finalized
+ final String value = SystemProperties.get("ro.vndk.version", "Q");
+ VENDOR_IS_Q_OR_LATER = value.equals("Q") || value.equals("q");
+ }
+
IdmapManager(final Installer installer) {
mInstaller = installer;
if (FEATURE_FLAG_IDMAP2) {
@@ -69,10 +79,13 @@
final String overlayPath = overlayPackage.applicationInfo.getBaseCodePath();
try {
if (FEATURE_FLAG_IDMAP2) {
- if (mIdmap2Service.verifyIdmap(overlayPath, userId)) {
+ int policies = determineFulfilledPolicies(overlayPackage);
+ boolean enforce = enforceOverlayable(overlayPackage);
+ if (mIdmap2Service.verifyIdmap(overlayPath, policies, enforce, userId)) {
return true;
}
- return mIdmap2Service.createIdmap(targetPath, overlayPath, userId) != null;
+ return mIdmap2Service.createIdmap(targetPath, overlayPath, policies, enforce,
+ userId) != null;
} else {
mInstaller.idmap(targetPath, overlayPath, sharedGid);
return true;
@@ -156,4 +169,71 @@
}, SECOND_IN_MILLIS);
}
}
+
+ /**
+ * Checks if overlayable and policies should be enforced on the specified overlay for backwards
+ * compatibility with pre-Q overlays.
+ */
+ private boolean enforceOverlayable(@NonNull final PackageInfo overlayPackage) {
+ final ApplicationInfo ai = overlayPackage.applicationInfo;
+ if (ai.targetSdkVersion >= VERSION_CODES.Q) {
+ // Always enforce policies for overlays targeting Q+.
+ return true;
+ }
+
+ if (ai.isVendor() && !VENDOR_IS_Q_OR_LATER) {
+ // If the overlay is on a pre-Q vendor partition, do not enforce overlayable
+ // restrictions on this overlay because the pre-Q platform has no understanding of
+ // overlayable.
+ return false;
+ }
+
+ // Do not enforce overlayable restrictions on pre-Q overlays signed with the
+ // platform signature.
+ return !ai.isSignedWithPlatformKey();
+ }
+
+ /**
+ * Retrieves a bitmask for idmap2 that represents the policies the specified overlay fulfills.
+ * @throws SecurityException if the overlay is not allowed to overlay any resource
+ */
+ private int determineFulfilledPolicies(@NonNull final PackageInfo overlayPackage)
+ throws SecurityException {
+ final ApplicationInfo ai = overlayPackage.applicationInfo;
+ final boolean overlayIsQOrLater = ai.targetSdkVersion >= VERSION_CODES.Q;
+
+ int fulfilledPolicies = 0;
+
+ // TODO(b/119402606) : Add signature policy
+
+ // Vendor partition (/vendor)
+ if (ai.isVendor()) {
+ if (overlayIsQOrLater) {
+ fulfilledPolicies |= IIdmap2.POLICY_VENDOR_PARTITION;
+ } else if (VENDOR_IS_Q_OR_LATER) {
+ throw new SecurityException("Overlay must target Q sdk or higher");
+ }
+ }
+
+ // Product partition (/product)
+ if (ai.isProduct()) {
+ if (overlayIsQOrLater) {
+ fulfilledPolicies |= IIdmap2.POLICY_PRODUCT_PARTITION;
+ } else {
+ throw new SecurityException("Overlay must target Q sdk or higher");
+ }
+ }
+
+ // System partition (/system)
+ if (ai.isSystemApp()) {
+ if (overlayIsQOrLater) {
+ fulfilledPolicies |= IIdmap2.POLICY_SYSTEM_PARTITION;
+ } else {
+ throw new SecurityException("Overlay must target Q sdk or higher");
+ }
+ }
+
+ // All overlays can overlay resources with the public policy
+ return fulfilledPolicies | IIdmap2.POLICY_PUBLIC;
+ }
}
diff --git a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
index b0d2704..1cbf0bf 100644
--- a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
+++ b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
@@ -270,7 +270,9 @@
Slog.d(TAG, "onTargetPackageUpgraded packageName=" + packageName + " userId=" + userId);
}
- updateAllOverlaysForTarget(packageName, userId, 0);
+ if (updateAllOverlaysForTarget(packageName, userId, 0)) {
+ mListener.onOverlaysChanged(packageName, userId);
+ }
}
void onTargetPackageRemoved(@NonNull final String packageName, final int userId) {
diff --git a/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java b/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java
index faa4714..1178cc1 100644
--- a/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java
+++ b/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java
@@ -17,7 +17,9 @@
package com.android.server.os;
import android.annotation.RequiresPermission;
+import android.app.AppOpsManager;
import android.content.Context;
+import android.os.Binder;
import android.os.BugreportParams;
import android.os.IDumpstate;
import android.os.IDumpstateListener;
@@ -46,9 +48,11 @@
private IDumpstate mDs = null;
private final Context mContext;
+ private final AppOpsManager mAppOps;
BugreportManagerServiceImpl(Context context) {
mContext = context;
+ mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
}
@Override
@@ -60,21 +64,24 @@
throw new UnsupportedOperationException("setListener is not allowed on this service");
}
-
@Override
@RequiresPermission(android.Manifest.permission.DUMP)
- public void startBugreport(FileDescriptor bugreportFd, FileDescriptor screenshotFd,
+ public void startBugreport(int callingUidUnused, String callingPackage,
+ FileDescriptor bugreportFd, FileDescriptor screenshotFd,
int bugreportMode, IDumpstateListener listener) throws RemoteException {
-
+ int callingUid = Binder.getCallingUid();
+ // TODO(b/111441001): validate all arguments & ensure primary user
validate(bugreportMode);
+ mAppOps.checkPackage(callingUid, callingPackage);
mDs = getDumpstateService();
if (mDs == null) {
Slog.w(TAG, "Unable to get bugreport service");
// TODO(b/111441001): pass error on listener
return;
}
- mDs.startBugreport(bugreportFd, screenshotFd, bugreportMode, listener);
+ mDs.startBugreport(callingUid, callingPackage,
+ bugreportFd, screenshotFd, bugreportMode, listener);
}
private boolean validate(@BugreportParams.BugreportMode int mode) {
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index d6ab5f7..65fc982 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -27,24 +27,29 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageInfo;
import android.os.BatteryManager;
import android.os.Environment;
import android.os.ServiceManager;
import android.os.SystemProperties;
+import android.os.UserHandle;
import android.os.storage.StorageManager;
import android.util.ArraySet;
import android.util.Log;
+import android.util.StatsLog;
-import com.android.server.pm.dex.DexManager;
+import com.android.internal.util.ArrayUtils;
import com.android.server.LocalServices;
import com.android.server.PinnerService;
+import com.android.server.pm.dex.DexManager;
import com.android.server.pm.dex.DexoptOptions;
import java.io.File;
+import java.nio.file.Paths;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* {@hide}
@@ -289,6 +294,50 @@
return result;
}
+ /**
+ * Get the size of the directory. It uses recursion to go over all files.
+ * @param f
+ * @return
+ */
+ private long getDirectorySize(File f) {
+ long size = 0;
+ if (f.isDirectory()) {
+ for (File file: f.listFiles()) {
+ size += getDirectorySize(file);
+ }
+ } else {
+ size = f.length();
+ }
+ return size;
+ }
+
+ /**
+ * Get the size of a package.
+ * @param pkg
+ */
+ private long getPackageSize(PackageManagerService pm, String pkg) {
+ PackageInfo info = pm.getPackageInfo(pkg, 0, UserHandle.USER_SYSTEM);
+ long size = 0;
+ if (info != null && info.applicationInfo != null) {
+ File path = Paths.get(info.applicationInfo.sourceDir).toFile();
+ if (path.isFile()) {
+ path = path.getParentFile();
+ }
+ size += getDirectorySize(path);
+ if (!ArrayUtils.isEmpty(info.applicationInfo.splitSourceDirs)) {
+ for (String splitSourceDir : info.applicationInfo.splitSourceDirs) {
+ path = Paths.get(splitSourceDir).toFile();
+ if (path.isFile()) {
+ path = path.getParentFile();
+ }
+ size += getDirectorySize(path);
+ }
+ }
+ return size;
+ }
+ return 0;
+ }
+
private int optimizePackages(PackageManagerService pm, ArraySet<String> pkgs,
long lowStorageThreshold, boolean is_for_primary_dex,
ArraySet<String> failedPackageNames) {
@@ -315,8 +364,10 @@
int reason;
boolean downgrade;
+ long package_size_before = 0; //used when the app is downgraded
// Downgrade unused packages.
if (unusedPackages.contains(pkg) && shouldDowngrade) {
+ package_size_before = getPackageSize(pm, pkg);
// This applies for system apps or if packages location is not a directory, i.e.
// monolithic install.
if (is_for_primary_dex && !pm.canHaveOatDir(pkg)) {
@@ -366,6 +417,10 @@
synchronized (failedPackageNames) {
failedPackageNames.remove(pkg);
}
+ if (downgrade) {
+ StatsLog.write(StatsLog.APP_DOWNGRADED, pkg, package_size_before,
+ getPackageSize(pm, pkg), /*aggressive=*/ false);
+ }
}
}
notifyPinService(updatedPackages);
diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java
index a5c083e..8a6105c 100644
--- a/services/core/java/com/android/server/pm/Installer.java
+++ b/services/core/java/com/android/server/pm/Installer.java
@@ -621,6 +621,14 @@
throw new InstallerException("Invalid instruction set: " + instructionSet);
}
+ public boolean compileLayouts(String apkPath, String packageName, String outDexFile, int uid) {
+ try {
+ return mInstalld.compileLayouts(apkPath, packageName, outDexFile, uid);
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
public static class InstallerException extends Exception {
public InstallerException(String detailMessage) {
super(detailMessage);
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index d1a67bb..09fe26d 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -239,6 +239,7 @@
import android.os.storage.StorageManagerInternal;
import android.os.storage.VolumeInfo;
import android.os.storage.VolumeRecord;
+import android.permission.PermissionControllerManager;
import android.provider.MediaStore;
import android.provider.Settings.Global;
import android.provider.Settings.Secure;
@@ -310,6 +311,7 @@
import com.android.server.pm.dex.DexManager;
import com.android.server.pm.dex.DexoptOptions;
import com.android.server.pm.dex.PackageDexUsage;
+import com.android.server.pm.dex.ViewCompiler;
import com.android.server.pm.permission.BasePermission;
import com.android.server.pm.permission.DefaultPermissionGrantPolicy;
import com.android.server.pm.permission.DefaultPermissionGrantPolicy.DefaultPermissionGrantedCallback;
@@ -317,7 +319,6 @@
import com.android.server.pm.permission.PermissionManagerInternal.PermissionCallback;
import com.android.server.pm.permission.PermissionManagerService;
import com.android.server.pm.permission.PermissionsState;
-import com.android.server.pm.permission.PermissionsState.PermissionState;
import com.android.server.security.VerityUtils;
import com.android.server.storage.DeviceStorageMonitorInternal;
import com.android.server.wm.ActivityTaskManagerInternal;
@@ -370,6 +371,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -443,6 +445,11 @@
private static final boolean ENABLE_FREE_CACHE_V2 =
SystemProperties.getBoolean("fw.free_cache_v2", true);
+ private static final long BACKUP_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(60);
+
+ private static final boolean PRECOMPILED_LAYOUT_ENABLED =
+ SystemProperties.getBoolean("view.precompiled_layout_enabled", false);
+
private static final int RADIO_UID = Process.PHONE_UID;
private static final int LOG_UID = Process.LOG_UID;
private static final int NFC_UID = Process.NFC_UID;
@@ -885,6 +892,8 @@
// is used by other apps).
private final DexManager mDexManager;
+ private final ViewCompiler mViewCompiler;
+
private AtomicInteger mNextMoveId = new AtomicInteger();
private final MoveCallbacks mMoveCallbacks;
@@ -1339,6 +1348,8 @@
final @Nullable String mSystemTextClassifierPackage;
final @Nullable String mWellbeingPackage;
final @Nullable String mDocumenterPackage;
+ final @Nullable String mConfiguratorPackage;
+ final @Nullable String mAppPredictionServicePackage;
final @NonNull String mServicesSystemSharedLibraryPackageName;
final @NonNull String mSharedSystemSharedLibraryPackageName;
@@ -1455,8 +1466,9 @@
Trace.asyncTraceEnd(TRACE_TAG_PACKAGE_MANAGER, args.traceMethod,
args.traceCookie);
}
- } else {
- Slog.e(TAG, "Bogus post-install token " + msg.arg1);
+ } else if (DEBUG_INSTALL) {
+ // No post-install when we run restore from installExistingPackageForUser
+ Slog.i(TAG, "Nothing to do for post-install token " + msg.arg1);
}
Trace.asyncTraceEnd(TRACE_TAG_PACKAGE_MANAGER, "postInstall", msg.arg1);
@@ -2256,6 +2268,8 @@
mArtManagerService = new ArtManagerService(mContext, this, installer, mInstallLock);
mMoveCallbacks = new MoveCallbacks(FgThread.get().getLooper());
+ mViewCompiler = new ViewCompiler(mInstallLock, mInstaller);
+
mOnPermissionChangeListeners = new OnPermissionChangeListeners(
FgThread.get().getLooper());
@@ -2862,6 +2876,9 @@
mWellbeingPackage = getWellbeingPackageName();
mDocumenterPackage = getDocumenterPackageName();
+ mConfiguratorPackage =
+ mContext.getString(R.string.config_deviceConfiguratorPackageName);
+ mAppPredictionServicePackage = getAppPredictionServicePackageName();
// Now that we know all of the shared libraries, update all clients to have
// the correct library paths.
@@ -3744,7 +3761,7 @@
/**
* Returns whether or not a full application can see an instant application.
* <p>
- * Currently, there are three cases in which this can occur:
+ * Currently, there are four cases in which this can occur:
* <ol>
* <li>The calling application is a "special" process. Special processes
* are those with a UID < {@link Process#FIRST_APPLICATION_UID}.</li>
@@ -3752,6 +3769,7 @@
* {@link android.Manifest.permission#ACCESS_INSTANT_APPS}.</li>
* <li>The calling application is the default launcher on the
* system partition.</li>
+ * <li>The calling application is the default app prediction service.</li>
* </ol>
*/
private boolean canViewInstantApps(int callingUid, int userId) {
@@ -3769,6 +3787,11 @@
&& isCallerSameApp(homeComponent.getPackageName(), callingUid)) {
return true;
}
+ // TODO(b/122900055) Change/Remove this and replace with new permission role.
+ if (mAppPredictionServicePackage != null
+ && isCallerSameApp(mAppPredictionServicePackage, callingUid)) {
+ return true;
+ }
}
return false;
}
@@ -5484,13 +5507,13 @@
final int callingUserId = UserHandle.getUserId(callingUid);
final boolean isCallerInstantApp = getInstantAppPackageName(callingUid) != null;
// Map to base uids.
- uid1 = UserHandle.getAppId(uid1);
- uid2 = UserHandle.getAppId(uid2);
+ final int appId1 = UserHandle.getAppId(uid1);
+ final int appId2 = UserHandle.getAppId(uid2);
// reader
synchronized (mPackages) {
Signature[] s1;
Signature[] s2;
- Object obj = mSettings.getSettingLPr(uid1);
+ Object obj = mSettings.getSettingLPr(appId1);
if (obj != null) {
if (obj instanceof SharedUserSetting) {
if (isCallerInstantApp) {
@@ -5509,7 +5532,7 @@
} else {
return PackageManager.SIGNATURE_UNKNOWN_PACKAGE;
}
- obj = mSettings.getSettingLPr(uid2);
+ obj = mSettings.getSettingLPr(appId2);
if (obj != null) {
if (obj instanceof SharedUserSetting) {
if (isCallerInstantApp) {
@@ -5564,11 +5587,11 @@
final int callingUid = Binder.getCallingUid();
final int callingUserId = UserHandle.getUserId(callingUid);
// Map to base uids.
- uid = UserHandle.getAppId(uid);
+ final int appId = UserHandle.getAppId(uid);
// reader
synchronized (mPackages) {
final PackageParser.SigningDetails signingDetails;
- final Object obj = mSettings.getSettingLPr(uid);
+ final Object obj = mSettings.getSettingLPr(appId);
if (obj != null) {
if (obj instanceof SharedUserSetting) {
final boolean isCallerInstantApp = getInstantAppPackageName(callingUid) != null;
@@ -5684,10 +5707,10 @@
final int callingUid = Binder.getCallingUid();
final boolean isCallerInstantApp = getInstantAppPackageName(callingUid) != null;
final int userId = UserHandle.getUserId(uid);
- uid = UserHandle.getAppId(uid);
+ final int appId = UserHandle.getAppId(uid);
// reader
synchronized (mPackages) {
- Object obj = mSettings.getSettingLPr(uid);
+ final Object obj = mSettings.getSettingLPr(appId);
if (obj instanceof SharedUserSetting) {
if (isCallerInstantApp) {
return null;
@@ -5722,8 +5745,9 @@
if (getInstantAppPackageName(callingUid) != null) {
return null;
}
+ final int appId = UserHandle.getAppId(uid);
synchronized (mPackages) {
- Object obj = mSettings.getSettingLPr(UserHandle.getAppId(uid));
+ final Object obj = mSettings.getSettingLPr(appId);
if (obj instanceof SharedUserSetting) {
final SharedUserSetting sus = (SharedUserSetting) obj;
return sus.name + ":" + sus.userId;
@@ -5750,8 +5774,8 @@
final String[] names = new String[uids.length];
synchronized (mPackages) {
for (int i = uids.length - 1; i >= 0; i--) {
- final int uid = uids[i];
- Object obj = mSettings.getSettingLPr(UserHandle.getAppId(uid));
+ final int appId = UserHandle.getAppId(uids[i]);
+ final Object obj = mSettings.getSettingLPr(appId);
if (obj instanceof SharedUserSetting) {
final SharedUserSetting sus = (SharedUserSetting) obj;
names[i] = "shared:" + sus.name;
@@ -5799,8 +5823,9 @@
if (getInstantAppPackageName(callingUid) != null) {
return 0;
}
+ final int appId = UserHandle.getAppId(uid);
synchronized (mPackages) {
- Object obj = mSettings.getSettingLPr(UserHandle.getAppId(uid));
+ final Object obj = mSettings.getSettingLPr(appId);
if (obj instanceof SharedUserSetting) {
final SharedUserSetting sus = (SharedUserSetting) obj;
return sus.pkgFlags;
@@ -5821,8 +5846,9 @@
if (getInstantAppPackageName(callingUid) != null) {
return 0;
}
+ final int appId = UserHandle.getAppId(uid);
synchronized (mPackages) {
- Object obj = mSettings.getSettingLPr(UserHandle.getAppId(uid));
+ final Object obj = mSettings.getSettingLPr(appId);
if (obj instanceof SharedUserSetting) {
final SharedUserSetting sus = (SharedUserSetting) obj;
return sus.pkgPrivateFlags;
@@ -5842,10 +5868,10 @@
if (getInstantAppPackageName(Binder.getCallingUid()) != null) {
return false;
}
- uid = UserHandle.getAppId(uid);
+ final int appId = UserHandle.getAppId(uid);
// reader
synchronized (mPackages) {
- Object obj = mSettings.getSettingLPr(uid);
+ final Object obj = mSettings.getSettingLPr(appId);
if (obj instanceof SharedUserSetting) {
final SharedUserSetting sus = (SharedUserSetting) obj;
final Iterator<PackageSetting> it = sus.packages.iterator();
@@ -7866,8 +7892,13 @@
if (apex != null) {
try {
final ApexInfo[] activePkgs = apex.getActivePackages();
- for (ApexInfo apexInfo : activePkgs) {
- list.add(new PackageInfo(apexInfo));
+ for (ApexInfo ai : activePkgs) {
+ try {
+ list.add(PackageParser.generatePackageInfoFromApex(
+ new File(ai.packagePath), true /* collect certs */));
+ } catch (PackageParserException pe) {
+ throw new IllegalStateException("Unable to parse: " + ai, pe);
+ }
}
} catch (RemoteException e) {
Log.e(TAG, "Unable to retrieve packages from apexservice: " + e.toString());
@@ -9086,6 +9117,10 @@
pkgCompilationReason = PackageManagerService.REASON_BACKGROUND_DEXOPT;
}
+ if (PRECOMPILED_LAYOUT_ENABLED) {
+ mArtManagerService.compileLayouts(pkg);
+ }
+
// checkProfiles is false to avoid merging profiles during boot which
// might interfere with background compilation (b/28612421).
// Unfortunately this will also means that "pm.dexopt.boot=speed-profile" will
@@ -9230,6 +9265,21 @@
return performDexOpt(new DexoptOptions(packageName, compilerFilter, flags));
}
+ /**
+ * Ask the package manager to compile layouts in the given package.
+ */
+ @Override
+ public boolean compileLayouts(String packageName) {
+ PackageParser.Package pkg;
+ synchronized (mPackages) {
+ pkg = mPackages.get(packageName);
+ if (pkg == null) {
+ return false;
+ }
+ }
+ return mViewCompiler.compileLayouts(pkg);
+ }
+
/*package*/ boolean performDexOpt(DexoptOptions options) {
if (getInstantAppPackageName(Binder.getCallingUid()) != null) {
return false;
@@ -12720,6 +12770,11 @@
@Override
public int installExistingPackageAsUser(String packageName, int userId, int installFlags,
int installReason) {
+ if (DEBUG_INSTALL) {
+ Log.v(TAG, "installExistingPackageAsUser package=" + packageName + " userId=" + userId
+ + " installFlags=" + installFlags + " installReason=" + installReason);
+ }
+
final int callingUid = Binder.getCallingUid();
if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES)
!= PackageManager.PERMISSION_GRANTED
@@ -12790,6 +12845,11 @@
synchronized (mPackages) {
updateSequenceNumberLP(pkgSetting, new int[]{ userId });
}
+ // start async restore with no post-install since we finish install here
+ PackageInstalledInfo res =
+ createPackageInstalledInfo(PackageManager.INSTALL_SUCCEEDED);
+ res.pkg = pkgSetting.pkg;
+ restoreAndPostInstall(userId, res, null);
}
} finally {
Binder.restoreCallingIdentity(callingId);
@@ -13729,8 +13789,8 @@
}
}
for (InstallRequest request : installRequests) {
- resolvePackageInstalledInfo(request.args,
- request.installResult);
+ restoreAndPostInstall(request.args.user.getIdentifier(), request.installResult,
+ new PostInstallData(request.args, request.installResult));
}
});
}
@@ -13745,7 +13805,14 @@
return res;
}
- private void resolvePackageInstalledInfo(InstallArgs args, PackageInstalledInfo res) {
+ /** @param data Post-install is performed only if this is non-null. */
+ private void restoreAndPostInstall(
+ int userId, PackageInstalledInfo res, @Nullable PostInstallData data) {
+ if (DEBUG_INSTALL) {
+ Log.v(TAG, "restoreAndPostInstall userId=" + userId + " package="
+ + res.pkg.packageName);
+ }
+
// A restore should be performed at this point if (a) the install
// succeeded, (b) the operation is not an update, and (c) the new
// package has not opted out of backup participation.
@@ -13761,9 +13828,12 @@
int token;
if (mNextInstallToken < 0) mNextInstallToken = 1;
token = mNextInstallToken++;
+ if (data != null) {
+ mRunningInstalls.put(token, data);
+ } else if (DEBUG_INSTALL) {
+ Log.v(TAG, "No post-install required for " + token);
+ }
- PostInstallData data = new PostInstallData(args, res);
- mRunningInstalls.put(token, data);
if (DEBUG_INSTALL) Log.v(TAG, "+ starting restore round-trip " + token);
if (res.returnCode == PackageManager.INSTALL_SUCCEEDED && doRestore) {
@@ -13774,14 +13844,19 @@
IBackupManager bm = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE));
if (bm != null) {
+ // For backwards compatibility as USER_ALL previously routed directly to USER_SYSTEM
+ // in the BackupManager. USER_ALL is used in compatibility tests.
+ if (userId == UserHandle.USER_ALL) {
+ userId = UserHandle.USER_SYSTEM;
+ }
if (DEBUG_INSTALL) {
- Log.v(TAG, "token " + token + " to BM for possible restore");
+ Log.v(TAG, "token " + token + " to BM for possible restore for user " + userId);
}
Trace.asyncTraceBegin(TRACE_TAG_PACKAGE_MANAGER, "restore", token);
try {
- // TODO: http://b/22388012
- if (bm.isBackupServiceActive(UserHandle.USER_SYSTEM)) {
- bm.restoreAtInstall(res.pkg.applicationInfo.packageName, token);
+ if (bm.isBackupServiceActive(userId)) {
+ bm.restoreAtInstallForUser(
+ userId, res.pkg.applicationInfo.packageName, token);
} else {
doRestore = false;
}
@@ -16100,6 +16175,13 @@
&& ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) == 0);
if (performDexopt) {
+ // Compile the layout resources.
+ if (PRECOMPILED_LAYOUT_ENABLED) {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "compileLayouts");
+ mViewCompiler.compileLayouts(pkg);
+ Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+ }
+
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt");
// Do not run PackageDexOptimizer through the local performDexOpt
// method because `pkg` may not be in `mPackages` yet.
@@ -18940,7 +19022,8 @@
@GuardedBy("mPackages")
private int getUidTargetSdkVersionLockedLPr(int uid) {
- Object obj = mSettings.getSettingLPr(uid);
+ final int appId = UserHandle.getAppId(uid);
+ final Object obj = mSettings.getSettingLPr(appId);
if (obj instanceof SharedUserSetting) {
final SharedUserSetting sus = (SharedUserSetting) obj;
int vers = Build.VERSION_CODES.CUR_DEVELOPMENT;
@@ -19131,7 +19214,7 @@
// writer
synchronized (mPackages) {
PackageParser.Package pkg = mPackages.get(packageName);
- if (pkg == null || pkg.applicationInfo.uid != callingUid) {
+ if (pkg == null || !isCallerSameApp(packageName, callingUid)) {
if (mContext.checkCallingOrSelfPermission(
android.Manifest.permission.SET_PREFERRED_APPLICATIONS)
!= PackageManager.PERMISSION_GRANTED) {
@@ -19572,28 +19655,32 @@
throw new SecurityException("Only the system may call getPermissionGrantBackup()");
}
- ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
- try {
- final XmlSerializer serializer = new FastXmlSerializer();
- serializer.setOutput(dataStream, StandardCharsets.UTF_8.name());
- serializer.startDocument(null, true);
- serializer.startTag(null, TAG_PERMISSION_BACKUP);
+ AtomicReference<byte[]> backup = new AtomicReference<>();
+ mContext.getSystemService(PermissionControllerManager.class).getRuntimePermissionBackup(
+ UserHandle.of(userId), mContext.getMainExecutor(), (b) -> {
+ synchronized (backup) {
+ backup.set(b);
+ backup.notifyAll();
+ }
+ });
- synchronized (mPackages) {
- serializeRuntimePermissionGrantsLPr(serializer, userId);
- }
+ long start = System.currentTimeMillis();
+ synchronized (backup) {
+ while (backup.get() == null) {
+ long timeLeft = start + BACKUP_TIMEOUT_MILLIS - System.currentTimeMillis();
+ if (timeLeft <= 0) {
+ return null;
+ }
- serializer.endTag(null, TAG_PERMISSION_BACKUP);
- serializer.endDocument();
- serializer.flush();
- } catch (Exception e) {
- if (DEBUG_BACKUP) {
- Slog.e(TAG, "Unable to write default apps for backup", e);
+ try {
+ backup.wait(timeLeft);
+ } catch (InterruptedException ignored) {
+ return null;
+ }
}
- return null;
}
- return dataStream.toByteArray();
+ return backup.get();
}
@Override
@@ -19619,66 +19706,6 @@
}
@GuardedBy("mPackages")
- private void serializeRuntimePermissionGrantsLPr(XmlSerializer serializer, final int userId)
- throws IOException {
- serializer.startTag(null, TAG_ALL_GRANTS);
-
- final int N = mSettings.mPackages.size();
- for (int i = 0; i < N; i++) {
- final PackageSetting ps = mSettings.mPackages.valueAt(i);
- boolean pkgGrantsKnown = false;
-
- PermissionsState packagePerms = ps.getPermissionsState();
-
- for (PermissionState state : packagePerms.getRuntimePermissionStates(userId)) {
- final int grantFlags = state.getFlags();
- // only look at grants that are not system/policy fixed
- if ((grantFlags & SYSTEM_RUNTIME_GRANT_MASK) == 0) {
- final boolean isGranted = state.isGranted();
- // And only back up the user-twiddled state bits
- if (isGranted || (grantFlags & USER_RUNTIME_GRANT_MASK) != 0) {
- final String packageName = mSettings.mPackages.keyAt(i);
- if (!pkgGrantsKnown) {
- serializer.startTag(null, TAG_GRANT);
- serializer.attribute(null, ATTR_PACKAGE_NAME, packageName);
- pkgGrantsKnown = true;
- }
-
- final boolean userSet =
- (grantFlags & FLAG_PERMISSION_USER_SET) != 0;
- final boolean userFixed =
- (grantFlags & FLAG_PERMISSION_USER_FIXED) != 0;
- final boolean revoke =
- (grantFlags & FLAG_PERMISSION_REVOKE_ON_UPGRADE) != 0;
-
- serializer.startTag(null, TAG_PERMISSION);
- serializer.attribute(null, ATTR_PERMISSION_NAME, state.getName());
- if (isGranted) {
- serializer.attribute(null, ATTR_IS_GRANTED, "true");
- }
- if (userSet) {
- serializer.attribute(null, ATTR_USER_SET, "true");
- }
- if (userFixed) {
- serializer.attribute(null, ATTR_USER_FIXED, "true");
- }
- if (revoke) {
- serializer.attribute(null, ATTR_REVOKE_ON_UPGRADE, "true");
- }
- serializer.endTag(null, TAG_PERMISSION);
- }
- }
- }
-
- if (pkgGrantsKnown) {
- serializer.endTag(null, TAG_GRANT);
- }
- }
-
- serializer.endTag(null, TAG_ALL_GRANTS);
- }
-
- @GuardedBy("mPackages")
private void processRestoredPermissionGrantsLPr(XmlPullParser parser, int userId)
throws XmlPullParserException, IOException {
String pkgName = null;
@@ -19860,6 +19887,14 @@
.setPackage(launcherComponent.getPackageName());
mContext.sendBroadcastAsUser(launcherIntent, UserHandle.of(launcherUid));
}
+ // TODO(b/122900055) Change/Remove this and replace with new permission role.
+ if (mAppPredictionServicePackage != null) {
+ Intent predictorIntent = new Intent(PackageInstaller.ACTION_SESSION_COMMITTED)
+ .putExtra(PackageInstaller.EXTRA_SESSION, sessionInfo)
+ .putExtra(Intent.EXTRA_USER, UserHandle.of(userId))
+ .setPackage(mAppPredictionServicePackage);
+ mContext.sendBroadcastAsUser(predictorIntent, UserHandle.of(launcherUid));
+ }
}
}
@@ -20012,6 +20047,20 @@
return mContext.getString(R.string.config_defaultWellbeingPackage);
}
+ private String getAppPredictionServicePackageName() {
+ String flattenedAppPredictionServiceComponentName =
+ mContext.getString(R.string.config_defaultAppPredictionService);
+ if (flattenedAppPredictionServiceComponentName == null) {
+ return null;
+ }
+ ComponentName appPredictionServiceComponentName =
+ ComponentName.unflattenFromString(flattenedAppPredictionServiceComponentName);
+ if (appPredictionServiceComponentName == null) {
+ return null;
+ }
+ return appPredictionServiceComponentName.getPackageName();
+ }
+
@Override
public void setApplicationEnabledSetting(String appPackageName,
int newState, int flags, int userId, String callingPackage) {
@@ -23174,6 +23223,8 @@
return mWellbeingPackage;
case PackageManagerInternal.PACKAGE_DOCUMENTER:
return mDocumenterPackage;
+ case PackageManagerInternal.PACKAGE_CONFIGURATOR:
+ return mConfiguratorPackage;
}
return null;
}
@@ -23190,6 +23241,11 @@
}
@Override
+ public void setLocationExtraPackagesProvider(PackagesProvider provider) {
+ mDefaultPermissionPolicy.setLocationExtraPackagesProvider(provider);
+ }
+
+ @Override
public void setVoiceInteractionPackagesProvider(PackagesProvider provider) {
mDefaultPermissionPolicy.setVoiceInteractionPackagesProvider(provider);
}
@@ -23720,6 +23776,21 @@
public void setEnableRollbackCode(int token, int enableRollbackCode) {
PackageManagerService.this.setEnableRollbackCode(token, enableRollbackCode);
}
+
+ /**
+ * Ask the package manager to compile layouts in the given package.
+ */
+ @Override
+ public boolean compileLayouts(String packageName) {
+ PackageParser.Package pkg;
+ synchronized (mPackages) {
+ pkg = mPackages.get(packageName);
+ if (pkg == null) {
+ return false;
+ }
+ }
+ return mArtManagerService.compileLayouts(pkg);
+ }
}
@GuardedBy("mPackages")
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index c9d298c..022c1aa 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -40,6 +40,7 @@
import android.content.pm.PackageInfo;
import android.content.pm.PackageInstaller;
import android.content.pm.PackageInstaller.SessionParams;
+import android.content.pm.PackageManagerInternal;
import android.content.pm.PackageItemInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -1170,6 +1171,7 @@
String checkProfilesRaw = null;
boolean secondaryDex = false;
String split = null;
+ boolean compileLayouts = false;
String opt;
while ((opt = getNextOption()) != null) {
@@ -1189,6 +1191,9 @@
case "-r":
compilationReason = getNextArgRequired();
break;
+ case "--compile-layouts":
+ compileLayouts = true;
+ break;
case "--check-prof":
checkProfilesRaw = getNextArgRequired();
break;
@@ -1220,14 +1225,16 @@
}
}
- if (compilerFilter != null && compilationReason != null) {
- pw.println("Cannot use compilation filter (\"-m\") and compilation reason (\"-r\") " +
- "at the same time");
- return 1;
- }
- if (compilerFilter == null && compilationReason == null) {
- pw.println("Cannot run without any of compilation filter (\"-m\") and compilation " +
- "reason (\"-r\") at the same time");
+ final boolean compilerFilterGiven = compilerFilter != null;
+ final boolean compilationReasonGiven = compilationReason != null;
+ // Make sure exactly one of -m, -r, or --compile-layouts is given.
+ if ((!compilerFilterGiven && !compilationReasonGiven && !compileLayouts)
+ || (!compilerFilterGiven && compilationReasonGiven && compileLayouts)
+ || (compilerFilterGiven && !compilationReasonGiven && compileLayouts)
+ || (compilerFilterGiven && compilationReasonGiven && !compileLayouts)
+ || (compilerFilterGiven && compilationReasonGiven && compileLayouts)) {
+ pw.println("Must specify exactly one of compilation filter (\"-m\"), compilation " +
+ "reason (\"-r\"), or compile layouts (\"--compile-layouts\")");
return 1;
}
@@ -1241,15 +1248,16 @@
return 1;
}
- String targetCompilerFilter;
- if (compilerFilter != null) {
+ String targetCompilerFilter = null;
+ if (compilerFilterGiven) {
if (!DexFile.isValidCompilerFilter(compilerFilter)) {
pw.println("Error: \"" + compilerFilter +
"\" is not a valid compilation filter.");
return 1;
}
targetCompilerFilter = compilerFilter;
- } else {
+ }
+ if (compilationReasonGiven) {
int reason = -1;
for (int i = 0; i < PackageManagerServiceCompilerMapping.REASON_STRINGS.length; i++) {
if (PackageManagerServiceCompilerMapping.REASON_STRINGS[i].equals(
@@ -1291,12 +1299,19 @@
pw.flush();
}
- boolean result = secondaryDex
+ boolean result = true;
+ if (compileLayouts) {
+ PackageManagerInternal internal = LocalServices.getService(
+ PackageManagerInternal.class);
+ result = internal.compileLayouts(packageName);
+ } else {
+ result = secondaryDex
? mInterface.performDexOptSecondary(packageName,
targetCompilerFilter, forceCompilation)
: mInterface.performDexOptMode(packageName,
checkProfiles, targetCompilerFilter, forceCompilation,
true /* bootComplete */, split);
+ }
if (!result) {
failedPackages.add(packageName);
}
@@ -3004,6 +3019,7 @@
pw.println(" --check-prof (true | false): look at profiles when doing dexopt?");
pw.println(" --secondary-dex: compile app secondary dex files");
pw.println(" --split SPLIT: compile only the given split name");
+ pw.println(" --compile-layouts: compile layout resources for faster inflation");
pw.println("");
pw.println(" force-dex-opt PACKAGE");
pw.println(" Force immediate execution of dex opt for the given PACKAGE.");
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 95da209..b0f2326 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -2790,13 +2790,13 @@
// dataPath - path to package's data path
// seinfo - seinfo label for the app (assigned at install time)
// gids - supplementary gids this app launches with
+ // profileableFromShellFlag - 0 or 1 if the package is profileable from shell.
//
// NOTE: We prefer not to expose all ApplicationInfo flags for now.
//
// DO NOT MODIFY THIS FORMAT UNLESS YOU CAN ALSO MODIFY ITS USERS
// FROM NATIVE CODE. AT THE MOMENT, LOOK AT THE FOLLOWING SOURCES:
- // frameworks/base/libs/packagelistparser
- // system/core/run-as/run-as.c
+ // system/core/libpackagelistparser
//
sb.setLength(0);
sb.append(ai.packageName);
@@ -2816,6 +2816,8 @@
} else {
sb.append("none");
}
+ sb.append(" ");
+ sb.append(ai.isProfileableByShell() ? "1" : "0");
sb.append("\n");
writer.append(sb);
}
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java
index 83f0fde..563fd7f 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackage.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackage.java
@@ -20,8 +20,10 @@
import android.annotation.UserIdInt;
import android.content.ComponentName;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.pm.PackageInfo;
import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
import android.content.res.Resources;
import android.os.PersistableBundle;
import android.text.format.Formatter;
@@ -640,6 +642,55 @@
}
/**
+ * Returns a list of ShortcutInfos that match the given intent filter and the category of
+ * available ShareTarget definitions in this package.
+ */
+ public List<ShortcutManager.ShareShortcutInfo> getMatchingShareTargets(
+ @NonNull IntentFilter filter) {
+ final List<ShareTargetInfo> matchedTargets = new ArrayList<>();
+ for (int i = 0; i < mShareTargets.size(); i++) {
+ final ShareTargetInfo target = mShareTargets.get(i);
+ for (ShareTargetInfo.TargetData data : target.mTargetData) {
+ if (filter.hasDataType(data.mMimeType)) {
+ // Matched at least with one data type
+ matchedTargets.add(target);
+ break;
+ }
+ }
+ }
+
+ if (matchedTargets.isEmpty()) {
+ return new ArrayList<>();
+ }
+
+ // Get the list of all dynamic shortcuts in this package
+ final ArrayList<ShortcutInfo> shortcuts = new ArrayList<>();
+ findAll(shortcuts, ShortcutInfo::isDynamicVisible, ShortcutInfo.CLONE_REMOVE_FOR_LAUNCHER);
+
+ final List<ShortcutManager.ShareShortcutInfo> result = new ArrayList<>();
+ for (int i = 0; i < shortcuts.size(); i++) {
+ final ShortcutInfo si = shortcuts.get(i);
+ for (int j = 0; j < matchedTargets.size(); j++) {
+ // Shortcut must have all of share target categories
+ boolean hasAllCategories = true;
+ final ShareTargetInfo target = matchedTargets.get(j);
+ for (int q = 0; q < target.mCategories.length; q++) {
+ if (!si.getCategories().contains(target.mCategories[q])) {
+ hasAllCategories = false;
+ break;
+ }
+ }
+ if (hasAllCategories) {
+ result.add(new ShortcutManager.ShareShortcutInfo(si, new ComponentName(
+ getPackageName(), target.mTargetClass)));
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
* Return the filenames (excluding path names) of icon bitmap files from this package.
*/
public ArraySet<String> getUsedBitmapFiles() {
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index 2b773f4..fdbaba2 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -46,6 +46,7 @@
import android.content.pm.ParceledListSlice;
import android.content.pm.ResolveInfo;
import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
import android.content.pm.ShortcutServiceInternal;
import android.content.pm.ShortcutServiceInternal.ShortcutChangeListener;
import android.content.res.Resources;
@@ -2149,6 +2150,23 @@
}
}
+ @Override
+ public ParceledListSlice<ShortcutManager.ShareShortcutInfo> getShareTargets(String packageName,
+ IntentFilter filter, @UserIdInt int userId) {
+ verifyCaller(packageName, userId);
+
+ synchronized (mLock) {
+ throwIfUserLockedL(userId);
+
+ final List<ShortcutManager.ShareShortcutInfo> shortcutInfoList = new ArrayList<>();
+
+ final ShortcutUser user = getUserShortcutsLocked(userId);
+ user.forAllPackages(p -> shortcutInfoList.addAll(p.getMatchingShareTargets(filter)));
+
+ return new ParceledListSlice<>(shortcutInfoList);
+ }
+ }
+
@GuardedBy("mLock")
private ParceledListSlice<ShortcutInfo> getShortcutsWithQueryLocked(@NonNull String packageName,
@UserIdInt int userId, int cloneFlags, @NonNull Predicate<ShortcutInfo> query) {
diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java
index ac05ee8..7bab0bb 100644
--- a/services/core/java/com/android/server/pm/StagingManager.java
+++ b/services/core/java/com/android/server/pm/StagingManager.java
@@ -19,6 +19,7 @@
import android.annotation.NonNull;
import android.apex.ApexInfo;
import android.apex.ApexInfoList;
+import android.apex.ApexSessionInfo;
import android.apex.IApexService;
import android.content.pm.PackageInstaller;
import android.content.pm.PackageInstaller.SessionInfo;
@@ -130,7 +131,7 @@
ServiceManager.getService("apexservice"));
boolean success;
try {
- success = apex.submitStagedSession(sessionId, apexInfoList);
+ success = apex.submitStagedSession(sessionId, new int[0], apexInfoList);
} catch (RemoteException re) {
Slog.e(TAG, "Unable to contact apexservice", re);
return false;
@@ -138,7 +139,7 @@
return success;
}
- void preRebootVerification(@NonNull PackageInstallerSession session) {
+ private void preRebootVerification(@NonNull PackageInstallerSession session) {
boolean success = true;
if ((session.params.installFlags & PackageManager.INSTALL_APEX) != 0) {
@@ -170,6 +171,30 @@
}
}
+ private void resumeSession(@NonNull PackageInstallerSession session) {
+ // Check with apexservice whether the apex
+ // packages have been activated.
+ final IApexService apex = IApexService.Stub.asInterface(
+ ServiceManager.getService("apexservice"));
+ ApexSessionInfo apexSessionInfo;
+ try {
+ apexSessionInfo = apex.getStagedSessionInfo(session.sessionId);
+ } catch (RemoteException re) {
+ Slog.e(TAG, "Unable to contact apexservice", re);
+ // TODO should we retry here? Mark the session as failed?
+ return;
+ }
+ if (apexSessionInfo.isActivationFailed || apexSessionInfo.isUnknown) {
+ session.setStagedSessionFailed(SessionInfo.ACTIVATION_FAILED);
+ }
+ if (apexSessionInfo.isActivated) {
+ session.setStagedSessionApplied();
+ // TODO(b/118865310) if multi-package proceed with the installation of APKs.
+ }
+ // TODO(b/118865310) if (apexSessionInfo.isVerified) { /* mark this as staged in apexd */ }
+ // In every other case apexd will retry to apply the session at next boot.
+ }
+
void commitSession(@NonNull PackageInstallerSession session) {
updateStoredSession(session);
mBgHandler.post(() -> preRebootVerification(session));
@@ -190,8 +215,19 @@
void restoreSession(@NonNull PackageInstallerSession session) {
updateStoredSession(session);
- // TODO(b/118865310): This method is called when PackageInstaller is re-instantiated, e.g.
- // at reboot. Staging manager should at this point recover state from apexd and decide what
- // to do with the session.
+ // Check the state of the session and decide what to do next.
+ if (session.isStagedSessionFailed() || session.isStagedSessionApplied()) {
+ // Final states, nothing to do.
+ return;
+ }
+ if (!session.isStagedSessionReady()) {
+ // The framework got restarted before the pre-reboot verification could complete,
+ // restart the verification.
+ mBgHandler.post(() -> preRebootVerification(session));
+ } else {
+ // Session had already being marked ready. Start the checks to verify if there is any
+ // follow-up work.
+ mBgHandler.post(() -> resumeSession(session));
+ }
}
}
diff --git a/services/core/java/com/android/server/pm/dex/ArtManagerService.java b/services/core/java/com/android/server/pm/dex/ArtManagerService.java
index 1f05dc9..863bfd5 100644
--- a/services/core/java/com/android/server/pm/dex/ArtManagerService.java
+++ b/services/core/java/com/android/server/pm/dex/ArtManagerService.java
@@ -472,6 +472,33 @@
}
/**
+ * Compile layout resources in a given package.
+ */
+ public boolean compileLayouts(PackageParser.Package pkg) {
+ try {
+ final String packageName = pkg.packageName;
+ final String apkPath = pkg.baseCodePath;
+ final ApplicationInfo appInfo = pkg.applicationInfo;
+ final String outDexFile = appInfo.dataDir + "/code_cache/compiled_view.dex";
+ Log.i("PackageManager", "Compiling layouts in " + packageName + " (" + apkPath +
+ ") to " + outDexFile);
+ long callingId = Binder.clearCallingIdentity();
+ try {
+ synchronized (mInstallLock) {
+ return mInstaller.compileLayouts(apkPath, packageName, outDexFile,
+ appInfo.uid);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(callingId);
+ }
+ }
+ catch (Throwable e) {
+ Log.e("PackageManager", "Failed to compile layouts", e);
+ return false;
+ }
+ }
+
+ /**
* Build the profiles names for all the package code paths (excluding resource only paths).
* Return the map [code path -> profile name].
*/
diff --git a/services/core/java/com/android/server/pm/dex/DexLogger.java b/services/core/java/com/android/server/pm/dex/DexLogger.java
index 68a755b..78fa82c 100644
--- a/services/core/java/com/android/server/pm/dex/DexLogger.java
+++ b/services/core/java/com/android/server/pm/dex/DexLogger.java
@@ -28,7 +28,6 @@
import android.util.Slog;
import android.util.SparseArray;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.pm.Installer;
import com.android.server.pm.Installer.InstallerException;
@@ -53,21 +52,18 @@
private final IPackageManager mPackageManager;
private final PackageDynamicCodeLoading mPackageDynamicCodeLoading;
- private final Object mInstallLock;
- @GuardedBy("mInstallLock")
private final Installer mInstaller;
- public DexLogger(IPackageManager pms, Installer installer, Object installLock) {
- this(pms, installer, installLock, new PackageDynamicCodeLoading());
+ public DexLogger(IPackageManager pms, Installer installer) {
+ this(pms, installer, new PackageDynamicCodeLoading());
}
@VisibleForTesting
- DexLogger(IPackageManager pms, Installer installer, Object installLock,
+ DexLogger(IPackageManager pms, Installer installer,
PackageDynamicCodeLoading packageDynamicCodeLoading) {
mPackageManager = pms;
mPackageDynamicCodeLoading = packageDynamicCodeLoading;
mInstaller = installer;
- mInstallLock = installLock;
}
public Set<String> getAllPackagesWithDynamicCodeLoading() {
@@ -131,14 +127,16 @@
}
byte[] hash = null;
- synchronized (mInstallLock) {
- try {
- hash = mInstaller.hashSecondaryDexFile(filePath, packageName, appInfo.uid,
- appInfo.volumeUuid, storageFlags);
- } catch (InstallerException e) {
- Slog.e(TAG, "Got InstallerException when hashing file " + filePath
- + ": " + e.getMessage());
- }
+ try {
+ // Note that we do not take the install lock here. Hashing should never interfere
+ // with app update/compilation/removal. We may get anomalous results if a file
+ // changes while we hash it, but that can happen anyway and is harmless for our
+ // purposes.
+ hash = mInstaller.hashSecondaryDexFile(filePath, packageName, appInfo.uid,
+ appInfo.volumeUuid, storageFlags);
+ } catch (InstallerException e) {
+ Slog.e(TAG, "Got InstallerException when hashing file " + filePath
+ + ": " + e.getMessage());
}
String fileName = new File(filePath).getName();
diff --git a/services/core/java/com/android/server/pm/dex/DexManager.java b/services/core/java/com/android/server/pm/dex/DexManager.java
index e57d9d7..b546836 100644
--- a/services/core/java/com/android/server/pm/dex/DexManager.java
+++ b/services/core/java/com/android/server/pm/dex/DexManager.java
@@ -129,7 +129,7 @@
mPackageDexOptimizer = pdo;
mInstaller = installer;
mInstallLock = installLock;
- mDexLogger = new DexLogger(pms, installer, installLock);
+ mDexLogger = new DexLogger(pms, installer);
}
public DexLogger getDexLogger() {
diff --git a/services/core/java/com/android/server/pm/dex/ViewCompiler.java b/services/core/java/com/android/server/pm/dex/ViewCompiler.java
new file mode 100644
index 0000000..8d8e17e
--- /dev/null
+++ b/services/core/java/com/android/server/pm/dex/ViewCompiler.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2019 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.server.pm.dex;
+
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageParser;
+import android.os.Binder;
+import android.util.Log;
+import com.android.internal.annotations.GuardedBy;
+import com.android.server.pm.Installer;
+
+public class ViewCompiler {
+ private final Object mInstallLock;
+ @GuardedBy("mInstallLock")
+ private final Installer mInstaller;
+
+ public ViewCompiler(Object installLock, Installer installer) {
+ mInstallLock = installLock;
+ mInstaller = installer;
+ }
+
+ public boolean compileLayouts(PackageParser.Package pkg) {
+ try {
+ final String packageName = pkg.packageName;
+ final String apkPath = pkg.baseCodePath;
+ final ApplicationInfo appInfo = pkg.applicationInfo;
+ final String outDexFile = appInfo.dataDir + "/code_cache/compiled_view.dex";
+ Log.i("PackageManager", "Compiling layouts in " + packageName + " (" + apkPath +
+ ") to " + outDexFile);
+ long callingId = Binder.clearCallingIdentity();
+ try {
+ synchronized (mInstallLock) {
+ return mInstaller.compileLayouts(apkPath, packageName, outDexFile,
+ appInfo.uid);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(callingId);
+ }
+ } catch (Throwable e) {
+ Log.e("PackageManager", "Failed to compile layouts", e);
+ return false;
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/pm/permission/BasePermission.java b/services/core/java/com/android/server/pm/permission/BasePermission.java
index 3a49412..17f8347 100644
--- a/services/core/java/com/android/server/pm/permission/BasePermission.java
+++ b/services/core/java/com/android/server/pm/permission/BasePermission.java
@@ -247,6 +247,10 @@
public boolean isDocumenter() {
return (protectionLevel & PermissionInfo.PROTECTION_FLAG_DOCUMENTER) != 0;
}
+ public boolean isConfigurator() {
+ return (protectionLevel & PermissionInfo.PROTECTION_FLAG_CONFIGURATOR)
+ != 0;
+ }
public void transfer(@NonNull String origPackageName, @NonNull String newPackageName) {
if (!origPackageName.equals(sourcePackageName)) {
diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
index 789664d..d5af313 100644
--- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
+++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
@@ -225,6 +225,7 @@
private final Handler mHandler;
private PackagesProvider mLocationPackagesProvider;
+ private PackagesProvider mLocationExtraPackagesProvider;
private PackagesProvider mVoiceInteractionPackagesProvider;
private PackagesProvider mSmsAppPackagesProvider;
private PackagesProvider mDialerAppPackagesProvider;
@@ -270,6 +271,13 @@
}
}
+ /** Sets the provider for loction extra packages. */
+ public void setLocationExtraPackagesProvider(PackagesProvider provider) {
+ synchronized (mLock) {
+ mLocationExtraPackagesProvider = provider;
+ }
+ }
+
public void setVoiceInteractionPackagesProvider(PackagesProvider provider) {
synchronized (mLock) {
mVoiceInteractionPackagesProvider = provider;
@@ -403,6 +411,7 @@
Log.i(TAG, "Granting permissions to default platform handlers for user " + userId);
final PackagesProvider locationPackagesProvider;
+ final PackagesProvider locationExtraPackagesProvider;
final PackagesProvider voiceInteractionPackagesProvider;
final PackagesProvider smsAppPackagesProvider;
final PackagesProvider dialerAppPackagesProvider;
@@ -412,6 +421,7 @@
synchronized (mLock) {
locationPackagesProvider = mLocationPackagesProvider;
+ locationExtraPackagesProvider = mLocationExtraPackagesProvider;
voiceInteractionPackagesProvider = mVoiceInteractionPackagesProvider;
smsAppPackagesProvider = mSmsAppPackagesProvider;
dialerAppPackagesProvider = mDialerAppPackagesProvider;
@@ -424,6 +434,8 @@
? voiceInteractionPackagesProvider.getPackages(userId) : null;
String[] locationPackageNames = (locationPackagesProvider != null)
? locationPackagesProvider.getPackages(userId) : null;
+ String[] locationExtraPackageNames = (locationExtraPackagesProvider != null)
+ ? locationExtraPackagesProvider.getPackages(userId) : null;
String[] smsAppPackageNames = (smsAppPackagesProvider != null)
? smsAppPackagesProvider.getPackages(userId) : null;
String[] dialerAppPackageNames = (dialerAppPackagesProvider != null)
@@ -523,7 +535,7 @@
}
// Cell Broadcast Receiver
- grantPermissionsToSystemPackage(
+ grantSystemFixedPermissionsToSystemPackage(
getDefaultSystemHandlerActivityPackage(Intents.SMS_CB_RECEIVED_ACTION, userId),
userId, SMS_PERMISSIONS);
@@ -638,6 +650,12 @@
LOCATION_PERMISSIONS, ACTIVITY_RECOGNITION_PERMISSIONS);
}
}
+ if (locationExtraPackageNames != null) {
+ // Also grant location permission to location extra packages.
+ for (String packageName : locationExtraPackageNames) {
+ grantPermissionsToSystemPackage(packageName, userId, LOCATION_PERMISSIONS);
+ }
+ }
// Music
Intent musicIntent = new Intent(Intent.ACTION_VIEW)
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index 93964cb..30b5e49 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -1640,6 +1640,13 @@
// Special permissions for the system default text classifier.
allowed = true;
}
+ if (!allowed && bp.isConfigurator()
+ && pkg.packageName.equals(mPackageManagerInt.getKnownPackageName(
+ PackageManagerInternal.PACKAGE_CONFIGURATOR,
+ UserHandle.USER_SYSTEM))) {
+ // Special permissions for the device configurator.
+ allowed = true;
+ }
if (!allowed && bp.isWellbeing()
&& pkg.packageName.equals(mPackageManagerInt.getKnownPackageName(
PackageManagerInternal.PACKAGE_WELLBEING, UserHandle.USER_SYSTEM))) {
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 2060aef..41cab2d 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -84,8 +84,10 @@
import static android.view.WindowManagerGlobal.ADD_PERMISSION_DENIED;
import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_COVERED;
-import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_COVER_ABSENT;
-import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_UNCOVERED;
+import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs
+ .CAMERA_LENS_COVER_ABSENT;
+import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs
+ .CAMERA_LENS_UNCOVERED;
import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.LID_CLOSED;
import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.LID_OPEN;
import static com.android.server.wm.WindowManagerPolicyProto.KEYGUARD_DELEGATE;
@@ -478,6 +480,7 @@
int mShortPressOnSleepBehavior;
int mShortPressOnWindowBehavior;
boolean mHasSoftInput = false;
+ boolean mHapticTextHandleEnabled;
boolean mUseTvRouting;
int mVeryLongPressTimeout;
boolean mAllowStartActivityForLongPressOnPowerDuringSetup;
@@ -565,6 +568,10 @@
private boolean mScreenshotChordPowerKeyTriggered;
private long mScreenshotChordPowerKeyTime;
+ private static final long MOVING_DISPLAY_TO_TOP_DURATION_MILLIS = 10;
+ private volatile boolean mMovingDisplayToTopKeyTriggered;
+ private volatile long mMovingDisplayToTopKeyTime;
+
// Ringer toggle should reuse timing and triggering from screenshot power and a11y vol up
private int mRingerToggleChord = VOLUME_HUSH_OFF;
@@ -604,7 +611,7 @@
private boolean mAodShowing;
private boolean mPerDisplayFocusEnabled = false;
- private int mTopFocusedDisplayId = INVALID_DISPLAY;
+ private volatile int mTopFocusedDisplayId = INVALID_DISPLAY;
private static final int MSG_ENABLE_POINTER_LOCATION = 1;
private static final int MSG_DISABLE_POINTER_LOCATION = 2;
@@ -632,6 +639,7 @@
private static final int MSG_POWER_VERY_LONG_PRESS = 25;
private static final int MSG_NOTIFY_USER_ACTIVITY = 26;
private static final int MSG_RINGER_TOGGLE_CHORD = 27;
+ private static final int MSG_MOVE_DISPLAY_TO_TOP = 28;
private class PolicyHandler extends Handler {
@Override
@@ -727,6 +735,10 @@
case MSG_RINGER_TOGGLE_CHORD:
handleRingerChordGesture();
break;
+ case MSG_MOVE_DISPLAY_TO_TOP:
+ mWindowManagerFuncs.moveDisplayToTop(msg.arg1);
+ mMovingDisplayToTopKeyTriggered = false;
+ break;
}
}
}
@@ -808,6 +820,13 @@
}
};
+ private Runnable mPossibleVeryLongPressReboot = new Runnable() {
+ @Override
+ public void run() {
+ mActivityManagerInternal.prepareForPossibleShutdown();
+ }
+ };
+
private void handleRingerChordGesture() {
if (mRingerToggleChord == VOLUME_HUSH_OFF) {
return;
@@ -953,6 +972,8 @@
// Inform the StatusBar; but do not allow it to consume the event.
sendSystemKeyToStatusBarAsync(event.getKeyCode());
+ schedulePossibleVeryLongPressReboot();
+
// If the power key has still not yet been handled, then detect short
// press, long press, or multi press and decide what to do.
mPowerKeyHandled = hungUp || mScreenshotChordVolumeDownKeyTriggered
@@ -1056,6 +1077,7 @@
if (hasVeryLongPressOnPowerBehavior()) {
mHandler.removeMessages(MSG_POWER_VERY_LONG_PRESS);
}
+ cancelPossibleVeryLongPressReboot();
}
private void cancelPendingBackKeyAction() {
@@ -1815,6 +1837,9 @@
mAllowStartActivityForLongPressOnPowerDuringSetup = mContext.getResources().getBoolean(
com.android.internal.R.bool.config_allowStartActivityForLongPressOnPowerInSetup);
+ mHapticTextHandleEnabled = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_enableHapticTextHandle);
+
mUseTvRouting = AudioSystem.getPlatformType(mContext) == AudioSystem.PLATFORM_TELEVISION;
mHandleVolumeKeysInWM = mContext.getResources().getBoolean(
@@ -2270,9 +2295,8 @@
}
final LayoutParams attrs = win.getAttrs();
- final boolean showImeOverKeyguard = imeTarget != null && imeTarget.isVisibleLw() &&
- ((imeTarget.getAttrs().flags & FLAG_SHOW_WHEN_LOCKED) != 0
- || !canBeHiddenByKeyguardLw(imeTarget));
+ final boolean showImeOverKeyguard = imeTarget != null && imeTarget.isVisibleLw()
+ && (imeTarget.canShowWhenLocked() || !canBeHiddenByKeyguardLw(imeTarget));
// Show IME over the keyguard if the target allows it
boolean allowWhenLocked = (win.isInputMethodWindow() || imeTarget == this)
@@ -2280,7 +2304,7 @@
if (isKeyguardLocked() && isKeyguardOccluded()) {
// Show SHOW_WHEN_LOCKED windows if Keyguard is occluded.
- allowWhenLocked |= (attrs.flags & FLAG_SHOW_WHEN_LOCKED) != 0
+ allowWhenLocked |= win.canShowWhenLocked()
// Show error dialogs over apps that are shown on lockscreen
|| (attrs.privateFlags & PRIVATE_FLAG_SYSTEM_ERROR) != 0;
}
@@ -2558,12 +2582,25 @@
final int eventDisplayId = event.getDisplayId();
if (result == 0 && !mPerDisplayFocusEnabled
&& eventDisplayId != INVALID_DISPLAY && eventDisplayId != mTopFocusedDisplayId) {
- // Someone tries to send a key event to a display which doesn't have a focused window.
- // We drop the event here, or it will cause ANR.
- // TODO (b/121057974): The user may be confused about why the key doesn't work, so we
- // may need to deal with this problem.
- Slog.i(TAG, "Dropping this event targeting display #" + eventDisplayId
- + " because the focus is on display #" + mTopFocusedDisplayId);
+ // An event is targeting a non-focused display. Try to move the display to top so that
+ // it can become the focused display to interact with the user.
+ final long eventDownTime = event.getDownTime();
+ if (mMovingDisplayToTopKeyTime < eventDownTime) {
+ // We have not handled this event yet. Move the display to top, and then tell
+ // dispatcher to try again later.
+ mMovingDisplayToTopKeyTime = eventDownTime;
+ mMovingDisplayToTopKeyTriggered = true;
+ mHandler.sendMessage(
+ mHandler.obtainMessage(MSG_MOVE_DISPLAY_TO_TOP, eventDisplayId, 0));
+ return MOVING_DISPLAY_TO_TOP_DURATION_MILLIS;
+ } else if (mMovingDisplayToTopKeyTriggered) {
+ // The message has not been handled yet. Tell dispatcher to try again later.
+ return MOVING_DISPLAY_TO_TOP_DURATION_MILLIS;
+ }
+ // The target display is still not the top focused display. Drop the event because the
+ // display may not contain any window which can receive keys.
+ Slog.w(TAG, "Dropping key targeting non-focused display #" + eventDisplayId
+ + " keyCode=" + KeyEvent.keyCodeToString(event.getKeyCode()));
return -1;
}
return result;
@@ -4901,6 +4938,15 @@
}
}
+ private void schedulePossibleVeryLongPressReboot() {
+ mHandler.removeCallbacks(mPossibleVeryLongPressReboot);
+ mHandler.postDelayed(mPossibleVeryLongPressReboot, mVeryLongPressTimeout);
+ }
+
+ private void cancelPossibleVeryLongPressReboot() {
+ mHandler.removeCallbacks(mPossibleVeryLongPressReboot);
+ }
+
// TODO (multidisplay): Support multiple displays in WindowManagerPolicy.
private void updateScreenOffSleepToken(boolean acquire) {
if (acquire) {
@@ -5158,8 +5204,11 @@
case HapticFeedbackConstants.CLOCK_TICK:
case HapticFeedbackConstants.CONTEXT_CLICK:
return VibrationEffect.get(VibrationEffect.EFFECT_TICK);
- case HapticFeedbackConstants.KEYBOARD_RELEASE:
case HapticFeedbackConstants.TEXT_HANDLE_MOVE:
+ if (!mHapticTextHandleEnabled) {
+ return null;
+ }
+ case HapticFeedbackConstants.KEYBOARD_RELEASE:
case HapticFeedbackConstants.VIRTUAL_KEY_RELEASE:
case HapticFeedbackConstants.ENTRY_BUMP:
case HapticFeedbackConstants.DRAG_CROSSING:
@@ -5324,11 +5373,13 @@
pw.println(mAllowStartActivityForLongPressOnPowerDuringSetup);
pw.print(prefix);
pw.print("mHasSoftInput="); pw.print(mHasSoftInput);
- pw.print(" mDismissImeOnBackKeyPressed="); pw.println(mDismissImeOnBackKeyPressed);
+ pw.print(" mHapticTextHandleEnabled="); pw.println(mHapticTextHandleEnabled);
pw.print(prefix);
- pw.print("mIncallPowerBehavior=");
- pw.print(incallPowerBehaviorToString(mIncallPowerBehavior));
- pw.print(" mIncallBackBehavior=");
+ pw.print("mDismissImeOnBackKeyPressed="); pw.print(mDismissImeOnBackKeyPressed);
+ pw.print(" mIncallPowerBehavior=");
+ pw.println(incallPowerBehaviorToString(mIncallPowerBehavior));
+ pw.print(prefix);
+ pw.print("mIncallBackBehavior=");
pw.print(incallBackBehaviorToString(mIncallBackBehavior));
pw.print(" mEndcallBehavior=");
pw.println(endcallBehaviorToString(mEndcallBehavior));
diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
index 3da325c..e1a911e 100644
--- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java
+++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
@@ -468,6 +468,9 @@
/** @return true if this window desires key events. */
boolean canReceiveKeys();
+ /** @return true if the window can show over keyguard. */
+ boolean canShowWhenLocked();
+
/**
* Writes {@link com.android.server.wm.IdentifierProto} to stream.
*/
@@ -634,6 +637,12 @@
* Notifies window manager that user is switched.
*/
void onUserSwitched();
+
+ /**
+ * Hint to window manager that the user is interacting with a display that should be treated
+ * as the top display.
+ */
+ void moveDisplayToTop(int displayId);
}
/**
diff --git a/services/core/java/com/android/server/policy/role/LegacyRoleResolutionPolicy.java b/services/core/java/com/android/server/policy/role/LegacyRoleResolutionPolicy.java
index 45c975b..055c941 100644
--- a/services/core/java/com/android/server/policy/role/LegacyRoleResolutionPolicy.java
+++ b/services/core/java/com/android/server/policy/role/LegacyRoleResolutionPolicy.java
@@ -62,6 +62,8 @@
mContext.getContentResolver(),
Settings.Secure.SMS_DEFAULT_APPLICATION, userId);
+ // TODO: STOPSHIP: Remove the following code once we remove default_sms_application
+ // and use the new config_defaultRoleHolders.
if (result == null) {
Collection<SmsApplication.SmsApplicationData> applications =
SmsApplication.getApplicationCollectionAsUser(mContext, userId);
diff --git a/services/core/java/com/android/server/role/RoleManagerService.java b/services/core/java/com/android/server/role/RoleManagerService.java
index b488337..5516b23 100644
--- a/services/core/java/com/android/server/role/RoleManagerService.java
+++ b/services/core/java/com/android/server/role/RoleManagerService.java
@@ -229,9 +229,12 @@
// Any role for which we have a record are already migrated
RoleUserState userState = getOrCreateUserState(userId);
if (!userState.isRoleAvailable(role)) {
- userState.addRoleName(role);
List<String> roleHolders = mLegacyRoleResolver.getRoleHolders(role, userId);
+ if (roleHolders.isEmpty()) {
+ return;
+ }
Slog.i(LOG_TAG, "Migrating " + role + ", legacy holders: " + roleHolders);
+ userState.addRoleName(role);
int size = roleHolders.size();
for (int i = 0; i < size; i++) {
userState.addRoleHolder(role, roleHolders.get(i));
@@ -406,7 +409,6 @@
@Nullable
private ArraySet<String> getRoleHoldersInternal(@NonNull String roleName,
@UserIdInt int userId) {
- migrateRoleIfNecessary(roleName, userId);
RoleUserState userState = getOrCreateUserState(userId);
return userState.getRoleHolders(roleName);
}
diff --git a/services/core/java/com/android/server/role/RoleUserState.java b/services/core/java/com/android/server/role/RoleUserState.java
index 69e1449..02dcc49 100644
--- a/services/core/java/com/android/server/role/RoleUserState.java
+++ b/services/core/java/com/android/server/role/RoleUserState.java
@@ -193,14 +193,18 @@
*
* @param roleName the name of the role to query for
*
- * @return the set of role holders. {@code null} should not be returned and indicates an issue.
+ * @return the set of role holders, or {@code null} if and only if the role is not found
*/
@Nullable
public ArraySet<String> getRoleHolders(@NonNull String roleName) {
synchronized (mLock) {
throwIfDestroyedLocked();
- return new ArraySet<>(mRoles.get(roleName));
+ ArraySet<String> packageNames = mRoles.get(roleName);
+ if (packageNames == null) {
+ return null;
+ }
+ return new ArraySet<>(packageNames);
}
}
@@ -268,8 +272,7 @@
* @param roleName the name of the role to add the holder to
* @param packageName the package name of the new holder
*
- * @return {@code false} only if the set of role holders is null, which should not happen and
- * indicates an issue.
+ * @return {@code false} if and only if the role is not found
*/
@CheckResult
public boolean addRoleHolder(@NonNull String roleName, @NonNull String packageName) {
@@ -302,8 +305,7 @@
* @param roleName the name of the role to remove the holder from
* @param packageName the package name of the holder to remove
*
- * @return {@code false} only if the set of role holders is null, which should not happen and
- * indicates an issue.
+ * @return {@code false} if and only if the role is not found
*/
@CheckResult
public boolean removeRoleHolder(@NonNull String roleName, @NonNull String packageName) {
diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
index 8021265..d12f7ed 100644
--- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
+++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
@@ -977,6 +977,8 @@
ensureRollbackDataLoadedLocked();
mAvailableRollbacks.add(data);
}
+
+ scheduleExpiration(ROLLBACK_LIFETIME_DURATION_MILLIS);
} catch (IOException e) {
Log.e(TAG, "Unable to enable rollback", e);
removeFile(data.backupDir);
diff --git a/services/core/java/com/android/server/signedconfig/GlobalSettingsConfigApplicator.java b/services/core/java/com/android/server/signedconfig/GlobalSettingsConfigApplicator.java
index 438c303..d77cf90 100644
--- a/services/core/java/com/android/server/signedconfig/GlobalSettingsConfigApplicator.java
+++ b/services/core/java/com/android/server/signedconfig/GlobalSettingsConfigApplicator.java
@@ -23,6 +23,7 @@
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Slog;
+import android.util.StatsLog;
import java.security.GeneralSecurityException;
import java.util.Arrays;
@@ -66,12 +67,14 @@
private final Context mContext;
private final String mSourcePackage;
+ private final SignedConfigEvent mEvent;
private final SignatureVerifier mVerifier;
- GlobalSettingsConfigApplicator(Context context, String sourcePackage) {
+ GlobalSettingsConfigApplicator(Context context, String sourcePackage, SignedConfigEvent event) {
mContext = context;
mSourcePackage = sourcePackage;
- mVerifier = new SignatureVerifier();
+ mEvent = event;
+ mVerifier = new SignatureVerifier(mEvent);
}
private boolean checkSignature(String data, String signature) {
@@ -79,6 +82,7 @@
return mVerifier.verifySignature(data, signature);
} catch (GeneralSecurityException e) {
Slog.e(TAG, "Failed to verify signature", e);
+ mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__SECURITY_EXCEPTION;
return false;
}
}
@@ -109,14 +113,17 @@
SignedConfig config;
try {
config = SignedConfig.parse(configStr, ALLOWED_KEYS, KEY_VALUE_MAPPERS);
+ mEvent.version = config.version;
} catch (InvalidConfigException e) {
Slog.e(TAG, "Failed to parse global settings from package " + mSourcePackage, e);
+ mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__INVALID_CONFIG;
return;
}
int currentVersion = getCurrentConfigVersion();
if (currentVersion >= config.version) {
Slog.i(TAG, "Global settings from package " + mSourcePackage
+ " is older than existing: " + config.version + "<=" + currentVersion);
+ mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__OLD_CONFIG;
return;
}
// We have new config!
@@ -126,10 +133,12 @@
config.getMatchingConfig(Build.VERSION.SDK_INT);
if (matchedConfig == null) {
Slog.i(TAG, "Settings is not applicable to current SDK version; ignoring");
+ mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__NOT_APPLICABLE;
return;
}
Slog.i(TAG, "Updating global settings to version " + config.version);
updateCurrentConfig(config.version, matchedConfig.values);
+ mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__APPLIED;
}
}
diff --git a/services/core/java/com/android/server/signedconfig/SignatureVerifier.java b/services/core/java/com/android/server/signedconfig/SignatureVerifier.java
index 944db84..56db32a 100644
--- a/services/core/java/com/android/server/signedconfig/SignatureVerifier.java
+++ b/services/core/java/com/android/server/signedconfig/SignatureVerifier.java
@@ -18,6 +18,7 @@
import android.os.Build;
import android.util.Slog;
+import android.util.StatsLog;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
@@ -42,11 +43,18 @@
private static final String DEBUG_KEY =
"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaAn2XVifsLTHg616nTsOMVmlhBoECGbTEBTKKvdd2hO60"
+ "pj1pnU8SMkhYfaNxZuKgw9LNvOwlFwStboIYeZ3lQ==";
+ private static final String PROD_KEY =
+ "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+lky6wKyGL6lE1VrD0YTMHwb0Xwc+tzC8MvnrzVxodvTp"
+ + "VY/jV7V+Zktcx+pry43XPABFRXtbhTo+qykhyBA1g==";
+ private final SignedConfigEvent mEvent;
private final PublicKey mDebugKey;
+ private final PublicKey mProdKey;
- public SignatureVerifier() {
- mDebugKey = createKey(DEBUG_KEY);
+ public SignatureVerifier(SignedConfigEvent event) {
+ mEvent = event;
+ mDebugKey = Build.IS_DEBUGGABLE ? createKey(DEBUG_KEY) : null;
+ mProdKey = createKey(PROD_KEY);
}
private static PublicKey createKey(String base64) {
@@ -67,6 +75,14 @@
}
}
+ private boolean verifyWithPublicKey(PublicKey key, byte[] data, byte[] signature)
+ throws NoSuchAlgorithmException, InvalidKeyException, SignatureException {
+ Signature verifier = Signature.getInstance("SHA256withECDSA");
+ verifier.initVerify(key);
+ verifier.update(data);
+ return verifier.verify(signature);
+ }
+
/**
* Verify a signature for signed config.
*
@@ -80,6 +96,7 @@
try {
signature = Base64.getDecoder().decode(base64Signature);
} catch (IllegalArgumentException e) {
+ mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__BASE64_FAILURE_SIGNATURE;
Slog.e(TAG, "Failed to base64 decode signature");
return false;
}
@@ -89,11 +106,9 @@
if (Build.IS_DEBUGGABLE) {
if (mDebugKey != null) {
if (DBG) Slog.w(TAG, "Trying to verify signature using debug key");
- Signature verifier = Signature.getInstance("SHA256withECDSA");
- verifier.initVerify(mDebugKey);
- verifier.update(data);
- if (verifier.verify(signature)) {
+ if (verifyWithPublicKey(mDebugKey, data, signature)) {
Slog.i(TAG, "Verified config using debug key");
+ mEvent.verifiedWith = StatsLog.SIGNED_CONFIG_REPORTED__VERIFIED_WITH__DEBUG;
return true;
} else {
if (DBG) Slog.i(TAG, "Config verification failed using debug key");
@@ -102,8 +117,20 @@
Slog.w(TAG, "Debuggable build, but have no debug key");
}
}
- // TODO verify production key.
- Slog.w(TAG, "NO PRODUCTION KEY YET, FAILING VERIFICATION");
- return false;
+ if (mProdKey == null) {
+ Slog.e(TAG, "No prod key; construction failed?");
+ mEvent.status =
+ StatsLog.SIGNED_CONFIG_REPORTED__STATUS__SIGNATURE_CHECK_FAILED_PROD_KEY_ABSENT;
+ return false;
+ }
+ if (verifyWithPublicKey(mProdKey, data, signature)) {
+ Slog.i(TAG, "Verified config using production key");
+ mEvent.verifiedWith = StatsLog.SIGNED_CONFIG_REPORTED__VERIFIED_WITH__PRODUCTION;
+ return true;
+ } else {
+ if (DBG) Slog.i(TAG, "Verification failed using production key");
+ mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__SIGNATURE_CHECK_FAILED;
+ return false;
+ }
}
}
diff --git a/services/core/java/com/android/server/signedconfig/SignedConfigEvent.java b/services/core/java/com/android/server/signedconfig/SignedConfigEvent.java
new file mode 100644
index 0000000..2f2062c
--- /dev/null
+++ b/services/core/java/com/android/server/signedconfig/SignedConfigEvent.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2019 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.server.signedconfig;
+
+import android.util.StatsLog;
+
+/**
+ * Helper class to allow a SignedConfigReported event to be built up in stages.
+ */
+public class SignedConfigEvent {
+
+ public int type = StatsLog.SIGNED_CONFIG_REPORTED__TYPE__UNKNOWN_TYPE;
+ public int status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__UNKNOWN_STATUS;
+ public int version = 0;
+ public String fromPackage = null;
+ public int verifiedWith = StatsLog.SIGNED_CONFIG_REPORTED__VERIFIED_WITH__NO_KEY;
+
+ /**
+ * Write this event to statslog.
+ */
+ public void send() {
+ StatsLog.write(StatsLog.SIGNED_CONFIG_REPORTED,
+ type, status, version, fromPackage, verifiedWith);
+ }
+
+}
diff --git a/services/core/java/com/android/server/signedconfig/SignedConfigService.java b/services/core/java/com/android/server/signedconfig/SignedConfigService.java
index 6bcee14..dc39542 100644
--- a/services/core/java/com/android/server/signedconfig/SignedConfigService.java
+++ b/services/core/java/com/android/server/signedconfig/SignedConfigService.java
@@ -26,6 +26,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.util.Slog;
+import android.util.StatsLog;
import com.android.server.LocalServices;
@@ -82,21 +83,30 @@
}
if (metaData.containsKey(KEY_GLOBAL_SETTINGS)
&& metaData.containsKey(KEY_GLOBAL_SETTINGS_SIGNATURE)) {
- String config = metaData.getString(KEY_GLOBAL_SETTINGS);
- String signature = metaData.getString(KEY_GLOBAL_SETTINGS_SIGNATURE);
+ SignedConfigEvent event = new SignedConfigEvent();
try {
- // Base64 encoding is standard (not URL safe) encoding: RFC4648
- config = new String(Base64.getDecoder().decode(config), StandardCharsets.UTF_8);
- } catch (IllegalArgumentException iae) {
- Slog.e(TAG, "Failed to base64 decode global settings config from " + packageName);
- return;
+ event.type = StatsLog.SIGNED_CONFIG_REPORTED__TYPE__GLOBAL_SETTINGS;
+ event.fromPackage = packageName;
+ String config = metaData.getString(KEY_GLOBAL_SETTINGS);
+ String signature = metaData.getString(KEY_GLOBAL_SETTINGS_SIGNATURE);
+ try {
+ // Base64 encoding is standard (not URL safe) encoding: RFC4648
+ config = new String(Base64.getDecoder().decode(config), StandardCharsets.UTF_8);
+ } catch (IllegalArgumentException iae) {
+ Slog.e(TAG, "Failed to base64 decode global settings config from "
+ + packageName);
+ event.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__BASE64_FAILURE_CONFIG;
+ return;
+ }
+ if (DBG) {
+ Slog.d(TAG, "Got global settings config: " + config);
+ Slog.d(TAG, "Got global settings signature: " + signature);
+ }
+ new GlobalSettingsConfigApplicator(mContext, packageName, event).applyConfig(
+ config, signature);
+ } finally {
+ event.send();
}
- if (DBG) {
- Slog.d(TAG, "Got global settings config: " + config);
- Slog.d(TAG, "Got global settings signature: " + signature);
- }
- new GlobalSettingsConfigApplicator(mContext, packageName).applyConfig(
- config, signature);
} else {
if (DBG) Slog.d(TAG, "Package has no global settings config/signature.");
}
diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java
index 30aa528..4e71a05 100644
--- a/services/core/java/com/android/server/stats/StatsCompanionService.java
+++ b/services/core/java/com/android/server/stats/StatsCompanionService.java
@@ -43,6 +43,7 @@
import android.content.pm.UserInfo;
import android.hardware.fingerprint.FingerprintManager;
import android.net.ConnectivityManager;
+import android.net.INetworkStatsService;
import android.net.Network;
import android.net.NetworkRequest;
import android.net.NetworkStats;
@@ -90,7 +91,6 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.procstats.IProcessStats;
import com.android.internal.app.procstats.ProcessStats;
-import com.android.internal.net.NetworkStatsFactory;
import com.android.internal.os.BatterySipper;
import com.android.internal.os.BatteryStatsHelper;
import com.android.internal.os.BinderCallsStats.ExportedCallStat;
@@ -210,6 +210,7 @@
private final Context mContext;
private final AlarmManager mAlarmManager;
+ private final INetworkStatsService mNetworkStatsService;
@GuardedBy("sStatsdLock")
private static IStatsManager sStatsd;
private static final Object sStatsdLock = new Object();
@@ -257,6 +258,8 @@
super();
mContext = context;
mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
+ mNetworkStatsService = INetworkStatsService.Stub.asInterface(
+ ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
mBaseDir.mkdirs();
mAppUpdateReceiver = new AppUpdateReceiver();
mUserUpdateReceiver = new BroadcastReceiver() {
@@ -788,14 +791,14 @@
if (ifaces.length == 0) {
return;
}
- NetworkStatsFactory nsf = new NetworkStatsFactory();
+ if (mNetworkStatsService == null) {
+ Slog.e(TAG, "NetworkStats Service is not available!");
+ return;
+ }
// Combine all the metrics per Uid into one record.
- NetworkStats stats =
- nsf.readNetworkStatsDetail(NetworkStats.UID_ALL, ifaces, NetworkStats.TAG_NONE,
- null)
- .groupedByUid();
+ NetworkStats stats = mNetworkStatsService.getDetailedUidStats(ifaces).groupedByUid();
addNetworkStats(tagId, pulledData, stats, false);
- } catch (java.io.IOException e) {
+ } catch (RemoteException e) {
Slog.e(TAG, "Pulling netstats for wifi bytes has error", e);
} finally {
Binder.restoreCallingIdentity(token);
@@ -812,12 +815,14 @@
if (ifaces.length == 0) {
return;
}
- NetworkStatsFactory nsf = new NetworkStatsFactory();
+ if (mNetworkStatsService == null) {
+ Slog.e(TAG, "NetworkStats Service is not available!");
+ return;
+ }
NetworkStats stats = rollupNetworkStatsByFGBG(
- nsf.readNetworkStatsDetail(NetworkStats.UID_ALL, ifaces, NetworkStats.TAG_NONE,
- null));
+ mNetworkStatsService.getDetailedUidStats(ifaces));
addNetworkStats(tagId, pulledData, stats, true);
- } catch (java.io.IOException e) {
+ } catch (RemoteException e) {
Slog.e(TAG, "Pulling netstats for wifi bytes w/ fg/bg has error", e);
} finally {
Binder.restoreCallingIdentity(token);
@@ -834,14 +839,14 @@
if (ifaces.length == 0) {
return;
}
- NetworkStatsFactory nsf = new NetworkStatsFactory();
+ if (mNetworkStatsService == null) {
+ Slog.e(TAG, "NetworkStats Service is not available!");
+ return;
+ }
// Combine all the metrics per Uid into one record.
- NetworkStats stats =
- nsf.readNetworkStatsDetail(NetworkStats.UID_ALL, ifaces, NetworkStats.TAG_NONE,
- null)
- .groupedByUid();
+ NetworkStats stats = mNetworkStatsService.getDetailedUidStats(ifaces).groupedByUid();
addNetworkStats(tagId, pulledData, stats, false);
- } catch (java.io.IOException e) {
+ } catch (RemoteException e) {
Slog.e(TAG, "Pulling netstats for mobile bytes has error", e);
} finally {
Binder.restoreCallingIdentity(token);
@@ -874,12 +879,14 @@
if (ifaces.length == 0) {
return;
}
- NetworkStatsFactory nsf = new NetworkStatsFactory();
+ if (mNetworkStatsService == null) {
+ Slog.e(TAG, "NetworkStats Service is not available!");
+ return;
+ }
NetworkStats stats = rollupNetworkStatsByFGBG(
- nsf.readNetworkStatsDetail(NetworkStats.UID_ALL, ifaces, NetworkStats.TAG_NONE,
- null));
+ mNetworkStatsService.getDetailedUidStats(ifaces));
addNetworkStats(tagId, pulledData, stats, true);
- } catch (java.io.IOException e) {
+ } catch (RemoteException e) {
Slog.e(TAG, "Pulling netstats for mobile bytes w/ fg/bg has error", e);
} finally {
Binder.restoreCallingIdentity(token);
@@ -2058,6 +2065,17 @@
mContext.unregisterReceiver(mShutdownEventReceiver);
cancelAnomalyAlarm();
cancelPullingAlarm();
+
+ BinderCallsStatsService.Internal binderStats =
+ LocalServices.getService(BinderCallsStatsService.Internal.class);
+ if (binderStats != null) {
+ binderStats.reset();
+ }
+
+ LooperStats looperStats = LocalServices.getService(LooperStats.class);
+ if (looperStats != null) {
+ looperStats.reset();
+ }
}
@Override
diff --git a/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java b/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
index f7cc443..2700f9d 100644
--- a/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
+++ b/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
@@ -24,7 +24,6 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
-import android.net.TrafficStats;
import android.os.Binder;
import android.os.Environment;
import android.os.FileObserver;
@@ -42,13 +41,13 @@
import android.util.ArrayMap;
import android.util.DataUnit;
import android.util.Slog;
+import android.util.StatsLog;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
import com.android.internal.notification.SystemNotificationChannels;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.EventLogTags;
-import com.android.server.IoThread;
import com.android.server.SystemService;
import com.android.server.pm.InstructionSets;
import com.android.server.pm.PackageManagerService;
@@ -499,9 +498,15 @@
notification.flags |= Notification.FLAG_NO_CLEAR;
mNotifManager.notifyAsUser(uuid.toString(), SystemMessage.NOTE_LOW_STORAGE,
notification, UserHandle.ALL);
+ StatsLog.write(StatsLog.LOW_STORAGE_STATE_CHANGED,
+ Objects.toString(vol.getDescription()),
+ StatsLog.LOW_STORAGE_STATE_CHANGED__STATE__ON);
} else if (State.isLeaving(State.LEVEL_LOW, oldLevel, newLevel)) {
mNotifManager.cancelAsUser(uuid.toString(), SystemMessage.NOTE_LOW_STORAGE,
UserHandle.ALL);
+ StatsLog.write(StatsLog.LOW_STORAGE_STATE_CHANGED,
+ Objects.toString(vol.getDescription()),
+ StatsLog.LOW_STORAGE_STATE_CHANGED__STATE__OFF);
}
}
diff --git a/services/core/java/com/android/server/textservices/TextServicesManagerService.java b/services/core/java/com/android/server/textservices/TextServicesManagerService.java
index 7236d79..d4aa59d 100644
--- a/services/core/java/com/android/server/textservices/TextServicesManagerService.java
+++ b/services/core/java/com/android/server/textservices/TextServicesManagerService.java
@@ -16,6 +16,8 @@
package com.android.server.textservices;
+import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
@@ -513,8 +515,8 @@
// TODO: Save SpellCheckerService by supported languages. Currently only one spell
// checker is saved.
@Override
- public SpellCheckerInfo getCurrentSpellChecker(String locale) {
- int userId = UserHandle.getCallingUserId();
+ public SpellCheckerInfo getCurrentSpellChecker(@UserIdInt int userId, String locale) {
+ verifyUser(userId);
synchronized (mLock) {
final TextServicesData tsd = getDataFromCallingUserIdLocked(userId);
if (tsd == null) return null;
@@ -527,11 +529,12 @@
// TODO: Save SpellCheckerSubtype by supported languages by looking at "locale".
@Override
public SpellCheckerSubtype getCurrentSpellCheckerSubtype(
- boolean allowImplicitlySelectedSubtype) {
+ @UserIdInt int userId, boolean allowImplicitlySelectedSubtype) {
+ verifyUser(userId);
+
final int subtypeHashCode;
final SpellCheckerInfo sci;
final Locale systemLocale;
- final int userId = UserHandle.getCallingUserId();
synchronized (mLock) {
final TextServicesData tsd = getDataFromCallingUserIdLocked(userId);
@@ -591,17 +594,17 @@
}
@Override
- public void getSpellCheckerService(String sciId, String locale,
+ public void getSpellCheckerService(@UserIdInt int userId, String sciId, String locale,
ITextServicesSessionListener tsListener, ISpellCheckerSessionListener scListener,
Bundle bundle) {
+ verifyUser(userId);
if (TextUtils.isEmpty(sciId) || tsListener == null || scListener == null) {
Slog.e(TAG, "getSpellCheckerService: Invalid input.");
return;
}
- int callingUserId = UserHandle.getCallingUserId();
synchronized (mLock) {
- final TextServicesData tsd = getDataFromCallingUserIdLocked(callingUserId);
+ final TextServicesData tsd = getDataFromCallingUserIdLocked(userId);
if (tsd == null) return;
HashMap<String, SpellCheckerInfo> spellCheckerMap = tsd.mSpellCheckerMap;
@@ -634,8 +637,8 @@
}
@Override
- public boolean isSpellCheckerEnabled() {
- int userId = UserHandle.getCallingUserId();
+ public boolean isSpellCheckerEnabled(@UserIdInt int userId) {
+ verifyUser(userId);
synchronized (mLock) {
final TextServicesData tsd = getDataFromCallingUserIdLocked(userId);
@@ -671,11 +674,11 @@
}
@Override
- public SpellCheckerInfo[] getEnabledSpellCheckers() {
- int callingUserId = UserHandle.getCallingUserId();
+ public SpellCheckerInfo[] getEnabledSpellCheckers(@UserIdInt int userId) {
+ verifyUser(userId);
synchronized (mLock) {
- final TextServicesData tsd = getDataFromCallingUserIdLocked(callingUserId);
+ final TextServicesData tsd = getDataFromCallingUserIdLocked(userId);
if (tsd == null) return null;
ArrayList<SpellCheckerInfo> spellCheckerList = tsd.mSpellCheckerList;
@@ -691,11 +694,12 @@
}
@Override
- public void finishSpellCheckerService(ISpellCheckerSessionListener listener) {
+ public void finishSpellCheckerService(@UserIdInt int userId,
+ ISpellCheckerSessionListener listener) {
if (DBG) {
Slog.d(TAG, "FinishSpellCheckerService");
}
- int userId = UserHandle.getCallingUserId();
+ verifyUser(userId);
synchronized (mLock) {
final TextServicesData tsd = getDataFromCallingUserIdLocked(userId);
@@ -716,6 +720,15 @@
}
}
+ private void verifyUser(@UserIdInt int userId) {
+ final int callingUserId = UserHandle.getCallingUserId();
+ if (userId != callingUserId) {
+ mContext.enforceCallingPermission(INTERACT_ACROSS_USERS_FULL,
+ "Cross-user interaction requires INTERACT_ACROSS_USERS_FULL. userId=" + userId
+ + " callingUserId=" + callingUserId);
+ }
+ }
+
private void setCurrentSpellCheckerLocked(@Nullable SpellCheckerInfo sci, TextServicesData tsd) {
final String sciId = (sci != null) ? sci.getId() : "";
if (DBG) {
diff --git a/services/core/java/com/android/server/wm/ActivityDisplay.java b/services/core/java/com/android/server/wm/ActivityDisplay.java
index 1f638c7..e817dd4 100644
--- a/services/core/java/com/android/server/wm/ActivityDisplay.java
+++ b/services/core/java/com/android/server/wm/ActivityDisplay.java
@@ -278,12 +278,12 @@
}
// Since positionChildAt() is called during the creation process of pinned stacks,
- // ActivityStack#getWindowContainerController() can be null. In this special case,
+ // ActivityStack#getStack() can be null. In this special case,
// since DisplayContest#positionStackAt() is called in TaskStack#onConfigurationChanged(),
// we don't have to call WindowContainerController#positionChildAt() here.
- if (stack.getWindowContainerController() != null && mDisplayContent != null) {
+ if (stack.getTaskStack() != null && mDisplayContent != null) {
mDisplayContent.positionStackAt(insertPosition,
- stack.getWindowContainerController().mContainer, includingParents);
+ stack.getTaskStack(), includingParents);
}
if (!wasContained) {
stack.setParent(this);
@@ -450,13 +450,12 @@
@VisibleForTesting
<T extends ActivityStack> T createStackUnchecked(int windowingMode, int activityType,
int stackId, boolean onTop) {
- if (windowingMode == WINDOWING_MODE_PINNED) {
- return (T) new PinnedActivityStack(this, stackId,
- mRootActivityContainer.mStackSupervisor, onTop);
+ if (windowingMode == WINDOWING_MODE_PINNED && activityType != ACTIVITY_TYPE_STANDARD) {
+ throw new IllegalArgumentException("Stack with windowing mode cannot with non standard "
+ + "activity type.");
}
return (T) new ActivityStack(this, stackId,
- mRootActivityContainer.mStackSupervisor, windowingMode, activityType,
- onTop);
+ mRootActivityContainer.mStackSupervisor, windowingMode, activityType, onTop);
}
/**
@@ -559,22 +558,26 @@
}
/**
- * Pause all activities in either all of the stacks or just the back stacks.
+ * Pause all activities in either all of the stacks or just the back stacks. This is done before
+ * resuming a new activity and to make sure that previously active activities are
+ * paused in stacks that are no longer visible or in pinned windowing mode. This does not
+ * pause activities in visible stacks, so if an activity is launched within the same stack/task,
+ * then we should explicitly pause that stack's top activity.
* @param userLeaving Passed to pauseActivity() to indicate whether to call onUserLeaving().
* @param resuming The resuming activity.
* @param dontWait The resuming activity isn't going to wait for all activities to be paused
* before resuming.
- * @return true if any activity was paused as a result of this call.
+ * @return {@code true} if any activity was paused as a result of this call.
*/
boolean pauseBackStacks(boolean userLeaving, ActivityRecord resuming, boolean dontWait) {
boolean someActivityPaused = false;
for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
final ActivityStack stack = mStacks.get(stackNdx);
- // TODO(b/111541062): Check if resumed activity on this display instead
- if (!mRootActivityContainer.isTopDisplayFocusedStack(stack)
- && stack.getResumedActivity() != null) {
+ final ActivityRecord resumedActivity = stack.getResumedActivity();
+ if (resumedActivity != null
+ && (!stack.shouldBeVisible(resuming) || !stack.isFocusable())) {
if (DEBUG_STATES) Slog.d(TAG_STATES, "pauseBackStacks: stack=" + stack +
- " mResumedActivity=" + stack.getResumedActivity());
+ " mResumedActivity=" + resumedActivity);
someActivityPaused |= stack.startPausingLocked(userLeaving, false, resuming,
dontWait);
}
@@ -626,6 +629,10 @@
return;
}
+ // Collect the stacks that are necessary to be removed instead of performing the removal
+ // by looping mStacks, so that we don't miss any stacks after the stack size changed or
+ // stacks reordered.
+ final ArrayList<ActivityStack> stacks = new ArrayList<>();
for (int j = windowingModes.length - 1 ; j >= 0; --j) {
final int windowingMode = windowingModes[j];
for (int i = mStacks.size() - 1; i >= 0; --i) {
@@ -636,9 +643,13 @@
if (stack.getWindowingMode() != windowingMode) {
continue;
}
- mRootActivityContainer.mStackSupervisor.removeStack(stack);
+ stacks.add(stack);
}
}
+
+ for (int i = stacks.size() - 1; i >= 0; --i) {
+ mRootActivityContainer.mStackSupervisor.removeStack(stacks.get(i));
+ }
}
void removeStacksWithActivityTypes(int... activityTypes) {
@@ -646,15 +657,23 @@
return;
}
+ // Collect the stacks that are necessary to be removed instead of performing the removal
+ // by looping mStacks, so that we don't miss any stacks after the stack size changed or
+ // stacks reordered.
+ final ArrayList<ActivityStack> stacks = new ArrayList<>();
for (int j = activityTypes.length - 1 ; j >= 0; --j) {
final int activityType = activityTypes[j];
for (int i = mStacks.size() - 1; i >= 0; --i) {
final ActivityStack stack = mStacks.get(i);
if (stack.getActivityType() == activityType) {
- mRootActivityContainer.mStackSupervisor.removeStack(stack);
+ stacks.add(stack);
}
}
}
+
+ for (int i = stacks.size() - 1; i >= 0; --i) {
+ mRootActivityContainer.mStackSupervisor.removeStack(stacks.get(i));
+ }
}
void onStackWindowingModeChanged(ActivityStack stack) {
@@ -1019,8 +1038,8 @@
return mSplitScreenPrimaryStack != null;
}
- PinnedActivityStack getPinnedStack() {
- return (PinnedActivityStack) mPinnedStack;
+ ActivityStack getPinnedStack() {
+ return mPinnedStack;
}
boolean hasPinnedStack() {
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 9f8af50..6213fa0 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1946,30 +1946,84 @@
try {
mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken,
WindowVisibilityItem.obtain(true /* showWindow */));
- if (shouldPauseWhenBecomingVisible()) {
- // An activity must be in the {@link PAUSING} state for the system to validate
- // the move to {@link PAUSED}.
- setState(PAUSING, "makeVisibleIfNeeded");
- mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken,
- PauseActivityItem.obtain(finishing, false /* userLeaving */,
- configChangeFlags, false /* dontReport */));
- }
+ makeActiveIfNeeded(null /* activeActivity*/);
} catch (Exception e) {
Slog.w(TAG, "Exception thrown sending visibility update: " + intent.getComponent(), e);
}
}
- /** Check if activity should be moved to PAUSED state when it becomes visible. */
- private boolean shouldPauseWhenBecomingVisible() {
- // If the activity is stopped or stopping, cycle to the paused state. We avoid doing
+ /**
+ * Make activity resumed or paused if needed.
+ * @param activeActivity an activity that is resumed or just completed pause action.
+ * We won't change the state of this activity.
+ */
+ boolean makeActiveIfNeeded(ActivityRecord activeActivity) {
+ if (shouldResumeActivity(activeActivity)) {
+ if (DEBUG_VISIBILITY) {
+ Slog.v("TAG_VISIBILITY", "Resume visible activity, " + this);
+ }
+ return getActivityStack().resumeTopActivityUncheckedLocked(activeActivity /* prev */,
+ null /* options */);
+ } else if (shouldPauseActivity(activeActivity)) {
+ if (DEBUG_VISIBILITY) {
+ Slog.v("TAG_VISIBILITY", "Pause visible activity, " + this);
+ }
+ // An activity must be in the {@link PAUSING} state for the system to validate
+ // the move to {@link PAUSED}.
+ setState(PAUSING, "makeVisibleIfNeeded");
+ try {
+ mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken,
+ PauseActivityItem.obtain(finishing, false /* userLeaving */,
+ configChangeFlags, false /* dontReport */));
+ } catch (Exception e) {
+ Slog.w(TAG, "Exception thrown sending pause: " + intent.getComponent(), e);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Check if activity should be moved to PAUSED state. The activity:
+ * - should be eligible to be made active (see {@link #shouldMakeActive(ActivityRecord)})
+ * - should be non-focusable
+ * - should not be currently pausing or paused
+ * @param activeActivity the activity that is active or just completed pause action. We won't
+ * resume if this activity is active.
+ */
+ private boolean shouldPauseActivity(ActivityRecord activeActivity) {
+ return shouldMakeActive(activeActivity) && !isFocusable() && !isState(PAUSING, PAUSED);
+ }
+
+ /**
+ * Check if activity should be moved to RESUMED state. The activity:
+ * - should be eligible to be made active (see {@link #shouldMakeActive(ActivityRecord)})
+ * - should be focusable
+ * @param activeActivity the activity that is active or just completed pause action. We won't
+ * resume if this activity is active.
+ */
+ private boolean shouldResumeActivity(ActivityRecord activeActivity) {
+ return shouldMakeActive(activeActivity) && isFocusable() && !isState(RESUMED);
+ }
+
+ /**
+ * Check if activity is eligible to be made active (resumed of paused). The activity:
+ * - should be paused, stopped or stopping
+ * - should not be the currently active one
+ * - should be either the topmost in task, or right below the top activity that is finishing
+ * If all of these conditions are not met at the same time, the activity cannot be made active.
+ */
+ private boolean shouldMakeActive(ActivityRecord activeActivity) {
+ // If the activity is stopped, stopping, cycle to an active state. We avoid doing
// this when there is an activity waiting to become translucent as the extra binder
// calls will lead to noticeable jank. A later call to
- // ActivityStack#ensureActivitiesVisibleLocked will bring the activity to the proper
- // paused state. We also avoid doing this for the activity the stack supervisor
- // considers the resumed activity, as normal means will bring the activity from STOPPED
- // to RESUMED. Adding PAUSING in this scenario will lead to double lifecycles.
- if (!isState(STOPPED, STOPPING) || getActivityStack().mTranslucentActivityWaiting != null
- || isResumedActivityOnDisplay()) {
+ // ActivityStack#ensureActivitiesVisibleLocked will bring the activity to a proper
+ // active state.
+ if (!isState(RESUMED, PAUSED, STOPPED, STOPPING)
+ || getActivityStack().mTranslucentActivityWaiting != null) {
+ return false;
+ }
+
+ if (this == activeActivity) {
return false;
}
@@ -1979,14 +2033,14 @@
throw new IllegalStateException("Activity not found in its task");
}
if (positionInTask == task.mActivities.size() - 1) {
- // It's the topmost activity in the task - should become paused now
+ // It's the topmost activity in the task - should become resumed now
return true;
}
// Check if activity above is finishing now and this one becomes the topmost in task.
final ActivityRecord activityAbove = task.mActivities.get(positionInTask + 1);
if (activityAbove.finishing && results == null) {
- // We will only allow pausing if activity above wasn't launched for result. Otherwise it
- // will cause this activity to resume before getting result.
+ // We will only allow making active if activity above wasn't launched for result.
+ // Otherwise it will cause this activity to resume before getting result.
return true;
}
return false;
@@ -2508,6 +2562,13 @@
final IBinder binder =
(freezeScreenIfNeeded && appToken != null) ? appToken.asBinder() : null;
mAppWindowToken.setOrientation(requestedOrientation, binder, this);
+
+ // Push the new configuration to the requested app in case where it's not pushed, e.g. when
+ // the request is handled at task level with letterbox.
+ if (!getMergedOverrideConfiguration().equals(
+ mLastReportedConfiguration.getMergedConfiguration())) {
+ ensureActivityConfiguration(0 /* globalChanges */, false /* preserveWindow */);
+ }
}
int getOrientation() {
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index 4d7de905..3aef8e1f 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -114,6 +114,7 @@
import android.app.ActivityOptions;
import android.app.AppGlobals;
import android.app.IActivityController;
+import android.app.RemoteAction;
import android.app.ResultInfo;
import android.app.WindowConfiguration.ActivityType;
import android.app.WindowConfiguration.WindowingMode;
@@ -173,8 +174,7 @@
/**
* State and management of a single stack of activities.
*/
-class ActivityStack<T extends StackWindowController> extends ConfigurationContainer
- implements StackWindowListener {
+class ActivityStack extends ConfigurationContainer {
private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityStack" : TAG_ATM;
private static final String TAG_ADD_REMOVE = TAG + POSTFIX_ADD_REMOVE;
private static final String TAG_APP = TAG + POSTFIX_APP;
@@ -297,8 +297,7 @@
static final int REMOVE_TASK_MODE_MOVING_TO_TOP = 2;
final ActivityTaskManagerService mService;
- private final WindowManagerService mWindowManager;
- T mWindowContainerController;
+ final WindowManagerService mWindowManager;
/**
* The back history of all previous (and possibly still
@@ -358,6 +357,11 @@
*/
boolean mForceHidden = false;
+ /**
+ * Used to keep resumeTopActivityUncheckedLocked() from being entered recursively
+ */
+ boolean mInResumeTopActivity = false;
+
private boolean mUpdateBoundsDeferred;
private boolean mUpdateBoundsDeferredCalled;
private boolean mUpdateDisplayedBoundsDeferredCalled;
@@ -397,6 +401,9 @@
static final int DESTROY_ACTIVITIES_MSG = FIRST_ACTIVITY_STACK_MSG + 5;
static final int TRANSLUCENT_TIMEOUT_MSG = FIRST_ACTIVITY_STACK_MSG + 6;
+ // TODO: remove after unification.
+ TaskStack mTaskStack;
+
private static class ScheduleDestroyArgs {
final WindowProcessController mOwner;
final String mReason;
@@ -495,21 +502,30 @@
// stacks on a wrong display.
mDisplayId = display.mDisplayId;
setActivityType(activityType);
- mWindowContainerController = createStackWindowController(display.mDisplayId, onTop,
- mTmpRect2);
+ createTaskStack(display.mDisplayId, onTop, mTmpRect2);
setWindowingMode(windowingMode, false /* animate */, false /* showRecents */,
false /* enteringSplitScreenMode */, false /* deferEnsuringVisibility */,
true /* creating */);
display.addChild(this, onTop ? POSITION_TOP : POSITION_BOTTOM);
}
- T createStackWindowController(int displayId, boolean onTop, Rect outBounds) {
- return (T) new StackWindowController(mStackId, this, displayId, onTop, outBounds,
- mRootActivityContainer.mWindowManager);
+ void createTaskStack(int displayId, boolean onTop, Rect outBounds) {
+ final DisplayContent dc = mWindowManager.mRoot.getDisplayContent(displayId);
+ if (dc == null) {
+ throw new IllegalArgumentException("Trying to add stackId=" + mStackId
+ + " to unknown displayId=" + displayId);
+ }
+ mTaskStack = new TaskStack(mWindowManager, mStackId, this);
+ dc.setStackOnDisplay(mStackId, onTop, mTaskStack);
+ if (mTaskStack.matchParentBounds()) {
+ outBounds.setEmpty();
+ } else {
+ mTaskStack.getRawBounds(outBounds);
+ }
}
- T getWindowContainerController() {
- return mWindowContainerController;
+ TaskStack getTaskStack() {
+ return mTaskStack;
}
/**
@@ -553,6 +569,9 @@
if (display == null) {
return;
}
+ if (getTaskStack() == null) {
+ return;
+ }
// Update bounds if applicable
boolean hasNewOverrideBounds = false;
@@ -560,8 +579,7 @@
if (getRequestedOverrideWindowingMode() == WINDOWING_MODE_PINNED) {
// Pinned calculation already includes rotation
mTmpRect2.set(mTmpRect);
- hasNewOverrideBounds = getWindowContainerController().mContainer
- .calculatePinnedBoundsForConfigChange(mTmpRect2);
+ hasNewOverrideBounds = getTaskStack().calculatePinnedBoundsForConfigChange(mTmpRect2);
} else {
final int newRotation = getWindowConfiguration().getRotation();
if (!matchParentBounds()) {
@@ -588,7 +606,7 @@
|| getRequestedOverrideWindowingMode()
== WINDOWING_MODE_SPLIT_SCREEN_SECONDARY) {
mTmpRect2.set(mTmpRect);
- getWindowContainerController().mContainer
+ getTaskStack()
.calculateDockedBoundsForConfigChange(newParentConfig, mTmpRect2);
hasNewOverrideBounds = true;
}
@@ -786,7 +804,11 @@
mTmpRect2.setEmpty();
if (windowingMode != WINDOWING_MODE_FULLSCREEN) {
- mWindowContainerController.getRawBounds(mTmpRect2);
+ if (mTaskStack.matchParentBounds()) {
+ mTmpRect2.setEmpty();
+ } else {
+ mTaskStack.getRawBounds(mTmpRect2);
+ }
}
if (!Objects.equals(getRequestedOverrideBounds(), mTmpRect2)) {
@@ -843,7 +865,12 @@
// Reparent the window container before we try to update the position when adding it to
// the new display below
mTmpRect2.setEmpty();
- mWindowContainerController.reparent(activityDisplay.mDisplayId, mTmpRect2, onTop);
+ if (mTaskStack == null) {
+ // TODO: Remove after unification.
+ Log.w(TAG, "Task stack is not valid when reparenting.");
+ } else {
+ mTaskStack.reparent(activityDisplay.mDisplayId, mTmpRect2, onTop);
+ }
setBounds(mTmpRect2.isEmpty() ? null : mTmpRect2);
activityDisplay.addChild(this, onTop ? POSITION_TOP : POSITION_BOTTOM);
if (!displayRemoved) {
@@ -876,8 +903,10 @@
/** Removes the stack completely. Also calls WindowManager to do the same on its side. */
void remove() {
removeFromDisplay();
- mWindowContainerController.removeContainer();
- mWindowContainerController = null;
+ if (mTaskStack != null) {
+ mTaskStack.removeIfPossible();
+ mTaskStack = null;
+ }
onParentChanged();
}
@@ -890,26 +919,35 @@
*/
void getStackDockedModeBounds(Rect dockedBounds, Rect currentTempTaskBounds,
Rect outStackBounds, Rect outTempTaskBounds) {
- mWindowContainerController.getStackDockedModeBounds(getParent().getConfiguration(),
- dockedBounds, currentTempTaskBounds,
- outStackBounds, outTempTaskBounds);
+ if (mTaskStack != null) {
+ mTaskStack.getStackDockedModeBoundsLocked(getParent().getConfiguration(), dockedBounds,
+ currentTempTaskBounds, outStackBounds, outTempTaskBounds);
+ } else {
+ outStackBounds.setEmpty();
+ outTempTaskBounds.setEmpty();
+ }
}
void prepareFreezingTaskBounds() {
- mWindowContainerController.prepareFreezingTaskBounds();
+ if (mTaskStack != null) {
+ // TODO: This cannot be false after unification.
+ mTaskStack.prepareFreezingTaskBounds();
+ }
}
void getWindowContainerBounds(Rect outBounds) {
- if (mWindowContainerController != null) {
- mWindowContainerController.getBounds(outBounds);
+ if (mTaskStack != null) {
+ mTaskStack.getBounds(outBounds);
return;
}
outBounds.setEmpty();
}
void positionChildWindowContainerAtTop(TaskRecord child) {
- mWindowContainerController.positionChildAtTop(child.getTask(),
- true /* includingParents */);
+ if (mTaskStack != null) {
+ // TODO: Remove after unification. This cannot be false after that.
+ mTaskStack.positionChildAtTop(child.getTask(), true /* includingParents */);
+ }
}
void positionChildWindowContainerAtBottom(TaskRecord child) {
@@ -918,14 +956,27 @@
// task to bottom, the next focusable stack on the same display should be focused.
final ActivityStack nextFocusableStack = getDisplay().getNextFocusableStack(
child.getStack(), true /* ignoreCurrent */);
- mWindowContainerController.positionChildAtBottom(child.getTask(),
- nextFocusableStack == null /* includingParents */);
+ if (mTaskStack != null) {
+ // TODO: Remove after unification. This cannot be false after that.
+ mTaskStack.positionChildAtBottom(child.getTask(),
+ nextFocusableStack == null /* includingParents */);
+ }
}
/**
* Returns whether to defer the scheduling of the multi-window mode.
*/
boolean deferScheduleMultiWindowModeChanged() {
+ if (inPinnedWindowingMode()) {
+ // For the pinned stack, the deferring of the multi-window mode changed is tied to the
+ // transition animation into picture-in-picture, and is called once the animation
+ // completes, or is interrupted in a way that would leave the stack in a non-fullscreen
+ // state.
+ // @see BoundsAnimationController
+ // @see BoundsAnimationControllerTests
+ if (getTaskStack() == null) return false;
+ return getTaskStack().deferScheduleMultiWindowModeChanged();
+ }
return false;
}
@@ -1686,6 +1737,7 @@
"Activity paused: token=" + token + ", timeout=" + timeout);
final ActivityRecord r = isInStackLocked(token);
+
if (r != null) {
mHandler.removeMessages(PAUSE_TIMEOUT_MSG, r);
if (mPausingActivity == r) {
@@ -2042,8 +2094,7 @@
boolean aboveTop = top != null;
final boolean stackShouldBeVisible = shouldBeVisible(starting);
boolean behindFullscreenActivity = !stackShouldBeVisible;
- boolean resumeNextActivity = mRootActivityContainer.isTopDisplayFocusedStack(this)
- && (isInStackLocked(starting) == null);
+ boolean resumeNextActivity = isFocusable() && isInStackLocked(starting) == null;
final boolean isTopNotPinnedStack =
isAttached() && getDisplay().isTopNotPinnedStack(this);
for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
@@ -2104,6 +2155,10 @@
if (r.handleAlreadyVisible()) {
resumeNextActivity = false;
}
+
+ if (notifyClients) {
+ r.makeActiveIfNeeded(starting);
+ }
} else {
r.makeVisibleIfNeeded(starting, notifyClients);
}
@@ -2281,7 +2336,7 @@
r.setVisible(true);
}
if (r != starting) {
- mStackSupervisor.startSpecificActivityLocked(r, andResume, false);
+ mStackSupervisor.startSpecificActivityLocked(r, andResume, true /* checkConfig */);
return true;
}
}
@@ -2459,7 +2514,7 @@
*/
@GuardedBy("mService")
boolean resumeTopActivityUncheckedLocked(ActivityRecord prev, ActivityOptions options) {
- if (mStackSupervisor.inResumeTopActivity) {
+ if (mInResumeTopActivity) {
// Don't even start recursing.
return false;
}
@@ -2467,7 +2522,7 @@
boolean result = false;
try {
// Protect against recursion.
- mStackSupervisor.inResumeTopActivity = true;
+ mInResumeTopActivity = true;
result = resumeTopActivityInnerLocked(prev, options);
// When resuming the top activity, it may be necessary to pause the top activity (for
@@ -2482,7 +2537,7 @@
checkReadyForSleep();
}
} finally {
- mStackSupervisor.inResumeTopActivity = false;
+ mInResumeTopActivity = false;
}
return result;
@@ -2515,7 +2570,7 @@
// Find the next top-most activity to resume in this stack that is not finishing and is
// focusable. If it is not focusable, we will fall into the case below to resume the
// top activity in the next focusable task.
- final ActivityRecord next = topRunningActivityLocked(true /* focusableOnly */);
+ ActivityRecord next = topRunningActivityLocked(true /* focusableOnly */);
final boolean hasRunningActivity = next != null;
@@ -2603,6 +2658,12 @@
if (!mRootActivityContainer.allPausedActivitiesComplete()) {
if (DEBUG_SWITCH || DEBUG_PAUSE || DEBUG_STATES) Slog.v(TAG_PAUSE,
"resumeTopActivityLocked: Skip resume: some activity pausing.");
+
+ // Adding previous activity to the waiting visible list, or it would be stopped
+ // before top activity being visible.
+ if (prev != null && !next.nowVisible) {
+ mStackSupervisor.mActivitiesWaitingForVisibleActivity.add(prev);
+ }
return false;
}
@@ -2812,7 +2873,9 @@
// the screen based on the new activity order.
boolean notUpdated = true;
- if (isFocusedStackOnDisplay()) {
+ // Activity should also be visible if set mLaunchTaskBehind to true (see
+ // ActivityRecord#shouldBeVisibleIgnoringKeyguard()).
+ if (shouldBeVisible(next)) {
// We have special rotation behavior when here is some active activity that
// requests specific orientation or Keyguard is locked. Make sure all activity
// visibilities are set correctly as well as the transition is updated if needed
@@ -2994,7 +3057,10 @@
position = getAdjustedPositionForTask(task, position, null /* starting */);
mTaskHistory.remove(task);
mTaskHistory.add(position, task);
- mWindowContainerController.positionChildAt(task.getTask(), position);
+ if (mTaskStack != null) {
+ // TODO: this could not be false after unification.
+ mTaskStack.positionChildAt(task.getTask(), position);
+ }
updateTaskMovement(task, true);
}
@@ -4038,6 +4104,12 @@
mStackSupervisor.mFinishingActivities.add(r);
r.resumeKeyDispatchingLocked();
mRootActivityContainer.resumeFocusedStacksTopActivities();
+ // If activity was not paused at this point - explicitly pause it to start finishing
+ // process. Finishing will be completed once it reports pause back.
+ if (r.isState(RESUMED) && mPausingActivity != null) {
+ startPausingLocked(false /* userLeaving */, false /* uiSleeping */, next /* resuming */,
+ false /* dontWait */);
+ }
return r;
}
@@ -4909,8 +4981,7 @@
}
// TODO: Figure-out a way to consolidate with resize() method below.
- @Override
- public void requestResize(Rect bounds) {
+ void requestResize(Rect bounds) {
mService.resizeStack(mStackId, bounds,
true /* allowResizeInDockedMode */, false /* preserveWindows */,
false /* animate */, -1 /* animationDuration */);
@@ -4948,7 +5019,8 @@
}
void onPipAnimationEndResize() {
- mWindowContainerController.onPipAnimationEndResize();
+ if (mTaskStack == null) return;
+ mTaskStack.onPipAnimationEndResize();
}
@@ -5494,6 +5566,65 @@
}
}
+
+ Rect getDefaultPictureInPictureBounds(float aspectRatio) {
+ if (getTaskStack() == null) return null;
+ return getTaskStack().getPictureInPictureBounds(aspectRatio, null /* currentStackBounds */);
+ }
+
+ void animateResizePinnedStack(Rect sourceHintBounds, Rect toBounds, int animationDuration,
+ boolean fromFullscreen) {
+ if (!inPinnedWindowingMode()) return;
+ if (skipResizeAnimation(toBounds == null /* toFullscreen */)) {
+ mService.moveTasksToFullscreenStack(mStackId, true /* onTop */);
+ } else {
+ if (getTaskStack() == null) return;
+ getTaskStack().animateResizePinnedStack(toBounds, sourceHintBounds,
+ animationDuration, fromFullscreen);
+ }
+ }
+
+ private boolean skipResizeAnimation(boolean toFullscreen) {
+ if (!toFullscreen) {
+ return false;
+ }
+ final Configuration parentConfig = getParent().getConfiguration();
+ final ActivityRecord top = topRunningNonOverlayTaskActivity();
+ return top != null && !top.isConfigurationCompatible(parentConfig);
+ }
+
+ void setPictureInPictureAspectRatio(float aspectRatio) {
+ if (getTaskStack() == null) return;
+ getTaskStack().setPictureInPictureAspectRatio(aspectRatio);
+ }
+
+ void setPictureInPictureActions(List<RemoteAction> actions) {
+ if (getTaskStack() == null) return;
+ getTaskStack().setPictureInPictureActions(actions);
+ }
+
+ boolean isAnimatingBoundsToFullscreen() {
+ if (getTaskStack() == null) return false;
+ return getTaskStack().isAnimatingBoundsToFullscreen();
+ }
+
+ public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds,
+ boolean forceUpdate) {
+ // It is guaranteed that the activities requiring the update will be in the pinned stack at
+ // this point (either reparented before the animation into PiP, or before reparenting after
+ // the animation out of PiP)
+ synchronized (mService.mGlobalLock) {
+ if (!isAttached()) {
+ return;
+ }
+ ArrayList<TaskRecord> tasks = getAllTasks();
+ for (int i = 0; i < tasks.size(); i++) {
+ mStackSupervisor.updatePictureInPictureMode(tasks.get(i), targetStackBounds,
+ forceUpdate);
+ }
+ }
+ }
+
public int getStackId() {
return mStackId;
}
diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
index a50ae84..a83ef34 100644
--- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
@@ -327,9 +327,6 @@
*/
PowerManager.WakeLock mGoingToSleep;
- /** Used to keep resumeTopActivityUncheckedLocked() from being entered recursively */
- boolean inResumeTopActivity;
-
/**
* Temporary rect used during docked stack resize calculation so we don't need to create a new
* object each time.
@@ -1674,8 +1671,8 @@
}
void resizePinnedStackLocked(Rect pinnedBounds, Rect tempPinnedTaskBounds) {
- // TODO(multi-display): Pinned stack display should be passed in.
- final PinnedActivityStack stack =
+ // TODO(multi-display): The display containing the stack should be passed in.
+ final ActivityStack stack =
mRootActivityContainer.getDefaultDisplay().getPinnedStack();
if (stack == null) {
Slog.w(TAG, "resizePinnedStackLocked: pinned stack not found");
@@ -1686,7 +1683,7 @@
// another AM call that is holding the AMS lock. In such a case, the pinnedBounds may be
// incorrect if AMS.resizeStackWithBoundsFromWindowManager() is already called while waiting
// for the AMS lock to be freed. So check and make sure these bounds are still good.
- final PinnedStackWindowController stackController = stack.getWindowContainerController();
+ final TaskStack stackController = stack.getTaskStack();
if (stackController.pinnedStackResizeDisallowed()) {
return;
}
@@ -1730,15 +1727,14 @@
* invisible as well and added to the stopping list. After which we process the
* stopping list by handling the idle.
*/
- final PinnedActivityStack pinnedStack = (PinnedActivityStack) stack;
- pinnedStack.mForceHidden = true;
- pinnedStack.ensureActivitiesVisibleLocked(null, 0, PRESERVE_WINDOWS);
- pinnedStack.mForceHidden = false;
+ stack.mForceHidden = true;
+ stack.ensureActivitiesVisibleLocked(null, 0, PRESERVE_WINDOWS);
+ stack.mForceHidden = false;
activityIdleInternalLocked(null, false /* fromTimeout */,
true /* processPausingActivites */, null /* configuration */);
// Move all the tasks to the bottom of the fullscreen stack
- moveTasksToFullscreenStackLocked(pinnedStack, !ON_TOP);
+ moveTasksToFullscreenStackLocked(stack, !ON_TOP);
} else {
for (int i = tasks.size() - 1; i >= 0; i--) {
removeTaskByIdLocked(tasks.get(i).taskId, true /* killProcess */,
@@ -2642,6 +2638,9 @@
try {
mService.moveTaskToFrontLocked(task.taskId, 0, options,
true /* fromRecents */);
+ // Apply options to prevent pendingOptions be taken by client to make sure
+ // the override pending app transition will be applied immediately.
+ targetActivity.applyOptionsLocked();
} finally {
mActivityMetricsLogger.notifyActivityLaunched(START_TASK_TO_FRONT,
targetActivity);
diff --git a/services/core/java/com/android/server/wm/ActivityStartController.java b/services/core/java/com/android/server/wm/ActivityStartController.java
index 0859683..43c1206 100644
--- a/services/core/java/com/android/server/wm/ActivityStartController.java
+++ b/services/core/java/com/android/server/wm/ActivityStartController.java
@@ -179,7 +179,10 @@
.setActivityOptions(options.toBundle())
.execute();
mLastHomeActivityStartRecord = tmpOutRecord[0];
- if (mSupervisor.inResumeTopActivity) {
+ final ActivityDisplay display =
+ mService.mRootActivityContainer.getActivityDisplay(displayId);
+ final ActivityStack homeStack = display != null ? display.getHomeStack() : null;
+ if (homeStack != null && homeStack.mInResumeTopActivity) {
// If we are in resume section already, home activity will be initialized, but not
// resumed (to avoid recursive resume) and will stay that way until something pokes it
// again. We need to schedule another resume.
@@ -297,6 +300,29 @@
String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options, int userId,
boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
boolean allowBackgroundActivityStart) {
+ return startActivitiesInPackage(uid, 0 /* realCallingPid */, -1 /* realCallingUid */,
+ callingPackage, intents, resolvedTypes, resultTo, options, userId, validateIncomingUser,
+ originatingPendingIntent, allowBackgroundActivityStart);
+ }
+
+ /**
+ * Start intents as a package.
+ *
+ * @param uid Make a call as if this UID did.
+ * @param realCallingPid PID of the real caller.
+ * @param realCallingUid UID of the real caller.
+ * @param callingPackage Make a call as if this package did.
+ * @param intents Intents to start.
+ * @param userId Start the intents on this user.
+ * @param validateIncomingUser Set true to skip checking {@code userId} with the calling UID.
+ * @param originatingPendingIntent PendingIntentRecord that originated this activity start or
+ * null if not originated by PendingIntent
+ */
+ final int startActivitiesInPackage(int uid, int realCallingPid, int realCallingUid,
+ String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo,
+ SafeActivityOptions options, int userId, boolean validateIncomingUser,
+ PendingIntentRecord originatingPendingIntent,
+ boolean allowBackgroundActivityStart) {
final String reason = "startActivityInPackage";
@@ -304,12 +330,14 @@
Binder.getCallingUid(), reason);
// TODO: Switch to user app stacks here.
- return startActivities(null, uid, callingPackage, intents, resolvedTypes, resultTo, options,
- userId, reason, originatingPendingIntent, allowBackgroundActivityStart);
+ return startActivities(null, uid, realCallingPid, realCallingUid, callingPackage, intents,
+ resolvedTypes, resultTo, options, userId, reason, originatingPendingIntent,
+ allowBackgroundActivityStart);
}
- int startActivities(IApplicationThread caller, int callingUid, String callingPackage,
- Intent[] intents, String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options,
+ int startActivities(IApplicationThread caller, int callingUid, int incomingRealCallingPid,
+ int incomingRealCallingUid, String callingPackage, Intent[] intents,
+ String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options,
int userId, String reason, PendingIntentRecord originatingPendingIntent,
boolean allowBackgroundActivityStart) {
if (intents == null) {
@@ -322,8 +350,12 @@
throw new IllegalArgumentException("intents are length different than resolvedTypes");
}
- final int realCallingPid = Binder.getCallingPid();
- final int realCallingUid = Binder.getCallingUid();
+ final int realCallingPid = incomingRealCallingPid != 0
+ ? incomingRealCallingPid
+ : Binder.getCallingPid();
+ final int realCallingUid = incomingRealCallingUid != -1
+ ? incomingRealCallingUid
+ : Binder.getCallingUid();
int callingPid;
if (callingUid >= 0) {
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index a207354..4e2dffc 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.Manifest.permission.START_ACTIVITIES_FROM_BACKGROUND;
import static android.app.Activity.RESULT_CANCELED;
import static android.app.ActivityManager.START_ABORTED;
import static android.app.ActivityManager.START_CANCELED;
@@ -50,6 +51,7 @@
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE;
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TASK;
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TOP;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;
@@ -292,6 +294,8 @@
private static class Request {
private static final int DEFAULT_CALLING_UID = -1;
private static final int DEFAULT_CALLING_PID = 0;
+ static final int DEFAULT_REAL_CALLING_UID = -1;
+ static final int DEFAULT_REAL_CALLING_PID = 0;
IApplicationThread caller;
Intent intent;
@@ -304,11 +308,11 @@
IBinder resultTo;
String resultWho;
int requestCode;
- int callingPid = DEFAULT_CALLING_UID;
- int callingUid = DEFAULT_CALLING_PID;
+ int callingPid = DEFAULT_CALLING_PID;
+ int callingUid = DEFAULT_CALLING_UID;
String callingPackage;
- int realCallingPid;
- int realCallingUid;
+ int realCallingPid = DEFAULT_REAL_CALLING_PID;
+ int realCallingUid = DEFAULT_REAL_CALLING_UID;
int startFlags;
SafeActivityOptions activityOptions;
boolean ignoreTargetSecurity;
@@ -363,8 +367,8 @@
callingPid = DEFAULT_CALLING_PID;
callingUid = DEFAULT_CALLING_UID;
callingPackage = null;
- realCallingPid = 0;
- realCallingUid = 0;
+ realCallingPid = DEFAULT_REAL_CALLING_PID;
+ realCallingUid = DEFAULT_REAL_CALLING_UID;
startFlags = 0;
activityOptions = null;
ignoreTargetSecurity = false;
@@ -500,7 +504,8 @@
// for transactional diffs and preprocessing.
if (mRequest.mayWait) {
return startActivityMayWait(mRequest.caller, mRequest.callingUid,
- mRequest.callingPackage, mRequest.intent, mRequest.resolvedType,
+ mRequest.callingPackage, mRequest.realCallingPid, mRequest.realCallingUid,
+ mRequest.intent, mRequest.resolvedType,
mRequest.voiceSession, mRequest.voiceInteractor, mRequest.resultTo,
mRequest.resultWho, mRequest.requestCode, mRequest.startFlags,
mRequest.profilerInfo, mRequest.waitResult, mRequest.globalConfig,
@@ -745,8 +750,9 @@
// not sure if we need to create START_ABORTED_BACKGROUND so for now piggybacking
// on START_ABORTED
if (!abort) {
- abort |= shouldAbortBackgroundActivityStart(callingUid, callingPackage, realCallingUid,
- callerApp, originatingPendingIntent, allowBackgroundActivityStart);
+ abort |= shouldAbortBackgroundActivityStart(callingUid, callingPid, callingPackage,
+ realCallingUid, callerApp, originatingPendingIntent,
+ allowBackgroundActivityStart, intent);
}
// Merge the two options bundles, while realCallerOptions takes precedence.
@@ -893,9 +899,10 @@
true /* doResume */, checkedOptions, inTask, outActivity);
}
- private boolean shouldAbortBackgroundActivityStart(int callingUid, final String callingPackage,
- int realCallingUid, WindowProcessController callerApp,
- PendingIntentRecord originatingPendingIntent, boolean allowBackgroundActivityStart) {
+ private boolean shouldAbortBackgroundActivityStart(int callingUid, int callingPid,
+ final String callingPackage, int realCallingUid, WindowProcessController callerApp,
+ PendingIntentRecord originatingPendingIntent, boolean allowBackgroundActivityStart,
+ Intent intent) {
if (mService.isBackgroundActivityStartsEnabled()) {
return false;
}
@@ -908,19 +915,24 @@
return false;
}
// don't abort if the callingUid is in the foreground or is a persistent system process
- if (isUidForeground(callingUid) || isUidPersistentSystemProcess(callingUid)) {
+ final boolean isCallingUidForeground = isUidForeground(callingUid);
+ final boolean isCallingUidPersistentSystemProcess = isUidPersistentSystemProcess(
+ callingUid);
+ if (isCallingUidForeground || isCallingUidPersistentSystemProcess) {
return false;
}
// take realCallingUid into consideration
+ final boolean isRealCallingUidForeground = isUidForeground(realCallingUid);
+ final boolean isRealCallingUidPersistentSystemProcess = isUidPersistentSystemProcess(
+ realCallingUid);
if (realCallingUid != callingUid) {
// don't abort if the realCallingUid is in the foreground and callingUid isn't
- if (isUidForeground(realCallingUid)) {
+ if (isRealCallingUidForeground) {
return false;
}
// if the realCallingUid is a persistent system process, abort if the IntentSender
// wasn't whitelisted to start an activity
- if (isUidPersistentSystemProcess(realCallingUid) && (originatingPendingIntent != null)
- && allowBackgroundActivityStart) {
+ if (isRealCallingUidPersistentSystemProcess && allowBackgroundActivityStart) {
return false;
}
}
@@ -928,11 +940,28 @@
if (callerApp != null && callerApp.areBackgroundActivityStartsAllowed()) {
return false;
}
+ // don't abort if the callingUid has START_ACTIVITIES_FROM_BACKGROUND permission
+ if (mService.checkPermission(START_ACTIVITIES_FROM_BACKGROUND, callingPid, callingUid)
+ == PERMISSION_GRANTED) {
+ return false;
+ }
// don't abort if the caller has the same uid as the recents component
if (mSupervisor.mRecentTasks.isCallerRecents(callingUid)) {
return false;
}
// anything that has fallen through will currently be aborted
+ Slog.w(TAG, "Blocking background activity start [callingPackage: " + callingPackage
+ + "; callingUid: " + callingUid
+ + "; isCallingUidForeground: " + isCallingUidForeground
+ + "; isCallingUidPersistentSystemProcess: " + isCallingUidPersistentSystemProcess
+ + "; realCallingUid: " + realCallingUid
+ + "; isRealCallingUidForeground: " + isRealCallingUidForeground
+ + "; isRealCallingUidPersistentSystemProcess: "
+ + isRealCallingUidPersistentSystemProcess
+ + "; originatingPendingIntent: " + originatingPendingIntent
+ + "; isBgStartWhitelisted: " + allowBackgroundActivityStart
+ + "; intent: " + intent
+ + "]");
// TODO: remove this toast after feature development is done
mService.mUiHandler.post(() -> {
Toast.makeText(mService.mContext,
@@ -1066,10 +1095,10 @@
}
private int startActivityMayWait(IApplicationThread caller, int callingUid,
- String callingPackage, Intent intent, String resolvedType,
- IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor,
- IBinder resultTo, String resultWho, int requestCode, int startFlags,
- ProfilerInfo profilerInfo, WaitResult outResult,
+ String callingPackage, int requestRealCallingPid, int requestRealCallingUid,
+ Intent intent, String resolvedType, IVoiceInteractionSession voiceSession,
+ IVoiceInteractor voiceInteractor, IBinder resultTo, String resultWho, int requestCode,
+ int startFlags, ProfilerInfo profilerInfo, WaitResult outResult,
Configuration globalConfig, SafeActivityOptions options, boolean ignoreTargetSecurity,
int userId, TaskRecord inTask, String reason,
boolean allowPendingRemoteAnimationRegistryLookup,
@@ -1081,8 +1110,12 @@
mSupervisor.getActivityMetricsLogger().notifyActivityLaunching(intent);
boolean componentSpecified = intent.getComponent() != null;
- final int realCallingPid = Binder.getCallingPid();
- final int realCallingUid = Binder.getCallingUid();
+ final int realCallingPid = requestRealCallingPid != Request.DEFAULT_REAL_CALLING_PID
+ ? requestRealCallingPid
+ : Binder.getCallingPid();
+ final int realCallingUid = requestRealCallingUid != Request.DEFAULT_REAL_CALLING_UID
+ ? requestRealCallingUid
+ : Binder.getCallingUid();
int callingPid;
if (callingUid >= 0) {
@@ -1596,7 +1629,7 @@
// Also, we don't want to resume activities in a task that currently has an overlay
// as the starting activity just needs to be in the visible paused state until the
// over is removed.
- mTargetStack.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
+ mTargetStack.ensureActivitiesVisibleLocked(mStartActivity, 0, !PRESERVE_WINDOWS);
// Go ahead and tell window manager to execute app transition for this activity
// since the app transition will not be triggered through the resume channel.
mTargetStack.getDisplay().mDisplayContent.executeAppTransition();
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index d8644df..67b00b2 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -192,6 +192,8 @@
* Start intents as a package.
*
* @param uid Make a call as if this UID did.
+ * @param realCallingPid PID of the real caller.
+ * @param realCallingUid UID of the real caller.
* @param callingPackage Make a call as if this package did.
* @param intents Intents to start.
* @param userId Start the intents on this user.
@@ -201,9 +203,10 @@
* @param allowBackgroundActivityStart Whether the background activity start should be allowed
* from originatingPendingIntent
*/
- public abstract int startActivitiesInPackage(int uid, String callingPackage, Intent[] intents,
- String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options, int userId,
- boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
+ public abstract int startActivitiesInPackage(int uid, int realCallingPid, int realCallingUid,
+ String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo,
+ SafeActivityOptions options, int userId, boolean validateIncomingUser,
+ PendingIntentRecord originatingPendingIntent,
boolean allowBackgroundActivityStart);
public abstract int startActivityInPackage(int uid, int realCallingPid, int realCallingUid,
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index e82e748..61c4863 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -82,13 +82,10 @@
import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.HOME_PROC;
import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.LAUNCHING_ACTIVITY;
import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.PREVIOUS_PROC;
-import static com.android.server.am.ActivityManagerServiceDumpProcessesProto
- .PREVIOUS_PROC_VISIBLE_TIME_MS;
+import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.PREVIOUS_PROC_VISIBLE_TIME_MS;
import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.SCREEN_COMPAT_PACKAGES;
-import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.ScreenCompatPackage
- .MODE;
-import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.ScreenCompatPackage
- .PACKAGE;
+import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.ScreenCompatPackage.MODE;
+import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.ScreenCompatPackage.PACKAGE;
import static com.android.server.wm.ActivityStack.REMOVE_TASK_MODE_DESTROYING;
import static com.android.server.wm.ActivityStackSupervisor.DEFER_RESUME;
import static com.android.server.wm.ActivityStackSupervisor.ON_TOP;
@@ -210,6 +207,7 @@
import android.provider.Settings;
import android.service.voice.IVoiceInteractionSession;
import android.service.voice.VoiceInteractionManagerInternal;
+import android.sysprop.DisplayProperties;
import android.telecom.TelecomManager;
import android.text.TextUtils;
import android.text.format.Time;
@@ -245,7 +243,6 @@
import com.android.internal.util.FastPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.internal.util.function.pooled.PooledLambda;
-import com.android.server.appop.AppOpsService;
import com.android.server.AttributeCache;
import com.android.server.LocalServices;
import com.android.server.SystemService;
@@ -261,6 +258,7 @@
import com.android.server.am.PendingIntentController;
import com.android.server.am.PendingIntentRecord;
import com.android.server.am.UserState;
+import com.android.server.appop.AppOpsService;
import com.android.server.firewall.IntentFirewall;
import com.android.server.pm.UserManagerService;
import com.android.server.uri.UriGrantsManagerInternal;
@@ -694,7 +692,7 @@
final boolean isPc = mContext.getPackageManager().hasSystemFeature(FEATURE_PC);
// Transfer any global setting for forcing RTL layout, into a System Property
- SystemProperties.set(DEVELOPMENT_FORCE_RTL, forceRtl ? "1":"0");
+ DisplayProperties.debug_force_rtl(forceRtl);
final Configuration configuration = new Configuration();
Settings.System.getConfiguration(resolver, configuration);
@@ -959,9 +957,10 @@
enforceNotIsolatedCaller(reason);
userId = handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId, reason);
// TODO: Switch to user app stacks here.
- return getActivityStartController().startActivities(caller, -1, callingPackage, intents,
- resolvedTypes, resultTo, SafeActivityOptions.fromBundle(bOptions), userId, reason,
- null /* originatingPendingIntent */, false /* allowBackgroundActivityStart */);
+ return getActivityStartController().startActivities(caller, -1, 0, -1, callingPackage,
+ intents, resolvedTypes, resultTo, SafeActivityOptions.fromBundle(bOptions), userId,
+ reason, null /* originatingPendingIntent */,
+ false /* allowBackgroundActivityStart */);
}
@Override
@@ -2407,7 +2406,7 @@
try {
synchronized (mGlobalLock) {
if (animate) {
- final PinnedActivityStack stack = mRootActivityContainer.getStack(stackId);
+ final ActivityStack stack = mRootActivityContainer.getStack(stackId);
if (stack == null) {
Slog.w(TAG, "resizeStack: stackId " + stackId + " not found.");
return;
@@ -3712,7 +3711,7 @@
final long ident = Binder.clearCallingIdentity();
try {
synchronized (mGlobalLock) {
- final PinnedActivityStack stack =
+ final ActivityStack stack =
mRootActivityContainer.getDefaultDisplay().getPinnedStack();
if (stack == null) {
Slog.w(TAG, "dismissPip: pinned stack not found.");
@@ -3834,9 +3833,8 @@
// If we are animating to fullscreen then we have already dispatched the PIP mode
// changed, so we should reflect that check here as well.
- final PinnedActivityStack stack = r.getActivityStack();
- final PinnedStackWindowController windowController = stack.getWindowContainerController();
- return !windowController.mContainer.isAnimatingBoundsToFullscreen();
+ final TaskStack taskStack = r.getActivityStack().getTaskStack();
+ return !taskStack.isAnimatingBoundsToFullscreen();
}
@Override
@@ -3870,7 +3868,7 @@
r.pictureInPictureArgs.getSourceRectHint());
mRootActivityContainer.moveActivityToPinnedStack(
r, sourceBounds, aspectRatio, "enterPictureInPictureMode");
- final PinnedActivityStack stack = r.getActivityStack();
+ final ActivityStack stack = r.getActivityStack();
stack.setPictureInPictureAspectRatio(aspectRatio);
stack.setPictureInPictureActions(actions);
MetricsLoggerWrapper.logPictureInPictureEnter(mContext, r.appInfo.uid,
@@ -3914,7 +3912,7 @@
// If the activity is already in picture-in-picture, update the pinned stack now
// if it is not already expanding to fullscreen. Otherwise, the arguments will
// be used the next time the activity enters PiP
- final PinnedActivityStack stack = r.getActivityStack();
+ final ActivityStack stack = r.getActivityStack();
if (!stack.isAnimatingBoundsToFullscreen()) {
stack.setPictureInPictureAspectRatio(
r.pictureInPictureArgs.getAspectRatio());
@@ -5830,14 +5828,16 @@
}
@Override
- public int startActivitiesInPackage(int uid, String callingPackage, Intent[] intents,
- String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options, int userId,
- boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
+ public int startActivitiesInPackage(int uid, int realCallingPid, int realCallingUid,
+ String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo,
+ SafeActivityOptions options, int userId, boolean validateIncomingUser,
+ PendingIntentRecord originatingPendingIntent,
boolean allowBackgroundActivityStart) {
synchronized (mGlobalLock) {
- return getActivityStartController().startActivitiesInPackage(uid, callingPackage,
- intents, resolvedTypes, resultTo, options, userId, validateIncomingUser,
- originatingPendingIntent, allowBackgroundActivityStart);
+ return getActivityStartController().startActivitiesInPackage(uid, realCallingPid,
+ realCallingUid, callingPackage, intents, resolvedTypes, resultTo, options,
+ userId, validateIncomingUser, originatingPendingIntent,
+ allowBackgroundActivityStart);
}
}
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 089640b..5f393ef 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -65,6 +65,8 @@
import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpenExitAnimation;
import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenEnterAnimation;
import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenExitAnimation;
+import static com.android.server.wm.AppTransitionProto.APP_TRANSITION_STATE;
+import static com.android.server.wm.AppTransitionProto.LAST_USED_APP_TRANSITION;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
@@ -73,8 +75,6 @@
import static com.android.server.wm.WindowStateAnimator.STACK_CLIP_AFTER_ANIM;
import static com.android.server.wm.WindowStateAnimator.STACK_CLIP_BEFORE_ANIM;
import static com.android.server.wm.WindowStateAnimator.STACK_CLIP_NONE;
-import static com.android.server.wm.AppTransitionProto.APP_TRANSITION_STATE;
-import static com.android.server.wm.AppTransitionProto.LAST_USED_APP_TRANSITION;
import android.annotation.DrawableRes;
import android.annotation.NonNull;
@@ -84,6 +84,7 @@
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.ResourceId;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -547,7 +548,7 @@
}
Animation loadAnimationAttr(LayoutParams lp, int animAttr, int transit) {
- int resId = ResourceId.ID_NULL;
+ int resId = Resources.ID_NULL;
Context context = mContext;
if (animAttr >= 0) {
AttributeCache.Entry ent = getCachedAnimations(lp);
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 801c1e7..780eda49 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -82,6 +82,7 @@
import static com.android.server.wm.WindowStateAnimator.STACK_CLIP_AFTER_ANIM;
import android.annotation.CallSuper;
+import android.annotation.Size;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.ComponentName;
@@ -113,11 +114,14 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ToBooleanFunction;
import com.android.server.AttributeCache;
+import com.android.server.LocalServices;
+import com.android.server.display.ColorDisplayService;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.policy.WindowManagerPolicy.StartingSurface;
import com.android.server.wm.WindowManagerService.H;
import java.io.PrintWriter;
+import java.lang.ref.WeakReference;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.function.Consumer;
@@ -289,6 +293,20 @@
private static final int STARTING_WINDOW_TYPE_SNAPSHOT = 1;
private static final int STARTING_WINDOW_TYPE_SPLASH_SCREEN = 2;
+ private AppSaturationInfo mLastAppSaturationInfo;
+
+ private final ColorDisplayService.ColorTransformController mColorTransformController =
+ (matrix, translation) -> mWmService.mH.post(() -> {
+ synchronized (mWmService.mGlobalLock) {
+ if (mLastAppSaturationInfo == null) {
+ mLastAppSaturationInfo = new AppSaturationInfo();
+ }
+
+ mLastAppSaturationInfo.setSaturation(matrix, translation);
+ updateColorTransform();
+ }
+ });
+
AppWindowToken(WindowManagerService service, IApplicationToken token,
ComponentName activityComponent, boolean voiceInteraction, DisplayContent dc,
long inputDispatchingTimeoutNanos, boolean fullscreen, boolean showForAllUsers,
@@ -311,6 +329,11 @@
// Application tokens start out hidden.
setHidden(true);
hiddenRequested = true;
+
+ ColorDisplayService.ColorDisplayServiceInternal cds = LocalServices.getService(
+ ColorDisplayService.ColorDisplayServiceInternal.class);
+ cds.attachColorTransformController(activityRecord.packageName, activityRecord.mUserId,
+ new WeakReference<>(mColorTransformController));
}
AppWindowToken(WindowManagerService service, IApplicationToken token,
@@ -968,6 +991,8 @@
: null;
mLastParent = task;
+
+ updateColorTransform();
}
void postWindowRemoveStartingWindowCleanup(WindowState win) {
@@ -2816,4 +2841,22 @@
mDisplayContent.mClosingApps.remove(this);
}
}
+
+ private void updateColorTransform() {
+ if (mSurfaceControl != null && mLastAppSaturationInfo != null) {
+ mPendingTransaction.setColorTransform(mSurfaceControl, mLastAppSaturationInfo.mMatrix,
+ mLastAppSaturationInfo.mTranslation);
+ mWmService.scheduleAnimationLocked();
+ }
+ }
+
+ private static class AppSaturationInfo {
+ float[] mMatrix = new float[9];
+ float[] mTranslation = new float[3];
+
+ void setSaturation(@Size(9) float[] matrix, @Size(3) float[] translation) {
+ System.arraycopy(matrix, 0, mMatrix, 0, mMatrix.length);
+ System.arraycopy(translation, 0, mTranslation, 0, mTranslation.length);
+ }
+ }
}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 740d472..6527ca0 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -328,14 +328,6 @@
private int mLastOrientation = SCREEN_ORIENTATION_UNSPECIFIED;
/**
- * Flag indicating that the application is receiving an orientation that has different metrics
- * than it expected. E.g. Portrait instead of Landscape.
- *
- * @see #updateRotationUnchecked()
- */
- private boolean mAltOrientation = false;
-
- /**
* Orientation forced by some window. If there is no visible window that specifies orientation
* it is set to {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED}.
*
@@ -1085,10 +1077,6 @@
return mLastOrientation;
}
- boolean getAltOrientation() {
- return mAltOrientation;
- }
-
int getLastWindowForcedOrientation() {
return mLastWindowForcedOrientation;
}
@@ -1130,15 +1118,9 @@
boolean rotationNeedsUpdate() {
final int lastOrientation = getLastOrientation();
final int oldRotation = getRotation();
- final boolean oldAltOrientation = getAltOrientation();
final int rotation = mDisplayRotation.rotationForOrientation(lastOrientation, oldRotation);
- final boolean altOrientation = !mDisplayRotation.rotationHasCompatibleMetrics(
- lastOrientation, rotation);
- if (oldRotation == rotation && oldAltOrientation == altOrientation) {
- return false;
- }
- return true;
+ return oldRotation != rotation;
}
/**
@@ -1160,12 +1142,14 @@
@Override
boolean onDescendantOrientationChanged(IBinder freezeDisplayToken,
ConfigurationContainer requestingContainer) {
+ final int previousRotation = mRotation;
final Configuration config = updateOrientationFromAppTokens(
getRequestedOverrideConfiguration(), freezeDisplayToken, false);
- // If display rotation class tells us that it doesn't consider app requested orientation,
- // this display won't rotate just because of an app changes its requested orientation. Thus
- // it indicates that this display chooses not to handle this request.
- final boolean handled = getDisplayRotation().respectAppRequestedOrientation();
+ // This event is considered handled iff a configuration propagation is triggered, because
+ // that's the only place lower level containers check if they need to do something to this
+ // request. The only guaranteed signal is that the display is rotated to a different
+ // orientation (i.e. rotating 180 degrees doesn't count).
+ final boolean handled = (mRotation - previousRotation) % 2 != 0;
if (config == null) {
return handled;
}
@@ -1334,7 +1318,6 @@
final int oldRotation = mRotation;
final int lastOrientation = mLastOrientation;
- final boolean oldAltOrientation = mAltOrientation;
final int rotation = mDisplayRotation.rotationForOrientation(lastOrientation, oldRotation);
if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Computed rotation=" + rotation + " for display id="
+ mDisplayId + " based on lastOrientation=" + lastOrientation
@@ -1366,35 +1349,26 @@
}
final boolean rotateSeamlessly = mayRotateSeamlessly;
- // TODO: Implement forced rotation changes.
- // Set mAltOrientation to indicate that the application is receiving
- // an orientation that has different metrics than it expected.
- // eg. Portrait instead of Landscape.
-
- final boolean altOrientation = !mDisplayRotation.rotationHasCompatibleMetrics(
- lastOrientation, rotation);
-
if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Display id=" + mDisplayId
+ " selected orientation " + lastOrientation
+ ", got rotation " + rotation + " which has "
- + (altOrientation ? "incompatible" : "compatible") + " metrics");
+ + " metrics");
- if (oldRotation == rotation && oldAltOrientation == altOrientation) {
+ if (oldRotation == rotation) {
// No change.
return false;
}
if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Display id=" + mDisplayId
+ " rotation changed to " + rotation
- + (altOrientation ? " (alt)" : "") + " from " + oldRotation
- + (oldAltOrientation ? " (alt)" : "") + ", lastOrientation=" + lastOrientation);
+ + " from " + oldRotation
+ + ", lastOrientation=" + lastOrientation);
if (DisplayContent.deltaRotation(rotation, oldRotation) != 2) {
mWaitingForConfig = true;
}
mRotation = rotation;
- mAltOrientation = altOrientation;
mWmService.mWindowsFreezingScreen = WINDOWS_FREEZING_SCREENS_ACTIVE;
mWmService.mH.sendNewMessageDelayed(WindowManagerService.H.WINDOW_FREEZE_TIMEOUT,
@@ -1536,26 +1510,8 @@
private DisplayInfo updateDisplayAndOrientation(int uiMode) {
// Use the effective "visual" dimensions based on current rotation
final boolean rotated = (mRotation == ROTATION_90 || mRotation == ROTATION_270);
- final int realdw = rotated ? mBaseDisplayHeight : mBaseDisplayWidth;
- final int realdh = rotated ? mBaseDisplayWidth : mBaseDisplayHeight;
- int dw = realdw;
- int dh = realdh;
-
- if (mAltOrientation) {
- if (realdw > realdh) {
- // Turn landscape into portrait.
- int maxw = (int)(realdh/1.3f);
- if (maxw < realdw) {
- dw = maxw;
- }
- } else {
- // Turn portrait into landscape.
- int maxh = (int)(realdw/1.3f);
- if (maxh < realdh) {
- dh = maxh;
- }
- }
- }
+ final int dw = rotated ? mBaseDisplayHeight : mBaseDisplayWidth;
+ final int dh = rotated ? mBaseDisplayWidth : mBaseDisplayHeight;
// Update application display metrics.
final WmDisplayCutout wmDisplayCutout = calculateDisplayCutoutForRotation(mRotation);
@@ -2307,13 +2263,12 @@
out.set(mDisplayFrames.mStable);
}
- TaskStack createStack(int stackId, boolean onTop, StackWindowController controller) {
- if (DEBUG_STACK) Slog.d(TAG_WM, "Create new stackId=" + stackId + " on displayId="
- + mDisplayId);
+ void setStackOnDisplay(int stackId, boolean onTop, TaskStack stack) {
+ if (DEBUG_STACK) {
+ Slog.d(TAG_WM, "Create new stackId=" + stackId + " on displayId=" + mDisplayId);
+ }
- final TaskStack stack = new TaskStack(mWmService, stackId, controller);
mTaskStackContainers.addStackToDisplay(stack, onTop);
- return stack;
}
void moveStackToDisplay(TaskStack stack, boolean onTop) {
@@ -4015,7 +3970,6 @@
/**
* Adds the stack to this container.
- * @see DisplayContent#createStack(int, boolean, StackWindowController)
*/
void addStackToDisplay(TaskStack stack, boolean onTop) {
addStackReferenceIfNeeded(stack);
diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java
index bcc7be4..bc165dc 100644
--- a/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -329,15 +329,6 @@
return mFixedToUserRotation;
}
- /**
- * Returns {@code true} if this display rotation takes app requested orientation into
- * consideration; {@code false} otherwise. For the time being the only case where this is {@code
- * false} is when {@link #isFixedToUserRotation()} is {@code true}.
- */
- boolean respectAppRequestedOrientation() {
- return !mFixedToUserRotation;
- }
-
public int getLandscapeRotation() {
return mLandscapeRotation;
}
@@ -685,36 +676,6 @@
return rotation == mPortraitRotation || rotation == mUpsideDownRotation;
}
- /**
- * Given an orientation constant and a rotation, returns true if the rotation
- * has compatible metrics to the requested orientation. For example, if
- * the application requested landscape and got seascape, then the rotation
- * has compatible metrics; if the application requested portrait and got landscape,
- * then the rotation has incompatible metrics; if the application did not specify
- * a preference, then anything goes.
- *
- * @param orientation An orientation constant, such as
- * {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}.
- * @param rotation The rotation to check.
- * @return True if the rotation is compatible with the requested orientation.
- */
- boolean rotationHasCompatibleMetrics(int orientation, int rotation) {
- switch (orientation) {
- case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
- case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT:
- case ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT:
- return isAnyPortrait(rotation);
-
- case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
- case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE:
- case ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE:
- return isLandscapeOrSeascape(rotation);
-
- default:
- return true;
- }
- }
-
private boolean isValidRotationChoice(final int preferredRotation) {
// Determine if the given app orientation is compatible with the provided rotation choice.
switch (mCurrentAppOrientation) {
diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java
index 5f56fe5..177f244 100644
--- a/services/core/java/com/android/server/wm/KeyguardController.java
+++ b/services/core/java/com/android/server/wm/KeyguardController.java
@@ -462,22 +462,19 @@
mOccluded = false;
mDismissingKeyguardActivity = null;
- // Only the top activity of the focused stack on each display may control it's
- // occluded state.
- final ActivityStack focusedStack = display.getFocusedStack();
- if (focusedStack != null) {
- final ActivityRecord topDismissing =
- focusedStack.getTopDismissingKeyguardActivity();
- mOccluded = focusedStack.topActivityOccludesKeyguard() || (topDismissing != null
- && focusedStack.topRunningActivityLocked() == topDismissing
- && controller.canShowWhileOccluded(
+ final ActivityStack stack = getStackForControllingOccluding(display);
+ if (stack != null) {
+ final ActivityRecord topDismissing = stack.getTopDismissingKeyguardActivity();
+ mOccluded = stack.topActivityOccludesKeyguard() || (topDismissing != null
+ && stack.topRunningActivityLocked() == topDismissing
+ && controller.canShowWhileOccluded(
true /* dismissKeyguard */,
false /* showWhenLocked */));
- if (focusedStack.getTopDismissingKeyguardActivity() != null) {
- mDismissingKeyguardActivity = focusedStack.getTopDismissingKeyguardActivity();
+ if (stack.getTopDismissingKeyguardActivity() != null) {
+ mDismissingKeyguardActivity = stack.getTopDismissingKeyguardActivity();
}
- mOccluded |= controller.mWindowManager.isShowingDream();
}
+ mOccluded |= controller.mWindowManager.isShowingDream();
// TODO(b/113840485): Handle app transition for individual display, and apply occluded
// state change to secondary displays.
@@ -492,6 +489,23 @@
}
}
+ /**
+ * Gets the stack used to check the occluded state.
+ * <p>
+ * Only the top non-pinned activity of the focusable stack on each display can control its
+ * occlusion state.
+ */
+ private ActivityStack getStackForControllingOccluding(ActivityDisplay display) {
+ for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = display.getChildAt(stackNdx);
+ if (stack != null && stack.isFocusableAndVisible()
+ && !stack.inPinnedWindowingMode()) {
+ return stack;
+ }
+ }
+ return null;
+ }
+
void dumpStatus(PrintWriter pw, String prefix) {
final StringBuilder sb = new StringBuilder();
sb.append(prefix);
diff --git a/services/core/java/com/android/server/wm/LaunchParamsPersister.java b/services/core/java/com/android/server/wm/LaunchParamsPersister.java
index 3062d34..86dc66d 100644
--- a/services/core/java/com/android/server/wm/LaunchParamsPersister.java
+++ b/services/core/java/com/android/server/wm/LaunchParamsPersister.java
@@ -221,7 +221,7 @@
}
private boolean saveTaskToLaunchParam(TaskRecord task, PersistableLaunchParams params) {
- final ActivityStack<?> stack = task.getStack();
+ final ActivityStack stack = task.getStack();
final int displayId = stack.mDisplayId;
final ActivityDisplay display =
mSupervisor.mRootActivityContainer.getActivityDisplay(displayId);
diff --git a/services/core/java/com/android/server/wm/PinnedActivityStack.java b/services/core/java/com/android/server/wm/PinnedActivityStack.java
deleted file mode 100644
index 2a05af4..0000000
--- a/services/core/java/com/android/server/wm/PinnedActivityStack.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2017 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.server.wm;
-
-import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
-import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
-
-import android.app.RemoteAction;
-import android.content.res.Configuration;
-import android.graphics.Rect;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * State and management of the pinned stack of activities.
- */
-class PinnedActivityStack extends ActivityStack<PinnedStackWindowController>
- implements PinnedStackWindowListener {
-
- PinnedActivityStack(ActivityDisplay display, int stackId, ActivityStackSupervisor supervisor,
- boolean onTop) {
- super(display, stackId, supervisor, WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, onTop);
- }
-
- @Override
- PinnedStackWindowController createStackWindowController(int displayId, boolean onTop,
- Rect outBounds) {
- return new PinnedStackWindowController(mStackId, this, displayId, onTop, outBounds,
- mRootActivityContainer.mWindowManager);
- }
-
- Rect getDefaultPictureInPictureBounds(float aspectRatio) {
- return getWindowContainerController().getPictureInPictureBounds(aspectRatio,
- null /* currentStackBounds */);
- }
-
- void animateResizePinnedStack(Rect sourceHintBounds, Rect toBounds, int animationDuration,
- boolean fromFullscreen) {
- if (skipResizeAnimation(toBounds == null /* toFullscreen */)) {
- mService.moveTasksToFullscreenStack(mStackId, true /* onTop */);
- } else {
- getWindowContainerController().animateResizePinnedStack(toBounds, sourceHintBounds,
- animationDuration, fromFullscreen);
- }
- }
-
- private boolean skipResizeAnimation(boolean toFullscreen) {
- if (!toFullscreen) {
- return false;
- }
- final Configuration parentConfig = getParent().getConfiguration();
- final ActivityRecord top = topRunningNonOverlayTaskActivity();
- return top != null && !top.isConfigurationCompatible(parentConfig);
- }
-
- void setPictureInPictureAspectRatio(float aspectRatio) {
- getWindowContainerController().setPictureInPictureAspectRatio(aspectRatio);
- }
-
- void setPictureInPictureActions(List<RemoteAction> actions) {
- getWindowContainerController().setPictureInPictureActions(actions);
- }
-
- boolean isAnimatingBoundsToFullscreen() {
- return getWindowContainerController().mContainer.isAnimatingBoundsToFullscreen();
- }
-
- /**
- * Returns whether to defer the scheduling of the multi-window mode.
- */
- boolean deferScheduleMultiWindowModeChanged() {
- // For the pinned stack, the deferring of the multi-window mode changed is tied to the
- // transition animation into picture-in-picture, and is called once the animation completes,
- // or is interrupted in a way that would leave the stack in a non-fullscreen state.
- // @see BoundsAnimationController
- // @see BoundsAnimationControllerTests
- return mWindowContainerController.deferScheduleMultiWindowModeChanged();
- }
-
- public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds,
- boolean forceUpdate) {
- // It is guaranteed that the activities requiring the update will be in the pinned stack at
- // this point (either reparented before the animation into PiP, or before reparenting after
- // the animation out of PiP)
- synchronized (mService.mGlobalLock) {
- if (!isAttached()) {
- return;
- }
- ArrayList<TaskRecord> tasks = getAllTasks();
- for (int i = 0; i < tasks.size(); i++ ) {
- mStackSupervisor.updatePictureInPictureMode(tasks.get(i), targetStackBounds,
- forceUpdate);
- }
- }
- }
-}
diff --git a/services/core/java/com/android/server/wm/PinnedStackWindowController.java b/services/core/java/com/android/server/wm/PinnedStackWindowController.java
deleted file mode 100644
index 518e39b..0000000
--- a/services/core/java/com/android/server/wm/PinnedStackWindowController.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (C) 2017 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.server.wm;
-
-import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
-
-import static com.android.server.wm.BoundsAnimationController.NO_PIP_MODE_CHANGED_CALLBACKS;
-import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_END;
-import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_START;
-import static com.android.server.wm.BoundsAnimationController.SchedulePipModeChangedState;
-
-import android.app.RemoteAction;
-import android.graphics.Rect;
-
-import java.util.List;
-
-/**
- * Controller for the pinned stack container. See {@link StackWindowController}.
- */
-public class PinnedStackWindowController extends StackWindowController {
-
- private Rect mTmpFromBounds = new Rect();
- private Rect mTmpToBounds = new Rect();
-
- public PinnedStackWindowController(int stackId, PinnedStackWindowListener listener,
- int displayId, boolean onTop, Rect outBounds, WindowManagerService service) {
- super(stackId, listener, displayId, onTop, outBounds, service);
- }
-
- /**
- * @return the {@param currentStackBounds} transformed to the give {@param aspectRatio}. If
- * {@param currentStackBounds} is null, then the {@param aspectRatio} is applied to the
- * default bounds.
- */
- public Rect getPictureInPictureBounds(float aspectRatio, Rect stackBounds) {
- synchronized (mGlobalLock) {
- if (!mService.mSupportsPictureInPicture || mContainer == null) {
- return null;
- }
-
- final DisplayContent displayContent = mContainer.getDisplayContent();
- if (displayContent == null) {
- return null;
- }
-
- final PinnedStackController pinnedStackController =
- displayContent.getPinnedStackController();
- if (stackBounds == null) {
- // Calculate the aspect ratio bounds from the default bounds
- stackBounds = pinnedStackController.getDefaultOrLastSavedBounds();
- }
-
- if (pinnedStackController.isValidPictureInPictureAspectRatio(aspectRatio)) {
- return pinnedStackController.transformBoundsToAspectRatio(stackBounds, aspectRatio,
- true /* useCurrentMinEdgeSize */);
- } else {
- return stackBounds;
- }
- }
- }
-
- /**
- * Animates the pinned stack.
- */
- public void animateResizePinnedStack(Rect toBounds, Rect sourceHintBounds,
- int animationDuration, boolean fromFullscreen) {
- synchronized (mGlobalLock) {
- if (mContainer == null) {
- throw new IllegalArgumentException("Pinned stack container not found :(");
- }
-
- // Get the from-bounds
- final Rect fromBounds = new Rect();
- mContainer.getBounds(fromBounds);
-
- // Get non-null fullscreen to-bounds for animating if the bounds are null
- @SchedulePipModeChangedState int schedulePipModeChangedState =
- NO_PIP_MODE_CHANGED_CALLBACKS;
- final boolean toFullscreen = toBounds == null;
- if (toFullscreen) {
- if (fromFullscreen) {
- throw new IllegalArgumentException("Should not defer scheduling PiP mode"
- + " change on animation to fullscreen.");
- }
- schedulePipModeChangedState = SCHEDULE_PIP_MODE_CHANGED_ON_START;
-
- mService.getStackBounds(
- WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, mTmpToBounds);
- if (!mTmpToBounds.isEmpty()) {
- // If there is a fullscreen bounds, use that
- toBounds = new Rect(mTmpToBounds);
- } else {
- // Otherwise, use the display bounds
- toBounds = new Rect();
- mContainer.getDisplayContent().getBounds(toBounds);
- }
- } else if (fromFullscreen) {
- schedulePipModeChangedState = SCHEDULE_PIP_MODE_CHANGED_ON_END;
- }
-
- mContainer.setAnimationFinalBounds(sourceHintBounds, toBounds, toFullscreen);
-
- final Rect finalToBounds = toBounds;
- final @SchedulePipModeChangedState int finalSchedulePipModeChangedState =
- schedulePipModeChangedState;
- final DisplayContent displayContent = mContainer.getDisplayContent();
- displayContent.mBoundsAnimationController.getHandler().post(() -> {
- if (mContainer == null) {
- return;
- }
- displayContent.mBoundsAnimationController.animateBounds(mContainer, fromBounds,
- finalToBounds, animationDuration, finalSchedulePipModeChangedState,
- fromFullscreen, toFullscreen);
- });
- }
- }
-
- /**
- * Sets the current picture-in-picture aspect ratio.
- */
- public void setPictureInPictureAspectRatio(float aspectRatio) {
- synchronized (mGlobalLock) {
- if (!mService.mSupportsPictureInPicture || mContainer == null) {
- return;
- }
-
- final PinnedStackController pinnedStackController =
- mContainer.getDisplayContent().getPinnedStackController();
-
- if (Float.compare(aspectRatio, pinnedStackController.getAspectRatio()) != 0) {
- mContainer.getAnimationOrCurrentBounds(mTmpFromBounds);
- mTmpToBounds.set(mTmpFromBounds);
- getPictureInPictureBounds(aspectRatio, mTmpToBounds);
- if (!mTmpToBounds.equals(mTmpFromBounds)) {
- animateResizePinnedStack(mTmpToBounds, null /* sourceHintBounds */,
- -1 /* duration */, false /* fromFullscreen */);
- }
- pinnedStackController.setAspectRatio(
- pinnedStackController.isValidPictureInPictureAspectRatio(aspectRatio)
- ? aspectRatio : -1f);
- }
- }
- }
-
- /**
- * Sets the current picture-in-picture actions.
- */
- public void setPictureInPictureActions(List<RemoteAction> actions) {
- synchronized (mGlobalLock) {
- if (!mService.mSupportsPictureInPicture || mContainer == null) {
- return;
- }
-
- mContainer.getDisplayContent().getPinnedStackController().setActions(actions);
- }
- }
-
- /**
- * @return whether the multi-window mode change should be deferred as a part of a transition
- * from fullscreen to non-fullscreen bounds.
- */
- public boolean deferScheduleMultiWindowModeChanged() {
- synchronized (mGlobalLock) {
- return mContainer.deferScheduleMultiWindowModeChanged();
- }
- }
-
- /**
- * @return whether the stack can be resized from the bounds animation.
- */
- public boolean pinnedStackResizeDisallowed() {
- synchronized (mGlobalLock) {
- return mContainer.pinnedStackResizeDisallowed();
- }
- }
-
- /**
- * The following calls are made from WM to AM.
- */
-
- /** Calls directly into activity manager so window manager lock shouldn't held. */
- public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds,
- boolean forceUpdate) {
- if (mListener != null) {
- PinnedStackWindowListener listener = (PinnedStackWindowListener) mListener;
- listener.updatePictureInPictureModeForPinnedStackAnimation(targetStackBounds,
- forceUpdate);
- }
- }
-}
diff --git a/services/core/java/com/android/server/wm/PinnedStackWindowListener.java b/services/core/java/com/android/server/wm/PinnedStackWindowListener.java
deleted file mode 100644
index 33e8a60..0000000
--- a/services/core/java/com/android/server/wm/PinnedStackWindowListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2017 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.server.wm;
-
-import android.graphics.Rect;
-
-/**
- * Interface used by the creator of {@link PinnedStackWindowController} to listen to changes with
- * the stack container.
- */
-public interface PinnedStackWindowListener extends StackWindowListener {
-
- /**
- * Called when the stack container pinned stack animation will change the picture-in-picture
- * mode. This is a direct call into ActivityManager.
- */
- default void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds,
- boolean forceUpdate) {}
-}
diff --git a/services/core/java/com/android/server/wm/RootActivityContainer.java b/services/core/java/com/android/server/wm/RootActivityContainer.java
index f55c7c9..c4a853d 100644
--- a/services/core/java/com/android/server/wm/RootActivityContainer.java
+++ b/services/core/java/com/android/server/wm/RootActivityContainer.java
@@ -234,7 +234,7 @@
mWindowManager = wm;
setWindowContainer(mWindowManager.mRoot);
mDisplayManager = mService.mContext.getSystemService(DisplayManager.class);
- mDisplayManager.registerDisplayListener(this, mService.mH);
+ mDisplayManager.registerDisplayListener(this, mService.mUiHandler);
mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
final Display[] displays = mDisplayManager.getDisplays();
@@ -955,7 +955,7 @@
mWindowManager.deferSurfaceLayout();
final ActivityDisplay display = r.getActivityStack().getDisplay();
- PinnedActivityStack stack = display.getPinnedStack();
+ ActivityStack stack = display.getPinnedStack();
// This will clear the pinned stack by moving an existing task to the full screen stack,
// ensuring only one task is present.
@@ -1108,28 +1108,41 @@
return false;
}
+ boolean result = false;
if (targetStack != null && (targetStack.isTopStackOnDisplay()
|| getTopDisplayFocusedStack() == targetStack)) {
- return targetStack.resumeTopActivityUncheckedLocked(target, targetOptions);
+ result = targetStack.resumeTopActivityUncheckedLocked(target, targetOptions);
}
- // Resume all top activities in focused stacks on all displays.
for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ boolean resumedOnDisplay = false;
final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- final ActivityStack focusedStack = display.getFocusedStack();
- if (focusedStack == null) {
- continue;
+ for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = display.getChildAt(stackNdx);
+ final ActivityRecord topRunningActivity = stack.topRunningActivityLocked();
+ if (!stack.isFocusableAndVisible() || topRunningActivity == null) {
+ continue;
+ }
+ if (topRunningActivity.isState(RESUMED)) {
+ // Kick off any lingering app transitions form the MoveTaskToFront operation.
+ stack.executeAppTransition(targetOptions);
+ } else {
+ resumedOnDisplay |= topRunningActivity.makeActiveIfNeeded(target);
+ }
}
- final ActivityRecord r = focusedStack.topRunningActivityLocked();
- if (r == null || !r.isState(RESUMED)) {
- focusedStack.resumeTopActivityUncheckedLocked(null, null);
- } else if (r.isState(RESUMED)) {
- // Kick off any lingering app transitions form the MoveTaskToFront operation.
- focusedStack.executeAppTransition(targetOptions);
+ if (!resumedOnDisplay) {
+ // In cases when there are no valid activities (e.g. device just booted or launcher
+ // crashed) it's possible that nothing was resumed on a display. Requesting resume
+ // of top activity in focused stack explicitly will make sure that at least home
+ // activity is started and resumed, and no recursion occurs.
+ final ActivityStack focusedStack = display.getFocusedStack();
+ if (focusedStack != null) {
+ focusedStack.resumeTopActivityUncheckedLocked(target, targetOptions);
+ }
}
}
- return false;
+ return result;
}
void applySleepTokens(boolean applyToStacks) {
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index 937c9d9..58cf73a 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -47,10 +47,9 @@
import android.view.IWindowSession;
import android.view.IWindowSessionCallback;
import android.view.InputChannel;
-import android.view.Surface;
+import android.view.InsetsState;
import android.view.SurfaceControl;
import android.view.SurfaceSession;
-import android.view.InsetsState;
import android.view.WindowManager;
import com.android.internal.os.logging.MetricsLoggerWrapper;
@@ -432,7 +431,7 @@
@Override
public void insetsModified(IWindow window, InsetsState state) {
- synchronized (mService.mWindowMap) {
+ synchronized (mService.mGlobalLock) {
final WindowState windowState = mService.windowForClientLocked(this, window,
false /* throwOnError */);
if (windowState != null) {
diff --git a/services/core/java/com/android/server/wm/StackWindowController.java b/services/core/java/com/android/server/wm/StackWindowController.java
deleted file mode 100644
index ada807b..0000000
--- a/services/core/java/com/android/server/wm/StackWindowController.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (C) 2016 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.server.wm;
-
-import static com.android.server.wm.WindowContainer.POSITION_BOTTOM;
-import static com.android.server.wm.WindowContainer.POSITION_TOP;
-import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STACK;
-import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
-
-import android.content.res.Configuration;
-import android.graphics.Rect;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.util.Slog;
-import android.util.SparseArray;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.lang.ref.WeakReference;
-
-/**
- * Controller for the stack container. This is created by activity manager to link activity stacks
- * to the stack container they use in window manager.
- *
- * Test class: {@link StackWindowControllerTests}
- */
-public class StackWindowController
- extends WindowContainerController<TaskStack, StackWindowListener> {
-
- private final int mStackId;
-
- private final H mHandler;
-
- final Rect mTmpBounds = new Rect();
-
- public StackWindowController(int stackId, StackWindowListener listener, int displayId,
- boolean onTop, Rect outBounds) {
- this(stackId, listener, displayId, onTop, outBounds, WindowManagerService.getInstance());
- }
-
- @VisibleForTesting
- public StackWindowController(int stackId, StackWindowListener listener,
- int displayId, boolean onTop, Rect outBounds, WindowManagerService service) {
- super(listener, service);
- mStackId = stackId;
- mHandler = new H(new WeakReference<>(this), service.mH.getLooper());
-
- final DisplayContent dc = mRoot.getDisplayContent(displayId);
- if (dc == null) {
- throw new IllegalArgumentException("Trying to add stackId=" + stackId
- + " to unknown displayId=" + displayId);
- }
-
- dc.createStack(stackId, onTop, this);
- getRawBounds(outBounds);
- }
-
- @Override
- public void removeContainer() {
- if (mContainer != null) {
- mContainer.removeIfPossible();
- super.removeContainer();
- }
- }
-
- void reparent(int displayId, Rect outStackBounds, boolean onTop) {
- if (mContainer == null) {
- throw new IllegalArgumentException("Trying to move unknown stackId=" + mStackId
- + " to displayId=" + displayId);
- }
-
- final DisplayContent targetDc = mRoot.getDisplayContent(displayId);
- if (targetDc == null) {
- throw new IllegalArgumentException("Trying to move stackId=" + mStackId
- + " to unknown displayId=" + displayId);
- }
-
- targetDc.moveStackToDisplay(mContainer, onTop);
- getRawBounds(outStackBounds);
- }
-
- void positionChildAt(Task child, int position) {
- if (DEBUG_STACK) {
- Slog.i(TAG_WM, "positionChildAt: positioning task=" + child + " at " + position);
- }
- if (child == null) {
- if (DEBUG_STACK) {
- Slog.i(TAG_WM, "positionChildAt: could not find task=" + this);
- }
- return;
- }
- if (mContainer == null) {
- if (DEBUG_STACK) {
- Slog.i(TAG_WM, "positionChildAt: could not find stack for task=" + mContainer);
- }
- return;
- }
- child.positionAt(position);
- mContainer.getDisplayContent().layoutAndAssignWindowLayersIfNeeded();
- }
-
- void positionChildAtTop(Task child, boolean includingParents) {
- if (child == null) {
- // TODO: Fix the call-points that cause this to happen.
- return;
- }
-
- mContainer.positionChildAt(POSITION_TOP, child, includingParents);
-
- final DisplayContent displayContent = mContainer.getDisplayContent();
- if (displayContent.mAppTransition.isTransitionSet()) {
- child.setSendingToBottom(false);
- }
- displayContent.layoutAndAssignWindowLayersIfNeeded();
- }
-
- void positionChildAtBottom(Task child, boolean includingParents) {
- if (child == null) {
- // TODO: Fix the call-points that cause this to happen.
- return;
- }
-
- mContainer.positionChildAt(POSITION_BOTTOM, child, includingParents);
-
- if (mContainer.getDisplayContent().mAppTransition.isTransitionSet()) {
- child.setSendingToBottom(true);
- }
- mContainer.getDisplayContent().layoutAndAssignWindowLayersIfNeeded();
- }
-
- /**
- * Re-sizes a stack and its containing tasks.
- *
- * @param bounds New stack bounds. Passing in null sets the bounds to fullscreen.
- * @param taskBounds Bounds for tasks in the resized stack, keyed by task id.
- * @param taskTempInsetBounds Inset bounds for individual tasks, keyed by task id.
- */
- public void resize(Rect bounds, SparseArray<Rect> taskBounds,
- SparseArray<Rect> taskTempInsetBounds) {
- if (mContainer == null) {
- throw new IllegalArgumentException("resizeStack: stack " + this + " not found.");
- }
- // We might trigger a configuration change. Save the current task bounds for freezing.
- mContainer.prepareFreezingTaskBounds();
- if (mContainer.setBounds(bounds, taskBounds, taskTempInsetBounds)
- && mContainer.isVisible()) {
- mContainer.getDisplayContent().setLayoutNeeded();
- mService.mWindowPlacerLocked.performSurfacePlacement();
- }
- }
-
- public void onPipAnimationEndResize() {
- mContainer.onPipAnimationEndResize();
- }
-
- /**
- * @see TaskStack.getStackDockedModeBoundsLocked(ConfigurationContainer, Rect, Rect, Rect)
- */
- public void getStackDockedModeBounds(Configuration parentConfig, Rect dockedBounds,
- Rect currentTempTaskBounds,
- Rect outStackBounds, Rect outTempTaskBounds) {
- if (mContainer != null) {
- mContainer.getStackDockedModeBoundsLocked(parentConfig, dockedBounds,
- currentTempTaskBounds, outStackBounds, outTempTaskBounds);
- return;
- }
- outStackBounds.setEmpty();
- outTempTaskBounds.setEmpty();
- }
-
- public void prepareFreezingTaskBounds() {
- if (mContainer == null) {
- throw new IllegalArgumentException("prepareFreezingTaskBounds: stack " + this
- + " not found.");
- }
- mContainer.prepareFreezingTaskBounds();
- }
-
- public void getRawBounds(Rect outBounds) {
- if (mContainer.matchParentBounds()) {
- outBounds.setEmpty();
- } else {
- mContainer.getRawBounds(outBounds);
- }
- }
-
- public void getBounds(Rect outBounds) {
- if (mContainer != null) {
- mContainer.getBounds(outBounds);
- return;
- }
- outBounds.setEmpty();
- }
-
- void requestResize(Rect bounds) {
- mHandler.obtainMessage(H.REQUEST_RESIZE, bounds).sendToTarget();
- }
-
- @Override
- public String toString() {
- return "{StackWindowController stackId=" + mStackId + "}";
- }
-
- private static final class H extends Handler {
-
- static final int REQUEST_RESIZE = 0;
-
- private final WeakReference<StackWindowController> mController;
-
- H(WeakReference<StackWindowController> controller, Looper looper) {
- super(looper);
- mController = controller;
- }
-
- @Override
- public void handleMessage(Message msg) {
- final StackWindowController controller = mController.get();
- final StackWindowListener listener = (controller != null)
- ? controller.mListener : null;
- if (listener == null) {
- return;
- }
- switch (msg.what) {
- case REQUEST_RESIZE:
- listener.requestResize((Rect) msg.obj);
- break;
- }
- }
- }
-}
diff --git a/services/core/java/com/android/server/wm/StackWindowListener.java b/services/core/java/com/android/server/wm/StackWindowListener.java
deleted file mode 100644
index c763c17..0000000
--- a/services/core/java/com/android/server/wm/StackWindowListener.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2017 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.server.wm;
-
-import android.graphics.Rect;
-
-/**
- * Interface used by the creator of {@link StackWindowController} to listen to changes with
- * the stack container.
- */
-public interface StackWindowListener extends WindowContainerListener {
-
- /** Called when the stack container would like its controller to resize. */
- void requestResize(Rect bounds);
-}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index d334bd2..a7dd55b 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -209,26 +209,14 @@
super.removeImmediately();
}
- void reparent(StackWindowController stackController, int position, boolean moveParents) {
- if (DEBUG_STACK) {
- Slog.i(TAG_WM, "reparent: moving taskId=" + mTaskId
- + " to stack=" + stackController + " at " + position);
- }
- final TaskStack stack = stackController.mContainer;
- if (stack == null) {
- throw new IllegalArgumentException("reparent: could not find stack="
- + stackController);
- }
- reparent(stack, position, moveParents);
- getDisplayContent().layoutAndAssignWindowLayersIfNeeded();
- }
-
-
void reparent(TaskStack stack, int position, boolean moveParents) {
if (stack == mStack) {
throw new IllegalArgumentException(
"task=" + this + " already child of stack=" + mStack);
}
+ if (stack == null) {
+ throw new IllegalArgumentException("reparent: could not find stack.");
+ }
if (DEBUG_STACK) Slog.i(TAG, "reParentTask: removing taskId=" + mTaskId
+ " from stack=" + mStack);
EventLog.writeEvent(WM_TASK_REMOVED, mTaskId, "reParentTask");
@@ -254,6 +242,7 @@
onDisplayChanged(displayContent);
prevDisplayContent.setLayoutNeeded();
}
+ getDisplayContent().layoutAndAssignWindowLayersIfNeeded();
}
/** @see ActivityTaskManagerService#positionTaskInStack(int, int, int). */
diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
index 6acd864..f3050a9 100644
--- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
@@ -709,7 +709,7 @@
final List<TaskRecord> tasksToCheck = new ArrayList<>();
for (int i = 0; i < display.getChildCount(); ++i) {
- ActivityStack<?> stack = display.getChildAt(i);
+ final ActivityStack stack = display.getChildAt(i);
if (!stack.inFreeformWindowingMode()) {
continue;
}
diff --git a/services/core/java/com/android/server/wm/TaskRecord.java b/services/core/java/com/android/server/wm/TaskRecord.java
index 4a553cf..0529ed1 100644
--- a/services/core/java/com/android/server/wm/TaskRecord.java
+++ b/services/core/java/com/android/server/wm/TaskRecord.java
@@ -455,17 +455,10 @@
}
final Rect bounds = updateOverrideConfigurationFromLaunchBounds();
- final StackWindowController stackController = getStack().getWindowContainerController();
+ final TaskStack stack = getStack().getTaskStack();
- if (DEBUG_STACK) {
- Slog.i(TAG_WM, "TaskRecord: taskId=" + taskId
- + " stack=" + stackController + " bounds=" + bounds);
- }
-
- final TaskStack stack = stackController.mContainer;
if (stack == null) {
- throw new IllegalArgumentException("TaskRecord: invalid stack="
- + stackController);
+ throw new IllegalArgumentException("TaskRecord: invalid stack=" + mStack);
}
EventLog.writeEvent(WM_TASK_CREATED, taskId, stack.mStackId);
mTask = new Task(taskId, stack, userId, mService.mWindowManager, mResizeMode,
@@ -705,6 +698,14 @@
return false;
}
+ final boolean toTopOfStack = position == MAX_VALUE;
+ if (toTopOfStack && toStack.getResumedActivity() != null
+ && toStack.topRunningActivityLocked() != null) {
+ // Pause the resumed activity on the target stack while re-parenting task on top of it.
+ toStack.startPausingLocked(false /* userLeaving */, false /* uiSleeping */,
+ null /* resuming */, false /* pauseImmediately */);
+ }
+
final int toStackWindowingMode = toStack.getWindowingMode();
final ActivityRecord topActivity = getTopActivity();
@@ -742,7 +743,7 @@
// Must reparent first in window manager to avoid a situation where AM can delete the
// we are coming from in WM before we reparent because it became empty.
- mTask.reparent(toStack.getWindowContainerController(), position,
+ mTask.reparent(toStack.getTaskStack(), position,
moveStackMode == REPARENT_MOVE_STACK_TO_FRONT);
final boolean moveStackToFront = moveStackMode == REPARENT_MOVE_STACK_TO_FRONT
@@ -1278,28 +1279,28 @@
}
/**
- * Checks if the root activity requires a particular orientation (either by override or
+ * Checks if the top activity requires a particular orientation (either by override or
* activityInfo) and returns that. Otherwise, this returns ORIENTATION_UNDEFINED.
*/
- private int getRootActivityRequestedOrientation() {
- ActivityRecord root = getRootActivity();
+ private int getTopActivityRequestedOrientation() {
+ ActivityRecord top = getTopActivity();
if (getRequestedOverrideConfiguration().orientation != ORIENTATION_UNDEFINED
- || root == null) {
+ || top == null) {
return getRequestedOverrideConfiguration().orientation;
}
- int rootScreenOrientation = root.getOrientation();
- if (rootScreenOrientation == ActivityInfo.SCREEN_ORIENTATION_NOSENSOR) {
+ int screenOrientation = top.getOrientation();
+ if (screenOrientation == ActivityInfo.SCREEN_ORIENTATION_NOSENSOR) {
// NOSENSOR means the display's "natural" orientation, so return that.
ActivityDisplay display = mStack != null ? mStack.getDisplay() : null;
if (display != null && display.mDisplayContent != null) {
return mStack.getDisplay().mDisplayContent.getNaturalOrientation();
}
- } else if (rootScreenOrientation == ActivityInfo.SCREEN_ORIENTATION_LOCKED) {
+ } else if (screenOrientation == ActivityInfo.SCREEN_ORIENTATION_LOCKED) {
// LOCKED means the activity's orientation remains unchanged, so return existing value.
- return root.getConfiguration().orientation;
- } else if (ActivityInfo.isFixedOrientationLandscape(rootScreenOrientation)) {
+ return top.getConfiguration().orientation;
+ } else if (ActivityInfo.isFixedOrientationLandscape(screenOrientation)) {
return ORIENTATION_LANDSCAPE;
- } else if (ActivityInfo.isFixedOrientationPortrait(rootScreenOrientation)) {
+ } else if (ActivityInfo.isFixedOrientationPortrait(screenOrientation)) {
return ORIENTATION_PORTRAIT;
}
return ORIENTATION_UNDEFINED;
@@ -2196,9 +2197,9 @@
// In FULLSCREEN mode, always start with empty bounds to indicate "fill parent"
outOverrideBounds.setEmpty();
- // If the task or its root activity require a different orientation, make it fit the
+ // If the task or its top activity requires a different orientation, make it fit the
// available bounds by scaling down its bounds.
- int forcedOrientation = getRootActivityRequestedOrientation();
+ int forcedOrientation = getTopActivityRequestedOrientation();
if (forcedOrientation != ORIENTATION_UNDEFINED
&& forcedOrientation != newParentConfig.orientation) {
final Rect parentBounds = newParentConfig.windowConfiguration.getBounds();
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index ee74bdf..8ed7d04 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -21,6 +21,7 @@
import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.PINNED_WINDOWING_MODE_ELEVATION_IN_DIP;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
@@ -33,6 +34,10 @@
import static android.view.WindowManager.DOCKED_RIGHT;
import static android.view.WindowManager.DOCKED_TOP;
+import static com.android.server.wm.BoundsAnimationController.NO_PIP_MODE_CHANGED_CALLBACKS;
+import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_END;
+import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_START;
+import static com.android.server.wm.BoundsAnimationController.SchedulePipModeChangedState;
import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
import static com.android.server.wm.StackProto.ADJUSTED_BOUNDS;
import static com.android.server.wm.StackProto.ADJUSTED_FOR_IME;
@@ -47,10 +52,12 @@
import static com.android.server.wm.StackProto.MINIMIZE_AMOUNT;
import static com.android.server.wm.StackProto.TASKS;
import static com.android.server.wm.StackProto.WINDOW_CONTAINER;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STACK;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_TASK_MOVEMENT;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import android.annotation.CallSuper;
+import android.app.RemoteAction;
import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.Rect;
@@ -71,9 +78,10 @@
import com.android.server.EventLogTags;
import java.io.PrintWriter;
+import java.util.List;
public class TaskStack extends WindowContainer<Task> implements
- BoundsAnimationTarget {
+ BoundsAnimationTarget, ConfigurationContainerListener {
/** Minimum size of an adjusted stack bounds relative to original stack bounds. Used to
* restrict IME adjustment so that a min portion of top stack remains visible.*/
private static final float ADJUSTED_STACK_FRACTION_MIN = 0.3f;
@@ -93,6 +101,10 @@
private Rect mTmpRect2 = new Rect();
private Rect mTmpRect3 = new Rect();
+ /** For Pinned stack controlling. */
+ private Rect mTmpFromBounds = new Rect();
+ private Rect mTmpToBounds = new Rect();
+
/** Stack bounds adjusted to screen content area (taking into account IM windows, etc.) */
private final Rect mAdjustedBounds = new Rect();
@@ -141,6 +153,9 @@
private Dimmer mDimmer = new Dimmer(this);
+ // TODO: remove after unification.
+ ActivityStack mActivityStack;
+
/**
* For {@link #prepareSurfaces}.
*/
@@ -150,10 +165,11 @@
private final AnimatingAppWindowTokenRegistry mAnimatingAppWindowTokenRegistry =
new AnimatingAppWindowTokenRegistry();
- TaskStack(WindowManagerService service, int stackId, StackWindowController controller) {
+ TaskStack(WindowManagerService service, int stackId, ActivityStack activityStack) {
super(service);
mStackId = stackId;
- setController(controller);
+ mActivityStack = activityStack;
+ activityStack.registerConfigurationChangeListener(this);
mDockedStackMinimizeThickness = service.mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.docked_stack_minimize_thickness);
EventLog.writeEvent(EventLogTags.WM_STACK_CREATED, stackId);
@@ -572,6 +588,49 @@
positionChildAt(position, task, moveParents /* includingParents */, showForAllUsers);
}
+ void positionChildAt(Task child, int position) {
+ if (DEBUG_STACK) {
+ Slog.i(TAG_WM, "positionChildAt: positioning task=" + child + " at " + position);
+ }
+ if (child == null) {
+ if (DEBUG_STACK) {
+ Slog.i(TAG_WM, "positionChildAt: could not find task=" + this);
+ }
+ return;
+ }
+ child.positionAt(position);
+ getDisplayContent().layoutAndAssignWindowLayersIfNeeded();
+ }
+
+ void positionChildAtTop(Task child, boolean includingParents) {
+ if (child == null) {
+ // TODO: Fix the call-points that cause this to happen.
+ return;
+ }
+
+ positionChildAt(POSITION_TOP, child, includingParents);
+
+ final DisplayContent displayContent = getDisplayContent();
+ if (displayContent.mAppTransition.isTransitionSet()) {
+ child.setSendingToBottom(false);
+ }
+ displayContent.layoutAndAssignWindowLayersIfNeeded();
+ }
+
+ void positionChildAtBottom(Task child, boolean includingParents) {
+ if (child == null) {
+ // TODO: Fix the call-points that cause this to happen.
+ return;
+ }
+
+ positionChildAt(POSITION_BOTTOM, child, includingParents);
+
+ if (getDisplayContent().mAppTransition.isTransitionSet()) {
+ child.setSendingToBottom(true);
+ }
+ getDisplayContent().layoutAndAssignWindowLayersIfNeeded();
+ }
+
@Override
void positionChildAt(int position, Task child, boolean includingParents) {
positionChildAt(position, child, includingParents, child.showForAllUsers());
@@ -596,6 +655,21 @@
EventLog.writeEvent(EventLogTags.WM_TASK_MOVED, child.mTaskId, toTop, targetPosition);
}
+ void reparent(int displayId, Rect outStackBounds, boolean onTop) {
+ final DisplayContent targetDc = mWmService.mRoot.getDisplayContent(displayId);
+ if (targetDc == null) {
+ throw new IllegalArgumentException("Trying to move stackId=" + mStackId
+ + " to unknown displayId=" + displayId);
+ }
+
+ targetDc.moveStackToDisplay(this, onTop);
+ if (matchParentBounds()) {
+ outStackBounds.setEmpty();
+ } else {
+ getRawBounds(outStackBounds);
+ }
+ }
+
// TODO: We should really have users as a window container in the hierarchy so that we don't
// have to do complicated things like we are doing in this method.
private int findPositionForTask(Task task, int targetPosition, boolean showForAllUsers,
@@ -725,6 +799,23 @@
}
/**
+ * Re-sizes a stack and its containing tasks.
+ *
+ * @param bounds New stack bounds. Passing in null sets the bounds to fullscreen.
+ * @param taskBounds Bounds for tasks in the resized stack, keyed by task id.
+ * @param taskTempInsetBounds Inset bounds for individual tasks, keyed by task id.
+ */
+ void resize(Rect bounds, SparseArray<Rect> taskBounds,
+ SparseArray<Rect> taskTempInsetBounds) {
+ // We might trigger a configuration change. Save the current task bounds for freezing.
+ prepareFreezingTaskBounds();
+ if (setBounds(bounds, taskBounds, taskTempInsetBounds) && isVisible()) {
+ getDisplayContent().setLayoutNeeded();
+ mWmService.mWindowPlacerLocked.performSurfacePlacement();
+ }
+ }
+
+ /**
* Calculate an amount by which to expand the stack bounds in each direction.
* Used to make room for shadows in the pinned windowing mode.
*/
@@ -929,12 +1020,7 @@
(dockedStack == null || dockedStack == this) ? null : dockedStack.getRawBounds();
getStackDockedModeBoundsLocked(mDisplayContent.getConfiguration(), dockedBounds,
null /* currentTempTaskBounds */, bounds, tempBounds);
- getController().requestResize(bounds);
- }
-
- @Override
- StackWindowController getController() {
- return (StackWindowController) super.getController();
+ mActivityStack.requestResize(bounds);
}
@Override
@@ -947,6 +1033,14 @@
}
@Override
+ void removeImmediately() {
+ if (mActivityStack != null) {
+ mActivityStack.unregisterConfigurationChangeListener(this);
+ }
+ super.removeImmediately();
+ }
+
+ @Override
void onParentSet() {
super.onParentSet();
@@ -1572,14 +1666,13 @@
// I don't believe you...
}
- final PinnedStackWindowController controller =
- (PinnedStackWindowController) getController();
- if (schedulePipModeChangedCallback && controller != null) {
+ if (schedulePipModeChangedCallback && mActivityStack != null) {
// We need to schedule the PiP mode change before the animation up. It is possible
// in this case for the animation down to not have been completed, so always
// force-schedule and update to the client to ensure that it is notified that it
// is no longer in picture-in-picture mode
- controller.updatePictureInPictureModeForPinnedStackAnimation(null, forceUpdate);
+ mActivityStack.updatePictureInPictureModeForPinnedStackAnimation(null,
+ forceUpdate);
}
}
return true;
@@ -1592,12 +1685,10 @@
// Update to the final bounds if requested. This is done here instead of in the bounds
// animator to allow us to coordinate this after we notify the PiP mode changed
- final PinnedStackWindowController controller =
- (PinnedStackWindowController) getController();
- if (schedulePipModeChangedCallback && controller != null) {
+ if (schedulePipModeChangedCallback) {
// We need to schedule the PiP mode change after the animation down, so use the
// final bounds
- controller.updatePictureInPictureModeForPinnedStackAnimation(
+ mActivityStack.updatePictureInPictureModeForPinnedStackAnimation(
mBoundsAnimationTarget, false /* forceUpdate */);
}
@@ -1624,6 +1715,135 @@
}
}
+ /**
+ * @return the current stack bounds transformed to the given {@param aspectRatio}. If
+ * the default bounds is {@code null}, then the {@param aspectRatio} is applied to the
+ * default bounds.
+ */
+ Rect getPictureInPictureBounds(float aspectRatio, Rect stackBounds) {
+ if (!mWmService.mSupportsPictureInPicture) {
+ return null;
+ }
+
+ final DisplayContent displayContent = getDisplayContent();
+ if (displayContent == null) {
+ return null;
+ }
+
+ if (!inPinnedWindowingMode()) {
+ return null;
+ }
+
+ final PinnedStackController pinnedStackController =
+ displayContent.getPinnedStackController();
+ if (stackBounds == null) {
+ // Calculate the aspect ratio bounds from the default bounds
+ stackBounds = pinnedStackController.getDefaultOrLastSavedBounds();
+ }
+
+ if (pinnedStackController.isValidPictureInPictureAspectRatio(aspectRatio)) {
+ return pinnedStackController.transformBoundsToAspectRatio(stackBounds, aspectRatio,
+ true /* useCurrentMinEdgeSize */);
+ } else {
+ return stackBounds;
+ }
+ }
+
+ /**
+ * Animates the pinned stack.
+ */
+ void animateResizePinnedStack(Rect toBounds, Rect sourceHintBounds,
+ int animationDuration, boolean fromFullscreen) {
+ if (!inPinnedWindowingMode()) {
+ return;
+ }
+ // Get the from-bounds
+ final Rect fromBounds = new Rect();
+ getBounds(fromBounds);
+
+ // Get non-null fullscreen to-bounds for animating if the bounds are null
+ @SchedulePipModeChangedState int schedulePipModeChangedState =
+ NO_PIP_MODE_CHANGED_CALLBACKS;
+ final boolean toFullscreen = toBounds == null;
+ if (toFullscreen) {
+ if (fromFullscreen) {
+ throw new IllegalArgumentException("Should not defer scheduling PiP mode"
+ + " change on animation to fullscreen.");
+ }
+ schedulePipModeChangedState = SCHEDULE_PIP_MODE_CHANGED_ON_START;
+
+ mWmService.getStackBounds(
+ WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, mTmpToBounds);
+ if (!mTmpToBounds.isEmpty()) {
+ // If there is a fullscreen bounds, use that
+ toBounds = new Rect(mTmpToBounds);
+ } else {
+ // Otherwise, use the display bounds
+ toBounds = new Rect();
+ getDisplayContent().getBounds(toBounds);
+ }
+ } else if (fromFullscreen) {
+ schedulePipModeChangedState = SCHEDULE_PIP_MODE_CHANGED_ON_END;
+ }
+
+ setAnimationFinalBounds(sourceHintBounds, toBounds, toFullscreen);
+
+ final Rect finalToBounds = toBounds;
+ final @SchedulePipModeChangedState int finalSchedulePipModeChangedState =
+ schedulePipModeChangedState;
+ final DisplayContent displayContent = getDisplayContent();
+ displayContent.mBoundsAnimationController.getHandler().post(() -> {
+ displayContent.mBoundsAnimationController.animateBounds(this, fromBounds,
+ finalToBounds, animationDuration, finalSchedulePipModeChangedState,
+ fromFullscreen, toFullscreen);
+ });
+ }
+
+ /**
+ * Sets the current picture-in-picture aspect ratio.
+ */
+ void setPictureInPictureAspectRatio(float aspectRatio) {
+ if (!mWmService.mSupportsPictureInPicture) {
+ return;
+ }
+
+ if (!inPinnedWindowingMode()) {
+ return;
+ }
+
+ final PinnedStackController pinnedStackController =
+ getDisplayContent().getPinnedStackController();
+
+ if (Float.compare(aspectRatio, pinnedStackController.getAspectRatio()) == 0) {
+ return;
+ }
+ getAnimationOrCurrentBounds(mTmpFromBounds);
+ mTmpToBounds.set(mTmpFromBounds);
+ getPictureInPictureBounds(aspectRatio, mTmpToBounds);
+ if (!mTmpToBounds.equals(mTmpFromBounds)) {
+ animateResizePinnedStack(mTmpToBounds, null /* sourceHintBounds */,
+ -1 /* duration */, false /* fromFullscreen */);
+ }
+ pinnedStackController.setAspectRatio(
+ pinnedStackController.isValidPictureInPictureAspectRatio(aspectRatio)
+ ? aspectRatio : -1f);
+ }
+
+ /**
+ * Sets the current picture-in-picture actions.
+ */
+ void setPictureInPictureActions(List<RemoteAction> actions) {
+ if (!mWmService.mSupportsPictureInPicture) {
+ return;
+ }
+
+ if (!inPinnedWindowingMode()) {
+ return;
+ }
+
+ getDisplayContent().getPinnedStackController().setActions(actions);
+ }
+
@Override
public boolean isAttached() {
synchronized (mWmService.mGlobalLock) {
diff --git a/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java b/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java
index b219419..2e5df45 100644
--- a/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java
+++ b/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java
@@ -31,6 +31,10 @@
import com.android.server.wm.WindowManagerService.H;
+/**
+ * 1. Adjust the top most focus display if touch down on some display.
+ * 2. Adjust the pointer icon when cursor moves to the task bounds.
+ */
public class TaskTapPointerEventListener implements PointerEventListener {
private final Region mTouchExcludeRegion = new Region();
@@ -67,7 +71,7 @@
return;
}
WindowContainer parent = mDisplayContent.getParent();
- if (parent != null) {
+ if (parent != null && parent.getTopChild() != mDisplayContent) {
parent.positionChildAt(WindowContainer.POSITION_TOP, mDisplayContent,
true /* includingParents */);
}
@@ -80,8 +84,7 @@
if (motionEvent.getDisplayId() != getDisplayId()) {
return;
}
- final int action = motionEvent.getAction();
- switch (action & MotionEvent.ACTION_MASK) {
+ switch (motionEvent.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
final int x = (int) motionEvent.getX();
final int y = (int) motionEvent.getY();
@@ -97,7 +100,7 @@
}
}
break;
-
+ case MotionEvent.ACTION_HOVER_ENTER:
case MotionEvent.ACTION_HOVER_MOVE: {
final int x = (int) motionEvent.getX();
final int y = (int) motionEvent.getY();
@@ -125,6 +128,7 @@
mPointerIconType = iconType;
if (mPointerIconType == TYPE_NOT_SPECIFIED) {
// Find the underlying window and ask it restore the pointer icon.
+ mService.mH.removeMessages(H.RESTORE_POINTER_ICON);
mService.mH.obtainMessage(H.RESTORE_POINTER_ICON,
x, y, mDisplayContent).sendToTarget();
} else {
@@ -133,6 +137,18 @@
}
}
break;
+ case MotionEvent.ACTION_HOVER_EXIT: {
+ final int x = (int) motionEvent.getX();
+ final int y = (int) motionEvent.getY();
+ if (mPointerIconType != TYPE_NOT_SPECIFIED) {
+ mPointerIconType = TYPE_NOT_SPECIFIED;
+ // Find the underlying window and ask it to restore the pointer icon.
+ mService.mH.removeMessages(H.RESTORE_POINTER_ICON);
+ mService.mH.obtainMessage(H.RESTORE_POINTER_ICON,
+ x, y, mDisplayContent).sendToTarget();
+ }
+ }
+ break;
}
}
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 25e61f8..1905877 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -437,6 +437,7 @@
if (mChildren.peekLast() != child) {
mChildren.remove(child);
mChildren.add(child);
+ onChildPositionChanged();
}
if (includingParents && getParent() != null) {
getParent().positionChildAt(POSITION_TOP, this /* child */,
@@ -447,6 +448,7 @@
if (mChildren.peekFirst() != child) {
mChildren.remove(child);
mChildren.addFirst(child);
+ onChildPositionChanged();
}
if (includingParents && getParent() != null) {
getParent().positionChildAt(POSITION_BOTTOM, this /* child */,
@@ -460,8 +462,8 @@
// doing this adjustment here and remove any adjustments in the callers.
mChildren.remove(child);
mChildren.add(position, child);
+ onChildPositionChanged();
}
- onChildPositionChanged();
}
/**
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 90506e7..fda7a85 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -723,7 +723,7 @@
void updateSystemUiSettings() {
boolean changed;
- synchronized (mWindowMap) {
+ synchronized (mGlobalLock) {
changed = ImmersiveModeConfirmation.loadSetting(mCurrentUserId, mContext)
|| PolicyControl.reloadFromSetting(mContext);
}
@@ -2629,12 +2629,23 @@
@Override
public void onUserSwitched() {
mSettingsObserver.updateSystemUiSettings();
- synchronized (mWindowMap) {
+ synchronized (mGlobalLock) {
// force a re-application of focused window sysui visibility on each display.
mRoot.forAllDisplayPolicies(DisplayPolicy::resetSystemUiVisibilityLw);
}
}
+ @Override
+ public void moveDisplayToTop(int displayId) {
+ synchronized (mGlobalLock) {
+ final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ if (displayContent != null && mRoot.getTopChild() != displayContent) {
+ mRoot.positionChildAt(WindowContainer.POSITION_TOP, displayContent,
+ true /* includingParents */);
+ }
+ }
+ }
+
/**
* Starts deferring layout passes. Useful when doing multiple changes but to optimize
* performance, only one layout pass should be done. This can be called multiple times, and
@@ -5932,8 +5943,6 @@
pw.print(" apps="); pw.print(mAppsFreezingScreen);
final DisplayContent defaultDisplayContent = getDefaultDisplayContentLocked();
pw.print(" mRotation="); pw.print(defaultDisplayContent.getRotation());
- pw.print(" mAltOrientation=");
- pw.println(defaultDisplayContent.getAltOrientation());
pw.print(" mLastWindowForcedOrientation=");
pw.print(defaultDisplayContent.getLastWindowForcedOrientation());
pw.print(" mLastOrientation=");
@@ -6379,7 +6388,7 @@
}
void setForceDesktopModeOnExternalDisplays(boolean forceDesktopModeOnExternalDisplays) {
- synchronized (mWindowMap) {
+ synchronized (mGlobalLock) {
mForceDesktopModeOnExternalDisplays = forceDesktopModeOnExternalDisplays;
}
}
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index cd29b3c..8f86c00 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -2405,6 +2405,14 @@
&& !cantReceiveTouchInput();
}
+ @Override
+ public boolean canShowWhenLocked() {
+ final boolean showBecauseOfActivity =
+ mAppToken != null && mAppToken.mActivityRecord.canShowWhenLocked();
+ final boolean showBecauseOfWindow = (getAttrs().flags & FLAG_SHOW_WHEN_LOCKED) != 0;
+ return showBecauseOfActivity || showBecauseOfWindow;
+ }
+
/** @return false if this window desires touch events. */
boolean cantReceiveTouchInput() {
return mAppToken != null && mAppToken.getTask() != null
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
index c8c5e8f..fb00aeb 100644
--- a/services/core/jni/Android.bp
+++ b/services/core/jni/Android.bp
@@ -107,6 +107,7 @@
"android.hardware.gnss@1.0",
"android.hardware.gnss@1.1",
"android.hardware.gnss@2.0",
+ "android.hardware.gnss.visibility_control@1.0",
"android.hardware.input.classifier@1.0",
"android.hardware.ir@1.0",
"android.hardware.light@2.0",
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index 64120076..90c9cc2 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -111,6 +111,7 @@
jmethodID getKeyboardLayoutOverlay;
jmethodID getDeviceAlias;
jmethodID getTouchCalibrationForInputDevice;
+ jmethodID getContextForDisplay;
} gServiceClassInfo;
static struct {
@@ -260,17 +261,16 @@
/* --- PointerControllerPolicyInterface implementation --- */
- virtual void loadPointerIcon(SpriteIcon* icon);
- virtual void loadPointerResources(PointerResources* outResources);
+ virtual void loadPointerIcon(SpriteIcon* icon, int32_t displayId);
+ virtual void loadPointerResources(PointerResources* outResources, int32_t displayId);
virtual void loadAdditionalMouseResources(std::map<int32_t, SpriteIcon>* outResources,
- std::map<int32_t, PointerAnimation>* outAnimationResources);
+ std::map<int32_t, PointerAnimation>* outAnimationResources, int32_t displayId);
virtual int32_t getDefaultPointerIconId();
virtual int32_t getCustomPointerIconId();
private:
sp<InputManager> mInputManager;
- jobject mContextObj;
jobject mServiceObj;
sp<Looper> mLooper;
@@ -329,7 +329,6 @@
mLooper(looper), mInteractive(true) {
JNIEnv* env = jniEnv();
- mContextObj = env->NewGlobalRef(contextObj);
mServiceObj = env->NewGlobalRef(serviceObj);
{
@@ -351,7 +350,6 @@
NativeInputManager::~NativeInputManager() {
JNIEnv* env = jniEnv();
- env->DeleteGlobalRef(mContextObj);
env->DeleteGlobalRef(mServiceObj);
}
@@ -1202,19 +1200,22 @@
return result;
}
-void NativeInputManager::loadPointerIcon(SpriteIcon* icon) {
+void NativeInputManager::loadPointerIcon(SpriteIcon* icon, int32_t displayId) {
ATRACE_CALL();
JNIEnv* env = jniEnv();
ScopedLocalRef<jobject> pointerIconObj(env, env->CallObjectMethod(
- mServiceObj, gServiceClassInfo.getPointerIcon));
+ mServiceObj, gServiceClassInfo.getPointerIcon, displayId));
if (checkAndClearExceptionFromCallback(env, "getPointerIcon")) {
return;
}
+ ScopedLocalRef<jobject> displayContext(env, env->CallObjectMethod(
+ mServiceObj, gServiceClassInfo.getContextForDisplay, displayId));
+
PointerIcon pointerIcon;
status_t status = android_view_PointerIcon_load(env, pointerIconObj.get(),
- mContextObj, &pointerIcon);
+ displayContext.get(), &pointerIcon);
if (!status && !pointerIcon.isNullIcon()) {
*icon = SpriteIcon(pointerIcon.bitmap, pointerIcon.hotSpotX, pointerIcon.hotSpotY);
} else {
@@ -1222,28 +1223,34 @@
}
}
-void NativeInputManager::loadPointerResources(PointerResources* outResources) {
+void NativeInputManager::loadPointerResources(PointerResources* outResources, int32_t displayId) {
ATRACE_CALL();
JNIEnv* env = jniEnv();
- loadSystemIconAsSprite(env, mContextObj, POINTER_ICON_STYLE_SPOT_HOVER,
+ ScopedLocalRef<jobject> displayContext(env, env->CallObjectMethod(
+ mServiceObj, gServiceClassInfo.getContextForDisplay, displayId));
+
+ loadSystemIconAsSprite(env, displayContext.get(), POINTER_ICON_STYLE_SPOT_HOVER,
&outResources->spotHover);
- loadSystemIconAsSprite(env, mContextObj, POINTER_ICON_STYLE_SPOT_TOUCH,
+ loadSystemIconAsSprite(env, displayContext.get(), POINTER_ICON_STYLE_SPOT_TOUCH,
&outResources->spotTouch);
- loadSystemIconAsSprite(env, mContextObj, POINTER_ICON_STYLE_SPOT_ANCHOR,
+ loadSystemIconAsSprite(env, displayContext.get(), POINTER_ICON_STYLE_SPOT_ANCHOR,
&outResources->spotAnchor);
}
void NativeInputManager::loadAdditionalMouseResources(std::map<int32_t, SpriteIcon>* outResources,
- std::map<int32_t, PointerAnimation>* outAnimationResources) {
+ std::map<int32_t, PointerAnimation>* outAnimationResources, int32_t displayId) {
ATRACE_CALL();
JNIEnv* env = jniEnv();
+ ScopedLocalRef<jobject> displayContext(env, env->CallObjectMethod(
+ mServiceObj, gServiceClassInfo.getContextForDisplay, displayId));
+
for (int iconId = POINTER_ICON_STYLE_CONTEXT_MENU; iconId <= POINTER_ICON_STYLE_GRABBING;
++iconId) {
PointerIcon pointerIcon;
loadSystemIconAsSpriteWithPointerIcon(
- env, mContextObj, iconId, &pointerIcon, &((*outResources)[iconId]));
+ env, displayContext.get(), iconId, &pointerIcon, &((*outResources)[iconId]));
if (!pointerIcon.bitmapFrames.empty()) {
PointerAnimation& animationData = (*outAnimationResources)[iconId];
size_t numFrames = pointerIcon.bitmapFrames.size() + 1;
@@ -1258,7 +1265,7 @@
}
}
}
- loadSystemIconAsSprite(env, mContextObj, POINTER_ICON_STYLE_NULL,
+ loadSystemIconAsSprite(env, displayContext.get(), POINTER_ICON_STYLE_NULL,
&((*outResources)[POINTER_ICON_STYLE_NULL]));
}
@@ -1819,7 +1826,7 @@
"getPointerLayer", "()I");
GET_METHOD_ID(gServiceClassInfo.getPointerIcon, clazz,
- "getPointerIcon", "()Landroid/view/PointerIcon;");
+ "getPointerIcon", "(I)Landroid/view/PointerIcon;");
GET_METHOD_ID(gServiceClassInfo.getPointerDisplayId, clazz,
"getPointerDisplayId", "()I");
@@ -1835,6 +1842,10 @@
"getTouchCalibrationForInputDevice",
"(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration;");
+ GET_METHOD_ID(gServiceClassInfo.getContextForDisplay, clazz,
+ "getContextForDisplay",
+ "(I)Landroid/content/Context;")
+
// InputDevice
FIND_CLASS(gInputDeviceClassInfo.clazz, "android/view/InputDevice");
diff --git a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
index b290bc5..f3c19d0 100644
--- a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
+++ b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
@@ -26,6 +26,7 @@
#include <android/hardware/gnss/1.1/IGnssMeasurement.h>
#include <android/hardware/gnss/2.0/IGnssMeasurement.h>
#include <android/hardware/gnss/measurement_corrections/1.0/IMeasurementCorrections.h>
+#include <android/hardware/gnss/visibility_control/1.0/IGnssVisibilityControl.h>
#include <nativehelper/JNIHelp.h>
#include "jni.h"
#include "hardware_legacy/power.h"
@@ -80,7 +81,7 @@
static jmethodID method_correctionSatConstType;
static jmethodID method_correctionSatId;
static jmethodID method_correctionSatCarrierFreq;
-static jmethodID method_correctionSatIsLos;
+static jmethodID method_correctionSatIsLosProb;
static jmethodID method_correctionSatEpl;
static jmethodID method_correctionSatEplUnc;
static jmethodID method_correctionSatRefPlane;
@@ -88,6 +89,8 @@
static jmethodID method_correctionPlaneLngDeg;
static jmethodID method_correctionPlaneAltDeg;
static jmethodID method_correctionPlaneAzimDeg;
+static jmethodID method_reportNfwNotification;
+static jmethodID method_isInEmergencySession;
/*
* Save a pointer to JavaVm to attach/detach threads executing
@@ -152,6 +155,9 @@
using IMeasurementCorrections =
android::hardware::gnss::measurement_corrections::V1_0::IMeasurementCorrections;
+using android::hardware::gnss::visibility_control::V1_0::IGnssVisibilityControl;
+using android::hardware::gnss::visibility_control::V1_0::IGnssVisibilityControlCallback;
+
struct GnssDeathRecipient : virtual public hidl_death_recipient
{
// hidl_death_recipient interface
@@ -190,7 +196,7 @@
// This boolean is needed to ensure that Gnsss Measurement Corrections related method are only
// initalized when needed which will be few devices initially
bool firstGnssMeasurementCorrectionInjected = false;
-
+sp<IGnssVisibilityControl> gnssVisibilityControlIface = nullptr;
#define WAKE_LOCK_NAME "GPS"
@@ -856,7 +862,7 @@
Return<void> GnssMeasurementCallback::gnssMeasurementCb_2_0(
const IGnssMeasurementCallback_V2_0::GnssData& data) {
- // TODO(b/119571122): implement gnssMeasurementCb_2_0
+ translateAndSetGnssData(data);
return Void();
}
@@ -894,9 +900,8 @@
return data.measurementCount;
}
-template<>
-size_t GnssMeasurementCallback::getMeasurementCount<IGnssMeasurementCallback_V1_1::GnssData>
- (const IGnssMeasurementCallback_V1_1::GnssData& data) {
+template<class T>
+size_t GnssMeasurementCallback::getMeasurementCount(const T& data) {
return data.measurements.size();
}
@@ -958,6 +963,17 @@
ADR_STATE_HALF_CYCLE_REPORTED));
}
+// Preallocate object as: JavaObject object(env, "android/location/GnssMeasurement");
+template<>
+void GnssMeasurementCallback::translateSingleGnssMeasurement
+ <IGnssMeasurementCallback_V2_0::GnssMeasurement>(
+ const IGnssMeasurementCallback_V2_0::GnssMeasurement* measurement_V2_0,
+ JavaObject& object) {
+ translateSingleGnssMeasurement(&(measurement_V2_0->v1_1), object);
+
+ SET(CodeType, (static_cast<int32_t>(measurement_V2_0->codeType)));
+}
+
jobject GnssMeasurementCallback::translateGnssClock(
JNIEnv* env, const IGnssMeasurementCallback_V1_0::GnssClock* clock) {
JavaObject object(env, "android/location/GnssClock");
@@ -1080,6 +1096,54 @@
}
/*
+ * GnssVisibilityControlCallback implements callback methods of IGnssVisibilityControlCallback.hal.
+ */
+struct GnssVisibilityControlCallback : public IGnssVisibilityControlCallback {
+ Return<void> nfwNotifyCb(const IGnssVisibilityControlCallback::NfwNotification& notification)
+ override;
+ Return<bool> isInEmergencySession() override;
+};
+
+Return<void> GnssVisibilityControlCallback::nfwNotifyCb(
+ const IGnssVisibilityControlCallback::NfwNotification& notification) {
+ JNIEnv* env = getJniEnv();
+ jstring proxyAppPackageName = env->NewStringUTF(notification.proxyAppPackageName.c_str());
+ jstring otherProtocolStackName = env->NewStringUTF(notification.otherProtocolStackName.c_str());
+ jstring requestorId = env->NewStringUTF(notification.requestorId.c_str());
+
+ if (proxyAppPackageName && otherProtocolStackName && requestorId) {
+ env->CallVoidMethod(mCallbacksObj, method_reportNfwNotification, proxyAppPackageName,
+ notification.protocolStack, otherProtocolStackName,
+ notification.requestor, requestorId,
+ notification.inEmergencyMode, notification.isCachedLocation);
+ } else {
+ ALOGE("%s: OOM Error\n", __func__);
+ }
+
+ if (requestorId) {
+ env->DeleteLocalRef(requestorId);
+ }
+
+ if (otherProtocolStackName) {
+ env->DeleteLocalRef(otherProtocolStackName);
+ }
+
+ if (proxyAppPackageName) {
+ env->DeleteLocalRef(proxyAppPackageName);
+ }
+
+ checkAndClearExceptionFromCallback(env, __FUNCTION__);
+ return Void();
+}
+
+Return<bool> GnssVisibilityControlCallback::isInEmergencySession() {
+ JNIEnv* env = getJniEnv();
+ auto result = env->CallBooleanMethod(mCallbacksObj, method_isInEmergencySession);
+ checkAndClearExceptionFromCallback(env, __FUNCTION__);
+ return result;
+}
+
+/*
* AGnssCallback_V1_0 implements callback methods required by the IAGnssCallback 1.0 interface.
*/
struct AGnssCallback_V1_0 : public IAGnssCallback_V1_0 {
@@ -1313,6 +1377,9 @@
"reportLocationBatch",
"([Landroid/location/Location;)V");
method_reportGnssServiceDied = env->GetMethodID(clazz, "reportGnssServiceDied", "()V");
+ method_reportNfwNotification = env->GetMethodID(clazz, "reportNfwNotification",
+ "(Ljava/lang/String;BLjava/lang/String;BLjava/lang/String;BZZ)V");
+ method_isInEmergencySession = env->GetMethodID(clazz, "isInEmergencySession", "()Z");
/*
* Save a pointer to JVM.
@@ -1388,12 +1455,6 @@
if (gnssHal_V2_0 != nullptr) {
// TODO(b/119638366): getExtensionGnssMeasurement_1_1 from gnssHal_V2_0
auto gnssMeasurement = gnssHal_V2_0->getExtensionGnssMeasurement_2_0();
- auto gnssCorrections = gnssHal_V2_0->getExtensionMeasurementCorrections();
- if (!gnssCorrections.isOk()) {
- ALOGD("Unable to get a handle to GnssMeasurementCorrections interface");
- } else {
- gnssCorrectionsIface = gnssCorrections;
- }
if (!gnssMeasurement.isOk()) {
ALOGD("Unable to get a handle to GnssMeasurement_V2_0");
} else {
@@ -1401,6 +1462,12 @@
gnssMeasurementIface_V1_1 = gnssMeasurementIface_V2_0;
gnssMeasurementIface = gnssMeasurementIface_V2_0;
}
+ auto gnssCorrections = gnssHal_V2_0->getExtensionMeasurementCorrections();
+ if (!gnssCorrections.isOk()) {
+ ALOGD("Unable to get a handle to GnssMeasurementCorrections interface");
+ } else {
+ gnssCorrectionsIface = gnssCorrections;
+ }
} else if (gnssHal_V1_1 != nullptr) {
auto gnssMeasurement = gnssHal_V1_1->getExtensionGnssMeasurement_1_1();
if (!gnssMeasurement.isOk()) {
@@ -1471,6 +1538,15 @@
} else {
gnssBatchingIface = gnssBatching;
}
+
+ if (gnssHal_V2_0 != nullptr) {
+ auto gnssVisibilityControl = gnssHal_V2_0->getExtensionVisibilityControl();
+ if (!gnssVisibilityControl.isOk()) {
+ ALOGD("Unable to get a handle to GnssVisibilityControl interface");
+ } else {
+ gnssVisibilityControlIface = gnssVisibilityControl;
+ }
+ }
}
static jboolean android_location_GnssLocationProvider_is_supported(
@@ -1572,7 +1648,13 @@
if (agnssRilIface != nullptr) {
agnssRilIface->setCallback(aGnssRilCbIface);
} else {
- ALOGI("Unable to Initialize AGnss Ril interface\n");
+ ALOGI("Unable to initialize AGnss Ril interface\n");
+ }
+
+ if (gnssVisibilityControlIface != nullptr) {
+ sp<IGnssVisibilityControlCallback> gnssVisibilityControlCbIface =
+ new GnssVisibilityControlCallback();
+ gnssVisibilityControlIface->setCallback(gnssVisibilityControlCbIface);
}
return JNI_TRUE;
@@ -1974,6 +2056,11 @@
return result;
}
+static jboolean android_location_GnssLocationProvider_is_gnss_visibility_control_supported(
+ JNIEnv* /* env */, jclass /* clazz */) {
+ return (gnssVisibilityControlIface != nullptr) ? JNI_TRUE : JNI_FALSE;
+}
+
static void android_location_GnssNetworkConnectivityHandler_update_network_state(JNIEnv* env,
jobject /* obj */,
jboolean connected,
@@ -2190,8 +2277,8 @@
singleSatCorrClass, "getSatId", "()I");
method_correctionSatCarrierFreq = env->GetMethodID(
singleSatCorrClass, "getCarrierFrequencyHz", "()F");
- method_correctionSatIsLos = env->GetMethodID(
- singleSatCorrClass,"getSatIsLos", "()Z");
+ method_correctionSatIsLosProb = env->GetMethodID(
+ singleSatCorrClass,"getProbSatIsLos", "()F");
method_correctionSatEpl = env->GetMethodID(
singleSatCorrClass, "getExcessPathLengthMeters", "()F");
method_correctionSatEplUnc = env->GetMethodID(
@@ -2209,8 +2296,8 @@
env->CallIntMethod(singleSatCorrectionObj, method_correctionSatId);
jfloat carrierFreqHz = env->CallFloatMethod(
singleSatCorrectionObj, method_correctionSatCarrierFreq);
- jboolean satIsLos = env->CallBooleanMethod(singleSatCorrectionObj,
- method_correctionSatIsLos);
+ jfloat probSatIsLos = env->CallFloatMethod(singleSatCorrectionObj,
+ method_correctionSatIsLosProb);
jfloat eplMeters =
env->CallFloatMethod(singleSatCorrectionObj, method_correctionSatEpl);
jfloat eplUncMeters = env->CallFloatMethod(singleSatCorrectionObj,
@@ -2250,7 +2337,7 @@
.constellation = static_cast<GnssConstellationType>(constType),
.svid = static_cast<uint16_t>(satId),
.carrierFrequencyHz = carrierFreqHz,
- .satIsLos = static_cast<bool>(satIsLos),
+ .probSatIsLos = probSatIsLos,
.excessPathLengthMeters = eplMeters,
.excessPathLengthUncertaintyMeters = eplUncMeters,
.reflectingPlane = reflectingPlane,
@@ -2557,6 +2644,29 @@
return gnssBatchingIface->stop();
}
+static jboolean android_location_GnssVisibilityControl_enable_nfw_location_access(
+ JNIEnv* env, jobject, jobjectArray proxyApps) {
+ if (gnssVisibilityControlIface == nullptr) {
+ ALOGI("No GNSS Visibility Control interface available");
+ return JNI_FALSE;
+ }
+
+ const jsize length = env->GetArrayLength(proxyApps);
+ hidl_vec<hidl_string> hidlProxyApps(length);
+ for (int i = 0; i < length; ++i) {
+ jstring proxyApp = (jstring) (env->GetObjectArrayElement(proxyApps, i));
+ ScopedJniString jniProxyApp(env, proxyApp);
+ hidlProxyApps[i] = jniProxyApp;
+ }
+
+ auto result = gnssVisibilityControlIface->enableNfwLocationAccess(hidlProxyApps);
+ if (result.isOk()) {
+ return result;
+ } else {
+ return JNI_FALSE;
+ }
+}
+
static const JNINativeMethod sMethods[] = {
/* name, signature, funcPtr */
{"class_init_native", "()V", reinterpret_cast<void *>(
@@ -2607,6 +2717,8 @@
{"native_get_internal_state",
"()Ljava/lang/String;",
reinterpret_cast<void *>(android_location_GnssLocationProvider_get_internal_state)},
+ {"native_is_gnss_visibility_control_supported", "()Z", reinterpret_cast<void *>(
+ android_location_GnssLocationProvider_is_gnss_visibility_control_supported)},
};
static const JNINativeMethod sMethodsBatching[] = {
@@ -2736,6 +2848,14 @@
reinterpret_cast<void *>(android_location_GnssConfiguration_set_es_extension_sec)},
};
+static const JNINativeMethod sVisibilityControlMethods[] = {
+ /* name, signature, funcPtr */
+ {"native_enable_nfw_location_access",
+ "([Ljava/lang/String;)Z",
+ reinterpret_cast<void *>(
+ android_location_GnssVisibilityControl_enable_nfw_location_access)},
+};
+
int register_android_server_location_GnssLocationProvider(JNIEnv* env) {
jniRegisterNativeMethods(
env,
@@ -2767,6 +2887,11 @@
"com/android/server/location/GnssConfiguration",
sConfigurationMethods,
NELEM(sConfigurationMethods));
+ jniRegisterNativeMethods(
+ env,
+ "com/android/server/location/GnssVisibilityControl",
+ sVisibilityControlMethods,
+ NELEM(sVisibilityControlMethods));
return jniRegisterNativeMethods(
env,
"com/android/server/location/GnssLocationProvider",
diff --git a/services/ipmemorystore/java/com/android/server/net/ipmemorystore/IpMemoryStoreDatabase.java b/services/ipmemorystore/java/com/android/server/net/ipmemorystore/IpMemoryStoreDatabase.java
new file mode 100644
index 0000000..eaab650
--- /dev/null
+++ b/services/ipmemorystore/java/com/android/server/net/ipmemorystore/IpMemoryStoreDatabase.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2018 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.server.net.ipmemorystore;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+/**
+ * Encapsulating class for using the SQLite database backing the memory store.
+ *
+ * This class groups together the contracts and the SQLite helper used to
+ * use the database.
+ *
+ * @hide
+ */
+public class IpMemoryStoreDatabase {
+ /**
+ * Contract class for the Network Attributes table.
+ */
+ public static class NetworkAttributesContract {
+ public static final String TABLENAME = "NetworkAttributes";
+
+ public static final String COLNAME_L2KEY = "l2Key";
+ public static final String COLTYPE_L2KEY = "TEXT NOT NULL";
+
+ public static final String COLNAME_EXPIRYDATE = "expiryDate";
+ // Milliseconds since the Epoch, in true Java style
+ public static final String COLTYPE_EXPIRYDATE = "BIGINT";
+
+ public static final String COLNAME_ASSIGNEDV4ADDRESS = "assignedV4Address";
+ public static final String COLTYPE_ASSIGNEDV4ADDRESS = "INTEGER";
+
+ // Please note that the group hint is only a *hint*, hence its name. The client can offer
+ // this information to nudge the grouping in the decision it thinks is right, but it can't
+ // decide for the memory store what is the same L3 network.
+ public static final String COLNAME_GROUPHINT = "groupHint";
+ public static final String COLTYPE_GROUPHINT = "TEXT";
+
+ public static final String COLNAME_DNSADDRESSES = "dnsAddresses";
+ // Stored in marshalled form as is
+ public static final String COLTYPE_DNSADDRESSES = "BLOB";
+
+ public static final String COLNAME_MTU = "mtu";
+ public static final String COLTYPE_MTU = "INTEGER";
+
+ public static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS "
+ + TABLENAME + " ("
+ + COLNAME_L2KEY + " " + COLTYPE_L2KEY + " PRIMARY KEY NOT NULL, "
+ + COLNAME_EXPIRYDATE + " " + COLTYPE_EXPIRYDATE + ", "
+ + COLNAME_ASSIGNEDV4ADDRESS + " " + COLTYPE_ASSIGNEDV4ADDRESS + ", "
+ + COLNAME_GROUPHINT + " " + COLTYPE_GROUPHINT + ", "
+ + COLNAME_DNSADDRESSES + " " + COLTYPE_DNSADDRESSES + ", "
+ + COLNAME_MTU + " " + COLTYPE_MTU + ")";
+ public static final String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLENAME;
+ }
+
+ /**
+ * Contract class for the Private Data table.
+ */
+ public static class PrivateDataContract {
+ public static final String TABLENAME = "PrivateData";
+
+ public static final String COLNAME_L2KEY = "l2Key";
+ public static final String COLTYPE_L2KEY = "TEXT NOT NULL";
+
+ public static final String COLNAME_CLIENT = "client";
+ public static final String COLTYPE_CLIENT = "TEXT NOT NULL";
+
+ public static final String COLNAME_DATANAME = "dataName";
+ public static final String COLTYPE_DATANAME = "TEXT NOT NULL";
+
+ public static final String COLNAME_DATA = "data";
+ public static final String COLTYPE_DATA = "BLOB NOT NULL";
+
+ public static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS "
+ + TABLENAME + " ("
+ + COLNAME_L2KEY + " " + COLTYPE_L2KEY + ", "
+ + COLNAME_CLIENT + " " + COLTYPE_CLIENT + ", "
+ + COLNAME_DATANAME + " " + COLTYPE_DATANAME + ", "
+ + COLNAME_DATA + " " + COLTYPE_DATA + ", "
+ + "PRIMARY KEY ("
+ + COLNAME_L2KEY + ", "
+ + COLNAME_CLIENT + ", "
+ + COLNAME_DATANAME + "))";
+ public static final String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLENAME;
+ }
+
+ // To save memory when the DB is not used, close it after 30s of inactivity. This is
+ // determined manually based on what feels right.
+ private static final long IDLE_CONNECTION_TIMEOUT_MS = 30_000;
+
+ /** The SQLite DB helper */
+ public static class DbHelper extends SQLiteOpenHelper {
+ // Update this whenever changing the schema.
+ private static final int SCHEMA_VERSION = 1;
+ private static final String DATABASE_FILENAME = "IpMemoryStore.db";
+
+ public DbHelper(@NonNull final Context context) {
+ super(context, DATABASE_FILENAME, null, SCHEMA_VERSION);
+ setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS);
+ }
+
+ /** Called when the database is created */
+ public void onCreate(@NonNull final SQLiteDatabase db) {
+ db.execSQL(NetworkAttributesContract.CREATE_TABLE);
+ db.execSQL(PrivateDataContract.CREATE_TABLE);
+ }
+
+ /** Called when the database is upgraded */
+ public void onUpgrade(@NonNull final SQLiteDatabase db, final int oldVersion,
+ final int newVersion) {
+ // No upgrade supported yet.
+ db.execSQL(NetworkAttributesContract.DROP_TABLE);
+ db.execSQL(PrivateDataContract.DROP_TABLE);
+ onCreate(db);
+ }
+
+ /** Called when the database is downgraded */
+ public void onDowngrade(@NonNull final SQLiteDatabase db, final int oldVersion,
+ final int newVersion) {
+ // Downgrades always nuke all data and recreate an empty table.
+ db.execSQL(NetworkAttributesContract.DROP_TABLE);
+ db.execSQL(PrivateDataContract.DROP_TABLE);
+ onCreate(db);
+ }
+ }
+}
diff --git a/services/ipmemorystore/java/com/android/server/net/ipmemorystore/IpMemoryStoreService.java b/services/ipmemorystore/java/com/android/server/net/ipmemorystore/IpMemoryStoreService.java
index c9759bf..55a72190 100644
--- a/services/ipmemorystore/java/com/android/server/net/ipmemorystore/IpMemoryStoreService.java
+++ b/services/ipmemorystore/java/com/android/server/net/ipmemorystore/IpMemoryStoreService.java
@@ -19,6 +19,8 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
+import android.database.SQLException;
+import android.database.sqlite.SQLiteDatabase;
import android.net.IIpMemoryStore;
import android.net.ipmemorystore.Blob;
import android.net.ipmemorystore.IOnBlobRetrievedListener;
@@ -27,6 +29,10 @@
import android.net.ipmemorystore.IOnSameNetworkResponseListener;
import android.net.ipmemorystore.IOnStatusListener;
import android.net.ipmemorystore.NetworkAttributesParcelable;
+import android.util.Log;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
/**
* Implementation for the IP memory store.
@@ -37,10 +43,75 @@
* @hide
*/
public class IpMemoryStoreService extends IIpMemoryStore.Stub {
- final Context mContext;
+ private static final String TAG = IpMemoryStoreService.class.getSimpleName();
+ private static final int MAX_CONCURRENT_THREADS = 4;
+ @NonNull
+ final Context mContext;
+ @Nullable
+ final SQLiteDatabase mDb;
+ @NonNull
+ final ExecutorService mExecutor;
+
+ /**
+ * Construct an IpMemoryStoreService object.
+ * This constructor will block on disk access to open the database.
+ * @param context the context to access storage with.
+ */
public IpMemoryStoreService(@NonNull final Context context) {
+ // Note that constructing the service will access the disk and block
+ // for some time, but it should make no difference to the clients. Because
+ // the interface is one-way, clients fire and forget requests, and the callback
+ // will get called eventually in any case, and the framework will wait for the
+ // service to be created to deliver subsequent requests.
+ // Avoiding this would mean the mDb member can't be final, which means the service would
+ // have to test for nullity, care for failure, and allow for a wait at every single access,
+ // which would make the code a lot more complex and require all methods to possibly block.
mContext = context;
+ SQLiteDatabase db;
+ final IpMemoryStoreDatabase.DbHelper helper = new IpMemoryStoreDatabase.DbHelper(context);
+ try {
+ db = helper.getWritableDatabase();
+ if (null == db) Log.e(TAG, "Unexpected null return of getWriteableDatabase");
+ } catch (final SQLException e) {
+ Log.e(TAG, "Can't open the Ip Memory Store database", e);
+ db = null;
+ } catch (final Exception e) {
+ Log.wtf(TAG, "Impossible exception Ip Memory Store database", e);
+ db = null;
+ }
+ mDb = db;
+ // The work-stealing thread pool executor will spawn threads as needed up to
+ // the max only when there is no free thread available. This generally behaves
+ // exactly like one would expect it intuitively :
+ // - When work arrives, it will spawn a new thread iff there are no available threads
+ // - When there is no work to do it will shutdown threads after a while (the while
+ // being equal to 2 seconds (not configurable) when max threads are spun up and
+ // twice as much for every one less thread)
+ // - When all threads are busy the work is enqueued and waits for any worker
+ // to become available.
+ // Because the stealing pool is made for very heavily parallel execution of
+ // small tasks that spawn others, it creates a queue per thread that in this
+ // case is overhead. However, the three behaviors above make it a superior
+ // choice to cached or fixedThreadPoolExecutor, neither of which can actually
+ // enqueue a task waiting for a thread to be free. This can probably be solved
+ // with judicious subclassing of ThreadPoolExecutor, but that's a lot of dangerous
+ // complexity for little benefit in this case.
+ mExecutor = Executors.newWorkStealingPool(MAX_CONCURRENT_THREADS);
+ }
+
+ /**
+ * Shutdown the memory store service, cancelling running tasks and dropping queued tasks.
+ *
+ * This is provided to give a way to clean up, and is meant to be available in case of an
+ * emergency shutdown.
+ */
+ public void shutdown() {
+ // By contrast with ExecutorService#shutdown, ExecutorService#shutdownNow tries
+ // to cancel the existing tasks, and does not wait for completion. It does not
+ // guarantee the threads can be terminated in any given amount of time.
+ mExecutor.shutdownNow();
+ if (mDb != null) mDb.close();
}
/**
@@ -61,7 +132,7 @@
public void storeNetworkAttributes(@NonNull final String l2Key,
@NonNull final NetworkAttributesParcelable attributes,
@Nullable final IOnStatusListener listener) {
- // TODO : implement this
+ // TODO : implement this.
}
/**
@@ -79,7 +150,7 @@
public void storeBlob(@NonNull final String l2Key, @NonNull final String clientId,
@NonNull final String name, @NonNull final Blob data,
@Nullable final IOnStatusListener listener) {
- // TODO : implement this
+ // TODO : implement this.
}
/**
@@ -99,7 +170,7 @@
@Override
public void findL2Key(@NonNull final NetworkAttributesParcelable attributes,
@NonNull final IOnL2KeyResponseListener listener) {
- // TODO : implement this
+ // TODO : implement this.
}
/**
@@ -114,7 +185,7 @@
@Override
public void isSameNetwork(@NonNull final String l2Key1, @NonNull final String l2Key2,
@NonNull final IOnSameNetworkResponseListener listener) {
- // TODO : implement this
+ // TODO : implement this.
}
/**
diff --git a/services/ipmemorystore/java/com/android/server/net/ipmemorystore/RelevanceUtils.java b/services/ipmemorystore/java/com/android/server/net/ipmemorystore/RelevanceUtils.java
new file mode 100644
index 0000000..aa45400
--- /dev/null
+++ b/services/ipmemorystore/java/com/android/server/net/ipmemorystore/RelevanceUtils.java
@@ -0,0 +1,307 @@
+/*
+ * Copyright (C) 2018 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.server.net.ipmemorystore;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+/**
+ * A class containing the logic around the relevance value for
+ * IP Memory Store.
+ *
+ * @hide
+ */
+public class RelevanceUtils {
+ /**
+ * The relevance is a decaying value that gets lower and lower until it
+ * reaches 0 after some time passes. It follows an exponential decay law,
+ * dropping slowly at first then faster and faster, because a network is
+ * likely to be visited again if it was visited not long ago, and the longer
+ * it hasn't been visited the more likely it is that it won't be visited
+ * again. For example, a network visited on holiday should stay fresh for
+ * the duration of the holiday and persist for a while, but after the venue
+ * hasn't been visited for a while it should quickly be discarded. What
+ * should accelerate forgetting the network is extended periods without
+ * visits, so that occasional venues get discarded but regular visits keep
+ * the network relevant, even if the visits are infrequent.
+ *
+ * This function must be stable by iteration, meaning that adjusting the same value
+ * for different dates iteratively multiple times should give the same result.
+ * Formally, if f is the decay function that associates a relevance x at a date d1
+ * to the value at ulterior date d3, then for any date d2 between d1 and d3 :
+ * f(x, d3 - d1) = f(f(x, d3 - d2), d2 - d1). Intuitively, this property simply
+ * means it should be the same to compute and store back the value after two months,
+ * or to do it once after one month, store it back, and do it again after another
+ * months has passed.
+ * The pair of the relevance and date define the entire curve, so any pair
+ * of values on the curve will define the same curve. Setting one of them to a
+ * constant, so as not to have to store it, means the other one will always suffice
+ * to describe the curve. For example, only storing the date for a known, constant
+ * value of the relevance is an efficient way of remembering this information (and
+ * to compare relevances together, as f is monotonically decreasing).
+ *
+ *** Choosing the function :
+ * Functions of the kind described above are standard exponential decay functions
+ * like the ones that govern atomic decay where the value at any given date can be
+ * computed uniformly from the value at a previous date and the time elapsed since
+ * that date. It is simple to picture this kind of function as one where after a
+ * given period of time called the half-life, the relevance value will have been
+ * halved. Decay of this kind is expressed in function of the previous value by
+ * functions like
+ * f(x, t) = x * F ^ (t / L)
+ * ...where x is the value, t is the elapsed time, L is the half-life (or more
+ * generally the F-th-life) and F the decay factor (typically 0.5, hence why L is
+ * usually called the half-life). The ^ symbol here is used for exponentiation.
+ * Or, starting at a given M for t = 0 :
+ * f(t) = M * F ^ (t / L)
+ *
+ * Because a line in the store needs to become irrelevant at some point but
+ * this class of functions never go to 0, a minimum cutoff has to be chosen to
+ * represent irrelevance. The simpler way of doing this is to simply add this
+ * minimum cutoff to the computation before and removing it after.
+ * Thus the function becomes :
+ * f(x, t) = ((x + K) * F ^ (t / L)) - K
+ * ...where K is the minimum cutoff, L the half-life, and F the factor between
+ * the original x and x after its half-life. Strictly speaking using the word
+ * "half-life" implies that F = 0.5, but the relation works for any value of F.
+ *
+ * It is easy enough to check that this function satisfies the stability
+ * relation that was given above for any value of F, L and K, which become
+ * parameters that can be defined at will.
+ *
+ * relevance
+ * 1.0 |
+ * |\
+ * | \
+ * | \ (this graph rendered with L = 75 days and K = 1/40)
+ * 0.75| ',
+ * | \
+ * | '.
+ * | \.
+ * | \
+ * 0.5 | '\
+ * | ''.
+ * | ''.
+ * | ''.
+ * 0.25| '''..
+ * | '''..
+ * | ''''....
+ * | '''''..........
+ * 0 +-------------------------------------------------------''''''''''----
+ * 0 50 100 150 200 250 300 350 400 days
+ *
+ *** Choosing the parameters
+ * The maximum M is an arbitrary parameter that simply scales the curve.
+ * The tradeoff for M is pretty simple : if the relevance is going to be an
+ * integer, the bigger M is the more precision there is in the relevance.
+ * However, values of M that are easy for humans to read are preferable to
+ * help debugging, and a suitably low value may be enough to ensure there
+ * won't be integer overflows in intermediate computations.
+ * A value of 1_000_000 probably is plenty for precision, while still in the
+ * low range of what ints can represent.
+ *
+ * F and L are parameters to be chosen arbitrarily and have an impact on how
+ * fast the relevance will be decaying at first, keeping in mind that
+ * the 400 days value and the cap stay the same. In simpler words, F and L
+ * define the steepness of the curve.
+ * To keep things simple (and familiar) F is arbitrarily chosen to be 0.5, and
+ * L is set to 200 days visually to achieve the desired effect. Refer to the
+ * illustration above to get a feel of how that feels.
+ *
+ * Moreover, the memory store works on an assumption that the relevance should
+ * be capped, and that an entry with capped relevance should decay in 400 days.
+ * This is on premises that the networks a device will need to remember the
+ * longest should be networks visited about once a year.
+ * For this reason, the relevance is at the maximum M 400 days before expiry :
+ * f(M, 400 days) = 0
+ * From replacing this with the value of the function, K can then be derived
+ * from the values of M, F and L :
+ * (M + K) * F ^ (t / L) - K = 0
+ * K = M * F ^ (400 days / L) / (1 - F ^ (400 days / L))
+ * Replacing with actual values this gives :
+ * K = 1_000_000 * 0.5 ^ (400 / 200) / (1 - 0.5 ^ (400 / 200))
+ * = 1_000_000 / 3 ≈ 333_333.3
+ * This ensures the function has the desired profile, the desired value at
+ * cap, and the desired value at expiry.
+ *
+ *** Useful relations
+ * Let's define the expiry time for any given relevance x as the interval of
+ * time such as :
+ * f(x, expiry) = 0
+ * which can be rewritten
+ * ((x + K) * F ^ (expiry / L)) = K
+ * ...giving an expression of the expiry in function of the relevance x as
+ * expiry = L * logF(K / (x + K))
+ * Conversely the relevance x can be expressed in function of the expiry as
+ * x = K / F ^ (expiry / L) - K
+ * These relations are useful in utility functions.
+ *
+ *** Bumping things up
+ * The last issue therefore is to decide how to bump up the relevance. The
+ * simple approach is to simply lift up the curve a little bit by a constant
+ * normalized amount, delaying the time of expiry. For example increasing
+ * the relevance by an amount I gives :
+ * x2 = x1 + I
+ * x2 and x1 correspond to two different expiry times expiry2 and expiry1,
+ * and replacing x1 and x2 in the relation above with their expression in
+ * function of the expiry comes :
+ * K / F ^ (expiry2 / L) - K = K / F ^ (expiry1 / L) - K + I
+ * which resolves to :
+ * expiry2 = L * logF(K / (I + K / F ^ (expiry1 / L)))
+ *
+ * In this implementation, the bump is defined as 1/25th of the cap for
+ * the relevance. This means a network will be remembered for the maximum
+ * period of 400 days if connected 25 times in succession not accounting
+ * for decay. Of course decay actually happens so it will take more than 25
+ * connections for any given network to actually reach the cap, but because
+ * decay is slow at first, it is a good estimate of how fast cap happens.
+ *
+ * Specifically, it gives the following four results :
+ * - A network that a device connects to once hits irrelevance about 32.7 days after
+ * it was first registered if never connected again.
+ * - A network that a device connects to once a day at a fixed hour will hit the cap
+ * on the 27th connection.
+ * - A network that a device connects to once a week at a fixed hour will hit the cap
+ * on the 57th connection.
+ * - A network that a device connects to every day for 7 straight days then never again
+ * expires 144 days after the last connection.
+ * These metrics tend to match pretty well the requirements.
+ */
+
+ // TODO : make these constants configurable at runtime. Don't forget to build it so that
+ // changes will wipe the database, migrate the values, or otherwise make sure the relevance
+ // values are still meaningful.
+
+ // How long, in milliseconds, is a capped relevance valid for, or in other
+ // words how many milliseconds after its relevance was set to RELEVANCE_CAP does
+ // any given line expire. 400 days.
+ @VisibleForTesting
+ public static final long CAPPED_RELEVANCE_LIFETIME_MS = 400L * 24 * 60 * 60 * 1000;
+
+ // The constant that represents a normalized 1.0 value for the relevance. In other words,
+ // the cap for the relevance. This is referred to as M in the explanation above.
+ @VisibleForTesting
+ public static final int CAPPED_RELEVANCE = 1_000_000;
+
+ // The decay factor. After a half-life, the relevance will have decayed by this value.
+ // This is referred to as F in the explanation above.
+ private static final double DECAY_FACTOR = 0.5;
+
+ // The half-life. After this time, the relevance will have decayed by a factor DECAY_FACTOR.
+ // This is referred to as L in the explanation above.
+ private static final long HALF_LIFE_MS = 200L * 24 * 60 * 60 * 1000;
+
+ // The value of the frame change. This is referred to as K in the explanation above.
+ private static final double IRRELEVANCE_FLOOR =
+ CAPPED_RELEVANCE * powF((double) CAPPED_RELEVANCE_LIFETIME_MS / HALF_LIFE_MS)
+ / (1 - powF((double) CAPPED_RELEVANCE_LIFETIME_MS / HALF_LIFE_MS));
+
+ // How much to bump the relevance by every time a line is written to.
+ @VisibleForTesting
+ public static final int RELEVANCE_BUMP = CAPPED_RELEVANCE / 25;
+
+ // Java doesn't include a function for the logarithm in an arbitrary base, so implement it
+ private static final double LOG_DECAY_FACTOR = Math.log(DECAY_FACTOR);
+ private static double logF(final double value) {
+ return Math.log(value) / LOG_DECAY_FACTOR;
+ }
+
+ // Utility function to get a power of the decay factor, to simplify the code.
+ private static double powF(final double value) {
+ return Math.pow(DECAY_FACTOR, value);
+ }
+
+ /**
+ * Compute the value of the relevance now given an expiry date.
+ *
+ * @param expiry the date at which the column in the database expires.
+ * @return the adjusted value of the relevance for this moment in time.
+ */
+ public static int computeRelevanceForNow(final long expiry) {
+ return computeRelevanceForTargetDate(expiry, System.currentTimeMillis());
+ }
+
+ /**
+ * Compute the value of the relevance at a given date from an expiry date.
+ *
+ * Because relevance decays with time, a relevance in the past corresponds to
+ * a different relevance later.
+ *
+ * Relevance is always a positive value. 0 means not relevant at all.
+ *
+ * See the explanation at the top of this file to get the justification for this
+ * computation.
+ *
+ * @param expiry the date at which the column in the database expires.
+ * @param target the target date to adjust the relevance to.
+ * @return the adjusted value of the relevance for the target moment.
+ */
+ public static int computeRelevanceForTargetDate(final long expiry, final long target) {
+ final long delay = expiry - target;
+ if (delay >= CAPPED_RELEVANCE_LIFETIME_MS) return CAPPED_RELEVANCE;
+ if (delay <= 0) return 0;
+ return (int) (IRRELEVANCE_FLOOR / powF((float) delay / HALF_LIFE_MS) - IRRELEVANCE_FLOOR);
+ }
+
+ /**
+ * Compute the expiry duration adjusted up for a new fresh write.
+ *
+ * Every time data is written to the memory store for a given line, the
+ * relevance is bumped up by a certain amount, which will boost the priority
+ * of this line for computation of group attributes, and delay (possibly
+ * indefinitely, if the line is accessed regularly) forgetting the data stored
+ * in that line.
+ * As opposed to bumpExpiryDate, this function uses a duration from now to expiry.
+ *
+ * See the explanation at the top of this file for a justification of this computation.
+ *
+ * @param oldExpiryDuration the old expiry duration in milliseconds from now.
+ * @return the expiry duration representing a bumped up relevance value.
+ */
+ public static long bumpExpiryDuration(final long oldExpiryDuration) {
+ // L * logF(K / (I + K / F ^ (expiry1 / L))), as documented above
+ final double divisionFactor = powF(((double) oldExpiryDuration) / HALF_LIFE_MS);
+ final double oldRelevance = IRRELEVANCE_FLOOR / divisionFactor;
+ final long newDuration =
+ (long) (HALF_LIFE_MS * logF(IRRELEVANCE_FLOOR / (RELEVANCE_BUMP + oldRelevance)));
+ return Math.min(newDuration, CAPPED_RELEVANCE_LIFETIME_MS);
+ }
+
+ /**
+ * Compute the new expiry date adjusted up for a new fresh write.
+ *
+ * Every time data is written to the memory store for a given line, the
+ * relevance is bumped up by a certain amount, which will boost the priority
+ * of this line for computation of group attributes, and delay (possibly
+ * indefinitely, if the line is accessed regularly) forgetting the data stored
+ * in that line.
+ * As opposed to bumpExpiryDuration, this function takes the old timestamp and returns the
+ * new timestamp.
+ *
+ * {@see bumpExpiryDuration}, and keep in mind that the bump depends on when this is called,
+ * because the relevance decays exponentially, therefore bumping up a high relevance (for a
+ * date far in the future) is less potent than bumping up a low relevance (for a date in
+ * a close future).
+ *
+ * @param oldExpiryDate the old date of expiration.
+ * @return the new expiration date after the relevance bump.
+ */
+ public static long bumpExpiryDate(final long oldExpiryDate) {
+ final long now = System.currentTimeMillis();
+ final long newDuration = bumpExpiryDuration(oldExpiryDate - now);
+ return now + newDuration;
+ }
+}
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index fef2db9..cef47ca 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -74,6 +74,7 @@
import com.android.internal.widget.ILockSettings;
import com.android.server.am.ActivityManagerService;
import com.android.server.appbinding.AppBindingService;
+import com.android.server.attention.AttentionManagerService;
import com.android.server.audio.AudioService;
import com.android.server.biometrics.BiometricService;
import com.android.server.biometrics.face.FaceService;
@@ -148,10 +149,11 @@
import com.android.server.wm.ActivityTaskManagerService;
import com.android.server.wm.WindowManagerGlobalLock;
import com.android.server.wm.WindowManagerService;
-import com.google.android.startop.iorap.IorapForwardingService;
import dalvik.system.VMRuntime;
+import com.google.android.startop.iorap.IorapForwardingService;
+
import java.io.File;
import java.io.IOException;
import java.util.Locale;
@@ -1230,6 +1232,10 @@
traceEnd();
}
+ traceBeginAndSlog("StartAttentionManagerService");
+ mSystemServiceManager.startService(AttentionManagerService.class);
+ traceEnd();
+
traceBeginAndSlog("StartNetworkScoreService");
mSystemServiceManager.startService(NetworkScoreService.Lifecycle.class);
traceEnd();
diff --git a/services/net/java/android/net/shared/LinkPropertiesParcelableUtil.java b/services/net/java/android/net/shared/LinkPropertiesParcelableUtil.java
new file mode 100644
index 0000000..5b77f54
--- /dev/null
+++ b/services/net/java/android/net/shared/LinkPropertiesParcelableUtil.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2019 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 android.net.shared;
+
+import static android.net.shared.ParcelableUtil.fromParcelableArray;
+import static android.net.shared.ParcelableUtil.toParcelableArray;
+
+import android.annotation.Nullable;
+import android.net.InetAddresses;
+import android.net.IpPrefix;
+import android.net.IpPrefixParcelable;
+import android.net.LinkAddress;
+import android.net.LinkAddressParcelable;
+import android.net.LinkProperties;
+import android.net.LinkPropertiesParcelable;
+import android.net.ProxyInfo;
+import android.net.ProxyInfoParcelable;
+import android.net.RouteInfo;
+import android.net.RouteInfoParcelable;
+import android.net.Uri;
+
+import java.net.InetAddress;
+import java.util.Arrays;
+
+/**
+ * Collection of utility methods to convert to and from stable AIDL parcelables for LinkProperties
+ * and its attributes.
+ * @hide
+ */
+public final class LinkPropertiesParcelableUtil {
+
+ /**
+ * Convert a ProxyInfo to a ProxyInfoParcelable
+ */
+ public static ProxyInfoParcelable toStableParcelable(@Nullable ProxyInfo proxyInfo) {
+ if (proxyInfo == null) {
+ return null;
+ }
+ final ProxyInfoParcelable parcel = new ProxyInfoParcelable();
+ parcel.host = proxyInfo.getHost();
+ parcel.port = proxyInfo.getPort();
+ parcel.exclusionList = proxyInfo.getExclusionList();
+ parcel.pacFileUrl = proxyInfo.getPacFileUrl().toString();
+ return parcel;
+ }
+
+ /**
+ * Convert a ProxyInfoParcelable to a ProxyInfo
+ */
+ public static ProxyInfo fromStableParcelable(@Nullable ProxyInfoParcelable parcel) {
+ if (parcel == null) {
+ return null;
+ }
+ if (Uri.EMPTY.toString().equals(parcel.pacFileUrl)) {
+ return ProxyInfo.buildDirectProxy(
+ parcel.host, parcel.port, Arrays.asList(parcel.exclusionList));
+ } else {
+ return ProxyInfo.buildPacProxy(Uri.parse(parcel.pacFileUrl));
+ }
+ }
+
+ /**
+ * Convert an IpPrefixParcelable to an IpPrefix
+ */
+ public static IpPrefixParcelable toStableParcelable(@Nullable IpPrefix ipPrefix) {
+ if (ipPrefix == null) {
+ return null;
+ }
+ final IpPrefixParcelable parcel = new IpPrefixParcelable();
+ parcel.address = ipPrefix.getAddress().getHostAddress();
+ parcel.prefixLength = ipPrefix.getPrefixLength();
+ return parcel;
+ }
+
+ /**
+ * Convert an IpPrefix to an IpPrefixParcelable
+ */
+ public static IpPrefix fromStableParcelable(@Nullable IpPrefixParcelable parcel) {
+ if (parcel == null) {
+ return null;
+ }
+ return new IpPrefix(InetAddresses.parseNumericAddress(parcel.address), parcel.prefixLength);
+ }
+
+ /**
+ * Convert a RouteInfoParcelable to a RouteInfo
+ */
+ public static RouteInfoParcelable toStableParcelable(@Nullable RouteInfo routeInfo) {
+ if (routeInfo == null) {
+ return null;
+ }
+ final RouteInfoParcelable parcel = new RouteInfoParcelable();
+ parcel.destination = toStableParcelable(routeInfo.getDestination());
+ parcel.gatewayAddr = routeInfo.getGateway().getHostAddress();
+ parcel.ifaceName = routeInfo.getInterface();
+ parcel.type = routeInfo.getType();
+ return parcel;
+ }
+
+ /**
+ * Convert a RouteInfo to a RouteInfoParcelable
+ */
+ public static RouteInfo fromStableParcelable(@Nullable RouteInfoParcelable parcel) {
+ if (parcel == null) {
+ return null;
+ }
+ final IpPrefix destination = fromStableParcelable(parcel.destination);
+ return new RouteInfo(
+ destination, InetAddresses.parseNumericAddress(parcel.gatewayAddr),
+ parcel.ifaceName, parcel.type);
+ }
+
+ /**
+ * Convert a LinkAddressParcelable to a LinkAddress
+ */
+ public static LinkAddressParcelable toStableParcelable(@Nullable LinkAddress la) {
+ if (la == null) {
+ return null;
+ }
+ final LinkAddressParcelable parcel = new LinkAddressParcelable();
+ parcel.address = la.getAddress().getHostAddress();
+ parcel.prefixLength = la.getPrefixLength();
+ parcel.flags = la.getFlags();
+ parcel.scope = la.getScope();
+ return parcel;
+ }
+
+ /**
+ * Convert a LinkAddress to a LinkAddressParcelable
+ */
+ public static LinkAddress fromStableParcelable(@Nullable LinkAddressParcelable parcel) {
+ if (parcel == null) {
+ return null;
+ }
+ return new LinkAddress(
+ InetAddresses.parseNumericAddress(parcel.address),
+ parcel.prefixLength,
+ parcel.flags,
+ parcel.scope);
+ }
+
+ /**
+ * Convert a LinkProperties to a LinkPropertiesParcelable
+ */
+ public static LinkPropertiesParcelable toStableParcelable(@Nullable LinkProperties lp) {
+ if (lp == null) {
+ return null;
+ }
+ final LinkPropertiesParcelable parcel = new LinkPropertiesParcelable();
+ parcel.ifaceName = lp.getInterfaceName();
+ parcel.linkAddresses = toParcelableArray(
+ lp.getLinkAddresses(),
+ LinkPropertiesParcelableUtil::toStableParcelable,
+ LinkAddressParcelable.class);
+ parcel.dnses = toParcelableArray(
+ lp.getDnsServers(), InetAddress::getHostAddress, String.class);
+ parcel.pcscfs = toParcelableArray(
+ lp.getPcscfServers(), InetAddress::getHostAddress, String.class);
+ parcel.validatedPrivateDnses = toParcelableArray(
+ lp.getValidatedPrivateDnsServers(), InetAddress::getHostAddress, String.class);
+ parcel.usePrivateDns = lp.isPrivateDnsActive();
+ parcel.privateDnsServerName = lp.getPrivateDnsServerName();
+ parcel.domains = lp.getDomains();
+ parcel.routes = toParcelableArray(
+ lp.getRoutes(), LinkPropertiesParcelableUtil::toStableParcelable,
+ RouteInfoParcelable.class);
+ parcel.httpProxy = toStableParcelable(lp.getHttpProxy());
+ parcel.mtu = lp.getMtu();
+ parcel.tcpBufferSizes = lp.getTcpBufferSizes();
+ parcel.nat64Prefix = toStableParcelable(lp.getNat64Prefix());
+ parcel.stackedLinks = toParcelableArray(
+ lp.getStackedLinks(), LinkPropertiesParcelableUtil::toStableParcelable,
+ LinkPropertiesParcelable.class);
+ return parcel;
+ }
+
+ /**
+ * Convert a LinkPropertiesParcelable to a LinkProperties
+ */
+ public static LinkProperties fromStableParcelable(@Nullable LinkPropertiesParcelable parcel) {
+ if (parcel == null) {
+ return null;
+ }
+ final LinkProperties lp = new LinkProperties();
+ lp.setInterfaceName(parcel.ifaceName);
+ lp.setLinkAddresses(fromParcelableArray(parcel.linkAddresses,
+ LinkPropertiesParcelableUtil::fromStableParcelable));
+ lp.setDnsServers(fromParcelableArray(parcel.dnses, InetAddresses::parseNumericAddress));
+ lp.setPcscfServers(fromParcelableArray(parcel.pcscfs, InetAddresses::parseNumericAddress));
+ lp.setValidatedPrivateDnsServers(
+ fromParcelableArray(parcel.validatedPrivateDnses,
+ InetAddresses::parseNumericAddress));
+ lp.setUsePrivateDns(parcel.usePrivateDns);
+ lp.setPrivateDnsServerName(parcel.privateDnsServerName);
+ lp.setDomains(parcel.domains);
+ for (RouteInfoParcelable route : parcel.routes) {
+ lp.addRoute(fromStableParcelable(route));
+ }
+ lp.setHttpProxy(fromStableParcelable(parcel.httpProxy));
+ lp.setMtu(parcel.mtu);
+ lp.setTcpBufferSizes(parcel.tcpBufferSizes);
+ lp.setNat64Prefix(fromStableParcelable(parcel.nat64Prefix));
+ for (LinkPropertiesParcelable stackedLink : parcel.stackedLinks) {
+ lp.addStackedLink(fromStableParcelable(stackedLink));
+ }
+ return lp;
+ }
+}
diff --git a/services/net/java/android/net/shared/ParcelableUtil.java b/services/net/java/android/net/shared/ParcelableUtil.java
new file mode 100644
index 0000000..a18976c
--- /dev/null
+++ b/services/net/java/android/net/shared/ParcelableUtil.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2019 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 android.net.shared;
+
+import android.annotation.NonNull;
+
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Function;
+
+/**
+ * Utility methods to help convert to/from stable parcelables.
+ * @hide
+ */
+public final class ParcelableUtil {
+ // Below methods could be implemented easily with streams, but streams are frowned upon in
+ // frameworks code.
+
+ /**
+ * Convert a list of BaseType items to an array of ParcelableType items using the specified
+ * converter function.
+ */
+ public static <ParcelableType, BaseType> ParcelableType[] toParcelableArray(
+ @NonNull List<BaseType> base,
+ @NonNull Function<BaseType, ParcelableType> conv,
+ @NonNull Class<ParcelableType> parcelClass) {
+ final ParcelableType[] out = (ParcelableType[]) Array.newInstance(parcelClass, base.size());
+ int i = 0;
+ for (BaseType b : base) {
+ out[i] = conv.apply(b);
+ i++;
+ }
+ return out;
+ }
+
+ /**
+ * Convert an array of ParcelableType items to a list of BaseType items using the specified
+ * converter function.
+ */
+ public static <ParcelableType, BaseType> ArrayList<BaseType> fromParcelableArray(
+ @NonNull ParcelableType[] parceled, @NonNull Function<ParcelableType, BaseType> conv) {
+ final ArrayList<BaseType> out = new ArrayList<>(parceled.length);
+ for (ParcelableType t : parceled) {
+ out.add(conv.apply(t));
+ }
+ return out;
+ }
+}
diff --git a/services/robotests/backup/src/com/android/server/backup/TransportManagerTest.java b/services/robotests/backup/src/com/android/server/backup/TransportManagerTest.java
index 7559560..9a6e003 100644
--- a/services/robotests/backup/src/com/android/server/backup/TransportManagerTest.java
+++ b/services/robotests/backup/src/com/android/server/backup/TransportManagerTest.java
@@ -58,7 +58,9 @@
import com.android.server.backup.transport.TransportClient;
import com.android.server.backup.transport.TransportClientManager;
import com.android.server.backup.transport.TransportNotRegisteredException;
+import com.android.server.testing.shadows.ShadowApplicationPackageManager;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -66,6 +68,7 @@
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowPackageManager;
import java.util.ArrayList;
@@ -75,6 +78,7 @@
import java.util.stream.Stream;
@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class})
@Presubmit
public class TransportManagerTest {
private static final String PACKAGE_A = "some.package.a";
@@ -102,6 +106,12 @@
mTransportB1 = genericTransport(PACKAGE_B, "TransportBaz");
}
+ /** Reset shadow state. */
+ @After
+ public void tearDown() throws Exception {
+ ShadowApplicationPackageManager.reset();
+ }
+
@Test
public void testRegisterTransports() throws Exception {
setUpPackage(PACKAGE_A, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
@@ -666,7 +676,8 @@
packageInfo.packageName = packageName;
packageInfo.applicationInfo = new ApplicationInfo();
packageInfo.applicationInfo.privateFlags = flags;
- mShadowPackageManager.addPackage(packageInfo);
+ mShadowPackageManager.installPackage(packageInfo);
+ ShadowApplicationPackageManager.addInstalledPackage(packageName, packageInfo);
}
private TransportManager createTransportManagerWithRegisteredTransports(
diff --git a/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java b/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java
index 3b7fa3d..427aed7 100644
--- a/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java
+++ b/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java
@@ -514,10 +514,14 @@
private void setUpForUpdateTransportAttributes() throws Exception {
mTransportComponent = mTransport.getTransportComponent();
String transportPackage = mTransportComponent.getPackageName();
+ PackageInfo packageInfo = getPackageInfo(transportPackage);
ShadowPackageManager shadowPackageManager = shadowOf(mContext.getPackageManager());
- shadowPackageManager.addPackage(transportPackage);
+ shadowPackageManager.installPackage(packageInfo);
shadowPackageManager.setPackagesForUid(PACKAGE_UID, transportPackage);
+ // Set up for user invocations on ApplicationPackageManager.
+ ShadowApplicationPackageManager.addInstalledPackage(transportPackage, packageInfo);
+ ShadowApplicationPackageManager.setPackageUid(transportPackage, PACKAGE_UID);
mTransportUid = mContext.getPackageManager().getPackageUid(transportPackage, 0);
}
diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowApplicationPackageManager.java b/services/robotests/src/com/android/server/testing/shadows/ShadowApplicationPackageManager.java
index dc32209..ab121ed 100644
--- a/services/robotests/src/com/android/server/testing/shadows/ShadowApplicationPackageManager.java
+++ b/services/robotests/src/com/android/server/testing/shadows/ShadowApplicationPackageManager.java
@@ -38,6 +38,7 @@
extends org.robolectric.shadows.ShadowApplicationPackageManager {
private static final Map<String, PackageInfo> sPackageInfos = new ArrayMap<>();
private static final List<PackageInfo> sInstalledPackages = new ArrayList<>();
+ private static final Map<String, Integer> sPackageUids = new ArrayMap<>();
/**
* Registers the package {@code packageName} to be returned when invoking {@link
@@ -49,6 +50,14 @@
sInstalledPackages.add(packageInfo);
}
+ /**
+ * Sets the package uid {@code packageUid} for the package {@code packageName} to be returned
+ * when invoking {@link ApplicationPackageManager#getPackageUidAsUser(String, int, int)}.
+ */
+ public static void setPackageUid(String packageName, int packageUid) {
+ sPackageUids.put(packageName, packageUid);
+ }
+
@Override
protected PackageInfo getPackageInfoAsUser(String packageName, int flags, int userId)
throws NameNotFoundException {
@@ -63,6 +72,15 @@
return sInstalledPackages;
}
+ @Override
+ protected int getPackageUidAsUser(String packageName, int flags, int userId)
+ throws NameNotFoundException {
+ if (!sPackageUids.containsKey(packageName)) {
+ throw new NameNotFoundException(packageName);
+ }
+ return sPackageUids.get(packageName);
+ }
+
/** Clear package state. */
@Resetter
public static void reset() {
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java
index f1cd0cd..57ee6dc 100644
--- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java
@@ -33,6 +33,7 @@
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
@@ -43,7 +44,12 @@
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import android.app.ActivityManager;
+import android.app.ActivityManagerInternal;
import android.app.AlarmManager;
+import android.app.AppGlobals;
+import android.app.IActivityManager;
+import android.app.IUidObserver;
import android.app.job.JobInfo;
import android.app.usage.UsageStatsManager;
import android.app.usage.UsageStatsManagerInternal;
@@ -56,13 +62,16 @@
import android.os.BatteryManagerInternal;
import android.os.Handler;
import android.os.Looper;
+import android.os.RemoteException;
import android.os.SystemClock;
+import android.util.SparseBooleanArray;
import androidx.test.runner.AndroidJUnit4;
import com.android.server.LocalServices;
import com.android.server.job.JobSchedulerService;
import com.android.server.job.JobSchedulerService.Constants;
+import com.android.server.job.JobStore;
import com.android.server.job.controllers.QuotaController.ExecutionStats;
import com.android.server.job.controllers.QuotaController.TimingSession;
@@ -96,9 +105,13 @@
private BroadcastReceiver mChargingReceiver;
private Constants mConstants;
private QuotaController mQuotaController;
+ private int mSourceUid;
+ private IUidObserver mUidObserver;
private MockitoSession mMockingSession;
@Mock
+ private ActivityManagerInternal mActivityMangerInternal;
+ @Mock
private AlarmManager mAlarmManager;
@Mock
private Context mContext;
@@ -107,6 +120,8 @@
@Mock
private UsageStatsManagerInternal mUsageStatsManager;
+ private JobStore mJobStore;
+
@Before
public void setUp() {
mMockingSession = mockitoSession()
@@ -123,8 +138,17 @@
when(mJobSchedulerService.getLock()).thenReturn(mJobSchedulerService);
when(mJobSchedulerService.getConstants()).thenReturn(mConstants);
// Called in QuotaController constructor.
+ IActivityManager activityManager = ActivityManager.getService();
+ spyOn(activityManager);
+ try {
+ doNothing().when(activityManager).registerUidObserver(any(), anyInt(), anyInt(), any());
+ } catch (RemoteException e) {
+ fail("registerUidObserver threw exception: " + e.getMessage());
+ }
when(mContext.getMainLooper()).thenReturn(Looper.getMainLooper());
when(mContext.getSystemService(Context.ALARM_SERVICE)).thenReturn(mAlarmManager);
+ doReturn(mActivityMangerInternal)
+ .when(() -> LocalServices.getService(ActivityManagerInternal.class));
doReturn(mock(BatteryManagerInternal.class))
.when(() -> LocalServices.getService(BatteryManagerInternal.class));
doReturn(mUsageStatsManager)
@@ -132,6 +156,9 @@
// Used in JobStatus.
doReturn(mock(PackageManagerInternal.class))
.when(() -> LocalServices.getService(PackageManagerInternal.class));
+ // Used in QuotaController.Handler.
+ mJobStore = JobStore.initAndGetForTesting(mContext, mContext.getFilesDir());
+ when(mJobSchedulerService.getJobStore()).thenReturn(mJobStore);
// Freeze the clocks at 24 hours after this moment in time. Several tests create sessions
// in the past, and QuotaController sometimes floors values at 0, so if the test time
@@ -150,10 +177,23 @@
// Capture the listeners.
ArgumentCaptor<BroadcastReceiver> receiverCaptor =
ArgumentCaptor.forClass(BroadcastReceiver.class);
+ ArgumentCaptor<IUidObserver> uidObserverCaptor =
+ ArgumentCaptor.forClass(IUidObserver.class);
mQuotaController = new QuotaController(mJobSchedulerService);
verify(mContext).registerReceiver(receiverCaptor.capture(), any());
mChargingReceiver = receiverCaptor.getValue();
+ try {
+ verify(activityManager).registerUidObserver(
+ uidObserverCaptor.capture(),
+ eq(ActivityManager.UID_OBSERVER_PROCSTATE),
+ eq(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE),
+ any());
+ mUidObserver = uidObserverCaptor.getValue();
+ mSourceUid = AppGlobals.getPackageManager().getPackageUid(SOURCE_PACKAGE, 0, 0);
+ } catch (RemoteException e) {
+ fail(e.getMessage());
+ }
}
@After
@@ -182,6 +222,25 @@
mChargingReceiver.onReceive(mContext, intent);
}
+ private void setProcessState(int procState) {
+ try {
+ doReturn(procState).when(mActivityMangerInternal).getUidProcessState(mSourceUid);
+ SparseBooleanArray foregroundUids = mQuotaController.getForegroundUids();
+ spyOn(foregroundUids);
+ mUidObserver.onUidStateChanged(mSourceUid, procState, 0);
+ if (procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) {
+ verify(foregroundUids, timeout(SECOND_IN_MILLIS).times(1))
+ .put(eq(mSourceUid), eq(true));
+ assertTrue(foregroundUids.get(mSourceUid));
+ } else {
+ verify(foregroundUids, timeout(SECOND_IN_MILLIS).times(1)).delete(eq(mSourceUid));
+ assertFalse(foregroundUids.get(mSourceUid));
+ }
+ } catch (RemoteException e) {
+ fail("registerUidObserver threw exception: " + e.getMessage());
+ }
+ }
+
private void setStandbyBucket(int bucketIndex) {
int bucket;
switch (bucketIndex) {
@@ -204,9 +263,18 @@
anyLong())).thenReturn(bucket);
}
- private void setStandbyBucket(int bucketIndex, JobStatus job) {
+ private void setStandbyBucket(int bucketIndex, JobStatus... jobs) {
setStandbyBucket(bucketIndex);
- job.setStandbyBucket(bucketIndex);
+ for (JobStatus job : jobs) {
+ job.setStandbyBucket(bucketIndex);
+ }
+ }
+
+ private void trackJobs(JobStatus... jobs) {
+ for (JobStatus job : jobs) {
+ mJobStore.add(job);
+ mQuotaController.maybeStartTrackingJobLocked(job, null);
+ }
}
private JobStatus createJobStatus(String testTag, int jobId) {
@@ -214,8 +282,11 @@
new ComponentName(mContext, "TestQuotaJobService"))
.setMinimumLatency(Math.abs(jobId) + 1)
.build();
- return JobStatus.createFromJobInfo(
+ JobStatus js = JobStatus.createFromJobInfo(
jobInfo, CALLING_UID, SOURCE_PACKAGE, SOURCE_USER_ID, testTag);
+ // Make sure tests aren't passing just because the default bucket is likely ACTIVE.
+ js.setStandbyBucket(FREQUENT_INDEX);
+ return js;
}
private TimingSession createTimingSession(long start, long duration, int count) {
@@ -709,6 +780,7 @@
verify(mAlarmManager, never()).set(anyInt(), anyLong(), eq(TAG_QUOTA_CHECK), any(), any());
JobStatus jobStatus = createJobStatus("testMaybeScheduleStartAlarmLocked_Active", 1);
+ setStandbyBucket(standbyBucket, jobStatus);
mQuotaController.maybeStartTrackingJobLocked(jobStatus, null);
mQuotaController.prepareForExecutionLocked(jobStatus);
advanceElapsedClock(5 * MINUTE_IN_MILLIS);
@@ -1339,19 +1411,23 @@
setDischarging();
JobStatus jobStatus = createJobStatus("testTimerTracking_AllForeground", 1);
- jobStatus.uidActive = true;
+ setProcessState(ActivityManager.PROCESS_STATE_TOP);
mQuotaController.maybeStartTrackingJobLocked(jobStatus, null);
assertNull(mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
mQuotaController.prepareForExecutionLocked(jobStatus);
advanceElapsedClock(5 * SECOND_IN_MILLIS);
+ // Change to a state that should still be considered foreground.
+ setProcessState(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
+ advanceElapsedClock(5 * SECOND_IN_MILLIS);
mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
assertNull(mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
}
/**
- * Tests that Timers properly track overlapping foreground and background jobs.
+ * Tests that Timers properly track sessions when switching between foreground and background
+ * states.
*/
@Test
public void testTimerTracking_ForegroundAndBackground() {
@@ -1360,7 +1436,6 @@
JobStatus jobBg1 = createJobStatus("testTimerTracking_ForegroundAndBackground", 1);
JobStatus jobBg2 = createJobStatus("testTimerTracking_ForegroundAndBackground", 2);
JobStatus jobFg3 = createJobStatus("testTimerTracking_ForegroundAndBackground", 3);
- jobFg3.uidActive = true;
mQuotaController.maybeStartTrackingJobLocked(jobBg1, null);
mQuotaController.maybeStartTrackingJobLocked(jobBg2, null);
mQuotaController.maybeStartTrackingJobLocked(jobFg3, null);
@@ -1368,6 +1443,7 @@
List<TimingSession> expected = new ArrayList<>();
// UID starts out inactive.
+ setProcessState(ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND);
long start = JobSchedulerService.sElapsedRealtimeClock.millis();
mQuotaController.prepareForExecutionLocked(jobBg1);
advanceElapsedClock(10 * SECOND_IN_MILLIS);
@@ -1379,48 +1455,223 @@
// Bg job starts while inactive, spans an entire active session, and ends after the
// active session.
- // Fg job starts after the bg job and ends before the bg job.
- // Entire bg job duration should be counted since it started before active session. However,
- // count should only be 1 since Timer shouldn't count fg jobs.
+ // App switching to foreground state then fg job starts.
+ // App remains in foreground state after coming to foreground, so there should only be one
+ // session.
start = JobSchedulerService.sElapsedRealtimeClock.millis();
mQuotaController.maybeStartTrackingJobLocked(jobBg2, null);
mQuotaController.prepareForExecutionLocked(jobBg2);
advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
+ setProcessState(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
mQuotaController.prepareForExecutionLocked(jobFg3);
advanceElapsedClock(10 * SECOND_IN_MILLIS);
mQuotaController.maybeStopTrackingJobLocked(jobFg3, null, false);
advanceElapsedClock(10 * SECOND_IN_MILLIS);
mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
- expected.add(createTimingSession(start, 30 * SECOND_IN_MILLIS, 1));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
advanceElapsedClock(SECOND_IN_MILLIS);
// Bg job 1 starts, then fg job starts. Bg job 1 job ends. Shortly after, uid goes
// "inactive" and then bg job 2 starts. Then fg job ends.
- // This should result in two TimingSessions with a count of one each.
+ // This should result in two TimingSessions:
+ // * The first should have a count of 1
+ // * The second should have a count of 2 since it will include both jobs
start = JobSchedulerService.sElapsedRealtimeClock.millis();
mQuotaController.maybeStartTrackingJobLocked(jobBg1, null);
mQuotaController.maybeStartTrackingJobLocked(jobBg2, null);
mQuotaController.maybeStartTrackingJobLocked(jobFg3, null);
+ setProcessState(ActivityManager.PROCESS_STATE_LAST_ACTIVITY);
mQuotaController.prepareForExecutionLocked(jobBg1);
advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
+ setProcessState(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
mQuotaController.prepareForExecutionLocked(jobFg3);
advanceElapsedClock(10 * SECOND_IN_MILLIS);
mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
- expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 1));
advanceElapsedClock(10 * SECOND_IN_MILLIS); // UID "inactive" now
start = JobSchedulerService.sElapsedRealtimeClock.millis();
+ setProcessState(ActivityManager.PROCESS_STATE_TOP_SLEEPING);
mQuotaController.prepareForExecutionLocked(jobBg2);
advanceElapsedClock(10 * SECOND_IN_MILLIS);
mQuotaController.maybeStopTrackingJobLocked(jobFg3, null, false);
advanceElapsedClock(10 * SECOND_IN_MILLIS);
mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
- expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 1));
+ expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 2));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
}
/**
+ * Tests that Timers properly track overlapping top and background jobs.
+ */
+ @Test
+ public void testTimerTracking_TopAndNonTop() {
+ setDischarging();
+
+ JobStatus jobBg1 = createJobStatus("testTimerTracking_TopAndNonTop", 1);
+ JobStatus jobBg2 = createJobStatus("testTimerTracking_TopAndNonTop", 2);
+ JobStatus jobFg1 = createJobStatus("testTimerTracking_TopAndNonTop", 3);
+ JobStatus jobTop = createJobStatus("testTimerTracking_TopAndNonTop", 4);
+ mQuotaController.maybeStartTrackingJobLocked(jobBg1, null);
+ mQuotaController.maybeStartTrackingJobLocked(jobBg2, null);
+ mQuotaController.maybeStartTrackingJobLocked(jobFg1, null);
+ mQuotaController.maybeStartTrackingJobLocked(jobTop, null);
+ assertNull(mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
+ List<TimingSession> expected = new ArrayList<>();
+
+ // UID starts out inactive.
+ setProcessState(ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND);
+ long start = JobSchedulerService.sElapsedRealtimeClock.millis();
+ mQuotaController.prepareForExecutionLocked(jobBg1);
+ advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
+ assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
+
+ advanceElapsedClock(SECOND_IN_MILLIS);
+
+ // Bg job starts while inactive, spans an entire active session, and ends after the
+ // active session.
+ // App switching to top state then fg job starts.
+ // App remains in top state after coming to top, so there should only be one
+ // session.
+ start = JobSchedulerService.sElapsedRealtimeClock.millis();
+ mQuotaController.maybeStartTrackingJobLocked(jobBg2, null);
+ mQuotaController.prepareForExecutionLocked(jobBg2);
+ advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
+ setProcessState(ActivityManager.PROCESS_STATE_TOP);
+ mQuotaController.prepareForExecutionLocked(jobTop);
+ advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ mQuotaController.maybeStopTrackingJobLocked(jobTop, null, false);
+ advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
+ assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
+
+ advanceElapsedClock(SECOND_IN_MILLIS);
+
+ // Bg job 1 starts, then top job starts. Bg job 1 job ends. Then app goes to
+ // foreground_service and a new job starts. Shortly after, uid goes
+ // "inactive" and then bg job 2 starts. Then top job ends, followed by bg and fg jobs.
+ // This should result in two TimingSessions:
+ // * The first should have a count of 1
+ // * The second should have a count of 2, which accounts for the bg2 and fg, but not top
+ // jobs.
+ start = JobSchedulerService.sElapsedRealtimeClock.millis();
+ mQuotaController.maybeStartTrackingJobLocked(jobBg1, null);
+ mQuotaController.maybeStartTrackingJobLocked(jobBg2, null);
+ mQuotaController.maybeStartTrackingJobLocked(jobTop, null);
+ setProcessState(ActivityManager.PROCESS_STATE_LAST_ACTIVITY);
+ mQuotaController.prepareForExecutionLocked(jobBg1);
+ advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
+ setProcessState(ActivityManager.PROCESS_STATE_TOP);
+ mQuotaController.prepareForExecutionLocked(jobTop);
+ advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ advanceElapsedClock(5 * SECOND_IN_MILLIS);
+ setProcessState(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
+ mQuotaController.prepareForExecutionLocked(jobFg1);
+ advanceElapsedClock(5 * SECOND_IN_MILLIS);
+ setProcessState(ActivityManager.PROCESS_STATE_TOP);
+ advanceElapsedClock(10 * SECOND_IN_MILLIS); // UID "inactive" now
+ start = JobSchedulerService.sElapsedRealtimeClock.millis();
+ setProcessState(ActivityManager.PROCESS_STATE_TOP_SLEEPING);
+ mQuotaController.prepareForExecutionLocked(jobBg2);
+ advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ mQuotaController.maybeStopTrackingJobLocked(jobTop, null, false);
+ advanceElapsedClock(10 * SECOND_IN_MILLIS);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobFg1, null, false);
+ expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 2));
+ assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
+ }
+
+ /**
+ * Tests that TOP jobs aren't stopped when an app runs out of quota.
+ */
+ @Test
+ public void testTracking_OutOfQuota_ForegroundAndBackground() {
+ setDischarging();
+
+ JobStatus jobBg = createJobStatus("testTracking_OutOfQuota_ForegroundAndBackground", 1);
+ JobStatus jobTop = createJobStatus("testTracking_OutOfQuota_ForegroundAndBackground", 2);
+ trackJobs(jobBg, jobTop);
+ setStandbyBucket(WORKING_INDEX, jobTop, jobBg); // 2 hour window
+ // Now the package only has 20 seconds to run.
+ final long remainingTimeMs = 20 * SECOND_IN_MILLIS;
+ mQuotaController.saveTimingSession(SOURCE_USER_ID, SOURCE_PACKAGE,
+ createTimingSession(
+ JobSchedulerService.sElapsedRealtimeClock.millis() - HOUR_IN_MILLIS,
+ 10 * MINUTE_IN_MILLIS - remainingTimeMs, 1));
+
+ InOrder inOrder = inOrder(mJobSchedulerService);
+
+ // UID starts out inactive.
+ setProcessState(ActivityManager.PROCESS_STATE_SERVICE);
+ // Start the job.
+ mQuotaController.prepareForExecutionLocked(jobBg);
+ advanceElapsedClock(remainingTimeMs / 2);
+ // New job starts after UID is in the foreground. Since the app is now in the foreground, it
+ // should continue to have remainingTimeMs / 2 time remaining.
+ setProcessState(ActivityManager.PROCESS_STATE_TOP);
+ mQuotaController.prepareForExecutionLocked(jobTop);
+ advanceElapsedClock(remainingTimeMs);
+
+ // Wait for some extra time to allow for job processing.
+ inOrder.verify(mJobSchedulerService,
+ timeout(remainingTimeMs + 2 * SECOND_IN_MILLIS).times(0))
+ .onControllerStateChanged();
+ assertEquals(remainingTimeMs / 2, mQuotaController.getRemainingExecutionTimeLocked(jobBg));
+ assertEquals(remainingTimeMs / 2, mQuotaController.getRemainingExecutionTimeLocked(jobTop));
+ // Go to a background state.
+ setProcessState(ActivityManager.PROCESS_STATE_TOP_SLEEPING);
+ advanceElapsedClock(remainingTimeMs / 2 + 1);
+ inOrder.verify(mJobSchedulerService,
+ timeout(remainingTimeMs / 2 + 2 * SECOND_IN_MILLIS).times(1))
+ .onControllerStateChanged();
+ // Top job should still be allowed to run.
+ assertFalse(jobBg.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+ assertTrue(jobTop.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+
+ // New jobs to run.
+ JobStatus jobBg2 = createJobStatus("testTracking_OutOfQuota_ForegroundAndBackground", 3);
+ JobStatus jobTop2 = createJobStatus("testTracking_OutOfQuota_ForegroundAndBackground", 4);
+ JobStatus jobFg = createJobStatus("testTracking_OutOfQuota_ForegroundAndBackground", 5);
+ setStandbyBucket(WORKING_INDEX, jobBg2, jobTop2, jobFg);
+
+ advanceElapsedClock(20 * SECOND_IN_MILLIS);
+ setProcessState(ActivityManager.PROCESS_STATE_TOP);
+ inOrder.verify(mJobSchedulerService, timeout(SECOND_IN_MILLIS).times(1))
+ .onControllerStateChanged();
+ trackJobs(jobFg, jobTop);
+ mQuotaController.prepareForExecutionLocked(jobTop);
+ assertTrue(jobTop.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+ assertTrue(jobFg.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+ assertTrue(jobBg.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+
+ // App still in foreground so everything should be in quota.
+ advanceElapsedClock(20 * SECOND_IN_MILLIS);
+ setProcessState(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
+ assertTrue(jobTop.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+ assertTrue(jobFg.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+ assertTrue(jobBg.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+
+ advanceElapsedClock(20 * SECOND_IN_MILLIS);
+ setProcessState(ActivityManager.PROCESS_STATE_SERVICE);
+ inOrder.verify(mJobSchedulerService, timeout(SECOND_IN_MILLIS).times(1))
+ .onControllerStateChanged();
+ // App is now in background and out of quota. Fg should now change to out of quota since it
+ // wasn't started. Top should remain in quota since it started when the app was in TOP.
+ assertTrue(jobTop.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+ assertFalse(jobFg.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+ assertFalse(jobBg.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+ trackJobs(jobBg2);
+ assertFalse(jobBg2.isConstraintSatisfied(JobStatus.CONSTRAINT_WITHIN_QUOTA));
+ }
+
+ /**
* Tests that a job is properly updated and JobSchedulerService is notified when a job reaches
* its quota.
*/
diff --git a/services/tests/servicestests/src/com/android/server/StorageManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/StorageManagerServiceTest.java
index ec5d93e..68f696b 100644
--- a/services/tests/servicestests/src/com/android/server/StorageManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/StorageManagerServiceTest.java
@@ -227,6 +227,22 @@
}
@Test
+ public void testPackageInLegacyMode() throws Exception {
+ setStorageMountMode(PID_RED, UID_COLORS, Zygote.MOUNT_EXTERNAL_LEGACY);
+
+ // Both app and system have the same view
+ assertTranslation(
+ "/storage/emulated/0/Android/data/com.red/foo.jpg",
+ "/storage/emulated/0/Android/data/com.red/foo.jpg",
+ PID_RED, UID_COLORS);
+
+ assertTranslation(
+ "/storage/emulated/0/Android/sandbox/com.grey/bar.jpg",
+ "/storage/emulated/0/Android/sandbox/com.grey/bar.jpg",
+ PID_RED, UID_COLORS);
+ }
+
+ @Test
public void testInstallerPackage() throws Exception {
setStorageMountMode(PID_GREY, UID_GREY, Zygote.MOUNT_EXTERNAL_INSTALLER);
diff --git a/services/tests/servicestests/src/com/android/server/am/AppErrorDialogTest.java b/services/tests/servicestests/src/com/android/server/am/AppErrorDialogTest.java
index 8109b1c..1dfce51 100644
--- a/services/tests/servicestests/src/com/android/server/am/AppErrorDialogTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/AppErrorDialogTest.java
@@ -26,6 +26,7 @@
import androidx.test.filters.SmallTest;
import com.android.server.appop.AppOpsService;
+import com.android.server.wm.ActivityTaskManagerService;
import org.junit.Before;
import org.junit.Test;
@@ -62,13 +63,15 @@
return false;
}
});
+ mService.mActivityTaskManager = new ActivityTaskManagerService(mContext);
+ mService.mActivityTaskManager.initialize(null, null, mContext.getMainLooper());
}
@Test
@UiThreadTest
public void testCreateWorks() {
AppErrorDialog.Data data = new AppErrorDialog.Data();
- data.proc = new ProcessRecord(null, mContext.getApplicationInfo(), "name", 12345);
+ data.proc = new ProcessRecord(mService, mContext.getApplicationInfo(), "name", 12345);
data.result = new AppErrorResult();
AppErrorDialog dialog = new AppErrorDialog(mContext, mService, data);
diff --git a/services/tests/servicestests/src/com/android/server/display/AppSaturationControllerTest.java b/services/tests/servicestests/src/com/android/server/display/AppSaturationControllerTest.java
new file mode 100644
index 0000000..e518844
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/display/AppSaturationControllerTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2019 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.server.display;
+
+import static com.android.server.display.AppSaturationController.TRANSLATION_VECTOR;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.app.ActivityManager;
+import android.os.UserHandle;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.server.display.ColorDisplayService.ColorTransformController;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.lang.ref.WeakReference;
+
+@RunWith(AndroidJUnit4.class)
+public class AppSaturationControllerTest {
+
+ private static final String TEST_PACKAGE_NAME = "com.android.test";
+
+ private int mUserId;
+ private AppSaturationController mAppSaturationController;
+ private float[] mMatrix;
+
+ @Mock
+ private ColorTransformController mColorTransformController;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mUserId = ActivityManager.getCurrentUser();
+ mAppSaturationController = new AppSaturationController();
+ mMatrix = new float[9];
+ }
+
+ @After
+ public void tearDown() {
+ mAppSaturationController = null;
+ mUserId = UserHandle.USER_NULL;
+ }
+
+ @Test
+ public void addColorTransformController_appliesExistingSaturation() {
+ final WeakReference<ColorTransformController> ref = new WeakReference<>(
+ mColorTransformController);
+ mAppSaturationController.setSaturationLevel(TEST_PACKAGE_NAME, mUserId, 30);
+ mAppSaturationController.addColorTransformController(TEST_PACKAGE_NAME, mUserId, ref);
+ AppSaturationController.computeGrayscaleTransformMatrix(.3f, mMatrix);
+ verify(mColorTransformController).applyAppSaturation(eq(mMatrix), eq(TRANSLATION_VECTOR));
+ }
+
+ @Test
+ public void setSaturationLevel_resetToDefault() {
+ final WeakReference<ColorTransformController> ref = new WeakReference<>(
+ mColorTransformController);
+ mAppSaturationController.addColorTransformController(TEST_PACKAGE_NAME, mUserId, ref);
+ verify(mColorTransformController, never())
+ .applyAppSaturation(any(), eq(TRANSLATION_VECTOR));
+ mAppSaturationController.setSaturationLevel(TEST_PACKAGE_NAME, mUserId, 30);
+ AppSaturationController.computeGrayscaleTransformMatrix(.3f, mMatrix);
+ verify(mColorTransformController, times(1))
+ .applyAppSaturation(eq(mMatrix), eq(TRANSLATION_VECTOR));
+ mAppSaturationController.setSaturationLevel(TEST_PACKAGE_NAME, mUserId, 100);
+ AppSaturationController.computeGrayscaleTransformMatrix(1.0f, mMatrix);
+ verify(mColorTransformController, times(2))
+ .applyAppSaturation(eq(mMatrix), eq(TRANSLATION_VECTOR));
+ }
+
+ @Test
+ public void setSaturationLevel_updateLevel() {
+ final WeakReference<ColorTransformController> ref = new WeakReference<>(
+ mColorTransformController);
+ mAppSaturationController.addColorTransformController(TEST_PACKAGE_NAME, mUserId, ref);
+ verify(mColorTransformController, never())
+ .applyAppSaturation(any(), eq(TRANSLATION_VECTOR));
+ mAppSaturationController.setSaturationLevel(TEST_PACKAGE_NAME, mUserId, 30);
+ AppSaturationController.computeGrayscaleTransformMatrix(.3f, mMatrix);
+ verify(mColorTransformController).applyAppSaturation(eq(mMatrix), eq(TRANSLATION_VECTOR));
+ mAppSaturationController.setSaturationLevel(TEST_PACKAGE_NAME, mUserId, 70);
+ AppSaturationController.computeGrayscaleTransformMatrix(.7f, mMatrix);
+ verify(mColorTransformController, times(2))
+ .applyAppSaturation(eq(mMatrix), eq(TRANSLATION_VECTOR));
+ mAppSaturationController.setSaturationLevel(TEST_PACKAGE_NAME, mUserId, 100);
+ AppSaturationController.computeGrayscaleTransformMatrix(1.0f, mMatrix);
+ verify(mColorTransformController, times(3))
+ .applyAppSaturation(eq(mMatrix), eq(TRANSLATION_VECTOR));
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
index 8b0e8ab..eb9b98e 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
@@ -30,6 +30,7 @@
import androidx.test.filters.SmallTest;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -147,6 +148,7 @@
mTestLooper.dispatchAll();
}
+ @Ignore("b/120845532")
@Test
public void arcInitiation_requestActiveSource() {
mSendCecCommandSuccess = true;
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
index 93a09dc..5d8131f 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
@@ -40,7 +40,6 @@
import com.android.server.hdmi.HdmiCecController.AllocateAddressCallback;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -142,7 +141,6 @@
assertEquals(ADDR_UNREGISTERED, mLogicalAddress);
}
- @Ignore("b/110413065 Support multiple device types 4 and 5.")
@Test
public void testAllocatLogicalAddress_PlaybackPreferredNotOccupied() {
mHdmiCecController.allocateLogicalAddress(DEVICE_PLAYBACK, ADDR_PLAYBACK_1, mCallback);
@@ -158,7 +156,6 @@
assertEquals(ADDR_PLAYBACK_2, mLogicalAddress);
}
- @Ignore("b/110413065 Support multiple device types 4 and 5.")
@Test
public void testAllocatLogicalAddress_PlaybackNoPreferredNotOcuppied() {
mHdmiCecController.allocateLogicalAddress(DEVICE_PLAYBACK, ADDR_UNREGISTERED, mCallback);
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
index 3b51a2a..3a6cdc2 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
@@ -21,6 +21,7 @@
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1;
+import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_2;
import static com.android.server.hdmi.Constants.ADDR_TUNER_1;
import static com.android.server.hdmi.Constants.ADDR_TV;
import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;
@@ -29,9 +30,9 @@
import static com.google.common.truth.Truth.assertThat;
import android.hardware.hdmi.HdmiDeviceInfo;
+import android.hardware.hdmi.HdmiPortInfo;
import android.media.AudioManager;
import android.os.Looper;
-import android.os.SystemProperties;
import android.os.test.TestLooper;
import androidx.test.InstrumentationRegistry;
@@ -46,7 +47,6 @@
import org.junit.runners.JUnit4;
import java.util.ArrayList;
-
@SmallTest
@RunWith(JUnit4.class)
/** Tests for {@link HdmiCecLocalDeviceAudioSystem} class. */
@@ -67,9 +67,15 @@
private int mMusicVolume;
private int mMusicMaxVolume;
private boolean mMusicMute;
- private int mAvrPhysicalAddress;
+ private static final int SELF_PHYSICAL_ADDRESS = 0x2000;
+ private static final int HDMI_1_PHYSICAL_ADDRESS = 0x2100;
+ private static final int HDMI_2_PHYSICAL_ADDRESS = 0x2200;
+ private static final int HDMI_3_PHYSICAL_ADDRESS = 0x2300;
private int mInvokeDeviceEventState;
private HdmiDeviceInfo mDeviceInfo;
+ private boolean mMutingEnabled;
+ private boolean mArcSupport;
+ private HdmiPortInfo[] mHdmiPortInfo;
@Before
public void setUp() {
@@ -141,9 +147,20 @@
}
@Override
- int pathToPortId(int path) {
- // port id is not useful for the test right now
- return 1;
+ void writeStringSetting(String key, String value) {
+ // do nothing
+ }
+
+ @Override
+ boolean readBooleanSetting(String key, boolean defVal) {
+ switch (key) {
+ case Constants.PROPERTY_SYSTEM_AUDIO_MODE_MUTING_ENABLE:
+ return mMutingEnabled;
+ case Constants.PROPERTY_ARC_SUPPORT:
+ return mArcSupport;
+ default:
+ return defVal;
+ }
}
};
@@ -154,11 +171,17 @@
void setIsActiveSource(boolean on) {
mIsActiveSource = on;
}
+
+ @Override
+ protected int getPreferredAddress() {
+ return ADDR_PLAYBACK_1;
+ }
};
mHdmiCecLocalDeviceAudioSystem.init();
mHdmiCecLocalDevicePlayback.init();
mHdmiControlService.setIoLooper(mMyLooper);
mNativeWrapper = new FakeNativeWrapper();
+ mNativeWrapper.setPhysicalAddress(SELF_PHYSICAL_ADDRESS);
mHdmiCecController =
HdmiCecController.createWithNativeWrapper(mHdmiControlService, mNativeWrapper);
mHdmiControlService.setCecController(mHdmiCecController);
@@ -166,15 +189,28 @@
mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService));
mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem);
mLocalDevices.add(mHdmiCecLocalDevicePlayback);
+ mHdmiCecLocalDeviceAudioSystem.setRoutingControlFeatureEnables(true);
+ mHdmiPortInfo = new HdmiPortInfo[4];
+ mHdmiPortInfo[0] =
+ new HdmiPortInfo(
+ 0, HdmiPortInfo.PORT_INPUT, SELF_PHYSICAL_ADDRESS, true, false, false);
+ mHdmiPortInfo[1] =
+ new HdmiPortInfo(
+ 2, HdmiPortInfo.PORT_INPUT, HDMI_1_PHYSICAL_ADDRESS, true, false, false);
+ mHdmiPortInfo[2] =
+ new HdmiPortInfo(
+ 1, HdmiPortInfo.PORT_INPUT, HDMI_2_PHYSICAL_ADDRESS, true, false, false);
+ mHdmiPortInfo[3] =
+ new HdmiPortInfo(
+ 4, HdmiPortInfo.PORT_INPUT, HDMI_3_PHYSICAL_ADDRESS, true, false, false);
+ mNativeWrapper.setPortInfo(mHdmiPortInfo);
mHdmiControlService.initPortInfo();
// No TV device interacts with AVR so system audio control won't be turned on here
mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
mNativeWrapper.clearResultMessages();
- mAvrPhysicalAddress = 0x2000;
- mNativeWrapper.setPhysicalAddress(mAvrPhysicalAddress);
- SystemProperties.set(Constants.PROPERTY_ARC_SUPPORT, "true");
- SystemProperties.set(Constants.PROPERTY_SYSTEM_AUDIO_MODE_MUTING_ENABLE, "true");
+ mMutingEnabled = true;
+ mArcSupport = true;
mInvokeDeviceEventState = 0;
mDeviceInfo = null;
}
@@ -244,6 +280,8 @@
assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage);
}
+ // Testing device has sadConfig.xml
+ @Ignore("b/120845532")
@Test
public void handleRequestShortAudioDescriptor_noAudioDeviceInfo() throws Exception {
HdmiCecMessage expectedMessage =
@@ -414,51 +452,6 @@
}
@Test
- public void pathToPort_isMe() throws Exception {
- int targetPhysicalAddress = 0x1000;
- mNativeWrapper.setPhysicalAddress(0x1000);
- assertThat(mHdmiCecLocalDeviceAudioSystem
- .getLocalPortFromPhysicalAddress(targetPhysicalAddress))
- .isEqualTo(0);
- }
-
- @Test
- public void pathToPort_isBelow() throws Exception {
- int targetPhysicalAddress = 0x1100;
- mNativeWrapper.setPhysicalAddress(0x1000);
- assertThat(mHdmiCecLocalDeviceAudioSystem
- .getLocalPortFromPhysicalAddress(targetPhysicalAddress))
- .isEqualTo(1);
- }
-
- @Test
- public void pathToPort_neitherMeNorBelow() throws Exception {
- int targetPhysicalAddress = 0x3000;
- mNativeWrapper.setPhysicalAddress(0x2000);
- assertThat(mHdmiCecLocalDeviceAudioSystem
- .getLocalPortFromPhysicalAddress(targetPhysicalAddress))
- .isEqualTo(-1);
-
- targetPhysicalAddress = 0x2200;
- mNativeWrapper.setPhysicalAddress(0x3300);
- assertThat(mHdmiCecLocalDeviceAudioSystem
- .getLocalPortFromPhysicalAddress(targetPhysicalAddress))
- .isEqualTo(-1);
-
- targetPhysicalAddress = 0x2213;
- mNativeWrapper.setPhysicalAddress(0x2212);
- assertThat(mHdmiCecLocalDeviceAudioSystem
- .getLocalPortFromPhysicalAddress(targetPhysicalAddress))
- .isEqualTo(-1);
-
- targetPhysicalAddress = 0x2340;
- mNativeWrapper.setPhysicalAddress(0x2310);
- assertThat(mHdmiCecLocalDeviceAudioSystem
- .getLocalPortFromPhysicalAddress(targetPhysicalAddress))
- .isEqualTo(-1);
- }
-
- @Test
public void handleRequestArcInitiate_isNotDirectConnectedToTv() throws Exception {
HdmiCecMessage message =
HdmiCecMessageBuilder.buildRequestArcInitiation(ADDR_TV, ADDR_AUDIO_SYSTEM);
@@ -530,7 +523,7 @@
ADDR_TV,
Constants.MESSAGE_REQUEST_ARC_INITIATION,
Constants.ABORT_UNRECOGNIZED_OPCODE);
- SystemProperties.set(Constants.PROPERTY_ARC_SUPPORT, "false");
+ mArcSupport = false;
assertThat(mHdmiCecLocalDeviceAudioSystem.handleRequestArcInitiate(message)).isTrue();
mTestLooper.dispatchAll();
@@ -541,7 +534,7 @@
HdmiCecMessage message =
HdmiCecMessageBuilder.buildSystemAudioModeRequest(
ADDR_TUNER_1, ADDR_AUDIO_SYSTEM,
- mAvrPhysicalAddress, true);
+ SELF_PHYSICAL_ADDRESS, true);
HdmiCecMessage expectedMessage =
HdmiCecMessageBuilder.buildFeatureAbortCommand(
ADDR_AUDIO_SYSTEM,
@@ -559,7 +552,7 @@
HdmiCecMessage message =
HdmiCecMessageBuilder.buildSystemAudioModeRequest(
ADDR_TUNER_1, ADDR_AUDIO_SYSTEM,
- mAvrPhysicalAddress, true);
+ SELF_PHYSICAL_ADDRESS, true);
HdmiCecMessage expectedMessage =
HdmiCecMessageBuilder.buildSetSystemAudioMode(
ADDR_AUDIO_SYSTEM, Constants.ADDR_BROADCAST, true);
@@ -585,15 +578,14 @@
.isEqualTo(expectedActiveSource);
}
- @Ignore("b/110413065 Support multiple device types 4 and 5.")
@Test
public void handleRoutingChange_currentActivePortIsHome() {
HdmiCecMessage message =
- HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x3000, mAvrPhysicalAddress);
+ HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x3000, SELF_PHYSICAL_ADDRESS);
HdmiCecMessage expectedMessage =
- HdmiCecMessageBuilder.buildActiveSource(ADDR_PLAYBACK_1, mAvrPhysicalAddress);
- ActiveSource expectedActiveSource = ActiveSource.of(ADDR_PLAYBACK_1, mAvrPhysicalAddress);
+ HdmiCecMessageBuilder.buildActiveSource(ADDR_PLAYBACK_1, SELF_PHYSICAL_ADDRESS);
+ ActiveSource expectedActiveSource = ActiveSource.of(ADDR_PLAYBACK_1, SELF_PHYSICAL_ADDRESS);
int expectedLocalActivePort = Constants.CEC_SWITCH_HOME;
assertThat(mHdmiCecLocalDeviceAudioSystem.handleRoutingChange(message)).isTrue();
@@ -608,17 +600,18 @@
@Test
public void handleRoutingInformation_currentActivePortIsHDMI1() {
HdmiCecMessage message =
- HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, 0x2000);
- mHdmiCecLocalDeviceAudioSystem.setRoutingPort(Constants.CEC_SWITCH_HDMI1);
+ HdmiCecMessageBuilder.buildRoutingInformation(ADDR_TV, SELF_PHYSICAL_ADDRESS);
+ mHdmiCecLocalDeviceAudioSystem.setRoutingPort(mHdmiPortInfo[1].getId());
HdmiCecMessage expectedMessage =
- HdmiCecMessageBuilder.buildRoutingInformation(ADDR_AUDIO_SYSTEM, 0x2100);
+ HdmiCecMessageBuilder.buildRoutingInformation(
+ ADDR_AUDIO_SYSTEM, HDMI_1_PHYSICAL_ADDRESS);
assertThat(mHdmiCecLocalDeviceAudioSystem.handleRoutingInformation(message)).isTrue();
mTestLooper.dispatchAll();
assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage);
}
- @Ignore("b/110413065 Support multiple device types 4 and 5.")
+ @Ignore("b/120845532")
@Test
public void handleRoutingChange_homeIsActive_playbackSendActiveSource() {
HdmiCecMessage message =
@@ -667,7 +660,7 @@
mHdmiCecLocalDeviceAudioSystem.addDeviceInfo(oldDevice);
HdmiDeviceInfo differentDevice = new HdmiDeviceInfo(
- ADDR_PLAYBACK_1, 0x2100, 4, HdmiDeviceInfo.DEVICE_PLAYBACK,
+ ADDR_PLAYBACK_1, 0x2300, 4, HdmiDeviceInfo.DEVICE_PLAYBACK,
Constants.UNKNOWN_VENDOR_ID, HdmiUtils.getDefaultDeviceName(ADDR_PLAYBACK_1));
mHdmiCecLocalDeviceAudioSystem.updateCecDevice(differentDevice);
@@ -686,14 +679,13 @@
mHdmiCecLocalDeviceAudioSystem.addDeviceInfo(oldDevice);
HdmiDeviceInfo differentDevice = new HdmiDeviceInfo(
- ADDR_PLAYBACK_1, 0x2200, 1, HdmiDeviceInfo.DEVICE_PLAYBACK,
- Constants.UNKNOWN_VENDOR_ID, HdmiUtils.getDefaultDeviceName(ADDR_PLAYBACK_1));
+ ADDR_PLAYBACK_2, 0x2200, 1, HdmiDeviceInfo.DEVICE_PLAYBACK,
+ Constants.UNKNOWN_VENDOR_ID, HdmiUtils.getDefaultDeviceName(ADDR_PLAYBACK_2));
HdmiCecMessage reportPhysicalAddress = HdmiCecMessageBuilder
.buildReportPhysicalAddressCommand(
- ADDR_PLAYBACK_1, 0x2200, HdmiDeviceInfo.DEVICE_PLAYBACK);
+ ADDR_PLAYBACK_2, 0x2200, HdmiDeviceInfo.DEVICE_PLAYBACK);
mHdmiCecLocalDeviceAudioSystem.handleReportPhysicalAddress(reportPhysicalAddress);
- mHdmiCecLocalDeviceAudioSystem.addDeviceInfo(oldDevice);
mTestLooper.dispatchAll();
assertThat(mDeviceInfo).isEqualTo(differentDevice);
assertThat(mHdmiCecLocalDeviceAudioSystem
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
index 792c617..feae4ee 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
@@ -81,7 +81,8 @@
mNativeWrapper.setPhysicalAddress(mPlaybackPhysicalAddress);
}
- @Ignore
+ // Playback device does not handle routing control related feature right now
+ @Ignore("b/120845532")
@Test
public void handleSetStreamPath_underCurrentDevice() {
assertThat(mHdmiCecLocalDevicePlayback.getLocalActivePath()).isEqualTo(0);
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
index 67ce13f..1f66074 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
@@ -179,6 +179,7 @@
@Test
public void pathToPort_pathExists_weAreNonTv() {
mNativeWrapper.setPhysicalAddress(0x2000);
+ mHdmiControlService.initPortInfo();
assertThat(mHdmiControlService.pathToPortId(0x2120)).isEqualTo(1);
assertThat(mHdmiControlService.pathToPortId(0x2234)).isEqualTo(2);
}
@@ -186,6 +187,7 @@
@Test
public void pathToPort_pathExists_weAreTv() {
mNativeWrapper.setPhysicalAddress(0x0000);
+ mHdmiControlService.initPortInfo();
assertThat(mHdmiControlService.pathToPortId(0x2120)).isEqualTo(3);
assertThat(mHdmiControlService.pathToPortId(0x3234)).isEqualTo(4);
}
@@ -193,6 +195,7 @@
@Test
public void pathToPort_pathInvalid() {
mNativeWrapper.setPhysicalAddress(0x2000);
+ mHdmiControlService.initPortInfo();
assertThat(mHdmiControlService.pathToPortId(0x1000)).isEqualTo(Constants.INVALID_PORT_ID);
}
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
new file mode 100644
index 0000000..985c647
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2018 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.server.hdmi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.util.Slog;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.server.hdmi.HdmiUtils.CodecSad;
+import com.android.server.hdmi.HdmiUtils.DeviceConfig;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+
+@SmallTest
+@RunWith(JUnit4.class)
+/** Tests for {@link HdmiUtils} class. */
+public class HdmiUtilsTest {
+
+ private static final String TAG = "HdmiUtilsTest";
+
+ private final String mExampleXML =
+ "<!-- A sample Short Audio Descriptor configuration xml -->"
+ + "<config version=\"1.0\" xmlns:xi=\"http://www.w3.org/2001/XInclude\">"
+ + "<device type=\"VX_AUDIO_DEVICE_IN_HDMI_ARC\">"
+ + "<supportedFormat format=\"AUDIO_FORMAT_LPCM\" descriptor=\"011a03\"/>"
+ + "<supportedFormat format=\"AUDIO_FORMAT_DD\" descriptor=\"0d0506\"/>"
+ + "</device>"
+ + "<device type=\"AUDIO_DEVICE_IN_SPDIF\">"
+ + "<supportedFormat format=\"AUDIO_FORMAT_LPCM\" descriptor=\"010203\"/>"
+ + "<supportedFormat format=\"AUDIO_FORMAT_DD\" descriptor=\"040506\"/>"
+ + "</device>"
+ + "</config>";
+
+ @Test
+ public void pathToPort_isMe() {
+ int targetPhysicalAddress = 0x1000;
+ int myPhysicalAddress = 0x1000;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_SAME_PHYSICAL_ADDRESS);
+ }
+
+ @Test
+ public void pathToPort_isDirectlyBelow() {
+ int targetPhysicalAddress = 0x1100;
+ int myPhysicalAddress = 0x1000;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(1);
+ }
+
+ @Test
+ public void pathToPort_isBelow() {
+ int targetPhysicalAddress = 0x1110;
+ int myPhysicalAddress = 0x1000;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(1);
+ }
+
+ @Test
+ public void pathToPort_neitherMeNorBelow() {
+ int targetPhysicalAddress = 0x3000;
+ int myPhysicalAddress = 0x2000;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_NOT_UNDER_LOCAL_DEVICE);
+
+ targetPhysicalAddress = 0x2200;
+ myPhysicalAddress = 0x3300;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_NOT_UNDER_LOCAL_DEVICE);
+
+ targetPhysicalAddress = 0x2213;
+ myPhysicalAddress = 0x2212;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_NOT_UNDER_LOCAL_DEVICE);
+
+ targetPhysicalAddress = 0x2340;
+ myPhysicalAddress = 0x2310;
+ assertThat(HdmiUtils.getLocalPortFromPhysicalAddress(
+ targetPhysicalAddress, myPhysicalAddress)).isEqualTo(
+ HdmiUtils.TARGET_NOT_UNDER_LOCAL_DEVICE);
+ }
+
+ @Test
+ public void parseSampleXML() {
+ List<DeviceConfig> config = new ArrayList<>();
+ try {
+ config = HdmiUtils.ShortAudioDescriptorXmlParser.parse(
+ new ByteArrayInputStream(mExampleXML.getBytes(StandardCharsets.UTF_8)));
+ } catch (IOException e) {
+ Slog.e(TAG, e.getMessage(), e);
+ } catch (XmlPullParserException e) {
+ Slog.e(TAG, e.getMessage(), e);
+ }
+
+ CodecSad expectedCodec1 = new CodecSad(Constants.AUDIO_CODEC_LPCM, "011a03");
+ CodecSad expectedCodec2 = new CodecSad(Constants.AUDIO_CODEC_DD, "0d0506");
+ CodecSad expectedCodec3 = new CodecSad(Constants.AUDIO_CODEC_LPCM, "010203");
+ CodecSad expectedCodec4 = new CodecSad(Constants.AUDIO_CODEC_DD, "040506");
+
+ List<CodecSad> expectedList1 = new ArrayList<>();
+ expectedList1.add(expectedCodec1);
+ expectedList1.add(expectedCodec2);
+
+ List<CodecSad> expectedList2 = new ArrayList<>();
+ expectedList2.add(expectedCodec3);
+ expectedList2.add(expectedCodec4);
+
+ DeviceConfig expectedDevice1 = new DeviceConfig(
+ "VX_AUDIO_DEVICE_IN_HDMI_ARC", expectedList1);
+ DeviceConfig expectedDevice2 = new DeviceConfig(
+ "AUDIO_DEVICE_IN_SPDIF", expectedList2);
+
+ List<DeviceConfig> expectedConfig = new ArrayList<>();
+ expectedConfig.add(expectedDevice1);
+ expectedConfig.add(expectedDevice2);
+
+ assertThat(config).isEqualTo(expectedConfig);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
index bd297ee..440a49a 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
@@ -31,6 +31,7 @@
import androidx.test.filters.SmallTest;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -150,6 +151,11 @@
int sourceAddress, int physicalAddress) {
mBroadcastActiveSource = true;
}
+
+ @Override
+ int pathToPortId(int path) {
+ return -1;
+ }
};
mHdmiCecLocalDeviceAudioSystem =
new HdmiCecLocalDeviceAudioSystem(hdmiControlService) {
@@ -270,6 +276,7 @@
assertTrue(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated());
}
+ @Ignore("b/120845532")
@Test
public void testIsPlaybackDevice_cannotReceiveActiveSource() {
resetTestVariables();
@@ -282,10 +289,10 @@
mTestLooper.dispatchAll();
assertThat(mMsgRequestActiveSourceCount).isEqualTo(1);
- assertThat(mMsgSetSystemAudioModeCount).isEqualTo(1);
- assertThat(mQueryTvSystemAudioModeSupportCount).isEqualTo(1);
- assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isTrue();
assertThat(mBroadcastActiveSource).isTrue();
+ assertThat(mQueryTvSystemAudioModeSupportCount).isEqualTo(1);
+ assertThat(mMsgSetSystemAudioModeCount).isEqualTo(1);
+ assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isTrue();
}
private void resetTestVariables() {
diff --git a/services/tests/servicestests/src/com/android/server/job/JobCountTrackerTest.java b/services/tests/servicestests/src/com/android/server/job/JobCountTrackerTest.java
new file mode 100644
index 0000000..e5529cb
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/job/JobCountTrackerTest.java
@@ -0,0 +1,305 @@
+/*
+ * Copyright (C) 2019 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.server.job;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.util.Log;
+
+import com.android.server.job.JobConcurrencyManager.JobCountTracker;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Random;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.runner.AndroidJUnit4;
+
+/**
+ * Test for {@link com.android.server.job.JobConcurrencyManager.JobCountTracker}.
+ */
+@RunWith(AndroidJUnit4.class)
+@MediumTest
+public class JobCountTrackerTest {
+ private static final String TAG = "JobCountTrackerTest";
+
+ private Random mRandom;
+ private JobCountTracker mJobCountTracker;
+
+ @Before
+ public void setUp() {
+ mRandom = new Random(1); // Always use the same series of pseudo random values.
+ mJobCountTracker = new JobCountTracker();
+ }
+
+ /**
+ * Represents running and pending jobs.
+ */
+ class Jobs {
+ public int runningFg;
+ public int runningBg;
+ public int pendingFg;
+ public int pendingBg;
+
+ public void maybeEnqueueJobs(double startRatio, double fgJobRatio) {
+ while (mRandom.nextDouble() < startRatio) {
+ if (mRandom.nextDouble() < fgJobRatio) {
+ pendingFg++;
+ } else {
+ pendingBg++;
+ }
+ }
+ }
+
+ public void maybeFinishJobs(double stopRatio) {
+ for (int i = runningBg; i > 0; i--) {
+ if (mRandom.nextDouble() < stopRatio) {
+ runningBg--;
+ }
+ }
+ for (int i = runningFg; i > 0; i--) {
+ if (mRandom.nextDouble() < stopRatio) {
+ runningFg--;
+ }
+ }
+ }
+ }
+
+
+ private void startPendingJobs(Jobs jobs, int totalMax, int maxBg, int minBg) {
+ mJobCountTracker.reset(totalMax, maxBg, minBg);
+
+ for (int i = 0; i < jobs.runningFg; i++) {
+ mJobCountTracker.incrementRunningJobCount(true);
+ }
+ for (int i = 0; i < jobs.runningBg; i++) {
+ mJobCountTracker.incrementRunningJobCount(false);
+ }
+
+ for (int i = 0; i < jobs.pendingFg; i++) {
+ mJobCountTracker.incrementPendingJobCount(true);
+ }
+ for (int i = 0; i < jobs.pendingBg; i++) {
+ mJobCountTracker.incrementPendingJobCount(false);
+ }
+
+ mJobCountTracker.onCountDone();
+
+ while ((jobs.pendingFg > 0 && mJobCountTracker.canJobStart(true))
+ || (jobs.pendingBg > 0 && mJobCountTracker.canJobStart(false))) {
+ final boolean isStartingFg = mRandom.nextBoolean();
+
+ if (isStartingFg) {
+ if (jobs.pendingFg > 0 && mJobCountTracker.canJobStart(true)) {
+ jobs.pendingFg--;
+ jobs.runningFg++;
+ mJobCountTracker.onStartingNewJob(true);
+ }
+ } else {
+ if (jobs.pendingBg > 0 && mJobCountTracker.canJobStart(false)) {
+ jobs.pendingBg--;
+ jobs.runningBg++;
+ mJobCountTracker.onStartingNewJob(false);
+ }
+ }
+ }
+
+ Log.i(TAG, "" + mJobCountTracker);
+ }
+
+ /**
+ * Used by the following testRandom* tests.
+ */
+ private void checkRandom(Jobs jobs, int numTests, int totalMax, int maxBg, int minBg,
+ double startRatio, double fgJobRatio, double stopRatio) {
+ for (int i = 0; i < numTests; i++) {
+
+ jobs.maybeFinishJobs(stopRatio);
+ jobs.maybeEnqueueJobs(startRatio, fgJobRatio);
+
+ startPendingJobs(jobs, totalMax, maxBg, minBg);
+
+ assertThat(jobs.runningFg).isAtMost(totalMax);
+ assertThat(jobs.runningBg).isAtMost(totalMax);
+ assertThat(jobs.runningFg + jobs.runningBg).isAtMost(totalMax);
+ assertThat(jobs.runningBg).isAtMost(maxBg);
+ }
+ }
+
+ /**
+ * Randomly enqueue / stop jobs and make sure we won't run more jobs than we should.
+ */
+ @Test
+ public void testRandom1() {
+ final Jobs jobs = new Jobs();
+
+ final int numTests = 5000;
+ final int totalMax = 6;
+ final int maxBg = 4;
+ final int minBg = 2;
+ final double stopRatio = 0.1;
+ final double fgJobRatio = 0.5;
+ final double startRatio = 0.1;
+
+ checkRandom(jobs, numTests, totalMax, maxBg, minBg, startRatio, fgJobRatio , stopRatio);
+ }
+
+ @Test
+ public void testRandom2() {
+ final Jobs jobs = new Jobs();
+
+ final int numTests = 5000;
+ final int totalMax = 2;
+ final int maxBg = 2;
+ final int minBg = 0;
+ final double stopRatio = 0.5;
+ final double fgJobRatio = 0.5;
+ final double startRatio = 0.5;
+
+ checkRandom(jobs, numTests, totalMax, maxBg, minBg, startRatio, fgJobRatio, stopRatio);
+ }
+
+ @Test
+ public void testRandom3() {
+ final Jobs jobs = new Jobs();
+
+ final int numTests = 5000;
+ final int totalMax = 2;
+ final int maxBg = 2;
+ final int minBg = 2;
+ final double stopRatio = 0.5;
+ final double fgJobRatio = 0.5;
+ final double startRatio = 0.5;
+
+ checkRandom(jobs, numTests, totalMax, maxBg, minBg, startRatio, fgJobRatio, stopRatio);
+ }
+
+ @Test
+ public void testRandom4() {
+ final Jobs jobs = new Jobs();
+
+ final int numTests = 5000;
+ final int totalMax = 10;
+ final int maxBg = 2;
+ final int minBg = 0;
+ final double stopRatio = 0.5;
+ final double fgJobRatio = 0.5;
+ final double startRatio = 0.5;
+
+ checkRandom(jobs, numTests, totalMax, maxBg, minBg, startRatio, fgJobRatio, stopRatio);
+ }
+
+ @Test
+ public void testRandom5() {
+ final Jobs jobs = new Jobs();
+
+ final int numTests = 5000;
+ final int totalMax = 6;
+ final int maxBg = 4;
+ final int minBg = 2;
+ final double stopRatio = 0.5;
+ final double fgJobRatio = 0.1;
+ final double startRatio = 0.5;
+
+ checkRandom(jobs, numTests, totalMax, maxBg, minBg, startRatio, fgJobRatio, stopRatio);
+ }
+
+ @Test
+ public void testRandom6() {
+ final Jobs jobs = new Jobs();
+
+ final int numTests = 5000;
+ final int totalMax = 6;
+ final int maxBg = 4;
+ final int minBg = 2;
+ final double stopRatio = 0.5;
+ final double fgJobRatio = 0.9;
+ final double startRatio = 0.5;
+
+ checkRandom(jobs, numTests, totalMax, maxBg, minBg, startRatio, fgJobRatio, stopRatio);
+ }
+
+ @Test
+ public void testRandom7() {
+ final Jobs jobs = new Jobs();
+
+ final int numTests = 5000;
+ final int totalMax = 6;
+ final int maxBg = 4;
+ final int minBg = 2;
+ final double stopRatio = 0.4;
+ final double fgJobRatio = 0.1;
+ final double startRatio = 0.5;
+
+ checkRandom(jobs, numTests, totalMax, maxBg, minBg, startRatio, fgJobRatio, stopRatio);
+ }
+
+ @Test
+ public void testRandom8() {
+ final Jobs jobs = new Jobs();
+
+ final int numTests = 5000;
+ final int totalMax = 6;
+ final int maxBg = 4;
+ final int minBg = 2;
+ final double stopRatio = 0.4;
+ final double fgJobRatio = 0.9;
+ final double startRatio = 0.5;
+
+ checkRandom(jobs, numTests, totalMax, maxBg, minBg, startRatio, fgJobRatio, stopRatio);
+ }
+
+ /** Used by the following tests */
+ private void checkSimple(int totalMax, int maxBg, int minBg,
+ int runningFg, int runningBg, int pendingFg, int pendingBg,
+ int resultRunningFg, int resultRunningBg, int resultPendingFg, int resultPendingBg) {
+ final Jobs jobs = new Jobs();
+ jobs.runningFg = runningFg;
+ jobs.runningBg = runningBg;
+ jobs.pendingFg = pendingFg;
+ jobs.pendingBg = pendingBg;
+
+ startPendingJobs(jobs, totalMax, maxBg, minBg);
+
+ assertThat(jobs.runningFg).isEqualTo(resultRunningFg);
+ assertThat(jobs.runningBg).isEqualTo(resultRunningBg);
+
+ assertThat(jobs.pendingFg).isEqualTo(resultPendingFg);
+ assertThat(jobs.pendingBg).isEqualTo(resultPendingBg);
+ }
+
+
+ @Test
+ public void testBasic() {
+ // Args are:
+ // First 3: Total-max, bg-max, bg-min.
+ // Next 2: Running FG / BG
+ // Next 2: Pending FG / BG
+ // Next 4: Result running FG / BG, pending FG/BG.
+ checkSimple(6, 4, 2, /*run=*/ 0, 0, /*pen=*/ 1, 0, /*res run/pen=*/ 1, 0, 0, 0);
+
+ checkSimple(6, 4, 2, /*run=*/ 0, 0, /*pen=*/ 10, 0, /*res run/pen=*/ 6, 0, 4, 0);
+
+ // When there are BG jobs pending, 2 (min-BG) jobs should run.
+ checkSimple(6, 4, 2, /*run=*/ 0, 0, /*pen=*/ 10, 1, /*res run/pen=*/ 5, 1, 5, 0);
+ checkSimple(6, 4, 2, /*run=*/ 0, 0, /*pen=*/ 10, 3, /*res run/pen=*/ 4, 2, 6, 1);
+
+ checkSimple(6, 4, 2, /*run=*/ 6, 0, /*pen=*/ 10, 3, /*res run/pen=*/ 6, 0, 10, 3);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/job/MaxJobCountsTest.java b/services/tests/servicestests/src/com/android/server/job/MaxJobCountsTest.java
new file mode 100644
index 0000000..01199a3
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/job/MaxJobCountsTest.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2019 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.server.job;
+
+import android.util.KeyValueListParser;
+
+import com.android.server.job.JobSchedulerService.MaxJobCounts;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class MaxJobCountsTest {
+
+ private void check(String config,
+ int defaultTotal, int defaultMaxBg, int defaultMinBg,
+ int expectedTotal, int expectedMaxBg, int expectedMinBg) {
+ final KeyValueListParser parser = new KeyValueListParser(',');
+ parser.setString(config);
+
+ final MaxJobCounts counts = new JobSchedulerService.MaxJobCounts(
+ defaultTotal, "total",
+ defaultMaxBg, "maxbg",
+ defaultMinBg, "minbg");
+
+ counts.parse(parser);
+
+ Assert.assertEquals(expectedTotal, counts.getTotalMax());
+ Assert.assertEquals(expectedMaxBg, counts.getMaxBg());
+ Assert.assertEquals(expectedMinBg, counts.getMinBg());
+ }
+
+ @Test
+ public void test() {
+ check("", /*default*/ 5, 1, 0, /*expected*/ 5, 1, 0);
+ check("", /*default*/ 5, 0, 0, /*expected*/ 5, 1, 0);
+ check("", /*default*/ 0, 0, 0, /*expected*/ 1, 1, 0);
+ check("", /*default*/ -1, -1, -1, /*expected*/ 1, 1, 0);
+ check("", /*default*/ 5, 5, 5, /*expected*/ 5, 5, 4);
+ check("", /*default*/ 6, 5, 6, /*expected*/ 6, 5, 5);
+ check("", /*default*/ 4, 5, 6, /*expected*/ 4, 4, 3);
+ check("", /*default*/ 5, 1, 1, /*expected*/ 5, 1, 1);
+
+ check("total=5,maxbg=4,minbg=3", /*default*/ 9, 9, 9, /*expected*/ 5, 4, 3);
+ check("total=5", /*default*/ 9, 9, 9, /*expected*/ 5, 5, 4);
+ check("maxbg=4", /*default*/ 9, 9, 9, /*expected*/ 9, 4, 4);
+ check("minbg=3", /*default*/ 9, 9, 9, /*expected*/ 9, 9, 3);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java
index 8a9e5d1..c2d4846 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java
@@ -23,6 +23,7 @@
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PASSWORD;
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTERN;
+
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertArrayEquals;
@@ -91,6 +92,9 @@
private static final byte[] TEST_VAULT_HANDLE =
new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
private static final String TEST_APP_KEY_ALIAS = "rcleaver";
+ private static final byte[] TEST_APP_KEY_METADATA_NULL = null;
+ private static final byte[] TEST_APP_KEY_METADATA_NON_NULL =
+ "mdata".getBytes(StandardCharsets.UTF_8);
private static final int TEST_GENERATION_ID = 2;
private static final int TEST_CREDENTIAL_TYPE = CREDENTIAL_TYPE_PATTERN;
private static final String TEST_CREDENTIAL = "pas123";
@@ -251,7 +255,7 @@
TEST_USER_ID,
TEST_RECOVERY_AGENT_UID,
TEST_APP_KEY_ALIAS,
- WrappedKey.fromSecretKey(mEncryptKey, applicationKey));
+ WrappedKey.fromSecretKey(mEncryptKey, applicationKey, TEST_APP_KEY_METADATA_NULL));
when(mSnapshotListenersStorage.hasListener(TEST_RECOVERY_AGENT_UID)).thenReturn(true);
mKeySyncTask.run();
@@ -267,7 +271,7 @@
TEST_USER_ID,
TEST_RECOVERY_AGENT_UID,
TEST_APP_KEY_ALIAS,
- WrappedKey.fromSecretKey(mEncryptKey, applicationKey));
+ WrappedKey.fromSecretKey(mEncryptKey, applicationKey, TEST_APP_KEY_METADATA_NULL));
mRecoverableKeyStoreDb.setRecoveryServiceCertPath(
TEST_USER_ID, TEST_RECOVERY_AGENT_UID, TEST_ROOT_CERT_ALIAS, TestData.CERT_PATH_1);
when(mSnapshotListenersStorage.hasListener(TEST_RECOVERY_AGENT_UID)).thenReturn(true);
@@ -545,18 +549,20 @@
assertEquals(TEST_APP_KEY_ALIAS, keyData.getAlias());
assertThat(keyData.getAlias()).isEqualTo(keyData.getAlias());
byte[] appKey = KeySyncUtils.decryptApplicationKey(
- recoveryKey, keyData.getEncryptedKeyMaterial());
+ recoveryKey, keyData.getEncryptedKeyMaterial(), TEST_APP_KEY_METADATA_NULL);
assertThat(appKey).isEqualTo(applicationKey.getEncoded());
}
@Test
- public void run_sendsEncryptedKeysIfAvailableToSync_withCertPath() throws Exception {
+ public void run_sendsEncryptedKeysIfAvailableToSync_withCertPath_withNullKeyMetadata()
+ throws Exception {
mRecoverableKeyStoreDb.setRecoveryServiceCertPath(
TEST_USER_ID, TEST_RECOVERY_AGENT_UID, TEST_ROOT_CERT_ALIAS, TestData.CERT_PATH_1);
mRecoverableKeyStoreDb.setServerParams(
TEST_USER_ID, TEST_RECOVERY_AGENT_UID, TEST_VAULT_HANDLE);
when(mSnapshotListenersStorage.hasListener(TEST_RECOVERY_AGENT_UID)).thenReturn(true);
- addApplicationKey(TEST_USER_ID, TEST_RECOVERY_AGENT_UID, TEST_APP_KEY_ALIAS);
+ addApplicationKey(TEST_USER_ID, TEST_RECOVERY_AGENT_UID, TEST_APP_KEY_ALIAS,
+ TEST_APP_KEY_METADATA_NULL);
mKeySyncTask.run();
@@ -564,6 +570,33 @@
verify(mSnapshotListenersStorage).recoverySnapshotAvailable(TEST_RECOVERY_AGENT_UID);
List<WrappedApplicationKey> applicationKeys = keyChainSnapshot.getWrappedApplicationKeys();
assertThat(applicationKeys).hasSize(1);
+ WrappedApplicationKey keyData = applicationKeys.get(0);
+ assertThat(keyData.getAlias()).isEqualTo(TEST_APP_KEY_ALIAS);
+ assertThat(keyData.getMetadata()).isEqualTo(TEST_APP_KEY_METADATA_NULL);
+ assertThat(keyChainSnapshot.getTrustedHardwareCertPath())
+ .isEqualTo(TestData.CERT_PATH_1);
+ }
+
+ @Test
+ public void run_sendsEncryptedKeysIfAvailableToSync_withCertPath_withNonNullKeyMetadata()
+ throws Exception {
+ mRecoverableKeyStoreDb.setRecoveryServiceCertPath(
+ TEST_USER_ID, TEST_RECOVERY_AGENT_UID, TEST_ROOT_CERT_ALIAS, TestData.CERT_PATH_1);
+ mRecoverableKeyStoreDb.setServerParams(
+ TEST_USER_ID, TEST_RECOVERY_AGENT_UID, TEST_VAULT_HANDLE);
+ when(mSnapshotListenersStorage.hasListener(TEST_RECOVERY_AGENT_UID)).thenReturn(true);
+ addApplicationKey(TEST_USER_ID, TEST_RECOVERY_AGENT_UID, TEST_APP_KEY_ALIAS,
+ TEST_APP_KEY_METADATA_NON_NULL);
+
+ mKeySyncTask.run();
+
+ KeyChainSnapshot keyChainSnapshot = mRecoverySnapshotStorage.get(TEST_RECOVERY_AGENT_UID);
+ verify(mSnapshotListenersStorage).recoverySnapshotAvailable(TEST_RECOVERY_AGENT_UID);
+ List<WrappedApplicationKey> applicationKeys = keyChainSnapshot.getWrappedApplicationKeys();
+ assertThat(applicationKeys).hasSize(1);
+ WrappedApplicationKey keyData = applicationKeys.get(0);
+ assertThat(keyData.getAlias()).isEqualTo(TEST_APP_KEY_ALIAS);
+ assertThat(keyData.getMetadata()).isEqualTo(TEST_APP_KEY_METADATA_NON_NULL);
assertThat(keyChainSnapshot.getTrustedHardwareCertPath())
.isEqualTo(TestData.CERT_PATH_1);
}
@@ -788,6 +821,11 @@
private SecretKey addApplicationKey(int userId, int recoveryAgentUid, String alias)
throws Exception{
+ return addApplicationKey(userId, recoveryAgentUid, alias, TEST_APP_KEY_METADATA_NULL);
+ }
+
+ private SecretKey addApplicationKey(int userId, int recoveryAgentUid, String alias,
+ byte[] metadata) throws Exception {
SecretKey applicationKey = generateKey();
mRecoverableKeyStoreDb.setServerParams(
userId, recoveryAgentUid, TEST_VAULT_HANDLE);
@@ -800,7 +838,7 @@
userId,
recoveryAgentUid,
alias,
- WrappedKey.fromSecretKey(mEncryptKey, applicationKey));
+ WrappedKey.fromSecretKey(mEncryptKey, applicationKey, metadata));
return applicationKey;
}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncUtilsTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncUtilsTest.java
index f832d3c..178fd10 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncUtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncUtilsTest.java
@@ -22,6 +22,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import android.util.Pair;
+
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
@@ -65,7 +67,8 @@
private static final byte[] RECOVERY_RESPONSE_HEADER =
"V1 reencrypted_recovery_key".getBytes(StandardCharsets.UTF_8);
private static final int PUBLIC_KEY_LENGTH_BYTES = 65;
-
+ private static final byte[] NULL_METADATA = null;
+ private static final byte[] NON_NULL_METADATA = "somemetadata".getBytes(StandardCharsets.UTF_8);
@Test
public void calculateThmKfHash_isShaOfLockScreenHashWithPrefix() throws Exception {
@@ -125,18 +128,35 @@
}
@Test
- public void decryptApplicationKey_decryptsAnApplicationKeyEncryptedWithSecureBox()
- throws Exception {
+ public void decryptApplicationKey_decryptsAnApplicationKey_nullMetadata() throws Exception {
String alias = "phoebe";
SecretKey recoveryKey = KeySyncUtils.generateRecoveryKey();
SecretKey applicationKey = generateApplicationKey();
Map<String, byte[]> encryptedKeys =
KeySyncUtils.encryptKeysWithRecoveryKey(
- recoveryKey, ImmutableMap.of(alias, applicationKey));
+ recoveryKey,
+ ImmutableMap.of(alias, Pair.create(applicationKey, NULL_METADATA)));
byte[] encryptedKey = encryptedKeys.get(alias);
- byte[] keyMaterial =
- KeySyncUtils.decryptApplicationKey(recoveryKey.getEncoded(), encryptedKey);
+ byte[] keyMaterial = KeySyncUtils.decryptApplicationKey(recoveryKey.getEncoded(),
+ encryptedKey, NULL_METADATA);
+
+ assertArrayEquals(applicationKey.getEncoded(), keyMaterial);
+ }
+
+ @Test
+ public void decryptApplicationKey_decryptsAnApplicationKey_nonNullMetadata() throws Exception {
+ String alias = "phoebe";
+ SecretKey recoveryKey = KeySyncUtils.generateRecoveryKey();
+ SecretKey applicationKey = generateApplicationKey();
+ Map<String, byte[]> encryptedKeys =
+ KeySyncUtils.encryptKeysWithRecoveryKey(
+ recoveryKey,
+ ImmutableMap.of(alias, Pair.create(applicationKey, NON_NULL_METADATA)));
+ byte[] encryptedKey = encryptedKeys.get(alias);
+
+ byte[] keyMaterial = KeySyncUtils.decryptApplicationKey(recoveryKey.getEncoded(),
+ encryptedKey, NON_NULL_METADATA);
assertArrayEquals(applicationKey.getEncoded(), keyMaterial);
}
@@ -147,12 +167,13 @@
Map<String, byte[]> encryptedKeys =
KeySyncUtils.encryptKeysWithRecoveryKey(
KeySyncUtils.generateRecoveryKey(),
- ImmutableMap.of("casper", generateApplicationKey()));
+ ImmutableMap.of("casper",
+ Pair.create(generateApplicationKey(), NULL_METADATA)));
byte[] encryptedKey = encryptedKeys.get(alias);
try {
- KeySyncUtils.decryptApplicationKey(
- KeySyncUtils.generateRecoveryKey().getEncoded(), encryptedKey);
+ KeySyncUtils.decryptApplicationKey(KeySyncUtils.generateRecoveryKey().getEncoded(),
+ encryptedKey, NULL_METADATA);
fail("Did not throw decrypting with bad key.");
} catch (AEADBadTagException error) {
// expected
@@ -160,6 +181,47 @@
}
@Test
+ public void decryptApplicationKey_throwsIfWrongMetadata() throws Exception {
+ String alias1 = "casper1";
+ String alias2 = "casper2";
+ String alias3 = "casper3";
+ SecretKey recoveryKey = KeySyncUtils.generateRecoveryKey();
+
+ Map<String, byte[]> encryptedKeys =
+ KeySyncUtils.encryptKeysWithRecoveryKey(
+ recoveryKey,
+ ImmutableMap.of(
+ alias1,
+ Pair.create(generateApplicationKey(), NULL_METADATA),
+ alias2,
+ Pair.create(generateApplicationKey(), NON_NULL_METADATA),
+ alias3,
+ Pair.create(generateApplicationKey(), NON_NULL_METADATA)));
+
+ try {
+ KeySyncUtils.decryptApplicationKey(recoveryKey.getEncoded(),
+ encryptedKeys.get(alias1), NON_NULL_METADATA);
+ fail("Did not throw decrypting with wrong metadata.");
+ } catch (AEADBadTagException error) {
+ // expected
+ }
+ try {
+ KeySyncUtils.decryptApplicationKey(recoveryKey.getEncoded(),
+ encryptedKeys.get(alias2), NULL_METADATA);
+ fail("Did not throw decrypting with wrong metadata.");
+ } catch (AEADBadTagException error) {
+ // expected
+ }
+ try {
+ KeySyncUtils.decryptApplicationKey(recoveryKey.getEncoded(),
+ encryptedKeys.get(alias3), "different".getBytes(StandardCharsets.UTF_8));
+ fail("Did not throw decrypting with wrong metadata.");
+ } catch (AEADBadTagException error) {
+ // expected
+ }
+ }
+
+ @Test
public void decryptRecoveryKey_decryptsALocallyEncryptedKey() throws Exception {
SecretKey recoveryKey = KeySyncUtils.generateRecoveryKey();
byte[] encrypted = KeySyncUtils.locallyEncryptRecoveryKey(
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java
index 48afb8b..c295177 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java
@@ -20,6 +20,7 @@
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import android.content.Context;
import android.security.keystore.AndroidKeyStoreSecretKey;
@@ -60,6 +61,9 @@
private static final int TEST_USER_ID = 1000;
private static final int KEYSTORE_UID_SELF = -1;
private static final int GCM_TAG_LENGTH_BITS = 128;
+ private static final byte[] NULL_METADATA = null;
+ private static final byte[] NON_NULL_METADATA = "test-metadata".getBytes(
+ StandardCharsets.UTF_8);
private PlatformEncryptionKey mPlatformKey;
private PlatformDecryptionKey mDecryptKey;
@@ -90,18 +94,29 @@
}
@Test
- public void generateAndStoreKey_storesWrappedKey() throws Exception {
+ public void generateAndStoreKey_storesWrappedKey_nullMetadata() throws Exception {
mRecoverableKeyGenerator.generateAndStoreKey(
- mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS);
+ mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS, NULL_METADATA);
WrappedKey wrappedKey = mRecoverableKeyStoreDb.getKey(KEYSTORE_UID_SELF, TEST_ALIAS);
assertNotNull(wrappedKey);
+ assertNull(wrappedKey.getKeyMetadata());
+ }
+
+ @Test
+ public void generateAndStoreKey_storesWrappedKey_nonNullMetadata() throws Exception {
+ mRecoverableKeyGenerator.generateAndStoreKey(
+ mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS, NON_NULL_METADATA);
+
+ WrappedKey wrappedKey = mRecoverableKeyStoreDb.getKey(KEYSTORE_UID_SELF, TEST_ALIAS);
+ assertNotNull(wrappedKey);
+ assertArrayEquals(NON_NULL_METADATA, wrappedKey.getKeyMetadata());
}
@Test
public void generateAndStoreKey_returnsRawMaterialOfCorrectLength() throws Exception {
byte[] rawKey = mRecoverableKeyGenerator.generateAndStoreKey(
- mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS);
+ mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS, NON_NULL_METADATA);
assertEquals(KEY_SIZE_BYTES, rawKey.length);
}
@@ -109,7 +124,7 @@
@Test
public void generateAndStoreKey_storesTheWrappedVersionOfTheRawMaterial() throws Exception {
byte[] rawMaterial = mRecoverableKeyGenerator.generateAndStoreKey(
- mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS);
+ mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS, NULL_METADATA);
WrappedKey wrappedKey = mRecoverableKeyStoreDb.getKey(KEYSTORE_UID_SELF, TEST_ALIAS);
Cipher cipher = Cipher.getInstance(KEY_WRAP_ALGORITHM);
@@ -120,10 +135,30 @@
}
@Test
+ public void importKey_storesNullMetadata() throws Exception {
+ mRecoverableKeyGenerator.importKey(
+ mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS,
+ randomBytes(KEY_SIZE_BYTES),
+ NULL_METADATA);
+ assertNull(mRecoverableKeyStoreDb.getKey(KEYSTORE_UID_SELF, TEST_ALIAS).getKeyMetadata());
+ }
+
+ @Test
+ public void importKey_storesNonNullMetadata() throws Exception {
+ mRecoverableKeyGenerator.importKey(
+ mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS,
+ randomBytes(KEY_SIZE_BYTES),
+ NON_NULL_METADATA);
+ assertArrayEquals(NON_NULL_METADATA,
+ mRecoverableKeyStoreDb.getKey(KEYSTORE_UID_SELF, TEST_ALIAS).getKeyMetadata());
+ }
+
+ @Test
public void importKey_storesTheWrappedVersionOfTheRawMaterial() throws Exception {
byte[] rawMaterial = randomBytes(KEY_SIZE_BYTES);
mRecoverableKeyGenerator.importKey(
- mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS, rawMaterial);
+ mPlatformKey, TEST_USER_ID, KEYSTORE_UID_SELF, TEST_ALIAS, rawMaterial,
+ NULL_METADATA);
WrappedKey wrappedKey = mRecoverableKeyStoreDb.getKey(KEYSTORE_UID_SELF, TEST_ALIAS);
Cipher cipher = Cipher.getInstance(KEY_WRAP_ALGORITHM);
@@ -145,10 +180,6 @@
return (AndroidKeyStoreSecretKey) keyGenerator.generateKey();
}
- private static byte[] getUtf8Bytes(String s) {
- return s.getBytes(StandardCharsets.UTF_8);
- }
-
private static byte[] randomBytes(int n) {
byte[] bytes = new byte[n];
new Random().nextBytes(bytes);
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java
index b15863d..c78b96d 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java
@@ -52,6 +52,7 @@
import android.security.keystore.recovery.RecoveryCertPath;
import android.security.keystore.recovery.TrustedRootCertificates;
import android.security.keystore.recovery.WrappedApplicationKey;
+import android.util.Pair;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -134,6 +135,8 @@
private static final int GENERATION_ID = 1;
private static final byte[] NONCE = getUtf8Bytes("nonce");
private static final byte[] KEY_MATERIAL = getUtf8Bytes("keymaterial");
+ private static final byte[] KEY_METADATA_NULL = null;
+ private static final byte[] KEY_METADATA_NON_NULL = getUtf8Bytes("keymetametadata");
private static final String KEY_ALGORITHM = "AES";
private static final String ANDROID_KEY_STORE_PROVIDER = "AndroidKeyStore";
private static final String WRAPPING_KEY_ALIAS = "RecoverableKeyStoreManagerTest/WrappingKey";
@@ -231,6 +234,77 @@
}
@Test
+ public void importKeyWithMetadata_nullMetadata_storesTheKey() throws Exception {
+ int uid = Binder.getCallingUid();
+ int userId = UserHandle.getCallingUserId();
+ byte[] keyMaterial = randomBytes(APPLICATION_KEY_SIZE_BYTES);
+
+ mRecoverableKeyStoreManager.importKeyWithMetadata(
+ TEST_ALIAS, keyMaterial, KEY_METADATA_NULL);
+
+ assertThat(mRecoverableKeyStoreDb.getKey(uid, TEST_ALIAS)).isNotNull();
+ assertThat(mRecoverableKeyStoreDb.getShouldCreateSnapshot(userId, uid)).isTrue();
+ }
+
+ @Test
+ public void importKeyWithMetadata_nonNullMetadata_storesTheKey() throws Exception {
+ int uid = Binder.getCallingUid();
+ int userId = UserHandle.getCallingUserId();
+ byte[] keyMaterial = randomBytes(APPLICATION_KEY_SIZE_BYTES);
+
+ mRecoverableKeyStoreManager.importKeyWithMetadata(
+ TEST_ALIAS, keyMaterial, KEY_METADATA_NON_NULL);
+
+ assertThat(mRecoverableKeyStoreDb.getKey(uid, TEST_ALIAS)).isNotNull();
+ assertThat(mRecoverableKeyStoreDb.getShouldCreateSnapshot(userId, uid)).isTrue();
+ }
+
+ @Test
+ public void importKeyWithMetadata_throwsIfInvalidLength() throws Exception {
+ byte[] keyMaterial = randomBytes(APPLICATION_KEY_SIZE_BYTES - 1);
+ try {
+ mRecoverableKeyStoreManager.importKeyWithMetadata(
+ TEST_ALIAS, keyMaterial, KEY_METADATA_NON_NULL);
+ fail("should have thrown");
+ } catch (ServiceSpecificException e) {
+ assertThat(e.getMessage()).contains("not contain 256 bits");
+ }
+ }
+
+ @Test
+ public void importKeyWithMetadata_throwsIfNullKey() throws Exception {
+ try {
+ mRecoverableKeyStoreManager.importKeyWithMetadata(
+ TEST_ALIAS, /*keyBytes=*/ null, KEY_METADATA_NON_NULL);
+ fail("should have thrown");
+ } catch (NullPointerException e) {
+ assertThat(e.getMessage()).contains("is null");
+ }
+ }
+
+ @Test
+ public void generateKeyWithMetadata_nullMetadata_storesTheKey() throws Exception {
+ int uid = Binder.getCallingUid();
+ int userId = UserHandle.getCallingUserId();
+
+ mRecoverableKeyStoreManager.generateKeyWithMetadata(TEST_ALIAS, KEY_METADATA_NULL);
+
+ assertThat(mRecoverableKeyStoreDb.getKey(uid, TEST_ALIAS)).isNotNull();
+ assertThat(mRecoverableKeyStoreDb.getShouldCreateSnapshot(userId, uid)).isTrue();
+ }
+
+ @Test
+ public void generateKeyWithMetadata_nonNullMetadata_storesTheKey() throws Exception {
+ int uid = Binder.getCallingUid();
+ int userId = UserHandle.getCallingUserId();
+
+ mRecoverableKeyStoreManager.generateKeyWithMetadata(TEST_ALIAS, KEY_METADATA_NON_NULL);
+
+ assertThat(mRecoverableKeyStoreDb.getKey(uid, TEST_ALIAS)).isNotNull();
+ assertThat(mRecoverableKeyStoreDb.getShouldCreateSnapshot(userId, uid)).isTrue();
+ }
+
+ @Test
public void removeKey_removesAKey() throws Exception {
int uid = Binder.getCallingUid();
mRecoverableKeyStoreManager.generateKey(TEST_ALIAS);
@@ -1143,7 +1217,10 @@
int status = 100;
int status2 = 200;
String alias = "key1";
- WrappedKey wrappedKey = new WrappedKey(NONCE, KEY_MATERIAL, GENERATION_ID, status);
+ byte[] keyMetadata = null;
+
+ WrappedKey wrappedKey = new WrappedKey(NONCE, KEY_MATERIAL, keyMetadata, GENERATION_ID,
+ status);
mRecoverableKeyStoreDb.insertKey(userId, uid, alias, wrappedKey);
Map<String, Integer> statuses =
mRecoverableKeyStoreManager.getRecoveryStatus();
@@ -1169,7 +1246,8 @@
private static byte[] encryptedApplicationKey(
SecretKey recoveryKey, byte[] applicationKey) throws Exception {
return KeySyncUtils.encryptKeysWithRecoveryKey(recoveryKey, ImmutableMap.of(
- TEST_ALIAS, new SecretKeySpec(applicationKey, "AES")
+ TEST_ALIAS,
+ Pair.create(new SecretKeySpec(applicationKey, "AES"), /*metadata=*/ null)
)).get(TEST_ALIAS);
}
@@ -1203,7 +1281,7 @@
private void generateKeyAndSimulateSync(int userId, int uid, int snapshotVersion)
throws Exception{
- mRecoverableKeyStoreManager.generateKey(TEST_ALIAS);
+ mRecoverableKeyStoreManager.generateKeyWithMetadata(TEST_ALIAS, KEY_METADATA_NULL);
// Simulate key sync.
mRecoverableKeyStoreDb.setSnapshotVersion(userId, uid, snapshotVersion);
mRecoverableKeyStoreDb.setShouldCreateSnapshot(userId, uid, false);
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelperTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelperTest.java
index 944d6e0..9b4c3be 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelperTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelperTest.java
@@ -3,6 +3,7 @@
import static com.google.common.truth.Truth.assertThat;
import android.security.keystore.recovery.TrustedRootCertificates;
+import android.util.Pair;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
@@ -64,10 +65,10 @@
@Test
public void testKeepOnlyWhitelistedInsecureKeys_emptyKeysList() throws Exception {
- Map<String, SecretKey> rawKeys = new HashMap<>();
- Map<String, SecretKey> expectedResult = new HashMap<>();
+ Map<String, Pair<SecretKey, byte[]>> rawKeys = new HashMap<>();
+ Map<String, Pair<SecretKey, byte[]>> expectedResult = new HashMap<>();
- Map<String, SecretKey> filteredKeys =
+ Map<String, Pair<SecretKey, byte[]>> filteredKeys =
mHelper.keepOnlyWhitelistedInsecureKeys(rawKeys);
assertThat(filteredKeys.entrySet()).containsExactlyElementsIn(expectedResult.entrySet());
assertThat(filteredKeys.entrySet()).containsAllIn(rawKeys.entrySet());
@@ -75,13 +76,13 @@
@Test
public void testKeepOnlyWhitelistedInsecureKeys_singleNonWhitelistedKey() throws Exception {
- Map<String, SecretKey> rawKeys = new HashMap<>();
- Map<String, SecretKey> expectedResult = new HashMap<>();
+ Map<String, Pair<SecretKey, byte[]>> rawKeys = new HashMap<>();
+ Map<String, Pair<SecretKey, byte[]>> expectedResult = new HashMap<>();
String alias = "secureAlias";
- rawKeys.put(alias, TestData.generateKey());
+ rawKeys.put(alias, Pair.create(TestData.generateKey(), /*metadata=*/ null));
- Map<String, SecretKey> filteredKeys =
+ Map<String, Pair<SecretKey, byte[]>> filteredKeys =
mHelper.keepOnlyWhitelistedInsecureKeys(rawKeys);
assertThat(filteredKeys.entrySet()).containsExactlyElementsIn(expectedResult.entrySet());
assertThat(rawKeys.entrySet()).containsAllIn(filteredKeys.entrySet());
@@ -89,14 +90,14 @@
@Test
public void testKeepOnlyWhitelistedInsecureKeys_singleWhitelistedKey() throws Exception {
- Map<String, SecretKey> rawKeys = new HashMap<>();
- Map<String, SecretKey> expectedResult = new HashMap<>();
+ Map<String, Pair<SecretKey, byte[]>> rawKeys = new HashMap<>();
+ Map<String, Pair<SecretKey, byte[]>> expectedResult = new HashMap<>();
String alias = TrustedRootCertificates.INSECURE_KEY_ALIAS_PREFIX;
- rawKeys.put(alias, TestData.generateKey());
+ rawKeys.put(alias, Pair.create(TestData.generateKey(), /*metadata=*/ null));
expectedResult.put(alias, rawKeys.get(alias));
- Map<String, SecretKey> filteredKeys =
+ Map<String, Pair<SecretKey, byte[]>> filteredKeys =
mHelper.keepOnlyWhitelistedInsecureKeys(rawKeys);
assertThat(filteredKeys.entrySet()).containsExactlyElementsIn(expectedResult.entrySet());
assertThat(rawKeys.entrySet()).containsAllIn(filteredKeys.entrySet());
@@ -104,21 +105,21 @@
@Test
public void testKeepOnlyWhitelistedInsecureKeys() throws Exception {
- Map<String, SecretKey> rawKeys = new HashMap<>();
- Map<String, SecretKey> expectedResult = new HashMap<>();
+ Map<String, Pair<SecretKey, byte[]>> rawKeys = new HashMap<>();
+ Map<String, Pair<SecretKey, byte[]>> expectedResult = new HashMap<>();
String alias = "SECURE_ALIAS" + TrustedRootCertificates.INSECURE_KEY_ALIAS_PREFIX;
- rawKeys.put(alias, TestData.generateKey());
+ rawKeys.put(alias, Pair.create(TestData.generateKey(), /*metadata=*/ null));
alias = TrustedRootCertificates.INSECURE_KEY_ALIAS_PREFIX + "1";
- rawKeys.put(alias, TestData.generateKey());
+ rawKeys.put(alias, Pair.create(TestData.generateKey(), /*metadata=*/ null));
expectedResult.put(alias, rawKeys.get(alias));
alias = TrustedRootCertificates.INSECURE_KEY_ALIAS_PREFIX + "2";
- rawKeys.put(alias, TestData.generateKey());
+ rawKeys.put(alias, Pair.create(TestData.generateKey(), /*metadata=*/ null));
expectedResult.put(alias, rawKeys.get(alias));
- Map<String, SecretKey> filteredKeys =
+ Map<String, Pair<SecretKey, byte[]>> filteredKeys =
mHelper.keepOnlyWhitelistedInsecureKeys(rawKeys);
assertThat(filteredKeys.entrySet()).containsExactlyElementsIn(expectedResult.entrySet());
assertThat(rawKeys.entrySet()).containsAllIn(filteredKeys.entrySet());
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/WrappedKeyTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/WrappedKeyTest.java
index b5ee60e..9813ab7 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/WrappedKeyTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/WrappedKeyTest.java
@@ -24,6 +24,7 @@
import android.security.keystore.AndroidKeyStoreSecretKey;
import android.security.keystore.KeyGenParameterSpec;
import android.security.keystore.KeyProperties;
+import android.util.Pair;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
@@ -32,6 +33,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.nio.charset.StandardCharsets;
import java.security.KeyStore;
import java.util.HashMap;
import java.util.Map;
@@ -47,26 +49,49 @@
private static final String ANDROID_KEY_STORE_PROVIDER = "AndroidKeyStore";
private static final String KEY_ALGORITHM = "AES";
private static final String CIPHER_ALGORITHM = "AES/GCM/NoPadding";
- private static final String WRAPPING_KEY_ALIAS = "WrappedKeyTestWrappingKeyAlias";
+ private static final String WRAPPED_KEY_ALIAS = "WrappedKeyTestWrappingKeyAlias";
private static final int GENERATION_ID = 1;
private static final int GCM_TAG_LENGTH_BYTES = 16;
private static final int BITS_PER_BYTE = 8;
private static final int GCM_TAG_LENGTH_BITS = GCM_TAG_LENGTH_BYTES * BITS_PER_BYTE;
+ private static final byte[] NULL_METADATA = null;
+ private static final byte[] NON_NULL_METADATA = "keyMetadata".getBytes(StandardCharsets.UTF_8);
@After
public void tearDown() throws Exception {
KeyStore keyStore = KeyStore.getInstance(ANDROID_KEY_STORE_PROVIDER);
keyStore.load(/*param=*/ null);
- keyStore.deleteEntry(WRAPPING_KEY_ALIAS);
+ keyStore.deleteEntry(WRAPPED_KEY_ALIAS);
}
+ // TODO: Add tests for non-null metadata
+
@Test
- public void fromSecretKey_createsWrappedKeyThatCanBeUnwrapped() throws Exception {
+ public void fromSecretKey_createsWrappedKeyThatCanBeUnwrapped_nullMetadata() throws Exception {
PlatformEncryptionKey wrappingKey = new PlatformEncryptionKey(
GENERATION_ID, generateAndroidKeyStoreKey());
SecretKey rawKey = generateKey();
- WrappedKey wrappedKey = WrappedKey.fromSecretKey(wrappingKey, rawKey);
+ WrappedKey wrappedKey = WrappedKey.fromSecretKey(wrappingKey, rawKey, NULL_METADATA);
+
+ Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
+ cipher.init(
+ Cipher.UNWRAP_MODE,
+ wrappingKey.getKey(),
+ new GCMParameterSpec(GCM_TAG_LENGTH_BITS, wrappedKey.getNonce()));
+ SecretKey unwrappedKey = (SecretKey) cipher.unwrap(
+ wrappedKey.getKeyMaterial(), KEY_ALGORITHM, Cipher.SECRET_KEY);
+ assertEquals(rawKey, unwrappedKey);
+ }
+
+ @Test
+ public void fromSecretKey_createsWrappedKeyThatCanBeUnwrapped_nonNullMetadata()
+ throws Exception {
+ PlatformEncryptionKey wrappingKey = new PlatformEncryptionKey(
+ GENERATION_ID, generateAndroidKeyStoreKey());
+ SecretKey rawKey = generateKey();
+
+ WrappedKey wrappedKey = WrappedKey.fromSecretKey(wrappingKey, rawKey, NON_NULL_METADATA);
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
cipher.init(
@@ -84,27 +109,47 @@
GENERATION_ID, generateAndroidKeyStoreKey());
SecretKey rawKey = generateKey();
- WrappedKey wrappedKey = WrappedKey.fromSecretKey(wrappingKey, rawKey);
+ WrappedKey wrappedKey = WrappedKey.fromSecretKey(wrappingKey, rawKey, NULL_METADATA);
assertEquals(GENERATION_ID, wrappedKey.getPlatformKeyGenerationId());
}
@Test
- public void decryptWrappedKeys_decryptsWrappedKeys() throws Exception {
+ public void decryptWrappedKeys_decryptsWrappedKeys_nullMetadata() throws Exception {
String alias = "karlin";
AndroidKeyStoreSecretKey platformKey = generateAndroidKeyStoreKey();
SecretKey appKey = generateKey();
WrappedKey wrappedKey = WrappedKey.fromSecretKey(
- new PlatformEncryptionKey(GENERATION_ID, platformKey), appKey);
+ new PlatformEncryptionKey(GENERATION_ID, platformKey), appKey, NULL_METADATA);
HashMap<String, WrappedKey> keysByAlias = new HashMap<>();
keysByAlias.put(alias, wrappedKey);
- Map<String, SecretKey> unwrappedKeys = WrappedKey.unwrapKeys(
+ Map<String, Pair<SecretKey, byte[]>> unwrappedKeys = WrappedKey.unwrapKeys(
new PlatformDecryptionKey(GENERATION_ID, platformKey), keysByAlias);
assertEquals(1, unwrappedKeys.size());
assertTrue(unwrappedKeys.containsKey(alias));
- assertArrayEquals(appKey.getEncoded(), unwrappedKeys.get(alias).getEncoded());
+ assertArrayEquals(appKey.getEncoded(), unwrappedKeys.get(alias).first.getEncoded());
+ assertArrayEquals(null, unwrappedKeys.get(alias).second);
+ }
+
+ @Test
+ public void decryptWrappedKeys_decryptsWrappedKeys_nonNullMetadata() throws Exception {
+ String alias = "karlin";
+ AndroidKeyStoreSecretKey platformKey = generateAndroidKeyStoreKey();
+ SecretKey appKey = generateKey();
+ WrappedKey wrappedKey = WrappedKey.fromSecretKey(
+ new PlatformEncryptionKey(GENERATION_ID, platformKey), appKey, NON_NULL_METADATA);
+ HashMap<String, WrappedKey> keysByAlias = new HashMap<>();
+ keysByAlias.put(alias, wrappedKey);
+
+ Map<String, Pair<SecretKey, byte[]>> unwrappedKeys = WrappedKey.unwrapKeys(
+ new PlatformDecryptionKey(GENERATION_ID, platformKey), keysByAlias);
+
+ assertEquals(1, unwrappedKeys.size());
+ assertTrue(unwrappedKeys.containsKey(alias));
+ assertArrayEquals(appKey.getEncoded(), unwrappedKeys.get(alias).first.getEncoded());
+ assertArrayEquals(NON_NULL_METADATA, unwrappedKeys.get(alias).second);
}
@Test
@@ -113,11 +158,11 @@
AndroidKeyStoreSecretKey platformKey = generateAndroidKeyStoreKey();
SecretKey appKey = generateKey();
WrappedKey wrappedKey = WrappedKey.fromSecretKey(
- new PlatformEncryptionKey(GENERATION_ID, platformKey), appKey);
+ new PlatformEncryptionKey(GENERATION_ID, platformKey), appKey, NULL_METADATA);
HashMap<String, WrappedKey> keysByAlias = new HashMap<>();
keysByAlias.put(alias, wrappedKey);
- Map<String, SecretKey> unwrappedKeys = WrappedKey.unwrapKeys(
+ Map<String, Pair<SecretKey, byte[]>> unwrappedKeys = WrappedKey.unwrapKeys(
new PlatformDecryptionKey(GENERATION_ID, generateAndroidKeyStoreKey()),
keysByAlias);
@@ -128,7 +173,8 @@
public void decryptWrappedKeys_throwsIfPlatformKeyGenerationIdDoesNotMatch() throws Exception {
AndroidKeyStoreSecretKey platformKey = generateAndroidKeyStoreKey();
WrappedKey wrappedKey = WrappedKey.fromSecretKey(
- new PlatformEncryptionKey(GENERATION_ID, platformKey), generateKey());
+ new PlatformEncryptionKey(GENERATION_ID, platformKey), generateKey(),
+ /*metadata=*/ null);
HashMap<String, WrappedKey> keysByAlias = new HashMap<>();
keysByAlias.put("benji", wrappedKey);
@@ -156,19 +202,11 @@
KEY_ALGORITHM,
ANDROID_KEY_STORE_PROVIDER);
keyGenerator.init(new KeyGenParameterSpec.Builder(
- WRAPPING_KEY_ALIAS,
+ WRAPPED_KEY_ALIAS,
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.build());
return (AndroidKeyStoreSecretKey) keyGenerator.generateKey();
}
-
- private PlatformDecryptionKey generatePlatformDecryptionKey() throws Exception {
- return generatePlatformDecryptionKey(GENERATION_ID);
- }
-
- private PlatformDecryptionKey generatePlatformDecryptionKey(int generationId) throws Exception {
- return new PlatformDecryptionKey(generationId, generateAndroidKeyStoreKey());
- }
}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializerTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializerTest.java
index 880255d..9c03df8 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializerTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializerTest.java
@@ -55,12 +55,15 @@
private static final String TEST_KEY_1_ALIAS = "key1";
private static final byte[] TEST_KEY_1_BYTES = new byte[] { 66, 77, 88 };
+ private static final byte[] TEST_KEY_1_METADATA = new byte[] { 89, 87 };
private static final String TEST_KEY_2_ALIAS = "key2";
private static final byte[] TEST_KEY_2_BYTES = new byte[] { 99, 33, 11 };
+ private static final byte[] TEST_KEY_2_METADATA = new byte[] {};
private static final String TEST_KEY_3_ALIAS = "key3";
private static final byte[] TEST_KEY_3_BYTES = new byte[] { 2, 8, 100 };
+ private static final byte[] TEST_KEY_3_METADATA = new byte[] { 121 };
@Test
public void roundTrip_persistsCounterId() throws Exception {
@@ -144,6 +147,17 @@
}
@Test
+ public void roundTripKeys_0_persistsKeyMetadata_absent() throws Exception {
+ assertThat(roundTripKeys(/*withKeyMetadata=*/ false).get(0).getMetadata()).isEqualTo(null);
+ }
+
+ @Test
+ public void roundTripKeys_0_persistsKeyMetadata_present() throws Exception {
+ assertThat(roundTripKeys(/*withKeyMetadata=*/ true).get(0).getMetadata())
+ .isEqualTo(TEST_KEY_1_METADATA);
+ }
+
+ @Test
public void roundTripKeys_1_persistsAlias() throws Exception {
assertThat(roundTripKeys().get(1).getAlias()).isEqualTo(TEST_KEY_2_ALIAS);
}
@@ -154,6 +168,17 @@
}
@Test
+ public void roundTripKeys_1_persistsKeyMetadata_absent() throws Exception {
+ assertThat(roundTripKeys(/*withKeyMetadata=*/ false).get(1).getMetadata()).isEqualTo(null);
+ }
+
+ @Test
+ public void roundTripKeys_1_persistsKeyMetadata_present() throws Exception {
+ assertThat(roundTripKeys(/*withKeyMetadata=*/ true).get(1).getMetadata())
+ .isEqualTo(TEST_KEY_2_METADATA);
+ }
+
+ @Test
public void roundTripKeys_2_persistsAlias() throws Exception {
assertThat(roundTripKeys().get(2).getAlias()).isEqualTo(TEST_KEY_3_ALIAS);
}
@@ -164,28 +189,74 @@
}
@Test
- public void serialize_doesNotThrowForTestSnapshot() throws Exception {
+ public void roundTripKeys_2_persistsKeyMetadata_absent() throws Exception {
+ assertThat(roundTripKeys(/*withKeyMetadata=*/ false).get(2).getMetadata()).isEqualTo(null);
+ }
+
+ @Test
+ public void roundTripKeys_2_persistsKeyMetadata_present() throws Exception {
+ assertThat(roundTripKeys(/*withKeyMetadata=*/ true).get(2).getMetadata())
+ .isEqualTo(TEST_KEY_3_METADATA);
+ }
+
+ @Test
+ public void serialize_doesNotThrowForTestSnapshotWithoutKeyMetadata() throws Exception {
KeyChainSnapshotSerializer.serialize(
- createTestKeyChainSnapshot(), new ByteArrayOutputStream());
+ createTestKeyChainSnapshot(/*withKeyMetadata=*/ false),
+ new ByteArrayOutputStream());
+ }
+
+ @Test
+ public void serialize_doesNotThrowForTestSnapshotWithKeyMetadata() throws Exception {
+ KeyChainSnapshotSerializer.serialize(
+ createTestKeyChainSnapshotWithKeyMetadata(), new ByteArrayOutputStream());
}
private static List<WrappedApplicationKey> roundTripKeys() throws Exception {
return roundTrip().getWrappedApplicationKeys();
}
+ private static List<WrappedApplicationKey> roundTripKeys(boolean withKeyMetadata)
+ throws Exception {
+ return roundTrip(withKeyMetadata).getWrappedApplicationKeys();
+ }
+
private static KeyChainProtectionParams roundTripParams() throws Exception {
- return roundTrip().getKeyChainProtectionParams().get(0);
+ return roundTrip(/*withKeyMetadata=*/ false).getKeyChainProtectionParams().get(0);
}
public static KeyChainSnapshot roundTrip() throws Exception {
- KeyChainSnapshot snapshot = createTestKeyChainSnapshot();
+ return roundTrip(/*withKeyMetadata=*/ false);
+ }
+
+ public static KeyChainSnapshot roundTrip(boolean withKeyMetadata) throws Exception {
+ KeyChainSnapshot snapshot = createTestKeyChainSnapshot(withKeyMetadata);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
KeyChainSnapshotSerializer.serialize(snapshot, byteArrayOutputStream);
return KeyChainSnapshotDeserializer.deserialize(
new ByteArrayInputStream(byteArrayOutputStream.toByteArray()));
}
- private static KeyChainSnapshot createTestKeyChainSnapshot() throws Exception {
+ private static KeyChainSnapshot createTestKeyChainSnapshot(boolean withKeyMetadata)
+ throws Exception {
+ KeyChainSnapshot.Builder builder = new KeyChainSnapshot.Builder()
+ .setCounterId(COUNTER_ID)
+ .setSnapshotVersion(SNAPSHOT_VERSION)
+ .setServerParams(SERVER_PARAMS)
+ .setMaxAttempts(MAX_ATTEMPTS)
+ .setEncryptedRecoveryKeyBlob(KEY_BLOB)
+ .setKeyChainProtectionParams(createKeyChainProtectionParamsList())
+ .setTrustedHardwareCertPath(CERT_PATH);
+ if (withKeyMetadata) {
+ builder.setWrappedApplicationKeys(createKeysWithMetadata());
+ } else {
+ builder.setWrappedApplicationKeys(createKeysWithoutMetadata());
+ }
+ return builder.build();
+ }
+
+ private static KeyChainSnapshot createTestKeyChainSnapshotWithKeyMetadata()
+ throws Exception {
return new KeyChainSnapshot.Builder()
.setCounterId(COUNTER_ID)
.setSnapshotVersion(SNAPSHOT_VERSION)
@@ -193,16 +264,24 @@
.setMaxAttempts(MAX_ATTEMPTS)
.setEncryptedRecoveryKeyBlob(KEY_BLOB)
.setKeyChainProtectionParams(createKeyChainProtectionParamsList())
- .setWrappedApplicationKeys(createKeys())
+ .setWrappedApplicationKeys(createKeysWithMetadata())
.setTrustedHardwareCertPath(CERT_PATH)
.build();
}
- private static List<WrappedApplicationKey> createKeys() {
+ private static List<WrappedApplicationKey> createKeysWithoutMetadata() {
ArrayList<WrappedApplicationKey> keyList = new ArrayList<>();
- keyList.add(createKey(TEST_KEY_1_ALIAS, TEST_KEY_1_BYTES));
- keyList.add(createKey(TEST_KEY_2_ALIAS, TEST_KEY_2_BYTES));
- keyList.add(createKey(TEST_KEY_3_ALIAS, TEST_KEY_3_BYTES));
+ keyList.add(createKey(TEST_KEY_1_ALIAS, TEST_KEY_1_BYTES, /*metadata=*/ null));
+ keyList.add(createKey(TEST_KEY_2_ALIAS, TEST_KEY_2_BYTES, /*metadata=*/ null));
+ keyList.add(createKey(TEST_KEY_3_ALIAS, TEST_KEY_3_BYTES, /*metadata=*/ null));
+ return keyList;
+ }
+
+ private static List<WrappedApplicationKey> createKeysWithMetadata() {
+ ArrayList<WrappedApplicationKey> keyList = new ArrayList<>();
+ keyList.add(createKey(TEST_KEY_1_ALIAS, TEST_KEY_1_BYTES, TEST_KEY_1_METADATA));
+ keyList.add(createKey(TEST_KEY_2_ALIAS, TEST_KEY_2_BYTES, TEST_KEY_2_METADATA));
+ keyList.add(createKey(TEST_KEY_3_ALIAS, TEST_KEY_3_BYTES, TEST_KEY_3_METADATA));
return keyList;
}
@@ -221,10 +300,13 @@
return keyChainProtectionParamsList;
}
- private static WrappedApplicationKey createKey(String alias, byte[] bytes) {
- return new WrappedApplicationKey.Builder()
+ private static WrappedApplicationKey createKey(String alias, byte[] bytes, byte[] metadata) {
+ WrappedApplicationKey.Builder builder = new WrappedApplicationKey.Builder()
.setAlias(alias)
- .setEncryptedKeyMaterial(bytes)
- .build();
+ .setEncryptedKeyMaterial(bytes);
+ if (metadata != null) {
+ builder.setMetadata(metadata);
+ }
+ return builder.build();
}
}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java
index 7130b42..35215c3 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java
@@ -60,6 +60,7 @@
private static final String TEST_ROOT_ALIAS = "root_cert_alias";
private static final byte[] TEST_CERT_PATH = "test-cert-path".getBytes(UTF_8);
private static final long TEST_CERT_SERIAL = 1000L;
+ private static final byte[] TEST_KEY_METADATA = "test-key-metadata".getBytes(UTF_8);
private static final String SQL_CREATE_V2_TABLE_KEYS =
"CREATE TABLE " + KeysEntry.TABLE_NAME + "( "
@@ -120,14 +121,14 @@
@Test
public void onCreate() throws Exception {
mDatabaseHelper.onCreate(mDatabase);
- checkAllColumns();
+ checkAllColumns_latest();
}
@Test
public void onUpgrade_beforeV2() throws Exception {
mDatabaseHelper.onUpgrade(mDatabase, /*oldVersion=*/ 1,
RecoverableKeyStoreDbHelper.DATABASE_VERSION);
- checkAllColumns();
+ checkAllColumns_latest();
}
@Test
@@ -135,11 +136,11 @@
createV2Tables();
mDatabaseHelper.onUpgrade(mDatabase, /*oldVersion=*/ 2,
RecoverableKeyStoreDbHelper.DATABASE_VERSION);
- checkAllColumns();
+ checkAllColumns_latest();
}
@Test
- public void onUpgrade_v2_to_v3_to_v4() throws Exception {
+ public void onUpgrade_v2_to_v3_to_v4_to_latest() throws Exception {
createV2Tables();
assertThat(isRootOfTrustTableAvailable()).isFalse(); // V2 doesn't have the table;
@@ -148,9 +149,12 @@
assertThat(isRootOfTrustTableAvailable()).isFalse(); // V3 doesn't have the table;
- mDatabaseHelper.onUpgrade(mDatabase, /*oldVersion=*/ 3,
+ mDatabaseHelper.onUpgrade(mDatabase, /*oldVersion=*/ 3, /*newVersion=*/ 4);
+ checkAllColumns_v4();
+
+ mDatabaseHelper.onUpgrade(mDatabase, /*oldVersion=*/ 4,
RecoverableKeyStoreDbHelper.DATABASE_VERSION);
- checkAllColumns();
+ checkAllColumns_latest();
}
private boolean isRootOfTrustTableAvailable() {
@@ -160,11 +164,11 @@
values.put(RootOfTrustEntry.COLUMN_NAME_ROOT_ALIAS, TEST_ROOT_ALIAS);
values.put(RootOfTrustEntry.COLUMN_NAME_CERT_PATH, TEST_CERT_PATH);
values.put(RootOfTrustEntry.COLUMN_NAME_CERT_SERIAL, TEST_CERT_SERIAL);
- return mDatabase.insert(RootOfTrustEntry.TABLE_NAME, /*nullColumnHack=*/ null, values)
+ return mDatabase.replace(RootOfTrustEntry.TABLE_NAME, /*nullColumnHack=*/ null, values)
> -1;
}
- private void checkAllColumns() throws Exception {
+ private void checkAllColumns_v4() throws Exception {
// Check the table containing encrypted application keys
ContentValues values = new ContentValues();
values.put(KeysEntry.COLUMN_NAME_USER_ID, TEST_USER_ID);
@@ -175,7 +179,7 @@
values.put(KeysEntry.COLUMN_NAME_GENERATION_ID, TEST_GENERATION_ID);
values.put(KeysEntry.COLUMN_NAME_LAST_SYNCED_AT, TEST_LAST_SYNCED_AT);
values.put(KeysEntry.COLUMN_NAME_RECOVERY_STATUS, TEST_RECOVERY_STATUS);
- assertThat(mDatabase.insert(KeysEntry.TABLE_NAME, /*nullColumnHack=*/ null, values))
+ assertThat(mDatabase.replace(KeysEntry.TABLE_NAME, /*nullColumnHack=*/ null, values))
.isGreaterThan(-1L);
// Check the table about user metadata
@@ -183,7 +187,8 @@
values.put(UserMetadataEntry.COLUMN_NAME_USER_ID, TEST_USER_ID);
values.put(UserMetadataEntry.COLUMN_NAME_PLATFORM_KEY_GENERATION_ID,
TEST_PLATFORM_KEY_GENERATION_ID);
- assertThat(mDatabase.insert(UserMetadataEntry.TABLE_NAME, /*nullColumnHack=*/ null, values))
+ assertThat(
+ mDatabase.replace(UserMetadataEntry.TABLE_NAME, /*nullColumnHack=*/ null, values))
.isGreaterThan(-1L);
// Check the table about recovery service metadata
@@ -202,11 +207,32 @@
values.put(RecoveryServiceMetadataEntry.COLUMN_NAME_CERT_PATH, TEST_CERT_PATH);
values.put(RecoveryServiceMetadataEntry.COLUMN_NAME_CERT_SERIAL, TEST_CERT_SERIAL);
assertThat(
- mDatabase.insert(RecoveryServiceMetadataEntry.TABLE_NAME, /*nullColumnHack=*/ null,
+ mDatabase.replace(RecoveryServiceMetadataEntry.TABLE_NAME, /*nullColumnHack=*/ null,
values))
.isGreaterThan(-1L);
// Check the table about recovery service and root of trust data introduced in V4
assertThat(isRootOfTrustTableAvailable()).isTrue();
}
+
+ private void checkAllColumns_latest() throws Exception {
+ // Check all columns of the previous version first.
+ checkAllColumns_v4();
+
+ ContentValues values = new ContentValues();
+ values.put(KeysEntry.COLUMN_NAME_USER_ID, TEST_USER_ID);
+ values.put(KeysEntry.COLUMN_NAME_UID, TEST_UID);
+ values.put(KeysEntry.COLUMN_NAME_ALIAS, TEST_ALIAS);
+ values.put(KeysEntry.COLUMN_NAME_NONCE, TEST_NONCE);
+ values.put(KeysEntry.COLUMN_NAME_WRAPPED_KEY, TEST_WRAPPED_KEY);
+ values.put(KeysEntry.COLUMN_NAME_GENERATION_ID, TEST_GENERATION_ID);
+ values.put(KeysEntry.COLUMN_NAME_LAST_SYNCED_AT, TEST_LAST_SYNCED_AT);
+ values.put(KeysEntry.COLUMN_NAME_RECOVERY_STATUS, TEST_RECOVERY_STATUS);
+
+ // This column is added when upgrading from v4 to v5
+ values.put(KeysEntry.COLUMN_NAME_KEY_METADATA, TEST_KEY_METADATA);
+
+ assertThat(mDatabase.replace(KeysEntry.TABLE_NAME, /*nullColumnHack=*/ null, values))
+ .isGreaterThan(-1L);
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java
index 6a26f8c..7de9ffc 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java
@@ -80,25 +80,33 @@
public void insertKey_replacesOldKey() {
int userId = 12;
int uid = 10009;
- String alias = "test";
- WrappedKey oldWrappedKey = new WrappedKey(
- getUtf8Bytes("nonce1"),
- getUtf8Bytes("keymaterial1"),
- /*platformKeyGenerationId=*/ 1);
- mRecoverableKeyStoreDb.insertKey(
- userId, uid, alias, oldWrappedKey);
- byte[] nonce = getUtf8Bytes("nonce2");
- byte[] keyMaterial = getUtf8Bytes("keymaterial2");
- WrappedKey newWrappedKey = new WrappedKey(
- nonce, keyMaterial, /*platformKeyGenerationId=*/2);
+ String alias = "test-alias";
- mRecoverableKeyStoreDb.insertKey(
- userId, uid, alias, newWrappedKey);
+ byte[] nonce = getUtf8Bytes("nonce1");
+ byte[] keyMaterial = getUtf8Bytes("keymaterial1");
+ byte[] keyMetadata = null;
+ int generationId = 1;
+ WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, keyMetadata, generationId);
+ mRecoverableKeyStoreDb.insertKey(userId, uid, alias, wrappedKey);
WrappedKey retrievedKey = mRecoverableKeyStoreDb.getKey(uid, alias);
assertArrayEquals(nonce, retrievedKey.getNonce());
assertArrayEquals(keyMaterial, retrievedKey.getKeyMaterial());
- assertEquals(2, retrievedKey.getPlatformKeyGenerationId());
+ assertArrayEquals(keyMetadata, retrievedKey.getKeyMetadata());
+ assertEquals(generationId, retrievedKey.getPlatformKeyGenerationId());
+
+ nonce = getUtf8Bytes("nonce2");
+ keyMaterial = getUtf8Bytes("keymaterial2");
+ keyMetadata = getUtf8Bytes("keymetadata2");
+ generationId = 2;
+ wrappedKey = new WrappedKey(nonce, keyMaterial, keyMetadata, generationId);
+ mRecoverableKeyStoreDb.insertKey(userId, uid, alias, wrappedKey);
+
+ retrievedKey = mRecoverableKeyStoreDb.getKey(uid, alias);
+ assertArrayEquals(nonce, retrievedKey.getNonce());
+ assertArrayEquals(keyMaterial, retrievedKey.getKeyMaterial());
+ assertArrayEquals(keyMetadata, retrievedKey.getKeyMetadata());
+ assertEquals(generationId, retrievedKey.getPlatformKeyGenerationId());
}
@Test
@@ -108,10 +116,12 @@
WrappedKey key1 = new WrappedKey(
getUtf8Bytes("nonce1"),
getUtf8Bytes("key1"),
+ /*metadata=*/ null,
/*platformKeyGenerationId=*/ 1);
WrappedKey key2 = new WrappedKey(
getUtf8Bytes("nonce2"),
getUtf8Bytes("key2"),
+ /*metadata=*/ null,
/*platformKeyGenerationId=*/ 1);
mRecoverableKeyStoreDb.insertKey(userId, /*uid=*/ 1, alias, key1);
@@ -133,6 +143,7 @@
WrappedKey key = new WrappedKey(
getUtf8Bytes("nonce1"),
getUtf8Bytes("key1"),
+ /*metadata=*/ null,
/*platformKeyGenerationId=*/ 1);
mRecoverableKeyStoreDb.insertKey(userId, uid, alias, key);
@@ -158,13 +169,16 @@
String alias = "test";
byte[] nonce = getUtf8Bytes("nonce");
byte[] keyMaterial = getUtf8Bytes("keymaterial");
- WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, generationId, 120);
+ byte[] keyMetadata = getUtf8Bytes("keymetametametadata");
+
+ WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, keyMetadata, generationId, 120);
mRecoverableKeyStoreDb.insertKey(userId, uid, alias, wrappedKey);
WrappedKey retrievedKey = mRecoverableKeyStoreDb.getKey(uid, alias);
assertArrayEquals(nonce, retrievedKey.getNonce());
assertArrayEquals(keyMaterial, retrievedKey.getKeyMaterial());
+ assertArrayEquals(keyMetadata, retrievedKey.getKeyMetadata());
assertEquals(generationId, retrievedKey.getPlatformKeyGenerationId());
assertEquals(status,retrievedKey.getRecoveryStatus());
}
@@ -174,20 +188,37 @@
int userId = 12;
int uid = 1009;
int generationId = 6;
- String alias = "test";
- byte[] nonce = getUtf8Bytes("nonce");
- byte[] keyMaterial = getUtf8Bytes("keymaterial");
- WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, generationId);
- mRecoverableKeyStoreDb.insertKey(userId, uid, alias, wrappedKey);
+
+ String alias1 = "alias1";
+ byte[] nonce1 = getUtf8Bytes("nonce1");
+ byte[] keyMaterial1 = getUtf8Bytes("keymaterial1");
+ byte[] keyMetadata1 = getUtf8Bytes("keyallmetadata1");
+ WrappedKey wrappedKey1 = new WrappedKey(nonce1, keyMaterial1, keyMetadata1, generationId);
+ mRecoverableKeyStoreDb.insertKey(userId, uid, alias1, wrappedKey1);
+
+ String alias2 = "alias2";
+ byte[] nonce2 = getUtf8Bytes("nonce2");
+ byte[] keyMaterial2 = getUtf8Bytes("keymaterial2");
+ byte[] keyMetadata2 = null;
+ WrappedKey wrappedKey2 = new WrappedKey(nonce2, keyMaterial2, keyMetadata2, generationId);
+ mRecoverableKeyStoreDb.insertKey(userId, uid, alias2, wrappedKey2);
Map<String, WrappedKey> keys = mRecoverableKeyStoreDb.getAllKeys(userId, uid, generationId);
+ assertEquals(2, keys.size());
- assertEquals(1, keys.size());
- assertTrue(keys.containsKey(alias));
- WrappedKey retrievedKey = keys.get(alias);
- assertArrayEquals(nonce, retrievedKey.getNonce());
- assertArrayEquals(keyMaterial, retrievedKey.getKeyMaterial());
- assertEquals(generationId, retrievedKey.getPlatformKeyGenerationId());
+ assertTrue(keys.containsKey(alias1));
+ WrappedKey retrievedKey1 = keys.get(alias1);
+ assertArrayEquals(nonce1, retrievedKey1.getNonce());
+ assertArrayEquals(keyMaterial1, retrievedKey1.getKeyMaterial());
+ assertArrayEquals(keyMetadata1, retrievedKey1.getKeyMetadata());
+ assertEquals(generationId, retrievedKey1.getPlatformKeyGenerationId());
+
+ assertTrue(keys.containsKey(alias2));
+ WrappedKey retrievedKey2 = keys.get(alias2);
+ assertArrayEquals(nonce2, retrievedKey2.getNonce());
+ assertArrayEquals(keyMaterial2, retrievedKey2.getKeyMaterial());
+ assertArrayEquals(keyMetadata2, retrievedKey2.getKeyMetadata());
+ assertEquals(generationId, retrievedKey2.getPlatformKeyGenerationId());
}
@Test
@@ -197,6 +228,7 @@
WrappedKey wrappedKey = new WrappedKey(
getUtf8Bytes("nonce"),
getUtf8Bytes("keymaterial"),
+ /*metadata=*/ null,
/*platformKeyGenerationId=*/ 5);
mRecoverableKeyStoreDb.insertKey(
userId, uid, /*alias=*/ "test", wrappedKey);
@@ -212,7 +244,8 @@
int generationId = 12;
int uid = 10009;
WrappedKey wrappedKey = new WrappedKey(
- getUtf8Bytes("nonce"), getUtf8Bytes("keymaterial"), generationId);
+ getUtf8Bytes("nonce"), getUtf8Bytes("keymaterial"), /*metadata=*/ null,
+ generationId);
mRecoverableKeyStoreDb.insertKey(
/*userId=*/ 1, uid, /*alias=*/ "test", wrappedKey);
@@ -255,7 +288,10 @@
String alias = "test";
byte[] nonce = getUtf8Bytes("nonce");
byte[] keyMaterial = getUtf8Bytes("keymaterial");
- WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, generationId, status);
+ byte[] keyMetadata = null;
+
+ WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, keyMetadata, generationId,
+ status);
mRecoverableKeyStoreDb.insertKey(userId, uid, alias, wrappedKey);
WrappedKey retrievedKey = mRecoverableKeyStoreDb.getKey(uid, alias);
@@ -279,12 +315,16 @@
String alias3 = "test3";
byte[] nonce = getUtf8Bytes("nonce");
byte[] keyMaterial = getUtf8Bytes("keymaterial");
+ byte[] keyMetadata = null;
- WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, generationId, status);
+ WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, keyMetadata, generationId,
+ status);
mRecoverableKeyStoreDb.insertKey(userId, uid, alias2, wrappedKey);
- WrappedKey wrappedKey2 = new WrappedKey(nonce, keyMaterial, generationId, status);
- mRecoverableKeyStoreDb.insertKey(userId, uid, alias3, wrappedKey);
- WrappedKey wrappedKeyWithDefaultStatus = new WrappedKey(nonce, keyMaterial, generationId);
+ WrappedKey wrappedKey2 = new WrappedKey(nonce, keyMaterial, keyMetadata, generationId,
+ status);
+ mRecoverableKeyStoreDb.insertKey(userId, uid, alias3, wrappedKey2);
+ WrappedKey wrappedKeyWithDefaultStatus = new WrappedKey(nonce, keyMaterial, keyMetadata,
+ generationId);
mRecoverableKeyStoreDb.insertKey(userId, uid, alias, wrappedKeyWithDefaultStatus);
Map<String, Integer> statuses = mRecoverableKeyStoreDb.getStatusForAllKeys(uid);
@@ -333,7 +373,10 @@
String alias = "test";
byte[] nonce = getUtf8Bytes("nonce");
byte[] keyMaterial = getUtf8Bytes("keymaterial");
- WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, generationId, status);
+ byte[] keyMetadata = null;
+
+ WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, keyMetadata, generationId,
+ status);
mRecoverableKeyStoreDb.insertKey(userId, uid, alias, wrappedKey);
WrappedKey retrievedKey = mRecoverableKeyStoreDb.getKey(uid, alias);
@@ -357,7 +400,10 @@
String alias = "test";
byte[] nonce = getUtf8Bytes("nonce");
byte[] keyMaterial = getUtf8Bytes("keymaterial");
- WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, generationId, status);
+ byte[] keyMetadata = null;
+
+ WrappedKey wrappedKey = new WrappedKey(nonce, keyMaterial, keyMetadata, generationId,
+ status);
mRecoverableKeyStoreDb.insertKey(userId, uid, alias, wrappedKey);
WrappedKey retrievedKey = mRecoverableKeyStoreDb.getKey(uid, alias);
diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
index 1f5c64e..bc1f798 100644
--- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
@@ -42,6 +42,7 @@
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.IUidObserver;
+import android.app.Person;
import android.app.usage.UsageStatsManagerInternal;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
@@ -1588,6 +1589,14 @@
}
/**
+ * Make a Person.
+ */
+ protected Person makePerson(CharSequence name, String key, String uri) {
+ final Person.Builder builder = new Person.Builder();
+ return builder.setName(name).setKey(key).setUri(uri).build();
+ }
+
+ /**
* Make an component name, with the client context.
*/
@NonNull
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java b/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java
index ce59e6e..85909d5 100644
--- a/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java
@@ -276,6 +276,7 @@
assertEquals(a.mRestrictedAccountType, b.mRestrictedAccountType);
assertEquals(a.mRequiredAccountType, b.mRequiredAccountType);
assertEquals(a.mOverlayTarget, b.mOverlayTarget);
+ assertEquals(a.mOverlayTargetName, b.mOverlayTargetName);
assertEquals(a.mOverlayCategory, b.mOverlayCategory);
assertEquals(a.mOverlayPriority, b.mOverlayPriority);
assertEquals(a.mOverlayIsStatic, b.mOverlayIsStatic);
@@ -545,6 +546,7 @@
pkg.mOverlayCategory = "foo24";
pkg.mOverlayIsStatic = true;
+ pkg.mOverlayTargetName = "foo26";
pkg.baseHardwareAccelerated = true;
pkg.coreApp = true;
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
index 9b59f91..8d0365b 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
@@ -248,6 +248,8 @@
.setIntent(makeIntent("action", ShortcutActivity.class, "key", "val"))
.setCategories(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setRank(123)
+ .setPerson(makePerson("person", "personKey", "personUri"))
+ .setLongLived()
.setExtras(pb)
.build();
si.addFlags(ShortcutInfo.FLAG_PINNED);
@@ -267,9 +269,12 @@
assertEquals("action", si.getIntent().getAction());
assertEquals("val", si.getIntent().getStringExtra("key"));
assertEquals(123, si.getRank());
+ assertEquals("person", si.getPersons()[0].getName());
+ assertEquals("personKey", si.getPersons()[0].getKey());
+ assertEquals("personUri", si.getPersons()[0].getUri());
assertEquals(1, si.getExtras().getInt("k"));
- assertEquals(ShortcutInfo.FLAG_PINNED, si.getFlags());
+ assertEquals(ShortcutInfo.FLAG_PINNED | ShortcutInfo.FLAG_LONG_LIVED, si.getFlags());
assertEquals("abc", si.getBitmapPath());
assertEquals(456, si.getIconResourceId());
@@ -345,6 +350,8 @@
.setCategories(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setIntent(makeIntent("action", ShortcutActivity.class, "key", "val"))
.setRank(123)
+ .setPerson(makePerson("person", "personKey", "personUri"))
+ .setLongLived()
.setExtras(pb)
.build();
sorig.addFlags(ShortcutInfo.FLAG_PINNED);
@@ -368,9 +375,12 @@
assertEquals("action", si.getIntent().getAction());
assertEquals("val", si.getIntent().getStringExtra("key"));
assertEquals(123, si.getRank());
+ assertEquals("person", si.getPersons()[0].getName());
+ assertEquals("personKey", si.getPersons()[0].getKey());
+ assertEquals("personUri", si.getPersons()[0].getUri());
assertEquals(1, si.getExtras().getInt("k"));
- assertEquals(ShortcutInfo.FLAG_PINNED, si.getFlags());
+ assertEquals(ShortcutInfo.FLAG_PINNED | ShortcutInfo.FLAG_LONG_LIVED, si.getFlags());
assertEquals("abc", si.getBitmapPath());
assertEquals(456, si.getIconResourceId());
assertEquals("string/r456", si.getIconResName());
@@ -388,9 +398,12 @@
assertEquals("action", si.getIntent().getAction());
assertEquals("val", si.getIntent().getStringExtra("key"));
assertEquals(123, si.getRank());
+ assertEquals("person", si.getPersons()[0].getName());
+ assertEquals("personKey", si.getPersons()[0].getKey());
+ assertEquals("personUri", si.getPersons()[0].getUri());
assertEquals(1, si.getExtras().getInt("k"));
- assertEquals(ShortcutInfo.FLAG_PINNED, si.getFlags());
+ assertEquals(ShortcutInfo.FLAG_PINNED | ShortcutInfo.FLAG_LONG_LIVED, si.getFlags());
assertEquals(null, si.getBitmapPath());
assertEquals(456, si.getIconResourceId());
@@ -408,9 +421,12 @@
assertEquals(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals(null, si.getIntent());
assertEquals(123, si.getRank());
+ assertEquals("person", si.getPersons()[0].getName());
+ assertEquals("personKey", si.getPersons()[0].getKey());
+ assertEquals("personUri", si.getPersons()[0].getUri());
assertEquals(1, si.getExtras().getInt("k"));
- assertEquals(ShortcutInfo.FLAG_PINNED, si.getFlags());
+ assertEquals(ShortcutInfo.FLAG_PINNED | ShortcutInfo.FLAG_LONG_LIVED, si.getFlags());
assertEquals(null, si.getBitmapPath());
assertEquals(456, si.getIconResourceId());
@@ -428,9 +444,11 @@
assertEquals(null, si.getCategories());
assertEquals(null, si.getIntent());
assertEquals(0, si.getRank());
+ assertEquals(null, si.getPersons());
assertEquals(null, si.getExtras());
- assertEquals(ShortcutInfo.FLAG_PINNED | ShortcutInfo.FLAG_KEY_FIELDS_ONLY, si.getFlags());
+ assertEquals(ShortcutInfo.FLAG_PINNED | ShortcutInfo.FLAG_KEY_FIELDS_ONLY
+ | ShortcutInfo.FLAG_LONG_LIVED, si.getFlags());
assertEquals(null, si.getBitmapPath());
assertEquals(456, si.getIconResourceId());
@@ -692,6 +710,12 @@
si = sorig.clone(/* flags=*/ 0);
si.copyNonNullFieldsFrom(new ShortcutInfo.Builder(getTestContext()).setId("id")
+ .setPerson(makePerson("person", "", "")).build());
+ assertEquals("text", si.getText());
+ assertEquals("person", si.getPersons()[0].getName());
+
+ si = sorig.clone(/* flags=*/ 0);
+ si.copyNonNullFieldsFrom(new ShortcutInfo.Builder(getTestContext()).setId("id")
.setIntent(makeIntent("action2", ShortcutActivity.class)).build());
assertEquals("text", si.getText());
assertEquals("action2", si.getIntent().getAction());
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
index 823b7a5..3ebc6ad 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -544,6 +544,18 @@
switchUser(-1, UserHandle.of(startUser), false);
}
+ public void testSwitchUserByHandle_ThrowsException() {
+ synchronized (mUserSwitchLock) {
+ try {
+ ActivityManager am = getContext().getSystemService(ActivityManager.class);
+ am.switchUser(null);
+ fail("Expected IllegalArgumentException on passing in a null UserHandle.");
+ } catch (IllegalArgumentException expected) {
+ // Do nothing - exception is expected.
+ }
+ }
+ }
+
@MediumTest
public void testConcurrentUserCreate() throws Exception {
int userCount = mUserManager.getUserCount();
diff --git a/services/tests/servicestests/src/com/android/server/pm/dex/DexLoggerTests.java b/services/tests/servicestests/src/com/android/server/pm/dex/DexLoggerTests.java
index 3b6b48b..f817e8e 100644
--- a/services/tests/servicestests/src/com/android/server/pm/dex/DexLoggerTests.java
+++ b/services/tests/servicestests/src/com/android/server/pm/dex/DexLoggerTests.java
@@ -77,7 +77,6 @@
@Mock IPackageManager mPM;
@Mock Installer mInstaller;
- private final Object mInstallLock = new Object();
private PackageDynamicCodeLoading mPackageDynamicCodeLoading;
private DexLogger mDexLogger;
@@ -103,7 +102,7 @@
};
// For test purposes capture log messages as well as sending to the event log.
- mDexLogger = new DexLogger(mPM, mInstaller, mInstallLock, mPackageDynamicCodeLoading) {
+ mDexLogger = new DexLogger(mPM, mInstaller, mPackageDynamicCodeLoading) {
@Override
void writeDclEvent(int uid, String message) {
super.writeDclEvent(uid, message);
diff --git a/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java b/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java
index 41d5691..8171469 100644
--- a/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java
+++ b/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java
@@ -61,6 +61,7 @@
import android.view.Display;
import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.FlakyTest;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
@@ -416,6 +417,7 @@
}
@Test
+ @FlakyTest(bugId = 119774928)
public void testEnabledState() throws Exception {
TestParoleListener paroleListener = new TestParoleListener();
mController.addListener(paroleListener);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index 83c1c76..94b21af 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -3511,9 +3511,9 @@
}
@Test
- public void testAppOverlay() throws Exception {
- mBinderService.setAppOverlaysAllowed(PKG, mUid, false);
- assertFalse(mBinderService.areAppOverlaysAllowedForPackage(PKG, mUid));
+ public void testBubble() throws Exception {
+ mBinderService.setBubblesAllowed(PKG, mUid, false);
+ assertFalse(mBinderService.areBubblesAllowedForPackage(PKG, mUid));
}
@Test
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
index 0fcfea7..24a1f8c 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -809,7 +809,7 @@
channel.setBypassDnd(true);
channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
channel.setShowBadge(true);
- channel.setAllowAppOverlay(false);
+ channel.setAllowBubbles(false);
int lockMask = 0;
for (int i = 0; i < NotificationChannel.LOCKABLE_FIELDS.length; i++) {
lockMask |= NotificationChannel.LOCKABLE_FIELDS[i];
@@ -826,7 +826,7 @@
assertFalse(savedChannel.canBypassDnd());
assertFalse(Notification.VISIBILITY_SECRET == savedChannel.getLockscreenVisibility());
assertEquals(channel.canShowBadge(), savedChannel.canShowBadge());
- assertEquals(channel.canOverlayApps(), savedChannel.canOverlayApps());
+ assertEquals(channel.canBubble(), savedChannel.canBubble());
verify(mHandler, never()).requestSort();
}
@@ -840,7 +840,7 @@
channel.setBypassDnd(true);
channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
channel.setShowBadge(true);
- channel.setAllowAppOverlay(false);
+ channel.setAllowBubbles(false);
int lockMask = 0;
for (int i = 0; i < NotificationChannel.LOCKABLE_FIELDS.length; i++) {
lockMask |= NotificationChannel.LOCKABLE_FIELDS[i];
@@ -857,7 +857,7 @@
assertFalse(savedChannel.canBypassDnd());
assertFalse(Notification.VISIBILITY_SECRET == savedChannel.getLockscreenVisibility());
assertEquals(channel.canShowBadge(), savedChannel.canShowBadge());
- assertEquals(channel.canOverlayApps(), savedChannel.canOverlayApps());
+ assertEquals(channel.canBubble(), savedChannel.canBubble());
}
@Test
@@ -969,16 +969,16 @@
}
@Test
- public void testLockFields_appOverlay() {
+ public void testLockFields_allowBubble() {
mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, getChannel(), true, false);
assertEquals(0,
mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, getChannel().getId(), false)
.getUserLockedFields());
final NotificationChannel update = getChannel();
- update.setAllowAppOverlay(false);
+ update.setAllowBubbles(false);
mHelper.updateNotificationChannel(PKG_N_MR1, UID_N_MR1, update, true);
- assertEquals(NotificationChannel.USER_LOCKED_ALLOW_APP_OVERLAY,
+ assertEquals(NotificationChannel.USER_LOCKED_ALLOW_BUBBLE,
mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, update.getId(), false)
.getUserLockedFields());
}
@@ -2161,30 +2161,30 @@
}
@Test
- public void testAllowAppOverlay_defaults() throws Exception {
- assertTrue(mHelper.areAppOverlaysAllowed(PKG_O, UID_O));
+ public void testAllowBubbles_defaults() throws Exception {
+ assertTrue(mHelper.areBubblessAllowed(PKG_O, UID_O));
ByteArrayOutputStream baos = writeXmlAndPurge(PKG_O, UID_O, false);
mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper);
loadStreamXml(baos, false);
- assertTrue(mHelper.areAppOverlaysAllowed(PKG_O, UID_O));
+ assertTrue(mHelper.areBubblessAllowed(PKG_O, UID_O));
assertEquals(0, mHelper.getAppLockedFields(PKG_O, UID_O));
}
@Test
- public void testAllowAppOverlay_xml() throws Exception {
- mHelper.setAppOverlaysAllowed(PKG_O, UID_O, false);
- assertFalse(mHelper.areAppOverlaysAllowed(PKG_O, UID_O));
- assertEquals(PreferencesHelper.LockableAppFields.USER_LOCKED_APP_OVERLAY,
+ public void testAllowBubbles_xml() throws Exception {
+ mHelper.setBubblesAllowed(PKG_O, UID_O, false);
+ assertFalse(mHelper.areBubblessAllowed(PKG_O, UID_O));
+ assertEquals(PreferencesHelper.LockableAppFields.USER_LOCKED_BUBBLE,
mHelper.getAppLockedFields(PKG_O, UID_O));
ByteArrayOutputStream baos = writeXmlAndPurge(PKG_O, UID_O, false);
mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper);
loadStreamXml(baos, false);
- assertFalse(mHelper.areAppOverlaysAllowed(PKG_O, UID_O));
- assertEquals(PreferencesHelper.LockableAppFields.USER_LOCKED_APP_OVERLAY,
+ assertFalse(mHelper.areBubblessAllowed(PKG_O, UID_O));
+ assertEquals(PreferencesHelper.LockableAppFields.USER_LOCKED_BUBBLE,
mHelper.getAppLockedFields(PKG_O, UID_O));
}
@@ -2290,14 +2290,14 @@
mHelper.lockChannelsForOEM(new String[] {PKG_O});
NotificationChannel update = new NotificationChannel("a", "a", IMPORTANCE_NONE);
- update.setAllowAppOverlay(false);
+ update.setAllowBubbles(false);
mHelper.updateNotificationChannel(PKG_O, UID_O, update, true);
assertEquals(IMPORTANCE_HIGH,
mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).getImportance());
assertEquals(false,
- mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).canOverlayApps());
+ mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).canBubble());
mHelper.updateNotificationChannel(PKG_O, UID_O, update, true);
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java
index 5bf3d2d..56f4a85 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java
@@ -36,6 +36,9 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doAnswer;
import android.platform.test.annotations.Presubmit;
@@ -54,11 +57,6 @@
@Presubmit
public class ActivityDisplayTests extends ActivityTestsBase {
- @Before
- public void setUp() throws Exception {
- setupActivityTaskManagerService();
- }
-
@Test
public void testLastFocusedStackIsUpdatedWhenMovingStack() {
// Create a stack at bottom.
@@ -277,4 +275,60 @@
assertTrue(anotherAlwaysOnTopStack.isAlwaysOnTop());
assertEquals(anotherAlwaysOnTopStack, display.getChildAt(topPosition - 1));
}
+
+ @Test
+ public void testRemoveStackInWindowingModes() {
+ removeStackTests(() -> mRootActivityContainer.removeStacksInWindowingModes(
+ WINDOWING_MODE_FULLSCREEN));
+ }
+
+ @Test
+ public void testRemoveStackWithActivityTypes() {
+ removeStackTests(
+ () -> mRootActivityContainer.removeStacksWithActivityTypes(ACTIVITY_TYPE_STANDARD));
+ }
+
+ private void removeStackTests(Runnable runnable) {
+ final ActivityDisplay display = mRootActivityContainer.getDefaultDisplay();
+ final ActivityStack stack1 = display.createStack(WINDOWING_MODE_FULLSCREEN,
+ ACTIVITY_TYPE_STANDARD, ON_TOP);
+ final ActivityStack stack2 = display.createStack(WINDOWING_MODE_FULLSCREEN,
+ ACTIVITY_TYPE_STANDARD, ON_TOP);
+ final ActivityStack stack3 = display.createStack(WINDOWING_MODE_FULLSCREEN,
+ ACTIVITY_TYPE_STANDARD, ON_TOP);
+ final ActivityStack stack4 = display.createStack(WINDOWING_MODE_FULLSCREEN,
+ ACTIVITY_TYPE_STANDARD, ON_TOP);
+ final TaskRecord task1 = new TaskBuilder(mService.mStackSupervisor).setStack(
+ stack1).setTaskId(1).build();
+ final TaskRecord task2 = new TaskBuilder(mService.mStackSupervisor).setStack(
+ stack2).setTaskId(2).build();
+ final TaskRecord task3 = new TaskBuilder(mService.mStackSupervisor).setStack(
+ stack3).setTaskId(3).build();
+ final TaskRecord task4 = new TaskBuilder(mService.mStackSupervisor).setStack(
+ stack4).setTaskId(4).build();
+
+ // Reordering stacks while removing stacks.
+ doAnswer(invocation -> {
+ display.positionChildAtTop(stack3, false);
+ return true;
+ }).when(mSupervisor).removeTaskByIdLocked(eq(task4.taskId), anyBoolean(), anyBoolean(),
+ any());
+
+ // Removing stacks from the display while removing stacks.
+ doAnswer(invocation -> {
+ display.removeChild(stack2);
+ return true;
+ }).when(mSupervisor).removeTaskByIdLocked(eq(task2.taskId), anyBoolean(), anyBoolean(),
+ any());
+
+ runnable.run();
+ verify(mSupervisor).removeTaskByIdLocked(eq(task4.taskId), anyBoolean(), anyBoolean(),
+ any());
+ verify(mSupervisor).removeTaskByIdLocked(eq(task3.taskId), anyBoolean(), anyBoolean(),
+ any());
+ verify(mSupervisor).removeTaskByIdLocked(eq(task2.taskId), anyBoolean(), anyBoolean(),
+ any());
+ verify(mSupervisor).removeTaskByIdLocked(eq(task1.taskId), anyBoolean(), anyBoolean(),
+ any());
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java
index cac9cf6..ee22861 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java
@@ -70,8 +70,6 @@
@Before
public void setUpAMLO() throws Exception {
- setupActivityTaskManagerService();
-
mLaunchObserver = mock(ActivityMetricsLaunchObserver.class);
// ActivityStackSupervisor always creates its own instance of ActivityMetricsLogger.
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 8f9d2ba..319ffed 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -19,8 +19,10 @@
import static android.view.Display.DEFAULT_DISPLAY;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyInt;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
@@ -29,6 +31,7 @@
import static com.android.server.policy.WindowManagerPolicy.NAV_BAR_RIGHT;
import static com.android.server.wm.ActivityStack.ActivityState.INITIALIZING;
import static com.android.server.wm.ActivityStack.ActivityState.PAUSING;
+import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
import static com.android.server.wm.ActivityStack.ActivityState.STOPPED;
import static com.android.server.wm.ActivityStack.REMOVE_TASK_MODE_MOVING;
@@ -39,11 +42,14 @@
import static org.junit.Assert.assertTrue;
import android.app.ActivityOptions;
+import android.app.servertransaction.ActivityConfigurationChangeItem;
import android.app.servertransaction.ClientTransaction;
import android.app.servertransaction.PauseActivityItem;
+import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
+import android.util.MergedConfiguration;
import android.util.MutableBoolean;
import androidx.test.filters.MediumTest;
@@ -67,10 +73,12 @@
@Before
public void setUp() throws Exception {
- setupActivityTaskManagerService();
- mStack = new StackBuilder(mRootActivityContainer).build();
+ mStack = (TestActivityStack) new StackBuilder(mRootActivityContainer).build();
mTask = mStack.getChildAt(0);
mActivity = mTask.getTopActivity();
+
+ doReturn(false).when(mService).isBooting();
+ doReturn(true).when(mService).isBooted();
}
@Test
@@ -113,22 +121,23 @@
mActivity.setState(STOPPED, "testPausingWhenVisibleFromStopped");
- // The activity is in the focused stack so it should not move to paused.
+ // The activity is in the focused stack so it should be resumed.
mActivity.makeVisibleIfNeeded(null /* starting */, true /* reportToClient */);
- assertTrue(mActivity.isState(STOPPED));
+ assertTrue(mActivity.isState(RESUMED));
assertFalse(pauseFound.value);
- // Clear focused stack
- final ActivityDisplay display = mRootActivityContainer.getDefaultDisplay();
- when(display.getFocusedStack()).thenReturn(null);
+ // Make the activity non focusable
+ mActivity.setState(STOPPED, "testPausingWhenVisibleFromStopped");
+ doReturn(false).when(mActivity).isFocusable();
- // In the unfocused stack, the activity should move to paused.
+ // If the activity is not focusable, it should move to paused.
mActivity.makeVisibleIfNeeded(null /* starting */, true /* reportToClient */);
assertTrue(mActivity.isState(PAUSING));
assertTrue(pauseFound.value);
// Make sure that the state does not change for current non-stopping states.
mActivity.setState(INITIALIZING, "testPausingWhenVisibleFromStopped");
+ doReturn(true).when(mActivity).isFocusable();
mActivity.makeVisibleIfNeeded(null /* starting */, true /* reportToClient */);
@@ -251,4 +260,112 @@
assertEquals(prevSeq + 1, appWindowTokenRequestedOrientation.seq);
verify(mActivity.mAppWindowToken).onMergedOverrideConfigurationChanged();
}
+
+ @Test
+ public void testSetsRelaunchReason_NotDragResizing() {
+ mActivity.setState(ActivityStack.ActivityState.RESUMED, "Testing");
+
+ mTask.onRequestedOverrideConfigurationChanged(mTask.getConfiguration());
+ mActivity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
+ mActivity.getConfiguration()));
+
+ mActivity.info.configChanges &= ~ActivityInfo.CONFIG_ORIENTATION;
+ final Configuration newConfig = new Configuration(mTask.getConfiguration());
+ newConfig.orientation = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT
+ ? Configuration.ORIENTATION_LANDSCAPE : Configuration.ORIENTATION_PORTRAIT;
+ mTask.onRequestedOverrideConfigurationChanged(newConfig);
+
+ mActivity.mRelaunchReason = ActivityTaskManagerService.RELAUNCH_REASON_NONE;
+
+ mActivity.ensureActivityConfiguration(0, false, false);
+
+ assertEquals(ActivityTaskManagerService.RELAUNCH_REASON_WINDOWING_MODE_RESIZE,
+ mActivity.mRelaunchReason);
+ }
+
+ @Test
+ public void testSetsRelaunchReason_DragResizing() {
+ mActivity.setState(ActivityStack.ActivityState.RESUMED, "Testing");
+
+ mTask.onRequestedOverrideConfigurationChanged(mTask.getConfiguration());
+ mActivity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
+ mActivity.getConfiguration()));
+
+ mActivity.info.configChanges &= ~ActivityInfo.CONFIG_ORIENTATION;
+ final Configuration newConfig = new Configuration(mTask.getConfiguration());
+ newConfig.orientation = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT
+ ? Configuration.ORIENTATION_LANDSCAPE : Configuration.ORIENTATION_PORTRAIT;
+ mTask.onRequestedOverrideConfigurationChanged(newConfig);
+
+ doReturn(true).when(mTask.getTask()).isDragResizing();
+
+ mActivity.mRelaunchReason = ActivityTaskManagerService.RELAUNCH_REASON_NONE;
+
+ mActivity.ensureActivityConfiguration(0, false, false);
+
+ assertEquals(ActivityTaskManagerService.RELAUNCH_REASON_FREE_RESIZE,
+ mActivity.mRelaunchReason);
+ }
+
+ @Test
+ public void testSetsRelaunchReason_NonResizeConfigChanges() {
+ mActivity.setState(ActivityStack.ActivityState.RESUMED, "Testing");
+
+ mTask.onRequestedOverrideConfigurationChanged(mTask.getConfiguration());
+ mActivity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
+ mActivity.getConfiguration()));
+
+ mActivity.info.configChanges &= ~ActivityInfo.CONFIG_FONT_SCALE;
+ final Configuration newConfig = new Configuration(mTask.getConfiguration());
+ newConfig.fontScale = 5;
+ mTask.onRequestedOverrideConfigurationChanged(newConfig);
+
+ mActivity.mRelaunchReason =
+ ActivityTaskManagerService.RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
+
+ mActivity.ensureActivityConfiguration(0, false, false);
+
+ assertEquals(ActivityTaskManagerService.RELAUNCH_REASON_NONE,
+ mActivity.mRelaunchReason);
+ }
+
+ @Test
+ public void testSetRequestedOrientationUpdatesConfiguration() throws Exception {
+ mActivity.setState(ActivityStack.ActivityState.RESUMED, "Testing");
+
+ mTask.onRequestedOverrideConfigurationChanged(mTask.getConfiguration());
+ mActivity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
+ mActivity.getConfiguration()));
+
+ mActivity.info.configChanges |= ActivityInfo.CONFIG_ORIENTATION;
+ final Configuration newConfig = new Configuration(mActivity.getConfiguration());
+ newConfig.orientation = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT
+ ? Configuration.ORIENTATION_LANDSCAPE
+ : Configuration.ORIENTATION_PORTRAIT;
+
+ // Mimic the behavior that display doesn't handle app's requested orientation.
+ doAnswer(invocation -> {
+ mTask.onConfigurationChanged(newConfig);
+ return null;
+ }).when(mActivity.mAppWindowToken).setOrientation(anyInt(), any(), any());
+
+ final int requestedOrientation;
+ switch (newConfig.orientation) {
+ case Configuration.ORIENTATION_LANDSCAPE:
+ requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
+ break;
+ case Configuration.ORIENTATION_PORTRAIT:
+ requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+ break;
+ default:
+ throw new IllegalStateException("Orientation in new config should be either"
+ + "landscape or portrait.");
+ }
+ mActivity.setRequestedOrientation(requestedOrientation);
+
+ final ActivityConfigurationChangeItem expected =
+ ActivityConfigurationChangeItem.obtain(newConfig);
+ verify(mService.getLifecycleManager()).scheduleTransaction(eq(mActivity.app.getThread()),
+ eq(mActivity.appToken), eq(expected));
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java
index f7b5d26..59e71c4 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java
@@ -64,7 +64,6 @@
@Before
public void setUp() throws Exception {
- setupActivityTaskManagerService();
mFullscreenStack = mRootActivityContainer.getDefaultDisplay().createStack(
WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
index b2a2869..35c1ede 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
@@ -36,6 +36,8 @@
import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
import static com.android.server.wm.ActivityStack.ActivityState.STOPPING;
import static com.android.server.wm.ActivityStack.REMOVE_TASK_MODE_DESTROYING;
+import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_FREE_RESIZE;
+import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
import static com.google.common.truth.Truth.assertThat;
@@ -73,7 +75,6 @@
@Before
public void setUp() throws Exception {
- setupActivityTaskManagerService();
mDefaultDisplay = mRootActivityContainer.getDefaultDisplay();
mStack = spy(mDefaultDisplay.createStack(WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD,
true /* onTop */));
@@ -264,13 +265,13 @@
// Do not move display to back because there is still another stack.
stack2.moveToBack("testMoveStackToBackIncludingParent", stack2.topTask());
- verify(stack2.getWindowContainerController()).positionChildAtBottom(any(),
+ verify(stack2.getTaskStack()).positionChildAtBottom(any(),
eq(false) /* includingParents */);
// Also move display to back because there is only one stack left.
display.removeChild(stack1);
stack2.moveToBack("testMoveStackToBackIncludingParent", stack2.topTask());
- verify(stack2.getWindowContainerController()).positionChildAtBottom(any(),
+ verify(stack2.getTaskStack()).positionChildAtBottom(any(),
eq(true) /* includingParents */);
}
@@ -687,6 +688,62 @@
}
@Test
+ public void testHandleAppDied_RelaunchesAfterCrashDuringWindowingModeResize() {
+ final ActivityRecord activity = new ActivityBuilder(mService).setTask(mTask).build();
+
+ activity.mRelaunchReason = RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
+ activity.launchCount = 1;
+ activity.haveState = false;
+
+ mStack.handleAppDiedLocked(activity.app);
+
+ assertEquals(1, mTask.mActivities.size());
+ assertEquals(1, mStack.getAllTasks().size());
+ }
+
+ @Test
+ public void testHandleAppDied_NotRelaunchAfterThreeCrashesDuringWindowingModeResize() {
+ final ActivityRecord activity = new ActivityBuilder(mService).setTask(mTask).build();
+
+ activity.mRelaunchReason = RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
+ activity.launchCount = 3;
+ activity.haveState = false;
+
+ mStack.handleAppDiedLocked(activity.app);
+
+ assertThat(mTask.mActivities).isEmpty();
+ assertThat(mStack.getAllTasks()).isEmpty();
+ }
+
+ @Test
+ public void testHandleAppDied_RelaunchesAfterCrashDuringFreeResize() {
+ final ActivityRecord activity = new ActivityBuilder(mService).setTask(mTask).build();
+
+ activity.mRelaunchReason = RELAUNCH_REASON_FREE_RESIZE;
+ activity.launchCount = 1;
+ activity.haveState = false;
+
+ mStack.handleAppDiedLocked(activity.app);
+
+ assertEquals(1, mTask.mActivities.size());
+ assertEquals(1, mStack.getAllTasks().size());
+ }
+
+ @Test
+ public void testHandleAppDied_NotRelaunchAfterThreeCrashesDuringFreeResize() {
+ final ActivityRecord activity = new ActivityBuilder(mService).setTask(mTask).build();
+
+ activity.mRelaunchReason = RELAUNCH_REASON_FREE_RESIZE;
+ activity.launchCount = 3;
+ activity.haveState = false;
+
+ mStack.handleAppDiedLocked(activity.app);
+
+ assertThat(mTask.mActivities).isEmpty();
+ assertThat(mStack.getAllTasks()).isEmpty();
+ }
+
+ @Test
public void testFinishCurrentActivity() {
// Create 2 activities on a new display.
final ActivityDisplay display = addNewActivityDisplayAt(ActivityDisplay.POSITION_TOP);
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStartControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStartControllerTests.java
index 2ba2fdb..96db38b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStartControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStartControllerTests.java
@@ -56,7 +56,6 @@
@Before
public void setUp() throws Exception {
- mService = createActivityTaskManagerService();
mFactory = mock(Factory.class);
mController = new ActivityStartController(mService, mService.mStackSupervisor, mFactory);
mStarter = spy(new ActivityStarter(mController, mService,
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
index ec88718..a381023 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
@@ -117,7 +117,6 @@
@Before
public void setUp() throws Exception {
- setupActivityTaskManagerService();
mController = mock(ActivityStartController.class);
mActivityMetricsLogger = mock(ActivityMetricsLogger.class);
clearInvocations(mActivityMetricsLogger);
@@ -143,7 +142,7 @@
.setStack(mService.mRootActivityContainer.getDefaultDisplay().createStack(
WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, true /* onTop */))
.build();
- assertThat((Object) task2.getStack()).isInstanceOf(PinnedActivityStack.class);
+ assertThat((Object) task2.getStack()).isInstanceOf(ActivityStack.class);
mStarter.updateBounds(task2, bounds);
verify(mService, times(1)).resizeStack(eq(task2.getStack().mStackId),
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java
index 5589ca1..ea8f33f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java
@@ -39,9 +39,6 @@
import static com.android.server.wm.ActivityStack.REMOVE_TASK_MODE_DESTROYING;
import static com.android.server.wm.ActivityStackSupervisor.ON_TOP;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doCallRealMethod;
-
import android.app.ActivityManagerInternal;
import android.app.ActivityOptions;
import android.app.IApplicationThread;
@@ -58,6 +55,7 @@
import android.hardware.display.DisplayManagerGlobal;
import android.os.Handler;
import android.os.Looper;
+import android.os.PowerManager;
import android.os.Process;
import android.os.UserHandle;
import android.service.voice.IVoiceInteractionSession;
@@ -66,11 +64,11 @@
import android.view.DisplayInfo;
import com.android.internal.app.IVoiceInteractor;
-import com.android.server.appop.AppOpsService;
import com.android.server.AttributeCache;
import com.android.server.ServiceThread;
import com.android.server.am.ActivityManagerService;
import com.android.server.am.PendingIntentController;
+import com.android.server.appop.AppOpsService;
import com.android.server.firewall.IntentFirewall;
import com.android.server.uri.UriGrantsManagerInternal;
@@ -114,6 +112,10 @@
@Before
public void setUpBase() {
mTestInjector.setUp();
+
+ mService = new TestActivityTaskManagerService(mContext);
+ mSupervisor = mService.mStackSupervisor;
+ mRootActivityContainer = mService.mRootActivityContainer;
}
@After
@@ -125,17 +127,6 @@
}
}
- ActivityTaskManagerService createActivityTaskManagerService() {
- mService = new TestActivityTaskManagerService(mContext);
- mSupervisor = mService.mStackSupervisor;
- mRootActivityContainer = mService.mRootActivityContainer;
- return mService;
- }
-
- void setupActivityTaskManagerService() {
- createActivityTaskManagerService();
- }
-
/** Creates a {@link TestActivityDisplay}. */
TestActivityDisplay createNewActivityDisplay() {
return TestActivityDisplay.create(mSupervisor, sNextDisplayId++);
@@ -377,7 +368,7 @@
mStack.addTask(task, true, "creating test task");
task.setStack(mStack);
task.setTask();
- mStack.getWindowContainerController().mContainer.addChild(task.mTask, 0);
+ mStack.getTaskStack().addChild(task.mTask, 0);
}
task.touchActiveTime();
@@ -435,6 +426,7 @@
doReturn(mock(IPackageManager.class)).when(this).getPackageManager();
// allow background activity starts by default
doReturn(true).when(this).isBackgroundActivityStartsEnabled();
+ doNothing().when(this).updateCpuStats();
}
void setup(IntentFirewall intentFirewall, PendingIntentController intentController,
@@ -590,6 +582,8 @@
doNothing().when(this).acquireLaunchWakelock();
doReturn(mKeyguardController).when(this).getKeyguardController();
+ mLaunchingActivity = mock(PowerManager.WakeLock.class);
+
initialize();
}
@@ -632,7 +626,7 @@
@SuppressWarnings("TypeParameterUnusedInFormals")
@Override
- <T extends ActivityStack> T createStackUnchecked(int windowingMode, int activityType,
+ ActivityStack createStackUnchecked(int windowingMode, int activityType,
int stackId, boolean onTop) {
return new StackBuilder(mSupervisor.mRootActivityContainer).setDisplay(this)
.setWindowingMode(windowingMode).setActivityType(activityType)
@@ -681,10 +675,9 @@
* method is called. Note that its functionality depends on the implementations of the
* construction arguments.
*/
- protected static class TestActivityStack<T extends StackWindowController>
- extends ActivityStack<T> {
+ protected static class TestActivityStack
+ extends ActivityStack {
private int mOnActivityRemovedFromStackCount = 0;
- private T mContainerController;
static final int IS_TRANSLUCENT_UNSET = 0;
static final int IS_TRANSLUCENT_FALSE = 1;
@@ -724,20 +717,20 @@
}
@Override
- protected T createStackWindowController(int displayId, boolean onTop, Rect outBounds) {
- mContainerController = (T) WindowTestUtils.createMockStackWindowContainerController();
+ protected void createTaskStack(int displayId, boolean onTop, Rect outBounds) {
+ mTaskStack = WindowTestUtils.createMockTaskStack();
// Primary pinned stacks require a non-empty out bounds to be set or else all tasks
// will be moved to the full screen stack.
if (getWindowingMode() == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) {
outBounds.set(0, 0, 100, 100);
}
- return mContainerController;
+
}
@Override
- T getWindowContainerController() {
- return mContainerController;
+ TaskStack getTaskStack() {
+ return mTaskStack;
}
void setIsTranslucent(boolean isTranslucent) {
@@ -827,27 +820,23 @@
}
@SuppressWarnings("TypeParameterUnusedInFormals")
- <T extends ActivityStack> T build() {
+ ActivityStack build() {
final int stackId = mStackId >= 0 ? mStackId : mDisplay.getNextStackId();
if (mWindowingMode == WINDOWING_MODE_PINNED) {
- return (T) new PinnedActivityStack(mDisplay, stackId,
- mRootActivityContainer.mStackSupervisor, mOnTop) {
+ return new ActivityStack(mDisplay, stackId, mRootActivityContainer.mStackSupervisor,
+ mWindowingMode, ACTIVITY_TYPE_STANDARD, mOnTop) {
@Override
Rect getDefaultPictureInPictureBounds(float aspectRatio) {
return new Rect(50, 50, 100, 100);
}
@Override
- PinnedStackWindowController createStackWindowController(int displayId,
- boolean onTop, Rect outBounds) {
- PinnedStackWindowController controller =
- mock(PinnedStackWindowController.class);
- controller.mContainer = mock(TaskStack.class);
- return controller;
+ void createTaskStack(int displayId, boolean onTop, Rect outBounds) {
+ mTaskStack = mock(TaskStack.class);
}
};
} else {
- return (T) new TestActivityStack(mDisplay, stackId,
+ return new TestActivityStack(mDisplay, stackId,
mRootActivityContainer.mStackSupervisor, mWindowingMode,
mActivityType, mOnTop, mCreateActivity);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
index fa42289..123de2d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
@@ -39,7 +39,9 @@
import androidx.test.filters.SmallTest;
+import org.junit.AfterClass;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
/**
@@ -52,15 +54,34 @@
@Presubmit
public class AppTransitionTests extends WindowTestsBase {
+ private static RootWindowContainer sOriginalRootWindowContainer;
+
private DisplayContent mDc;
+ @BeforeClass
+ public static void setUpRootWindowContainerMock() {
+ final WindowManagerService wm = TestSystemServices.getWindowManagerService();
+ // For unit test, we don't need to test performSurfacePlacement to prevent some abnormal
+ // interaction with surfaceflinger native side.
+ sOriginalRootWindowContainer = wm.mRoot;
+ // Creating spied mock of RootWindowContainer shouldn't be done in @Before, since it will
+ // create unnecessary nested spied objects chain, because WindowManagerService object under
+ // test is a single instance shared among all tests that extend WindowTestsBase class.
+ // Instead it should be done once before running all tests in this test class.
+ wm.mRoot = spy(wm.mRoot);
+ doNothing().when(wm.mRoot).performSurfacePlacement(anyBoolean());
+ }
+
+ @AfterClass
+ public static void tearDownRootWindowContainerMock() {
+ final WindowManagerService wm = TestSystemServices.getWindowManagerService();
+ wm.mRoot = sOriginalRootWindowContainer;
+ sOriginalRootWindowContainer = null;
+ }
+
@Before
public void setUp() throws Exception {
mDc = mWm.getDefaultDisplayContentLocked();
- // For unit test, we don't need to test performSurfacePlacement to prevent some
- // abnormal interaction with surfaceflinger native side.
- mWm.mRoot = spy(mWm.mRoot);
- doNothing().when(mWm.mRoot).performSurfacePlacement(anyBoolean());
}
@Test
@@ -160,7 +181,7 @@
assertTrue(dc1.mOpeningApps.size() > 0);
// Move stack to another display.
- stack1.getController().reparent(dc2.getDisplayId(), new Rect(), true);
+ stack1.reparent(dc2.getDisplayId(), new Rect(), true);
// Verify if token are cleared from both pending transition list in former display.
assertFalse(dc1.mOpeningApps.contains(token1));
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 3826fac..f399463 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -59,6 +59,7 @@
import android.platform.test.annotations.Presubmit;
import android.util.DisplayMetrics;
import android.view.DisplayCutout;
+import android.view.DisplayInfo;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.Surface;
@@ -584,15 +585,17 @@
@Test
public void testOnDescendantOrientationRequestChanged() {
- final DisplayContent dc = createNewDisplay();
+ final DisplayInfo info = new DisplayInfo();
+ info.logicalWidth = 1080;
+ info.logicalHeight = 1920;
+ info.logicalDensityDpi = 240;
+ final DisplayContent dc = createNewDisplay(info);
+ dc.configureDisplayPolicy();
mWm.mAtmService.mRootActivityContainer = mock(RootActivityContainer.class);
- final int newOrientation = dc.getLastOrientation() == SCREEN_ORIENTATION_LANDSCAPE
- ? SCREEN_ORIENTATION_PORTRAIT
- : SCREEN_ORIENTATION_LANDSCAPE;
final WindowState window = createWindow(null /* parent */, TYPE_BASE_APPLICATION, dc, "w");
window.getTask().mTaskRecord = mock(TaskRecord.class, ExtendedMockito.RETURNS_DEEP_STUBS);
- window.mAppToken.setOrientation(newOrientation);
+ window.mAppToken.mOrientation = SCREEN_ORIENTATION_LANDSCAPE;
ActivityRecord activityRecord = mock(ActivityRecord.class);
@@ -603,21 +606,22 @@
verify(mWm.mAtmService).updateDisplayOverrideConfigurationLocked(captor.capture(),
same(activityRecord), anyBoolean(), eq(dc.getDisplayId()));
final Configuration newDisplayConfig = captor.getValue();
- assertEquals(Configuration.ORIENTATION_PORTRAIT, newDisplayConfig.orientation);
+ assertEquals(Configuration.ORIENTATION_LANDSCAPE, newDisplayConfig.orientation);
}
@Test
public void testOnDescendantOrientationRequestChanged_FrozenToUserRotation() {
- final DisplayContent dc = createNewDisplay();
+ final DisplayInfo info = new DisplayInfo();
+ info.logicalWidth = 1080;
+ info.logicalHeight = 1920;
+ info.logicalDensityDpi = 240;
+ final DisplayContent dc = createNewDisplay(info);
dc.getDisplayRotation().setFixedToUserRotation(true);
mWm.mAtmService.mRootActivityContainer = mock(RootActivityContainer.class);
- final int newOrientation = dc.getLastOrientation() == SCREEN_ORIENTATION_LANDSCAPE
- ? SCREEN_ORIENTATION_PORTRAIT
- : SCREEN_ORIENTATION_LANDSCAPE;
final WindowState window = createWindow(null /* parent */, TYPE_BASE_APPLICATION, dc, "w");
window.getTask().mTaskRecord = mock(TaskRecord.class, ExtendedMockito.RETURNS_DEEP_STUBS);
- window.mAppToken.setOrientation(newOrientation);
+ window.mAppToken.mOrientation = SCREEN_ORIENTATION_LANDSCAPE;
ActivityRecord activityRecord = mock(ActivityRecord.class);
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
index 198e7ce..d05711e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
@@ -33,7 +33,6 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import android.content.ContentResolver;
@@ -612,23 +611,6 @@
// ========================
// Non-rotation API Tests
// ========================
- @Test
- public void testRespectsAppRequestedOrientationByDefault() throws Exception {
- mBuilder.build();
-
- assertTrue("Display rotation should respect app requested orientation by"
- + " default.", mTarget.respectAppRequestedOrientation());
- }
-
- @Test
- public void testNotRespectAppRequestedOrientation_FixedToUserRotation() throws Exception {
- mBuilder.build();
- mTarget.setFixedToUserRotation(true);
-
- assertFalse("Display rotation shouldn't respect app requested orientation if"
- + " fixed to user rotation.", mTarget.respectAppRequestedOrientation());
- }
-
/**
* Call {@link DisplayRotation#configure(int, int, int, int)} to configure {@link #mTarget}
* according to given parameters.
diff --git a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java
index bb3ab35..68d8bc0 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java
@@ -94,8 +94,8 @@
private WindowState createDropTargetWindow(String name, int ownerId) {
final WindowTestUtils.TestAppWindowToken token = WindowTestUtils.createTestAppWindowToken(
mDisplayContent);
- final TaskStack stack = createStackControllerOnStackOnDisplay(
- WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, mDisplayContent).mContainer;
+ final TaskStack stack = createTaskStackOnDisplay(
+ WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, mDisplayContent);
final Task task = createTaskInStack(stack, ownerId);
task.addChild(token, 0);
diff --git a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java
index 8c3dec7..b28ae40 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java
@@ -71,7 +71,6 @@
@Before
public void setUp() throws Exception {
- mService = createActivityTaskManagerService();
mPersister = new TestLaunchParamsPersister();
mController = new LaunchParamsController(mService, mPersister);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java
index 8635364..aeda473 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java
@@ -102,8 +102,6 @@
mFolder = new File(cacheFolder, "launch_params_tests");
deleteRecursively(mFolder);
- setupActivityTaskManagerService();
-
mDisplayUniqueId = "test:" + Integer.toString(sNextUniqueId++);
final DisplayInfo info = new DisplayInfo();
info.uniqueId = mDisplayUniqueId;
diff --git a/services/tests/wmtests/src/com/android/server/wm/PendingRemoteAnimationRegistryTest.java b/services/tests/wmtests/src/com/android/server/wm/PendingRemoteAnimationRegistryTest.java
index efd7d25..beaac8e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/PendingRemoteAnimationRegistryTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/PendingRemoteAnimationRegistryTest.java
@@ -52,7 +52,6 @@
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- mService = createActivityTaskManagerService();
mService.mH.runWithScissors(() -> {
mHandler = new TestHandler(null, mClock);
}, 0);
diff --git a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java
index 58302d6..e3bacf9 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java
@@ -82,7 +82,6 @@
@Before
public void setUp() throws Exception {
- setupActivityTaskManagerService();
mFullscreenStack = mRootActivityContainer.getDefaultDisplay().createStack(
WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */);
}
@@ -323,8 +322,8 @@
public void testFindTaskToMoveToFrontWhenRecentsOnTop() {
// Create stack/task on default display.
final ActivityDisplay display = mRootActivityContainer.getDefaultDisplay();
- final TestActivityStack targetStack =
- new StackBuilder(mRootActivityContainer).setOnTop(false).build();
+ final TestActivityStack targetStack = (TestActivityStack) new StackBuilder(
+ mRootActivityContainer).setOnTop(false).build();
final TaskRecord targetTask = targetStack.getChildAt(0);
// Create Recents on top of the display.
diff --git a/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java
index a8b6dc3..dc96480 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java
@@ -49,7 +49,6 @@
@Before
public void setUp() throws Exception {
- setupActivityTaskManagerService();
mRunningTasks = new RunningTasks();
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/StackWindowControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/StackWindowControllerTests.java
deleted file mode 100644
index 5690b58..0000000
--- a/services/tests/wmtests/src/com/android/server/wm/StackWindowControllerTests.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2017 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.server.wm;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import android.graphics.Rect;
-import android.platform.test.annotations.Presubmit;
-
-import androidx.test.filters.SmallTest;
-
-import org.junit.Test;
-
-/**
- * Test class for {@link StackWindowController}.
- *
- * Build/Install/Run:
- * atest FrameworksServicesTests:StackWindowControllerTests
- */
-@SmallTest
-@Presubmit
-public class StackWindowControllerTests extends WindowTestsBase {
- @Test
- public void testRemoveContainer() {
- final StackWindowController stackController =
- createStackControllerOnDisplay(mDisplayContent);
- final WindowTestUtils.TestTask task = WindowTestUtils.createTestTask(stackController);
-
- final TaskStack stack = stackController.mContainer;
- assertNotNull(stack);
- assertNotNull(task);
- stackController.removeContainer();
- // Assert that the container was removed.
- assertNull(stackController.mContainer);
- assertNull(stack.getDisplayContent());
- assertNull(task.getDisplayContent());
- assertNull(task.mStack);
- }
-
- @Test
- public void testRemoveContainer_deferRemoval() {
- final StackWindowController stackController =
- createStackControllerOnDisplay(mDisplayContent);
- final WindowTestUtils.TestTask task = WindowTestUtils.createTestTask(stackController);
-
- final TaskStack stack = stackController.mContainer;
- // Stack removal is deferred if one of its child is animating.
- task.setLocalIsAnimating(true);
-
- stackController.removeContainer();
- // For the case of deferred removal the stack controller will no longer be connected to the
- // container, but the task controller will still be connected to the its container until
- // the stack window container is removed.
- assertNull(stackController.mContainer);
- assertNull(stack.getController());
- assertNotNull(task);
-
- stack.removeImmediately();
- // After removing, the task will be isolated.
- assertNull(task.getParent());
- assertEquals(task.getChildCount(), 0);
- assertNull(task.getController());
- }
-
- @Test
- public void testReparent() {
- // Create first stack on primary display.
- final StackWindowController stack1Controller =
- createStackControllerOnDisplay(mDisplayContent);
- final TaskStack stack1 = stack1Controller.mContainer;
- final WindowTestUtils.TestTask task1 = WindowTestUtils.createTestTask(stack1Controller);
- task1.mOnDisplayChangedCalled = false;
-
- // Create second display and put second stack on it.
- final DisplayContent dc = createNewDisplay();
- final StackWindowController stack2Controller =
- createStackControllerOnDisplay(dc);
- final TaskStack stack2 = stack2Controller.mContainer;
-
- // Reparent
- stack1Controller.reparent(dc.getDisplayId(), new Rect(), true /* onTop */);
- assertEquals(dc, stack1.getDisplayContent());
- final int stack1PositionInParent = stack1.getParent().mChildren.indexOf(stack1);
- final int stack2PositionInParent = stack1.getParent().mChildren.indexOf(stack2);
- assertEquals(stack1PositionInParent, stack2PositionInParent + 1);
- assertTrue(task1.mOnDisplayChangedCalled);
- }
-}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java
index 53e99fa..ace179a 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java
@@ -75,10 +75,6 @@
@Before
public void setUp() throws Exception {
- setupActivityTaskManagerService();
- mService.mSupportsFreeformWindowManagement = true;
- when(mSupervisor.canUseActivityOptionsLaunchBounds(any())).thenCallRealMethod();
-
mActivity = new ActivityBuilder(mService).build();
mActivity.appInfo.targetSdkVersion = Build.VERSION_CODES.N_MR1;
mActivity.info.applicationInfo.flags |= ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES;
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
index 8a98cbe..e182c45 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
@@ -25,6 +25,13 @@
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyBoolean;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyInt;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doCallRealMethod;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.server.wm.WindowContainer.POSITION_TOP;
import static org.hamcrest.Matchers.not;
@@ -46,6 +53,7 @@
import android.service.voice.IVoiceInteractionSession;
import android.util.Xml;
import android.view.DisplayInfo;
+import android.view.Surface;
import androidx.test.filters.MediumTest;
@@ -82,7 +90,6 @@
@Before
public void setUp() throws Exception {
TaskRecord.setTaskRecordFactory(null);
- setupActivityTaskManagerService();
mParentBounds = new Rect(10 /*left*/, 30 /*top*/, 80 /*right*/, 60 /*bottom*/);
}
@@ -217,12 +224,17 @@
info.logicalHeight = fullScreenBounds.height();
ActivityDisplay display = addNewActivityDisplayAt(info, POSITION_TOP);
assertTrue(mRootActivityContainer.getActivityDisplay(display.mDisplayId) != null);
+ // Override display orientation. Normally this is available via DisplayContent, but DC
+ // is mocked-out.
+ display.getRequestedOverrideConfiguration().orientation =
+ Configuration.ORIENTATION_LANDSCAPE;
+ display.onRequestedOverrideConfigurationChanged(
+ display.getRequestedOverrideConfiguration());
ActivityStack stack = new StackBuilder(mRootActivityContainer)
.setWindowingMode(WINDOWING_MODE_FULLSCREEN).setDisplay(display).build();
TaskRecord task = stack.getChildAt(0);
- ActivityRecord root = task.getRootActivity();
- ActivityRecord top = new ActivityBuilder(mService).setTask(task).setStack(stack).build();
- assertEquals(root, task.getRootActivity());
+ ActivityRecord root = task.getTopActivity();
+ assertEquals(root, task.getTopActivity());
assertEquals(fullScreenBounds, task.getBounds());
@@ -233,16 +245,22 @@
assertTrue(task.getBounds().width() < task.getBounds().height());
assertEquals(fullScreenBounds.height(), task.getBounds().height());
- // Setting non-root app has no effect
- setActivityRequestedOrientation(root, SCREEN_ORIENTATION_LANDSCAPE);
- assertTrue(task.getBounds().width() < task.getBounds().height());
+ // Top activity gets used
+ ActivityRecord top = new ActivityBuilder(mService).setTask(task).setStack(stack).build();
+ assertEquals(top, task.getTopActivity());
+ setActivityRequestedOrientation(top, SCREEN_ORIENTATION_LANDSCAPE);
+ assertTrue(task.getBounds().width() > task.getBounds().height());
+ assertEquals(task.getBounds().width(), fullScreenBounds.width());
// Setting app to unspecified restores
- setActivityRequestedOrientation(root, SCREEN_ORIENTATION_UNSPECIFIED);
+ setActivityRequestedOrientation(top, SCREEN_ORIENTATION_UNSPECIFIED);
assertEquals(fullScreenBounds, task.getBounds());
// Setting app to fixed landscape and changing display
- setActivityRequestedOrientation(root, SCREEN_ORIENTATION_LANDSCAPE);
+ setActivityRequestedOrientation(top, SCREEN_ORIENTATION_LANDSCAPE);
+ // simulate display orientation changing (normally done via DisplayContent)
+ display.getRequestedOverrideConfiguration().orientation =
+ Configuration.ORIENTATION_PORTRAIT;
display.setBounds(fullScreenBoundsPort);
assertTrue(task.getBounds().width() > task.getBounds().height());
assertEquals(fullScreenBoundsPort.width(), task.getBounds().width());
@@ -265,6 +283,51 @@
assertEquals(freeformBounds, task.getBounds());
}
+ @Test
+ public void testUpdatesForcedOrientationInBackground() {
+ final DisplayInfo info = new DisplayInfo();
+ info.logicalWidth = 1920;
+ info.logicalHeight = 1080;
+ final ActivityDisplay display = addNewActivityDisplayAt(info, POSITION_TOP);
+ doCallRealMethod().when(display.mDisplayContent).setDisplayRotation(any());
+ display.mDisplayContent.setDisplayRotation(mock(DisplayRotation.class));
+ doCallRealMethod().when(display.mDisplayContent).onDescendantOrientationChanged(any(),
+ any());
+ doCallRealMethod().when(display.mDisplayContent).setRotation(anyInt());
+ doAnswer(invocation -> {
+ display.mDisplayContent.setRotation(Surface.ROTATION_0);
+ return null;
+ }).when(display.mDisplayContent).updateOrientationFromAppTokens(any(), any(), anyBoolean());
+
+ final ActivityStack stack = new StackBuilder(mRootActivityContainer)
+ .setWindowingMode(WINDOWING_MODE_FULLSCREEN).setDisplay(display).build();
+ final TaskRecord task = stack.getChildAt(0);
+ final ActivityRecord activity = task.getRootActivity();
+
+ // Wire up app window token and task.
+ doCallRealMethod().when(activity.mAppWindowToken).setOrientation(anyInt(), any(), any());
+ doCallRealMethod().when(activity.mAppWindowToken).onDescendantOrientationChanged(any(),
+ any());
+ doReturn(task.mTask).when(activity.mAppWindowToken).getParent();
+
+ // Wire up task and stack.
+ task.mTask.mTaskRecord = task;
+ doCallRealMethod().when(task.mTask).onDescendantOrientationChanged(any(), any());
+ doReturn(stack.getTaskStack()).when(task.mTask).getParent();
+
+ // Wire up stack and display content.
+ doCallRealMethod().when(stack.mTaskStack).onDescendantOrientationChanged(any(), any());
+ doReturn(display.mDisplayContent).when(stack.mTaskStack).getParent();
+
+ activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ assertTrue("Bounds of the task should be pillarboxed.",
+ task.getBounds().width() < task.getBounds().height());
+
+ activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+ assertTrue("Bounds of the task should be fullscreen.",
+ task.getBounds().equals(new Rect(0, 0, 1920, 1080)));
+ }
+
/** Ensures that the alias intent won't have target component resolved. */
@Test
public void testTaskIntentActivityAlias() {
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackContainersTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackContainersTests.java
index f01e9f0..74ccccc 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskStackContainersTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackContainersTests.java
@@ -47,8 +47,8 @@
@Before
public void setUp() throws Exception {
- mPinnedStack = createStackControllerOnStackOnDisplay(
- WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, mDisplayContent).mContainer;
+ mPinnedStack = createTaskStackOnDisplay(
+ WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, mDisplayContent);
// Stack should contain visible app window to be considered visible.
final Task pinnedTask = createTaskInStack(mPinnedStack, 0 /* userId */);
assertFalse(mPinnedStack.isVisible());
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java
index 7ac3318..2554237 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java
@@ -20,8 +20,12 @@
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
@@ -106,4 +110,62 @@
assertNull(stack.getDisplayContent());
assertNull(task.mStack);
}
+
+ @Test
+ public void testRemoveContainer() {
+ final TaskStack stack = createTaskStackOnDisplay(mDisplayContent);
+ final WindowTestUtils.TestTask task = WindowTestUtils.createTestTask(stack);
+
+ assertNotNull(stack);
+ assertNotNull(task);
+ stack.removeIfPossible();
+ // Assert that the container was removed.
+ assertNull(stack.getParent());
+ assertEquals(0, stack.getChildCount());
+ assertNull(stack.getDisplayContent());
+ assertNull(task.getDisplayContent());
+ assertNull(task.mStack);
+ }
+
+ @Test
+ public void testRemoveContainer_deferRemoval() {
+ final TaskStack stack = createTaskStackOnDisplay(mDisplayContent);
+ final WindowTestUtils.TestTask task = WindowTestUtils.createTestTask(stack);
+
+ // Stack removal is deferred if one of its child is animating.
+ task.setLocalIsAnimating(true);
+
+ stack.removeIfPossible();
+ // For the case of deferred removal the task controller will still be connected to the its
+ // container until the stack window container is removed.
+ assertNotNull(stack.getParent());
+ assertNotEquals(0, stack.getChildCount());
+ assertNotNull(task);
+
+ stack.removeImmediately();
+ // After removing, the task will be isolated.
+ assertNull(task.getParent());
+ assertEquals(0, task.getChildCount());
+ assertNull(task.getController());
+ }
+
+ @Test
+ public void testReparent() {
+ // Create first stack on primary display.
+ final TaskStack stack1 = createTaskStackOnDisplay(mDisplayContent);
+ final WindowTestUtils.TestTask task1 = WindowTestUtils.createTestTask(stack1);
+ task1.mOnDisplayChangedCalled = false;
+
+ // Create second display and put second stack on it.
+ final DisplayContent dc = createNewDisplay();
+ final TaskStack stack2 = createTaskStackOnDisplay(dc);
+
+ // Reparent
+ stack1.reparent(dc.getDisplayId(), new Rect(), true /* onTop */);
+ assertEquals(dc, stack1.getDisplayContent());
+ final int stack1PositionInParent = stack1.getParent().mChildren.indexOf(stack1);
+ final int stack2PositionInParent = stack1.getParent().mChildren.indexOf(stack2);
+ assertEquals(stack1PositionInParent, stack2PositionInParent + 1);
+ assertTrue(task1.mOnDisplayChangedCalled);
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java
index 3e32ed3..ae211d3 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java
@@ -40,8 +40,7 @@
@Test
public void testRemoveContainer() {
- final StackWindowController stackController1 =
- createStackControllerOnDisplay(mDisplayContent);
+ final TaskStack stackController1 = createTaskStackOnDisplay(mDisplayContent);
final WindowTestUtils.TestTask task = WindowTestUtils.createTestTask(stackController1);
final WindowTestUtils.TestAppWindowToken appToken =
WindowTestUtils.createAppWindowTokenInTask(mDisplayContent, task);
@@ -49,14 +48,13 @@
task.removeIfPossible();
// Assert that the container was removed.
assertNull(task.getParent());
- assertEquals(task.getChildCount(), 0);
+ assertEquals(0, task.getChildCount());
assertNull(appToken.getParent());
}
@Test
public void testRemoveContainer_deferRemoval() {
- final StackWindowController stackController1 =
- createStackControllerOnDisplay(mDisplayContent);
+ final TaskStack stackController1 = createTaskStackOnDisplay(mDisplayContent);
final WindowTestUtils.TestTask task = WindowTestUtils.createTestTask(stackController1);
final WindowTestUtils.TestAppWindowToken appToken =
WindowTestUtils.createAppWindowTokenInTask(mDisplayContent, task);
@@ -67,22 +65,20 @@
// For the case of deferred removal the task will still be connected to the its app token
// until the task window container is removed.
assertNotNull(task.getParent());
- assertNotEquals(task.getChildCount(), 0);
+ assertNotEquals(0, task.getChildCount());
assertNotNull(appToken.getParent());
task.removeImmediately();
assertNull(task.getParent());
- assertEquals(task.getChildCount(), 0);
+ assertEquals(0, task.getChildCount());
assertNull(appToken.getParent());
}
@Test
public void testReparent() {
- final StackWindowController stackController1 =
- createStackControllerOnDisplay(mDisplayContent);
+ final TaskStack stackController1 = createTaskStackOnDisplay(mDisplayContent);
final WindowTestUtils.TestTask task = WindowTestUtils.createTestTask(stackController1);
- final StackWindowController stackController2 =
- createStackControllerOnDisplay(mDisplayContent);
+ final TaskStack stackController2 = createTaskStackOnDisplay(mDisplayContent);
final WindowTestUtils.TestTask task2 = WindowTestUtils.createTestTask(stackController2);
boolean gotException = false;
@@ -93,20 +89,17 @@
}
assertTrue("Should not be able to reparent to the same parent", gotException);
- final StackWindowController stackController3 =
- createStackControllerOnDisplay(mDisplayContent);
- stackController3.setContainer(null);
gotException = false;
try {
- task.reparent(stackController3, 0, false/* moveParents */);
+ task.reparent(null, 0, false/* moveParents */);
} catch (IllegalArgumentException e) {
gotException = true;
}
- assertTrue("Should not be able to reparent to a stack that doesn't have a container",
+ assertTrue("Should not be able to reparent to a stack that doesn't exist",
gotException);
task.reparent(stackController2, 0, false/* moveParents */);
- assertEquals(stackController2.mContainer, task.getParent());
+ assertEquals(stackController2, task.getParent());
assertEquals(0, task.positionInParent());
assertEquals(1, task2.positionInParent());
}
@@ -114,20 +107,17 @@
@Test
public void testReparent_BetweenDisplays() {
// Create first stack on primary display.
- final StackWindowController stack1Controller =
- createStackControllerOnDisplay(mDisplayContent);
- final TaskStack stack1 = stack1Controller.mContainer;
- final WindowTestUtils.TestTask task = WindowTestUtils.createTestTask(stack1Controller);
+ final TaskStack stack1 = createTaskStackOnDisplay(mDisplayContent);
+ final WindowTestUtils.TestTask task = WindowTestUtils.createTestTask(stack1);
task.mOnDisplayChangedCalled = false;
assertEquals(mDisplayContent, stack1.getDisplayContent());
// Create second display and put second stack on it.
final DisplayContent dc = createNewDisplay();
- final StackWindowController stack2Controller = createStackControllerOnDisplay(dc);
- final TaskStack stack2 = stack2Controller.mContainer;
- final WindowTestUtils.TestTask task2 = WindowTestUtils.createTestTask(stack2Controller);
+ final TaskStack stack2 = createTaskStackOnDisplay(dc);
+ final WindowTestUtils.TestTask task2 = WindowTestUtils.createTestTask(stack2);
// Reparent and check state
- task.reparent(stack2Controller, 0, false /* moveParents */);
+ task.reparent(stack2, 0, false /* moveParents */);
assertEquals(stack2, task.getParent());
assertEquals(0, task.positionInParent());
assertEquals(1, task2.positionInParent());
diff --git a/services/tests/wmtests/src/com/android/server/wm/WmServiceUtils.java b/services/tests/wmtests/src/com/android/server/wm/TestSystemServices.java
similarity index 97%
rename from services/tests/wmtests/src/com/android/server/wm/WmServiceUtils.java
rename to services/tests/wmtests/src/com/android/server/wm/TestSystemServices.java
index 05ac8c1..b151fb7 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WmServiceUtils.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TestSystemServices.java
@@ -66,7 +66,7 @@
/**
* A Test utility class to create a mock {@link WindowManagerService} instance for tests.
*/
-class WmServiceUtils {
+class TestSystemServices {
private static StaticMockitoSession sMockitoSession;
private static WindowManagerService sService;
private static TestWindowManagerPolicy sPolicy;
@@ -78,7 +78,7 @@
.strictness(Strictness.LENIENT)
.startMocking();
- runWithDexmakerShareClassLoader(WmServiceUtils::setUpTestWindowService);
+ runWithDexmakerShareClassLoader(TestSystemServices::setUpTestWindowService);
}
static void tearDownWindowManagerService() {
@@ -147,7 +147,7 @@
final WindowManagerGlobalLock wmLock = new WindowManagerGlobalLock();
doReturn(wmLock).when(atms).getGlobalLock();
- sPolicy = new TestWindowManagerPolicy(WmServiceUtils::getWindowManagerService);
+ sPolicy = new TestWindowManagerPolicy(TestSystemServices::getWindowManagerService);
sService = WindowManagerService.main(context, ims, false, false, sPolicy, atms);
sService.onInitReady();
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowFrameTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowFrameTests.java
index d9ef10d..0a4a8a4 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowFrameTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowFrameTests.java
@@ -16,12 +16,15 @@
package com.android.server.wm;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.view.DisplayCutout.BOUNDS_POSITION_TOP;
import static android.view.DisplayCutout.fromBoundingRect;
import static android.view.WindowManager.LayoutParams.MATCH_PARENT;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
import android.app.ActivityManager.TaskDescription;
import android.content.res.Configuration;
@@ -58,7 +61,7 @@
boolean mDockedResizingForTest = false;
WindowStateWithTask(WindowManagerService wm, IWindow iWindow, WindowToken windowToken,
WindowManager.LayoutParams attrs, Task t) {
- super(wm, null, iWindow, windowToken, null, 0, 0, attrs, 0, 0,
+ super(wm, mock(Session.class), iWindow, windowToken, null, 0, 0, attrs, 0, 0,
false /* ownerCanAddInternalSystemWindow */);
mTask = t;
}
@@ -113,9 +116,9 @@
@Before
public void setUp() throws Exception {
- mWindowToken = WindowTestUtils.createTestAppWindowToken(
- mWm.getDefaultDisplayContentLocked());
- mStubStack = new TaskStack(mWm, 0, null);
+ mWindowToken = createAppWindowToken(mWm.getDefaultDisplayContentLocked(),
+ WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
+ mStubStack = WindowTestUtils.createMockTaskStack();
}
// Do not use this function directly in the tests below. Instead, use more explicit function
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestUtils.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestUtils.java
index 20fc5ae..44e998b7 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestUtils.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestUtils.java
@@ -103,12 +103,10 @@
}
/**
- * Creates a mock instance of {@link StackWindowController}.
+ * Creates a mock instance of {@link TestTaskStack}.
*/
- public static StackWindowController createMockStackWindowContainerController() {
- StackWindowController controller = mock(StackWindowController.class);
- controller.mContainer = mock(TestTaskStack.class);
- return controller;
+ public static TaskStack createMockTaskStack() {
+ return mock(TestTaskStack.class);
}
/** Creates a {@link Task} and adds it to the specified {@link TaskStack}. */
@@ -201,6 +199,11 @@
}
@Override
+ void onParentSet() {
+ // Do nothing.
+ }
+
+ @Override
boolean isOnTop() {
return mOnTop;
}
@@ -283,10 +286,9 @@
}
}
- public static TestTask createTestTask(StackWindowController stackWindowController) {
- return new TestTask(sNextTaskId++, stackWindowController.mContainer, 0,
- stackWindowController.mService, RESIZE_MODE_UNRESIZEABLE, false,
- mock(TaskRecord.class));
+ public static TestTask createTestTask(TaskStack stack) {
+ return new TestTask(sNextTaskId++, stack, 0, stack.mWmService, RESIZE_MODE_UNRESIZEABLE,
+ false, mock(TaskRecord.class));
}
public static class TestIApplicationToken implements IApplicationToken {
@@ -334,5 +336,10 @@
mHasSurface = hadSurface;
}
+
+ @Override
+ void onParentSet() {
+ // Do nothing;
+ }
}
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
index cdc0a47..e38118e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
@@ -41,7 +41,6 @@
import android.content.Context;
import android.content.res.Configuration;
-import android.graphics.Rect;
import android.hardware.display.DisplayManagerGlobal;
import android.testing.DexmakerShareClassLoaderRule;
import android.util.Log;
@@ -102,14 +101,14 @@
public static void setUpOnceBase() {
AttributeCache.init(getInstrumentation().getTargetContext());
- WmServiceUtils.setUpWindowManagerService();
+ TestSystemServices.setUpWindowManagerService();
sPowerManagerWrapper = mock(WindowState.PowerManagerWrapper.class);
}
@AfterClass
public static void tearDonwOnceBase() {
- WmServiceUtils.tearDownWindowManagerService();
+ TestSystemServices.tearDownWindowManagerService();
}
@Before
@@ -121,7 +120,7 @@
final Context context = getInstrumentation().getTargetContext();
- mWm = WmServiceUtils.getWindowManagerService();
+ mWm = TestSystemServices.getWindowManagerService();
beforeCreateDisplay();
context.getDisplay().getDisplayInfo(mDisplayInfo);
@@ -199,7 +198,7 @@
}
// Cleaned up everything in Handler.
- WmServiceUtils.cleanupWindowManagerHandlers();
+ TestSystemServices.cleanupWindowManagerHandlers();
} catch (Exception e) {
Log.e(TAG, "Failed to tear down test", e);
throw e;
@@ -220,7 +219,7 @@
* Waits until the main handler for WM has processed all messages.
*/
void waitUntilHandlersIdle() {
- WmServiceUtils.waitUntilWindowManagerHandlersIdle();
+ TestSystemServices.waitUntilWindowManagerHandlersIdle();
}
private WindowToken createWindowToken(
@@ -240,8 +239,7 @@
WindowTestUtils.TestAppWindowToken createTestAppWindowToken(DisplayContent dc, int
windowingMode, int activityType) {
- final TaskStack stack = createStackControllerOnStackOnDisplay(windowingMode, activityType,
- dc).mContainer;
+ final TaskStack stack = createTaskStackOnDisplay(windowingMode, activityType, dc);
final Task task = createTaskInStack(stack, 0 /* userId */);
final WindowTestUtils.TestAppWindowToken appWindowToken =
WindowTestUtils.createTestAppWindowToken(dc);
@@ -350,28 +348,20 @@
/** Creates a {@link TaskStack} and adds it to the specified {@link DisplayContent}. */
TaskStack createTaskStackOnDisplay(DisplayContent dc) {
synchronized (mWm.mGlobalLock) {
- return createStackControllerOnDisplay(dc).mContainer;
+ return createTaskStackOnDisplay(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, dc);
}
}
- StackWindowController createStackControllerOnDisplay(DisplayContent dc) {
- synchronized (mWm.mGlobalLock) {
- return createStackControllerOnStackOnDisplay(
- WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, dc);
- }
- }
-
- StackWindowController createStackControllerOnStackOnDisplay(
- int windowingMode, int activityType, DisplayContent dc) {
+ TaskStack createTaskStackOnDisplay(int windowingMode, int activityType, DisplayContent dc) {
synchronized (mWm.mGlobalLock) {
final Configuration overrideConfig = new Configuration();
overrideConfig.windowConfiguration.setWindowingMode(windowingMode);
overrideConfig.windowConfiguration.setActivityType(activityType);
final int stackId = ++sNextStackId;
- final StackWindowController controller = new StackWindowController(stackId, null,
- dc.getDisplayId(), true /* onTop */, new Rect(), mWm);
- controller.onRequestedOverrideConfigurationChanged(overrideConfig);
- return controller;
+ final TaskStack stack = new TaskStack(mWm, stackId, mock(ActivityStack.class));
+ dc.setStackOnDisplay(stackId, true, stack);
+ stack.onRequestedOverrideConfigurationChanged(overrideConfig);
+ return stack;
}
}
diff --git a/services/usage/java/com/android/server/usage/IntervalStats.java b/services/usage/java/com/android/server/usage/IntervalStats.java
index 94cc650..9a5bd13 100644
--- a/services/usage/java/com/android/server/usage/IntervalStats.java
+++ b/services/usage/java/com/android/server/usage/IntervalStats.java
@@ -22,6 +22,7 @@
import static android.app.usage.UsageEvents.Event.CONFIGURATION_CHANGE;
import static android.app.usage.UsageEvents.Event.CONTINUE_PREVIOUS_DAY;
import static android.app.usage.UsageEvents.Event.CONTINUING_FOREGROUND_SERVICE;
+import static android.app.usage.UsageEvents.Event.DEVICE_SHUTDOWN;
import static android.app.usage.UsageEvents.Event.END_OF_DAY;
import static android.app.usage.UsageEvents.Event.FLUSH_TO_DISK;
import static android.app.usage.UsageEvents.Event.FOREGROUND_SERVICE_START;
@@ -66,7 +67,7 @@
public final ArrayMap<String, UsageStats> packageStats = new ArrayMap<>();
public final ArrayMap<Configuration, ConfigurationStats> configurations = new ArrayMap<>();
public Configuration activeConfiguration;
- public EventList events;
+ public EventList events = new EventList();
// A string cache. This is important as when we're parsing XML files, we don't want to
// keep hundreds of strings that have the same contents. We will read the string
@@ -112,6 +113,9 @@
}
+ public IntervalStats() {
+ }
+
/**
* Gets the UsageStats object for the given package, or creates one and adds it internally.
*/
@@ -253,6 +257,7 @@
case ROLLOVER_FOREGROUND_SERVICE:
case CONTINUE_PREVIOUS_DAY:
case CONTINUING_FOREGROUND_SERVICE:
+ case DEVICE_SHUTDOWN:
return true;
}
return false;
@@ -281,8 +286,9 @@
@VisibleForTesting
public void update(String packageName, String className, long timeStamp, int eventType,
int instanceId) {
- if (eventType == FLUSH_TO_DISK) {
- // FLUSH_TO_DISK are sent to all packages.
+ if (eventType == DEVICE_SHUTDOWN
+ || eventType == FLUSH_TO_DISK) {
+ // DEVICE_SHUTDOWN and FLUSH_TO_DISK are sent to all packages.
final int size = packageStats.size();
for (int i = 0; i < size; i++) {
UsageStats usageStats = packageStats.valueAt(i);
@@ -321,9 +327,6 @@
*/
@VisibleForTesting
public void addEvent(Event event) {
- if (events == null) {
- events = new EventList();
- }
// Cache common use strings
event.mPackage = getCachedStringRef(event.mPackage);
if (event.mClass != null) {
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index f146370..76a3aa8 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -18,6 +18,7 @@
import static android.app.usage.UsageEvents.Event.CHOOSER_ACTION;
import static android.app.usage.UsageEvents.Event.CONFIGURATION_CHANGE;
+import static android.app.usage.UsageEvents.Event.DEVICE_SHUTDOWN;
import static android.app.usage.UsageEvents.Event.FLUSH_TO_DISK;
import static android.app.usage.UsageEvents.Event.NOTIFICATION_INTERRUPTION;
import static android.app.usage.UsageEvents.Event.SHORTCUT_INVOCATION;
@@ -416,11 +417,30 @@
*/
void shutdown() {
synchronized (mLock) {
+ mHandler.removeMessages(MSG_REPORT_EVENT);
+ Event event = new Event(DEVICE_SHUTDOWN, SystemClock.elapsedRealtime());
+ // orderly shutdown, the last event is DEVICE_SHUTDOWN.
+ reportEventToAllUserId(event);
flushToDiskLocked();
}
}
/**
+ * After power button is pressed for 3.5 seconds
+ * (as defined in {@link com.android.internal.R.integer#config_veryLongPressTimeout}),
+ * report DEVICE_SHUTDOWN event and persist the database. If the power button is pressed for 10
+ * seconds and the device is shutdown, the database is already persisted and we are not losing
+ * data.
+ * This method is called from PhoneWindowManager, do not synchronize on mLock otherwise
+ * PhoneWindowManager may be blocked.
+ */
+ void prepareForPossibleShutdown() {
+ Event event = new Event(DEVICE_SHUTDOWN, SystemClock.elapsedRealtime());
+ mHandler.obtainMessage(MSG_REPORT_EVENT_TO_ALL_USERID, event).sendToTarget();
+ mHandler.sendEmptyMessage(MSG_FLUSH_TO_DISK);
+ }
+
+ /**
* Called by the Binder stub.
*/
void reportEvent(Event event, int userId) {
@@ -1487,6 +1507,11 @@
}
@Override
+ public void prepareForPossibleShutdown() {
+ UsageStatsService.this.prepareForPossibleShutdown();
+ }
+
+ @Override
public void addAppIdleStateChangeListener(AppIdleStateChangeListener listener) {
mAppStandby.addListener(listener);
listener.onParoleStateChanged(isAppIdleParoleOn());
diff --git a/services/usage/java/com/android/server/usage/UserUsageStatsService.java b/services/usage/java/com/android/server/usage/UserUsageStatsService.java
index 5128ae1..2d1098c7 100644
--- a/services/usage/java/com/android/server/usage/UserUsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UserUsageStatsService.java
@@ -16,6 +16,7 @@
package com.android.server.usage;
+import static android.app.usage.UsageEvents.Event.DEVICE_SHUTDOWN;
import static android.app.usage.UsageStatsManager.INTERVAL_BEST;
import static android.app.usage.UsageStatsManager.INTERVAL_COUNT;
import static android.app.usage.UsageStatsManager.INTERVAL_DAILY;
@@ -134,6 +135,18 @@
updateRolloverDeadline();
}
+ // During system reboot, add a DEVICE_SHUTDOWN event to the end of event list, the timestamp
+ // is last time UsageStatsDatabase is persisted to disk.
+ final IntervalStats currentDailyStats = mCurrentStats[INTERVAL_DAILY];
+ if (currentDailyStats != null) {
+ final int size = currentDailyStats.events.size();
+ if (size == 0 || currentDailyStats.events.get(size - 1).mEventType != DEVICE_SHUTDOWN) {
+ // The last event in event list is not DEVICE_SHUTDOWN, then we insert one.
+ final Event event = new Event(DEVICE_SHUTDOWN, currentDailyStats.lastTimeSaved);
+ currentDailyStats.addEvent(event);
+ }
+ }
+
if (mDatabase.isNewUpdate()) {
notifyNewUpdate();
}
@@ -175,7 +188,9 @@
// ACTIVITY_STOPPED.
&& event.mEventType != Event.ACTIVITY_DESTROYED
// FLUSH_TO_DISK is a private event.
- && event.mEventType != Event.FLUSH_TO_DISK) {
+ && event.mEventType != Event.FLUSH_TO_DISK
+ // DEVICE_SHUTDOWN is added to event list after reboot.
+ && event.mEventType != Event.DEVICE_SHUTDOWN) {
currentDailyStats.addEvent(event);
}
@@ -393,10 +408,6 @@
@Override
public void combine(IntervalStats stats, boolean mutable,
List<Event> accumulatedResult) {
- if (stats.events == null) {
- return;
- }
-
final int startIndex = stats.events.firstIndexOnOrAfter(beginTime);
final int size = stats.events.size();
for (int i = startIndex; i < size; i++) {
@@ -434,10 +445,6 @@
names.add(packageName);
final List<Event> results = queryStats(INTERVAL_DAILY,
beginTime, endTime, (stats, mutable, accumulatedResult) -> {
- if (stats.events == null) {
- return;
- }
-
final int startIndex = stats.events.firstIndexOnOrAfter(beginTime);
final int size = stats.events.size();
for (int i = startIndex; i < size; i++) {
@@ -696,10 +703,6 @@
@Override
public void combine(IntervalStats stats, boolean mutable,
List<Event> accumulatedResult) {
- if (stats.events == null) {
- return;
- }
-
final int startIndex = stats.events.firstIndexOnOrAfter(beginTime);
final int size = stats.events.size();
for (int i = startIndex; i < size; i++) {
@@ -925,10 +928,12 @@
return "SCREEN_INTERACTIVE";
case Event.SCREEN_NON_INTERACTIVE:
return "SCREEN_NON_INTERACTIVE";
- case UsageEvents.Event.KEYGUARD_SHOWN:
+ case Event.KEYGUARD_SHOWN:
return "KEYGUARD_SHOWN";
- case UsageEvents.Event.KEYGUARD_HIDDEN:
+ case Event.KEYGUARD_HIDDEN:
return "KEYGUARD_HIDDEN";
+ case Event.DEVICE_SHUTDOWN:
+ return "DEVICE_SHUTDOWN";
default:
return "UNKNOWN_TYPE_" + eventType;
}
diff --git a/services/usb/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java
index 904d55e..00c7548 100644
--- a/services/usb/java/com/android/server/usb/UsbHostManager.java
+++ b/services/usb/java/com/android/server/usb/UsbHostManager.java
@@ -418,12 +418,10 @@
parser.getRawDescriptors());
// Stats collection
- if (parser.hasAudioInterface()) {
- StatsLog.write(StatsLog.USB_DEVICE_ATTACHED, newDevice.getVendorId(),
- newDevice.getProductId(), parser.hasAudioInterface(),
- parser.hasHIDInterface(), parser.hasStorageInterface(),
- StatsLog.USB_DEVICE_ATTACHED__STATE__STATE_CONNECTED, 0);
- }
+ StatsLog.write(StatsLog.USB_DEVICE_ATTACHED, newDevice.getVendorId(),
+ newDevice.getProductId(), parser.hasAudioInterface(),
+ parser.hasHIDInterface(), parser.hasStorageInterface(),
+ StatsLog.USB_DEVICE_ATTACHED__STATE__STATE_CONNECTED, 0);
}
}
@@ -455,14 +453,12 @@
if (current != null) {
UsbDescriptorParser parser = new UsbDescriptorParser(deviceAddress,
current.mDescriptors);
- if (parser.hasAudioInterface()) {
// Stats collection
- StatsLog.write(StatsLog.USB_DEVICE_ATTACHED, device.getVendorId(),
- device.getProductId(), parser.hasAudioInterface(),
- parser.hasHIDInterface(), parser.hasStorageInterface(),
- StatsLog.USB_DEVICE_ATTACHED__STATE__STATE_DISCONNECTED,
- System.currentTimeMillis() - current.mTimestamp);
- }
+ StatsLog.write(StatsLog.USB_DEVICE_ATTACHED, device.getVendorId(),
+ device.getProductId(), parser.hasAudioInterface(),
+ parser.hasHIDInterface(), parser.hasStorageInterface(),
+ StatsLog.USB_DEVICE_ATTACHED__STATE__STATE_DISCONNECTED,
+ System.currentTimeMillis() - current.mTimestamp);
}
} else {
Slog.d(TAG, "Removed device at " + deviceAddress + " was already gone");
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index bbf3d45..613c4ff 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -371,14 +371,15 @@
}
private boolean shouldEnableService(Context context) {
- // VoiceInteractionService should not be enabled on any low RAM devices
- // or devices that have not declared the recognition feature, unless the
- // device's configuration has explicitly set the config flag for a fixed
+ // VoiceInteractionService should not be enabled on devices that have not declared the
+ // recognition feature (including low-ram devices where notLowRam="true" takes effect),
+ // unless the device's configuration has explicitly set the config flag for a fixed
// voice interaction service.
- return (!ActivityManager.isLowRamDeviceStatic()
- && context.getPackageManager().hasSystemFeature(
- PackageManager.FEATURE_VOICE_RECOGNIZERS)) ||
- getForceVoiceInteractionServicePackage(context.getResources()) != null;
+ if (getForceVoiceInteractionServicePackage(context.getResources()) != null) {
+ return true;
+ }
+ return context.getPackageManager()
+ .hasSystemFeature(PackageManager.FEATURE_VOICE_RECOGNIZERS);
}
private String getForceVoiceInteractionServicePackage(Resources res) {
diff --git a/startop/view_compiler/apk_layout_compiler.cc b/startop/view_compiler/apk_layout_compiler.cc
index e95041b..09cdbd5 100644
--- a/startop/view_compiler/apk_layout_compiler.cc
+++ b/startop/view_compiler/apk_layout_compiler.cc
@@ -79,9 +79,9 @@
return visitor.can_compile();
}
-void CompileApkLayouts(const std::string& filename, CompilationTarget target,
- std::ostream& target_out) {
- auto assets = android::ApkAssets::Load(filename);
+namespace {
+void CompileApkAssetsLayouts(const std::unique_ptr<const android::ApkAssets>& assets,
+ CompilationTarget target, std::ostream& target_out) {
android::AssetManager2 resources;
resources.SetApkAssets({assets.get()});
@@ -155,5 +155,20 @@
target_out.write(image.ptr<const char>(), image.size());
}
}
+} // namespace
+
+void CompileApkLayouts(const std::string& filename, CompilationTarget target,
+ std::ostream& target_out) {
+ auto assets = android::ApkAssets::Load(filename);
+ CompileApkAssetsLayouts(assets, target, target_out);
+}
+
+void CompileApkLayoutsFd(android::base::unique_fd fd, CompilationTarget target,
+ std::ostream& target_out) {
+ constexpr const char* friendly_name{"viewcompiler assets"};
+ auto assets = android::ApkAssets::LoadFromFd(
+ std::move(fd), friendly_name, /*system=*/false, /*force_shared_lib=*/false);
+ CompileApkAssetsLayouts(assets, target, target_out);
+}
} // namespace startop
diff --git a/startop/view_compiler/apk_layout_compiler.h b/startop/view_compiler/apk_layout_compiler.h
index c85ddd6..03bd545 100644
--- a/startop/view_compiler/apk_layout_compiler.h
+++ b/startop/view_compiler/apk_layout_compiler.h
@@ -19,12 +19,16 @@
#include <string>
+#include "android-base/unique_fd.h"
+
namespace startop {
enum class CompilationTarget { kJavaLanguage, kDex };
void CompileApkLayouts(const std::string& filename, CompilationTarget target,
std::ostream& target_out);
+void CompileApkLayoutsFd(android::base::unique_fd fd, CompilationTarget target,
+ std::ostream& target_out);
} // namespace startop
diff --git a/startop/view_compiler/main.cc b/startop/view_compiler/main.cc
index 871a421..11ecde2 100644
--- a/startop/view_compiler/main.cc
+++ b/startop/view_compiler/main.cc
@@ -49,6 +49,7 @@
DEFINE_bool(apk, false, "Compile layouts in an APK");
DEFINE_bool(dex, false, "Generate a DEX file instead of Java");
+DEFINE_int32(infd, -1, "Read input from the given file descriptor");
DEFINE_string(out, kStdoutFilename, "Where to write the generated class");
DEFINE_string(package, "", "The package name for the generated class (required)");
@@ -95,7 +96,7 @@
int main(int argc, char** argv) {
constexpr size_t kProgramName = 0;
constexpr size_t kFileNameParam = 1;
- constexpr size_t kNumRequiredArgs = 2;
+ constexpr size_t kNumRequiredArgs = 1;
gflags::SetUsageMessage(
"Compile XML layout files into equivalent Java language code\n"
@@ -104,12 +105,11 @@
gflags::ParseCommandLineFlags(&argc, &argv, /*remove_flags*/ true);
gflags::CommandLineFlagInfo cmd = gflags::GetCommandLineFlagInfoOrDie("package");
- if (argc != kNumRequiredArgs || cmd.is_default) {
+ if (argc < kNumRequiredArgs || cmd.is_default) {
gflags::ShowUsageWithFlags(argv[kProgramName]);
return 1;
}
- const char* const filename = argv[kFileNameParam];
const bool is_stdout = FLAGS_out == kStdoutFilename;
std::ofstream outfile;
@@ -118,13 +118,23 @@
}
if (FLAGS_apk) {
- startop::CompileApkLayouts(
- filename,
- FLAGS_dex ? startop::CompilationTarget::kDex : startop::CompilationTarget::kJavaLanguage,
- is_stdout ? std::cout : outfile);
+ const startop::CompilationTarget target =
+ FLAGS_dex ? startop::CompilationTarget::kDex : startop::CompilationTarget::kJavaLanguage;
+ if (FLAGS_infd >= 0) {
+ startop::CompileApkLayoutsFd(
+ android::base::unique_fd{FLAGS_infd}, target, is_stdout ? std::cout : outfile);
+ } else {
+ if (argc < 2) {
+ gflags::ShowUsageWithFlags(argv[kProgramName]);
+ return 1;
+ }
+ const char* const filename = argv[kFileNameParam];
+ startop::CompileApkLayouts(filename, target, is_stdout ? std::cout : outfile);
+ }
return 0;
}
+ const char* const filename = argv[kFileNameParam];
const string layout_name = startop::util::FindLayoutNameFromFilename(filename);
XMLDocument xml;
diff --git a/telephony/java/android/provider/Telephony.java b/telephony/java/android/provider/Telephony.java
index c115a4b..15abdb7 100644
--- a/telephony/java/android/provider/Telephony.java
+++ b/telephony/java/android/provider/Telephony.java
@@ -2019,6 +2019,12 @@
/**
* Helper functions for the "threads" table used by MMS and SMS.
+ *
+ * Thread IDs are determined by the participants in a conversation and can be used to match
+ * both SMS and MMS messages.
+ *
+ * To avoid issues where applications might cache a thread ID, the thread ID of a deleted thread
+ * must not be reused to point at a new thread.
*/
public static final class Threads implements ThreadsColumns {
@@ -2072,14 +2078,10 @@
}
/**
- * Given the recipients list and subject of an unsaved message,
- * return its thread ID. If the message starts a new thread,
- * allocate a new thread ID. Otherwise, use the appropriate
- * existing thread ID.
- *
- * <p>Find the thread ID of the same set of recipients (in any order,
- * without any additions). If one is found, return it. Otherwise,
- * return a unique thread ID.</p>
+ * Given a set of recipients return its thread ID.
+ * <p>
+ * If a thread exists containing the provided participants, return its thread ID. Otherwise,
+ * this will create a new thread containing the provided participants and return its ID.
*/
public static long getOrCreateThreadId(
Context context, Set<String> recipients) {
diff --git a/telephony/java/android/telephony/AvailableNetworkInfo.java b/telephony/java/android/telephony/AvailableNetworkInfo.java
index fe07370..4da79b3 100644
--- a/telephony/java/android/telephony/AvailableNetworkInfo.java
+++ b/telephony/java/android/telephony/AvailableNetworkInfo.java
@@ -110,6 +110,7 @@
private AvailableNetworkInfo(Parcel in) {
mSubId = in.readInt();
mPriority = in.readInt();
+ mMccMncs = new ArrayList<>();
in.readStringList(mMccMncs);
}
diff --git a/core/java/android/hardware/location/ActivityChangedEvent.aidl b/telephony/java/android/telephony/CarrierRestrictionRules.aidl
similarity index 76%
rename from core/java/android/hardware/location/ActivityChangedEvent.aidl
rename to telephony/java/android/telephony/CarrierRestrictionRules.aidl
index 21f2445..8b1f0b9 100644
--- a/core/java/android/hardware/location/ActivityChangedEvent.aidl
+++ b/telephony/java/android/telephony/CarrierRestrictionRules.aidl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright 2018 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.
@@ -11,9 +11,10 @@
* 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
+ * limitations under the License.
*/
-package android.hardware.location;
+/** @hide */
+package android.telephony;
-parcelable ActivityChangedEvent;
\ No newline at end of file
+parcelable CarrierRestrictionRules;
diff --git a/telephony/java/android/telephony/CarrierRestrictionRules.java b/telephony/java/android/telephony/CarrierRestrictionRules.java
new file mode 100644
index 0000000..37847ae
--- /dev/null
+++ b/telephony/java/android/telephony/CarrierRestrictionRules.java
@@ -0,0 +1,277 @@
+/*
+ * Copyright (C) 2018 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 android.telephony;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.service.carrier.CarrierIdentifier;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Contains the list of carrier restrictions.
+ * Allowed list: it indicates the list of carriers that are allowed.
+ * Excluded list: it indicates the list of carriers that are excluded.
+ * Default carrier restriction: it indicates the default behavior and the priority between the two
+ * lists:
+ * - not allowed: the device only allows usage of carriers that are present in the allowed list
+ * and not present in the excluded list. This implies that if a carrier is not present in either
+ * list, it is not allowed.
+ * - allowed: the device allows all carriers, except those present in the excluded list and not
+ * present in the allowed list. This implies that if a carrier is not present in either list,
+ * it is allowed.
+ * MultiSim policy: it indicates the behavior in case of devices with two or more SIM cards.
+ * - MULTISIM_POLICY_NONE: the same configuration is applied to all SIM slots independently. This
+ * is the default value if none is set.
+ * - MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT: it indicates that any SIM card can be used
+ * as far as one SIM card matching the configuration is present in the device.
+ *
+ * Both lists support the character '?' as wild character. For example, an entry indicating
+ * MCC=310 and MNC=??? will match all networks with MCC=310.
+ *
+ * Example 1: Allowed list contains MCC and MNC of operator A. Excluded list contains operator B,
+ * which has same MCC and MNC, but also GID1 value. The priority allowed list is set
+ * to true. Only SIM cards of operator A are allowed, but not those of B or any other
+ * operator.
+ * Example 2: Allowed list contains MCC and MNC of operator A. Excluded list contains an entry
+ * with same MCC, and '???' as MNC. The priority allowed list is set to false.
+ * SIM cards of operator A and all SIM cards with a different MCC value are allowed.
+ * SIM cards of operators with same MCC value and different MNC are not allowed.
+ * @hide
+ */
+@SystemApi
+public final class CarrierRestrictionRules implements Parcelable {
+ /**
+ * The device only allows usage of carriers that are present in the allowed list and not
+ * present in the excluded list. This implies that if a carrier is not present in either list,
+ * it is not allowed.
+ */
+ public static final int CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED = 0;
+
+ /**
+ * The device allows all carriers, except those present in the excluded list and not present
+ * in the allowed list. This implies that if a carrier is not present in either list, it is
+ * allowed.
+ */
+ public static final int CARRIER_RESTRICTION_DEFAULT_ALLOWED = 1;
+
+ /** The same configuration is applied to all SIM slots independently. */
+ public static final int MULTISIM_POLICY_NONE = 0;
+
+ /** Any SIM card can be used as far as one SIM card matching the configuration is present. */
+ public static final int MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT = 1;
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = "MULTISIM_POLICY_",
+ value = {MULTISIM_POLICY_NONE, MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT})
+ public @interface MultiSimPolicy {}
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = "CARRIER_RESTRICTION_DEFAULT_",
+ value = {CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED, CARRIER_RESTRICTION_DEFAULT_ALLOWED})
+ public @interface CarrierRestrictionDefault {}
+
+ private List<CarrierIdentifier> mAllowedCarriers;
+ private List<CarrierIdentifier> mExcludedCarriers;
+ @CarrierRestrictionDefault
+ private int mCarrierRestrictionDefault;
+ @MultiSimPolicy
+ private int mMultiSimPolicy;
+
+ private CarrierRestrictionRules() {
+ mAllowedCarriers = new ArrayList<CarrierIdentifier>();
+ mExcludedCarriers = new ArrayList<CarrierIdentifier>();
+ mCarrierRestrictionDefault = CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED;
+ mMultiSimPolicy = MULTISIM_POLICY_NONE;
+ }
+
+ private CarrierRestrictionRules(Parcel in) {
+ mAllowedCarriers = new ArrayList<CarrierIdentifier>();
+ mExcludedCarriers = new ArrayList<CarrierIdentifier>();
+
+ in.readTypedList(mAllowedCarriers, CarrierIdentifier.CREATOR);
+ in.readTypedList(mExcludedCarriers, CarrierIdentifier.CREATOR);
+ mCarrierRestrictionDefault = in.readInt();
+ mMultiSimPolicy = in.readInt();
+ }
+
+ /**
+ * Creates a new builder for this class
+ * @hide
+ */
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ /**
+ * Indicates if all carriers are allowed
+ */
+ public boolean isAllCarriersAllowed() {
+ return (mAllowedCarriers.isEmpty() && mExcludedCarriers.isEmpty()
+ && mCarrierRestrictionDefault == CARRIER_RESTRICTION_DEFAULT_ALLOWED);
+ }
+
+ /**
+ * Retrieves list of allowed carriers
+ *
+ * @return the list of allowed carriers
+ */
+ public @NonNull List<CarrierIdentifier> getAllowedCarriers() {
+ return mAllowedCarriers;
+ }
+
+ /**
+ * Retrieves list of excluded carriers
+ *
+ * @return the list of excluded carriers
+ */
+ public @NonNull List<CarrierIdentifier> getExcludedCarriers() {
+ return mExcludedCarriers;
+ }
+
+ /**
+ * Retrieves the default behavior of carrier restrictions
+ */
+ public @CarrierRestrictionDefault int getDefaultCarrierRestriction() {
+ return mCarrierRestrictionDefault;
+ }
+
+ /**
+ * @return The policy used for multi-SIM devices
+ */
+ public @MultiSimPolicy int getMultiSimPolicy() {
+ return mMultiSimPolicy;
+ }
+
+ /**
+ * {@link Parcelable#writeToParcel}
+ */
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeTypedList(mAllowedCarriers);
+ out.writeTypedList(mExcludedCarriers);
+ out.writeInt(mCarrierRestrictionDefault);
+ out.writeInt(mMultiSimPolicy);
+ }
+
+ /**
+ * {@link Parcelable#describeContents}
+ */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /**
+ * {@link Parcelable.Creator}
+ */
+ public static final Creator<CarrierRestrictionRules> CREATOR =
+ new Creator<CarrierRestrictionRules>() {
+ @Override
+ public CarrierRestrictionRules createFromParcel(Parcel in) {
+ return new CarrierRestrictionRules(in);
+ }
+
+ @Override
+ public CarrierRestrictionRules[] newArray(int size) {
+ return new CarrierRestrictionRules[size];
+ }
+ };
+
+ @Override
+ public String toString() {
+ return "CarrierRestrictionRules(allowed:" + mAllowedCarriers + ", excluded:"
+ + mExcludedCarriers + ", default:" + mCarrierRestrictionDefault
+ + ", multisim policy:" + mMultiSimPolicy + ")";
+ }
+
+ /**
+ * Builder for a {@link CarrierRestrictionRules}.
+ */
+ public static class Builder {
+ private final CarrierRestrictionRules mRules;
+
+ /** {@hide} */
+ public Builder() {
+ mRules = new CarrierRestrictionRules();
+ }
+
+ /** build command */
+ public CarrierRestrictionRules build() {
+ return mRules;
+ }
+
+ /**
+ * Indicate that all carriers are allowed.
+ */
+ public Builder setAllCarriersAllowed() {
+ mRules.mAllowedCarriers.clear();
+ mRules.mExcludedCarriers.clear();
+ mRules.mCarrierRestrictionDefault = CARRIER_RESTRICTION_DEFAULT_ALLOWED;
+ return this;
+ }
+
+ /**
+ * Set list of allowed carriers.
+ *
+ * @param allowedCarriers list of allowed carriers
+ */
+ public Builder setAllowedCarriers(List<CarrierIdentifier> allowedCarriers) {
+ mRules.mAllowedCarriers = new ArrayList<CarrierIdentifier>(allowedCarriers);
+ return this;
+ }
+
+ /**
+ * Set list of excluded carriers.
+ *
+ * @param excludedCarriers list of excluded carriers
+ */
+ public Builder setExcludedCarriers(List<CarrierIdentifier> excludedCarriers) {
+ mRules.mExcludedCarriers = new ArrayList<CarrierIdentifier>(excludedCarriers);
+ return this;
+ }
+
+ /**
+ * Set the default behavior of the carrier restrictions
+ *
+ * @param carrierRestrictionDefault prioritized carrier list
+ */
+ public Builder setDefaultCarrierRestriction(
+ @CarrierRestrictionDefault int carrierRestrictionDefault) {
+ mRules.mCarrierRestrictionDefault = carrierRestrictionDefault;
+ return this;
+ }
+
+ /**
+ * Set the policy to be used for multi-SIM devices
+ *
+ * @param multiSimPolicy multi SIM policy
+ */
+ public Builder setMultiSimPolicy(@MultiSimPolicy int multiSimPolicy) {
+ mRules.mMultiSimPolicy = multiSimPolicy;
+ return this;
+ }
+ }
+}
diff --git a/telephony/java/android/telephony/CellConfigLte.java b/telephony/java/android/telephony/CellConfigLte.java
index 35769f0..eafbfbc 100644
--- a/telephony/java/android/telephony/CellConfigLte.java
+++ b/telephony/java/android/telephony/CellConfigLte.java
@@ -34,6 +34,11 @@
}
/** @hide */
+ public CellConfigLte(android.hardware.radio.V1_4.CellConfigLte cellConfig) {
+ mIsEndcAvailable = cellConfig.isEndcAvailable;
+ }
+
+ /** @hide */
public CellConfigLte(boolean isEndcAvailable) {
mIsEndcAvailable = isEndcAvailable;
}
diff --git a/telephony/java/android/telephony/CellInfo.java b/telephony/java/android/telephony/CellInfo.java
index b761bd7..8ce5c54 100644
--- a/telephony/java/android/telephony/CellInfo.java
+++ b/telephony/java/android/telephony/CellInfo.java
@@ -19,8 +19,10 @@
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.UnsupportedAppUsage;
+import android.hardware.radio.V1_4.CellInfo.Info;
import android.os.Parcel;
import android.os.Parcelable;
+import android.os.SystemClock;
import com.android.internal.annotations.VisibleForTesting;
@@ -318,6 +320,13 @@
}
/** @hide */
+ protected CellInfo(android.hardware.radio.V1_4.CellInfo ci) {
+ this.mRegistered = ci.isRegistered;
+ this.mTimeStamp = SystemClock.elapsedRealtimeNanos();
+ this.mCellConnectionStatus = ci.connectionStatus;
+ }
+
+ /** @hide */
public static CellInfo create(android.hardware.radio.V1_0.CellInfo ci) {
if (ci == null) return null;
switch(ci.cellInfoType) {
@@ -342,4 +351,17 @@
default: return null;
}
}
+
+ /** @hide */
+ public static CellInfo create(android.hardware.radio.V1_4.CellInfo ci) {
+ if (ci == null) return null;
+ switch (ci.info.getDiscriminator()) {
+ case Info.hidl_discriminator.gsm: return new CellInfoGsm(ci);
+ case Info.hidl_discriminator.cdma: return new CellInfoCdma(ci);
+ case Info.hidl_discriminator.lte: return new CellInfoLte(ci);
+ case Info.hidl_discriminator.wcdma: return new CellInfoWcdma(ci);
+ case Info.hidl_discriminator.tdscdma: return new CellInfoTdscdma(ci);
+ default: return null;
+ }
+ }
}
diff --git a/telephony/java/android/telephony/CellInfoCdma.java b/telephony/java/android/telephony/CellInfoCdma.java
index c9f07da..4440108 100644
--- a/telephony/java/android/telephony/CellInfoCdma.java
+++ b/telephony/java/android/telephony/CellInfoCdma.java
@@ -67,6 +67,15 @@
new CellSignalStrengthCdma(cic.signalStrengthCdma, cic.signalStrengthEvdo);
}
+ /** @hide */
+ public CellInfoCdma(android.hardware.radio.V1_4.CellInfo ci) {
+ super(ci);
+ final android.hardware.radio.V1_2.CellInfoCdma cic = ci.info.cdma();
+ mCellIdentityCdma = new CellIdentityCdma(cic.cellIdentityCdma);
+ mCellSignalStrengthCdma =
+ new CellSignalStrengthCdma(cic.signalStrengthCdma, cic.signalStrengthEvdo);
+ }
+
@Override
public CellIdentityCdma getCellIdentity() {
return mCellIdentityCdma;
diff --git a/telephony/java/android/telephony/CellInfoGsm.java b/telephony/java/android/telephony/CellInfoGsm.java
index ad16dfa..248adfc 100644
--- a/telephony/java/android/telephony/CellInfoGsm.java
+++ b/telephony/java/android/telephony/CellInfoGsm.java
@@ -63,6 +63,14 @@
mCellSignalStrengthGsm = new CellSignalStrengthGsm(cig.signalStrengthGsm);
}
+ /** @hide */
+ public CellInfoGsm(android.hardware.radio.V1_4.CellInfo ci) {
+ super(ci);
+ final android.hardware.radio.V1_2.CellInfoGsm cig = ci.info.gsm();
+ mCellIdentityGsm = new CellIdentityGsm(cig.cellIdentityGsm);
+ mCellSignalStrengthGsm = new CellSignalStrengthGsm(cig.signalStrengthGsm);
+ }
+
@Override
public CellIdentityGsm getCellIdentity() {
return mCellIdentityGsm;
diff --git a/telephony/java/android/telephony/CellInfoLte.java b/telephony/java/android/telephony/CellInfoLte.java
index 7593831..8e8ce8a 100644
--- a/telephony/java/android/telephony/CellInfoLte.java
+++ b/telephony/java/android/telephony/CellInfoLte.java
@@ -70,6 +70,15 @@
mCellConfig = new CellConfigLte();
}
+ /** @hide */
+ public CellInfoLte(android.hardware.radio.V1_4.CellInfo ci) {
+ super(ci);
+ final android.hardware.radio.V1_4.CellInfoLte cil = ci.info.lte();
+ mCellIdentityLte = new CellIdentityLte(cil.base.cellIdentityLte);
+ mCellSignalStrengthLte = new CellSignalStrengthLte(cil.base.signalStrengthLte);
+ mCellConfig = new CellConfigLte(cil.cellConfig);
+ }
+
@Override
public CellIdentityLte getCellIdentity() {
if (DBG) log("getCellIdentity: " + mCellIdentityLte);
diff --git a/telephony/java/android/telephony/CellInfoTdscdma.java b/telephony/java/android/telephony/CellInfoTdscdma.java
index a8c49b7..2ab38fb 100644
--- a/telephony/java/android/telephony/CellInfoTdscdma.java
+++ b/telephony/java/android/telephony/CellInfoTdscdma.java
@@ -64,6 +64,14 @@
mCellSignalStrengthTdscdma = new CellSignalStrengthTdscdma(cit.signalStrengthTdscdma);
}
+ /** @hide */
+ public CellInfoTdscdma(android.hardware.radio.V1_4.CellInfo ci) {
+ super(ci);
+ final android.hardware.radio.V1_2.CellInfoTdscdma cit = ci.info.tdscdma();
+ mCellIdentityTdscdma = new CellIdentityTdscdma(cit.cellIdentityTdscdma);
+ mCellSignalStrengthTdscdma = new CellSignalStrengthTdscdma(cit.signalStrengthTdscdma);
+ }
+
@Override public CellIdentityTdscdma getCellIdentity() {
return mCellIdentityTdscdma;
}
diff --git a/telephony/java/android/telephony/CellInfoWcdma.java b/telephony/java/android/telephony/CellInfoWcdma.java
index a427e80..65e0470 100644
--- a/telephony/java/android/telephony/CellInfoWcdma.java
+++ b/telephony/java/android/telephony/CellInfoWcdma.java
@@ -63,6 +63,14 @@
mCellSignalStrengthWcdma = new CellSignalStrengthWcdma(ciw.signalStrengthWcdma);
}
+ /** @hide */
+ public CellInfoWcdma(android.hardware.radio.V1_4.CellInfo ci) {
+ super(ci);
+ final android.hardware.radio.V1_2.CellInfoWcdma ciw = ci.info.wcdma();
+ mCellIdentityWcdma = new CellIdentityWcdma(ciw.cellIdentityWcdma);
+ mCellSignalStrengthWcdma = new CellSignalStrengthWcdma(ciw.signalStrengthWcdma);
+ }
+
@Override
public CellIdentityWcdma getCellIdentity() {
return mCellIdentityWcdma;
diff --git a/telephony/java/android/telephony/PhoneStateListener.java b/telephony/java/android/telephony/PhoneStateListener.java
index c816701..9fee593 100644
--- a/telephony/java/android/telephony/PhoneStateListener.java
+++ b/telephony/java/android/telephony/PhoneStateListener.java
@@ -805,9 +805,11 @@
PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
if (psl == null) return;
- Binder.withCleanCallingIdentity(
- () -> mExecutor.execute(
- () -> psl.onDataConnectionStateChanged(state, networkType)));
+ Binder.withCleanCallingIdentity(() -> mExecutor.execute(
+ () -> {
+ psl.onDataConnectionStateChanged(state, networkType);
+ psl.onDataConnectionStateChanged(state);
+ }));
}
public void onDataActivity(int direction) {
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
index e77042d..ad3ca6d 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -86,11 +86,6 @@
CellSignalStrengthTdscdma mTdscdma;
CellSignalStrengthLte mLte;
- /** Parameters from the framework */
- @UnsupportedAppUsage
- private int mLteRsrpBoost; // offset to be reduced from the rsrp threshold while calculating
- // signal strength level
-
/**
* Create a new SignalStrength from a intent notifier Bundle
*
@@ -140,7 +135,6 @@
mWcdma = wcdma;
mTdscdma = tdscdma;
mLte = lte;
- mLteRsrpBoost = 0;
}
/**
@@ -211,7 +205,6 @@
/** @hide */
public void updateLevel(PersistableBundle cc, ServiceState ss) {
- mLteRsrpBoost = ss.getLteEarfcnRsrpBoost();
mCdma.updateLevel(cc, ss);
mGsm.updateLevel(cc, ss);
mWcdma.updateLevel(cc, ss);
@@ -241,7 +234,6 @@
mWcdma = new CellSignalStrengthWcdma(s.mWcdma);
mTdscdma = new CellSignalStrengthTdscdma(s.mTdscdma);
mLte = new CellSignalStrengthLte(s.mLte);
- mLteRsrpBoost = s.mLteRsrpBoost;
}
/**
@@ -258,7 +250,6 @@
mWcdma = in.readParcelable(CellSignalStrengthWcdma.class.getClassLoader());
mTdscdma = in.readParcelable(CellSignalStrengthTdscdma.class.getClassLoader());
mLte = in.readParcelable(CellSignalStrengthLte.class.getClassLoader());
- mLteRsrpBoost = in.readInt();
}
/**
@@ -270,8 +261,6 @@
out.writeParcelable(mWcdma, flags);
out.writeParcelable(mTdscdma, flags);
out.writeParcelable(mLte, flags);
-
- out.writeInt(mLteRsrpBoost);
}
/**
@@ -384,11 +373,6 @@
return mLte.getCqi();
}
- /** @hide */
- public int getLteRsrpBoost() {
- return mLteRsrpBoost;
- }
-
/**
* Retrieve an abstract level value for the overall signal strength.
*
@@ -616,7 +600,7 @@
*/
@Override
public int hashCode() {
- return Objects.hash(mCdma, mGsm, mWcdma, mTdscdma, mLte, mLteRsrpBoost);
+ return Objects.hash(mCdma, mGsm, mWcdma, mTdscdma, mLte);
}
/**
@@ -632,8 +616,7 @@
&& mGsm.equals(s.mGsm)
&& mWcdma.equals(s.mWcdma)
&& mTdscdma.equals(s.mTdscdma)
- && mLte.equals(s.mLte)
- && mLteRsrpBoost == s.mLteRsrpBoost;
+ && mLte.equals(s.mLte);
}
/**
@@ -647,7 +630,6 @@
.append(",mWcdma=").append(mWcdma)
.append(",mTdscdma=").append(mTdscdma)
.append(",mLte=").append(mLte)
- .append(",mLteRsrpBoost=").append(mLteRsrpBoost)
.append(",primary=").append(getPrimary().getClass().getSimpleName())
.append("}")
.toString();
@@ -666,8 +648,6 @@
mWcdma = m.getParcelable("Wcdma");
mTdscdma = m.getParcelable("Tdscdma");
mLte = m.getParcelable("Lte");
-
- mLteRsrpBoost = m.getInt("LteRsrpBoost");
}
/**
@@ -683,8 +663,6 @@
m.putParcelable("Wcdma", mWcdma);
m.putParcelable("Tdscdma", mTdscdma);
m.putParcelable("Lte", mLte);
-
- m.putInt("LteRsrpBoost", mLteRsrpBoost);
}
/**
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index babeb7b..8053353 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -9055,6 +9055,8 @@
* <p>This method works only on devices with {@link
* android.content.pm.PackageManager#FEATURE_TELEPHONY_CARRIERLOCK} enabled.
*
+ * @deprecated use setCarrierRestrictionRules instead
+ *
* @return The number of carriers set successfully. Should be length of
* carrierList on success; -1 if carrierList null or on error.
* @hide
@@ -9062,44 +9064,144 @@
@SystemApi
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public int setAllowedCarriers(int slotIndex, List<CarrierIdentifier> carriers) {
+ // Execute the method setCarrierRestrictionRules with an empty excluded list and
+ // indicating priority for the allowed list.
+ CarrierRestrictionRules carrierRestrictionRules = CarrierRestrictionRules.newBuilder()
+ .setAllowedCarriers(carriers)
+ .setDefaultCarrierRestriction(
+ CarrierRestrictionRules.CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED)
+ .build();
+
+ int result = setCarrierRestrictionRules(carrierRestrictionRules);
+
+ // Convert boolean result into int, as required by this method.
+ if (result == SET_CARRIER_RESTRICTION_SUCCESS) {
+ return carriers.size();
+ } else {
+ return -1;
+ }
+ }
+
+ /**
+ * The carrier restrictions were successfully set.
+ * @hide
+ */
+ @SystemApi
+ public static final int SET_CARRIER_RESTRICTION_SUCCESS = 0;
+
+ /**
+ * The carrier restrictions were not set due to lack of support in the modem. This can happen
+ * if the modem does not support setting the carrier restrictions or if the configuration
+ * passed in the {@code setCarrierRestrictionRules} is not supported by the modem.
+ * @hide
+ */
+ @SystemApi
+ public static final int SET_CARRIER_RESTRICTION_NOT_SUPPORTED = 1;
+
+ /**
+ * The setting of carrier restrictions failed.
+ * @hide
+ */
+ @SystemApi
+ public static final int SET_CARRIER_RESTRICTION_ERROR = 2;
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"SET_CARRIER_RESTRICTION_"},
+ value = {
+ SET_CARRIER_RESTRICTION_SUCCESS,
+ SET_CARRIER_RESTRICTION_NOT_SUPPORTED,
+ SET_CARRIER_RESTRICTION_ERROR
+ })
+ public @interface SetCarrierRestrictionResult {}
+
+ /**
+ * Set the allowed carrier list and the excluded carrier list indicating the priority between
+ * the two lists.
+ * Requires system privileges.
+ *
+ * <p>Requires Permission:
+ * {@link android.Manifest.permission#MODIFY_PHONE_STATE}
+ *
+ * <p>This method works only on devices with {@link
+ * android.content.pm.PackageManager#FEATURE_TELEPHONY_CARRIERLOCK} enabled.
+ *
+ * @return {@link #SET_CARRIER_RESTRICTION_SUCCESS} in case of success.
+ * {@link #SET_CARRIER_RESTRICTION_NOT_SUPPORTED} if the modem does not support the
+ * configuration. {@link #SET_CARRIER_RESTRICTION_ERROR} in all other error cases.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+ @SetCarrierRestrictionResult
+ public int setCarrierRestrictionRules(@NonNull CarrierRestrictionRules rules) {
try {
ITelephony service = getITelephony();
if (service != null) {
- return service.setAllowedCarriers(slotIndex, carriers);
+ return service.setAllowedCarriers(rules);
}
} catch (RemoteException e) {
Log.e(TAG, "Error calling ITelephony#setAllowedCarriers", e);
} catch (NullPointerException e) {
Log.e(TAG, "Error calling ITelephony#setAllowedCarriers", e);
}
- return -1;
+ return SET_CARRIER_RESTRICTION_ERROR;
}
/**
* Get the allowed carrier list for slotIndex.
- * Require system privileges. In the future we may add this to carrier APIs.
+ * Requires system privileges.
*
* <p>This method returns valid data on devices with {@link
* android.content.pm.PackageManager#FEATURE_TELEPHONY_CARRIERLOCK} enabled.
*
+ * @deprecated Apps should use {@link getCarriersRestrictionRules} to retrieve the list of
+ * allowed and excliuded carriers, as the result of this API is valid only when the excluded
+ * list is empty. This API could return an empty list, even if some restrictions are present.
+ *
* @return List of {@link android.telephony.CarrierIdentifier}; empty list
* means all carriers are allowed.
* @hide
*/
+ @Deprecated
@SystemApi
@RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public List<CarrierIdentifier> getAllowedCarriers(int slotIndex) {
+ CarrierRestrictionRules carrierRestrictionRule = getCarrierRestrictionRules();
+ if (carrierRestrictionRule != null) {
+ return carrierRestrictionRule.getAllowedCarriers();
+ }
+ return new ArrayList<CarrierIdentifier>(0);
+ }
+
+ /**
+ * Get the allowed carrier list and the excluded carrier list indicating the priority between
+ * the two lists.
+ * Require system privileges. In the future we may add this to carrier APIs.
+ *
+ * <p>This method returns valid data on devices with {@link
+ * android.content.pm.PackageManager#FEATURE_TELEPHONY_CARRIERLOCK} enabled.
+ *
+ * @return {@link CarrierRestrictionRules} which contains the allowed carrier list and the
+ * excluded carrier list with the priority between the two lists. Returns {@code null}
+ * in case of error.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+ @Nullable
+ public CarrierRestrictionRules getCarrierRestrictionRules() {
try {
ITelephony service = getITelephony();
if (service != null) {
- return service.getAllowedCarriers(slotIndex);
+ return service.getAllowedCarriers();
}
} catch (RemoteException e) {
Log.e(TAG, "Error calling ITelephony#getAllowedCarriers", e);
} catch (NullPointerException e) {
Log.e(TAG, "Error calling ITelephony#getAllowedCarriers", e);
}
- return new ArrayList<CarrierIdentifier>(0);
+ return null;
}
/**
@@ -9963,7 +10065,7 @@
boolean ret = false;
try {
IOns iOpportunisticNetworkService = getIOns();
- if (iOpportunisticNetworkService != null) {
+ if (iOpportunisticNetworkService != null && availableNetworks != null) {
ret = iOpportunisticNetworkService.updateAvailableNetworks(availableNetworks,
pkgForDebug);
}
@@ -9972,4 +10074,33 @@
}
return ret;
}
+
+ /**
+ * Enable or disable a logical modem stack. When a logical modem is disabled, the corresponding
+ * SIM will still be visible to the user but its mapping modem will not have any radio activity.
+ * For example, we will disable a modem when user or system believes the corresponding SIM
+ * is temporarily not needed (e.g. out of coverage), and will enable it back on when needed.
+ *
+ * Requires that the calling app has permission
+ * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}.
+ * @param slotIndex which corresponding modem will operate on.
+ * @param enable whether to enable or disable the modem stack.
+ * @return whether the operation is successful.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+ public boolean enableModemForSlot(int slotIndex, boolean enable) {
+ boolean ret = false;
+ try {
+ ITelephony telephony = getITelephony();
+ if (telephony != null) {
+ ret = telephony.enableModemForSlot(slotIndex, enable);
+ }
+ } catch (RemoteException ex) {
+ Log.e(TAG, "enableModem RemoteException", ex);
+ }
+ return ret;
+ }
}
diff --git a/telephony/java/android/telephony/emergency/EmergencyNumber.java b/telephony/java/android/telephony/emergency/EmergencyNumber.java
index a5f56bb..e68256d 100644
--- a/telephony/java/android/telephony/emergency/EmergencyNumber.java
+++ b/telephony/java/android/telephony/emergency/EmergencyNumber.java
@@ -27,6 +27,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
@@ -176,6 +177,12 @@
* Bit-field which indicates the number is from the platform-maintained database.
*/
public static final int EMERGENCY_NUMBER_SOURCE_DATABASE = 1 << 4;
+ /**
+ * Bit-field which indicates the number is from test mode.
+ *
+ * @hide
+ */
+ public static final int EMERGENCY_NUMBER_SOURCE_TEST = 1 << 5;
/** Bit-field which indicates the number is from the modem config. */
public static final int EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG =
EmergencyNumberSource.MODEM_CONFIG;
@@ -327,6 +334,21 @@
}
/**
+ * Returns the bitmask of emergency service categories of the emergency number for
+ * internal dialing.
+ *
+ * @return bitmask of the emergency service categories
+ *
+ * @hide
+ */
+ public @EmergencyServiceCategories int getEmergencyServiceCategoryBitmaskInternalDial() {
+ if (mEmergencyNumberSourceBitmask == EMERGENCY_NUMBER_SOURCE_DATABASE) {
+ return EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED;
+ }
+ return mEmergencyServiceCategoryBitmask;
+ }
+
+ /**
* Returns the emergency service categories of the emergency number.
*
* Note: if the emergency number is in {@link #EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED}, only
@@ -577,6 +599,7 @@
emergencyNumberList.remove(i--);
}
}
+ Collections.sort(emergencyNumberList);
}
/**
@@ -613,6 +636,12 @@
if (first.getEmergencyCallRouting() != second.getEmergencyCallRouting()) {
return false;
}
+ // Never merge two numbers if one of them is from test mode but the other one is not;
+ // This supports to remove a number from the test mode.
+ if (first.isFromSources(EMERGENCY_NUMBER_SOURCE_TEST)
+ ^ second.isFromSources(EMERGENCY_NUMBER_SOURCE_TEST)) {
+ return false;
+ }
return true;
}
@@ -638,4 +667,13 @@
}
return null;
}
+
+ /**
+ * Validate Emergency Number address that only allows '0'-'9', '*', or '#'
+ *
+ * @hide
+ */
+ public static boolean validateEmergencyNumberAddress(String address) {
+ return address.matches("[0-9*#]+");
+ }
}
diff --git a/telephony/java/android/telephony/euicc/EuiccManager.java b/telephony/java/android/telephony/euicc/EuiccManager.java
index cc9befe..0e5c71d 100644
--- a/telephony/java/android/telephony/euicc/EuiccManager.java
+++ b/telephony/java/android/telephony/euicc/EuiccManager.java
@@ -30,6 +30,7 @@
import android.os.Bundle;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.telephony.TelephonyManager;
import com.android.internal.telephony.euicc.IEuiccController;
@@ -40,7 +41,11 @@
* EuiccManager is the application interface to eUICCs, or eSIMs/embedded SIMs.
*
* <p>You do not instantiate this class directly; instead, you retrieve an instance through
- * {@link Context#getSystemService(String)} and {@link Context#EUICC_SERVICE}.
+ * {@link Context#getSystemService(String)} and {@link Context#EUICC_SERVICE}. This instance will be
+ * created using the default eUICC.
+ *
+ * <p>On a device with multiple eUICCs, you may want to create multiple EuiccManagers. To do this
+ * you can call {@link #createForCardId}.
*
* <p>See {@link #isEnabled} before attempting to use these APIs.
*/
@@ -318,10 +323,29 @@
public static final int EUICC_OTA_STATUS_UNAVAILABLE = 5;
private final Context mContext;
+ private final int mCardId;
/** @hide */
public EuiccManager(Context context) {
mContext = context;
+ TelephonyManager tm = (TelephonyManager)
+ context.getSystemService(Context.TELEPHONY_SERVICE);
+ mCardId = tm.getCardIdForDefaultEuicc();
+ }
+
+ /** @hide */
+ private EuiccManager(Context context, int cardId) {
+ mContext = context;
+ mCardId = cardId;
+ }
+
+ /**
+ * Create a new EuiccManager object pinned to the given card ID.
+ *
+ * @return an EuiccManager that uses the given card ID for all calls.
+ */
+ public EuiccManager createForCardId(int cardId) {
+ return new EuiccManager(mContext, cardId);
}
/**
@@ -337,14 +361,15 @@
public boolean isEnabled() {
// In the future, this may reach out to IEuiccController (if non-null) to check any dynamic
// restrictions.
- return getIEuiccController() != null;
+ return getIEuiccController() != null && mCardId != TelephonyManager.INVALID_CARD_ID;
}
/**
* Returns the EID identifying the eUICC hardware.
*
* <p>Requires that the calling app has carrier privileges on the active subscription on the
- * eUICC.
+ * current eUICC. A calling app with carrier privileges for one eUICC may not necessarily have
+ * access to the EID of another eUICC.
*
* @return the EID. May be null if {@link #isEnabled()} is false or the eUICC is not ready.
*/
@@ -354,7 +379,7 @@
return null;
}
try {
- return getIEuiccController().getEid();
+ return getIEuiccController().getEid(mCardId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -377,7 +402,7 @@
return EUICC_OTA_STATUS_UNAVAILABLE;
}
try {
- return getIEuiccController().getOtaStatus();
+ return getIEuiccController().getOtaStatus(mCardId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -387,10 +412,10 @@
* Attempt to download the given {@link DownloadableSubscription}.
*
* <p>Requires the {@code android.Manifest.permission#WRITE_EMBEDDED_SUBSCRIPTIONS} permission,
- * or the calling app must be authorized to manage both the currently-active subscription and
- * the subscription to be downloaded according to the subscription metadata. Without the former,
- * an {@link #EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR} will be returned in the callback
- * intent to prompt the user to accept the download.
+ * or the calling app must be authorized to manage both the currently-active subscription on the
+ * current eUICC and the subscription to be downloaded according to the subscription metadata.
+ * Without the former, an {@link #EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR} will be
+ * returned in the callback intent to prompt the user to accept the download.
*
* @param subscription the subscription to download.
* @param switchAfterDownload if true, the profile will be activated upon successful download.
@@ -404,7 +429,7 @@
return;
}
try {
- getIEuiccController().downloadSubscription(subscription, switchAfterDownload,
+ getIEuiccController().downloadSubscription(mCardId, subscription, switchAfterDownload,
mContext.getOpPackageName(), null /* resolvedBundle */, callbackIntent);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -471,7 +496,7 @@
return;
}
try {
- getIEuiccController().continueOperation(resolutionIntent, resolutionExtras);
+ getIEuiccController().continueOperation(mCardId, resolutionIntent, resolutionExtras);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -503,8 +528,8 @@
return;
}
try {
- getIEuiccController().getDownloadableSubscriptionMetadata(
- subscription, mContext.getOpPackageName(), callbackIntent);
+ getIEuiccController().getDownloadableSubscriptionMetadata(mCardId, subscription,
+ mContext.getOpPackageName(), callbackIntent);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -533,7 +558,7 @@
return;
}
try {
- getIEuiccController().getDefaultDownloadableSubscriptionList(
+ getIEuiccController().getDefaultDownloadableSubscriptionList(mCardId,
mContext.getOpPackageName(), callbackIntent);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -552,7 +577,7 @@
return null;
}
try {
- return getIEuiccController().getEuiccInfo();
+ return getIEuiccController().getEuiccInfo(mCardId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -578,7 +603,7 @@
return;
}
try {
- getIEuiccController().deleteSubscription(
+ getIEuiccController().deleteSubscription(mCardId,
subscriptionId, mContext.getOpPackageName(), callbackIntent);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -606,7 +631,7 @@
return;
}
try {
- getIEuiccController().switchToSubscription(
+ getIEuiccController().switchToSubscription(mCardId,
subscriptionId, mContext.getOpPackageName(), callbackIntent);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -632,7 +657,7 @@
return;
}
try {
- getIEuiccController().updateSubscriptionNickname(
+ getIEuiccController().updateSubscriptionNickname(mCardId,
subscriptionId, nickname, mContext.getOpPackageName(), callbackIntent);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -656,7 +681,7 @@
return;
}
try {
- getIEuiccController().eraseSubscriptions(callbackIntent);
+ getIEuiccController().eraseSubscriptions(mCardId, callbackIntent);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -686,7 +711,7 @@
return;
}
try {
- getIEuiccController().retainSubscriptionsForFactoryReset(callbackIntent);
+ getIEuiccController().retainSubscriptionsForFactoryReset(mCardId, callbackIntent);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java
index 525a96a..59167b7 100644
--- a/telephony/java/android/telephony/ims/ImsCallProfile.java
+++ b/telephony/java/android/telephony/ims/ImsCallProfile.java
@@ -347,6 +347,9 @@
private @EmergencyCallRouting int mEmergencyCallRouting =
EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN;
+ /** Indicates if the call is for testing purpose */
+ private boolean mEmergencyCallTesting = false;
+
/**
* Extras associated with this {@link ImsCallProfile}.
* <p>
@@ -534,9 +537,10 @@
+ ", callType=" + mCallType
+ ", restrictCause=" + mRestrictCause
+ ", mediaProfile=" + mMediaProfile.toString()
- + ", emergencyServiceCategories=" + mEmergencyCallRouting
+ + ", emergencyServiceCategories=" + mEmergencyServiceCategories
+ ", emergencyUrns=" + mEmergencyUrns
- + ", emergencyCallRouting=" + mEmergencyCallRouting + " }";
+ + ", emergencyCallRouting=" + mEmergencyCallRouting
+ + ", emergencyCallTesting=" + mEmergencyCallTesting + " }";
}
@Override
@@ -554,6 +558,7 @@
out.writeInt(mEmergencyServiceCategories);
out.writeStringList(mEmergencyUrns);
out.writeInt(mEmergencyCallRouting);
+ out.writeBoolean(mEmergencyCallTesting);
}
private void readFromParcel(Parcel in) {
@@ -564,6 +569,7 @@
mEmergencyServiceCategories = in.readInt();
mEmergencyUrns = in.createStringArrayList();
mEmergencyCallRouting = in.readInt();
+ mEmergencyCallTesting = in.readBoolean();
}
public static final Creator<ImsCallProfile> CREATOR = new Creator<ImsCallProfile>() {
@@ -784,9 +790,11 @@
* @hide
*/
public void setEmergencyCallInfo(EmergencyNumber num) {
- setEmergencyServiceCategories(num.getEmergencyServiceCategoryBitmask());
+ setEmergencyServiceCategories(num.getEmergencyServiceCategoryBitmaskInternalDial());
setEmergencyUrns(num.getEmergencyUrns());
setEmergencyCallRouting(num.getEmergencyCallRouting());
+ setEmergencyCallTesting(num.getEmergencyNumberSourceBitmask()
+ == EmergencyNumber.EMERGENCY_NUMBER_SOURCE_TEST);
}
/**
@@ -843,6 +851,15 @@
}
/**
+ * Set if this is for testing emergency call, only valid if {@link #getServiceType} returns
+ * {@link #SERVICE_TYPE_EMERGENCY}.
+ */
+ @VisibleForTesting
+ public void setEmergencyCallTesting(boolean isTesting) {
+ mEmergencyCallTesting = isTesting;
+ }
+
+ /**
* Get the emergency service categories, only valid if {@link #getServiceType} returns
* {@link #SERVICE_TYPE_EMERGENCY}
*
@@ -892,4 +909,11 @@
public @EmergencyCallRouting int getEmergencyCallRouting() {
return mEmergencyCallRouting;
}
+
+ /**
+ * Get if the emergency call is for testing purpose.
+ */
+ public boolean isEmergencyCallTesting() {
+ return mEmergencyCallTesting;
+ }
}
diff --git a/telephony/java/android/telephony/ims/ImsCallSession.java b/telephony/java/android/telephony/ims/ImsCallSession.java
index 397d5d9..47c4681 100644
--- a/telephony/java/android/telephony/ims/ImsCallSession.java
+++ b/telephony/java/android/telephony/ims/ImsCallSession.java
@@ -18,6 +18,7 @@
import android.os.Message;
import android.os.RemoteException;
+import android.telephony.CallQuality;
import android.telephony.ims.aidl.IImsCallSessionListener;
import android.util.Log;
@@ -450,6 +451,13 @@
public void callSessionRttAudioIndicatorChanged(ImsStreamMediaProfile profile) {
// no-op
}
+
+ /**
+ * Called when the IMS service reports a change to the call quality.
+ */
+ public void callQualityChanged(CallQuality callQuality) {
+ // no-op
+ }
}
private final IImsCallSession miSession;
@@ -1414,6 +1422,16 @@
mListener.callSessionRttAudioIndicatorChanged(profile);
}
}
+
+ /**
+ * Call quality updated
+ */
+ @Override
+ public void callQualityChanged(CallQuality callQuality) {
+ if (mListener != null) {
+ mListener.callQualityChanged(callQuality);
+ }
+ }
}
/**
diff --git a/telephony/java/android/telephony/ims/ImsCallSessionListener.java b/telephony/java/android/telephony/ims/ImsCallSessionListener.java
index a4696a3..337375a 100644
--- a/telephony/java/android/telephony/ims/ImsCallSessionListener.java
+++ b/telephony/java/android/telephony/ims/ImsCallSessionListener.java
@@ -18,6 +18,7 @@
import android.annotation.SystemApi;
import android.os.RemoteException;
+import android.telephony.CallQuality;
import android.telephony.ims.aidl.IImsCallSessionListener;
import android.telephony.ims.stub.ImsCallSessionImplBase;
@@ -612,5 +613,18 @@
throw new RuntimeException(e);
}
}
+
+ /**
+ * The call quality has changed.
+ *
+ * @param callQuality The new call quality
+ */
+ public void callQualityChanged(CallQuality callQuality) {
+ try {
+ mListener.callQualityChanged(callQuality);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java
index e2350fe..9414abd 100644
--- a/telephony/java/android/telephony/ims/ImsMmTelManager.java
+++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java
@@ -92,7 +92,7 @@
public static final int WIFI_MODE_WIFI_PREFERRED = 2;
/**
- * Callback class for receiving Registration callback events.
+ * Callback class for receiving IMS network Registration callback events.
* @see #registerImsRegistrationCallback(Executor, RegistrationCallback) (RegistrationCallback)
* @see #unregisterImsRegistrationCallback(RegistrationCallback)
*/
@@ -241,7 +241,8 @@
}
/**
- * Receives IMS capability status updates from the ImsService.
+ * Receives IMS capability status updates from the ImsService. This information is also
+ * available via the {@link #isAvailable(int, int)} method below.
*
* @see #registerMmTelCapabilityCallback(Executor, CapabilityCallback) (CapabilityCallback)
* @see #unregisterMmTelCapabilityCallback(CapabilityCallback)
@@ -290,6 +291,8 @@
* If unavailable, the feature is not able to support the unavailable capability at this
* time.
*
+ * This information can also be queried using the {@link #isAvailable(int, int)} API.
+ *
* @param capabilities The new availability of the capabilities.
*/
public void onCapabilitiesStatusChanged(
@@ -304,7 +307,7 @@
/**@hide*/
// Only exposed as public method for compatibility with deprecated ImsManager APIs.
// TODO: clean up dependencies and change back to private visibility.
- public void setExecutor(Executor executor) {
+ public final void setExecutor(Executor executor) {
mBinder.setExecutor(executor);
}
}
@@ -342,8 +345,7 @@
* Registers a {@link RegistrationCallback} with the system, which will provide registration
* updates for the subscription specified in {@link #createForSubscriptionId(Context, int)}. Use
* {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to Subscription changed
- * events and call {@link #unregisterImsRegistrationCallback(RegistrationCallback)} to clean up
- * after a subscription is removed.
+ * events and call {@link #unregisterImsRegistrationCallback(RegistrationCallback)} to clean up.
*
* When the callback is registered, it will initiate the callback c to be called with the
* current registration state.
@@ -351,6 +353,12 @@
* @param executor The executor the callback events should be run on.
* @param c The {@link RegistrationCallback} to be added.
* @see #unregisterImsRegistrationCallback(RegistrationCallback)
+ * @throws IllegalArgumentException if the subscription associated with this callback is not
+ * active (SIM is not inserted, ESIM inactive) or invalid, or a null {@link Executor} or
+ * {@link CapabilityCallback} callback.
+ * @throws IllegalStateException if the subscription associated with this callback is valid, but
+ * the {@link ImsService} associated with the subscription is not available. This can happen if
+ * the service crashed, for example.
*/
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void registerImsRegistrationCallback(@CallbackExecutor Executor executor,
@@ -370,11 +378,17 @@
}
/**
- * Removes an existing {@link RegistrationCallback}. Ensure to call this method when cleaning
- * up to avoid memory leaks or when the subscription is removed.
+ * Removes an existing {@link RegistrationCallback}.
+ *
+ * When the subscription associated with this callback is removed (SIM removed, ESIM swap,
+ * etc...), this callback will automatically be removed. If this method is called for an
+ * inactive subscription, it will result in a no-op.
+ *
* @param c The {@link RegistrationCallback} to be removed.
* @see SubscriptionManager.OnSubscriptionsChangedListener
* @see #registerImsRegistrationCallback(Executor, RegistrationCallback)
+ * @throws IllegalArgumentException if the subscription ID associated with this callback is
+ * invalid.
*/
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void unregisterImsRegistrationCallback(@NonNull RegistrationCallback c) {
@@ -389,12 +403,14 @@
}
/**
- * Registers a {@link CapabilityCallback} with the system, which will provide MmTel capability
- * updates for the subscription specified in {@link #createForSubscriptionId(Context, int)}.
+ * Registers a {@link CapabilityCallback} with the system, which will provide MmTel service
+ * availability updates for the subscription specified in
+ * {@link #createForSubscriptionId(Context, int)}. The method {@link #isAvailable(int, int)}
+ * can also be used to query this information at any time.
+ *
* Use {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to
* subscription changed events and call
- * {@link #unregisterImsRegistrationCallback(RegistrationCallback)} to clean up after a
- * subscription is removed.
+ * {@link #unregisterImsRegistrationCallback(RegistrationCallback)} to clean up.
*
* When the callback is registered, it will initiate the callback c to be called with the
* current capabilities.
@@ -402,9 +418,15 @@
* @param executor The executor the callback events should be run on.
* @param c The MmTel {@link CapabilityCallback} to be registered.
* @see #unregisterMmTelCapabilityCallback(CapabilityCallback)
+ * @throws IllegalArgumentException if the subscription associated with this callback is not
+ * active (SIM is not inserted, ESIM inactive) or invalid, or a null {@link Executor} or
+ * {@link CapabilityCallback} callback.
+ * @throws IllegalStateException if the subscription associated with this callback is valid, but
+ * the {@link ImsService} associated with the subscription is not available. This can happen if
+ * the service crashed, for example.
*/
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
- public void registerMmTelCapabilityCallback(@CallbackExecutor Executor executor,
+ public void registerMmTelCapabilityCallback(@NonNull @CallbackExecutor Executor executor,
@NonNull CapabilityCallback c) {
if (c == null) {
throw new IllegalArgumentException("Must include a non-null RegistrationCallback.");
@@ -421,10 +443,15 @@
}
/**
- * Removes an existing MmTel {@link CapabilityCallback}. Be sure to call this when cleaning
- * up to avoid memory leaks.
+ * Removes an existing MmTel {@link CapabilityCallback}.
+ *
+ * When the subscription associated with this callback is removed (SIM removed, ESIM swap,
+ * etc...), this callback will automatically be removed. If this method is called for an
+ * inactive subscription, it will result in a no-op.
* @param c The MmTel {@link CapabilityCallback} to be removed.
* @see #registerMmTelCapabilityCallback(Executor, CapabilityCallback)
+ * @throws IllegalArgumentException if the subscription ID associated with this callback is
+ * invalid.
*/
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void unregisterMmTelCapabilityCallback(@NonNull CapabilityCallback c) {
diff --git a/telephony/java/android/telephony/ims/ProvisioningManager.java b/telephony/java/android/telephony/ims/ProvisioningManager.java
index 916e282..d37198a 100644
--- a/telephony/java/android/telephony/ims/ProvisioningManager.java
+++ b/telephony/java/android/telephony/ims/ProvisioningManager.java
@@ -133,33 +133,40 @@
}
/**
- * Register a new {@link Callback} to listen to changes to changes in
- * IMS provisioning. Use {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to
- * Subscription changed events and call
- * {@link #unregisterProvisioningChangedCallback(Callback)} to clean up after a
- * subscription is removed.
+ * Register a new {@link Callback} to listen to changes to changes in IMS provisioning.
+ *
+ * When the subscription associated with this callback is removed (SIM removed, ESIM swap,
+ * etc...), this callback will automatically be removed.
* @param executor The {@link Executor} to call the callback methods on
* @param callback The provisioning callbackto be registered.
* @see #unregisterProvisioningChangedCallback(Callback)
* @see SubscriptionManager.OnSubscriptionsChangedListener
+ * @throws IllegalArgumentException if the subscription associated with this callback is not
+ * active (SIM is not inserted, ESIM inactive) or the subscription is invalid.
+ * @throws IllegalStateException if the subscription associated with this callback is valid, but
+ * the {@link ImsService} associated with the subscription is not available. This can happen if
+ * the service crashed, for example.
*/
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void registerProvisioningChangedCallback(@CallbackExecutor Executor executor,
@NonNull Callback callback) {
callback.setExecutor(executor);
try {
- getITelephony().registerImsProvisioningChangedCallback(mSubId,
- callback.getBinder());
+ getITelephony().registerImsProvisioningChangedCallback(mSubId, callback.getBinder());
} catch (RemoteException e) {
throw e.rethrowAsRuntimeException();
}
}
/**
- * Unregister an existing {@link Callback}. Ensure to call this method when cleaning
- * up to avoid memory leaks or when the subscription is removed.
+ * Unregister an existing {@link Callback}. When the subscription associated with this
+ * callback is removed (SIM removed, ESIM swap, etc...), this callback will automatically be
+ * removed. If this method is called for an inactive subscription, it will result in a no-op.
* @param callback The existing {@link Callback} to be removed.
* @see #registerProvisioningChangedCallback(Executor, Callback)
+ *
+ * @throws IllegalArgumentException if the subscription associated with this callback is
+ * invalid.
*/
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void unregisterProvisioningChangedCallback(@NonNull Callback callback) {
diff --git a/telephony/java/android/telephony/ims/aidl/IImsCallSessionListener.aidl b/telephony/java/android/telephony/ims/aidl/IImsCallSessionListener.aidl
index d0b31e1..d64e67a 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsCallSessionListener.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsCallSessionListener.aidl
@@ -16,6 +16,7 @@
package android.telephony.ims.aidl;
+import android.telephony.CallQuality;
import android.telephony.ims.ImsStreamMediaProfile;
import android.telephony.ims.ImsCallProfile;
import android.telephony.ims.ImsReasonInfo;
@@ -126,22 +127,29 @@
*/
void callSessionRttModifyRequestReceived(in ImsCallProfile callProfile);
- /* Device issued RTT modify request and inturn received response
+ /**
+ * Device issued RTT modify request and inturn received response
* from Remote UE
* @param status Will be one of the following values from:
* - {@link Connection.RttModifyStatus}
*/
void callSessionRttModifyResponseReceived(int status);
- /*
+ /**
* While in call, device received RTT message from Remote UE
* @param rttMessage Received RTT message
*/
void callSessionRttMessageReceived(in String rttMessage);
- /*
+ /**
* While in call, there has been a change in RTT audio indicator.
* @param profile updated ImsStreamMediaProfile
*/
void callSessionRttAudioIndicatorChanged(in ImsStreamMediaProfile profile);
+
+ /**
+ * Notifies of a change to the call quality.
+ * @param callQuality then updated call quality
+ */
+ void callQualityChanged(in CallQuality callQuality);
}
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
index bc58e46..38566fe 100644
--- a/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
@@ -18,19 +18,18 @@
import android.os.Message;
import android.os.RemoteException;
-
+import android.telephony.CallQuality;
import android.telephony.ims.ImsCallProfile;
+import android.telephony.ims.ImsCallSession;
import android.telephony.ims.ImsConferenceState;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.ims.ImsStreamMediaProfile;
import android.telephony.ims.ImsSuppServiceNotification;
import android.telephony.ims.aidl.IImsCallSessionListener;
+
import com.android.ims.internal.IImsCallSession;
import com.android.ims.internal.IImsVideoCallProvider;
-import android.annotation.UnsupportedAppUsage;
-import android.telephony.ims.ImsCallSession;
-
/**
* Compat implementation of ImsCallSessionImplBase for older implementations.
*
@@ -597,5 +596,10 @@
throws RemoteException {
mNewListener.callSessionRttAudioIndicatorChanged(profile);
}
+
+ @Override
+ public void callQualityChanged(CallQuality callQuality) throws RemoteException {
+ mNewListener.callQualityChanged(callQuality);
+ }
}
}
diff --git a/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl b/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl
index bbb27af..579369f 100644
--- a/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl
+++ b/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl
@@ -16,6 +16,7 @@
package com.android.ims.internal;
+import android.telephony.CallQuality;
import android.telephony.ims.ImsStreamMediaProfile;
import android.telephony.ims.ImsCallProfile;
import android.telephony.ims.ImsReasonInfo;
@@ -140,22 +141,29 @@
void callSessionRttModifyRequestReceived(in IImsCallSession session,
in ImsCallProfile callProfile);
- /* Device issued RTT modify request and inturn received response
+ /**
+ * Device issued RTT modify request and inturn received response
* from Remote UE
* @param status Will be one of the following values from:
* - {@link Connection.RttModifyStatus}
*/
void callSessionRttModifyResponseReceived(in int status);
- /*
+ /**
* While in call, device received RTT message from Remote UE
* @param rttMessage Received RTT message
*/
void callSessionRttMessageReceived(in String rttMessage);
- /*
+ /**
* While in call, there has been a change in RTT audio indicator.
* @param profile updated ImsStreamMediaProfile
*/
void callSessionRttAudioIndicatorChanged(in ImsStreamMediaProfile profile);
+
+ /**
+ * Notifies of a change to the call quality.
+ * @param callQuality then updated call quality
+ */
+ void callQualityChanged(in CallQuality callQuality);
}
diff --git a/telephony/java/com/android/internal/telephony/DctConstants.java b/telephony/java/com/android/internal/telephony/DctConstants.java
index 96f7a1b..6e8d038 100644
--- a/telephony/java/com/android/internal/telephony/DctConstants.java
+++ b/telephony/java/com/android/internal/telephony/DctConstants.java
@@ -66,7 +66,8 @@
public static final int EVENT_DATA_CONNECTION_DETACHED = BASE + 9;
public static final int EVENT_ROAMING_ON = BASE + 11;
public static final int EVENT_ROAMING_OFF = BASE + 12;
- public static final int EVENT_ENABLE_NEW_APN = BASE + 13;
+ public static final int EVENT_ENABLE_APN = BASE + 13;
+ public static final int EVENT_DISABLE_APN = BASE + 14;
public static final int EVENT_DISCONNECT_DONE = BASE + 15;
public static final int EVENT_DATA_CONNECTION_ATTACHED = BASE + 16;
public static final int EVENT_DATA_STALL_ALARM = BASE + 17;
@@ -86,12 +87,13 @@
public static final int CMD_NET_STAT_POLL = BASE + 40;
public static final int EVENT_DATA_RAT_CHANGED = BASE + 41;
public static final int CMD_CLEAR_PROVISIONING_SPINNER = BASE + 42;
- public static final int EVENT_REDIRECTION_DETECTED = BASE + 44;
+ public static final int EVENT_NETWORK_STATUS_CHANGED = BASE + 44;
public static final int EVENT_PCO_DATA_RECEIVED = BASE + 45;
public static final int EVENT_DATA_ENABLED_CHANGED = BASE + 46;
public static final int EVENT_DATA_RECONNECT = BASE + 47;
public static final int EVENT_ROAMING_SETTING_CHANGE = BASE + 48;
public static final int EVENT_DATA_SERVICE_BINDING_CHANGED = BASE + 49;
+ public static final int EVENT_DEVICE_PROVISIONED_CHANGE = BASE + 50;
/***** Constants *****/
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index c5d82c5..5736a46 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -28,6 +28,7 @@
import android.service.carrier.CarrierIdentifier;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
+import android.telephony.CarrierRestrictionRules;
import android.telephony.CellInfo;
import android.telephony.ClientRequestStats;
import android.telephony.IccOpenLogicalChannelResponse;
@@ -41,6 +42,7 @@
import android.telephony.SignalStrength;
import android.telephony.TelephonyHistogram;
import android.telephony.VisualVoicemailSmsFilterSettings;
+import android.telephony.emergency.EmergencyNumber;
import android.telephony.ims.aidl.IImsCapabilityCallback;
import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsConfigCallback;
@@ -1292,22 +1294,27 @@
List<TelephonyHistogram> getTelephonyHistograms();
/**
- * Set the allowed carrier list for slotIndex
- * Require system privileges. In the future we may add this to carrier APIs.
+ * Set the allowed carrier list and the excluded carrier list, indicating the priority between
+ * the two lists.
*
- * @return The number of carriers set successfully. Should match length of
- * carriers on success.
+ * <p>Requires system privileges. In the future we may add this to carrier APIs.
+ *
+ * @return {@link #SET_CARRIER_RESTRICTION_SUCCESS} in case of success.
+ * {@link #SET_CARRIER_RESTRICTION_NOT_SUPPORTED} if the modem does not support the
+ * configuration. {@link #SET_CARRIER_RESTRICTION_ERROR} in all other error cases.
*/
- int setAllowedCarriers(int slotIndex, in List<CarrierIdentifier> carriers);
+ int setAllowedCarriers(in CarrierRestrictionRules carrierRestrictionRules);
/**
- * Get the allowed carrier list for slotIndex.
- * Require system privileges. In the future we may add this to carrier APIs.
+ * Get the allowed carrier list and the excluded carrier list indicating the priority between
+ * the two lists.
*
- * @return List of {@link android.service.carrier.CarrierIdentifier}; empty list
- * means all carriers are allowed.
+ * <p>Requires system privileges. In the future we may add this to carrier APIs.
+ *
+ * @return {@link CarrierRestrictionRules}; empty lists mean all carriers are allowed. It
+ * returns null in case of error.
*/
- List<CarrierIdentifier> getAllowedCarriers(int slotIndex);
+ CarrierRestrictionRules getAllowedCarriers();
/**
* Returns carrier id of the given subscription.
@@ -1776,4 +1783,19 @@
* Set the String provisioning value for the provisioning key specified.
*/
int setImsProvisioningString(int subId, int key, String value);
+
+ /**
+ * Update Emergency Number List for Test Mode.
+ */
+ void updateEmergencyNumberListTestMode(int action, in EmergencyNumber num);
+
+ /**
+ * Get the full emergency number list for Test Mode.
+ */
+ List<String> getEmergencyNumberListTestMode();
+
+ /**
+ * Enable or disable a logical modem stack associated with the slotIndex.
+ */
+ boolean enableModemForSlot(int slotIndex, boolean enable);
}
diff --git a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
index 5632c63..2be1f41 100644
--- a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
@@ -20,6 +20,7 @@
import android.net.LinkProperties;
import android.net.NetworkCapabilities;
import android.os.Bundle;
+import android.telephony.CallQuality;
import android.telephony.CellInfo;
import android.telephony.PhoneCapability;
import android.telephony.PhysicalChannelConfig;
@@ -65,7 +66,7 @@
void notifyPhysicalChannelConfigurationForSubscriber(in int subId,
in List<PhysicalChannelConfig> configs);
void notifyPreciseCallState(int ringingCallState, int foregroundCallState,
- int backgroundCallState);
+ int backgroundCallState, int phoneId);
void notifyDisconnectCause(int disconnectCause, int preciseDisconnectCause);
void notifyPreciseDataConnectionFailed(String apnType, String apn,
int failCause);
@@ -82,4 +83,5 @@
void notifyPreferredDataSubIdChanged(int preferredSubId);
void notifyRadioPowerStateChanged(in int state);
void notifyEmergencyNumberList();
+ void notifyCallQualityChanged(in CallQuality callQuality, int phoneId);
}
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index 1c103a9..9300034 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -489,6 +489,7 @@
int RIL_REQUEST_STOP_NETWORK_SCAN = 143;
int RIL_REQUEST_START_KEEPALIVE = 144;
int RIL_REQUEST_STOP_KEEPALIVE = 145;
+ int RIL_REQUEST_ENABLE_MODEM = 146;
/* The following requests are not defined in RIL.h */
int RIL_REQUEST_HAL_NON_RIL_BASE = 200;
diff --git a/telephony/java/com/android/internal/telephony/TelephonyIntents.java b/telephony/java/com/android/internal/telephony/TelephonyIntents.java
index 2a648bd..8523554 100644
--- a/telephony/java/com/android/internal/telephony/TelephonyIntents.java
+++ b/telephony/java/com/android/internal/telephony/TelephonyIntents.java
@@ -501,4 +501,18 @@
*/
public static final String ACTION_LINE1_NUMBER_ERROR_DETECTED =
"com.android.internal.telephony.ACTION_LINE1_NUMBER_ERROR_DETECTED";
+
+ /**
+ * Broadcast action to notify radio bug.
+ *
+ * Requires the READ_PRIVILEGED_PHONE_STATE permission.
+ *
+ * @hide
+ */
+ public static final String ACTION_REPORT_RADIO_BUG =
+ "com.android.internal.telephony.ACTION_REPORT_RADIO_BUG";
+
+ // ACTION_REPORT_RADIO_BUG extra keys
+ public static final String EXTRA_SLOT_ID = "slotId";
+ public static final String EXTRA_RADIO_BUG_TYPE = "radioBugType";
}
diff --git a/telephony/java/com/android/internal/telephony/euicc/IEuiccController.aidl b/telephony/java/com/android/internal/telephony/euicc/IEuiccController.aidl
index dd40d56..14a36c8 100644
--- a/telephony/java/com/android/internal/telephony/euicc/IEuiccController.aidl
+++ b/telephony/java/com/android/internal/telephony/euicc/IEuiccController.aidl
@@ -24,22 +24,25 @@
/** @hide */
interface IEuiccController {
- oneway void continueOperation(in Intent resolutionIntent, in Bundle resolutionExtras);
- oneway void getDownloadableSubscriptionMetadata(in DownloadableSubscription subscription,
+ oneway void continueOperation(int cardId, in Intent resolutionIntent,
+ in Bundle resolutionExtras);
+ oneway void getDownloadableSubscriptionMetadata(int cardId,
+ in DownloadableSubscription subscription,
String callingPackage, in PendingIntent callbackIntent);
- oneway void getDefaultDownloadableSubscriptionList(
+ oneway void getDefaultDownloadableSubscriptionList(int cardId,
String callingPackage, in PendingIntent callbackIntent);
- String getEid();
- int getOtaStatus();
- oneway void downloadSubscription(in DownloadableSubscription subscription,
- boolean switchAfterDownload, String callingPackage, in Bundle resolvedBundle, in PendingIntent callbackIntent);
- EuiccInfo getEuiccInfo();
- oneway void deleteSubscription(int subscriptionId, String callingPackage,
+ String getEid(int cardId);
+ int getOtaStatus(int cardId);
+ oneway void downloadSubscription(int cardId, in DownloadableSubscription subscription,
+ boolean switchAfterDownload, String callingPackage, in Bundle resolvedBundle,
in PendingIntent callbackIntent);
- oneway void switchToSubscription(int subscriptionId, String callingPackage,
+ EuiccInfo getEuiccInfo(int cardId);
+ oneway void deleteSubscription(int cardId, int subscriptionId, String callingPackage,
in PendingIntent callbackIntent);
- oneway void updateSubscriptionNickname(int subscriptionId, String nickname,
+ oneway void switchToSubscription(int cardId, int subscriptionId, String callingPackage,
+ in PendingIntent callbackIntent);
+ oneway void updateSubscriptionNickname(int cardId, int subscriptionId, String nickname,
String callingPackage, in PendingIntent callbackIntent);
- oneway void eraseSubscriptions(in PendingIntent callbackIntent);
- oneway void retainSubscriptionsForFactoryReset(in PendingIntent callbackIntent);
-}
\ No newline at end of file
+ oneway void eraseSubscriptions(int cardId, in PendingIntent callbackIntent);
+ oneway void retainSubscriptionsForFactoryReset(int cardId, in PendingIntent callbackIntent);
+}
diff --git a/test-base/api/current.txt b/test-base/api/current.txt
index 7ebd6aa..750fb59 100644
--- a/test-base/api/current.txt
+++ b/test-base/api/current.txt
@@ -1,81 +1,87 @@
+// Signature format: 2.0
package android.test {
- public deprecated class AndroidTestCase extends junit.framework.TestCase {
- ctor public AndroidTestCase();
- method public void assertActivityRequiresPermission(java.lang.String, java.lang.String, java.lang.String);
- method public void assertReadingContentUriRequiresPermission(android.net.Uri, java.lang.String);
- method public void assertWritingContentUriRequiresPermission(android.net.Uri, java.lang.String);
- method public android.content.Context getContext();
- method protected void scrubClass(java.lang.Class<?>) throws java.lang.IllegalAccessException;
- method public void setContext(android.content.Context);
- method public void testAndroidTestCaseSetupProperly();
- field protected android.content.Context mContext;
+ @Deprecated public class AndroidTestCase extends junit.framework.TestCase {
+ ctor @Deprecated public AndroidTestCase();
+ method @Deprecated public void assertActivityRequiresPermission(String, String, String);
+ method @Deprecated public void assertReadingContentUriRequiresPermission(android.net.Uri, String);
+ method @Deprecated public void assertWritingContentUriRequiresPermission(android.net.Uri, String);
+ method @Deprecated public android.content.Context getContext();
+ method @Deprecated protected void scrubClass(Class<?>) throws java.lang.IllegalAccessException;
+ method @Deprecated public void setContext(android.content.Context);
+ method @Deprecated @android.test.suitebuilder.annotation.Suppress public void testAndroidTestCaseSetupProperly();
+ field @Deprecated protected android.content.Context mContext;
}
- public abstract deprecated class FlakyTest implements java.lang.annotation.Annotation {
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface FlakyTest {
+ method @Deprecated public abstract int tolerance() default 1;
}
- public deprecated class InstrumentationTestCase extends junit.framework.TestCase {
- ctor public InstrumentationTestCase();
- method public android.app.Instrumentation getInstrumentation();
- method public deprecated void injectInsrumentation(android.app.Instrumentation);
- method public void injectInstrumentation(android.app.Instrumentation);
- method public final <T extends android.app.Activity> T launchActivity(java.lang.String, java.lang.Class<T>, android.os.Bundle);
- method public final <T extends android.app.Activity> T launchActivityWithIntent(java.lang.String, java.lang.Class<T>, android.content.Intent);
- method public void runTestOnUiThread(java.lang.Runnable) throws java.lang.Throwable;
- method public void sendKeys(java.lang.String);
- method public void sendKeys(int...);
- method public void sendRepeatedKeys(int...);
+ @Deprecated public class InstrumentationTestCase extends junit.framework.TestCase {
+ ctor @Deprecated public InstrumentationTestCase();
+ method @Deprecated public android.app.Instrumentation getInstrumentation();
+ method @Deprecated public void injectInsrumentation(android.app.Instrumentation);
+ method @Deprecated public void injectInstrumentation(android.app.Instrumentation);
+ method @Deprecated public final <T extends android.app.Activity> T launchActivity(String, Class<T>, android.os.Bundle);
+ method @Deprecated public final <T extends android.app.Activity> T launchActivityWithIntent(String, Class<T>, android.content.Intent);
+ method @Deprecated public void runTestOnUiThread(Runnable) throws java.lang.Throwable;
+ method @Deprecated public void sendKeys(String);
+ method @Deprecated public void sendKeys(int...);
+ method @Deprecated public void sendRepeatedKeys(int...);
}
- public deprecated class InstrumentationTestSuite extends junit.framework.TestSuite {
- ctor public InstrumentationTestSuite(android.app.Instrumentation);
- ctor public InstrumentationTestSuite(java.lang.String, android.app.Instrumentation);
- ctor public InstrumentationTestSuite(java.lang.Class, android.app.Instrumentation);
- method public void addTestSuite(java.lang.Class);
+ @Deprecated public class InstrumentationTestSuite extends junit.framework.TestSuite {
+ ctor @Deprecated public InstrumentationTestSuite(android.app.Instrumentation);
+ ctor @Deprecated public InstrumentationTestSuite(String, android.app.Instrumentation);
+ ctor @Deprecated public InstrumentationTestSuite(Class, android.app.Instrumentation);
+ method @Deprecated public void addTestSuite(Class);
}
- public abstract deprecated interface PerformanceTestCase {
- method public abstract boolean isPerformanceOnly();
- method public abstract int startPerformance(android.test.PerformanceTestCase.Intermediates);
+ @Deprecated public interface PerformanceTestCase {
+ method @Deprecated public boolean isPerformanceOnly();
+ method @Deprecated public int startPerformance(android.test.PerformanceTestCase.Intermediates);
}
- public static abstract interface PerformanceTestCase.Intermediates {
- method public abstract void addIntermediate(java.lang.String);
- method public abstract void addIntermediate(java.lang.String, long);
- method public abstract void finishTiming(boolean);
- method public abstract void setInternalIterations(int);
- method public abstract void startTiming(boolean);
+ @Deprecated public static interface PerformanceTestCase.Intermediates {
+ method @Deprecated public void addIntermediate(String);
+ method @Deprecated public void addIntermediate(String, long);
+ method @Deprecated public void finishTiming(boolean);
+ method @Deprecated public void setInternalIterations(int);
+ method @Deprecated public void startTiming(boolean);
}
- public abstract deprecated class UiThreadTest implements java.lang.annotation.Annotation {
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface RepetitiveTest {
+ method @Deprecated public abstract int numIterations() default 1;
+ }
+
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface UiThreadTest {
}
}
package android.test.suitebuilder.annotation {
- public abstract deprecated class LargeTest implements java.lang.annotation.Annotation {
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE}) public @interface LargeTest {
}
- public abstract deprecated class MediumTest implements java.lang.annotation.Annotation {
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE}) public @interface MediumTest {
}
- public abstract deprecated class SmallTest implements java.lang.annotation.Annotation {
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE}) public @interface SmallTest {
}
- public abstract deprecated class Smoke implements java.lang.annotation.Annotation {
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE}) public @interface Smoke {
}
- public abstract deprecated class Suppress implements java.lang.annotation.Annotation {
+ @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE}) public @interface Suppress {
}
}
package com.android.internal.util {
- public abstract deprecated interface Predicate<T> {
- method public abstract boolean apply(T);
+ @Deprecated public interface Predicate<T> {
+ method @Deprecated public boolean apply(T);
}
}
@@ -84,117 +90,117 @@
public class Assert {
ctor protected Assert();
- method public static void assertEquals(java.lang.String, java.lang.Object, java.lang.Object);
- method public static void assertEquals(java.lang.Object, java.lang.Object);
- method public static void assertEquals(java.lang.String, java.lang.String, java.lang.String);
- method public static void assertEquals(java.lang.String, java.lang.String);
- method public static void assertEquals(java.lang.String, double, double, double);
+ method public static void assertEquals(String, Object, Object);
+ method public static void assertEquals(Object, Object);
+ method public static void assertEquals(String, String, String);
+ method public static void assertEquals(String, String);
+ method public static void assertEquals(String, double, double, double);
method public static void assertEquals(double, double, double);
- method public static void assertEquals(java.lang.String, float, float, float);
+ method public static void assertEquals(String, float, float, float);
method public static void assertEquals(float, float, float);
- method public static void assertEquals(java.lang.String, long, long);
+ method public static void assertEquals(String, long, long);
method public static void assertEquals(long, long);
- method public static void assertEquals(java.lang.String, boolean, boolean);
+ method public static void assertEquals(String, boolean, boolean);
method public static void assertEquals(boolean, boolean);
- method public static void assertEquals(java.lang.String, byte, byte);
+ method public static void assertEquals(String, byte, byte);
method public static void assertEquals(byte, byte);
- method public static void assertEquals(java.lang.String, char, char);
+ method public static void assertEquals(String, char, char);
method public static void assertEquals(char, char);
- method public static void assertEquals(java.lang.String, short, short);
+ method public static void assertEquals(String, short, short);
method public static void assertEquals(short, short);
- method public static void assertEquals(java.lang.String, int, int);
+ method public static void assertEquals(String, int, int);
method public static void assertEquals(int, int);
- method public static void assertFalse(java.lang.String, boolean);
+ method public static void assertFalse(String, boolean);
method public static void assertFalse(boolean);
- method public static void assertNotNull(java.lang.Object);
- method public static void assertNotNull(java.lang.String, java.lang.Object);
- method public static void assertNotSame(java.lang.String, java.lang.Object, java.lang.Object);
- method public static void assertNotSame(java.lang.Object, java.lang.Object);
- method public static void assertNull(java.lang.Object);
- method public static void assertNull(java.lang.String, java.lang.Object);
- method public static void assertSame(java.lang.String, java.lang.Object, java.lang.Object);
- method public static void assertSame(java.lang.Object, java.lang.Object);
- method public static void assertTrue(java.lang.String, boolean);
+ method public static void assertNotNull(Object);
+ method public static void assertNotNull(String, Object);
+ method public static void assertNotSame(String, Object, Object);
+ method public static void assertNotSame(Object, Object);
+ method public static void assertNull(Object);
+ method public static void assertNull(String, Object);
+ method public static void assertSame(String, Object, Object);
+ method public static void assertSame(Object, Object);
+ method public static void assertTrue(String, boolean);
method public static void assertTrue(boolean);
- method public static void fail(java.lang.String);
+ method public static void fail(String);
method public static void fail();
- method public static void failNotEquals(java.lang.String, java.lang.Object, java.lang.Object);
- method public static void failNotSame(java.lang.String, java.lang.Object, java.lang.Object);
- method public static void failSame(java.lang.String);
- method public static java.lang.String format(java.lang.String, java.lang.Object, java.lang.Object);
+ method public static void failNotEquals(String, Object, Object);
+ method public static void failNotSame(String, Object, Object);
+ method public static void failSame(String);
+ method public static String format(String, Object, Object);
}
public class AssertionFailedError extends java.lang.AssertionError {
ctor public AssertionFailedError();
- ctor public AssertionFailedError(java.lang.String);
+ ctor public AssertionFailedError(String);
}
public class ComparisonFailure extends junit.framework.AssertionFailedError {
- ctor public ComparisonFailure(java.lang.String, java.lang.String, java.lang.String);
- method public java.lang.String getActual();
- method public java.lang.String getExpected();
+ ctor public ComparisonFailure(String, String, String);
+ method public String getActual();
+ method public String getExpected();
}
- public abstract interface Protectable {
- method public abstract void protect() throws java.lang.Throwable;
+ public interface Protectable {
+ method public void protect() throws java.lang.Throwable;
}
- public abstract interface Test {
- method public abstract int countTestCases();
- method public abstract void run(junit.framework.TestResult);
+ public interface Test {
+ method public int countTestCases();
+ method public void run(junit.framework.TestResult);
}
public abstract class TestCase extends junit.framework.Assert implements junit.framework.Test {
ctor public TestCase();
- ctor public TestCase(java.lang.String);
+ ctor public TestCase(String);
method public int countTestCases();
method protected junit.framework.TestResult createResult();
- method public java.lang.String getName();
+ method public String getName();
method public junit.framework.TestResult run();
method public void run(junit.framework.TestResult);
method public void runBare() throws java.lang.Throwable;
method protected void runTest() throws java.lang.Throwable;
- method public void setName(java.lang.String);
+ method public void setName(String);
method protected void setUp() throws java.lang.Exception;
method protected void tearDown() throws java.lang.Exception;
}
public class TestFailure {
- ctor public TestFailure(junit.framework.Test, java.lang.Throwable);
- method public java.lang.String exceptionMessage();
+ ctor public TestFailure(junit.framework.Test, Throwable);
+ method public String exceptionMessage();
method public junit.framework.Test failedTest();
method public boolean isFailure();
- method public java.lang.Throwable thrownException();
- method public java.lang.String trace();
+ method public Throwable thrownException();
+ method public String trace();
field protected junit.framework.Test fFailedTest;
- field protected java.lang.Throwable fThrownException;
+ field protected Throwable fThrownException;
}
- public abstract interface TestListener {
- method public abstract void addError(junit.framework.Test, java.lang.Throwable);
- method public abstract void addFailure(junit.framework.Test, junit.framework.AssertionFailedError);
- method public abstract void endTest(junit.framework.Test);
- method public abstract void startTest(junit.framework.Test);
+ public interface TestListener {
+ method public void addError(junit.framework.Test, Throwable);
+ method public void addFailure(junit.framework.Test, junit.framework.AssertionFailedError);
+ method public void endTest(junit.framework.Test);
+ method public void startTest(junit.framework.Test);
}
public class TestResult {
ctor public TestResult();
- method public synchronized void addError(junit.framework.Test, java.lang.Throwable);
- method public synchronized void addFailure(junit.framework.Test, junit.framework.AssertionFailedError);
- method public synchronized void addListener(junit.framework.TestListener);
+ method public void addError(junit.framework.Test, Throwable);
+ method public void addFailure(junit.framework.Test, junit.framework.AssertionFailedError);
+ method public void addListener(junit.framework.TestListener);
method public void endTest(junit.framework.Test);
- method public synchronized int errorCount();
- method public synchronized java.util.Enumeration<junit.framework.TestFailure> errors();
- method public synchronized int failureCount();
- method public synchronized java.util.Enumeration<junit.framework.TestFailure> failures();
- method public synchronized void removeListener(junit.framework.TestListener);
+ method public int errorCount();
+ method public java.util.Enumeration<junit.framework.TestFailure> errors();
+ method public int failureCount();
+ method public java.util.Enumeration<junit.framework.TestFailure> failures();
+ method public void removeListener(junit.framework.TestListener);
method protected void run(junit.framework.TestCase);
- method public synchronized int runCount();
+ method public int runCount();
method public void runProtected(junit.framework.Test, junit.framework.Protectable);
- method public synchronized boolean shouldStop();
+ method public boolean shouldStop();
method public void startTest(junit.framework.Test);
- method public synchronized void stop();
- method public synchronized boolean wasSuccessful();
+ method public void stop();
+ method public boolean wasSuccessful();
field protected java.util.Vector<junit.framework.TestFailure> fErrors;
field protected java.util.Vector<junit.framework.TestFailure> fFailures;
field protected java.util.Vector<junit.framework.TestListener> fListeners;
@@ -203,24 +209,24 @@
public class TestSuite implements junit.framework.Test {
ctor public TestSuite();
- ctor public TestSuite(java.lang.Class<?>);
- ctor public TestSuite(java.lang.Class<? extends junit.framework.TestCase>, java.lang.String);
- ctor public TestSuite(java.lang.String);
- ctor public TestSuite(java.lang.Class<?>...);
- ctor public TestSuite(java.lang.Class<? extends junit.framework.TestCase>[], java.lang.String);
+ ctor public TestSuite(Class<?>);
+ ctor public TestSuite(Class<? extends junit.framework.TestCase>, String);
+ ctor public TestSuite(String);
+ ctor public TestSuite(Class<?>...);
+ ctor public TestSuite(Class<? extends junit.framework.TestCase>[], String);
method public void addTest(junit.framework.Test);
- method public void addTestSuite(java.lang.Class<? extends junit.framework.TestCase>);
+ method public void addTestSuite(Class<? extends junit.framework.TestCase>);
method public int countTestCases();
- method public static junit.framework.Test createTest(java.lang.Class<?>, java.lang.String);
- method public java.lang.String getName();
- method public static java.lang.reflect.Constructor<?> getTestConstructor(java.lang.Class<?>) throws java.lang.NoSuchMethodException;
+ method public static junit.framework.Test createTest(Class<?>, String);
+ method public String getName();
+ method public static java.lang.reflect.Constructor<?> getTestConstructor(Class<?>) throws java.lang.NoSuchMethodException;
method public void run(junit.framework.TestResult);
method public void runTest(junit.framework.Test, junit.framework.TestResult);
- method public void setName(java.lang.String);
+ method public void setName(String);
method public junit.framework.Test testAt(int);
method public int testCount();
method public java.util.Enumeration<junit.framework.Test> tests();
- method public static junit.framework.Test warning(java.lang.String);
+ method public static junit.framework.Test warning(String);
}
}
diff --git a/test-base/api/removed.txt b/test-base/api/removed.txt
index e69de29..d802177 100644
--- a/test-base/api/removed.txt
+++ b/test-base/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-base/api/system-current.txt b/test-base/api/system-current.txt
index e69de29..d802177 100644
--- a/test-base/api/system-current.txt
+++ b/test-base/api/system-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-base/api/system-removed.txt b/test-base/api/system-removed.txt
index e69de29..d802177 100644
--- a/test-base/api/system-removed.txt
+++ b/test-base/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-base/api/test-current.txt b/test-base/api/test-current.txt
index e69de29..d802177 100644
--- a/test-base/api/test-current.txt
+++ b/test-base/api/test-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-base/api/test-removed.txt b/test-base/api/test-removed.txt
index e69de29..d802177 100644
--- a/test-base/api/test-removed.txt
+++ b/test-base/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-base/src/android/test/RepetitiveTest.java b/test-base/src/android/test/RepetitiveTest.java
index 6a7130e..13e89d2 100644
--- a/test-base/src/android/test/RepetitiveTest.java
+++ b/test-base/src/android/test/RepetitiveTest.java
@@ -26,8 +26,10 @@
* When the annotation is present, the test method is executed the number of times specified by
* numIterations and defaults to 1.
*
- * {@hide} Not needed for public API.
+ * @deprecated New tests should be written using the
+ * <a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>.
*/
+@Deprecated
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RepetitiveTest {
@@ -37,4 +39,4 @@
* @return The total number of iterations, the default is 1.
*/
int numIterations() default 1;
-}
\ No newline at end of file
+}
diff --git a/test-legacy/Android.bp b/test-legacy/Android.bp
index 833c714..a69f422 100644
--- a/test-legacy/Android.bp
+++ b/test-legacy/Android.bp
@@ -25,7 +25,7 @@
static_libs: [
"android.test.base-minus-junit",
"android.test.runner-minus-junit",
- "android.test.mock.impl",
+ "android.test.mock_static",
],
no_framework_libs: true,
diff --git a/test-mock/Android.bp b/test-mock/Android.bp
index e1d6e01..43b765d 100644
--- a/test-mock/Android.bp
+++ b/test-mock/Android.bp
@@ -30,3 +30,19 @@
srcs_lib_whitelist_pkgs: ["android"],
compile_dex: true,
}
+
+// Build the android.test.mock_static library
+// ==========================================
+// This is only intended for inclusion in the legacy-android-test.
+// Must not be used elewhere.
+java_library_static {
+ name: "android.test.mock_static",
+
+ java_version: "1.8",
+ srcs: ["src/**/*.java"],
+
+ no_framework_libs: true,
+ libs: [
+ "framework",
+ ],
+}
diff --git a/test-mock/api/current.txt b/test-mock/api/current.txt
index 5b58dd5..a181bc38 100644
--- a/test-mock/api/current.txt
+++ b/test-mock/api/current.txt
@@ -1,126 +1,127 @@
+// Signature format: 2.0
package android.test.mock {
- public deprecated class MockAccountManager {
- method public static android.accounts.AccountManager newMockAccountManager(android.content.Context);
+ @Deprecated public class MockAccountManager {
+ method @Deprecated public static android.accounts.AccountManager newMockAccountManager(android.content.Context);
}
- public deprecated class MockApplication extends android.app.Application {
- ctor public MockApplication();
+ @Deprecated public class MockApplication extends android.app.Application {
+ ctor @Deprecated public MockApplication();
}
public class MockContentProvider extends android.content.ContentProvider {
ctor protected MockContentProvider();
ctor public MockContentProvider(android.content.Context);
- ctor public MockContentProvider(android.content.Context, java.lang.String, java.lang.String, android.content.pm.PathPermission[]);
+ ctor public MockContentProvider(android.content.Context, String, String, android.content.pm.PathPermission[]);
method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList<android.content.ContentProviderOperation>);
- method public static deprecated void attachInfoForTesting(android.content.ContentProvider, android.content.Context, android.content.pm.ProviderInfo);
- method public int delete(android.net.Uri, java.lang.String, java.lang.String[]);
- method public java.lang.String getType(android.net.Uri);
+ method @Deprecated public static void attachInfoForTesting(android.content.ContentProvider, android.content.Context, android.content.pm.ProviderInfo);
+ method public int delete(android.net.Uri, String, String[]);
+ method public String getType(android.net.Uri);
method public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
method public boolean onCreate();
- method public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle);
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ method public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, String, android.os.Bundle);
+ method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
+ method public int update(android.net.Uri, android.content.ContentValues, String, String[]);
}
public class MockContentResolver extends android.content.ContentResolver {
ctor public MockContentResolver();
ctor public MockContentResolver(android.content.Context);
- method public void addProvider(java.lang.String, android.content.ContentProvider);
+ method public void addProvider(String, android.content.ContentProvider);
}
public class MockContext extends android.content.Context {
ctor public MockContext();
- method public boolean bindIsolatedService(android.content.Intent, android.content.ServiceConnection, int, java.lang.String);
+ method public boolean bindIsolatedService(android.content.Intent, android.content.ServiceConnection, int, String);
method public boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
- method public int checkCallingOrSelfPermission(java.lang.String);
+ method public int checkCallingOrSelfPermission(String);
method public int checkCallingOrSelfUriPermission(android.net.Uri, int);
- method public int checkCallingPermission(java.lang.String);
+ method public int checkCallingPermission(String);
method public int checkCallingUriPermission(android.net.Uri, int);
- method public int checkPermission(java.lang.String, int, int);
- method public int checkSelfPermission(java.lang.String);
+ method public int checkPermission(String, int, int);
+ method public int checkSelfPermission(String);
method public int checkUriPermission(android.net.Uri, int, int, int);
- method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
+ method public int checkUriPermission(android.net.Uri, String, String, int, int, int);
method public void clearWallpaper();
method public android.content.Context createConfigurationContext(android.content.res.Configuration);
- method public android.content.Context createContextForSplit(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.content.Context createDeviceProtectedStorageContext();
method public android.content.Context createDisplayContext(android.view.Display);
- method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public java.lang.String[] databaseList();
- method public boolean deleteDatabase(java.lang.String);
- method public boolean deleteFile(java.lang.String);
- method public boolean deleteSharedPreferences(java.lang.String);
- method public void enforceCallingOrSelfPermission(java.lang.String, java.lang.String);
- method public void enforceCallingOrSelfUriPermission(android.net.Uri, int, java.lang.String);
- method public void enforceCallingPermission(java.lang.String, java.lang.String);
- method public void enforceCallingUriPermission(android.net.Uri, int, java.lang.String);
- method public void enforcePermission(java.lang.String, int, int, java.lang.String);
- method public void enforceUriPermission(android.net.Uri, int, int, int, java.lang.String);
- method public void enforceUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int, java.lang.String);
- method public java.lang.String[] fileList();
+ method public android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public String[] databaseList();
+ method public boolean deleteDatabase(String);
+ method public boolean deleteFile(String);
+ method public boolean deleteSharedPreferences(String);
+ method public void enforceCallingOrSelfPermission(String, String);
+ method public void enforceCallingOrSelfUriPermission(android.net.Uri, int, String);
+ method public void enforceCallingPermission(String, String);
+ method public void enforceCallingUriPermission(android.net.Uri, int, String);
+ method public void enforcePermission(String, int, int, String);
+ method public void enforceUriPermission(android.net.Uri, int, int, int, String);
+ method public void enforceUriPermission(android.net.Uri, String, String, int, int, int, String);
+ method public String[] fileList();
method public android.content.Context getApplicationContext();
method public android.content.pm.ApplicationInfo getApplicationInfo();
method public android.content.res.AssetManager getAssets();
method public java.io.File getCacheDir();
- method public java.lang.ClassLoader getClassLoader();
+ method public ClassLoader getClassLoader();
method public java.io.File getCodeCacheDir();
method public android.content.ContentResolver getContentResolver();
method public java.io.File getDataDir();
- method public java.io.File getDatabasePath(java.lang.String);
- method public java.io.File getDir(java.lang.String, int);
+ method public java.io.File getDatabasePath(String);
+ method public java.io.File getDir(String, int);
method public java.io.File getExternalCacheDir();
method public java.io.File[] getExternalCacheDirs();
- method public java.io.File getExternalFilesDir(java.lang.String);
- method public java.io.File[] getExternalFilesDirs(java.lang.String);
+ method public java.io.File getExternalFilesDir(String);
+ method public java.io.File[] getExternalFilesDirs(String);
method public java.io.File[] getExternalMediaDirs();
- method public java.io.File getFileStreamPath(java.lang.String);
+ method public java.io.File getFileStreamPath(String);
method public java.io.File getFilesDir();
method public android.os.Looper getMainLooper();
method public java.io.File getNoBackupFilesDir();
method public java.io.File getObbDir();
method public java.io.File[] getObbDirs();
- method public java.lang.String getOpPackageName();
- method public java.lang.String getPackageCodePath();
+ method public String getOpPackageName();
+ method public String getPackageCodePath();
method public android.content.pm.PackageManager getPackageManager();
- method public java.lang.String getPackageName();
- method public java.lang.String getPackageResourcePath();
+ method public String getPackageName();
+ method public String getPackageResourcePath();
method public android.content.res.Resources getResources();
- method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
- method public java.lang.Object getSystemService(java.lang.String);
- method public java.lang.String getSystemServiceName(java.lang.Class<?>);
+ method public android.content.SharedPreferences getSharedPreferences(String, int);
+ method public Object getSystemService(String);
+ method public String getSystemServiceName(Class<?>);
method public android.content.res.Resources.Theme getTheme();
method public android.graphics.drawable.Drawable getWallpaper();
method public int getWallpaperDesiredMinimumHeight();
method public int getWallpaperDesiredMinimumWidth();
- method public void grantUriPermission(java.lang.String, android.net.Uri, int);
+ method public void grantUriPermission(String, android.net.Uri, int);
method public boolean isDeviceProtectedStorage();
- method public boolean moveDatabaseFrom(android.content.Context, java.lang.String);
- method public boolean moveSharedPreferencesFrom(android.content.Context, java.lang.String);
- method public java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException;
- method public java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException;
- method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
- method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
+ method public boolean moveDatabaseFrom(android.content.Context, String);
+ method public boolean moveSharedPreferencesFrom(android.content.Context, String);
+ method public java.io.FileInputStream openFileInput(String) throws java.io.FileNotFoundException;
+ method public java.io.FileOutputStream openFileOutput(String, int) throws java.io.FileNotFoundException;
+ method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
+ method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
method public android.graphics.drawable.Drawable peekWallpaper();
method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int);
- method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler);
- method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int);
+ method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler);
+ method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler, int);
method public void removeStickyBroadcast(android.content.Intent);
method public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
method public void revokeUriPermission(android.net.Uri, int);
- method public void revokeUriPermission(java.lang.String, android.net.Uri, int);
+ method public void revokeUriPermission(String, android.net.Uri, int);
method public void sendBroadcast(android.content.Intent);
- method public void sendBroadcast(android.content.Intent, java.lang.String);
+ method public void sendBroadcast(android.content.Intent, String);
method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
- method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String);
- method public void sendOrderedBroadcast(android.content.Intent, java.lang.String);
- method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+ method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String);
+ method public void sendOrderedBroadcast(android.content.Intent, String);
+ method public void sendOrderedBroadcast(android.content.Intent, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+ method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
method public void sendStickyBroadcast(android.content.Intent);
method public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
- method public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
- method public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+ method public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+ method public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
method public void setTheme(int);
method public void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
method public void setWallpaper(java.io.InputStream) throws java.io.IOException;
@@ -129,7 +130,7 @@
method public void startActivity(android.content.Intent);
method public void startActivity(android.content.Intent, android.os.Bundle);
method public android.content.ComponentName startForegroundService(android.content.Intent);
- method public boolean startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle);
+ method public boolean startInstrumentation(android.content.ComponentName, String, android.os.Bundle);
method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
method public android.content.ComponentName startService(android.content.Intent);
@@ -139,168 +140,168 @@
method public void updateServiceGroup(android.content.ServiceConnection, int, int);
}
- public deprecated class MockCursor implements android.database.Cursor {
- ctor public MockCursor();
- method public void close();
- method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
- method public deprecated void deactivate();
- method public byte[] getBlob(int);
- method public int getColumnCount();
- method public int getColumnIndex(java.lang.String);
- method public int getColumnIndexOrThrow(java.lang.String);
- method public java.lang.String getColumnName(int);
- method public java.lang.String[] getColumnNames();
- method public int getCount();
- method public double getDouble(int);
- method public android.os.Bundle getExtras();
- method public float getFloat(int);
- method public int getInt(int);
- method public long getLong(int);
- method public android.net.Uri getNotificationUri();
- method public int getPosition();
- method public short getShort(int);
- method public java.lang.String getString(int);
- method public int getType(int);
- method public boolean getWantsAllOnMoveCalls();
- method public boolean isAfterLast();
- method public boolean isBeforeFirst();
- method public boolean isClosed();
- method public boolean isFirst();
- method public boolean isLast();
- method public boolean isNull(int);
- method public boolean move(int);
- method public boolean moveToFirst();
- method public boolean moveToLast();
- method public boolean moveToNext();
- method public boolean moveToPosition(int);
- method public boolean moveToPrevious();
- method public void registerContentObserver(android.database.ContentObserver);
- method public void registerDataSetObserver(android.database.DataSetObserver);
- method public deprecated boolean requery();
- method public android.os.Bundle respond(android.os.Bundle);
- method public void setExtras(android.os.Bundle);
- method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
- method public void unregisterContentObserver(android.database.ContentObserver);
- method public void unregisterDataSetObserver(android.database.DataSetObserver);
+ @Deprecated public class MockCursor implements android.database.Cursor {
+ ctor @Deprecated public MockCursor();
+ method @Deprecated public void close();
+ method @Deprecated public void copyStringToBuffer(int, android.database.CharArrayBuffer);
+ method @Deprecated public void deactivate();
+ method @Deprecated public byte[] getBlob(int);
+ method @Deprecated public int getColumnCount();
+ method @Deprecated public int getColumnIndex(String);
+ method @Deprecated public int getColumnIndexOrThrow(String);
+ method @Deprecated public String getColumnName(int);
+ method @Deprecated public String[] getColumnNames();
+ method @Deprecated public int getCount();
+ method @Deprecated public double getDouble(int);
+ method @Deprecated public android.os.Bundle getExtras();
+ method @Deprecated public float getFloat(int);
+ method @Deprecated public int getInt(int);
+ method @Deprecated public long getLong(int);
+ method @Deprecated public android.net.Uri getNotificationUri();
+ method @Deprecated public int getPosition();
+ method @Deprecated public short getShort(int);
+ method @Deprecated public String getString(int);
+ method @Deprecated public int getType(int);
+ method @Deprecated public boolean getWantsAllOnMoveCalls();
+ method @Deprecated public boolean isAfterLast();
+ method @Deprecated public boolean isBeforeFirst();
+ method @Deprecated public boolean isClosed();
+ method @Deprecated public boolean isFirst();
+ method @Deprecated public boolean isLast();
+ method @Deprecated public boolean isNull(int);
+ method @Deprecated public boolean move(int);
+ method @Deprecated public boolean moveToFirst();
+ method @Deprecated public boolean moveToLast();
+ method @Deprecated public boolean moveToNext();
+ method @Deprecated public boolean moveToPosition(int);
+ method @Deprecated public boolean moveToPrevious();
+ method @Deprecated public void registerContentObserver(android.database.ContentObserver);
+ method @Deprecated public void registerDataSetObserver(android.database.DataSetObserver);
+ method @Deprecated public boolean requery();
+ method @Deprecated public android.os.Bundle respond(android.os.Bundle);
+ method @Deprecated public void setExtras(android.os.Bundle);
+ method @Deprecated public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
+ method @Deprecated public void unregisterContentObserver(android.database.ContentObserver);
+ method @Deprecated public void unregisterDataSetObserver(android.database.DataSetObserver);
}
- public deprecated class MockDialogInterface implements android.content.DialogInterface {
- ctor public MockDialogInterface();
- method public void cancel();
- method public void dismiss();
+ @Deprecated public class MockDialogInterface implements android.content.DialogInterface {
+ ctor @Deprecated public MockDialogInterface();
+ method @Deprecated public void cancel();
+ method @Deprecated public void dismiss();
}
- public deprecated class MockPackageManager extends android.content.pm.PackageManager {
- ctor public MockPackageManager();
- method public void addPackageToPreferred(java.lang.String);
- method public boolean addPermission(android.content.pm.PermissionInfo);
- method public boolean addPermissionAsync(android.content.pm.PermissionInfo);
- method public void addPreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName);
- method public boolean canRequestPackageInstalls();
- method public java.lang.String[] canonicalToCurrentPackageNames(java.lang.String[]);
- method public int checkPermission(java.lang.String, java.lang.String);
- method public int checkSignatures(java.lang.String, java.lang.String);
- method public int checkSignatures(int, int);
+ @Deprecated public class MockPackageManager extends android.content.pm.PackageManager {
+ ctor @Deprecated public MockPackageManager();
+ method @Deprecated public void addPackageToPreferred(String);
+ method @Deprecated public boolean addPermission(android.content.pm.PermissionInfo);
+ method @Deprecated public boolean addPermissionAsync(android.content.pm.PermissionInfo);
+ method @Deprecated public void addPreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName);
+ method @Deprecated public boolean canRequestPackageInstalls();
+ method @Deprecated public String[] canonicalToCurrentPackageNames(String[]);
+ method @Deprecated public int checkPermission(String, String);
+ method @Deprecated public int checkSignatures(String, String);
+ method @Deprecated public int checkSignatures(int, int);
method public void clearInstantAppCookie();
- method public void clearPackagePreferredActivities(java.lang.String);
- method public java.lang.String[] currentToCanonicalPackageNames(java.lang.String[]);
- method public void extendVerificationTimeout(int, int, long);
- method public android.graphics.drawable.Drawable getActivityBanner(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.graphics.drawable.Drawable getActivityBanner(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.graphics.drawable.Drawable getActivityIcon(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.graphics.drawable.Drawable getActivityIcon(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.pm.ActivityInfo getActivityInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.graphics.drawable.Drawable getActivityLogo(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.graphics.drawable.Drawable getActivityLogo(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
- method public java.util.List<android.content.IntentFilter> getAllIntentFilters(java.lang.String);
- method public java.util.List<android.content.pm.PermissionGroupInfo> getAllPermissionGroups(int);
- method public android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo);
- method public android.graphics.drawable.Drawable getApplicationBanner(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public int getApplicationEnabledSetting(java.lang.String);
- method public android.graphics.drawable.Drawable getApplicationIcon(android.content.pm.ApplicationInfo);
- method public android.graphics.drawable.Drawable getApplicationIcon(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public java.lang.CharSequence getApplicationLabel(android.content.pm.ApplicationInfo);
- method public android.graphics.drawable.Drawable getApplicationLogo(android.content.pm.ApplicationInfo);
- method public android.graphics.drawable.Drawable getApplicationLogo(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public void clearPackagePreferredActivities(String);
+ method @Deprecated public String[] currentToCanonicalPackageNames(String[]);
+ method @Deprecated public void extendVerificationTimeout(int, int, long);
+ method @Deprecated public android.graphics.drawable.Drawable getActivityBanner(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.graphics.drawable.Drawable getActivityBanner(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.graphics.drawable.Drawable getActivityIcon(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.graphics.drawable.Drawable getActivityIcon(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.pm.ActivityInfo getActivityInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.graphics.drawable.Drawable getActivityLogo(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.graphics.drawable.Drawable getActivityLogo(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public java.util.List<android.content.IntentFilter> getAllIntentFilters(String);
+ method @Deprecated public java.util.List<android.content.pm.PermissionGroupInfo> getAllPermissionGroups(int);
+ method @Deprecated public android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo);
+ method @Deprecated public android.graphics.drawable.Drawable getApplicationBanner(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public int getApplicationEnabledSetting(String);
+ method @Deprecated public android.graphics.drawable.Drawable getApplicationIcon(android.content.pm.ApplicationInfo);
+ method @Deprecated public android.graphics.drawable.Drawable getApplicationIcon(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.pm.ApplicationInfo getApplicationInfo(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public CharSequence getApplicationLabel(android.content.pm.ApplicationInfo);
+ method @Deprecated public android.graphics.drawable.Drawable getApplicationLogo(android.content.pm.ApplicationInfo);
+ method @Deprecated public android.graphics.drawable.Drawable getApplicationLogo(String) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.content.pm.ChangedPackages getChangedPackages(int);
- method public int getComponentEnabledSetting(android.content.ComponentName);
- method public android.graphics.drawable.Drawable getDefaultActivityIcon();
- method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo);
- method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
- method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
- method public java.lang.String getInstallerPackageName(java.lang.String);
+ method @Deprecated public int getComponentEnabledSetting(android.content.ComponentName);
+ method @Deprecated public android.graphics.drawable.Drawable getDefaultActivityIcon();
+ method @Deprecated public android.graphics.drawable.Drawable getDrawable(String, int, android.content.pm.ApplicationInfo);
+ method @Deprecated public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
+ method @Deprecated public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
+ method @Deprecated public String getInstallerPackageName(String);
method public byte[] getInstantAppCookie();
method public int getInstantAppCookieMaxBytes();
- method public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.Intent getLaunchIntentForPackage(java.lang.String);
- method public android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String);
- method public java.lang.String getNameForUid(int);
- method public int[] getPackageGids(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public int[] getPackageGids(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.pm.PackageInfo getPackageInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.pm.PackageInfo getPackageInfo(android.content.pm.VersionedPackage, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.Intent getLaunchIntentForPackage(String);
+ method @Deprecated public android.content.Intent getLeanbackLaunchIntentForPackage(String);
+ method @Deprecated public String getNameForUid(int);
+ method @Deprecated public int[] getPackageGids(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public int[] getPackageGids(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.pm.PackageInfo getPackageInfo(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.pm.PackageInfo getPackageInfo(android.content.pm.VersionedPackage, int) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.content.pm.PackageInstaller getPackageInstaller();
- method public int getPackageUid(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public java.lang.String[] getPackagesForUid(int);
- method public java.util.List<android.content.pm.PackageInfo> getPackagesHoldingPermissions(java.lang.String[], int);
- method public android.content.pm.PermissionGroupInfo getPermissionGroupInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.pm.PermissionInfo getPermissionInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public int getPreferredActivities(java.util.List<android.content.IntentFilter>, java.util.List<android.content.ComponentName>, java.lang.String);
- method public java.util.List<android.content.pm.PackageInfo> getPreferredPackages(int);
- method public android.content.pm.ProviderInfo getProviderInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.pm.ActivityInfo getReceiverInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.res.Resources getResourcesForActivity(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.res.Resources getResourcesForApplication(android.content.pm.ApplicationInfo);
- method public android.content.res.Resources getResourcesForApplication(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public android.content.pm.ServiceInfo getServiceInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public java.util.List<android.content.pm.SharedLibraryInfo> getSharedLibraries(int);
- method public android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
- method public java.lang.String[] getSystemSharedLibraryNames();
- method public java.lang.CharSequence getText(java.lang.String, int, android.content.pm.ApplicationInfo);
- method public android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
- method public android.graphics.drawable.Drawable getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle);
- method public java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle);
- method public android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo);
- method public boolean hasSystemFeature(java.lang.String);
- method public boolean hasSystemFeature(java.lang.String, int);
+ method @Deprecated public int getPackageUid(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public String[] getPackagesForUid(int);
+ method @Deprecated public java.util.List<android.content.pm.PackageInfo> getPackagesHoldingPermissions(String[], int);
+ method @Deprecated public android.content.pm.PermissionGroupInfo getPermissionGroupInfo(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.pm.PermissionInfo getPermissionInfo(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public int getPreferredActivities(java.util.List<android.content.IntentFilter>, java.util.List<android.content.ComponentName>, String);
+ method @Deprecated public java.util.List<android.content.pm.PackageInfo> getPreferredPackages(int);
+ method @Deprecated public android.content.pm.ProviderInfo getProviderInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.pm.ActivityInfo getReceiverInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.res.Resources getResourcesForActivity(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.res.Resources getResourcesForApplication(android.content.pm.ApplicationInfo);
+ method @Deprecated public android.content.res.Resources getResourcesForApplication(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public android.content.pm.ServiceInfo getServiceInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated @NonNull public java.util.List<android.content.pm.SharedLibraryInfo> getSharedLibraries(int);
+ method @Deprecated public android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
+ method @Deprecated public String[] getSystemSharedLibraryNames();
+ method @Deprecated public CharSequence getText(String, int, android.content.pm.ApplicationInfo);
+ method @Deprecated public android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
+ method @Deprecated public android.graphics.drawable.Drawable getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle);
+ method @Deprecated public CharSequence getUserBadgedLabel(CharSequence, android.os.UserHandle);
+ method @Deprecated public android.content.res.XmlResourceParser getXml(String, int, android.content.pm.ApplicationInfo);
+ method @Deprecated public boolean hasSystemFeature(String);
+ method @Deprecated public boolean hasSystemFeature(String, int);
method public boolean isInstantApp();
- method public boolean isInstantApp(java.lang.String);
- method public boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String);
- method public boolean isSafeMode();
- method public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int);
- method public java.util.List<android.content.pm.ProviderInfo> queryContentProviders(java.lang.String, int, int);
- method public java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(java.lang.String, int);
- method public java.util.List<android.content.pm.ResolveInfo> queryIntentActivities(android.content.Intent, int);
- method public java.util.List<android.content.pm.ResolveInfo> queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], android.content.Intent, int);
- method public java.util.List<android.content.pm.ResolveInfo> queryIntentContentProviders(android.content.Intent, int);
- method public java.util.List<android.content.pm.ResolveInfo> queryIntentServices(android.content.Intent, int);
- method public java.util.List<android.content.pm.PermissionInfo> queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public void removePackageFromPreferred(java.lang.String);
- method public void removePermission(java.lang.String);
- method public android.content.pm.ResolveInfo resolveActivity(android.content.Intent, int);
- method public android.content.pm.ProviderInfo resolveContentProvider(java.lang.String, int);
- method public android.content.pm.ResolveInfo resolveService(android.content.Intent, int);
- method public android.content.pm.ResolveInfo resolveServiceAsUser(android.content.Intent, int, int);
- method public void setApplicationCategoryHint(java.lang.String, int);
- method public void setApplicationEnabledSetting(java.lang.String, int, int);
- method public void setComponentEnabledSetting(android.content.ComponentName, int, int);
- method public void setInstallerPackageName(java.lang.String, java.lang.String);
- method public void updateInstantAppCookie(byte[]);
- method public void verifyPendingInstall(int, int);
+ method public boolean isInstantApp(String);
+ method @Deprecated public boolean isPermissionRevokedByPolicy(String, String);
+ method @Deprecated public boolean isSafeMode();
+ method @Deprecated public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int);
+ method @Deprecated public java.util.List<android.content.pm.ProviderInfo> queryContentProviders(String, int, int);
+ method @Deprecated public java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(String, int);
+ method @Deprecated public java.util.List<android.content.pm.ResolveInfo> queryIntentActivities(android.content.Intent, int);
+ method @Deprecated public java.util.List<android.content.pm.ResolveInfo> queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], android.content.Intent, int);
+ method @Deprecated public java.util.List<android.content.pm.ResolveInfo> queryIntentContentProviders(android.content.Intent, int);
+ method @Deprecated public java.util.List<android.content.pm.ResolveInfo> queryIntentServices(android.content.Intent, int);
+ method @Deprecated public java.util.List<android.content.pm.PermissionInfo> queryPermissionsByGroup(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @Deprecated public void removePackageFromPreferred(String);
+ method @Deprecated public void removePermission(String);
+ method @Deprecated public android.content.pm.ResolveInfo resolveActivity(android.content.Intent, int);
+ method @Deprecated public android.content.pm.ProviderInfo resolveContentProvider(String, int);
+ method @Deprecated public android.content.pm.ResolveInfo resolveService(android.content.Intent, int);
+ method @Deprecated public android.content.pm.ResolveInfo resolveServiceAsUser(android.content.Intent, int, int);
+ method public void setApplicationCategoryHint(String, int);
+ method @Deprecated public void setApplicationEnabledSetting(String, int, int);
+ method @Deprecated public void setComponentEnabledSetting(android.content.ComponentName, int, int);
+ method @Deprecated public void setInstallerPackageName(String, String);
+ method public void updateInstantAppCookie(@NonNull byte[]);
+ method @Deprecated public void verifyPendingInstall(int, int);
}
- public deprecated class MockResources extends android.content.res.Resources {
- ctor public MockResources();
- method public int getColor(int) throws android.content.res.Resources.NotFoundException;
- method public android.content.res.ColorStateList getColorStateList(int) throws android.content.res.Resources.NotFoundException;
- method public android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException;
- method public android.graphics.Movie getMovie(int) throws android.content.res.Resources.NotFoundException;
- method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+ @Deprecated public class MockResources extends android.content.res.Resources {
+ ctor @Deprecated public MockResources();
+ method @Deprecated public int getColor(int) throws android.content.res.Resources.NotFoundException;
+ method @Deprecated public android.content.res.ColorStateList getColorStateList(int) throws android.content.res.Resources.NotFoundException;
+ method @Deprecated public android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException;
+ method @Deprecated public android.graphics.Movie getMovie(int) throws android.content.res.Resources.NotFoundException;
+ method @Deprecated public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
}
- public deprecated class MockService {
- method public static <T extends android.app.Service> void attachForTesting(android.app.Service, android.content.Context, java.lang.String, android.app.Application);
+ @Deprecated public class MockService {
+ method @Deprecated public static <T extends android.app.Service> void attachForTesting(android.app.Service, android.content.Context, String, android.app.Application);
}
}
diff --git a/test-mock/api/removed.txt b/test-mock/api/removed.txt
index bd109a8..1496c35 100644
--- a/test-mock/api/removed.txt
+++ b/test-mock/api/removed.txt
@@ -1,14 +1,15 @@
+// Signature format: 2.0
package android.test.mock {
public class MockContext extends android.content.Context {
method public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
- method public java.io.File getSharedPreferencesPath(java.lang.String);
+ method public java.io.File getSharedPreferencesPath(String);
}
- public deprecated class MockPackageManager extends android.content.pm.PackageManager {
- method public deprecated java.lang.String getDefaultBrowserPackageName(int);
- method public deprecated boolean setDefaultBrowserPackageName(java.lang.String, int);
- method public boolean setInstantAppCookie(byte[]);
+ @Deprecated public class MockPackageManager extends android.content.pm.PackageManager {
+ method @Deprecated public String getDefaultBrowserPackageName(int);
+ method @Deprecated public boolean setDefaultBrowserPackageName(String, int);
+ method public boolean setInstantAppCookie(@NonNull byte[]);
}
}
diff --git a/test-mock/api/system-current.txt b/test-mock/api/system-current.txt
index 2b968ae..f87785b 100644
--- a/test-mock/api/system-current.txt
+++ b/test-mock/api/system-current.txt
@@ -1,38 +1,39 @@
+// Signature format: 2.0
package android.test.mock {
public class MockContext extends android.content.Context {
method public android.content.Context createCredentialProtectedStorageContext();
method public java.io.File getPreloadsFileCache();
method public boolean isCredentialProtectedStorage();
- method public void sendBroadcast(android.content.Intent, java.lang.String, android.os.Bundle);
- method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.os.Bundle);
- method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+ method public void sendBroadcast(android.content.Intent, String, android.os.Bundle);
+ method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.os.Bundle);
+ method public void sendOrderedBroadcast(android.content.Intent, String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
}
- public deprecated class MockPackageManager extends android.content.pm.PackageManager {
+ @Deprecated public class MockPackageManager extends android.content.pm.PackageManager {
method public void addOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener);
method public boolean arePermissionsIndividuallyControlled();
- method public java.util.List<android.content.IntentFilter> getAllIntentFilters(java.lang.String);
- method public java.lang.String getDefaultBrowserPackageNameAsUser(int);
+ method @Deprecated public java.util.List<android.content.IntentFilter> getAllIntentFilters(String);
+ method public String getDefaultBrowserPackageNameAsUser(int);
method public java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
- method public android.graphics.drawable.Drawable getInstantAppIcon(java.lang.String);
+ method public android.graphics.drawable.Drawable getInstantAppIcon(String);
method public android.content.ComponentName getInstantAppInstallerComponent();
method public android.content.ComponentName getInstantAppResolverSettingsComponent();
method public java.util.List<android.content.pm.InstantAppInfo> getInstantApps();
- method public java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(java.lang.String);
- method public int getIntentVerificationStatusAsUser(java.lang.String, int);
- method public int getPermissionFlags(java.lang.String, java.lang.String, android.os.UserHandle);
- method public void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
- method public int installExistingPackage(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public int installExistingPackage(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
- method public void registerDexModule(java.lang.String, android.content.pm.PackageManager.DexModuleRegisterCallback);
+ method public java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(String);
+ method public int getIntentVerificationStatusAsUser(String, int);
+ method public int getPermissionFlags(String, String, android.os.UserHandle);
+ method public void grantRuntimePermission(String, String, android.os.UserHandle);
+ method public int installExistingPackage(String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public int installExistingPackage(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public void registerDexModule(String, @Nullable android.content.pm.PackageManager.DexModuleRegisterCallback);
method public void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener);
- method public void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
- method public boolean setDefaultBrowserPackageNameAsUser(java.lang.String, int);
- method public java.lang.String[] setPackagesSuspended(java.lang.String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, java.lang.String);
- method public void setUpdateAvailable(java.lang.String, boolean);
- method public boolean updateIntentVerificationStatusAsUser(java.lang.String, int, int);
- method public void updatePermissionFlags(java.lang.String, java.lang.String, int, int, android.os.UserHandle);
+ method public void revokeRuntimePermission(String, String, android.os.UserHandle);
+ method public boolean setDefaultBrowserPackageNameAsUser(String, int);
+ method public String[] setPackagesSuspended(String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, String);
+ method public void setUpdateAvailable(String, boolean);
+ method public boolean updateIntentVerificationStatusAsUser(String, int, int);
+ method public void updatePermissionFlags(String, String, int, int, android.os.UserHandle);
method public void verifyIntentFilter(int, int, java.util.List<java.lang.String>);
}
diff --git a/test-mock/api/system-removed.txt b/test-mock/api/system-removed.txt
index e69de29..d802177 100644
--- a/test-mock/api/system-removed.txt
+++ b/test-mock/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-mock/api/test-current.txt b/test-mock/api/test-current.txt
index 8b2c815..ab10800 100644
--- a/test-mock/api/test-current.txt
+++ b/test-mock/api/test-current.txt
@@ -1,17 +1,18 @@
+// Signature format: 2.0
package android.test.mock {
- public deprecated class MockPackageManager extends android.content.pm.PackageManager {
+ @Deprecated public class MockPackageManager extends android.content.pm.PackageManager {
method public boolean arePermissionsIndividuallyControlled();
- method public java.lang.String getDefaultBrowserPackageNameAsUser(int);
- method public int getInstallReason(java.lang.String, android.os.UserHandle);
+ method public String getDefaultBrowserPackageNameAsUser(int);
+ method public int getInstallReason(String, android.os.UserHandle);
method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int);
method public java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
- method public java.lang.String[] getNamesForUids(int[]);
- method public java.lang.String getPermissionControllerPackageName();
- method public java.lang.String getServicesSystemSharedLibraryPackageName();
- method public java.lang.String getSharedSystemSharedLibraryPackageName();
- method public void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
- method public void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
+ method public String[] getNamesForUids(int[]);
+ method public String getPermissionControllerPackageName();
+ method @NonNull public String getServicesSystemSharedLibraryPackageName();
+ method @NonNull public String getSharedSystemSharedLibraryPackageName();
+ method public void grantRuntimePermission(String, String, android.os.UserHandle);
+ method public void revokeRuntimePermission(String, String, android.os.UserHandle);
}
}
diff --git a/test-mock/api/test-removed.txt b/test-mock/api/test-removed.txt
index e69de29..d802177 100644
--- a/test-mock/api/test-removed.txt
+++ b/test-mock/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-runner/api/current.txt b/test-runner/api/current.txt
index 4ba1b8f..c093ac7 100644
--- a/test-runner/api/current.txt
+++ b/test-runner/api/current.txt
@@ -1,102 +1,103 @@
+// Signature format: 2.0
package android.test {
- public abstract deprecated class ActivityInstrumentationTestCase<T extends android.app.Activity> extends android.test.ActivityTestCase {
- ctor public ActivityInstrumentationTestCase(java.lang.String, java.lang.Class<T>);
- ctor public ActivityInstrumentationTestCase(java.lang.String, java.lang.Class<T>, boolean);
- method public T getActivity();
- method public void testActivityTestCaseSetUpProperly() throws java.lang.Exception;
+ @Deprecated public abstract class ActivityInstrumentationTestCase<T extends android.app.Activity> extends android.test.ActivityTestCase {
+ ctor @Deprecated public ActivityInstrumentationTestCase(String, Class<T>);
+ ctor @Deprecated public ActivityInstrumentationTestCase(String, Class<T>, boolean);
+ method @Deprecated public T getActivity();
+ method @Deprecated public void testActivityTestCaseSetUpProperly() throws java.lang.Exception;
}
- public abstract deprecated class ActivityInstrumentationTestCase2<T extends android.app.Activity> extends android.test.ActivityTestCase {
- ctor public deprecated ActivityInstrumentationTestCase2(java.lang.String, java.lang.Class<T>);
- ctor public ActivityInstrumentationTestCase2(java.lang.Class<T>);
- method public T getActivity();
- method public void setActivityInitialTouchMode(boolean);
- method public void setActivityIntent(android.content.Intent);
+ @Deprecated public abstract class ActivityInstrumentationTestCase2<T extends android.app.Activity> extends android.test.ActivityTestCase {
+ ctor @Deprecated public ActivityInstrumentationTestCase2(String, Class<T>);
+ ctor @Deprecated public ActivityInstrumentationTestCase2(Class<T>);
+ method @Deprecated public T getActivity();
+ method @Deprecated public void setActivityInitialTouchMode(boolean);
+ method @Deprecated public void setActivityIntent(android.content.Intent);
}
- public abstract deprecated class ActivityTestCase extends android.test.InstrumentationTestCase {
- ctor public ActivityTestCase();
- method protected android.app.Activity getActivity();
- method protected void scrubClass(java.lang.Class<?>) throws java.lang.IllegalAccessException;
- method protected void setActivity(android.app.Activity);
+ @Deprecated public abstract class ActivityTestCase extends android.test.InstrumentationTestCase {
+ ctor @Deprecated public ActivityTestCase();
+ method @Deprecated protected android.app.Activity getActivity();
+ method @Deprecated protected void scrubClass(Class<?>) throws java.lang.IllegalAccessException;
+ method @Deprecated protected void setActivity(android.app.Activity);
}
- public abstract deprecated class ActivityUnitTestCase<T extends android.app.Activity> extends android.test.ActivityTestCase {
- ctor public ActivityUnitTestCase(java.lang.Class<T>);
- method public T getActivity();
- method public int getFinishedActivityRequest();
- method public int getRequestedOrientation();
- method public android.content.Intent getStartedActivityIntent();
- method public int getStartedActivityRequest();
- method public boolean isFinishCalled();
- method public void setActivityContext(android.content.Context);
- method public void setApplication(android.app.Application);
- method protected T startActivity(android.content.Intent, android.os.Bundle, java.lang.Object);
+ @Deprecated public abstract class ActivityUnitTestCase<T extends android.app.Activity> extends android.test.ActivityTestCase {
+ ctor @Deprecated public ActivityUnitTestCase(Class<T>);
+ method @Deprecated public T getActivity();
+ method @Deprecated public int getFinishedActivityRequest();
+ method @Deprecated public int getRequestedOrientation();
+ method @Deprecated public android.content.Intent getStartedActivityIntent();
+ method @Deprecated public int getStartedActivityRequest();
+ method @Deprecated public boolean isFinishCalled();
+ method @Deprecated public void setActivityContext(android.content.Context);
+ method @Deprecated public void setApplication(android.app.Application);
+ method @Deprecated protected T startActivity(android.content.Intent, android.os.Bundle, Object);
}
- public deprecated class AndroidTestRunner extends junit.runner.BaseTestRunner {
- ctor public AndroidTestRunner();
- method public void addTestListener(junit.framework.TestListener);
- method public void clearTestListeners();
- method protected junit.framework.TestResult createTestResult();
- method public java.util.List<junit.framework.TestCase> getTestCases();
- method public java.lang.String getTestClassName();
- method public junit.framework.TestResult getTestResult();
- method protected java.lang.Class loadSuiteClass(java.lang.String) throws java.lang.ClassNotFoundException;
- method protected void runFailed(java.lang.String);
- method public void runTest();
- method public void runTest(junit.framework.TestResult);
- method public void setContext(android.content.Context);
- method public deprecated void setInstrumentaiton(android.app.Instrumentation);
- method public void setInstrumentation(android.app.Instrumentation);
- method public void setTest(junit.framework.Test);
- method public void setTestClassName(java.lang.String, java.lang.String);
- method public void testEnded(java.lang.String);
- method public void testFailed(int, junit.framework.Test, java.lang.Throwable);
- method public void testStarted(java.lang.String);
+ @Deprecated public class AndroidTestRunner extends junit.runner.BaseTestRunner {
+ ctor @Deprecated public AndroidTestRunner();
+ method @Deprecated public void addTestListener(junit.framework.TestListener);
+ method @Deprecated public void clearTestListeners();
+ method @Deprecated protected junit.framework.TestResult createTestResult();
+ method @Deprecated public java.util.List<junit.framework.TestCase> getTestCases();
+ method @Deprecated public String getTestClassName();
+ method @Deprecated public junit.framework.TestResult getTestResult();
+ method @Deprecated protected Class loadSuiteClass(String) throws java.lang.ClassNotFoundException;
+ method @Deprecated protected void runFailed(String);
+ method @Deprecated public void runTest();
+ method @Deprecated public void runTest(junit.framework.TestResult);
+ method @Deprecated public void setContext(android.content.Context);
+ method @Deprecated public void setInstrumentaiton(android.app.Instrumentation);
+ method @Deprecated public void setInstrumentation(android.app.Instrumentation);
+ method @Deprecated public void setTest(junit.framework.Test);
+ method @Deprecated public void setTestClassName(String, String);
+ method @Deprecated public void testEnded(String);
+ method @Deprecated public void testFailed(int, junit.framework.Test, Throwable);
+ method @Deprecated public void testStarted(String);
}
- public abstract deprecated class ApplicationTestCase<T extends android.app.Application> extends android.test.AndroidTestCase {
- ctor public ApplicationTestCase(java.lang.Class<T>);
- method protected final void createApplication();
- method public T getApplication();
- method public android.content.Context getSystemContext();
- method protected final void terminateApplication();
- method public final void testApplicationTestCaseSetUpProperly() throws java.lang.Exception;
+ @Deprecated public abstract class ApplicationTestCase<T extends android.app.Application> extends android.test.AndroidTestCase {
+ ctor @Deprecated public ApplicationTestCase(Class<T>);
+ method @Deprecated protected final void createApplication();
+ method @Deprecated public T getApplication();
+ method @Deprecated public android.content.Context getSystemContext();
+ method @Deprecated protected final void terminateApplication();
+ method @Deprecated public final void testApplicationTestCaseSetUpProperly() throws java.lang.Exception;
}
- public deprecated class AssertionFailedError extends java.lang.Error {
- ctor public AssertionFailedError();
- ctor public AssertionFailedError(java.lang.String);
+ @Deprecated public class AssertionFailedError extends java.lang.Error {
+ ctor @Deprecated public AssertionFailedError();
+ ctor @Deprecated public AssertionFailedError(String);
}
- public deprecated class ComparisonFailure extends android.test.AssertionFailedError {
- ctor public ComparisonFailure(java.lang.String, java.lang.String, java.lang.String);
+ @Deprecated public class ComparisonFailure extends android.test.AssertionFailedError {
+ ctor @Deprecated public ComparisonFailure(String, String, String);
}
- public deprecated class InstrumentationTestRunner extends android.app.Instrumentation implements android.test.TestSuiteProvider {
- ctor public InstrumentationTestRunner();
- method public junit.framework.TestSuite getAllTests();
- method protected android.test.AndroidTestRunner getAndroidTestRunner();
- method public android.os.Bundle getArguments();
- method public java.lang.ClassLoader getLoader();
- method public junit.framework.TestSuite getTestSuite();
- field public static final java.lang.String REPORT_KEY_NAME_CLASS = "class";
- field public static final java.lang.String REPORT_KEY_NAME_TEST = "test";
- field public static final java.lang.String REPORT_KEY_NUM_CURRENT = "current";
- field public static final java.lang.String REPORT_KEY_NUM_TOTAL = "numtests";
- field public static final java.lang.String REPORT_KEY_STACK = "stack";
- field public static final java.lang.String REPORT_VALUE_ID = "InstrumentationTestRunner";
- field public static final int REPORT_VALUE_RESULT_ERROR = -1; // 0xffffffff
- field public static final int REPORT_VALUE_RESULT_FAILURE = -2; // 0xfffffffe
- field public static final int REPORT_VALUE_RESULT_OK = 0; // 0x0
- field public static final int REPORT_VALUE_RESULT_START = 1; // 0x1
+ @Deprecated public class InstrumentationTestRunner extends android.app.Instrumentation implements android.test.TestSuiteProvider {
+ ctor @Deprecated public InstrumentationTestRunner();
+ method @Deprecated public junit.framework.TestSuite getAllTests();
+ method @Deprecated protected android.test.AndroidTestRunner getAndroidTestRunner();
+ method @Deprecated public android.os.Bundle getArguments();
+ method @Deprecated public ClassLoader getLoader();
+ method @Deprecated public junit.framework.TestSuite getTestSuite();
+ field @Deprecated public static final String REPORT_KEY_NAME_CLASS = "class";
+ field @Deprecated public static final String REPORT_KEY_NAME_TEST = "test";
+ field @Deprecated public static final String REPORT_KEY_NUM_CURRENT = "current";
+ field @Deprecated public static final String REPORT_KEY_NUM_TOTAL = "numtests";
+ field @Deprecated public static final String REPORT_KEY_STACK = "stack";
+ field @Deprecated public static final String REPORT_VALUE_ID = "InstrumentationTestRunner";
+ field @Deprecated public static final int REPORT_VALUE_RESULT_ERROR = -1; // 0xffffffff
+ field @Deprecated public static final int REPORT_VALUE_RESULT_FAILURE = -2; // 0xfffffffe
+ field @Deprecated public static final int REPORT_VALUE_RESULT_OK = 0; // 0x0
+ field @Deprecated public static final int REPORT_VALUE_RESULT_START = 1; // 0x1
}
- public deprecated class IsolatedContext extends android.content.ContextWrapper {
- ctor public IsolatedContext(android.content.ContentResolver, android.content.Context);
- method public java.util.List<android.content.Intent> getAndClearBroadcastIntents();
+ @Deprecated public class IsolatedContext extends android.content.ContextWrapper {
+ ctor @Deprecated public IsolatedContext(android.content.ContentResolver, android.content.Context);
+ method @Deprecated public java.util.List<android.content.Intent> getAndClearBroadcastIntents();
}
public class LoaderTestCase extends android.test.AndroidTestCase {
@@ -104,184 +105,184 @@
method public <T> T getLoaderResultSynchronously(android.content.Loader<T>);
}
- public final deprecated class MoreAsserts {
- method public static void assertAssignableFrom(java.lang.Class<?>, java.lang.Object);
- method public static void assertAssignableFrom(java.lang.Class<?>, java.lang.Class<?>);
- method public static java.util.regex.MatchResult assertContainsRegex(java.lang.String, java.lang.String, java.lang.String);
- method public static java.util.regex.MatchResult assertContainsRegex(java.lang.String, java.lang.String);
- method public static void assertContentsInAnyOrder(java.lang.String, java.lang.Iterable<?>, java.lang.Object...);
- method public static void assertContentsInAnyOrder(java.lang.Iterable<?>, java.lang.Object...);
- method public static void assertContentsInOrder(java.lang.String, java.lang.Iterable<?>, java.lang.Object...);
- method public static void assertContentsInOrder(java.lang.Iterable<?>, java.lang.Object...);
- method public static void assertEmpty(java.lang.String, java.lang.Iterable<?>);
- method public static void assertEmpty(java.lang.Iterable<?>);
- method public static void assertEmpty(java.lang.String, java.util.Map<?, ?>);
- method public static void assertEmpty(java.util.Map<?, ?>);
- method public static void assertEquals(java.lang.String, byte[], byte[]);
- method public static void assertEquals(byte[], byte[]);
- method public static void assertEquals(java.lang.String, int[], int[]);
- method public static void assertEquals(int[], int[]);
- method public static void assertEquals(java.lang.String, double[], double[]);
- method public static void assertEquals(double[], double[]);
- method public static void assertEquals(java.lang.String, java.lang.Object[], java.lang.Object[]);
- method public static void assertEquals(java.lang.Object[], java.lang.Object[]);
- method public static void assertEquals(java.lang.String, java.util.Set<?>, java.util.Set<?>);
- method public static void assertEquals(java.util.Set<?>, java.util.Set<?>);
- method public static java.util.regex.MatchResult assertMatchesRegex(java.lang.String, java.lang.String, java.lang.String);
- method public static java.util.regex.MatchResult assertMatchesRegex(java.lang.String, java.lang.String);
- method public static void assertNotContainsRegex(java.lang.String, java.lang.String, java.lang.String);
- method public static void assertNotContainsRegex(java.lang.String, java.lang.String);
- method public static void assertNotEmpty(java.lang.String, java.lang.Iterable<?>);
- method public static void assertNotEmpty(java.lang.Iterable<?>);
- method public static void assertNotEmpty(java.lang.String, java.util.Map<?, ?>);
- method public static void assertNotEmpty(java.util.Map<?, ?>);
- method public static void assertNotEqual(java.lang.String, java.lang.Object, java.lang.Object);
- method public static void assertNotEqual(java.lang.Object, java.lang.Object);
- method public static void assertNotMatchesRegex(java.lang.String, java.lang.String, java.lang.String);
- method public static void assertNotMatchesRegex(java.lang.String, java.lang.String);
- method public static void checkEqualsAndHashCodeMethods(java.lang.String, java.lang.Object, java.lang.Object, boolean);
- method public static void checkEqualsAndHashCodeMethods(java.lang.Object, java.lang.Object, boolean);
+ @Deprecated public final class MoreAsserts {
+ method @Deprecated public static void assertAssignableFrom(Class<?>, Object);
+ method @Deprecated public static void assertAssignableFrom(Class<?>, Class<?>);
+ method @Deprecated public static java.util.regex.MatchResult assertContainsRegex(String, String, String);
+ method @Deprecated public static java.util.regex.MatchResult assertContainsRegex(String, String);
+ method @Deprecated public static void assertContentsInAnyOrder(String, Iterable<?>, java.lang.Object...);
+ method @Deprecated public static void assertContentsInAnyOrder(Iterable<?>, java.lang.Object...);
+ method @Deprecated public static void assertContentsInOrder(String, Iterable<?>, java.lang.Object...);
+ method @Deprecated public static void assertContentsInOrder(Iterable<?>, java.lang.Object...);
+ method @Deprecated public static void assertEmpty(String, Iterable<?>);
+ method @Deprecated public static void assertEmpty(Iterable<?>);
+ method @Deprecated public static void assertEmpty(String, java.util.Map<?,?>);
+ method @Deprecated public static void assertEmpty(java.util.Map<?,?>);
+ method @Deprecated public static void assertEquals(String, byte[], byte[]);
+ method @Deprecated public static void assertEquals(byte[], byte[]);
+ method @Deprecated public static void assertEquals(String, int[], int[]);
+ method @Deprecated public static void assertEquals(int[], int[]);
+ method @Deprecated public static void assertEquals(String, double[], double[]);
+ method @Deprecated public static void assertEquals(double[], double[]);
+ method @Deprecated public static void assertEquals(String, Object[], Object[]);
+ method @Deprecated public static void assertEquals(Object[], Object[]);
+ method @Deprecated public static void assertEquals(String, java.util.Set<?>, java.util.Set<?>);
+ method @Deprecated public static void assertEquals(java.util.Set<?>, java.util.Set<?>);
+ method @Deprecated public static java.util.regex.MatchResult assertMatchesRegex(String, String, String);
+ method @Deprecated public static java.util.regex.MatchResult assertMatchesRegex(String, String);
+ method @Deprecated public static void assertNotContainsRegex(String, String, String);
+ method @Deprecated public static void assertNotContainsRegex(String, String);
+ method @Deprecated public static void assertNotEmpty(String, Iterable<?>);
+ method @Deprecated public static void assertNotEmpty(Iterable<?>);
+ method @Deprecated public static void assertNotEmpty(String, java.util.Map<?,?>);
+ method @Deprecated public static void assertNotEmpty(java.util.Map<?,?>);
+ method @Deprecated public static void assertNotEqual(String, Object, Object);
+ method @Deprecated public static void assertNotEqual(Object, Object);
+ method @Deprecated public static void assertNotMatchesRegex(String, String, String);
+ method @Deprecated public static void assertNotMatchesRegex(String, String);
+ method @Deprecated public static void checkEqualsAndHashCodeMethods(String, Object, Object, boolean);
+ method @Deprecated public static void checkEqualsAndHashCodeMethods(Object, Object, boolean);
}
- public abstract deprecated class ProviderTestCase<T extends android.content.ContentProvider> extends android.test.InstrumentationTestCase {
- ctor public ProviderTestCase(java.lang.Class<T>, java.lang.String);
- method public android.test.mock.MockContentResolver getMockContentResolver();
- method public android.test.IsolatedContext getMockContext();
- method public T getProvider();
- method public static <T extends android.content.ContentProvider> android.content.ContentResolver newResolverWithContentProviderFromSql(android.content.Context, java.lang.Class<T>, java.lang.String, java.lang.String, int, java.lang.String) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
+ @Deprecated public abstract class ProviderTestCase<T extends android.content.ContentProvider> extends android.test.InstrumentationTestCase {
+ ctor @Deprecated public ProviderTestCase(Class<T>, String);
+ method @Deprecated public android.test.mock.MockContentResolver getMockContentResolver();
+ method @Deprecated public android.test.IsolatedContext getMockContext();
+ method @Deprecated public T getProvider();
+ method @Deprecated public static <T extends android.content.ContentProvider> android.content.ContentResolver newResolverWithContentProviderFromSql(android.content.Context, Class<T>, String, String, int, String) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
}
public abstract class ProviderTestCase2<T extends android.content.ContentProvider> extends android.test.AndroidTestCase {
- ctor public ProviderTestCase2(java.lang.Class<T>, java.lang.String);
+ ctor public ProviderTestCase2(Class<T>, String);
method public android.test.mock.MockContentResolver getMockContentResolver();
method public android.test.IsolatedContext getMockContext();
method public T getProvider();
- method public static <T extends android.content.ContentProvider> android.content.ContentResolver newResolverWithContentProviderFromSql(android.content.Context, java.lang.String, java.lang.Class<T>, java.lang.String, java.lang.String, int, java.lang.String) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public static <T extends android.content.ContentProvider> android.content.ContentResolver newResolverWithContentProviderFromSql(android.content.Context, String, Class<T>, String, String, int, String) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
}
- public deprecated class RenamingDelegatingContext extends android.content.ContextWrapper {
- ctor public RenamingDelegatingContext(android.content.Context, java.lang.String);
- ctor public RenamingDelegatingContext(android.content.Context, android.content.Context, java.lang.String);
- method public java.lang.String getDatabasePrefix();
- method public void makeExistingFilesAndDbsAccessible();
- method public static <T extends android.content.ContentProvider> T providerWithRenamedContext(java.lang.Class<T>, android.content.Context, java.lang.String) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
- method public static <T extends android.content.ContentProvider> T providerWithRenamedContext(java.lang.Class<T>, android.content.Context, java.lang.String, boolean) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
+ @Deprecated public class RenamingDelegatingContext extends android.content.ContextWrapper {
+ ctor @Deprecated public RenamingDelegatingContext(android.content.Context, String);
+ ctor @Deprecated public RenamingDelegatingContext(android.content.Context, android.content.Context, String);
+ method @Deprecated public String getDatabasePrefix();
+ method @Deprecated public void makeExistingFilesAndDbsAccessible();
+ method @Deprecated public static <T extends android.content.ContentProvider> T providerWithRenamedContext(Class<T>, android.content.Context, String) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method @Deprecated public static <T extends android.content.ContentProvider> T providerWithRenamedContext(Class<T>, android.content.Context, String, boolean) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
}
- public abstract deprecated class ServiceTestCase<T extends android.app.Service> extends android.test.AndroidTestCase {
- ctor public ServiceTestCase(java.lang.Class<T>);
- method protected android.os.IBinder bindService(android.content.Intent);
- method public android.app.Application getApplication();
- method public T getService();
- method public android.content.Context getSystemContext();
- method public void setApplication(android.app.Application);
- method protected void setupService();
- method protected void shutdownService();
- method protected void startService(android.content.Intent);
- method public void testServiceTestCaseSetUpProperly() throws java.lang.Exception;
+ @Deprecated public abstract class ServiceTestCase<T extends android.app.Service> extends android.test.AndroidTestCase {
+ ctor @Deprecated public ServiceTestCase(Class<T>);
+ method @Deprecated protected android.os.IBinder bindService(android.content.Intent);
+ method @Deprecated public android.app.Application getApplication();
+ method @Deprecated public T getService();
+ method @Deprecated public android.content.Context getSystemContext();
+ method @Deprecated public void setApplication(android.app.Application);
+ method @Deprecated protected void setupService();
+ method @Deprecated protected void shutdownService();
+ method @Deprecated protected void startService(android.content.Intent);
+ method @Deprecated public void testServiceTestCaseSetUpProperly() throws java.lang.Exception;
}
- public abstract deprecated class SingleLaunchActivityTestCase<T extends android.app.Activity> extends android.test.InstrumentationTestCase {
- ctor public SingleLaunchActivityTestCase(java.lang.String, java.lang.Class<T>);
- method public T getActivity();
- method public void testActivityTestCaseSetUpProperly() throws java.lang.Exception;
+ @Deprecated public abstract class SingleLaunchActivityTestCase<T extends android.app.Activity> extends android.test.InstrumentationTestCase {
+ ctor @Deprecated public SingleLaunchActivityTestCase(String, Class<T>);
+ method @Deprecated public T getActivity();
+ method @Deprecated public void testActivityTestCaseSetUpProperly() throws java.lang.Exception;
}
- public deprecated class SyncBaseInstrumentation extends android.test.InstrumentationTestCase {
- ctor public SyncBaseInstrumentation();
- method protected void cancelSyncsandDisableAutoSync();
- method protected void syncProvider(android.net.Uri, java.lang.String, java.lang.String) throws java.lang.Exception;
+ @Deprecated public class SyncBaseInstrumentation extends android.test.InstrumentationTestCase {
+ ctor @Deprecated public SyncBaseInstrumentation();
+ method @Deprecated protected void cancelSyncsandDisableAutoSync();
+ method @Deprecated protected void syncProvider(android.net.Uri, String, String) throws java.lang.Exception;
}
- public abstract deprecated interface TestSuiteProvider {
- method public abstract junit.framework.TestSuite getTestSuite();
+ @Deprecated public interface TestSuiteProvider {
+ method @Deprecated public junit.framework.TestSuite getTestSuite();
}
- public deprecated class TouchUtils {
- ctor public TouchUtils();
- method public static void clickView(android.test.InstrumentationTestCase, android.view.View);
- method public static deprecated void drag(android.test.ActivityInstrumentationTestCase, float, float, float, float, int);
- method public static void drag(android.test.InstrumentationTestCase, float, float, float, float, int);
- method public static deprecated void dragQuarterScreenDown(android.test.ActivityInstrumentationTestCase);
- method public static void dragQuarterScreenDown(android.test.InstrumentationTestCase, android.app.Activity);
- method public static deprecated void dragQuarterScreenUp(android.test.ActivityInstrumentationTestCase);
- method public static void dragQuarterScreenUp(android.test.InstrumentationTestCase, android.app.Activity);
- method public static deprecated int dragViewBy(android.test.ActivityInstrumentationTestCase, android.view.View, int, int, int);
- method public static deprecated int dragViewBy(android.test.InstrumentationTestCase, android.view.View, int, int, int);
- method public static deprecated int dragViewTo(android.test.ActivityInstrumentationTestCase, android.view.View, int, int, int);
- method public static int dragViewTo(android.test.InstrumentationTestCase, android.view.View, int, int, int);
- method public static deprecated void dragViewToBottom(android.test.ActivityInstrumentationTestCase, android.view.View);
- method public static void dragViewToBottom(android.test.InstrumentationTestCase, android.app.Activity, android.view.View);
- method public static deprecated void dragViewToBottom(android.test.ActivityInstrumentationTestCase, android.view.View, int);
- method public static void dragViewToBottom(android.test.InstrumentationTestCase, android.app.Activity, android.view.View, int);
- method public static deprecated void dragViewToTop(android.test.ActivityInstrumentationTestCase, android.view.View);
- method public static deprecated void dragViewToTop(android.test.ActivityInstrumentationTestCase, android.view.View, int);
- method public static void dragViewToTop(android.test.InstrumentationTestCase, android.view.View);
- method public static void dragViewToTop(android.test.InstrumentationTestCase, android.view.View, int);
- method public static deprecated int dragViewToX(android.test.ActivityInstrumentationTestCase, android.view.View, int, int);
- method public static int dragViewToX(android.test.InstrumentationTestCase, android.view.View, int, int);
- method public static deprecated int dragViewToY(android.test.ActivityInstrumentationTestCase, android.view.View, int, int);
- method public static int dragViewToY(android.test.InstrumentationTestCase, android.view.View, int, int);
- method public static deprecated void longClickView(android.test.ActivityInstrumentationTestCase, android.view.View);
- method public static void longClickView(android.test.InstrumentationTestCase, android.view.View);
- method public static deprecated void scrollToBottom(android.test.ActivityInstrumentationTestCase, android.view.ViewGroup);
- method public static void scrollToBottom(android.test.InstrumentationTestCase, android.app.Activity, android.view.ViewGroup);
- method public static deprecated void scrollToTop(android.test.ActivityInstrumentationTestCase, android.view.ViewGroup);
- method public static void scrollToTop(android.test.InstrumentationTestCase, android.app.Activity, android.view.ViewGroup);
- method public static void tapView(android.test.InstrumentationTestCase, android.view.View);
- method public static void touchAndCancelView(android.test.InstrumentationTestCase, android.view.View);
+ @Deprecated public class TouchUtils {
+ ctor @Deprecated public TouchUtils();
+ method @Deprecated public static void clickView(android.test.InstrumentationTestCase, android.view.View);
+ method @Deprecated public static void drag(android.test.ActivityInstrumentationTestCase, float, float, float, float, int);
+ method @Deprecated public static void drag(android.test.InstrumentationTestCase, float, float, float, float, int);
+ method @Deprecated public static void dragQuarterScreenDown(android.test.ActivityInstrumentationTestCase);
+ method @Deprecated public static void dragQuarterScreenDown(android.test.InstrumentationTestCase, android.app.Activity);
+ method @Deprecated public static void dragQuarterScreenUp(android.test.ActivityInstrumentationTestCase);
+ method @Deprecated public static void dragQuarterScreenUp(android.test.InstrumentationTestCase, android.app.Activity);
+ method @Deprecated public static int dragViewBy(android.test.ActivityInstrumentationTestCase, android.view.View, int, int, int);
+ method @Deprecated public static int dragViewBy(android.test.InstrumentationTestCase, android.view.View, int, int, int);
+ method @Deprecated public static int dragViewTo(android.test.ActivityInstrumentationTestCase, android.view.View, int, int, int);
+ method @Deprecated public static int dragViewTo(android.test.InstrumentationTestCase, android.view.View, int, int, int);
+ method @Deprecated public static void dragViewToBottom(android.test.ActivityInstrumentationTestCase, android.view.View);
+ method @Deprecated public static void dragViewToBottom(android.test.InstrumentationTestCase, android.app.Activity, android.view.View);
+ method @Deprecated public static void dragViewToBottom(android.test.ActivityInstrumentationTestCase, android.view.View, int);
+ method @Deprecated public static void dragViewToBottom(android.test.InstrumentationTestCase, android.app.Activity, android.view.View, int);
+ method @Deprecated public static void dragViewToTop(android.test.ActivityInstrumentationTestCase, android.view.View);
+ method @Deprecated public static void dragViewToTop(android.test.ActivityInstrumentationTestCase, android.view.View, int);
+ method @Deprecated public static void dragViewToTop(android.test.InstrumentationTestCase, android.view.View);
+ method @Deprecated public static void dragViewToTop(android.test.InstrumentationTestCase, android.view.View, int);
+ method @Deprecated public static int dragViewToX(android.test.ActivityInstrumentationTestCase, android.view.View, int, int);
+ method @Deprecated public static int dragViewToX(android.test.InstrumentationTestCase, android.view.View, int, int);
+ method @Deprecated public static int dragViewToY(android.test.ActivityInstrumentationTestCase, android.view.View, int, int);
+ method @Deprecated public static int dragViewToY(android.test.InstrumentationTestCase, android.view.View, int, int);
+ method @Deprecated public static void longClickView(android.test.ActivityInstrumentationTestCase, android.view.View);
+ method @Deprecated public static void longClickView(android.test.InstrumentationTestCase, android.view.View);
+ method @Deprecated public static void scrollToBottom(android.test.ActivityInstrumentationTestCase, android.view.ViewGroup);
+ method @Deprecated public static void scrollToBottom(android.test.InstrumentationTestCase, android.app.Activity, android.view.ViewGroup);
+ method @Deprecated public static void scrollToTop(android.test.ActivityInstrumentationTestCase, android.view.ViewGroup);
+ method @Deprecated public static void scrollToTop(android.test.InstrumentationTestCase, android.app.Activity, android.view.ViewGroup);
+ method @Deprecated public static void tapView(android.test.InstrumentationTestCase, android.view.View);
+ method @Deprecated public static void touchAndCancelView(android.test.InstrumentationTestCase, android.view.View);
}
- public deprecated class ViewAsserts {
- method public static void assertBaselineAligned(android.view.View, android.view.View);
- method public static void assertBottomAligned(android.view.View, android.view.View);
- method public static void assertBottomAligned(android.view.View, android.view.View, int);
- method public static void assertGroupContains(android.view.ViewGroup, android.view.View);
- method public static void assertGroupIntegrity(android.view.ViewGroup);
- method public static void assertGroupNotContains(android.view.ViewGroup, android.view.View);
- method public static void assertHasScreenCoordinates(android.view.View, android.view.View, int, int);
- method public static void assertHorizontalCenterAligned(android.view.View, android.view.View);
- method public static void assertLeftAligned(android.view.View, android.view.View);
- method public static void assertLeftAligned(android.view.View, android.view.View, int);
- method public static void assertOffScreenAbove(android.view.View, android.view.View);
- method public static void assertOffScreenBelow(android.view.View, android.view.View);
- method public static void assertOnScreen(android.view.View, android.view.View);
- method public static void assertRightAligned(android.view.View, android.view.View);
- method public static void assertRightAligned(android.view.View, android.view.View, int);
- method public static void assertTopAligned(android.view.View, android.view.View);
- method public static void assertTopAligned(android.view.View, android.view.View, int);
- method public static void assertVerticalCenterAligned(android.view.View, android.view.View);
+ @Deprecated public class ViewAsserts {
+ method @Deprecated public static void assertBaselineAligned(android.view.View, android.view.View);
+ method @Deprecated public static void assertBottomAligned(android.view.View, android.view.View);
+ method @Deprecated public static void assertBottomAligned(android.view.View, android.view.View, int);
+ method @Deprecated public static void assertGroupContains(android.view.ViewGroup, android.view.View);
+ method @Deprecated public static void assertGroupIntegrity(android.view.ViewGroup);
+ method @Deprecated public static void assertGroupNotContains(android.view.ViewGroup, android.view.View);
+ method @Deprecated public static void assertHasScreenCoordinates(android.view.View, android.view.View, int, int);
+ method @Deprecated public static void assertHorizontalCenterAligned(android.view.View, android.view.View);
+ method @Deprecated public static void assertLeftAligned(android.view.View, android.view.View);
+ method @Deprecated public static void assertLeftAligned(android.view.View, android.view.View, int);
+ method @Deprecated public static void assertOffScreenAbove(android.view.View, android.view.View);
+ method @Deprecated public static void assertOffScreenBelow(android.view.View, android.view.View);
+ method @Deprecated public static void assertOnScreen(android.view.View, android.view.View);
+ method @Deprecated public static void assertRightAligned(android.view.View, android.view.View);
+ method @Deprecated public static void assertRightAligned(android.view.View, android.view.View, int);
+ method @Deprecated public static void assertTopAligned(android.view.View, android.view.View);
+ method @Deprecated public static void assertTopAligned(android.view.View, android.view.View, int);
+ method @Deprecated public static void assertVerticalCenterAligned(android.view.View, android.view.View);
}
}
package android.test.suitebuilder {
- public deprecated class TestMethod {
- ctor public TestMethod(java.lang.reflect.Method, java.lang.Class<? extends junit.framework.TestCase>);
- ctor public TestMethod(java.lang.String, java.lang.Class<? extends junit.framework.TestCase>);
- ctor public TestMethod(junit.framework.TestCase);
- method public junit.framework.TestCase createTest() throws java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException;
- method public <T extends java.lang.annotation.Annotation> T getAnnotation(java.lang.Class<T>);
- method public java.lang.Class<? extends junit.framework.TestCase> getEnclosingClass();
- method public java.lang.String getEnclosingClassname();
- method public java.lang.String getName();
+ @Deprecated public class TestMethod {
+ ctor @Deprecated public TestMethod(java.lang.reflect.Method, Class<? extends junit.framework.TestCase>);
+ ctor @Deprecated public TestMethod(String, Class<? extends junit.framework.TestCase>);
+ ctor @Deprecated public TestMethod(junit.framework.TestCase);
+ method @Deprecated public junit.framework.TestCase createTest() throws java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException;
+ method @Deprecated public <T extends java.lang.annotation.Annotation> T getAnnotation(Class<T>);
+ method @Deprecated public Class<? extends junit.framework.TestCase> getEnclosingClass();
+ method @Deprecated public String getEnclosingClassname();
+ method @Deprecated public String getName();
}
- public deprecated class TestSuiteBuilder {
- ctor public TestSuiteBuilder(java.lang.Class);
- ctor public TestSuiteBuilder(java.lang.String, java.lang.ClassLoader);
- method public final junit.framework.TestSuite build();
- method public android.test.suitebuilder.TestSuiteBuilder excludePackages(java.lang.String...);
- method protected java.lang.String getSuiteName();
- method public final android.test.suitebuilder.TestSuiteBuilder includeAllPackagesUnderHere();
- method public android.test.suitebuilder.TestSuiteBuilder includePackages(java.lang.String...);
- method public android.test.suitebuilder.TestSuiteBuilder named(java.lang.String);
+ @Deprecated public class TestSuiteBuilder {
+ ctor @Deprecated public TestSuiteBuilder(Class);
+ ctor @Deprecated public TestSuiteBuilder(String, ClassLoader);
+ method @Deprecated public final junit.framework.TestSuite build();
+ method @Deprecated public android.test.suitebuilder.TestSuiteBuilder excludePackages(java.lang.String...);
+ method @Deprecated protected String getSuiteName();
+ method @Deprecated public final android.test.suitebuilder.TestSuiteBuilder includeAllPackagesUnderHere();
+ method @Deprecated public android.test.suitebuilder.TestSuiteBuilder includePackages(java.lang.String...);
+ method @Deprecated public android.test.suitebuilder.TestSuiteBuilder named(String);
}
- public static deprecated class TestSuiteBuilder.FailedToCreateTests extends junit.framework.TestCase {
- ctor public TestSuiteBuilder.FailedToCreateTests(java.lang.Exception);
- method public void testSuiteConstructionFailed();
+ @Deprecated public static class TestSuiteBuilder.FailedToCreateTests extends junit.framework.TestCase {
+ ctor @Deprecated public TestSuiteBuilder.FailedToCreateTests(Exception);
+ method @Deprecated public void testSuiteConstructionFailed();
}
}
@@ -290,44 +291,44 @@
public abstract class BaseTestRunner implements junit.framework.TestListener {
ctor public BaseTestRunner();
- method public synchronized void addError(junit.framework.Test, java.lang.Throwable);
- method public synchronized void addFailure(junit.framework.Test, junit.framework.AssertionFailedError);
+ method public void addError(junit.framework.Test, Throwable);
+ method public void addFailure(junit.framework.Test, junit.framework.AssertionFailedError);
method protected void clearStatus();
- method public java.lang.String elapsedTimeAsString(long);
- method public synchronized void endTest(junit.framework.Test);
- method public java.lang.String extractClassName(java.lang.String);
- method public static java.lang.String getFilteredTrace(java.lang.Throwable);
- method public static java.lang.String getFilteredTrace(java.lang.String);
- method public deprecated junit.runner.TestSuiteLoader getLoader();
- method public static java.lang.String getPreference(java.lang.String);
- method public static int getPreference(java.lang.String, int);
+ method public String elapsedTimeAsString(long);
+ method public void endTest(junit.framework.Test);
+ method public String extractClassName(String);
+ method public static String getFilteredTrace(Throwable);
+ method public static String getFilteredTrace(String);
+ method @Deprecated public junit.runner.TestSuiteLoader getLoader();
+ method public static String getPreference(String);
+ method public static int getPreference(String, int);
method protected static java.util.Properties getPreferences();
- method public junit.framework.Test getTest(java.lang.String);
- method public static deprecated boolean inVAJava();
- method protected java.lang.Class<?> loadSuiteClass(java.lang.String) throws java.lang.ClassNotFoundException;
- method protected java.lang.String processArguments(java.lang.String[]);
- method protected abstract void runFailed(java.lang.String);
+ method public junit.framework.Test getTest(String);
+ method @Deprecated public static boolean inVAJava();
+ method protected Class<?> loadSuiteClass(String) throws java.lang.ClassNotFoundException;
+ method protected String processArguments(String[]);
+ method protected abstract void runFailed(String);
method public static void savePreferences() throws java.io.IOException;
method public void setLoading(boolean);
- method public void setPreference(java.lang.String, java.lang.String);
+ method public void setPreference(String, String);
method protected static void setPreferences(java.util.Properties);
method protected static boolean showStackRaw();
- method public synchronized void startTest(junit.framework.Test);
- method public abstract void testEnded(java.lang.String);
- method public abstract void testFailed(int, junit.framework.Test, java.lang.Throwable);
- method public abstract void testStarted(java.lang.String);
- method public static java.lang.String truncate(java.lang.String);
+ method public void startTest(junit.framework.Test);
+ method public abstract void testEnded(String);
+ method public abstract void testFailed(int, junit.framework.Test, Throwable);
+ method public abstract void testStarted(String);
+ method public static String truncate(String);
method protected boolean useReloadingTestSuiteLoader();
- field public static final java.lang.String SUITE_METHODNAME = "suite";
+ field public static final String SUITE_METHODNAME = "suite";
}
- public abstract interface TestSuiteLoader {
- method public abstract java.lang.Class load(java.lang.String) throws java.lang.ClassNotFoundException;
- method public abstract java.lang.Class reload(java.lang.Class) throws java.lang.ClassNotFoundException;
+ public interface TestSuiteLoader {
+ method public Class load(String) throws java.lang.ClassNotFoundException;
+ method public Class reload(Class) throws java.lang.ClassNotFoundException;
}
public class Version {
- method public static java.lang.String id();
+ method public static String id();
}
}
diff --git a/test-runner/api/removed.txt b/test-runner/api/removed.txt
index e69de29..d802177 100644
--- a/test-runner/api/removed.txt
+++ b/test-runner/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-runner/api/system-current.txt b/test-runner/api/system-current.txt
index e69de29..d802177 100644
--- a/test-runner/api/system-current.txt
+++ b/test-runner/api/system-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-runner/api/system-removed.txt b/test-runner/api/system-removed.txt
index e69de29..d802177 100644
--- a/test-runner/api/system-removed.txt
+++ b/test-runner/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-runner/api/test-current.txt b/test-runner/api/test-current.txt
index e69de29..d802177 100644
--- a/test-runner/api/test-current.txt
+++ b/test-runner/api/test-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/test-runner/api/test-removed.txt b/test-runner/api/test-removed.txt
index e69de29..d802177 100644
--- a/test-runner/api/test-removed.txt
+++ b/test-runner/api/test-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/tests/ActivityViewTest/AndroidManifest.xml b/tests/ActivityViewTest/AndroidManifest.xml
index 0be1ea0..17eb029 100644
--- a/tests/ActivityViewTest/AndroidManifest.xml
+++ b/tests/ActivityViewTest/AndroidManifest.xml
@@ -57,5 +57,10 @@
android:exported="true"
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|colorMode|density">
</activity>
+
+ <activity android:name=".ActivityViewVisibilityActivity"
+ android:label="AV Visibility"
+ android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|colorMode|density">
+ </activity>
</application>
</manifest>
diff --git a/tests/ActivityViewTest/res/layout/activity_view_main_activity.xml b/tests/ActivityViewTest/res/layout/activity_view_main_activity.xml
index ba2e911..efcaef6 100644
--- a/tests/ActivityViewTest/res/layout/activity_view_main_activity.xml
+++ b/tests/ActivityViewTest/res/layout/activity_view_main_activity.xml
@@ -41,4 +41,10 @@
android:text="Test Resize ActivityView"
android:textAllCaps="false"/>
+ <Button
+ android:id="@+id/visibility_activity_view_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Test ActivityView Visibility"
+ android:textAllCaps="false"/>
</LinearLayout>
diff --git a/tests/ActivityViewTest/res/layout/activity_view_visibility_activity.xml b/tests/ActivityViewTest/res/layout/activity_view_visibility_activity.xml
new file mode 100644
index 0000000..d29d4df
--- /dev/null
+++ b/tests/ActivityViewTest/res/layout/activity_view_visibility_activity.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#cfd8dc">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <Button
+ android:id="@+id/activity_launch_button"
+ android:layout_width="200dp"
+ android:layout_height="wrap_content"
+ android:text="Launch test activity" />
+
+ <Spinner
+ android:id="@+id/visibility_spinner"
+ android:layout_width="200dp"
+ android:layout_height="match_parent"/>
+
+ </LinearLayout>
+
+ <ActivityView
+ android:id="@+id/activity_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+</LinearLayout>
diff --git a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewMainActivity.java b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewMainActivity.java
index 66f0c6a..4f09c28 100644
--- a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewMainActivity.java
+++ b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewMainActivity.java
@@ -35,5 +35,8 @@
findViewById(R.id.resize_activity_view_button).setOnClickListener(
v -> startActivity(new Intent(this, ActivityViewResizeActivity.class)));
+
+ findViewById(R.id.visibility_activity_view_button).setOnClickListener(
+ v -> startActivity(new Intent(this, ActivityViewVisibilityActivity.class)));
}
}
diff --git a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewTestActivity.java b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewTestActivity.java
index ba2c764..52aba2b 100644
--- a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewTestActivity.java
+++ b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewTestActivity.java
@@ -24,12 +24,14 @@
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
+import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.TextView;
public class ActivityViewTestActivity extends Activity {
+ private static final String TAG = "ActivityViewTestActivity";
private View mRoot;
private TextView mTextView;
@@ -84,6 +86,7 @@
}
private void updateStateText(String state) {
+ Log.d(TAG, state);
mTextView.setText(state);
}
diff --git a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewVisibilityActivity.java b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewVisibilityActivity.java
new file mode 100644
index 0000000..ecd2cf3
--- /dev/null
+++ b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewVisibilityActivity.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2019 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.google.android.test.activityview;
+
+import static android.view.View.GONE;
+import static android.view.View.INVISIBLE;
+import static android.view.View.VISIBLE;
+
+import android.app.Activity;
+import android.app.ActivityView;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.Spinner;
+
+public class ActivityViewVisibilityActivity extends Activity {
+ private static final String[] sVisibilityOptions = {"VISIBLE", "INVISIBLE", "GONE"};
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_view_visibility_activity);
+
+ final ActivityView activityView = findViewById(R.id.activity_view);
+ final Button launchButton = findViewById(R.id.activity_launch_button);
+ launchButton.setOnClickListener(v -> {
+ final Intent intent = new Intent(this, ActivityViewTestActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+ activityView.startActivity(intent);
+ });
+
+ final Spinner visibilitySpinner = findViewById(R.id.visibility_spinner);
+ final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
+ android.R.layout.simple_spinner_item, sVisibilityOptions);
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ visibilitySpinner.setAdapter(adapter);
+ visibilitySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+ switch (position) {
+ case 0:
+ activityView.setVisibility(VISIBLE);
+ break;
+ case 1:
+ activityView.setVisibility(INVISIBLE);
+ break;
+ case 2:
+ activityView.setVisibility(GONE);
+ break;
+ }
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> parent) {
+ }
+ });
+ }
+}
diff --git a/tests/PackageWatchdog/Android.mk b/tests/PackageWatchdog/Android.mk
index b53f27d..1c1c2a4 100644
--- a/tests/PackageWatchdog/Android.mk
+++ b/tests/PackageWatchdog/Android.mk
@@ -23,7 +23,7 @@
junit \
frameworks-base-testutils \
android-support-test \
- services
+ services.core
LOCAL_JAVA_LIBRARIES := \
android.test.runner
diff --git a/tests/RollbackTest/src/com/android/tests/rollback/RollbackTest.java b/tests/RollbackTest/src/com/android/tests/rollback/RollbackTest.java
index 77cd9d8..c2e735e 100644
--- a/tests/RollbackTest/src/com/android/tests/rollback/RollbackTest.java
+++ b/tests/RollbackTest/src/com/android/tests/rollback/RollbackTest.java
@@ -178,10 +178,10 @@
}
/**
- * Test that rollback data is properly persisted.
+ * Test that multiple available rollbacks are properly persisted.
*/
@Test
- public void testRollbackDataPersistence() throws Exception {
+ public void testAvailableRollbackPersistence() throws Exception {
try {
RollbackTestUtils.adoptShellPermissionIdentity(
Manifest.permission.INSTALL_PACKAGES,
@@ -190,9 +190,145 @@
RollbackManager rm = RollbackTestUtils.getRollbackManager();
- // TODO: Test this with multi-package rollback, not just single
- // package rollback.
- // Prep installation of TEST_APP_A
+ RollbackTestUtils.uninstall(TEST_APP_A);
+ RollbackTestUtils.install("RollbackTestAppAv1.apk", false);
+ RollbackTestUtils.install("RollbackTestAppAv2.apk", true);
+ assertEquals(2, RollbackTestUtils.getInstalledVersion(TEST_APP_A));
+
+ RollbackTestUtils.uninstall(TEST_APP_B);
+ RollbackTestUtils.install("RollbackTestAppBv1.apk", false);
+ RollbackTestUtils.install("RollbackTestAppBv2.apk", true);
+ assertEquals(2, RollbackTestUtils.getInstalledVersion(TEST_APP_B));
+
+ // Both test apps should now be available for rollback.
+ // TODO: See if there is a way to remove this race condition
+ // between when the app is installed and when the rollback
+ // is made available.
+ Thread.sleep(1000);
+
+ assertTrue(rm.getPackagesWithAvailableRollbacks().contains(TEST_APP_A));
+ RollbackInfo rollbackA = rm.getAvailableRollback(TEST_APP_A);
+ assertNotNull(rollbackA);
+ assertEquals(TEST_APP_A, rollbackA.targetPackage.packageName);
+ assertEquals(2, rollbackA.targetPackage.higherVersion.versionCode);
+ assertEquals(1, rollbackA.targetPackage.lowerVersion.versionCode);
+
+ assertTrue(rm.getPackagesWithAvailableRollbacks().contains(TEST_APP_B));
+ RollbackInfo rollbackB = rm.getAvailableRollback(TEST_APP_B);
+ assertNotNull(rollbackB);
+ assertEquals(TEST_APP_B, rollbackB.targetPackage.packageName);
+ assertEquals(2, rollbackB.targetPackage.higherVersion.versionCode);
+ assertEquals(1, rollbackB.targetPackage.lowerVersion.versionCode);
+
+ // Reload the persisted data.
+ rm.reloadPersistedData();
+
+ // The apps should still be available for rollback.
+ rollbackA = rm.getAvailableRollback(TEST_APP_A);
+ assertNotNull(rollbackA);
+ assertEquals(TEST_APP_A, rollbackA.targetPackage.packageName);
+ assertEquals(2, rollbackA.targetPackage.higherVersion.versionCode);
+ assertEquals(1, rollbackA.targetPackage.lowerVersion.versionCode);
+
+ assertTrue(rm.getPackagesWithAvailableRollbacks().contains(TEST_APP_B));
+ rollbackB = rm.getAvailableRollback(TEST_APP_B);
+ assertNotNull(rollbackB);
+ assertEquals(TEST_APP_B, rollbackB.targetPackage.packageName);
+ assertEquals(2, rollbackB.targetPackage.higherVersion.versionCode);
+ assertEquals(1, rollbackB.targetPackage.lowerVersion.versionCode);
+
+ // Rollback of B should not rollback A
+ RollbackTestUtils.rollback(rollbackB);
+ assertEquals(2, RollbackTestUtils.getInstalledVersion(TEST_APP_A));
+ assertEquals(1, RollbackTestUtils.getInstalledVersion(TEST_APP_B));
+ } finally {
+ RollbackTestUtils.dropShellPermissionIdentity();
+ }
+ }
+
+ /**
+ * Test that available multi-package rollbacks are properly persisted.
+ */
+ @Test
+ public void testAvailableMultiPackageRollbackPersistence() throws Exception {
+ try {
+ RollbackTestUtils.adoptShellPermissionIdentity(
+ Manifest.permission.INSTALL_PACKAGES,
+ Manifest.permission.DELETE_PACKAGES,
+ Manifest.permission.MANAGE_ROLLBACKS);
+
+ RollbackManager rm = RollbackTestUtils.getRollbackManager();
+
+ RollbackTestUtils.uninstall(TEST_APP_A);
+ RollbackTestUtils.uninstall(TEST_APP_B);
+ RollbackTestUtils.installMultiPackage(false,
+ "RollbackTestAppAv1.apk",
+ "RollbackTestAppBv1.apk");
+ RollbackTestUtils.installMultiPackage(true,
+ "RollbackTestAppAv2.apk",
+ "RollbackTestAppBv2.apk");
+ assertEquals(2, RollbackTestUtils.getInstalledVersion(TEST_APP_A));
+ assertEquals(2, RollbackTestUtils.getInstalledVersion(TEST_APP_B));
+
+ // The app should now be available for rollback.
+ // TODO: See if there is a way to remove this race condition
+ // between when the app is installed and when the rollback
+ // is made available.
+ Thread.sleep(1000);
+
+ assertTrue(rm.getPackagesWithAvailableRollbacks().contains(TEST_APP_A));
+ RollbackInfo rollbackA = rm.getAvailableRollback(TEST_APP_A);
+ assertNotNull(rollbackA);
+ assertEquals(TEST_APP_A, rollbackA.targetPackage.packageName);
+ assertEquals(2, rollbackA.targetPackage.higherVersion.versionCode);
+ assertEquals(1, rollbackA.targetPackage.lowerVersion.versionCode);
+
+ assertTrue(rm.getPackagesWithAvailableRollbacks().contains(TEST_APP_B));
+ RollbackInfo rollbackB = rm.getAvailableRollback(TEST_APP_B);
+ assertNotNull(rollbackB);
+ assertEquals(TEST_APP_B, rollbackB.targetPackage.packageName);
+ assertEquals(2, rollbackB.targetPackage.higherVersion.versionCode);
+ assertEquals(1, rollbackB.targetPackage.lowerVersion.versionCode);
+
+ // Reload the persisted data.
+ rm.reloadPersistedData();
+
+ // The apps should still be available for rollback.
+ rollbackA = rm.getAvailableRollback(TEST_APP_A);
+ assertNotNull(rollbackA);
+ assertEquals(TEST_APP_A, rollbackA.targetPackage.packageName);
+ assertEquals(2, rollbackA.targetPackage.higherVersion.versionCode);
+ assertEquals(1, rollbackA.targetPackage.lowerVersion.versionCode);
+
+ assertTrue(rm.getPackagesWithAvailableRollbacks().contains(TEST_APP_B));
+ rollbackB = rm.getAvailableRollback(TEST_APP_B);
+ assertNotNull(rollbackB);
+ assertEquals(TEST_APP_B, rollbackB.targetPackage.packageName);
+ assertEquals(2, rollbackB.targetPackage.higherVersion.versionCode);
+ assertEquals(1, rollbackB.targetPackage.lowerVersion.versionCode);
+
+ // Rollback of B should rollback A as well
+ RollbackTestUtils.rollback(rollbackB);
+ assertEquals(1, RollbackTestUtils.getInstalledVersion(TEST_APP_A));
+ assertEquals(1, RollbackTestUtils.getInstalledVersion(TEST_APP_B));
+ } finally {
+ RollbackTestUtils.dropShellPermissionIdentity();
+ }
+ }
+
+ /**
+ * Test that recently executed rollback data is properly persisted.
+ */
+ @Test
+ public void testRecentlyExecutedRollbackPersistence() throws Exception {
+ try {
+ RollbackTestUtils.adoptShellPermissionIdentity(
+ Manifest.permission.INSTALL_PACKAGES,
+ Manifest.permission.DELETE_PACKAGES,
+ Manifest.permission.MANAGE_ROLLBACKS);
+
+ RollbackManager rm = RollbackTestUtils.getRollbackManager();
+
RollbackTestUtils.uninstall(TEST_APP_A);
RollbackTestUtils.install("RollbackTestAppAv1.apk", false);
RollbackTestUtils.install("RollbackTestAppAv2.apk", true);
@@ -205,21 +341,6 @@
Thread.sleep(1000);
assertTrue(rm.getPackagesWithAvailableRollbacks().contains(TEST_APP_A));
RollbackInfo rollback = rm.getAvailableRollback(TEST_APP_A);
- assertNotNull(rollback);
- assertEquals(TEST_APP_A, rollback.targetPackage.packageName);
- assertEquals(2, rollback.targetPackage.higherVersion.versionCode);
- assertEquals(1, rollback.targetPackage.lowerVersion.versionCode);
-
- // Reload the persisted data.
- rm.reloadPersistedData();
-
- // The app should still be available for rollback.
- assertTrue(rm.getPackagesWithAvailableRollbacks().contains(TEST_APP_A));
- rollback = rm.getAvailableRollback(TEST_APP_A);
- assertNotNull(rollback);
- assertEquals(TEST_APP_A, rollback.targetPackage.packageName);
- assertEquals(2, rollback.targetPackage.higherVersion.versionCode);
- assertEquals(1, rollback.targetPackage.lowerVersion.versionCode);
// Roll back the app.
RollbackTestUtils.rollback(rollback);
diff --git a/tests/net/Android.mk b/tests/net/Android.mk
index f6f35fd..6850673 100644
--- a/tests/net/Android.mk
+++ b/tests/net/Android.mk
@@ -54,6 +54,7 @@
libnativehelper \
libpackagelistparser \
libpcre2 \
+ libprocessgroup \
libselinux \
libui \
libutils \
diff --git a/tests/net/java/android/net/LinkPropertiesTest.java b/tests/net/java/android/net/LinkPropertiesTest.java
index f82b380..299fbef 100644
--- a/tests/net/java/android/net/LinkPropertiesTest.java
+++ b/tests/net/java/android/net/LinkPropertiesTest.java
@@ -18,6 +18,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -33,6 +34,9 @@
import android.system.OsConstants;
import android.util.ArraySet;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Arrays;
@@ -41,9 +45,6 @@
import java.util.List;
import java.util.Set;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
@RunWith(AndroidJUnit4.class)
@SmallTest
public class LinkPropertiesTest {
@@ -504,6 +505,40 @@
}
@Test
+ public void testNat64Prefix() throws Exception {
+ LinkProperties lp = new LinkProperties();
+ lp.addLinkAddress(LINKADDRV4);
+ lp.addLinkAddress(LINKADDRV6);
+
+ assertNull(lp.getNat64Prefix());
+
+ IpPrefix p = new IpPrefix("64:ff9b::/96");
+ lp.setNat64Prefix(p);
+ assertEquals(p, lp.getNat64Prefix());
+
+ p = new IpPrefix("2001:db8:a:b:1:2:3::/96");
+ lp.setNat64Prefix(p);
+ assertEquals(p, lp.getNat64Prefix());
+
+ p = new IpPrefix("2001:db8:a:b:1:2::/80");
+ try {
+ lp.setNat64Prefix(p);
+ } catch (IllegalArgumentException expected) {
+ }
+
+ p = new IpPrefix("64:ff9b::/64");
+ try {
+ lp.setNat64Prefix(p);
+ } catch (IllegalArgumentException expected) {
+ }
+
+ assertEquals(new IpPrefix("2001:db8:a:b:1:2:3::/96"), lp.getNat64Prefix());
+
+ lp.setNat64Prefix(null);
+ assertNull(lp.getNat64Prefix());
+ }
+
+ @Test
public void testIsProvisioned() {
LinkProperties lp4 = new LinkProperties();
assertFalse("v4only:empty", lp4.isProvisioned());
@@ -814,8 +849,20 @@
assertEquals(new ArraySet<>(expectRemoved), (new ArraySet<>(result.removed)));
}
+ private void assertParcelingIsLossless(LinkProperties source) {
+ Parcel p = Parcel.obtain();
+ source.writeToParcel(p, /* flags */ 0);
+ p.setDataPosition(0);
+ final byte[] marshalled = p.marshall();
+ p = Parcel.obtain();
+ p.unmarshall(marshalled, 0, marshalled.length);
+ p.setDataPosition(0);
+ LinkProperties dest = LinkProperties.CREATOR.createFromParcel(p);
+ assertEquals(source, dest);
+ }
+
@Test
- public void testLinkPropertiesParcelable() {
+ public void testLinkPropertiesParcelable() throws Exception {
LinkProperties source = new LinkProperties();
source.setInterfaceName(NAME);
// set 2 link addresses
@@ -833,15 +880,14 @@
source.setMtu(MTU);
- Parcel p = Parcel.obtain();
- source.writeToParcel(p, /* flags */ 0);
- p.setDataPosition(0);
- final byte[] marshalled = p.marshall();
- p = Parcel.obtain();
- p.unmarshall(marshalled, 0, marshalled.length);
- p.setDataPosition(0);
- LinkProperties dest = LinkProperties.CREATOR.createFromParcel(p);
+ source.setNat64Prefix(new IpPrefix("2001:db8:1:2:64:64::/96"));
- assertEquals(source, dest);
+ assertParcelingIsLossless(source);
+ }
+
+ @Test
+ public void testParcelUninitialized() throws Exception {
+ LinkProperties empty = new LinkProperties();
+ assertParcelingIsLossless(empty);
}
}
diff --git a/tests/net/java/android/net/shared/LinkPropertiesParcelableUtilTest.java b/tests/net/java/android/net/shared/LinkPropertiesParcelableUtilTest.java
new file mode 100644
index 0000000..4cabfc9
--- /dev/null
+++ b/tests/net/java/android/net/shared/LinkPropertiesParcelableUtilTest.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2019 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 android.net.shared;
+
+import static android.net.shared.LinkPropertiesParcelableUtil.fromStableParcelable;
+import static android.net.shared.LinkPropertiesParcelableUtil.toStableParcelable;
+
+import static org.junit.Assert.assertEquals;
+
+import android.net.InetAddresses;
+import android.net.IpPrefix;
+import android.net.LinkAddress;
+import android.net.LinkProperties;
+import android.net.ProxyInfo;
+import android.net.RouteInfo;
+import android.net.Uri;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.Collections;
+
+/**
+ * Tests for {@link LinkPropertiesParcelableUtil}
+ */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class LinkPropertiesParcelableUtilTest {
+ private LinkProperties mLinkProperties;
+
+ private static final String TEST_LINKPROPS_IFACE = "TEST_IFACE";
+ private static final String TEST_STACKED_LINK_1_IFACE = "TEST_STACKED_IFACE_1";
+ private static final String TEST_STACKED_LINK_2_IFACE = "TEST_STACKED_IFACE_2";
+
+ @Before
+ public void setUp() {
+ mLinkProperties = makeLinkProperties(TEST_LINKPROPS_IFACE);
+ mLinkProperties.addStackedLink(makeLinkProperties(TEST_STACKED_LINK_1_IFACE));
+ mLinkProperties.addStackedLink(makeLinkProperties(TEST_STACKED_LINK_2_IFACE));
+ }
+
+ private static LinkProperties makeLinkProperties(String iface) {
+ final LinkProperties lp = new LinkProperties();
+ lp.setInterfaceName(iface);
+ lp.setLinkAddresses(Arrays.asList(
+ new LinkAddress(InetAddresses.parseNumericAddress("192.168.0.42"), 16),
+ new LinkAddress(InetAddresses.parseNumericAddress("2001:db8::7"), 42)));
+ lp.setDnsServers(Arrays.asList(
+ InetAddresses.parseNumericAddress("2001:db8::42"),
+ InetAddresses.parseNumericAddress("192.168.1.1")
+ ));
+ lp.setValidatedPrivateDnsServers(Arrays.asList(
+ InetAddresses.parseNumericAddress("2001:db8::43"),
+ InetAddresses.parseNumericAddress("192.168.42.43")
+ ));
+ lp.setPcscfServers(Arrays.asList(
+ InetAddresses.parseNumericAddress("2001:db8::47"),
+ InetAddresses.parseNumericAddress("192.168.42.47")
+ ));
+ lp.setUsePrivateDns(true);
+ lp.setPrivateDnsServerName("test.example.com");
+ lp.setDomains("test1.example.com,test2.example.com");
+ lp.addRoute(new RouteInfo(
+ new IpPrefix(InetAddresses.parseNumericAddress("2001:db8::44"), 45),
+ InetAddresses.parseNumericAddress("2001:db8::45"),
+ iface,
+ RouteInfo.RTN_UNICAST
+ ));
+ lp.addRoute(new RouteInfo(
+ new IpPrefix(InetAddresses.parseNumericAddress("192.168.44.45"), 16),
+ InetAddresses.parseNumericAddress("192.168.45.1"),
+ iface,
+ RouteInfo.RTN_THROW
+ ));
+ lp.setHttpProxy(new ProxyInfo("test3.example.com", 8000,
+ "excl1.example.com,excl2.example.com"));
+ lp.setMtu(5000);
+ lp.setTcpBufferSizes("1,2,3,4,5,6");
+ lp.setNat64Prefix(new IpPrefix(InetAddresses.parseNumericAddress("2001:db8::48"), 96));
+
+ // Verify that this test does not miss any new field added later.
+ // If any added field is not included in LinkProperties#equals, assertLinkPropertiesEquals
+ // must also be updated.
+ assertEquals(14, Arrays.stream(LinkProperties.class.getDeclaredFields())
+ .filter(f -> !Modifier.isStatic(f.getModifiers())).count());
+
+ return lp;
+ }
+
+ @Test
+ public void testParcelUnparcel() {
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_NullInterface() {
+ mLinkProperties.setInterfaceName(null);
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_NullPrivateDnsServer() {
+ mLinkProperties.setPrivateDnsServerName(null);
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_NullDomains() {
+ mLinkProperties.setDomains(null);
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_NullProxy() {
+ mLinkProperties.setHttpProxy(null);
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_NullTcpBufferSizes() {
+ mLinkProperties.setTcpBufferSizes(null);
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_EmptyLinkAddresses() {
+ mLinkProperties.setLinkAddresses(Collections.emptyList());
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_EmptyDnses() {
+ mLinkProperties.setDnsServers(Collections.emptyList());
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_EmptyValidatedPrivateDnses() {
+ mLinkProperties.setValidatedPrivateDnsServers(Collections.emptyList());
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_EmptyRoutes() {
+ for (RouteInfo r : mLinkProperties.getAllRoutes()) {
+ mLinkProperties.removeRoute(r);
+ }
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_PacFileProxyInfo() {
+ mLinkProperties.setHttpProxy(new ProxyInfo(Uri.parse("http://pacfile.example.com")));
+ doParcelUnparcelTest();
+ }
+
+ @Test
+ public void testParcelUnparcel_NullNat64Prefix() {
+ mLinkProperties.setNat64Prefix(null);
+ doParcelUnparcelTest();
+ }
+
+ private void doParcelUnparcelTest() {
+ final LinkProperties unparceled = fromStableParcelable(toStableParcelable(mLinkProperties));
+ assertLinkPropertiesEquals(mLinkProperties, unparceled);
+ }
+
+ private static void assertLinkPropertiesEquals(LinkProperties expected, LinkProperties actual) {
+ assertEquals(expected, actual);
+
+ // LinkProperties equals() does not include stacked links
+ assertEquals(expected.getStackedLinks(), actual.getStackedLinks());
+ }
+}
diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index bf39644..882babf 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -122,7 +122,6 @@
import android.net.NetworkStack;
import android.net.NetworkUtils;
import android.net.RouteInfo;
-import android.net.StringNetworkSpecifier;
import android.net.UidRange;
import android.net.metrics.IpConnectivityLog;
import android.net.shared.NetworkMonitorUtils;
@@ -145,6 +144,7 @@
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.test.mock.MockContentResolver;
+import android.text.TextUtils;
import android.util.ArraySet;
import android.util.Log;
@@ -2567,16 +2567,76 @@
return new NetworkRequest.Builder().addTransportType(TRANSPORT_WIFI);
}
+ /**
+ * Verify request matching behavior with network specifiers.
+ *
+ * Note: this test is somewhat problematic since it involves removing capabilities from
+ * agents - i.e. agents rejecting requests which they previously accepted. This is flagged
+ * as a WTF bug in
+ * {@link ConnectivityService#mixInCapabilities(NetworkAgentInfo, NetworkCapabilities)} but
+ * does work.
+ */
@Test
public void testNetworkSpecifier() {
+ // A NetworkSpecifier subclass that matches all networks but must not be visible to apps.
+ class ConfidentialMatchAllNetworkSpecifier extends NetworkSpecifier implements
+ Parcelable {
+ @Override
+ public boolean satisfiedBy(NetworkSpecifier other) {
+ return true;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {}
+
+ @Override
+ public NetworkSpecifier redact() {
+ return null;
+ }
+ }
+
+ // A network specifier that matches either another LocalNetworkSpecifier with the same
+ // string or a ConfidentialMatchAllNetworkSpecifier, and can be passed to apps as is.
+ class LocalStringNetworkSpecifier extends NetworkSpecifier implements Parcelable {
+ private String mString;
+
+ LocalStringNetworkSpecifier(String string) {
+ mString = string;
+ }
+
+ @Override
+ public boolean satisfiedBy(NetworkSpecifier other) {
+ if (other instanceof LocalStringNetworkSpecifier) {
+ return TextUtils.equals(mString,
+ ((LocalStringNetworkSpecifier) other).mString);
+ }
+ if (other instanceof ConfidentialMatchAllNetworkSpecifier) return true;
+ return false;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {}
+ }
+
+
NetworkRequest rEmpty1 = newWifiRequestBuilder().build();
NetworkRequest rEmpty2 = newWifiRequestBuilder().setNetworkSpecifier((String) null).build();
NetworkRequest rEmpty3 = newWifiRequestBuilder().setNetworkSpecifier("").build();
NetworkRequest rEmpty4 = newWifiRequestBuilder().setNetworkSpecifier(
(NetworkSpecifier) null).build();
- NetworkRequest rFoo = newWifiRequestBuilder().setNetworkSpecifier("foo").build();
+ NetworkRequest rFoo = newWifiRequestBuilder().setNetworkSpecifier(
+ new LocalStringNetworkSpecifier("foo")).build();
NetworkRequest rBar = newWifiRequestBuilder().setNetworkSpecifier(
- new StringNetworkSpecifier("bar")).build();
+ new LocalStringNetworkSpecifier("bar")).build();
TestNetworkCallback cEmpty1 = new TestNetworkCallback();
TestNetworkCallback cEmpty2 = new TestNetworkCallback();
@@ -2585,7 +2645,7 @@
TestNetworkCallback cFoo = new TestNetworkCallback();
TestNetworkCallback cBar = new TestNetworkCallback();
TestNetworkCallback[] emptyCallbacks = new TestNetworkCallback[] {
- cEmpty1, cEmpty2, cEmpty3 };
+ cEmpty1, cEmpty2, cEmpty3, cEmpty4 };
mCm.registerNetworkCallback(rEmpty1, cEmpty1);
mCm.registerNetworkCallback(rEmpty2, cEmpty2);
@@ -2594,6 +2654,9 @@
mCm.registerNetworkCallback(rFoo, cFoo);
mCm.registerNetworkCallback(rBar, cBar);
+ LocalStringNetworkSpecifier nsFoo = new LocalStringNetworkSpecifier("foo");
+ LocalStringNetworkSpecifier nsBar = new LocalStringNetworkSpecifier("bar");
+
mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI);
mWiFiNetworkAgent.connect(false);
cEmpty1.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
@@ -2602,30 +2665,54 @@
cEmpty4.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
assertNoCallbacks(cFoo, cBar);
- mWiFiNetworkAgent.setNetworkSpecifier(new StringNetworkSpecifier("foo"));
+ mWiFiNetworkAgent.setNetworkSpecifier(nsFoo);
cFoo.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
for (TestNetworkCallback c: emptyCallbacks) {
- c.expectCallback(CallbackState.NETWORK_CAPABILITIES, mWiFiNetworkAgent);
+ c.expectCapabilitiesLike((caps) -> caps.getNetworkSpecifier().equals(nsFoo),
+ mWiFiNetworkAgent);
}
- cFoo.expectCallback(CallbackState.NETWORK_CAPABILITIES, mWiFiNetworkAgent);
+ cFoo.expectCapabilitiesLike((caps) -> caps.getNetworkSpecifier().equals(nsFoo),
+ mWiFiNetworkAgent);
+ assertEquals(nsFoo,
+ mCm.getNetworkCapabilities(mWiFiNetworkAgent.getNetwork()).getNetworkSpecifier());
cFoo.assertNoCallback();
- mWiFiNetworkAgent.setNetworkSpecifier(new StringNetworkSpecifier("bar"));
+ mWiFiNetworkAgent.setNetworkSpecifier(nsBar);
cFoo.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
cBar.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
for (TestNetworkCallback c: emptyCallbacks) {
- c.expectCallback(CallbackState.NETWORK_CAPABILITIES, mWiFiNetworkAgent);
+ c.expectCapabilitiesLike((caps) -> caps.getNetworkSpecifier().equals(nsBar),
+ mWiFiNetworkAgent);
}
- cBar.expectCallback(CallbackState.NETWORK_CAPABILITIES, mWiFiNetworkAgent);
+ cBar.expectCapabilitiesLike((caps) -> caps.getNetworkSpecifier().equals(nsBar),
+ mWiFiNetworkAgent);
+ assertEquals(nsBar,
+ mCm.getNetworkCapabilities(mWiFiNetworkAgent.getNetwork()).getNetworkSpecifier());
+ cBar.assertNoCallback();
+
+ mWiFiNetworkAgent.setNetworkSpecifier(new ConfidentialMatchAllNetworkSpecifier());
+ cFoo.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
+ for (TestNetworkCallback c : emptyCallbacks) {
+ c.expectCapabilitiesLike((caps) -> caps.getNetworkSpecifier() == null,
+ mWiFiNetworkAgent);
+ }
+ cFoo.expectCapabilitiesLike((caps) -> caps.getNetworkSpecifier() == null,
+ mWiFiNetworkAgent);
+ cBar.expectCapabilitiesLike((caps) -> caps.getNetworkSpecifier() == null,
+ mWiFiNetworkAgent);
+ assertNull(
+ mCm.getNetworkCapabilities(mWiFiNetworkAgent.getNetwork()).getNetworkSpecifier());
+ cFoo.assertNoCallback();
cBar.assertNoCallback();
mWiFiNetworkAgent.setNetworkSpecifier(null);
+ cFoo.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
cBar.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
for (TestNetworkCallback c: emptyCallbacks) {
c.expectCallback(CallbackState.NETWORK_CAPABILITIES, mWiFiNetworkAgent);
}
- assertNoCallbacks(cEmpty1, cEmpty2, cEmpty3, cFoo, cBar);
+ assertNoCallbacks(cEmpty1, cEmpty2, cEmpty3, cEmpty4, cFoo, cBar);
}
@Test
@@ -4683,7 +4770,7 @@
mCellNetworkAgent.sendLinkProperties(cellLp);
mCellNetworkAgent.connect(true);
networkCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
- verify(mNetworkManagementService, times(1)).startClatd(MOBILE_IFNAME);
+ verify(mMockNetd, times(1)).clatdStart(MOBILE_IFNAME);
Nat464Xlat clat = mService.getNat464Xlat(mCellNetworkAgent);
// Clat iface up, expect stack link updated.
@@ -4710,7 +4797,7 @@
mCellNetworkAgent.sendLinkProperties(cellLp);
waitForIdle();
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
- verify(mNetworkManagementService, times(1)).stopClatd(MOBILE_IFNAME);
+ verify(mMockNetd, times(1)).clatdStop(MOBILE_IFNAME);
// Clat iface removed, expect linkproperties revert to original one
clat.interfaceRemoved(CLAT_PREFIX + MOBILE_IFNAME);
diff --git a/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java b/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java
index d8f9618..a844cfee 100644
--- a/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java
+++ b/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java
@@ -535,7 +535,10 @@
IpSecTransformResponse createTransformResp =
mIpSecService.createTransform(ipSecConfig, new Binder(), "blessedPackage");
- ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(new Socket());
+
+ Socket socket = new Socket();
+ socket.bind(null);
+ ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
int resourceId = createTransformResp.resourceId;
mIpSecService.applyTransportModeTransform(pfd, IpSecManager.DIRECTION_OUT, resourceId);
@@ -552,7 +555,9 @@
@Test
public void testRemoveTransportModeTransform() throws Exception {
- ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(new Socket());
+ Socket socket = new Socket();
+ socket.bind(null);
+ ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
mIpSecService.removeTransportModeTransforms(pfd);
verify(mMockNetd).ipSecRemoveTransportModeTransform(pfd);
diff --git a/tests/net/java/com/android/server/IpSecServiceTest.java b/tests/net/java/com/android/server/IpSecServiceTest.java
index 724446e..5be7c7b 100644
--- a/tests/net/java/com/android/server/IpSecServiceTest.java
+++ b/tests/net/java/com/android/server/IpSecServiceTest.java
@@ -422,7 +422,9 @@
@Test
public void testRemoveTransportModeTransform() throws Exception {
- ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(new Socket());
+ Socket socket = new Socket();
+ socket.bind(null);
+ ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
mIpSecService.removeTransportModeTransforms(pfd);
verify(mMockNetd).ipSecRemoveTransportModeTransform(pfd);
diff --git a/tests/net/java/com/android/server/connectivity/LingerMonitorTest.java b/tests/net/java/com/android/server/connectivity/LingerMonitorTest.java
index 4c52d81..9578ded 100644
--- a/tests/net/java/com/android/server/connectivity/LingerMonitorTest.java
+++ b/tests/net/java/com/android/server/connectivity/LingerMonitorTest.java
@@ -32,11 +32,13 @@
import android.content.Context;
import android.content.res.Resources;
import android.net.ConnectivityManager;
+import android.net.INetd;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkMisc;
import android.net.NetworkStack;
+import android.os.INetworkManagementService;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.text.format.DateUtils;
@@ -66,6 +68,8 @@
LingerMonitor mMonitor;
@Mock ConnectivityService mConnService;
+ @Mock INetd mNetd;
+ @Mock INetworkManagementService mNMS;
@Mock Context mCtx;
@Mock NetworkMisc mMisc;
@Mock NetworkNotificationManager mNotifier;
@@ -352,7 +356,7 @@
caps.addCapability(0);
caps.addTransportType(transport);
NetworkAgentInfo nai = new NetworkAgentInfo(null, null, new Network(netId), info, null,
- caps, 50, mCtx, null, mMisc, mConnService);
+ caps, 50, mCtx, null, mMisc, mConnService, mNetd, mNMS);
nai.everValidated = true;
return nai;
}
diff --git a/tests/net/java/com/android/server/connectivity/Nat464XlatTest.java b/tests/net/java/com/android/server/connectivity/Nat464XlatTest.java
index bf42412..07b1d05 100644
--- a/tests/net/java/com/android/server/connectivity/Nat464XlatTest.java
+++ b/tests/net/java/com/android/server/connectivity/Nat464XlatTest.java
@@ -17,9 +17,7 @@
package com.android.server.connectivity;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.any;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -27,6 +25,7 @@
import static org.mockito.Mockito.when;
import android.net.ConnectivityManager;
+import android.net.INetd;
import android.net.InterfaceConfiguration;
import android.net.LinkAddress;
import android.net.LinkProperties;
@@ -57,6 +56,7 @@
@Mock ConnectivityService mConnectivity;
@Mock NetworkMisc mMisc;
+ @Mock INetd mNetd;
@Mock INetworkManagementService mNms;
@Mock InterfaceConfiguration mConfig;
@Mock NetworkAgentInfo mNai;
@@ -65,7 +65,7 @@
Handler mHandler;
Nat464Xlat makeNat464Xlat() {
- return new Nat464Xlat(mNms, mNai);
+ return new Nat464Xlat(mNai, mNetd, mNms);
}
@Before
@@ -129,7 +129,7 @@
nat.start();
verify(mNms).registerObserver(eq(nat));
- verify(mNms).startClatd(eq(BASE_IFACE));
+ verify(mNetd).clatdStart(eq(BASE_IFACE));
// Stacked interface up notification arrives.
nat.interfaceLinkStateChanged(STACKED_IFACE, true);
@@ -144,7 +144,7 @@
// ConnectivityService stops clat (Network disconnects, IPv4 addr appears, ...).
nat.stop();
- verify(mNms).stopClatd(eq(BASE_IFACE));
+ verify(mNetd).clatdStop(eq(BASE_IFACE));
// Stacked interface removed notification arrives.
nat.interfaceRemoved(STACKED_IFACE);
@@ -156,7 +156,7 @@
assertFalse(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
assertIdle(nat);
- verifyNoMoreInteractions(mNms, mConnectivity);
+ verifyNoMoreInteractions(mNetd, mNms, mConnectivity);
}
@Test
@@ -168,7 +168,7 @@
nat.start();
verify(mNms).registerObserver(eq(nat));
- verify(mNms).startClatd(eq(BASE_IFACE));
+ verify(mNetd).clatdStart(eq(BASE_IFACE));
// Stacked interface up notification arrives.
nat.interfaceLinkStateChanged(STACKED_IFACE, true);
@@ -185,7 +185,7 @@
mLooper.dispatchNext();
verify(mNms).unregisterObserver(eq(nat));
- verify(mNms).stopClatd(eq(BASE_IFACE));
+ verify(mNetd).clatdStop(eq(BASE_IFACE));
verify(mConnectivity, times(2)).handleUpdateLinkProperties(eq(mNai), c.capture());
assertTrue(c.getValue().getStackedLinks().isEmpty());
assertFalse(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
@@ -194,7 +194,7 @@
// ConnectivityService stops clat: no-op.
nat.stop();
- verifyNoMoreInteractions(mNms, mConnectivity);
+ verifyNoMoreInteractions(mNetd, mNms, mConnectivity);
}
@Test
@@ -205,13 +205,13 @@
nat.start();
verify(mNms).registerObserver(eq(nat));
- verify(mNms).startClatd(eq(BASE_IFACE));
+ verify(mNetd).clatdStart(eq(BASE_IFACE));
// ConnectivityService immediately stops clat (Network disconnects, IPv4 addr appears, ...)
nat.stop();
verify(mNms).unregisterObserver(eq(nat));
- verify(mNms).stopClatd(eq(BASE_IFACE));
+ verify(mNetd).clatdStop(eq(BASE_IFACE));
assertIdle(nat);
// In-flight interface up notification arrives: no-op
@@ -225,7 +225,7 @@
assertIdle(nat);
- verifyNoMoreInteractions(mNms, mConnectivity);
+ verifyNoMoreInteractions(mNetd, mNms, mConnectivity);
}
@Test
@@ -236,16 +236,16 @@
nat.start();
verify(mNms).registerObserver(eq(nat));
- verify(mNms).startClatd(eq(BASE_IFACE));
+ verify(mNetd).clatdStart(eq(BASE_IFACE));
// ConnectivityService immediately stops clat (Network disconnects, IPv4 addr appears, ...)
nat.stop();
verify(mNms).unregisterObserver(eq(nat));
- verify(mNms).stopClatd(eq(BASE_IFACE));
+ verify(mNetd).clatdStop(eq(BASE_IFACE));
assertIdle(nat);
- verifyNoMoreInteractions(mNms, mConnectivity);
+ verifyNoMoreInteractions(mNetd, mNms, mConnectivity);
}
static void assertIdle(Nat464Xlat nat) {
diff --git a/tests/net/java/com/android/server/net/ipmemorystore/IpMemoryStoreServiceTest.java b/tests/net/java/com/android/server/net/ipmemorystore/IpMemoryStoreServiceTest.java
index 859a54d..e63c3b0 100644
--- a/tests/net/java/com/android/server/net/ipmemorystore/IpMemoryStoreServiceTest.java
+++ b/tests/net/java/com/android/server/net/ipmemorystore/IpMemoryStoreServiceTest.java
@@ -16,6 +16,9 @@
package com.android.server.net.ipmemorystore;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doReturn;
+
import android.content.Context;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
@@ -26,6 +29,8 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import java.io.File;
+
/** Unit tests for {@link IpMemoryStoreServiceTest}. */
@SmallTest
@RunWith(AndroidJUnit4.class)
@@ -36,6 +41,7 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
+ doReturn(new File("/tmp/test.db")).when(mMockContext).getDatabasePath(anyString());
}
@Test
diff --git a/tests/net/java/com/android/server/net/ipmemorystore/RelevanceUtilsTests.java b/tests/net/java/com/android/server/net/ipmemorystore/RelevanceUtilsTests.java
new file mode 100644
index 0000000..8d367e2
--- /dev/null
+++ b/tests/net/java/com/android/server/net/ipmemorystore/RelevanceUtilsTests.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2018 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.server.net.ipmemorystore;
+
+import static com.android.server.net.ipmemorystore.RelevanceUtils.CAPPED_RELEVANCE;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/** Unit tests for {@link RelevanceUtils}. */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class RelevanceUtilsTests {
+ @Test
+ public void testComputeRelevanceForTargetDate() {
+ final long dayInMillis = 24L * 60 * 60 * 1000;
+ final long base = 1_000_000L; // any given point in time
+ // Relevance when the network expires in 1000 years must be capped
+ assertEquals(CAPPED_RELEVANCE, RelevanceUtils.computeRelevanceForTargetDate(
+ base + 1000L * dayInMillis, base));
+ // Relevance when expiry is before the date must be 0
+ assertEquals(0, RelevanceUtils.computeRelevanceForTargetDate(base - 1, base));
+ // Make sure the relevance for a given target date is higher if the expiry is further
+ // in the future
+ assertTrue(RelevanceUtils.computeRelevanceForTargetDate(base + 100 * dayInMillis, base)
+ < RelevanceUtils.computeRelevanceForTargetDate(base + 150 * dayInMillis, base));
+
+ // Make sure the relevance falls slower as the expiry is closing in. This is to ensure
+ // the decay is indeed logarithmic.
+ final int relevanceAtExpiry = RelevanceUtils.computeRelevanceForTargetDate(base, base);
+ final int relevance50DaysBeforeExpiry =
+ RelevanceUtils.computeRelevanceForTargetDate(base + 50 * dayInMillis, base);
+ final int relevance100DaysBeforeExpiry =
+ RelevanceUtils.computeRelevanceForTargetDate(base + 100 * dayInMillis, base);
+ final int relevance150DaysBeforeExpiry =
+ RelevanceUtils.computeRelevanceForTargetDate(base + 150 * dayInMillis, base);
+ assertEquals(0, relevanceAtExpiry);
+ assertTrue(relevance50DaysBeforeExpiry - relevanceAtExpiry
+ < relevance100DaysBeforeExpiry - relevance50DaysBeforeExpiry);
+ assertTrue(relevance100DaysBeforeExpiry - relevance50DaysBeforeExpiry
+ < relevance150DaysBeforeExpiry - relevance100DaysBeforeExpiry);
+ }
+
+ @Test
+ public void testIncreaseRelevance() {
+ long expiry = System.currentTimeMillis();
+
+ final long firstBump = RelevanceUtils.bumpExpiryDate(expiry);
+ // Though a few milliseconds might have elapsed, the first bump should push the duration
+ // to days in the future, so unless this test takes literal days between these two lines,
+ // this should always pass.
+ assertTrue(firstBump > expiry);
+
+ expiry = 0;
+ long lastDifference = Long.MAX_VALUE;
+ // The relevance should be capped in at most this many steps. Otherwise, fail.
+ final int steps = 1000;
+ for (int i = 0; i < steps; ++i) {
+ final long newExpiry = RelevanceUtils.bumpExpiryDuration(expiry);
+ if (newExpiry == expiry) {
+ // The relevance should be capped. Make sure it is, then exit without failure.
+ assertEquals(newExpiry, RelevanceUtils.CAPPED_RELEVANCE_LIFETIME_MS);
+ return;
+ }
+ // Make sure the new expiry is further in the future than last time.
+ assertTrue(newExpiry > expiry);
+ // Also check that it was not bumped as much as the last bump, because the
+ // decay must be exponential.
+ assertTrue(newExpiry - expiry < lastDifference);
+ lastDifference = newExpiry - expiry;
+ expiry = newExpiry;
+ }
+ fail("Relevance failed to go to the maximum value after " + steps + " bumps");
+ }
+
+ @Test
+ public void testContinuity() {
+ final long expiry = System.currentTimeMillis();
+
+ // Relevance at expiry and after expiry should be the cap.
+ final int relevanceBeforeMaxLifetime = RelevanceUtils.computeRelevanceForTargetDate(expiry,
+ expiry - (RelevanceUtils.CAPPED_RELEVANCE_LIFETIME_MS + 1_000_000));
+ assertEquals(relevanceBeforeMaxLifetime, CAPPED_RELEVANCE);
+ final int relevanceForMaxLifetime = RelevanceUtils.computeRelevanceForTargetDate(expiry,
+ expiry - RelevanceUtils.CAPPED_RELEVANCE_LIFETIME_MS);
+ assertEquals(relevanceForMaxLifetime, CAPPED_RELEVANCE);
+
+ // If the max relevance is reached at the cap lifetime, one millisecond less than this
+ // should be very close. Strictly speaking this is a bit brittle, but it should be
+ // good enough for the purposes of the memory store.
+ final int relevanceForOneMillisecLessThanCap = RelevanceUtils.computeRelevanceForTargetDate(
+ expiry, expiry - RelevanceUtils.CAPPED_RELEVANCE_LIFETIME_MS + 1);
+ assertTrue(relevanceForOneMillisecLessThanCap <= CAPPED_RELEVANCE);
+ assertTrue(relevanceForOneMillisecLessThanCap >= CAPPED_RELEVANCE - 10);
+
+ // Likewise the relevance one millisecond before expiry should be very close to 0. It's
+ // fine if it rounds down to 0.
+ final int relevanceOneMillisecBeforeExpiry = RelevanceUtils.computeRelevanceForTargetDate(
+ expiry, expiry - 1);
+ assertTrue(relevanceOneMillisecBeforeExpiry <= 10);
+ assertTrue(relevanceOneMillisecBeforeExpiry >= 0);
+
+ final int relevanceAtExpiry = RelevanceUtils.computeRelevanceForTargetDate(expiry, expiry);
+ assertEquals(relevanceAtExpiry, 0);
+ final int relevanceAfterExpiry = RelevanceUtils.computeRelevanceForTargetDate(expiry,
+ expiry + 1_000_000);
+ assertEquals(relevanceAfterExpiry, 0);
+ }
+
+ // testIncreaseRelevance makes sure bumping the expiry continuously always yields a
+ // monotonically increasing date as a side effect, but this tests that the relevance (as
+ // opposed to the expiry date) increases monotonically with increasing periods.
+ @Test
+ public void testMonotonicity() {
+ // Hopefully the relevance is granular enough to give a different value for every one
+ // of this number of steps.
+ final int steps = 40;
+ final long expiry = System.currentTimeMillis();
+
+ int lastRelevance = -1;
+ for (int i = 0; i < steps; ++i) {
+ final long date = expiry - i * (RelevanceUtils.CAPPED_RELEVANCE_LIFETIME_MS / steps);
+ final int relevance = RelevanceUtils.computeRelevanceForTargetDate(expiry, date);
+ assertTrue(relevance > lastRelevance);
+ lastRelevance = relevance;
+ }
+ }
+}
diff --git a/tools/aapt2/Android.bp b/tools/aapt2/Android.bp
index 0580df6..7783e10 100644
--- a/tools/aapt2/Android.bp
+++ b/tools/aapt2/Android.bp
@@ -115,6 +115,7 @@
"optimize/MultiApkGenerator.cpp",
"optimize/ResourceDeduper.cpp",
"optimize/ResourceFilter.cpp",
+ "optimize/ResourcePathShortener.cpp",
"optimize/VersionCollapser.cpp",
"process/SymbolTable.cpp",
"split/TableSplitter.cpp",
diff --git a/tools/aapt2/LoadedApk.cpp b/tools/aapt2/LoadedApk.cpp
index b353ff0..45719ef 100644
--- a/tools/aapt2/LoadedApk.cpp
+++ b/tools/aapt2/LoadedApk.cpp
@@ -223,8 +223,17 @@
io::IFile* file = iterator->Next();
std::string path = file->GetSource().path;
+ std::string output_path = path;
+ bool is_resource = path.find("res/") == 0;
+ if (is_resource) {
+ auto it = options.shortened_path_map.find(path);
+ if (it != options.shortened_path_map.end()) {
+ output_path = it->second;
+ }
+ }
+
// Skip resources that are not referenced if requested.
- if (path.find("res/") == 0 && referenced_resources.find(path) == referenced_resources.end()) {
+ if (is_resource && referenced_resources.find(output_path) == referenced_resources.end()) {
if (context->IsVerbose()) {
context->GetDiagnostics()->Note(DiagMessage()
<< "Removing resource '" << path << "' from APK.");
@@ -283,7 +292,8 @@
return false;
}
} else {
- if (!io::CopyFileToArchivePreserveCompression(context, file, path, writer)) {
+ if (!io::CopyFileToArchivePreserveCompression(
+ context, file, output_path, writer)) {
return false;
}
}
diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp
index 58702dc..2f8ca2d 100644
--- a/tools/aapt2/ResourceParser.cpp
+++ b/tools/aapt2/ResourceParser.cpp
@@ -714,7 +714,8 @@
}
}
- diag_->Warn(DiagMessage(out_resource->source)
+ // If the resource type was not recognized, write the error and return false.
+ diag_->Error(DiagMessage(out_resource->source)
<< "unknown resource type '" << parser->element_name() << "'");
return false;
}
@@ -1164,8 +1165,6 @@
current_policies |= OverlayableItem::Policy::kPublic;
} else if (trimmed_part == "product") {
current_policies |= OverlayableItem::Policy::kProduct;
- } else if (trimmed_part == "product_services") {
- current_policies |= OverlayableItem::Policy::kProductServices;
} else if (trimmed_part == "system") {
current_policies |= OverlayableItem::Policy::kSystem;
} else if (trimmed_part == "vendor") {
diff --git a/tools/aapt2/ResourceParser_test.cpp b/tools/aapt2/ResourceParser_test.cpp
index debca9c..827c7dea 100644
--- a/tools/aapt2/ResourceParser_test.cpp
+++ b/tools/aapt2/ResourceParser_test.cpp
@@ -935,9 +935,6 @@
<policy type="product">
<item type="string" name="bar" />
</policy>
- <policy type="product_services">
- <item type="string" name="baz" />
- </policy>
<policy type="system">
<item type="string" name="fiz" />
</policy>
@@ -966,14 +963,6 @@
EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kProduct));
- search_result = table_.FindResource(test::ParseNameOrDie("string/baz"));
- ASSERT_TRUE(search_result);
- ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable_item);
- result_overlayable_item = search_result.value().entry->overlayable_item.value();
- EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
- EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kProductServices));
-
search_result = table_.FindResource(test::ParseNameOrDie("string/fiz"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
@@ -1028,7 +1017,7 @@
TEST_F(ResourceParserTest, ParseOverlayableMultiplePolicy) {
std::string input = R"(
<overlayable name="Name">
- <policy type="vendor|product_services">
+ <policy type="vendor|public">
<item type="string" name="foo" />
</policy>
<policy type="product|system">
@@ -1044,7 +1033,7 @@
OverlayableItem result_overlayable_item = search_result.value().entry->overlayable_item.value();
EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kVendor
- | OverlayableItem::Policy::kProductServices));
+ | OverlayableItem::Policy::kPublic));
search_result = table_.FindResource(test::ParseNameOrDie("string/bar"));
ASSERT_TRUE(search_result);
@@ -1139,7 +1128,7 @@
std::string input = R"(
<overlayable name="Name">
<policy type="vendor|product">
- <policy type="product_services">
+ <policy type="public">
<item type="string" name="foo" />
</policy>
</policy>
diff --git a/tools/aapt2/ResourceTable.h b/tools/aapt2/ResourceTable.h
index eaf6a47..7ca99ea 100644
--- a/tools/aapt2/ResourceTable.h
+++ b/tools/aapt2/ResourceTable.h
@@ -92,9 +92,6 @@
// The resource can be overlaid by any overlay on the product partition.
kProduct = 0x08,
-
- // The resource can be overlaid by any overlay on the product services partition.
- kProductServices = 0x10
};
std::shared_ptr<Overlayable> overlayable;
diff --git a/tools/aapt2/ResourceTable_test.cpp b/tools/aapt2/ResourceTable_test.cpp
index a733134..b97dc6b 100644
--- a/tools/aapt2/ResourceTable_test.cpp
+++ b/tools/aapt2/ResourceTable_test.cpp
@@ -248,7 +248,7 @@
Source("res/values/overlayable.xml", 40));
OverlayableItem overlayable_item(overlayable);
overlayable_item.policies |= OverlayableItem::Policy::kProduct;
- overlayable_item.policies |= OverlayableItem::Policy::kProductServices;
+ overlayable_item.policies |= OverlayableItem::Policy::kVendor;
overlayable_item.comment = "comment";
overlayable_item.source = Source("res/values/overlayable.xml", 42);
@@ -265,7 +265,7 @@
EXPECT_THAT(result_overlayable_item.overlayable->source.path, Eq("res/values/overlayable.xml"));
EXPECT_THAT(result_overlayable_item.overlayable->source.line, 40);
EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kProduct
- | OverlayableItem::Policy::kProductServices));
+ | OverlayableItem::Policy::kVendor));
ASSERT_THAT(result_overlayable_item.comment, StrEq("comment"));
EXPECT_THAT(result_overlayable_item.source.path, Eq("res/values/overlayable.xml"));
EXPECT_THAT(result_overlayable_item.source.line, 42);
diff --git a/tools/aapt2/ResourceUtils.cpp b/tools/aapt2/ResourceUtils.cpp
index c6f9152..ab4805f 100644
--- a/tools/aapt2/ResourceUtils.cpp
+++ b/tools/aapt2/ResourceUtils.cpp
@@ -16,6 +16,7 @@
#include "ResourceUtils.h"
+#include <algorithm>
#include <sstream>
#include "android-base/stringprintf.h"
@@ -503,6 +504,14 @@
if (entry.first == trimmed_str) {
return entry.second;
}
+
+ // Try parsing codename from "[codename].[preview_sdk_fingerprint]" value.
+ const StringPiece::const_iterator begin = std::begin(trimmed_str);
+ const StringPiece::const_iterator end = std::end(trimmed_str);
+ const StringPiece::const_iterator codename_end = std::find(begin, end, '.');
+ if (codename_end != end && entry.first == trimmed_str.substr(begin, codename_end)) {
+ return entry.second;
+ }
return {};
}
diff --git a/tools/aapt2/ResourceUtils_test.cpp b/tools/aapt2/ResourceUtils_test.cpp
index 5ce4640..9018b0f 100644
--- a/tools/aapt2/ResourceUtils_test.cpp
+++ b/tools/aapt2/ResourceUtils_test.cpp
@@ -16,6 +16,7 @@
#include "ResourceUtils.h"
+#include "SdkConstants.h"
#include "Resource.h"
#include "test/Test.h"
@@ -212,6 +213,17 @@
Pointee(ValueEq(BinaryPrimitive(Res_value::TYPE_FLOAT, expected_float_flattened))));
}
+TEST(ResourceUtilsTest, ParseSdkVersionWithCodename) {
+ const android::StringPiece codename =
+ GetDevelopmentSdkCodeNameAndVersion().first;
+ const int version = GetDevelopmentSdkCodeNameAndVersion().second;
+
+ EXPECT_THAT(ResourceUtils::ParseSdkVersion(codename), Eq(Maybe<int>(version)));
+ EXPECT_THAT(
+ ResourceUtils::ParseSdkVersion(codename.to_string() + ".fingerprint"),
+ Eq(Maybe<int>(version)));
+}
+
TEST(ResourceUtilsTest, StringBuilderWhitespaceRemoval) {
EXPECT_THAT(ResourceUtils::StringBuilder()
.AppendText(" hey guys ")
diff --git a/tools/aapt2/Resources.proto b/tools/aapt2/Resources.proto
index da541be..73b568e 100644
--- a/tools/aapt2/Resources.proto
+++ b/tools/aapt2/Resources.proto
@@ -155,7 +155,6 @@
SYSTEM = 1;
VENDOR = 2;
PRODUCT = 3;
- PRODUCT_SERVICES = 4;
}
// The location of the <item> declaration in source.
diff --git a/tools/aapt2/cmd/Compile.cpp b/tools/aapt2/cmd/Compile.cpp
index 52375a3..92beb4e 100644
--- a/tools/aapt2/cmd/Compile.cpp
+++ b/tools/aapt2/cmd/Compile.cpp
@@ -701,7 +701,10 @@
}
const std::string out_path = BuildIntermediateContainerFilename(path_data);
- error |= !compile_func(context, options, path_data, file, output_writer, out_path);
+ if (!compile_func(context, options, path_data, file, output_writer, out_path)) {
+ context->GetDiagnostics()->Error(DiagMessage(file->GetSource()) << "file failed to compile");
+ error = true;
+ }
}
return error ? 1 : 0;
diff --git a/tools/aapt2/cmd/Optimize.cpp b/tools/aapt2/cmd/Optimize.cpp
index 328b0be..2e6af18 100644
--- a/tools/aapt2/cmd/Optimize.cpp
+++ b/tools/aapt2/cmd/Optimize.cpp
@@ -41,6 +41,7 @@
#include "optimize/MultiApkGenerator.h"
#include "optimize/ResourceDeduper.h"
#include "optimize/ResourceFilter.h"
+#include "optimize/ResourcePathShortener.h"
#include "optimize/VersionCollapser.h"
#include "split/TableSplitter.h"
#include "util/Files.h"
@@ -52,6 +53,7 @@
using ::android::ResTable_config;
using ::android::StringPiece;
using ::android::base::ReadFileToString;
+using ::android::base::WriteStringToFile;
using ::android::base::StringAppendF;
using ::android::base::StringPrintf;
@@ -143,6 +145,21 @@
return 1;
}
+ if (options_.shorten_resource_paths) {
+ ResourcePathShortener shortener(options_.table_flattener_options.shortened_path_map);
+ if (!shortener.Consume(context_, apk->GetResourceTable())) {
+ context_->GetDiagnostics()->Error(DiagMessage() << "failed shortening resource paths");
+ return 1;
+ }
+ if (options_.shortened_paths_map_path
+ && !WriteShortenedPathsMap(options_.table_flattener_options.shortened_path_map,
+ options_.shortened_paths_map_path.value())) {
+ context_->GetDiagnostics()->Error(DiagMessage()
+ << "failed to write shortened resource paths to file");
+ return 1;
+ }
+ }
+
// Adjust the SplitConstraints so that their SDK version is stripped if it is less than or
// equal to the minSdk.
options_.split_constraints =
@@ -264,6 +281,15 @@
ArchiveEntry::kAlign, writer);
}
+ bool WriteShortenedPathsMap(const std::map<std::string, std::string> &path_map,
+ const std::string &file_path) {
+ std::stringstream ss;
+ for (auto it = path_map.cbegin(); it != path_map.cend(); ++it) {
+ ss << it->first << " -> " << it->second << "\n";
+ }
+ return WriteStringToFile(ss.str(), file_path);
+ }
+
OptimizeOptions options_;
OptimizeContext* context_;
};
diff --git a/tools/aapt2/cmd/Optimize.h b/tools/aapt2/cmd/Optimize.h
index d07305b..7f4a3ed 100644
--- a/tools/aapt2/cmd/Optimize.h
+++ b/tools/aapt2/cmd/Optimize.h
@@ -55,6 +55,12 @@
// Set of artifacts to keep when generating multi-APK splits. If the list is empty, all artifacts
// are kept and will be written as output.
std::unordered_set<std::string> kept_artifacts;
+
+ // Whether or not to shorten resource paths in the APK.
+ bool shorten_resource_paths;
+
+ // Path to the output map of original resource paths to shortened paths.
+ Maybe<std::string> shortened_paths_map_path;
};
class OptimizeCommand : public Command {
@@ -101,6 +107,12 @@
AddOptionalSwitch("--enable-resource-obfuscation",
"Enables obfuscation of key string pool to single value",
&options_.table_flattener_options.collapse_key_stringpool);
+ AddOptionalSwitch("--enable-resource-path-shortening",
+ "Enables shortening of the path of the resources inside the APK.",
+ &options_.shorten_resource_paths);
+ AddOptionalFlag("--resource-path-shortening-map",
+ "Path to output the map of old resource paths to shortened paths.",
+ &options_.shortened_paths_map_path);
AddOptionalSwitch("-v", "Enables verbose logging", &verbose_);
}
@@ -109,6 +121,9 @@
private:
OptimizeOptions options_;
+ bool WriteObfuscatedPathsMap(const std::map<std::string, std::string> &path_map,
+ const std::string &file_path);
+
Maybe<std::string> config_path_;
Maybe<std::string> whitelist_path_;
Maybe<std::string> resources_config_path_;
@@ -122,4 +137,4 @@
}// namespace aapt
-#endif //AAPT2_OPTIMIZE_H
\ No newline at end of file
+#endif //AAPT2_OPTIMIZE_H
diff --git a/tools/aapt2/format/binary/BinaryResourceParser.cpp b/tools/aapt2/format/binary/BinaryResourceParser.cpp
index c496ff0..40aaa05 100644
--- a/tools/aapt2/format/binary/BinaryResourceParser.cpp
+++ b/tools/aapt2/format/binary/BinaryResourceParser.cpp
@@ -42,6 +42,19 @@
namespace {
+static std::u16string strcpy16_dtoh(const char16_t* src, size_t len) {
+ size_t utf16_len = strnlen16(src, len);
+ if (utf16_len == 0) {
+ return {};
+ }
+ std::u16string dst;
+ dst.resize(utf16_len);
+ for (size_t i = 0; i < utf16_len; i++) {
+ dst[i] = util::DeviceToHost16(src[i]);
+ }
+ return dst;
+}
+
// Visitor that converts a reference's resource ID to a resource name, given a mapping from
// resource ID to resource name.
class ReferenceIdToNameVisitor : public DescendingValueVisitor {
@@ -176,12 +189,8 @@
}
// Extract the package name.
- size_t len = strnlen16((const char16_t*)package_header->name, arraysize(package_header->name));
- std::u16string package_name;
- package_name.resize(len);
- for (size_t i = 0; i < len; i++) {
- package_name[i] = util::DeviceToHost16(package_header->name[i]);
- }
+ std::u16string package_name = strcpy16_dtoh((const char16_t*)package_header->name,
+ arraysize(package_header->name));
ResourceTablePackage* package =
table_->CreatePackage(util::Utf16ToUtf8(package_name), static_cast<uint8_t>(package_id));
@@ -435,6 +444,11 @@
}
auto overlayable = std::make_shared<Overlayable>();
+ overlayable->name = util::Utf16ToUtf8(strcpy16_dtoh((const char16_t*)header->name,
+ arraysize(header->name)));
+ overlayable->actor = util::Utf16ToUtf8(strcpy16_dtoh((const char16_t*)header->actor,
+ arraysize(header->name)));
+ overlayable->source = source_.WithLine(0);
ResChunkPullParser parser(GetChunkData(chunk),
GetChunkDataLen(chunk));
@@ -459,10 +473,6 @@
& ResTable_overlayable_policy_header::POLICY_PRODUCT_PARTITION) {
policies |= OverlayableItem::Policy::kProduct;
}
- if (policy_header->policy_flags
- & ResTable_overlayable_policy_header::POLICY_PRODUCT_SERVICES_PARTITION) {
- policies |= OverlayableItem::Policy::kProductServices;
- }
const ResTable_ref* const ref_begin = reinterpret_cast<const ResTable_ref*>(
((uint8_t *)policy_header) + util::DeviceToHost32(policy_header->header.headerSize));
diff --git a/tools/aapt2/format/binary/TableFlattener.cpp b/tools/aapt2/format/binary/TableFlattener.cpp
index 931d57b..9d341cc 100644
--- a/tools/aapt2/format/binary/TableFlattener.cpp
+++ b/tools/aapt2/format/binary/TableFlattener.cpp
@@ -217,9 +217,10 @@
size_t entry_count_ = 0;
};
-struct PolicyChunk {
- uint32_t policy_flags;
- std::set<ResourceId> ids;
+struct OverlayableChunk {
+ std::string actor;
+ Source source;
+ std::map<OverlayableItem::PolicyFlags, std::set<ResourceId>> policy_ids;
};
class PackageFlattener {
@@ -421,8 +422,9 @@
return sorted_entries;
}
- void FlattenOverlayable(BigBuffer* buffer) {
- std::vector<PolicyChunk> policies;
+ bool FlattenOverlayable(BigBuffer* buffer) {
+ std::set<ResourceId> seen_ids;
+ std::map<std::string, OverlayableChunk> overlayable_chunks;
CHECK(bool(package_->id)) << "package must have an ID set when flattening <overlayable>";
for (auto& type : package_->types) {
@@ -433,79 +435,116 @@
continue;
}
- OverlayableItem& overlayable = entry->overlayable_item.value();
- uint32_t policy_flags = OverlayableItem::Policy::kNone;
- if (overlayable.policies & OverlayableItem::Policy::kPublic) {
- policy_flags |= ResTable_overlayable_policy_header::POLICY_PUBLIC;
- }
- if (overlayable.policies & OverlayableItem::Policy::kSystem) {
- policy_flags |= ResTable_overlayable_policy_header::POLICY_SYSTEM_PARTITION;
- }
- if (overlayable.policies & OverlayableItem::Policy::kVendor) {
- policy_flags |= ResTable_overlayable_policy_header::POLICY_VENDOR_PARTITION;
- }
- if (overlayable.policies & OverlayableItem::Policy::kProduct) {
- policy_flags |= ResTable_overlayable_policy_header::POLICY_PRODUCT_PARTITION;
- }
- if (overlayable.policies & OverlayableItem::Policy::kProductServices) {
- policy_flags |= ResTable_overlayable_policy_header::POLICY_PRODUCT_SERVICES_PARTITION;
+ OverlayableItem& item = entry->overlayable_item.value();
+
+ // Resource ids should only appear once in the resource table
+ ResourceId id = android::make_resid(package_->id.value(), type->id.value(),
+ entry->id.value());
+ CHECK(seen_ids.find(id) == seen_ids.end())
+ << "multiple overlayable definitions found for resource "
+ << ResourceName(package_->name, type->type, entry->name).to_string();
+ seen_ids.insert(id);
+
+ // Find the overlayable chunk with the specified name
+ OverlayableChunk* overlayable_chunk = nullptr;
+ auto iter = overlayable_chunks.find(item.overlayable->name);
+ if (iter == overlayable_chunks.end()) {
+ OverlayableChunk chunk{item.overlayable->actor, item.overlayable->source};
+ overlayable_chunk =
+ &overlayable_chunks.insert({item.overlayable->name, chunk}).first->second;
+ } else {
+ OverlayableChunk& chunk = iter->second;
+ if (!(chunk.source == item.overlayable->source)) {
+ // The name of an overlayable set of resources must be unique
+ context_->GetDiagnostics()->Error(DiagMessage(item.overlayable->source)
+ << "duplicate overlayable name"
+ << item.overlayable->name << "'");
+ context_->GetDiagnostics()->Error(DiagMessage(chunk.source)
+ << "previous declaration here");
+ return false;
+ }
+
+ CHECK(chunk.actor == item.overlayable->actor);
+ overlayable_chunk = &chunk;
}
- if (overlayable.policies == OverlayableItem::Policy::kNone) {
+ uint32_t policy_flags = 0;
+ if (item.policies == OverlayableItem::Policy::kNone) {
// Encode overlayable entries defined without a policy as publicly overlayable
policy_flags |= ResTable_overlayable_policy_header::POLICY_PUBLIC;
- }
-
- // Find the overlayable policy chunk with the same policies as the entry
- PolicyChunk* policy_chunk = nullptr;
- for (PolicyChunk& policy : policies) {
- if (policy.policy_flags == policy_flags) {
- policy_chunk = &policy;
- break;
+ } else {
+ if (item.policies & OverlayableItem::Policy::kPublic) {
+ policy_flags |= ResTable_overlayable_policy_header::POLICY_PUBLIC;
+ }
+ if (item.policies & OverlayableItem::Policy::kSystem) {
+ policy_flags |= ResTable_overlayable_policy_header::POLICY_SYSTEM_PARTITION;
+ }
+ if (item.policies & OverlayableItem::Policy::kVendor) {
+ policy_flags |= ResTable_overlayable_policy_header::POLICY_VENDOR_PARTITION;
+ }
+ if (item.policies & OverlayableItem::Policy::kProduct) {
+ policy_flags |= ResTable_overlayable_policy_header::POLICY_PRODUCT_PARTITION;
}
}
- // Create a new policy chunk if an existing one with the same policy cannot be found
- if (policy_chunk == nullptr) {
- PolicyChunk p;
- p.policy_flags = policy_flags;
- policies.push_back(p);
- policy_chunk = &policies.back();
+ auto policy = overlayable_chunk->policy_ids.find(policy_flags);
+ if (policy != overlayable_chunk->policy_ids.end()) {
+ policy->second.insert(id);
+ } else {
+ overlayable_chunk->policy_ids.insert(
+ std::make_pair(policy_flags, std::set<ResourceId>{id}));
}
-
- policy_chunk->ids.insert(android::make_resid(package_->id.value(), type->id.value(),
- entry->id.value()));
}
}
- if (policies.empty()) {
- // Only write the overlayable chunk if the APK has overlayable entries
- return;
- }
+ for (auto& overlayable_pair : overlayable_chunks) {
+ std::string name = overlayable_pair.first;
+ OverlayableChunk& overlayable = overlayable_pair.second;
- ChunkWriter writer(buffer);
- writer.StartChunk<ResTable_overlayable_header>(RES_TABLE_OVERLAYABLE_TYPE);
-
- // Write each policy block for the overlayable
- for (PolicyChunk& policy : policies) {
- ChunkWriter policy_writer(buffer);
- ResTable_overlayable_policy_header* policy_type =
- policy_writer.StartChunk<ResTable_overlayable_policy_header>(
- RES_TABLE_OVERLAYABLE_POLICY_TYPE);
- policy_type->policy_flags = util::HostToDevice32(policy.policy_flags);
- policy_type->entry_count = util::HostToDevice32(static_cast<uint32_t>(policy.ids.size()));
-
- // Write the ids after the policy header
- ResTable_ref* id_block = policy_writer.NextBlock<ResTable_ref>(policy.ids.size());
- for (const ResourceId& id : policy.ids) {
- id_block->ident = util::HostToDevice32(id.id);
- id_block++;
+ // Write the header of the overlayable chunk
+ ChunkWriter overlayable_writer(buffer);
+ auto* overlayable_type =
+ overlayable_writer.StartChunk<ResTable_overlayable_header>(RES_TABLE_OVERLAYABLE_TYPE);
+ if (name.size() >= arraysize(overlayable_type->name)) {
+ diag_->Error(DiagMessage() << "overlayable name '" << name
+ << "' exceeds maximum length ("
+ << arraysize(overlayable_type->name)
+ << " utf16 characters)");
+ return false;
}
+ strcpy16_htod(overlayable_type->name, arraysize(overlayable_type->name),
+ util::Utf8ToUtf16(name));
- policy_writer.Finish();
+ if (overlayable.actor.size() >= arraysize(overlayable_type->actor)) {
+ diag_->Error(DiagMessage() << "overlayable name '" << overlayable.actor
+ << "' exceeds maximum length ("
+ << arraysize(overlayable_type->actor)
+ << " utf16 characters)");
+ return false;
+ }
+ strcpy16_htod(overlayable_type->actor, arraysize(overlayable_type->actor),
+ util::Utf8ToUtf16(overlayable.actor));
+
+ // Write each policy block for the overlayable
+ for (auto& policy_ids : overlayable.policy_ids) {
+ ChunkWriter policy_writer(buffer);
+ auto* policy_type = policy_writer.StartChunk<ResTable_overlayable_policy_header>(
+ RES_TABLE_OVERLAYABLE_POLICY_TYPE);
+ policy_type->policy_flags = util::HostToDevice32(static_cast<uint32_t>(policy_ids.first));
+ policy_type->entry_count = util::HostToDevice32(static_cast<uint32_t>(
+ policy_ids.second.size()));
+ // Write the ids after the policy header
+ auto* id_block = policy_writer.NextBlock<ResTable_ref>(policy_ids.second.size());
+ for (const ResourceId& id : policy_ids.second) {
+ id_block->ident = util::HostToDevice32(id.id);
+ id_block++;
+ }
+ policy_writer.Finish();
+ }
+ overlayable_writer.Finish();
}
- writer.Finish();
+ return true;
}
bool FlattenTypeSpec(ResourceTableType* type, std::vector<ResourceEntry*>* sorted_entries,
diff --git a/tools/aapt2/format/binary/TableFlattener.h b/tools/aapt2/format/binary/TableFlattener.h
index 635cb21..71330e3 100644
--- a/tools/aapt2/format/binary/TableFlattener.h
+++ b/tools/aapt2/format/binary/TableFlattener.h
@@ -46,6 +46,9 @@
// When true, sort the entries in the values string pool by priority and configuration.
bool sort_stringpool_entries = true;
+
+ // Map from original resource paths to shortened resource paths.
+ std::map<std::string, std::string> shortened_path_map;
};
class TableFlattener : public IResourceTableConsumer {
diff --git a/tools/aapt2/format/binary/TableFlattener_test.cpp b/tools/aapt2/format/binary/TableFlattener_test.cpp
index a5fb6fd..ddc1173 100644
--- a/tools/aapt2/format/binary/TableFlattener_test.cpp
+++ b/tools/aapt2/format/binary/TableFlattener_test.cpp
@@ -657,36 +657,34 @@
TEST_F(TableFlattenerTest, FlattenMultipleOverlayablePolicies) {
auto overlayable = std::make_shared<Overlayable>("TestName", "overlay://theme");
std::string name_zero = "com.app.test:integer/overlayable_zero_item";
- OverlayableItem overlayable_zero_item(overlayable);
- overlayable_zero_item.policies |= OverlayableItem::Policy::kProduct;
- overlayable_zero_item.policies |= OverlayableItem::Policy::kSystem;
- overlayable_zero_item.policies |= OverlayableItem::Policy::kProductServices;
+ OverlayableItem overlayable_item_zero(overlayable);
+ overlayable_item_zero.policies |= OverlayableItem::Policy::kProduct;
+ overlayable_item_zero.policies |= OverlayableItem::Policy::kSystem;
std::string name_one = "com.app.test:integer/overlayable_one_item";
- OverlayableItem overlayable_one_item(overlayable);
- overlayable_one_item.policies |= OverlayableItem::Policy::kPublic;
- overlayable_one_item.policies |= OverlayableItem::Policy::kProductServices;
+ OverlayableItem overlayable_item_one(overlayable);
+ overlayable_item_one.policies |= OverlayableItem::Policy::kPublic;
std::string name_two = "com.app.test:integer/overlayable_two_item";
- OverlayableItem overlayable_two_item(overlayable);
- overlayable_two_item.policies |= OverlayableItem::Policy::kProduct;
- overlayable_two_item.policies |= OverlayableItem::Policy::kSystem;
- overlayable_two_item.policies |= OverlayableItem::Policy::kVendor;
+ OverlayableItem overlayable_item_two(overlayable);
+ overlayable_item_two.policies |= OverlayableItem::Policy::kProduct;
+ overlayable_item_two.policies |= OverlayableItem::Policy::kSystem;
+ overlayable_item_two.policies |= OverlayableItem::Policy::kVendor;
std::string name_three = "com.app.test:integer/overlayable_three_item";
- OverlayableItem overlayable_three_item(overlayable);
+ OverlayableItem overlayable_item_three(overlayable);
std::unique_ptr<ResourceTable> table =
test::ResourceTableBuilder()
.SetPackageId("com.app.test", 0x7f)
.AddSimple(name_zero, ResourceId(0x7f020000))
- .SetOverlayable(name_zero, overlayable_zero_item)
+ .SetOverlayable(name_zero, overlayable_item_zero)
.AddSimple(name_one, ResourceId(0x7f020001))
- .SetOverlayable(name_one, overlayable_one_item)
+ .SetOverlayable(name_one, overlayable_item_one)
.AddSimple(name_two, ResourceId(0x7f020002))
- .SetOverlayable(name_two, overlayable_two_item)
+ .SetOverlayable(name_two, overlayable_item_two)
.AddSimple(name_three, ResourceId(0x7f020003))
- .SetOverlayable(name_three, overlayable_three_item)
+ .SetOverlayable(name_three, overlayable_item_three)
.Build();
ResourceTable output_table;
@@ -698,16 +696,14 @@
ASSERT_TRUE(search_result.value().entry->overlayable_item);
OverlayableItem& overlayable_item = search_result.value().entry->overlayable_item.value();
EXPECT_EQ(overlayable_item.policies, OverlayableItem::Policy::kSystem
- | OverlayableItem::Policy::kProduct
- | OverlayableItem::Policy::kProductServices);
+ | OverlayableItem::Policy::kProduct);
search_result = output_table.FindResource(test::ParseNameOrDie(name_one));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
ASSERT_TRUE(search_result.value().entry->overlayable_item);
overlayable_item = search_result.value().entry->overlayable_item.value();
- EXPECT_EQ(overlayable_item.policies, OverlayableItem::Policy::kPublic
- | OverlayableItem::Policy::kProductServices);
+ EXPECT_EQ(overlayable_item.policies, OverlayableItem::Policy::kPublic);
search_result = output_table.FindResource(test::ParseNameOrDie(name_two));
ASSERT_TRUE(search_result);
@@ -724,6 +720,80 @@
ASSERT_TRUE(search_result.value().entry->overlayable_item);
overlayable_item = search_result.value().entry->overlayable_item.value();
EXPECT_EQ(overlayable_item.policies, OverlayableItem::Policy::kPublic);
+ EXPECT_EQ(overlayable_item.overlayable->name, "TestName");
+ EXPECT_EQ(overlayable_item.overlayable->actor, "overlay://theme");
+ EXPECT_EQ(overlayable_item.policies, OverlayableItem::Policy::kPublic);
+}
+
+TEST_F(TableFlattenerTest, FlattenMultipleOverlayable) {
+ auto group = std::make_shared<Overlayable>("TestName", "overlay://theme");
+ std::string name_zero = "com.app.test:integer/overlayable_zero";
+ OverlayableItem overlayable_item_zero(group);
+ overlayable_item_zero.policies |= OverlayableItem::Policy::kProduct;
+ overlayable_item_zero.policies |= OverlayableItem::Policy::kSystem;
+
+ auto group_one = std::make_shared<Overlayable>("OtherName", "overlay://customization");
+ std::string name_one = "com.app.test:integer/overlayable_one";
+ OverlayableItem overlayable_item_one(group_one);
+ overlayable_item_one.policies |= OverlayableItem::Policy::kPublic;
+
+ std::string name_two = "com.app.test:integer/overlayable_two";
+ OverlayableItem overlayable_item_two(group);
+ overlayable_item_two.policies |= OverlayableItem::Policy::kProduct;
+ overlayable_item_two.policies |= OverlayableItem::Policy::kSystem;
+ overlayable_item_two.policies |= OverlayableItem::Policy::kVendor;
+
+ std::string name_three = "com.app.test:integer/overlayable_three";
+ OverlayableItem overlayable_item_three(group_one);
+ std::unique_ptr<ResourceTable> table =
+ test::ResourceTableBuilder()
+ .SetPackageId("com.app.test", 0x7f)
+ .AddSimple(name_zero, ResourceId(0x7f020000))
+ .SetOverlayable(name_zero, overlayable_item_zero)
+ .AddSimple(name_one, ResourceId(0x7f020001))
+ .SetOverlayable(name_one, overlayable_item_one)
+ .AddSimple(name_two, ResourceId(0x7f020002))
+ .SetOverlayable(name_two, overlayable_item_two)
+ .AddSimple(name_three, ResourceId(0x7f020003))
+ .SetOverlayable(name_three, overlayable_item_three)
+ .Build();
+ ResourceTable output_table;
+ ASSERT_TRUE(Flatten(context_.get(), {}, table.get(), &output_table));
+ auto search_result = output_table.FindResource(test::ParseNameOrDie(name_zero));
+ ASSERT_TRUE(search_result);
+ ASSERT_THAT(search_result.value().entry, NotNull());
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ OverlayableItem& result_overlayable = search_result.value().entry->overlayable_item.value();
+ EXPECT_EQ(result_overlayable.overlayable->name, "TestName");
+ EXPECT_EQ(result_overlayable.overlayable->actor, "overlay://theme");
+ EXPECT_EQ(result_overlayable.policies, OverlayableItem::Policy::kSystem
+ | OverlayableItem::Policy::kProduct);
+ search_result = output_table.FindResource(test::ParseNameOrDie(name_one));
+ ASSERT_TRUE(search_result);
+ ASSERT_THAT(search_result.value().entry, NotNull());
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable = search_result.value().entry->overlayable_item.value();
+ EXPECT_EQ(result_overlayable.overlayable->name, "OtherName");
+ EXPECT_EQ(result_overlayable.overlayable->actor, "overlay://customization");
+ EXPECT_EQ(result_overlayable.policies, OverlayableItem::Policy::kPublic);
+ search_result = output_table.FindResource(test::ParseNameOrDie(name_two));
+ ASSERT_TRUE(search_result);
+ ASSERT_THAT(search_result.value().entry, NotNull());
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable = search_result.value().entry->overlayable_item.value();
+ EXPECT_EQ(result_overlayable.overlayable->name, "TestName");
+ EXPECT_EQ(result_overlayable.overlayable->actor, "overlay://theme");
+ EXPECT_EQ(result_overlayable.policies, OverlayableItem::Policy::kSystem
+ | OverlayableItem::Policy::kProduct
+ | OverlayableItem::Policy::kVendor);
+ search_result = output_table.FindResource(test::ParseNameOrDie(name_three));
+ ASSERT_TRUE(search_result);
+ ASSERT_THAT(search_result.value().entry, NotNull());
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable = search_result.value().entry->overlayable_item.value();
+ EXPECT_EQ(result_overlayable.overlayable->name, "OtherName");
+ EXPECT_EQ(result_overlayable.overlayable->actor, "overlay://customization");
+ EXPECT_EQ(result_overlayable.policies, OverlayableItem::Policy::kPublic);
}
} // namespace aapt
diff --git a/tools/aapt2/format/proto/ProtoDeserialize.cpp b/tools/aapt2/format/proto/ProtoDeserialize.cpp
index 6b5746d..aff1b39 100644
--- a/tools/aapt2/format/proto/ProtoDeserialize.cpp
+++ b/tools/aapt2/format/proto/ProtoDeserialize.cpp
@@ -390,9 +390,6 @@
case pb::OverlayableItem::PRODUCT:
out_overlayable->policies |= OverlayableItem::Policy::kProduct;
break;
- case pb::OverlayableItem::PRODUCT_SERVICES:
- out_overlayable->policies |= OverlayableItem::Policy::kProductServices;
- break;
default:
*out_error = "unknown overlayable policy";
return false;
diff --git a/tools/aapt2/format/proto/ProtoSerialize.cpp b/tools/aapt2/format/proto/ProtoSerialize.cpp
index 76fbb46..b549e23 100644
--- a/tools/aapt2/format/proto/ProtoSerialize.cpp
+++ b/tools/aapt2/format/proto/ProtoSerialize.cpp
@@ -303,9 +303,6 @@
if (overlayable_item.policies & OverlayableItem::Policy::kProduct) {
pb_overlayable_item->add_policy(pb::OverlayableItem::PRODUCT);
}
- if (overlayable_item.policies & OverlayableItem::Policy::kProductServices) {
- pb_overlayable_item->add_policy(pb::OverlayableItem::PRODUCT_SERVICES);
- }
if (overlayable_item.policies & OverlayableItem::Policy::kSystem) {
pb_overlayable_item->add_policy(pb::OverlayableItem::SYSTEM);
}
diff --git a/tools/aapt2/format/proto/ProtoSerialize_test.cpp b/tools/aapt2/format/proto/ProtoSerialize_test.cpp
index 4a3c1b8..cce3939 100644
--- a/tools/aapt2/format/proto/ProtoSerialize_test.cpp
+++ b/tools/aapt2/format/proto/ProtoSerialize_test.cpp
@@ -519,7 +519,7 @@
OverlayableItem overlayable_item_bar(std::make_shared<Overlayable>(
"TaskBar", "overlay://theme"));
- overlayable_item_bar.policies |= OverlayableItem::Policy::kProductServices;
+ overlayable_item_bar.policies |= OverlayableItem::Policy::kPublic;
overlayable_item_bar.policies |= OverlayableItem::Policy::kVendor;
OverlayableItem overlayable_item_baz(std::make_shared<Overlayable>(
@@ -565,7 +565,7 @@
overlayable_item = search_result.value().entry->overlayable_item.value();
EXPECT_THAT(overlayable_item.overlayable->name, Eq("TaskBar"));
EXPECT_THAT(overlayable_item.overlayable->actor, Eq("overlay://theme"));
- EXPECT_THAT(overlayable_item.policies, Eq(OverlayableItem::Policy::kProductServices
+ EXPECT_THAT(overlayable_item.policies, Eq(OverlayableItem::Policy::kPublic
| OverlayableItem::Policy::kVendor));
search_result = new_table.FindResource(test::ParseNameOrDie("com.app.a:bool/baz"));
diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp
index 85bf6f2..5812ec4 100644
--- a/tools/aapt2/link/ManifestFixer.cpp
+++ b/tools/aapt2/link/ManifestFixer.cpp
@@ -213,6 +213,27 @@
return true;
}
+static bool AddDeprecatedUsesFeatures(xml::Element* el, SourcePathDiagnostics* diag) {
+ if (xml::Attribute* attr = el->FindAttribute(xml::kSchemaAndroid, "name")) {
+ if (attr->value.empty()) {
+ return true;
+ }
+
+ // Add "android.hardware.fingerprint" when "android.hardware.biometric.fingerprint" is found,
+ // since the former is deprecated in Q and the latter is not present pre-Q. (see b/115639644)
+ if (attr->value == "android.hardware.biometrics.fingerprint") {
+ auto element = el->CloneElement([&](const xml::Element& el, xml::Element* out_el) {
+ xml::Attribute* cloned_attr = out_el->FindOrCreateAttribute(xml::kSchemaAndroid, "name");
+ cloned_attr->value = "android.hardware.fingerprint";
+ });
+
+ el->parent->AppendChild(std::move(element));
+ }
+ }
+
+ return true;
+}
+
bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor,
IDiagnostics* diag) {
// First verify some options.
@@ -247,6 +268,7 @@
// Common <uses-feature> actions.
xml::XmlNodeAction uses_feature_action;
uses_feature_action.Action(VerifyUsesFeature);
+ uses_feature_action.Action(AddDeprecatedUsesFeatures);
// Common component actions.
xml::XmlNodeAction component_action;
diff --git a/tools/aapt2/link/ManifestFixer_test.cpp b/tools/aapt2/link/ManifestFixer_test.cpp
index adea627..fcc9f55 100644
--- a/tools/aapt2/link/ManifestFixer_test.cpp
+++ b/tools/aapt2/link/ManifestFixer_test.cpp
@@ -832,4 +832,36 @@
EXPECT_THAT(Verify(input), NotNull());
}
+TEST_F(ManifestFixerTest, UsesFeatureAddDeprecated) {
+ std::string input = R"(
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="android">
+ <uses-feature android:name="android.hardware.biometrics.fingerprint" />
+ <feature-group>
+ <uses-feature android:name="android.hardware.biometrics.fingerprint" />
+ </feature-group>
+ </manifest>)";
+
+ std::unique_ptr<xml::XmlResource> manifest = Verify(input);
+ ASSERT_THAT(manifest, NotNull());
+ EXPECT_THAT(manifest->root->FindChildWithAttribute("", "uses-feature",
+ xml::kSchemaAndroid, "name",
+ "android.hardware.biometrics.fingerprint"),
+ Ne(nullptr));
+ EXPECT_THAT(manifest->root->FindChildWithAttribute("", "uses-feature",
+ xml::kSchemaAndroid, "name",
+ "android.hardware.fingerprint"),
+ Ne(nullptr));
+
+ xml::Element* feature_group = manifest->root->FindChild("", "feature-group");
+ ASSERT_THAT(feature_group, Ne(nullptr));
+
+ EXPECT_THAT(feature_group->FindChildWithAttribute("", "uses-feature", xml::kSchemaAndroid, "name",
+ "android.hardware.biometrics.fingerprint"),
+ Ne(nullptr));
+ EXPECT_THAT(feature_group->FindChildWithAttribute("", "uses-feature", xml::kSchemaAndroid, "name",
+ "android.hardware.fingerprint"),
+ Ne(nullptr));
+}
+
} // namespace aapt
diff --git a/tools/aapt2/link/TableMerger_test.cpp b/tools/aapt2/link/TableMerger_test.cpp
index 921d634..ad3674e 100644
--- a/tools/aapt2/link/TableMerger_test.cpp
+++ b/tools/aapt2/link/TableMerger_test.cpp
@@ -484,7 +484,7 @@
OverlayableItem overlayable_item(overlayable);
overlayable_item.policies |= OverlayableItem::Policy::kPublic;
- overlayable_item.policies |= OverlayableItem::Policy::kProductServices;
+ overlayable_item.policies |= OverlayableItem::Policy::kSystem;
std::unique_ptr<ResourceTable> table_b =
test::ResourceTableBuilder()
.SetPackageId("com.app.a", 0x7f)
@@ -506,7 +506,7 @@
EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("CustomizableResources"));
EXPECT_THAT(result_overlayable_item.overlayable->actor, Eq("overlay://customization"));
EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kPublic
- | OverlayableItem::Policy::kProductServices));
+ | OverlayableItem::Policy::kSystem));
}
TEST_F(TableMergerTest, SameResourceDifferentNameFail) {
diff --git a/tools/aapt2/optimize/ResourcePathShortener.cpp b/tools/aapt2/optimize/ResourcePathShortener.cpp
new file mode 100644
index 0000000..c5df3dd
--- /dev/null
+++ b/tools/aapt2/optimize/ResourcePathShortener.cpp
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+#include "optimize/ResourcePathShortener.h"
+
+#include <math.h>
+#include <unordered_set>
+
+#include "androidfw/StringPiece.h"
+
+#include "ResourceTable.h"
+#include "ValueVisitor.h"
+
+
+static const std::string base64_chars =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789-_";
+
+namespace aapt {
+
+ResourcePathShortener::ResourcePathShortener(
+ std::map<std::string, std::string>& path_map_out)
+ : path_map_(path_map_out) {
+}
+
+std::string ShortenFileName(const android::StringPiece& file_path, int output_length) {
+ std::size_t hash_num = std::hash<android::StringPiece>{}(file_path);
+ std::string result = "";
+ // Convert to (modified) base64 so that it is a proper file path.
+ for (int i = 0; i < output_length; i++) {
+ uint8_t sextet = hash_num & 0x3f;
+ hash_num >>= 6;
+ result += base64_chars[sextet];
+ }
+ return result;
+}
+
+
+// Calculate the optimal hash length such that an average of 10% of resources
+// collide in their shortened path.
+// Reference: http://matt.might.net/articles/counting-hash-collisions/
+int OptimalShortenedLength(int num_resources) {
+ int num_chars = 2;
+ double N = 64*64; // hash space when hash is 2 chars long
+ double max_collisions = num_resources * 0.1;
+ while (num_resources - N + N * pow((N - 1) / N, num_resources) > max_collisions) {
+ N *= 64;
+ num_chars++;
+ }
+ return num_chars;
+}
+
+std::string GetShortenedPath(const android::StringPiece& shortened_filename,
+ const android::StringPiece& extension, int collision_count) {
+ std::string shortened_path = "res/" + shortened_filename.to_string();
+ if (collision_count > 0) {
+ shortened_path += std::to_string(collision_count);
+ }
+ shortened_path += extension;
+ return shortened_path;
+}
+
+bool ResourcePathShortener::Consume(IAaptContext* context, ResourceTable* table) {
+ // used to detect collisions
+ std::unordered_set<std::string> shortened_paths;
+ std::unordered_set<FileReference*> file_refs;
+ for (auto& package : table->packages) {
+ for (auto& type : package->types) {
+ for (auto& entry : type->entries) {
+ for (auto& config_value : entry->values) {
+ FileReference* file_ref = ValueCast<FileReference>(config_value->value.get());
+ if (file_ref) {
+ file_refs.insert(file_ref);
+ }
+ }
+ }
+ }
+ }
+ int num_chars = OptimalShortenedLength(file_refs.size());
+ for (auto& file_ref : file_refs) {
+ android::StringPiece res_subdir, actual_filename, extension;
+ util::ExtractResFilePathParts(*file_ref->path, &res_subdir, &actual_filename, &extension);
+
+ std::string shortened_filename = ShortenFileName(*file_ref->path, num_chars);
+ int collision_count = 0;
+ std::string shortened_path = GetShortenedPath(shortened_filename, extension, collision_count);
+ while (shortened_paths.find(shortened_path) != shortened_paths.end()) {
+ collision_count++;
+ shortened_path = GetShortenedPath(shortened_filename, extension, collision_count);
+ }
+ shortened_paths.insert(shortened_path);
+ path_map_.insert({*file_ref->path, shortened_path});
+ file_ref->path = table->string_pool.MakeRef(shortened_path, file_ref->path.GetContext());
+ }
+ return true;
+}
+
+} // namespace aapt
diff --git a/tools/aapt2/optimize/ResourcePathShortener.h b/tools/aapt2/optimize/ResourcePathShortener.h
new file mode 100644
index 0000000..f1074ef
--- /dev/null
+++ b/tools/aapt2/optimize/ResourcePathShortener.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+#ifndef AAPT_OPTIMIZE_RESOURCEPATHSHORTENER_H
+#define AAPT_OPTIMIZE_RESOURCEPATHSHORTENER_H
+
+#include <map>
+
+#include "android-base/macros.h"
+
+#include "process/IResourceTableConsumer.h"
+
+namespace aapt {
+
+class ResourceTable;
+
+// Maps resources in the apk to shortened paths.
+class ResourcePathShortener : public IResourceTableConsumer {
+ public:
+ explicit ResourcePathShortener(std::map<std::string, std::string>& path_map_out);
+
+ bool Consume(IAaptContext* context, ResourceTable* table) override;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ResourcePathShortener);
+ std::map<std::string, std::string>& path_map_;
+};
+
+} // namespace aapt
+
+#endif // AAPT_OPTIMIZE_RESOURCEPATHSHORTENER_H
diff --git a/tools/aapt2/optimize/ResourcePathShortener_test.cpp b/tools/aapt2/optimize/ResourcePathShortener_test.cpp
new file mode 100644
index 0000000..88cadc7
--- /dev/null
+++ b/tools/aapt2/optimize/ResourcePathShortener_test.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+#include "optimize/ResourcePathShortener.h"
+
+#include "ResourceTable.h"
+#include "test/Test.h"
+
+using ::aapt::test::GetValue;
+using ::testing::Not;
+using ::testing::NotNull;
+using ::testing::Eq;
+
+namespace aapt {
+
+TEST(ResourcePathShortenerTest, FileRefPathsChangedInResourceTable) {
+ std::unique_ptr<IAaptContext> context = test::ContextBuilder().Build();
+
+ std::unique_ptr<ResourceTable> table =
+ test::ResourceTableBuilder()
+ .AddFileReference("android:drawable/xmlfile", "res/drawables/xmlfile.xml")
+ .AddFileReference("android:drawable/xmlfile2", "res/drawables/xmlfile2.xml")
+ .AddString("android:string/string", "res/should/still/be/the/same.png")
+ .Build();
+
+ std::map<std::string, std::string> path_map;
+ ASSERT_TRUE(ResourcePathShortener(path_map).Consume(context.get(), table.get()));
+
+ // Expect that the path map is populated
+ ASSERT_THAT(path_map.find("res/drawables/xmlfile.xml"), Not(Eq(path_map.end())));
+ ASSERT_THAT(path_map.find("res/drawables/xmlfile2.xml"), Not(Eq(path_map.end())));
+
+ // The file paths were changed
+ EXPECT_THAT(path_map.at("res/drawables/xmlfile.xml"), Not(Eq("res/drawables/xmlfile.xml")));
+ EXPECT_THAT(path_map.at("res/drawables/xmlfile2.xml"), Not(Eq("res/drawables/xmlfile2.xml")));
+
+ // Different file paths should remain different
+ EXPECT_THAT(path_map["res/drawables/xmlfile.xml"],
+ Not(Eq(path_map["res/drawables/xmlfile2.xml"])));
+
+ FileReference* ref =
+ GetValue<FileReference>(table.get(), "android:drawable/xmlfile");
+ ASSERT_THAT(ref, NotNull());
+ // The map correctly points to the new location of the file
+ EXPECT_THAT(path_map["res/drawables/xmlfile.xml"], Eq(*ref->path));
+
+ // Strings should not be affected, only file paths
+ EXPECT_THAT(
+ *GetValue<String>(table.get(), "android:string/string")->value,
+ Eq("res/should/still/be/the/same.png"));
+ EXPECT_THAT(path_map.find("res/should/still/be/the/same.png"), Eq(path_map.end()));
+}
+
+} // namespace aapt
diff --git a/tools/apilint/apilint.py b/tools/apilint/apilint.py
index acf1f1e..d1fe43e 100644
--- a/tools/apilint/apilint.py
+++ b/tools/apilint/apilint.py
@@ -297,7 +297,7 @@
class V2LineParser(object):
__slots__ = ["tokenized", "current", "len"]
- MODIFIERS = set("public protected internal private abstract default static final transient volatile synchronized".split())
+ MODIFIERS = set("public protected internal private abstract default static final transient volatile synchronized native operator sealed strictfp infix inline suspend vararg".split())
JAVA_LANG_TYPES = set("AbstractMethodError AbstractStringBuilder Appendable ArithmeticException ArrayIndexOutOfBoundsException ArrayStoreException AssertionError AutoCloseable Boolean BootstrapMethodError Byte Character CharSequence Class ClassCastException ClassCircularityError ClassFormatError ClassLoader ClassNotFoundException Cloneable CloneNotSupportedException Comparable Compiler Deprecated Double Enum EnumConstantNotPresentException Error Exception ExceptionInInitializerError Float FunctionalInterface IllegalAccessError IllegalAccessException IllegalArgumentException IllegalMonitorStateException IllegalStateException IllegalThreadStateException IncompatibleClassChangeError IndexOutOfBoundsException InheritableThreadLocal InstantiationError InstantiationException Integer InternalError InterruptedException Iterable LinkageError Long Math NegativeArraySizeException NoClassDefFoundError NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException NullPointerException Number NumberFormatException Object OutOfMemoryError Override Package package-info.java Process ProcessBuilder ProcessEnvironment ProcessImpl Readable ReflectiveOperationException Runnable Runtime RuntimeException RuntimePermission SafeVarargs SecurityException SecurityManager Short StackOverflowError StackTraceElement StrictMath String StringBuffer StringBuilder StringIndexOutOfBoundsException SuppressWarnings System Thread ThreadDeath ThreadGroup ThreadLocal Throwable TypeNotPresentException UNIXProcess UnknownError UnsatisfiedLinkError UnsupportedClassVersionError UnsupportedOperationException VerifyError VirtualMachineError Void".split())
def __init__(self, raw):
@@ -355,7 +355,7 @@
self.parse_eof()
def parse_into_field(self, field):
- kind = self.parse_token("field")
+ kind = self.parse_one_of("field", "property")
field.split = [kind]
annotations = self.parse_annotations()
if "@Deprecated" in annotations:
@@ -442,13 +442,19 @@
return None
def parse_type(self):
+ self.parse_annotations()
type = self.parse_token()
+ if type[-1] == '.':
+ self.parse_annotations()
+ type += self.parse_token()
if type in V2LineParser.JAVA_LANG_TYPES:
type = "java.lang." + type
self.parse_matching_paren("<", ">")
while True:
t = self.lookahead()
- if t == "[]":
+ if t == "@":
+ self.parse_annotation()
+ elif t == "[]":
type += self.parse_token()
elif self.parse_kotlin_nullability() is not None:
pass # discard nullability for now
@@ -478,17 +484,23 @@
self.parse_token(",")
def parse_arg(self):
+ self.parse_if("vararg") # kotlin vararg
self.parse_annotations()
type = self.parse_arg_type()
l = self.lookahead()
if l != "," and l != ")":
- self.parse_token() # kotlin argument name
+ if self.lookahead() != '=':
+ self.parse_token() # kotlin argument name
if self.parse_if('='): # kotlin default value
- (self.parse_matching_paren('(', ')') or
- self.parse_matching_paren('{', '}') or
- self.parse_token() and self.parse_matching_paren('(', ')'))
+ self.parse_expression()
return type
+ def parse_expression(self):
+ while not self.lookahead() in [')', ',', ';']:
+ (self.parse_matching_paren('(', ')') or
+ self.parse_matching_paren('{', '}') or
+ self.parse_token())
+
def parse_throws(self):
ret = []
if self.parse_if("throws"):
@@ -516,7 +528,7 @@
def parse_annotation_default(self):
if self.parse_if("default"):
- self.parse_value()
+ self.parse_expression()
def parse_value(self):
if self.lookahead() == "{":
@@ -599,7 +611,7 @@
clazz.ctors.append(Method(clazz, line, raw, blame, sig_format=sig_format))
elif raw.startswith(" method"):
clazz.methods.append(Method(clazz, line, raw, blame, sig_format=sig_format))
- elif raw.startswith(" field"):
+ elif raw.startswith(" field") or raw.startswith(" property"):
clazz.fields.append(Field(clazz, line, raw, blame, sig_format=sig_format))
elif raw.startswith(" }") and clazz:
yield clazz
@@ -942,7 +954,7 @@
else:
error(clazz, f, "F2", "Bare fields must be marked final, or add accessors if mutable")
- if not "static" in f.split:
+ if "static" not in f.split and "property" not in f.split:
if not re.match("[a-z]([a-zA-Z]+)?", f.name):
error(clazz, f, "S1", "Non-static fields must be named using myField style")
@@ -1650,7 +1662,7 @@
binary.add(op)
for m in clazz.methods:
- if 'static' in m.split:
+ if 'static' in m.split or 'operator' in m.split:
continue
# https://kotlinlang.org/docs/reference/operator-overloading.html#unary-prefix-operators
diff --git a/tools/apilint/apilint_test.py b/tools/apilint/apilint_test.py
index 081e98d..fde61a9 100644
--- a/tools/apilint/apilint_test.py
+++ b/tools/apilint/apilint_test.py
@@ -225,11 +225,12 @@
self.assertEquals('pkg.SuppressLint', cls.fullname)
def test_parse_method(self):
- m = self._method("method @Deprecated public static <T> Class<T>[][] name("
+ m = self._method("method @Deprecated public static native <T> Class<T>[][] name("
+ "Class<T[]>[][], Class<T[][][]>[][]...) throws Exception, T;")
self.assertTrue('static' in m.split)
self.assertTrue('public' in m.split)
self.assertTrue('method' in m.split)
+ self.assertTrue('native' in m.split)
self.assertTrue('deprecated' in m.split)
self.assertEquals('java.lang.Class[][]', m.typ)
self.assertEquals('name', m.name)
@@ -248,6 +249,7 @@
self._method('method abstract String category() default "";', cls=cls)
self._method('method abstract boolean deepExport() default false;', cls=cls)
self._method('method abstract ViewDebug.FlagToString[] flagMapping() default {};', cls=cls)
+ self._method('method abstract ViewDebug.FlagToString[] flagMapping() default (double)java.lang.Float.NEGATIVE_INFINITY;', cls=cls)
def test_parse_string_field(self):
f = self._field('field @Deprecated public final String SOME_NAME = "value";')
@@ -286,5 +288,44 @@
self._method("method <T> T name(T a = 1, T b = A(1), Lambda f = { false }, N? n = null, "
+ """double c = (1/0), float d = 1.0f, String s = "heyo", char c = 'a');""")
+ def test_kotlin_operator(self):
+ self._method('method public operator void unaryPlus(androidx.navigation.NavDestination);')
+ self._method('method public static operator androidx.navigation.NavDestination get(androidx.navigation.NavGraph, @IdRes int id);')
+ self._method('method public static operator <T> T get(androidx.navigation.NavigatorProvider, kotlin.reflect.KClass<T> clazz);')
+
+ def test_kotlin_property(self):
+ self._field('property public VM value;')
+ self._field('property public final String? action;')
+
+ def test_kotlin_varargs(self):
+ self._method('method public void error(int p = "42", Integer int2 = "null", int p1 = "42", vararg String args);')
+
+ def test_kotlin_default_values(self):
+ self._method('method public void foo(String! = null, String! = "Hello World", int = 42);')
+ self._method('method void method(String, String firstArg = "hello", int secondArg = "42", String thirdArg = "world");')
+ self._method('method void method(String, String firstArg = "hello", int secondArg = "42");')
+ self._method('method void method(String, String firstArg = "hello");')
+ self._method('method void edit(android.Type, boolean commit = false, Function1<? super Editor,kotlin.Unit> action);')
+ self._method('method <K, V> LruCache<K,V> lruCache(int maxSize, Function2<? super K,? super V,java.lang.Integer> sizeOf = { _, _ -> 1 }, Function1<? extends V> create = { (V)null }, Function4<kotlin.Unit> onEntryRemoved = { _, _, _, _ -> });')
+ self._method('method android.Bitmap? drawToBitmap(android.View, android.Config config = android.graphics.Bitmap.Config.ARGB_8888);')
+ self._method('method void emptyLambda(Function0<kotlin.Unit> sizeOf = {});')
+ self._method('method void method1(int p = 42, Integer? int2 = null, int p1 = 42, String str = "hello world", java.lang.String... args);')
+ self._method('method void method2(int p, int int2 = (2 * int) * some.other.pkg.Constants.Misc.SIZE);')
+ self._method('method void method3(String str, int p, int int2 = double(int) + str.length);')
+ self._method('method void print(test.pkg.Foo foo = test.pkg.Foo());')
+
+ def test_type_use_annotation(self):
+ self._method('method public static int codePointAt(char @NonNull [], int);')
+ self._method('method @NonNull public java.util.Set<java.util.Map.@NonNull Entry<K,V>> entrySet();')
+
+ m = self._method('method @NonNull public java.lang.annotation.@NonNull Annotation @NonNull [] getAnnotations();')
+ self.assertEquals('java.lang.annotation.Annotation[]', m.typ)
+
+ m = self._method('method @NonNull public abstract java.lang.annotation.@NonNull Annotation @NonNull [] @NonNull [] getParameterAnnotations();')
+ self.assertEquals('java.lang.annotation.Annotation[][]', m.typ)
+
+ m = self._method('method @NonNull public @NonNull String @NonNull [] split(@NonNull String, int);')
+ self.assertEquals('java.lang.String[]', m.typ)
+
if __name__ == "__main__":
unittest.main()
diff --git a/tools/processors/view_inspector/Android.bp b/tools/processors/view_inspector/Android.bp
index ca6b3c4..9b5df56 100644
--- a/tools/processors/view_inspector/Android.bp
+++ b/tools/processors/view_inspector/Android.bp
@@ -5,7 +5,7 @@
java_resource_dirs: ["src/resources"],
static_libs: [
- "javapoet",
+ "javapoet",
],
use_tools_jar: true,
@@ -18,9 +18,9 @@
java_resource_dirs: ["test/resources"],
static_libs: [
- "guava",
"junit",
- "view-inspector-annotation-processor",
+ "guava",
+ "view-inspector-annotation-processor"
],
test_suites: ["general-tests"],
diff --git a/tools/processors/view_inspector/TEST_MAPPING b/tools/processors/view_inspector/TEST_MAPPING
index a91b5b4..b4c9cab 100644
--- a/tools/processors/view_inspector/TEST_MAPPING
+++ b/tools/processors/view_inspector/TEST_MAPPING
@@ -2,6 +2,8 @@
"presubmit": [
{
"name": "view-inspector-annotation-processor-test"
+ }, {
+ "name": "CtsViewInspectorAnnotationProcessorTestCases"
}
]
}
diff --git a/tools/processors/view_inspector/src/java/android/processor/view/inspector/AnnotationUtils.java b/tools/processors/view_inspector/src/java/android/processor/view/inspector/AnnotationUtils.java
index f157949..fc4cd01 100644
--- a/tools/processors/view_inspector/src/java/android/processor/view/inspector/AnnotationUtils.java
+++ b/tools/processors/view_inspector/src/java/android/processor/view/inspector/AnnotationUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright 2019 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.
@@ -24,6 +24,7 @@
import javax.lang.model.element.AnnotationValue;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements;
import javax.lang.model.util.Types;
@@ -78,40 +79,126 @@
}
/**
- * Extract a string-valued property from an {@link AnnotationMirror}.
+ * Determine if an annotation with the supplied qualified name is present on the element.
*
- * @param propertyName The name of the requested property
- * @param annotationMirror The mirror to search for the property
- * @return The String value of the annotation or null
+ * @param element The element to check for the presence of an annotation
+ * @param annotationQualifiedName The name of the annotation to check for
+ * @return True if the annotation is present, false otherwise
*/
- Optional<String> stringProperty(String propertyName, AnnotationMirror annotationMirror) {
- final AnnotationValue value = valueByName(propertyName, annotationMirror);
- if (value != null) {
- return Optional.of((String) value.getValue());
- } else {
- return Optional.empty();
+ boolean hasAnnotation(Element element, String annotationQualifiedName) {
+ final TypeElement namedElement = mElementUtils.getTypeElement(annotationQualifiedName);
+
+ if (namedElement != null) {
+ final TypeMirror annotationType = namedElement.asType();
+
+ for (AnnotationMirror annotation : element.getAnnotationMirrors()) {
+ if (mTypeUtils.isSubtype(annotation.getAnnotationType(), annotationType)) {
+ return true;
+ }
+ }
}
+
+ return false;
}
+ /**
+ * Get the typed value of an annotation property by name.
+ *
+ * The returned optional will be empty if the value was left at the default, or if the value
+ * of the property is null.
+ *
+ * @param propertyName The name of the property to search for
+ * @param valueClass The expected class of the property value
+ * @param element The element the annotation is on, used for exceptions
+ * @param annotationMirror An annotation mirror to search for the property
+ * @param <T> The type of the value
+ * @return An optional containing the typed value of the named property
+ */
+ <T> Optional<T> typedValueByName(
+ String propertyName,
+ Class<T> valueClass,
+ Element element,
+ AnnotationMirror annotationMirror) {
+ return valueByName(propertyName, annotationMirror).map(annotationValue -> {
+ final Object value = annotationValue.getValue();
+
+ if (value == null) {
+ throw new ProcessingException(
+ String.format(
+ "Unexpected null value for annotation property \"%s\".",
+ propertyName),
+ element,
+ annotationMirror,
+ annotationValue);
+ }
+
+ if (valueClass.isAssignableFrom(value.getClass())) {
+ return valueClass.cast(value);
+ } else {
+ throw new ProcessingException(
+ String.format(
+ "Expected annotation property \"%s\" to have type %s, but got %s.",
+ propertyName,
+ valueClass.getCanonicalName(),
+ value.getClass().getCanonicalName()),
+ element,
+ annotationMirror,
+ annotationValue);
+ }
+ });
+ }
+
+ /**
+ * Get the untyped value of an annotation property by name.
+ *
+ * The returned optional will be empty if the value was left at the default, or if the value
+ * of the property is null.
+ *
+ * @param propertyName The name of the property to search for
+ * @param element The element the annotation is on, used for exceptions
+ * @param annotationMirror An annotation mirror to search for the property
+ * @return An optional containing the untyped value of the named property
+ * @see AnnotationValue#getValue()
+ */
+ Optional<Object> untypedValueByName(
+ String propertyName,
+ Element element,
+ AnnotationMirror annotationMirror) {
+ return valueByName(propertyName, annotationMirror).map(annotationValue -> {
+ final Object value = annotationValue.getValue();
+
+ if (value == null) {
+ throw new ProcessingException(
+ String.format(
+ "Unexpected null value for annotation property \"%s\".",
+ propertyName),
+ element,
+ annotationMirror,
+ annotationValue);
+ }
+
+ return value;
+ });
+ }
/**
* Extract a {@link AnnotationValue} from a mirror by string property name.
*
* @param propertyName The name of the property requested property
- * @param annotationMirror
- * @return
+ * @param annotationMirror The mirror to search for the property
+ * @return The value of the property
*/
- AnnotationValue valueByName(String propertyName, AnnotationMirror annotationMirror) {
+ Optional<AnnotationValue> valueByName(String propertyName, AnnotationMirror annotationMirror) {
final Map<? extends ExecutableElement, ? extends AnnotationValue> valueMap =
annotationMirror.getElementValues();
for (ExecutableElement method : valueMap.keySet()) {
if (method.getSimpleName().contentEquals(propertyName)) {
- return valueMap.get(method);
+ return Optional.ofNullable(valueMap.get(method));
}
}
- return null;
+ // Property not explicitly defined, use default value.
+ return Optional.empty();
}
-
}
diff --git a/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectableClassModel.java b/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectableClassModel.java
index 579745d..f1ebb87 100644
--- a/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectableClassModel.java
+++ b/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectableClassModel.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright 2019 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.
@@ -21,6 +21,7 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
/**
@@ -70,7 +71,7 @@
* @return The property or an empty optional
*/
public Optional<Property> getProperty(String name) {
- return Optional.of(mPropertyMap.get(name));
+ return Optional.ofNullable(mPropertyMap.get(name));
}
/**
@@ -87,13 +88,15 @@
*/
public static final class Property {
private final String mName;
- private String mGetter;
- private Type mType;
+ private final String mGetter;
+ private final Type mType;
private boolean mAttributeIdInferrableFromR = true;
private int mAttributeId = 0;
- public Property(String name) {
- mName = name;
+ public Property(String name, String getter, Type type) {
+ mName = Objects.requireNonNull(name, "Name must not be null");
+ mGetter = Objects.requireNonNull(getter, "Getter must not be null");
+ mType = Objects.requireNonNull(type, "Type must not be null");
}
public int getAttributeId() {
@@ -126,18 +129,10 @@
return mGetter;
}
- public void setGetter(String getter) {
- mGetter = getter;
- }
-
public Type getType() {
return mType;
}
- public void setType(Type type) {
- mType = type;
- }
-
public enum Type {
/** Primitive or boxed {@code boolean} */
BOOLEAN,
diff --git a/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectableNodeNameProcessor.java b/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectableNodeNameProcessor.java
index a186a82..46819b2 100644
--- a/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectableNodeNameProcessor.java
+++ b/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectableNodeNameProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright 2019 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.
@@ -23,7 +23,7 @@
import javax.lang.model.element.Element;
/**
- * Process {InspectableNodeName} annotations
+ * Process {@code @InspectableNodeName} annotations.
*
* @see android.view.inspector.InspectableNodeName
*/
@@ -58,7 +58,8 @@
try {
final AnnotationMirror mirror =
mAnnotationUtils.exactlyOneMirror(mQualifiedName, element);
- final Optional<String> nodeName = mAnnotationUtils.stringProperty("value", mirror);
+ final Optional<String> nodeName = mAnnotationUtils
+ .typedValueByName("value", String.class, element, mirror);
if (!model.getNodeName().isPresent() || model.getNodeName().equals(nodeName)) {
model.setNodeName(nodeName);
diff --git a/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectablePropertyProcessor.java b/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectablePropertyProcessor.java
new file mode 100644
index 0000000..f666be7
--- /dev/null
+++ b/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectablePropertyProcessor.java
@@ -0,0 +1,408 @@
+/*
+ * Copyright 2019 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 android.processor.view.inspector;
+
+import android.processor.view.inspector.InspectableClassModel.Property;
+
+import java.util.Set;
+import java.util.regex.Pattern;
+
+import javax.annotation.processing.ProcessingEnvironment;
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Modifier;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.type.NoType;
+import javax.lang.model.type.TypeKind;
+import javax.lang.model.type.TypeMirror;
+
+/**
+ * Process {@code @InspectableProperty} annotations.
+ *
+ * @see android.view.inspector.InspectableProperty
+ */
+public final class InspectablePropertyProcessor implements ModelProcessor {
+ private final String mQualifiedName;
+ private final ProcessingEnvironment mProcessingEnv;
+ private final AnnotationUtils mAnnotationUtils;
+
+ /**
+ * Regex that matches methods names of the form {@code #getValue()}.
+ */
+ private static final Pattern GETTER_GET_PREFIX = Pattern.compile("\\Aget[A-Z]");
+
+ /**
+ * Regex that matches method name of the form {@code #isPredicate()}.
+ */
+ private static final Pattern GETTER_IS_PREFIX = Pattern.compile("\\Ais[A-Z]");
+
+ /**
+ * Set of android and androidx annotation qualified names for colors packed into {@code int}.
+ *
+ * @see android.annotation.ColorInt
+ */
+ private static final String[] COLOR_INT_ANNOTATION_NAMES = {
+ "android.annotation.ColorInt",
+ "androidx.annotation.ColorInt"};
+
+ /**
+ * Set of android and androidx annotation qualified names for colors packed into {@code long}.
+ * @see android.annotation.ColorLong
+ */
+ private static final String[] COLOR_LONG_ANNOTATION_NAMES = {
+ "android.annotation.ColorLong",
+ "androidx.annotation.ColorLong"};
+
+ /**
+ * @param annotationQualifiedName The qualified name of the annotation to process
+ * @param processingEnv The processing environment from the parent processor
+ */
+ public InspectablePropertyProcessor(
+ String annotationQualifiedName,
+ ProcessingEnvironment processingEnv) {
+ mQualifiedName = annotationQualifiedName;
+ mProcessingEnv = processingEnv;
+ mAnnotationUtils = new AnnotationUtils(processingEnv);
+ }
+
+ @Override
+ public void process(Element element, InspectableClassModel model) {
+ try {
+ final AnnotationMirror annotation =
+ mAnnotationUtils.exactlyOneMirror(mQualifiedName, element);
+ final ExecutableElement getter = ensureGetter(element);
+ final Property property = buildProperty(getter, annotation);
+
+ model.getProperty(property.getName()).ifPresent(p -> {
+ throw new ProcessingException(
+ String.format(
+ "Property \"%s\" is already defined on #%s().",
+ p.getName(),
+ p.getGetter()),
+ getter,
+ annotation);
+ });
+
+ model.putProperty(property);
+ } catch (ProcessingException processingException) {
+ processingException.print(mProcessingEnv.getMessager());
+ }
+ }
+
+ /**
+ * Check that an element is shaped like a getter.
+ *
+ * @param element An element that hopefully represents a getter
+ * @throws ProcessingException if the element isn't a getter
+ * @return An {@link ExecutableElement} that represents a getter method.
+ */
+ private ExecutableElement ensureGetter(Element element) {
+ if (element.getKind() != ElementKind.METHOD) {
+ throw new ProcessingException(
+ String.format("Expected a method, got a %s", element.getKind()),
+ element);
+ }
+
+ final ExecutableElement method = (ExecutableElement) element;
+ final Set<Modifier> modifiers = method.getModifiers();
+
+ if (modifiers.contains(Modifier.PRIVATE)) {
+ throw new ProcessingException(
+ "Property getter methods must not be private.",
+ element);
+ }
+
+ if (modifiers.contains(Modifier.ABSTRACT)) {
+ throw new ProcessingException(
+ "Property getter methods must not be abstract.",
+ element);
+ }
+
+ if (modifiers.contains(Modifier.STATIC)) {
+ throw new ProcessingException(
+ "Property getter methods must not be static.",
+ element);
+ }
+
+ if (!method.getParameters().isEmpty()) {
+ throw new ProcessingException(
+ String.format(
+ "Expected a getter method to take no parameters, "
+ + "but got %d parameters.",
+ method.getParameters().size()),
+ element);
+ }
+
+ if (method.isVarArgs()) {
+ throw new ProcessingException(
+ "Expected a getter method to take no arguments, but got a var args method.",
+ element);
+ }
+
+ if (method.getReturnType() instanceof NoType) {
+ throw new ProcessingException(
+ "Expected a getter to have a return type, got void.",
+ element);
+ }
+
+ return method;
+ }
+
+ /**
+ * Build a {@link Property} from a getter and an inspectable property annotation.
+ *
+ * @param getter An element representing the getter to build from
+ * @param annotation A mirror of an inspectable property-shaped annotation
+ * @throws ProcessingException If the supplied data is invalid and a property cannot be modeled
+ * @return A property for the getter and annotation
+ */
+ private Property buildProperty(ExecutableElement getter, AnnotationMirror annotation) {
+ final String name = mAnnotationUtils
+ .typedValueByName("name", String.class, getter, annotation)
+ .orElseGet(() -> inferPropertyNameFromGetter(getter));
+
+ final Property property = new Property(
+ name,
+ getter.getSimpleName().toString(),
+ determinePropertyType(getter, annotation));
+
+ mAnnotationUtils
+ .typedValueByName("hasAttributeId", Boolean.class, getter, annotation)
+ .ifPresent(property::setAttributeIdInferrableFromR);
+
+ mAnnotationUtils
+ .typedValueByName("attributeId", Integer.class, getter, annotation)
+ .ifPresent(property::setAttributeId);
+
+ return property;
+ }
+
+ /**
+ * Determine the property type from the annotation, return type, or context clues.
+ *
+ * @param getter An element representing the getter to build from
+ * @param annotation A mirror of an inspectable property-shaped annotation
+ * @return The resolved property type
+ * @throws ProcessingException If the property type cannot be resolved
+ * @see android.view.inspector.InspectableProperty#valueType()
+ */
+ private Property.Type determinePropertyType(
+ ExecutableElement getter,
+ AnnotationMirror annotation) {
+
+ final String valueType = mAnnotationUtils
+ .untypedValueByName("valueType", getter, annotation)
+ .map(Object::toString)
+ .orElse("INFERRED");
+
+ final Property.Type returnType = convertReturnTypeToPropertyType(getter);
+
+ switch (valueType) {
+ case "INFERRED":
+ if (hasColorAnnotation(getter)) {
+ return Property.Type.COLOR;
+ } else {
+ return returnType;
+ }
+ case "NONE":
+ return returnType;
+ case "COLOR":
+ switch (returnType) {
+ case COLOR:
+ case INT:
+ case LONG:
+ return Property.Type.COLOR;
+ default:
+ throw new ProcessingException(
+ "Color must be a long, integer, or android.graphics.Color",
+ getter,
+ annotation);
+ }
+ case "GRAVITY":
+ if (returnType == Property.Type.INT) {
+ return Property.Type.GRAVITY;
+ } else {
+ throw new ProcessingException(
+ String.format("Gravity must be an integer, got %s", returnType),
+ getter,
+ annotation);
+ }
+ case "INT_ENUM":
+ case "INT_FLAG":
+ throw new ProcessingException("Not implemented", getter, annotation);
+ default:
+ throw new ProcessingException(
+ String.format("Unknown value type enumeration value: %s", valueType),
+ getter,
+ annotation);
+ }
+ }
+
+ /**
+ * Get a property type from the return type of a getter.
+ *
+ * @param getter The getter to extract the return type of
+ * @throws ProcessingException If the return type is not a primitive or an object
+ * @return The property type returned by the getter
+ */
+ private Property.Type convertReturnTypeToPropertyType(ExecutableElement getter) {
+ final TypeMirror returnType = getter.getReturnType();
+
+ switch (unboxType(returnType)) {
+ case BOOLEAN:
+ return Property.Type.BOOLEAN;
+ case BYTE:
+ return Property.Type.BYTE;
+ case CHAR:
+ return Property.Type.CHAR;
+ case DOUBLE:
+ return Property.Type.DOUBLE;
+ case FLOAT:
+ return Property.Type.FLOAT;
+ case INT:
+ return Property.Type.INT;
+ case LONG:
+ return Property.Type.LONG;
+ case SHORT:
+ return Property.Type.SHORT;
+ case DECLARED:
+ if (isColorType(returnType)) {
+ return Property.Type.COLOR;
+ } else {
+ return Property.Type.OBJECT;
+ }
+ default:
+ throw new ProcessingException(
+ String.format("Unsupported return type %s.", returnType),
+ getter);
+ }
+ }
+
+ /**
+ * Determine if a getter is annotated with color annotation matching its return type.
+ *
+ * Note that an {@code int} return value annotated with {@link android.annotation.ColorLong} is
+ * not considered to be annotated, nor is a {@code long} annotated with
+ * {@link android.annotation.ColorInt}.
+ *
+ * @param getter The getter to query
+ * @return True if the getter has a color annotation, false otherwise
+ *
+ */
+ private boolean hasColorAnnotation(ExecutableElement getter) {
+ switch (unboxType(getter.getReturnType())) {
+ case INT:
+ for (String name : COLOR_INT_ANNOTATION_NAMES) {
+ if (mAnnotationUtils.hasAnnotation(getter, name)) {
+ return true;
+ }
+ }
+ return false;
+ case LONG:
+ for (String name : COLOR_LONG_ANNOTATION_NAMES) {
+ if (mAnnotationUtils.hasAnnotation(getter, name)) {
+ return true;
+ }
+ }
+ return false;
+ default:
+ return false;
+ }
+ }
+
+ /**
+ * Infer a property name from a getter method.
+ *
+ * If the method is prefixed with {@code get}, the prefix will be stripped, and the
+ * capitalization fixed. E.g.: {@code getSomeProperty} to {@code someProperty}.
+ *
+ * Additionally, if the method's return type is a boolean, an {@code is} prefix will also be
+ * stripped. E.g.: {@code isPropertyEnabled} to {@code propertyEnabled}.
+ *
+ * Failing that, this method will just return the full name of the getter.
+ *
+ * @param getter An element representing a getter
+ * @return A string property name
+ */
+ private String inferPropertyNameFromGetter(ExecutableElement getter) {
+ final String name = getter.getSimpleName().toString();
+
+ if (GETTER_GET_PREFIX.matcher(name).find()) {
+ return name.substring(3, 4).toLowerCase() + name.substring(4);
+ } else if (isBoolean(getter.getReturnType()) && GETTER_IS_PREFIX.matcher(name).find()) {
+ return name.substring(2, 3).toLowerCase() + name.substring(3);
+ } else {
+ return name;
+ }
+ }
+
+ /**
+ * Determine if a {@link TypeMirror} is a boxed or unboxed boolean.
+ *
+ * @param type The type mirror to check
+ * @return True if the type is a boolean
+ */
+ private boolean isBoolean(TypeMirror type) {
+ if (type.getKind() == TypeKind.DECLARED) {
+ return mProcessingEnv.getTypeUtils().unboxedType(type).getKind() == TypeKind.BOOLEAN;
+ } else {
+ return type.getKind() == TypeKind.BOOLEAN;
+ }
+ }
+
+ /**
+ * Unbox a type mirror if it represents a boxed type, otherwise pass it through.
+ *
+ * @param typeMirror The type mirror to unbox
+ * @return The same type mirror, or an unboxed primitive version
+ */
+ private TypeKind unboxType(TypeMirror typeMirror) {
+ final TypeKind typeKind = typeMirror.getKind();
+
+ if (typeKind.isPrimitive()) {
+ return typeKind;
+ } else if (typeKind == TypeKind.DECLARED) {
+ try {
+ return mProcessingEnv.getTypeUtils().unboxedType(typeMirror).getKind();
+ } catch (IllegalArgumentException e) {
+ return typeKind;
+ }
+ } else {
+ return typeKind;
+ }
+ }
+
+ /**
+ * Determine if a type mirror represents a subtype of {@link android.graphics.Color}.
+ *
+ * @param typeMirror The type mirror to test
+ * @return True if it represents a subclass of color, false otherwise
+ */
+ private boolean isColorType(TypeMirror typeMirror) {
+ final TypeElement colorType = mProcessingEnv
+ .getElementUtils()
+ .getTypeElement("android.graphics.Color");
+
+ if (colorType == null) {
+ return false;
+ } else {
+ return mProcessingEnv.getTypeUtils().isSubtype(typeMirror, colorType.asType());
+ }
+ }
+}
diff --git a/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectionCompanionGenerator.java b/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectionCompanionGenerator.java
index 3b85dbb..dd4d8f5 100644
--- a/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectionCompanionGenerator.java
+++ b/tools/processors/view_inspector/src/java/android/processor/view/inspector/InspectionCompanionGenerator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright 2019 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.
@@ -51,12 +51,6 @@
private static final ClassName R_CLASS_NAME = ClassName.get("android", "R");
/**
- * The class name of {@link android.content.res.ResourceId}.
- */
- private static final ClassName RESOURCE_ID_CLASS_NAME = ClassName.get(
- "android.content.res", "ResourceId");
-
- /**
* The class name of {@link android.view.inspector.InspectionCompanion}.
*/
private static final ClassName INSPECTION_COMPANION = ClassName.get(
@@ -91,11 +85,11 @@
private static final String GENERATED_CLASS_SUFFIX = "$$InspectionCompanion";
/**
- * The null resource ID.
+ * The null resource ID, copied to avoid a host dependency on platform code.
*
- * @see android.content.res.ResourceId#ID_NULL
+ * @see android.content.res.Resources#ID_NULL
*/
- private static final int NO_ID = 0;
+ private static final int ID_NULL = 0;
/**
* @param filer A filer to write the generated source to
@@ -289,8 +283,8 @@
if (property.isAttributeIdInferrableFromR()) {
builder.add("$T.attr.$L", R_CLASS_NAME, property.getName());
} else {
- if (property.getAttributeId() == NO_ID) {
- builder.add("$T.ID_NULL", RESOURCE_ID_CLASS_NAME);
+ if (property.getAttributeId() == ID_NULL) {
+ builder.add("$L", ID_NULL);
} else {
builder.add("$L", String.format("0x%08x", property.getAttributeId()));
}
diff --git a/tools/processors/view_inspector/src/java/android/processor/view/inspector/ModelProcessor.java b/tools/processors/view_inspector/src/java/android/processor/view/inspector/ModelProcessor.java
index 3ffcff8..6f52260 100644
--- a/tools/processors/view_inspector/src/java/android/processor/view/inspector/ModelProcessor.java
+++ b/tools/processors/view_inspector/src/java/android/processor/view/inspector/ModelProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright 2019 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.
diff --git a/tools/processors/view_inspector/src/java/android/processor/view/inspector/PlatformInspectableProcessor.java b/tools/processors/view_inspector/src/java/android/processor/view/inspector/PlatformInspectableProcessor.java
index e531b67..455f5b0 100644
--- a/tools/processors/view_inspector/src/java/android/processor/view/inspector/PlatformInspectableProcessor.java
+++ b/tools/processors/view_inspector/src/java/android/processor/view/inspector/PlatformInspectableProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright 2019 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.
@@ -46,11 +46,14 @@
* @see android.view.inspector.InspectableProperty
*/
@SupportedAnnotationTypes({
- PlatformInspectableProcessor.NODE_NAME_QUALIFIED_NAME
+ PlatformInspectableProcessor.NODE_NAME_QUALIFIED_NAME,
+ PlatformInspectableProcessor.PROPERTY_QUALIFIED_NAME
})
public final class PlatformInspectableProcessor extends AbstractProcessor {
static final String NODE_NAME_QUALIFIED_NAME =
"android.view.inspector.InspectableNodeName";
+ static final String PROPERTY_QUALIFIED_NAME =
+ "android.view.inspector.InspectableProperty";
@Override
public SourceVersion getSupportedSourceVersion() {
@@ -68,6 +71,11 @@
new InspectableNodeNameProcessor(NODE_NAME_QUALIFIED_NAME, processingEnv),
modelMap);
+ } else if (annotation.getQualifiedName().contentEquals(PROPERTY_QUALIFIED_NAME)) {
+ runModelProcessor(
+ roundEnv.getElementsAnnotatedWith(annotation),
+ new InspectablePropertyProcessor(PROPERTY_QUALIFIED_NAME, processingEnv),
+ modelMap);
} else {
fail("Unexpected annotation type", annotation);
diff --git a/tools/processors/view_inspector/src/java/android/processor/view/inspector/ProcessingException.java b/tools/processors/view_inspector/src/java/android/processor/view/inspector/ProcessingException.java
index 6360e0a..b4c6466 100644
--- a/tools/processors/view_inspector/src/java/android/processor/view/inspector/ProcessingException.java
+++ b/tools/processors/view_inspector/src/java/android/processor/view/inspector/ProcessingException.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright 2019 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.
diff --git a/tools/processors/view_inspector/src/resources/META-INF/services/javax.annotation.processing.Processor b/tools/processors/view_inspector/src/resources/META-INF/services/javax.annotation.processing.Processor
index fa4f71f..79185cc 100644
--- a/tools/processors/view_inspector/src/resources/META-INF/services/javax.annotation.processing.Processor
+++ b/tools/processors/view_inspector/src/resources/META-INF/services/javax.annotation.processing.Processor
@@ -1 +1 @@
-android.processor.inspector.view.PlatformInspectableProcessor
+android.processor.view.inspector.PlatformInspectableProcessor
diff --git a/tools/processors/view_inspector/test/java/android/processor/view/inspector/InspectionCompanionGeneratorTest.java b/tools/processors/view_inspector/test/java/android/processor/view/inspector/InspectionCompanionGeneratorTest.java
index f639719..b0775dc 100644
--- a/tools/processors/view_inspector/test/java/android/processor/view/inspector/InspectionCompanionGeneratorTest.java
+++ b/tools/processors/view_inspector/test/java/android/processor/view/inspector/InspectionCompanionGeneratorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright 2019 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.
@@ -20,7 +20,7 @@
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
-import static junit.framework.TestCase.fail;
+import static junit.framework.Assert.fail;
import com.google.common.base.Charsets;
import com.google.common.io.Resources;
@@ -65,27 +65,28 @@
@Test
public void testSimpleProperties() {
- addProperty("boolean", Property.Type.BOOLEAN, "getBoolean");
- addProperty("byte", Property.Type.BYTE, "getByte");
- addProperty("char", Property.Type.CHAR, "getChar");
- addProperty("double", Property.Type.DOUBLE, "getDouble");
- addProperty("float", Property.Type.FLOAT, "getFloat");
- addProperty("int", Property.Type.INT, "getInt");
- addProperty("long", Property.Type.LONG, "getLong");
- addProperty("short", Property.Type.SHORT, "getShort");
+ addProperty("boolean", "getBoolean", Property.Type.BOOLEAN);
+ addProperty("byte", "getByte", Property.Type.BYTE);
+ addProperty("char", "getChar", Property.Type.CHAR);
+ addProperty("double", "getDouble", Property.Type.DOUBLE);
+ addProperty("float", "getFloat", Property.Type.FLOAT);
+ addProperty("int", "getInt", Property.Type.INT);
+ addProperty("long", "getLong", Property.Type.LONG);
+ addProperty("short", "getShort", Property.Type.SHORT);
- addProperty("object", Property.Type.OBJECT, "getObject");
- addProperty("color", Property.Type.COLOR, "getColor");
- addProperty("gravity", Property.Type.GRAVITY, "getGravity");
+ addProperty("object", "getObject", Property.Type.OBJECT);
+ addProperty("color", "getColor", Property.Type.COLOR);
+ addProperty("gravity", "getGravity", Property.Type.GRAVITY);
assertGeneratedFileEquals("SimpleProperties");
}
@Test
public void testNoAttributeId() {
- final Property property = new Property("noAttributeProperty");
- property.setType(Property.Type.INT);
- property.setGetter("getNoAttributeProperty");
+ final Property property = new Property(
+ "noAttributeProperty",
+ "getNoAttributeProperty",
+ Property.Type.INT);
property.setAttributeIdInferrableFromR(false);
mModel.putProperty(property);
@@ -94,19 +95,18 @@
@Test
public void testSuppliedAttributeId() {
- final Property property = new Property("suppliedAttributeProperty");
- property.setType(Property.Type.INT);
- property.setGetter("getSuppliedAttributeProperty");
+ final Property property = new Property(
+ "suppliedAttributeProperty",
+ "getSuppliedAttributeProperty",
+ Property.Type.INT);
property.setAttributeId(0xdecafbad);
mModel.putProperty(property);
assertGeneratedFileEquals("SuppliedAttributeId");
}
- private Property addProperty(String name, Property.Type type, String getter) {
- final Property property = new Property(name);
- property.setType(type);
- property.setGetter(getter);
+ private Property addProperty(String name, String getter, Property.Type type) {
+ final Property property = new Property(name, getter, type);
mModel.putProperty(property);
return property;
}
diff --git a/tools/processors/view_inspector/test/resources/android/processor/view/inspector/InspectionCompanionGeneratorTest/NoAttributeId.java.txt b/tools/processors/view_inspector/test/resources/android/processor/view/inspector/InspectionCompanionGeneratorTest/NoAttributeId.java.txt
index 277e840..23d0f78 100644
--- a/tools/processors/view_inspector/test/resources/android/processor/view/inspector/InspectionCompanionGeneratorTest/NoAttributeId.java.txt
+++ b/tools/processors/view_inspector/test/resources/android/processor/view/inspector/InspectionCompanionGeneratorTest/NoAttributeId.java.txt
@@ -1,6 +1,5 @@
package com.android.inspectable;
-import android.content.res.ResourceId;
import android.view.inspector.InspectionCompanion;
import android.view.inspector.PropertyMapper;
import android.view.inspector.PropertyReader;
@@ -25,7 +24,7 @@
@Override
public void mapProperties(PropertyMapper propertyMapper) {
- mNoAttributePropertyId = propertyMapper.mapInt("noAttributeProperty", ResourceId.ID_NULL);
+ mNoAttributePropertyId = propertyMapper.mapInt("noAttributeProperty", 0);
mPropertiesMapped = true;
}
diff --git a/tools/signedconfig/prod_public.pem b/tools/signedconfig/prod_public.pem
new file mode 100644
index 0000000..8c10215
--- /dev/null
+++ b/tools/signedconfig/prod_public.pem
@@ -0,0 +1,5 @@
+-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+lky6wKyGL6lE1VrD0YTMHwb0Xwc
++tzC8MvnrzVxodvTpVY/jV7V+Zktcx+pry43XPABFRXtbhTo+qykhyBA1g==
+-----END PUBLIC KEY-----
+
diff --git a/tools/signedconfig/verify_b64.sh b/tools/signedconfig/verify_b64.sh
index 8e1f58c..a4ac6a8 100755
--- a/tools/signedconfig/verify_b64.sh
+++ b/tools/signedconfig/verify_b64.sh
@@ -7,4 +7,30 @@
# The arg values can be taken from the debug log for SignedConfigService when verbose logging is
# enabled.
-openssl dgst -sha256 -verify $(dirname $0)/debug_public.pem -signature <(echo $2 | base64 -d) <(echo $1 | base64 -d)
+function verify() {
+ D=${1}
+ S=${2}
+ K=${3}
+ echo Trying ${K}
+ openssl dgst -sha256 -verify $(dirname $0)/${K} -signature <(echo ${S} | base64 -d) <(echo ${D} | base64 -d)
+}
+
+
+PROD_KEY_NAME=prod_public.pem
+DEBUG_KEY_NAME=debug_public.pem
+SIGNATURE="$2"
+DATA="$1"
+
+echo DATA: ${DATA}
+echo SIGNATURE: ${SIGNATURE}
+
+if verify "${DATA}" "${SIGNATURE}" "${PROD_KEY_NAME}"; then
+ echo Verified with ${PROD_KEY_NAME}
+ exit 0
+fi
+
+if verify "${DATA}" "${SIGNATURE}" "${DEBUG_KEY_NAME}"; then
+ echo Verified with ${DEBUG_KEY_NAME}
+ exit 0
+fi
+exit 1
diff --git a/wifi/java/android/net/wifi/DppStatusCallback.java b/wifi/java/android/net/wifi/DppStatusCallback.java
deleted file mode 100644
index fa2ab30e..0000000
--- a/wifi/java/android/net/wifi/DppStatusCallback.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2018 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 android.net.wifi;
-
-import android.annotation.IntDef;
-import android.annotation.SystemApi;
-import android.os.Handler;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * DPP Status Callback. Use this callback to get status updates (success, failure, progress)
- * from the DPP operation started with {@link WifiManager#startDppAsConfiguratorInitiator(String,
- * int, int, Handler, DppStatusCallback)} or {@link WifiManager#startDppAsEnrolleeInitiator(String,
- * Handler, DppStatusCallback)}
- * @hide
- */
-@SystemApi
-public abstract class DppStatusCallback {
- /**
- * DPP Success event: Configuration sent (Configurator mode).
- */
- public static final int DPP_EVENT_SUCCESS_CONFIGURATION_SENT = 0;
-
- /** @hide */
- @IntDef(prefix = { "DPP_EVENT_SUCCESS_" }, value = {
- DPP_EVENT_SUCCESS_CONFIGURATION_SENT,
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface DppSuccessStatusCode {}
-
- /**
- * DPP Progress event: Initial authentication with peer succeeded.
- */
- public static final int DPP_EVENT_PROGRESS_AUTHENTICATION_SUCCESS = 0;
-
- /**
- * DPP Progress event: Peer requires more time to process bootstrapping.
- */
- public static final int DPP_EVENT_PROGRESS_RESPONSE_PENDING = 1;
-
- /** @hide */
- @IntDef(prefix = { "DPP_EVENT_PROGRESS_" }, value = {
- DPP_EVENT_PROGRESS_AUTHENTICATION_SUCCESS,
- DPP_EVENT_PROGRESS_RESPONSE_PENDING,
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface DppProgressStatusCode {}
-
- /**
- * DPP Failure event: Scanned QR code is either not a DPP URI, or the DPP URI has errors.
- */
- public static final int DPP_EVENT_FAILURE_INVALID_URI = -1;
-
- /**
- * DPP Failure event: Bootstrapping/Authentication initialization process failure.
- */
- public static final int DPP_EVENT_FAILURE_AUTHENTICATION = -2;
-
- /**
- * DPP Failure event: Both devices are implementing the same role and are incompatible.
- */
- public static final int DPP_EVENT_FAILURE_NOT_COMPATIBLE = -3;
-
- /**
- * DPP Failure event: Configuration process has failed due to malformed message.
- */
- public static final int DPP_EVENT_FAILURE_CONFIGURATION = -4;
-
- /**
- * DPP Failure event: DPP request while in another DPP exchange.
- */
- public static final int DPP_EVENT_FAILURE_BUSY = -5;
-
- /**
- * DPP Failure event: No response from the peer.
- */
- public static final int DPP_EVENT_FAILURE_TIMEOUT = -6;
-
- /**
- * DPP Failure event: General protocol failure.
- */
- public static final int DPP_EVENT_FAILURE = -7;
-
- /**
- * DPP Failure event: Feature or option is not supported.
- */
- public static final int DPP_EVENT_FAILURE_NOT_SUPPORTED = -8;
-
- /**
- * DPP Failure event: Invalid network provided to DPP configurator.
- * Network must either be WPA3-Personal (SAE) or WPA2-Personal (PSK).
- */
- public static final int DPP_EVENT_FAILURE_INVALID_NETWORK = -9;
-
-
- /** @hide */
- @IntDef(prefix = {"DPP_EVENT_FAILURE_"}, value = {
- DPP_EVENT_FAILURE_INVALID_URI,
- DPP_EVENT_FAILURE_AUTHENTICATION,
- DPP_EVENT_FAILURE_NOT_COMPATIBLE,
- DPP_EVENT_FAILURE_CONFIGURATION,
- DPP_EVENT_FAILURE_BUSY,
- DPP_EVENT_FAILURE_TIMEOUT,
- DPP_EVENT_FAILURE,
- DPP_EVENT_FAILURE_NOT_SUPPORTED,
- DPP_EVENT_FAILURE_INVALID_NETWORK,
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface DppFailureStatusCode {
- }
-
- /**
- * Called when local DPP Enrollee successfully receives a new Wi-Fi configuration from the
- * peer DPP configurator. This callback marks the successful end of the DPP current DPP
- * session, and no further callbacks will be called. This callback is the successful outcome
- * of a DPP flow starting with {@link WifiManager#startDppAsEnrolleeInitiator(String, Handler,
- * DppStatusCallback)}.
- *
- * @param newNetworkId New Wi-Fi configuration with a network ID received from the configurator
- */
- public abstract void onEnrolleeSuccess(int newNetworkId);
-
- /**
- * Called when a DPP success event takes place, except for when configuration is received from
- * an external Configurator. The callback onSuccessConfigReceived will be used in this case.
- * This callback marks the successful end of the current DPP session, and no further
- * callbacks will be called. This callback is the successful outcome of a DPP flow starting with
- * {@link WifiManager#startDppAsConfiguratorInitiator(String, int, int, Handler,
- * DppStatusCallback)}.
- *
- * @param code DPP success status code.
- */
- public abstract void onConfiguratorSuccess(@DppSuccessStatusCode int code);
-
- /**
- * Called when a DPP Failure event takes place. This callback marks the unsuccessful end of the
- * current DPP session, and no further callbacks will be called.
- *
- * @param code DPP failure status code.
- */
- public abstract void onFailure(@DppFailureStatusCode int code);
-
- /**
- * Called when DPP events that indicate progress take place. Can be used by UI elements
- * to show progress.
- *
- * @param code DPP progress status code.
- */
- public abstract void onProgress(@DppProgressStatusCode int code);
-}
diff --git a/wifi/java/android/net/wifi/EasyConnectStatusCallback.java b/wifi/java/android/net/wifi/EasyConnectStatusCallback.java
new file mode 100644
index 0000000..b8c82fd
--- /dev/null
+++ b/wifi/java/android/net/wifi/EasyConnectStatusCallback.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2018 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 android.net.wifi;
+
+import android.annotation.IntDef;
+import android.annotation.SystemApi;
+import android.os.Handler;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Easy Connect (DPP) Status Callback. Use this callback to get status updates (success, failure,
+ * progress) from the Easy Connect operation started with
+ * {@link WifiManager#startEasyConnectAsConfiguratorInitiator(String,
+ * int, int, Handler, EasyConnectStatusCallback)} or
+ * {@link WifiManager#startEasyConnectAsEnrolleeInitiator(String,
+ * Handler, EasyConnectStatusCallback)}
+ *
+ * @hide
+ */
+@SystemApi
+public abstract class EasyConnectStatusCallback {
+ /**
+ * Easy Connect Success event: Configuration sent (Configurator mode).
+ */
+ public static final int EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT = 0;
+
+ /** @hide */
+ @IntDef(prefix = {"EASY_CONNECT_EVENT_SUCCESS_"}, value = {
+ EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface EasyConnectSuccessStatusCode {
+ }
+
+ /**
+ * Easy Connect Progress event: Initial authentication with peer succeeded.
+ */
+ public static final int EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS = 0;
+
+ /**
+ * Easy Connect Progress event: Peer requires more time to process bootstrapping.
+ */
+ public static final int EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING = 1;
+
+ /** @hide */
+ @IntDef(prefix = {"EASY_CONNECT_EVENT_PROGRESS_"}, value = {
+ EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS,
+ EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface EasyConnectProgressStatusCode {
+ }
+
+ /**
+ * Easy Connect Failure event: Scanned QR code is either not a Easy Connect URI, or the Easy
+ * Connect URI has errors.
+ */
+ public static final int EASY_CONNECT_EVENT_FAILURE_INVALID_URI = -1;
+
+ /**
+ * Easy Connect Failure event: Bootstrapping/Authentication initialization process failure.
+ */
+ public static final int EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION = -2;
+
+ /**
+ * Easy Connect Failure event: Both devices are implementing the same role and are incompatible.
+ */
+ public static final int EASY_CONNECT_EVENT_FAILURE_NOT_COMPATIBLE = -3;
+
+ /**
+ * Easy Connect Failure event: Configuration process has failed due to malformed message.
+ */
+ public static final int EASY_CONNECT_EVENT_FAILURE_CONFIGURATION = -4;
+
+ /**
+ * Easy Connect Failure event: Easy Connect request while in another Easy Connect exchange.
+ */
+ public static final int EASY_CONNECT_EVENT_FAILURE_BUSY = -5;
+
+ /**
+ * Easy Connect Failure event: No response from the peer.
+ */
+ public static final int EASY_CONNECT_EVENT_FAILURE_TIMEOUT = -6;
+
+ /**
+ * Easy Connect Failure event: General protocol failure.
+ */
+ public static final int EASY_CONNECT_EVENT_FAILURE_GENERIC = -7;
+
+ /**
+ * Easy Connect Failure event: Feature or option is not supported.
+ */
+ public static final int EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED = -8;
+
+ /**
+ * Easy Connect Failure event: Invalid network provided to Easy Connect configurator.
+ * Network must either be WPA3-Personal (SAE) or WPA2-Personal (PSK).
+ */
+ public static final int EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK = -9;
+
+
+ /** @hide */
+ @IntDef(prefix = {"EASY_CONNECT_EVENT_FAILURE_"}, value = {
+ EASY_CONNECT_EVENT_FAILURE_INVALID_URI,
+ EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION,
+ EASY_CONNECT_EVENT_FAILURE_NOT_COMPATIBLE,
+ EASY_CONNECT_EVENT_FAILURE_CONFIGURATION,
+ EASY_CONNECT_EVENT_FAILURE_BUSY,
+ EASY_CONNECT_EVENT_FAILURE_TIMEOUT,
+ EASY_CONNECT_EVENT_FAILURE_GENERIC,
+ EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED,
+ EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface EasyConnectFailureStatusCode {
+ }
+
+ /**
+ * Called when local Easy Connect Enrollee successfully receives a new Wi-Fi configuration from
+ * the
+ * peer Easy Connect configurator. This callback marks the successful end of the Easy Connect
+ * current Easy Connect
+ * session, and no further callbacks will be called. This callback is the successful outcome
+ * of a Easy Connect flow starting with
+ * {@link WifiManager#startEasyConnectAsEnrolleeInitiator(String,
+ * Handler,
+ * EasyConnectStatusCallback)}.
+ *
+ * @param newNetworkId New Wi-Fi configuration with a network ID received from the configurator
+ */
+ public abstract void onEnrolleeSuccess(int newNetworkId);
+
+ /**
+ * Called when a Easy Connect success event takes place, except for when configuration is
+ * received from
+ * an external Configurator. The callback onSuccessConfigReceived will be used in this case.
+ * This callback marks the successful end of the current Easy Connect session, and no further
+ * callbacks will be called. This callback is the successful outcome of a Easy Connect flow
+ * starting with
+ * {@link WifiManager#startEasyConnectAsConfiguratorInitiator(String, int, int, Handler,
+ * EasyConnectStatusCallback)}.
+ *
+ * @param code Easy Connect success status code.
+ */
+ public abstract void onConfiguratorSuccess(@EasyConnectSuccessStatusCode int code);
+
+ /**
+ * Called when a Easy Connect Failure event takes place. This callback marks the unsuccessful
+ * end of the
+ * current Easy Connect session, and no further callbacks will be called.
+ *
+ * @param code Easy Connect failure status code.
+ */
+ public abstract void onFailure(@EasyConnectFailureStatusCode int code);
+
+ /**
+ * Called when Easy Connect events that indicate progress take place. Can be used by UI elements
+ * to show progress.
+ *
+ * @param code Easy Connect progress status code.
+ */
+ public abstract void onProgress(@EasyConnectProgressStatusCode int code);
+}
diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl
index 07f7cb3..46c4191 100644
--- a/wifi/java/android/net/wifi/IWifiManager.aidl
+++ b/wifi/java/android/net/wifi/IWifiManager.aidl
@@ -46,7 +46,7 @@
*/
interface IWifiManager
{
- int getSupportedFeatures();
+ long getSupportedFeatures();
WifiActivityEnergyInfo reportActivityInfo();
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index 28dd9b4..d2d711f 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -145,11 +145,23 @@
*/
public static final int SUITE_B_192 = 10;
+ /**
+ * WPA pre-shared key with stronger SHA256-based algorithms.
+ * @hide
+ */
+ public static final int WPA_PSK_SHA256 = 11;
+
+ /**
+ * WPA using EAP authentication with stronger SHA256-based algorithms.
+ * @hide
+ */
+ public static final int WPA_EAP_SHA256 = 12;
+
public static final String varName = "key_mgmt";
public static final String[] strings = { "NONE", "WPA_PSK", "WPA_EAP",
"IEEE8021X", "WPA2_PSK", "OSEN", "FT_PSK", "FT_EAP",
- "SAE", "OWE", "SUITE_B_192"};
+ "SAE", "OWE", "SUITE_B_192", "WPA_PSK_SHA256", "WPA_EAP_SHA256" };
}
/**
@@ -943,9 +955,12 @@
}
/**
- * @hide
* Returns MAC address set to be the local randomized MAC address.
* Does not guarantee that the returned address is valid for use.
+ * <p>
+ * Information is restricted to Device Owner, Profile Owner, and Carrier apps
+ * (which will only obtain addresses for configurations which they create). Other callers
+ * will receive a default "02:00:00:00:00:00" MAC address.
*/
public @NonNull MacAddress getRandomizedMacAddress() {
return mRandomizedMacAddress;
@@ -1886,6 +1901,7 @@
if (creatorName != null) sbuf.append(" cname=" + creatorName);
if (lastUpdateUid != 0) sbuf.append(" luid=" + lastUpdateUid);
if (lastUpdateName != null) sbuf.append(" lname=" + lastUpdateName);
+ if (updateIdentifier != null) sbuf.append(" updateIdentifier=" + updateIdentifier);
sbuf.append(" lcuid=" + lastConnectUid);
sbuf.append(" userApproved=" + userApprovedAsString(userApproved));
sbuf.append(" noInternetAccessExpected=" + noInternetAccessExpected);
@@ -2281,6 +2297,7 @@
mRandomizedMacAddress = source.mRandomizedMacAddress;
macRandomizationSetting = source.macRandomizationSetting;
requirePMF = source.requirePMF;
+ updateIdentifier = source.updateIdentifier;
}
}
diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java
index af5ad51..35fba3d 100644
--- a/wifi/java/android/net/wifi/WifiInfo.java
+++ b/wifi/java/android/net/wifi/WifiInfo.java
@@ -16,6 +16,7 @@
package android.net.wifi;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.net.NetworkInfo.DetailedState;
import android.net.NetworkUtils;
@@ -93,12 +94,22 @@
private int mRssi;
/**
- * Link speed in Mbps
+ * The unit in which links speeds are expressed.
*/
public static final String LINK_SPEED_UNITS = "Mbps";
private int mLinkSpeed;
/**
+ * Tx(transmit) Link speed in Mbps
+ */
+ private int mTxLinkSpeed;
+
+ /**
+ * Rx(receive) Link speed in Mbps
+ */
+ private int mRxLinkSpeed;
+
+ /**
* Frequency in MHz
*/
public static final String FREQUENCY_UNITS = "MHz";
@@ -192,6 +203,8 @@
setNetworkId(-1);
setRssi(INVALID_RSSI);
setLinkSpeed(-1);
+ setTxLinkSpeedMbps(-1);
+ setRxLinkSpeedMbps(-1);
setFrequency(-1);
setMeteredHint(false);
setEphemeral(false);
@@ -219,6 +232,8 @@
mNetworkId = source.mNetworkId;
mRssi = source.mRssi;
mLinkSpeed = source.mLinkSpeed;
+ mTxLinkSpeed = source.mTxLinkSpeed;
+ mRxLinkSpeed = source.mRxLinkSpeed;
mFrequency = source.mFrequency;
mIpAddress = source.mIpAddress;
mMacAddress = source.mMacAddress;
@@ -313,7 +328,7 @@
/**
* Returns the current link speed in {@link #LINK_SPEED_UNITS}.
- * @return the link speed.
+ * @return the link speed or -1 if there is no valid value.
* @see #LINK_SPEED_UNITS
*/
public int getLinkSpeed() {
@@ -323,7 +338,39 @@
/** @hide */
@UnsupportedAppUsage
public void setLinkSpeed(int linkSpeed) {
- this.mLinkSpeed = linkSpeed;
+ mLinkSpeed = linkSpeed;
+ }
+
+ /**
+ * Returns the current transmit link speed in Mbps.
+ * @return the Tx link speed or -1 if there is no valid value.
+ */
+ public int getTxLinkSpeedMbps() {
+ return mTxLinkSpeed;
+ }
+
+ /**
+ * Update the last transmitted packet bit rate in Mbps.
+ * @hide
+ */
+ public void setTxLinkSpeedMbps(int txLinkSpeed) {
+ mTxLinkSpeed = txLinkSpeed;
+ }
+
+ /**
+ * Returns the current receive link speed in Mbps.
+ * @return the Rx link speed or -1 if there is no valid value.
+ */
+ public int getRxLinkSpeedMbps() {
+ return mRxLinkSpeed;
+ }
+
+ /**
+ * Update the last received packet bit rate in Mbps.
+ * @hide
+ */
+ public void setRxLinkSpeedMbps(int rxLinkSpeed) {
+ mRxLinkSpeed = rxLinkSpeed;
}
/**
@@ -424,6 +471,7 @@
}
/** {@hide} */
+ @SystemApi
public boolean isOsuAp() {
return mOsuAp;
}
@@ -529,17 +577,19 @@
StringBuffer sb = new StringBuffer();
String none = "<none>";
- sb.append("SSID: ").append(mWifiSsid == null ? WifiSsid.NONE : mWifiSsid).
- append(", BSSID: ").append(mBSSID == null ? none : mBSSID).
- append(", MAC: ").append(mMacAddress == null ? none : mMacAddress).
- append(", Supplicant state: ").
- append(mSupplicantState == null ? none : mSupplicantState).
- append(", RSSI: ").append(mRssi).
- append(", Link speed: ").append(mLinkSpeed).append(LINK_SPEED_UNITS).
- append(", Frequency: ").append(mFrequency).append(FREQUENCY_UNITS).
- append(", Net ID: ").append(mNetworkId).
- append(", Metered hint: ").append(mMeteredHint).
- append(", score: ").append(Integer.toString(score));
+ sb.append("SSID: ").append(mWifiSsid == null ? WifiSsid.NONE : mWifiSsid)
+ .append(", BSSID: ").append(mBSSID == null ? none : mBSSID)
+ .append(", MAC: ").append(mMacAddress == null ? none : mMacAddress)
+ .append(", Supplicant state: ")
+ .append(mSupplicantState == null ? none : mSupplicantState)
+ .append(", RSSI: ").append(mRssi)
+ .append(", Link speed: ").append(mLinkSpeed).append(LINK_SPEED_UNITS)
+ .append(", Tx Link speed: ").append(mTxLinkSpeed).append(LINK_SPEED_UNITS)
+ .append(", Rx Link speed: ").append(mRxLinkSpeed).append(LINK_SPEED_UNITS)
+ .append(", Frequency: ").append(mFrequency).append(FREQUENCY_UNITS)
+ .append(", Net ID: ").append(mNetworkId)
+ .append(", Metered hint: ").append(mMeteredHint)
+ .append(", score: ").append(Integer.toString(score));
return sb.toString();
}
@@ -553,6 +603,8 @@
dest.writeInt(mNetworkId);
dest.writeInt(mRssi);
dest.writeInt(mLinkSpeed);
+ dest.writeInt(mTxLinkSpeed);
+ dest.writeInt(mRxLinkSpeed);
dest.writeInt(mFrequency);
if (mIpAddress != null) {
dest.writeByte((byte)1);
@@ -593,6 +645,8 @@
info.setNetworkId(in.readInt());
info.setRssi(in.readInt());
info.setLinkSpeed(in.readInt());
+ info.setTxLinkSpeedMbps(in.readInt());
+ info.setRxLinkSpeedMbps(in.readInt());
info.setFrequency(in.readInt());
if (in.readByte() == 1) {
try {
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index 517bf3b..8c00ceb 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -20,6 +20,7 @@
import static android.Manifest.permission.ACCESS_WIFI_STATE;
import static android.Manifest.permission.READ_WIFI_CREDENTIAL;
+import android.annotation.CallbackExecutor;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -68,6 +69,7 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
/**
* This class provides the primary API for managing all aspects of Wi-Fi
@@ -236,9 +238,11 @@
public static final int WIFI_CREDENTIAL_FORGOT = 1;
/** @hide */
+ @SystemApi
public static final int PASSPOINT_HOME_NETWORK = 0;
/** @hide */
+ @SystemApi
public static final int PASSPOINT_ROAMING_NETWORK = 1;
/**
@@ -1174,7 +1178,9 @@
* {@link #removeNetworkSuggestions(List)} for new API to add Wi-Fi networks for consideration
* when auto-connecting to wifi.
* <b>Compatibility Note:</b> For applications targeting
- * {@link android.os.Build.VERSION_CODES#Q} or above, this API will always return an empty list.
+ * {@link android.os.Build.VERSION_CODES#Q} or above, this API will return an empty list,
+ * except to callers with Carrier privilege which will receive a restricted list only
+ * containing configurations which they created.
*/
@Deprecated
@RequiresPermission(allOf = {ACCESS_COARSE_LOCATION, ACCESS_WIFI_STATE})
@@ -1219,7 +1225,11 @@
* @throws UnsupportedOperationException if Passpoint is not enabled on the device.
* @hide
*/
- @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ @SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_SETUP_WIZARD
+ })
public List<Pair<WifiConfiguration, Map<Integer, List<ScanResult>>>> getAllMatchingWifiConfigs(
@NonNull List<ScanResult> scanResults) {
List<Pair<WifiConfiguration, Map<Integer, List<ScanResult>>>> configs = new ArrayList<>();
@@ -1258,7 +1268,11 @@
* @throws UnsupportedOperationException if Passpoint is not enabled on the device.
* @hide
*/
- @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ @SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_SETUP_WIZARD
+ })
public Map<OsuProvider, List<ScanResult>> getMatchingOsuProviders(
List<ScanResult> scanResults) {
try {
@@ -1281,7 +1295,11 @@
* @throws UnsupportedOperationException if Passpoint is not enabled on the device.
* @hide
*/
- @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ @SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_SETUP_WIZARD
+ })
public Map<OsuProvider, PasspointConfiguration> getMatchingPasspointConfigsForOsuProviders(
@NonNull Set<OsuProvider> osuProviders) {
try {
@@ -1727,7 +1745,13 @@
* @param fqdn The FQDN of the Passpoint configuration to be removed
* @throws IllegalArgumentException if no configuration is associated with the given FQDN.
* @throws UnsupportedOperationException if Passpoint is not enabled on the device.
+ * @deprecated This is no longer supported.
*/
+ @Deprecated
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_SETUP_WIZARD
+ })
public void removePasspointConfiguration(String fqdn) {
try {
if (!mService.removePasspointConfiguration(fqdn, mContext.getOpPackageName())) {
@@ -1745,7 +1769,13 @@
*
* @return A list of {@link PasspointConfiguration}
* @throws UnsupportedOperationException if Passpoint is not enabled on the device.
+ * @deprecated This is no longer supported.
*/
+ @Deprecated
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_SETUP_WIZARD
+ })
public List<PasspointConfiguration> getPasspointConfigurations() {
try {
return mService.getPasspointConfigurations();
@@ -2055,7 +2085,7 @@
/** @hide */
public static final int WIFI_FEATURE_DPP = 0x80000000; // DPP (Easy-Connect)
- private int getSupportedFeatures() {
+ private long getSupportedFeatures() {
try {
return mService.getSupportedFeatures();
} catch (RemoteException e) {
@@ -2063,7 +2093,7 @@
}
}
- private boolean isFeatureSupported(int feature) {
+ private boolean isFeatureSupported(long feature) {
return (getSupportedFeatures() & feature) == feature;
}
/**
@@ -4323,6 +4353,11 @@
* @param callback {@link ProvisioningCallback} for updates regarding provisioning flow
* @hide
*/
+ @SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_SETUP_WIZARD
+ })
public void startSubscriptionProvisioning(OsuProvider provider, ProvisioningCallback callback,
@Nullable Handler handler) {
Looper looper = (handler == null) ? Looper.getMainLooper() : handler.getLooper();
@@ -4500,9 +4535,14 @@
}
/**
- * @return true if this device supports Wi-Fi Device Provisioning Protocol (Easy-connect)
+ * Wi-Fi Easy Connect (DPP) introduces standardized mechanisms to simplify the provisioning and
+ * configuration of Wi-Fi devices.
+ * For more details, visit <a href="https://www.wi-fi.org/">https://www.wi-fi.org/</a> and
+ * search for "Easy Connect" or "Device Provisioning Protocol specification".
+ *
+ * @return true if this device supports Wi-Fi Easy-connect (Device Provisioning Protocol)
*/
- public boolean isDppSupported() {
+ public boolean isEasyConnectSupported() {
return isFeatureSupported(WIFI_FEATURE_DPP);
}
@@ -4586,93 +4626,101 @@
}
}
- /* DPP - Device Provisioning Protocol AKA "Easy Connect" */
+ /* Easy Connect - AKA Device Provisioning Protocol (DPP) */
/**
- * DPP Network role: Station.
+ * Easy Connect Network role: Station.
+ *
* @hide
*/
@SystemApi
- public static final int DPP_NETWORK_ROLE_STA = 0;
+ public static final int EASY_CONNECT_NETWORK_ROLE_STA = 0;
/**
- * DPP Network role: Access Point.
+ * Easy Connect Network role: Access Point.
+ *
* @hide
*/
@SystemApi
- public static final int DPP_NETWORK_ROLE_AP = 1;
+ public static final int EASY_CONNECT_NETWORK_ROLE_AP = 1;
/** @hide */
- @IntDef(prefix = {"DPP_NETWORK_ROLE_"}, value = {
- DPP_NETWORK_ROLE_STA,
- DPP_NETWORK_ROLE_AP,
+ @IntDef(prefix = {"EASY_CONNECT_NETWORK_ROLE_"}, value = {
+ EASY_CONNECT_NETWORK_ROLE_STA,
+ EASY_CONNECT_NETWORK_ROLE_AP,
})
@Retention(RetentionPolicy.SOURCE)
- public @interface DppNetworkRole {}
+ public @interface EasyConnectNetworkRole {
+ }
/**
- * Start DPP in Configurator-Initiator role. The current device will initiate DPP bootstrapping
- * with a peer, and configure the peer with the SSID and password of the specified network using
- * the DPP protocol on an encrypted link.
+ * Start Easy Connect (DPP) in Configurator-Initiator role. The current device will initiate
+ * Easy Connect bootstrapping with a peer, and configure the peer with the SSID and password of
+ * the specified network using the Easy Connect protocol on an encrypted link.
*
- * @param enrolleeUri URI of the Enrollee obtained separately (e.g. QR code scanning)
- * @param selectedNetworkId Selected network ID to be sent to the peer
+ * @param enrolleeUri URI of the Enrollee obtained separately (e.g. QR code scanning)
+ * @param selectedNetworkId Selected network ID to be sent to the peer
* @param enrolleeNetworkRole The network role of the enrollee
- * @param callback Callback for status updates
- * @param handler The handler on whose thread to execute the callbacks. Null for main thread.
+ * @param callback Callback for status updates
+ * @param executor The Executor on which to run the callback.
* @hide
*/
@SystemApi
@RequiresPermission(anyOf = {
android.Manifest.permission.NETWORK_SETTINGS,
android.Manifest.permission.NETWORK_SETUP_WIZARD})
- public void startDppAsConfiguratorInitiator(@NonNull String enrolleeUri,
- int selectedNetworkId, @DppNetworkRole int enrolleeNetworkRole,
- @Nullable Handler handler, @NonNull DppStatusCallback callback) {
- Looper looper = (handler == null) ? Looper.getMainLooper() : handler.getLooper();
+ public void startEasyConnectAsConfiguratorInitiator(@NonNull String enrolleeUri,
+ int selectedNetworkId, @EasyConnectNetworkRole int enrolleeNetworkRole,
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull EasyConnectStatusCallback callback) {
Binder binder = new Binder();
try {
mService.startDppAsConfiguratorInitiator(binder, enrolleeUri, selectedNetworkId,
- enrolleeNetworkRole, new DppCallbackProxy(looper, callback));
+ enrolleeNetworkRole, new EasyConnectCallbackProxy(executor, callback));
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
- * Start DPP in Enrollee-Initiator role. The current device will initiate DPP bootstrapping
- * with a peer, and receive the SSID and password from the peer configurator.
+ * Start Easy Connect (DPP) in Enrollee-Initiator role. The current device will initiate Easy
+ * Connect bootstrapping with a peer, and receive the SSID and password from the peer
+ * configurator.
*
* @param configuratorUri URI of the Configurator obtained separately (e.g. QR code scanning)
- * @param callback Callback for status updates
- * @param handler The handler on whose thread to execute the callbacks. Null for main thread.
+ * @param callback Callback for status updates
+ * @param executor The Executor on which to run the callback.
* @hide
*/
@SystemApi
@RequiresPermission(anyOf = {
android.Manifest.permission.NETWORK_SETTINGS,
android.Manifest.permission.NETWORK_SETUP_WIZARD})
- public void startDppAsEnrolleeInitiator(@NonNull String configuratorUri,
- @Nullable Handler handler, @NonNull DppStatusCallback callback) {
- Looper looper = (handler == null) ? Looper.getMainLooper() : handler.getLooper();
+ public void startEasyConnectAsEnrolleeInitiator(@NonNull String configuratorUri,
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull EasyConnectStatusCallback callback) {
Binder binder = new Binder();
try {
mService.startDppAsEnrolleeInitiator(binder, configuratorUri,
- new DppCallbackProxy(looper, callback));
+ new EasyConnectCallbackProxy(executor, callback));
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
- * Stop or abort a current DPP session.
+ * Stop or abort a current Easy Connect (DPP) session. This call, once processed, will
+ * terminate any ongoing transaction, and clean up all associated resources. Caller should not
+ * expect any callbacks once this call is made. However, due to the asynchronous nature of
+ * this call, a callback may be fired if it was already pending in the queue.
+ *
* @hide
*/
@SystemApi
@RequiresPermission(anyOf = {
android.Manifest.permission.NETWORK_SETTINGS,
android.Manifest.permission.NETWORK_SETUP_WIZARD})
- public void stopDppSession() {
+ public void stopEasyConnectSession() {
try {
/* Request lower layers to stop/abort and clear resources */
mService.stopDppSession();
@@ -4682,48 +4730,50 @@
}
/**
- * Helper class to support DPP callbacks
+ * Helper class to support Easy Connect (DPP) callbacks
+ *
* @hide
*/
@SystemApi
- private static class DppCallbackProxy extends IDppCallback.Stub {
- private final Handler mHandler;
- private final DppStatusCallback mDppStatusCallback;
+ private static class EasyConnectCallbackProxy extends IDppCallback.Stub {
+ private final Executor mExecutor;
+ private final EasyConnectStatusCallback mEasyConnectStatusCallback;
- DppCallbackProxy(Looper looper, DppStatusCallback dppStatusCallback) {
- mHandler = new Handler(looper);
- mDppStatusCallback = dppStatusCallback;
+ EasyConnectCallbackProxy(Executor executor,
+ EasyConnectStatusCallback easyConnectStatusCallback) {
+ mExecutor = executor;
+ mEasyConnectStatusCallback = easyConnectStatusCallback;
}
@Override
public void onSuccessConfigReceived(int newNetworkId) {
- Log.d(TAG, "DPP onSuccessConfigReceived callback");
- mHandler.post(() -> {
- mDppStatusCallback.onEnrolleeSuccess(newNetworkId);
+ Log.d(TAG, "Easy Connect onSuccessConfigReceived callback");
+ mExecutor.execute(() -> {
+ mEasyConnectStatusCallback.onEnrolleeSuccess(newNetworkId);
});
}
@Override
public void onSuccess(int status) {
- Log.d(TAG, "DPP onSuccess callback");
- mHandler.post(() -> {
- mDppStatusCallback.onConfiguratorSuccess(status);
+ Log.d(TAG, "Easy Connect onSuccess callback");
+ mExecutor.execute(() -> {
+ mEasyConnectStatusCallback.onConfiguratorSuccess(status);
});
}
@Override
public void onFailure(int status) {
- Log.d(TAG, "DPP onFailure callback");
- mHandler.post(() -> {
- mDppStatusCallback.onFailure(status);
+ Log.d(TAG, "Easy Connect onFailure callback");
+ mExecutor.execute(() -> {
+ mEasyConnectStatusCallback.onFailure(status);
});
}
@Override
public void onProgress(int status) {
- Log.d(TAG, "DPP onProgress callback");
- mHandler.post(() -> {
- mDppStatusCallback.onProgress(status);
+ Log.d(TAG, "Easy Connect onProgress callback");
+ mExecutor.execute(() -> {
+ mEasyConnectStatusCallback.onProgress(status);
});
}
}
diff --git a/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java b/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java
index 955e040..aa1669e 100644
--- a/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java
+++ b/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java
@@ -168,8 +168,9 @@
@Override
public String toString() {
StringBuilder sb = new StringBuilder("WifiNetworkAgentSpecifier [");
- sb.append("WifiConfiguration=").append(
- mWifiConfiguration == null ? null : mWifiConfiguration.configKey())
+ sb.append("WifiConfiguration=")
+ .append(", SSID=").append(mWifiConfiguration.SSID)
+ .append(", BSSID=").append(mWifiConfiguration.BSSID)
.append(", mOriginalRequestorUid=").append(mOriginalRequestorUid)
.append("]");
return sb.toString();
@@ -180,4 +181,9 @@
throw new IllegalStateException("WifiNetworkAgentSpecifier should never be used "
+ "for requests.");
}
+
+ @Override
+ public NetworkSpecifier redact() {
+ return null;
+ }
}
diff --git a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
index 4348399b..6e4eeef 100644
--- a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
+++ b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
@@ -162,11 +162,11 @@
@Override
public String toString() {
return new StringBuilder()
- .append("WifiNetworkSpecifierWifiNetworkSpecifier [")
+ .append("WifiNetworkSpecifier [")
.append(", SSID Match pattern=").append(ssidPatternMatcher)
.append(", BSSID Match pattern=").append(bssidPatternMatcher)
- .append(", WifiConfiguration=").append(
- wifiConfiguration == null ? null : wifiConfiguration.configKey())
+ .append(", SSID=").append(wifiConfiguration.SSID)
+ .append(", BSSID=").append(wifiConfiguration.BSSID)
.append(", requestorUid=").append(requestorUid)
.append("]")
.toString();
diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
index 760f1e6..3c90eb7 100644
--- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
+++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
@@ -130,7 +130,8 @@
@Override
public String toString() {
StringBuilder sb = new StringBuilder("WifiNetworkSuggestion [")
- .append(", WifiConfiguration=").append(wifiConfiguration)
+ .append(", SSID=").append(wifiConfiguration.SSID)
+ .append(", BSSID=").append(wifiConfiguration.BSSID)
.append(", isAppInteractionRequired=").append(isAppInteractionRequired)
.append(", isUserInteractionRequired=").append(isUserInteractionRequired)
.append(", suggestorUid=").append(suggestorUid)
diff --git a/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java b/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java
index 1426383..4bee837 100644
--- a/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java
+++ b/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java
@@ -149,6 +149,11 @@
"WifiAwareAgentNetworkSpecifier should not be used in network requests");
}
+ @Override
+ public NetworkSpecifier redact() {
+ return null;
+ }
+
private void initialize() {
try {
mDigester = MessageDigest.getInstance("SHA-256");
diff --git a/wifi/java/android/net/wifi/hotspot2/OsuProvider.java b/wifi/java/android/net/wifi/hotspot2/OsuProvider.java
index 6d82ca1..f91790f 100644
--- a/wifi/java/android/net/wifi/hotspot2/OsuProvider.java
+++ b/wifi/java/android/net/wifi/hotspot2/OsuProvider.java
@@ -16,6 +16,7 @@
package android.net.wifi.hotspot2;
+import android.annotation.SystemApi;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.net.wifi.WifiSsid;
@@ -36,16 +37,19 @@
*
* @hide
*/
+@SystemApi
public final class OsuProvider implements Parcelable {
/**
* OSU (Online Sign-Up) method: OMA DM (Open Mobile Alliance Device Management).
* For more info, refer to Section 8.3 of the Hotspot 2.0 Release 2 Technical Specification.
+ * @hide
*/
public static final int METHOD_OMA_DM = 0;
/**
* OSU (Online Sign-Up) method: SOAP XML SPP (Subscription Provisioning Protocol).
* For more info, refer to Section 8.4 of the Hotspot 2.0 Release 2 Technical Specification.
+ * @hide
*/
public static final int METHOD_SOAP_XML_SPP = 1;
@@ -84,6 +88,7 @@
*/
private final Icon mIcon;
+ /** @hide */
public OsuProvider(WifiSsid osuSsid, Map<String, String> friendlyNames,
String serviceDescription, Uri serverUri, String nai, List<Integer> methodList,
Icon icon) {
@@ -104,6 +109,7 @@
* Copy constructor.
*
* @param source The source to copy from
+ * @hide
*/
public OsuProvider(OsuProvider source) {
if (source == null) {
@@ -130,10 +136,12 @@
mIcon = source.mIcon;
}
+ /** @hide */
public WifiSsid getOsuSsid() {
return mOsuSsid;
}
+ /** @hide */
public void setOsuSsid(WifiSsid osuSsid) {
mOsuSsid = osuSsid;
}
@@ -162,10 +170,12 @@
return mFriendlyNames.get(mFriendlyNames.keySet().stream().findFirst().get());
}
+ /** @hide */
public Map<String, String> getFriendlyNameList() {
return mFriendlyNames;
}
+ /** @hide */
public String getServiceDescription() {
return mServiceDescription;
}
@@ -174,14 +184,17 @@
return mServerUri;
}
+ /** @hide */
public String getNetworkAccessIdentifier() {
return mNetworkAccessIdentifier;
}
+ /** @hide */
public List<Integer> getMethodList() {
return mMethodList;
}
+ /** @hide */
public Icon getIcon() {
return mIcon;
}
diff --git a/wifi/java/android/net/wifi/hotspot2/ProvisioningCallback.java b/wifi/java/android/net/wifi/hotspot2/ProvisioningCallback.java
index a62d63c..1ee874a 100644
--- a/wifi/java/android/net/wifi/hotspot2/ProvisioningCallback.java
+++ b/wifi/java/android/net/wifi/hotspot2/ProvisioningCallback.java
@@ -16,6 +16,7 @@
package android.net.wifi.hotspot2;
+import android.annotation.SystemApi;
import android.net.wifi.WifiManager;
import android.os.Handler;
@@ -25,6 +26,7 @@
*
* @hide
*/
+@SystemApi
public abstract class ProvisioningCallback {
/**
diff --git a/wifi/java/com/android/server/wifi/BaseWifiService.java b/wifi/java/com/android/server/wifi/BaseWifiService.java
index 2c96c05..b3ac9f1 100644
--- a/wifi/java/com/android/server/wifi/BaseWifiService.java
+++ b/wifi/java/com/android/server/wifi/BaseWifiService.java
@@ -64,7 +64,7 @@
private static final String TAG = BaseWifiService.class.getSimpleName();
@Override
- public int getSupportedFeatures() {
+ public long getSupportedFeatures() {
throw new UnsupportedOperationException();
}
diff --git a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
index c744f18..7bff68a 100644
--- a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
@@ -59,6 +59,7 @@
WifiConfiguration config = new WifiConfiguration();
config.setPasspointManagementObjectTree(cookie);
config.trusted = false;
+ config.updateIdentifier = "1234";
MacAddress macBeforeParcel = config.getOrCreateRandomizedMacAddress();
Parcel parcelW = Parcel.obtain();
config.writeToParcel(parcelW, 0);
@@ -73,6 +74,7 @@
// lacking a useful config.equals, check two fields near the end.
assertEquals(cookie, reconfig.getMoTree());
assertEquals(macBeforeParcel, reconfig.getOrCreateRandomizedMacAddress());
+ assertEquals(config.updateIdentifier, reconfig.updateIdentifier);
assertFalse(reconfig.trusted);
Parcel parcelWW = Parcel.obtain();
@@ -251,6 +253,18 @@
}
/**
+ * Verifies that updateIdentifier should be copied for copy constructor.
+ */
+ @Test
+ public void testUpdateIdentifierForCopyConstructor() {
+ WifiConfiguration config = new WifiConfiguration();
+ config.updateIdentifier = "1234";
+ WifiConfiguration copyConfig = new WifiConfiguration(config);
+
+ assertEquals(config.updateIdentifier, copyConfig.updateIdentifier);
+ }
+
+ /**
* Verifies that the serialization/de-serialization for softap config works.
*/
@Test